2015-08-03 7 views
0

Привет, мне нужно перезапустить запущенный процесс C из приглашения Linux. Я googled, и некоторые сайты предложили SIGHUP, который не работает в моем случае. Любые другие предложения/указатели?Как перезапустить запущенный процесс в Linux?

Я следующий фрагмент кода выхода

#include <stdio.h> 
#include <unistd.h> 

int main() { 
    fprintf(stderr,"%s","Entering main function\n"); 
    while(1) { 
     sleep (1); 
} 
fprintf(stderr,"%s","Exiting main function\n"); 
return; 
} 

Linux

#] ./simple & 
[1] 489440 
#] Entering main function 
#] ps aux | grep simple 
user 489440 0.0 0.0 3924 360 pts/135 S 13:25 0:00 ./simple 
user 489710 0.0 0.0 105312 804 pts/135 S+ 13:25 0:00 grep simple 
#] kill -1 489440 
[1] Hangup      ./simple 
#] ps aux | grep simple 
user 490181 0.0 0.0 105312 800 pts/135 S+ 13:25 0:00 grep simple 
#] 
+0

возможно дубликат [Как перезапустить C программы демона в Linux после получения SIGHUP сигнала] (http://stackoverflow.com/questions/2955847/how-to-restart-c- демон-программа-в-Linux, после принимающего-SIGHUP-сигнала) – Foon

ответ

0

перезапуска процесса, чтобы остановить его и запустить его снова. Таким образом, вы можете просто убить процесс и начать его снова. Кроме того, вы можете легко написать сценарий, чтобы убить и запустить процесс (по его названию или по его pid).

1

Если вы хотите использовать сигналы для повторного запуска своего процесса, вы можете теоретически создать свой собственный обработчик сигнала для SIGHUP и обработать обработчик сигнала снова ваши аргументы в программе +. Несмотря на то что; Я подозреваю, что вы, возможно, захотите действительно прочитать обработчики сигналов и семантику вокруг них, прежде чем начинать это.

См: man signal и man execvp

Смежные вопросы