CS クラスのシェルをプログラミングしていますが、ユーザーが「&」文字を渡すと、プロジェクトの一部でプロセスがバックグラウンドで実行されます。
プロセスがフォアグラウンドで実行されている場合、プロセスは単にフォアグラウンドにexecvp
あるため、端末の制御下に置かれます。ただし、バックグラウンド プロセスの場合は、プロセスの実行を開始した後でメイン シェルに制御を戻す必要があります。システムコールtcsetpgrp(pid_t)
が引数として渡されたプロセスをフォアグラウンドに配置することは理解していますが、その使用方法がよくわかりません。
バックグラウンド プロセスの場合、後で呼び出す必要がありますtcsetpgrp
か? execvp
もしそうなら、呼び出すだけでシェルの pid を取得できgetpid
ますか?