The contents of this page are licensed under the following license
Operating System

Copy files
 #include <stdio.h>
 #include <fcntl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <stdlib.h>

 int main(int argc, char* argv[])
 {
   char buf[1024];
   int fd_one, fd_two;
   int count;

   if (argc < 3)
   {
     printf("usage: %s <src_file> <dest_file>\n", argv[0]);
     exit(1);
   }

   /* open source file  */
   fd_one = open(argv[1], O_RDONLY);
   if (fd_one == -1)
   {
     perror("Error file open src_file");
     exit(1);
   }

   /* open destination file */
   fd_two = open(argv[2], O_WRONLY | O_CREAT, 0644);
   if (fd_two == -1)
   {
     perror("Error file open dest_file");
     exit(1);
   }

   /* copy source file data */
   do
   {
     count = read(fd_one, buf, 1024);
     if (count > 0) write(fd_two, buf, count);
   } while(count > 0);

   /* close files */
   close(fd_one);
   close(fd_two);

   return 0;
 }

File size
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>

 int main(int argc, char* argv[])
 {
   int fd;
   int size;

   if (argc < 2)
   {
     printf("usage: %s <file_name>\n", argv[0]);
     exit(1);
   }

   /* open file */
   fd = open(argv[1], O_RDONLY);
   if (fd == -1)
   {
     perror("Error open file");
     exit(1);
   }

   /* check file size */
   size = lseek(fd, 0, SEEK_END);
   printf("%s = %dB\n", argv[0], size);

   /* close file */
   close(fd);
 }

Characters, words and lines counter
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>

 #define BUF_SIZE 1024

 int main(int argc, char* argv[])
 {
   int fd;
   int size;
   char buf[BUF_SIZE];
   short space=0;
   int chars=0, words=0, lines=0, foo;

   if (argc < 2)
   {
     printf("usage: %s <file_name>\n", argv[0]);
     exit(1);
   }

   /* open file */
   fd = open(argv[1], O_RDONLY);
   if (fd == -1)
   {
     perror("Error open file");
     exit(1);
   }

   /* count lines, words and characters */
   while((size=read(fd, buf, BUF_SIZE))>0)
   {
     for (foo=0; foo<size; foo++)
     {
       if (buf[foo] == '\n') lines++;
       if (isascii(buf[foo]))
       {
         chars++;
         if (chars == 1) words = 1;
         if (space && !isspace(buf[foo])) { words++; space=0; }
       }
       if (isspace(buf[foo])) space=1;
     }
   }

   printf("%s: %d\t%d\t%d\n", argv[1], lines, words, chars);

   /* close file */
   close(fd);
}

October, 16th 2006 © Michał Kalewski