C語言kill()函式:傳送訊號給指定的程式

2puT發表於2016-07-23
相關函式:raise, signal

標頭檔案:#include <sys/types.h>   #include <signal.h>

定義函式:int kill(pid_t pid, int sig);

函式說明:kill()可以用來送引數sig 指定的訊號給引數pid 指定的程式。引數pid 有幾種情況:
1、pid>0 將訊號傳給程式識別碼為pid 的程式.
2、pid=0 將訊號傳給和目前程式相同程式組的所有程式
3、pid=-1 將訊號廣播傳送給系統內所有的程式
4、pid<0 將訊號傳給程式組識別碼為pid 絕對值的所有程式引數 sig 代表的訊號編號可參考附錄D


返回值:執行成功則返回0, 如果有錯誤則返回-1.

錯誤程式碼:
1、EINVAL 引數sig 不合法
2、ESRCH 引數pid 所指定的程式或程式組不存在
3、EPERM 許可權不夠無法傳送訊號給指定程式


範例
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/wait.h>
main()
{
    pid_t pid;
    int status;
    if(!(pid= fork()))
    {
        printf("Hi I am child process!\n");
        sleep(10);
        return;
    }
    else
    {
        printf("send signal to child process (%d) \n", pid);
        sleep(1);
        kill(pid, SIGABRT);
        wait(&status);
        if(WIFSIGNALED(status))
            printf("chile process receive signal %d\n", WTERMSIG(status));
    }
}

執行:
sen signal to child process(3170) Hi I am child process! child process receive
signal 6

相關文章