簡體   English   中英

使用execvp執行我在數組中擁有的命令

[英]using execvp to execute commands that I have in an array

我有一個commands數組,我想執行這個數組中的每個命令,但是我似乎無法正常工作,所以我有

childPid = fork();


for(int i =0;i < numOfCommands;i++)
{
    if(childPid == 0)
    {
        execvp(commands[i], argv);
        perror("exec failure");
            exit(1);
    }
    else 
    {
        wait(&child_status);
    }


}

這是什么,它僅執行數組中的第一個命令,而不再執行任何操作,我將如何繼續?

如果我希望命令隨機執行的順序和結果混合在一起怎么辦,那么我必須使用fork嗎?

如果要執行多個程序,則無論如何都需要使用fork 來自man exec :(添加了重點)

exec()系列函數當前過程映像替換為新的過程映像。

exec()函數僅在發生錯誤時返回。

通過使用fork ,您可以創建一個具有相同映像的新進程,並且可以通過調用exec而不影響父進程來替換子進程中的映像,然后父進程可以隨意進行forkexec多次。

不要忘記wait子進程終止。 否則,當他們死亡時,他們將成為僵屍 上面鏈接的wait頁中有一個完整的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM