Bagaimanakah Saya Boleh Melaksanakan Program Luaran dengan Amanah dalam C?

DDD
Lepaskan: 2024-10-29 00:47:02
asal
121 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!