程序管道通訊與訊號
在程序程式設計時一般會用到程序間的通訊方式,管道與訊號,管道分無名管道pipe與有名管道fifo,無名管道一般用於有親緣關係之間的程序通訊,如父子程序通訊,fifo較多用於不同應用程式之間的程序通訊通過建立管道檔案,具體的通訊機制,檢視相應的書籍即可。
此部分程式前部分為無名管道通訊,後部分為fifo的寫入資料部分
#include #include #include #include #include #include #include #include #include #define fifo_name "./my_fifo" //建立的管道路徑,以檔案的形式
/*無名管道的建立:用pipe
輸入輸出重定向:pclose,popen
管道聯絡裝置:dup,dup2,可以把乙個裝置的輸出管道送到另乙個裝置的輸入
具體使用方式檢視相應的手冊
有名管道fifo;
*/int main(int argc,char *argv)
if((pid=fork())==-1)//無名管道測試
else if(pid==0)
else
}else if(pid>0)//創立成功在父程序中接受子程序通過無名管道傳送來的資料,
printf("read data from pipe is:%s\n",dounastation);
//開始有名管道測試fifo資料的寫入
printf("fifo test\n");
if(access(fifo_name,f_ok)==-1)//管道檔案是否存在
}printf("process %d opening fifo o_wronly\n",getpid());
fifo_pipe_fd=open(fifo_name,o_wronly);//開啟管道裝置檔案
printf("the file descriptor is %d\n",fifo_pipe_fd);//管道檔案的檔案描述符是
if(fifo_pipe_fd!=-1)
printf("write data and number is %s,%d\n",string_test,res);
(void)close(fifo_pipe_fd);//寫入完畢關閉管道
} else
exit(exit_failure);
printf("process %d finish\n",getpid());
exit(exit_failure);
} return 0;
}
以下部分**為fifo的讀取資料部分**
#include #include #include #include #include #include #include #define fifo_name "./my_fifo" //讀取有名管道檔案路徑
int main(int argc ,char *argv)
else
exit(exit_failure);
printf("process %d dinished,%d fifo_read_num\n",getpid(),byte_read_num);
exit(exit_success);
}
Linux下程序間通訊 管道通訊
1.程序間通訊 ipc inter process communication 比較好理解概念的就是程序間通訊就是在不同程序之間傳播或交換資訊。2,linux下ipc機制的分類 管道 訊號 共享記憶體 訊息佇列 訊號量 套接字 我今天主要想講的是管道通訊 管道通訊特點 1 管道是最古老的ipc,但目...
《Linux程式設計》 程序間通訊 管道
一 管道 2 程序管道 1 popen函式 include file popen const char cpmmand,const char popen i popen函式允許乙個程式將另乙個程式作為新程序來啟動,並可以傳遞資料給它或者通過它接受資料。command字串是要執行的程式名和相應的函式。...
Linux下程序間通訊 管道
管道是unix系統ipc的最古老的形式,所有的unix系統都提供此種通訊機制。管道的實質是乙個核心緩衝區,程序以先進 先出 fifo,first in first out 的方式從緩衝區訪問資料 管道一端的程序順序地將程序資料寫入緩衝區,另一端的程序則順 序地讀取資料,該緩衝區可以看做乙個迴圈佇列,...