"IPM"이라는 디렉토리 이름, 즉 프로젝트 이름을 사용하여 세션을 처리 할 파일을 만들려고합니다.Windows에서 파일/디렉토리 조작이 잘 작동하지만 Linux에서는 작동하지 않는 이유는 무엇입니까?
나는이 파일을 사용자가 로그인 할 때마다 액세스 로그 아웃 플러스 파일이 다른 OS
에 생성되는 위치에 있도록 나는 또한 이렇게 내가 경로 문자열을 만들려면이 기능을 만든 몇 가지 더 많은 장소에서 액세스std::string SessionManager::createPathString(std::string sFileName)
{
char* pPath = getenv(HOME);
std::string sUserName(pPath);
createDirectory(sUserName);
std::replace(sUserName.begin(), sUserName.end(), '\\', '/');
sUserName.append("/IPM");
sUserName.append("/");
sUserName.append(sFileName);
return sUserName;
}
나는 디렉토리 나 파일이 아닌 경우에, 나에게 파일 경로 및 그것은 창에 디렉토리를 작성하지만, 리눅스에 실패이
int createDirectory(std::string sUserName)
{
sUserName += "\\IPM";
#ifdef _WIN32
int ret = _mkdir(sUserName.c_str());
#elif __linux__
int ret = mkdir(sUserName.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
#endif
return ret;
}
같은 디렉토리를 생성하는 기능 간다를 얻기 위해이 함수를 호출 현재 그것이 창문에 만들어 지지만, Linu에는 만들어지지 않는다. 엑스.
부스트로 할 수있는 방법이 있나요? C++을 처음 접했을 때부터 그렇습니다.
Boost.FileSystem – Danh
왜 디렉토리를 만들려고 시도하기 전에 백 슬래시를 바꾸시겠습니까? – SingerOfTheFall
Windows는 백 슬래시를 사용하고 linux는 전달 슬래시를 사용합니다 ... http : //stackoverflow.com/questions/38428561/difference-between-forward-slash-and-backslash-in-file-path – p0rter