andreamica (Ex-Member)
Rookie
Messaggi: 24
Iscritto: 25/02/2007
|
ciao a tutti, devo fare un programma che crea un processo figlio. Pensavo di utilizzare la funzione fork ma questa non funziona. Mi appare il seguente messaggio di errore: [Linker error] undefined reference to 'fork'.
Esiste una funzione alternativa.
Io programmo con Dev-Cpp sotto Windows XP
|
|
WARRIOR (Ex-Member)
Guru
Messaggi: 627
Iscritto: 30/03/2007
|
Se devi creare un thread utilizza l'API CreateThread().
|
|
andreamica (Ex-Member)
Rookie
Messaggi: 24
Iscritto: 25/02/2007
|
ho provato ma mi da lo stesso errore che mi dava usando la fork. Devo fare un programma che crea questo processo figlio che lancia in esecuzione un'altro programma.
|
|
WARRIOR (Ex-Member)
Guru
Messaggi: 627
Iscritto: 30/03/2007
|
Posta il codice sorgente del programma, cosė possiamo vedere di correggere l'errore. Nella sezione articoli C++, c'č una mini guida su come creare un thread figlio.
|
|
andreamica (Ex-Member)
Rookie
Messaggi: 24
Iscritto: 25/02/2007
|
mi sono dimenticato di dirti che io programmo in C e non in C++. La funzione va bene lo stesso?
|
|
WARRIOR (Ex-Member)
Guru
Messaggi: 627
Iscritto: 30/03/2007
|
Le API sono funzioni del sistema operativo Windows, nn sono proprie del C++, quindi va bene anche per il C.
P.S.
Devi includere l'header windows.h
|
|
andreamica (Ex-Member)
Rookie
Messaggi: 24
Iscritto: 25/02/2007
|
Ecco un pezzo del codice:
{
printf ("\nN.B. Per la corretta installazione di tutti i driver spuntare sempre la casella \"Riavviare il computer in un secondo momento\" alla fine del processo\nd'installazione di ogni singolo driver. Premi Enter per iniziare l'installazione.");
fgets (Vuoto,2,stdin);
CreateThread();
printf ("\nProcesso figlio");
printf ("\nAncora nel padre");
return;
}
|
|
WARRIOR (Ex-Member)
Guru
Messaggi: 627
Iscritto: 30/03/2007
|
Postato originariamente da andreamica:
Ecco un pezzo del codice:
{
printf ("\nN.B. Per la corretta installazione di tutti i driver spuntare sempre la casella \"Riavviare il computer in un secondo momento\" alla fine del processo\nd'installazione di ogni singolo driver. Premi Enter per iniziare l'installazione.");
fgets (Vuoto,2,stdin);
CreateThread();
printf ("\nProcesso figlio");
printf ("\nAncora nel padre");
return;
} |
Non funziona in quel modo .
Codice sorgente - presumibilmente C/C++ |
DWORD CodiceFiglio();
DWORD CodiceFiglio() {
//Codice figlio
}
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) {
DWORD dwThreadId;
DWORD dwThrdParam = 1;
HANDLE thread;
thread = CreateThread(NULL, 0,(LPTHREAD_START_ROUTINE)CodiceFiglio, &dwThrdParam, 0, &dwThreadId);
return 0;
}
|
|
|
andreamica (Ex-Member)
Rookie
Messaggi: 24
Iscritto: 25/02/2007
|
come faccio a sapere qual'č il padre e quale il figlio?
ad esempio la fork ritornava 0 ke significava ke ero nel padre ed un numero diverso da 0 se ero nel figlio.
Questa funzione cosa ritorna?
|
|