我尝试将一个输入(例如echo "some_input" | write /dev/pts/0
或echo "some_input" > /dev/pts/0
)从终端/dev/pts/1
发送到另一个/dev/pts/0
在第二终端中,程序正在运行,例如:
#include <iostream>
#include <string>
int main()
{
while(std::cin){
std::string s;
std::cin >> s;
std::cout << s;
}
}
我在使用它时遇到一些困难。我可以将输入(使用echo)写入另一个终端,但输入未被验证,程序在std::cin
中卡住。我想写入一个输入并验证它,就像按Enter键一样
我怎么能这么做呢?
1条答案
按热度按时间xdnvmnnf1#
最接近我认为你要做的事情是使用TIOCSTI ioctl。一个小的C程序,如:
会将其stdin写入支持该功能的终端的输入缓冲区。根据您的系统安全设置,您可能需要成为root才能执行此操作。
然后,您应该能够将一个
echo
命令传输到该程序的stdin,它将把该命令“推”到终端的输入缓冲区中,然后,从终端阅读该命令的任何人都将从该缓冲区中读取该命令,就好像该命令来自终端一样。