fork()的问题不明确,可能还有源文件?

时间:2018-02-25 16:25:25

标签: c fork

我是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);
}

0 个答案:

没有答案