2013-10-04 4 views

답변

2

컴파일 된 C 프로그램의 기본 출력 파일 이름은 a.out입니다. 각 프로그램은 자체 인수를 구문 분석하므로 정규 인수 목록이 없습니다. a.out을 가지고 있기 때문에 아마 프로그램의 소스 코드를 가지고있을 것입니다. "main"이라는 함수를 찾고 argv를 검사하거나 getopt를 호출하는 코드를 찾으십시오. 아마도 누군가는 간단한 프로그램 도움말을 표시하는 함수 (이름이 도움말 또는 사용법)를 제공했을 것입니다.

또 다른 방법은 '-q'또는 '?'를 사용하여 프로그램을 실행하는 것입니다. 인수.

또 다른 방법은

strings a.out |less 

남자 페이지 코드에서 별도로 작성된 실행 파일에서 인쇄 가능한 문자열을 찾기 위해 '문자열'을 사용하는 것입니다, 그래서 당신의 실행에 대한 man 페이지가되지 않을 수 있습니다.

+0

"getopt"- 내가 훑어보아야 할 필요가있는 것입니다. 나는 C 언어를 처음 사용하기 때문에 인수에 추가하여 플래그를 사용자 정의 할 수 있다는 것을 알지 못했습니다.다른 명령에 고유 한 플래그 외에 보편적으로 적용 할 수있는 "표준"플래그가 있다고 생각했습니다. 아마도 같은 방식으로 같은 플래그가 계속 적용되기 때문일 것입니다. – Tyler

+0

(어리석은) 일관성은 위대한 마음의 성역이며, 그것이 필요하지 않은 시간을 낭비하지 않을 정도로 현명합니다. – ChuckCottrill

+0

getopt에는 2 가지 종류가 있습니다. 구식 유닉스 인자 (Linux가 코드를 훔친 곳을 잊어 버리지 않도록)와 새로운 스타일의 GNU 옵션 (일반적으로 --argument_name)에 대한 두 종류가 있습니다.), 다른 getoptions 함수 (다른 철자)를 사용하십시오. 여기에는 또 다른 것이 있습니다 : http://optionparser.sourceforge.net/ – ChuckCottrill

0

a.out은 이름을 지정하지 않고 컴파일 된 'c'프로그램의 기본 이름입니다. 일반적으로 프로그램은 명령은 해당 옵션이 무엇의 모든 문서가 없을 수 있습니다 Determining C executable name

+0

그는'. /'명령이 무엇인지 알고 싶어한다고 생각합니다. – F21

+0

"man"을 사용하여 명령 줄 옵션을 찾으려면 어떻게해야합니까? "ls"에 대한 명령 행 옵션을 찾으려면 "man ls"를 사용하십시오. 내가 여기서 뭘하니? – Tyler

+0

F21 : 꽤 많이. – Tyler

0

참조 -ofilename 매개 변수

로 컴파일됩니다. 미리 컴파일 된 바이너리의 경우, 옵션이있는 경우 해당 옵션이 무엇인지 알아낼 수있는 방법이 거의 없을 수 있습니다. 단서를 찾기 위해 스트라이프를 시도 할 수는 있지만, 프로그램에 맨페이지 또는 어떤 종류의 출력이 있다고 보장 할 수는 없습니다. --help 출력.

1

./은 명령이 아니라 위치입니다. .은 현재 디렉토리를 나타냅니다. /은 디렉터리 구분 기호입니다. a.out은 현재 디렉토리의 (아마도 실행 가능) 파일입니다. 이것은 gcc으로 빌드 된 컴파일 된 실행 파일의 기본 이름입니다.

일반적으로 .은 검색 경로의 일부가 아니기 때문에이 명시 적 호출 메서드를 사용합니다. 따라서 a.out./ 접두어없이 실행하려고하면 현재 디렉토리에 있어도 시스템에서 찾을 수 없습니다. 이것은 보안 조치입니다 (다른 것을 실행하고 있다고 생각할 때 악의적 인 프로그램을 실행하는 것을 막으려 고합니다). 좋은 점은입니다.

0
./a.out 

은 그 자체로 명령입니다. 이것에 대해 이해하려고 노력하십시오.

명령은 기본적으로 실행 가능한 요소입니다. 바이너리 또는 쉘 스크립트 일 수도 있습니다. 귀하의 경우 a.out은 실행 가능한 이진 요소입니다. a.out의 명령 행 옵션은 a.out을 얻기 위해 컴파일되고 링크 된 소스 코드의 main() 함수에서 "argv", "argc" 매개 변수를 참조하십시오.

이 명령 실행에 Program Arguments

보너스 상세 방문하여 자세히 알아보기 : 명령을 실행하는 쉘의

을, 두 개의 잘 알려진 방법이 있습니다.

방법 1 :


가 명시 적으로 명령의 이름과 함께 실행 파일의 경로를 제공합니다.

예 1 : 명시 적 경로를 제공하여 현재 작업 디렉토리에서 명령을 실행하려면 :

./a.out 

'을. '[점]은 현재 디렉토리를 의미합니다.

예 2 : 명시 적 경로를

/home/username/a.out 

방법을 제공하여 어디에서나 어디서나에서 명령을 실행하려면 2 :


업데이트 PATH 쉘 환경 변수 명령의 경로를 포함합니다 실행될

유형 : env | grep -i "PATH"명령의 이름 만 제공된 경우 현재 실행중인 명령의 위치를 ​​알 수 있습니다. 당신이 당신의 a.out의 위치를 ​​포함하도록 PATH 쉘의 ENV 변수를 업데이트하는 경우

, 당신은 간단하게 입력 할 수 있습니다 : 명령 아래

a.out 

유형이 PATH 쉘의 ENV 변수를 업데이트

export PATH=$PATH:/path-to-executable 

이 스타일을 눈치 챘을 것입니다.

"rm" 만 입력하고 여전히 쉘이 명령을 실행할 수 있습니다. 이유는 명령의 경로가 암시 적이며 "PATH"셸 env 변수를 읽는 것보다 발견됩니다.

사용자 생성 명령을 실행하는 경우 대부분의 경우 방법 1의 예제 2로 충분하지만 두 번째 명령을 광범위하게 사용하는 곳에서 유용합니다.