C言語,rmdir()関数でディレクトリを削除する

スポンサーリンク

鍛錬 804

C言語,rmdir()関数でディレクトリを削除する

指定したディレクトリを削除する方法の一つとして、rmdir()関数を使用する方法があります。
 
以下は、rmdir()関数についてです。

#include <unistd.h>

int rmdir(const char *pathname);
 

 
削除するディレクトリは空である必要があります。

引数

以下は、上記の引数についてです。

引数 意味
const char *pathname ディレクトリのパス

戻り値

以下は、戻り値についてです。

戻り値
int 成功 0
int エラー -1
 
スポンサーリンク

プログラム

以下は、指定したディレクトリを削除するプログラム、test_rmdir.c です。

今回は、次のディレクトリを削除しています。

削除するディレクトリのパス
/var/tmp/test/ABC
// include
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

// main
int main(void)
{
	char dir_path[256] = "";
	int ret;
	
	// ディレクトリのパスを格納
	strncpy(dir_path, "/var/tmp/test/ABC", sizeof(dir_path) - 1);
	
	// ディレクトリを削除
	ret = rmdir(dir_path);
	if (ret == -1) {
		perror("rmdir");
		exit(EXIT_FAILURE);
	}
	
	return 0;
}

実行結果

以下は、プログラム test_rmdir.c を実行しています。

削除対象のディレクトリが空の場合

ディレクトリ ABC が空であるため成功します。

***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ mkdir /var/tmp/test/ABC
***@ubuntu:~/***/test/c$ ls -l /var/tmp/test
合計 4
drwxr-xr-x 2 *** *** 4096 Apr  4 21:07 ABC
***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ gcc -Wall -Wextra test_rmdir.c -o test_rmdir
***@ubuntu:~/***/test/c$ ./test_rmdir
***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ ls -l /var/tmp/test
合計 0

削除対象のディレクトリが空ではない場合

ディレクトリ ABC 内に別のディレクトリ DEF が存在するため、エラーとなります。

***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ mkdir /var/tmp/test/ABC
***@ubuntu:~/***/test/c$ mkdir /var/tmp/test/ABC/DEF
***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ ls -l /var/tmp/test/ABC
合計 4
drwxr-xr-x 2 *** *** 4096 Apr  4 21:20 DEF
***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ gcc -Wall -Wextra test_rmdir.c -o test_rmdir
***@ubuntu:~/***/test/c$ ./test_rmdir
rmdir: Directory not empty
スポンサーリンク

シェアする

フォローする