私は、割り込み可能な状態でハングするUbuntu 10.04で動作するGTKプログラムを持っていて、strace
の出力を理解したいと思います。特に、私はこのラインを持っている:straceからハングアップするファイルの特定
read(5, 0x2ba9ac4, 4096) = -1 EAGAIN (Resource temporarily unavailable)
私は5
を読み取ることには、このファイル内のアドレスファイルディスクリプタ、0x2ba9ac4
あり、かつ4096
読むためにデータの量を疑います。あなたは確認できますか?さらに重要なことは、プログラムがどのファイルを読み込もうとしているかをどのように判断できるのでしょうか?このファイル記述子は/proc/pid/fd
には存在しません(おそらくプログラムがハングする理由です)。
ニース、ありがとう! – Greg
これは '/ etc/passwd'を指しています...正しいと確信できますか?つまり、ファイルディスクリプタが' open'以外の関数によって変更される可能性はありますか?ありがとう – Greg
このファイルディスクリプタが誤った 'read'の上にある最初の' open'であれば、そのファイルはそのファイルです。ファイル記述子は 'close'が呼び出された場合にのみ再利用することができます。確かめたいなら '-eopen、read、close'を使います。ファイル記述子は、対応する 'open'と' close'の間でファイルに一意に関連付けられます。 – liberforce