大佬教程收集整理的这篇文章主要介绍了linux – Perl:在信号处理程序中关闭子进程管道挂起?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#!/usr/bin/perl (-f "foo") || die "file foo doesn't exist"; open(IN,"tail -f foo |"); $SIG{ALRM} = sub { print "trying to exit...\n"; exit 0; # Hangs with above open() call }; alarm 1; while (1) { sleep 5; # Do stuff ... }
没有打开调用它可行,不幸的是删除它不是一个选项,在这种情况下脚本需要它.
$SIG{ALRM} = sub { print "trying to close...\n"; close(IN); # Hangs ... print "ok\n"; exit 0; };
我想从信号处理程序中收获孩子并不太高兴…
有没有人知道这方面的好方法?
open my $foo,"tail -f foo |" or die "Can't open process: $!"; close $foo; # <--- will block
解决此问题的一种方法是通过open捕获子进程ID,然后通过kill捕获该子进程:
@H_825_17@my $subprocess = open my $foo,"tail -f foo |" or die "Can't open process: $!"; say "subprocess=$subprocess"; kill 'KILL',$subprocess; close $foo; # <--- happy Now以上是大佬教程为你收集整理的linux – Perl:在信号处理程序中关闭子进程管道挂起?全部内容,希望文章能够帮你解决linux – Perl:在信号处理程序中关闭子进程管道挂起?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。