シェル間の切り替え、現在再生中の音楽を停止

シェル間の切り替え、現在再生中の音楽を停止

音楽を聴いて++に仮想コンソールを変更すると、突然音楽が停止しました。 Xサーバー++を実行しているコンソールに戻るか、Ctrl現在Alt使用中のコンソール(++)にユーザーとしてログインすると、音楽が再び再生を開始します。F2CtrlAltF7CtrlAltF2

Linux(私はUbuntuを使用しています)はマルチユーザーオペレーティングシステムです。私が知る限り、ユーザーが同時にログインして作業できる7つの仮想コンソールがあります。それでは、なぜこれが起こるのですか?コンソールの切り替え中にシステムが更新された場合はどうなりますか?

答え1

Linux には複数の仮想コンソールがあります。Ctrl+ Alt+ このコンソールを切り替えます。コンソール 7 からコンソール 2 に切り替えると、入出力ペリフェラルがコンソール 7 からコンソール 2 にパスを変更します。コンソール7が無効になっていると、入出力周辺機器にアクセスできなくなります。モニターに画面が表示されず、アプリケーションがキーボード入力を受け取らないなどの現象が発生します。Fn

歴史的な理由から、サウンドの入出力はキーボード、マウス、ビデオモニタなどの入力デバイスとはまったく異なるチャンネルを使用しています。コンソールデバイス(オペレーティングシステムの抽象化)にはキーボードとビデオが含まれていますが、サウンドは含まれていません。 Unixシステムでは、最も一般的なサウンドベースの実装はそのシステムとは無関係であり、サウンドペリフェラルのアクセス許可はコンソールの所有権ではなくグループメンバーシップに基づいて付与されます。これは実際には設計上の欠陥です。

Ubuntuは、コンソールにログインしているセッションのみがオーディオデバイスにアクセスできるように設定されています。コンソールを切り替えると、他のコンソールにもログインしていないとオーディオデバイスにアクセスできません。これは事実、最初からやるべきことですが、コンソールインターフェースデザイナーがサウンドを考慮していないためです。

別のコンソールに切り替えると、CPUがコンソールではなくコンピュータに接続されているため、プログラムは実行を続けます。そのコンピュータにアカウントを持っている人は誰でもCPU時間を使用できます。メモリ、ファイルなどの他のリソースの場合も同様です(権限によって異なります)。ユーザーとの対話のみがコンソール所有権によって制御されます。ログインしていないコンソールに切り替えると、プログラムがサウンド出力デバイスにアクセスできないため、サウンドの再生が停止します。

私はUbuntuが次のようにアクセス制御を実装していると思います。ポルキットしかし、正確にどのように動作するのかわかりません。

答え2

しばらく前まで人々が使っていたコンピュータ端末Unixメインフレームにデータを入力または表示します。エンドユーザーの誰かが望む場合、cat /dev/zero同じホストに接続されているすべての端末/ユーザーに出力がブロードキャストされません(これはマルチユーザーシステムであり、各ユーザーが他のユーザーに影響を与えずにジョブを実行できるため)。

私たちの時代に仮想端末(または仮想コンソール- VC)は物理学のソフトウェアシミュレーションです。コンピュータ端末、同様の方法で動作します。 VC1にログインして実行すると、ls -alR /出力はすべてのVCにブロードキャストされず、他のVCに切り替えてもlsVC1で実行され、その出力をVC1に送信します(同様に、更新コマンドも継続してVC1に送信されます)。他のVCに切り替えても起動したVCで動作します。

これで、標準出力と少し違うように聞こえます。これは、(デフォルトでは)ユーザーがログインしているVCに関係なく、出力に同じデバイスを使用しますが、出力サウンドデバイスにアクセスするにはユーザーがログインする必要があるためです。そのデバイスの。

また、見ることができますここVCの詳細。

答え3

関連情報