最初はわかりませんでしたが、システムがプログラムを一時停止(Stopped
状態)にすることを決定しているようです。 jobs
現在のターミナルセッションで停止または実行されているすべてのジョブを表示します。 bg
/fg
を使用して停止したジョブを再開できるため、ファイルが書き込まれたかどうかを確認できます。原因をさらに詳しく調べるためのもう1つのアイデアは、を実行すること/usr/bin/nohup strace ./a.out 1>stdout.txt 2>stderr.txt
です。はstrace
、すべてのシステムコールを-にダンプする必要があります。これにより、システムコールstderr.txt
が停止した理由を確認できる場合があります。
このタイプの問題の一般的な原因は、プログラムが何らかの入力nohup
を必要とし、それを提供する端末がないため、システムがプログラムを停止することであるように思われます。私の最初の提案は、自動生成された入力を提供するために次のことを試すことでした。
/usr/bin/nohup ./a.out </dev/zero
私のシステムでは、代わりにこれを使用して自動的に実行します。
/usr/bin/nohup ./a.out </dev/null
システムが自動的にnull入力を提供しない理由もわかりません。また、プログラムが入力を待機している理由もわかりません。あなたの最初の試みは私にとってはうまくいきました(私はあなたの問題を再現することはできません)。
nohup ./a.out
(または)を実行するとnohup ./a.out &
、次のメッセージが表示されます。これは、自動入力抑制を示しています。
nohup: ignoring input and appending output to `nohup.out'
したがって、別の調査行は次のとおりです。このメッセージが表示されないのはなぜですか。
別の攻撃ラインは、システムが気に入らないように思われるためnohup
、次のようなバックグラウンドタスクとしてプログラム&
を再起動することです。Stopped
/usr/bin/nohup ./a.out & bg
明らかに、nohup
と一緒に使用することを意図している&
ので、あなたの問題は少し奇妙です。