使用istream从命名pipe道读取

使用istream从命名pipe道读取,第1张

概述使用istream从命名pipe道读取

是否有可能使用c ++(stl)使用stream从命名pipe道(mkfifo)读取 – 因此不会事先为读取 *** 作定义char *buffer[MAX_SIZE] ?

我想读取,直到缓冲区结束并把结果放入std::string 。

(当前方法: bytes = read(fd,buffer,sizeof(buffer));事先要求分配某种缓冲区。

防止windows在parsingdll依赖项时使用PATH envvariables?

对于C ++应用程序,什么可能导致HP-UX和liNUX的返回值有所不同?

如何指定configure脚本的include目录

使用Allegro-5从linux进行交叉编译到windows

启用和禁用USB端口

linux上的Netbeans连接到C中的MysqL数据库

将文件保存到networking

在linux中find会话负责人或进程组的控制TTY的方法是什么?

需要math库的序列/范围的 *** 作

有没有免费的windowsdeBUGging器允许向后步进与C + +

用mkfifo创建的命名管道就像普通文件一样。 因此可以使用std::ifstream和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'; }

跑:

mkfifo foobar ./main foobar

和其他地方:

echo 'Hello World!' > foobar

…这将导致./main打印“Hello world!”到标准输出。

有没有什么神奇的管道到你的程序它只是把你的cin阅读从流而不是从控制台的用户输入: linux终端管道到我的C + +程序

简单地看一下这个问题的编辑历史,就会发现这个问题已经从它的原始版本中得到了很大的改进,这要归功于康拉德·鲁道夫 ( Konrad Rudolph) (在这个问题上的另一个回答者)。在一个进一步的卑鄙行为中,我将去掉他的两个解决方案潺潺流水string :

istreambuf_iterator方法:

const string mkfifo{ istreambuf_iterator<char>(cin),istreambuf_iterator<char>() };

stringbuf复制方法:

istringstream temp; temp << cin.rdbuf(); const auto mkfifo = temp.str();

你可以阅读各自职位的优缺点。 要使用这个代码,说你编译的程序被命名为main你可以像这样管道化它:

mkfifo named_pipe echo "lorem ipsum" > named_pipe ./main named_pipe

总结

以上是内存溢出为你收集整理的使用istream从命名pipe道读取全部内容,希望文章能够帮你解决使用istream从命名pipe道读取所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1259881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存