• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

                  kill(傳送信號給指定的進程)
            表頭文件
                 #include<sys/types.h>
                 #include<signal.h>
            定義函數 int kill(pid_t pid,int sig);
            函數說明
                kill()可以用來送參數 sig 指定的信號給參數 pid 指定的進程。參數 pid 有幾種情況:
                pid>0 將信號傳給進程識別碼為 pid 的進程。
                pid=0 將信號傳給和目前進程相同進程組的所有進程
                pid=-1 將信號廣播傳送給系統內所有的進程
                pid<0 將信號傳給進程組識別碼為 pid 絕對值的所有進程
            返回值  執行成功則返回 0,如果有錯誤則返回-1。
                 EINVAL 參數 sig 不合法
            錯誤代碼 ESRCH 參數 pid 所指定的進程或進程組不存在
                 EPERM 權限不夠無法傳送信號給指定進程

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

            int main( void )
            {
                pid_t childpid;
                int status;
                int retval;
               
                childpid = fork();
                if ( -1 == childpid )
                {
                    perror( "fork()" );
                    exit( EXIT_FAILURE );
                }
                else if ( 0 == childpid )
                {
                    puts( "In child process" );
                    sleep( 100 );//讓子進程睡眠,看看父進程的行為
                    exit(EXIT_SUCCESS);
                }
                else
                {
                    if ( 0 == (waitpid( childpid, &status, WNOHANG )))
                    {
                        retval = kill( childpid,SIGKILL );
                       
                        if ( retval )
                        {
                            puts( "kill failed." );
                            perror( "kill" );
                            waitpid( childpid, &status, 0 );
                        }
                        else
                        {
                            printf( "%d killed\n", childpid );
                        }
                       
                    }
                }
               
                exit(EXIT_SUCCESS);
            }   
            [root@localhost src]# gcc killer.c
            [root@localhost src]# ./a.out
            In child process
            4545 killed

            在確信fork調用成功后,子進程睡眠100秒,然后退出。
            同時父進程在子進程上調用waitpid函數,但使用了WNOHANG選項,
            所以調用waitpid后立即返回。父進程接著殺死子進程,如果kill執行失敗,
            返回-1,否這返回0。如果kill執行失敗,父進程第二次調用waitpid,
            保證他在子進程退出后再停止執行。否則父進程顯示一條成功消息后退出。

            本文來自: (www.91linux.com) 詳細出處參考:http://www.91linux.com/html/article/program/20071017/7635.html

            国产精自产拍久久久久久蜜| 久久久久久毛片免费播放| 久久久久噜噜噜亚洲熟女综合| 亚洲欧洲精品成人久久曰影片| 久久亚洲精品国产亚洲老地址| 色欲久久久天天天综合网 | 亚洲人AV永久一区二区三区久久| 亚洲欧洲中文日韩久久AV乱码| 无码人妻久久久一区二区三区 | 色婷婷综合久久久中文字幕 | 久久ZYZ资源站无码中文动漫| 91麻豆精品国产91久久久久久| 伊人久久大香线蕉无码麻豆| 欧美大香线蕉线伊人久久| 久久综合九色综合久99| 婷婷综合久久狠狠色99h| 伊人久久大香线蕉综合影院首页| 久久久精品久久久久久| 久久青青草原精品影院| 久久精品人人做人人爽电影蜜月 | 精品国产一区二区三区久久蜜臀| 亚洲精品美女久久久久99| 欧美伊人久久大香线蕉综合69| 一本久久久久久久| 免费观看成人久久网免费观看| 99久久人妻无码精品系列| 人妻精品久久久久中文字幕69| 一级女性全黄久久生活片免费 | 国产成人香蕉久久久久| 久久久久久久尹人综合网亚洲| 久久精品国产亚洲一区二区| 99久久无码一区人妻a黑| 久久精品亚洲精品国产色婷 | 久久丝袜精品中文字幕| 久久er国产精品免费观看8| 久久久久婷婷| 中文精品99久久国产 | 久久久久99精品成人片三人毛片 | 久久久久av无码免费网| 国产激情久久久久久熟女老人| AV无码久久久久不卡蜜桃|