Tôi đang cố gắng để chương trình của mình tự khởi động lại, nhưng không có gì có vẻ hiệu quả. Tôi đã thử sử dụng fork()
, nhưng sau khi giết chết ,parent
quá trình sốchild
cũng bị giết.Làm cách nào để làm cho chương trình tự khởi động lại? (Quá trình Linux)
MÃ
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;
}
Nó ra Chương trình 2 bắt đầu. Chương trình 2 bắt đầu. với thực hiện đơn giản ("prog2", NULL); Điều này làm tôi bối rối. Không nên nó hiển thị "Chương trình 2 chấm dứt."? – bvk256
Nó sẽ không bao giờ gọi là "Chương trình 2 chấm dứt" vì cha mẹ đã tự chấm dứt bằng cách giết (getpid(), ...); –
Ok, sau đó. Dù sao thông điệp này có thể dễ dàng đạt được bằng cách đặt nó ở những nơi mà một quá trình được đảm bảo chấm dứt. – bvk256