读书人

子进程超时又父进程强制结束但是子进

发布时间: 2012-07-30 16:19:05 作者: rapoo

子进程超时又父进程强制结束,但是子进程在规定的时间内完成了。父进程如何结束?
以下是我的代码:
isOvertime()是超时判断函数

Perl code
use warnings;use strict;my($pid);$| = 1;if($pid=fork()){    print("$pid \n");    sleep(1);        while(1)    {        if (isOvertime())        {            kill('STOP',$pid);            print("Sorry,you are overtime .\n");            exit();            }        else        {            if(wait())          {             print("OK , now i can go .\n");             exit();          }        }    }}elsif(defined($pid)){    sleep(30);    print("i am ok! \n");    exit();    }else{    print("error \n");    }



原来的程序设计是循环来控制时间。

但是程序执行到wait()的时候,就不循环了,一直在等待子进程的结束。。

如果我想让子进程在规定时间内完成的话,父进程就结束,应该如何来设计这个程序?

[解决办法]
不要用wait
用waitpid 指定为WNOHANG方式
这样就不会一直等待

读书人网 >perl python

热点推荐