Bir işletim sistemi kursu için bir program izleyicisi yazıyorum (bir giriş gibi çok temel olsa da).Bir programın çalıştırılmasını bir sinyal ile sonlandırıp sonlandırılmadığını nasıl anlarsınız?
Monitörün yapması gereken şeylerden biri, "doğal nedenler" ile bittiğinde izlediği programın sonlandırma kodunu veya sonlandırılmasından sorumlu sinyalin kodunu göstermektir.
Şu anda sadece çocuğumun infazını bitirmesini ve ardından fesih kodunu yakalamasını bekliyorum.
pid_t id = -1;
switch (id = fork()) {
// Error when forking:
case -1:
error(-1, "Something went wrong when forking.");
exit(-1);
// Code for the child process:
case 0:
// Just launch the program we're asked to:
execvp(argv[2], &argv[2]);
// If reached here it wasn't possible to launch the process:
error(1, "Process could not be launched.");
exit(1);
// Code for the parent process:
default:
// Just wait for the child to finish its execution:
wait(&return_value);
}
error(2)
bir hata ortaya çıktığında sadece kod basitleştirmek için, bir kaydedici fonksiyonudur: Bu, ilgili kod parçacığı olduğunu.
Ben süreç farklı ifadeleri göstermek için nasıl bağlı: X, sonlandırma kodu veya sinyal alınan olurdu
Process ended: X
veya
Process terminated with signal X.
. Çocuk sürecinin bir sinyal nedeniyle sona erdiğini nasıl bilebilirdik?
wait(2)
itibaren
Teşekkür ederiz! El kitabında bulmalıydım ... Bunun için üzgünüm. – Johannes