DOC PREVIEW
FSU COP 5570 - File Pipes

This preview shows page 1-2-3-4-5 out of 14 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 14 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 14 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 14 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 14 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 14 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 14 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

PowerPoint PresentationSlide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Today’s Summary•Today’s topic:–File operations–I/O redirection–Inter-process communication through pipesAccessingfiles in UNIXUser spaceOSDevice(disk)•UNIX file descriptor/open file descriptions/inode table organization–File descriptor table -- in process•Each process has a table.•nonnegative integer used to identify an entry in the file table•The table size is limited, which limits the number of files that can be opened in a process (see example0.c)–Open file table – in OS•The whole system shares the table•The entries are called open file descriptions, which are records of how files are currently accessed.–File offset: the byte position in the open file description that decides where to access the file through the open file description.–Why here, why not in file descriptor table or in inode table?•Implication of the file descriptor/open file descriptions/inode table organization in UNIX.–open and create•Linear search for the first empty slot in the process file descriptor table.•allocate an open file description in the file table, which has a pointer to the inode table.–Open and create do not share file access•See example1.c •The O_APPEND flag:–Fore offset in open file table to the end of the file before each write–See example1a.c•Implication of the file descriptor/open file descriptions/inode table organization in UNIX.–dup, dup2•Duplication the file descriptor in the process file descriptor table, sharing the same open file descriptor–Collaborated file access•See example2.c–A note: when fork() duplicating the process image, what is the semantic?•Only the per-process data structures are duplicated, the system wide open file table is not changed.–Share access or not?•Predefined files:–All UNIX processes have three predefined files open: stdin, stdout, stderr. STDIN_FILENO (0), STDOUT_FILENO (1) and STDERR_FILENO (2).–cout or printf  write (STDOUT_FILENO, …)–cin or scanf  read (STDIN_FILENO, …)–See example15.c•Predefine file:–All UNIX processes have three predefined files open: stdin, stdout, stderr. STDIN_FILENO (0), STDOUT_FILENO (1) and STDERR_FILENO (2).•Predefined files behave the same as regular files–Open, close, and dup have the same semantics–What happens when we read and write to a non-exist file? See example3.c, example3b.c, example16.cpp•I/O redirection:–Close a predefined file and open a new file•The new file will be using the standard I/O/err file number: the standard I/O/err file is now redirect to/from the new file.•See example3a.c–There are complications when I/O library routines are used together with I/O system calls within a program•See example4.c •Where is the buffer for the standard output/error messages?•Order enforcer: fflush();•I/O redirection:•Execise: Given mycat1.c program, what is the best way to extend to program such that it can display multiple files listed in the command line?–When happens in read when the end of file is reached?•Pipes:–two types of pipes, named pipes and unnamed pipes–name pipes:•like a file (create a named pipe (mknod), open, read/write)•can be shared by any process•will not be discussed in detail.–Unnamed pipes:•An unnamed pipe does not associate with any physical file.•It can only be shared by related processes (descendants of a process that creates the unnamed pipe).•Created using system call pipe().•The pipe system call–syntaxint pipe(int fds[2])–semanticcreates a pipe and returns two file descriptors fds[0] and fds[1], both for reading and writinga read from fds[0] accesses the data written to fds[1] (POSIX) and a read from fds[1] accesses the data written to fds[0] (non standard).the pipe has a limited size (64K in some systems) -- cannot write to the pipe infinitely.Writing to a pipe with no reader: broken pipe errorReading from a pipe with no writer?–See example7.c, example7a.c example8.c, example9.c.•Once the processes can communicate with each other, the execution order of the processes can be controlled.–See example11.c.•The execv system call revisit:–Format: int execv(const char * path, char * argv[])•Execute the path command and wipe out ALMOST everything in the original process.•ALMOST: the file descriptor table is kept.•We can manipulate the I/O for the execution of the path command by manipulating the file descriptor table.•See example14.c•Implementing pipe in shell.E.g. /usr/bin/ps -ef | /usr/bin/more•How does the shell realize this command?–Create a process to run ps -ef–Create a process to run more–Create a pipe from ps -ef to more•the standard output of the process to run ps -ef is redirected to a pipe streaming to the process to run more•the standard input of the process to run more is redirected to be the pipe (from the process running ps –ef)–See example12.c and example13.c (need to be careful about the open files)Today’s Summary•What is the difference between open and dup?•How to redirect the standard output to file xxx?•How does read know that the end of file is reached?•When is the end of file reached in a pipe?•How to realize ‘xxx |


View Full Document

FSU COP 5570 - File Pipes

Download File Pipes
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view File Pipes and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view File Pipes 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?