添加的内容 删除的内容
小 (机器人:清理不当的来源、移除无用的模板参数) |
小 (机器人:清理不当的来源、移除无用的模板参数;整理源码) |
||
第58行: | 第58行: | ||
== 行程間通訊({{lang|en|Inter-process communication}}) == |
== 行程間通訊({{lang|en|Inter-process communication}}) == |
||
{{main|行程間通訊}} |
{{main|行程間通訊}} |
||
== Unix进程 == |
|||
== Windows进程 == |
== Windows进程 == |
||
操作系统使用[[进程ID#Microsoft Windows|进程ID]]来唯一标识每个进程。在一个进程内部,使用进程[[句柄]]来标识关注的每个进程。使用Windows API从进程ID获取进程句柄: |
操作系统使用[[进程ID#Microsoft Windows|进程ID]]来唯一标识每个进程。在一个进程内部,使用进程[[句柄]]来标识关注的每个进程。使用Windows API从进程ID获取进程句柄: |
||
第133行: | 第132行: | ||
进程终止时,所有打开的句柄被关闭,进程对象被触发(signaled)。进程的退出码(exit code)或者在ExitProcess、TerminateProcess函数中指出,或者是main、WinMain函数返回值。如果进程由于一个致命异常(fatal exception)而终止,退出码是这个异常值,同时进程的所有执行中的线程的退出码也是这个异常值。 |
进程终止时,所有打开的句柄被关闭,进程对象被触发(signaled)。进程的退出码(exit code)或者在ExitProcess、TerminateProcess函数中指出,或者是main、WinMain函数返回值。如果进程由于一个致命异常(fatal exception)而终止,退出码是这个异常值,同时进程的所有执行中的线程的退出码也是这个异常值。 |
||
优雅地关闭其他进程的方法是用RegisterWindowMessage登记私有消息,用BroadcastSystemMessage播放消息,收到消息的进程用ExitProcess关闭。<ref>{{Cite web |url=https://msdn.microsoft.com/en-us/library/windows/desktop/ms686722(v=vs.85).aspx |title=MSDN:Terminating a Process |access-date=2017-09-20 |
优雅地关闭其他进程的方法是用RegisterWindowMessage登记私有消息,用BroadcastSystemMessage播放消息,收到消息的进程用ExitProcess关闭。<ref>{{Cite web |url=https://msdn.microsoft.com/en-us/library/windows/desktop/ms686722(v=vs.85).aspx |title=MSDN:Terminating a Process |access-date=2017-09-20 }}</ref> |
||
如果想要获取特定名字的进程的ID,需要枚举所有进程。传统办法是CreateToolhelp32Snapshot、Process32First、Process32Next函数;也可以使用EnumProcesses、EnumProcessModules函数来获取所有的进程ID,一个进程的所有模块的句柄。示例如下: |
如果想要获取特定名字的进程的ID,需要枚举所有进程。传统办法是CreateToolhelp32Snapshot、Process32First、Process32Next函数;也可以使用EnumProcesses、EnumProcessModules函数来获取所有的进程ID,一个进程的所有模块的句柄。示例如下: |