2015-12-24 88 views
0

所以,我需要用fork在linux中創建一個進程。 子進程需要運行排序程序,並將「1」傳遞給它。 這裏是我想要做的工作代碼:在C++中創建一個Linux進程

int main(){ 
    cout<<"Master #process: "<<getpid()<<"#parent process:"<<getppid()<<endl; 
    char* cmd[2]; 
    cmd[0]="./Sort"; 
    cmd[1]="1"; 
    pid_t child_id=fork(); 

    if(child_id==0){ 
    execv(cmd[0],cmd); 
    } 
    cout<<child_id<<endl; 

然而,當我試圖在Linux控制檯運行它,那隻能說明第一串和不排序運行。

+2

也許你想在退出父進程之前等待進程完成? –

+0

你在工作目錄中有一個名爲「Sort」的可執行文件(大寫字母「S」)嗎? –

回答

2

因爲在C++中,除了終結符之外,沒有辦法標記數組的大小,所以需要用NULL終止數組。

char* cmd[3]; 
cmd[0]="./Sort"; 
cmd[1]="1"; 
cmd[2]=NULL; 
+0

謝謝大衛 – justice

+2

我的猜測是,這不會完全解決問題,因爲仍然沒有任何東西可以確保主進程等待排序完成。 –

+0

@Mats Petersson,除非意圖是將這個過程守護進程。 –