我如何获得一个程序是从运行的目录? [英] How do I get the directory that a program is running from?

查看:186
本文介绍了我如何获得一个程序是从运行的目录?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有一个平台无关和文件系统无关的方法来获得,其中程序是用C / C ++运行的目录的完整路径?不要与当前工作目录混淆。 (请除非他们是标准的像CLIB或STL不建议库)。

Is there a platform-agnostic and filesystem-agnostic method to obtain the full path of the directory from where a program is running using C/C++? Not to be confused with the current working directory. (Please don't suggest libraries unless they're standard ones like clib or STL.)

(如果没有平台/文件系统无关的方法,在Windows和Linux工作,具体的文件系统的建议也欢迎。)

(If there's no platform/filesystem-agnostic method, suggestions that work in Windows and Linux for specific filesystems are welcome too.)

推荐答案

下面是code,以获得完整路径执行程序:

Here's code to get the full path to the executing app:

Windows系统:

Windows:

int bytes = GetModuleFileName(NULL, pBuf, len);
if(bytes == 0)
	return -1;
else
	return bytes;

Linux的:

Linux:

char szTmp[32];
sprintf(szTmp, "/proc/%d/exe", getpid());
int bytes = MIN(readlink(szTmp, pBuf, len), len - 1);
if(bytes >= 0)
	pBuf[bytes] = '\0';
return bytes;

这篇关于我如何获得一个程序是从运行的目录?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆