【发布时间】:2016-03-19 11:25:00
【问题描述】:
我有一个 C++ 算法,它接受一些用户输入,大致类似于
./sum.out
Enter a: 2
Enter b: 3
Sum is 5
在 UNIX 外壳上。我想要做的是通过使用另一个发送几个system("./sum.out") 命令但我不知道如何使它也发送参数的c++ 文件来自动化这个过程,即a 和b 在我的例子中。换句话说,我希望第二个文件为其提供参数而不是用户。
【问题讨论】:
-
请选择 C 或 C++ 作为标签。不是都。最合适的答案可能会有所不同,具体取决于您选择的答案。是否必须通过
system完成? -
不,它没有,这只是我知道的唯一方法
-
使用
pipe、fork、exec和dup有一些更优雅但也稍微复杂一些的方法。如果你想要一些简单的东西可以做system("echo 2 3 | ./sum.out");。注意system里面的字符串是可以动态生成的。通过使用类似snprintf的东西将格式化的字符串存储到缓冲区中,然后将该缓冲区传递给system。或者更好(恕我直言)是完全放弃 C/C++ 测试程序方法并编写一个 shell 脚本来测试您的程序。 -
snprintf成功了,谢谢!