1 /*
2  * Written by Sean Kelly
3  * Placed into Public Domain
4  */
5 
6 module tango.sys.win32.Process;
7 
8 
9 private
10 {
11     import tango.stdc.stdint;
12     import tango.stdc.stddef;
13 }
14 
15 extern (C):
16 
17 enum
18 {
19     P_WAIT,
20     P_NOWAIT,
21     P_OVERLAY,
22     P_NOWAITO,
23     P_DETACH,
24 }
25 
26 enum
27 {
28     WAIT_CHILD,
29     WAIT_GRANDCHILD,
30 }
31 
32 private
33 {
34     extern (C) alias void function(void*) bt_fptr;
35     extern (Windows) alias uint function(void*) btex_fptr;
36 }
37 
38 uintptr_t _beginthread(bt_fptr, uint, void*);
39 void _endthread();
40 uintptr_t _beginthreadex(void*, uint, btex_fptr, void*, uint, uint *);
41 void _endthreadex(uint);
42 
43 void abort();
44 void exit(int);
45 void _exit(int);
46 void _cexit();
47 void _c_exit();
48 
49 intptr_t cwait(int*, intptr_t, int);
50 intptr_t wait(int*);
51 
52 int getpid();
53 int system(const(char)*);
54 
55 intptr_t spawnl(int, const(char)*, const(char)*, ...);
56 intptr_t spawnle(int, const(char)*, const(char)*, ...);
57 intptr_t spawnlp(int, const(char)*, const(char)*, ...);
58 intptr_t spawnlpe(int, const(char)*, const(char)*, ...);
59 intptr_t spawnv(int, const(char)*, const(char)**);
60 intptr_t spawnve(int, const(char)*, const(char)**, const(char)**);
61 intptr_t spawnvp(int, const(char)*, const(char)**);
62 intptr_t spawnvpe(int, const(char)*, const(char)**, const(char)**);
63 
64 intptr_t execl(const(char)*, const(char)*, ...);
65 intptr_t execle(const(char)*, const(char)*, ...);
66 intptr_t execlp(const(char)*, const(char)*, ...);
67 intptr_t execlpe(const(char)*, const(char)*, ...);
68 intptr_t execv(const(char)*, const(char)**);
69 intptr_t execve(const(char)*, const(char)**, const(char)**);
70 intptr_t execvp(const(char)*, const(char)**);
71 intptr_t execvpe(const(char)*, const(char)**, const(char)**);
72 
73 int _wsystem(const(wchar_t)*);
74 
75 intptr_t _wspawnl(int, const(wchar_t)*, const(wchar_t)*, ...);
76 intptr_t _wspawnle(int, const(wchar_t)*, const(wchar_t)*, ...);
77 intptr_t _wspawnlp(int, const(wchar_t)*, const(wchar_t)*, ...);
78 intptr_t _wspawnlpe(int, const(wchar_t)*, const(wchar_t)*, ...);
79 intptr_t _wspawnv(int, const(wchar_t)*, const(wchar_t)**);
80 intptr_t _wspawnve(int, const(wchar_t)*, const(wchar_t)**, const(wchar_t)**);
81 intptr_t _wspawnvp(int, const(wchar_t)*, const(wchar_t)**);
82 intptr_t _wspawnvpe(int, const(wchar_t)*, const(wchar_t)**, const(wchar_t)**);
83 
84 intptr_t _wexecl(const(wchar_t)*, const(wchar_t)*, ...);
85 intptr_t _wexecle(const(wchar_t)*, const(wchar_t)*, ...);
86 intptr_t _wexeclp(const(wchar_t)*, const(wchar_t)*, ...);
87 intptr_t _wexeclpe(const(wchar_t)*, const(wchar_t)*, ...);
88 intptr_t _wexecv(const(wchar_t)*, const(wchar_t)**);
89 intptr_t _wexecve(const(wchar_t)*, const(wchar_t)**, const(wchar_t)**);
90 intptr_t _wexecvp(const(wchar_t)*, const(wchar_t)**);
91 intptr_t _wexecvpe(const(wchar_t)*, const(wchar_t)**, const(wchar_t)**);