假设我有一个perl脚本,它继续在后台运行,比如run.pl 如何通过自己调用此脚本进行交互? 例如:perl run.pl -reload,perl run.pl -reset
有可能吗? 如果是,我应该学习哪个模块?
非常感谢!
答案 0 :(得分:2)
IPC (perldoc perlipc
)可以通过各种方法完成:
我认为最简单的方法是在脚本中处理signal HUP,并在收到信号后,读取一些文件以获取更多信息。当然,您必须在发送信号之前写入此文件。
答案 1 :(得分:1)
操作系统中有多种进程间通信方法(在Linux / Unix的情况下,这是管道,FIFO,信号,共享内存和其他几种)。 Perl支持所有这些。
我认为,您的任务的最佳解决方案是使用信号。
所以你可以拦截Perl中的信号:
sub INT_handler {
print("Don't Interrupt!\n");
}
$SIG{'INT'} = 'INT_handler';
所以你可以发信号:
kill 9 => $pid; # send $pid a signal 9
kill -1 => $pgrp; # send whole job a signal 1
kill USR1 => $$; # send myself a SIGUSR1
kill HUP => @pids; # send a SIGHUP to processes in @pids
有关Learning Perl中信号的更多信息,第16.8章发送和接收信号。
操作系统中可用的信号不多(最多64个),并且您可以为自己的目的使用的信号更少。
如果您需要更强大的功能,请使用套接字或消息传递系统,如ZeroMQ。
答案 2 :(得分:0)
由于你的perl脚本在后台运行,你可以直接与它进行交互。但是,解决方法很少: