View Full Version : [C++] Funzione fork
Sbrocca88
04-11-2010, 10:46
Domanda stupida e veloce.
La funzione fork per creare processi figli è utilizzabile solo nel linguaggio c oppure si può utilizzare anche nel c++?!
Saluti
Teo@Unix
04-11-2010, 11:05
Si, ma è una chiamata syscall su Linux. Credo che ti sia più conveniente utilizzare i threads, ma naturalmente dipende dallo scopo della tua domanda... e cosa devi fare
ho visto l'uso di fork() quasi esclusivamente nei servizi (demoni) dei SO Unix.
Sbrocca88
04-11-2010, 11:24
Infatti mi è venuto il dubbio appunto perchè, programmando su windows, la funzione fork() non credo nemmeno che esista. Credo ci sia la funzione createProcess. Io dal mio programma c++, dovrei lanciare una console chiamata cygwin che emula linux. Usando la funzione system, la mia console dos si TRASFORMA nella console cygwin. Io vorrei invece fare in modo che la console cygwin si apra in un altra finestra e fare in modo che svolga le operazioni che voglio...è possibile?!
Teo@Unix
04-11-2010, 11:34
No, infatti su windows non esiste fork(), si usano threads diversi, che non sono processi... ma questo è un'altro discorso...
mmm... prova ad eseguire un file .bat; il quale chiama la console cygwin, non sono pratico di questa ma con un passaggio di argomenti sempre su linea di comando penso si possa fare, un modo c'è senz'altro...
Sbrocca88
04-11-2010, 12:10
Anche creando il file .bat non mi cambia niente. La mia shell di c++ si TRASFORMA in cygwin.
Hai altre idee?!;)
tomminno
04-11-2010, 13:38
Usando la funzione system, la mia console dos si TRASFORMA nella console cygwin.
Non è che si trasforma, semplicemente system ritorna al chiamante solo quando ha terminato l'esecuzione, significa che il tuo programma rimane bloccato sulla chiamata a system finchè non esci da cygwin, ma non si trasforma in cygwin.
Io vorrei invece fare in modo che la console cygwin si apra in un altra finestra e fare in modo che svolga le operazioni che voglio...è possibile?!
Usa CreateProcess.
Se vuoi impostare da programma le operazioni che deve eseguire allora devi redirigere lo standard input e/o standard output del processo che stai creando.
Sbrocca88
04-11-2010, 14:18
Riuscito!!
è bastato usare la funzione createprocess()
Ora devo capire come lanciare i miei comandi dal mio programma c++ alla mia console cygwin. E credo sarà davvero dura.
Un ringraziamento a tutti!!;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.