Bir cpp programından bash betiğine argümanlar nasıl iletilir
Oct 30 2020
execvKomut satırı argümanlarını betiğe iletme yöntemimi kullanarak bir bash betiğini çağıran bir çocuk işlemi çatalladım , betiğin echo $1içinde yaptığım ilk argümanı yazdırmıyor .
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]);
}
c_noherhangi bir tamsayı olarak düşünün .
Bunu yapmanın doğru yolu nedir?
Bu bağlantıyı daha önce yeniledim Komut satırı argümanları C programından bash betiğine nasıl iletilir? ama bu cevap systemsistem çağrısını kullanıyor ve bunu kullanmamaya çalışıyorum.
Yanıtlar
2 Botje Oct 30 2020 at 04:29
Bir programa aktarılan ilk argüman adıdır, bu nedenle şu anda numaranız biter $0. argsolmalı:
char *args[] = {"./ckpnt.sh", (char *)s.c_str(), NULL};
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı