linux C語(yǔ)言開(kāi)發(fā)管道通信
Linux系統(tǒng)本身為進(jìn)程間通信提供了很多的方式,比如說(shuō)管道、共享內(nèi)存、socket通信等。管道的使用十分簡(jiǎn)單,在創(chuàng)建了匿名管道之后,我們只需要從一個(gè)管道發(fā)送數(shù)據(jù),再?gòu)牧硗庖粋€(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;
}
下面我們就可以開(kāi)始編譯運(yùn)行了,老規(guī)矩分成兩步驟進(jìn)行:(1)輸入gcc pipe.c -o pipe;(2)然后輸入./pipe,過(guò)一會(huì)兒你就可以看到下面的打印了。
[test@localhost pipe]$ ./pipe
Send data to client, hello!
Receive data from server, hello!
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
您可能感興趣的文章:- linux下c語(yǔ)言的多線程編程
- Linux 下C語(yǔ)言獲取文件大小
- Linux下C語(yǔ)言的幾道經(jīng)典面試題小結(jié)(分享)
- Linux 中C語(yǔ)言getcwd()函數(shù)的用法
- Linux 下C語(yǔ)言連接mysql實(shí)例詳解
- linux下C語(yǔ)言實(shí)現(xiàn)寫日志功能