nohup exécute un processus en arrière-plan. Y a-t-il un équivalent pour Windows?
windows
background-process
nohup
Jader Dias
la source
la source
START
commande ne fait pas de détachement, c'est-à-dire qu'elle est toujours un enfant du processus qui l'a créée. Dans votre exemple, cela signifiera que «command3» mourra chaque fois que le processus mère se terminera. Unix contourne cela en le faisant était connu comme un 'fork-deux fois' mais je ne connais pas d'équivalent dans Windows.exec(<some windows executable>)
. Je peux voir clairement dans Process Explorer la relation parent-enfant et tout ce que je commence de l'intérieurexec()
ne survit pas. Corrigez qu'il semble fonctionner si je démarre uncmd.exe
menu Démarrer où le processus démarré semble être orphelin «correctement» à lacmd.exe
sortie. De toute évidence, je dois mieux comprendre cela. :-(Vous voudrez peut-être regarder les services Windows. Il existe des outils que vous pouvez télécharger pour héberger n'importe quel processus en tant que service Windows. Cela provoque le chargement du processus en arrière-plan au démarrage de Windows, donc à condition qu'il ne nécessite pas d'interaction avec l'utilisateur, vous devriez pouvoir l'héberger comme ceci.
Kit de ressources Windows Server 2003
L'outil que vous recherchez s'appelle srvany.exe.
la source
La seule façon, sous Windows, qu'un processus démarré par un utilisateur continue de s'exécuter après la fermeture de session (c'est-à-dire ce que fait "nohup") est de le démarrer soit via une "tâche planifiée" soit en tant que service Windows. Lorsque l'utilisateur se déconnecte, tous les processus de sa session de connexion sont supprimés.
Si vous êtes prêt à essayer la méthode "Tâches planifiées", vous voudrez savoir comment les créer par programme. La classe WMI Win32_ScheduledJob peut le faire. La documentation est fournie en détail ici: http://www.microsoft.com/technet/scriptcenter/guide/sas_man_rsxs.mspx?mfr=true Fondamentalement, vous cherchez à faire (sans vergogne volé à Microsoft):
Pour accorder à "l'utilisateur joe" la possibilité de créer des tâches planifiées, vous devrez modifier l'autorisation sur le dossier% SystemRoot% \ Tasks. Voir ici pour quelques informations à ce sujet: http://technet.microsoft.com/en-us/library/cc785125(WS.10).aspx
la source
Tout dépend de votre objectif ultime. Vous pouvez exécuter une tâche planifiée avec l'option de s'exécuter uniquement si l'utilisateur est connecté défini sur DÉSACTIVÉ. Vous pouvez éventuellement utiliser psexec à partir d'une machine distante. Mieux encore pourrait être d'exécuter le processus en tant que service. Consultez cette recherche Google , cette autre recherche Google , ce fil et cet autre fil pour trouver des pistes possibles dans votre recherche d'une solution. En fin de compte, il semble qu'il n'y ait pas d' équivalent exact à nohup sur une machine Windows.
la source