Perl 教程 之 Perl 进程管理 3

简介: Perl教程介绍了进程管理,包括获取进程ID、访问环境变量、退出进程及句柄影响。`fork()`函数创建新进程,返回子进程PID或在出错时返回`undef`。`exec()`在子进程中执行命令后结束。示例代码演示了`fork()`和`exec()`配合使用,展示父进程和子进程的不同输出。

Perl 教程 之 Perl 进程管理 3

Perl 进程管理

Perl 中可以以不同的方法来创建进程。

可以使用特殊变量 $$ 或 $PROCESS_ID 来获取进程 ID。

%ENV 哈希存放了父进程,也就是shell中的环境变量,在Perl中可以修改这些变量。

exit() 通常用于退出子进程,主进程在子进程全部退出后再退出。

所有打开的句柄会在子程序中被 dup() 函数复制, 所有关闭进程所有句柄不会影响其他进程 。

fork() 函数

Perl fork() 函数用于创建一个新进程。

在父进程中返回子进程的PID,在子进程中返回0。如果发生错误(比如,内存不足)返回undef,并将$!设为对应的错误信息。

fork 可以和 exec 配合使用。exec 函数执行完引号中的命令后进程即结束。

实例

!/usr/bin/perl

if(!defined($pid = fork())) {

fork 发生错误返回 undef

die "无法创建子进程: $!";
}elsif ($pid == 0) {
print "通过子进程输出\n";
exec("date") || die "无法输出日期: $!";

} else {

在父进程中

print "通过父进程输出\n";
$ret = waitpid($pid, 0);
print "完成的进程ID: $ret\n";

}

1;

执行以上程序,输出结果如下:

通过父进程输出
通过子进程输出
2016年 6月19日 星期日 22时21分14秒 CST
完成的进程ID: 47117

目录
相关文章
|
弹性计算 安全 API
访问控制(RAM)|凭证安全管理与最佳实践
本文分享将为您介绍从访问云资源的人员/程序身份两种身份类型,介绍云上凭证的认证方式、安全风险及凭证管理的最佳实践。
103229 7
|
Java Linux Maven
要自定义编译和打包Seata-All
要自定义编译和打包Seata-All
333 2
|
iOS开发 MacOS Python
在Mac 上搭建Pygame开发环境(含安装错误的解决办法)
在Mac 上搭建Pygame开发环境(含安装错误的解决办法)
1316 0
|
弹性计算
阿里云服务器公网IP和私网IP地址在哪查询?
阿里云服务器公网IP和私网IP地址在哪查询?阿里云服务器IP地址在哪查看?在云服务器ECS管理控制台即可查看,阿里云服务器IP地址包括公网IP和私有IP,阿里云百科分享阿里云服务器IP地址查询方法
606 0
|
监控 网络协议 网络安全
(14)Qt绘图(one)
本文介绍了在Qt中使用QPainter进行绘图的基础操作,包括如何指定绘图设备、使用QPen和QBrush设置线条和填充样式、绘制不同样式的线条和形状,以及如何实现纹理填充和渐变填充等效果。
195 6
(14)Qt绘图(one)
|
Linux
Linux——清除history的记录
Linux——清除history的记录
155 0
|
Linux Shell
Linux判断目录是否存在命令,Linux shell 中判断文件、目录是否存在的方法
本文主要介绍了Linux 中 使用 shell 判断文件、目录是否存在的方法,分享给大家
889 0
|
Windows Perl
Perl 教程 之 Perl 正则表达式 8
Perl的正则表达式是其强项,常用于字符串匹配、查找、替换等。基本操作包括:`.`匹配任意字符(除换行符),`x?`匹配0或1次`x`,`x*`匹配0或多次`x`,`x+`匹配1或多次`x`。还有范围匹配如`[0-9]`、否定匹配`[^a-z]`、边界匹配`\b`等。特殊序列如`\d`代表数字,`\s`代表空格,`()`用于记忆匹配内容,`/pattern/i`忽略大小写。
269 0