Domanda

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main (int argc, const char * argv[])
{
    printf("start\n");
    char *const parmList[] = {"/bin/ls", "-l", NULL};
    execv("/bin/ls", parmList);
    return 0;
}

ho compilato con GCC4.2 Tutte le idee perché questo potrebbe bloccarsi? Non ricevo eventuali messaggi di errore in Xcode.

EDIT: errore dell'utente. "Crash" congelato Xcode significava quando correva il programma. La pressione continua funziona bene.

È stato utile?

Soluzione

che viene eseguito codice e compila bene nel mio ambiente, gcc 4.4.3 in Ubuntu 10. Ciò mi porta a credere che hai un problema diverso da quello che si pensa di avere: -)


pax@pax-desktop:~$ ./testprog
start
total 2152
drwxr-xr-x 11 pax pax    4096 2010-10-02 08:23 Pax
: :
----r-S---  1 pax pax       0 2010-08-23 18:58 xyz

pax@pax-desktop:~$ gcc --version
gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Prova il seguente codice per vedere se il exec attuale sta fallendo. Se lo è, si dovrebbe dire il perché. Se non lo è, allora non si vedrà l'uscita rc a tutti.

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>

int main (int argc, const char * argv[])
{
    int rc;
    printf("start\n");
    char *const parmList[] = {"/bin/ls", "-l", NULL};
    rc = execv("/bin/ls", parmList);
    printf ("rc = %d, errno = %d\n", rc, errno);
    return 0;
}

Inoltre controllare per assicurarsi che il /bin/ls è quello che si aspetta che sia (un eseguibile, non uno script, per esempio).

E vale la pena di chiarire che cosa si intende per "crash". E 'solo che non produce alcun output? Esso è un componente del sistema di dumping? E 'portando l'intero sistema operativo in ginocchio, provocando un riavvio?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top