Cómo pasar argumentos al script bash desde un programa cpp

Oct 30 2020

He bifurcado un proceso secundario que luego llama a un script bash usando execv, de la misma manera que paso argumentos de línea de comando al script, no imprime el primer argumento al hacerlo echo $1dentro del 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érelo c_nocualquier entero.

¿Cuál es la forma correcta de hacer esto?

Ya he hecho referencia a este enlace. ¿Cómo pasar argumentos de línea de comando desde el programa C al script bash? pero esta respuesta usa la systemllamada al sistema y trato de no usar eso.

Respuestas

2 Botje Oct 30 2020 at 04:29

El primer argumento que se pasa a un programa es su nombre, por lo que actualmente su número termina en $0. argsdebiera ser:

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