Come passare argomenti allo script bash da un programma cpp
Oct 30 2020
Ho biforcato un processo figlio che quindi chiama uno script bash usando execv, il modo in cui sto passando gli argomenti della riga di comando allo script, non stampa il primo argomento facendo echo $1all'interno dello script.
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]);
}
considerare c_noqualsiasi numero intero.
Qual è il modo corretto per farlo?
Ho già aggiornato questo collegamento Come passare gli argomenti della riga di comando dal programma C allo script bash? ma questa risposta utilizza la systemchiamata di sistema e cerco di non usarla.
Risposte
2 Botje Oct 30 2020 at 04:29
Il primo argomento passato a un programma è il suo nome, quindi attualmente il tuo numero finisce in $0. argsdovrebbe essere:
char *args[] = {"./ckpnt.sh", (char *)s.c_str(), NULL};