【发布时间】:2015-06-27 14:44:19
【问题描述】:
我正在阅读一本关于操作系统的书,书中的一些示例代码给我一个运行时分段错误。我对 Java 的 C 语言有些陌生,我希望有人能指出我正确的方向。
这里的小程序应该生成一个简单的shell,读入一个命令并fork一个进程来执行它。问题在于本书的代码本身,在“scanf”函数调用处;当我在“osh>”提示符下输入内容时,出现分段错误。
根据我对 C 的了解,我认为可能需要为 args 数组分配内存,但由于它是直接在 main 函数中声明的数组,我想我可能不需要。我想如果我这样做了,它会在本书的代码中。
不管怎样,这是产生故障的代码:
char* args[MAX_LINE/2 + 1]; /* command line (of 80) has max of 40 arguments */
int should_run = 1;
int i, upper;
while (should_run){
printf("osh>");
fflush(stdout);
scanf("%s", args); /* THIS CAUSES SEGFAULT */
char* localArgs[3];
char* pch;
/* ... */
提前感谢您的帮助。学习 C 中的内存管理是一段漫长的旅程。
【问题讨论】:
标签: c segmentation-fault scanf