为什么 PWD 为空以及如何解决?

Fri*_*itz 0 c cgi lighttpd

我正在使用 lighttpd 并编写了以下 cgi 脚本:

main(){
    printf("Content-type: text/html\n\n");
    char * pwd ="";
    pwd=getenv("PWD");
    printf ("The current path is: %s",pwd);
}
Run Code Online (Sandbox Code Playgroud)

结果是

The current path is: (null)
Run Code Online (Sandbox Code Playgroud)

嗯,我不明白为什么。而且我不知道如何找到执行脚本的路径。我正在寻找带有路径的 args[0],并为此使用了 pwd,但也许我应该切换到不同的东西。

更新

不工作也是

char cwd[_PC_PATH_MAX+1];
getcwd(cwd, _PC_PATH_MAX+1);
Run Code Online (Sandbox Code Playgroud)

cwd 是“”。如果我停止使用房间 1408 作为我的数据中心,我的脚本可能知道它在哪里。:P

Let*_*_Be 5

使用getcwd()来代替。PWD不需要设置。

#include <unistd.h>

char *getcwd(char *buf, size_t size);
Run Code Online (Sandbox Code Playgroud)