Linux编程基础 4.1:系统调用

1简介

信号:软中断信号,是软件层次上对中断的一种模拟,用于提醒进程事件的发生。
用户比较容易控制的信号发送方式有:

  • 组合按键方式;
  • Shell命令方式;
  • 系统调用:kill、raise、abort等。

本部分主要以系统调用为主。

2 系统调用

2.1 kill函数

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

函数功能

  • 给指定进程,是否杀死进程取决于所发送信号的默认动作。

参数说明

  • pid:接收信号的进程id
    – pid > 0:发送信号sig给进程pid;
    – pid = 0:发送信号sig给当前进程所属组中的所有进程;
    – pid = -1:发送信号sig给除1号进程与当前进程外的所有进程;
    – pid < -1:发送信号sig给属于进程组pid的所有进程。
  • sig:发送的信号编号

返回值

  • 0: 表示kill函数调用成功,当前进程有权限;
  • -1且errno为ESRCH:表示指定接收信号的进程不存在;
  • -1且errno不为ESRCH:当前进程没权限。

【案例 1】创建一个子进程,在子进程中用kill发送信号,杀死父进程。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>int main() {pid_t tempPid;tempPid = fork();if(tempPid == 0){//childsleep(1);printf("Child pid = %d, ppid = %d\n", getpid(), getppid());kill(getppid(), SIGKILL);} else if(tempPid > 0) { //parentwhile(1){printf("parent pid = %d, ppid = %d\n", getpid(), getppid());}//of while}//of ifreturn 0;
}//of main

2.2 其它函数

#include <signal.h>
int raise(int sig);

函数功能

  • 给当前进程发送指定信号。
  • raise(sig) == kill(getpid(), sig)

参数说明

  • sig:发送的信号编号
#include <stdlib.h>
void abort(void);

函数功能

  • 给当前进程发送异常终止信号SIGABRT,终止当前进程并生成core文件。
  • 该函数在调用之前会先解除阻塞信号SIGABRT,然后发送信号给自己。

该函数无参数无返回值:视为百分百调用成功。

#include <unistd.h>
int pause(void);

函数功能

  • 造成进程主动挂起,等待信号唤醒。
  • 调用该函数后进程将主动放弃CPU,进入阻塞状态,直到有信号将其唤醒,才继续工作。

该函数无参数。

返回值

  • 若信号的默认处理动作是终止进程,则进程终止,pause函数没有机会返回;
  • 若信号的默认处理动作是忽略,进程继续处于挂起状态,pause函数不返回;
  • 若信号的默认处理动作是捕获,则调用完信号处理函数后,pause函数返回-1,并将errno设置为EINTR,表示“被信号中断”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

createsemaphore 异常_浅析SPC之异常分析

未来能源的短缺及资源匮乏&#xff0c;导致各国都在寻求替代能源以避免发生无资源可用的情况。汽油替代能源—生质酒精由此得到了广泛的应用。生质酒精属于生质燃料(Biofuel)的一种&#xff0c;是由生物或化学转换成生物质(biomass)而取得的原料。它能够延长零件的使用寿命&…

Linux编程基础 4.2:软件条件

3 软件条件 当满足某种软件条件时&#xff0c;也可以驱使内核发送信号。 alarm setitimer 3.1 alarm函数 #include <unistd.h> unsigned int alarm(unsigned int seconds);函数功能&#xff1a; 相当于计时器&#xff0c;驱使内核在指定秒数后发送信号到调用该函数的…

layui 如何去dom_常用元素操作 - layui.element

元素功能的开启只需要加载element模块即会自动完成&#xff0c;譬如tab选项卡切换、导航菜单滑动切换效果、面包屑导航、进度条等&#xff0c;使用这些小交互功能的前提就是&#xff1a;拥有符合这些小功能的所需正确的HTML结构&#xff0c;以及加载element模块&#xff1b;如下…

苹果5越狱教程_unc0ver5.2.0安装方法 iOS13.5用Cydia Impactor或AltStore越狱教程

unc0ver5.2.0是最新更新出来的越狱手机系统&#xff0c;这次的更新不仅仅只是修复了系统的稳定性&#xff0c;大家在更新之后可以支持iOS13.5.5Beta/iOS13.6Beta的使用&#xff0c;所有使用苹果手机的用户想要使用的话可以看下面的详细安装教程&#xff0c;为大家介绍详细的操作…

Linux编程基础 4.3:信号阻塞

4 信号阻塞 在进程PCB中存在两个信号集&#xff1a;信号掩码&#xff08;signal mask&#xff09;、未决信号集&#xff08;signal pending&#xff09;。 两个信号集都是位图&#xff0c;每一位对应一个信号&#xff1a; 若mask中某个位被设置为1&#xff0c;则对应的信号将…

# 定义四边形_【四边形系列专题】 特殊平行四边形之矩形

点击上方蓝字关注我们【四边形系列专题】特殊平行四边形之矩形TSQ中学数学微信&#xff1a;TSQmaths一、知识网络二、重难突破知识点一 矩形的性质及应用1、定义&#xff1a;有一个角是直角的平行四边形叫做矩形&#xff0e;注意&#xff1a;1、对称性&#xff1a;矩形是轴对称…

xs资料网-产品设计图档下载_proe玩具车3D模型图档下载creo4.0汽车模型下载中磊教育...

现在设计产品的还是有相当一大部分人是用proe造型的&#xff0c;之前我们一直做的是UG的产品造型&#xff0c;今天给大家介绍一款玩具车的3d模型&#xff0c;喜欢的可以下载下载自己研究研究&#xff0c;中磊教育产品设计教程proe玩具车3D模型图档是通过曲面造型所绘制的零件&a…

Linux编程基础 4.4:信号捕获

5 信号捕获 信号的产生是异步事件&#xff0c;进程不知道信号何时会递送&#xff0c;也不会等待信号到来。 进程可以为信号注册信号处理函数来实现自定义动作。 进程的信号在内核态处理&#xff0c;内核为每个进程准备了一个信号向量表&#xff0c;记录每个信号所对应的处理机…

苹果7手机严重卡顿_分享苹果手机最实用的7个技巧,各个精心挑选,不知道真的太亏了...

使用苹果手机这么久了&#xff0c;你一定也发现了不少好用的功能&#xff0c;今天就来分享苹果手机最实用的7个技巧&#xff0c;每个都是精心挑选&#xff0c;不要错过&#xff0c;总有一个是你需要的。1、 三指操作在编辑文档的时候&#xff0c;三指左滑是撤销(上一步编辑撤销…

实验一:系统编程开发环境实验

一【实验目的】 1.熟悉Linux开发环境&#xff1b; 2.掌握Linux程序编译调试方法&#xff1b; 3.理解文件I/O通用操作&#xff0c;掌握内核函数的基本用法&#xff1b; 4.支撑网络空间安全专业的专业核心能力、综合创新能力。 二【实验要求】 以下每个实验均要求&#xff1a;…

如何获取大端中的数据_【软件】ProE中各种获取数据方式的区别

更多精彩&#xff0c;请点击上方蓝字关注我们&#xff01;软件ProE中各种获取数据方式的区别输入特征&#xff1a;输入特征是通过数据共享功能从外部文件输入几何的&#xff0c;文件输入以后&#xff0c;会转换成proe软件能够识别的几何&#xff0c;称为一个特征发布几何&#…

实验二:文件操作编程实验

一【实验目的】 1.掌握文件或目录属性信息的函数stat()函数的使用&#xff1b; 2.掌握目录操作的函数opendir 函数和readdir函数的使用&#xff1b; 3.编写程序mysearch.c递归实现打印输出任意目录下&#xff0c;指定类型的所有文件&#xff0c;如&#xff1a;./mysearch /hom…

数字类 default 0和 default 0_全方位的数字规划工具Visual Components 4.0 数字化工厂仿真软件...

Visual Components 是全方位的数字规划工具。无论从制程规划、生产到营销都能够整合在同一个平台上作业&#xff0c;有助于内部的技术沟通及外部营销。此外&#xff0c;Visual Components 整合了物流及机器人模拟功能&#xff0c;帮助企业在研发前期即可进行产能确认&#xff0…

python中写入csv文件的方法_Python写入CSV文件的方法

python笔记5-python2写csv文件中文乱码问题前言python2最大的坑在于中文编码问题&#xff0c;遇到中文报错首先加u&#xff0c;再各种encode、decode。当list、tuple、dict里面有中文时&#xff0c;打印出来的是Unicode编码&#xff0c;这个是无解的。对中文编码纠结的建议尽快…

实验三:进程管理编程实验

一【实验目的】 1.熟悉进程环境、进程生命周期&#xff1b; 2.支撑网络空间安全专业的专业核心能力、综合创新能力。 二【实验要求】 以下每个实验均要求&#xff1a; 1.“实验源代码”处&#xff1a;粘贴所编写的程序源码&#xff0c;务必添加关键语句的注释&#xff1b; 2…

会说话的狗狗本电脑版_会说话的电脑有点酷!惠普星14帮你解锁“偷懒”新姿势_惠普 星 14 2020(i5 1135G7/16GB/512GB/MX450)_笔记本新闻...

在现实生活中你是否遇到过这样的情况&#xff0c;笔记本近在咫尺&#xff0c;但你却懒得走到笔记本面前进行操作。当你疲惫地躺在床上时&#xff0c;心里也总是暗想&#xff0c;如果笔记本能够听我的指令跟我对话就好了。工作和生活当中&#xff0c;我们总免不了想要“偷懒”&a…

expect巡检服务器_Shell-批量巡检服务器脚本

文件说明该Shell脚本旨在针对大量Linux服务器的巡检提供一种相对自动化的解决方案。脚本组成有三部分&#xff1a;shellsh.sh、checksh.sh、file.txt&#xff1b;这三个文件需放在一个文件夹下以root权限执行&#xff0c;缺一不可。脚本用法将要巡检的服务器的IP地址和对应的密…

实验四:进程间通信编程实验

一【实验目的】 1.理解进程间通信原理&#xff1b; 2.掌握进程中信号量、共享内存、消息队列相关的函数的使用&#xff1b; 3.支撑网络空间安全专业的专业核心能力、综合创新能力。 二【实验要求】 以下每个实验均要求&#xff1a; 1.“实验源代码”处&#xff1a;粘贴所编写…

细粒度图像分类_1.1、 图片分类

记录图像分类论文资源列表。图片分类任务可以分为&#xff1a;粗粒度图片分类、细粒度图片分类。2012 AlexNet &#xff1a;ImageNet Classification with Deep Convolutional Neural Networks。2014 GoogLeNet&#xff1a;Going Deeper with Convolutions。Rethinking the Inc…

diy服务器个人主机_Re:从零开始的服务器-微型服务器DIY手记

国际象棋测试4-Chess Benchmark.png (25.64 KB, 下载次数: 63)2017-3-22 19:43 上传RAR benchmarkWinRAR自带的基准测试7-RARbench.png (15.8 KB, 下载次数: 54)2017-3-22 19:45 上传7-zip benchmark7zip自带的基准测试8-7zipbench.png (31.2 KB, 下载次数: 70)2017-3-22 19:45…