C programming session 14

337 views

Published on

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
337
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
24
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Begin the session by explaining the objectives of the session.
  • Give examples where low-level and I/O can be used.
  • Use this slide to test the student’s understanding on high-level and low-level I/O.
  • Give a scenario and ask the students which type of I/O they would use in the situation. Also, ask them to justify their answers.
  • Tell the students that the value returned by the open() function can be used to check whether a file has been opened successfully.
  • The close() function releases the resources occupied. It also flushes out the data from the streams before closing them.
  • If successful, the read() functions returns the number of characters read.
  • If successful, the write function returns the number of bytes written into the file. This number should be equal to the size parameter of the write function.
  • Use this slide to test the student’s understanding on low-level I/O functions.
  • Use this and the next slide to summarize the session.
  • C programming session 14

    1. 1. Slide 1 of 22Ver. 1.0 Programming in C Objectives In this session, you will learn to: Differentiate between high-level and low-level input/output Work with low-level input/output functions Use random access in files
    2. 2. Slide 2 of 22Ver. 1.0 Programming in C Differentiating Between High-Level and Low-Level Input/Output In C, files and devices can be accessed by using two groups of functions: High-level I/O or stream-level I/O Low-level I/O
    3. 3. Slide 3 of 22Ver. 1.0 Programming in C Difference Between High-level I/O and Low-level I/O High-level or Stream-level I/O: Is more flexible and convenient. Hides complexity from the programmer. Is slower. Low-level I/O: Provides direct access to files and devices. Is complex (buffer management is to be done by the programmer). Is faster. Uses a file descriptor to track the status of the file.
    4. 4. Slide 4 of 22Ver. 1.0 Programming in C Practice: 8.1 Which of the following statements is true? In C, there are many interfaces between a program and peripheral devices. A file descriptor is a non-negative integer. When you perform an operation on a file, the system uses the name of the file to identify it.
    5. 5. Slide 5 of 22Ver. 1.0 Programming in C Practice: 8.1 (Contd.) Solution: A file descriptor is a non-negative integer.
    6. 6. Slide 6 of 22Ver. 1.0 Programming in C Low-level I/O functions are used for: Accessing files and devices directly. Reading binary files in large chunks. Performing I/O operations quickly and efficiently. Uses of Low-Level Input/Output
    7. 7. Slide 7 of 22Ver. 1.0 Programming in C The low-level I/O system in C provides functions that can be used to access files and devices. The basic low-level I/O functions are: open() close() read() write() Working with Low-Level Input/Output Functions
    8. 8. Slide 8 of 22Ver. 1.0 Programming in C The open() function: Is used to open an existing file or create a new file. Returns a file descriptor for the file name passed to it. Has the following syntax: int open(char *filename, int flags, int perms ); The open() Function
    9. 9. Slide 9 of 22Ver. 1.0 Programming in C The close() function: Closes the file that was opened using the open() function. Takes the file descriptor as a parameter to close the file. Returns 0 on success and -1 in case of an error. Has the following syntax: int close(int filedes); The close() Function
    10. 10. Slide 10 of 22Ver. 1.0 Programming in C The read() function: Reads data from a file. Starts reading a file from the current file position. Has the following syntax: int read (int filedes, char *buffer, int size); The read() function
    11. 11. Slide 11 of 22Ver. 1.0 Programming in C The write() function: Enables a user to write contents to a file. Has the following syntax: int write (int filedes, char *buffer, int size); The write() function
    12. 12. Slide 12 of 22Ver. 1.0 Programming in C Practice: 8.2 1. Which of the following statements is true? a. At end-of-file, if a function is called repeatedly, it will give error. b. In a read() function, the value of zero indicates end-of-file. 2. What will happen if you do not call the write() function in a loop?
    13. 13. Slide 13 of 22Ver. 1.0 Programming in C Solution: 1. In a read() function, the value of zero indicates end-of-file. 2. If you do not call write() function in a loop then the entire data would not be written. Practice: 8.2 (Contd.)
    14. 14. Slide 14 of 22Ver. 1.0 Programming in C Error Handling: Some of the low-level I/O functions return error flags when they fail to perform a specified task. You can find these types of errors using a variable, errno. The following table lists some values of errno that are common to the open(), close(), read(), and write() functions. Error Handling errno values Description EACCES Specifies that the program has failed to access one of the directories in the file. ENAMETOOLONG Indicates that the file name is too long. ENOSPC Specifies that the disc is out of space and the file can not be created. EIO Specifies that there was a hardware error. EBADF Specifies that the file descriptor passed to read, write, or close the file is invalid.
    15. 15. Slide 15 of 22Ver. 1.0 Programming in C There are certain errno values that are specific to the open() function, which are shown with the help of the following table. errno values Description EEXIST Specifies that if File already exists, and O_CREAT and O_EXCL are set, then opening the file would conflict with the existing file and the file will not open. EISDIR Specifies that the file is actually a directory. ENOENT Specifies that some of the file components do not exist. EMFILE Specifies that too many files are open. EROFS Specifies that the file is on a read only systembut either one of the write permissions O_WRONLY, O_RDWR, or O_TRUNC is set. Error Handling (Contd.)
    16. 16. Slide 16 of 22Ver. 1.0 Programming in C There are certain errno values that are specific to the write() function, which are shown with the help of the following table. errno values Description EFBIG Specifies that the file will become too large if the data is written on it. EINTR Specifies that the write operation is temporarily interrupted. Error Handling (Contd.)
    17. 17. Slide 17 of 22Ver. 1.0 Programming in C The read and write operations on files are usually sequential in nature. Random access permits non-sequential file access so that a file can be read or written out of sequence. Random access in low-level file routines is performed using the lseek() function. Using Random Access Seek in Files
    18. 18. Slide 18 of 22Ver. 1.0 Programming in C The lseek() function: Returns the file position, as measured in bytes from the beginning of the file. Has the following syntax: long lseek (int filedes, long offset, int origin); The lseek() Function
    19. 19. Slide 19 of 22Ver. 1.0 Programming in C The following table lists the various values of the third parameter (origin). The lseek() Function (Contd.) Values for origin Description SEEK_SET or 0 Specifies that the offset is relative to the beginning of the file. The offset can only be positive. SEEK_CUR or 1 Specifies that the offset is relative to the current position. The offset can be positive or negative. SEEK_END or 2 Specifies that the offset is relative to the end of the file. The offset can be positive or negative.
    20. 20. Slide 20 of 22Ver. 1.0 Programming in C The following table lists some instructions for moving to the end or beginning of a file. The lseek() Function (Contd.) Instruction Function used To get to the end of a file lseek(filedes,0,2); To return to the beginning of a file lseek(filedes,0,0);
    21. 21. Slide 21 of 22Ver. 1.0 Programming in C Summary In this session, you learned that: In C, files and devices can be accessed by using high-level I/O or stream-level I/O and low-level I/O. Low-level I/O functions are those, which provide direct access to files and peripheral devices. A file descriptor is a non-negative integer, which is returned by the open() function and is used in read() and write() functions. It tells about the permission to access the file. Low-level input/output functions are used for the following purposes: Accessing files and devices directly Reading the binary files in large chunks Performing I/O operations quickly and efficiently The open() function is used to open or create a file.
    22. 22. Slide 22 of 22Ver. 1.0 Programming in C Summary (Contd.) The close() function is used for closing the file. The read() function reads the existing file up to specified size and stores it into a character array. The write() function writes on the file taking input from a character array up to specified size. Most of the low-level I/O functions throw errors during file handling. errno is the variable that tells about the error occurred during a low-level I/O operation. Files and devices can also be accessed randomly. The lseek() function is used to place the file position to the desired place. The lseek() function do not require to read or write the file for positioning it.

    ×