c++ - 'cut' 输出重定向到 C++ 程序
问题描述
我正在尝试更改命令的输出,ping
以便cut
为我获取一些必要的信息,然后将其重定向到带有 bash 管道的 c++ 程序。
ping google.com | cut -d " " --fields 8 | ./a.out
C++ 程序做这样的事情:
int main(){
string str;
cin >> str;
cout << "str:" << str << endl;
}
我建议,这样的命令可能有效,但它没有,执行上述命令后没有任何输出。但它在不使用cut
. 如果我只使用
ping google.com | ./a.out
我的程序确实输出。所以我认为问题是我的 c++ 程序无法从cut
.
怎么可能修复它?
解决方案
是的。ping
实用程序是行缓冲的(它fflush(stdout)
在输出每一行之后执行)。
stdbuf
您可以使用GNU coreutils 中的命令将整个管道设置为使用行缓冲:
stdbuf -oL -eL bash -c 'ping google.com | cut -d " " --fields 8 | ./a.out'
推荐阅读
- rsync - 带 --relative 参数的 Rsync
- javascript - 如何在点击时在网店中切换产品颜色?
- oracle - APEX 20 oracle 中的数据操作
- python - 读取 .xml 标记的属性给出 NoType
- sharepoint - 将完成的 InfoPath 表单从 SharePoint 库转换为 SharePoint 列表
- c - 如何在 C 中打印出对齐的文本作为输出?
- python - 转换 Pandas DF 分组,然后创建字典列表
- python - 当我使用 pywin32 将 pdf 转换为 word 时,文件似乎已损坏
- jenkins - 如何将shell环境变量添加到jenkins中的全局环境变量?
- python - 从 URL 显示图像