View Full Version : [Visual C++] Problema con _spawnlp
Ragazzi ho un problema con questo comando... nel mio codice scrivo le seguenti righe:
const char *p = "\\IDentity\\Identity.exe";
int err = _spawnlp(_P_WAIT, p,NULL);
if (err== 0)
AfxMessageBox("errore 0");
if (err== 1)
AfxMessageBox("errore 1");
if (err== -1)
AfxMessageBox("errore -1");
mi restituisce come messaggio di errore -1. Da cosa può dipendere?
Premette che l'eseguibile che voglio lanciare è contenuto nella directory IDentity che a sua volta è contenuta nel mio progetto.
Spero che qualcuno riesca ad aiutarmi. Grazie mille.
sottovento
18-03-2008, 22:11
Ragazzi ho un problema con questo comando... nel mio codice scrivo le seguenti righe:
const char *p = "\\IDentity\\Identity.exe";
int err = _spawnlp(_P_WAIT, p,NULL);
if (err== 0)
AfxMessageBox("errore 0");
if (err== 1)
AfxMessageBox("errore 1");
if (err== -1)
AfxMessageBox("errore -1");
mi restituisce come messaggio di errore -1. Da cosa può dipendere?
Premette che l'eseguibile che voglio lanciare è contenuto nella directory IDentity che a sua volta è contenuta nel mio progetto.
Spero che qualcuno riesca ad aiutarmi. Grazie mille.
Per prima cosa: _spawnlp() setta la variabile errno in caso si verifichi un errore, pertanto puoi stamparla (anche a console se ne hai una, usando la perror()), vedere cosa ti dice e poi immagino risolvere l'errore sia piu' semplice.
Non ho molto chiaro come fargliela stampare, mi potresti dare qualche indicazione in più? Grazie.
anzi ho fatto così:
m_int = errno;
m_int è una variabile di tipo int associata ad un edit box
naturalmente faccio anche UpdateData(FALSE);
cmq sembrerebbe restituire 0.
sottovento
18-03-2008, 22:28
Se hai la possibilita' di stampare su una console, e' semplice:
const char *p = "\\IDentity\\Identity.exe";
int err = _spawnlp(_P_WAIT, p,NULL);
if (err < 0)
perror ("Error starting new process:");
La perror() accodera' al tuo messaggio anche il motivo, basandosi sul valore di errno.
Nel caso non disponi della console, potresti stampare il valore di errno. Visual Studio ti fornisce poi una piccola applicazione (non ricordo il nome) che dato il codice di errore ti restituisce la stringa con il suo significato. Altrimenti cerchi sulla rete oppure nei file di include.
const char *p = "\\IDentity\\Identity.exe";
int err = _spawnlp(_P_WAIT, p,NULL);
if (err < 0)
{
char str[250];
sprintf (str, "Error number %d starting process", errno);
AfxMessageBox(str);
}
In questo secondo caso dovrai #include il corrispondente file (errno.h) se non gia' incluso.
Spero ti sia utile
sottovento
18-03-2008, 22:30
[CUT]
cmq sembrerebbe restituire 0.
Ne sei sicuro? In tal caso il problema e' un altro. Controlla MSDN
Grazie mille ho risolto...ho provato copiando tutto nella cartella corrente è funziona...il percorso era corretto anche prima, ma ho scoperto che non partiva perchè aveva bisogno di un file da cui leggeva all'apertura del programma..
Ancora Grazie.
Mi sei stato utilissimo
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.