[英]fork and exec many different processes, and obtain results from each one
[英]How to fork() and exec() in this one?
我正在編寫自己的shell,但是沒有fork提供我的child_pid = 0 ...那里怎么了?
while(true)
{
read_command(command);
if ((child_pid = fork()) == -1)
{
fprintf(stderr, "can't fork\n");
exit(1);
}
else if (child_pid == 0) //child
{
status=execl("./myShell" command);
}
else
{
wait(status); //parent
}
}
我想未輸入(child_pid == -1)
...是父( else
)分支輸入了兩次(通過兩個過程)還是什么?
無論如何,我看不到該代碼片段中的錯誤。 如果您確定執行流到達那里,並且由於錯誤而具有不可預測的行為。
我懷疑glibc是否在您的系統上出錯:我的最佳猜測是您的程序的指針損壞了,從而破壞了一切。 這是這種真正怪異行為的最常見原因。
您的代碼正常。 在if(child_pid == 0)
添加調試打印,並確保未調用它。 如果fork
無法創建子代,則會將errno
為指示發生了錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.