ディレクトリの作成/削除/移動

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

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)