2012-01-11 16 views
5

Cuando estoy ejecutando código por debajo de Code :: Blocks en el sistema operativo Windows. Solía ​​obtener un error llamado referencia no definida de fork(). Establecí/elegí el compilador GCC como mi compilador predeterminado.Referencia no definida a fork() en el editor Code :: Blocks en Windows OS

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

Ayúdenme y díganme, ¿puedo corregir los programas de Unix/Linux en Code :: Blocks en el entorno de Windows?

Y escribo otro programa,

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

Aquí se da eroor que referencia indefinida a dormir() y/* retraso también * /.
Por favor, ayúdenme.

+0

@Vlad: Windows no está "roto por diseño"; simplemente no le importa cómo \ * nix hace las cosas. Tenía sus propios problemas para resolver y resolverlos a su manera, lo que -aunque no de la forma en que un wonx podría haber gustado- funciona lo suficientemente bien como para haber alimentado a la gran mayoría del mundo de la informática durante décadas. Lo suficiente, de hecho, que se han reinventado o conectado un montón de cosas de la caja durante más de 15 años para Linux y \ * BSD. (Veamos ... Registro) ACLs reales? Enhebrado nativo? Compatibilidad binaria? Oh, espera, \ * nix * todavía * no tiene ese ...) – cHao

Respuesta

6

No, no puede escribir el código Unix en Windows así, sin importar el IDE que use. Sin embargo, deberías probar cygwin, y eso debería proporcionar la capa de compatibilidad que necesitas.

actualización 2017: En estos días también tenemos Windows Subsystem for Linux.

+0

¿Podemos hacer programación UNIX/LINUX Cygwin? ¿Te dará un sabor de programación Linux completo? –

+0

Casi completo. Todavía estás corriendo en Windows. Pero debería ser suficiente. Hay una [FAQ de '' cygwin'] (http://cygwin.com/faq/faq-nochunks.html) que responde algunas preguntas comunes. – cha0site

+0

@ cha0site: ¿Cygwin también implementa 'clone()'? ¿O API "epoll"? Por cierto, vi un proyecto en algún lugar hace mucho tiempo que fue capaz de ejecutar kernel de Linux como parte del kernel de Windows. Eso fue genial y casi lleno de sabor. Sin embargo, no estoy seguro de dónde se encuentra ahora. –

2

No hay una llamada al sistema fork en Windows.

+1

Podría haber en algunas bibliotecas, como Cygwin. –

+0

@larsmans: ¿Windows tiene alguna otra llamada al sistema que pueda reemplazar fork() y sleep()? –

+1

Hay [CreateProcess] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425 (v = vs.85) .aspx), pero win32api es completamente diferente de la API POSIX. – cha0site

0

fork() es una llamada al sistema unix, por lo que definitivamente generará una referencia indefinida cuando lo haga en el sistema operativo Windows. Windows no es compatible con fork().

0

Intenta usar cygwin Además, no estoy seguro, pero existe este equivalente llamado llamada al sistema spawn() en el entorno ms-dos. puedes intentar usar eso.

0

No hay una llamada al sistema fork() en Windows, en su lugar puede probar cygwin o pthreads.

Cuestiones relacionadas