簡體   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