У меня есть программа, определенная в определенном каталоге A, и ярлык для нее в другом каталоге B, и я добавил B в PATH. В другом каталоге 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, точно так же, как моя настоящая программа.
Этот код получен от ответа computinglife на соответствующий вопрос. , который использует ту же технику здесь .
Правильно ли я понимаю, что «текущий рабочий каталог» является правильным? Кажется, это согласуется с первым абзацем ответа computerlife, так что я делаю не так?