从主程序中分出很少的独立事件

时间:2014-01-16 17:17:02

标签: perl fork

我正在尝试为twitter开发桌面应用程序。出于授权目的,我使用模块Browser::Open打开默认浏览器系统,该系统提供最终用户需要输入到桌面应用程序的引脚。

我使用fork打开浏览器,脚本不是在授权后停止接受引脚的输入,而在其他情况下用户需要在输入引脚之前关闭浏览器。

这是代码。 (有和没有分叉)

    unless ( $nt->authorized ) {
        print "authorization of the url";
        my $url =  $nt->get_authorization_url;
        print "Authorize this app at ", $nt->get_authorization_url, " and enter the PIN#\n";
        if (1) {
            my $pid = fork();
            print "\$pid : $pid";
            if ($pid) {
                open_browser($url);
                push @childId,$pid;
            }
        } else {
            open_browser($url);
        }
        print "please enter the pin u got on screen\n";
        my $pin = <STDIN>; #wait for input
        chomp $pin;
        #`kill -9 $pid`;

    }

我可以通过任何方式管理这些活动

1 个答案:

答案 0 :(得分:1)

父进程中的{p> $pid和子进程中的0都是正确的,所以我认为你的逻辑应该是

if ($pid) {
    # parent
    push @childId,$pid;
} else {
    # child
    open_browser($url);
    exit;                # <------ DON'T FORGET TO EXIT THE CHILD
}