0

我在 QNX 平台上工作,我需要在其中获取正在运行的可执行文件的路径。

我写了一小段代码,它总是返回-1:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>

extern int errno;

int main( int argc, char** argv )
{
    char buf[512] = {0};
    const char mypath[100] = "/proc/self/exefile";
    errno = 0;
    printf("The value readlink:: %d %s\n",readlink(mypath, buf, 512 ), strerror( errno ));    
    return( 0 );
}

当我运行上面的代码时,我得到以下输出:

The value readlink:: -1 No such file or directory

我错过了什么吗?需要做什么才能在 QNX 中获取我当前的 exe 路径?

4

1 回答 1

0

在 QNX/proc/self/exefile中不是符号链接;这是一个常规文件。

尝试:

#include <fstream>
#include <iostream>
#include <string>

int main(int argc, char **argv) {

  std::ifstream file("/proc/self/exefile");
  std::string path;
  std::getline(file, path);

  std::cout << path << "\n";

  return 0;
}
于 2021-02-05T11:14:52.583 回答