日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux函数实验报告,linux实验报告

發布時間:2025/3/21 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux函数实验报告,linux实验报告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(1) 使用vi命令編寫程序pipe0.c: main() {

int fd[2];

char OutPipe[100],InPipe[100]; pipe(fd);

while((pid1=fork())== -1); if(pid1= =0) {

lockf(fd[1],1,0);

sprintf(OutPipe,“child 1 is sending message!”); /*把串放入數組outpipe中*/

write(fd[1],OutPipe,50); /*把串放入數組outpipe中*/ sleep(5); /*自我阻塞5秒*/ lockf(fd[1],0,0); exit(0); } else {

while((pid2=fork())== -1); if(pid2==0) {

lockf(fd[1],1,0); /*互斥*/ sprintf(OutPipe,“child 2 is sending message!”); write(fd[1],OutPipe,50); sleep(5); lockf(fd[1],0,0); exit(0); } else {

wait(0); /*同步*/

read(fd[0],InPipe,50); /*從管道中讀長為50字節的串*/ printf(“%s\\n”,InPipe); wait(0); } } }

(2)運行結果:

21

在顯示結果時:

child 2 is sending message!(延遲5秒后顯示) child 1 is sending message!(再延遲5秒) (3)分析原因:

本實驗利用函數pipe()建立通信管道,兩個子進程分別向管道寫入信號,父進程讀取管道信號在顯示,管道的寫入操作分別加鎖實現互斥操作。子進程1先建立,所以第一次讀取的管道信號是子進程發來的,等待子進程1終止后再從管道讀取信號,此時的信號是子進程2發來的。由于管道通信的互斥、同步等通信機制,執行結果不會再出現隨機性。 2.在父進程中用pipe()建立一條管道線,往管道里寫一句話,兩個子進程接收這句話。 (1) 使用vi命令編寫程序pipe1.c: main() {

int fd[2];

char OutPipe[100],InPipe[100]; pipe(fd);

while((pid1=fork())==-1); if(pid1==0)

{ sleep(2);

lockf(fd[0],1,0); read(fd[0],InPipe,50);

printf(\ printf(\

lockf(fd[0],0,0); exit(0); } else {

while((pid2=fork())==-1); if(pid2==0 ) { sleep(2); lockf(fd[0],1,0); read(fd[0],InPipe,50);

printf(\ printf(\

22

lockf(fd[0],0,0); exit(0); } else {

lockf(fd[1],1,0);

sprintf(OutPipe,\ write(fd[1],OutPipe,50); lockf(fd[1],0,0); sleep(5); wait(); sleep(5);

wait(); exit(0); } } }

(2)運行結果:

(3)分析原因:

本實驗利用函數pipe()在父進程中建立通信管道,兩個子進程分別接收來自父進程的寫入信號。子進程1先建立,所以第一次讀取的管道信號是子進程發來的,等待子進程1終止后再從管道讀取信號,此時的信號是子進程2發來的。

二、流程圖

開始 初始化變量 創建子進程pid1 否 子進程pid1創建是否成功? 是 當前是父進程? 否 創建子進程pid2 否 23 子進程pid2創建是否成功? 是 寫入管道打印

三、實驗總結

本次實驗在編寫程序pipe.c時,利用函數pipe()建立通信管道,兩個子進程分別向管道寫入信號,父進程讀取管道信號在終端顯示。在編寫程序pipe1.c時,利用函數pipe()在父進程中建立通信管道,兩個子進程分別接收來自父進程的寫入信號。按照實驗要求,發現兩次的調試結果居然一樣。我總結出此次實驗主要是利用函數pipe()建立通信管道,子進程或父進程從通信管道讀取信號然后在終端顯示出來。

(四)消息的發送與接收實驗

【實驗目的】

1.了解什么是消息。 2.熟悉消息傳送機理。 3.編程實現消息的發送與接收。

【實驗內容】

一、消息的發送與接收

1.消息的創建、發送和接收。使用系統調用msgget( ),msgsnd( ),msgrev( ),及msgctl( )編制一長度為1k的消息發送和接收的程序。 (1) 使用vi命令編寫程序client.c和server.c: ①client.c

void client()

24

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的linux函数实验报告,linux实验报告的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。