行程:修订间差异
删除的内容 添加的内容
Karakarasuuuu(留言 | 贡献) 小 →top |
小 去除重複的轉換規則: 去除與公共轉換組重複的轉換規則 (1): 存在於轉換組 IT: zh-cn:程序;zh-tw:程式 (本次機械人作業已完成609.4%) |
||
(未显示12个用户的16个中间版本) | |||
第1行:
{{Merge|进程树|time=2024-08-20T11:25:01+00:00}}
{{noteTA
|G1=IT
|
|
|
}}
{{各地中文名
|tw =
|cn = 进程
}}
{{
'''行程'''({{lang-en|process}}),是指電腦中已執行的[[程式]]
程式本身只是指令、数据及其组织形式的描述,相當於一個名詞,行程才是程式(那些指令和数据)的真正執行实例,可以想像說是現在進行式。若干行程有可能與同一個程式相關聯,且每個行程皆可以同步(循序)或异步([[平行計算|平行]])的方式獨立執行。現代[[電腦系統]]可在同一段時間內以进程的形式将多個程式載入到記憶體中,並藉由時間共享(或稱[[时分复用]]),以在一個[[处理器 (计算)|處理器]]上表現出同時([[平行性]])執行的感覺。同樣的,使用[[多執行緒]]技術 ==名稱==
*[[整批系統]]環境,行程稱為'''工作'''(''jobs'')。
*[[分時系統]]環境,行程稱為'''使用者程式'''(''user
*在多數情況,工作與行程是同義詞,但
==概念==
使用者下達執行-{}-程式的命令後,就會產生行程。同一程式可產生多個行程(一對多關係),以允許同時有多位使用者執行同一程式,卻不會相衝突。
行程需要一些資源才能完成工作,如[[CPU]]使用時間、[[記憶體]]、檔案以及[[I/O]]裝置,且為依序逐一進行,也就是每个CPU核心任何時間內僅能執行一項行程。
第59行 ⟶ 第60行:
==Windows进程==
操作系统使用[[进程ID#Microsoft_Windows|进程ID]]来唯一标识每个进程。在一个进程内部,使用进程[[句柄]]来标识关注的每个进程。使用Windows API从进程ID获取进程句柄:
<
OpenProcess(PROCESS_ALL_ACCESS, TRUE, procId); //或者PROCESS_QUERY_INFORMATION
</syntaxhighlight>
使用API函数:GetModuleFileNameEx或GetProcessImageFileName或QueryFullProcessImageName查询进程的exe文件名
第67行 ⟶ 第68行:
使用API函数CreateProcess创建进程,WaitForSingleObject可等待子进程的结束。例如:
<
#include <windows.h>
#include <stdio.h>
第99行 ⟶ 第100行:
CloseHandle(pi.hThread);
}
</syntaxhighlight>
创建的子进程可以继承父进程的:
*CreateFile返回的打开句柄,包括[[文件]]、控制台输入缓冲区、控制台屏幕缓冲区, [[命名管道]], 串口通信设备, [[邮槽]].
第131行 ⟶ 第132行:
进程终止时,所有打开的句柄被关闭,进程对象被触发(signaled)。进程的退出码(exit code)或者在ExitProcess、TerminateProcess函数中指出,或者是main、WinMain函数返回值。如果进程由于一个致命异常(fatal exception)而终止,退出码是这个异常值,同时进程的所有执行中的线程的退出码也是这个异常值。
优雅地关闭其他进程的方法是用RegisterWindowMessage登记私有消息,用BroadcastSystemMessage播放消息,收到消息的进程用ExitProcess关闭。<ref>
如果想要获取特定名字的进程的ID,需要枚举所有进程。传统办法是CreateToolhelp32Snapshot、Process32First、Process32Next函数;也可以使用EnumProcesses、EnumProcessModules函数来获取所有的进程ID,一个进程的所有模块的句柄。示例如下:
<
PROCESSENTRY32 pe32;
HANDLE hSnaphot;
第179行 ⟶ 第180行:
}
return 0;
</syntaxhighlight>
==相關==
第185行 ⟶ 第186行:
*[[进程树]]
== 参考文献 ==
{{
{{-}}
{{操作系统}}
{{Authority control}}
[[Category:操作系统技術]]
[[Category:进程| ]]
|