दिलचस्प पोस्ट
सी # का प्रयोग करके स्व-हस्ताक्षरित प्रमाण पत्र कैसे बनाएं? सीतनिद्रा में होना, पहचानकर्ता / प्राथमिक कुंजी को बदलना उथले क्लोन को पूर्ण क्लोन में परिवर्तित करें स्प्रिंग-बूट जेपीए हाइबरनेट में> 4 <24 के बाद डीबी का कनेक्शन मर जाता है स्प्रिंग मैप सेम को नहीं निकाल सकते JSON पर HTML को मानचित्र दें शरीर टैग पर कोणीय 2.x बाइंड क्लास जावा में एक RegEx के साथ सीएसवी इनपुट पार्सिंग गिट ने असंबंधित इतिहास को मर्ज करने से इंकार कर दिया क्रोम की तरह एक बेहतर ब्राउज़र के साथ .नेट वेबब्राउजर नियंत्रण की जगह? MySQL में एईएस_एनसीआरसीपीटी और एईएस_डेसीआरपीपीटी का उपयोग कैसे करें कैसे पता कैसे urllib.urlretrieve सफल होता है? JqGrid फिल्टर नियम – क्या हम एक सरणी के आधार पर फ़िल्टर कर सकते हैं? JUnit का उपयोग करते हुए अपने सर्वलेट का परीक्षण कैसे करें क्या फ़ंक्शन के सभी तर्क उस फ़ंक्शन के अंदर एकल वस्तु के रूप में प्राप्त करना संभव है?

Linux, C, C ++ में सिस्टम आदेश जारी करना

मुझे पता है कि डॉस / विंडोज़ एप्लिकेशन में, आप सिस्टम आदेशों को लाइनों का उपयोग कर कोड से जारी कर सकते हैं जैसे:

system("pause"); 

या

 system("myProgram.exe"); 

… stdlib.h से क्या ऐसा कोई समान लिनक्स कमांड है, और यदि ऐसा है तो मुझे कौन सा हेडर फाइल मिलेगी?

इसके अलावा, क्या यह बुरा प्रोग्रामिंग अभ्यास माना जाता है? मैं lsmod कमांड का उपयोग करके lsmod मॉड्यूल की एक सूची प्राप्त करने की कोशिश करने पर विचार कर रहा हूं। क्या यह एक अच्छा विचार या बुरा विचार है? मुझे कुछ वेबसाइट मिली जो सिस्टम कॉल को देखने लगती थी (कम से कम प्रणाली ("विराम");) एक नकारात्मक प्रकाश में।

वेब के समाधान से एकत्रित समाधान "Linux, C, C ++ में सिस्टम आदेश जारी करना"

आश्चर्य की बात नहीं, यह आदेश अभी भी है

 system("whatever"); 

और हेडर अभी भी stdlib.h । वह हैडर फ़ाइल का नाम "मानक पुस्तकालय" है, जिसका अर्थ है कि यह प्रत्येक मानक प्लेटफ़ॉर्म पर है जो सी का समर्थन करता है।

और हाँ, कॉलिंग system() अक्सर एक बुरा विचार है आमतौर पर काम करने के अधिक प्रोग्रामत्मक तरीके होते हैं

यदि आप देखना चाहते हैं कि lsmod कैसे काम करता है, तो आप हमेशा अपने स्रोत कोड को देख सकते हैं और देख सकते हैं कि प्रमुख सिस्टम कॉल क्या हैं जो यह बनाता है। फिर उन कॉलों का उपयोग करें जो स्वयं को कहते हैं

एक त्वरित Google खोज इस लिंक को lsmod है, जो इंगित करता है कि lsmod /proc/modules की सामग्री पढ़ रही है।

system कई कारणों से एक बुरा विचार है:

  • आदेश समाप्त होने तक आपके प्रोग्राम को निलंबित कर दिया गया है।
  • यह एक शेल के माध्यम से कमांड चलाता है, जिसका मतलब है कि आपको यह सुनिश्चित करने के बारे में चिंता करने की ज़रूरत है कि आप जिस स्ट्रिंग को पास करते हैं वह खोल के मूल्यांकन के लिए सुरक्षित है।
  • यदि आप & साथ एक पृष्ठभूमि वाले आदेश को चलाने का प्रयास करते हैं, तो वह पोते की प्रक्रिया को समाप्त कर लेती है और init प्रक्रिया (pid 1) द्वारा अनाथ हो जाती है और उसे ले जाती है, और उसके बाद उसकी स्थिति की जांच करने का कोई तरीका नहीं है।
  • कमांड का आउटपुट आपके प्रोग्राम में वापस पढ़ने का कोई तरीका नहीं है।

पहले और अंतिम मुद्दों के लिए, popen एक समाधान है, लेकिन यह अन्य मुद्दों को संबोधित नहीं करता है किसी भी बाह्य कमांड / प्रोग्राम को चलाने के लिए आपको वास्तव में fork और exec (या posix_spawn ) का उपयोग करना चाहिए।

ठीक है, lsmod इसे /proc/modules फ़ाइल को पार्स करके करता है। यह मेरा पसंदीदा तरीका होगा

मुझे लगता है कि आप क्या ढूंढ रहे हैं फोर्क और एप हैं