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.
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?