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!