1、文件描述符
Linux操作系统内核(kernel)利用文件描述符来访问文件,文件描述符大于等于0,是一个用户描述被打开文件的索引值,它指向该文件的相关信息记录表,当文件打开或者创建新文件的时,就会返回一个文件描述符,当读写文件时,也需要使用文件描述符来指定特写文件。
2、讲解open函数
文件需要先打开或则创建
如果返回是-1, 则出错,如果成功,则返回文件描述符
第一个参数是文件路径
第二个参数是flags
第三个参数
3、代码实现
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
#include<string.h>
//定义flags:只写,文件不存在那么就创建,文件长度戳为0
#define FLAGS O_WRONLY | O_CREAT | O_TRUNC
//创建文件的权限,用户读、写、执行、组读、执行、其他用户读、执行
#define MODE S_IRWXU | S_IXGRP | S_IROTH | S_IXOTH
int main(void)
{
const char* pathname;
int fd;//文件描述符
char pn[100];
printf("输入路径名,小于30个字符\n");
scanf("%s", pn);
printf("%s", pn);
//gets(pn);//字符串的输入用gets,请记住
pathname = pn;
if ((fd = open(pathname, FLAGS, MODE)) == -1) {
printf("open file error");
return 0;
}
printf("open file successful\n");
printf("fd = %d", fd);
return 0;
}
4、结果展示
文件如下
5、总结
1]、我们熟悉了linux 平台下创建文件的过程
2]、我们熟悉了open函数
3]、一开始我把代码写成了这样scanf("%s\n", pn),这个时候输入字符串,回车两次,应该不需要\n,如果加上,由于两个%d之后有换行符所以输入时换行即回车被忽略了。