2012-01-11 14 views
5

Quando sono in esecuzione sotto il codice in Code :: Blocks in Windows OS. Ho usato per ottenere un errore chiamato riferimento non definito a fork(). Ho impostato/scelto il compilatore GCC come compilatore predefinito.Riferimento indefinito a fork() nell'editor di Code :: Blocks nel SO Windows

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

Please help me e mi dica, posso giusti programmi/Linux UNIX in Code :: Blocks in ambiente Windows?

E scrivo un altro programma,

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

Qui si dà eroor che undefined reference to sleep() e/* ritardo inoltre * /.
Per favore aiutatemi.

+0

@Vlad: Windows non è "broken by design"; semplicemente non importa come \ * nix fa le cose. Aveva i suoi problemi da risolvere e risolveva a modo suo, il che - sebbene non il modo in cui un wonk avrebbe potuto piacergli - funziona abbastanza bene da aver alimentato la stragrande maggioranza del mondo informatico per decenni. Abbastanza bene, infatti, che un sacco di cose che è stato fatto fuori dagli schemi per più di 15 anni è stato reinventato o imbullonato per Linux e \ * BSD. (Vediamo ... Registro? Real ACL? Threading nativo? Compatibilità binaria? Oh, aspetta, \ * nix * still * non ha quello ...) – cHao

risposta

6

No, non è possibile scrivere codice Unix su Windows come quello, non importa quale IDE si usi. Tuttavia, dovresti provare con lo cygwin e questo dovrebbe fornire il livello di compatibilità di cui hai bisogno.

Aggiornamento 2017: In questi giorni abbiamo anche Windows Subsystem for Linux.

+0

Possiamo programmare Cygwin UNIX/LINUX? Fornirà un completo sapore di programmazione Linux? –

+0

Quasi completo. Stai ancora utilizzando Windows. Ma dovrebbe essere sufficiente. C'è una [FAQ di cygwin] (http://cygwin.com/faq/faq-nochunks.html) che risponde ad alcune domande comuni. – cha0site

+0

@ cha0site: Cygwin implementa anche 'clone()'? O API "epoll"? A proposito, ho visto un progetto da qualche tempo che era in grado di eseguire il kernel Linux come parte del kernel di Windows. Era un sapore fresco e quasi pieno. Non sono sicuro di dove si trovi ora. –

2

Non esiste una chiamata di sistema fork su Windows.

+1

Ci potrebbe essere in alcune librerie, come Cygwin. –

+0

@larsmans: Windows ha altre chiamate di sistema che possono sostituire fork() e sleep()? –

+1

C'è [CreateProcess] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425 (v = vs.85) .aspx), ma win32api è completamente diverso dall'API POSIX. – cha0site

0

fork() è una chiamata di sistema unix, quindi produrrà sicuramente un riferimento non definito quando lo si fa in Windows OS. Windows non supporta fork().

0

Si prova a utilizzare cygwin Inoltre, non sono sicuro, ma c'è questo equivalente chiamato chiamata di sistema spawn() in ambiente ms-dos. potresti provare a usarlo.

0

Non c'è una chiamata di sistema fork() in windows, invece è possibile provare cygwin o pthreads.

Problemi correlati