摘要:
较新的系统都提供名为/dev/fd的目录,其目录项是名为0、1、2等的文件。打开文件/dev/fd/n等效于复制描述符n(假定描述符n是打开的)。在下列函数调用中:fd = open( "/dev/fd/0", mode );大多数系统忽略它所指定的mode,而另外一些则要求mode必须是所涉及的文件(在这里则是标准输入)原先打开时所使用的mode的子集。因为上面的打开等效于:fd = dup( 0 );所以描述符0和fd共享同一文件表项。例如,若描述符0先前被打开为只读,那么我们也只能对fd进行读操作。即使系统忽略打开模式,并且下列调用成功:fd = open( &quo 阅读全文
摘要:
ioctl函数是I/O操作的杂物箱。不能用其他函数表示的I/O操作通常都能用ioctl表示。终端I/O是ioctl的最大使用方面。ioctl函数通过对文件描述符发送特定的命令来控制文件描述符所代表的设备。#include /* System V */#include /* BSD and Linux */#include /* XSI STREAMS */int ioctl( int filedes, int request, ... );返回值:若出错则返回-1,若成功则返回其他值对于ISO C原型,它用省略号表示其余参数。但是,通常只有另外一个参数,它常常是... 阅读全文
摘要:
fcntl函数可以改变已打开的文件的性质。#include int fcntl( int filedes, int cmd, ... /* int arg */ );返回值:若成功则依赖于cmd,若出错则返回-1在本节的各实例中,第三个参数总是一个整数,与上面所示函数原型中的注释部分相对应。但是在说明记录锁时,第三个参数则是指向一个结构的指针。fcntl函数有5种功能:(1)复制一个现有的描述符(cmd = F_DUPFD )。(2)获得/设置文件描述符标记(cmd = F_GETFD或F_SETFD)。(3)获得/设置文件状态标志(cmd = F_GETFL或F_SETFL)。(4)获得/设 阅读全文