【发布时间】:2011-08-05 13:51:52
【问题描述】:
我正在尝试编写一个在后台运行的程序,该程序可以“键入”到父进程中,例如发出 shell 命令,就好像我自己在键盘上键入它们一样。我曾尝试使用ungetc() 执行此操作以推回STDIN:
#include <stdio.h>
int main (int argc, char** argv) {
ungetc('x', stdin);
return 0;
}
我希望这样做:
$ gcc -o unget unget.c
$ ./unget&
我会在$ 提示符处留下x,就好像我刚刚输入它一样,但我什么也没得到。我是否因为进入后台而“迷失”了STDIN?谢谢!
【问题讨论】:
-
您是在尝试完成 IPC 还是这是一个概念教授。
-
这是为了“成为我”并在无人值守的情况下推动交互式会话。出于各种原因,我不能只在这种环境中使用 Expect。我还需要让终端空闲,以便我可以在必要时自己输入命令,因此是后台进程。
-
例如我可能希望它每 x 分钟代表我运行一个命令,同时我继续在前台做一些事情,但它必须好像它来自我的 shell,这样 PPID 才能正确运行
标签: c shell terminal automated-tests