質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

man

manは、Linuxをコマンドラインで使う際にマニュアルを見やすく表示するコマンドです。Linuxには多様な機能やディレクトリの使用についてのマニュアルがカタログページとして格納されており、カタログページは、標準では環境変数$MANPATHで定められた場所に保存されています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

1220閲覧

Man page of OPENに書いてあるファイル作成フラグO_NOFOLLOWの説明が理解できません。

dorike

総合スコア3

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

man

manは、Linuxをコマンドラインで使う際にマニュアルを見やすく表示するコマンドです。Linuxには多様な機能やディレクトリの使用についてのマニュアルがカタログページとして格納されており、カタログページは、標準では環境変数$MANPATHで定められた場所に保存されています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2021/03/11 08:21

https://linuxjm.osdn.jp/html/LDP_man-pages/man2/open.2.html
Man page of OPENに書いてあるファイル作成フラグO_NOFOLLOWの説明についてですが、

pathname がシンボリックリンクだった場合、オープンは失敗する。 これは FreeBSD の拡張で、Linux には バージョン 2.1.126 で追加された。 このフラグが指定された場合でも pathname の前の方の要素 (最後のディレクトリセパレータより前の部分) にあるシンボリックリンクについてはリンクが辿られる。 下記の O_PATH も参照のこと。

ディレクトリセパレータとは「/」(スラッシュ)のことだと認識しています。
pathname の前の方の要素 (最後のディレクトリセパレータより前の部分)は/proc/pid/stackの場合、/proc/pid/のことを指すのでしょうか?
また、シンボリックリンクについてリンクが辿られることによって何か影響があるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

/proc/pid/stackの場合、/proc/pid/のことを指すのでしょうか?

その通りです。

仮に procpid がシンボリックリンクだったとしても /proc/pid/stack のオープンは失敗しませんが、 stack がシンボリックリンクだったら失敗するという意味です。

シンボリックリンクを区別したいときは色々とあるでしょうが、たとえばあるディレクトリの下にあるファイルを列挙するというようなプログラムの場合に、シンボリックリンクによって循環が作られてしまうことがあり、リンクを辿ってしまうのだと無限ループになってしまうのでリンクを辿りたくないといったことはありうるでしょう。

投稿2021/03/11 09:45

SaitoAtsushi

総合スコア5675

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

pathname の前の方の要素 (最後のディレクトリセパレータより前の部分)は/proc/pid/stackの場合、/proc/pid/のことを指すのでしょうか?

そうです。

シンボリックリンクについてリンクが辿られることによって何か影響があるのでしょうか?

何のことでしょうか?
NO_FOLLOWを指定しない場合に、物理パスを指定する場合とシンボリックリンクを指定する場合のオープン後の差はあるかという質問でしょうか?

あるいは、シンボリックリンクの概念が理解できていないということでしょうか?

投稿2021/03/11 09:40

編集2021/03/11 09:41
otn

総合スコア85778

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問