HURD:なぜリモートプロセスが終了しないのですか?

HURD:なぜリモートプロセスが終了しないのですか?

ほとんどのUNIXシステムでは、プロセスはまだ実行されません。

ssh example.net sleep 1000
<<CTRL-C>>

この動作をテストしました。

aix
centos
debian
dragonfly
freebsd
hpux
irix
mandriva
miros
netbsd
openbsd
openindiana
qnx
redhat
scosysv
solaris-x86
solaris
suse
tru64
ubuntu
unixware

すべて期待通りに掃除された。 HURDでは、ログインシェルは期待どおりに終了しますが、sleepはまだinitの子プロセスとして実行されています。なぜ?そして安心できますか?

$ uname -a
GNU hurd 0.5 GNU-Mach 1.4-486/Hurd-0.5 i686-AT386 GNU

$ echo $SHELL
/bin/bash

$ /bin/bash --version
GNU bash, version 4.3.24(1)-release (i486-pc-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

ベストアンサー1

Hurd FAQでこのイベントに関する情報を見つけることができます。

??ログインシェルとは何ですか?

{MB} Hurdにはログインしたユーザーという概念があります。ユーザーにはユーザーIDまたはグループIDがありません。これは、Hurdがuidとgidのセットをサポートし、もちろん空のセットである可能性があるためです。この場合、Hurdのファイルシステムは、アクセスを拒否するのではなく、資格情報なしでユーザーの権限を決定するために使用される4番目の権限トリプル(つまりrwx)を提供します。ただし、この機能はファイルごとに有効にする必要があります。デフォルトでは、「その他」権限トリプルが使用されます。

Hurdログインシェルは、uidやgidを使用せずに実行されるシェルです。ファイルへのアクセスを制限するには、4番目の権限三重項を有効にして変更するか、標準のログインプロンプトでパスワードファイルの「login」ユーザーのログインシェルを「/bin/loginpr」に変更します。

HurdはUNIXではないことを覚えておいてください。これはMatch Microkernelを使用してUNIXカーネルを置き換えるため、UNIXの多くの概念はHurdには適用されません。

MachはCarnegie Mellon Universityで書かれたマイクロカーネルです。より説明的な用語は、最大公約数カーネルと呼ぶことができます。これは、メモリ管理、プロセス間通信、プロセス、その他多くの機能など、すべての「実際の」オペレーティングシステムに共通の機能を提供するためです。残念ながら、これらの機能にアクセスするために使用されるシステムコールは、おなじみの貴重なUnixシステムコールにはあいまいに関連しています。 「fork」、「wait」、または「sleep」システムコールもなく、SIGHUPもありません。これらすべてがGNU EmacsをMachマシンに移植するのをかなり難しくします。

引用:

おすすめ記事