Warning: main(/www/www/htdocs/style/globals.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/s/setpgid.html on line 1
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/globals.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/s/setpgid.html on line 1
Warning: main(/www/www/htdocs/style/header.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/s/setpgid.html on line 8
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/header.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/s/setpgid.html on line 8
Join or create a process group
#include <process.h>
int setpgid( pid_t pid,
pid_t pgid );
- pid
- 0, or the ID of the process whose process group you want to set.
- pgid
- 0, or the process group ID that you want to join or create.
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
The setpgid() function is used either to join an existing
process group or to create a new process group within the session of the
calling process. The process group ID of a session leader doesn't
change.
The following definitions are worth mentioning:
- Process
- An executing instance of a program,
identified by a nonnegative integer called a process ID.
- Process group
- A collection of
one or more processes, with a unique process group ID. A process group ID
is a positive integer.
On successful completion, the process group ID of the
process with a process ID matching pid is set to
pgid. As a special case, you can specify either pid or
pgid as zero, meaning that the process ID of
the calling process is to be used.
- 0
- Success.
- -1
- An error occurred;
errno is set.
- EACCES
- The value of the pid argument matches the process ID of a
child process of the calling process, and the child process has
successfully executed one of the exec*() functions.
- EINVAL
- The value of pgid is less than zero.
- ENOSYS
- The setpgid() function isn't supported by this
implementation (included for POSIX compatibility).
- EPERM
- The calling process doesn't have sufficient privilege to set the
process group id pgid on process pid.
- ESRCH
- The process pid doesn't exist.
/*
* The process joins process group 0.
*/
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <process.h>
int main( void )
{
if( setpgid( getpid(), 0 ) == -1 ) {
perror( "setpgid" );
}
printf( "%d belongs to process group %d\n",
getpid(), getpgrp() );
return EXIT_SUCCESS;
}
POSIX 1003.1
Safety: | |
Cancellation point |
No |
Interrupt handler |
No |
Signal handler |
Yes |
Thread |
Yes |
errno,
getpgid(),
getsid(),
setsid()
Warning: main(/www/www/htdocs/style/footer.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/s/setpgid.html on line 208
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/footer.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/s/setpgid.html on line 208