Kontrol proses dan lingkungan
Gunakan rutinitas kontrol proses untuk memulai, menghentikan, dan mengelola proses dari dalam program. Gunakan rutinitas kontrol lingkungan untuk mendapatkan dan mengubah informasi tentang lingkungan sistem operasi.
Fungsi kontrol proses dan lingkungan
Rutin | Gunakan |
---|---|
abort |
Membatalkan proses tanpa menyiram buffer atau fungsi panggilan yang didaftarkan oleh atexit dan _onexit |
assert |
Uji kesalahan logika |
_ASSERT , _ASSERTE makro |
Mirip assert dengan , tetapi hanya tersedia di versi debug pustaka run-time |
atexit |
Menjadwalkan rutinitas untuk eksekusi pada penghentian program |
_beginthread , _beginthreadex |
Membuat utas baru pada proses sistem operasi Windows |
_cexit |
Lakukan exit prosedur penghentian (seperti buffer pembilasan), lalu kembalikan kontrol ke program panggilan tanpa menghentikan proses |
_c_exit |
Lakukan _exit prosedur penghentian, lalu kembalikan kontrol ke program panggilan tanpa menghentikan proses |
_cwait |
Tunggu hingga proses lain berakhir |
_endthread , _endthreadex |
Menghentikan utas sistem operasi Windows |
_execl , _wexecl |
Jalankan proses baru dengan daftar argumen |
_execle , _wexecle |
Jalankan proses baru dengan daftar argumen dan lingkungan yang diberikan |
_execlp , _wexeclp |
Jalankan proses baru menggunakan PATH variabel dan daftar argumen |
_execlpe , _wexeclpe |
Jalankan proses baru menggunakan PATH variabel, lingkungan tertentu, dan daftar argumen |
_execv , _wexecv |
Jalankan proses baru dengan array argumen |
_execve , _wexecve |
Jalankan proses baru dengan array argumen dan lingkungan tertentu |
_execvp , _wexecvp |
Jalankan proses baru menggunakan PATH array variabel dan argumen |
_execvpe , _wexecvpe |
Jalankan proses baru menggunakan PATH variabel, lingkungan tertentu, dan array argumen |
exit |
Fungsi panggilan yang didaftarkan oleh atexit dan _onexit , bersihkan semua buffer, tutup semua file yang terbuka, dan hentikan proses |
_exit |
Segera hentikan proses tanpa memanggil atexit atau _onexit atau menghapus buffer |
getenv , _wgetenv , getenv_s , _wgetenv_s |
Mendapatkan nilai variabel lingkungan |
_getpid |
Mendapatkan nomor ID proses |
longjmp |
Pulihkan lingkungan tumpukan yang disimpan; menggunakannya untuk menjalankan nonlokal goto |
_onexit |
Menjadwalkan rutinitas untuk eksekusi pada penghentian program; gunakan untuk kompatibilitas dengan Microsoft C/C++ versi 7.0 dan yang lebih lama |
_pclose |
Tunggu prosesor perintah baru dan tutup aliran pada pipa terkait |
perror , _wperror |
Mencetak pesan kesalahan |
_pipe |
Membuat pipa untuk membaca dan menulis |
_popen , _wpopen |
Membuat pipa dan menjalankan perintah |
_putenv , _wputenv , _putenv_s , _wputenv_s |
Menambahkan atau mengubah nilai variabel lingkungan |
raise |
Mengirim sinyal ke proses panggilan |
setjmp |
Simpan lingkungan tumpukan; gunakan untuk menjalankan non lokal goto |
signal |
Menangani sinyal interupsi |
_spawnl , _wspawnl |
Membuat dan menjalankan proses baru dengan daftar argumen yang ditentukan |
_spawnle , _wspawnle |
Membuat dan menjalankan proses baru dengan daftar argumen dan lingkungan yang ditentukan |
_spawnlp , _wspawnlp |
Membuat dan menjalankan proses baru menggunakan PATH variabel dan daftar argumen yang ditentukan |
_spawnlpe , _wspawnlpe |
Membuat dan menjalankan proses baru menggunakan PATH variabel, lingkungan yang ditentukan, dan daftar argumen |
_spawnv , _wspawnv |
Membuat dan menjalankan proses baru dengan array argumen yang ditentukan |
_spawnve , _wspawnve |
Membuat dan menjalankan proses baru dengan lingkungan dan array argumen yang ditentukan |
_spawnvp , _wspawnvp |
Membuat dan menjalankan proses baru menggunakan PATH variabel dan array argumen yang ditentukan |
_spawnvpe , _wspawnvpe |
Membuat dan menjalankan proses baru menggunakan PATH variabel, lingkungan yang ditentukan, dan array argumen |
system , _wsystem |
Menjalankan perintah sistem operasi |
Dalam sistem operasi Windows, proses yang ditelurkan setara dengan proses pemijahan. Proses apa pun dapat digunakan _cwait
untuk menunggu proses lain yang ID prosesnya diketahui.
Perbedaan antara _exec
keluarga dan _spawn
adalah bahwa _spawn
fungsi dapat mengembalikan kontrol dari proses baru ke proses panggilan. Dalam fungsi _spawn
, proses panggilan dan proses baru ada dalam memori kecuali _P_OVERLAY
ditentukan. Dalam fungsi _exec
, proses baru melapisi proses panggilan, sehingga kontrol tidak dapat kembali ke proses panggilan kecuali terjadi kesalahan dalam upaya untuk memulai eksekusi proses baru.
Perbedaan di antara fungsi dalam _exec
keluarga dan _spawn
melibatkan metode menemukan file yang akan dijalankan sebagai proses baru, formulir di mana argumen diteruskan ke proses baru, dan metode pengaturan lingkungan, seperti yang ditunjukkan dalam tabel berikut. Gunakan fungsi yang meneruskan daftar argumen saat jumlah argumen konstanta atau diketahui pada waktu kompilasi. Gunakan fungsi yang meneruskan penunjuk ke array yang berisi argumen saat jumlah argumen akan ditentukan pada waktu proses. Informasi dalam tabel berikut juga berlaku untuk rekan karakter luas dari _spawn
fungsi dan _exec
.
_spawn
dan _exec
Keluarga Fungsi
Fungsi | Gunakan PATH variabel untuk menemukan file |
Konvensi pengoperasian argumen | Pengaturan lingkungan |
---|---|---|---|
_execl , _spawnl |
Tidak | Daftar | Diwarisi dari proses panggilan |
_execle , _spawnle |
Tidak | Daftar | Penunjuk ke tabel lingkungan untuk proses baru yang diteruskan sebagai argumen terakhir |
_execlp , _spawnlp |
Ya | Daftar | Diwarisi dari proses panggilan |
_execvpe , _spawnvpe |
Ya | Array | Penunjuk ke tabel lingkungan untuk proses baru yang diteruskan sebagai argumen terakhir |
_execlpe , _spawnlpe |
Ya | Daftar | Penunjuk ke tabel lingkungan untuk proses baru yang diteruskan sebagai argumen terakhir |
_execv , _spawnv |
Tidak | Array | Diwarisi dari proses panggilan |
_execve , _spawnve |
Tidak | Array | Penunjuk ke tabel lingkungan untuk proses baru yang diteruskan sebagai argumen terakhir |
_execvp , _spawnvp |
Ya | Array | Diwarisi dari proses panggilan |
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk