当前位置: 技术问答>linux和unix
模拟shell的程序问题
来源: 互联网 发布时间:2016-08-03
本文导语: 请问个位老大,为什么我运行了我用C写的程序,会出现叫做什么segmentation fault(core dumped), 我搞不懂啊 ,请高人帮忙修改,我在线等,谢啦 下面是我写的代码 #include #include #include int main() { while(true) { char...
请问个位老大,为什么我运行了我用C写的程序,会出现叫做什么segmentation fault(core dumped), 我搞不懂啊 ,请高人帮忙修改,我在线等,谢啦
下面是我写的代码
#include
#include
#include
int main()
{
while(true)
{
char str[1024];
char string1[] = "quit";
char string2[] = "exit";
printf("please enter:");
scanf("%s", str);
if(strcmp(str, string1)== 0 || strcmp(str, string2) == 0)
{
return 0;
}
else
{
int i = 0;
char * ptr = str;
char * argv[128];
while(true)
{
argv[i] = ptr;
while(*ptr != 0 && *ptr != ' ')
{
++ptr;
}
if(*ptr = 0)
break;
*ptr = 0;
++i;
}
argv[i] = 0;
char *envp[] = {"PATH=/bin",0};
execve(argv[0], argv, envp);
}
}
return 0;
}
下面是我写的代码
#include
#include
#include
int main()
{
while(true)
{
char str[1024];
char string1[] = "quit";
char string2[] = "exit";
printf("please enter:");
scanf("%s", str);
if(strcmp(str, string1)== 0 || strcmp(str, string2) == 0)
{
return 0;
}
else
{
int i = 0;
char * ptr = str;
char * argv[128];
while(true)
{
argv[i] = ptr;
while(*ptr != 0 && *ptr != ' ')
{
++ptr;
}
if(*ptr = 0)
break;
*ptr = 0;
++i;
}
argv[i] = 0;
char *envp[] = {"PATH=/bin",0};
execve(argv[0], argv, envp);
}
}
return 0;
}
|
segmentation:分段错误,1,2楼 顶个。
|
segmentation fault就是说你使用了无效的指针