要实现两个可执行文件之间的交互,可以使用管道(pipe)来连接它们的输入和输出。在 Linux 中,可以使用命令行工具 `mkfifo` 创建命名管道,并通过它们进行交互。以下是一个简单的步骤示例:
1. **创建命名管道:**
你需要两个命名管道,分别用于两个程序之间的输入输出。
mkfifo pipe_a_to_b
mkfifo pipe_b_to_a
2. **运行程序并连接管道:**
使用命名管道连接两个程序的 I/O。可以在多个终端中执行以下命令:
- 在第一个终端中运行程序 `a`,让其从 `pipe_b_to_a` 读取输入并将输出写入 `pipe_a_to_b`:
./a < pipe_b_to_a > pipe_a_to_b
- 在第二个终端中运行程序 `b`,让其从 `pipe_a_to_b` 读取输入并将输出写入 `pipe_b_to_a`:
./b < pipe_a_to_b > pipe_b_to_a
3. **确保进程缓存**:
如果程序的输出可能被缓存,可以考虑关闭行缓冲或者设置无缓冲,以确保及时交互:
- 对于 C/C++ 程序,使用 `setvbuf(stdout, NULL, _IONBF, 0);` 或者使用 `fflush(stdout);` 。
- 对于 Python 等其他语言,运行程序时可以添加参数(如 `python -u script.py`)来禁用缓冲。
这样,程序 `a` 和 `b` 将通过管道进行实时的输入输出交换,实现交互。这种方法依赖于程序的设计支持标准输入输出的流式交互。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。