2010-08-03 5 views
0

J'écris un script Perl et j'ai besoin d'exécuter Unix Ctrl + Z sur le script. Comment puis-je le faire en Perl?Comment Ctrl-Z dans le script Perl

merci.

+0

Voulez-vous envoyer un processus déjà en cours en arrière-plan ou le démarrer en arrière-plan? – Ether

Répondre

5

De perl vous pouvez envoyer des signaux aux processus avec la fonction kill, qui a le même nom que la commande Unix outil de ligne qui fait la même chose. L'équivalent à Ctrl +Z est en cours d'exécution

kill -SIGTSTP pid

vous devez savoir quelle valeur numérique votre signal TSTP a sur votre système. Vous devez faire cela en exécutant

kill -l TSTP

sur la ligne de commande. Disons que cela renvoie 20

Ensuite, dans votre script Perl, vous devez ajouter

tuer 20 => $$;

qui enverra le signal TSTP à l'ID de processus en cours d'exécution ($$)

Mise à jour: comme décrit par daxim, vous pouvez sauter la partie 'kill -l' et indiquez le nom du signal directement:

kill 'TSTP' => $$; 
+2

Trop compliqué. Juste 'tuer 'TSTP' ...', 'tuer' HUP '... 'etc. Voir http://p3rl.org/ipc – daxim

+0

merci beaucoup :) –

+0

@daxim Merci, vous avez raison sur la syntaxe, bien que je vraiment pas perlipc point comme une aide précieuse pour les personnes qui ne connaissent pas les signaux – ivancho

-2

Dans bash ctrl +z arrête le travail en cours et met en arrière-plan avec% JobId vous pouvez revenir à ce travail. Je ne suis pas sûr de ce que vous voulez dire que je pensais que ctrl +z est pris par bash ..

+0

Je veux que le script envoie le bash pour mettre un travail spécifique en arrière-plan. –

Questions connexes