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

目录
相关文章
|
Java Linux Maven
要自定义编译和打包Seata-All
要自定义编译和打包Seata-All
353 2
|
新零售 城市大脑 分布式计算
阿里云2019北京峰会之我见(商业篇)
整场大会听下来,我用两个字来总结那就是”共赢“。 希望大家都能赢!
4575 0
|
数据安全/隐私保护
OAuth2.0实战案例
OAuth2.0实战案例
329 0
OAuth2.0实战案例
|
弹性计算
阿里云服务器公网IP和私网IP地址在哪查询?
阿里云服务器公网IP和私网IP地址在哪查询?阿里云服务器IP地址在哪查看?在云服务器ECS管理控制台即可查看,阿里云服务器IP地址包括公网IP和私有IP,阿里云百科分享阿里云服务器IP地址查询方法
633 0
|
监控 网络协议 网络安全
(14)Qt绘图(one)
本文介绍了在Qt中使用QPainter进行绘图的基础操作,包括如何指定绘图设备、使用QPen和QBrush设置线条和填充样式、绘制不同样式的线条和形状,以及如何实现纹理填充和渐变填充等效果。
219 6
(14)Qt绘图(one)
|
Linux
Linux——清除history的记录
Linux——清除history的记录
170 0
|
Linux Shell
Linux判断目录是否存在命令,Linux shell 中判断文件、目录是否存在的方法
本文主要介绍了Linux 中 使用 shell 判断文件、目录是否存在的方法,分享给大家
950 0
|
Web App开发 Java Apache
使用batik在kotlin中将TTF字体转换为SVG图像
将TTF字体自由的转换为SVG图像是一个有趣的媒体交换,如何实现这一冷门的需求呢?本文参考batik的源代码并利用其中一些功能实现这个有创造力的小功能。
801 0
使用batik在kotlin中将TTF字体转换为SVG图像