2012-11-28 4 views
2

미로에서 가장 짧은 경로를 찾는 C++ 프로그램을 만들려고합니다. 나는 지금 당장 makefile을 사용하기 위해 고심하고있다. 현재 내 메이크는 다음을 포함메이크 파일 사용 권한이 거부되었습니다.

mazeIO : mazeIO.cpp maze.h 
    g++ -g -Wall mazeIO.cpp maze.h -o mazeIO 

mazeIO.cpp 및 maze.h 내가 프로젝트에있는 두 파일입니다. 커맨드 라인에서 나는 입력하고있다

make -f Makefile 

그리고 그것은 잘 컴파일된다. 입력 할 때

./mazeIO maze.txt 

maze.txt는 탐색하려는 미로 입력입니다. 나는 다음과 같은 오류가이 입력 후 :

bash: ./mazeIO: Permission denied 

나는 이유를 이해하지 않습니다. 어떤 제안?

+3

'ls -l mazeIO'는 무엇을 보여줍니까? –

+1

컴파일 라인에'maze.h'를 열거 할 필요는 없습니다. 그것은'g ++'처럼 무시해야합니다. 당신은 운이 좋다. –

+0

ls -l mazeIO는 -rw ------- 1을 보여 주며 현재 디렉토리는 – user1795370

답변

2

실행 파일은 실행 (x) 플래그가 있기 때문에 Linux에서 실행 파일로 알려져 있습니다. 귀하의 "실행 파일"에는이 파일이 없습니다 - 읽기 전용 (r) 및 쓰기 (w) 권한 만 있습니다. 실행 파일 (예 : chmod 600 mazeIO)의 사용 권한을 제거하거나 umask가 이상합니다. umask는 새 파일에 대한 기본 사용자 권한을 제어하며 기본값에서 수정 한 경우 혼란을 초래할 수 있습니다. 대부분의 시스템에서 기본 umask는 0022입니다. 어떤 일이 발생하는지 알지 못하면 기본 umask는 그대로 두십시오. 나는 왜 당신이 exec 비트를 놓칠 지 모를 다른 생각이 없다.

+2

이것은 umask 설정을 변경하는 방법을 제공 한 경우에 더 유용합니다. – arman

0

이것은 간단합니다. 실행 권한이 필요합니다.

chmod를 + X mazeIO

는 다른 사용자가 실행해야하는 경우도 chmod를 사용할 수 있습니다.
사용자 chmod는 다른 사용자가 실행해야하는 경우 필요한 숫자 값을 제공합니다. 전체 실행 가능, 읽기 및 쓰기 권한을 부여하는 것에주의하십시오 (chmod 777)

chmod 600은 실행 파일을 만들지 않습니다.

관련 문제