您好我需要从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
#]
答案 0 :(得分:1)
如果你想使用信号来重新启动你的过程,理论上你可以为SIGHUP创建自己的信号处理程序,并让信号处理程序再次执行你的程序+参数。虽然;我怀疑在进行此操作之前,您可能想要真正阅读信号处理程序及其周围的语义。
请参阅:man signal和man execvp
答案 1 :(得分:0)
重新启动进程是为了停止它并再次启动它。所以你可能会杀死进程并重新启动它。此外,您可以轻松编写脚本来杀死并启动进程(通过其名称或其pid)。