PDA

Visualizza la versione completa : [C/C++] Probelemi con l'istruzione fork()


Lallost
31-03-2011, 12:09
Ciao a tutti,
mi sto informando per la prima volta sulla programmazione concorrente, e sto provando a compilare un semplice programma che crea un thread figlio. Come compilatore utilizzo Dev-C++. L'errore che ottengo compilando il codice č il seguente:

`fork' undeclared (first use this function)

Qui di seguito posto il codice:




#include <stdio.h> /* needed for printf() and fprintf() */
#include <stdlib.h> /* needed for EXIT_FAILURE/EXIT_SUCCESS */
#include <string.h> /* needed for strerror() */
#include <unistd.h> /* needed for fork() and getpid() */
#include <sys/types.h> /* needed for pid_t */
#include <errno.h> /* needed for errno */


int main ()
{
pid_t res;
int x = 1;
res = fork ();
if (res < 0)
{
perror ("La fork e fallita: non ho creato il figlio.\n");
exit (-1);
}
x++; /* sia padre che figlio eseguono questa istruzione */
if (res == 0)
{
/* solo il figlio esegue questo codice */
x--;
printf ("Ciao sono il figlio. x = %d.\n", x);
}
else
{
/* solo il padre esegue questo codice */
x += 7;
printf ("Ciao sono il padre. x = %d.\n", x);
}
scanf("%d", &x);
return EXIT_SUCCESS;
}



Non capisco perchč non trova la funzione fork(), gli include mi sembra di averli messi tutti...

Grazie a tutti e speriamo qualcuno mi riesca ad aiutare!

Ciao

Alex'87
31-03-2011, 12:12
fork esiste solo su sistemi Unix.

Lallost
31-03-2011, 12:14
mmm e quindi come devo fare? scusate l'ignoranza

Alex'87
31-03-2011, 12:21
Originariamente inviato da Lallost
mmm e quindi come devo fare? scusate l'ignoranza Quindi su Windows non puoi usare fork :mame: Se vuoi usare fork devi lavorare su Mac OS X (o su un sistema Linux). Una funzione che fa la stessa cosa su Windows non mi pare ci sia, perņ potresti dare un'occhiata a CreateProcess.

Lallost
31-03-2011, 12:23
Puņ essere che usando il compilatore GCC-GNU riesco a compilare il programma?

Celebron
31-03-2011, 16:08
no, devi usare api apposite per windows

la fork() non funziona mica grazie al compilatore, ma grazie al sistema operativo che c'č sotto

Loading