使用有名管道完成程序通信
程序A
首先編寫程序A的代碼,用到的頭檔案也比較多,
頭檔案如下:
<stdio.h>
<string.h>
<unistd.h>
<sys/stat.h>
<sys/types.h>
<fcntl.h>
一般管道按照程式設計模型:建立管道、打開管道、讀寫資料、關閉管道和删除管道,首先程序A将按照模型分為這五個步驟,資料部分采用
讀取管道檔案資料。
首先利用mkfifo函數建立管道,注意需要使用有效路徑;然後按照路徑打開管道,由于本程式使用讀取檔案,是以檔案權限使用O_RDONLY為隻讀權限,然後設立一個死循環不斷讀取管道檔案的資料,當接收到另一個程序B寫入到管道檔案中"quit"字元串時,則通信結束,然後關閉管道最後删除管道檔案,注意程序B也需要關閉管道,然後删除管道才能成功!以下為程序A程式源代碼:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSP9EkT0kkeNlXSU1EMjRVZxR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0UTM3MjN0gTMxMzNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
程序B
程序B的頭檔案與上面代碼相同,按照程式設計模型但隻需要打開管道然後寫入管道檔案然後關閉檔案,注意一定要關閉檔案!否則程序A中管道删除則會失敗!
以下為程式執行的結果,程序B輸入資料,程序A讀取資料,實作程序間單項通信,程序B輸入quit結束所有程序。