2014-07-12 1 views

답변

2

Common Lisp의 외부 프로그램을 잘 돌릴 수있는 이식성있는 방법을 제공하는 external-program이 있습니다. 컴파일러가 제공하는 다양한 인터페이스의 추상화를 추상화하는 것은 나에게 좋은 일이다. execve과 관련하여 실제로는 관련이없는 경우 "성능"손실이 발생한다.

SBCL 만 타겟팅하는 경우 실제로는 복잡한 execve 인 sb-ext:run-program이 있습니다. 제 경험으로는 여전히/bin/sh를 통해 프로그램을 실행하며 PATH 조회를 수행 할 수 있으므로 execve가 정확히 끝나지 않을 수도 있습니다.

+0

sb-ext : 실행 프로그램이/bin/sh를 통과하지 않습니다. [출처] (http://sourceforge.net/p/sbcl/sbcl/ci/master/tree/src/code/run-program.lisp#l640)는 "RUN-PROGRAM은 fork()를 사용하고 execve() 다른 프로그램을 실행합니다. " 그러나 링크 된 매뉴얼 페이지에는 "펄과 다른 많은 프로그램과 같은 실행 프로그램의 sbcl 구현은 원본 cmu cl 구현과 달리 기본적으로 유닉스 환경을 복사합니다." 때때로/bin/sh를 통해 실행되는 느낌을 줄 수도 있습니다. 환경 적 요소가있을 수 있기 때문입니다. –

+1

/bin/env를 사용하는 외부 프로그램입니다. [출처] (https://github.com/sellout/external-program/blob/master/src/sbcl.lisp#L22) – thodg