CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): swhan (Nameless1)
날 짜 (Date): 2004년 10월 22일 금요일 오후 10시 30분 13초
제 목(Title): Re: [q] stdin 의 C 소스 컴파일


named pipe를 이용해보시는건 어떨까요?

$ mknod xxx.c p
$ cat hello.c > xxx.c &
$ gcc xxx.c -o hello
$ ./hello

순서를 바꿔서
$ gcc xxx.c -o hello &
$ cat hello.c > xxx.c
라고 하셔도 됩니다. 

후자가 조금 더 안전할까요?

뭐 이 방법도 xxx.c를 미리부터 읽고 있는 프로세스가 있으면 50%의 확률로 
가로첼 수 있습니다. 

named pipe를 /tmp에 순간적으로 random한 이름으로 만든 다음 컴파일한다면 
그나마 확률을 낮출 수 있을까요?
컴파일이 끝나면 pipe는 바로 삭제해야겠죠?

이것마저도 용납을 못하시겟다면... gcc소스를 가저다가  gcc실행파일 하나만 
수정하시는게 어떨까 합니다. 
gcc자체에 pipe옵션이 있는만큼 프리프로세서 컴파일 어셈블 링크까지 모두 
pipe로 처리할 수 있을겁니다. 
다만, 어셈블은 일부 시스템에서 문제가 있을 수 있겠군요.

     -pipe
          Use pipes rather than temporary files for communication
          between  the various stages of compilation.  This fails
          to work on some systems where the assembler cannot read
          from a pipe; but the GNU assembler has no trouble.
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.