操作系统实验一之进程控制实验

2024-05-15 14:18

本文主要是介绍操作系统实验一之进程控制实验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

// 编写一个多进程并发执行程序。父进程首先创建一个执行 ls 命令的子进程然后再创建一个执行 ps 命令的子进程,并控制ps 命令总在 ls 命令之前执行。
pctl.c#include "pctl.h"int main(int argc,char *argv[])
{int i;int pid1;int pid2;int status1;int status2;signal(SIGINT,(sighandler_t)sigcat);char *args1[] = {"/bin/ls","-l",NULL};char *args2[] = {"/bin/ps","-l",NULL};pid1 =fork();if(pid1<0){printf("Create Process 1 fail\n");exit(EXIT_FAILURE);}else if(pid1==0){printf("I am Child one process %d \nMy father is %d\n",getpid(),getppid());pause();for(i =0; args1[i]!=NULL; i++){printf("%s",args1[i]);}printf("\n");status1 =execve(args1[0],args1,NULL);}else{printf("\nI am Parent process %d\n",getpid());pid2 =fork();if(pid2<0){printf("Create Process 2 fail\n");exit(EXIT_FAILURE);}else if(pid2 ==0){printf("I am Child two process %d,\nMy father is %d\n",getpid(),getppid());for(i =0; args2[i]!=NULL; i++){printf("%s",args2[i]);}printf("\n");status2 = execve(args2[0], args2, NULL);}else{waitpid(pid2, &status2, 0);kill(pid1, SIGINT);}}return EXIT_SUCCESS;}pctl.h#include<sys/types.h>
#include<wait.h>
#include<unistd.h>
#include<signal.h>
#include<stdio.h>
#include<stdlib.h>
//进程?定义的键盘中断信号处理函数
typedef void(*sighandler_t) (int) ;void sigcat(){
printf("%dProcesscontinue\n",getpid());
}运行结果:I am Parent process 2353
I am Child one process 2354 
I am Child two process 2355,
My father is 2353
My father is 2353
/bin/ps-l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000  2298  2286  6  80   0 -  2192 wait   pts/0    00:00:00 bash
0 S  1000  2353  2298  0  80   0 -   502 wait   pts/0    00:00:00 pctl
1 S  1000  2354  2353  0  80   0 -   502 pause  pts/0    00:00:00 pctl
0 R  1000  2355  2353  0  80   0 -   657 -      pts/0    00:00:00 ps
2354Processcontinue
/bin/ls-l
cqc@cqc-virtual-machine:~$ total 19168
-rw-rw-r--  1 cqc cqc      974 May  9 08:00 <invalid path>
-rw-r--r--  1 cqc cqc     8445 Apr  5 23:42 examples.desktop
drwxrwxr-x 15 cqc cqc    12288 Apr  6 02:09 libxml2-2.6.32
-rw-rw-r--  1 cqc cqc  4722227 Apr  6 00:16 libxml2-2.6.32.tar.gz
-rw-rw-r--  1 cqc cqc      163 May  9 06:54 makefile
-rw-rw-r--  1 cqc cqc        0 May  9 06:54 makefile~
drwxrwxr-x  2 cqc cqc     4096 May  5 05:42 nimei
-rwxrwxr-x  1 cqc cqc     9003 May  9 08:22 pctl
-rw-rw-r--  1 cqc cqc     1343 May  9 08:24 pctl.c
-rw-rw-r--  1 cqc cqc     1005 May  9 07:33 pctl.c~
-rw-rw-r--  1 cqc cqc      257 May  9 08:11 pctl.h
-rw-rw-r--  1 cqc cqc      303 May  9 06:52 pctl.h~
-rw-rw-r--  1 cqc cqc     4260 May  9 08:22 pctl.o
drwxr-xr-x 15 cqc cqc     4096 Apr  6 02:13 php-5.3.8
-rw-rw-r--  1 cqc cqc 14789551 Apr  6 01:28 php-5.3.8.tar.gz
drwxrwxr-x  4 cqc cqc     4096 May  9 07:43 workspace
drwxr-xr-x  2 cqc cqc     4096 Apr  6 02:28 ??????
drwxr-xr-x  2 cqc cqc     4096 Apr  5 23:58 ?????????
drwxr-xr-x  2 cqc cqc     4096 Apr  5 23:58 ??????
drwxr-xr-x  2 cqc cqc     4096 Apr  6 01:56 ??????
drwxr-xr-x  2 cqc cqc     4096 Apr  5 23:58 ??????
drwxr-xr-x  2 cqc cqc     4096 Apr  5 23:58 ??????
drwxr-xr-x  2 cqc cqc     4096 Apr  5 23:58 ??????
drwxr-xr-x  2 cqc cqc     4096 Apr  5 23:58 ??????

这篇关于操作系统实验一之进程控制实验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/992049

相关文章

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

使用DrissionPage控制360浏览器的完美解决方案

《使用DrissionPage控制360浏览器的完美解决方案》在网页自动化领域,经常遇到需要保持登录状态、保留Cookie等场景,今天要分享的方案可以完美解决这个问题:使用DrissionPage直接... 目录完整代码引言为什么要使用已有用户数据?核心代码实现1. 导入必要模块2. 关键配置(重点!)3.

Linux中的进程间通信之匿名管道解读

《Linux中的进程间通信之匿名管道解读》:本文主要介绍Linux中的进程间通信之匿名管道解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基本概念二、管道1、温故知新2、实现方式3、匿名管道(一)管道中的四种情况(二)管道的特性总结一、基本概念我们知道多

Linux进程终止的N种方式详解

《Linux进程终止的N种方式详解》进程终止是操作系统中,进程的一个重要阶段,他标志着进程生命周期的结束,下面小编为大家整理了一些常见的Linux进程终止方式,大家可以根据需求选择... 目录前言一、进程终止的概念二、进程终止的场景三、进程终止的实现3.1 程序退出码3.2 运行完毕结果正常3.3 运行完毕

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

Windows命令之tasklist命令用法详解(Windows查看进程)

《Windows命令之tasklist命令用法详解(Windows查看进程)》tasklist命令显示本地计算机或远程计算机上当前正在运行的进程列表,命令结合筛选器一起使用,可以按照我们的需求进行过滤... 目录命令帮助1、基本使用2、执行原理2.1、tasklist命令无法使用3、筛选器3.1、根据PID

Spring Security注解方式权限控制过程

《SpringSecurity注解方式权限控制过程》:本文主要介绍SpringSecurity注解方式权限控制过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、摘要二、实现步骤2.1 在配置类中添加权限注解的支持2.2 创建Controller类2.3 Us

Python中如何控制小数点精度与对齐方式

《Python中如何控制小数点精度与对齐方式》在Python编程中,数据输出格式化是一个常见的需求,尤其是在涉及到小数点精度和对齐方式时,下面小编就来为大家介绍一下如何在Python中实现这些功能吧... 目录一、控制小数点精度1. 使用 round() 函数2. 使用字符串格式化二、控制对齐方式1. 使用