管道命令使标准输入损坏

Ben-xue

我有两个进程:t1.cppt2.cpp

t1.cpp并且t2.cpp简化了,我想轻松地描述问题。

//t1.cpp
#include <iostream>
using namespace std;
int main()
{
    cout << "hello\n"
         << "world\n"
         << "ok ok\n";
    return 0;
}

//t2.cpp
#include <iostream>
#include <limits>
using namespace std;
int main()                                                                                                                                                                                                    
{
    string str;
    while(getline(cin,str)){
        cout << str <<endl;
    }

    //cin.clear();
    //flush the cin
    //cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');

    char x;
    cin >> x;
    return 0;
} 

编译后t1.cppt2.cpp我以这种方式执行它们./t1 | ./t2

出现问题!cin >> x;t2.cpp失败!我没有机会从键盘打字。

似乎管道命令由redirecting the STDIN_FILENO. 是否同时禁止标准输入?

我的苛刻要求是从t1with shell 命令的输出中获取数据|,另外,我想与用户交互t2。例如,我会显示Sure to del?[y/n],and wait users's anwser.

Ben-xue

最后,我们使用“/dev/tty”处理这个问题

FILE *file = fopen("/dev/tty","r");
if(NULL == file){
    /*error*/
}
int ch = fgetc(file);
if('y' == ch || 'Y' == ch){
    /*balabala*/
}

stdinstdout被重定向时,我们也可以从/dev/tty.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么更多命令无法从管道标准输入读取标准输入?

来自分类Dev

如何使Windows START命令通过管道接受标准输入并将其传递给它调用的命令?

来自分类Dev

管道如何影响标准输入?

来自分类Dev

使用管道标准输入作为下一个命令的参数

来自分类Dev

如何在使用-字符的命令中使用管道和标准输入

来自分类Dev

通过管道从标准输入运行输入

来自分类Dev

将一个命令的输出管道传输到另一命令的非标准输入

来自分类Dev

从标准输入读取粘贴命令

来自分类Dev

重击 来自后台管道命令的标准输出

来自分类Dev

从命名管道获取标准输入

来自分类Dev

C - 标准输入、unix 管道和 EOF

来自分类Dev

管道后保持管道打开(连接到终端的标准输入)

来自分类Dev

避免由于缺少命令而导致多个管道损坏

来自分类Dev

链式命令的标准输入和命令替换中的命令

来自分类Dev

带参数的命令执行与标准输入无关?

来自分类Dev

如何区分管道和交互式标准输入

来自分类Dev

读取Bash管道中的块中的标准输入

来自分类Dev

C ++:将数据写入管道时从标准输入读取

来自分类Dev

管道和标准输入重定向到猫

来自分类Dev

在脚本中,检查标准输入是否来自文件或管道

来自分类Dev

C ++:将数据写入管道时从标准输入读取

来自分类Dev

在管道上使用时,select() 在标准输入上的行为

来自分类Dev

管道命令输出到运行/后台命令的输入

来自分类Dev

使用 subprocess.Popen 设置管道:为什么关闭标准输出而不是标准输入?

来自分类Dev

尾部日志上有多个管道-最后一个管道从不接收标准输入

来自分类Dev

在sh中将两个命令的标准输出从命令传递到标准输入

来自分类Dev

将一个命令的标准错误重定向到另一命令的标准输入

来自分类Dev

如何通过标准输入将输入通过管道传输到gsutil cp?

来自分类Dev

仅允许来自标准输入的数字(读取命令)

Related 相关文章

  1. 1

    为什么更多命令无法从管道标准输入读取标准输入?

  2. 2

    如何使Windows START命令通过管道接受标准输入并将其传递给它调用的命令?

  3. 3

    管道如何影响标准输入?

  4. 4

    使用管道标准输入作为下一个命令的参数

  5. 5

    如何在使用-字符的命令中使用管道和标准输入

  6. 6

    通过管道从标准输入运行输入

  7. 7

    将一个命令的输出管道传输到另一命令的非标准输入

  8. 8

    从标准输入读取粘贴命令

  9. 9

    重击 来自后台管道命令的标准输出

  10. 10

    从命名管道获取标准输入

  11. 11

    C - 标准输入、unix 管道和 EOF

  12. 12

    管道后保持管道打开(连接到终端的标准输入)

  13. 13

    避免由于缺少命令而导致多个管道损坏

  14. 14

    链式命令的标准输入和命令替换中的命令

  15. 15

    带参数的命令执行与标准输入无关?

  16. 16

    如何区分管道和交互式标准输入

  17. 17

    读取Bash管道中的块中的标准输入

  18. 18

    C ++:将数据写入管道时从标准输入读取

  19. 19

    管道和标准输入重定向到猫

  20. 20

    在脚本中,检查标准输入是否来自文件或管道

  21. 21

    C ++:将数据写入管道时从标准输入读取

  22. 22

    在管道上使用时,select() 在标准输入上的行为

  23. 23

    管道命令输出到运行/后台命令的输入

  24. 24

    使用 subprocess.Popen 设置管道:为什么关闭标准输出而不是标准输入?

  25. 25

    尾部日志上有多个管道-最后一个管道从不接收标准输入

  26. 26

    在sh中将两个命令的标准输出从命令传递到标准输入

  27. 27

    将一个命令的标准错误重定向到另一命令的标准输入

  28. 28

    如何通过标准输入将输入通过管道传输到gsutil cp?

  29. 29

    仅允许来自标准输入的数字(读取命令)

热门标签

归档