Adakah argv[0] Dijamin Menjadi Nama Boleh Laksana?
Apabila bekerja dengan aplikasi C atau C, selalunya diandaikan bahawa hujah pertama dihantar ke main() (argv[0]) mewakili nama boleh laku. Walau bagaimanapun, andaian ini mungkin tidak selalunya benar.
Definisi Standard
Mengikut piawaian ISO C11:
"Jika nilai argc lebih besar daripada sifar, rentetan yang ditunjuk oleh argv[0] mewakili nama program argv0 hendaklah menjadi aksara nol jika nama program tidak tersedia daripada persekitaran hos."
Pernyataan ini menjelaskan bahawa argv[0] hanya perlu mengandungi nama program jika nama itu tersedia daripada persekitaran hos. Selain itu, ia mungkin bukan padanan yang tepat, tetapi sebaliknya merupakan perwakilan.
Nilai Ditentukan Pelaksanaan
Standard selanjutnya menyatakan bahawa nilai dalam argv[0] ialah pelaksanaan-ditakrifkan. Ini bermakna sistem pengendalian atau persekitaran yang berbeza mungkin mengendalikan populasi argv[0] secara berbeza.
Sebagai contoh, pada sistem berasaskan UNIX, panggilan keluarga exec boleh menetapkan nilai arbitrari kepada argv[0]. Walau bagaimanapun, piawaian memerlukan pelaksanaan mendokumentasikan tingkah laku ini.
Kesimpulan
Oleh itu, walaupun ia merupakan konvensyen biasa bagi argv[0] untuk mengandungi nama boleh laku, ini tidak dijamin oleh piawaian C atau C. Pelaksanaan mungkin mengubah kandungan argv[0] selagi ia mendokumentasikan kelakuannya.
Atas ialah kandungan terperinci Adakah argv[0] Sentiasa Nama Boleh Laku dalam C/C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!