perl – 关于IO :: Select的澄清

perl – 关于IO :: Select的澄清,第1张

概述我正在使用 IO::Select. 我没想到只有当我手动终止分叉进程时才会终止此代码.这是正确的行为吗? use strict;use warnings;STDOUT->autoflush();use IO::Select;open(my $ph, "-|", "perl -e 'sleep 1 while 1'");my $sel = IO::Select->new();$ 我正在使用 IO::Select.

我没想到只有当我手动终止分叉进程时才会终止此代码.这是正确的行为吗?

use strict;use warnings;STDOUT->autoflush();use IO::Select;open(my $ph,"-|","perl -e 'sleep 1 while 1'");my $sel = IO::Select->new();$sel->add($ph);$sel->can_read(2) or warn "timeout\n";print "woohoo?\n";
解决方法 从 open,

Closing any piped filehandle causes the parent process to wait for the child to finish,then returns the status value in $? and ${^CHILD_ERROR_NATIVE}.

因此关闭$ph中的文件句柄(当$ph超出范围时完成)等待孩子完成.

(这与IO ::选择或选择无关.)

总结

以上是内存溢出为你收集整理的perl – 关于IO :: Select的澄清全部内容,希望文章能够帮你解决perl – 关于IO :: Select的澄清所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1245118.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存