ฉันต้องการมีไฟล์ที่ใช้เป็นตัวนับ ผู้ใช้ A จะเขียนและเพิ่มจำนวนนี้ในขณะที่ผู้ใช้ B ขอให้อ่านไฟล์ เป็นไปได้หรือไม่ที่ผู้ใช้ A สามารถล็อคไฟล์นี้เพื่อให้ไม่มีใครสามารถอ่านหรือเขียนไฟล์ได้จนกว่าการเขียนของผู้ใช้จะเสร็จสิ้น?
ฉันดูแล้วflock
แต่ดูเหมือนจะไม่สามารถใช้งานได้ตามที่คาดหวัง
flock -x -w 5 /dev/shm/counter.txt echo "4" > /dev/shm/counter.txt && sleep 5
หากมีวิธีที่เหมาะสมกว่าในการรับไฟล์ที่เพิ่มขึ้นคล้ายกับอะตอมนี้ซึ่งจะเป็นการฟังที่ดีเช่นกัน!
เป้าหมายของฉันคือ:
LOCK counter.txt; write to counter.txt;
ในขณะที่ในเวลาเดียวกัน
Read counter.txt; realize it's locked so wait until that lock is finished.
&& sleep 5
จะถูกดำเนินการหลังจากที่ฝูงปลดล็อก)
flock
แต่ฉันจะใส่คำถามนั้นแยกต่างหาก ขอบคุณจอห์น!