gpt4 book ai didi

C Programming w/Pipes 奇怪地打印到 STDOUT

转载 作者:太空宇宙 更新时间:2023-11-04 04:40:46 24 4
gpt4 key购买 nike

我正在为我的操作系统类编写一个编程作业,我遇到了一些关于我的输出在终端中显示的方式的问题。

该程序的目的是从文件或 STDIN 获取输入,并通过 4 个管道传递输入以获得单词的频率。我正在调用 fork()、execlp() 和 pipe() 来完成此操作,并且我的程序没有任何问题,但是当最后一个子程序执行并打印到终端时,它看起来像这样:

os-class ~/cs344/Homework3 190% myword text.txt  
os-class ~/cs344/Homework3 191% 1 aaaaa
1 aaaaaa
1 aaaaaaa
8 it
5 s
5 sa

(在这里我可以输入 191% 的命令,比如 'ls'..)

myword 是我的可执行文件,text.txt 是我用于测试的文件。我很困惑,因为我的管道似乎与 STDIN 和 STDOUT 正确对齐。我需要在某处插入 wait() 吗?

感谢您的任何建议,如果某处已经有答案,我们深表歉意!我不确定要搜索什么。

最佳答案

执行 fork() 的每个父级都需要对其子级执行 wait(),否则子级将在父级退出后继续运行。

shell(如果您编写了它)也需要等待它启动的程序。

关于C Programming w/Pipes 奇怪地打印到 STDOUT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26853902/

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