zoukankan      html  css  js  c++  java
  • OS X中如何获取当前运行程序的路径

    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] = '';
        printf("The path is: %s
    ", 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] = '';
        printf("The path is: %s
    ", path);
    }
    复制代码
  • 相关阅读:
    colemak,你用了吗?
    DELPHI一个对付内存汇漏的办法和技巧
    使用for in 循环数据集
    今天差点被断电搞死了,幸好IDE的备份救了我
    为什么继续选择DELPHI?
    无缘DELPHI的BUG
    DELPHI DOUBLE不解之迷
    失败的大牛事件委托,与我的委托
    2017-02-08 01:19:09 Scrapy: pk5_mylist
    2016-09-02 16:50:15 webqq 协议分析
  • 原文地址:https://www.cnblogs.com/ArRan/p/3782194.html
Copyright © 2011-2022 走看看