大连理工大学操作系统上机实验二
生活随笔
收集整理的這篇文章主要介紹了
大连理工大学操作系统上机实验二
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
編寫一個多進程并發執行程序。父進程首先創建一個執行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; }總結
以上是生活随笔為你收集整理的大连理工大学操作系统上机实验二的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我在软件园二期的小花园捡起了一片树叶
- 下一篇: 《随笔 一》