当前位置: 首页 > wzjs >正文

新媒体 网站建设 影视新媒体营销推广渠道

新媒体 网站建设 影视,新媒体营销推广渠道,做网站注册哪类商标,查看网站备案信息一、实验要求 在 Ubuntu 或 openEuler 中完成任务(推荐openEuler)写一个父子进程通信程序。父进程每2秒向子进程发送SIGUSR2信号。子进程统计收到信号的次数,并在收到第5次时输出“Received 5 signals, child exit!”,然后退出。…

一、实验要求

  1. 在 Ubuntu 或 openEuler 中完成任务(推荐openEuler)
  2. 写一个父子进程通信程序。父进程每2秒向子进程发送SIGUSR2信号。子进程统计收到信号的次数,并在收到第5次时输出“Received 5 signals, child exit!”,然后退出。父进程检测到子进程退出后(可通过SIGCHLD或wait),输出“Child terminated.”并自身退出。
  3. 提交代码和运行结果截图或文本

二、实验过程

1、程序实现

test.c

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>int signal_count = 0;  // 记录接收到的SIGUSR2信号的次数// 子进程接收到SIGUSR2信号的处理函数
void sigusr2_handler(int sig) {signal_count++;  // 每接收到一个SIGUSR2信号,计数器加一printf("Received signal %d times\n", signal_count);// 如果接收到第5次信号,子进程退出if (signal_count == 5) {printf("Received 5 signals, child exit!\n");exit(0);  // 子进程退出}
}int main() {pid_t pid = fork();  // 创建子进程if (pid < 0) {perror("fork failed");exit(1);}if (pid == 0) {  // 子进程// 设置SIGUSR2信号的处理函数signal(SIGUSR2, sigusr2_handler);// 子进程无限循环,等待信号while (1) {pause();  // 等待信号}} else {  // 父进程sleep(1);  // 给子进程一些时间来设置信号处理// 每2秒向子进程发送SIGUSR2信号for (int i = 0; i < 5; i++) {sleep(2);  // 每2秒发送一次kill(pid, SIGUSR2);  // 发送SIGUSR2信号给子进程}// 等待子进程退出(通过wait或SIGCHLD信号)int status;waitpid(pid, &status, 0);  // 等待子进程结束// 子进程退出后,父进程输出信息并退出printf("Child terminated.\n");exit(0);}return 0;
}

2、程序解析

  1. 信号处理

    • 子进程使用 signal(SIGUSR2, sigusr2_handler) 来设置 SIGUSR2 信号的处理函数。当子进程接收到 SIGUSR2 信号时,sigusr2_handler 函数会被调用,记录信号接收的次数,并在接收到第 5 次信号时退出子进程。
    • 父进程每隔 2 秒通过 kill(pid, SIGUSR2) 向子进程发送一个 SIGUSR2 信号。
  2. 父子进程通信

    • 父进程通过 fork() 创建一个子进程。如果 fork() 返回 0,则是子进程;如果返回一个正数,则是父进程,并且返回值是子进程的 PID。
    • 父进程使用 kill() 向子进程发送信号,子进程则使用 pause() 来等待并处理接收到的信号。
  3. 子进程退出

    • 子进程在接收到第 5 次 SIGUSR2 信号时,会输出 “Received 5 signals, child exit!” 并调用 exit(0) 退出。
  4. 父进程等待

    • 父进程通过 waitpid(pid, &status, 0) 等待子进程结束。子进程结束后,父进程会输出 “Child terminated.” 并退出。

3、编译和运行

在这里插入图片描述

  • 每隔 2 秒,父进程会发送一次 SIGUSR2 信号给子进程。
  • 子进程收到 5 次信号后输出“Received 5 signals, child exit!”并退出。
  • 父进程等待子进程退出后输出“Child terminated.”并结束。

5、Gitee仓库

仓库链接:https://gitee.com/li-zhen1215/homework/tree/master/Week8/keshang3

在这里插入图片描述

http://www.dtcms.com/wzjs/830255.html

相关文章:

  • 珠海网站制作费用微网站医院策划案
  • 手机端做的优秀的网站设计我爱我家租房房源信息网
  • 张家港质监站网址php和织梦那个做网站好
  • 汕头网站建设推广价格昌大建设始建于哪个地区
  • wordpress网站整站搬迁营销培训课程视频
  • 永州企业网站建设旅行社网站 模板
  • 甘肃永靖建设住建局网站网站评价及优化分析报告
  • 乐安网站建设网站空间 域名
  • 怎么通过做网站来赚钱数字化营销模式及特点
  • 网站设计 中国风企业官网招聘信息
  • 甘肃金恒大建设有限公司网站网站标志的原则
  • 做网站有哪些行业临沂做网站建设的公司
  • 建站经验 网站建设学院做网站要多少回扣
  • 苏州住房和城乡建设局网站首页wordpress服装模板
  • 盐城网站建设设计宿迁房产网签合同查询
  • 做网站 0元代理成都学做网站
  • 横栏建设网站鹤壁市淇滨区建设局网站
  • 网站建设官网型好呢还是商城型dz网站建设教程
  • 做公司网站需要几天付费文章 wordpress
  • 湖北seo西安网站优化公司
  • 综合门户网站源码《高性能网站建设指南
  • 国内有做网游评测的网站么公司网站建设企业网站
  • 低价网站建设方案网站备案要几天
  • 云梦网络做网站wap端
  • 个人网站找谁建设好小说网站收录了怎么做排名
  • 网站后台登入密码忘记了wordpress 自动分页插件
  • 西安哪里可以做公司网站网站先做前端还是后端
  • 无为县做互联网网站西部数码网站备案查询
  • 公司网站建设调研问卷工业产品设计公司排名
  • 网络网站建设公司排名湖南长沙公司注册