Übergeben von Argumenten an das Bash-Skript aus einem CPP-Programm

Oct 30 2020

Ich habe einen untergeordneten Prozess gegabelt, der dann ein Bash-Skript aufruft, indem execvich Befehlszeilenargumente an das Skript übergebe. Es wird kein erstes Argument gedruckt, wenn es echo $1innerhalb des Skripts ausgeführt wird.

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]);
}

Betrachten Sie c_noals eine ganze Zahl.

Was ist der richtige Weg, um dies zu tun?

Ich habe diesen Link bereits aktualisiert. Wie übergebe ich Befehlszeilenargumente vom C-Programm an das Bash-Skript? Aber diese Antwort verwendet einen systemSystemaufruf und ich versuche, das nicht zu verwenden.

Antworten

2 Botje Oct 30 2020 at 04:29

Das erste Argument, das an ein Programm übergeben wird, ist sein Name, sodass Ihre Nummer derzeit in endet $0. argssollte sein:

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