1.fcntl在设置文件状态和标志时,要注意先取得现在的标志值,然后按照希望修改它,最后设置新标志。不
能只是执行F_SETFD或F_SETFL命令,这样会关闭以前设置的标志位。
2.在设置标志位时,之前的值为value,要设置的标志为flag,则value=value|flag,而value = value & ~flag则是关闭相应的标志位。
3.O_SYNC标志用于写文件时,会造成每次write都要等待,直到数据已经写到磁盘上再返回。在UNIX中,通常write只是将数据
排入队列,而实际的I/O操作则可能在以后的某个时刻进行。
4.ioctl函数是I/O操作的杂物箱。不能用其他函数表示的I/O操作通常都能用ioctl表示,如设置终端。
5.比较新的系统者提供名为/dev/fd的目录,其目录项是名为0,1,2等的文件。打开文件/dev/fd/n等效于复制描述符n.
fd = open("/dev/fd/0",mode);等效于fd = dup(0);
6.如果被打开的文件/dev/fd/xxx是只读的,但代码对其使用open函数打开,指定可写,即始调用成功,我们仍然不能对其写操作。
7./dev/fd/xxx主要由shell使用。cat将命令行中的一个单独的-特别解释为一个输入文件名,指的是标准输入。如
filter file2|cat file1 - file3|lpr,首先cat读file1,接着读其标准输入也就是filter file2命令的输出,然后读file3,如若支持/dev/fd,则可以删除 cat
对-的特殊处理,于是我们就可键入下列命令行:
filter file2|cat file1 /dev/fd/0 file3|lpr,这样看起来清晰