【问题标题】:How to pass arguments to bash script from a cpp program如何从 cpp 程序将参数传递给 bash 脚本
【发布时间】:2021-02-12 09:20:08
【问题描述】:

我已经派生了一个子进程,然后使用execv 调用 bash 脚本,就像我将命令行参数传递给脚本一样,它不会在脚本内执行echo $1 时打印第一个参数。

std::string s = std::to_string(c_no);    
char *args[] = {(char *)s.c_str(), NULL};

pid_t pid = fork();
if(pid == 0){
    execv("./ckpnt.sh", &args[0]);
}

c_no 视为任何整数。

这样做的正确方法是什么?

我已经引用了这个链接How to pass command line arguments from C program to the bash script?,但是这个答案使用了system系统调用,我尽量不使用它。

【问题讨论】:

    标签: c++ bash fork exec command-line-arguments


    【解决方案1】:

    传递给程序的第一个参数是它的名称,因此目前您的号码以$0 结尾。 args 应该是:

    char *args[] = {"./ckpnt.sh", (char *)s.c_str(), NULL};
    

    【讨论】:

    • 仍然没有打印任何东西。
    • 在本地工作。你能在strace -Ff下运行程序,看看它是否正确传递参数?
    • 我刚刚检查了 echo "$0" 正在打印 ./ckpnt.shecho "$1" 没有打印任何内容
    • 确保您正确地重新编译,并再次检查strace -Ff 以查看正在传递的内容。
    • 我在exec 行中传递参数的方式是否正确?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2012-01-23
    • 2013-06-18
    • 2019-12-20
    • 2021-11-18
    • 2012-12-29
    相关资源
    最近更新 更多