色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区


信號(hào)發(fā)送函數(shù)kill()和raise()

分享到:
           

    本文關(guān)鍵字: 信號(hào)發(fā)送函數(shù),kill(),raise()

    kill()函數(shù)同讀者熟知的kill系統(tǒng)命令一樣,可以發(fā)送信號(hào)給進(jìn)程或進(jìn)程組(實(shí)際上,kill系統(tǒng)命令只是kill()函數(shù)的一個(gè)用戶接口)。這里需要注意的是,它不僅可以中止進(jìn)程(實(shí)際上發(fā)出SIGKILL信號(hào)),也可以向進(jìn)程發(fā)送其他信號(hào)。

    與kill()函數(shù)不同的是,raise()函數(shù)允許進(jìn)程向自身發(fā)送信號(hào)。

    表1列出了kill()函數(shù)的語(yǔ)法要點(diǎn)。

表1 kill()函數(shù)語(yǔ)法要點(diǎn)

所需頭文件 #include <signal.h>
#include <sys/types.h>
函數(shù)原型 int kill(pid_t pid, int sig)
函數(shù)傳入值 pid 正數(shù):要發(fā)送信號(hào)的進(jìn)程號(hào)
0:信號(hào)被發(fā)送到所有和當(dāng)前進(jìn)程在同一個(gè)進(jìn)程組的進(jìn)程
1:信號(hào)發(fā)給所有的進(jìn)程表中的進(jìn)程(除了進(jìn)程號(hào)大的進(jìn)程外)
<-1:信號(hào)發(fā)送給進(jìn)程組號(hào)為-pid的每一個(gè)進(jìn)程
sig:信號(hào)
函數(shù)返回值 成功:0
出錯(cuò):-1

    表2列出了raise()函數(shù)的語(yǔ)法要點(diǎn)。

表2 raise()函數(shù)語(yǔ)法要點(diǎn)

所需頭文件 #include <signal.h>
#include <sys/types.h>
函數(shù)原型 int raise(int sig)
函數(shù)傳入值 sig:信號(hào)
函數(shù)返回值 成功:0
出錯(cuò):-1

    下面的示例首先使用fork()創(chuàng)建了一個(gè)子進(jìn)程,接著為了保證子進(jìn)程不在父進(jìn)程調(diào)用kill()之前退出,在子進(jìn)程中使用raise()函數(shù)向自身發(fā)送SIGSTOP信號(hào),使子進(jìn)程暫停。接下來(lái)在父進(jìn)程中調(diào)用kill()向子進(jìn)程發(fā)送信號(hào),在該示例中使用的是SIGKILL,讀者可以使用其他信號(hào)進(jìn)行練習(xí)。

    /* kill_raise.c */
    #include <stdio.h>
    #include <stdlib.h>
    #include <signal.h>
    #include <sys/types.h>
    #include <sys/wait.h>

    int main()
    {
        pid_t pid;
        int ret;

        /* 創(chuàng)建一個(gè)子進(jìn)程 */
        if ((pid = fork()) < 0)
        {
            printf("Fork error\n");
            exit(1);
        }

        if (pid == 0)
        {
            /* 在子進(jìn)程中使用raise()函數(shù)發(fā)出SIGSTOP信號(hào),使子進(jìn)程暫停 */
            printf("Child(pid : %d) is waiting for any signal\n", getpid());
            raise(SIGSTOP);
            exit(0);
        }
        else
        {
            /* 在父進(jìn)程中收集子進(jìn)程發(fā)出的信號(hào),并調(diào)用kill()函數(shù)進(jìn)行相應(yīng)的操作 */
            if ((waitpid(pid, NULL, WNOHANG)) == 0)
            {
                if ((ret = kill(pid, SIGKILL)) == 0)
                {
                    printf("Parent kill %d\n",pid);
                }
            }

            waitpid(pid, NULL, 0);
            exit(0);
        }
    }

    該程序運(yùn)行結(jié)果如下:

    $ ./kill_raise
    Child(pid : 4877) is waiting for any signal
    Parent kill 4877

    本文選自華清遠(yuǎn)見(jiàn)嵌入式培訓(xùn)教材《從實(shí)踐中學(xué)嵌入式Linux應(yīng)用程序開(kāi)發(fā)》

   熱點(diǎn)鏈接:

   1、Linux下的信號(hào)機(jī)制
   2、有名管道(FIFO)
   3、標(biāo)準(zhǔn)流管道
   4、無(wú)名管道系統(tǒng)調(diào)用
   5、Linux下進(jìn)程間通信方式-管道

更多新聞>> 

色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区
主站蜘蛛池模板: 亚州精品天堂中文字幕| 日韩欧美成人网| 久久久久久久成人| 国产日产久久高清欧美一区| 日韩精品视频在线| 欧美风情在线观看| 亚洲成av人片在线观看香蕉| 久久资源免费视频| 国产精品黄视频| 日韩亚洲欧美成人| 日韩暖暖在线视频| 亚洲最大在线视频| 欧洲中文字幕国产精品| 亚洲欧美www| 2018国产精品视频| 国产一区二区免费| 97精品久久久中文字幕免费| 国产亚洲成精品久久| 欧美有码在线观看| 日韩在线观看免费高清| 国产91精品最新在线播放| 日韩午夜在线视频| 91老司机精品视频| 欧美精品久久久久久久| 亚洲视频精品在线| 国产免费成人av| 欧美高跟鞋交xxxxhd| 亚洲精品在线91| 国产www精品| 久久97久久97精品免视看| 日韩激情片免费| 国产精品444| 色综合老司机第九色激情| 亚洲视频综合网| 成人精品久久一区二区三区| 日韩欧美成人网| 中文字幕在线精品| 亚洲高清色综合| 国产精品高清在线| 久久久免费电影| 九九热这里只有精品6|