Linux系統(tǒng)本身為進(jìn)程間通信提供了很多的方式,比如說管道、共享內(nèi)存、socket通信等。管道的使用十分簡單,在創(chuàng)建了匿名管道之后,我們只需要從一個(gè)管道發(fā)送數(shù)據(jù),再從另外一個(gè)管道接受數(shù)據(jù)即可。
#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;
}
下面我們就可以開始編譯運(yùn)行了,老規(guī)矩分成兩步驟進(jìn)行:(1)輸入gcc pipe.c -o pipe;(2)然后輸入./pipe,過一會兒你就可以看到下面的打印了。