재미있네요.
그런데 gcc 에서 '-' 옵션의 설명을 보려면 어디를 봐야 할까요? gcc --help 해서는 설명이 없고 더 자세한 설명을 봐야 할 것 같은데요..
어쨌거나 '-' 옵션이 있어야만 표준입력으로 소스를 읽어들입니다. 마치 gcc 를 인터프리터 컴파일러인 것 처럼 써볼 수 있는 방법이네요..
Thanks for being one of those who care for people and mankind.
I'd like to be one of those as well.
"실용적 예제로 배우는 리눅스 프로그래밍" 원저는 "Linux Programming by Example" 에 설명이 있습니다.
"POSIX 규칙" 이라고 번역했는데요, 그 중에 몇가지는 아래와 같습니다.
- 프로그램 이름은 2자 이상 9자 이하의 문자이어야 한다.
- 프로그램 이름은 소문자와 숫자로만 구성되어야 한다.
......
- 이름이 있는 파일을 읽거나 쓰는 프로그램은 단일 매개변수 '-'를 그 프로그램에 적절한 표준 입력 또는 표준 출력의 의미로 취급해야 한다.
위 마지막 구절이 이 경우에 대한 바로 그 convention 인 것 같습니다.
최근의 다양한 프로그램들이 이 POSIX 규칙을 모두 따르는 건 아니라는 설명도 있군요.
저는 프로그램 이름을 소문자와 숫자만 사용한다는 규칙도 눈에 들어옵니다. 대문자를 쓰면 쌩뚱맞게 되는 것이지요..
감사합니다.
Thanks for being one of those who care for people and mankind.
I'd like to be one of those as well.
??
이게 무슨뜻이져
사실 은폐라기 보다는 소스코드 파일없이 컴파일하는 법이라고 했어야...
컴파일러의 입력으로 파일이 아닌 표준입력을 사용한다는 말이었습니다.
그러면 원격 서버에 소스코드가 전혀 남지않게 되죠.
저의 경우 makefile 에서 어떤 플랫폼에서 컴파일하는지 알기 위해서
소스코드없이 위의 예제와 같이 플랫폼을 결정하는 프로그램을 빌드하여
그 실행결과로 각 소스코드에 DEFINE 을 해주곤 했습니다.
잘 생각해보시면 왜 소스코드 은폐인지 알 수 있을겁니다...
사실 강좌에 올렸던 것은 히스토리에 남을 수 도 있는데 다음과 같이 하면 걱정없을 듯...
아시겠지만 cat | gcc ... 명령에서 입력을 끝내려면 ^D (콘트롤-D) 를 누르셔야 합니다.
재미있네요. 그런데 gcc 에서 '-' 옵션의 설명을
재미있네요.
그런데 gcc 에서 '-' 옵션의 설명을 보려면 어디를 봐야 할까요? gcc --help 해서는 설명이 없고 더 자세한 설명을 봐야 할 것 같은데요..
어쨌거나 '-' 옵션이 있어야만 표준입력으로 소스를 읽어들입니다. 마치 gcc 를 인터프리터 컴파일러인 것 처럼 써볼 수 있는 방법이네요..
Thanks for being one of those who care for people and mankind.
I'd like to be one of those as well.
음 ..
file 이 들어갈 자리에 - 를 쓰는 건, file 대신 stdin 또는 stdout 으로 대체하겠다는 일종의 convention 입니다.
그래서 많은 프로그램들이 - 를 쓰면서도, 그에 대해서는 특별히 언급하지 않는 경우가 많습니다.
zcat file.tar.gz | tar xvf -
tar cvf - file | gzip -9 > file.tar.gz
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
아 그렇군요. 각 프로그램에서 구현한게 아니고 OS
아 그렇군요. 각 프로그램에서 구현한게 아니고 OS 에서 지원하는 기능인거네요!
아주아주 유용한 정보입니다! 제가 지금 하고 있던 개인프로젝트에서 쓸데 없는 내용을 구현할 뻔 했네요..
감사합니다.
Thanks for being one of those who care for people and mankind.
I'd like to be one of those as well.
OS 에서 자동으로 프로그램의 기능을 주는 것은 아닙니다...
getopt.c 라고 다음과 같이 프로그램을 작성한 뒤
make getopt 로 getopt 프로그램을 만들고
./getopt -h - 를 실행하면 이렇게 나오죠...
$ ./getopt -h -
HELP!
--
ARGV[0]: "-"
그냥 getopt 함수로 해석되지 않는 입력인 겁니다.
즉 당연한 것이겠지만 - 파일명을 표준입력으로 처리하도록 하는 것은 직접 구현해야 한다는 말이죠.
네 제가 잘못 알았군요. 재밌는
네 제가 잘못 알았군요. 재밌는 강좌였습니다.
감사합니다.
Thanks for being one of those who care for people and mankind.
I'd like to be one of those as well.
"실용적 예제로 배우는 리눅스 프로그래밍" 원저는
"실용적 예제로 배우는 리눅스 프로그래밍" 원저는 "Linux Programming by Example" 에 설명이 있습니다.
"POSIX 규칙" 이라고 번역했는데요, 그 중에 몇가지는 아래와 같습니다.
- 프로그램 이름은 2자 이상 9자 이하의 문자이어야 한다.
- 프로그램 이름은 소문자와 숫자로만 구성되어야 한다.
......
- 이름이 있는 파일을 읽거나 쓰는 프로그램은 단일 매개변수 '-'를 그 프로그램에 적절한 표준 입력 또는 표준 출력의 의미로 취급해야 한다.
위 마지막 구절이 이 경우에 대한 바로 그 convention 인 것 같습니다.
최근의 다양한 프로그램들이 이 POSIX 규칙을 모두 따르는 건 아니라는 설명도 있군요.
저는 프로그램 이름을 소문자와 숫자만 사용한다는 규칙도 눈에 들어옵니다. 대문자를 쓰면 쌩뚱맞게 되는 것이지요..
감사합니다.
Thanks for being one of those who care for people and mankind.
I'd like to be one of those as well.
키보드를 특수 제작해서 소스가 자동으로 입력되게
키보드를 특수 제작해서 소스가 자동으로 입력되게 만들면 좋겠군요.
외부 서버에 있는 소스 파일을 파이프로 연결해도 되겠네요.
재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.
아이디의 아이디어 무한도전
http://blog.aaidee.com
귀태닷컴
http://www.gwitae.com
댓글 달기