Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mendapatkan Direktori Program dalam C/C Merentasi Platform Berbeza?

Bagaimanakah Saya Boleh Mendapatkan Direktori Program dalam C/C Merentasi Platform Berbeza?

Patricia Arquette
Patricia Arquetteasal
2024-12-22 17:03:10824semak imbas

How Can I Get a Program's Directory in C/C   Across Different Platforms?

Mendapatkan Direktori Program dalam C/C Merentasi Platform dan Sistem Fail

Dalam banyak senario, adalah perlu untuk menentukan direktori dari mana sesuatu program sedang berjalan. Maklumat ini boleh menjadi berharga untuk pelbagai tujuan, seperti mengakses fail konfigurasi atau pengelogan. Walau bagaimanapun, mendapatkan direktori ini dalam cara platform-agnostik dan sistem fail-agnostik boleh menimbulkan cabaran.

Pendekatan Standard

Pustaka C/C standard, malangnya, tidak tidak menyediakan fungsi standard untuk tujuan ini. Untuk penyelesaian khusus platform, situasinya adalah seperti berikut:

Windows

Pada sistem Windows, fungsi GetModuleFileName boleh digunakan untuk mendapatkan semula laluan penuh ke pelaksana aplikasi.

char pBuf[256];
size_t len = sizeof(pBuf);
int bytes = GetModuleFileName(NULL, pBuf, len);
return bytes ? bytes : -1;

Linux

Untuk sistem Linux, fungsi pautan baca boleh digunakan untuk membaca pautan simbolik yang menghala ke program yang sedang dilaksanakan.

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;

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Direktori Program dalam C/C Merentasi Platform Berbeza?. 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