gpt4 book ai didi

执行dll时的当前工作目录

转载 作者:太空宇宙 更新时间:2023-11-04 03:13:14 24 4
gpt4 key购买 nike

我使用 dll 从 C 程序运行一些 Fortran 源代码。我想在 Fortran 中使用 CALL GETCWD(DIRNAME) 来访问文件。当前工作目录 (CWD) 是我的 fortran dll 所在的目录还是我的 C 代码所在的目录?

最佳答案

CWD 代表C当前W工作D目录,它是(通常)当前进程启动的目录。检查[Man7]: GETCWD(3)更多细节。我准备了一个小例子,以便更好地理解发生了什么。

code00.c:

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

#define PATH_SIZE 0x0200


int main()
{
char buf[PATH_SIZE];
if (getcwd(buf, PATH_SIZE) == NULL) {
printf("Error %d getting CWD\n", errno);
return 1;
}
printf("CWD: [%s]\n", buf);
return 0;
}

输出:

[cfati@cfati-5510-0:/mnt/e/Work/Dev/StackOverflow/q054306561]> ~/sopr.sh
### Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ###

[064bit prompt]> ls
code00.c
[064bit prompt]> gcc -o cwd code00.c
[064bit prompt]>
[064bit prompt]> ls
code00.c cwd
[064bit prompt]> ./cwd
CWD: [/mnt/e/Work/Dev/StackOverflow/q054306561]
[064bit prompt]>
[064bit prompt]> pushd .. && ./q054306561/cwd && popd
/mnt/e/Work/Dev/StackOverflow /mnt/e/Work/Dev/StackOverflow/q054306561
CWD: [/mnt/e/Work/Dev/StackOverflow]
/mnt/e/Work/Dev/StackOverflow/q054306561
[064bit prompt]>
[064bit prompt]> mkdir test && pushd test && ../cwd && popd
/mnt/e/Work/Dev/StackOverflow/q054306561/test /mnt/e/Work/Dev/StackOverflow/q054306561
CWD: [/mnt/e/Work/Dev/StackOverflow/q054306561/test]
/mnt/e/Work/Dev/StackOverflow/q054306561

关于执行dll时的当前工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54306561/

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