利用C++编写一个简单的多进程程序,输出 学号:2215301036 姓名:杨志
时间: 2024-10-08 13:15:04 浏览: 24
在C++中,我们可以使用`std::fork()`函数创建一个新进程,然后通过管道(`pipe()`)或其他通信机制让父子进程交换数据。下面是一个简单的示例,展示如何在一个进程中创建子进程并传递信息:
```cpp
#include <iostream>
#include <unistd.h>
#include <cstring>
// 父进程函数
void parent(int fd[2]) {
char message[] = "学号:2215301036\0姓名:杨志";
char received[100];
// 写入消息到管道的一端
write(fd[1], message, sizeof(message) - 1);
// 关闭写端
close(fd[1]);
// 读取子进程的消息
read(fd[0], received, sizeof(received));
std::cout << "Parent received: " << received << std::endl;
}
// 子进程函数
void child(int fd[2]) {
char buffer[100];
// 关闭读端
close(fd[0]);
// 从管道的另一端读取信息
read(fd[1], buffer, sizeof(buffer));
// 输出接收到的信息
std::cout << "Child process running with PID " << getpid() << ": " << buffer << std::endl;
// 接收完信息后关闭写端
close(fd[1]);
}
int main() {
int pipe_fds[2]; // 创建管道文件描述符
if (pipe(pipe_fds) == -1) {
perror("Failed to create pipe");
return 1;
}
pid_t child_pid = fork(); // 创建子进程
if (child_pid == 0) { // 子进程
child(pipe_fds);
exit(0);
} else if (child_pid > 0) { // 父进程
parent(pipe_fds);
} else { // fork失败
perror("Failed to fork");
exit(1);
}
return 0;
}
```
在这个例子中,父进程将字符串写入管道,而子进程读取这个字符串并打印出来。运行程序时,你会看到"Child process running with PID..."以及包含指定信息的输出。
阅读全文