C言語,chmod()関数でファイルのモードを変更する

スポンサーリンク

鍛錬 816

C言語,chmod()関数でファイルのモードを変更する

ファイルのモード(パーミッション)を変更するには、chmod()関数を使用します。
 
以下は、chmod()関数についてです。

#include <sys/stat.h>

int chmod(const char *pathname, mode_t mode);
 

 
実行するプロセスの実効UIDがファイルの所有者と一致するか、実行するプロセスが特権を持つ必要があります。

引数

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

引数 意味
const char *pathname 変更するファイルのパス
mode_t mode 設定するモード

戻り値

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

戻り値
int 成功した場合 0
int エラーの場合 -1
 
スポンサーリンク

プログラム

以下は、ファイルのモードを変更するプログラム、test_chmod.c です。

今回は、ファイル sample.txt のモードを 644 に変更しています。

変更前 変更後
000 644
// include
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>

// main
int main(void)
{
	char filepath[256] = "";
	int ret;
	
	strncpy(filepath, "/var/tmp/test/sample.txt", sizeof(filepath) - 1);
	
	// ファイルのパーミッションを644に変更
	ret = chmod(filepath, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
	if (ret == -1) {
		perror("chmod");
		exit(EXIT_FAILURE);
	}
	
	return 0;
}

実行結果

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

john@ubuntu:/var/tmp/test$ 
john@ubuntu:/var/tmp/test$ ls -l sample.txt
---------- 1 john john 3 Apr 18 15:51 sample.txt
john@ubuntu:/var/tmp/test$ 
john@ubuntu:/var/tmp/test$ 
john@ubuntu:/var/tmp/test$ gcc -Wall -Wextra test_chmod.c -o test_chmod
john@ubuntu:/var/tmp/test$ ./test_chmod
john@ubuntu:/var/tmp/test$ 
john@ubuntu:/var/tmp/test$ 
john@ubuntu:/var/tmp/test$ ls -l sample.txt
-rw-r--r-- 1 john john 3 Apr 18 15:51 sample.txt

 
上記に示した通り、ファイルのモードを 000 から 644 に変更することができました。

スポンサーリンク

シェアする

フォローする