我是C的初学程序员,我正在尝试编写一个基本的shell。我正在尝试使用fork()函数,但它似乎不起作用。我陷入了一个无休止的循环,只是我的shell提示输入,然后看起来什么也没用。
我运行调试器并将断点设置为程序分叉的位置,此时,我收到错误消息
Can't find a source file at "/build/glibc-Cl5G7W/glibc-2.23/posix/../sysdeps/nptl/fork.c"
Locate the file or edit the source lookup path to include its location.
我认为发生的事情是我要么弄乱了我的#include标题,要么当我尝试编译时,我把一些库留了下来。我刚刚用标准编译
gcc -o shell custom_shell.c
我记得我的老师说了一些关于使用库编译的内容,但我认为我的#include标题会涵盖这一点,我在网上找不到任何其他内容。
我警惕的部分代码是
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>
...
pid_t pid = fork();
if (pid < 0){ //error
perror("fork");
exit(1);
}
else if (pid == 0){ //child
execvp(args[0], args);
}
else{ //parent
wait(0);
}