Windows & Linux(Unix) 获取当前程序运行目录

原创
2013/09/06 12:59
阅读数 5.2K

使用C/C++怎么获取当前运行程序的运行根目录:

Linux(Unix):

    函数原型

#include <unistd.h>
char* getcwd(char *buf, size_t size);

作用:把当前目录的绝对地址保存到 buf 中,buf 的大小为 size。如果 size太小无法保存该地址,返回 NULL 并设置 errno 为 ERANGE。可以采取令 buf 为 NULL并使 size 为负值来使 getcwd 调用 malloc 动态给 buf 分配,但是这种情况要特别注意使用后释放缓冲以防止内存泄漏。
程序例如果在程序运行的过程中,目录被删除(EINVAL错误)或者有关权限发生了变化(EACCESS错误),getcwd也可能会返回NULL。(摘至百度百科: http://baike.baidu.com/link?url=j5mcCamsR79ZRH0s5RQcKNa7JCgSHWDRyMT_AAjBJQvM1PEU0S9NwEMifpkOFB7W


Windows:

函数原型:
char* _getcwd(char* pBuffer, int buffLen) ;
// VC++ 6.0
#include <stdio.h>
#include <direct.h>
#include <stdlib.h>


int main( int argc,char *argv[] )
{
 char path[_MAX_PATH];
 _getcwd(path,_MAX_PATH);
 printf("当前工作目录:\n%s\n",path);
 if( ( _chdir("d:\\visual c++") ) == 0 )
 {
 printf("修改工作路径成功\n");
 _getcwd(path,_MAX_PATH);
 printf("当前工作目录:\n%s\n",path);
 }
 else
 {
 perror("修改工作路径失败");
 exit(1);
 }
 return 0;
}


// vs2008
#include <direct.h>
#include <stdlib.h>
#include <stdio.h>

int main( void )
{
	char* buffer;
	// 得到当前的工作路径
	if( (buffer = _getcwd( NULL, 0 )) == NULL )
	{
		perror( "_getcwd error" );
	}
	else
	{
		printf( "%s \nLength: %d\n", buffer, strnlen(buffer) );
		free(buffer);
	}
}





展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部