• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言中操作进程信号的相关函数使用详解

C语言中操作进程信号的相关函数使用详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c语言进程,c语言进程间通信,c语言进程调度,进程调度算法 c语言,c语言进程控制等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

C语言signal()函数:设置信号处理方式
头文件:

#include <signal.h>
</div>

定义函数:

void (*signal(int signum, void(* handler)(int)))(int);
</div>

函数说明: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>
</div>

定义函数: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));
  }
}
</div>

执行:

sen signal to child process(3170) Hi I am child process! child process receive
signal 6
</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C语言怎么获得进程的PE文件信息
  • C语言中进程信号集的相关操作函数详解
  • C语言中初始、增加和删除进程信号的操作方法简介
  • C语言中操作进程信号的相关函数使用详解
  • C语言中设置进程优先顺序的方法
  • C语言中获取进程识别码的相关函数
  • 简要对比C语言中三个用于退出进程的函数
  • C语言实现在windows服务中新建进程的方法

相关文章

  • 2017-05-28C程序读取键盘码的方法
  • 2017-05-28浅析直接插入排序与折半插入排序
  • 2017-05-28c++中.dll与.lib文件的生成与使用的详解
  • 2017-05-28解析C++中四种强制类型转换的区别详解
  • 2017-05-28pcre函数详细解析
  • 2017-05-28如何应用C++的函数对象
  • 2017-05-28详解C++循环创建多级目录及判断目录是否存在的方法
  • 2017-05-28二分查找算法在C/C++程序中的应用示例
  • 2017-05-28C#将Unicode编码转换为汉字字符串的简单方法
  • 2017-05-28C语言 strcpy和memcpy区别详细介绍

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 二叉搜索树的插入与删除(详细解析)
    • 探讨:将两个链表非降序合并为一个链表并依然有序的实现方法
    • 针对Ruby的Selenium WebDriver安装指南
    • jquery ready函数深入分析
    • C++中指针的数据类型和运算相关知识小结
    • 深入C++实现函数itoa()的分析
    • STL priority_queue(优先队列)详解
    • C++ 程序员为什么看不起php程序员
    • C++设计模式之中介者模式
    • C语言中的参数传递机制详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有