NTシステムデザインの技術メモ
Linuxプログラミングメモ
最終更新:
ntaka206
-
view
statfs/statvfsでディスク容量get
Manpage of STATFS <http://www.linux.or.jp/JM/html/LDP_man-pages/man2/statfs.2.html>
Manpage of STATVFS <http://www.linux.or.jp/JM/html/LDP_man-pages/man2/statvfs.2.html>
statvfsの使用が推奨されている。
注意、statfs/statvsfに与えるパスは、デバイス名ではなくデバイスのマウントポイントである。
Manpage of STATVFS <http://www.linux.or.jp/JM/html/LDP_man-pages/man2/statvfs.2.html>
statvfsの使用が推奨されている。
注意、statfs/statvsfに与えるパスは、デバイス名ではなくデバイスのマウントポイントである。
#include <sys/vfs.h> #include <sys/statvfs.h> #include <stdio.h> void main(void) { int ret; struct statfs st; struct statvfs stv; ret = statfs("/data", &st); printf("statfs ret=%d\n", ret); printf("f_bsize=%d\n", st.f_bsize); printf("f_blocks=%lublock %luK\n", st.f_blocks, st.f_blocks*st.f_bsize/1024); printf("f_bfree=%lublock %luK\n", st.f_bfree, st.f_bfree*st.f_bsize/1024); printf("f_bavail=%lublock %luK\n", st.f_bavail, st.f_bavail*st.f_bsize/1024); ret = statvfs("/data", &stv); printf("statvfs ret=%d\n", ret); printf("f_bsize=%ld\n", stv.f_bsize); printf("f_frsize=%ld\n", stv.f_frsize); printf("f_blocks=%ldblock %ldK\n", stv.f_blocks, stv.f_blocks*stv.f_frsize/1024); printf("f_bfree=%ldblock %ldK\n", stv.f_bfree, stv.f_bfree*stv.f_frsize/1024); printf("f_bavail=%ldblock %ldK\n", stv.f_bavail, stv.f_bavail*stv.f_frsize/1024); }
mkdir()
int mkdir(const char *pathname, mode_t mode);
modeは、8進数で指定する。
modeは、8進数で指定する。
mkdir(dir, 0777);
0x777とかにしないように。
Manpage of MKDIR <http://www.linux.or.jp/JM/html/LDP_man-pages/man2/mkdir.2.html>
Manpage of MKDIR <http://www.linux.or.jp/JM/html/LDP_man-pages/man2/mkdir.2.html>
ソケット
read()
socketでread()=0の時は、ソケット接続が切れたと判断する。
成功した場合、読み込んだバイト数を返す (0 はファイルの終りを意味する)。
Manpage of READ <http://www.linux.or.jp/JM/html/LDP_man-pages/man2/read.2.html>
select()
Manpage of SELECT_TUT http://www.linux.or.jp/JM/html/LDP_man-pages/man2/select_tut.2.html
上記ページの「SELECT の掟」は必読。
上記ページの「SELECT の掟」は必読。
non-blocking
非ブロッキングな I/O をソケットで行うことは可能で、 fcntl(2) を使ってソケットのファイルディスクリプタに O_NONBLOCK フラグをセットすれば良い。こうするとブロックされる操作は、 (通常) EAGAIN エラーで戻ることになる (後で処理が再試行されることが期待されている)。 connect(2) では EINPROGRESS エラーが返される。この場合、ユーザはさまざまなイベントを poll(2) や select(2) を使って待つことができる。
Manpage of SOCKET <http://www.linux.or.jp/JM/html/LDP_man-pages/man7/socket.7.html>