2010-05-27 5 views
5

나는 (C++에서) 리눅스의 사용자 홈 디렉토리에 잠금 파일을 넣고 싶지만 ~ fopen'ing ~/.fluudit가 작동하지 않는 것 같습니다.사용자의 홈 폴더에있는 파일을 여는 방법

fopen("~/.fluudit","w"); //fails 
+0

~이 번역 쉘 때문에 적절한 홈 디렉토리에 ~ 여기에 작동하지 않습니다. 쉘은 명령 행에서 특수 문자 (~)를 절대 경로로 바꿉니다. 따라서 ~는 C 또는 C++ 프로그램에서 사용할 수 없습니다. – srikanta

답변

10

당신은 HOME 변수 환경을 사용할 수 있으며 그 존재가 아니라면, 당신은 암호 데이터베이스를 사용할 수 있습니다

#include <unistd.h> 
#include <sys/types.h> 
#include <pwd.h> 

struct passwd *pw = getpwuid(getuid()); 

const char *homedir = pw->pw_dir; 
4

말에 ~의 확장, getenv("HOME")는 글 로빙 전화를 먼저해야 할 일이다. 당신은 어떤 라이브러리 또는 프레임 워크를 사용하고 있는지 말하지 않았지만 일부는이를 제공합니다.

관련 문제