UNIX commands in C

Ian Collier imc at prg.ox.ac.uk
Sat May 4 21:34:38 AEST 1991


In article <REARL.91May1113957 at nutrimat.gnu.ai.mit.edu>, rearl at gnu.ai.mit.edu (Robert Earl) wrote:
>In article <24527 at well.sf.ca.us> ron at well.sf.ca.us (Ronald Hayden) writes:
>|   #include <stdio.h>
>|
>|   main ()
>|   {
>|    printf("\nTesting the UNIX 'who' command --\n");
>|    system("who");
>|    printf("\nDone.\n");
>|    exit(1);
>|   }

>Since system() [and popen()] does an implicit fork, it's good practice
>to explicitly flush output buffers before you call this routine;

[etc]

Also, that should really be "/bin/who" rather than just "who", unless
you are going to set the path explicitly in the program. Otherwise the
program could break on someone else's machine if they do not have /bin
in their path (unlikely) or if some other random program called "who"
appears before /bin/who in the path. If you do this in an suid program
be absolutely certain to specify the path, or else this creates a
security loophole.

Ian Collier
Ian.Collier at prg.ox.ac.uk | imc at ecs.ox.ac.uk



More information about the Comp.lang.c mailing list