• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    5年前 (2013-06-06)  Linux编程问题 |   4 条评论  16 
    文章评分 0 次,平均分 0.0

    (1)

    void CUtil::GetAppPath(std::string &sPath)
    {
                    char buf[4097] = {0};
                    long size; 
                    char *ptr; 
                    size = pathconf(".", _PC_PATH_MAX); 
                    if((ptr = (char *)malloc((size_t)size)) != NULL) 
                    { 
                            memset(ptr,0,size); 
                            sprintf(ptr,"/proc/%d/exe",getpid()); 
                    }else return -1; 
                    readlink(ptr,buf,size); 
                    free(ptr);
                    ptr = NULL;
                    sPath = buf;
                    int nPos = sPath.find_last_of("/");
                    sPath = sPath.substr(0,nPos);
    }

    给方法经过测试,效果比较好能直接得到绝对路径,

    (2)
    可以使用procfs,然后readlink,把当前进程的pid对应的目录下面的file指向的位置读出来(注意需要先挂载procfs)

      pit_t   mypid   =   getpid();   
      sprintf(strsrc,   "/proc/%d/file",   mypid);   
      readlink(strsrc,   strdest,   LEN);
    

    进程在/proc下都有一个以进程号命名的目录.
    在该目录下有exe文件,该文件是一个链接文件,它指向的路径就是该进程的全路径.
    用readlink读exe文件返回该进程的全路径

     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/1406.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享