펄 프로 세 스 관리
Perl 에서 프로 세 스 를 다른 방법 으로 만 들 수 있 습 니 다.
이 강 좌 는 프로 세 스 의 관리 방법 을 토론 할 것 이다.
반 따옴표 연산 자
반 따옴표 연산 자 를 사용 하면 유 닉 스 명령 을 쉽게 실행 할 수 있다.너 는 작은 따옴표 에 간단 한 명령 을 삽입 할 수 있다.명령 실행 후 결 과 를 되 돌려 줍 니 다:
#!/usr/bin/perl
@files = `ls -l`;
foreach $file (@files){
print $file;
}
1;
상기 프로그램 을 실행 하면 출력 결 과 는 다음 과 같 습 니 다.
drwxr-xr-x 3 root root 4096 Sep 14 06:46 9-14
drwxr-xr-x 4 root root 4096 Sep 13 07:54 android
-rw-r--r-- 1 root root 574 Sep 17 15:16 index.htm
drwxr-xr-x 3 544 401 4096 Jul 6 16:49 MIME-Lite-3.01
-rw-r--r-- 1 root root 71 Sep 17 15:16 test.pl
……
system () 함수
시스템 () 함수 로 유 닉 스 명령 을 실행 할 수도 있 습 니 다. 이 명령 을 실행 하면 결 과 를 직접 출력 합 니 다.기본적으로 현재 Perl 의 stdOUT 가 가리 키 는 곳 으로 보 내 집 니 다. 보통 화면 입 니 다.지정 한 파일 로 출력 하려 면 재 설정 연산 자 > 를 사용 하 십시오:
상기 프로그램 을 실행 하면 출력 결 과 는 다음 과 같 습 니 다.
drwxr-xr-x 3 root root 4096 Sep 14 06:46 9-14
drwxr-xr-x 4 root root 4096 Sep 13 07:54 android
-rw-r--r-- 1 root root 574 Sep 17 15:16 index.htm
drwxr-xr-x 3 544 401 4096 Jul 6 16:49 MIME-Lite-3.01
-rw-r--r-- 1 root root 71 Sep 17 15:16 test.pl
……
홈 의 출력 결과 와 같은 환경 변 수 를 포함 하 는 명령 을 주의해 야 합 니 다. 다음 과 같 습 니 다.
실례
#!/usr/bin/perl
$PATH = "我是 Perl 的变量";
system('echo $PATH'); # $PATH 作为 shell 环境变量
system("echo $PATH"); # $PATH 作为 Perl 的变量
system("echo \$PATH"); # 转义 $
1;
상기 프로그램 을 실행 하면 출력 결 과 는 다음 과 같 습 니 다.
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
我是 Perl 的变量
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
fork () 함수
Perl fork () 함 수 는 새 프로 세 스 를 만 드 는 데 사 용 됩 니 다.
부모 프로 세 스에 서 하위 프로 세 스 의 PID 를 되 돌려 주 고 하위 프로 세 스에 서 0 을 되 돌려 줍 니 다.오류 가 발생 하면 (예 를 들 어 메모리 부족) undef 를 되 돌려 주 고 $!대응 하 는 오류 정보 로 설정 합 니 다.
fork 는 exec 와 함께 사용 할 수 있 습 니 다.exec 함수 가 따옴표 의 명령 을 실행 하면 프로 세 스 가 끝 납 니 다.
실례
#!/usr/bin/perl
if(!defined($pid = fork())) {
# fork 发生错误返回 undef
die "无法创建子进程: $!";
}elsif ($pid == 0) {
print "通过子进程输出
";
exec("date") || die "无法输出日期: $!";
} else {
# 在父进程中
print "通过父进程输出
";
$ret = waitpid($pid, 0);
print "完成的进程ID: $ret
";
}
1;
상기 프로그램 을 실행 하면 출력 결 과 는 다음 과 같 습 니 다.
通过父进程输出
通过子进程输出
2016年 6月19日 星期日 22时21分14秒 CST
完成的进程ID: 47117
프로 세 스 가 종료 되면 부모 프로 세 스에 CHLD 신 호 를 보 내 면 경직 된 프로 세 스 가 됩 니 다. 부모 프로 세 스 는 wait 와 waitpid 를 사용 하여 종료 해 야 합 니 다.물론 $SIG {CHLD} 을 IGNORG 로 설정 할 수도 있 습 니 다.
실례
#!/usr/bin/perl
local $SIG{CHLD} = "IGNORE";
if(!defined($pid = fork())) {
# fork 发生错误返回 undef
die "无法创建子进程: $!";
}elsif ($pid == 0) {
print "通过子进程输出
";
exec("date") || die "无法输出日期: $!";
} else {
# 在父进程中
print "通过父进程输出
";
$ret = waitpid($pid, 0);
print "完成的进程ID: $ret
";
}
1;
상기 프로그램 을 실행 하면 출력 결 과 는 다음 과 같 습 니 다.
通过父进程输出
通过子进程输出
2016年 6月19日 星期日 22时30分56秒 CST
完成的进程ID: -1
Kill 함수
Perl kill (signal, (Process List)) 은 프로 세 스에 신 호 를 보 냅 니 다.signal 은 보 낸 디지털 신호 로 9 는 프로 세 스 를 죽 이 는 것 입 니 다.
먼저 Liux 에서 자주 사용 하 는 신 호 를 보 세 요. 다음 목록 을 보 세 요.
信号名 值 标注 解释
————————————————————————————————————————————————————————————
HUP 1 A 检测到挂起
INT 2 A 来自键盘的中断
QUIT 3 A 来自键盘的停止
ILL 4 A 非法指令
ABRT 6 C 失败
FPE 8 C 浮点异常
KILL 9 AF 终端信号
USR1 10 A 用户定义的信号1
SEGV 11 C 非法内存访问
USR2 12 A 用户定义的信号2
PIPE 13 A 写往没有读取者的管道
ALRM 14 A 来自闹钟的定时器信号
TERM 15 A 终端信号
CHLD 17 B 子进程终止
CONT 18 E 如果被停止则继续
STOP 19 DF 停止进程
TSTP 20 D tty键入的停止命令
TTIN 21 D 对后台进程的tty输入
TTOU 22 D 对后台进程的tty输出
다음 인 스 턴 스 는 프로 세 스 104 와 102 에 SIGINT 신 호 를 보 냅 니 다.
실례
#!/usr/bin/perl kill('INT', 104, 102); 1;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.