进程的控制(实验2)

AI Agent开发实战:100个真实场景题库解析 AI Agent开发涉及复杂的需求理解、架构设计及安全防护等关键技术环节。在工程实践中,开发者常面临需求偏差、系统崩溃等挑战,特别是在金融、医疗等高要求场景下。通过真实案例题库,开发者能系统性地掌握需求分析、架构决策树建模(如向量数据库选型)、安全攻防策略(如提示词注入防御)等核心技能。这些实战经验不仅能提升Agent的可用性和安全性,还能优化其在电商客服、智能家居等场景中的表现。题库采用动态难度系统,覆盖从基础到高级的开发挑战,是AI工程化落地的重要参考。 阅读详情

 二  进程的控制
实验目的
1、掌握进程另外的创建方法
2、熟悉进程的睡眠、同步、撤消等进程控制方法

实验内容
    1、用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容
2、利用wait( )来控制进程执行顺序

实验指导
一、所涉及的系统调用
在UNIX/LINUX中fork( )是一个非常有用的系统调用,但在UNIX/LINUX中建立进程除了fork( )之外,也可用与fork( ) 配合使用的exec( )。
1、exec(  )系列
系统调用exec( )系列,也可用于新程序的运行。fork( )只是将父进程的用户级上下文拷贝到新进程中,而exec( )系列可以将一个可执行的二进制文件覆盖在新进程的用户级上下文的存储空间上,以更改新进程的用户级上下文。exec( )系列中的系统调用都完成相同的功能,它们把一个新程序装入内存,来改变调用进程的执行代码,从而形成新进程。如果exec( )调用成功,调用进程将被覆盖,然后从新程序的入口开始执行,这样就产生了一个新进程,新进程的进程标识符id 与调用进程相同。
exec( )没有建立一个与调用进程并发的子进程,而是用新进程取代了原来进程。所以exec( )调用成功后,没有任何数据返回,这与fork( )不同。exec( )系列系统调用在UNIX系统库unistd.h中,共有execl、execlp、execle、execv、execvp五个,其基本功能相同,只是以不同的方式来给出参数。
一种是直接给出参数的指针,如:
int  execl(path,arg0[,arg1,...argn],0);
char  *path,*arg0,*arg1,...,*argn;
另一种是给出指向参数表的指针,如:
int execv(path,argv);
char *path,*argv[ ];
具体使用可参考有关书。
2、exec( )和fork( )联合使用
系统调用exec和fork( )联合使用能为程序开发提供有力支持。用fork( )建立子进程,然后在子进程中使用exec( ),这样就实现了父进程与一个与它完全不同子进程的并发执行。
一般,wait、exec联合使用的模型为:
int status;
      ............
if (fork( )= =0)
  {
      ...........;
      execl(...);
      ...........;
  }
wait(&status);
3、wait( )
等待子进程运行结束。如果子进程没有完成,父进程一直等待。wait( )将调用进程挂起,直至其子进程因暂停或终止而发来软中断信号为止。如果在wait( )前已有子进程暂停或终止,则调用进程做适当处理后便返回。
系统调用格式:
int  wait(status) 
int  *status;
其中,status是用户空间的地址。它的低8位反应子进程状态,为0表示子进程正常结束,非0则表示出现了各种各样的问题;高8位则带回了exit( )的返回值。exit( )返回值由系统给出。
核心对wait( )作以下处理:
(1)首先查找调用进程是否有子进程,若无,则返回出错码;
(2)若找到一处于“僵死状态”的子进程,则将子进程的执行时间加到父进程的执行时间上,并释放子进程的进程表项;
(3)若未找到处于“僵死状态”的子进程,则调用进程便在可被中断的优先级上睡眠,等待其子进程发来软中断信号时被唤醒。
4、exit( )
终止进程的执行。
系统调用格式:
    void exit(status)
     int status;
其中,status是返回给父进程的一个整数,以备查考。
为了及时回收进程所占用的资源并减少父进程的干预,UNIX/LINUX利用exit( )来实现进程的自我终止,通常父进程在创建子进程时,应在进程的末尾安排一条exit( ),使子进程自我终止。exit(0)表示进程正常终止,exit(1)表示进程运行有错,异常终止。
如果调用进程在执行exit( )时,其父进程正在等待它的终止,则父进程可立即得到其返回的整数。核心须为exit( )完成以下操作:
(1)关闭软中断
(2)回收资源
(3)写记帐信息
(4)置进程为“僵死状态”
    二、参考程序
#include<stdio.h>
#include<unistd.h>
main( )
{     
        int pid;   
        pid=fork( );         /*创建子进程*/
switch(pid)
{
               case  -1:                          /*创建失败*/
                       printf("fork fail!/n");
                       exit(1);
               case  0:                                 /*子进程*/
                       execl("/bin/ls","ls","-1","-color",NULL); 
                       printf("exec fail!/n");
                       exit(1);
               default:                                 /*父进程*/
                       wait(NULL);                  /*同步*/
                       printf("ls completed !/n");
                       exit(0);
          }
}
三、运行结果
执行命令ls  -l  -color ,(按倒序)列出当前目录下所有文件和子目录;
ls completed!
四、分析原因
程序在调用fork( )建立一个子进程后,马上调用wait( ),使父进程在子进程结束之前,一直处于睡眠状态。子进程用exec( )装入命令ls ,exec( )后,子进程的代码被ls的代码取代,这时子进程的PC指向ls的第1条语句,开始执行ls的命令代码。
注意在这里wait( )给我们提供了一种实现进程同步的简单方法。
五、思考
(1)可执行文件加载时进行了哪些处理?
(2)什么是进程同步?wait( )是如何实现进程同步的?

Ceres Solver:从入门到使用 Ceres Solver是谷歌开源的C++非线性优化库,能够解决有约束或无约束条件下的非线性最小二乘问题。2010年之后大量的运用在谷歌的产品开发中,尤其在谷歌开源的cartographer中被大量的使用。 ceres可以在Linux,Windows,macOS,Andrioid,IOS系统进行安装使用,详情可查看下方的官网链接。 Ceres Solver 官网:http://ceres-solver.org/ 阅读详情

相关推荐

ENVI与Sarscape协同处理哨兵一号数据的完整流程解析

本文详细解析了利用ENVI与Sarscape软件协同处理哨兵一号(Sentinel-1)SAR数据的完整工作流程。从环境搭建、数据导入与裁剪,到核心的DEM辅助多时相配准、斑点噪声滤波,再到最终的地理编码与辐射定标,提供了标准化的操作指南与实用技巧,帮助用户高效地将原始雷达数据转化为可用于分析的地理编码产品。

weixin_29251131的博客 339

作业必备:操作系统实验三:【进程控制】

操作系统:进程控制

qq_52300499的博客 5045

超越界面设计:GUI Guider与LVGL在STM32F103上的系统集成与架构思考

本文探讨了GUI Guider与LVGL在STM32F103微控制器上的系统集成与架构设计,重点分析了工程模块化组织、内存管理优化、硬件驱动接口设计以及FreeRTOS多任务集成。针对STM32F103ZET6的资源限制,提供了实用的移植策略和性能优化方案,帮助开发者构建高效、可维护的嵌入式GUI系统。

j2k3l4的博客 922

进程管理之(二)进程的控制实验

实验目的1、掌握进程另外的创建方法2、熟悉进程的睡眠、同步、撤消等进程控制方法 实验内容    1、用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容2、利用wait( )来控制进程执行顺序 实验指导一、所涉及的系统调用在UNIX/LINUX中fork( )是一个非常有用的系统调用,但在UNIX/LINUX中建立进程除了fork(

iamyina的专栏 1970

Vercel静态站被墙别慌!手把手教你用Cloudflare免费CDN+域名解析搞定DNS污染

本文详细介绍了如何利用Cloudflare免费CDN和域名解析解决Vercel静态网站遭遇DNS污染的问题。通过诊断DNS污染、设计Cloudflare解决方案架构、实战配置步骤以及高级调优技巧,帮助用户快速恢复站点访问并提升防护能力。

weixin_27442001的博客 677

从零开始:用RFSOC XCZU47DR搭建软件无线电开发环境(2023最新版)

本文详细介绍了如何使用Xilinx RFSoC XCZU47DR搭建高性能软件无线电(SDR)开发环境,涵盖硬件选型、开发环境配置、射频子系统校准及实战应用开发。特别针对2023年最新技术需求,提供从基础配置到高级优化的完整指南,助力科研人员和工程师快速掌握RFSoC开发技术。

weixin_42525005的博客 512

广州大学Linux实验报告,操作系统实验_实验1

广州大学学生实验报告1、 实验目的1.1、掌握进程的概念,明确进程的含义 1.2、认识并了解并发执行的实质 2.1、掌握进程另外的创建方法2.2、熟悉进程的睡眠、同步、撤消等进程控制方法 3.1、进一步认识并发执行的实质3.2、分析进程竞争资源的现象,学习解决进程互斥的方法 4.1、了解守护进程 5.1、了解什么是信号5.2、INUX系统中进程之间软中断通信的基本原理 6.1、了解什么是管道6.2...

weixin_33103961的博客 970

ABAP CDS HAVING 全解析:聚合之后的精准过滤、最佳实践与可运行示例

摘要: 本文针对具备ABAP与CDS基础的开发者,详解HAVING在ABAP CDS中的核心用法。HAVING专用于过滤GROUP BY后的聚合结果(如SUM、COUNT),与WHERE的分工明确:前者处理聚合值,后者过滤原始记录。通过销售额阈值、质量分析、财务对账三类典型场景,结合性能优化建议(如优先使用WHERE索引过滤),说明实际应用。文中提供经典CDS View与View Entity两种实现代码,并附Open SQL消费示例,帮助开发者快速落地。常见误区(如聚合条件误写至WHERE)与规避方法亦被

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 221

Linux进程创建及同步实验

实验题目: (1)编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在一个系统中有一个父进程和两个子进程活动,让每一个进程输出不同的内容,试观察记录屏幕上的显示结果,并分析原因; (2)修改上述程序,每一个进程循环显示一句话,子进程显示‘daughter…’及‘son…’,父进程显示’parent…’,观察结果,分析原因; (3)再调用exec()用新的程序替换该子进程的内容,...

wait2024的博客 1682

Python爬虫实战:基于最新技术栈的政府招标采购数据抓取与分析

对于企业、研究人员和数据分析师来说,能够高效地获取这些数据意味着可以获得宝贵的商业洞察和市场先机。随着反爬技术的不断升级和网站结构的日益复杂,传统的爬虫方法已经难以满足需求。我们将采用Selenium、Playwright等现代浏览器自动化工具,结合Scrapy框架和异步请求库,构建一个能够应对各种反爬措施的强大爬虫系统。Playwright是微软开发的浏览器自动化工具,支持Chromium、WebKit和Firefox,比Selenium更快速、更稳定。

2201_76125261的博客 1312

android 14.0 控制wifi启用禁用功能实现

在14.0的产品rom定制化开发中,在产品开发中,对于功能的开发的功能也是挺多的,而在对于wifi的功能定制需求,有要求需要通过系统属性来控制wifi开关是否可以打开 来控制是否可以连接wifi,打开控制wifi的功能,接下来分析wifi的开启流程来实现该功能的实现

安卓兼职framework和app工程师的博客 1771

进程管理与进程通信

介绍进程之间的管理和通信

赵四司机的博客 3221

安装 miniconda linux

安装 miniconda linux

jacke121的专栏 1万+

操作系统原理 | 实验2-进程控制(整理实验报告及知识点)

从今天开始,记录本科一些课程的学习历程。本文记录的是操作系统原理实验课的第二个实验,实验源代码及知识点讲解大多来源于网上,文末将附相关链接。#自存# #侵删# 目录实验内容实验知识点进程 & 并发性 & 进程标识符fork()exce系列waitpid()exit()实验源代码// fork1.c// fork2.c实验结果与分析fork1.cfork2.c 实验内容 写一段程序,使用系统调用fork()来创建两个子进程,并由父进程重复显示字符某字符串和自己的标识数,而子进程则重复显示某

Liiiila的博客 5467

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

linux 实验2 进程创建,Linux进程控制实验

一. 实验目的1.掌握Linux创建进程。2.掌握Linux父子进程同步。3.掌握Linux子进程的重新加载。4.进一步熟悉linux下vi的使用和C源程序的编译与运行。二. 实验准备1. 创建子进程函数:fork()说明:返回值 0 创建成功,从子进程返回>0创建成功,从父进程返回,其值为子进程的PID号-1创建失败2. 进程终止函数:exit(int status)说明:是一个不返...

weixin_39733821的博客 637

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

实验2linux进程控制与通信,实验2-进程控制与通信管理.doc

实验2-进程控制与通信管理年级11级专 业计算机科学与技术班级五班组号 12组实验室9#205日期2014/05/17实验名称 ?实验二、?进程控制与通信管理实验内容分项内容实验级别1、Linux 系统常用进程管理命令的使用操作系统观察级2、Linux 系统常用进程创建与管理的系统调用原码阅读与系统编程级3、Windows平台常用进线程控制API原码阅读与系统编程级4、进程同步与互斥控制...

weixin_35897916的博客 446

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

实验4linux进程控制实验,实验2 Linux进程控制!10

《实验2 Linux进程控制!10》由会员分享,可在线阅读,更多相关《实验2 Linux进程控制!10(5页珍藏版)》请在人人文库网上搜索。1、实验2 Linux进程控制一. 实验目的1学会查看和杀死进程。2加深对进程概念的理解,明确进程与程序的区别。3熟悉linux下vi的使用。二. 实验指导1. 查看系统中的进程格式:ps 选项例如:ps /显示当前用户在shell下所运行的进程。ps -u ...

weixin_33800724的博客 399

linux 实验2 进程创建,实验2Linux进程控制与通信

实验2Linux进程控制与通信 实验 2 Linux 进程控制与通信1. 实验目的(1 ) 进一步认识并发执行的概念,认识父子进程及进程创建原理;(2 ) 了解 Linux 系统中进程通信的基本原理。2. 实验环境一台装有 Linux 操作系统(Fedora 7) ,至少具有 256M 内存的微机。3. 预备知识1) gcc 编译器的使用2) fork 系统调用:创建一个新进程3) getpid ...

weixin_42467411的博客 380

实验2linux进程控制与通信,实验2 进程控制与通信管理word文档良心出品

《实验2 进程控制与通信管理word文档良心出品》由会员分享,可在线阅读,更多相关《实验2 进程控制与通信管理word文档良心出品(13页珍藏版)》请在人人文库网上搜索。1、年级11级专业计算机科学与技术班级五班组号12组实验室9#205日期2014/05/17实验 名称实验二、进程控制与通信管理实 验 内 容分项内容 实验级别1、Linux系统常用进程管理命令的使用操作系统观察级2、Linux系...

weixin_34996054的博客 213

[操作系统实验] 实验2 进程控制

编写C程序模拟实现单处理机系统中的进程调度算法,实现对多个进程的调度模拟,要求采用常见进程调度算法(如先来先服务、时间片轮转和优先级调度等算法)进行模拟调度。①在子进程中分别输出当前进程为子进程的提示、当前进程的PID 和父进程的PID、根据用户输入确定当前进程的返回值、退出提示等信息。②在父进程中分别输出当前进程为父进程的提示、当前进程的PID 和子进程的PID、等待子进程退出后获得的返回值、退出提示等信息。编写一个C 程序,并使用系统调用 fork( ) 创建一个子进程。

人生需要动态规划 学习需要贪心算法 734

操作系统原理:实验2.进程控制

本文介绍了Linux进程控制的三个核心系统调用:fork()用于创建子进程,会复制父进程的全部资源;execvp()用于加载新程序替换当前进程;wait()用于父进程等待子进程结束。通过实验展示了多进程并发执行的特性,包括进程隔离、资源回收和状态获取等。结果表明父进程和子进程可以并行运行,执行顺序由系统调度决定,体现了真正的并发特性。同时详细阐述了这三个系统调用的工作机制和多进程与单进程在资源独立性、执行效率等方面的主要区别。

平芜尽处是春山 1110

linux 实验2 进程创建,操作系统实验2-Linux进程控制

实验2 Linux 进程控制一. 实验目的1.学会查看和杀死进程。2.加深对进程概念的理解,明确进程与程序的区别。3.熟悉linux 下vi 的使用。二. 实验指导1. 查看系统中的进程格式:ps [选项]例如:ps //显示当前用户在shell 下所运行的进程。ps -u osmond //显示用户osmond 的进程。ps -aux //显示系统中正在运行的所有进程的详细信息。2. 杀死系统中...

weixin_39805364的博客 542

2基于proc的Linux进程控制块信息读取-拓展实验 显示Linux进程控制块中更多的信息

2基于proc的Linux进程控制块信息读取-拓展实验 显示Linux进程控制块中更多的信息 一.实验目的 ·了解Linux进程控制块task_strcut,并理解其重要成员变量的含义。 ·理解基于seq_file机制的proc伪文件操作机制 ·熟练掌握生成proc伪文件的Linux内核模块代码实现方法。 ·认识Linux的进程概念,深入理解操作系统的进程概念 二.实验背景 ·Linux进程...

汪汪的博客 1968

2基于proc的Linux进程控制块信息读取-实验2:创建显示系统进程信息的proc模块

2基于proc的Linux进程控制块信息读取-实验2:创建显示系统进程信息的proc模块 一.实验目的 ·了解Linux进程控制块task_strcut,并理解其重要成员变量的含义 ·理解基于seq_file机制的proc伪文件操作机制 ·熟练掌握生成proc伪文件的Linux内核模块代码实现方法 ·认识Linux的进程概念,深入理解操作系统的进程概念 二.实验背景 1.Linux进程控制块 ...

汪汪的博客 2639

操作系统实验2 进程控制和系统调用

2017-3-29 实验目的 1.熟悉fork,execve,exit等系统调用的使用 2.通过编写程序理解Linux进程生命周期 实验内容 [基本要求] 编写Linux环境下C程序,使用fork,exec,exit系统调用 [具体要求] ·程序调用fork创建子进程 ·父子进程至少有一个调用exec族系统调用执行其他程序 ·调用exit终止进程 ·代码有注释,提交实验报告 [进一步要求] ·用w...

weixin_33726943的博客 1476

linux进程控制实验原理,操作系统原理--课件、实验安排实验2 Linux进程控制与通信.doc...

操作系统原理--课件、实验安排实验2 Linux进程控制与通信.doc (1页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.90 积分实验2 Linux进程控制与通信1. 实验目的(1) 进一步认识并发执行的概念,认识父子进程及进程创建原理;(2) 了解Linux系统中进程通信的基本原理。2. 实验环境一台装有Linux操作系统(Fedora 7...

weixin_34837898的博客 258
上一篇: 进程的创建(实验1)
下一篇: 实验三 软中断通信
Non_Recursive
博客等级 码龄18年 57粉丝 34原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值