如何在Linux中重启正在运行的进程?

时间:2015-08-03 20:30:24

标签: linux kill restart

您好我需要从Linux提示符重启正在运行的C进程。我用谷歌搜索了一些网站并建议使用SIGHUP,这在我的情况下不起作用。还有其他任何建议/指示吗?

我有以下代码段

#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
#]

2 个答案:

答案 0 :(得分:1)

如果你想使用信号来重新启动你的过程,理论上你可以为SIGHUP创建自己的信号处理程序,并让信号处理程序再次执行你的程序+参数。虽然;我怀疑在进行此操作之前,您可能想要真正阅读信号处理程序及其周围的语义。

请参阅:man signalman execvp

答案 1 :(得分:0)

重新启动进程是为了停止它并再次启动它。所以你可能会杀死进程并重新启动它。此外,您可以轻松编写脚本来杀死并启动进程(通过其名称或其pid)。