C怎么控制需要交互的二进制程序

u俺的彦辰 2020-05-28 03:56:42
我有二进制文件,该文件需要3步输入交互(比如键盘输入选项)才能生成我需要的数据,

现在我的代码中需要用到这些数据,但是又没有以上二进制程序的源码,有没有什么办法在代码中实现3步交互、控制二进制程序,从而得到我需要的数据?
谢谢!
...全文
93 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
u俺的彦辰 2020-05-29
引用 9 楼 qybao 的回复:
那就echo回车符试试
echo -e “信息1\n信息2\n信息3” | 二进制文件
谢谢大佬的指点,好用!
回复
qybao 2020-05-28
那就echo回车符试试 echo -e “信息1\n信息2\n信息3” | 二进制文件
回复
u俺的彦辰 2020-05-28
引用 7 楼 21211321 的回复:
[quote=引用 5 楼 smwhotjay 的回复:]
createprocess 启动程序。io定向到管道。读取管道和写入管道。
简单的输入可以echo 命令行。
谢谢!不过我不是很明白,这样的话是不是要用父子进程实现?[/quote]我的交互很简单,3次交互,每次都只需要输入1个数字就行了
回复
u俺的彦辰 2020-05-28
引用 5 楼 smwhotjay 的回复:
createprocess 启动程序。io定向到管道。读取管道和写入管道。
简单的输入可以echo 命令行。
谢谢!不过我不是很明白,这样的话是不是要用父子进程实现?
回复
u俺的彦辰 2020-05-28
引用 4 楼 qybao 的回复:
[quote=引用 3 楼 qybao 的回复:]
用LS说的管道试试
或者用户交互部分可否用输入重定向?

如果只想用system调用,可以试试看
echo 用户交互信息 | 你的二进制文件 //以管道的方式
或者
你的二进制文件<<用户交互信息。//以输入重定向的方式
[/quote]你好,我如果用system()调用,相当于一调用进程就立即阻塞在二进制程序中的getchar()那里了,那怎么才能继续使用echo或者重定向呢?
回复
smwhotjay 2020-05-28
createprocess 启动程序。io定向到管道。读取管道和写入管道。
简单的输入可以echo 命令行。
回复
qybao 2020-05-28
引用 3 楼 qybao 的回复:
用LS说的管道试试
或者用户交互部分可否用输入重定向?

如果只想用system调用,可以试试看
echo 用户交互信息 | 你的二进制文件 //以管道的方式
或者
你的二进制文件<<用户交互信息。//以输入重定向的方式
回复
qybao 2020-05-28
用LS说的管道试试
或者用户交互部分可否用输入重定向?
回复
u俺的彦辰 2020-05-28
引用 1 楼 真相重于对错 的回复:
考虑一下用匿名管道

这个用管道行吗,没有 二进制可执行程序 的代码,我的思路是先通过system()往标准输入stdin中把需要交互的字符先写进去,然后希望二进制程序运行时能读出来
回复
考虑一下用匿名管道
回复
发帖
其它技术问题
创建于2007-09-28

3842

社区成员

C/C++ 其它技术问题
申请成为版主
帖子事件
创建了帖子
2020-05-28 03:56
社区公告
暂无公告