2009-12-04 4 views

Répondre

6
+0

merci FTIK. J'ai trouvé la réponse de ma question au premier lien: D –

+0

bonne réponse - mais la question est encore fondamentalement fausse :) –

+2

Aucun de ces signaux ne déplacera un processus au premier plan. SIGCONT provoquera la reprise d'un processus après qu'il a été SIGSTOP. Les SIGTT sont simplement livrés au processus lorsqu'ils essaient de lire ou d'écrire en arrière-plan. Ils ne mettent pas en avant le processus, en fait, leur action par défaut consiste simplement à arrêter le processus comme si vous aviez envoyé un SIGSTOP. SIGCONT doit toujours les faire fonctionner en arrière-plan ou les charger depuis le shell pour les mettre au premier plan. – paxdiablo

2

Il n'y a aucun moyen (dans tout système d'exploitation que je connaisse) d'utiliser un signal pour mettre un processus au premier plan.

Je crois que vous ne pouvez apporter un processus au premier plan en utilisant fg

Premier plan est pertinent que dans le contexte d'une console, et un signal ne peut pas dire le processus qui console de premier plan pour ...

+0

je besoin d'un nom de signal :) –

+1

il n'y a pas de nom de signal :) –

+4

il n'y a pas de cuillère :-) – paxdiablo

16

Ce ne sont pas les signaux qui contrôlent directement si les travaux sont de premier plan ou d'arrière-plan. Les emplois sont sous le contrôle d'une coquille (généralement).

Par exemple, sous bash, si vous exécutez:

pax> sleep 3600 & 
pax> jobs 

vous verrez une sortie comme:

[1]+ Running     sleep 3600 & 

Ensuite, vous pouvez apporter ce travail de retour au premier plan en utilisant:

pax> fg %1 
sleep 3600 

(et les attentes du terminal).

En utilisant CTRLZne envoyer un signal au processus (SIGSTOP), ainsi que de le mettre dans l'arrière-plan, mais le seul signal qui peut changer qui est SIGCONT (pour continuer):

pax> fg %1 
sleep 3600 
^Z 
[1]+ Stopped     sleep 3600 
pax> jobs 
[1]+ Stopped     sleep 3600 
pax> kill -CONT %1 
pax> jobs 
[1]+ Running     sleep 3600 & 

cela demandera au processus de commencer à courir à nouveau, mais il n'a pas mettre au premier plan. Pour cela, vous avez besoin de la commande fg. Il est probablement préférable de penser aux signaux (qui affectent le processus) et au premier plan/arrière-plan (qui affectent le shell qui a démarré le processus en déterminant s'il l'attend, entre autres choses) séparément.

+0

vous pouvez continuer un processus suspendu envoyer un signal en C comme ceci: kill (1453, SIGCONT); J'ai besoin du nom du signal qui peut déplacer un processus d'arrière plan au premier plan comme SIGCONT. :) –

+3

Il n'y en a pas. Simple et simple. Premier plan/arrière-plan n'est pas un attribut du processus, c'est un attribut du * shell * qui a démarré le processus. Le shell contrôle cet aspect. Vous pouvez envoyer le SIGCONT pour démarrer un processus (s'il a été arrêté avec SIGSTOP) mais il n'y a pas de signal qui permette à un processus de se forcer au premier plan parce qu'il n'a tout simplement pas cette puissance. – paxdiablo

+2

@gurudoglu - C'est comme essayer de téléphoner à un diffuseur de télévision et lui demander d'allumer votre téléviseur. Il n'y a pas de numéro pour ça. Heureusement ... –

1

En supposant que vous êtes sur Unix et a commencé le processus à partir d'un shell que vous pouvez taper les éléments suivants

  • Arrêt Process ::^Z
  • processus Déplacer en arrière-plan :: bg
  • Reculer en avant-plan :: fg
Questions connexes