如何将参数从 cpp 程序传递给 bash 脚本

How to pass arguments to bash script from a cpp program

我分叉了一个子进程,然后使用 execv 调用 bash 脚本,我将命令行参数传递给脚本的方式,它不会在执行时打印第一个参数echo 在脚本中。

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 视为任意整数。

正确的做法是什么?

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

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

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