c++ - _getcwd 不是返回当前工作目录,而是返回程序存储的地方
问题描述
我在某个目录 A 中定义了一个程序,并在另一个目录 B 中定义了它的快捷方式,并且我已将 B 添加到 PATH 中。在不同的目录中,CI 正在运行 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 运行它,就像我的实际程序一样。
此代码是由computinglife对相关问题的回答得出的,这与此处使用的技术相同。
我对“当前工作目录”的理解是否正确?似乎同意computinglife的回答的第一段,那我做错了什么?
解决方案
创建快捷方式时,Windows 将它们配置为将工作目录设置为存储程序的位置。在快捷方式属性中清空此字段可解决问题。
推荐阅读
- python - 为什么 cecond 版本比第一个版本更快地求和数组的元素?
- node.js - Heroku Node.js 机器人部署失败
- angular - 同一张表中数据的级联下拉
- bash - 运行 bash 脚本时在双引号内保留单引号
- bootstrap-4 - 创建一个 Bootstrap 轮播,显示上一张和下一张图像的预览并处理横向和纵向照片
- c++ - 如何修复“格式不是字符串文字且没有格式参数”错误?
- python - 从子字符串中提取文件名
- flutter - 在flutter web中分享来自url的图像
- php - 选择所有左表列和特定右表列时在 PHP 中输出 MySQL 左连接
- pyspark - 列值中的匹配字符串返回无值