waitpid

    0熱度

    2回答

    所以,我退出子線程回父。我正在使用_exit()系統調用。我想知道幾件事情。一個是我的孩子的_exit參數。這裏是我的孩子進程正在執行的代碼: printf("\n****Child process.****\n\nSquence: "); do{ //Print the integer in the sequence. printf("%d\t",inputInteg

    0熱度

    1回答

    我試着寫,因爲我的代碼部分「運行」命令,函數,以便用戶可以鍵入 shell> run date //Line of user input Mon Jan 19 11:51:57 EST 2009 //Printed by program shell: process 348 exited normally with status 0 用戶只需類型的「運行日期',程序顯示底部的兩行。 這是

    3熱度

    1回答

    我創建了一個監控子進程並在失敗或退出時重新啓動它的基本示例。什麼是這樣做的首選/更強大的方法?不斷調查地位變化是否是一種好的做法?我的理解是我應該使用類似SIGCHLD的東西,但一直沒有找到任何好的例子。 我主要是一個嵌入式C編碼器,這是我第一次嘗試去理解fork()。這段代碼的目的最終將是監視使用exec()的另一個程序的調用,並在出現故障時重啓該程序或完成。 編輯: 從@cnicutar我已經

    1熱度

    1回答

    我正在執行一個多線程應用程序和10次中的9次,斷點處理工作得很好,但有時我得到一個SIGCHLD事件而不是SIGTRAP。 這是序列: 應用程序正在運行,主線程遇到INT3 調試器的waitpid函數返回SIGTRAP 調試SIGSTOPs的已經不是 「T(跟蹤站)」 的所有線程,使用tgkill 調試運行的ptrace(PTRACE_SINGLESTEP)上INT3'ed螺紋 調試waitpid

    9熱度

    2回答

    我知道waitpid()被用來等待一個過程完成,但是如何準確地使用它? 在這裏,我想要做的是,創建兩個孩子,等待第一個孩子完成,然後在退出之前殺死第二個孩子。 //Create two children pid_t child1; pid_t child2; child1 = fork(); //wait for child1 to finish, then kill child2 w

    0熱度

    1回答

    我正在爲需要執行某些子進程並讀取其輸出的工具箱編寫模塊。但是,使用該工具包的主程序也可能會產生一些子進程,併爲SIGCHLD建立一個信號處理程序,該程序調用wait(NULL)來擺脫殭屍進程。因此,如果在我的waitpid()子程序中創建了子進程,則在調用信號處理程序之前處理子進程,因此信號處理程序中的wait()將等待下一個進程結束(可能需要永遠)。此行爲在the man page of wai

    0熱度

    1回答

    我嘗試等待主要功能,直到線程完成其工作。但主要功能完成其工作並退出。我想這是因爲線程在變量中沒有正確的指針/值。(計數和步驟) 有人知道如何在這種情況下正確使用waitpid/wait嗎? 我的代碼: #define _GNU_SOURCE #include <stdio.h> #include <inttypes.h> /* for PRIu64 and uint64_t */ /* yo

    5熱度

    2回答

    我想知道如果下面的代碼可以創建殭屍: #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> int main(){ int i=1; pid_t p; p = fork(); i++; if(p!=0){ wait

    2熱度

    1回答

    我的朋友和我正在嘗試編寫一個外殼。 我的問題是,運行'貓'命令,然後用^ C退出STDIN使我的程序segfault on waitpid,所以退出我的程序...(我不想要的當然!) 每個命令工作完美,我也沒有任何其他問題......我只是問及如何解決這些(大)問題。 謝謝你的幫助! 見我的代碼爲略低於執行命令: static int cmd_executeit(char **env, t_sh

    0熱度

    1回答

    我有一個簡單的功能 - 其目的是在覆蓋之前將文件複製到.old。因爲我很懶(這裏提供了一個答案),我分叉並使用cp來完成這項工作。 然後我調用waitpid並檢查返回碼。 調用此函數的代碼調用了我的複製函數,然後立即打開文件進行讀取。不知何故調用代碼似乎在cp調用之前運行 - 新文件是被複制的。 最好的例子是如果既沒有文件也沒有備份。兩者都創建幷包含我保存的調用輸出。 我很努力地看到我出錯的地方,