ใน symlink ชี้ไปที่ '127.0.1.1:+xxxxx' อักขระบวกคืออะไร


52

ในระบบแฟ้มลินุกซ์ของฉันจุด symlink 127.0.1.1:+xxxxxไป

ทำไมเครื่องหมายบวก จะมีเครื่องหมายลบด้วยหรือไม่? ทำไมไม่เพียง127.0.1.1:xxxxx?


ลิงก์สัญลักษณ์นี้อยู่ภายใต้ / proc หรือไม่
โจชัว

4
@Joshua: มีแนวโน้มมากขึ้นภายใต้ ~ / .mozilla / หรือคล้ายกัน Firefox / Thunderbird และ iirc Steam ใช้ symlink ดังกล่าวเพื่อล็อค
grawity

2
เป็นตัวเลข xxxxx หรือตัวอักษร xxxxx?
Mawg

2
อาจไม่เกี่ยวข้อง แต่เป็นเพียงข้อมูล ในไคลเอนต์ IRC บางตัวเครื่องหมายบวกก่อนพอร์ตอยู่ที่นั่นเพื่อระบุว่าเซิร์ฟเวอร์ระยะไกลใช้ SSL / TLS
eKKiM

คำตอบ:


94

ลิงก์สัญลักษณ์ที่ไม่ได้ชี้ไปที่ไฟล์ไม่มีความหมายทั่วไปเลย ในกรณีนี้อาจเป็น ID กระบวนการหรือพอร์ตที่มีโปรโตคอลพิเศษบางตัวพูดถึงมันหรือตัวระบุอื่น ทุกอย่างขึ้นอยู่กับโปรแกรมที่ทำ

ซอฟต์แวร์ที่สร้างลิงค์เหล่านี้ใช้ประโยชน์จากข้อเท็จจริงที่ว่า 1) เป้าหมายของ symlink อาจไม่มีอยู่จริงหรือไร้สาระทั้งหมด 2) การสร้าง symlink เป็นการดำเนินการปรมาณูแบบ single-syscall อย่างสมบูรณ์ (ตามที่อ่านเป้าหมาย) ซึ่งแตกต่างจากการสร้างไฟล์ปกติซึ่งใช้เวลาอย่างน้อย 3 การเรียกระบบ

ดังนั้นการสร้าง symlink สามารถถูกใช้เป็นวิธีการล็อค (สร้างความมั่นใจอินสแตนซ์เดียวของโปรแกรม) แม้ว่ากลไกอื่น ๆ อาจไม่น่าเชื่อถือ โปรแกรมไม่จำเป็นต้องใช้ symlink ในการแก้ปัญหาไฟล์จริง: มันแค่สนใจว่าการสร้างลิงค์สำเร็จหรือไม่หรือมันล้มเหลวเนื่องจากมันมีอยู่แล้ว


5
"* ต่างจากการสร้างไฟล์ปกติซึ่งใช้การเรียกระบบอย่างน้อย 3 ครั้ง *" - คุณช่วยอธิบายได้ไหม? คุณหมายถึงfopen, fwriteและfclose?
Nic Hartley

11
@NicHartley: การเรียกของระบบคือopen(หรืออาจเป็นcreatซอฟต์แวร์เก่า) writeและcloseไม่ใช่รุ่น f * ที่ stdio มอบให้ แต่ใช่คุณต้องทำอย่างน้อยopenและwriteสร้างไฟล์และใส่สิ่งที่มีความหมายลงไป ตอนนี้ถ้าคุณต้องการรหัสบางอย่างเพื่อ "พยายามที่จะสร้างมันขึ้นมาหากประสบความสำเร็จจะนำข้อมูลบางอย่างในนั้นที่อื่นอ่านข้อมูลบางอย่างจากมัน" กระบวนการที่สองก็สามารถลองของก่อนที่กระบวนการแรกที่มีโอกาสที่จะread หลีกเลี่ยงสิ่งนั้น ประสบความสำเร็จและสร้างลิงค์หรือล้มเหลวและต้องแน่ใจว่ามีข้อมูลสำหรับคุณ writesymlinkreadlink
Guntram Blohm

"... สามารถถูกทารุณกรรมเป็นวิธีได้ ... " การใช้ในทางที่ผิดเช่นนี้เป็น "ใช้ในทางที่ไม่ได้มีไว้สำหรับใช้" หรือ "ใช้ในทางที่ไม่ควรใช้"
ผู้ชายกับหมวก

22

เท่าที่ฉันรู้ "+" หมายความว่าหมายเลขหลัง IP ("xxxxx") หมายถึง "process ID" (ไม่ใช่พอร์ตที่มักใช้สัญกรณ์ [IP-address]: [portnumber]

เป็นไปได้ว่า "สัญกรณ์" นี้ (ไม่แน่ใจว่าฉันจะเรียกมันว่า "สัญกรณ์" เนื่องจากฉันไม่รู้เอกสาร "ทางการ" ใด ๆ ) หมายถึงสิ่งอื่นถ้าใช้โดยแอปพลิเคชันเฉพาะ - แต่แล้วอีกครั้ง ความเป็นไปได้ไม่เพียง แต่มี symlink กรณีเดียวที่ฉันรู้ (และสามารถค้นหาได้ด้วยการค้นหาที่ไม่ครอบคลุมมากเกินไป) "+ XXXX" อ้างอิงถึง ID กระบวนการเสมอ


1
ฉันเพิ่งตรวจสอบมัน ในกรณีของฉันมันทำจริงๆ
myMethod

1
มีเอกสารของรูปแบบนี้อยู่ที่ไหนสักแห่งที่คุณสามารถเชื่อมโยงได้
David Z

1
ไม่แน่ใจฉันแค่จำมันจากประสบการณ์จริง
Albin

2
ดูเหมือนว่าคุณกำลังพูดถึง symlink ในไดเรกทอรีพิเศษเช่นหรือ/proc /devคุณช่วยอธิบายว่า symlink นี้ใช้ทำอะไรได้บ้าง
Barmar

4
นี่เป็นครั้งแรกที่ฉันได้เห็นสัญกรณ์นี้เลยฉันประหลาดใจที่ได้ยินคุณพูดว่ามันเป็นสัญกรณ์ทั่วไป คุณเคยเห็นที่ไหนเคยใช้หมายถึงรหัสกระบวนการ
Barmar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.