waitpid

    0熱度

    1回答

    當等待子進程終止時,我看到以下代碼中出現異常信號編號(例如50,80或117)。我只從一個特定的子進程中看到了這一點,而且我無法訪問進程源代碼,並且只在某些時候發生。 我想知道這些不尋常的值是什麼意思,給出NSIG == 32,我可以在頭文件或手冊頁中找到一些文檔? 請注意,此代碼運行循環,逐漸發送更多的威脅信號,直到孩子終止。 int status, signal; if (waitpid(

    0熱度

    1回答

    這是我QN的跟進/修改:Ptrace/wait on a non child 如何PTRACE或等待一個過程,不是一個孩子,那等待的過程不是root用戶。 我試圖在同一組,仍然不起作用[不允許的操作 - 以PTRACE在非兒童]

    1熱度

    1回答

    我有一個長時間運行的進程(node.js),它調用fork(作爲C++模塊的一部分)。這將創建新進程作爲node.js進程的子進程。然而,這個子進程沒有什麼會等待/ waitpid,所以它在終止後仍然是殭屍。 是否有可能fork()一個進程沒有當前進程是其父,所以在終止時,它不會保持在殭屍狀態,但被清理? 如果不是,我可以以某種方式表明我不會對孩子調用waitpid並且不關心它何時終止? 做不到這

    6熱度

    2回答

    我需要能夠: 叉的過程,並使其execvp(我做了) 檢查,如果子進程execvp成功(不懂得) 檢查,如果子進程結束(有問題) 我派生一個過程,我沒有任何辦法來檢查,如果孩子的的execvp工作或失敗。如果失敗了,我需要能夠知道它失敗了。目前我正在使用 -1 != waitpid(pid, &status, WNOHANG) 但似乎如果pid進程的execv失敗,則waitpid不會返回-1

    4熱度

    1回答

    我試圖確定執行是否通過檢查waitpid函數的結果失敗()。但是,即使當我跑,我知道失敗並寫入這個問題到stderr命令,檢查以下從未登記。這段代碼可能有什麼錯誤? 感謝您的任何幫助。 pid_t pid; // the child process that the execution runs inside of. int ret; // exit status of child proce

    2熱度

    1回答

    我知道wait()和waitpid()之間的區別之一是waitpid有一個WNOHANG選項,它告訴waitpid在運行的孩子時不會阻塞尚未終止。如: while ( (pid = waitpid(-1, &stat, WNOHANG)) > 0) printf("Child %d terminated\n", pid); 如果我使用的wait(),而不是waitpid函數(),沒有

    0熱度

    1回答

    我正在寫一個迷你外殼,並且在作業控制中遇到問題。 我無法檢索主函數中的數據,甚至在run_command的底部。 我想知道如何我可以存儲和成功檢索主要的信息。 typedef struct job{ int num; pid_t pid[SIZE]; char* name[SIZE]; int occupied; } job jobs; <- the g

    1熱度

    2回答

    我試圖做一個叉運行在一個文件的exec,然後等待它完成。如果子進程中的exec由我要打印信號的信號終止,如果程序運行時間過長,我想打印超時。 pid_t pid; pid = fork(); if(pid == 0) { //child process } else { alarm(timeout); i

    0熱度

    2回答

    我想從父級訪問分叉子進程的退出狀態,但我得到奇怪的答案。有時,我得到256或有時得到一個負數,這取決於我是指定&狀態還是隻是狀態。我知道我非常接近。有人可以給我提供一點幫助,我將如何得到EXIT_STATUS 這裏是我的代碼 pid_t pid; int *status; if((pid = fork()) < 0) fprintf(stdout, "Error forking ch

    0熱度

    1回答

    是否有3個子進程和1個父進程? 這兩個不同的waitpid是做什麼的,爲什麼有兩個呢? int main() { pid_t pid; int status, counter = 4; while(counter > 0) { pid = fork(); if(pid) { counter /= 2;