progress-4gl
OS 유틸리티
수색…
소개
운영 체제에 액세스하기위한 몇 가지 기본 제공 함수 및 명령문이 있습니다.
OS-COMMAND
OS 명령을 실행합니다.
옵션이없는 OS-COMMAND는 새 셸을 시작하고 종료하지 않습니다. 따라서 그래픽 OS에서 실행됩니다 : es는 "hanging"창을 남깁니다.
DEFINE VARIABLE cmd AS CHARACTER NO-UNDO.
cmd = "dir".
OS-COMMAND VALUE(cmd).
SILENT
, NO-WAIT
및 NO-CONSOLE
세 가지 옵션이 있습니다.
조용한
운영 체제 명령을 처리 한 후 AVM 쉘이 일시 정지합니다. Windows GUI 플랫폼에서 창을 종료하려면 exit를 입력해야합니다. Windows 문자 플랫폼에서 창을 종료하려면 exit를 입력하고 RETURN 또는 SPACEBAR를 눌러야합니다. SILENT 옵션을 사용하여이 일시 중지를 제거 할 수 있습니다. 프로그램, 명령 또는 배치 파일이 화면에 아무런 출력도 생성하지 않는 경우에만이 옵션을 사용하십시오. NO-WAIT와 함께 사용할 수 없습니다.
OS-COMMAND SILENT VALUE("runprogram.exe").
대기 중
다중 작업 환경에서 운영 체제 명령이 종료 될 때까지 기다리지 않고 AVM이 OS-COMMAND 후 제어를 다음 명령문으로 즉시 전달하도록합니다. SILENT와 함께 사용할 수 없습니다. 이 옵션은 Windows에서만 지원됩니다.
OS-COMMAND NO-WAIT VALUE("DIR > dirfile.txt").
Linux / Unix의 경우 명령 앞에 &
사용하여이 작업을 수행해야합니다.
OS-COMMAND VALUE("ls >> file.txt &").
NO-CONSOLE
운영 체제 명령을 처리하는 동안 AVM은 콘솔 창을 작성합니다. 명령을 실행 한 후에는 콘솔 창이 정리되지 않을 수 있습니다. NO-CONSOLE 옵션을 사용하여이 창을 처음부터 만들지 않도록 할 수 있습니다.
OS-COMMAND NO-CONSOLE VALUE("startbach.bat").
오류는 OS-COMMAND
에서 진행 ABL로 반환되지 않으므로 다른 방법으로 오류를 확인해야합니다. 예를 들어 셸 스크립트 또는 비슷한 파일에 오류를 기록해야합니다.
OPSYS
OPSYS
은 프로그램이 실행중인 OS를 반환합니다.
MESSAGE OPSYS VIEW-AS ALERT-BOX.
결과:
이 유틸리티를 사용하여 호출 할 OS 유틸리티를 선택할 수 있습니다.
IF OPSYS = "LINUX" THEN
OS-COMMAND VALUE("ls -l").
ELSE
OS-COMMAND VALUE("dir").
OS-ERROR
정수로 표시된 이전 OS-*
호출에서 오류를 반환합니다. OS-ERROR를 반환 할 수있는 호출은 다음과 같습니다.
- OS-APPEND
- OS-COPY
- OS-CREATE-DIR
- OS 삭제
- OS-RENAME
- 캐시 저장
OS-COMMAND
가 누락되었습니다. OS-COMMAND에서 오류를 처리해야합니다.
오류 번호 | 기술 |
---|---|
0 | 오류 없음 |
1 | 소유자가 아닙니다. |
2 | 그러한 파일 또는 디렉토리 없음 |
삼 | 중단 된 시스템 호출 |
4 | I / O 오류 |
5 | 잘못된 파일 번호 |
6 | 더 이상 프로세스가 없습니다. |
7 | 코어 메모리가 충분하지 않습니다. |
8 | 사용 권한이 거부되었습니다. |
9 | 잘못된 주소 |
10 | 파일이 존재 |
11 | 그러한 장치가 없습니다. |
12 | 디렉토리가 아닙니다. |
13 | 디렉토리 |
14 | 파일 테이블 오버 플로우 |
15 명 | 열려있는 파일이 너무 많습니다. |
16 | 파일이 너무 큽니다 |
17 | 기기에 남은 공간이 없습니다. |
18 | 디렉토리가 비어 있지 않음 |
999 | 맵핑되지 않은 오류 (ABL 기본값) |
OS-GETENV 기능
모든 OS 환경 변수의 값을 반환합니다.
MESSAGE OS-GETENV ("OS") VIEW-AS ALERT-BOX.
Windows 컴퓨터 :
MESSAGE OS-GETENV ("SHELL") VIEW-AS ALERT-BOX.
현재의 쉘로 배시가있는 리눅스 머신에서의 결과 :
┌────── Message ───────┐
│ /bin/bash │
│ ──────────────────── │
│ <OK> │
└──────────────────────┘
OS-COPY
파일 복사
COPY 소스 파일 target-file
c:\temp\source-file.txt
를 c:\temp\target-file.txt
복사하십시오. 성공 또는 부족 여부를 확인하려면 OS-ERROR
를 확인해야합니다.
OS-COPY VALUE("c:\temp\source-file.txt") VALUE("c:\temp\target-file.txt").
IF OS-ERROR <> 0 THEN DO:
MESSAGE "An error occured" VIEW-AS ALERT-BOX ERROR.
END.
OS 삭제
파일 또는 파일 트리를 삭제합니다.
다른 많은 OS- * 유틸리티와 마찬가지로 OS-ERROR
에서 상태를 확인해야합니다.
OS-DELETE 파일 또는 디렉토리 삭제 [RECURSIVE]
전체 /tmp/dir
트리를 삭제하십시오.
OS-DELETE VALUE("/tmp/dir") RECURSIVE.
c:\dir\file.txt
라는 파일을 삭제하십시오 c:\dir\file.txt
OS-DELETE VALUE("c:\dir\file.txt").
OS-CREATE-DIR
디렉토리를 만듭니다. 상태는 OS-ERROR
OS-CREATE-DIR 디렉토리
/usr/local/appData
라는 디렉토리를 만듭니다.
OS-CREATE-DIR VALUE("/usr/local/appData").
OS-APPEND
하나의 파일을 다른 파일에 추가하십시오. 상태는 OS-ERROR
에서 확인됩니다.
OS-APPEND 소스 타겟
sourcefile.txt
와 함께 targetfile.txt
를 추가합니다.
OS-APPEND VALUE("sourcefile.txt") VALUE("targetfile.txt").
OS-RENAME
파일 또는 디렉토리의 이름을 바꿉니다. 상태는 OS-ERROR
입니다. 파일 이동 (또는 이동 및 이름 변경)에도 사용할 수 있습니다.
OS-rename oldname newname
/tmp/old-name
을 /tmp/new-name
바꿉니다.
OS-RENAME VALUE("/tmp/old-name") VALUE("/tmp/new-name").
c:\temp\old.txt
파일을 c:\new-dir\old.txt
.
OS-RENAME VALUE("c:\temp\old.txt") VALUE("c:\new-dir\old.txt").
OS-DRIVES (Windows 전용)
시스템의 모든 드라이브 목록을 리턴합니다.
MESSAGE OS-DRIVES VIEW-AS ALERT-BOX.
4 개 드라이브 (C에서 F까지)의 결과 :
리눅스에서는리스트에 아무런 "드라이브"도 연결되어 있지 않기 때문에 목록이 비어있게됩니다. 디렉토리 나열은 다른 방법으로 수행됩니다 ( INPUT FROM OS-DIR
)