最新消息:

Linux下不带缓冲的I/O操作函数3

C/C++ admin 3362浏览 0评论

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代表欲操作的指令。

fcntl有5个功能:

  1. cmd=F_DUPFD:复制现有的描述符。
  2. cmd=F_GETFD或F_SETFD:获得/设置文件描述符标记。
  3. cmd=F_GETFL或F_SETFL:获得/设置文件状态标志。
  4. cmd=F_GETOWN或F_SETOWN:获得/设置异步I/O所有权。
  5. cmd=F_GETLK或F_SETLK:获得/设置记录锁。

下面的两个函数可以用来复制一个现存的文件描述符:

#include<unistd.h>

int dup(int file);

int dup2(int file,int file2);

成功返回新描述符,否则返回-1。

调用dup(file)等效于:

fcntl(file,F_DUPFD,0);

调用dup2(file,file2)等效于:

close(file2);

fcntl(file,F_DUPFD,file2);

但dup2是原子操作。

转载请注明:爱开源 » Linux下不带缓冲的I/O操作函数3

您必须 登录 才能发表评论!