gpt4 book ai didi

c# - Process.Start() 和进程树

转载 作者:太空狗 更新时间:2023-10-29 17:35:34 26 4
gpt4 key购买 nike

如何使用 Process.Start(),但启动进程与启动进程不在同一进程树中?

考虑这个示例控制台应用程序:

using System;
using System.Diagnostics;
using System.Threading;

internal class Program
{
private static void Main(string[] args)
{
Console.WriteLine("Starting ie...");
Process.Start("c:\\Program Files\\Internet Explorer\\iexplore.exe", "http://www.google.com");
Console.WriteLine("Waiting for 15 seconds");
Thread.Sleep(15000);
Console.WriteLine("Exiting...");
}
}

当此程序正常退出时,Internet Explorer 将继续运行。但是,如果在 15 秒 sleep 期间您转到任务管理器并选择此程序并选择“结束进程树”,Internet Explorer 也将关闭。

(这与my question from earlier today直接相关,目前还没有回复。在Windows XP中,当屏幕保护进程结束时,它似乎结束了进程树,而在Vista中,只有屏幕保护进程是结束。)

最佳答案

Eric 是正确的:Windows 没有公开任何更改进程父进程的方法。但是,如果父进程结束,则没有返回到祖 parent 的链接,因此您可以通过启动 child 然后死亡的中间过程来实现您的目标。

因此:Proc A 启动 proc B,然后 proc B 启动 proc C 并立即死亡。当 proc B 死亡时,proc C 将成为进程树上的根节点 - 在 proc B 死亡后,proc C 将不在 proc A 的树中。

关于c# - Process.Start() 和进程树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1035213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com