Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mendapatkan Laluan Penuh Boleh Laku Saya dalam C/C?

Bagaimanakah Saya Boleh Mendapatkan Laluan Penuh Boleh Laku Saya dalam C/C?

Susan Sarandon
Lepaskan: 2024-12-14 19:21:12
asal
397 orang telah melayarinya

How Can I Get the Full Path of My Executable in C/C  ?

Mencari Laluan Penuh Executable dalam C

Dalam C dan C , menentukan laluan penuh program yang sedang dilaksanakan boleh menjadi mencabar. Ini kerana argv[0], yang mengandungi nama program, selalunya tidak menyediakan laluan lengkap.

Sistem berasaskan Unix

Untuk mendapatkan semula lokasi boleh laku dengan pasti pada sistem Unix dengan "/proc":

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

Pada sistem Unix tanpa "/proc":

  • Jika argv[0] bermula dengan "/", ia adalah laluan mutlak.
  • Jika argv[0] mengandungi "/", tambahkannya pada direktori kerja semasa.
  • Cari argv[0] sebagai boleh laku dalam direktori yang dinyatakan dalam $PATH.

Windows

Pada sistem Windows, gunakan yang berikut kod:

GetModuleFileName(NULL, buf, bufsize);
Salin selepas log masuk

Pertimbangan Tambahan

  • Semak sama ada executable ialah symlink dan selesaikannya dengan sewajarnya (tidak perlu jika menggunakan kaedah "/proc" pada Linux).
  • Perhatikan bahawa adalah tanggungjawab proses panggilan untuk menetapkan argv[0] dengan betul, terutamanya dalam situasi yang tidak dipercayai (cth., boleh laku setuid).

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Laluan Penuh Boleh Laku Saya dalam C/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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan