首页 > 其他分享 >文件操作的函数——高级

文件操作的函数——高级

时间:2023-02-15 15:47:59浏览次数:46  
标签:文件 表项 函数 int 高级 fd newfd 指针

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

相关文章