我想傳遞給ls命令execl()函數的參數。但是當我通過命令行參數沒有得到執行在C
/bin/ls -l -a
作爲我的程序的參數,execl()函數不能識別最後兩個參數。爲什麼?代碼如下:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i,childpid;
if(argc!=4)
{
printf("you didn't provide any commandline arguments!\n");
return 0;
}
childpid=fork();
if(childpid<0)
{
printf("fork() failed\n");
return 0;
}
else
if(childpid==0)
{
printf("My ID %d\n\n",getpid());
execl(argv[1],argv[2], argv[3],NULL);
printf("If you can see this message be ware that Exec() failed!\n");
}
while(wait(NULL)>0);
printf("My ID %d, Parent ID %d, CHild ID %d\n", getpid(),getppid(),childpid);
return 0;
}
我在Ubuntu上。
問候
我沒有將char轉換爲null *,但仍然執行ls - 一個在終端,並通過他們的程序和通過execl運行是不同的 – Alfred
@阿爾弗雷德我不認爲失蹤的演員曾經是真正的問題;不重複'argv [1]'是。這是在答案中解釋的,這與我的答案與Desert Ice和hmjd的答案不同。 – user4815162342