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.