Exec - Linux 명령 - Unix 명령

exec - 서브 프로세스 호출

개요

간부 ? 스위치 ? arg ? arg ... ?

기술

이 명령은 인수를 실행할 하나 이상의 서브 프로세스의 스펙으로 취급합니다. 인수는 표준 쉘 파이프 라인 형식을 취하며 각 인수 는 명령의 한 단어가되고 각각의 고유 한 명령은 하위 프로세스가됩니다.

exec 의 초기 인수가 - 로 시작하면 명령 줄 스위치로 처리되며 파이프 라인 사양에 포함되지 않습니다. 현재 지원되는 스위치는 다음과 같습니다.

-keepnewline

파이프 라인 출력에 후행 줄 바꾸기를 유지합니다. 보통 후행 줄 바꿈이 삭제됩니다.

-

스위치의 끝을 표시합니다. 이 인수 다음에 오는 인수는 -로 시작하더라도 첫 번째 인수 로 취급됩니다.

arg (또는 arg 쌍)에 아래에 설명 된 형식 중 하나가 있으면 exec 에 의해 사용되어 하위 프로세스 간의 입력 및 출력 흐름을 제어합니다. 이러한 인수는 서브 프로세스에 전달되지 않습니다. ``< fileName ''과 같은 형식에서 fileName 은``< ''와는 별도의 인수이거나 중간에 공백이없는 같은 인수 (즉,``< fileName '') 일 수 있습니다.

|

파이프 라인에서 다른 명령을 구분합니다. 선행 명령의 표준 출력은 다음 명령의 표준 입력으로 파이프됩니다.

| &

파이프 라인에서 다른 명령을 구분합니다. 앞의 명령의 표준 출력과 표준 오류 모두 다음 명령의 표준 입력으로 파이프됩니다. 이 리디렉션 형식은 2> 및> &와 같은 형식을 재정의합니다.

<파일 이름

fileName 에 의해 명명 된 파일이 열리고 파이프 라인의 첫 번째 명령에 대한 표준 입력으로 사용됩니다.

<@ fileId

FileId 는 열린 파일의 식별자 여야합니다 (예 : open에 대한 이전 호출의 반환 값). 이 명령은 파이프 라인의 첫 번째 명령에 대한 표준 입력으로 사용됩니다. FileId 가 읽기 용으로 열려 있어야합니다.

<< value

은 표준 입력으로 첫 번째 명령으로 전달됩니다.

> fileName

마지막 명령의 표준 출력은 fileName 이라는 파일로 리디렉션되어 이전 내용을 덮어 씁니다.

2> fileName

파이프 라인에있는 모든 명령의 표준 오류는 fileName 이라는 파일로 리디렉션되어 이전 내용을 덮어 씁니다.

> & fileName

마지막 명령의 표준 출력과 모든 명령의 표준 오류는 모두 fileName 이라는 파일로 리디렉션되어 이전 내용을 덮어 씁니다.

>> fileName

마지막 명령의 표준 출력은 fileName 이라는 파일로 리디렉션되고 덮어 쓰지 않고 추가됩니다.

2 >> fileName

파이프 라인에있는 모든 명령의 표준 오류는 fileName 파일로 리디렉션되고 덮어 쓰지 않고 추가됩니다.

>> & fileName

마지막 명령의 표준 출력과 모든 명령의 표준 오류 모두 fileName 이라는 파일로 리디렉션되고 덮어 쓰지 않고 추가됩니다.

> @ fileId

FileId 는 열린 파일의 식별자 여야합니다 (예 : open에 대한 이전 호출의 반환 값). 마지막 명령의 표준 출력은 fileId 파일로 리디렉션됩니다.이 파일은 쓰기 위해 열려 있어야합니다.

2> @ fileId

FileId 는 열린 파일의 식별자 여야합니다 (예 : open에 대한 이전 호출의 반환 값). 파이프 라인에있는 모든 명령의 표준 오류는 fileId 의 파일로 리디렉션됩니다. 파일은 쓰기 위해 열렸어야합니다.

> & @ fileId

FileId 는 열린 파일의 식별자 여야합니다 (예 : open에 대한 이전 호출의 반환 값). 마지막 명령의 표준 출력과 모든 명령의 표준 오류 모두 fileId 의 파일로 리디렉션됩니다. 파일은 쓰기 위해 열렸어야합니다.

표준 출력이 리디렉션되지 않은 경우 exec 명령은 파이프 라인의 마지막 명령에서 표준 출력을 반환합니다. 파이프 라인의 명령이 비정상적으로 종료되거나 종료되거나 일시 중단되면 exec 가 오류를 반환하고 오류 메시지에 파이프 라인 출력이 포함되고 비정상 종료를 설명하는 오류 메시지가 표시됩니다. errorCode 변수에는 발생한 마지막 비정 s 종료에 대한 추가 정보가 들어 있습니다. 명령 중 하나가 표준 오류 파일에 쓰고 표준 오류가 경로 재 지정되지 않으면 exec 는 오류를 리턴합니다. 오류 메시지에는 파이프 라인의 표준 출력, 비정상 종료 (있는 경우)에 대한 메시지, 표준 오류 출력 등이 포함됩니다.

결과 또는 오류 메시지의 마지막 문자가 개행 문자 인 경우 해당 문자는 일반적으로 결과 또는 오류 메시지에서 삭제됩니다. 이는 일반적으로 개행 문자로 끝나지 않는 다른 Tcl 반환 값과 일치합니다. 그러나 -keepnewline 이 지정되면 후행 줄 바꿈이 유지됩니다.

표준 입력이``< ''또는``<< ''또는``<@ ''로 리디렉션되지 않으면 파이프 라인의 첫 번째 명령에 대한 표준 입력은 응용 프로그램의 현재 표준 입력에서 가져옵니다.

마지막 arg 가``& ''이면 파이프 라인은 백그라운드에서 실행됩니다. 이 경우 exec 명령은 요소가 파이프 라인의 모든 하위 프로세스에 대한 프로세스 식별자 인 목록을 반환합니다. 리디렉션되지 않은 경우 파이프 라인의 마지막 명령에서 표준 출력은 응용 프로그램의 표준 출력으로 이동하고 파이프 라인의 모든 명령에서 오류 출력은 리디렉션되지 않으면 응용 프로그램의 표준 오류 파일로 이동합니다.

각 명령의 첫 번째 단어는 명령 이름으로 간주됩니다. 틸드 대체가 수행되고 결과에 슬래시가없는 경우 PATH 환경 변수의 디렉토리에서 지정된 이름으로 실행 파일이 검색됩니다. 이름에 슬래시가 포함되어 있으면 현재 디렉토리에서 도달 할 수있는 실행 파일을 참조해야합니다. 명령에 대한 인수에``glob ''확장이나 다른 쉘 같은 대체가 수행되지 않습니다.

이식성 문제

Windows (모든 버전)

`` @ fileId ''표기법을 사용하여 소켓에서 읽고 쓰거나 작동하지 않습니다. 소켓에서 읽을 때 16 비트 DOS 응용 프로그램이 멈추고 32 비트 응용 프로그램이 파일 끝과 함께 즉시 반환됩니다. 두 가지 유형의 응용 프로그램이 소켓에 쓸 때, 정보는 콘솔에 보내지거나 대신 버려집니다.

Tk 콘솔 텍스트 위젯은 실제 표준 IO 기능을 제공하지 않습니다. 표준 입력에서 리디렉션 할 때 Tk에서 모든 응용 프로그램은 즉각적인 파일 끝을 보게됩니다. 표준 출력이나 표준 오류로 리다이렉트 된 정보는 버려 질 것이다.

정방향 또는 역방향 슬래시는 Tcl 명령에 대한 인수의 경로 분리 자로 허용됩니다. 응용 프로그램을 실행할 때 응용 프로그램에 대해 지정된 경로 이름은 경로 구분 기호로 정방향 또는 역방향 슬래시를 포함 할 수도 있습니다. 그러나 대부분의 Windows 응용 프로그램에서는 옵션 슬래시 만 옵션 인수로 사용할 수 있으며 경로에서는 백 슬래시를 사용할 수 있습니다. 슬래시가있는 경로 이름을 지정하는 응용 프로그램의 인수는 백 슬래시 문자를 사용하도록 자동 변환되지 않습니다. 인수에 경로 구분 기호로 슬래시가 포함되어 있으면 프로그램에 따라 경로 이름으로 인식되거나 인식되지 않을 수 있습니다.

또한 16 비트 DOS 또는 Windows 3.X 응용 프로그램을 호출 할 때 모든 경로 이름은 짧고 비밀스러운 경로 형식을 사용해야합니다 (예 : "applbakery.default"대신 "applba ~ 1.def"사용) ).

경로의 한 행에있는 두 개 이상의 앞으로 또는 뒤로 슬래시는 네트워크 경로를 나타냅니다. 예를 들어, 루트 디렉토리 c : / 를 하위 디렉토리 / windows / system 과 간단하게 연결하면 c : // windows / system (두 개의 슬래시가 함께 표시됨)이 표시됩니다.이 마운트 지점은 windows (및 c : 는 무시됩니다) 현재 컴퓨터의 디렉토리를 설명하는 c : / windows / system 과 동일하지 않습니다. 파일 결합 명령은 경로 구성 요소를 병합하는 데 사용해야합니다.

Windows NT

응용 프로그램을 실행할 때 exec는 먼저 지정된 이름을 검색합니다. 그런 다음 .com , .exe.bat 가 지정된 이름 끝에 추가되고 더 긴 이름이 검색됩니다. 디렉토리 이름이 응용 프로그램 이름의 일부로 지정되지 않은 경우 응용 프로그램을 찾으려고 할 때 다음 디렉토리가 순서대로 자동 검색됩니다.

Tcl 실행 파일이로드 된 디렉토리.
현재 디렉토리.
Windows NT 32 비트 시스템 디렉토리.
Windows NT 16 비트 시스템 디렉토리.
Windows NT 홈 디렉토리.
경로에 나열된 디렉토리.

dircopy 와 같은 쉘 내장 명령을 실행하려면 호출자는 원하는 명령에`` cmd.exe / c ''를 추가해야합니다.

Windows 95

응용 프로그램을 실행할 때 exec는 먼저 지정된 이름을 검색합니다. 그런 다음 .com , .exe.bat 가 지정된 이름 끝에 추가되고 더 긴 이름이 검색됩니다. 디렉토리 이름이 응용 프로그램 이름의 일부로 지정되지 않은 경우 응용 프로그램을 찾으려고 할 때 다음 디렉토리가 순서대로 자동 검색됩니다.

Tcl 실행 파일이로드 된 디렉토리.
현재 디렉토리.
Windows 95 시스템 디렉토리.
Windows 95 홈 디렉토리.
경로에 나열된 디렉토리.

dircopy 와 같은 쉘 내장 명령을 실행하려면 호출자는 원하는 명령에 " command.com / c "를 추가해야합니다.

16 비트 DOS 응용 프로그램이 콘솔에서 표준 입력을 읽은 다음 종료하면 모든 후속 16 비트 DOS 응용 프로그램이 표준 입력을 이미 닫힌 것으로 간주합니다. 32 비트 응용 프로그램은이 문제가 없으며 16 비트 DOS 응용 프로그램에서 표준 입력이 닫힌 것으로 생각한 후에도 올바르게 실행됩니다. 현재이 버그에 대한 알려진 해결 방법이 없습니다.

NUL : 장치와 16 비트 응용 프로그램 간의 리디렉션이 항상 작동하는 것은 아닙니다. NUL 에서 리디렉션 할 때 : 일부 응용 프로그램이 멈추거나 다른 응용 프로그램이 무한대의``0x01 ''바이트 스트림을 얻고 일부는 실제로 파일의 끝을 올바르게 가져옵니다. 이 동작은 응용 프로그램 자체에 컴파일 된 것에 의존하는 것처럼 보입니다. NK : 4K 이상으로 리디렉션 할 때 일부 응용 프로그램이 중단됩니다. 32 비트 응용 프로그램에서는 위의 문제가 발생하지 않습니다.

모든 DOS 16 비트 응용 프로그램은 동 기적으로 실행됩니다. 파이프에서 16 비트 DOS 응용 프로그램으로의 모든 표준 입력은 임시 파일로 수집됩니다. 16 비트 DOS 응용 프로그램이 실행되기 전에 파이프의 다른 쪽 끝을 닫아야합니다. 파이프에 대한 16 비트 DOS 응용 프로그램의 모든 표준 출력 또는 오류는 임시 파일로 수집됩니다. 임시 파일이 파이프 라인의 다음 단계로 리디렉션되기 전에 응용 프로그램을 종료해야합니다. 이것은 파이프 구현의 Windows 95 버그에 대한 해결 방법으로 인해 발생하며 표준 Windows 95 DOS 셸이 파이프 자체를 처리하는 방법입니다.

command.com 과 같은 특정 응용 프로그램은 대화식으로 실행하면 안됩니다. 표준 입력을 읽고 표준 출력에 쓰는 것보다는 콘솔 창에 직접 액세스하는 응용 프로그램은 실패 할 수도 있고, Tcl을 멈추거나, 자신의 전용 콘솔 창을 사용할 수없는 경우 시스템을 멈출 수도 있습니다.

매킨토시

exec 명령은 구현되지 않았으며 Macintosh에서는 존재하지 않습니다.

유닉스

exec 명령은 완전히 기능하며 설명 된대로 작동합니다.

참고 사항

오류 (n), 열 (n)

키워드

실행, 파이프 라인, 리다이렉션, 서브 프로세스

중요 : man 명령 ( % man )을 사용하여 특정 컴퓨터에서 명령이 어떻게 사용되는지보십시오.