2009-05-19 7 views
0

J'ai essayé d'exécuter un programme en arrière-plan et le mode de premier plan,quelle est la différence entre le premier plan et le programme de fond?

alors en arrière-plan, il n'a pas réussi à courir,

mais en mode de premier plan, il a réussi,

Quelle est donc la différence entre mode d'arrière-plan et de premier plan qui pourrait causer ce problème?

+0

Vous devriez être plus précis que "failed" ce qui est très vague. Normalement, un processus qui a besoin de STDIN sera juste "arrêté" (envoyé un SIGSTOP) et restera là à attendre que vous le 'fg' pour qu'il puisse continuer. Je n'appellerais pas cela «l'échec», mais si votre processus fait quelque chose d'autre, vous devriez le spécifier afin que nous puissions être plus utile. – lhunath

Répondre

1

Les processus d'arrière-plan s'exécutent généralement avec peu ou pas d'interaction avec l'utilisateur, ils interagissent avec le système à la place. Les processus forground sont ce que l'utilisateur interagit avec. Les processus d'arrière-plan, sauf s'ils sont explicitement exécutés, s'exécutent avec des autorisations non-administrateur. Si vous l'avez exécuté sous votre contexte d'utilisateur, il aura probablement les permissions de faire ce que l'application fait.

+0

peut-être un peu plus d'informations est nécessaire. ici sont ceux en cours d'exécution en arrière-plan: racine 30495 1 0 06:58 pts/0 00:00:02 php bots start.php/admin41.bot.php racine 5025 29551 0 08:48 pts/0 00 : 00: 00 php start.php bots/admin4.bot.php – omg

2

Un processus de premier plan a accès au terminal (entrée et sortie standard).

Vous pouvez essayer de résoudre le problème en ajoutant <> /dev/null à la ligne de commande. Cela indiquera au programme de ne pas utiliser stdin. Certains programmes prennent cela en compte et "se comportent" dès que vous ne leur donnez plus de terminal.

Une autre solution est le programme nohup qui fait essentiellement la même chose plus quelques autres choses.

Questions connexes