//pipe:更底层,文件描述符不同于文件流,更底层
//用数组中的两个文件描述符创建一个管道
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
int data_processed;
int file_pipes[2]; //定义两个数组存放文件描述符
const char some_data[] = "123";
char buffer[BUFSIZ + 1];
memset(buffer, '\0', sizeof(buffer));
if (pipe(file_pipes) == 0) //用文件描述符来填充数组
{
//用更底层的函数write将文件描述符作为参数写入文件
//向管道中写数据
data_processed = write(file_pipes[1], some_data, strlen(some_data));
printf("Wrote %d bytes\n", data_processed);
//从管道中读数据
data_processed = read(file_pipes[0], buffer, BUFSIZ);
printf("Read %d bytes: %s\n", data_processed, buffer);
exit(EXIT_SUCCESS);
}
}
优势:在两个进程之间传递数据的时候,
比如:用fork创建新进程时,原先打开的文件描述符仍将保持打开状态,如果在之前的进程中创建一个管道,再调用fork,即可在进程间传递数据。
本文深入探讨了管道(pipe)这一进程间通信(IPC)机制,通过示例代码展示了如何使用文件描述符进行数据的写入与读取。文章强调了管道在创建子进程时的作用,特别是在fork操作后,如何利用管道在父进程与子进程间实现数据交换。
865

被折叠的 条评论
为什么被折叠?



