Apabila menggunakan aplikasi luaran melalui sistem() dalam C , adalah penting untuk memastikan pengendalian hujah yang betul mengandungi ruang. Jika kedua-dua laluan boleh laku dan argumen mengandungi ruang, ralat mungkin timbul.
system() pada asasnya melaksanakan arahan yang ditentukan menggunakan cmd /C. Semasa memproses baris arahan, cmd mengikut peraturan tertentu mengenai aksara petikan. Secara lalai, ia mengalih keluar petikan di hadapan dan di belakang, menganggap rentetan yang tinggal sebagai nama boleh laku.
Untuk menyelesaikan isu ini, arahan mesti disertakan dalam set tambahan petikan berganda:
<code class="cpp">system("\"\""CMD\"" \""ARG1\"" \""ARG2\"\"");</code>
Tahap petikan tambahan ini memastikan bahawa cmd mentafsir setiap hujah dengan betul, tanpa mengira kehadiran ruang.
Pendekatan alternatif melibatkan menggunakan fail kelompok untuk melaksanakan arahan dengan hujah yang dikehendaki. Fail kelompok boleh dibuat dengan kandungan berikut:
cd PATH_TO_DIR EXECUTABLE_NAME ARG1 ARG2
Dengan memanggil system() dengan nama fail kelompok ini sebagai argumen, arahan akan dilaksanakan seperti yang dimaksudkan, walaupun dengan argumen yang mengandungi ruang.
Untuk memastikan keserasian dengan persekitaran dan pelaksanaan shell yang berbeza, adalah disyorkan untuk memasukkan suis /S apabila menggunakan sistem(). Suis ini memaksa cmd untuk menghuraikan baris arahan dengan ketat berdasarkan kes 2 seperti yang diterangkan dalam dokumentasi cmd.
Contoh:
<code class="cpp">system("cmd /S /C \"\""CMD\"" \""ARG1\"" \""ARG2\"\"");</code>
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Aplikasi Luaran dengan Argumen yang Mengandungi Ruang Menggunakan C system()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!