我試圖創建一個簡單的程序,允許執行基本的 shell命令。問題在於execve每次都會掛起。調用ls和其他使用execve
赫雷什的代碼:
char* arglist[]={"ls","-l",NULL};
char* env[]={NULL};
int status;
while (1)
{
if (fork() != 0)
{
waitpid(-1, &status, 0);
}
else
{
execve(arglist[0],arglist,env);
}
}
return 0;
}
應該是'如果(叉()> 0)'因爲'叉'可能會失敗 –
這與'bash'無關。 'ls'不是「shell命令」,它只是一個命令。 (它是在POSIX規範的「shell和utilities」一節中指定的,是的,但它是一個實用程序,而不是shell的一部分)。 –
...另外,當在C中工作時,總是檢查你的返回值(適當的時候是'errno'),並在不成功時調用'perror';如果你看過錯誤信息,你可能不需要問這個問題。 –