错误编译进程 SIGALRM kill
Posted
技术标签:
【中文标题】错误编译进程 SIGALRM kill【英文标题】:Error compiling process SIGALRM kill 【发布时间】:2012-04-23 01:19:34 【问题描述】:这个程序会创建一个子进程,子进程会等待一个ALARM信号,当这个信号在3秒后到达时,f函数会抓取父进程ID,并发送一个SIGINT信号杀死它,所以孩子会在 3 秒后杀死父母
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <string.h>
void f(int sig)
kill(getppid(),SIGINT);
main()
int f=fork();
if(f==0)
signal(SIGALRM,f);
alarm(3);
else
pause();
我收到了这个错误:
test13.c: In function ‘main’:
test13.c:16:3: warning: passing argument 2 of ‘signal’ makes pointer from integer without a cast
/usr/include/signal.h:101:23: note: expected ‘__sighandler_t’ but argument is of type ‘int’
【问题讨论】:
【参考方案1】:不要再用你的变量踩f
了。
【讨论】:
尝试重命名变量,这样就不会有多个名为f
的东西@【参考方案2】:
你已经reused the name f
to refer to different things depending upon scope。
【讨论】:
以上是关于错误编译进程 SIGALRM kill的主要内容,如果未能解决你的问题,请参考以下文章