Linux chdir System Call ใน C

Linux Chdir System Call Ni C



การเปลี่ยนแปลงไปยังไดเร็กทอรีการทำงานปัจจุบันของอุปกรณ์ทำได้โดยใช้วิธี 'CHIR' ในหลายกรณี คุณอาจตัดสินใจเปลี่ยนโฟลเดอร์ทำงานปัจจุบันของอุปกรณ์ หรือคุณต้องการเรียกใช้สคริปต์ C จากโฟลเดอร์แทนไดเร็กทอรีการทำงานปัจจุบันของคุณ ดังนั้น ในการรันโค้ด C นั้น คุณต้องแก้ไขโฟลเดอร์การทำงานปัจจุบันของคุณ นอกจากนี้ อาจใช้วิธี 'getcwd' ของภาษาการเข้ารหัส C เพื่อระบุได้อย่างรวดเร็วว่าโฟลเดอร์การทำงานปัจจุบันมีการเปลี่ยนแปลงเมื่อใด ตอนนี้ เราจะใช้ฟังก์ชัน chdir() ของ C ในบทความนี้เพื่อเปลี่ยนไดเร็กทอรีการทำงาน

ตัวอย่าง 01:

เริ่มจากการทำงานของฟังก์ชัน chdir() ของ C ในระบบปฏิบัติการ Linux สำหรับสิ่งนี้ คุณต้องแน่ใจว่าคอมไพเลอร์ของ C ถูกติดตั้งไว้ที่ส่วนท้ายของคุณแล้ว ในกรณีส่วนใหญ่ เรามักจะใช้คอมไพเลอร์ “gcc” ของ C ในระบบปฏิบัติการ Kali Linux เริ่มต้นด้วยตัวอย่างนี้ เราต้องมีไฟล์ C ที่มีนามสกุล 'c' เราตั้งชื่อมันว่า p1.c และพยายามเปิดมันด้วยตัวแก้ไข “นาโน” ของ Linux ดังที่แสดงด้านล่าง







เมื่อไฟล์ของคุณเปิดขึ้นในตัวแก้ไข คุณต้องเริ่มเขียนโค้ดในไฟล์นั้น เราได้เริ่มต้นโปรแกรม C ของเราโดยการเพิ่มไลบรารีส่วนหัวหลักของ C ซึ่งเป็นสิ่งที่ต้องมีในโปรแกรม C ใดๆ ดังนั้น ไลบรารีส่วนหัว stdio.h และ unistd.h จึงถูกใช้เพื่อให้แน่ใจว่าอินพุตและเอาต์พุตมาตรฐานสามารถไหลภายในโปรแกรมได้ มีการใช้ส่วนหัว unistd.h เพื่อใช้ประโยชน์จากฟังก์ชันมาตรฐานบางอย่างของ C ที่จำเป็นสำหรับตัวอย่างนี้โดยเฉพาะ ตอนนี้เราได้เริ่มต้นฟังก์ชั่นไดรเวอร์ main() ของ C ในรหัสนี้เพื่อให้ทำงานโดยอัตโนมัติเมื่อดำเนินการ ตัวแปรอาร์เรย์ประเภทอักขระ 'เส้นทาง' ถูกกำหนดด้วยขนาด 100 เนื่องจากเก็บค่าได้เพียง 100 ค่า



คำสั่งฟังก์ชัน printf() ถูกใช้เพื่อพิมพ์โฟลเดอร์ไดเร็กทอรีการทำงานปัจจุบันของไฟล์ C นี้โดยใช้ฟังก์ชัน 'getcwd()' ฟังก์ชันนี้ใช้ตัวแปรอาร์เรย์ 'เส้นทาง' ที่มีขนาด 100 เพื่อรับไดเร็กทอรีการทำงานปัจจุบันและส่งผ่านไปยังคำสั่งฟังก์ชัน printf() เพื่อแสดงผล ถึงเวลาที่จะใช้ฟังก์ชัน chdir() เราสามารถส่งอักขระประเภทใดก็ได้เพื่อระบุว่าเราต้องการจะเดินหน้าในไดเร็กทอรีหรือย้ายในทิศทางย้อนกลับภายในไดเร็กทอรีเดียวกัน



ดังนั้นเราจึงได้ลองใช้อักขระ “..” ในคำสั่งฟังก์ชัน chdir() เพื่อย้ายจากไดเร็กทอรีการทำงานปัจจุบันไปในทิศทางย้อนกลับ กล่าวคือ ต่ำกว่าไดเร็กทอรีการทำงานปัจจุบันหนึ่งระดับ โปรดทราบว่าขณะนี้ เราได้ทำงานในโฟลเดอร์โปรเจ็กต์ของไดเร็กทอรีการทำงานหลัก “Linux” ของระบบ Kali Linux ตอนนี้เราอยู่ที่ไดเร็กทอรี 'Linux' แทนที่จะเป็นไดเร็กทอรี 'project' หลังจากใช้ฟังก์ชัน 'chdir' ตอนนี้ เราลองใช้คำสั่งฟังก์ชัน 'printf()' อีกครั้งเพื่อแสดงไดเร็กทอรีการทำงานปัจจุบันโดยใช้ฟังก์ชัน 'getcwd' ในนั้น โปรแกรมของเราจบลงด้วยคำสั่ง return 0





หลังจากบันทึกโปรแกรม C นี้แล้ว เราต้องคอมไพล์โดยใช้คอมไพเลอร์ “gcc” ที่เรากำหนดค่าไว้แล้วในตอนท้าย การใช้คำสั่ง gcc นี้ เราได้สร้างไฟล์อ็อบเจ็กต์ของไฟล์ C นี้ชื่อ “p1.out” โดยใช้ตัวเลือก –o ดังที่แสดงด้านล่าง



ตอนนี้ เมื่อคุณเรียกใช้ไฟล์อ็อบเจ็กต์ในเทอร์มินัล Linux คุณจะได้รับไดเร็กทอรีการทำงานที่โปรแกรมใช้ก่อนที่จะใช้ฟังก์ชัน chdir() หลังจากใช้ฟังก์ชัน chdir() เราย้ายไปที่หนึ่งไดเร็กทอรีด้านล่างและแสดงไดเร็กทอรีเฉพาะ 'home'

ตัวอย่าง 02:



โดยใช้ไลบรารีส่วนหัวเดียวกัน เราได้เริ่มโค้ดโปรแกรมนี้ ภายในฟังก์ชัน main() ของโปรแกรมนี้ เราใช้คำสั่ง 'if' โดยใช้ฟังก์ชัน chdir() ในนั้น

ฟังก์ชันนี้จะตรวจสอบว่ามี “/user” อยู่ในระบบหรือไม่โดยการตั้งค่าเงื่อนไข “/user!=0” หากไม่มีไดเร็กทอรีอยู่ในระบบปัจจุบัน การเรียกใช้ฟังก์ชัน perror จะถูกใช้เพื่อแสดงข้อความแสดงข้อผิดพลาดที่เกี่ยวข้อง กล่าวคือ “ไม่มีไดเร็กทอรีผู้ใช้ เราใช้คำสั่ง 'if' อื่นโดยใช้ฟังก์ชัน chdir() ภายในนั้น จุดประสงค์ของการใช้ฟังก์ชัน chdir() ที่นี่ก็เหมือนกับที่เราทำในคำสั่ง if ด้านบน ซึ่งใช้สำหรับตรวจสอบว่าไดเร็กทอรีมีอยู่หรือไม่โดยใช้เงื่อนไข “/temp”!=0 ข้อแตกต่างเพียงอย่างเดียวคือการใช้ชื่อไดเร็กทอรีใหม่ “/temp” แทน “/user” ดังที่คุณเห็นจากภาพโค้ดด้านล่าง







หากไม่มีไดเร็กทอรี /temp อยู่ในระบบ ฟังก์ชัน perror ที่ใช้ในคำสั่ง 'if' จะโยนข้อความแสดงข้อผิดพลาด '/temp directory ไม่มีอยู่' ดังที่แสดงจากภาพด้านล่าง หลังจากใช้ทั้งคำสั่ง 'if' เราได้สิ้นสุดโค้ดนี้ด้วยคำสั่ง return 0 ของ C ตอนนี้โปรแกรมจบลงแล้ว เราได้บันทึกโค้ด C ของเราโดยใช้ปุ่มลัด Ctrl+S ก่อนดำเนินการ





เมื่อไฟล์ได้รับการบันทึกในระบบของคุณแล้ว เราต้องคอมไพล์โค้ด C ด้วยคอมไพเลอร์ 'gcc' ที่เราได้ติดตั้งไว้แล้วในตอนท้าย เมื่อใช้คำสั่งนี้ เราได้สร้างไฟล์อ็อบเจ็กต์ 'p2.out' โดยใช้ตัวเลือก –o ในคำสั่ง





หลังจากรันไฟล์อ็อบเจ็กต์ที่สร้าง 'p2.out' ด้วยอักขระ './' เราได้เรียนรู้ว่าทั้งไดเร็กทอรีที่กล่าวถึงในพาธของ 'chdir' ไม่มีอยู่ในระบบหรือเกิดข้อผิดพลาดที่แสดงที่เชลล์ อย่างถูกต้อง



บทสรุป

ในบทความนี้ เราได้สาธิตการใช้ฟังก์ชัน chdir() ของ C ในระบบปฏิบัติการ Kali Linux ตัวอย่างแรกแสดงให้เห็นว่าฟังก์ชัน chdir() สามารถใช้เพื่อเปลี่ยนไดเร็กทอรีการทำงาน เช่น ย้ายจากไดเร็กทอรีหนึ่งไปยังไดเร็กทอรีอื่นได้อย่างไร ตัวอย่างสุดท้ายของ C แสดงให้เห็นว่าเราสามารถตรวจสอบว่าไดเร็กทอรีการทำงานปัจจุบันที่ระบุในเส้นทางของ chdir() มีอยู่หรือไม่