Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Net::SFTP::Foreign message on disconnect

by runrig (Abbot)
on Mar 06, 2013 at 17:08 UTC ( #1022042=perlquestion: print w/ replies, xml ) Need Help??
runrig has asked for the wisdom of the Perl Monks concerning the following question:

When calling disconnect() from Net::SFTP::Foreign, the annoying message "Killed by signal 15." prints to STDERR. In looking for a way to get rid of that message, I came across:
$SIG{TERM} = 'IGNORE';
..which works, but I wanted to set it in as small a scope as possible, but can anyone explain why this works:
my $sftp = do { local $SIG{TERM} = 'IGNORE'; Net::SFTP::Foreign->new( host => $host, user => $user, password => $pass, autodie => 1, ); }; $sftp->disconnect();
But this doesn't (actually I'm not clear on why even the first one works...I thought it would only affect signals that the perl process recieves...not the ssh process) :
my $sftp = do { #local $SIG{TERM} = 'IGNORE'; Net::SFTP::Foreign->new( host => $host, user => $user, password => $pass, autodie => 1, ); }; do { local $SIG{TERM} = 'IGNORE' $sftp->disconnect(); }
Update: It's pretty clear to me now...the new() forks/execs a new process with the signal mask set to ignore SIGTERM, so when you actually disconnect(), the completely separate process is still operating under the ignore SIGTERM signal mask, and has no knowledge of what perl's current signal mask is.

Comment on Net::SFTP::Foreign message on disconnect
Select or Download Code
Re: Net::SFTP::Foreign message on disconnect
by salva (Monsignor) on Mar 06, 2013 at 18:10 UTC
    the "Killed by signal 15" message is printed by the slave ssh. It seems that it doesn't reset the signal mask when it is started from the perl process.
Re: Net::SFTP::Foreign message on disconnect
by Anonymous Monk on Jun 05, 2013 at 09:55 UTC
    Thanks Runrig, that was exactly what I needed!
Re: Net::SFTP::Foreign message on disconnect
by Anonymous Monk on Sep 04, 2013 at 23:20 UTC
    Thank you. It also works for me but I was not using sftp->disconnect(), only the sftp->new. At the end of the script I used undef $sftp, it worked for linux OS but not for Soloris. It was annoying me a lot for long time.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1022042]
Approved by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (9)
As of 2014-10-02 07:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    What is your favourite meta-syntactic variable name?














    Results (49 votes), past polls