Dalam C/C , mendapatkan laluan penuh ke direktori dari mana program dijalankan boleh menjadi cabaran untuk aplikasi merentas platform. Artikel ini menangani isu ini, menyediakan penyelesaian yang memenuhi platform dan sistem fail yang berbeza.
Malangnya, tiada fungsi perpustakaan C/C standard yang mengembalikan laluan direktori program dalam cara platform-agnostik. Walau bagaimanapun, menggunakan API khusus sistem pengendalian boleh mencapai hasil ini.
Pada Windows, fungsi GetModuleFileName boleh mendapatkan semula laluan penuh ke modul (fail boleh laku).
char pBuf[256]; size_t len = sizeof(pBuf); int bytes = GetModuleFileName(NULL, pBuf, len); if (bytes) { return bytes; } else { return -1; // Error }
Untuk sistem Linux, fungsi pautan baca boleh mengakses pautan simbolik dalam "/proc/self/exe" untuk menentukan laluan fail boleh laku program.
char pBuf[256]; size_t len = sizeof(pBuf); int bytes = MIN(readlink("/proc/self/exe", pBuf, len), len - 1); if (bytes >= 0) { pBuf[bytes] = ''; return bytes; } else { return -1; // Error }
Perhatikan bahawa pendekatan ini khusus untuk platform dan sistem fail tertentu. Jika anda memerlukan penyelesaian yang lebih komprehensif, pertimbangkan untuk menggunakan perpustakaan merentas platform seperti Boost.filesystem atau Qt.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Direktori Pelaksanaan Program C/C Saya Merentas Platform Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!