system(3c) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

system(3c)

system(3C)               Standard C Library Functions               system(3C)

NAME
       system - issue a shell command

SYNOPSIS
       #include <stdlib.h>

       int system(const char *string);

DESCRIPTION
       The  system() function causes string to be given to the shell as input,
       as if string had been typed as a command at  a  terminal.  The  invoker
       waits  until  the  shell has completed, then returns the exit status of
       the shell in the format specified by waitpid(3C).


       If string is a null pointer, system() checks if the shell exists and is
       executable. If the shell is  available,  system()  returns  a  non-zero
       value;  otherwise,  it returns 0. The standard to which the caller con‐
       forms determines which shell is used. See standards(7).


       The system() function sets the SIGINT and SIGQUIT  signals  to  be  ig‐
       nored,  and  blocks  the  SIGCHLD  signal for the calling thread, while
       waiting for the command to terminate. The system()  function  does  not
       affect  the  termination  status  of any child of the calling processes
       other than the process it creates.


       The termination status of the process created by the system()  function
       is  not affected by the actions of other threads in the calling process
       (it is invisible to wait(3C)) or by the disposition of the SIGCHLD sig‐
       nal in the calling process, even if it is set to be ignored. No SIGCHLD
       signal is sent to the process containing the calling  thread  when  the
       command terminates.

RETURN VALUES
       The  system()  function  executes  posix_spawn(3C)  to  create  a child
       process running the shell that in turn executes the commands in string.
       If posix_spawn() fails, system() returns −1 and sets errno to  indicate
       the error; otherwise the exit status of the shell is returned.

ERRORS
       The  system() function may set errno values as described by fork(2), in
       particular:

       EAGAIN    A resource control or limit on the total number of processes,
                 tasks or  LWPs  under  execution  by  a  single  user,  task,
                 project,  or  zone  has been exceeded, or the total amount of
                 system memory available is temporarily insufficient to dupli‐
                 cate this process.


       ENOMEM    There is not enough swap space.


       EPERM     The {PRIV_PROC_FORK} privilege is not asserted in the  effec‐
                 tive set of the calling process.


USAGE
       The  system()  function  manipulates the signal handlers for SIGINT and
       SIGQUIT. It is therefore not safe to call system() in  a  multithreaded
       process, since some other thread that manipulates these signal handlers
       and  a  thread that concurrently calls system() can interfere with each
       other in a destructive manner. If, however, no such other thread is ac‐
       tive, system() can safely be called concurrently from multiple threads.
       See popen(3C) for an alternative to system() that is thread-safe.

ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE  TYPEAT‐
       TRIBUTE  VALUE  _ Interface StabilityCommitted _ MT-LevelUnsafe _ Stan‐
       dardSee standards(7).


SEE ALSO
       ksh(1), sh(1), popen(3C), posix_spawn(3C), wait(3C),  waitpid(3C),  at‐
       tributes(7), standards(7)

Oracle Solaris 11.4               14 Dec 2006                       system(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3