-3

Cでプロセスを作成し、その状態で遊ぶにはどうすればよいですか?

  • プロセスの作成方法を教えてください。
  • このプロセスをブロック状態にする方法を教えてください。
  • このプロセスをゾンビ状態にする方法を教えてください。

Cでプロセスを操作する方法のガイドは、私がそれを見つけることができない場合に役立ちます。このようにして、私はそれらの質問に自分で答えることができました。

私はプロセスの状態を確認するためにpsで遊んでいますが、実際に開始する方法がわかりません。

Linuxで作業しています。英語でごめんなさい。

4

3 に答える 3

2

fork() を使用して子プロセスを作成します - プログラム自体はとにかくプロセスで実行されます

プロセスを「ブロック」状態にします:- sleep() を使用するか、ブロッキング write() を発行します - 詳細についてはマンページを読んでください - ここで「ブロック」とは正確に何を意味するのかわかりません

ゾンビの作成 - fork() を実行し、プログラムを終了します。PSからゾンビを「見る」ことができます

于 2012-12-01T22:03:19.363 に答える
2

典型的な親子プロセスの理解を捨てると、簡単になります

childpid=fork();
switch (childpid){
case 0 : //normally considered the child, but we will use it to continue on
     finish_program();
     return(0);
case -1 : //error occurred
default : //normally considered the parent, but our "blocked" process
     wait(childpid); //waits for the child process to terminate
     dostuff();
}

子が終了するまで親はブロックされます

通常、セマフォと共有メモリを使用してプロセスをブロックしますが、これは良い出発点です

于 2012-12-01T22:04:05.743 に答える
1

@ user1869399 - あなたは非常に良い質問をしたと思います.バグキャッチャーは非常に良い答えを出したと思います.

「ゾンビ」の作成に関するバグ キャッチャーの提案の鍵は、終了後に「クリーンアップ」せずにプロセスを fork することです (つまり、「waitpid()」の呼び出しに失敗します)。

Linux プロセスの状態に関する非常に優れたリンクを次に示します。

また、waitpid() の「man ページ」の「メモ」セクションを参照してください。

于 2012-12-01T22:08:04.280 に答える