Jak przekazać argumenty do skryptu bash z programu cpp
Oct 30 2020
Rozwidliłem proces potomny, który następnie wywołuje skrypt bash, używając sposobu execv, w jaki przekazuję argumenty wiersza poleceń do skryptu. Nie wypisuje pierwszego argumentu podczas wykonywania echo $1wewnątrz skryptu.
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]);
}
rozważ c_nodowolną liczbę całkowitą.
Jaki jest właściwy sposób, aby to zrobić?
Odwołałem się już do tego linku. Jak przekazać argumenty wiersza poleceń z programu w C do skryptu bash? ale ta odpowiedź używa systemwywołania systemowego i staram się tego nie używać.
Odpowiedzi
2 Botje Oct 30 2020 at 04:29
Pierwszym argumentem przekazywanym do programu jest jego nazwa, więc aktualnie numer kończy się na $0. argsPowinien być:
char *args[] = {"./ckpnt.sh", (char *)s.c_str(), NULL};