perl 进程和其他进程的交互问题

perl 进程和其他进程的交互问题

有下面一个问题,
perl进程p, 外部进程e,log进行 l
p一直运行,e 会不时给p发命令,如果发的命令是run, 则p启动进程l
如果e给p发的命令是kill, 则p 终止进程l.

这有点类似很多大型产品中的后台进程;但是我看了些书,似乎都是说用
perl之间的内部进程可以交互,和外部进程交互没有提及,或者我没看到?
大家有什么看法和做法可以讨论下?
最好有foo代码;
socket/named pipe/signal
dajun

------

thank you for your reply
but.
socket/ --这个肯定可以
named pipe/ --这个在内部程序之间可以
signal --这个信号包含的信息是不是太少;
          --比如能够给PERL传一个INT数值吗?
那个named pipe是文件型的,类似mknod(1), 我也记不太清楚了, 貌似unix域socket和这个东西本质上是一回事

singal也可以, 你设置一系列的信号处理函数, 比如收到SIGUSR1就启动某个程序, USR2作某些动作, 当然没办法穿参数

>比如收到SIGUSR1就启动某个程序, USR2作某些动作, 当然没办法穿参数
谢谢你dajun

关于上个,有点点不明白;
比如我定义了个:
sub start_task
{
  print "start_task\n";
}

while(1)
{
          print "Begin\n";
        sleep(5);
        next unless $SIG{INT}=\&start_task;  
}
这样,每次我按下ctrl+C,就会启动start_task;

现在问题是,你说的,SIGUSR1,我看到文档了,但是还是不明白如果我的e程序是个c++程序;
它应该怎么给这个perl进程发sigusr1呢?
如果不在c++里面发这个信号,在perl里面该用什么语句发这个信号呢?
再shell里面又用什么函数发这个信号呢?
全都是kill
个人认为用socket比较好,编程方便,可移植性也好
万一以后p和e要在不同机器上运行也能做得到
你好,socket的话;
我记忆中socket都需要port,ip
这样在本机上的话也许要port,ip吗?

没有写过,不知道如何,见笑了
是的,本机上也需要ip和port。
缺点就是性能比较差,如果需要大量的交互,还是用别的方法
但仅仅是发送信号,就完全没问题。

其他的信号啊共享内存什么的,似乎不同Unix的实现方法又不一样,
我又没学过unix编程,看着就头大ing……