
ターミナルで無限の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
コマンドを使用できます。