pause、alarm、kill——进程——day13

news2025/2/23 17:50:56

今天主要讲线程中信号的三个函数

1.pause

1.pause
	int pause(void);
功能:
	让进程睡眠,直到接收到信号(捕捉)才能继续向下执行

eg:

#include "head.h"

void handler(int signo)
{
	

	return;
}

int main(void)
{
	signal(SIGINT,handler);

	printf("pause up!\n");
	pause();
	printf("pause down!\n");

	return 0;
}

运行结果:
在这里插入图片描述
可以看到,必须得要等到信号捕捉到了,必须是捕捉信号!才会向下执行。

2.alarm

2.alarm
      unsigned int alarm(unsigned int seconds);
      功能:
        定时seconds秒后给调用进程发送SIGALRM信号
      参数:
        seconds:定时的秒数
      返回值:
        成功返回之前设定剩余的秒数

eg:

#include"head.h"

void handler(int signo)
{
	printf("The signal is coming.\n");

	alarm(5);

	return;
}

int main(void)
{
	signal(SIGALRM,handler);

	alarm(5);
	while(1)
	{
		printf("Process sequential execution!\n");
		sleep(1);
	}

	return 0;
}

运行结果:
在这里插入图片描述
我们将alarm信号从缺省变成了捕捉,从而当alarm结束时,我们又重新发起了该信号进行处理。

3.kill

3.kill
	int kill(pid_t pid, int sig);
功能:
  	给PID对应的进程发送sig信号
参数:
  	pid:进程ID号
  	sig:信号的编号
返回值:
  	成功返回0 
  	失败返回-1

eg:

#include"head.h"

pid_t pid;

void handler_child(int signo)
{
	if(SIGINT == signo)
	{
		printf("father,i am comming home!\n");
		kill(getppid(),SIGUSR1);	//向父进程发送信号,SIGUSR1为用户自定义信号
	}else if(SIGUSR2 == signo)
	{
		printf("quickly cook!\n");
	}
}

void handler_father(int signo)
{
	if(SIGUSR1 == signo)
	{
		printf("quickly do homework!\n");
	}else if(SIGQUIT == signo)
	{
		printf("son,i am comming home!\n");
		kill(pid,SIGUSR2);
	}
}

int main(void)
{

	pid = fork();

	if(-1 == pid)
	{
		perror("fail to fork");
		return -1;
	}

	if(0 == pid)
	{
		signal(SIGQUIT,SIG_IGN);
		signal(SIGINT,handler_child);
		signal(SIGUSR2,handler_child);
	}else if(pid > 0)
	{
		signal(SIGINT,SIG_IGN);	//忽略SIGINT(ctrl+c)信号
		signal(SIGUSR1,handler_father);	//自定义SIGUSR1信号,当子进程发送该信号,做处理
		signal(SIGQUIT,handler_father);	//与上面差不多
	}

	while(1)
	{

	}

	return 0;
}

结果:
在这里插入图片描述

以上就是今天内容!

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

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

相关文章

uniapp基于Android学生课程签到成绩管理系统_ilzd 微信小程序

通过前面的功能分析可以将教师事务管理系统的功能分为管理员和学生、教师三个部分,系统的主要功能包括课程信息、学生签到、学生成绩等内容。任何用户只要进入网站不需登录也可浏览到的信息,后台管理是针对已登录的用户看到满意的教师事务管理系统而设计…

文心一言 VS 讯飞星火 VS chatgpt (205)-- 算法导论15.4 1题

一、求〈1,0,0,1,0,1,0,1〉和〈0,1,0,1,1,0,1,1,0〉的一个LCS。需要写代码的时候,请用…

C++ //练习 10.7 下面的程序是否有错误?如果有,请改正。

C Primer&#xff08;第5版&#xff09; 练习 10.7 练习 10.7 下面的程序是否有错误&#xff1f;如果有&#xff0c;请改正。 (a) vector<int>vec; list<int> lst; int i;while(cin>>i)lst.push_back(i);copy(lst.cbegin(), lst.cend(), vec.begin());(b) …

DDS笔记

1.DDS 直接数字式频率合成器&#xff08;Direct Digital Synthesizer,DDS&#xff09;是通过相位和幅值 的映射实现任意频率的正弦曲线样本的方法 系统时钟CLK频率为fclk&#xff0c;输出信号频率为fout&#xff0c;频率字输入K的位宽为N位。 相位累加器通常由一个N位加法器和…

Docker之自定义镜像上传阿里云

目录 一、Alpine制作jdk镜像 1. 下载镜像 2. 创建并编辑Dockerfile 3. 执行Dockerfile构建镜像 4. 测试 二、Alpine制作jre镜像 1. 下载jre 2. 上传gz压缩包&#xff0c;删除无用的文件&#xff0c;并重新压缩 3. 创建并编辑Dockerfile 4. 执行Dockerfile并构建镜像…

【电商干货】5分钟了解电商数据API测试完整流程,建议收藏!可获取免费测试key!

电商API是什么&#xff1f; API是application programming interface&#xff08;应用程序接口&#xff09;的简称&#xff0c;是一些预先定义的函数。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部…

CentOS安装GUI图形界面

CentOS安装图形界面 CentOS minimal环境安装图形界面。 列出所有可用的Environment Groups yum group list yum groupinfo "GNOME Desktop"选择GNOME Desktop软件包组进行安装 yum groupinstall -y GNOME Desktop1 如果要通过GUI配置网络需要安装Server with GU…

删除有序数组中的重复项Ⅱ

问题 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说明…

有哪些视频媒体?邀请视频媒体报道活动的好处

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 视频媒体在当今的媒体生态中占据了重要的地位。以下是一些主要的视频媒体类型&#xff1a; 电视台&#xff1a;如中央电视台、各省级卫视台、地方电视台等&#xff0c;他们拥有专业的视…

vue2后台管理系统demo,包含增删查改、模糊搜索、分页

因一直敲小程序&#xff0c;vue不熟练&#xff0c;自己练手项目&#xff0c;就包含增删查改以及模糊搜索分页 一、页面简单但功能齐全 二、数据是mock模拟 三、启动步骤 1、 json-server --watch data.json 启动mock数据 2、npm i 下载依赖 3、npm run serve 四、github地址…

PSO-CNN-LSTM多输入时序预测|粒子群算法优化的卷积-长短期神经网络时序预测(Matlab)——附代码+数据

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 四、完整程序数据分享下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台…

Flutter(四):SingleChildScrollView、GridView

SingleChildScrollView、GridView 遇到的问题 以下代码会报错: class GridViewPage extends StatefulWidget {const GridViewPage({super.key});overrideState<GridViewPage> createState() > _GridViewPage(); }class _GridViewPage extends State<GridViewPage&g…

go并发模式之----阻塞/屏障模式

常见模式之一&#xff1a;阻塞/屏障模式 定义 顾名思义&#xff0c;就是阻塞等待所有goroutine&#xff0c;直到所有goroutine完成&#xff0c;聚合所有结果 使用场景 多个网络请求&#xff0c;聚合结果 大任务拆分成多个子任务&#xff0c;聚合结果 示例 package main ​…

两台电脑异地怎么共享文件?

在现代社会中&#xff0c;无论是个人用户还是企事业单位&#xff0c;都经常面临着跨地域的文件共享需求。由于各种限制和条件的限制&#xff0c;如网络环境、设备限制等&#xff0c;可能导致文件共享变得非常困难。本文将介绍一款名为【天联】的组网产品&#xff0c;通过它可以…

mysql快速生成1000万的测试数据

创建存储过程 DELIMITER //CREATE PROCEDURE generate_data() BEGINDECLARE i INT DEFAULT 1;-- 创建表CREATE TABLE IF NOT EXISTS test_table (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255),age INT,email VARCHAR(255));-- 插入1000万行数据WHILE i < 10000000…

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(前导)

ACM9238 高速双通道ADC模块自助服务手册AD9238 Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验&#xff08;一&#xff09;-CSDN博客 一、AD9238 模块在各方面参数性能上与AD9226保持一致。但是在设计上优化了信号调理电路&#xff0c;将单端信号先转成差分信号&#xff0c…

新闻稿软文投放推广发布需要注意什么

在全球化的背景下&#xff0c;各国之间的联系与互动变得越来越频繁。无论是经济、文化还是科技领域&#xff0c;各国之间的交流和合作都在不断加深。而在这个信息爆炸的互联网时代&#xff0c;人们获取信息的主要途径也逐渐转向了网络。 在这种情况下&#xff0c;软文推广成为…

node 之 解决下包速度慢的问题

1.为什么下包速度慢 在使用 npm 下包的时候,默认从国外的https://registry.npmis.org/ 服务器进行下载&#xff0c;此时&#xff0c;网络数据的传输需要经过漫长的海底光缆&#xff0c;因此下包速度会很慢。 2.淘宝npm 镜像服务器 淘宝在国内搭建了一个服务器&#xff0c;专门把…

Unity之ConversaDialogueSystem 对话插件使用

一、插件下载或购买 官方购买地址&#xff1a;Conversa Dialogue System | 可视化脚本 | Unity Asset Store 百度网盘地址&#xff1a;提取码&#xff1a;syq1 此插件没有官方案例&#xff0c;插件作者也明确回复说后期不会出教程&#xff0c;所以此教程根据插件demo案例进行学…

QT C++实践|超详细数据库的连接和增删改查操作|附源码

0&#xff1a;前言 &#x1faa7; 什么情况需要数据库? 1 大规模的数据需要处理&#xff08;比如上千上万的数据量&#xff09;2 需要把数据信息存储起来&#xff0c;无论是本地还是服务上&#xff0c;而不是断电后数据信息就消失了。 如果不是上面的原因化&#xff0c;一般…