Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
了解UNIX管道和文件描述符_Unix_Ubuntu - Fatal编程技术网

了解UNIX管道和文件描述符

了解UNIX管道和文件描述符,unix,ubuntu,Unix,Ubuntu,我是UNIX管道通信新手,需要一些帮助来理解这一点。我需要创建管道和分支子进程,通过这些管道与父进程通信。我的问题是 a) 为什么每个子进程使用管道 b) 真正的文件描述符是什么,我需要为每个管道创建一个吗 c) StdIn和StdOut与这些有什么关系 为什么每个子进程使用管道 因为单个管道只有两个端点。如果您试图在所有子进程之间共享一个管道,您将不知道哪个子进程生成了给定的输出 文件描述符到底是什么 操作系统保存的打开文件表中的条目 是否需要为每个管道创建一个[文件描述符] 任何进程如果打开

我是UNIX管道通信新手,需要一些帮助来理解这一点。我需要创建管道和分支子进程,通过这些管道与父进程通信。我的问题是

a) 为什么每个子进程使用管道

b) 真正的文件描述符是什么,我需要为每个管道创建一个吗

c) StdIn和StdOut与这些有什么关系

为什么每个子进程使用管道

因为单个管道只有两个端点。如果您试图在所有子进程之间共享一个管道,您将不知道哪个子进程生成了给定的输出

文件描述符到底是什么

操作系统保存的打开文件表中的条目

是否需要为每个管道创建一个[文件描述符]

任何进程如果打开了任何类似文件的对象,包括管道的任意一端,都需要有一个文件描述符,通过它可以与该类似文件的对象通信。事实上,在文件描述符表中有一个指向该文件的条目正是打开文件的意思

stdin和stdout与此有什么关系


stdin是文件描述符表中的条目0;stdout是条目1。如果您正在启动的进程将其数据读写到文件描述符0和1,那么您可能希望将管道连接到文件描述符0和1。

很多问题!也许把每个人分开?对于unix/linux问题,可以在unix.stackexchange.com上进行更好的尝试。