2017-08-21 9 views
-1

私は次のコードでデーモンモードで実行しているperlスクリプトを持っています。PerlのProc :: Daemon :: Init'dスクリプトでファイルハンドルを開くことができません

Proc::Daemon::Init() 

# Anonymous subroutine. 
my $sub = sub { 

    # Call to the function which opens the filehandle 
    my $content = RandomPackage::GetContent({ $args}); 
} 

# Forking 
Proc::ForkAndForget->({JOB => $sub }); 

RandomPackage :: GetContentには次の定義があります。

use File::Temp; 
sub GetContent { 
    my ($args) = @_; 
    my ($filehandle, $filename) = File::Temp::tempfile(); 

    open $filehandle, ">", $filename or "cant open the filehandle"; 
    <Some operations> 
    return ; 
} 

デーモンモードでスクリプトを実行しているときに、エラーが発生してファイルハンドルを開くことができません。 何か助けていただければ幸いです。

+0

'open'が返すエラーは何ですか?ファイルハンドルを '' 'または' 'で置き換えてください(" $ filename \ "を開くことはできません:$!\ n"); ' – ikegami

+0

これはFile :: Tempの使用方法ではありません。 '$ filehandle'は既に' $ filename'へのオープンハンドルを含んでいます。 – ikegami

+0

Proc :: Daemon :: Initは、プロセスが所有しているすべてのファイルハンドルをクローズしようとします。 – ikegami

答えて

0

おそらく許可エラーです。

$!の内容を表示します。エラーの種類を通知します。

関連する問題