Как передать аргументы сценарию 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};