文件操作的函数——高级

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

posted @ 2023-02-15 15:34  踏浪而来的人  阅读(13)  评论(0编辑  收藏  举报