2017-09-06 27 views
1

HTTP服務器從終端上拆下,並使用notice: Process Backgrounded。如何讓它保持在前景?如何製作前臺NetServer

代碼:

#!/usr/bin/env perl 

use warnings; 
use strict; 

use XML::Compile::WSDL11; 
use XML::Compile::SOAP11; 
use XML::Compile::Transport::SOAPHTTP; 
use XML::Compile::SOAP::Daemon::NetServer; 

my $daemon = XML::Compile::SOAP::Daemon::NetServer->new; 

my $wsdl = XML::Compile::WSDL11->new("def.wsdl"); 

$daemon->printIndex(); 

$daemon->run(
    name => 'server', 
    host => 'localhost', 
    port => 7111, 
    min_servers => 1, 
    max_servers => 1, 
    min_spare_servers => 0, 
    max_spare_servers => 0); 

回答

4

XML ::編譯:: SOAP ::守護:: NetServer的使用Net::Server作爲服務器實現。有一個似乎相關的configuration option background in Net::Server。它默認爲undef,這意味着停留在前景

指定服務器是否應在綁定方法之後進行分叉以從命令行釋放自身。默認爲undef。如果設置了setsid,過程也將會背景。

當搜索在XML ::編譯:: SOAP ::守護:: NetServer的,你會發現Configuration section,它具有對background設定一個參考的文檔背景

Net :: Server的一些常規配置選項具有不同的默認值。另請參閱有關日誌記錄的下一節。

Key    Value    New default 
setsid   boolean   true 
background  boolean   true 

所以在默認情況下,它被設置爲true值,服務器將進入後臺。這應該很容易改變。

$daemon->run(
    name    => 'server', 
    host    => 'localhost', 
    port    => 7111, 
    min_servers  => 1, 
    max_servers  => 1, 
    min_spare_servers => 0, 
    max_spare_servers => 0, 
    background  => 0,    # <------ here 
    setsid   => 0,    # <------ and here ("Process will also background if setsid is set") 
); 

現在服務器將停留在前端,不會分叉,並且很可能一次只能處理一個請求。

+0

感謝編輯@Velkan。我沒有看到'setsid',儘管它在報價中。 ;) – simbabque