Как передать аргументы сценарию bash из программы cpp

Oct 30 2020

Я разветвил дочерний процесс, который затем вызывает сценарий bash, используя execvспособ, которым я передаю аргументы командной строки сценарию, он не печатает первый аргумент при выполнении 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любым целым числом.

Как правильно это сделать?

Я уже ссылался на эту ссылку. Как передать аргументы командной строки из программы C в сценарий bash? но в этом ответе используется systemсистемный вызов, и я стараюсь не использовать его.

Ответы

2 Botje Oct 30 2020 at 04:29

Первым аргументом, передаваемым программе, является ее имя, поэтому в настоящее время ваш номер попадает в $0. argsдолжно быть:

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