Como passar argumentos para o script bash de um programa cpp
Oct 30 2020
Eu fiz um bifurcação de um processo filho que chama um script bash usando execv, da mesma forma que estou passando argumentos de linha de comando para o script. Ele não exibe o primeiro argumento ao fazer echo $1dentro do 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]);
}
considere c_noser qualquer número inteiro.
Qual é a maneira correta de fazer isso?
Já referenciei este link. Como passar argumentos de linha de comando do programa C para o script bash? mas essa resposta usa systemchamada de sistema e tento não usar isso.
Respostas
2 Botje Oct 30 2020 at 04:29
O primeiro argumento passado para um programa é o seu nome, então atualmente o seu número termina em $0. argsdeveria estar:
char *args[] = {"./ckpnt.sh", (char *)s.c_str(), NULL};
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?