Identificativo articolo: 922279 - Ultima modifica: mercoledì 7 febbraio 2007 - Revisione: 1.1

BUG: Messaggio di errore quando si esegue un programma Visual c ++ che chiama la funzione execve o la funzione wexecve in Visual Studio 2005: "L'applicazione non correttamente inizializzata (0xc0150004)"

Suggerimento di sistemaIl presente articolo fa riferimento a un sistema operativo diverso da quello in uso. Il contenuto dell'articolo che potrebbe non essere relativo al sistema in uso è disabilitato.

In questa pagina

Espandi tutto | Chiudi tutto

Sintomi

In Microsoft Visual Studio 2005, quando si esegue un programma Microsoft Visual c ++ che chiama la funzione execve o la funzione wexecve viene potrebbe essere visualizzato il seguente messaggio di errore:
L'applicazione non correttamente inizializzata (0xc0150004). Fare clic su OK per terminare l'applicazione.

Cause

Questo problema si verifica quando sono vere le seguenti condizioni:
  • Un programma di Visual c ++ padre chiama la funzione execve o la funzione wexecve per caricare ed eseguire un processo figlio
  • Parametro di funzione wexecve o la funzione execve envp contiene una stringa vuota.

Risoluzione

Per risolvere il problema, assicurarsi che il parametro di funzione wexecve o la funzione execve envp non contiene una stringa vuota.

Status

Microsoft ha confermato che questo un bug nei prodotti sono elencati nella sezione "Si applica a".

Informazioni

I seguenti passaggi riprodurre il problema menzionato nella sezione "Sintomi". Inoltre, la procedura viene illustrato come risolvere il problema utilizzando il metodo descritto nella sezione "Risoluzione".

Procedura per riprodurre il problema

  1. Creare un progetto Visual c ++ padre denominato T.cpp.
  2. Aggiungere nell'esempio di codice riportato di seguito per T.cpp.
    #include <stdio.h>
    #include <process.h>
    #include <tchar.h>
    #include <stdlib.h>
    
    TCHAR * args1[] =
    {
     _T("child.exe"),
     0
    };
    
    TCHAR * envs2[] = 
    {
     _T(""),
     0
    };
    
    int main() {
     if ( _execve( "child.exe", args1, envs2   ) == -1 )
      {
       printf("failed\n");
       return 1;
      }
  3. Creare un progetto di Visual c ++ figlio denominato Child.cpp.
  4. Aggiungere nell'esempio di codice per Child.cpp.
    #include <stdio.h>
    
    int main() {
     printf("hello\n");
    }
    
    
  5. Compilare ed eseguire quindi T.cpp e Child.cpp. È visualizzato il messaggio di errore menzionato nella sezione "Sintomi".
Per risolvere il problema che si verifica dopo riprodurre il problema, attenersi alla seguente procedura:
  1. Nella T.cpp. incollare il seguente valore nel parametro [] envs2 per sostituire una stringa vuota:
    "myenv=A"
    T.cpp simile a questo punto nell'esempio di codice riportato di seguito.
    #include <stdio.h>
    #include <process.h>
    #include <tchar.h>
    #include <stdlib.h>
    
    TCHAR * args1[] =
    {
     _T("child.exe"),
     0
    };
    
    TCHAR * envs2[] = 
    {
     _T("myenv=A"),
     0
    };
    
    int main() {
     if ( _execve( "child.exe", args1, envs2   ) == -1 )
      {
       printf("failed\n");
       return 1;
      }
  2. Compilare ed eseguire quindi T.cpp. Il programma funziona correttamente.

Le informazioni in questo articolo si applicano a:
  • Microsoft Visual Studio 2005 Professional Edition
  • Microsoft Visual Studio 2005 Standard Edition
  • Microsoft Visual Studio 2005 Team System Architect Edition
  • Microsoft Visual Studio 2005 Team System Developer Edition
  • Microsoft Visual Studio 2005 Team System Team Foundation:
  • Microsoft Visual Studio 2005 Team System Test Edition
Chiavi: 
kbmt kbtshoot kberrmsg kbexpertiseinter kbbug KB922279 KbMtit
Traduzione automatica articoliTraduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 922279  (http://support.microsoft.com/kb/922279/en-us/ )
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.