问题描述
我目前正在用 C++ 编写一些代码,其中我有一个生成子进程的主进程(使用 I found here 的代码)。子进程将通过其标准输入控制。
到目前为止,我得到了一个工作示例,其中子进程是一个 python 脚本,它只是从 stdin 读取然后退出。
这是python脚本
#!/usr/bin/env python3
import sys
print("start script")
s = sys.stdin.readline()
print('--> ' + repr(s))
print("done")
写入子进程的ostream后
stdout << "test input data" << std::endl;
python 脚本输出发送数据。按预期工作。
现在我的问题来了。
当我插入我想要控制的真实进程时,它不再工作。在查看 source of the process which i want to control process 时,我发现我的父进程将其数据写入 STDIN_FILENO
,但子进程从 fileno(stdin)
读取。我还发现 this post 指出区别仅在于界面,但我如何才能找到?
我当然以交互模式启动孩子,否则它不会接受来自标准输入的输入。
int res = execlp("/usr/bin/aplay","/usr/bin/aplay","--interactive","/home/westranger/music.wav","-v",(char*)NULL);
我可以提供完整的源代码,但在将其发布到此处之前,重构对我来说是相当费力的。请告诉我。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)