Provided by: libexecs-dev_1.1-1_amd64 bug

NAME

       system_nosh,  system_execs  -  execute  a command with its arguments from a string without
       using a shell

SYNOPSIS

       #include <stdlib.h>
       #include <execs.h>

       int system_nosh(const char *command);
       int system_execsp(const char *command);

       int system_execsa(const char *command);
       int system_execs(const char *path, char const *command);

       int system_execsrp(const char *command, int redir[3]);

       int system_execsra(const char *command, int redir[3]);
       int system_execsr(const char *path, char const *command, int redir[3]);

       These functions are provided by libexecs. Link with -lexecs.

DESCRIPTION

       system_nosh is an  almost  drop  in  replacement  for  system(3)  provided  by  the  libc.
       system_nosh  parses  the  command  string  and  runs the command directly, without using a
       shell.  (system_execsp and system_nosh are synonyms).
       Command arguments in args are delimited by space characters (blank, tabs  or  new  lines).
       Single or double quotes can be used to delimitate command arguments including spaces and a
       non quoted backslash (\) is the escape character to protect the next char. The  executable
       file is sought using the PATH environment variable as explained for execlp(3).
       system_execs requires the path of the executable to be specified as its first parameter so
       it does not use the PATH environment variable.
       system_execsa does not use the  PATH  variable,  argv[0]  must  be  specified  as  a  full
       pathname.
       system_execsrp  and  system_execsr  works  as  their couterparts without the 'r', but they
       permit the redirection of standard input, output and error streams. Their  last  parameter
       is  an  array  of three integers.  The standard input of the command will be redirected to
       redir[0] if it is positive, the standard output to redir[1] if  it  is  not  negative  and
       different  from 1, the standard error to redir[2] if it is not negative and different from
       2.
       system_execsra does not use the PATH  variable,  argv[0]  must  be  specified  as  a  full
       pathname.
       All  these functions can run sequences of commands separated by semicolons (;).  The first
       command returning a non-zero exit status breaks the sequence.

RETURN VALUE

       These functions have the same return values of  system(3).  When  running  a  sequence  of
       commands,  it  returns the exit status of the first command returning a non-zero value. If
       the return value is zero it means that all the commands of the sequence succeeded.

EXAMPLE

       The following program shows the usage of system_nosh:

       #include <stdio.h>
       #include <unistd.h>
       #include <execs.h>

       #define BUFLEN 1024
       int main(int argc, char *argv)
       {
            char buf[BUFLEN];
            printf("type in a command and its arguments, e.g. 'ls -l'\n");
            while (fgets(buf, BUFLEN, stdin) != NULL) {
                 printf("Command: '%s' \n",buf);
                 system_nosh(buf);
                 printf("Command done\n");
            }
       }

SEE ALSO

       system(3),execs(3),s2argv(3)

BUGS

       Bug reports should be addressed to <info@virtualsquare.org>

AUTHOR

       Renzo Davoli <renzo@cs.unibo.it>