Comment passer des arguments au script bash à partir d'un programme cpp

Oct 30 2020

J'ai forké un processus enfant qui appelle ensuite un script bash en utilisant execv, la façon dont je passe des arguments de ligne de commande au script, Il n'imprime pas le premier argument lors de l'exécution echo $1à l'intérieur du 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]);
}

considérez c_noêtre n'importe quel entier.

Quelle est la bonne façon de procéder?

J'ai déjà référencé ce lien Comment passer des arguments de ligne de commande du programme C au script bash? mais cette réponse utilise l' systemappel système et j'essaie de ne pas l'utiliser.

Réponses

2 Botje Oct 30 2020 at 04:29

Le premier argument passé à un programme est son nom, donc actuellement votre numéro se termine $0. argsdevrait être:

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