Различное поведение кода при вызове метода fork
Имеется следующий код
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main()
{
printf("Hello World!\n");
printf("1) Proccess: pid:%d\n", (int) getpid());
pid_t rc = fork();
if(rc == 0){
printf("child\n");
}
else if(rc > 0){
printf("parent\n");
}else{
printf("error\n");
}
printf("2) Proccess: pid:%d\n", (int) getpid());
return 0;
}
При компиляции и запуске через терминал имеем следующий вывод:
Hello World!
1) Proccess: pid:97683
parent
2) Proccess: pid:97683
child
2) Proccess: pid:97684
При запуске в QT Creator вывод такой:
Hello World!
1) Proccess: pid:97674
parent
2) Proccess: pid:97674
Hello World!
1) Proccess: pid:97674
child
2) Proccess: pid:97675
То есть код до вызова метода fork вызывается дважды. Можете, пожалуйста, объяснить, почему возникает такое поведение в QT Creator и можно ли это как-то исправить?
Ответы (1 шт):
Автор решения: fat cock
→ Ссылка
Популярная проблема, связанная с буферизацией вывода. Используйте fflush или небуферизирующий способ вывода, чтобы у другого процесса на момент старта был чистый буфер