进程的创建和管理

news2024/11/24 20:41:04

一. 实验内容

1.  编写一个程序,程序中创建一个子进程。然后父、子进程各自独立运行,父进程不断地在标准输出设备(即显示器)上输出字母p和回车(输出30次或以上),子进程不断地在标准输出设备(即显示器)上输出字母c和回车(输出30次或以上)。

提示:相关的系统调用或函数:fork( )

多次运行程序,观察程序输出的结果,并做出合理的解释。

2.  (附加题,选做)编写一个程序,程序中创建两个子进程,然后三个进程各自独立运行。

父进程每隔1秒钟输出一个字母P和回车,共输出10次;

子进程1每隔2秒钟输出一个字母C和回车,共输出10次;

子进程2每隔3秒钟输出一个字母S和回车,共输出10次;

父进程必须等待两个子进程都结束后输出一句“Finish!”,然后才结束退出。

提示:可能使用到的系统调用或函数: sleep( )  wait( )

3.  你如果有其他方法可以影响(或改变)父、子进程的执行顺序?写出你的方法,论证其正确性,并加以实现。实现结果是否与预期的一致?

1.

#include<unistd.h>

#include<stdio.h>

int main()

{

int i;

pid_t fpid;

int count = 0;

fpid = fork();

if(fpid == 0)

{

for(i=0;i<30;i++)

{

usleep(10);

printf("c \n");

}

}

else

{

for(i=0;i<30;i++)

{

usleep(15);

printf("p \n");

}

}

return 0; 

}

2.

#include<unistd.h>

#include<stdio.h>

#include <sys/wait.h>

int main()

{

int i;

pid_t fpid;

int count = 0;

fpid = fork();

if(fpid == 0)

{

for(i=0;i<10;i++)

{

sleep(2);

printf("c \n");

}

}

else

{

fpid=fork();

if(fpid==0)

{

for(i=0;i<10;i++)

{

printf("s\n");

sleep(3);

}

}

else{

for(i=0;i<10;i++)

{usleep(1);

printf("p \n");

}

wait(NULL);

wait(NULL);

printf("finish!");

}

}

return 0; 

}

3.可以采用vfork函数确保子进程优先完成或者PV操作实现先后顺序的改变。

1.

2.

3.

1.

借助fork函数和Linux系统完成进程的创建并观察到两个进程相互独立输出拥有自己的空间因此明白了操作系统的进程的含义。

2.

借助wait()函数了解了操作系统的进程之间的相互阻塞去进行先后顺序的改变。

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

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

相关文章

MEMS:Lecture 17 Noise MDS

讲义 Minimum Detectable Signal (MDS) Minimum Detectable Signal&#xff08;最小可检测信号&#xff09;是指当信号-噪声比&#xff08;Signal-to-Noise Ratio, SNR&#xff09;等于1时的输入信号水平。简单来说&#xff0c;MDS 是一个系统能够分辨出信号存在的最低输入信号…

官方文档 搬运 MAXMIND IP定位 mysql导入 简单使用

官方文档地址&#xff1a; 官方文档 文件下载 1. 导入mysql可能报错 Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 查看配置 SHOW GLOBAL VARIABLES LIKE %secure%;secure_file_priv 原来…

vite-plugin-mock前端自行模拟接口返回数据的插件

vite-plugin-mock前端自行模拟接口返回数据的插件 安装导入、配置&#xff08;vite.config.js&#xff09;使用目录结构/mock/user.js具体在页面请求中的使用 注意事项 中文文档&#xff1a;[https://gitcode.com/vbenjs/vite-plugin-mock/blob/main/README.zh_CN.md) 参考其他…

区间预测 | Matlab实现BP-ABKDE的BP神经网络自适应带宽核密度估计多变量回归区间预测

区间预测 | Matlab实现BP-ABKDE的BP神经网络自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现BP-ABKDE的BP神经网络自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现BP-ABKDE的BP神经网络自适应带…

深入理解计算机系统 CSAPP 家庭作业6.34

第一步先求(S,E,B,m) 题目说共C32个字节,块大小B为16个字节,那就是分为两组:0,1.然后每组存4个int 每个4字节 CB*E*S .B16 ,直接映射的E就是1,所以S2 m为啥等于7? 通过写出两个数组所有的地址可以得出m7. 得出高速缓存的参数:(S,E,B,m)(2,1,16,7),注意图6-26每个参数的定义…

官网首屏:太漂亮了,真是着了它的魔,上了它的道。

大气的企业官网致力于提供用户友好的界面和优质的用户体验。网页经过精心设计和开发&#xff0c;旨在展示客户的品牌形象和产品信息&#xff0c;并为用户提供便捷的服务和沟通渠道。 官网设计追求简洁、美观、易用的原则&#xff0c;以吸引用户的注意力并提供清晰的导航和信息…

【MySQL】(基础篇十一) —— 分组数据

分组数据 本文介绍如何分组数据&#xff0c;以便能汇总表内容的子集。这涉及两个新SELECT语句子句&#xff0c;分别是GROUP BY子句和HAVING子句。 数据分组 经过上一节的学习&#xff0c;我们可以使用聚集函数查找到某个个工种拥有的员工数量&#xff08;count函数&#xff…

iCloud200g教育版云盘热点问题被锁根本原因经验博文

内幕现象 关于iCloud账号购买&#xff0c;笔者以为从某多闲鱼某宝都是不靠谱的&#xff0c;因为这些地方都是搞无货源模式&#xff0c;商家不是管理员只是倒卖的中介&#xff0c;而且这些平台是禁止交易虚拟网络账号的&#xff0c;所以很多这些平台商家都是以极低的价格出售快…

后端项目怎么做?怎么准备面试,看这篇就够了!

近期群友都在海投&#xff0c;广撒网&#xff0c;为的就是等一个面试机会&#xff0c;等一个offer。 当收到面试通知的时候&#xff0c;大家一定要好好把握机会。 机会很重要&#xff0c;给你机会&#xff0c;没有把握住&#xff0c;那就比较尴尬了。 对于研发岗位来说&…

sqoop的安装配置

1. 上传并解压安装包 tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C ../server/ 重命名&#xff1a;mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop 2. 配置环境变量 sudo vim /etc/profile # 配置sqoop的环境变量 export SQOOP_HOME/export/server/sqoop export PATH$PATH…

增加软件投入的重要性:提升自动化程度与用户界面设计的价值

一、引言 在许多项目中&#xff0c;硬件系统通常占据了大量预算&#xff0c;而对软件的投入相对较少。这种不平衡往往导致软件自动化程度低、操作不便、界面简陋&#xff0c;过多的人工干预不仅降低了工作效率&#xff0c;还影响了用户体验。特别是对于一些国家项目&#xff0…

大语言模型QA

Q:关于 Yi-9B 通过 input/output cosine 来分析模型,可能文档里没有把前提说明白。该指标确实存在你们提到的不同模型大小不可比的问题。所以我们比较的是同一个模型在不同训练阶段,以及 layer 深度相同的dense models 之间的比较。除了发现yi-6B/34B 随着训练 tokens 的增加…

UML与设计模式

1、关联关系 关联关系用于描述不同类的对象之间的结构关系&#xff0c;它在一段时间内将多个类的实例连接在一起。关联关系是一种静态关系&#xff0c;通常与运行状态无关&#xff0c;而是由“常识”、“规则”、“法律”等因素决定的&#xff0c;因此关联关系是一种强关联的关…

UFS协议入门-UPIU帧结构

写在前面:本文参考UFS jedec3.1,本文思维导图如下 1. UPIU整体结构 UPIU的结构由帧头和数据两个构成,其中帧头Header为12B,数据data最小为20B,UPIU最小为32B,最大为6500B。如下图所示。 2. UPIU包头结构 对于帧头,固定结构如下图所示,后面分贝介绍每个位的含义。 2.1…

34 Debian如何配置ELK群集

作者:网络傅老师 特别提示:未经作者允许,不得转载任何内容。违者必究! Debian如何配置ELK群集 《傅老师Debian知识库系列之34》——原创 ==前言== 傅老师Debian知识库特点: 1、拆解Debian实用技能; 2、所有操作在VMware虚拟机实测完成; 3、致力于最终形成Debian知识手…

【前端】HTML5基础

目录 0 参考1 网页1.1 什么是网页1.2 什么是HTML1.3 网页的形成 2 浏览器2.1 常用的浏览器2.2 浏览器内核 3 Web标准3.1 为什么需要Web标准3.2 Web标准的构成 4 HTML 标签4.1 HTML语法规范4.1.1 基本语法概述4.1.2 标签关系4.1.2.1 包含关系4.1.2.2 并列关系 4.2 HTML基本结构标…

JS读取目录下的所有图片/require动态加载图片/文字高亮

<template class"aa"><div class"demo-image__lazy container"><div class"head"><div class"left-bar"><div><span>综合</span></div><div><span>定位</span><…

快速构建本地RAG聊天机器人:使用LangFlow和Ollama实现无代码开发

基于LangChain的快速RAG应用原型制作方法 还记得构建智能聊天机器人需要数月编码的日子吗&#xff1f; LangChain这样的框架确实简化了开发流程&#xff0c;但对非程序员来说&#xff0c;数百行代码仍然是一道门槛。 有没有更简单的方法呢&#xff1f; 图片由 Ravi Palwe 在…

Qt 6.13

作业&#xff1a; #include "mywidget.h"mywidget::mywidget(QWidget *parent): QWidget(parent) {this->setStyleSheet("background-color:white");this->resize(600,600);this->setWindowFlag(Qt::FramelessWindowHint);this->setWindowTit…

掌握特劳特定位理论核心,明晰企业战略定位之重

在当今瞬息万变的市场环境中&#xff0c;企业战略定位的重要性日益凸显。它不仅是企业在激烈竞争中保持优势的关键&#xff0c;更是企业实现长期可持续发展的基石。 哈佛大学战略学教授迈克尔波特&#xff08;Michael Porter&#xff09;指出战略就是形成一套独具的运营活动&a…