0
我想从另一个perl脚本调用perl脚本,从串口读取并写入文件。我已经提取了我的代码来隔离问题,因此代码的重点可能没有意义。由perl调用的Windows进程没有正确写入文件
来电:
use Win32::Process;
my $perl_path = $^X;
my $SerialLogProcess;
my $SerialLogObj;
my $serial_log_script = "callee.pl";
Win32::Process::Create($SerialLogObj, "$perl_path", "perl $serial_log_script " ,0,NORMAL_PRIORITY_CLASS,".");
$SerialLogProcess = $SerialLogObj->GetProcessID();
print "waiting for 3 secs";
sleep(3);
print "done";
`taskkill /F /T /PID $SerialLogProcess`;
被叫:
use Win32::SerialPort;
my $portObj = new Win32::SerialPort("\\\\.\\COM70") || die;
my $serialReading;
$portObj->baudrate(115200);
$portObj->parity("none");
$portObj->databits(8);
$portObj->stopbits(1);
system("rm -r \"log.txt\"");
open (LOGFILE, ">>log.txt") or die;
while (1){
$serialReading = $portObj->read(10);
print LOGFILE $serialReading;
#print LOGFILE " ";
}
所以调用者创建被调用者脚本的过程,然后在3秒后杀死它。在这3秒钟内,我做了一些保证串口读取的消息。日志文件被创建,但没有写入它。
继承人有什么奇怪的:我可以使消息显示出两种方式。我直接从命令行运行被调用脚本,或者我可以取消最后一次打印的注释。不幸的是,这些对我来说不是解决方案。我非常难过,为什么我不能让我的代码正常工作,这让我觉得有一些未定义的行为。