You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过echo向另一终端发送可被程序识别的回车确认输入?

如何向目标终端发送带回车确认的输入让C++程序读取?

问题场景

我在终端/dev/pts/1执行以下命令,试图向终端/dev/pts/0发送输入:

echo "some_input" | write /dev/pts/0
# 或者
echo "some_input" > /dev/pts/0

目标终端/dev/pts/0中运行着这段C++程序:

#include <iostream> 
#include <string>

int main()
{
    while(std::cin){
        std::string s;

        std::cin >> s;
        std::cout << s;
    }
}

当前问题:输入内容能显示在目标终端,但程序始终卡在std::cin处,未完成输入确认。需要实现发送输入后,效果如同按下回车键,让程序正常读取输入。

解决方案

  • 在输入内容末尾添加换行符:std::cin >> s以换行符作为输入结束的触发标志,你需要在发送的内容末尾加入换行符。可以用以下两种方式实现:

    1. 使用echo -e解析转义字符:
      echo -e "some_input\n" > /dev/pts/0
      
    2. 使用printf(默认支持转义序列):
      printf "some_input\n" > /dev/pts/0
      
  • 避免使用write命令:write会在发送内容前后附加终端标识等额外信息,可能干扰程序对输入的解析,直接重定向到/dev/pts/0是更可靠的方式。

  • 优化程序的输入读取逻辑(可选):如果需要读取包含空格的整行输入,可以将程序中的std::cin >> s替换为std::getline(std::cin, s),配合末尾的换行符,能更稳定地触发输入读取。

内容的提问来源于stack exchange,提问作者XRO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 21:15:36