1. 程式人生 > >Linux Signal (6): 傳送訊號的kill和raise 函式

Linux Signal (6): 傳送訊號的kill和raise 函式

1. 函式說明:

kill和raise是用來發送訊號的:

kill把訊號傳送給程序或程序組,它不僅可以中止程序,也可以向程序傳送其他訊號;

raise把訊號傳送給(程序)自身.

它們的原型如下:

#include <signal.h>

#include <sys/types.h>

int kill(pid_t pid, /*指明要傳送的訊號程序號*/

          int signo);/*訊號*/
int raise(int signo);/*訊號*/

成功則返回0, 出錯則返回-1
 從原型上可以看出, raise函式是可以通過kill實現的.

raise(signo);

等價於:

kill(getpid(), signo);


2. 引數說明

pid引數:

kill函式中的pid引數, 它有以下4種情況:

pid > 0: 將該訊號傳送給程序ID為pid的程序.
pid == 0: 將該訊號傳送給與傳送程序屬於同一程序組的所有程序(不包括核心程序和init程序). 此時, 傳送程序必須具有向這些程序傳送訊號的許可權.
pid < 0: 將該訊號發給其程序組ID等於pid絕對值的所有程序(不包括核心程序和init程序). 此時, 傳送程序必須具有向這些程序傳送訊號的許可權.
pid == -1: 將該訊號傳送給傳送程序有許可權向它們傳送訊號的系統上的所有程序.(不包括核心程序和init程序). 

 signo引數:

POSIX.1將編號為0的訊號定義為空訊號. 如果signo引數是0, 則kill仍執行正常的錯誤檢查, 但不傳送訊號. 這被用來確定一個程序是否存在.

相關推薦

Linux Signal (6): 傳送訊號killraise 函式

1. 函式說明: kill和raise是用來發送訊號的: kill把訊號傳送給程序或程序組,它不僅可以中止程序,也可以向程序傳送其他訊號; raise把訊號傳送給(程序)自身. 它們的原型如下: #include <signal.h> #include <s

三十一、Linux 程序與訊號——SIGCHLD 訊號killraise函式以及alarm函式

31.1 SIGCHLD 訊號 子程序狀態發生變化(子程序結束)產生該訊號,父程序需要使用 wait 呼叫來等待子程序結束並回收它。 避免殭屍程序 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include

訊號 09 | 函式killraise

分析: #include<signal.h> int kill(pid_t pid, int signo); //signo:訊號名 int raise(int signo) 兩個函式返回值:若成功,返回

關於linux signal 6 (SIGABRT)

我的程式可以正常的執行,但是會不定時的出現SIGABRT訊號,然後程式terminated due to signal 6, 然後重啟。程式報錯的大概範圍我可以確定,而且我檢查日誌發現signal 6產生的位置有時靠前有時靠後(因為程式中有向日志寫入的資訊,有時能看到s

三十七、Linux 執行緒——執行緒清理控制函式、程序執行緒啟動方式比較、執行緒的狀態轉換

37.1 執行緒清理和控制函式 1 #include <pthread.h> 2 3 void pthread_cleanup_push(void (* rtn)(void *), void *arg); 4 void pthread_cleanup_pop(int execute);

killraise 函式

1. 函式說明: kill和raise是用來發送訊號的: kill把訊號傳送給程序或程序組; raise把訊號傳送給(程序)自身. 他們的原型如下: #include <signal.h>int kill(pid_t pid, int signo);int raise(int signo);

實驗 6 多型性虛擬函式

實驗目的和要求瞭解靜態聯編和動態聯編的概念。掌握動態聯編的條件。實驗內容1、分析並除錯下列程式。//sy6_1.cpp#include<iostream>using namespace std;class Base{public:virtual void f(fl

ODE手冊(6)關節型別相關函式

6.1 關節的建立和銷燬 dJointID dJointCreateBall (dWorldID, dJointGroupID); dJointID dJointCreateHinge (dWorldID, dJointGroupID); dJointID dJoi

linux kill訊號列表,killkillall:向程序傳送訊號

linux kill訊號列表 $ kill -l 1) SIGHUP       2) SIGINT       3) SIGQUIT   &nb

11.傳送訊號raise;abort;kill/sigqueue||定時器alarm;setitimer

1.[傳送訊號]函式相關:raise;abort;kill/sigqueue 1.raise--自己給自己發訊號:int raise(int sig); 等價於:kill(getpid(),int sig); 2.abort--給自己傳送異常終止訊號SIGABRT 在哪個程序中呼叫a

Linux高階程式設計基礎——程序間通訊之用sigqueue函式sigaction函式實現訊號的安裝與傳送

程序間通訊之用sigqueue函式和sigaction函式實現訊號的安裝與傳送 程序A向程序B傳送SIGUSR1訊號; 程序B收到訊號後,列印字串“receive SIGUSR1”; 要求用sigqueue函式和sigaction函式實現以上功能; /這個實

傳送訊號的其他方式:raise()killpg()

NAME raise - send a signal to the caller SYNOPSIS #include <signal.h> int raise(int sig); DESCRIPTION

Linux Redhat 6.5 apache虛擬目錄多端口多主機名配置

Linux 服務Apache是世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由於其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠並且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服務器中。 **實驗目標為 實現虛擬目錄 實現用戶登陸

linux6/17)--文件打包上傳下載

進入目錄 pre 啟動 spa 標準 gzip命令 let 修改時間 文字 tar命令 命令功能 用來壓縮和解壓文件 命令格式 tar[必要參數][選擇參數][文件] tar打包工具 -f ##指定生成包的名字,建議 -f單獨寫成一個參數 --d

Linux多執行緒程式設計---執行緒間同步(互斥鎖、條件變數、訊號讀寫鎖)

本篇博文轉自http://zhangxiaoya.github.io/2015/05/15/multi-thread-of-c-program-language-on-linux/ Linux下提供了多種方式來處理執行緒同步,最常用的是互斥鎖、條件變數、訊號量和讀寫鎖。  下面是思維導

linux中使用訊號--sigwait pthread sigmask

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Linux(高階程式設計)9————程序間通訊6訊號量)

訊號量是是什麼? 訊號量是程序間通訊方式之一,用來實現程序間的同步與互斥。訊號量的原理是一種資料操作鎖的概念,它本身不具備資料交換的功能,而是通過控制其他通訊資源(如文字、外部裝置等)來實現程序間通訊。訊號量本身不具備資料傳輸的功能,他只是一種外部資源的標識。 訊號量的本質是:具有等待佇

Linux(高階程式設計)9————程序間通訊6訊號1)

訊號是什麼? 訊號實質是一種軟中斷,用於通知程序發生了某些事件,實際上訊號也可以算作程序間通訊的一種方式,因為我們可在程序通過另一個程序傳送訊號,來告訴另一個程序發生什麼事。 這樣來講我們聽起來可能還會比較暈。 深入理解訊號: 在我們生活中其實就有訊號的

11.訊號相關函式killraise;abort;alarm;setitimer

1.kill;raise;abort 1.kill--傳送訊號給指定程序:int kill(pid_t pid, int sig); pid>0:發訊號給指定的程序 pid=0:呼叫kill函式的程序的(同一組的所有程序) pid<-1:取|p

Linux-CentOS 6.7 RabbitMQ的安裝配置

    RabbitMQ訊息中介軟體,主要用於分散式事物傳遞,公司用的Mybatis + Spring-boot + Shiro + RabbitMQ +(nginx,haproxy)+ mysql進行開發。對linux環境不太熟悉,所以記錄一下:一、RabbitMQ安裝