虽然我对UNIX相当熟悉,并且已经在上面编程了很长时间,但我不习惯文件操作。
我知道0/1/2文件描述符是标准的输入、输出和错误。我知道每当一个进程打开一个文件时,它会被赋予一个最小值尚未使用的描述符 - 我也了解一些关于使用dup/dup2的内容。
但是关于进程之间的文件描述符我感到困惑。每个进程是否都有自己的0/1/2描述符用于输入/输出/错误,还是这3个描述符在所有进程之间共享?如果你在3个不同的shell中运行3个程序,它们如何只获取各自程序的输出,而不是其他程序的输出呢?
如果两个程序在启动后打开myfile.txt,它们是否都使用文件描述符#3,或者第二个程序是否会使用#4,因为#3已经被占用了?
我知道我以几种方式问了同样的问题,但我只是想清楚明白。细节越多越好 :) 我在编程时从来没有遇到过这些问题,但我正在阅读一本UNIX书籍以了解更多信息,突然意识到这让我很困惑,以前从未仔细思考过。