gpt4 book ai didi

perl - 如何调用已经从另一个脚本运行的 perl 进程?

转载 作者:行者123 更新时间:2023-12-01 09:10:04 25 4
gpt4 key购买 nike

问题:scriptA.cgi 处于无限循环中并处理一个打开的套接字到 Flash 客户端。scriptB.cgi 从 web 调用,做它需要做的,然后需要通知 scriptA 向客户端发送消息。

这可能吗?我被困在如何让 scriptB 识别与套接字连接坐在那里的 scriptA 的实例,而不是启动它自己的实例。

感谢所有想法。

最佳答案

如果通信需求很简单,这是一个很好的信号应用。

已编辑以存储来自 scriptA 的进程 ID 并在 scriptB 中读取它——脚本 A 和 B 必须就名称达成一致。

 # script B
do_scriptB_job();
if (open(my $PID_FILE, "<", "scriptA.pid.file")) {
$process_id_for_scriptA = <$PID_FILE>;
close $PID_FILE;
kill 'USR1', $process_id_for_scriptA; # makes scriptA run the SIGUSR1 handler
}


# script A
open(my $PID_FILE, ">", "scriptA.pid.file");
print $PID_FILE $$;
close $PID_FILE;
my $signaled = 0;
$SIG{"USR1"} = \sub { $signaled = 1 } # simple SIGUSR1 handler, set a variable
while ( in_infinite_loop ) {
if ($signaled) {
# this block runs only if SIGUSR1 was received
# since last time this block was run
send_a_message_to_the_client();
$signaled = 0;
} else {
do_something_else();
}
}
unlink "scriptA.pid.file"; # cleanup

当脚本 A 收到 SIGUSR1 信号时,脚本将被中断以运行 USR1 信号处理程序,设置 $signaled。然后执行线程将恢复,脚本可以使用这些信息。

关于perl - 如何调用已经从另一个脚本运行的 perl 进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1977462/

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