c++ linux通过实现独立进程之间的通信和传递字符串 demo
创始人
2024-12-08 23:03:55
#include  #include  #include  #include  #include   const char* PIPE_NAME = "/tmp/my_pipe";  int main() {     // 创建命名管道     mkfifo(PIPE_NAME, 0666);      pid_t childPid = fork();      if (childPid == 0) {         // 子进程写入字符串到命名管道         int fd = open(PIPE_NAME, O_WRONLY);         const char* message = "Hello, parent!";         write(fd, message, strlen(message) + 1);         close(fd);         exit(0);     } else if (childPid > 0) {         // 父进程读取命名管道中的字符串         int fd = open(PIPE_NAME, O_RDONLY);         char buffer[100];         read(fd, buffer, sizeof(buffer));         std::cout << "Message received from child: " << buffer << std::endl;         close(fd);     } else {         std::cerr << "Fork failed." << std::endl;         return 1;     }      // 删除命名管道     unlink(PIPE_NAME);      return 0; }

要通过信号实现独立进程之间的通信和传递字符串,可以使用命名管道(Named Pipe)来实现。

在上面的示例中,我们首先使用 mkfifo 函数创建了一个命名管道。命名管道的路径在 PIPE_NAME 定义中指定为 "/tmp/my_pipe"。

然后,我们使用 fork 创建了一个子进程。

在子进程中,我们使用 open 函数打开命名管道,并以只写模式打开。然后,我们将字符串 "Hello, parent!" 写入管道中,并使用 close 函数关闭管道。最后,子进程调用 exit 退出。

在父进程中,我们使用 open 函数打开命名管道,并以只读模式打开。然后,我们使用 read 函数从管道中读取字符串,并将其存储在缓冲区 buffer 中。最后,我们打印出从子进程接收到的字符串,并使用 close 函数关闭管道。

最后,我们使用 unlink 函数删除命名管道。

相关内容

热门资讯

总投资630亿!京东方第8.6... 快科技5月14日消息,据报道,京东方计划于本月底在其成都的B16工厂开始量产第8.6代OLED面板。...
工业称重传感器选型指南:精度与... 工业称重传感器选型指南:精度与可靠性的平衡之道 工业称重传感器选型指南:精度与可靠性的平衡之道 一、...
医学院硕博研究生靠虚开发票冒签... 33岁的柴某系江苏人,案发前系某医院博士后研究人员。一审法院认定,2018年至2023年,柴某在某医...
AI服务器、先进封装及HBM技... 据财联社消息,近来,AI服务器、先进封装及HBM技术迭代带动硅片与电子特气用量激增,叠加中东能源危机...
科幻走进现实!首款载人变形机甲... 你会怎么称呼视频里的炫酷机甲?是科幻片里看的“钢铁巨兽”,还是现实版的“变形金刚”? 5月12日,中...