2012-04-23 32 views
4

這個程序會創建一個子進程,子進程會等待一個ALARM信號,當這個信號到達3秒後,f函數會抓取父進程ID,併發送一個SIGINT信號給殺死它,所以孩子3秒鐘錯誤編譯過程SIGALRM kill

#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’ 

回答

6

停止踩f與您的變量。

+0

跺腳是什麼意思? – 2012-04-23 01:23:02

+0

嘗試重命名變量,因此沒有多個名爲'f'的東西 – 2012-04-23 01:23:29

+0

啊是啊是的... f叉... blablabla .. thx:D – 2012-04-23 01:23:59