process-group

    1熱度

    1回答

    我試圖實現一個托盤圖標,它可以讓我控制一個進程(jackd)。最值得注意的是 我想讀的過程輸出和錯誤進行日誌記錄 我希望能夠從主程序菜單項殺死進程 殺傷引起我頭痛。我相信,當我閱讀stdout和stderr時,我必須在一個額外的線程/進程中做到這一點,以保持圖標的響應。所以我用fork()來創建一個子進程,並在子進程上調用setsid()。然後,該子進程調用jackd使用subprocess模塊

    1熱度

    2回答

    說我有這兩個的bash腳本: 的/ tmp /捕獸: #!/bin/bash trap 'echo trapper: ignoring USR1' USR1 "$(dirname $0)"/usr1er & p=$! sleep 1 echo trapper: now killing usr1er kill $p echo trapper: sleeping sleep 1 ech

    1熱度

    1回答

    我有以下簡單的程序,爲STDIN設置主程序的pgid和pgroup。然後,我有一個信號處理程序,它可以打印當前進程的pgid以及發送信號的進程的pgid。這裏是我的代碼 pid_t pid; void handler(int signum, siginfo_t* siginfo, void* context){ printf("pgid is %d, shell_pgid is %d

    25熱度

    1回答

    簡短的問題是,如果一個shell在一個不擁有tty的孤兒進程組中,那麼shell應該怎麼做?但我建議閱讀這個長問題,因爲它很有趣。 這是一個有趣和令人興奮的方式把你的筆記本電腦變成一個便攜式空間加熱器,用你喜歡的外殼(除非你是其中的一個tcsh的變態): #include <unistd.h> int main(void) { if (fork() == 0) { exec

    1熱度

    2回答

    我對將信號轉發到具有陷阱的子進程感到困惑。說我有兩個腳本: a.sh #!/bin/bash # print the process id echo $$ cleanup() { rv=$? echo "cleaning up $rv" exit } sleep 5 trap '' SIGTERM # trap cleanup SIGTERM ec

    4熱度

    4回答

    我在Linux pid上有一個問題。如何在同一組中獲得pids? 在Linux中使用'ps'命令獲得所有pid或pgid似乎很容易,但是如何獲得屬於同一組的pid,或者換句話說,如何獲得同一個程序的pid? 任何人都請給我一些幫助嗎?謝謝!

    4熱度

    3回答

    我正在爲我的CS類編寫一個shell,並且如果用戶傳入了'&'字符,部分項目涉及在後臺運行進程。 如果一個進程在前臺運行,我只需要execvp該進程,並且它仍處於終端的控制之中,因爲它在前臺。但是,如果它是後臺進程,那麼在開始執行進程後,我必須將控制權返回到主外殼程序。我知道系統調用tcsetpgrp(pid_t)將進程作爲參數放在前臺,但我不太明白如何使用它。 如果是後臺進程,我應該在execv

    1熱度

    1回答

    基本上我想要一個bash腳本進程,在收到SIGINT後,在退出之前終止它的所有子進程。我讀here使用的線沿線的東西: trap "kill -TERM -$$ ; exit 1" INT QUIT 我也看過使用kill 0: trap "kill -TERM 0 ; exit 1" INT QUIT 它們之間有什麼區別?它們滿足以下要求(如果): 僅殺死自己及其子女(假設它是由終端命令啓

    0熱度

    1回答

    我有一個C程序,它通過響應信號來運行。一些信號導致父母分叉。這允許其他處理,而父母繼續響應信號。 當父母發送一個SIGTERM時,我希望分叉的孩子也接收一個SIGTERM。在父母退出之前,孩子們完成處理SIGTERM並不重要。 但是,使用下面的代碼,當我從父項調用kill(0, SIGTERM)時,子項不會收到SIGTERM。從kill manpage看來,所有的孩子都應該得到這個SIGTERM。