IT培训机构|91免费精品视频|专注编程培训|91免费精品|软件开发培训_91免费国产视频_华清远见教育


信號發送函數kill()和raise()

分享到:
           

    本文關鍵字: 信號發送函數,kill(),raise()

    kill()函數同讀者熟知的kill系統命令一樣,可以發送信號給進程或進程組(實際上,kill系統命令只是kill()函數的一個用戶接口)。這里需要注意的是,它不僅可以中止進程(實際上發出SIGKILL信號),也可以向進程發送其他信號。

    與kill()函數不同的是,raise()函數允許進程向自身發送信號。

    表1列出了kill()函數的語法要點。

表1 kill()函數語法要點

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

    表2列出了raise()函數的語法要點。

表2 raise()函數語法要點

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

    下面的示例首先使用fork()創建了一個子進程,接著為了保證子進程不在父進程調用kill()之前退出,在子進程中使用raise()函數向自身發送SIGSTOP信號,使子進程暫停。接下來在父進程中調用kill()向子進程發送信號,在該示例中使用的是SIGKILL,讀者可以使用其他信號進行練習。

    /* 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;

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

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

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

    該程序運行結果如下:

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

    本文選自華清遠見嵌入式培訓教材《從實踐中學嵌入式Linux應用程序開發》

   熱點鏈接:

   1、Linux下的信號機制
   2、有名管道(FIFO)
   3、標準流管道
   4、無名管道系統調用
   5、Linux下進程間通信方式-管道

更多新聞>> 

主站蜘蛛池模板: 破碎机锤头-耐磨锤头-合金锤头-河南磐石耐磨材料有限公司 | 辽宁大卯新能源供热设备制造有限公司官方网站,大卯新能源,大卯新能源供热设备 | 空气能热水器|空气能热水器工程|太阳能热水器工程|蓝冠机电 | 清洗剂-防锈油-润滑油-嘉信供应链一站式供应厂家 | 四氟瓶塞-塑料离心机-双联恒温水浴锅-常州天瑞仪器有限公司 | 万通汽车学校,汽车学校,汽修学校,汽修培训学校,汽车美容学校,汽车维修学校,学汽修-武汉万通汽车学校官方网站 | 装备升级改造I成都星迅通科技有限公司-成都星迅通科技有限公司官方网站 | 上海舞台灯光音响租赁搭建线阵_年会演出摇头光束面光灯出租_led电子显示屏出租-上海led大屏幕租赁 | 石墨热场|PECVD石墨舟|碳碳框|燃料电池双极板|半导体石墨|光纤用石墨模具|石墨电极加工|石墨制品|上海弘竣新能源材料有限公司 | 亚洲一区日韩一区欧美一区a,中文字幕乱妇无码AV在线,欧美日韩免费在线观看,国产精品一区二区三区免费,日韩精品免费一线在线观看,日韩一本在线,国产呦精品一区二区三区下载,国产日韩精品一区二区在线观看,欧美日韩高清一区二区三区,日韩在线免费观看视频,欧美日韩一区在线观看 | 提供专业.全面.优质的壁炉服务-莫洛尼官方网站moloney | 上海前 傲信息技术有限公司-企业信息化建设及品牌推广服务商 | 思行科技-珠海小程序开发-珠海网站建设-珠海APP开发-江门小程序开发-江门网站建设-江门APP开发 | 云南打砂机_昆明制砂机_云南砂石生产线_昆明洗砂机_昆明除尘设备_云南昆明滇重矿山机械设备有限公司 | 中国家居资讯网-家居建材-知名十大品牌-著名品牌资讯网 | 硝酸铵钙|山西硝酸钙|硝酸钾|太原硝酸钙镁|硝酸钾钙|亚硝酸钠-山西玉彤化工有限公司 | 柔性电缆-专业机器人电缆,拖链电缆生产厂家| 中婴网,推动母婴产业健康·可持续发展,婴童网络专业传媒,母婴网,360孕婴童网,婴童品牌,婴儿用品品牌,婴儿用品加盟店,母婴用品加盟店 | 上海先顶仪器设备有限公司-国产氮气发生器-进口氮气发生器 | 深圳危化品经营许可证_危险化学品经营许可证办理 | 上海塑料链条生产厂家-塑料网带批发-柔性齿形链价格-上海瀚幽传动机械有限公司 | 升降机_举升机_液压升降机_化工防爆升降平台_山东华雄机械有限公司 | 席高设计型地板官网_拼花地板_高端木地板定制专家_轻奢地板 | 上海办公家具_高端实木办公家具_现代智能办公家具定制厂-上海迈亚家具有限公司 | 振动筛|不锈钢振动筛|振动筛生产厂家-新乡市大汉振动机械有限公司 | 室内去除甲醛检测治理十大品牌_去除甲醛公司加盟-优吸环保科技有限公司集团总部官网 | 心心床垫_睡眠床垫-安徽瑶海心心工贸有限公司 | 三机一体除湿干燥机,色母机,称重式拌料机,工业冻水机,中央集中供料-东莞市瑞达机械科技有限公司(瑞达国际) | 气泡膜机_气垫膜机_缠绕膜机_瑞安市优特机械厂 | 军用笔记本电脑_三防加固笔记本电脑_平板型全坚固计算机-集海卫通 | 模具配件加工厂|东莞模具配件加工|模具配件加工厂|精密塑胶模具配件|东莞市优迪精密模具制品有限公司 | 深山工作室提供网络投票系统|微信公众号投票|微信公众号小程序|抖音小程序|百度小程序|微信公众号开发|企业网站建设 | 专利申请|知识产权贯标|商标提异议|国外专利申请-润平知识产权 | 慢直播摄像头厂家,监控直播摄像机厂家,景区慢直播设备,rtmp推流直播摄像头,实时摄像头监控直播-监控慢直播厂家:专注监控慢直播系统解决方案 | 深山工作室提供网络投票系统|微信公众号投票|微信公众号小程序|抖音小程序|百度小程序|微信公众号开发|企业网站建设 | 真空系统,真空泵租赁技术服务-兆德机械(上海)有限公司 | 陕西散花照明-西安太阳能路灯,陕西太阳能路灯,西安太阳能路灯厂家,陕西太阳能路灯厂家 | 康拓威技术(深圳)有限公司|Theia镜头代理商|安讯士AXIS摄像机|安讯士监控系统|博世BOSCH监控|博世会议系统|索尼SONY监控|松下PANASONIC监控|三星韩华SAMSUNG监控|霍尼韦尔Honeywell|海康|大华|华为监控|Theia无畸变镜头|AXIS监控|安讯视摄像机 | 石家庄团建公司|石家庄拓展训练|石家庄拓展培训|石家庄公司团建|石家庄拓展公司-石家庄启聚团建公司 | 无人叉车|智能无人叉车|智能AGV叉车|激光叉车AGV厂家_江西丹巴赫机器人股份有限公司 | 易交换在线易货电商平台-互联网易物贸易,以物换物-无锡据风网络科技有限公司 |