Я пытаюсь понять команды fork, sleep ....
Я хочу сделать 4 дочерних и одну родительскую операцию именно в этом порядке.Родитель> child1> child4> child2> child3.Задачи этих процессов, как я написал в коде ниже.В этом коде у меня есть 1 родитель, 3 ребенка и 1 внук (child4 - внук).Как я могу совершать транзакции в этом порядке?Я пытался перевести режим ожидания в каждый if, но программа завершилась, не дожидаясь ввода в child2.
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <sys/wait.h>
#include <stdlib.h>
int main(void)
{
int n1 = fork();
int n2 = fork();
int input;
if (n1 > 0 && n2 > 0) {
int n3=fork();
if(n3==0)
{ //3th child
printf("3th child process id is %d (parent: %d) \n", getpid(),getppid());
if(input == getppid()) {
printf("matched!\n"); }
else {
printf("not matched!\n"); }
printf("program ended\n");
}
else {
printf("parent process id is %d (parent: %d)\n", getpid(),getppid());
sleep(1);
}
}
else if (n1 == 0 && n2 > 0)
{
printf("1th child process id is %d (parent: %d)\n",getpid(),getppid());
FILE * fp;
fp = fopen ("xx.txt", "w+");
printf("file was created...\n");
sleep(1);
}
else if (n1 > 0 && n2 == 0)
{
printf("2th child process id is %d (parent: %d) \n", getpid(),getppid());
printf("Enter a key: \n");
scanf("%d",&input);
FILE * fp;
fp = fopen ("xx.txt", "w+");
fprintf(fp, "%d", input);
printf("input has been written to the txt file!\n");
}
else {
//4th child
printf("4th child grandson process id is %d (parent: %d)\n", getpid(),getppid());
printf("say me password!\n");
}
return (0);
}