ディレクトリに「実行」ビットが設定されていないと、そのディレクトリをプロセスの作業ディレクトリに設定できないことがわかりました。
しかし、なぜこれが起こるのか理解できません。プロセスの作業ディレクトリを設定するときに、プロセスメモリの文字列だけを変更すればよいという意味です。それでは、プロセスの作業ディレクトリ設定とディレクトリの「実行」ビットの間にはどのような関係がありますか? !
ベストアンサー1
UNIXカーネルの観点から作業ディレクトリを変更するには、chdir()
システムコールを呼び出す必要があります。
このシステムコールは、カーネルで権限チェックを実行して、プロセスがそのパスに対する実行権限を持っているかどうかを確認します。これはUNIXの定義/仕様です。
権限がない場合、システムコールはエラーを返します。その場合、プロセスの現在の作業ディレクトリが変更されます。
状態は実際には単純な文字列ではなく、ディレクトリ inode へのポインタで表されます。これがプロセスが占めるディレクトリの名前を変更できる理由です。
注:実際にディレクトリを読み取らなくてもこれを行うことができます。読み取りを使用すると、ディレクトリのリストを読み取ることができます。ディレクトリ名がわかっている場合にのみ、cd
ディレクトリとして実行してファイルを開くことができます。