Frage

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

ich mit GCC4.2 zusammengestellt Irgendwelche Ideen, warum dieser Absturz könnte? Ich bin keine Fehlermeldungen in Xcode zu bekommen.

EDIT: Benutzerfehler. „Absturz“ bedeutete Xcode gefriert, wenn es um das Programm läuft. Durch Drücken weiterhin funktioniert.

War es hilfreich?

Lösung

Dieser Code läuft und compiliert fein in meiner Umgebung, gcc 4.4.3 unter Ubuntu 10. Das führt mich zu glauben, dass Sie ein anderes Problem von dem einen haben Sie denken, Sie haben: -)


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.

Versuchen Sie den folgenden Code, um zu sehen, wenn der tatsächliche exec ausfällt. Wenn ja, sollte es Ihnen sagen, warum. Wenn dies nicht der Fall, dann werden Sie nicht den rc Ausgang überhaupt nicht sehen.

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

überprüfen Sie auch sicherstellen, dass der /bin/ls ist, was Sie erwarten, dass es sein (eine ausführbare Datei, kein Skript, zum Beispiel).

Und es lohnt sich zu klären, was man von „Crash“ bedeuten. Ist es produziert nur keine Ausgabe? Es es eine Core-Datei Dumping? Ist es Ihr gesamtes O in die Knie zu bringen, was einen Neustart?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top