您的位置:首页 > 其它

当打开一个文件,若文件不存在时,创建它,并在文件中写入hello 2016

2016-05-09 15:31 295 查看
/*

*本函数实现的功能是:当打开一个文件,若文件不存在时,创建它,并在文件中写入hello 2016

*

*/

#include <apue.h>

#define LINELEN 256

int main(int ac,char **av)

{

int fd = -1 , rdsize = 0;

char buf[LINELEN+1]; //定义缓存大小

if(1 >= ac){

printf("file name empty\n");

return 1;

}

fd = open("/root/Desktop/liu.sh",O_RDWR|O_CREAT|O_APPEND,0777); //第一个参数是文件路径,绝对路径名

if(0 > fd){

printf("open error [%d]\n",errno);

return 2;

}

memset(buf,0x00,LINELEN);

buf[LINELEN] = '\0';

sprintf(buf,"Hello 2016\n");

write(fd,buf,strlen(buf))); //给已经打开的文件描述符写,因为定义的缓存区长度大于要写的内容

//hello 2016\n 所以写一次就够了

close(fd);

return 0;

}

#if 0

不带缓存的IO

* 常见的 open,read,write,lseek,close

* 定义: 都调用内核的中的系统调用,就是公共库函数

*文件描述符:

* 是一个大于0的整数,当打开已有文件或创建成功时,由内核给进程返回一个文件描述符,文件描述符作为参数

* 传给如:write ,read .close 等

*注意《惯例》:

* 文件描述符fd[0],fd[1],fd[2],已经成为惯例,分别为标准输入,标准输出,标准错误,也就是说,

* 一个进程可以打开多个文件,而这三个默认是打开的,以后打开的文件描述符,只能追加在它的后面

* 每个进程都有自己的文件描述符

*

*进程表项:存储 文件描述符 以及 FILE * FILE *是指向一个存储了文件信息的结构体

*文件表项:就是这个结构体,里面有文件状态标志(包括读 写 ,同步),文件偏移量,指向节点的表项指针

*节点表项:包含i-node ,当前文件长度,所有者,等节点信息都在磁盘上

*

*

*

#endif
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: