系统调用方式文件编程要点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux文件编程函数
一简述几个基本知识——
1 Linux应用程序编程所用到的函数,主要有两种方式提供:
系统调用方式函数库方式
2 如何学习这些函数?
三步学习法:
第一步:借助工具书,查找函数名;《Unix环境高级编程》第二步:在Linux系统中,利用man命令查看函数信息,并填写函数学习手册。
第三步:实践,编写代码。
3 VI概念——文件描述符
性质:一个数字
特别含义:其功能类似于身份证号码,通过身份证号码,可以将对应的公民;在Linux系统中,每一个打开的文件,都对应一个数字,通过这个唯一的数字,可以找到这个打开的文件,并对其进行操作,比如读、写等。
二首先学习系统调用方式提供的函数——
4 学习以下7个函数——
打开文件创建文件关闭文件读文件写文件文件定位
复制文件描述符
5 打开文件——open
范例1:打开已经存的文件 open.c
#include
#include
#include
void main()
{
int fd;/*文件描述符*/
fd = open("/home/test.c",O_RDWR);
if(fd<0)
printf("Open file fali!\n");
else
printf("Open file sucessfully!\n");
}
范例2:利用open函数创建新文件 open_creat.c #include
#include
#include
void main()
{
int fd;/*文件描述符*/
fd = open("/home/test1.c",O_RDWR | O_CREAT,0755);
if(fd<0)
printf("Open file fali!\n");
else
printf("Open file sucessfully!\n");
}
6 创建文件——creat
在《》一书中,找到函数名
利用man creat查找函数的帮助文件
编写程序代码——
#include
#include
#include
#include
void main()
{
int fd;
fd = creat("/home/test2.c",0621);
if(fd<0)
printf("create file fail!\n");
else
printf("Create file successfully!\n");
}
7 在《》一书中,找到函数名
man close 查找函数原型
编写程序代码close.c
#include
#include
#include
#include
void main()
{
int fd;
fd = open("/home/test2.c",O_RDWR | O_CREAT,0755);
if(fd<0)
printf("create file fail!\n");
else
printf("Create file successfully!\n");
int ret;
ret = close(fd);
if(ret == 0)
printf("File has been closed!\n");
else
printf("Fail to close!\n");
}
8 首先查找一下读文件的函数read()
man所查询的是一个手册,首先从章节一里面找关键字,如果没有找到,再到后续章节中找。
man 2 read
man 章节一命令
章节二系统调用
章节三库函数
范例:
#include
void main()
{
int fd;
fd = open("/home/test1.c",O_RDWR | O_CREAT,0755);
if(fd<0)
printf("create file fail!\n");
else
printf("Create file successfully!\n");
char buf[10];/*定义一个数组,有10个空间;用来存放读取出的数据*/
ssize_t count;
count = read(fd,buf,5);/*将读取出的字符存放到buf 指向的空间里面。*/
if(count==-1)
printf("Read fail!");
else
printf("Read %d Bytes.\n",count);
buf[5]='\0'; /*这样,读取后的内容无乱码字符出现。*/
printf("buf is %s.\n",buf); /*打印字符串*/
int ret;