Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Program Luaran dengan Amanah dalam C?

Bagaimanakah Saya Boleh Melaksanakan Program Luaran dengan Amanah dalam C?

DDD
DDDasal
2024-10-29 00:47:02180semak imbas

How Can I Reliably Execute External Programs in 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn