summaryrefslogtreecommitdiff
path: root/vendor/thecodingmachine/safe/generated/exec.php
blob: e9a40e08be3c7cd39c536a0e1337fe7f3270fdf4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<?php

namespace Safe;

use Safe\Exceptions\ExecException;

/**
 * proc_get_status fetches data about a
 * process opened using proc_open.
 *
 * @param resource $process The proc_open resource that will
 * be evaluated.
 * @return array An array of collected information on success. The returned array contains the following elements:
 *
 *
 *
 *
 * elementtypedescription
 *
 *
 *
 * command
 * string
 *
 * The command string that was passed to proc_open.
 *
 *
 *
 * pid
 * int
 * process id
 *
 *
 * running
 * bool
 *
 * TRUE if the process is still running, FALSE if it has
 * terminated.
 *
 *
 *
 * signaled
 * bool
 *
 * TRUE if the child process has been terminated by
 * an uncaught signal. Always set to FALSE on Windows.
 *
 *
 *
 * stopped
 * bool
 *
 * TRUE if the child process has been stopped by a
 * signal. Always set to FALSE on Windows.
 *
 *
 *
 * exitcode
 * int
 *
 * The exit code returned by the process (which is only
 * meaningful if running is FALSE).
 * Only first call of this function return real value, next calls return
 * -1.
 *
 *
 *
 * termsig
 * int
 *
 * The number of the signal that caused the child process to terminate
 * its execution (only meaningful if signaled is TRUE).
 *
 *
 *
 * stopsig
 * int
 *
 * The number of the signal that caused the child process to stop its
 * execution (only meaningful if stopped is TRUE).
 *
 *
 *
 *
 *
 * @throws ExecException
 *
 */
function proc_get_status($process): array
{
    error_clear_last();
    $result = \proc_get_status($process);
    if ($result === false) {
        throw ExecException::createFromPhpError();
    }
    return $result;
}


/**
 * proc_nice changes the priority of the current
 * process by the amount specified in increment. A
 * positive increment will lower the priority of the
 * current process, whereas a negative increment
 * will raise the priority.
 *
 * proc_nice is not related to
 * proc_open and its associated functions in any way.
 *
 * @param int $increment The new priority value, the value of this may differ on platforms.
 *
 * On Unix, a low value, such as -20 means high priority
 * wheras a positive value have a lower priority.
 *
 * For Windows the increment parameter have the
 * following meanings:
 * @throws ExecException
 *
 */
function proc_nice(int $increment): void
{
    error_clear_last();
    $result = \proc_nice($increment);
    if ($result === false) {
        throw ExecException::createFromPhpError();
    }
}


/**
 * system is just like the C version of the
 * function in that it executes the given
 * command and outputs the result.
 *
 * The system call also tries to automatically
 * flush the web server's output buffer after each line of output if
 * PHP is running as a server module.
 *
 * If you need to execute a command and have all the data from the
 * command passed directly back without any interference, use the
 * passthru function.
 *
 * @param string $command The command that will be executed.
 * @param int $return_var If the return_var argument is present, then the
 * return status of the executed command will be written to this
 * variable.
 * @return string Returns the last line of the command output on success.
 * @throws ExecException
 *
 */
function system(string $command, int &$return_var = null): string
{
    error_clear_last();
    $result = \system($command, $return_var);
    if ($result === false) {
        throw ExecException::createFromPhpError();
    }
    return $result;
}