1 UNIX System Programming v Objectives –look at how to program with directories –briefly describe the UNIX file system Directories and File System.

Slides:



Advertisements
Similar presentations
File and I/O system calls int open(const char* path, int flags, mode_t modes) int creat(const char *path, mode_t mode) ssize_t read(int fd, void *buf,
Advertisements

Lecture 20 Arrays and Strings
What is a pointer? First of all, it is a variable, just like other variables you studied So it has type, storage etc. Difference: it can only store the.
The Unix File System. What are the three parts of every file on a Unix filesystem? And where is each stored? Filename - stored in directories Inode -
Links Learning Objectives: 1. To understand the basics of links & its usage 2. To learn the construction / removal of different types of links 3. To distinguish.
1 Files and Directories Hua LiSystems ProgrammingCS2690Files and Directories.
Files. System Calls for File System Accessing files –Open, read, write, lseek, close Creating files –Create, mknod.
Linux+ Guide to Linux Certification, Second Edition
CS 311 – Lecture 10 Outline Review open() and close() Difference between fopen() and open() File management system calls – read() – write() – lseek() –
6/24/2015B.RamamurthyPage 1 File System B. Ramamurthy.
Files and Directories Hua LiSystems ProgrammingCS2690Files and Directories Spring 2003Page 1 of 60.
Linux Linux File System.
Lecture 17 FS APIs and vsfs. File and File Name What is a File? Array of bytes. Ranges of bytes can be read/written. File system consists of many files,
Guide To UNIX Using Linux Third Edition
7/15/2015B.RamamurthyPage 1 File System B. Ramamurthy.
CS 311 – Lecture 12 Outline File management system calls Stat() Directory Information  Opendir()  Readdir()  Closedir() Truncate() and remove() Lecture.
Links Software Tools. Lecture 4 / Slide 2 Links l A link is a pointer to a file. l In fact, in UNIX all filenames are just links to a file. Most files.
1 UNIX Systems Programming Interprocess communication.
1 THE UNIX FILE SYSTEM By Chokechai Chuensukanant ID COSC 513 Operating System.
The file structure and related utilities CS240 Computer Science II.
Lesson 7-Creating and Changing Directories. Overview Using directories to create order. Managing files in directories. Using pathnames to manage files.
1 Lecture 2 Working with Files and Directories COP 3344 Introduction to UNIX.
1 Homework Introduction to HW7 –Complexity similar to HW6 –Don’t wait until last minute to start on it File Access will be needed in HW8.
Slide 1 Interprocess communication. Slide 2 1. Pipes  A form of interprocess communication Between processes that have a common ancestor  Typical use:
Chapter 5 Files and Directories Source: Robbins and Robbins, UNIX Systems Programming, Prentice Hall, 2003.
Linux+ Guide to Linux Certification, Second Edition
SIMULATED UNIX FILE SYSTEM Implementation in C Tarek Youssef Bipanjit Sihra.
File Systems Long-term Information Storage Store large amounts of information Information must survive the termination of the process using it Multiple.
Chapter Two Exploring the UNIX File System and File Security.
File Systems CSCI What is a file? A file is information that is stored on disks or other external media.
Adv. UNIX: dirs/181 Advanced UNIX v Objectives –look at how to program with directories –briefly describe the UNIX file system Special.
Directory structure. Slide 2 Directory Structure  A directory ‘file’ is a sequence of lines; each line holds an i-node number and a file name.  The.
UNIX Files File organization and a few primitives.
Managing Files. Module 5 Managing Files ♦ Introduction “On a Linux system, everything is a file; if something is not a file, it is a process.” ♦ Topics.
Files and Directories File types stat functions for file information
Project 6 Unix File System. Administrative No Design Review – A design document instead 2-3 pages max No collaboration with peers – Piazza is for clarifications.
Navigating Directories
Chapter 4 The File Structure. Contents u The Hierarchical File Structure u Directory and Ordinary Files u Directories u Access Permissions u Links.
Linux+ Guide to Linux Certification, Third Edition
Linux+ Guide to Linux Certification, Third Edition
1 © 2001 John Urrutia. All rights reserved. Chapter 4 The LINUX Filesystem.
Λειτουργικά Συστήματα – Lab2 Γιάννης Πετράκης. Directory Navigation and Control  The Unix file system is set up like a tree branching out from the root.
Today’s topic Access and manipulate meta data for files –File type, ownership, access permissions, access time, etc How to determine if a file is not there?
Adv. UNIX: FileStr/11 Advanced UNIX v Objectives –to supplement the “Introduction to UNIX” slides with extra information on files Special.
File Systems. 2 What is a file? A repository for data Is long lasting (until explicitly deleted).
Copyright ©: Nahrstedt, Angrave, Abdelzaher, Caccamo1 Files and file allocation.
NCHU System & Network Lab Lab 14 File and Directory.
CSCI 330 UNIX and Network Programming
1 Lecture 2 Working with Files and Directories COP 3353 Introduction to UNIX.
GAME203 – C Files stdio.h C standard Input/Output “getchar()”
UNIX filesystem CS 2204 Class meeting 2 *Notes by Doug Bowman and other members of the CS faculty at Virginia Tech. Copyright
CS 241 Section Week #8 (10/29/09). Outline MP5 Overview Files & I/O UNIX File Systems inodes Directories Links.
The Unix File System R Bigelow. The UNIX File System The file system refers to the way in which UNIX implements files and directories. The UNIX file system.
Learning basic Unix command It 325 operating system.
Files. FILE * u In C, we use a FILE * data type to access files. u FILE * is defined in /usr/include/stdio.h u An example: #include int main() { FILE.
Lecture 14 Page 1 CS 111 Online File Systems: Naming, Reliability, and Advanced Issues CS 111 On-Line MS Program Operating Systems Peter Reiher.
CSC 271 – Software I: Utilities and Internals An Introduction to File I/O in Linux Credited to Dr. Robert Siegfried and Beginning Linux Programming by.
C Programming Day 2. 2 Copyright © 2005, Infosys Technologies Ltd ER/CORP/CRS/LA07/003 Version No. 1.0 Union –mechanism to create user defined data types.
S ALVATORE DI G IROLAMO (TA) Networks and Operating Systems: Exercise Session 3.
File System Design David E. Culler CS162 – Operating Systems and Systems Programming Lecture 23 October 22, 2014 Reading: A&D a HW 4 out Proj 2 out.
Linux Filesystem Management
Directory Directory is a file containing list of entries,where each entry represents inode number and name of the file stored in that directory.
An overview of the kernel structure
File System B. Ramamurthy B.Ramamurthy 11/27/2018.
CSE 333 – Section 3 POSIX I/O Functions.
The Unix File System.
CSE 333 – Section 3 POSIX I/O Functions.
CSE 333 – Section 3 POSIX I/O Functions.
January 26th, 2004 Class Meeting 2
Chapter 5 File Systems -Compiled for MCA, PU
Presentation transcript:

1 UNIX System Programming v Objectives –look at how to program with directories –briefly describe the UNIX file system Directories and File System

2 Overview 1. Directory Implementation 2. Links 3. Subdirectory Creation 4. “. ” and “.. ” 5. mkdir() 6. rmdir() continued

3 7. Reading Directories 7. Reading Directories 8. chdir() 8. chdir() 9. getcwd() 10. Walking over Directories

4 1. Directory Implementation v A UNIX directory is a file: –it has an owner, group owner, size, access permissions, etc. –many file operations can be used on directories v Differences: –modern UNIXs have special directory operations e.g. opendir(), readdir()

5 Directory Structure v A directory ‘file’ is a sequence of lines; each line holds an i-node number and a file name.  The data is stored as binary, so we cannot simply use to view it  The data is stored as binary, so we cannot simply use cat to view it

6 v I-node: –The administrative information about a file is kept in a structure known as an inode. u Inodes in a file system, in general, are structured as an array known as an inode table. –An inode number, which is an index to the inode table, uniquely identifies a file in a file system.

7 i-node and Data Blocks

8 2. Links 2.1What is a Link? 2.2Creating a Link 2.3Seeing Links 2.4Removing a Link 2.5Symbolic Links 2.6 Implementation

What is a Link? v A link is a pointer to a file. v Useful for sharing files: –a file can be shared by giving each person their own link (pointer) to it.

Creating a Link ln existing-file new-pointer v Jenny types: ln draft /home/bob/letter / home bobjenny memoplanning /home/bob/draft and /home/jenny/letter

11  Changes to a file affects every link:  Changes to a file affects every link: $ cat file_a This is file A. $ ln file_a file_b $ cat file_b This is file A. $ vi file_b : $ cat file_b This is file B after the change. $ cat file_a This is file B after the change.

Seeing Links v Compare status information: $ ls -l file_a file_b file_c file_d -rw-r--r-- 2 dkl 33 May 24 10:52 file_a -rw-r--r-- 2 dkl 33 May 24 10:52 file_b -rw-r--r-- 1 dkl 16 May 24 10:55 file_c -rw-r--r-- 1 dkl 33 May 24 10:57 file_d v Look at inode number: $ $ ls -i file_a file_b file_c file_d 3534 file_a 3534 file_b 5800 file_c 7328 file_d

Removing a Link v Deleting a link does not remove the file. v Only when the file and every link is gone will the file be removed.

Symbolic Links v The links described so far are often called hard links –a hard link is a pointer to a file which must be on the same file system v A symbolic link is an indirect pointer to a file –it stores the pathname of the pointed-to file –it can link across file systems

15 v Jenny types: ln -s shared /home/dkl/project / home dkljenny memoplanning /home/jenny/shared and /home/dkl/project separate file system

16 v Symbolic links are listed differently: $ ln -s pics /home/mh/img $ ls -lF pics /home/mh/img drw-r--r-- 1 dkl staff 981 May 24 10:55 pics lrwxrwxrxw 1 dkl staff 4 May 24 10:57/home/mh/img --> pics

17 ? abc update newdelete new XY abc newbobnewbob new 2.6 Link Creation, Update & Removal continued abc cp bob new abc ln bob new ln -s bob new bob abc new XY

and unlink() 2.7 link() and unlink() #include int link( const char *oldpath, const char *newpath );  Meaning of:  Meaning of: link( “abc”, “xyz” ) : : “fred.html” “abc” “bookmark.c” 207 “xyz” continued

19  clears the directory record  unlink() clears the directory record –usually means that the i-node number is set to 0 v The i-node is only deleted when the last link to it is removed; the data block for the file is also deleted (reclaimed) & no process have the file opened

20 Example: unlink #include int main(void) { if( open( "tempfile", O_RDWR ) < 0 ) { perror( "open error“ ); exit( 1 ); } if( unlink( "tempfile“ ) < 0 ) { perror( "unlink error“ ); exit( 1 ); } printf( "file unlinked\n“ ); exit(0); }

21symlink() #include int symlink(const char *oldpath, const char *newpath); v Creates a symbolic link named newpath which contains the string oldpath. v Symbolic links are interpreted at run-time. v Dangling link – may point to an non-existing file. v If newpath exists it will not be overwritten.

22 readlink() #include int readlink( const char *path, char *buf, size_t bufsiz ); v v Read value of a symbolic link (does not follow the link). – –Places the contents of the symbolic link path in the buffer buf, which has size bufsiz. – –Does not append a NULL character to buf. v v Return value – –The count of characters placed in the buffer if it succeeds. u u -1 if an error occurs.

23 3. Subdirectory Creation  causes:  “mkdir uga” causes: –the creation of a uga directory file and an i- node for it –an i-node number and name are added to the parent directory file : : “fred.html” “abc” “bookmark.c” 201 “uga”

24 4. “. ” and “.. ”  “. ” and “.. ” are stored as ordinary file names with i-node numbers pointing to the correct directory files. v Example: dkl bookmemos continued

25 In more detail: “.” “..” “book” 401“memos” Directory ben “.” “..” “chap1” 567“chap2” Directory book “chap3” “.” “..” “kh” “kd” Directory memos “mw”590

26 5. mkdir()   #include #include #include int mkdir(char *pathname, mode_t mode);  Creates a new directory with the specified : return 0 if ok, -1 on error  Creates a new directory with the specified mode : return 0 if ok, -1 on error continued

27  “. ” and “.. ” entries are added automatically  mode must include execute permissions so the user(s) can use.  mode must include execute permissions so the user(s) can use cd. e.g.0755

28 6. rmdir()   #include int rmdir(char *pathname); v Delete an empty directory; return 0 if ok, -1 on error. v Will delay until other processes have stopped using the directory.

29 7. Reading Directories v v #include #include DIR *opendir(char *pathname); struct dirent *readdir(DIR *dp); int closedir(DIR *dp); returns a pointer if ok, NULL on error returns a pointer if ok, NULL at end or on error

30 dirent and DIR v v struct dirent { long d_ino; /* i-node number */ char d_name[NAME_MAX+1]; /* fname */ off_t d_off; /* offset to next rec */ unsigned short d_reclen; /* record length */ }  is a directory stream (similar to )  DIR is a directory stream (similar to FILE ) –when a directory is first opened, the stream points to the first entry in the directory

31 Example: listdir.c #include #include int main() { DIR *dp; struct dirent *dir; if( (dp = opendir(“.”)) == NULL ) { fprintf( stderr, “Cannot open dir\n” ); exit(1); } continued List the contents of the current directory.

32 /* read entries */ while( (dir = readdir(dp)) != NULL ) { /* ignore empty records */ if( dir->d_ino != 0 ) printf( “%s\n”, dir->d_name ); } closedir( dp ); return 0; } /* end main */

33 8. chdir() #include int chdir( char *pathname ); int fchdir( int fd ); v Change the current working directory (cwd) of the calling process; return 0 if ok, -1 on error.

34 Example: cd to /tmp  Part of c :  Part of to_tmp.c : : if( chdir(“/tmp” ) < 0 printf( “chdir error\n”) ; else printf( “In /tmp\n” );

35 Directory Change is Local v The directory change is limited to within the program. v e.g. $ pwd /usr/lib $ to_tmp /* from last slide */ In /tmp $ pwd /usr/lib

36 9. getcwd()   #include char *getcwd(char *buf, int size);  Store the cwd of the calling process in buf ; return buf if ok, NULL on error.  buf must be big enough for the pathname string ( size specifies the length of buf ).

37 Example #include #include #include /* for NAME_MAX */ int main() { char name[NAME_MAX+1]; if( getcwd( name, NAME_MAX+1 ) == NULL ) printf( “getcwd error\n” ); else printf( “cwd = %s\n”, name ): :

Walking over Directories v 'Visit' every file in a specified directory and all of its subdirectories –visit means get the name of the file v Apply a user-defined function to every visited file.

39 Function Prototypes v v #include /* ftw means file tree walk, starting at directory */ int ftw( char *directory, MyFunc *fp, int depth ); /* apply MyFunc() to each visited file */ typedef int MyFunc( const char *file, struct stat *sbuf, int flag ); continued

40  depth is the maximum number of directories that can be open at once. Safest value is 1, although it slows down ftw().  Result of ftw() : 0 for a successful visit of every file, -1 on error.

41 MyFunc Details  The file argument is the pathname relative to the start directory –it will be passed to MyFunc() automatically by ftw() as it visits each file  sbuf argument is a pointer to the stat information for the file being examined. continued

42  The flag argument will be set to one of the following for the item being examined: –FTW_F Item is a regular file. –FTW_D Item is a directory. –FTW_NS Could not get stat info for item. –FTW_DNR Directory cannot be read.  If the MyFunc function returns a non-zero value then the ftw() walk will terminate.

43 Example: shower.c #include #include #include #include int shower(const char *file, const struct stat *sbuf, int flag); void main() { ftw(“.”, shower, 1); } continued Print the names of all the files found below the current directory.

44 int shower(const char *file, const struct stat *sbuf, int flag) { if (flag == FTW_F) /* is a file */ printf("Found: %s\n", file); return 0; }