Ciao a tutti.
Dovrei creare un puntatore che punti alla struttura process_information.
Come fare?!
(il "corpo" del mio programma scritto finora si trova tutto nella funzione void nuovoprofilo())
codice:
#include <iostream>
#include <stdlib.h>
#include <fstream>        
#include <windows.h>   //include la funzione CreateProcess()
#define MAX 50
using namespace std;
char nome_cognome[MAX];
void nuovoprofilo();

int main()
	{
	char ch;
    cout << "Nuovo (n), Salvare (s) Lanciare (r) Uscire (q)" << endl;
    cin >> ch;
	while (ch!='q')
		{
		switch (ch)
			{
			case 'n':
				nuovoprofilo();
				break;
			case 's':
				//salvaprofilo();
				break;
			case 'r':
				//lanciaprofilo();
				break;
			default : cout << "Nuovo (n), Salvare (s) Lanciare (r) Uscire (q)" << endl;
			}
		cin >> ch;
		}
    return 0;
	}
	
	
void nuovoprofilo()
{
cout << "Inserire nome e cognome" << endl;
cin.getline(nome_cognome,MAX);  //perchè non funziona?!
cin.getline(nome_cognome,MAX);
system("\"mkdir C:\\cygwin\\home\\Ciucci\\voxforge_2\"");            
system("\"mkdir C:\\cygwin\\home\\Ciucci\\voxforge_2\\HTK_Scripts\"");                                  
system("\"xcopy C:\\cygwin\\home\\Ciucci\\voxforge\\HTK_Scripts C:\\cygwin\\home\\Ciucci\\voxforge_2\\HTK_Scripts\""); 
system("\"mkdir C:\\cygwin\\home\\Ciucci\\voxforge_2\\auto\"");
ofstream fout ("C:\\cygwin\\home\\Ciucci\\voxforge_2\\auto\\sample.grammar");
fout << "S : NS_B COMANDO OGGETTO NS_E" << endl << "S : NS_B RICHIESTA NS_E" << endl;
fout.close();
ofstream fout2 ("C:\\cygwin\\home\\Ciucci\\voxforge_2\\auto\\sample.voca");
fout2 << "% NS_B" << endl << "<s>        sil" << endl << endl << "% NS_E" << endl << "</s>        sil" << endl << endl << "% COMANDO" << endl << "ACCENDI      a cc e n d i" << endl << "SPEGNI	     s p e ggn i" << endl << endl << "% OGGETTO" << endl << "LUCE             l u c e" << endl << "TEIERA           t e j e r a" << endl << endl << "% RICHIESTA" << endl << "AIUTO       a j u t o" << endl;
fout2.close();

BOOL esito;
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si)); // serve per azzerrare la struttura si
si.cb = sizeof(si); // il campo cb deve essere valorizzato alla dimensione
// della struttura
si.lpTitle = "Processo figlio Cygwin.bat";
// crea il processo figlio
esito = CreateProcess
                     (
                      NULL, // nome dell'eseguibile (viene usata la riga di comando)
                      "C:\\cygwin\\Cygwin.bat", // percorso del programma che voglio eseguire
                      NULL, // indica che il processo non è ereditabile dai processi figli
                      NULL, // indica che il thread associato al processo non è ereditabile
                      FALSE, // i diritti ereditati dal processo non passano ai figli
                      CREATE_NEW_CONSOLE + NORMAL_PRIORITY_CLASS, // opzioni di creazione
                      // (0 per nessuna); in questo caso imposto priorità e creazione
                      // del processo figlio in una nuova finestra console
                      NULL, // puntatore ad un blocco di variabili d’ambiente.
                      // in questo caso vengono usate quelle del padre.
                      NULL, // directory di lavoro per il processo figlio.
                      // In questo caso viene usata la directory corrente del processo padre
                      &si, // puntatore ad una struttura STARTUPINFO
                      &pi // puntatore ad una struttura PROCESS_INFORMATION
                      );
if (esito == TRUE) 
          {
          cout<<"Processo creato regolarmente"<<endl;
          } 
else 
     {
     cout<<"CreateProcess fallito!"<<endl;
     }
   
}