一个简单的关于 fork 的问题
以下这段代码是实现一个非常简单的类似 shell 功能的效果, 让用户输入一个完整的命令, 读取后让child process执行它.
for (;;) {
printf(">> ");
scanf("%s", input);
printf("\n");
pid = fork();
wait(NULL);
if (pid==0)
{
rc = execl(input,NULL);
if (rc!=0) {
printf("Error - unknown program.\n");
exit(0);
}
}
} /* end for */
这段代码在我自己的 cygwin 就很正常, 但是在 red hat linux 上, 就只能执行第一次输入的命令, 然后就不断的打印 >> 和 Error - unknown program.
最奇怪的就是在 solaris 上, 这段代码永远都是 segmentation fault
看来这段代码的确有问题, 请熟悉 system call 的指点, 我最近才接触这些, 谢谢!