2
무엇이 가장 좋은 방법입니다 execve() Lisp 코드에서 SBCL lisp 구현 무엇입니까? 아니면 모든 구현에 대해 작업하는 좋은 방법이 있을까요?execve()를 common lisp (SBCL)하는 방법은 무엇입니까?
무엇이 가장 좋은 방법입니다 execve() Lisp 코드에서 SBCL lisp 구현 무엇입니까? 아니면 모든 구현에 대해 작업하는 좋은 방법이 있을까요?execve()를 common lisp (SBCL)하는 방법은 무엇입니까?
Common Lisp의 외부 프로그램을 잘 돌릴 수있는 이식성있는 방법을 제공하는 external-program이 있습니다. 컴파일러가 제공하는 다양한 인터페이스의 추상화를 추상화하는 것은 나에게 좋은 일이다. execve
과 관련하여 실제로는 관련이없는 경우 "성능"손실이 발생한다.
SBCL 만 타겟팅하는 경우 실제로는 복잡한 execve 인 sb-ext:run-program이 있습니다. 제 경험으로는 여전히/bin/sh를 통해 프로그램을 실행하며 PATH 조회를 수행 할 수 있으므로 execve가 정확히 끝나지 않을 수도 있습니다.
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를 통해 실행되는 느낌을 줄 수도 있습니다. 환경 적 요소가있을 수 있기 때문입니다. –
/bin/env를 사용하는 외부 프로그램입니다. [출처] (https://github.com/sellout/external-program/blob/master/src/sbcl.lisp#L22) – thodg