otakumesi / record_of_reading

読書記録です。
0 stars 0 forks source link

ls #21

Open otakumesi opened 7 years ago

otakumesi commented 7 years ago

https://github.com/freebsd/freebsd/blob/master/bin/ls/ls.c

FreeBSDのリーディングメモ

otakumesi commented 7 years ago

POSIX関係の関数の失敗値は基本的に-1を返す?

otakumesi commented 7 years ago

isattyはファイルディスクリプタが端末を参照しているどうかを判定する関数。

ファイルディスクリプタについては下記を参照した。 http://qiita.com/toshihirock/items/78286fccf07dbe6df38f

otakumesi commented 7 years ago
ファイル記述子 POSIXでの定義 意味
0 STDIN_FILENO 標準入力
1 STDOUT_FILENO 標準出力
2 STDERR_FILENO 標準エラー出力

2以降はオープンされたファイルなどが入っていく

otakumesi commented 7 years ago

ioctlはライブラリの関数だった 1つ目の引数のファイルディスクリプタから、二つの引数で設定したオプションに合わせた内容をシステムに問い合わせて、その結果を最後の引数に代入するというものっぽい 参考 https://linuxjm.osdn.jp/html/LDP_man-pages/man4/tty_ioctl.4.html https://ja.wikipedia.org/wiki/Ioctl

otakumesi commented 7 years ago

TIOCGWINSZはウィンドウサイズを取得するもの

otakumesi commented 7 years ago

FTS_PHYSICALとはシンボリックリンクをシンボリックリンク自身としてみるもの その先のファイルではなく https://linuxjm.osdn.jp/html/LDP_man-pages/man3/fts.3.html

otakumesi commented 7 years ago

xo_parse_argsとは--libxo周りのオプションをパースするもののようだ

そのほか、xo_がプレフィクスになっているものはそれ関係

libxoとはXML、JSON、HTMLなどの文書に出力するための関数セットを提供しているライブラリの模様

参考 http://www.unix.com/man-page/freebsd/3/xo_parse_args/ https://github.com/Juniper/libxo

otakumesi commented 7 years ago

getoptとはオプション解釈して返す関数

これ以上見つからなければ-1を返す 存在していればオプション引数を返して、外部にある変数optind、nextcharを更新する

外部変数optiondを元にオプション引数にアクセスするらしく、 次にgetoptを実行すると次のオプション引数が返される

int getopt(int argc, char const argv[], const char optstring);

ちなみに argc...コマンドラインで引き渡された引数の数 argv...コマンドラインで引き渡された引数の配列

-がつくものはオプション要素とみなされるらしい

ちなみにここのロジックでフラグを立てたりして、のちのロジックにまわしてる

参考 https://linuxjm.osdn.jp/html/LDP_man-pages/man3/getopt.3.html

otakumesi commented 7 years ago

getuid()は呼び出し元のプロセスの実行ユーザーIDを得る

参考 https://linuxjm.osdn.jp/html/LDP_man-pages/man2/getuid.2.html