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

歡迎訪問 生活随笔!

生活随笔

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

linux

Linux实验五:Linux环境下的C语言编程

發布時間:2023/12/13 linux 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux实验五:Linux环境下的C语言编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、實驗目的:
  • 二、實驗要求
  • 三、實驗內容
    • 1、編寫一段C語言程序使其完成:父進程創建兩個子進程,每個進程都在屏幕上顯示自己的進程ID號。
    • 2、上機調試下面的程序,觀察運行結果,分析原因。
    • 3、利用兩個管道進行雙向通信,實現父子進程協作把整數x從1加到10。
    • 4、利用消息隊列實現父子進程的通信。父進程創建消息隊列,并向消息隊列發送消息;子進程接受消息;父進程等待子進程接收消息后刪除消息隊列。


一、實驗目的:

1、學會用系統調用和庫函數進行編程

2、加深對進程概念的理解,明確進程和程序的區別。

3、進一步認識并發執行的實質。

4、分析進程競爭資源現象,學習解決進程互斥的方法。

5、了解Linux系統中進程通信的基本原理。


二、實驗要求

1、用fork( )創建進程,觀察進程的并發執行

2、使用管道、消息隊列機制進行進程間通信


三、實驗內容

1、編寫一段C語言程序使其完成:父進程創建兩個子進程,每個進程都在屏幕上顯示自己的進程ID號。

運行結果示例:

# ./forktest this is child1:16602 this is child2:16603 this is parent:16601


2、上機調試下面的程序,觀察運行結果,分析原因。

#include <sys/types.h> #include <unistd.h> int glob=3; int main() {pid_t pid;int loc=3;printf("befor fork():glob=%d,loc=%d\n", glob, loc);if ((pid=fork()) < 0){printf("fork() error\n");exit(0);}else if (pid == 0){glob++;loc--;printf("child:glob=%d, loc=%d\n", glob, loc);else{printf("parent:glob=%d, loc=%d\n", glob, loc);exit(0);}return 0; }


fork()后會有兩個并發進程執行,子進程賦值了父進程的數據段,包括全局變量。父進程執行進入pid>0的情況,子進程進入pid==0的情況,分別做glob和loc的運算以及輸出。


3、利用兩個管道進行雙向通信,實現父子進程協作把整數x從1加到10。

運行結果示例:

# ./pipetest child 5938 read: 1 parent 5937 read: 2 child 5938 read: 3 parent 5937 read: 4 child 5938 read: 5 parent 5937 read: 6 child 5938 read: 7 parent 5937 read: 8 child 5938 read: 9 parent 5937 read: 10 ·說明:5938和5937分別是子進程和父進程的pid


4、利用消息隊列實現父子進程的通信。父進程創建消息隊列,并向消息隊列發送消息;子進程接受消息;父進程等待子進程接收消息后刪除消息隊列。

運行結果示例:

# ./msgtest Parent:Send to the message queue successfully! The message sent is :This is the input! Child:Receiving from the message queue:This is the input!


總結

以上是生活随笔為你收集整理的Linux实验五:Linux环境下的C语言编程的全部內容,希望文章能夠幫你解決所遇到的問題。

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