操作系统--进程控制实验
2014-06-25 23:09
441 查看
#include "pctl.h" int main(int argc, char *argv[]) { int m=2; int i; int seconds=3; int pid1; int pid2; //存放子进程号 int status1; int status2; //存放子进程返回状态 char *args1[] = {"/bin/ls","-all",NULL}; //子进程1要缺省执行的命令 char *args2[] = {"/bin/ps","-l",NULL}; //子进程2要缺省执行的命令 signal(SIGINT,(sighandler_t)sigcat); //注册一个本进程处理键盘中断的函数 while(m!=0) { pid1=fork() ; //建立子1进程 if(pid1<0) // 建立子进程1失败? { printf("Create Process1 fail!\n"); exit(EXIT_FAILURE); } if(pid1 == 0) // 子进程1执行代码段 { //报告父子进程进程号 printf("I am Child process1 %d\nMy father is %d\n",getpid(),getppid()); m=0; pause(); //暂停,等待键盘中断信号唤醒 //子进程被键盘中断信号唤醒继续执行 printf("%d child will Running: \n",getpid()); // 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();//建立子进程2 if(pid2<0) // 建立子进程2失败? { printf("Create Process2 fail!\n"); exit(EXIT_FAILURE); } if(pid2 == 0) // 子进程2执行代码段 { //报告父子进程进程号 m=0; printf("I am Child process2 %d\nMy father is %d\n",getpid(),getppid()); for(i=0; args2[i] != NULL; i++) printf("%s ",args2[i]); printf("\n"); //子进程2开始执行 status2=execve(args2[0],args2,NULL); } else { sleep(1); if(kill(pid1,SIGINT)>=0) printf("%d wakeup %d child.\n",getpid(),pid1); printf("But %d don't Wait for %d child done.\n\n",getpid(),pid1); } } unsigned sleep(seconds); } }
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("%d Process continue\n",getpid()); }Makefile文件
head = pctl.h
srcs = pctl.c
objs = pctl.o
opts = -g -c
all: pctl
pctl: $(objs)
gcc $(objs) -o pctl
pctl.o: $(srcs) $(head)
gcc $(opts) $(srcs)
clean:
相关文章推荐
- 操作系统实验一之进程控制实验
- 操作系统 实验一 进程控制
- 进程子进程[Linux]操作系统算法实验一:进程控制实验
- 操作系统第一次上机实验 进程控制(终极版)
- 实验三 进程调度模拟程序--操作系统
- 操作系统进程的概念,进程的状态及状态转换,进程控制
- 操作系统——进程控制(二)
- 哈工大操作系统实验 6 字符显示的控制
- 操作系统-进程控制
- 计算机操作系统 第二章 进程的描述与控制
- 进程描述和控制 --操作系统精髓与设计
- 操作系统(二)进程控制
- 【操作系统】实验三 进程调度模拟程序
- 操作系统:进程管理和IO控制
- 操作系统进程的概念,进程的状态及状态转换,进程控制
- 进程篇(4: 基本进程控制:其他相关控制)--请参照本博客“操作系统”专栏
- 进程控制实验--fork()
- 操作系统:进程控制
- 操作系统实验之一--进程调度算法的模拟实现
- 今天学习信号以及进程的控制实验