gpt4 book ai didi

perl - 如何在 Perl 中找到进程 STDOUT 的当前值?

转载 作者:行者123 更新时间:2023-12-04 07:02:05 26 4
gpt4 key购买 nike

我有一个 POE Perl 程序 fork child 。

它 fork 的 children 将日志记录和交互式 telnet 登录到远程设备。
POE 使用 STDOUT 将输出返回给父进程,但由于某种原因它丢失了(不去屏幕或任何文件)。

我推测这是因为 STDOUT 被重定向到某个地方 - 我需要确定在哪里。

我已经使用 (-t STDOUT) 来确定 child 的 STDOUT 不是 TTY。

我还在调用 child 之前将 child 的 STDOUT 重置为父级的 STDOUT - 但这种方法似乎避免了 POE 的事件处理程序,它只是将输出转储到父级 STDOUT。

问)如何确定当前 STDOUT 指向的内容,以便我可以找到数据的去向

谢谢

西蒙

最佳答案

fileno在这种情况下有帮助吗?如果 child 正在关闭和重新打开 STDOUT ,然后 fileno(STDOUT)在 child 和 parent 中会有不同的值(value)。

$ perldoc -f fileno
fileno FILEHANDLE
Returns the file descriptor for a filehandle, or undefined if
the filehandle is not open. This is mainly useful for
constructing bitmaps for "select" and low-level POSIX tty-
handling operations. If FILEHANDLE is an expression, the value
is taken as an indirect filehandle, generally its name.

You can use this to find out whether two handles refer to the
same underlying descriptor:

if (fileno(THIS) == fileno(THAT)) {
print "THIS and THAT are dups\n";
}

(Filehandles connected to memory objects via new features of
"open" may return undefined even though they are open.)

关于perl - 如何在 Perl 中找到进程 STDOUT 的当前值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1690270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com