【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】
Linux系統本身為處理序間通訊提供了很多的方式,比如說管道、共用記憶體、socket通訊等。管道的使用十分簡單,在建立了匿名管道之後,我們只需要從一個管道發送資料,再從另外一個管道接受資料即可。
#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>int pipe_default[2]; int main(){ pid_t pid; char buffer[32]; memset(buffer, 0, 32); if(pipe(pipe_default) < 0) { printf("Failed to create pipe!\n"); return 0; } if(0 == (pid = fork())) { close(pipe_default[1]); sleep(5); if(read(pipe_default[0], buffer, 32) > 0) { printf("Receive data from server, %s!\n", buffer); } close(pipe_default[0]); } else { close(pipe_default[0]); if(-1 != write(pipe_default[1], "hello", strlen("hello"))) { printf("Send data to client, hello!\n"); } close(pipe_default[1]); waitpid(pid, NULL, 0); } return 1;}
下面我們就可以開始編譯運行了,老規矩分成兩步驟進行:(1)輸入gcc pipe.c -o pipe;(2)然後輸入./pipe,過一會兒你就可以看到下面的列印了。
[test@localhost pipe]$ ./pipeSend data to client, hello!Receive data from server, hello!