gpt4 book ai didi

c++ - 在 C 中制作一个基本的 shell 并且在管道/ fork 方面遇到麻烦

转载 作者:太空宇宙 更新时间:2023-11-04 08:36:31 25 4
gpt4 key购买 nike

首先我想问一下为什么管道需要 fork ?我对此很陌生,但对我来说,我还不明白为什么我不能只在 | 的左侧运行一个进程。然后在使用结果作为输入后进行下一部分。我知道有人用过 fork ,但我不明白为什么或在哪里需要它们。

非常感谢您回答这个问题,尽管这可能是一个愚蠢的问题。

最佳答案

阅读Advanced Linux Programming & intro(2) ;它——ALP 书——有几章解释这一点。或许还可以研究一些自由软件 shell 的源代码。也可以使用 strace(1)

A pipe(7)具有一定(小)容量 PIPE_BUF(几千字节)。当该管道被填满时,写入过程将被阻塞。当读取进程读取完所有内容时,管道变空,读取进程被阻塞。因此写入进程有机会在其中运行和写入。

因此您需要两个进程同时 运行(并且它们可以交换大量数据——例如几秒钟内交换千兆字节)。 fork 是创建新进程的唯一方式。

关于c++ - 在 C 中制作一个基本的 shell 并且在管道/ fork 方面遇到麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26025039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com