4つの並列処理で何かしたい
最初にonecをフォークし、子と親で再びフォークして4つのプロセスを取得します。
私が欲しいのは、4つのプロセスがすべて終了した後に何かをすることです。waitpid(-1, &status, 0);
そして私の理想的な出力はそれです
in
numbers
out
しかし、実際の出力は時々
in
numbers
out
one number
そして、私はそれを理解することはできません。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/time.h>
#include <error.h>
int main()
{
pid_t cpid, w;
int status;
printf("%s\n", "in");
cpid = fork();
if (cpid == 0)
{
cpid = fork();
if (cpid == 0)
{
printf("%s\n", "1");
exit(EXIT_SUCCESS);
}
else{
printf("%s\n", "2");
exit(EXIT_SUCCESS);
}
}
else{
cpid = fork();
if (cpid == 0)
{
printf("%s\n", "3");
exit(EXIT_SUCCESS);
}
else{
printf("%s\n", "4");
//exit(EXIT_SUCCESS);
}
}
waitpid(-1, &status, 0);
printf("%s\n", "out");
//do something
exit(EXIT_SUCCESS);
return 0 ;
}