/*------------------------------------------------------------------*/ /* testlowlevelin.c */ /* Author: Bob Dondero */ /* The open, read, and close system calls. */ /*------------------------------------------------------------------*/ #include #include #include #include int main(int argc, char *argv[]) { int iFd; int iRet; ssize_t iBytesRead; ssize_t iTotalBytesRead; char pcBuffer[9]; int i; /* Read "somedata\n" from a file named tempfile. */ iFd = open("tempfile", O_RDONLY); if (iFd == -1) {perror(argv[0]); return EXIT_FAILURE; } iTotalBytesRead = 0; while (iTotalBytesRead < 9) { iBytesRead = read(iFd, pcBuffer + iTotalBytesRead, (size_t)(9 - iTotalBytesRead)); if (iBytesRead == -1) {perror(argv[0]); return EXIT_FAILURE;} iTotalBytesRead += iBytesRead; } iRet = close(iFd); if (iRet == -1) {perror(argv[0]); return EXIT_FAILURE; } /* Print the data to verify that the previous worked. */ for (i = 0; i < 9; i++) putchar(pcBuffer[i]); return 0; } /*------------------------------------------------------------------*/ /* Sample execution: $ gcc -Wall -ansi -pedantic testlowlevelin.c -o testlowlevelin $ testlowlevelin somedata */