qui fonctionne de code et compile bien dans mon environnement, gcc 4.4.3 sous Ubuntu 10. Cela me conduit à croire que vous avez un problème différent de celui que vous pensez que vous avez :-)
[email protected]:~$ ./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
[email protected]:~$ 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éel est défaillant. Si c'est le cas, il devrait vous dire pourquoi. Si ce n'est pas le cas, vous ne verrez pas la sortie rc
.
#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 qu'il soit (un exécutable, pas un script, par exemple).
Et cela vaut la peine de clarifier ce que vous entendez par "crash". Est-ce que ça ne produit pas de sortie? Est-ce qu'il dumping un fichier de base? Est-ce que cela met tout votre système d'exploitation à genoux, provoquant un redémarrage?
Ce programme a l'air bien - avez-vous vérifié l'état de retour de 'execv'? –
Définir "crash". –