繁体   English   中英

奇怪的执行行为

[英]Strange execlp behavior

我不明白为什么子进程执行后,父进程中的执行程序会打印出来。

例如,请参见以下代码:

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

输出:

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

为什么在执行人员之前打印“儿童物品”? 我没有wait()或类似的东西,只是想不通...

每个想法都非常感激:)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM