程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話中操作過程旌旗燈號的相干函數應用詳解

C說話中操作過程旌旗燈號的相干函數應用詳解

編輯:關於C++

C說話中操作過程旌旗燈號的相干函數應用詳解。本站提示廣大學習愛好者:(C說話中操作過程旌旗燈號的相干函數應用詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話中操作過程旌旗燈號的相干函數應用詳解正文


C說話signal()函數:設相信號處置方法
頭文件:

#include <signal.h>

界說函數:

void (*signal(int signum, void(* handler)(int)))(int);

函數解釋:signal()會依參數signum 指定的旌旗燈號編號來設置該旌旗燈號的處置函數. 當指定的旌旗燈號達到時就會跳轉到參數handler 指定的函數履行. 假如參數handler 不是函數指針, 則必需是以下兩個常數之一:
1、SIG_IGN 疏忽參數signum 指定的旌旗燈號.
2、SIG_DFL 將參數signum 指定的旌旗燈號重設為焦點預設的旌旗燈號處置方法.

關於旌旗燈號的編號和解釋, 請參考附錄D

前往值:前往先前的旌旗燈號處置函數指針, 假如有毛病則前往SIG_ERR(-1).

附加解釋:在旌旗燈號產生跳轉到自定的 handler 處置函數履行後, 體系會主動將此處置函數換回本來體系預設的處置方法, 假如要轉變此操作請改用sigaction().

C說話kill()函數:傳送旌旗燈號給指定的過程
頭文件:

#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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved