#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的冻结。按压继续工作正常。

有帮助吗?

解决方案

运行代码和编译罚款在我的环境,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