我正在制作一个外壳,如果要将命令放在后台,我会感到困惑。我已经解析了我的命令,并且 fork 适用于前台的命令。我有它,因此可以确定是否将命令置于后台。我不确定我的代码的第一个 else if 该怎么做。任何有关如何处理后台命令的指针将不胜感激。
pid_t childpid;
int status;
childpid = fork();
if (childpid >= 0) // fork succeeded
{
if (childpid == 0 && background == 0) // fork() returns 0 to the child
{
if (execv(path, strs) < 0)
{
perror("Error on execv.");
}
exit(0); // child exits
}
else if (childpid == 0 && background ==1)
{
// What goes here?
}
else // fork() returns new pid to the parent
{
wait(&status);
}
}
else // fork returns -1 on failure
{
perror("fork"); // display error message
exit(0);
}