2025-02-10T05:29:29

This commit is contained in:
2025-02-10 05:29:29 +09:00
parent e00dd1bfbf
commit 6f1a75f466
45 changed files with 69 additions and 145 deletions

74
docs/19_system.md Normal file
View 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