复制文件描述符

来源:互联网 发布:知乎 豆瓣全部电影 编辑:程序博客网 时间:2024/06/05 01:03

复制文件描述符的三种方法:

(1)dup函数:从0开始搜索空闲的文件描述符

(2)dup2函数:强制复制,不管文件描述符是否正在使用状态

 (3)fcntl函数:从fd_start开始搜索空闲的文件描述符

        fcntl(fd,F_DUPFD,fd_start);

以下代码示例是:

把标准输出重定向到新的文件描述符fd1中,当printf函数调用时,即把内容输入到发fd1文件描述符中及test2.txt中

#include <unistd.h>#include <sys/stat.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h>#define ERR_EXIT(m) \do \{ \perror(m); \exit(EXIT_FAILURE); \} while(0)int main(int argc, char *argv[]){int fd;fd = open("test.txt", O_WRONLY);if (fd == -1)ERR_EXIT("open error");/*close(1);dup(fd);*//*dup2(fd, 1);*/close(1);if (fcntl(fd, F_DUPFD, 0) < 0)ERR_EXIT("dup fd error");printf("hello\n");return 0;}

以上可实现重定向的功能:类似ls >>aa的功能


0 0
原创粉丝点击