mirror of
https://github.com/reactos/reactos.git
synced 2024-11-10 00:34:39 +00:00
52 lines
1.6 KiB
C
52 lines
1.6 KiB
C
|
/* $Id: exit.c,v 1.4 2002/10/29 04:45:41 rex Exp $
|
|||
|
*/
|
|||
|
/*
|
|||
|
* COPYRIGHT: See COPYING in the top level directory
|
|||
|
* PROJECT: ReactOS POSIX+ Subsystem
|
|||
|
* FILE: subsys/psx/lib/psxdll/stdlib/exit.c
|
|||
|
* PURPOSE: Terminate a process
|
|||
|
* PROGRAMMER: KJK::Hyperion <noog@libero.it>
|
|||
|
* UPDATE HISTORY:
|
|||
|
* 27/12/2001: Created
|
|||
|
*/
|
|||
|
|
|||
|
#include <ddk/ntddk.h>
|
|||
|
#include <stdlib.h>
|
|||
|
#include <psx/debug.h>
|
|||
|
|
|||
|
void exit(int status)
|
|||
|
{
|
|||
|
TODO("call all functions registered with atexit()");
|
|||
|
|
|||
|
TODO("flush all output streams, close all open streams");
|
|||
|
TODO("remove all files created by tmpfile()");
|
|||
|
|
|||
|
TODO("close all of the file descriptors, directory streams,<2C>conversion \
|
|||
|
descriptors and message catalogue descriptors");
|
|||
|
TODO("send SIGCHILD to the parent process");
|
|||
|
TODO("set parent pid of children to pid of psxss");
|
|||
|
TODO("detach each attached shared-memory segment");
|
|||
|
TODO("for each semaphore for which the calling process has set a semadj \
|
|||
|
value(), add the value to the semval of the semaphore.");
|
|||
|
TODO("if the process is a controlling process, send SIGHUP to each process \
|
|||
|
in the foreground process group...");
|
|||
|
TODO("... and disassociate the terminal from the session");
|
|||
|
TODO("if the exit causes a process group to become orphaned, and if any \
|
|||
|
member of the newly-orphaned process group is stopped, send SIGHUP and \
|
|||
|
SIGCONT to each process in the newly-orphaned process group");
|
|||
|
TODO("all open named semaphores in the calling process are closed");
|
|||
|
TODO("remove any memory locks");
|
|||
|
TODO("destroy memory mappings");
|
|||
|
TODO("close all open message queue descriptors");
|
|||
|
|
|||
|
#if 0
|
|||
|
ExitProcess(status);
|
|||
|
#endif
|
|||
|
|
|||
|
NtTerminateProcess(NtCurrentProcess(), status);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/* EOF */
|
|||
|
|