質問: UNIX上のプロセスのデッドロック理由を実際に見つける方法 Unixでは、プロセスが停止しています。デッドロックが発生する可能性がありますか、デッドロックの理由を見つけ、それを削除して回避する方法はありますか? 私はデッドロックの4つの条件を知っています: 1. 相互排除:一度に最大で1つのプロセスにリソースを割り当てることができます(共有しない)。 2. 保留と待機:リソースを保持している処理で別の処理を要求することができます。 3. 優先なし:プロセスはリソースを解放する必要があります。彼らは取り去ることはできません。 7. 循環待ち:チェーンの各メンバーがチェーンの次のメンバーが保持するリソースを待っているような一連のプロセスが必要です。 But, they are theoretical, how to determine a deadlock on unix practically ? Only by seeing that a process does not make progress ? How to find which part of the code cause the deadlock and the reasons ? If you are allowed to use tools, what can be used ? thanks
回答: デバッガを使用します。 デッドロックをデバッグするためのヒント またはこのシンプルなもの: gdbを使用したデッドロックシナリオの検索方法