在C++中使用管道實現進程間通信可以通過以下步驟:
#include <iostream>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
int fd[2];
if (pipe(fd) < 0) {
std::cerr << "Error creating pipe" << std::endl;
return 1;
}
pid_t pid = fork();
if (pid < 0) {
std::cerr << "Error forking" << std::endl;
return 1;
} else if (pid == 0) {
// 子進程
close(fd[0]); // 關閉讀端
char message[] = "Hello, parent!";
write(fd[1], message, strlen(message) + 1);
close(fd[1]); // 關閉寫端
} else {
// 父進程
close(fd[1]); // 關閉寫端
char message[100];
read(fd[0], message, sizeof(message));
std::cout << "Received message from child: " << message << std::endl;
close(fd[0]); // 關閉讀端
}
在這個例子中,父進程創建了一個管道,并通過fork()
函數創建了一個子進程。子進程向管道中寫入了一條消息,父進程從管道中讀取了這條消息并輸出到控制臺。最后記得關閉管道的讀寫端來釋放資源。