When Only C Will Do

There are some system administrative tasks that cannot be done from a shell script or even from Perl. In such cases, it will be necessary to write a program in a programming language such as C (or whatever you like). However, many of the programming principles we’ve considered so far still apply.

As a first example, consider this small program, which is a version of the yes command created for a system that lacks it:

/* yes.c */ 
#include <stdio.h>

main(argc,argv) 
int argc; 
char *argv[]; 
{ 
while(1)                   /* repeat forever */ 
   if(argc>=2)             /* if there was an argument */ 
      puts(argv[1]);       /* repeat it */ 
   else 
      puts(argv[0]);       /* otherwise use command's name */ 
}

This command works a little differently than the standard yes command in that if no argument is given to the command, it repeats the name it was invoked under rather than “y” by default (if an argument is given, that argument is repeated indefinitely). This allows multiple hard links to be made to the same executable file: yes and no, for example. In virtually every case, repeating “yes” is equivalent to repeating “y”.

This version of yes illustrates that C programming need not be incredibly complex and time-consuming, and the program made users on this system quite happy. This program could have been written in Perl, but C is actually easier and more straightforward.

The next C program, designed for an AIX system, illustrates an operation that is best performed in C. This program, setp, assigns a fixed (unvarying) priority ...

Get Essential System Administration, 3rd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.