为bash中调用的程序提供参数的一种方法
A way to provide arguments for programs called in bash
我正在尝试使用系统从c++运行.exe。这个参数是一个文本文件,是在调用.exe后请求的。我需要一种方法来提供这个参数。
为了在bash中澄清,我可以这样做:
cd /programlocation
wine program.exe
然后输出
Enter input file name :
如果我现在键入
inputfile.txt
它是有效的,但我想不出一种方法来结合最后一步,这样我就可以使用c++中的系统来运行它。
即。这不起作用:
std::string location = "cd /location/"
std::string program = "wine program.exe"
std::string input = "inputfile.txt";
std::string command = location+"&&"+program+"&&"+input;
const char *cmd = command.c_str();
system(cmd);
这只是要求在控制台中输入文件。
如果你能访问它,我试图运行的程序是a8711v30 esdu飞机发动机噪音预测文件。
"inputfile.txt"
进入wine program.exe
的标准输入;这不是Bash能理解的命令。
要通过管道连接到外部程序,您可以手动使用管道分叉,或者使用更接近您当前系统使用情况的popen。
FILE *cmd_stdin = popen(command.c_str(), "w");
fprintf(cmd_stdin, input);
fclose(cmd_stdin);
如果program.exe是从stdin而不是从终端读取的,那么您可能可以用字符串调用系统
cd/programlocation&&echo inputfile.txt | wine program.exe
是的:在大多数情况下,使用系统(3)会很好地工作。(如果我处于"完成"模式,我可能也会这么做。)
系统(3)库函数会将字符串参数传递给/bin/sh,以便在大多数操作系统上进行解释。在Linux和Unix上,它会工作。。。查看您的个人主页。从历史上看,人们对system()敬而远之,理由是不能总是对可用的命令处理器做出假设。这些天可能没那么担心。
ephemient绘制的策略将更具可移植性,因此如果您要在无法确定/bin/sh会得到什么的地方运行代码,则可能更可取。在这种方法中,您的代码可以非常方便地处理/bin/sh包的分叉和管道工作。
相关文章:
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 有没有一种方法可以在编译时获得作用域类名
- 对于C++中使用智能指针的指针算术限制,有没有一种变通方法
- 一种在C++中读取TXT配置文件的简单方法
- 有没有一种方法可以测量c++程序的运行时内存使用情况
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- 在调用接收数组的方法时,模板化数组大小是不是一种糟糕的做法
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 有没有一种"cleaner"的方法可以在指向基的指针向量中找到派生类的第一个实例?
- 有没有一种代码密度较低的方法来使用非默认构造函数初始化数组?
- 在 c++ 中,有一种方法可以创建一个包含地图作为值的树状地图?
- 有没有一种优雅而快速的方法来测试整数中的 1 位是否位于连续区域
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 找到一种有效的方法,在 2 个巨大的缓冲区上执行 MAX,每字节字节
- 寻找一种更好的方法来表示无符号字符数组
- 有没有一种通用的方法来实现不变量
- 有没有一种方法可以捕获进程中的堆栈溢出?C++Linux
- 使用类在C++中存储和列出变量/方法是否是一种好的做法
- 一种从内存中删除 UTF 字节的方法?