C言語,getcwd()で、プロセスのカレントディレクトリを取得

スポンサーリンク

鍛錬 344

C言語,getcwd()で、呼び出し元プロセスのカレントワーキングディレクトリを取得する

呼び出し元プロセスのカレントワーキングディレクトリを取得するには、getcwd() を使用します。

関連記事:C言語,chdir()で、プロセスのカレントディレクトリを変更
 
getcwd() については、以下に示す通りです。

#include <unistd.h>

char *getcwd(char *buf, size_t size);
 

 
getcwd() は、呼び出し元プロセスのカレントワーキングディレクトリにおける、絶対パスの文字列を返します。

文字列の終端は NULL で返されます。

第1引数の buf にも、絶対パスの文字列が格納されます。

第2引数の size にて、buf のサイズを指定します。絶対パスの文字列長が size を超える場合は、NULL が返されます。

スポンサーリンク

プログラム

以下は、カレントワーキングディレクトリを取得するプログラム、test_getcwd.c です。

// include
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

// main
int main(void)
{
	char tmp[256] = "";
	char *p;
	
	p = getcwd(tmp, sizeof(tmp) - 1);
	if (p == NULL) {
		printf("ERROR,getcwd() ret=NULL\n");
		perror("getcwd");
		exit(EXIT_FAILURE);
	}
	
	printf("cwd = %s\n", tmp);
	
	return 0;
}
スポンサーリンク

実行結果

以下は、/var/tmp にてプログラム test_getcwd.c を実行して、カレントワーキングディレクトリを取得しています。

***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ pwd
/var/tmp
***@ubuntu:/var/tmp$ gcc -Wall -Wextra test_getcwd.c -o test_getcwd
***@ubuntu:/var/tmp$ ./test_getcwd
cwd = /var/tmp

 
上記に示した通り、カレントワーキングディレクトリである /var/tmp を取得することができました。

タイトルとURLをコピーしました