gpt4 book ai didi

c++ - 奇怪的执行行为

转载 作者:太空宇宙 更新时间:2023-11-04 11:09:06 26 4
gpt4 key购买 nike

我无法理解为什么父进程中的 exec 在子进程执行后打印。

例如,看这段代码:

if(fork()) {
// parent
execlp("ls", "ls", "-l", 0);
exit(0);
} else {
// child
printf("\nChild stuffs...\n");
}

输出:

Child stuffs
..................
... ls command ...

为什么在 exec 之前打印“Child stuffs”?我没有 wait() 或类似的东西,只是想不通......

非常感谢每个想法:)

最佳答案

无法保证操作系统调度程序将以何种顺序运行具有相同优先级的子进程和父进程。在您的情况下,可以怀疑首先打印子输出,因为执行外部程序需要一些时间,而 printf 几乎立即执行(并刷新,如果行缓冲)。

如果将 execlp 移至子级,我希望父级更有可能首先显示输出。

关于c++ - 奇怪的执行行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24023305/

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