私はシェルを作成していますが、コマンドをバックグラウンドに配置する場合の対処方法について混乱しています。コマンドを解析しました。フォークはフォアグラウンドにあるコマンドに対して機能します。コマンドをバックグラウンドに置くかどうかを判断できるように、私はそれを持っています。私のコードの場合、最初に何をすべきかよくわかりません。バックグラウンドコマンドにアプローチする方法についてのポインタをいただければ幸いです。
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);
}