__ getcwd不返回当前工作目录,而是返回程序的存储位置

问题描述 投票:0回答:1

我在某个目录A中定义了一个程序,在另一个目录B中定义了它的快捷方式,并且我在路径PATH中添加了B。在另一个目录C中,我正在运行cmd.exe,并使用命令progname.lnk arg1 arg2执行该程序。我的理解是,在这种情况下,“当前工作目录”为C,但是当我使用_getcwd(请参见下文)获取当前工作目录时,我得到目录A,即存放程序的位置。

#include <iostream>
#include <direct.h>
#define GCWD _getcwd

int main() {
  char cwd[256];
  GCWD(cwd, 256);
  std::cout << cwd << std::endl;
}

我使用命令mwe.lnk编译并运行了该程序。该程序存储在A中,在B中具有对其的快捷方式,就像实际程序一样,我从C运行它。

此代码由计算生活的answer to a related question通知,这与here所使用的技术相同。

我对什么是“当前工作目录”是正确的理解吗?这似乎与Computinglife的第一段答案相吻合,那么我在做什么错呢?

c++ windows working-directory
1个回答
0
投票

[创建快捷方式时,Windows将它们配置为将工作目录设置为程序的存储位置。清空快捷方式属性中的该字段可解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.