Pregunta

#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;
}

He compilado con GCC4.2 Cualquier idea por qué esto podría chocar? Hasta ahora no recibo ningún mensaje de error en Xcode.

EDIT: error del usuario. "Crash" congeló Xcode significado cuando se ejecutó el programa. Al pulsar continuar con las obras bien.

¿Fue útil?

Solución

que se ejecuta código y compila bien en mi entorno, gcc 4.4.3 bajo Ubuntu 10. Esto me lleva a creer que usted tiene un problema diferente de la que usted piensa que tiene: -)


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.

Trate el código siguiente para ver si el exec real está fallando. Si es así, se debe a decir por qué. Si no es así, entonces no va a ver la salida rc en absoluto.

#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;
}

También comprobar para asegurarse de que el /bin/ls es lo que se espera que sea (un ejecutable, no un script, por ejemplo).

Y vale la pena aclarar lo que entendemos por "accidente". Es sólo que no produce ninguna salida? Es que el dumping un archivo de la base? Es con lo que todo el sistema operativo a sus rodillas, provocando un reinicio?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top