【ディレクトリの作成】
ディレクトリを作成するための関数 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 をつくる
#include
#include
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 を削除する
#include
#include
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 を作成する
#include
#include
#include
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);
}
}