is current executable running setuid or setgid
() function returns 1 if the
process was made setuid or setgid as the result of the last or other previous
() system calls. Otherwise it returns
This system call exists so that library routines (inside libtermlib, libc, or
other libraries) can guarantee safe behavior when used inside setuid or setgid
programs. Some library routines may be passed insufficient information and
hence not know whether the current program was started setuid or setgid
because higher level calling code may have made changes to the uid, euid, gid,
or egid. Hence these low-level library routines are unable to determine if
they are being run with elevated or normal privileges.
In particular, it is wise to use this call to determine if a pathname returned
() call may safely be used to
() the specified file. Quite often this
is not wise because the status of the effective uid is not known.
() system call's result is
unaffected by calls to
(), or other such calls. In case of a
(), the child process inherits the same
The status of
() is only affected by
(). If a child process executes a new
executable file, a new issetugid status will be determined. This status is
based on the existing process's uid, euid, gid, and egid permissions and on
the modes of the executable file. If the new executable file modes are setuid
or setgid, or if the existing process is executing the new image with uid !=
euid or gid != egid, the new process will be considered issetugid.
() function is always
successful, and no return value is reserved to indicate an error.
() function call first appeared
in OpenBSD 2.0