[ 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. |