int main();
นี่คือการประกาศอย่างง่าย ไม่สามารถรับอาร์กิวเมนต์บรรทัดคำสั่งใด ๆ
int main(int argc, char* argv[]);
การประกาศนี้ใช้เมื่อโปรแกรมของคุณต้องใช้อาร์กิวเมนต์บรรทัดคำสั่ง เมื่อทำงานเช่นนี้:
myprogram arg1 arg2 arg3
argc
หรือจำนวนอาร์กิวเมนต์จะถูกตั้งค่าเป็น 4 (สี่อาร์กิวเมนต์) และargv
หรืออาร์กิวเมนต์ของเวกเตอร์จะถูกเติมด้วยพอยน์เตอร์พอยน์เตอร์ให้เป็น "myprogram", "arg1", "arg2" และ "arg3" การเรียกใช้โปรแกรม ( myprogram
) รวมอยู่ในอาร์กิวเมนต์!
หรือคุณสามารถใช้:
int main(int argc, char** argv);
สิ่งนี้ก็ใช้ได้เช่นกัน
มีพารามิเตอร์อื่นที่คุณสามารถเพิ่มได้:
int main (int argc, char *argv[], char *envp[])
envp
พารามิเตอร์นอกจากนี้ยังมีตัวแปรสภาพแวดล้อม แต่ละรายการมีรูปแบบดังนี้:
VARIABLENAME=VariableValue
แบบนี้:
SHELL=/bin/bash
รายการตัวแปรสภาพแวดล้อมสิ้นสุดด้วยค่า null
สำคัญ:อย่าใช้สิ่งใด ๆargv
หรือenvp
ค่าโดยตรงในการโทรsystem()
! นี่เป็นช่องโหว่ความปลอดภัยขนาดใหญ่เนื่องจากผู้ใช้ที่ประสงค์ร้ายสามารถตั้งค่าตัวแปรสภาพแวดล้อมเป็นคำสั่งบรรทัดคำสั่งและ (อาจ) ทำให้เกิดความเสียหายอย่างมาก system()
โดยทั่วไปก็ไม่ได้ใช้ มีวิธีแก้ปัญหาที่ดีกว่าที่นำมาใช้ผ่านไลบรารี C เสมอ