Hallo Hamann, Danke für den Tipp. system("nohup cp /tmp/bigfile.tar /tmp/bigfile2.tar"); hat nicht funktioniert, aber das hat mich auf die richtige Spur gebracht. Die Google Suche nach "disable signal on command line linux" brachte das richtige Ergebniss. http://www.cyberciti.biz/faq/unix-linux-shell-scripting-disable-controlc/ Mit system("trap '' 2; cp /tmp/bigfile.tar /tmp/bigfile2.tar"); funktioniert es. Den $SIG{'INT'} Code habe ich auch im Perl Script gelassen. Gruss Werner Am 29.04.2016 um 08:52 schrieb EXT hamann.w@t-online.de:
Hallo Werner,
ich würde einfach system "nohup cp /tmp/bigfile.tar /tmp/bigfile2.tar"; verwenden
Viele Grüsse Wolfgang Hamann
Hallo zuammen,
ich versuche ein CTRL-C in einem Perl Script so abzufangen, dass das bei einem system() keine Auswirkung hat, also ignoriert wird. Aber das funktioniert bei mir nicht.
Habe dazu bei "http://perldoc.perl.org/functions/system.html" gelesen:
Since SIGINT and SIGQUIT are ignored during the execution of system, if you expect your program to terminate on receipt of these signals you will need to arrange to do so yourself based on the return value.
und habe das erst so verstanden, dass ein CTRL-C während eines system() keine Auswirkung hat. Hat es aber doch.
Wie schaffe ich es dass CTRL-C auch während eines system() keine Auswirkung hat ? Bei Google habe ich nichts weiter dazu gefunden.
So habe ich es versucht:
-------------------------------------------- #!/usr/bin/perl sub handler_allow { print "\n Caught signal ",@_,"\n Exit 0\n"; exit(0); } sub handler_ignore { $SIG{'INT'} = \&handler_ignore; print "\n Caught signal ",@_," but ignore it!!\n"; } $SIG{'INT'} = \&handler_allow;
: : :
print " Ignore now CTRL-C ...\n"; $SIG{'INT'} = \&handler_ignore;
system("cp /tmp/bigfile.tar /tmp/bigfile2.tar"); -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org