2025-02-10T05:29:29
This commit is contained in:
74
docs/19_system.md
Normal file
74
docs/19_system.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# 시스템
|
||||
|
||||
시스템 명령어를 실행하는 가장 쉬운 방법은 백틱으로 감싸는 것입니다. 결과값을 반환 받을 수 있습니다.
|
||||
|
||||
```perl
|
||||
@files = `ls -al`;
|
||||
```
|
||||
|
||||
## eval
|
||||
|
||||
## system
|
||||
|
||||
```perl
|
||||
system("ls -al");
|
||||
```
|
||||
|
||||
결과값은 화면으로 출력됩니다.
|
||||
|
||||
## fork
|
||||
|
||||
fork()는 프로세스를 복제합니다. 새로 생성된 자식 프로세스는 fork()된 시점부터 진행되며 0을 반환받습니다. 부모 프로세스는 자식 프로세스의 프로세스 번호를 반환 받습니다. 프로세스 생성에 실패한 경우에는 `undef`가 반환됩니다.
|
||||
|
||||
```perl
|
||||
my $process_id = fork();
|
||||
if ($process_id == 0) {
|
||||
# Child process
|
||||
print "Child process.\n";
|
||||
} else {
|
||||
# Parent process
|
||||
print "Parent process.\n";
|
||||
}
|
||||
```
|
||||
|
||||
생성된 자식 프로세스를 종료하려면 `exit()`를 사용합니다. 자식 프로세스가 모두 종료되기 전에는 메인 프로세스가 종료되지 않습니다.
|
||||
|
||||
```perl
|
||||
exit(0);
|
||||
```
|
||||
|
||||
## 프로세스
|
||||
|
||||
특수변수인 `$$` 또는 `$PROCESS_ID`를 사용해서 현재 프로세스 번호를 알아낼 수 있습니다.
|
||||
|
||||
- exec
|
||||
|
||||
`system()`과 비슷하지만 명령 실행 전에 현재 프로세스가 종료됩니다.
|
||||
|
||||
- kill
|
||||
|
||||
프로세스 그룹에 종료 신호를 보냅니다.
|
||||
|
||||
```perl
|
||||
kill("INT", @proc_list);
|
||||
```
|
||||
|
||||
- sleep
|
||||
|
||||
```perl
|
||||
sleep(5); # 5초 동안 쉽니다.
|
||||
```
|
||||
|
||||
- times
|
||||
|
||||
프로그램에 소요된 시간을 리스트로 반환합니다.
|
||||
|
||||
- wait
|
||||
|
||||
자식 프로세스가 종료될 때까지 기다립니다. 자식 프로세스가 없다면 -1이 반환됩니다.
|
||||
|
||||
```perl
|
||||
$process_id = wait();
|
||||
```
|
||||
|
||||
- waitpid
|
||||
Reference in New Issue
Block a user