您的位置:首页 > 娱乐 > 明星 > c++ linux通过实现独立进程之间的通信和传递字符串 demo

c++ linux通过实现独立进程之间的通信和传递字符串 demo

2024/12/23 15:15:48 来源:https://blog.csdn.net/Hunter_pcx/article/details/140644781  浏览:    关键词:c++ linux通过实现独立进程之间的通信和传递字符串 demo
#include <iostream>
#include <cstring>
#include <fcntl.h>
#include <sys/stat.h>
#include <unistd.h>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 函数删除命名管道。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com