バックグラウンドプロセスが実行されていませんか?

バックグラウンドプロセスが実行されていませんか?

ターミナルで無限のwhileループを使用してCプログラムを実行しましたが、CPUコアの1つが100%の使用量に達したことを観察しました。 +を使用してCtrlバックグラウンドプロセスに切り替えると、zCPU使用率が突然10%未満に低下します。を使用して、htopプロセスがCPUを0%使用していることがわかりました。その過程で何が起こりましたか?

プログラム

int main()
{
    int i;
     while( 1 )
    { }
    return 0;
}

プログラムにI / Oが含まれていないため、I / O待機使用量が増加したことを確認するためにプログラムを少し変更しましたが、同じ結果(使用率0%)が得られました。

int main()
{
    int i;
     while( i+1 ) // wait to retrieve i
    {
        i = 1; 
    }
    return 0;
}

その過程で何が起こりましたか?走る?

ベストアンサー1

端末でCtrl+を押すと、zSIGTSTPはフォアグラウンドで実行されているジョブのプロセスグループに送信されます。

SIGSTPの基本的な作業は、プロセスを停止(つまり一時停止)することです。

     18    SIGTSTP      stop process         stop signal generated from keyboard

プロセスがバックグラウンドで再実行されるようにするには、shell-builtin bg(バックグラウンドの略)を使用できます。プロセスがフォアグラウンドで再実行されるようにするには、このfgコマンドを使用できます。

おすすめ記事