fork()を使用して新しいプロセスを作成するプログラムを作成しようとしています。サンプル出力は次のようになります。fork()子プロセスと親プロセス
これは子プロセスです。私のPIDは733、親のIDは772です。
これは親プロセスです。私のpidは772で、私の子供のidが773
これは私が私のプログラムをコード化する方法である:
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("This is the child process. My pid is %d and my parent's id is %d.\n", getpid(), fork());
return 0;
}
これは出力になり:
これは、子プロセスです。私のPIDは22163で、私の親のIDは0です。
これは子プロセスです。私のpidは22162で、私の親のIDが22163.
なぜそれが二回文を印刷しているとどのように私はそれが適切に最初の文の子IDが表示されたら、親のIDを表示するように得ることができますか?
EDIT:あなたが一度あなたのプログラムの実行中に、かつてフォークで、二回のprintfを呼び出しているので、
#include <stdio.h>
#include <stdlib.h>
int main() {
int pid = fork();
if (pid == 0) {
printf("This is the child process. My pid is %d and my parent's id is %d.\n", getpid(), getppid());
}
else {
printf("This is the parent process. My pid is %d and my parent's id is %d.\n", getpid(), pid);
}
return 0;
}
プログラムでは、「親プロセス」という言葉はどこにも印刷しません。彼らはプログラムのテキストには存在しません、なぜあなたはそれらが印刷されると思いますか? –
'man fork'。それを読んで。言葉を理解する。あなた自身で答えを見つける手段がないときは、StackOverflowに行きます。あなたはこの経験のためにより良いプログラマーになるでしょう。 – asveikau
また、 'fork'は親プロセスIDを子に返しません。子には0、親には子のIDを返します。それがあなたがどのようなものかを知る方法です。 –