世事并无好坏之分,全看我们怎么去想。—— 哈姆雷特·第二幕第二景

ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287

 #include <signal.h>
int kill(pid_t pid, int signo);

用于给指定的进程或进程组发送信号。成功返回 0,出错返回 -1。

  • pid > 0:将信号发送给进程 ID 为 pid 的进程。
  • pid == 0:将信号发送给与发送进程属于同一进程组的所有进程。
  • pid < 0:将信号发送给进程组 ID 等于 pid 的绝对值的所有进程。
  • pid == -1:将信号发送给系统中所有进程。

上述中的“所有进程”不包括系统进程。

另外,调用 kill 函数的进程要有向目标进程发送信号的权限。非 root 用户通常只能向与调用 kill 函数进程具有相同用户 ID 的进程发送信号。

如果 signo 为 0,则代表空信号,kill 不发送实际信号,但可以用来确定指定进程是否仍存在。如果向一个不存在的进程发送空信号,kill 返回 -1,errno 被设置为 ESRCH (表示 pid 指定的进程或进程组不存在)。

其他 errno:“EINVAL:指定的 singo 无效;EPERM:权限不够”。

对于进程是否存在这种测试不是原子操作,当 kill 返回时,也可能原来存在的进程此时已终止。另外,系统会复用 pid,所以我们指定 pid 的进程并不一定就是想要测试的那个进程。所以这种测试并不可靠。

学习资料: 《unix 环境高级编程》

Linux 信号(一)—— kill 函数的更多相关文章

  1. Linux 信号signal处理函数

    转自:http://www.cnblogs.com/taobataoma/archive/2007/08/30/875662.html alarm(设置信号传送闹钟) 相关函数 signal,slee ...

  2. Linux 信号signal处理函数--转

    alarm(设置信号传送闹钟)相关函数 signal,sleep 表头文件 #include<unistd.h> 定义函数 unsigned int alarm(unsigned int ...

  3. Linux 信号详解四(pause,alarm)

    pause函数 --将进程置为可中断睡眠状态,然后它调用内核函数schedule(),使linux进程调度器找到另一个进程来运行. --pause使调用者进程挂起,知道一个信号被捕获. alarm函数 ...

  4. Linux信号与golang中的捕获处理

    什么是信号 在计算机科学中,信号是Unix.类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式.它是一种异步的通知机制,用来提醒进程一个事件已经发生. 当一个信号发送给一个进程, ...

  5. 三十一、Linux 进程与信号——SIGCHLD 信号、kill和raise函数以及alarm函数

    31.1 SIGCHLD 信号 子进程状态发生变化(子进程结束)产生该信号,父进程需要使用 wait 调用来等待子进程结束并回收它. 避免僵尸进程 #include <stdio.h> # ...

  6. Linux 信号详解二(信号分类,信号处理,kill)

    信号分类 信号分为可靠信号和不可靠信号 不可靠信号的缺点 ①:处理完信号,需要重新再注册信号:②信号可能丢失. Linux已经对缺点①做了优化,现在的不可靠问题主要指的是信号可能丢失 信号还可以分为实 ...

  7. UNIX环境高级编程——信号之kill、raise、killpg、alarm、pause、abort、sleep、usleep、nanosleep和setitimer函数

    一.kill, raise, killpg 函数 int kill(pid_t pid, int sig); int raise(int sig); int killpg(int pgrp, int ...

  8. Linux信号、信号处理和信号处理函数

    信号(signal)是一种软件中断,它提供了一种处理异步事件的方法,也是进程间惟一的异步通信方式.在Linux系统中,根据POSIX标准扩展以后的信号机制,不仅可以用来通知某种程序发生了什么事件,还可 ...

  9. Linux学习笔记(11)-kill函数

    明天开始学习kill函数的用法. ---------------------------------------------- kill函数可以用来向指定的进程发送一个指定的信号,在我的理解的来看,就 ...

随机推荐

  1. Python初学者之网络爬虫

    声明:本文内容和涉及到的代码仅限于个人学习,任何人不得作为商业用途. 本文将介绍我最近在学习Python过程中写的一个爬虫程序,将力争做到不需要有任何Python基础的程序员都能读懂.读者也可以先跳到 ...

  2. 高性能JavaScript--快速响应的用户界面(简要学习笔记三)

    1.浏览器线程:用于执行JavaScript和更新用户界面的进程被称为“浏览器UI线程”.   2. <1>定时器的出现让出UI线程控制权 setTimeout(),setInterval ...

  3. div中设置滚动条的问题

    <div srtle="width:100px;height:50px;"></div> 这样的一个div,当文本超出的时候我们就会设: overflow: ...

  4. c# 检测操作系统版本

    我们通过System.Environment.OSVersion.Version获得操作系统的版本号,然后再根据版本号进行判断操作系统是什么版本 Version 类的属性 Operating syst ...

  5. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  6. context:component-scan" 的前缀 "context" 未绑定。

    SpElUtilTest.testSpELLiteralExpressiontestSpELLiteralExpression(cn.zr.spring.spel.SpElUtilTest)org.s ...

  7. 基于HTML5的WebGL应用内存泄露分析

    上篇(http://www.hightopo.com/blog/194.html)我们通过定制了CPU和内存展示界面,体验了HT for Web通过定义矢量实现图形绘制与业务数据的代码解耦及绑定联动, ...

  8. MacOS平台下@rpath在动态链接库中的应用

    一.背景介绍 公司开发的一个底层库被用在了Mac平台的多个产品中.在开发这个底层库的初期,对于Mac OSX下的Install name 并没有过多的了解.对于XCode中的install name项 ...

  9. Qt 拷贝文件目录

    bool copyDir(const QString &source, const QString &destination, bool override) { QDir direct ...

  10. 用JavaScript来实现链表LinkedList

    本文版权归博客园和作者本人共同所有,转载和爬虫请注明原文地址. 写在前面 好多做web开发的朋友,在学习数据结构和算法时可能比较讨厌C和C++,上学的时候写过的也忘得差不多了,更别提没写过的了.但幸运 ...