Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menentukan Laluan Boleh Laksana C/C Saya?

Bagaimanakah Saya Boleh Menentukan Laluan Boleh Laksana C/C Saya?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-20 13:08:10626semak imbas

How Can I Reliably Determine the Path of My C/C   Executable?

Menentukan Lokasi Boleh Laksana dalam C

Dalam C/C , mendapatkan semula laluan penuh program yang sedang dilaksanakan boleh dicapai menggunakan pelbagai pendekatan . Satu kebimbangan umum ialah argumen argv[0] yang disediakan dalam fungsi utama tidak selalu memberikan laluan lengkap. Untuk menangani isu ini, kami meneroka beberapa penyelesaian:

Sistem Berasaskan Unix dengan /proc

Dalam sistem Unix dengan sokongan /proc, kaedah yang paling mudah dan boleh dipercayai ialah kepada:

  • Linux: readlink("/proc/self/exe", buf, bufsize)
  • FreeBSD: readlink("/proc/curproc/file", buf, bufsize)
  • Solaris: pautan baca("/proc/self/path/a.out", buf, bufsize)

Sistem Berasaskan Unix Tanpa /proc

Untuk sistem tanpa /proc, beberapa sandaran boleh digunakan:

  • Jika argv[0] bermula dengan "/", ia mewakili laluan mutlak.
  • Jika argv[0] mengandungi "/", tambahkannya pada direktori kerja semasa (dengan andaian ia belum diubah suai).
  • Cari direktori dalam $PATH untuk argv[0] boleh laku.

Selain itu, adalah disyorkan untuk mengesahkan sama ada boleh laku ialah pautan sym dan menyelesaikannya berbanding dengan direktorinya (kecuali untuk /proc kaedah pada Linux).

Sistem Windows

Pada Windows, kaedah pilihan ialah:

  • GetModuleFileName(NULL, buf, bufsize)

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Laluan Boleh Laksana C/C Saya?. 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