linux

รายการอาร์กิวเมนต์

เมื่อเราใช้เรียกใช้งานโปรแกรมบน shell prompt เราสามารถเพิ่มข้อมูลบางอย่างให้กับโปรแกรมเพื่อใช้ในการทำงานได้โดยการพิมพ์ข้อมูลเพิ่มเติมต่อท้ายชื่อโปรแกรม อาจเป็นข้อมูลที่เป็นคำๆ เดียวหรือหลายๆ คำก็ได้ โดยใช้ช่องว่างเป็นตัวแบ่งคำนั้นๆ (หากเป็นกลุ่มคำที่มีช่องว่าปรากฏอยู่สามารถใช้เครื่องหมายอัญประกาศ ("...") ครอบข้อมูลชุดนั้นได้เช่น "debian club" เป็นต้น) เราจะเรียกข้อมูลเหล่านี้ว่า "command-line arguments" ตัวอย่างการใช้งานคำสั่ง ls

$ ls -al /

2: การพัฒนาซอฟต์แวร์บนระบบปฏิบัติการลินุกซ์เบื้องต้น

ในส่วนนี้จะแนะนำเทคนิคการเขียนโปรแกรมบนระบบปฏิบัติการลินุกซ์ขั้นพื้นฐานและสถาพแวดล้อมต่างๆ ที่จำเป็นต่อการพัฒนาซอฟต์แวร์บนระบบปฏิบัติการลินุกซ์

Build openvz kernel บน 2.6.32

มีความจำเป็นต้อง build debian kernel ไว้ใช้เอง เพราะใช้ OpenVZ โชคดีที่ sid ใช้ 2.6.32 ที่ OpenVZ ออกมาด้วยพอดี เนื่องจาก openvz ยังไม่ได้เป็น feature มาตรฐาน เลยต้องมี patch ออกมาเป็นระยะ

ความจริงใน 2.6.32-11 (package linux-image-2.6.32-4) มี openvz แล้วแต่ว่ามีบั๊กติดมาด้วย กรณีที่ใช้ linux-image-2.6.32-4-openvz-amd64 (Bug #574598) ทาง debian ไม่แก้ เพราะเป็นบั๊กของ openvz พอ openvz แก้บั๊กนี้แล้ว ก็ใจร้อนไม่อยากรอ debian เลยต้อง build เอง ดังนี้

$ apt-get source  linux-image-2.6.32-4-openvz-amd64

สร้าง source

$ make -f debian/rules source-all

หลังจากนั้นจะแพตช์อะไรก็ไปทำที่ debian/build/source_amd64_openvz แล้วก็:

$ DEBIAN_KERNEL_JOBS=8 CONCURRENCY_LEVEL=9 \
  fakeroot make -f debian/rules.gen binary-arch_amd64_openvz

เพื่อ build amd64_openvz

1: เตรียมความพร้อมก่อนเขียนโปรแกรม

การเขียนโปรแกรมที่ดีต้องรู้จักเครื่องมือสำหรับการใช้งานโปรแกรมเสียก่อน ซึ่งเครื่องมือสำหรับเขียนโปรแกรมที่จำเป็นก็ไม่พ้น Text Editor เลือกโปรแกรม Text editor ตัวโปรดสักตัวที่คุณชื่นชอบ ไม่ว่าจะเป็น Vi nano Emacs ก็ได้ฝึกหัดใช้งานให้คล่องเพื่อจะไม่ไม่ติดขัดขณะใช้งาน หากมีการจัดรูปแบบอัตโนมัติ หรือ Syntax highlight ก็จะช่วยสำหรับการเขียนโปรแกรมของเราได้ไม่น้อยทีเดียว อาจจะเลือกใช้โปรแกรมที่มีความสามารถมากกว่า Text editor ทั่วไปที่เรามักเรียกว่า IDE หรือ Integrated Development Environment

C/C++ Linux Programming

เห็นสมาชิกเว็บหลายท่านเขียนเกี่ยวกับ Python หรือ Shell script ก็เลยลองเขียนเกี่ยวกับ C/C++ ดูครับ เนื่องจากภาษา C/C++ นิยมใช้มากในลินุกซ์ และมี Library มาตรฐานสำหรับการใช้งานบน Linux หรือ Unix เพื่อใช้จัดการ i/o ต่างๆ ของตัวระบบปฏิบัติการเอง หรือทรัพยากรต่างๆ โดยที่บทความนี้ผมจะใช้ C++ เป็นหลัก แต่ Library เกี่ยวกับ Linux จะเป็นภาษา C ท่านที่เขียนภาษา C ก็สามารถใช้ได้นะครับ ถ้าไม่เข้าใจสามารถถามได้ผมจะได้เขียนโค๊ดเทียบเคียงให้ ในบทความชุดนี้ผมอ้างอิงการใช้งานบน Linux เป็นหลักถึงแม้ว่าบางอย่างจะสามารถนำไปเขียนบนระบบปฏิบัติการ Unix อื่นได้ก็ตาม และไม่เน้นการเขียนโปรแกรม ขั้นพื้นฐานนะครับ หากไม่เข้าใจสามารถถามได้ หากมีผู้ต้องการเรียนรู้เกี่ยวกับ C/C++ อาจจะเขียนเป็นอีกหนึ่งชุดก็ได้ครับ สำหรับผู้มีประสบการณ์เขียนโปรแกรมหากมีอะไรผิดพลาดช่วยแก้ไขด้วยนะครับ เพราะผมพึ่งศึกษาได้ไม่นานและยังไม่มีประสบการณ์สำหรับการพัฒนาโปรแกรมบน Linux ขนาดใหญ่ครับ
ผมเขียนบนความนี้โดยอ้างอิง Advanced Linux Programming บางส่วมผมอาจจะแปลมาเลยนะครับ สำหรับหนังสือภาษาไทยที่เคยอ่านก็มี เจาะประเด็นงานเขียนโปรแกรมบนลินุกซ์ โดย คุณ สันติ ศรีลาศักดิ์ และ วรวุฒิ เที่ยงธรรม ครับ

Syndicate content
Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้