Итак, я выхожу из дочернего потока обратно в родительский. Я использую системный вызов _exit(). Мне было интересно несколько вещей. Одним из них был параметр _exit для моего ребенка. Вот код, который выполняет мой дочерний процесс:
printf("\n****Child process.****\n\nSquence: ");
do{
//Print the integer in the sequence.
printf("%d\t",inputInteger);
if((inputInteger%2) == 0){
//printf("inputInteger = %d\n", inputInteger);
inputInteger = inputInteger / 2;
}else{
inputInteger = 3*inputInteger +1;
//printf("%d\t",inputInteger);
}
}while(inputInteger != 1);
//Makes sure we print off 1!
printf("%d\n\n", inputInteger);
//Properly exit
_exit(status);
Я использую статус, потому что в своем родительском потоке я использую его в системном вызове waitpid(). Вот код родительского процесса, который выполняется после завершения дочернего процесса.
waitpid_check = waitpid(processID, &status, 0);
printf("\n****Parent process.****\n");
if(waitpid_check == -1){
printf("Error in waitpid.\n");
exit(EXIT_FAILURE);
}
if(WIFEXITED(status)){
printf("Child process terminated normally!\n");
}
Здесь я использую системный вызов waitpid(), который гарантирует, что дочерний процесс был завершен, а затем использую статус, чтобы проверить, правильно ли он был завершен. Мне было интересно, правильно ли я делаю это, создавая ребенка и выходя из него.
Тогда мне также было интересно, правильно ли я проверял выход ребенка из родителя.
Спасибо за вашу помощь!