Вопрос

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

Я скомпилировал с GCC4.2 любыми идеями, почему это может сбиться? Я не получаю никаких сообщений об ошибках в Xcode.

Редактировать: ошибка пользователя. «Сбой» означал XCode Froze, когда он запустил программу. Прессование продолжения работает нормально.

Это было полезно?

Решение

Этот код проходит и компилируется нормально в моей среде, GCC 4.4.3 под Ubuntu 10. Это приводит меня к веществу, что у вас есть другая проблема от того, что вы думаете, у вас есть :-)


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.

Попробуйте следующий код, чтобы увидеть, если фактический exec не удается. Если это так, он должен сказать вам, почему. Если это не так, то вы не увидите 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;
}

Также проверьте, чтобы убедиться, что /bin/ls Это то, что вы ожидаете, что это будет (исполняемый файл, а не скрипт, например).

И стоит уточнить то, что вы подразумеваете под «аваром». Это просто не выпускает какой-либо вывод? Это бросит основной файл? Это приносит все ваши ОС на колени, вызывая перезагрузку?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top