将字符插入到父进程的缓冲区中
我正在尝试编写一个在后台运行的程序,该程序可以“键入”到父进程中,例如发出shell命令,就像我自己在键盘上键入它们一样。我试着用ѭ0doing推回
STDIN
:
#include <stdio.h>
int main (int argc, char** argv) {
ungetc(\'x\', stdin);
return 0;
}
我希望这样做:
$ gcc -o unget unget.c
$ ./unget&
本来会在$
提示符下以x
离开我,就像我刚刚键入它一样,但是我什么也没得到。我进入背景是否“丢”了1英镑?谢谢!
没有找到相关结果
已邀请:
4 个回复
祁澈盘哼颗
命令设置信号处理程序。例如:
用您想使用的任何信号代替ѭ9。然后运行一个子进程,该进程定期将信号发送到其父进程。
壬驴拿歪竞
操作stdio
缓冲区,而不是底层打开文件描述,因此无法与其他进程共享。 您可以尝试在ѭ12中运行交互式会话,并使用screen的
命令通过将注入数据的进程重定向文件描述符。或者,您也可以使用伪tty设备自己实现类似的事情。 此外,从您的评论来看,我认为您要尝试做的是一个非常糟糕的主意。如果您很不幸,并且输入出现在您以交互方式键入内容的中间,则可能会造成灾难性的后果。例如,对自动化命令进行成像是
现在假设您正在打字
am!
刚被删除。
铰齐插
仅将字符“推”回程序自己的缓冲区,因此当同一程序读取的下一个字符将传递给
。将某些内容传回父级需要完全不同的内容(例如,创建一些管道)。
械怒等
然后,当您启动程序时,管道应反转。因此,放入cout的所有内容都应从您的父母那里cin发行(在本例中为bash流程)。