linux 实验2 进程创建,实验2Linux进程控制与通信
實驗2Linux進程控制與通信
實驗 2 Linux 進程控制與通信1. 實驗目的(1 ) 進一步認識并發執行的概念,認識父子進程及進程創建原理;(2 ) 了解 Linux 系統中進程通信的基本原理。2. 實驗環境一臺裝有 Linux 操作系統(Fedora 7) ,至少具有 256M 內存的微機。3. 預備知識1) gcc 編譯器的使用2) fork 系統調用:創建一個新進程3) getpid 系統調用:獲得一個進程的 pid4) wait 系統調用:發出調用的進程等待子進程結束5) pipe 系統調用:建立管道6) write 系統調用:向文件中寫數據7) read 系統調用:從文件中讀數據4. 實驗內容(1 )編寫一段程序(程序名為 parent_child.c) ,使用系統調用 fork()創建兩個子進程,如果是父進程顯示“Parent Process: A”,子進程分別顯示“This is child1 (pid1 =xxxx )process: B”和“This is child1 (pid1 =xxxx )process: C”,其中“xxxx ”分別指明子進程的 pid 號。(2 )編寫一段程序(程序名為 comm.c),父子進程之間建立一條管道,子進程向管道中寫入“Child process 1 is sending a message!”,父進程從管道中讀出數據,顯示在屏幕上。5. 實驗要求(1 ) 將 parentchild.c 源程序,及程序執行結果寫入實驗報告;(2 ) 將 fork()系統調用后內核的工作原理寫入實驗報告;(3 ) 將 comm.c 源程序,及程序執行結果寫入實驗報告;(4 ) 將 Linux 系統中管道通信的工作原理寫入實驗報告。(1 )#include #include main(){if ( fork() == 0 ) // 子進程 1{printf(“This is child1 (pid1 =%d )process: B\n“, getpid() );exit(0);}else{if ( fork() == 0 ) // 子進程 2{printf(“This is child2 (pid2 =%d )process: C\n“, getpid() );exit(0);} printf(“Parent Process: A\n“); // 父進程exit(0);}}(2 )#include#include#includeint main(){int a[2];int pid;char in[50];pipe(a);pid=fork();if(pid==0){close(a[0]);write(a[1],“ Child process 1 is sending a message!“,sizeof(“Child process 1 is sending a message!“));exit(0);}else if(pid>0){close(a[1]);wait(0);read(a[0],in,sizeof(in));printf(“%s\n“,in);exit(0);}}
總結
以上是生活随笔為你收集整理的linux 实验2 进程创建,实验2Linux进程控制与通信的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mama kids怎么读?
- 下一篇: 我的智商是108是不是很高啊?