我试图创建一个简单的程序,允许执行基本的 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';如果你看过错误信息,你可能不需要问这个问题。 –