दिलचस्प पोस्ट
क्लिक किए जाने पर एंड्रॉइड में बटन का रंग कैसे बदल सकता है? JQuery के साथ फॉर्म फ़ील्ड साफ़ करें jQuery .on ('click') बनाम। क्लिक करें () और .delegate ('click') MySQL जांचता है कि एक टेबल अपवाद फेंके बिना मौजूद है जावा में JSON ऑब्जेक्ट में हैशप को कैसे परिवर्तित करें एक्सेल VBA – तिथि करने के लिए पाठ कन्वर्ट? पृष्ठ के नीचे jQuery स्क्रॉल करें कुछ अच्छे iPhone 3D / 2D ओपनजीएल ES गेम ट्यूटोरियल क्या हैं? एक ही पृष्ठ पर आधार भूखंड और grid.tables व्यवस्थित करें ग्रहण परियोजना में लापता मावेन निर्भरताएं क्रमिक आउटपुट की तिथि? एंड्रॉइड में चयनकर्ता के साथ कस्टम आकार बटन कैसे बनाएं? सबमिट पर सबमिट किए जाने वाले फ़ॉर्म को निर्धारित करें कि सबमिट बटन दबाया गया था जावा एप्लेट गेम 2 डी विंडो स्क्रॉलिंग एकाधिक डेटाबेस के साथ पटरियों को जोड़ने 3.1

किसी प्रोग्राम के रिटर्न वैल्यू को फ़ंक्शन के एडिबल परिवार के सदस्य को कॉल करने के लिए कैसे पहुंचा?

मुझे पता है कि पाइप के साथ कमांड आउटपुट को पढ़ना संभव है? लेकिन बदले मूल्य पाने के बारे में क्या? उदाहरण के लिए मैं निष्पादित करना चाहता हूं:

execl("/bin/ping", "/bin/ping" , "-c", "1", "-t", "1", ip_addr, NULL); 

यह पता लगाने के लिए कि क्या यह 0 या 1 लौटा है, मैं कैसे पिंग कमांड के मूल्य को वापस प्राप्त कर सकता हूं?

Solutions Collecting From Web of "किसी प्रोग्राम के रिटर्न वैल्यू को फ़ंक्शन के एडिबल परिवार के सदस्य को कॉल करने के लिए कैसे पहुंचा?"

यहाँ एक उदाहरण मैंने लिखा था लंबे समय से पहले असल में, आप एक बाल प्रक्रिया कांटा के बाद और आप अपनी बाहर निकलने की स्थिति की wait , तो आप दो मैक्रोज़ का उपयोग करके स्थिति जांचते हैं। WIFEXITED का उपयोग यह WIFEXITED लिए किया जाता है कि प्रक्रिया सामान्य रूप से बाहर WEXITSTATUS , और WEXITSTATUS जांचता है कि लौटा हुआ नंबर क्या है जो सामान्य रूप से लौटा है:

 #include <stdio.h> #include <unistd.h> #include <sys/wait.h> int main() { int number, statval; printf("%d: I'm the parent !\n", getpid()); if(fork() == 0) { number = 10; printf("PID %d: exiting with number %d\n", getpid(), number); exit(number) ; } else { printf("PID %d: waiting for child\n", getpid()); wait(&statval); if(WIFEXITED(statval)) printf("Child's exit code %d\n", WEXITSTATUS(statval)); else printf("Child did not terminate with exit\n"); } return 0; } 

आप बच्चे की प्रक्रिया से बाहर निकलने की स्थिति प्राप्त करने के लिए waitpid का उपयोग कर सकते हैं:

 int childExitStatus; waitpid( pID, &childExitStatus, 0); // where pID is the process ID of the child. 

exec फ़ंक्शन familly वापस नहीं करता है, वापसी इंटर्न केवल तब होता है जब लॉन्च समय में त्रुटि आती है (जैसे फ़ाइल को निष्पादित नहीं करना)।

आपको प्रक्रिया को भेजे गए सिग्नल से रिटर्न वैल्यू को पकड़ना होगा, जो कि exec को कॉल करने से पहले फोर्क किया था।

अपने सिग्नल हेन्डलर में कॉल प्रतीक्षा () या प्रतीक्षापैड () , अगर आप किसी भी संकेत हैंडलर का उपयोग किए बिना अपनी प्रक्रिया में प्रतीक्षा () भी कॉल कर सकते हैं)।

मौजूदा उत्तरों को समझने और लागू करने में परेशानी होती है।

आराके के जवाब में , यदि एक से अधिक बच्चे की प्रक्रिया चल रही है, तो यह जानना संभव नहीं है कि किस विशिष्ट बाल प्रक्रिया ने निकाली जाने वाली स्थिति का उत्पादन किया। मैन पेज के अनुसार,

प्रतीक्षा करें () और प्रतीक्षापैड ()

इंतजार () सिस्टम कॉल ने कॉलिंग प्रक्रिया का निष्पादन निलंबित कर दिया जब तक कि उसके एक बच्चे समाप्त नहीं हो जाते । कॉल प्रतीक्षा (और स्थिति) के बराबर है:

  waitpid(-1, &status, 0); The **waitpid()** system call suspends execution of the calling process until a **child specified by pid** argument has changed state. 

इसलिए, एक विशिष्ट बाल प्रक्रिया की निकासी स्थिति प्राप्त करने के लिए हमें उत्तर को फिर से लिखना चाहिए:

 #include <stdio.h> #include <unistd.h> #include <sys/wait.h> int main() { int number, statval; int child_pid; printf("%d: I'm the parent !\n", getpid()); child_pid = fork(); if(child_pid == -1) { printf("could not fork! \n"); exit( 1 ); } else if(child_pid == 0) { execl("/bin/ping", "/bin/ping" , "-c", "1", "-t", "1", ip_addr, NULL); } else { printf("PID %d: waiting for child\n", getpid()); waitpid( child_pid, &statval, WUNTRACED #ifdef WCONTINUED /* Not all implementations support this */ | WCONTINUED #endif ); if(WIFEXITED(statval)) printf("Child's exit code %d\n", WEXITSTATUS(statval)); else printf("Child did not terminate with exit\n"); } return 0; } 

आरके के उत्तर के एक संपादन के लिए इस उत्तर को मुफ़्त बनाने के लिए बेझिझक।

आप बच्चे की प्रक्रिया पर प्रतीक्षा कर सकते हैं और इसकी निकास स्थिति प्राप्त कर सकते हैं। सिस्टम कॉल प्रतीक्षा है (पीड), इसके बारे में पढ़ने का प्रयास करें।