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

广告


  

广告



广告