私は自分のシェルを c で書いていますが、バックグラウンド プロセスの実装に問題があります。BASH では、「&」で終わるプロセスを実行するたびに、そのプロセスがバックグラウンドで実行を開始します。バックグラウンド プロセスの出力が端末に表示され、バックグラウンド プロセスに入力が必要になると、「fg」コマンドを実行するまで中断されます。
では、バックグラウンド プロセスを実装するにはどうすればよいでしょうか。
コマンドの通常の実行 (& で終わらない) では、fork システム コールを呼び出し、子プロセスでコマンドを実行すると、親は子プロセスの実行を待機します (wait() による)。
また、「&」を含むコマンドについても同じことを行いましたが、親は子プロセスの実行を待機しません。ここで私の問題は、バックグラウンドプロセスが入力を必要とするたびに、端末を制御することです。入力が必要なときに子プロセスを一時停止する方法。