Domanda

Ho due processi, A e B. A un certo punto A crea B. dopo che B è stato creato, se il processo di A albero viene ucciso, voglio che B sia ancora in giro.

Sto usando CreateProcess () per creare B e non riesco a trovare alcun modo per farlo creare il processo senza che sia un bambino. Stessa cosa con ShelexEcuteex (), ma probabilmente mi manca un po 'di bandiera.

Qualcuno sa cosa potrei usare per farlo?

EDIT: ho dimenticato di menzionare che entrambi i processi hanno bisogno di un ID manico o di processo all'altro

È stato utile?

Soluzione

È possibile provare quel processo A Crea processo C, che crea il processo B e quindi il processo C verrà immediatamente terminato (terminato). In un processo B esistono solo informazioni sul processo genitore diretto (ID processo di C che non è più in esecuzione) e non sul processo A. Quindi "se l'albero di processo di A viene ucciso" il processo B probabilmente rimarrà in esecuzione.

Ad esempio, inizi il processo Explorer (vedi http://technet.microsoft.com/en-us/sysinnals/bb896653.aspx) quindi inizia il comandante totale. Dal comandante totale si avvia cmd.exe. Da cmd.exe si avvia Notepad.exe. Quindi digitare "uscita" nel cmd.exe. Dopo aver chiuso di cmd.exe, è possibile vedere che Notepad.exe non verrà più visualizzato sotto Total Commander (Totalcmd.exe). Dopo aver scelto in Process Explorer "Kill Process Tree" per The Total Commander (Totalcmd.exe) puoi vedere che Notepad.exe rimane in esecuzione.

Altri suggerimenti

È possibile impostare il Paramater DwcreationFlags come detached_process nell'API Createprocess.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top