Jadi, saya keluar dari utas anak kembali ke induk. Saya menggunakan panggilan sistem _exit(). Saya bertanya-tanya beberapa hal. Salah satunya adalah parameter _exit untuk anak saya. Berikut adalah kode yang dijalankan oleh proses anak saya:
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);
Saya menggunakan status karena di thread induk saya, saya menggunakannya dalam panggilan sistem waitpid(). Berikut adalah kode untuk proses induk yang dijalankan setelah anak selesai.
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");
}
Di sini saya menggunakan panggilan sistem waitpid() yang memastikan bahwa anak tersebut keluar, kemudian menggunakan status untuk memeriksa apakah sudah keluar dengan benar. Saya bertanya-tanya apakah saya melakukan hal ini dengan cara yang benar dalam menciptakan dan mengeluarkan anak.
Lalu saya juga bertanya-tanya apakah saya sudah memeriksa dengan benar keluarnya anak di induknya.
Terima kasih atas bantuan Anda!