【问题标题】:UNIX redirect tty to c++ stdin in different terminalUNIX 将 tty 重定向到不同终端中的 c++ 标准输入
【发布时间】:2012-08-08 22:21:41
【问题描述】:

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

我尝试了以下变体,但没有运气。在我运行 ./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;
}

【问题讨论】:

    标签: terminal pipe stdin tty io-redirection


    【解决方案1】:

    我不确定你是否可以那样做。但是,您可以使用命名管道。在 1 号航站楼:

    mkfifo mypipe
    
    myprogram < mypipe
    

    然后在 2 号航站楼:

    echo > mypipe
    

    然后键入。但是您的代码看起来只会执行一次然后终止,因此您可能需要添加一个循环。

    【讨论】:

    • 感谢您的回复 - 当我执行 './test mypipe',我的程序不会做任何事情,或终止。有什么想法吗??
    • 谢谢,这至少在 Linux ( Ubuntu ) 中有效……只是我的 Mac 不行。
    • 这很奇怪,因为我在运行 Mountain Lion 的 Mac 上对其进行了测试。
    猜你喜欢
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 2012-01-11
    • 2016-04-26
    相关资源
    最近更新 更多