2012-01-11 14 views
5

Windows OSのCode :: Blockで以下のコードを実行しているとき。 私は、fork()への未定義参照と呼ばれるエラーを取得することがありました。 私はデフォルトのコンパイラとしてGCCコンパイラを設定/選択しました。Windows OSのCode :: Blocksエディタでのfork()への未定義参照

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

Windows環境でCode :: Blocksでunix/linuxプログラムを正しく実行できますか教えてください。

そして、私は別のプログラムを書き、

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:Windowsは「設計によって壊れていません」。 \ * nixが何をしているかは気にしません。 \ n nix wonkが好きだったかもしれない方法ではありませんが、何十年にもわたってコンピューティングの世界の大部分を動かすのに十分なほどうまく機能しています。まあ、実際には、15年以上もの間、箱から外されてきたものがLinuxや\ * BSDのために再発明されたのです。 (レジストリ?実際のACL?ネイティブスレッド化?バイナリ互換性?ああ、待って、* * nix * still *にはそのようなものはありません...) – cHao

答えて

6

いいえ、どんなIDEを使用していようとWindowsのようにUnixコードを書くことはできません。しかし、cygwinを試してみてください。これは、必要な互換性レイヤーを提供するはずです。

2017更新:最近はWindows Subsystem for Linuxもあります。

+0

UNIX/LINUXプログラミングCygwinを使用できますか?それは完全なLinuxプログラミングの味を与えるだろうか? –

+0

ほぼ完了しました。あなたはまだWindows上で動作しています。しかしそれで十分であるはずです。よくある質問に答える[cygwin FAQ](http://cygwin.com/faq/faq-nochunks.html)があります。 – cha0site

+0

@ cha0site:Cygwinも 'clone()'を実装していますか?または "epoll" API?ちょっと前に、Windowsカーネルの一部としてLinuxカーネルを動かすことができたプロジェクトを見ました。それは涼しく、ほぼ完全な味でした。それは今どこに立っているかわからない。 –

2

Windowsではforkシステムコールはありません。

+1

Cygwinのようなライブラリがあります。 –

+0

@larsmans:windowsにはfork()とsleep()に代わるシステムコールがありますか? –

+1

[CreateProcess](http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx)がありますが、win32apiはPOSIX APIとはまったく異なります。 – cha0site

0

fork()はunixシステムコールですので、Windows OSでこれを行うと、間違いなく未定義参照が生成されます。 Windowsはfork()をサポートしていません。

0

cygwinまた、わかりませんが、ms-dos環境にspawn()というシステムコールという同等の機能があります。それを試してみてください。

0

Windowsにfork()システムコールはありません。代わりに、cygwinやpthreadsを試すことができます。

関連する問題