Submit Search
詳解UNIXプログラミング 第4章 ファイルとディレクトリ
1 like
2,793 views
T
Takaya Kotohata
個人的な学習用です 間違いがあったら指摘いただけると助かります http://tkot.hatenablog.com/
Read more
1 of 32
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
More Related Content
PDF
Slide
Kazki Matsumoto
PDF
LINQ基本のキ
Kouji Matsui
PPTX
Linuxのファイルシステムについて調べてみた
basicinc_dev
PDF
Open Apostille
Kazuya Okada
PPTX
3-1
Atsushi Hara
PDF
Linuxとファイル
Jun Ishitsuka
KEY
Unix1
Takaya Kotohata
DOC
06 後期勉強会一年の部【加藤】
yu-Linux
Slide
Kazki Matsumoto
LINQ基本のキ
Kouji Matsui
Linuxのファイルシステムについて調べてみた
basicinc_dev
Open Apostille
Kazuya Okada
3-1
Atsushi Hara
Linuxとファイル
Jun Ishitsuka
Unix1
Takaya Kotohata
06 後期勉強会一年の部【加藤】
yu-Linux
What's hot
(18)
PDF
Web技術勉強会 第34回
龍一 田中
PDF
全文検索エンジンMroonga_エンジニア勉強会20140418
エンジニア勉強会 エスキュービズム
PDF
UNIXことはじめ
Tomoya Miwa
ODP
Programming under capability mode
Yuichiro Naito
ODP
Inotify
Keiichiro Kawasaki
PDF
1 Linux入門 第1章 UNIX/Linuxとは
Enpel
PDF
14 tm1 turbointegrator
Shinsuke Yamamoto
PDF
Unixファイルシステムの歴史
magoroku Yamamoto
PDF
第3回 FIC&FCS合同勉強会
Hiroyuki Honta
PDF
04 filesystem include
文樹 高橋
PDF
Ruby(thorライブラリ)
松本 雄貴
PDF
追いかけファイル読み込み開発注意点
Tetsuya Sasamori
PDF
ファイルの隠し方
mfumi
PDF
Minecraft modding 02
Takunology
PDF
Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介
Yu Nobara
PDF
[CB19] Autopsyで迅速なマルウェアのスキャンとディスク内の簡単調査 by ターナー・功
CODE BLUE
PPT
Aries Kubo080822
kubo
ODP
第4回医療オープンソースソフトウェア協議会セミナー基調講演
Shinji Kobayashi
Web技術勉強会 第34回
龍一 田中
全文検索エンジンMroonga_エンジニア勉強会20140418
エンジニア勉強会 エスキュービズム
UNIXことはじめ
Tomoya Miwa
Programming under capability mode
Yuichiro Naito
Inotify
Keiichiro Kawasaki
1 Linux入門 第1章 UNIX/Linuxとは
Enpel
14 tm1 turbointegrator
Shinsuke Yamamoto
Unixファイルシステムの歴史
magoroku Yamamoto
第3回 FIC&FCS合同勉強会
Hiroyuki Honta
04 filesystem include
文樹 高橋
Ruby(thorライブラリ)
松本 雄貴
追いかけファイル読み込み開発注意点
Tetsuya Sasamori
ファイルの隠し方
mfumi
Minecraft modding 02
Takunology
Oftec Lightning Talk 第7回 最近触ったLinuxディストリビューションの紹介
Yu Nobara
[CB19] Autopsyで迅速なマルウェアのスキャンとディスク内の簡単調査 by ターナー・功
CODE BLUE
Aries Kubo080822
kubo
第4回医療オープンソースソフトウェア協議会セミナー基調講演
Shinji Kobayashi
Ad
Viewers also liked
(20)
PDF
百万件くらいのデータの扱い方
Masafumi Yokoyama
PDF
【幕張読書会】Unixカーネルの設計 3(バッファキャッシュ)
ktateish
PPTX
エンジニアにMacを薦める理由
Hiroyuki Kusu
PDF
Editor縮小のススメ
Nobukazu Hanada
PPTX
GPUによる多倍長整数乗算の高速化手法の提案
Koji Kitano
PDF
私がお世話になった技術書たち
法林浩之
PPTX
SIMDで整数除算
shobomaru
PPTX
Unixコマンド入門
Satosi Sakai
PDF
Xeonphiハッカソンでexpを作ってみた
MITSUNARI Shigeo
PDF
Boost.SIMD
Akira Takahashi
PDF
PFI Seminar 2010/02/18
Preferred Networks
PDF
Unix 基礎
Sho A
PDF
Unixカーネルの設計 7 プロセスの制御
Norito Agetsuma
PDF
Software Foundation:形式的証明と非形式的証明
T T
PDF
バージョン管理入門
Masafumi Yokoyama
PPT
マインドハック研究会 ライフハック編 20100512
tosch0718
KEY
Unix2
Takaya Kotohata
PDF
GTD 残業を減らす方法
Gaddict
PPTX
TO LOVE IN'~人生のパートナーを見つける旅~
Shuhei Hinoshita
PPTX
IGDA_Sig-BoardGame_ワークショップ用資料
Ryosuke Sugawara
百万件くらいのデータの扱い方
Masafumi Yokoyama
【幕張読書会】Unixカーネルの設計 3(バッファキャッシュ)
ktateish
エンジニアにMacを薦める理由
Hiroyuki Kusu
Editor縮小のススメ
Nobukazu Hanada
GPUによる多倍長整数乗算の高速化手法の提案
Koji Kitano
私がお世話になった技術書たち
法林浩之
SIMDで整数除算
shobomaru
Unixコマンド入門
Satosi Sakai
Xeonphiハッカソンでexpを作ってみた
MITSUNARI Shigeo
Boost.SIMD
Akira Takahashi
PFI Seminar 2010/02/18
Preferred Networks
Unix 基礎
Sho A
Unixカーネルの設計 7 プロセスの制御
Norito Agetsuma
Software Foundation:形式的証明と非形式的証明
T T
バージョン管理入門
Masafumi Yokoyama
マインドハック研究会 ライフハック編 20100512
tosch0718
Unix2
Takaya Kotohata
GTD 残業を減らす方法
Gaddict
TO LOVE IN'~人生のパートナーを見つける旅~
Shuhei Hinoshita
IGDA_Sig-BoardGame_ワークショップ用資料
Ryosuke Sugawara
Ad
Similar to 詳解UNIXプログラミング 第4章 ファイルとディレクトリ
(10)
PDF
もっと New I/O。
Yuichi Sakuraba
PDF
NIO.2を使って簡単ファイル操作
Yuichi Sakuraba
PPTX
Nio2
Appresso Engineering Team
PPT
使いこなせて安全なLinuxを目指して
Toshiharu Harada, Ph.D
PDF
File API: Writer & Directories and System
Taku AMANO
PDF
Naming
Shinsuke Nishio
PPTX
TypedFilePath
Naohiro Yoshikawa
PPT
LSMの壁
guest6cf6c1
PDF
コード読経会報告書
Masahiko Toyoshi
PDF
Javaセキュアコーディングセミナー東京第3回講義
JPCERT Coordination Center
もっと New I/O。
Yuichi Sakuraba
NIO.2を使って簡単ファイル操作
Yuichi Sakuraba
Nio2
Appresso Engineering Team
使いこなせて安全なLinuxを目指して
Toshiharu Harada, Ph.D
File API: Writer & Directories and System
Taku AMANO
Naming
Shinsuke Nishio
TypedFilePath
Naohiro Yoshikawa
LSMの壁
guest6cf6c1
コード読経会報告書
Masahiko Toyoshi
Javaセキュアコーディングセミナー東京第3回講義
JPCERT Coordination Center
詳解UNIXプログラミング 第4章 ファイルとディレクトリ
1.
詳解UNIXプログラミング 4. ファイルとディレクトリ
2.
stat関数 int stat(const char
*pathname, struct stat *buf); pathnameで指定したファイルに関する情報を 得るために使用 bufが指す構造体に情報を埋め込む
3.
ファイルの種類 (a) ふつうのファイル (b)
ディレクトリ (c) 文字 型特殊ファイル (d) ブロック型特殊ファイル (e) FIFO (f) ソケット (g) シンボリックリンク 特殊ファイルはシステムの装置に使用される FIFOはプロセス間通信で使用される。名前付 きパイプ
4.
ユーザID/グループID 各プロセスには(1) 実ユーザID (2)
実グループ ID (3) 実効ユーザID (4) 実効グループID (5) 補 足グループID (6) 保存セットユーザID (7) 保存 セットグループID が存在
5.
実ユーザ/実グループID 実際に誰であるかを表す ログインしたときにパスワードファイルから取 得 ログインセッションを通じて変化しない
6.
実効ユーザ/グループID ファイルアクセスパーミッションの決定に使用 通常は実ユーザIDなどに等しい 実効ユーザに所有者を設定することが可能=> セットユーザIDビット,セットグループIDビッ ト
7.
ファイルアクセスパーミッション(1) いかなるファイルをオープンするときもディレ
クトリの実行権限が必要 ディレクトリの実行と読取権限は異なる ディレクトリの読取権限があればディレクトリ 内の全てのファイル名が取得できる
8.
ファイルアクセスパーミッション(2) open関数にO_TRUNCフラグを指定するとき は書き込み権限が必要
ディレクトリに書き込み権限と実行権限がない と新しいファイルを作成できない 既存ファイルを削除するにはそのディレクトリ に対する書き込み権限と実行権限で必要十分
9.
新規ファイル/ディレクトリ
の所有権 各プロセスの実効ユーザIDがファイルのユーザ IDに割り当てられる ファイルのグループIDは(a)プロセスの実効グ ループID か (b)そのファイルを収めるディレク トリのグループID のどちらかを選択できる
10.
access関数 open関数は実効ユーザ/グループIDを使う 場合によっては実ユーザ/グループIDを使いた い(セットユーザIDを用いて他人のIDでプロセ スを走らせているときなど)
11.
umask関数 プロセスごとにファイル作成時のパーミッショ ンを指定できる umaskの値は、基本的にはログイン時のシェル の起動ファイルで設定され、以後変更しない アクセスパーミッションビットが適切に設定さ れることを保証したい時に使う
12.
chmod/fchmod関数 既存ファイルのファイルアクセスパーミッショ ンを変更する int chmod(const char
*pathname, mode_t mode); int fchmod(int filedes, mode_t mode); modeは<sys/stat.h>の定数
13.
スティッキービット S_ISVTXビット (sticky bit) プログラムが終了してもテキスト領域がスワッ プ領域に保存される 後のUNIXのバージョンではS_ISVTXビット= セーブテキストビット
14.
ディレクトリに対する スティッキービット ディレクトリに対してスティッキービットを設 定可能(SVR4と4.3+BSD) /tmpや/var/spool/uucppublicに利用される 誰もが読み書き実行できるが、名称変更や削 除はさせない
15.
chown,fchown,lchown ファイルのユーザIDやグループIDを変更 lchownはシンボリックリンクが指すファイル の代わりにシンボリックリンク自体を変更
16.
ファイルサイズ 普通のファイルは0サイズも許される 普通のファイルには間隔[holl]が含まれても良 い=現在の末尾を超えてシークしてからデータ を書き込むと発生
17.
ファイルの切り詰め int truncate(const char
*pathname, off_t length) int ftruncate(int filedes, off_t length) 既存ファイルをlengthバイトに切り詰める ファイルがlengthより大きいと、lengthバイト 以後のデータは参照できなくなる
18.
ファイルシステム(1) パーティション
パーティション パーティション ブート スーパー ディレクトリブロックと iリスト ブロック ブロック データブロック iノード ・・・ iノード
19.
ファイルシステム(2) ディスクの各パーティションにファイルシステ ムが収められる iノードは固定長の項目で、ファイルに関する ほぼ全ての情報を収める iノードとデータブロックは1:n対応し、n=0と なったときに初めてデータが解放される
20.
ファイルシステム(3)
データ ディレクトリ iリスト ・・・ ・・・ ブロック ブロック ・・・ iノード ・・・ iノード iノード ファイル名 番号
21.
ファイルシステム(4) iノードはファイルシステムをまたげない iノードにはファイルの種類、アクセスパー ミッションビット、ファイルサイズ、データブ ロックへのポインタなどが含まれる
22.
link,unlink関数 int link(const char
*existingpath, const char *newpath); ハードリンクの作成 int unlink(const char *pathname); リンクカウントを減少させる 一時ファイルはopenかcreatの直後にunlinkす るとオープンされているうちは削除されず、ク ローズか終了時に削除が保証される
23.
remove,rename関数 int remove(const char
*pathname); ファイルに対してはunlinkと等価、ディレクト リに対してはrmdirと等価 int rename(const char *oldname, const char *newname);
24.
シンボリックリンク ファイルシステムの制約がない 誰でもディレクトリに対して作成できる ファイルを参照する関数がシンボリックリンク を
るかどうかは覚えないといけない chownがシンボリックリンクを るかは実装に よる
25.
symlink,readlink int symlink(const char
*actualpath, const char *sympath); シンボリックリンクを作成する int readlink(const char *pathname, char *buf, int bufsize); リンクを らず、リンク自身をオープンする場 合はreadlink()を用いる
26.
ファイルの時刻 st_atime ファイルの最終参照(access)時刻 st_mtime ファイルの最終修正(modification)時 刻 st_ctime
iノードお最終状態変更(change)時刻
27.
修正と状態変更 修正はファイルのデータ自体を変更すること 状態変更は実際の内容を変えずにiノードに操 作すること(パーミッション変更など) 参照時刻と修正時刻はutime()で変更できる
28.
mkdir,rmdir int mkdir(const char
*pathname, mode_t mode); ディレクトリにあるファイル名を参照できるた めに、実行権限を設定しないといけない int rmdir(const char *pathname); ディレクトリのリンクカウントが0になり他の プロセスが開いてなければ領域は解放される
29.
ディレクトリの読取 ディレクトリ自体に書き込めるのはカーネル ディレクトリに対する書き込み・実行許可は ファイルの新規作成やファイルの削除権限 DIR *opendir(const char
*pathname); struct dirent *readdir(DIR *dp)
30.
chdir,fchdir,getcwd プロセスにはカレント作業ディレクトリが存在 chdirを呼び出すプログラムを実行しても、そ のプログラムとシェルのカレント作業ディレク トリは異なるから、シェルから見た作業ディレ クトリは変更がない点に注意
31.
sync,fsync(1) ディスク入出力が通過するバッファキャッシュ がカーネルに存在=遅延出力(delayed write) バッファを他のディスクブロックに再利用する 必要が生じると、遅延出力ブロックをディスク に書き込む
32.
sync,fsync(2) syncは出力用に修正されたブロックバッファを 待ち行列に入れて戻る=実際の入出力の完了を 待たない fsyncはfiledesで指定される1つのファイルを扱 い、入出力の完了を待ってから戻る=ディスク に書きだされたことを保証するときに使用
Editor's Notes
#2:
\n
#3:
\n
#4:
\n
#5:
\n
#6:
\n
#7:
\n
#8:
\n
#9:
\n
#10:
\n
#11:
\n
#12:
\n
#13:
\n
#14:
\n
#15:
\n
#16:
\n
#17:
\n
#18:
\n
#19:
\n
#20:
\n
#21:
\n
#22:
\n
#23:
\n
#24:
\n
#25:
\n
#26:
\n
#27:
\n
#28:
\n
#29:
\n
#30:
\n
#31:
\n
#32:
\n
#33:
\n
Download