2014-12-27 2 views
1

내 컴퓨터에서 저수준 하드웨어에 액세스해야하기 때문에 루트로 내 응용 프로그램을 실행하려고합니다. 나는 명령을 실행응용 프로그램을 루트로 실행할 때 stdio 출력을 얻으려면 어떻게해야합니까?

: 그것은 뿌리를 필요로하는 오류를 제공 제외

./application_name 

를 ... 그것은 작동합니다. 그러나 이것을 실행할 때 :

sudo ./application_name 

... 나는 터미널 출력을 얻지 못합니다.

Linux에서 실행 파일을 루트로 실행할 때마다 터미널에 아무 것도 인쇄하지 않는다는 것을 테스트했습니다. 이 문제를 어떻게 해결할 수 있습니까?

편집 : 다소 테스트 케이스 제공의 (모바일 순전히을 입력 할 수 없습니다) :

sudo g++ test.cpp -o executable 
sudo chmod +x executable 

이 데비안에서 작동 :

./executable 

이되지 않습니다

sudo ./executable 

test.cpp :

#include <iostream> 

int main() { 
    std::cout << "Hello World!"; 
} 
+0

닫기 유권자 :이 주제는 아니지만 주제에 대한 이유는 무엇입니까? 두 가지 모두 코드 실행에 관한 것입니다. http://stackoverflow.com/questions/817060/creating-executable-files-in-linux –

+1

그 질문은 ** 5 살 **이며 게시 지침이 상당히 게시 된 시점에 게시되었습니다. 다른. 아주 오래된 질문의 존재가 유사한 질문을 게시하는 것이 괜찮음을 의미하지는 않습니다. –

+1

분명히 그것이 응용 프로그램이 작동하는 방법입니다. 일부 응용 프로그램은 출력을 생성하지 않습니다 (예 :'/ bin/true'). 우리는 응용 프로그램에 대해 전혀 모르기 때문에 출력이 나오지 않는 이유를 알아낼 수 없습니다. 'sudo echo hello'를 시도하십시오; 'hello'를 출력해야합니다. –

답변

1

그 행동은 정말로 이상합니다. 해당 응용 프로그램의 루트 사용 권한은 std 출력에 영향을 미치지 않아야합니다. 예를 들어, 간단한 테스트를 만들었습니다. 데비안 OS에서 루트로 실행 한 "hello world"를 터미널에 출력했습니다.

출력이 있어야한다는 자신을 확신시키는 간단한 테스트는 파일로 리디렉션하는 것입니다. 예를 들어 sudo ./executable> output.txt와 같이 모든 것이 잘 될 것입니다.

간단한 "hello world"의 출력이 없으면 이상해야합니다.