ในระบบแฟ้มลินุกซ์ของฉันจุด symlink 127.0.1.1:+xxxxx
ไป
ทำไมเครื่องหมายบวก จะมีเครื่องหมายลบด้วยหรือไม่? ทำไมไม่เพียง127.0.1.1:xxxxx
?
ในระบบแฟ้มลินุกซ์ของฉันจุด symlink 127.0.1.1:+xxxxx
ไป
ทำไมเครื่องหมายบวก จะมีเครื่องหมายลบด้วยหรือไม่? ทำไมไม่เพียง127.0.1.1:xxxxx
?
คำตอบ:
ลิงก์สัญลักษณ์ที่ไม่ได้ชี้ไปที่ไฟล์ไม่มีความหมายทั่วไปเลย ในกรณีนี้อาจเป็น ID กระบวนการหรือพอร์ตที่มีโปรโตคอลพิเศษบางตัวพูดถึงมันหรือตัวระบุอื่น ทุกอย่างขึ้นอยู่กับโปรแกรมที่ทำ
ซอฟต์แวร์ที่สร้างลิงค์เหล่านี้ใช้ประโยชน์จากข้อเท็จจริงที่ว่า 1) เป้าหมายของ symlink อาจไม่มีอยู่จริงหรือไร้สาระทั้งหมด 2) การสร้าง symlink เป็นการดำเนินการปรมาณูแบบ single-syscall อย่างสมบูรณ์ (ตามที่อ่านเป้าหมาย) ซึ่งแตกต่างจากการสร้างไฟล์ปกติซึ่งใช้เวลาอย่างน้อย 3 การเรียกระบบ
ดังนั้นการสร้าง symlink สามารถถูกใช้เป็นวิธีการล็อค (สร้างความมั่นใจอินสแตนซ์เดียวของโปรแกรม) แม้ว่ากลไกอื่น ๆ อาจไม่น่าเชื่อถือ โปรแกรมไม่จำเป็นต้องใช้ symlink ในการแก้ปัญหาไฟล์จริง: มันแค่สนใจว่าการสร้างลิงค์สำเร็จหรือไม่หรือมันล้มเหลวเนื่องจากมันมีอยู่แล้ว
fopen
, fwrite
และfclose
?
open
(หรืออาจเป็นcreat
ซอฟต์แวร์เก่า) write
และclose
ไม่ใช่รุ่น f * ที่ stdio มอบให้ แต่ใช่คุณต้องทำอย่างน้อยopen
และwrite
สร้างไฟล์และใส่สิ่งที่มีความหมายลงไป ตอนนี้ถ้าคุณต้องการรหัสบางอย่างเพื่อ "พยายามที่จะสร้างมันขึ้นมาหากประสบความสำเร็จจะนำข้อมูลบางอย่างในนั้นที่อื่นอ่านข้อมูลบางอย่างจากมัน" กระบวนการที่สองก็สามารถลองของก่อนที่กระบวนการแรกที่มีโอกาสที่จะread
หลีกเลี่ยงสิ่งนั้น ประสบความสำเร็จและสร้างลิงค์หรือล้มเหลวและต้องแน่ใจว่ามีข้อมูลสำหรับคุณ write
symlink
readlink
เท่าที่ฉันรู้ "+" หมายความว่าหมายเลขหลัง IP ("xxxxx") หมายถึง "process ID" (ไม่ใช่พอร์ตที่มักใช้สัญกรณ์ [IP-address]: [portnumber]
เป็นไปได้ว่า "สัญกรณ์" นี้ (ไม่แน่ใจว่าฉันจะเรียกมันว่า "สัญกรณ์" เนื่องจากฉันไม่รู้เอกสาร "ทางการ" ใด ๆ ) หมายถึงสิ่งอื่นถ้าใช้โดยแอปพลิเคชันเฉพาะ - แต่แล้วอีกครั้ง ความเป็นไปได้ไม่เพียง แต่มี symlink กรณีเดียวที่ฉันรู้ (และสามารถค้นหาได้ด้วยการค้นหาที่ไม่ครอบคลุมมากเกินไป) "+ XXXX" อ้างอิงถึง ID กระบวนการเสมอ
/proc
/dev
คุณช่วยอธิบายว่า symlink นี้ใช้ทำอะไรได้บ้าง