Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Program Luaran dengan Amanah dalam C?
Membuka Executable dari Dalam Program C
Anda mungkin mendapati diri anda kadang-kadang perlu melaksanakan program luaran dari dalam aplikasi C anda sendiri. Semasa menggunakan system() mungkin kelihatan seperti kaedah yang mudah, ia menimbulkan risiko dan batasan tertentu. Artikel ini meneroka pendekatan yang lebih dipercayai menggunakan fungsi CreateProcess().
Mencipta Proses Baharu
Fungsi CreateProcess() membolehkan anda melancarkan proses baharu dan mempunyai ia berjalan secara bebas daripada aplikasi panggilan anda. Berikut ialah contoh pelaksanaan:
<code class="cpp">#include <windows.h> VOID startup(LPCTSTR lpApplicationName) { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); CreateProcess( lpApplicationName, argv[1], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ); CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); }</code>
Fungsi ini membawa laluan ke boleh laku sebagai hujah dan mencipta proses baharu untuknya. Proses itu kemudiannya dijalankan secara bebas.
Menggunakan CreateProcess() Dengan Berkesan
Dalam kod contoh, argumen argv[1] harus mengandungi laluan penuh ke executable anda ingin melancarkan. Sebagai contoh, untuk melaksanakan "OpenFile.exe" yang terletak dalam direktori yang sama dengan aplikasi anda sendiri:
<code class="cpp">startup( "OpenFile.exe" );</code>
Mengelakkan Ralat
Ralat yang anda hadapi semasa menggunakan sistem () kemungkinan besar terhasil daripada tidak menyatakan laluan penuh kepada boleh laku. CreateProcess() memerlukan laluan mutlak ke program sasaran untuk berfungsi dengan betul.
Kesimpulan
Menggunakan CreateProcess() ialah kaedah yang lebih selamat dan boleh dipercayai untuk membuka boleh laku dari dalam aplikasi C. Ia membolehkan anda mengawal persekitaran pelaksanaan dan mengelakkan potensi isu keselamatan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Program Luaran dengan Amanah dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!