大连理工大学操作系统上机实验二
生活随笔
收集整理的这篇文章主要介绍了
大连理工大学操作系统上机实验二
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
编写一个多进程并发执行程序。父进程首先创建一个执行ls命令的子进程然后再创建一个执行ps命令的子进程,并控制 ps 命令总在 ls 命令之前执行。
#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("No.%d Process continue\n",getpid()); } int main(int argc,char*argv[]) { int status_1,status_2;signal(SIGINT,(sighandler_t)sigcat);char *args1[]={"/bin/ls","-a",NULL};char *args2[]={"/bin/ps","-a",NULL};int pid1=fork();if(pid1<0){printf("Create Process fail\n");} if(pid1==0){printf("No.%d ls the child process starting\n",getpid());pause();printf("No.%d ls the child process waking\n",getpid());status_1=execve(args1[0],args1,NULL);exit(0);}else{printf("\nNo.%d Father Process starting\n",getpid());int pid2=fork();if(pid2>0){printf("No.%d ls pause\n",pid1);waitpid(pid2,&status_2,0);printf("No.%d ps over\n",pid2);printf("No.%d ls waking\n",pid1);kill(pid1,SIGINT);waitpid(pid1,&status_1,0);printf("No.%d ls over\n",pid1);printf("No.%d Father process over\n",getpid());exit(0); }if(pid2<0){printf("Process2 fails\n");}if(pid2==0){printf("No.%d ps starting\n ",getpid());status_2=execve(args2[0],args2,NULL); } }return 0; }总结
以上是生活随笔为你收集整理的大连理工大学操作系统上机实验二的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 我在软件园二期的小花园捡起了一片树叶
- 下一篇: 数字化工业4.0柔性智能制造生产线实训系