【问题标题】:Why does a service need a process affiliated with it?为什么一项服务需要一个与之相关的流程?
【发布时间】:2014-05-25 06:44:58
【问题描述】:

在我对“什么是进程”的研究中,每个页面都一直在说它就像一个进程,但没有 GUI。那么为什么它需要/有一个PID?最重要的是,我看到了 2 个具有相同 PID 的服务。

服务和流程之间真正的关系是什么?

【问题讨论】:

  • This topic 和它的孩子们解释得非常清楚。

标签: windows winapi service process


【解决方案1】:

没有两个进程可以有相同的 PID。服务和进程之间的区别在于服务没有与之关联的用户,因此它在任何用户登录系统之前启动,因为进程通常使用用户登录令牌运行。

【讨论】:

  • 对不起,我的意思是 2 个具有相同 PID 的服务。并感谢您的回答。我还没有找到说的。你碰巧有消息来源吗?
  • 服务也是在会话 0 中运行的进程,带有 GUI 并且没有与之关联的用户令牌。 windows中有一些服务被实现为dll,它们需要从服务进程中运行。单个服务进程可能会加载多个 dll 服务,在这种情况下,您将看到与 dll 服务关联的主进程 ID。
  • 如果在创建时启用了SERVICE_WIN32_SHARE_PROCESS 标志,多个服务可以在单个进程中运行。该标志不需要使用 DLL。所需要的只是 EXE 的ServiceMain() 识别同时运行的多个服务名称的请求。这允许相关服务彼此共享内存和代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多