文件控制 fcntl函数具体解释】的更多相关文章

摘要:本文主要讨论文件控制fcntl函数的基本应用.dup函数能够拷贝文件描写叙述符,而fcntl函数与dup函数有着异曲同工之妙.而且还有更加强大的功能,能够获取或设置已打开文件的性质,操作文件锁. 1.fcntl函数 在<重定向编程 dup和dup2>一文中,介绍了dup和dup2两个函数,函数是提供了复制一个现存的文件描写叙述符的功能,而本文介绍的fcntl函数提供了进一步管理文件描写叙述符的各种手段,用它能够对以打开的描写叙述符运行各种控制操作,比方,能够像dup和dup2一样复制一个…
很多时候,当我们有多个进程要访问同一个文件的时候,为了防止多进程访问导致的不一致,我们就要考虑进程间的同步问题. fcntl是一个很强大的函数,我们可以通过它给文件的某一部分上锁 int fcntl(int fd, int cmd, ... /*struct flock *flockptr*/); struct flock{ short l_type; off_t l_start; short l_whence; off_t l_en; pid_t l_pid; } fcntl函数的5中功能:…
功能描述:根据文件描述词来操作文件的特性. 文件控制函数         fcntl -- file control 头文件: #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); [描述]            Fcntl()针…
fcntl函数可以改变已打开的文件的性质. #include <fcntl.h> int fcntl( int filedes, int cmd, ... /* int arg */ ); 返回值:若成功则依赖于cmd,若出错则返回- 在本节的各实例中,第三个参数总是一个整数,与上面所示函数原型中的注释部分相对应.但是在说明记录锁时,第三个参数则是指向一个结构的指针. fcntl函数有5种功能: (1)复制一个现有的描述符(cmd = F_DUPFD ). (2)获得/设置文件描述符标记(cm…
tee函数使用 功能描述:tee函数在两个管道文件描述符之间复制数据,也是零拷贝操作.它不消耗数据,因此源文件描述符仍然可以用于后续的操作. 函数原型: #include <fcntl.h> ssize_t tee(int fd_in,int fd_out,size_t len,unsigned int flags); 函数参数:fd_in和fd_out必须都是管道文件描述符. 返回值:成功时返回在两个文件描述符之间复制的数据字节数,返回0表示没有复制任何数据.失败时返回-1并设置errno.…
linux文件I/O用:open.read.write.lseek以及close函数实现了文件的打开.读写等基本操作.fcntl函数可以根据文件描述词来操作文件. 用法: 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:同上. 有以下操…
功能描述:根据文件描述词来操作文件的特性. 文件控制函数         fcntl -- file control LIBRARY         Standard C Library (libc, -lc) SYNOPSIS         #include <fcntl.h>;          int fcntl(int fd, int cmd);          int fcntl(int fd, int cmd, long arg);          int fcntl(int…
fcntl函数提供了与网络编程相关的如下特性: 非阻塞式I/O.  通过使用F_SETFL命令设置O_NONBLOCK文件状态标志,我们可以把一个套接字设置为非阻塞型. 信号驱动式I/O. 通过使用F_SETFL命令设置O_ASYNC文件状态标志,我们可以把一个套接字设置成O_ASYNC,一旦其状态发生变化,内核就产生一个SIGIO信号. F_SETOWN命令允许我们指定用于接收SIGIO和SIGURG信号的套接字属主(进程ID或进程组ID).其中SIGIO信号是套接字被设置为信号驱动式I/O型…
一.记录锁 record locking 功能:当一个进程正在读或修改文件的某个部分时,它可以阻止其它进程修改同一文件区. 字节范围锁 byte-range locking 二.历史 flock函数,可以锁整个文件,不能锁文件中的一部分. fcntl函数,增加了记录锁的功能. lockf函数,在fcntl基础上构造了lockf函数,提供一个简化的接口.可以锁文件中任意字节数的区域 三.fcntl 记录锁 函数原型: int fcntl(int fd, int cmd, struct flock…
概述 fcntl函数文件锁有几个比较容易忽视的地方: 1.文件锁是真的进程之间而言的,调用进程绝对不会被自己创建的锁锁住,因为F_SETLK和F_SETLKW命令总是替换调用进程现有的锁(若已存在),所以调用进程决不会阻塞在自己持有的锁上,于是,F_GETLK命令决不会报告调用进程自己持有的锁. 2.struct flock结构指针中的l_type成员3个short值分别是: 常量 值 F_RDLCK 0 F_WRLCK 1 F_UNLCK 2 3.如果两个锁之间的文件区域有交集,就会阻塞,无论…