操作系统--进程控制实验
来源:互联网 发布:金秀贤是否过气了 知乎 编辑:程序博客网 时间:2024/04/28 13:24
#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:
0 0
- 操作系统--进程控制实验
- 操作系统 实验一 进程控制
- 操作系统实验一之进程控制实验
- 操作系统第一次上机实验 进程控制(终极版)
- 操作系统进程管理实验
- 操作系统实验-进程通信
- 操作系统实验-进程
- 操作系统进程实验课程设计
- 操作系统 进程通信实验
- 操作系统(二)进程控制
- 操作系统--进程控制
- 操作系统-进程控制
- 操作系统:进程控制
- 实验一:进程控制实验
- 实验二 进程控制
- DHU 操作系统进程调度实验
- 操作系统进程--互斥实验
- 操作系统实验一进程管理
- 面试题总结
- linux 下发布war所遇问题
- VS2010 MFC使用TeeChart绘图控件之二:绘制图形(折线图,柱状图)
- margin 等高布局
- UDP打洞技术
- 操作系统--进程控制实验
- 快排多版本
- linux下 url中文参数乱码问题
- 软件设计原则
- ajax url 路径
- 陀螺仪、加速计、磁力计等传感器汇总
- smali代码相关
- hdu 4828 Grids(拓展欧几里得+卡特兰数)
- C# 多线程协同完成一个任务