3

C++ プログラムを作成し、gnome ターミナルで実行しています (Ubuntu を使用しています)。プロセスを一時停止する Ctrl + Z を押します。その後%、同じ端末で実行すると、実行が再開されます。

私が読んだことから、Ctrl + ZはTSTPシグナルをプロセスに送信し、実行を停止するように指示します。しかし、TSTP は、プロセスを停止できると判断するまでプロセスを続行できるという意味で丁寧です。私の C++ プログラム コードでは、TSTP シグナルを明示的に処理するために何もしていません。私の質問は、私の C++ コード内で、TSTP 信号にもかかわらず実行を継続するものは何ですか? たとえば、ファイル ストリームを開いている場合、閉じるまで待機しますか? 深すぎず、すべての詳細を網羅していない、全体的な回答を期待しています。これがどのように起こるかについてのアイデアが欲しいだけです。

4

1 に答える 1

3

SIGTSTPハンドラが実行されている間、プログラムは実行を続けます。設定していないため、プロセスを停止するためのデフォルトのシグナル処理動作が得られます。

プロセスが停止している間は、実行がスケジュールされていません。ファイルは閉じられず、ファイルが閉じられるまで停止も遅延されません (シグナル ハンドラーで行われない限り)。

このWebサイトには、ハンドラーをインストールしていくつかのタスクを実行し、デフォルトの停止動作を行う方法についての役立つ説明があるようです。

于 2014-05-14T15:01:03.020 に答える