这个问题是基于对 proc 文件系统的普遍性的误解。实现此功能的系统(例如 Solaris 和 Linux)具有可用于编写脚本的特殊设备,包括/dev/fd
后跟文件描述符(编号)。
用Solaris,下/dev/fd
是虚拟文件夹/dev
,而 Linux 使用符号链接/proc
进入与您的进程 ID 匹配的(虚拟)文件夹。proc 文件系统没有标准,细节也会有所不同。
检查 AIX 5.3 和 7.1 系统,它们确实实现了 proc 文件系统,但没有/dev/fd
. 然而,他们确实有一个虚拟文件系统/proc
,您可以在该文件系统下找到当前的进程 ID,在该fd
文件系统下是一个包含文件描述符的文件夹。
按照惯例,文件描述符被初始化为 0, 1, 2 for stdin、stdout、stderr。
进一步阅读:
/proc
- 包含有关系统中进程和线程的状态信息(AIX 7)
为fd
:
包含进程的所有打开文件描述符的文件。每个条目都是一个十进制数,对应于进程中打开的文件描述符。如果实体引用常规文件,则可以使用常规文件语义打开它。为确保控制进程无法获得更大的访问权限,在被控制进程中,除了自身的读写打开方式外,没有其他文件访问方式。目录将显示为链接。尝试打开任何其他类型的条目都将失败(因此在列出时将显示 0 权限)。
这些是人工文件描述符,当然不需要进行处理,这解释了它们历史上不存在并且在某些系统上仍然不存在。
shell 根据您的 TTY 处理这些标准文件描述符。当 shell 启动时,它会调用isatty()
,如果它是(TTY),它会自动打开其上的标准文件描述符。
归档时间: |
|
查看次数: |
21701 次 |
最近记录: |