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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access