Сегодня у нас было школьное упражнение, чтобы создать несколько процессов. Наша проблема заключалась не в самом коде и не в понимании fork ().
Проблема, с которой столкнулись я и мой друг, заключалась в том, что он не создал 4 процесса нашего кода, как показано ниже:
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
//kod
int child1();
int child2();
int main() {
pid_t pid1, pid2;
int i;
pid1 = fork();
pid2 = fork();
if(!pid1)
child1();
else if(!pid2)
child2();
else {
printf("parentlolololololol");
}
for(;;)
return 0;
}
int child1(){
for(;;) {
printf("A");
fflush(stdout);
sleep(1);
}
return 0;
}
int child2(){
for(;;){
printf("B");
fflush(stdout);
sleep(1);
}
return 0;
}
У нас есть частичное обсуждение того, создает ли программа 4 процесса или нет. Создает ли второй вызов fork () новый процесс дочернего процесса и почему он не задерживается каким-либо циклом в этом случае? Или второй вызов fork () не создает вообще новый дочерний процесс?
Это никак не относится к нашему упражнению, но нам очень любопытно, так как вы должны быть программистом;)