2012-08-08 83 views
1

我有一个简单的命令行C++程序,如下所示,它从命令行获取stdin。我在我的Mac上打开了2个SSH终端。一个是/ dev/ttys001,另一个是/ dev/ttys000。我想在一个终端中回显一个值,并使用我的程序在第二个终端的stdin中使用它。我似乎无法做到这一点。什么是正确的语法?谢谢 -UNIX在不同的终端将tty重定向到C++ 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; 
} 

回答

2

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

mkfifo mypipe 

myprogram < mypipe 

然后在终端2:

echo > mypipe 

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

+0

感谢您的回应 - 当我做'./test mypipe'我的程序不做任何事情,或终止。有什么想法吗?? – PhilBot 2012-08-08 23:33:57

+0

谢谢,这在Linux(Ubuntu)至少工作...只是不是我的Mac。 – PhilBot 2012-08-09 01:56:25

+0

这很奇怪,因为我在运行Mountain Lion的Mac上测试它。 – 2012-08-09 12:11:20