Почему PWD пуст и как это исправить? - PullRequest
0 голосов
/ 02 сентября 2011

Я использую lighttpd и написал следующий скрипт cgi:

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

Результат

The current path is: (null)

Ну, я не понимаю, почему. И я не знаю, как найти путь к исполняемому сценарию. Я ищу args [0] с путем и использовал для этого pwd, но, возможно, мне стоит переключиться на что-то другое.

ОБНОВЛЕНИЕ

Не работает, а

char cwd[_PC_PATH_MAX+1];
getcwd(cwd, _PC_PATH_MAX+1);

cwd is "". Возможно, мой сценарий знал, где это было, если я перестал использовать комнату 1408 в качестве своего центра обработки данных. : P

Ответы [ 2 ]

4 голосов
/ 02 сентября 2011

Используйте getcwd() вместо. PWD не требуется устанавливать.

#include <unistd.h>

char *getcwd(char *buf, size_t size);
2 голосов
/ 02 сентября 2011

_PC_PATH_MAX не максимальная длина пути. Это ключ, который вы передаете pathconf для запроса максимальной длины пути, как в pathconf("/", _PC_PATH_MAX). Конечно, если определено PATH_MAX, было бы проще использовать это напрямую.

...