2012-10-26 7 views
3

저는 Ubuntu 12.04 LTS 및 10.04 LTS 플랫폼에서 작업 중이며 QDir :: mkPath에 문제가 있습니다. mkPath를 사용하여 경로를 만들려고합니다./john/play/games라고 말한 다음 game.htm 파일을/home/john/play에 복사합니다. 파일을 복사 한 후 파일에 대한 사용 권한을 rwxr - - r - -으로 설정했습니다. 타사 응용 프로그램에서 game.htm 파일을 읽을 수 있도록합니다. 그러나 디렉토리/john,/john/play 및/john/play/games는 다른 응용 프로그램 및 다른 사용자가 game.htm 파일을 읽을 수 없도록하는 권한 drwxr - x - -로 만들어집니다.QDir :: mkPath 및 사용 권한

같은 응용 프로그램에서 동일한 QDir :: mkpath가 drwxr-xr-x를 사용하여 dir을 생성한다는 것을 관찰했습니다. QDir :: mkpath가 디렉터리를 만드는 권한과 사용 권한을 제어하거나 설정하는 방법에 대해 알고 싶습니다.

+1

프로그래밍과 관련이 없기 때문에 귀하의 질문은 실제로 주제와 관련이 없습니다. UNIX에서는 [파일 및 디렉토리 권한 작동 방식] (http://content.hccfl.edu/pollock/aunix1/filepermissions.htm)을 읽어야합니다. 또한 사용자의 디렉토리에 전역 적으로 보이는 파일을 두지 말고'/ usr/share /'또는 어느 위치에 놓아야한다. – sashoalm

+1

@satuon, Qt의 QDir :: mkpath가 작동하는 방식과 올바른 방식으로 작동시키는 방법에 대해 더 우려하고 있습니다. 그리고 내가 말하는 길은 예를 든다. – sky

+0

'QDir :: mkpath'는 OS 제공 API를 호출하여 작동합니다. 쉘에서'mkdir -p'를 호출하는 것과 같은 방식으로 작동합니다. OS에 전적으로 의존합니다. 내가 준 링크를 읽었 니? – sashoalm

답변

1

하늘이 코멘트에서 완벽하게 지적 했으므로 mkdir 루틴이 읽을 수있는 디렉토리를 만들도록 환경이 엉망입니다.

그러나 QDir::mkpath을 호출하기 전에 umask() OS 기능을 사용하여 umask를 다른 것으로 설정할 수 있습니다. 비록 umask() 함수가 mnw 환경에서 구현되어 있을지도 모르겠지만, 창문에 #ifdef을 가지고 있을지도 모른다. 위젯에 qtcreator가 사용하고있다. 어쨌든 작동 할 수 있습니다.

+0

감사합니다. Wes. 그게 유일한 방법 인 것 같습니다. – sky