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};