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

개요

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

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
       ignored, 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
       active, 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),
       attributes(7), standards(7)



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