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

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

相关文章

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

Java进程CPU使用率过高排查步骤详细讲解

《Java进程CPU使用率过高排查步骤详细讲解》:本文主要介绍Java进程CPU使用率过高排查的相关资料,针对Java进程CPU使用率高的问题,我们可以遵循以下步骤进行排查和优化,文中通过代码介绍... 目录前言一、初步定位问题1.1 确认进程状态1.2 确定Java进程ID1.3 快速生成线程堆栈二、分析

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

Python多进程、多线程、协程典型示例解析(最新推荐)

《Python多进程、多线程、协程典型示例解析(最新推荐)》:本文主要介绍Python多进程、多线程、协程典型示例解析(最新推荐),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 目录一、multiprocessing(多进程)1. 模块简介2. 案例详解:并行计算平方和3. 实现逻

C#通过进程调用外部应用的实现示例

《C#通过进程调用外部应用的实现示例》本文主要介绍了C#通过进程调用外部应用的实现示例,以WINFORM应用程序为例,在C#应用程序中调用PYTHON程序,具有一定的参考价值,感兴趣的可以了解一下... 目录窗口程序类进程信息类 系统设置类 以WINFORM应用程序为例,在C#应用程序中调用python程序

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

Spring Security+JWT如何实现前后端分离权限控制

《SpringSecurity+JWT如何实现前后端分离权限控制》本篇将手把手教你用SpringSecurity+JWT搭建一套完整的登录认证与权限控制体系,具有很好的参考价值,希望对大家... 目录Spring Security+JWT实现前后端分离权限控制实战一、为什么要用 JWT?二、JWT 基本结构