【发布时间】:2011-10-30 06:04:16
【问题描述】:
虽然我习惯了 UNIX 并且已经在上面编程了很长时间,但我不习惯文件操作。
我知道 0/1/2 文件描述符是标准的输入、输出和错误。我知道,每当一个进程打开一个文件时,它都会被赋予一个尚未使用的最小值的描述符 - 我了解一些关于使用 dup/dup2 的事情。
我对进程之间的文件描述符感到困惑。每个进程是否都有自己的 0/1/2 描述符用于输入/输出/错误,或者这 3 个描述符是否在所有进程之间共享?为什么你可以在 3 个不同的 shell 中运行 3 个程序,而如果它们是共享的,它们都只能得到它们的程序输出?
如果两个程序在启动后打开 myfile.txt,它们会都使用文件描述符 #3,还是第二个程序使用 #4,因为使用了 3?
我知道我在那里以几种方式问过同样的问题,但我只是想清楚一点。越详细越好:)我在编程时从来没有遇到过这些问题,但是我正在阅读一本 UNIX 书籍以了解更多信息,我突然意识到这让我很困惑,我从来没有想过它之前的细节。
【问题讨论】:
-
如果您在帖子中添加“c”语言标签,您将获得更好的 cmets。我想我已经多次看到这个讨论,所以搜索“[c] stdout dup 描述符”。祝你好运。
-
谢谢,添加标签 - 我也会尝试查看其他问题 :)
标签: c++ c unix file-descriptor