Kill(pid, 0) 似乎没有正确设置错误代码...如 man for kill 中所述
错误
如果出现以下情况,kill() 函数将失败:
EINVAL sig 参数的值是无效或不受支持的信号编号。
EPERM 进程无权向任何接收进程发送信号。
ESRCH 找不到与pid指定的进程或进程组对应的进程或进程组。以下部分内容丰富。 1
它返回 ENOENT (没有这样的文件或目录),然后有时它返回 EINTR (系统调用中断)......
这是我正在做的事情:
kill(g_StatusInstance[i].pid, SIGTERM) == -1 && log_fatal_syscall("kill-sigterm");
kill(g_StatusInstance[i].pid, 0);
log_info_console( "Checking process for errors: %s\n", strerror(errno));
if(errno != ENOENT)
{
kill(g_StatusInstance[i].pid, SIGKILL) == -1 && log_fatal_syscall("kill-sigkill");
}
难道我做错了什么?