demo:
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
/*
1.可以复制文件描述符,复制的是第一个参数fd,得到一个新的文件描述符
2.可以获取指定的文件描述符的状态(open函数里面flag函数)
3.设置文件描述符的一个状态flag,必选项:O_RDONLY, O_WRONLY, O_RDWR
可选项:O_APPEND表示追加数据,先获取到原先的标志,在追加数据
:NONBLOCK设置成非阻塞
阻塞和非阻塞描述的是函数调用的行为。add()函数,当前的进程在函数返回之前是挂起的;
*/
int main(){
//1.复制文件描述符
int fd = open("1.txt",O_RDWR);
//出错处理
if(fd == -1){
perror("open");
return -1;
}
//int ret = fcntl(fd,F_DUPFD);
//2.修改或者获取文件状态flag
//获取flag
int flag = fcntl(fd,F_GETFL);
//追加权限
flag |= O_APPEND;
//设置权限
int ret = fcntl(fd,F_SETFL,flag);
//出错处理
if(ret == -1){
perror("fcntl");
return -1;
}
char *str = "hello";
write(fd,str,sizeof(str));//写函数
//关闭fd
close(fd);
return 0;
}