2012-01-12 14 views
3

別の端末からkill -SIGCONT pidを実行した後、次のプロセスは続行されません。-SIGCONTは処理を一時停止しませんか?

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    printf("paused\n"); 
    pause(); 
    printf("continue\n"); 

    return 0; 
} 

信号を送信して「続行」を印刷した後、プログラムが続行されると思います。どのようにこれは期待どおりに動作しませんか?

答えて

3

pause()は信号がいずれかのプロセスを終了するか シグナル捕獲関数の呼び出しを引き起こすことが配信されるまでスリープ状態に

原因呼び出し元のプロセス(またはスレッド)に記載されています。

しかし、SIGCONTは、以前にSIGSTOPまたはSIGTSTPによって停止されたプロセスのみを続行します。

だから、あなたがしようとする場合があります。代わりにあなたのpause()

kill(getpid(), SIGSTOP); 

また、あなたはsigsuspend()で見たいと思うかもしれません。

関連する問題