在C++中,将两个字符串写入管道并添加一个小的延迟可以通过以下步骤实现:
#include <iostream>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int pipefd[2];
if (pipe(pipefd) == -1) {
perror("pipe");
exit(EXIT_FAILURE);
}
pid_t pid = fork();
if (pid == -1) {
perror("fork");
exit(EXIT_FAILURE);
}
if (pid == 0) {
close(pipefd[0]); // 关闭读取端
std::string str1 = "Hello";
std::string str2 = "World";
write(pipefd[1], str1.c_str(), str1.length());
usleep(1000); // 添加延迟
write(pipefd[1], str2.c_str(), str2.length());
close(pipefd[1]); // 关闭写入端
exit(EXIT_SUCCESS);
}
if (pid > 0) {
close(pipefd[1]); // 关闭写入端
char buffer[100];
std::string result;
ssize_t bytesRead;
while ((bytesRead = read(pipefd[0], buffer, sizeof(buffer))) > 0) {
result += std::string(buffer, bytesRead);
}
close(pipefd[0]); // 关闭读取端
std::cout << "Received: " << result << std::endl;
wait(NULL); // 等待子进程结束
}
这样,两个字符串将被写入管道,并且在写入第二个字符串之前添加了一个小的延迟。父进程将从管道中读取字符串并打印出来。
请注意,这只是一个简单的示例,用于演示在C++中将字符串写入管道并添加延迟。在实际应用中,可能需要更复杂的逻辑和错误处理。
领取专属 10元无门槛券
手把手带您无忧上云