문제

나는 학습을 쓰 TCL(예)스크립트와 나는 몇 가지 예를 보여 사용하는 산란,다른 사람들이 보여 명령 exec.나 인터넷 검색,그러나 찾을 수 없는 차이점은 무엇입니까?

가정하자 나는 칭'exec'의 중간에 긴 기대 스크립트를,무엇을 기대할 수 있을까요?

도움이 되었습니까?

해결책

spawn 이다 expect 명령이 아닙니다 tcl 명령. exec a tcl 명령.

spawn 프로세스를 만듭니다. 프로세스의 입력 및 출력은 다른 예상 명령에 의해 사용하기 위해 연결됩니다. send, expect 그리고 interact.

exec TCL에서 하위 프로세스를 만듭니다. 일반적으로 TCL은 하위 프로세스가 완료 될 때까지 중단됩니다. 그러나 하나 ~할 수 있다 백그라운드에서 하위 프로세스를 작성하고 (마지막 인수 사용) 입력을 연결하고 출력을 올바르게 연결하면 TCL이 하위 프로세스와 상호 작용할 수 있습니다. 이것은 매우 서투르며 정확히 부드럽게 처리하도록 설계된 일종의 상호 작용입니다.

다른 팁

질문에 대답하는 더 간단한 방법은 언제 exec vs spawn을 사용해야하는지 묻는 것을 다시 제출하는 것입니다. 요컨대, 대화식 명령에 Spawn을 사용하고 비 중식 명령에 대한 exec.

그것은 또한 주목할만한 일(많은?) 프로그램을 다르게 행동하는 실행할 경우 사용자가(즉,명령행에)대고 일괄 처리 프로세스/행에서 다른 프로세스.실제적인 차이가 있는지 여부 터미널 프로세스에 연결됩니다.

스폰 명령의 일부 확장 기대하는 Tcl,세 것 그래서 실행되는 프로그램으로 자신을보고 실행하는 사용자에 의해,그리고 다음에 기능을 추가 허용 tcl 프로그램과 상호 작용을 외부 프로그램에서는 편리한 방법(즉,일치하는 그것의 출력을 통한 정규 표현식을 지점 떨어져 사람들과 일치하).행을 통해 생성되는 비동기적으로 실행됩니다.

Exec 명령은 핵심 Tcl 명령을 실행하는 다른 프로그램,그 반환의 출력 합니다.그것은 수행하지 않습니다 복잡한 설정을 낳는 않지만,매우 편리할 수 있습만을 위한 프로그램을 실행하고 그것의 출력을(그리고 그것은 반환하는 코드).것에 의해 실행 exec 기본적으로,동기적으로 실행하지만,앰퍼샌드의 끝에서 명령을 실행하면 그것을 실행할 수 배경에서(많은 전통적인 쉘 스크립트).

Open 명령을 하는 동안 일반적으로 사용되는 파일 읽기/쓰기,또한 사용될 수 있는 실행할 외부 프로세스입니다.여 앞의 명령어 이름을 가진 파이프(|)기호,당신이 말한 그것을 실행하려면 외부 프로세스에 액세스를 읽기/쓰기 파일기술자와 상호 작용하는 결과는 과정이다.이것은 일종의 중간에 땅을 사 exec 및 산란,훨씬 더 상호작용 과정으로 이용할 수 있지만,없이 복잡한 환경 설정에 대해 자세히 알아보는 않습니다.그것은 매우 유용 할 수 있습에 대한 상호 작용하는 프로그램의 입력이 필요하지만 아직도 상당히 잘 설치를 위한 자동화입니다.

내가 아는 한, Spawn은 프로세스 ID (및 with with with with with)를 반환하는 반면 Exec은 "&"를 통과하지 않는 한 최종 stdout을 반환합니다. 따라서 그것은 당신의 기대에 영향을 미치지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top