/*********************************************************************** * * * This software is part of the ast package * * Copyright (c) 1985-2012 AT&T Intellectual Property * * Copyright (c) 2020-2022 Contributors to ksh 93u+m * * and is licensed under the * * Eclipse Public License, Version 2.0 * * * * A copy of the License is available at * * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html * * (with md5 checksum 84283fa8859daf213bdda5a9f8d1be1d) * * * * Glenn Fowler * * David Korn * * Phong Vo * * * ***********************************************************************/ #include #if _lib_setsid NoN(setsid) #else #include #include /* * become new process group leader and drop control tty */ pid_t setsid(void) { int pg; #ifdef TIOCNOTTY int fd; #endif /* * become a new process group leader */ if ((pg = getpid()) == getpgrp()) { errno = EPERM; return(-1); } setpgid(pg, pg); #ifdef TIOCNOTTY /* * drop the control tty */ if ((fd = open("/dev/tty", O_RDONLY|O_cloexec)) >= 0) { ioctl(fd, TIOCNOTTY, 0); close(fd); } #endif return(pg); } #endif