如何生成无参数Linux可执行文件以替代带参数的run_program?
解决方案
方法一:Bash脚本包装(最简单实现)
创建一个名为run_program_wrapper的文件,写入以下内容:
#!/bin/bash ./run_program -i 7
执行命令赋予该文件可执行权限:
chmod +x run_program_wrapper
之后直接将这个脚本作为参数传给测试工具:
./run_test -s ./run_program_wrapper
测试工具执行该脚本时,会自动触发run_program -i 7的调用。
方法二:编译C++包装程序(生成原生二进制)
如果需要生成和run_program同类型的二进制可执行文件,而非脚本,可以编写极简的C++代码:
#include <cstdlib> int main() { char* cmd_args[] = {(char*)"./run_program", (char*)"-i", (char*)"7", nullptr}; // 替换当前进程为目标程序,执行成功后不会返回 execvp(cmd_args[0], cmd_args); // 仅当execvp执行失败时才会执行到这里 return 1; }
将代码保存为wrapper.cpp,用g++编译:
g++ wrapper.cpp -o run_program_wrapper
得到的run_program_wrapper是独立二进制文件,直接传给测试工具即可:
./run_test -s ./run_program_wrapper
说明:原写法无效的原因
你尝试的./run_test -s { run_program -i 7 }写法错误在于,bash中的{}是命令组语法,它会直接执行内部命令,但不会生成一个可执行文件路径传递给run_test。而run_test要求接收的是可执行文件的路径,而非一段待执行的命令逻辑。
内容的提问来源于stack exchange,提问作者speeecht
相关产品推荐
相关产品推荐

