奇怪的execlp行为
Strange execlp behavior
我不明白为什么父进程中的exec在子函数之后打印。
例如,参见以下代码:
if(fork()) {
// parent
execlp("ls", "ls", "-l", 0);
exit(0);
} else {
// child
printf("nChild stuffs...n");
}
输出:Child stuffs
..................
... ls command ...
为什么在执行命令之前打印"Child stuff"?我没有wait()或类似的东西,只是想不出来…
每一个想法都非常感谢:)
不能保证操作系统调度程序以何种顺序运行具有同等优先级的子进程和父进程。在您的情况下,可以怀疑首先打印子输出是因为执行外部程序需要一些时间,而printf
几乎立即执行(如果行缓冲,则刷新)。
如果您将execlp
移动到子节点,我希望父节点更有可能首先显示输出
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- arr[-1]在c++中的奇怪行为
- 继承期间显示未知行为的子类
- 如何在c++中使用引用实现类似python的行为
- G锁定铸造到基础上会释放模拟行为
- 在C++中对T*类型执行std::move的意外行为
- std::当在256字节边界上写入整数时,流的奇怪行为
- 不知道某个东西是否被忽略会引入未定义的行为吗
- 奇怪的构造函数行为
- 重载运算符new[]的行为取决于析构函数
- 不同语言中相同代码的不同行为
- 处理除以零会导致<csignal>意外行为
- 试图理解类对象的行为
- c++11评估顺序(未定义的行为)
- 从结构寻址时,MMAP变量的行为很奇怪
- 我可以做些什么来消除或最小化这种将提供相同功能和行为的代码重复
- 读取文件时运行时的未知行为
- strncpy之后的char数组的错误行为
- 奇怪的execlp行为