1. dup2(实现输入/输出重定向)
头文件:
#include <unistd.h>
原型:
int dup2(int oldfd, int newfd);参数:
oldfd:被复制的文件描述符
newfd:新的文件描述符,将oldfd的文件表项指针复制给newfd的文件表项指针,即newfd的文件表项指针就指向oldfd的文件表项
返回值:
成功返回新的文件描述符(newfd),newfd !=dup2(oldfd,newfd)这样说明dup2函数调用不成功
失败:-1
原理解析:
标准输入的重定向:
解释:这个函数是将fd_in的文件表项指针赋值给标准输入的文件表项指针,即现在标准输入的文件表项指针就指向fd_in的文件表项,以后操作STDIN_FILENO就相当于操作fd_in
标准输出的重定向:
解释:这个函数是将fd_out的文件表项指针赋值给标准输出的文件表项指针,即现在标准输出的文件表项指针就指向fd_out的文件表项,以后操作STDOUT_FILENO就不是输出到屏幕,而是输出到 fd_out文件
2. fcntl(改变已打开文件的性质,如前面用只读方式打开的,调用这个函数可以给其文件加一个追加性质)
头文件:
#include <unistd.h>
#include <fcntl.h>
原型:
int fcntl(int fd, int cmd);
int fcntl(int fd, int cmd, long arg);
int fcntl(int fd, int cmd, struct flock *lock);
参数:
fd:文件描述符
cmd:命令
arg/lock:根据命令是什么而设置的参数
返回值:
失败返回-1
标签:文件,表项,函数,int,高级,fd,newfd,指针 From: https://www.cnblogs.com/zj-studyrecoding/p/17123255.html