У меня очень простая c
программа:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[] ){
int rc = fork();
if (rc < 0){
// fork failed
fprintf(stderr, "fork failed\n");
} else if (rc == 0) {
printf("hi, I'm child! %d\n", (int) getpid());
fflush(stdout);
} else {
printf("hi, I'm the parent of %d\n", rc);
fflush(stdout);
}
return 0;
}
По какой-то причине, когда я компилирую и запускаю эту программу, иногда будут отображаться оба оператора печати, но в других случаях будет отображаться только родительский процесс .
Почему это? Даже если я не использую wait()
, оба процесса все равно должны работать.
Использование g cc 7.5.0 ubuntu 18.04