運行代碼和編譯在我的環境很好,Ubuntu的10下GCC 4.4.3這使我相信,你必須從你認爲你有:-)
[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.
的一個不同的問題
請嘗試以下代碼以查看實際的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
是你希望它是(可執行文件,而不是一個腳本,例如)的東西。
它是值得澄清你的意思是「崩潰」。它只是沒有產生任何輸出?它傾銷核心文件?它是否會讓您的整個操作系統癱瘓,導致重新啓動?
該程序看起來很好 - 你檢查'execv'的返回狀態嗎? – 2010-10-02 00:18:27
定義「崩潰」。 – 2010-10-02 01:47:36