1
forkを使用した単純な親子プロセスプログラムを実装しています。私の目標は、単一の親からの子プロセスのユーザー入力数を作成し、そのPIDを動的配列に格納することです。私はフォークを使って子プロセスを作成してPIDSを保存します。しかし、私はPIDを格納するとき、私も0のPIDを格納し、私は他のPIDがプロセスに関連していると信じていますが、この数は子供と親よりもかなり大きいです。1つの親プロセスからの複数の子プロセス
これは明らかにこれが親プロセス内でのみ行われる場合に起こりますか?
void createProcesses(int nProcess) {
int i;
int PID;
processIDS = calloc(nProcess, sizeof(long));
printf("*****Creating Processes*****\n");
printf("Parent Process: PID %d\n", getpid());
for (i = 0; i < nProcess; i++) {
PID = fork();
if (PID == 0) {
printf("Child Process: PID %d\n", getpid());
while(1){}
}
else if(PID != 0) {
// sleep(3);
// printf("Number of child processes created: %d\n", nProcess);
// updateProcessList();
*(processIDS + i) = PID;
printf("%d\n", PID);
}
}
for(i = 0; i < sizeof(processIDS); i++) {
printf("%ld\n", *(processIDS + i));
}
while(1) {
sleep(5);
updateProcessList();
}
}
processIDS is a long * global variable.
はまた、それがポインタベースの変異体よりも読みする方法より簡単です、[i]は 'processIDsを'使用することを検討してください。 – unwind