4.2.32 · HinglishOperating Systems
File operations — open, read, write, seek, close
4.2.32· Coding › Operating Systems
HUM in operations ki zaroorat kyun hai?
5 core operations ek lifecycle banate hain:
open → (read / write / seek)* → close
open— bookkeeping set up karo, ek handle lo.read/write— tumhare buffer aur file ke beech bytes transfer karo.seek— yeh move karo ki file mein kahan pe agla read/write hoga.close— bookkeeping tear down karo, data flush karo.
File descriptor exactly KYA hota hai?

Har call KAISE kaam karta hai (first principles se derive kiya)
1. open
2. read
3. write
4. seek (lseek)
5. close
Worked examples
Common mistakes
Recall Feynman: 12-saal ke bacche ko samjhao
Socho ek library jiske andar tum khud nahi ja sakte. Tum librarian (OS) se naam lekar ek kitaab maangte ho — woh tumhe ek numbered claim-ticket (file descriptor) deti hai. Us ticket se tum kehte ho "agla page padho" ya "yeh page likho" aur woh yaad rakhti hai tum kis page pe ho (offset). Agar tum kaho "page 50 pe jaao," woh hai seek — woh bas ek bookmark flip karti hai, super fast, koi reading nahi. Jab kaam ho jaata hai tum ticket wapas dete ho (close) taaki koi aur use kar sake.
Active recall
open success pe kya return karta hai, aur failure pe?
Success pe ek non-negative file descriptor (sabse chhota unused); failure pe
-1 (errno set hoke).read ka 0 return karna kya matlab hai?
End of file (EOF) — koi error nahi. Errors
-1 return karti hain.read/write requested se kam bytes kyun transfer kar sakte hain?
EOF paas hai, pipe/socket mein less data ready hai, disk full hai, ya interrupting signal hai → toh return value check karke loop karna padta hai.
Open file description kya state hold karta hai?
Current byte offset, access mode, aur file ke inode ka pointer.
20-byte file ke liye lseek(fd, -4, SEEK_END) compute karo.
newpos = size + offset = 20 + (-4) = 16.
Kya lseek data transfer karta hai ya disk head move karta hai?
Nahi — yeh sirf in-kernel offset integer update karta hai; practically yeh free hai.
Kaun sa flag har write ko end-of-file pe atomically le jaata hai?
O_APPEND.File absent hone par create karne ke liye kaunse flags chahiye aur kaunsa extra argument matter karta hai?
O_CREAT; mode (jaise 0644) permission argument sirf create karte waqt use hota hai.Agar ek long-running program mein kabhi close nahi kiya fds ko toh kya hoga?
Descriptors leak ho jaate hain; eventually naye
open calls fail ho jaate hain (ulimit/EMFILE).Sparse file kya hota hai aur kaise banta hai?
Ek file jisme implicit zero bytes ke "holes" hote hain, EOF ke baad seek karke phir likhne se banta hai.
Convention: fd 0, 1, 2 kya hain?
0 = stdin, 1 = stdout, 2 = stderr.
Connections
- File system & inodes —
openpath → inode resolve karta hai. - System calls and the kernel boundary — yeh sab syscalls hain.
- File descriptor table — per-process table jise fd index karta hai.
- Buffered I/O (fopen/fread) — stdio wrappers jo in ke upar bane hain.
- Pipes and sockets —
read/writeuse karte hain lekin seekable nahi hote. - ulimit and resource limits — isliye close karna zaroori hai.