较新的系统都提供名为/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进行写操作。

results matching ""

    No results matching ""