流程控制和環境控制
使用程式控制的常式,開始和停止處理序從程式內。 使用環境控制常式衍生和變更有關作業系統環境的相關資訊。
流程和環境控制函式
常式 |
用法 |
.NET Framework 對等用法 |
---|---|---|
中止處理序,而不需清除緩衝區或呼叫函式是由 atexit 和 _onexit |
不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
要測試其邏輯錯誤。 |
||
與 assert類似,不過,只有執行階段程式庫的偵錯版本 |
||
排程執行常式在程式結束。 |
||
若要在 Windows 作業系統處理序建立新的執行緒 |
||
執行 exit 結束程序 (例如清除緩衝區),然後傳回控制權傳回給呼叫端,而不需要終止處理序。 |
||
執行 _exit 結束程序,然後傳回控制權傳回給呼叫端,而不需要終止處理序。 |
||
等待直到另一個處理序終止 |
||
結束 Windows 作業系統執行緒 |
不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
執行與引數清單的新處理序 |
System::Diagnostics::Process 類別, System::Diagnostics::ProcessStartInfo 類別 |
|
執行與引數清單和特定環境的新處理序 |
System::Diagnostics::Process 類別, System::Diagnostics::ProcessStartInfo 類別 |
|
使用 PATH 變數和引數清單,執行處理序 |
System::Diagnostics::Process 類別, System::Diagnostics::ProcessStartInfo 類別 |
|
使用 PATH 變數,執行處理序將環境和引數清單 |
System::Diagnostics::Process 類別, System::Diagnostics::ProcessStartInfo 類別 |
|
執行與引數陣列的新處理序 |
System::Diagnostics::Process 類別, System::Diagnostics::ProcessStartInfo 類別 |
|
執行與引數陣列和特定環境的新處理序 |
System::Diagnostics::Process 類別, System::Diagnostics::ProcessStartInfo 類別 |
|
使用 PATH 變數和引數陣列,執行處理序 |
System::Diagnostics::Process 類別, System::Diagnostics::ProcessStartInfo 類別 |
|
使用 PATH 變數,執行處理序將環境和引數陣列 |
System::Diagnostics::Process 類別, System::Diagnostics::ProcessStartInfo 類別 |
|
呼叫函式是由 atexit 和 _onexit,清除所有緩衝區,關閉所有開啟的檔案,並結束處理序 |
||
結束的處理序,而不呼叫 atexit 或 _onexit 或清除緩衝區 |
||
取得環境變數的值 |
||
取得處理序 ID 編號 |
||
還原已儲存的堆疊環境;使用它執行非區域的 goto。 |
不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
排程執行常式在程式結束;相容性的用途與 Microsoft C/C++ 7.0 (含) 以前版本 |
||
等待新命令處理器並關閉在關聯的管道資料流 |
不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
印出錯誤訊息 |
不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
建立用於讀取和寫入的管道 |
不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
建立管道並執行命令 |
不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
加入或環境變數的變更值。 |
不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
傳送訊號至呼叫程序 |
不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
保存堆疊環境;使用執行非本機 goto |
不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
控制代碼中斷信號 |
不適用。 若要呼叫標準 C 函式,請使用 PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
建立和執行與指定引數清單中的處理序 |
System::Diagnostics::Process 類別, System::Diagnostics::ProcessStartInfo 類別 |
|
建立並執行指定的引數清單和環境的新處理序 |
System::Diagnostics::Process 類別, System::Diagnostics::ProcessStartInfo 類別 |
|
使用 PATH 變數和指定的引數清單,建立和執行處理序 |
System::Diagnostics::Process 類別, System::Diagnostics::ProcessStartInfo 類別 |
|
使用 PATH 指定的變數和引數清單,建立和執行處理序 |
System::Diagnostics::Process 類別, System::Diagnostics::ProcessStartInfo 類別 |
|
建立和執行與指定引數陣列中的處理序 |
System::Diagnostics::Process 類別, System::Diagnostics::ProcessStartInfo 類別 |
|
建立並執行指定的引數陣列和環境的新處理序 |
System::Diagnostics::Process 類別, System::Diagnostics::ProcessStartInfo 類別 |
|
使用 PATH 變數和指定的引數陣列,建立和執行處理序 |
System::Diagnostics::Process 類別, System::Diagnostics::ProcessStartInfo 類別 |
|
使用 PATH 指定的變數和引數陣列,建立和執行處理序 |
System::Diagnostics::Process 類別, System::Diagnostics::ProcessStartInfo 類別 |
|
執行作業系統的命令 |
System::Diagnostics::ProcessStartInfo 類別, System::Diagnostics::Process 類別 |
在 Windows 作業系統中,產生的流程與產生的處理序相同。 任何處理序都可以使用 _cwait 等候處理序 ID 知道的其他處理序。
在 _exec 和 _spawn 家族之間的差異在於 _spawn 函式可傳回從處理序的控制項加入至呼叫程序。 在 _spawn 函式中,除非已指定 _P_OVERLAY ,呼叫處理和處理序是存在於記憶體中。 在 _exec 函式,更新過程覆疊呼叫程序,因此,控制項無法回到呼叫程序,除非錯誤在嘗試產生啟動新的處理序的執行。
區別在 _exec 系列的函式中,以及在那些中 _spawn 家族,涉及尋找當做引數傳遞給處理序的處理序、表單和設定環境方法所執行的檔案方法,如下表所示。 使用引數清單的函式,當引數數目是常數或在編譯時間。 使用將指標傳遞給包含引數的陣列的函式,當引數數目要判斷在執行階段時。 資訊下表中也適用於 _spawn 和 _exec 函式的寬字元對應。
_spawn 函式家族和 _exec
函式 |
使用路徑變數尋找檔案。 |
引數傳遞慣例 |
環境設定 |
---|---|---|---|
_execl, _spawnl |
沒有 |
List |
繼承自呼叫處理序 |
_execle, _spawnle |
沒有 |
List |
對環境資料表的指標做為引數傳遞的最後一個處理序的 |
_execlp, _spawnlp |
有 |
List |
繼承自呼叫處理序 |
_execlpe, _spawnlpe |
有 |
List |
對環境資料表的指標做為引數傳遞的最後一個處理序的 |
_execv, _spawnv |
沒有 |
陣列 |
繼承自呼叫處理序 |
_execve, _spawnve |
沒有 |
陣列 |
對環境資料表的指標做為引數傳遞的最後一個處理序的 |
_execvp, _spawnvp |
有 |
陣列 |
繼承自呼叫處理序 |
_execvpe, _spawnvpe |
有 |
陣列 |
對環境資料表的指標做為引數傳遞的最後一個處理序的 |