大佬教程收集整理的这篇文章主要介绍了如何重新初始化Perl的STDIN/STDOUT/STDERR?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
open STDIN,'/dev/null' or die "Can't read /dev/null: $!"; open STDOUT,'>>/dev/null' or die "Can't write to /dev/null: $!"; open STDERR,'>>/dev/null' or die "Can't write to /dev/null: $!"; if (!fork()) { do_some_fork_stuff(); }
我的问题是:我想在此之后恢复至少STDOUT(恢复其他2将是很好的)。但是我需要使用什么魔法符号来重新打开STDOUT,就像STDOUT过去那样呢?
我知道我可以使用“/ dev / tty”,如果我从一个tty运行(但是我从cron运行,并且依赖于别的stdout)。我也读了一些技巧,你可以把STDOUT放在一边打开SAVEOUT,“>& STDOUT”,但只是这个拷贝的行为并不能解决原本的僵尸离开的问题。
我想看看是否有一些像开放式STDOUT这样的魔法,“| – ”(我不知道这样)打开STDOUT应该被打开的方式。
>您可以在子进程中关闭STDOUT / STDERR / STDIN(即if(!fork()),这样允许父进程仍然使用它们,因为它们仍然在那里打开。
>我想你可以使用更简单的关闭(STDOUT)而不是打开它到/ dev / null。
例如:
if (!fork()) { close(STDIN) or die "Can't close STDIN: $!\n"; close(STDOUT) or die "Can't close STDOUT: $!\n"; close(STDERR) or die "Can't close STDERR: $!\n"; do_some_fork_stuff(); }
以上是大佬教程为你收集整理的如何重新初始化Perl的STDIN/STDOUT/STDERR?全部内容,希望文章能够帮你解决如何重新初始化Perl的STDIN/STDOUT/STDERR?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。