คำถามติดแท็ก system-calls

4
dup2 / dup - ทำไมฉันต้องทำซ้ำ file descriptor?
ฉันพยายามทำความเข้าใจการใช้dup2และdup. จากหน้าคน: DESCRIPTION dup and dup2 create a copy of the file descriptor oldfd. After successful return of dup or dup2, the old and new descriptors may be used interchangeably. They share locks, file position pointers and flags; for example, if the file position is modified by using lseek on …

1
ทำไมการเขียนทิ้งไบต์ 4K อย่างต่อเนื่องในบัฟเฟอร์
ฉันมีรหัสต่อไปนี้เป็นหลัก: int fileWrite(int file, void * pBuffer, size_t size) { size_t bytesWritten = (size_t)write( file, pBuffer, size ) ; if (bytesWritten != size) { return -1; } return 0; } มันทำงานได้ถ้าขนาดคือ 1GB แต่เมื่อขนาดเป็น ~ 2GB มันจะเหลือ 4K ไบต์อย่างสม่ำเสมอ ฉันสามารถแก้ไขได้โดยการเขียนการวนซ้ำและย้ายบัฟเฟอร์ขึ้น แต่ฉันอยากรู้ว่าทำไมมันล้มเหลวอยู่เสมอ ตัวอย่างเช่นถ้าขนาดคือ 2147483648 เขียนเฉพาะเขียน 2147479552 ปล่อย 4096 ไม่ได้เขียน ทำไมสิ่งนี้ถึงเกิดขึ้นและถูกต้องหรือไม่ที่จะเขียนการวนซ้ำ
30 c  linux  system-calls 

1
ป้องกันกระบวนการจากการเปิดไฟล์ descriptor ใหม่บน Linux แต่อนุญาตให้รับไฟล์ descriptor ผ่านซ็อกเก็ต
ขณะนี้ฉันกำลังทำงานในโครงการที่ฉันมีกระบวนการผู้ปกครองที่ตั้งค่า socketpair ส้อมและจากนั้นใช้ socketpair นี้เพื่อสื่อสาร เด็กถ้ามันต้องการที่จะเปิดไฟล์ (หรือทรัพยากรอื่น ๆ ที่ใช้อธิบายไฟล์อื่น ๆ ) ควรจะไปที่ผู้ปกครองขอทรัพยากรและได้รับการfdส่งผ่าน socketpair นอกจากนี้ฉันต้องการป้องกันเด็กจากการเปิดไฟล์ descriptor ใด ๆ ด้วยตัวเอง ฉันสะดุดsetrlimitซึ่งประสบความสำเร็จในการป้องกันเด็กจากการเปิดไฟล์ descriptors ใหม่ แต่ก็ดูเหมือนว่าจะทำให้โมเดอเรเตอร์ไฟล์ใด ๆ ที่ส่งผ่านการเชื่อมต่อซ็อกเก็ตเริ่มต้นใช้งานไม่ได้ มีวิธีการใด ๆ บน Linux ที่อนุญาตให้กระบวนการเดี่ยวเปิดไฟล์ใด ๆ ส่งไฟล์ descriptor ไปยังกระบวนการอื่นและอนุญาตให้ใช้โดยไม่อนุญาตให้กระบวนการอื่นเปิดไฟล์ descriptor ด้วยตัวเอง? สำหรับกรณีการใช้งานของฉันที่สามารถกำหนดค่าเคอร์เนลใด ๆ การเรียกของระบบและอื่น ๆ ตราบใดที่มันสามารถใช้หลังจาก fork และตราบใดที่มันใช้กับตัวอธิบายไฟล์ทั้งหมด (ไม่ใช่แค่ไฟล์ แต่ยังซ็อกเก็ตซ็อกเก็ตคู่ ฯลฯ )
9 c  linux  system-calls 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.