【ディレクトリの作成】
ディレクトリを作成するための関数 mkdir の使い方について説明します.
使い方: mkdir( 作成するディレクトリのパス名 , アクセス権 )
ディレクトリを作成する際には,誰に対して読み書き・実行を許可するかという「アクセス権」を設定します.
アクセス権は
1) ユーザに対する読み書き・実行
2) グループに対する読み書き・実行
3) 他人に対する読み書き・実行
の3種類を設定します.
アクセス権を意味する記号(定義)は下記の通りで,それらを論理和として組み合わせ,整数型の値にして mkdir の引数にします.
S_IRWXU 00700 ファイル所有者のアクセス許可用のビットマスク S_IRUSR 00400 所有者の読み込み許可 S_IWUSR 00200 所有者の書き込み許可 S_IXUSR 00100 所有者の実行許可 S_IRWXG 00070 グループのアクセス許可用のビットマスク S_IRGRP 00040 グループの読み込み許可 S_IWGRP 00020 グループの書き込み許可 S_IXGRP 00010 グループの実行許可 S_IRWXO 00007 他人 (others) のアクセス許可用のビットマスク S_IROTH 00004 他人の読み込み許可 S_IWOTH 00002 他人の書き込み許可 S_IXOTH 00001 他人の実行許可 |
サンプルプログラム: アクセス権を設定してディレクトリ s_mkdir_d をつくる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <stdio.h> #include <sys/stat.h> int main() { const char dname[] = "s_mkdir_d"; int r; mode_t mode; /*--- mode ---- read -- write - execute --------* | user 1 1 1 | | group 1 0 1 | | other 1 0 1 | *----------------------------------------------*/ mode = S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH; r = mkdir(dname,mode); printf("result: %d\n",r); } |
【ディレクトリの削除】
ディレクトリを削除するための関数 rmdir の使い方について説明します.
使い方: rmdir( 削除するディレクトリのパス名 )
サンプルプログラム ディレクトリ s_mkdir_d を削除する
1 2 3 4 5 6 7 8 9 10 11 | #include <stdio.h> #include <unistd.h> int main() { const char dname[] = "s_mkdir_d"; int r; r = rmdir(dname); printf("result: %d\n",r); } |
【ディレクトリの移動】
ディレクトリを移動(カレントディレクトリを変更)するための関数 cd の使い方について説明します.
使い方: chdir( ディレクトリのパス名 )
これを実行することで,カレントディレクトリを「ディレクトリのパス名」にすることができます.
サンプルプログラム ディレクトリ s_mkdir_d2 を作成した後そこに移動し,更に同じ名前のディレクトリ s_mkdir_d2 を作成する
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 | #include <stdio.h> #include <unistd.h> #include <sys/stat.h> int main() { const char dname[] = "s_mkdir_d2"; int r; mode_t mode; /*--- mode ---- read -- write - execute --------* | user 1 1 1 | | group 1 0 1 | | other 1 0 1 | *----------------------------------------------*/ mode = S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH; r = mkdir(dname,mode); printf("result: %d\n",r); if ( r == 0 ) { r = chdir(dname); if ( r == 0 ) { r = mkdir(dname,mode); printf("result: %d\n",r); } else { fprintf(stderr,"chdir failure: %s\n",dname); } } else { fprintf(stderr,"mkdir failure(1): %s[%d]\n",dname,r); } } |