Unit 6: Files and Directories
CptS 360 (System Programming) Unit 6: Files and Directories
Bob Lewis
School of Engineering and Applied Sciences Washington State University
Spring, 2020
Bob Lewis WSU CptS 360 (Spring, 2020)
CptS 360 (System Programming) Unit 6: Files and Directories Bob - - PowerPoint PPT Presentation
Unit 6: Files and Directories CptS 360 (System Programming) Unit 6: Files and Directories Bob Lewis School of Engineering and Applied Sciences Washington State University Spring, 2020 Bob Lewis WSU CptS 360 (Spring, 2020) Unit 6: Files and
Unit 6: Files and Directories
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
◮ all return the same information, just different ways of
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
◮ /tmp ◮ /dev
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
◮ real UID and GID ◮ established at login ◮ rarely changed ◮ effective UID, GID, and supplementary GIDs ◮ initially == real ◮ may be reset by SUID programs ◮ saved UID and GID ◮ (discussed later) Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
◮ rwxrwxrwx ◮ The only justification I know of for learning about octal
◮ This is also necessary for seeking executables in $PATH.
◮ Example: Setting permissions on your home directory. Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
◮ We don’t need read or write permission on the file itself.
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
◮ unless the “set-GID” bit of the containing directory is set, in
◮ This was intended to allow groups to share directory contents. ◮ Kind of anachronistic now. Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
◮ On a(n executable) file: vestigial and ignored. ◮ On a directory: A file contained within can be renamed or
◮ the /tmp directory: Everybody can write files to it, but not
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
◮ Figures, doesn’t it?
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
◮ = 1 + offset of the last byte in the file ◮ You might use this to read a whole file into a buffer. ◮ There’s a possible race condition. See it? ◮ How can you overcome it?
◮ block allocation ◮ holes Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
◮ hard disk (most often) ◮ CD-ROM or DVD-ROM ◮ USB stick ◮ floppy drive (remember those?)
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
◮ A UNIX filesystem is really a DAG. ◮ link(2) and unlink(2) ◮ link counts ◮ restrictions (Hard links don’t work everywhere.)
◮ symlink(2) and readlink(2) ◮ internal representation of symlinks ◮ stat.st_size of a symlink == strlen(link_name) + 1 ◮ “+ 1” is for null-termination Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
◮ last time file was accessed (but not modified) ◮ set by (e.g.) ◮ read(2) (of > 0 bytes) ◮ execve(2) (later) ◮ pipe(2) (also later)
◮ last time file was modified (but not accessed) ◮ set by (e.g.) ◮ write(2) (of > 0 bytes) ◮ mknod(2) ◮ truncate(2)
◮ last time file status was changed ◮ set when inode info is modified (owner, group, etc.)
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
◮ major ◮ minor ◮ use macros to extract them
◮ device number of a device containing a filesystem ◮ device number denotes the filesystem (i.e. its driver)
◮ device number of a character or block device file ◮ device number denotes the device itself Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
Bob Lewis WSU CptS 360 (Spring, 2020)
Unit 6: Files and Directories
Bob Lewis WSU CptS 360 (Spring, 2020)