较新的系统都提供名为/dev/fd的目录,其目录项是名为0、1、2等的文件。
打开文件/dev/fd/n等效于复制描述符n(假设描述符n是打开的)。
在下列函数调用中:
fd = open("/dev/fd/0",mode);
大多数系统忽略它所指定的mode,而另外一些系统则要求mode必须是所引用的文件(在这里是标准输入)初始打开时所使用的打开模式的一个子集,因为上面的打开等效于
fd = dup(0);
所以描述符0和fd共享同一文件表项。
例如,若描述符0先前被打开为只读,那么我们也只能对fd进行读操作。即使系统忽略打开模式,而且下面的调用是成功的:
fd = open("dev/fd/0",O_RDWR);
我们仍然不能对fd进行写操作。