방금 프로그래밍을 시작하고 K & R을 통해 C를 시도하고 배우려고합니다. 명령 줄 인수 (5.10)에 대한 섹션을 읽었으나 지금은 완전히 혼란 스럽습니다. 커맨드 라인 인수로 작성한 프로그램을 열려고 할 때마다 X라는 인자가 존재한다는 사실을 알게되었습니다.K & R을 시작하는 초심자
`GCC는
어떤 제안을 exist.`하지 않습니다 find.c
열린 찾기 테스트
파일/문서/Learning_C/테스트를 찾을 -o? 감사합니다
방금 프로그래밍을 시작하고 K & R을 통해 C를 시도하고 배우려고합니다. 명령 줄 인수 (5.10)에 대한 섹션을 읽었으나 지금은 완전히 혼란 스럽습니다. 커맨드 라인 인수로 작성한 프로그램을 열려고 할 때마다 X라는 인자가 존재한다는 사실을 알게되었습니다.K & R을 시작하는 초심자
`GCC는
어떤 제안을 exist.`하지 않습니다 find.c
열린 찾기 테스트
파일/문서/Learning_C/테스트를 찾을 -o? 감사합니다
어떤 시스템을 사용하고 있습니까? 당신이 "./"로 바이너리를 앞에 때,
gcc -o find find.c
./find test
As others have noted을 늘 어떤 명명 충돌이 : 유닉스/리눅스에서 당신은 &을 통해 실행 파일을 실행 컴파일합니다. 당신이 당신의 $PATH
에 접근 find
을 만든 경우, 당신은 대부분 * 괜찬아 배포판 find 및 test - 표준 프로그램 ... 어쩌면 당신은 더 구체적인 이름을 선택할 수 있습니다 (즉, ./myFind testArg)
출력 실행 파일에 다른 이름을 지정해보십시오.
'test'라는 디렉토리를 찾는 시스템 찾기 명령을 실행 한 것으로 의심됩니다.
또는
./find toto
편집 실행하여 강제로 시도 : 그것은 처음에 반대 현재 디렉토리에 찾기를 실행하기 위해 쉘을 알려주기 때문에 명령에 ./를 붙이는이 중요하다 '발견 '귀하의 PATH에 존재합니다. 일반적으로 가지고 있지 않은 것이 좋습니다. (현재 디렉토리)를 보안상의 이유로 PATH에 저장하십시오.
HTH
P. K & R.을 통해 일하는 것에 대해 좋은 말을하는 것을 잊었습니다. C에서 30 년 동안 일한 후에도 똑같은 일을 끝냈습니다. 돌아와 마음을 상쾌하게하는 것이 좋았습니다!
접두어 "./"*는 적어도 Linux에서는 현재 폴더 "."로 중요합니다. 일반적으로 PATH 변수에 포함되지 않으므로 시스템은 바이너리를 찾지 않습니다. 작성한 실행 파일이 시스템의 표준 프로그램과 동일한 이름 (예 : "test") 인 경우 "./"을 제외하면 컴파일 한 프로그램이 아닌 시스템 프로그램이 사용됩니다. – bluebrother
당신은 내가 말한 것을 오해합니다. 나는 /하지 않았다/말하기 "그것은 접두사에"/. "접두어가 붙어 있든 없든 상관 없습니다. 당신이 말한 것을 정확히 지적했습니다."./ "접두사를 붙이면 명명 충돌이 생기지 않을 것입니다. – Pete
@Pete, 다른 사람들이 제공 한 답변에 도둑질을 해줘서 고마워. 먼저 시스템 명령과 충돌하는 이름을 찾은 다음 ./을 사용하여 참조를 취소하십시오. 숙녀와 신사의 편집을 확인하십시오 ... –