1

プロセスがエラーなしで実行を完了したかどうかを知るにはどうすればよいですか? C++ プログラムが OS に成功を返したかどうかを知るにはどうすればよいですか?

シェル経由で実行する場合は $? を使用できますが、他のユーザーによって開始されたプロセスのステータスを確認している場合、どうすればステータスを確認できますか?

朝にプロセスを開始し、正午に終了したとします。私は夕方まで他の活動に取り組んでいましたが、出発する前に、プロセスがOSに戻ったものを確認したいと思います。どうすればプログラムでそれを実現できますか。syslogを実行すると役立ちますが、代替手段を探しています。

OS のプロセス テーブルを実行してこの情報を読み取ることはできますが、私の要件では少し複雑に思えます。プロセスのすべてのエラーが記録される syslog のようなものはありますか?

終了したプロセス (他のユーザーも) によって報告されたエラーを取得する他の方法はありますか?

4

1 に答える 1

3

プロセスが終了すると、その親プロセスはwaitorwaitpid関数を使用してこれを確認する必要があります。これらの関数は、終了ステータスも返します。への呼び出しwaitまたはwaitpidプロセス テーブル エントリが削除された後、終了ステータスはオペレーティング システムのどこにも保存されなくなります。プロセスの開始に使用するソフトウェアが終了ステータスをどこかに保存するかどうかを確認する必要があります。

子プロセスが終了したことを親プロセスが確認していない場合は、ファイル システムからその終了ステータスを読み取ることができます/proc。これは の最後のフィールドです/proc/[pid]/stat。それを返すのと同じ形式で保存されるwaitため、終了コードを取得するには 256 で除算する必要があります。また、おそらくルートにする必要があります。

于 2013-08-26T10:36:04.903 に答える