Programımı yeniden başlatmaya çalışıyorum ama hiçbir şey işe yaramıyor gibi görünüyor.kullanmayı denedim, ancak parent
işlemini öldürdükten sonra da öldürülür.Bir program kendini nasıl yeniden başlatır? (Linux süreci)
KOD
void sigup_handler(int signum) {
int pid = fork();
if (pid == 0) {
execve("prog2", NULL);
}
else
kill(getpid(), SIGTERM);
}
int main() {
puts("Program 2 started.");
signal(SIGHUP, sigup_handler);
sleep(50);
puts("Program 2 terminated.");
return 0;
}
Bu Program 2 başlatan çıkışı izledi kullanabilirsiniz. Program 2 başladı. basit yürütme ile ("prog2", NULL); Bu beni şaşırttı. "Program 2 sonlandırıldı" görüntülememeli mi? – bvk256
"Program 2 sonlandırıldı" diye hiçbir zaman çağrılamaz; çünkü ebeveyn kendisini (killpid(), ...); –
Tamam, o zaman. Her neyse, bu mesaj bir sürecin sonlandırılacağı garanti edilen yerlere yerleştirilerek kolayca elde edilebilir. – bvk256