UNIX将tty重定向到不同终端中的c ++ stdin

时间:2012-08-08 22:21:42

标签: terminal pipe stdin tty io-redirection

我有一个简单的命令行c ++程序,如下所示,从命令行获取stdin。我在Mac上打开了2个SSH终端。一个是/ dev / ttys001,一个是/ dev / ttys000。我想在一个终端中回显一个值,并使用我的程序在第二个终端的stdin中使用它。我似乎无法做到这一点。什么是正确的语法?谢谢 -

我尝试过以下各种变化,但没有运气。在我正在运行./test的终端中,它提示输入数字,来自另一个终端的回声肯定会出现在控制台上,但程序没有将其视为标准输入?

1号航站楼:

./test < /dev/ttys001

2号航站楼:

echo 2 > /dev/ttys001

我的节目:

#include <iostream>

using namespace std;

int main() {
    cout << "Enter a number: ";
    int nb;
    cin>>nb;
    cout << "Here is your number:" << nb << endl;
    return 0;
}

1 个答案:

答案 0 :(得分:2)

我不确定你能这样做。但是,您可以使用命名管道。在终端1:

mkfifo mypipe

myprogram < mypipe

然后在终端2:

echo > mypipe

然后输入。但是你的代码看起来只会执行一次然后终止,所以你可能想要添加一个循环。