You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Unix管道重连到子进程,实现自动输入后移交用户控制?

问题:自动给程序a输入后让子进程b接管用户控制权

我运行一个需要固定输入的程序a,当所有输入提交完成后,它会通过execve启动新进程b;b同样可接收输入且会无限运行。我希望实现自动向a发送输入,待b启动后将控制权交还给用户。但尝试直接使用管道时,b会立即退出。

最小可复现C代码

#include <unistd.h>
#include <stdio.h>
 
int main(int argc, char*argv[ ])
{
   int myInt; 
   printf("input integer: ");
   scanf("%d", &myInt);
   printf("int: %d \n", myInt);

   char *shell[2];
   shell[0] = "/bin/sh"; // 以shell作为进程b的示例
   shell[1] = NULL;
   execve(shell[0], shell, NULL);

   return 0;
}

尝试的方案

echo "3" | ./a.out

echo "3\nls" > ./a.out # 换行符也无法传递给子进程

编辑补充:解决方法

后来发现只需短暂等待即可解决问题:

(echo "42"; sleep 1; echo "ls") | ./a.out 

内容的提问来源于stack exchange,提问作者Rick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:02:31