कैसे एक cpp प्रोग्राम से स्क्रिप्ट को काटने के लिए तर्क पारित करने के लिए
Oct 30 2020
मैंने एक बच्चे की प्रक्रिया को कांटा है, जो तब स्क्रिप्ट का उपयोग करके एक बैश स्क्रिप्ट को कॉल करता है execv, जिस तरह से मैं स्क्रिप्ट पर कमांड लाइन तर्क दे रहा हूं, यह echo $1स्क्रिप्ट के अंदर करने पर पहले तर्क को प्रिंट नहीं करता है ।
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_noकिसी भी पूर्णांक पर विचार करें।
ऐसा करने का सही तरीका क्या है?
मैंने पहले ही इस लिंक को वापस कर दिया है C प्रोग्राम से bash स्क्रिप्ट में कमांड लाइन तर्क कैसे पास करें? लेकिन यह उत्तर systemसिस्टम कॉल का उपयोग करता है और मैं कोशिश करता हूं कि इसका उपयोग न करें।
जवाब
2 Botje Oct 30 2020 at 04:29
एक कार्यक्रम के लिए दिया गया पहला तर्क इसका नाम है इसलिए वर्तमान में आपकी संख्या समाप्त हो गई है $0। argsहोना चाहिए:
char *args[] = {"./ckpnt.sh", (char *)s.c_str(), NULL};