GRASS Programmer's Manual  6.5.svn(2014)-r66266
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
fork.c
Go to the documentation of this file.
1 #include <grass/config.h>
2 
3 #include <unistd.h>
4 #include <grass/gis.h>
5 
6 /*************************************************************
7  * G_fork()
8  *
9  * Issue a system fork() call and protect the child from all
10  * signals (which it does by changing the process group for the child)
11  *
12  * returns:
13  * -1 fork failed.
14  * 0 child
15  * >0 parent
16  ************************************************************/
17 
18 int G_fork(void)
19 {
20 #ifdef __MINGW32__
21  return -1;
22 #else /* __MINGW32__ */
23  int pid;
24 
25  pid = fork();
26 
27  /*
28  * change the process group for the child (pid == 0)
29  * note: we use the BSD calling sequence, since
30  * it will work ok for ATT call which has no arguments
31  */
32  if (pid == 0)
33 #ifdef SETPGRP_VOID
34  setpgrp();
35 #else
36  setpgrp(0, getpid());
37 #endif
38 
39  return pid;
40 
41 #endif /* __MINGW32__ */
42 
43 }
int G_fork(void)
Definition: fork.c:18