sigqueue() - Unix,Linux 系統呼叫 - 技術教學
Tutorials Point


  Unix 初學者教程
  Unix Shell 程式設計
  高階 Unix
  Unix 有用參考資料
  Unix 有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考資料     討論論壇     關於 TP  

sigqueue() - Unix,Linux 系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

sigqueue - 向程序傳送訊號和資料

概要

#include <signal.h>

int sigqueue(pid_t pid, int sig, const union sigval value);

描述

sigqueue() 傳送sig中指定的訊號到 PID 為pid的程序。傳送訊號所需的許可權與kill(2)相同。與kill(2)一樣,空訊號 (0) 可用於檢查是否存在具有給定 PID 的程序。

value引數用於指定要與訊號一起傳送的附加資料項(整數或指標值),其型別如下:

union sigval {
    int   sival_int;
    void *sival_ptr;
};

如果接收程序使用SA_SIGINFO標誌對sigaction(2)安裝了此訊號的處理程式,則它可以透過傳遞給處理程式的第二個引數siginfo_t結構的si_value欄位獲取此資料。此外,該結構的si_code欄位將設定為SI_QUEUE

返回值

成功時,sigqueue() 返回 0,表示訊號已成功排隊到接收程序。否則返回 -1,並設定errno以指示錯誤。

錯誤

標籤描述
EAGAIN 已達到可排隊訊號的限制。(有關更多資訊,請參見signal(7))。
EINVAL sig 無效。
EPERM 程序無權向接收程序傳送訊號。有關所需許可權,請參見kill(2)。
ESRCH 沒有程序的 PID 與pid匹配。

備註

如果此函式導致向呼叫它的程序傳送訊號,並且該訊號未被呼叫執行緒阻塞,並且沒有其他執行緒願意處理此訊號(透過將其取消阻塞或使用sigwait(3)等待它),則在該函式返回之前,必須至少將某些訊號傳遞給此執行緒。

符合標準

POSIX.1-2001

參見



previous next Printer Friendly

廣告


  

廣告



廣告