Question

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

Je compilé avec GCC4.2 Toutes les idées pour lesquelles cela pourrait tomber en panne? Je ne reçois aucun message d'erreur dans Xcode.

EDIT: erreur de l'utilisateur. « Crash » signifiait Xcode se figea quand il dirigeait le programme. Une pression continue fonctionne très bien.

Était-ce utile?

La solution

Ce code se exécute et compile bien dans mon environnement, gcc 4.4.3 sous Ubuntu 10. Cela conduit à me croire que vous avez un problème différent de celui que vous pensez que vous avez: -)


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.

Essayez le code suivant pour voir si le exec réelle échoue. Le cas échéant, il devrait vous dire pourquoi. Dans le cas contraire, vous ne verrez pas la sortie rc du tout.

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

Vérifiez également que le /bin/ls est ce que vous attendez que ce soit (un exécutable, pas un script, par exemple).

Et il est utile de préciser ce que vous entendez par « accident ». Est-il tout simplement pas produit une sortie? Il le déversement d'un fichier de base? Est-il d'apporter votre OS entier à genoux, ce qui provoque un redémarrage?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top