2012-01-11 12 views
5

में ब्लॉक संपादक जब मैं कोड ओएस में कोड :: ब्लॉक में कोड नीचे चला रहा हूं। मुझे फोर्क() के अपरिभाषित संदर्भ नामक एक त्रुटि प्राप्त होती थी। मैंने अपने डिफ़ॉल्ट कंपाइलर के रूप में जीसीसी कंपाइलर सेट/चयन किया था।कोड में फोर्क() के लिए अनिर्धारित संदर्भ :: विंडोज ओएस

#include<stdio.h>  
#include<unistd.h>   
void main()   
{  
int x;  
x = 0;  
fork();  
x = 1;   
...  
....  
} 

कृपया मेरी मदद करें और मुझे बताएं, क्या मैं विंडोज़ पर्यावरण में कोड :: ब्लॉक में यूनिक्स/लिनक्स प्रोग्राम सही कर सकता हूं?

और मैं एक और प्रोग्राम लिखने,

main() 
{ 
int x = 0; 
if(x == 0) 
{ 
printf("X = %d", x); 
sleep(1000);//used delay also 
x = 1; 
printf("Now X = %d", x);; 
} 

यहाँ यह भी * /) eroor कि अपरिभाषित संदर्भ सोने के लिए (और/* देरी देता है।
कृपया मेरी मदद करें।

+0

@Vlad: विंडोज "डिजाइन द्वारा टूटा नहीं गया" है; यह सिर्फ परवाह नहीं करता है कि कैसे \ * निक्स चीजें करता है। इसे हल करने और हल करने के लिए इसकी अपनी समस्याएं थीं, हालांकि - हालांकि \ * निक्स जीता पसंद नहीं किया जा सकता है - दशकों से कंप्यूटिंग दुनिया के विशाल बहुमत को संचालित करने के लिए पर्याप्त रूप से काम करता है। वास्तव में, वास्तव में, 15+ वर्षों के लिए बॉक्स से बाहर किए गए सामानों का एक समूह को लिनक्स और \ * बीएसडी के लिए पुनर्निर्मित या बोल्ट किया गया है। (चलो देखते हैं ... रजिस्ट्री? असली एसीएल? मूल थ्रेडिंग? बाइनरी संगतता? ओह, रुको, \ * निक्स * अभी भी * उसमें कोई नहीं है ...) – cHao

उत्तर

6

नहीं, आप विंडोज़ पर यूनिक्स कोड नहीं लिख सकते हैं, इससे कोई फर्क नहीं पड़ता कि आप किस आईडीई का उपयोग करते हैं। हालांकि, आपको cygwin आज़माएं, और आपको आवश्यक संगतता परत प्रदान करनी चाहिए।

2017 अद्यतन: इन दिनों हमारे पास Windows Subsystem for Linux भी है।

+0

क्या हम यूनिक्स/LINUX प्रोग्रामिंग सिगविन कर सकते हैं? क्या यह पूर्ण लिनक्स प्रोग्रामिंग स्वाद देगा? –

+0

लगभग पूरा हो गया। आप अभी भी विंडोज़ पर चल रहे हैं। लेकिन यह पर्याप्त होना चाहिए। एक ['सिगविन' एफएक्यू] है (http://cygwin.com/faq/faq-nochunks.html) जो कुछ सामान्य प्रश्नों का उत्तर देता है। – cha0site

+0

@ cha0site: क्या सिगविन भी 'क्लोन()' लागू करता है? या "एपोल" एपीआई? बीटीडब्ल्यू, मैंने कुछ समय पहले एक परियोजना देखी थी जो विंडोज कर्नेल के हिस्से के रूप में लिनक्स कर्नेल को चलाने में सक्षम था। वह ठंडा और लगभग पूरा स्वाद था। यह सुनिश्चित नहीं है कि यह कहां खड़ा है। –

2

विंडोज पर कोई fork सिस्टम कॉल नहीं है।

+1

सिगविन जैसे कुछ पुस्तकालयों में हो सकता है। –

+0

@ लार्समैन: क्या विंडोज़ में कोई अन्य सिस्टम कॉल है जो कांटा() और नींद() को प्रतिस्थापित कर सकता है? –

+1

[CreateProcess] है (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425 (v = vs.85) .aspx), लेकिन Win32api POSIX API से बिल्कुल अलग है। – cha0site

0

fork() एक यूनिक्स सिस्टम कॉल है, इसलिए जब आप विंडोज ओएस में ऐसा करते हैं तो यह निश्चित रूप से एक अनिर्धारित संदर्भ उत्पन्न करेगा। विंडोज fork() का समर्थन नहीं करता है।

0

आप cygwin का उपयोग करने का प्रयास करते हैं, इसके अलावा मुझे यकीन नहीं है, लेकिन एमएस-डॉस पर्यावरण में इस समकक्ष सिस्टम कॉल spawn() है। आप इसका उपयोग करने का प्रयास कर सकते हैं।

0

विंडोज़ में कोई फोर्क() सिस्टम कॉल नहीं है, इसके बजाय आप साइगविन या पर्थ्रेड का प्रयास कर सकते हैं।

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