小编Gor*_*lio的帖子

perl进程之间的perl Win32信号处理

我正在使用Windows(草莓perl)中的一些长时间运行的perl脚本.

  1. 第一个过程是父监控过程.它每24小时重新启动子进程,并将始终运行.
  2. 第二个是子支付处理脚本.在关闭之前,此过程必须完成它正在执行的任何操作.

我的理解是,信号处理在win32上的perl中不起作用,并且不应该依赖它.还有其他方法可以处理信号吗?Win32::Process::Kill似乎在不让它安全关闭的情况下杀死了这个过程.

这是我试过的信号处理......

#Child
my $interrupted = 0;
$SIG{INT} = sub{$interrupted = 1;};
while(!$interrupted){
  #keep doing your thing, man
}

#Parent
my $pid = open2(\*CHLD_OUT,\*CHLD_IN,'C:\\strawberry\\perl\\bin\\perl.exe','process.pl');
kill INT=>$pid;
waitpid($pid,0);
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一另一件事是在两个进程之间打开一个套接字并在套接字上写消息.但必须有一些更容易的事情.有人知道任何可以做到这一点的模块吗?

更新

我已经开始创造一个"工作信号通过"机制IO::Socket::INET,并IO::Select通过打开一个插座.这似乎工作,我正在考虑编写一个与AnyEvent兼容的模块.但我仍然对不需要打开侦听端口且不需要服务器/客户端关系的实现感兴趣.是否可以通过在Windows中订阅和触发自定义事件来实现此目的?

perl winapi

5
推荐指数
1
解决办法
346
查看次数

优化进口的原因是什么?

是否有任何技术原因通过编辑器"优化导入"?Eclipse,Intellij IDEA和NetBeans都有优化导入的方法.我想知道是否有其他原因而不是一致性.还有,有更优化的导入方式吗?我已经看到了个人和组织用于优化进口的不同标准.例如...

import java.util.Map;
import java.util.List;

import com.company.MyClassThatUsesMap;
Run Code Online (Sandbox Code Playgroud)

如果我理解正确的,在上面的例子中的类加载器将加载MapList前类MyClassThatUsesMap.这会增加代码运行速度的任何好处,而不是下面的示例吗?

import com.company.MyClassThatUsesMap;

import java.util.List;
import java.util.Map;
Run Code Online (Sandbox Code Playgroud)

这甚至是重要的还是编译器完全修复了它?

java eclipse optimization netbeans intellij-idea

4
推荐指数
1
解决办法
1301
查看次数

标签 统计

eclipse ×1

intellij-idea ×1

java ×1

netbeans ×1

optimization ×1

perl ×1

winapi ×1