[英]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.