/*
Author: KMDJ
PublishedOn: CSDN
Filename: exp1.c
*/
#include "exp1.h"
int main(int argc, char *argv[]){
int i;
int pid1;
int pid2;
int status1;
int status2;
char *arg1[] = {"/bin/ls", "-a", NULL};
char *arg2[] = {"/bin/ps", "-l", NULL};
signal(SIGINT,(sighandler_t)sigcat);
pid1=fork();
if(pid1<0){
printf("Create Process failed!\n");
exit(EXIT_FAILURE);
}
if(pid1==0){
printf("I am Child process %d\nMy father is %d\nI will execute command 'ls -a' later\n", getpid(), getppid());
printf("\n");
pause();
printf("%d child will Running: \n", getpid());
for(i=0; arg1[i]!=NULL; i++) printf("%s", arg1[i]);
printf("\n");
status1=execve(arg1[0], arg1, NULL);
}
else{
sleep(1);
pid2=fork();
if(pid2==0){
printf("I am Child process %d\nMy father is %d\nI will execute command 'ps -l' later\n", getpid(), getppid());
printf("\n");
pause();
printf("%d child will Running: \n", getpid());
for(i=0; arg2[i]!=NULL; i++) printf("%s", arg2[i]);
printf("\n");
printf("\n");
status2=execve(arg2[0], arg2, NULL);
}
else{
sleep(1);
printf("\nI am Parent process %d\n", getpid());
if(kill(pid2,SIGINT)>=0)
printf("\n%d wakeup %d child.\n", getpid(), pid2);
printf("%d wait for child done.\n", getpid());
waitpid(pid2, &status1, 0);
printf("%d child process done.\n", pid2);
if(kill(pid1,SIGINT)>=0)
printf("\n%d wakeup %d child.\n", getpid(), pid1);
printf("%d wait for child done.\n", getpid());
waitpid(pid1, &status1, 0);
printf("%d child process done.\n", pid1);
printf("\nParent process done\n");
}
}
return EXIT_SUCCESS;
}
山东大学软件学院_操作系统实验1
需积分: 15 111 浏览量
2018-07-14
17:32:02
上传
评论
收藏 8KB ZIP 举报
KMDJ
- 粉丝: 0
- 资源: 2
最新资源
- Sunfounder智能视频车载套件,适用于Raspberry Pi-智能车
- 计算机二级考试的一些编程题(大学生专用 )-计算机二级
- 2019年之江杯人工智能大赛电商评论观点挖掘赛道TOP3-电赛
- 基于PCA和SVM的人脸识别
- Python 爬虫爬取 Instagram 博主照片视频-Python 爬虫
- dot-font字体库
- 实现各种面向对象设计模式的C + +项目集合-Object-C
- 硬件设计基础:数字电压表;51单片机蓝牙通信+Proteus 仿真
- 用于使用JavaScript制作Scratch类项目的库-Scratch
- 2005-2022年全国及31省绿色信贷水平原始数据及测算(含原始数据+计算过程+计算结果).xls
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈