是否可以使用 C++ (stl) 从命名管道 (mkfifo) 读取
使用流 - 因此没有提前定义char *buffer[MAX_SIZE]
用于读操作?
我想读取直到缓冲区结束并将结果放入std::string
.
(当前方法:bytes = read(fd, buffer, sizeof(buffer));
需要提前分配某种缓冲区。)
创建的命名管道mkfifo
行为就像普通文件一样。因此可以使用以下方式访问它们std::ifstream
and std::ofstream
:
#include <fstream>
#include <iostream>
int main(int, char** argv) {
std::ifstream file{argv[1]};
std::string line;
std::getline(file, line);
std::cout << line << '\n';
}
Run:
mkfifo foobar
./main foobar
以及其他地方:
echo 'Hello world!' > foobar
……这会导致./main
打印“Hello world!”到标准输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)