【问题标题】:error: ‘SIGKILL’ undeclared (first use in this function)错误:“SIGKILL”未声明(在此函数中首次使用)
【发布时间】:2013-07-04 08:00:12
【问题描述】:

好吧,我试着做一个简单的函数来不断改变它的PID, 但我明白了:

error: ‘SIGKILL’ undeclared (first use in this function)

这是我的代码:

#include <stdio.h>

int changePID(void) {
        int pid = fork();
        printf(pid);
        sleep(3);
        kill(pid, SIGKILL);
}

    int main(void) {
        while (1) {
            changePID();
            }
}

【问题讨论】:

标签: c fork kill


【解决方案1】:

你错过了 SIGKILL 的 #include &lt;signal.h&gt;

printf(pid); 不起作用,因为 printf 需要一个 char* 而你给他一个 pid_t

循环杀死一个孩子有什么意义?

printf 将在父亲中进行 segv,因此您永远无法杀死

你要杀了儿子

当前进程的进程组中的每个进程,pid为0

【讨论】:

  • pid_t 隐含地与 @includeing &lt;unistd.h&gt; 一起出现,原型为 fork()sleep()
【解决方案2】:

你需要添加:

#include <sys/types.h>
#include <signal.h>

当您遇到系统调用问题时,请查看手册页。

【讨论】:

  • 正在工作,虽然我必须修复一些其他错误,但很好,谢谢!
  • 为什么要包含&lt;sys/types.h&gt;
  • +1 用于讨论联机帮助页。 2013 年似乎没有人再看手册页了……
【解决方案3】:

尝试包含

#define <sys/signal.h>

【讨论】:

    猜你喜欢
    • 2016-05-09
    • 2018-10-03
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多