dup与dup2

dup与dup2

#include <unistd.h>

int dup(int oldfd);
/*
oldfd: 要复制的文件描述符
返回值: 新的文件描述符
dup调用成功: 有两个文件描述符指向同一个文件
返回值: 取最小的且没被占用的文件描述符
*/
int dup2(int oldfd, int newfd);
/*
文件描述符的重定向
oldfd->haha
newfd->hehe
	假设newfd已经指向了一个文件, 首先断开新的close与那个文件的链接, newfd指向oldfd指向的文件
	newfd没有被占用, newfd指向oldfd指向的文件
*/

改变已经打开的文件的属性

#include <unistd.h>
#include <fcntl.h>

int fcntl(int fd, int cmd, ... /* arg */ );

变参数函数

复制一个已经有的文件描述符
int ret = fcntl(fd, F_DUPFD);

获取/设置文件状态标志
open的flags参数
(1)获取文件状态标识
int flag = fcntl(fd, F_GETFL);
(2)设置文件状态标识
flag = flag | O_APPEND;
fcntl(fd, F_SETFL, flag)

常用的可以更改的几个标识: O_APPEND, ONONBLOCK

posted @ 2019-04-19 21:50  张飘扬  阅读(177)  评论(0编辑  收藏  举报