GUI를 통해 실행 파일을 열면 아무 작업도 수행되지 않지만 터미널을 통해 실행 파일을 열면 작동합니다.

GUI를 통해 실행 파일을 열면 아무 작업도 수행되지 않지만 터미널을 통해 실행 파일을 열면 작동합니다.

C 언어로 작은 뱀 게임을 만들었습니다. GUI(Nemo)를 통해 열면 아무것도 열리지 않습니다. 하지만 터미널을 사용하여 열면 예상대로 작동합니다. 다른 운영 체제(Ubuntu, Mint 등)를 사용하는 여러 컴퓨터에서 시도해 보았지만 동일한 문제가 발생했습니다.

또한 파일을 마우스 오른쪽 버튼으로 클릭하고 "다른 응용 프로그램으로 열기"를 선택한 다음 "실행하려면 사용자 지정 명령 입력" 텍스트 상자에 다음을 입력해 보았습니다.

gnome-terminal --working-directory ~/Downloads/My\ Programs/Snake -e "/bin/bash -c './Snake && read'"

그런 다음 실행 파일을 열어 보십시오. 그러나 아무 일도 일어나지 않았습니다.

그러나 터미널을 사용하여 동일한 명령을 실행하면 문제가 없습니다. 실행 파일에 설정된 권한 Snake-rwxr-xr-x. Program (application/x-executable)추가적으로 다음과 같이 file주어진다:

$ file Snake
Snake: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=c609e53bda05544c647aab2a19aa865af6dc93c2, not stripped

무엇이 문제일까요?

답변1

이는 Nemo가 /usr/bin을 탐색하고 를 클릭할 때 얻는 것과 동일한 결과입니다 bash. 옳은?

실행하려는 쉘 명령(gnome-terminal 호출)을 넣을 수 있습니다.쉘 스크립트.

(쉘 스크립트라는 것과 관련된 것은 없습니다. 이와 같은 코드를 작성할 수도 있습니다 isatty(STDERR) || execlp("gnome-terminal", "--working-directory", ...);).

GUI와 터미널 애플리케이션 사이에는 더 이상 표준 브리지가 없습니다. GUI 애플리케이션으로 패키지하려면 자체 GUI 래퍼를 빌드해야 합니다. 안 돼요범용 터미널 에뮬레이터 실행.

파일 브라우저에서 실행 파일을 실행하는 것은 일반적으로 좋은 생각으로 간주되지 않습니다. (그놈 파일은 더 이상 없습니다). 귀하의 파일 브라우저는 .desktop파일 실행을 지원할 수도 있고 지원하지 않을 수도 있습니다(예: 데스크톱 응용 프로그램 메뉴/실행 프로그램에 파일을 설치하지 않음). 예를 들어 이동식 장치의 실행 파일에 Word 문서처럼 보이도록 사용자 정의 아이콘이 설정된 경우 이는 보안에 해롭습니다.

관련 정보