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};
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı