【发布时间】:2014-05-02 09:25:31
【问题描述】:
我写了以下(相当愚蠢的)C 代码:
#include<stdio.h>
#include<signal.h>
void myHandler(int signum) {
printf("This will never be printed...\n");
}
int main(int argc, char *argv[]) {
struct sigaction s1;
s1.sa_handler=myHandler;
sigset_t sigs;
sigfillset(&sigs);
sigprocmask(SIG_BLOCK, &sigs, NULL);
sigaction(SIGINT, &s1, NULL);
while (1) sleep();
return 1;
}
现在不能从终端杀死它!
当我尝试从终端执行“kill 4242”时(4242 是进程 ID),它会忽略它!
当然,我的意图是这个过程会忽略所有信号,但是 SIGKILL 不能被忽略,可以吗?
我怎样才能杀死这个进程?
顺便说一句,当从终端运行“ps”时,它不会在列表中显示:
4348 pts/8 00:00:00 bash
4444 pts/8 00:00:00 ps
它只会在我运行 'ps -u my_username' (以及其他一堆)时显示。有人知道为什么吗?
【问题讨论】:
-
如果您尝试
ps -ef会怎样?它必须出现在那里。然后只是kill id甚至kill -9 id。 -
Plain
kill发送 SIGTERM,而不是 SIGKILL。