1. 程式人生 > >傳送訊號的其他方式:raise()和killpg()

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

NAME
       raise - send a signal to the caller

SYNOPSIS
       #include <signal.h>

       int raise(int sig);

DESCRIPTION
       The  raise()  function  sends  a signal to the calling process or thread.  In a
       single-threaded program it is equivalent to

           kill(getpid(), sig)
; In a multithreaded program it is equivalent to pthread_kill(pthread_self(), sig); If the signal causes a handler to be called, raise() will return only after the signal handler has returned.

在這裡插入圖片描述
使用kill()呼叫

/*************************************************************************\
*                  Copyright (C) Michael Kerrisk, 2018.                   *
*                                                                         *
* This program is free software. You may use, modify, and redistribute it *
* under the terms of the GNU General Public License as published by the   *
* Free Software Foundation, either version 3 or (at your option) any      *
* later version. This program is distributed without any warranty.  See   *
* the file COPYING.gpl-v3 for details.                                    *
\*************************************************************************/
/* Listing 20-3 */ /* t_kill.c Send a signal using kill(2) and analyze the return status of the call. */ #include <signal.h> #include "tlpi_hdr.h" int main(int argc, char *argv[]) { int s, sig; if (argc != 3 || strcmp(argv[1], "--help") == 0) usageErr("%s pid sig-num\n", argv[
0]); sig = getInt(argv[2], 0, "sig-num"); s = kill(getLong(argv[1], 0, "pid"), sig); if (sig != 0) { if (s == -1) errExit("kill"); } else { /* Null signal: process existence check */ if (s == 0) { printf("Process exists and we can send it a signal\n"); } else { if (errno == EPERM) printf("Process exists, but we don't have " "permission to send it a signal\n"); else if (errno == ESRCH) printf("Process does not exist\n"); else errExit("kill"); } } exit(EXIT_SUCCESS); } ```\ ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20181125192902784.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FuZHJld2dpdGh1Yg==,size_16,color_FFFFFF,t_70) 顯示訊號描述 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20181125193140572.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FuZHJld2dpdGh1Yg==,size_16,color_FFFFFF,t_70)

相關推薦

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

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

Unix系統編程()發送信號的其他方式raisekillpg

self AD HR blog xxxx 這一 val 因此 ise 有時,進程需要向自身發送信號,raise 函數就執行了這一任務。 #include <signal.h> int raise(int sig); 在單線程程序中,調用raise相當於對k

html5中的Web Storage包括了兩種存儲方式sessionStoragelocalStorage。

htm local 本地 存儲方式 刪除數據 tor web 兩種 session html5中的Web Storage包括了兩種存儲方式:sessionStorage和localStorage。 sessionStorage用於本地存儲一個會話(session)中的數據,

Vivado IP的兩種綜合方式Global Out-Of-Context

在最新的Vivado的版本中,定製IP的時候,會有一個綜合方式的選擇,如下圖所示。可以看到一種叫做”Global”,一種叫”Out-Of-Context (OOC)”。從字面意思上來理解,”Out-Of-Context”是“脫離上下文”的意思。”Global”即全域性。

Http兩種請求方式Get Post的區別

什麼是HTTP? 超文字傳輸協議(HyperText Transfer Protocol – HTTP)是一個設計來使客戶端和伺服器順利進行通訊的協議。 HTTP在客戶端和伺服器之間以request-response protocol(請求-回覆協議)工作。 get:從指定的伺服器中獲取

redis持久化方式RDB AOF

Redis持久化 Redis 提供了多種不同級別的持久化方式: RDB 持久化可以在指定的時間間隔內生成資料集的時間點快照(point-in-time snapshot)。 AOF 持久化記錄伺服器執行的所有寫操作命令,並在伺服器啟動時,通過重新執行這些命令來還原資料集

分散式理論基礎(一)一致性及解決一致性的兩種方式2PC3PC (轉載 不錯)

分散式理論基礎(一)一致性及解決一致性的兩種方式:2PC和3PC 1 一致性 1.1 簡述 一致性,是指對每個節點一個數據的更新,整個叢集都知道更新,並且是一致的 假設一個具有N個節點的分散式系統,當其滿足以下條件時,我們說這個系統滿足一致性: 全認同: 所有N個節點都認同一個結果 值合法: 該結果必須

測試redis叢集的兩種方式分片哨兵

import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import redis.clients.jedis.Jedi

深入學習理解(7):java:高效的解決死鎖問題的執行緒通訊方式Semaphore BlockingQueue

經典原始問題:生產者和消費者的問題,其實在實際專案中很容易遇到這樣的無奈的問題,但是面對這樣的問題的時候我們首先想到的就是多執行緒批處理,通過notify()…的處理,但只這樣的處理只能給我們貼上對java多執行緒不熟悉的標籤。比較讚的辦法是用Semaphore

Django請求處理的兩種方式FBV CBV

django中請求處理方式有2種:FBV 和 CBV 一、FBV FBV(function base views) 就是在視圖裡使用函式處理請求。 看程式碼: urls.py from django.conf.urls import url, include from myt

網路通訊方式CSP2P入門區別

CS:Client/Server,客戶-伺服器方式 BS:Browser/Server,瀏覽器-伺服器方式 P2P:peer to peer,對等方式 BS其實是CS方式的一種特例,所以也應算在C

Android使用HttpClient以Post、Get請求伺服器傳送資料的方式(普通json)

HttpParams params = new BasicHttpParams();//建立一個引數物件,用來儲存設定的各個引數 HttpProtocolParams.setContentCharset(params, "UTF-8");// 設定訊息所用的字符集 HttpProtocolParams.s

兩種資料來源連線的配置方式jndijdbc

         潤乾報表的資料來源配置是在reportConfig.xml中進行設定的,支援jndi資料來源配置和jdbc直連資料來源配置兩種。在讀取配置檔案的時候,會首先讀取jndi的配置,如果沒有相關的資料來源配置則會讀取jdbc直連配置的資料來源。 1、jndi資

使用 HTTP 協議訪問網路的兩種方式HttpURLConnection HttpClient

安卓中進行基於HTTP協議的網路訪問 說明: HttpClient (apache開發) HttpURLConnection(google在釋出安卓時在Java基礎上修改得到的) 使用HC(HttpClient)/UC(HttpURLConnect

ajax與伺服器傳值有兩種方式get post的區別

get是把引數資料佇列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程。get可以使用瀏覽器的快取機制,別

【iOS開發】 iOS如何選擇圖片載入方式imageNamedimageWithContentsOfFile的區別

iOS記憶體稀缺,而圖片資源通常又是最佔記憶體的部分之一,因此,選擇如何載入圖片,對於優化應用記憶體佔用量,能起到立竿見影的效果。通常載入圖片的方式有兩種: 一、imageNamed 為什麼有兩種方法完成同樣的事情呢?imageNamed的優點在於可以快

MFC操作XML配置檔案的兩種方式DOM MSXML

這幾天做VC專案涉及到了建立xml配置檔案這方面的問題,糾結了好多天,嘗試了N種方法,終於完成了工作任務,現在和大家分享下:  我參考瞭如下的資料: XML DOM 例項:http://www.w3school.com.cn/example/xdom_examples.as

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 Signal (6): 傳送訊號的killraise 函式

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

Spring註入值得2種方式屬性註入構造註入

eth fault ror bstr images context pac truct 上下文對象 Spring是一個依賴註入(控制反轉)的框架,那麽依賴註入(標控制反轉)表現在那些地方了? 即:一個類中的屬性(其他對象)不再需要手動new或者通過工廠方法進行創建,而是S