Cara melewatkan argumen ke skrip bash dari program cpp
Oct 30 2020
Saya telah bercabang dengan proses anak yang kemudian memanggil skrip bash menggunakan execv, cara saya meneruskan argumen baris perintah ke skrip, Ini tidak mencetak argumen pertama saat melakukan echo $1di dalam skrip.
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]);
}
pertimbangkan c_nountuk menjadi bilangan bulat apa pun.
Bagaimana cara yang benar untuk melakukan ini?
Saya sudah mereferensikan tautan ini Bagaimana cara meneruskan argumen baris perintah dari program C ke skrip bash? tetapi jawaban ini menggunakan systempanggilan sistem dan saya mencoba untuk tidak menggunakannya.
Jawaban
2 Botje Oct 30 2020 at 04:29
Argumen pertama yang dikirimkan ke program adalah namanya sehingga saat ini nomor Anda berakhir di $0. argsseharusnya:
char *args[] = {"./ckpnt.sh", (char *)s.c_str(), NULL};
Selalu Menjadi Ancaman: Mengapa Orang Berkulit Coklat dan Hitam Tidak Bisa Nyaman di Amerika Serikat
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'