2010-07-25 17 views
7

के साथ इंटरैक्ट कैसे करें I C++ शुरुआतकर्ता हूं।मैं कहां से सीख सकता हूं कि सी ++ प्रोग्राम ऑपरेटिंग सिस्टम (लिनक्स)

मैं छोटे प्रोग्राम बनाना चाहता हूं जो ऑपरेटिंग सिस्टम (कुबंटू लिनक्स का उपयोग करके) के साथ बातचीत करते हैं। अब तक, मैं ओएस के साथ इंटरफेस करने के लिए सी ++ प्राप्त करने के लिए किसी भी ट्यूटोरियल या हैंडबुक का पता लगाने में सक्षम नहीं हूं।

PHP में, मैं आमतौर पर कंसोल में निष्पादित आदेशों को लॉन्च करने के लिए exec exec() या बैकटिक ऑपरेटर का उपयोग कर सकता हूं। मैं सी ++ में समान चीजें कैसे कर सकता हूं? मैं अपने सी ++ प्रोग्राम को किसी अन्य कमांड को निष्पादित करने के लिए कैसे प्राप्त कर सकता हूं? मैं ऐसे आदेशों का आउटपुट कैसे प्राप्त कर सकता हूं?

धन्यवाद।

उत्तर

6

आप सिस्टम आदेश पर अमल करने stdlib में system() आदेश का उपयोग कर सकते हैं:

#include <stdlib.h> 
int main() { 
    system("ls -l"); 
} 

system() रिटर्न अपनी वापसी मान के रूप में int, लेकिन int की मूल्य प्रणाली पर निर्भर है। यदि आप एक कमांड का प्रयास करते हैं और प्रयोग करते हैं जो मौजूद नहीं है, तो आपको मानक "ऐसा कोई आदेश नहीं" आउटपुट वापस मिलेगा, और आमतौर पर गैर-शून्य रिटर्न मान। (उदाहरण के लिए, मेरे Windows XP मशीन पर system("ls -l"); चल यहाँ से 1.

+0

उचित पुस्तकालय में नमूना कोड और सूचक के लिए धन्यवाद। वह बहुत उपयोगी था। +1 – augustin

+0

मैंने जवाबों में से एक को 'सही' के रूप में चिह्नित करने पर विचार किया था। मुझे चेक मार्क से अवगत था। हालांकि, तीन उत्तरों सहायक थे और प्रत्येक ने अतिरिक्त जानकारी को जोड़ा जो कि दूसरे के पास नहीं था, इसलिए मैं किसके लिए चुनने के लिए हिचकिचाहट कर रहा था। लेकिन अगर यह सिस्टम की मदद करता है, तो मैं आपकी सिफारिश के साथ जाऊंगा। यह एक शर्म की बात है कि मैं तीनों का चयन कर सकता हूं :) – augustin

+0

धन्यवाद। मेरे लिए सही जवाब – LinuxBill

7

एक मान देता है आप system() उपयोग कर सकते हैं मनमाने ढंग से आदेश पर अमल करने के लिए लेकिन, आप आसानी से इनपुट और कार्यक्रम के साथ उत्पादन को नियंत्रित करना चाहते हैं, तो आपको ध्यान देना चाहिए popen()

भी अधिक नियंत्रण के लिए, आप वास्तव में कर रही एक खोल क्या कर सकता, कुछ अतिरिक्त फ़ाइल वर्णनकर्ता बनाने, किसी अन्य प्रक्रिया शुरू करने के लिए forking, फ़ाइल वर्णनकर्ता 0, 1 और 2 (इनपुट, आउटपुट की स्थापना पर गौर कर सकते और त्रुटि) उस प्रक्रिया में उन्हें अपनी मूल प्रक्रिया फ़ाइल डिस्क्रिप्टर से कनेक्ट करने के लिए उस प्रोग्राम को निष्पादित करने के लिए जिसे आप नियंत्रित करना चाहते हैं। यह दिल की बेहोशी के लिए नहीं है :-)

+0

popen() का उल्लेख करने के लिए धन्यवाद। अब जब मुझे पता है कि खोजना है, तो मैं वेब पर अधिक संसाधन ढूंढने में सक्षम हूं (उदा। Http://www.gidforums.com/t-3369.html)। मैं जल्द ही उन चीजों को आजमाने में सक्षम होना चाहता हूं जो "दिल की बेहोशी के लिए नहीं हैं" :) +1 – augustin

2

आप पहले से निर्देशित system() का उपयोग कर सकते हैं या आप पुस्तकालयों का उपयोग कर सकते हैं जो मानक POSIX API तक पहुंच प्रदान करते हैं। unistd.h और The GNU C Library में ओएस इंटरैक्शन के लिए कई फ़ंक्शन शामिल हैं। इन पुस्तकालयों के साथ संभावनाएं अनंत हैं क्योंकि आप कार्यशीलताओं को स्वयं लागू कर सकते हैं। एक साधारण उदाहरण: scandir() के साथ टेक्स्ट फ़ाइलों के लिए निर्देशिका स्कैन करें और फ़ाइलों की सामग्री मुद्रित करें।

+0

अन्य पुस्तकालयों के लिए अतिरिक्त पॉइंटर्स के लिए धन्यवाद। मैं कुछ बहुत सरल से शुरू कर रहा हूं, और मैंने उन libs को बुकमार्क किया है जब मुझे आगे विस्तार करने की आवश्यकता है जो मैं कर सकता हूं। +1 – augustin

संबंधित मुद्दे