当前位置: 技术问答>linux和unix
怎样模拟键盘给其他程序输入,用管道重定向怎么实现
来源: 互联网 发布时间:2016-07-12
本文导语: 现在我要模拟键盘给其他程序输入内容,想用管道重定向,谁知道在程序中怎么实现啊. 网上的很多资料都是输出重定向到文件的,谁知道怎么重定向到进程或者说程序啊.. | 看现在的情况,再看...
现在我要模拟键盘给其他程序输入内容,想用管道重定向,谁知道在程序中怎么实现啊.
网上的很多资料都是输出重定向到文件的,谁知道怎么重定向到进程或者说程序啊..
网上的很多资料都是输出重定向到文件的,谁知道怎么重定向到进程或者说程序啊..
|
看现在的情况,再看你开始提问的时候的情况,真是很难联系起来。
也就是说你只搞到了一个A的二进制可执行文件,还想调用人家的功能来实现你想要的功能,但苦于无法像A传递参数。是这样的情况么?
C语言一般用system()来执行一个命令,如果B里面调用了A的话,当执行到A时,A就在前台了,你的B程序就失去了控制。这是你的键盘输入就归A了。
你的意思就是不想用键盘贝,不想让人家看出来是A程序。这样的话貌似没可能啊。
你可以尝试一下下面两种方法。
1.查看A的帮助文档,看看他提不提供某些别的接口,可以达到你的目的。
2.B程序里开2个线程,一个是调用A,一个等待A。在等待这个线程里,用open()函数把标准输出作为文件打开,
然后往里面写入quit。估计不太可能。
也就是说你只搞到了一个A的二进制可执行文件,还想调用人家的功能来实现你想要的功能,但苦于无法像A传递参数。是这样的情况么?
C语言一般用system()来执行一个命令,如果B里面调用了A的话,当执行到A时,A就在前台了,你的B程序就失去了控制。这是你的键盘输入就归A了。
你的意思就是不想用键盘贝,不想让人家看出来是A程序。这样的话貌似没可能啊。
你可以尝试一下下面两种方法。
1.查看A的帮助文档,看看他提不提供某些别的接口,可以达到你的目的。
2.B程序里开2个线程,一个是调用A,一个等待A。在等待这个线程里,用open()函数把标准输出作为文件打开,
然后往里面写入quit。估计不太可能。
|
#include
#include
#include
#include
#include
#include
static int send_key (int fdevt, int code, int value)
{
struct input_event evt;
evt.type = EV_KEY;
evt.code = code;
evt.value = value;
if (write (fdevt, &evt, sizeof(evt))