gpt4 book ai didi

c++ - 为什么我在linux的C++中得到错误的当前目录

转载 作者:行者123 更新时间:2023-11-28 03:28:59 25 4
gpt4 key购买 nike

我用NetBeans写C++,想获取当前可执行文件的绝对路径

(~/NetBeansWorkSpace/project_1/dist/Debug/GNU-Linux-x86/executableFileName)

所以我用

1、system("pwd")

2,getcwd(buffer,bufferSize)

然后单击运行按钮,但它们都得到了错误的路径:~/NetBeansWorkSpace/project_1

这是惊喜,我运行 bash

cd ~/NetBeansWorkSpace/project_1/dist/Debug/GNU-Linux-x86/executableFileName

./executableFileName

我找到了正确的路径。

这是为什么???

最佳答案

正如其他人所说,NetBeans 会在运行您的应用程序之前设置工作目录。如果您想获取可执行文件的工作目录,我相信以下内容应该可行。

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

int main(int argc, char const* *argv) {
char *resolved = realpath(argv[0], NULL);
if (resolved != NULL) {
char *fname = strrchr(resolved, '/');
if (fname != NULL) {
fname[1] = '\0';
}
printf("absolute path of %s is %s\n", argv[0], resolved);
free(resolved);
} else {
perror("realpath");
}
return EXIT_SUCCESS;
}

关于c++ - 为什么我在linux的C++中得到错误的当前目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13125403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com