OS X的执行程序一般分为两种。一种是控制台程序,一种是带有GUI的OS X应用程序。

控制台程序往往就一个文件构成executable,而GUI应用通常是一个包(即文件夹),里面除了executable之外还有其它资源。

对于一个GUI程序来说,我们可以通过读取Bundle来获得资源文件。那么对于控制台程序来说,如果要获得其执行时的路径就很有必要了。

比如,我做一个OpenCL程序,那么往往会将OpenCL内核源文件与应用放在一起。

在OS X中获得executable当前路径的方法很简单,首先引入头文件——

#include <mach-o/dyld.h>

然后,调用

int _NSGetExecutablePath(char* buf, uint32_t* bufsize)

即可。

这个函数适用于iOS2.0及更高版本以及OS X10.2及更高版本。

下面提供代码例子片段:

#include <mach-o/dyld.h>

int main(void)
{
char path[512];
unsigned size = 512;
_NSGetExecutablePath(path, &size);
path[size] = '\0';
printf("The path is: %s\n", path);
}

顺便提一下,在Linux中要获得当前程序的路径使用readlink接口,引入头文件<unistd.h>即可。其声明为:

int readlink(const char * path ,char * buf,size_t bufsiz);

代码片段:

#include <unistd.h>

int main(void)
{
char path[512];
int size = readlink("/proc/self/exe", path, 512);
path[size] = '\0';
printf("The path is: %s\n", path);
}

OS X中如何获取当前运行程序的路径的更多相关文章

  1. C# 获取当前服务器运行程序的根目录,获取当前运行程序物理路径

    C# 获取当前服务器运行程序的根目录,获取当前运行程序物理路径 string tmpRootDir = AppDomain.CurrentDomain.BaseDirectory;//获得当前服务器程 ...

  2. Windows/Linux获取当前运行程序的绝对路径

    windows 获取当前运行程序的绝对路径(.exe) GetModuleFileNameA()函数获取绝对路径,不过文件路径中的反斜杠需要进行替换. ]; GetModuleFileNameA(NU ...

  3. c#获取当前运行程序所在的目录

    C#获取项目程序及运行路径的方 1.asp.net webform用“Request.PhysicalApplicationPath获取站点所在虚拟目录的物理路径,最后包含“\”:   2.c# wi ...

  4. ASP.Net 类(CS)文件怎样获取Web应用程序的路径

    Web应用程序,写了一个线程CS类别,这个类别将会放于Global.asax文件中执行,主要是监控程序下某一个文件是否有异动,而作出相应警示动作,如发送邮件等. 实现运行过程中,也许会有一个情况出现, ...

  5. Java中动态获取项目根目录的绝对路径

    https://www.cnblogs.com/zhouqing/archive/2012/11/10/2757774.html 序言 在开发过程中经常会用到读写文件,其中就必然涉及路径问题.使用固定 ...

  6. ASP.NET获取web应用程序的路径

    服务器磁盘上的物理路径: HttPRuntime.AppDomainAppPath虚拟程序路径: HttpRuntime.AppDomainAppVirtualPath 任何于Request/Http ...

  7. ubuntu下apache2的cgi-bin中以root权限运行程序

    一,安装apache2 sudo apt-get install apache2 二.配置cgi-bin sudo chmod 777 /var/www/html sudo vim /etc/apac ...

  8. linux中启动 java -jar 运行程序

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 直接用java -jar xxx.jar,当退出或关闭shell时,程序就会停止掉.以 ...

  9. python获取当前运行程序的名字

    import os filename = os.path.abspath(__file__) print filename 打印结果: E:\bluedon\test.py

随机推荐

  1. Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏

    原文:Codelab for Android Design Support Library used in I/O Rewind Bangkok session--Make your app fanc ...

  2. 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder

    [重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder   1.String String是Java中的一个final ...

  3. 【原创】【Android New Features】—— 关于ADT 17的BuildConfig.DEBUG

          在日常开发中,我们使用android.util.Log来打印日志,方便我们的开发调试.但是在打包发布时,需要手工把Log关闭,多少会有些不便,而且不排除打包者忘记关闭Log的情况.那么有没 ...

  4. Ubuntu 12.04 SSH 安装

    By default Ubuntu Desktop OS comes with ssh clientpackage. It does not include ssh server package wh ...

  5. 处理11gR2 RAC集群资源状态异常INTERMEDIATE,CHECK TIMED OUT

    注意节点6,7的磁盘CRSDG的状态明显不正常.oracle@ZJHZ-PS-CMREAD-SV-RPTDW06-DB-SD:~> crsctl status resource -t |less ...

  6. Intellij IDEA的Hibernate简单应用

    1.创建数据库及其表 create database demo;    use demo; CREATE TABLE `user` (   `id` int(10) unsigned NOT NULL ...

  7. beej's 网络编程 打包数据pack data

    7.4. Serialization—How to Pack Data It's easy enough to send text data across the network, you're fi ...

  8. jdbc框架 commons-dbutils的使用

    commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序 ...

  9. Python 学习记录

    记录一些 学习python 的过程 -------------------------------------- 1. 初始学习 @2013年10月6日 今天开始学习python 了 遇到好多困难但是 ...

  10. django如何检查创建的模型(model)是否有语法错误或者逻辑错误

    首先,用下面的命令验证模型的有效性: python manage.py validate validate 命令检查你的模型的语法和逻辑是否正确. 如果一切正常,你会看到 0 errors found ...