0

私はエアコンの問題があります誰もが私を助けることができます。私はc言語でプロセス作成のコードを書きました、それはpid&fork()呼び出しを使用します。フォークコールは子プロセスを作成するために使用されますが、親プロセスを作成する方法を誰かに教えてもらえますか?処理中の子を作成するとプロセスが自動的に親になることは知っていますが、最初から親プロセスを作成したいので、誰でもこれを行う方法を教えてもらえます。次に、使用方法がわからないプロセスを作成します。仕事(計算)を割り当てることができないので、誰かが仕事のためにプロセスを使用する方法を教えてもらえますか?

3つ目は、プロセスに名前を付けたいのですが、どうすればそれを実行でき、どのように実行を制御できますか?誰かが私を啓発することができれば、私がこれらすべてを理解するのを手伝ってください。よろしくお願いします。よろしくお願いします。

4

5 に答える 5

4

fork 呼び出しは、pid、親 pid などのいくつかの小さな違いを除いて、既存のプロセスと同一の新しいプロセスを作成します。元のプロセスはまったく同じ場所から実行され、これ親プロセスです。つまり、あなたの質問は基本的に無意味です。親プロセスは作成しません。子プロセスが作成されると、元のプロセスが親プロセスになります。

「妊娠・出産で子供を作ったけど、どうやって親を作ればいいの?」と聞いているようなものです。あなたは自動的に親です。

コンピュータに戻る...

フォークすると、システム コールは子の pid を親に返し、0 を子に返すため、次のようなコードが必要です。

int pid = fork();
if (pid == 0)
{
    // in child, do child processing - normally exec an executable
}
else if (pid > 0)
{
    // in parent, do some processing - often wait for child to complete
}
else
{
    // fork failed -  handle the error
}
于 2010-08-19T11:13:06.920 に答える
1

プロセスを fork すると、1 つのプロセスが 2 つのプロセスになります。それぞれがまったく同じ場所で走り続けます。唯一の違いは、フォークが子プロセスの PID を親プロセスに返し、値 0 を子プロセスに返すことです。

助けがなければ、子プロセスはその親を知りません。2 つのプロセスが相互に通信する必要がある場合、何らかの IPC メカニズムを使用する必要があります。

IPC の一般的な形式はパイプです。フォークする前にパイプを開くと、子と親の両方が開いているファイル記述子を保持します。これにより、両方のプロセスが相互に通信できるようになります。親プロセスは、必要に応じて子プロセスに PID を自由に伝達できるようになりました。

于 2010-08-19T09:43:46.233 に答える
0

名前の変更について ( で表示される名前を意味すると思いますps)、プロセスの「名前を変更」するには、新しい名前をにコピーするだけですargv[0]

于 2010-08-19T11:37:33.653 に答える
0
  1. 親プロセスを作成するには、子を作成するためのコードを使用して、親と子の役割を逆にします。さきほど変更します。新しいプロセスが親で、古いプロセスが子です。

  2. プロセス間の通信には、1pipe(2)つまたは複数の を使用します。また、共有メモリもあります。

  3. 実行を制御するには、 と を使用kill(2)wait(2)ます。名前の割り当てについてはよくわかりません。使用しているプラ​​ットフォームを知る必要があるかもしれません。

于 2010-08-19T09:43:43.117 に答える
0
Secondly i just create the process i don't know how to use it i cant assign any 
work(computation) to it

fork と exec をペアで使用して、実行したいプログラムを実行する必要があります。詳細については、wiki リンクを参照してください。

Fork-exec is a commonly used technique in Unix whereby an executing process spawns a new program. fork() is the name of the system call that the parent process uses to "divide" itself ("fork") into two identical processes. After calling fork(), the created child process is actually an exact copy of the parent - which would probably be of limited use - so it replaces itself with another process using the system call exec().

于 2010-08-19T10:30:52.050 に答える