| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
SDL3.Sys.Bindgen.Process.Unsafe
Synopsis
- sDL_CreateProcess :: PtrConst (PtrConst CChar) -> CBool -> IO (Ptr SDL_Process)
- sDL_CreateProcessWithProperties :: SDL_PropertiesID -> IO (Ptr SDL_Process)
- sDL_GetProcessProperties :: Ptr SDL_Process -> IO SDL_PropertiesID
- sDL_ReadProcess :: Ptr SDL_Process -> Ptr CSize -> Ptr CInt -> IO (Ptr Void)
- sDL_GetProcessInput :: Ptr SDL_Process -> IO (Ptr SDL_IOStream)
- sDL_GetProcessOutput :: Ptr SDL_Process -> IO (Ptr SDL_IOStream)
- sDL_KillProcess :: Ptr SDL_Process -> CBool -> IO CBool
- sDL_WaitProcess :: Ptr SDL_Process -> CBool -> Ptr CInt -> IO CBool
- sDL_DestroyProcess :: Ptr SDL_Process -> IO ()
Documentation
Arguments
| :: PtrConst (PtrConst CChar) |
|
| -> CBool |
|
| -> IO (Ptr SDL_Process) |
Create a new process.
The path to the executable is supplied in args[0]. args[1..N] are additional arguments passed on the command line of the new process, and the argument list should be terminated with a NULL, e.g.:
const char *args[] = { "myprogram", "argument", NULL };
Setting pipe_stdio to true is equivalent to setting and sDL_PROP_PROCESS_CREATE_STDIN_NUMBER to sDL_PROP_PROCESS_CREATE_STDOUT_NUMBERSDL_PROCESS_STDIO_APP, and will allow the use of SDL_ReadProcess() or SDL_GetProcessInput() and SDL_GetProcessOutput().
See SDL_CreateProcessWithProperties() for more details.
- Returns
- the newly created and running process, or NULL if the process couldn't be created.
- Thread safety
- It is safe to call this function from any thread.
- See also
sDL_CreateProcessWithProperties,sDL_GetProcessProperties,sDL_ReadProcess,sDL_GetProcessInput,sDL_GetProcessOutput,sDL_KillProcess,sDL_WaitProcess,sDL_DestroyProcess- C declaration
SDL_CreateProcess, defined atSDL3/SDL_process.h 106:43
Since: 3.2.0
sDL_CreateProcessWithProperties Source #
Arguments
| :: SDL_PropertiesID |
|
| -> IO (Ptr SDL_Process) |
Create a new process with the specified properties.
These are the supported properties:
: an array of strings containing the program to run, any arguments, and a NULL pointer, e.g. const char *args[] = { "myprogram", "argument", NULL }. This is a required property.sDL_PROP_PROCESS_CREATE_ARGS_POINTER: an SDL_Environment pointer. If this property is set, it will be the entire environment for the process, otherwise the current environment is used.sDL_PROP_PROCESS_CREATE_ENVIRONMENT_POINTER: a UTF-8 encoded string representing the working directory for the process, defaults to the current working directory.sDL_PROP_PROCESS_CREATE_WORKING_DIRECTORY_STRING: ansDL_PROP_PROCESS_CREATE_STDIN_NUMBERSDL_ProcessIOvalue describing where standard input for the process comes from, defaults toSDL_PROCESS_STDIO_NULL.: an SDL_IOStream pointer used for standard input whensDL_PROP_PROCESS_CREATE_STDIN_POINTERis set tosDL_PROP_PROCESS_CREATE_STDIN_NUMBERSDL_PROCESS_STDIO_REDIRECT.: ansDL_PROP_PROCESS_CREATE_STDOUT_NUMBERSDL_ProcessIOvalue describing where standard output for the process goes to, defaults toSDL_PROCESS_STDIO_INHERITED.: an SDL_IOStream pointer used for standard output whensDL_PROP_PROCESS_CREATE_STDOUT_POINTERis set tosDL_PROP_PROCESS_CREATE_STDOUT_NUMBERSDL_PROCESS_STDIO_REDIRECT.: ansDL_PROP_PROCESS_CREATE_STDERR_NUMBERSDL_ProcessIOvalue describing where standard error for the process goes to, defaults toSDL_PROCESS_STDIO_INHERITED.: an SDL_IOStream pointer used for standard error whensDL_PROP_PROCESS_CREATE_STDERR_POINTERis set tosDL_PROP_PROCESS_CREATE_STDERR_NUMBERSDL_PROCESS_STDIO_REDIRECT.: true if the error output of the process should be redirected into the standard output of the process. This property has no effect ifsDL_PROP_PROCESS_CREATE_STDERR_TO_STDOUT_BOOLEANis set.sDL_PROP_PROCESS_CREATE_STDERR_NUMBER: true if the process should run in the background. In this case the default input and output issDL_PROP_PROCESS_CREATE_BACKGROUND_BOOLEANSDL_PROCESS_STDIO_NULLand the exitcode of the process is not available, and will always be 0.: a string containing the program to run and any parameters. This string is passed directly tosDL_PROP_PROCESS_CREATE_CMDLINE_STRINGCreateProcesson Windows, and does nothing on other platforms. This property is only important if you want to start programs that does non-standard command-line processing, and in most cases usingis sufficient.sDL_PROP_PROCESS_CREATE_ARGS_POINTER
On POSIX platforms, wait() and waitpid(-1, ...) should not be called, and SIGCHLD should not be ignored or handled because those would prevent SDL from properly tracking the lifetime of the underlying process. You should use SDL_WaitProcess() instead.
- Returns
- the newly created and running process, or NULL if the process couldn't be created.
- Thread safety
- It is safe to call this function from any thread.
- See also
sDL_CreateProcess,sDL_GetProcessProperties,sDL_ReadProcess,sDL_GetProcessInput,sDL_GetProcessOutput,sDL_KillProcess,sDL_WaitProcess,sDL_DestroyProcess- C declaration
SDL_CreateProcessWithProperties, defined atSDL3/SDL_process.h 227:43
Since: 3.2.0
sDL_GetProcessProperties Source #
Arguments
| :: Ptr SDL_Process |
|
| -> IO SDL_PropertiesID |
Get the properties associated with a process.
The following read-only properties are provided by SDL:
: the process ID of the process.sDL_PROP_PROCESS_PID_NUMBER: an SDL_IOStream that can be used to write input to the process, if it was created withsDL_PROP_PROCESS_STDIN_POINTERset tosDL_PROP_PROCESS_CREATE_STDIN_NUMBERSDL_PROCESS_STDIO_APP.: a non-blocking SDL_IOStream that can be used to read output from the process, if it was created withsDL_PROP_PROCESS_STDOUT_POINTERset tosDL_PROP_PROCESS_CREATE_STDOUT_NUMBERSDL_PROCESS_STDIO_APP.: a non-blocking SDL_IOStream that can be used to read error output from the process, if it was created withsDL_PROP_PROCESS_STDERR_POINTERset tosDL_PROP_PROCESS_CREATE_STDERR_NUMBERSDL_PROCESS_STDIO_APP.: true if the process is running in the background.sDL_PROP_PROCESS_BACKGROUND_BOOLEAN
- Returns
- a valid property ID on success or 0 on failure; call SDL_GetError() for more information.
- Thread safety
- It is safe to call this function from any thread.
- See also
sDL_CreateProcess,sDL_CreateProcessWithProperties- C declaration
SDL_GetProcessProperties, defined atSDL3/SDL_process.h 271:46
Since: 3.2.0
Arguments
| :: Ptr SDL_Process |
|
| -> Ptr CSize |
|
| -> Ptr CInt |
|
| -> IO (Ptr Void) |
Read all the output from a process.
If a process was created with I/O enabled, you can use this function to read the output. This function blocks until the process is complete, capturing all output, and providing the process exit code.
The data is allocated with a zero byte at the end (null terminated) for convenience. This extra byte is not included in the value reported via datasize.
The data should be freed with SDL_free().
- Returns
- the data or NULL on failure; call SDL_GetError() for more information.
- Thread safety
- This function is not thread safe.
- See also
sDL_CreateProcess,sDL_CreateProcessWithProperties,sDL_DestroyProcess- C declaration
SDL_ReadProcess, defined atSDL3/SDL_process.h 308:36
Since: 3.2.0
Arguments
| :: Ptr SDL_Process |
|
| -> IO (Ptr SDL_IOStream) |
Get the SDL_IOStream associated with process standard input.
The process must have been created with SDL_CreateProcess() and pipe_stdio set to true, or with SDL_CreateProcessWithProperties() and set to sDL_PROP_PROCESS_CREATE_STDIN_NUMBERSDL_PROCESS_STDIO_APP.
Writing to this stream can return less data than expected if the process hasn't read its input. It may be blocked waiting for its output to be read, if so you may need to call SDL_GetProcessOutput() and read the output in parallel with writing input.
- Returns
- the input stream or NULL on failure; call SDL_GetError() for more information.
- Thread safety
- It is safe to call this function from any thread.
- See also
sDL_CreateProcess,sDL_CreateProcessWithProperties,sDL_GetProcessOutput- C declaration
SDL_GetProcessInput, defined atSDL3/SDL_process.h 334:44
Since: 3.2.0
Arguments
| :: Ptr SDL_Process |
|
| -> IO (Ptr SDL_IOStream) |
Get the SDL_IOStream associated with process standard output.
The process must have been created with SDL_CreateProcess() and pipe_stdio set to true, or with SDL_CreateProcessWithProperties() and set to sDL_PROP_PROCESS_CREATE_STDOUT_NUMBERSDL_PROCESS_STDIO_APP.
Reading from this stream can return 0 with SDL_GetIOStatus() returning SDL_IO_STATUS_NOT_READY if no output is available yet.
- Returns
- the output stream or NULL on failure; call SDL_GetError() for more information.
- Thread safety
- It is safe to call this function from any thread.
- See also
sDL_CreateProcess,sDL_CreateProcessWithProperties,sDL_GetProcessInput- C declaration
SDL_GetProcessOutput, defined atSDL3/SDL_process.h 358:44
Since: 3.2.0
Arguments
| :: Ptr SDL_Process |
|
| -> CBool |
|
| -> IO CBool |
Stop a process.
- Returns
- true on success or false on failure; call SDL_GetError() for more information.
- Thread safety
- This function is not thread safe.
- See also
sDL_CreateProcess,sDL_CreateProcessWithProperties,sDL_WaitProcess,sDL_DestroyProcess- C declaration
SDL_KillProcess, defined atSDL3/SDL_process.h 381:34
Since: 3.2.0
Arguments
| :: Ptr SDL_Process |
|
| -> CBool |
|
| -> Ptr CInt |
|
| -> IO CBool |
Wait for a process to finish.
This can be called multiple times to get the status of a process.
The exit code will be the exit code of the process if it terminates normally, a negative signal if it terminated due to a signal, or -255 otherwise. It will not be changed if the process is still running.
If you create a process with standard output piped to the application (pipe_stdio being true) then you should read all of the process output before calling SDL_WaitProcess(). If you don't do this the process might be blocked indefinitely waiting for output to be read and SDL_WaitProcess() will never return true;
- Returns
- true if the process exited, false otherwise.
- Thread safety
- This function is not thread safe.
- See also
sDL_CreateProcess,sDL_CreateProcessWithProperties,sDL_KillProcess,sDL_DestroyProcess- C declaration
SDL_WaitProcess, defined atSDL3/SDL_process.h 414:34
Since: 3.2.0
Arguments
| :: Ptr SDL_Process |
|
| -> IO () |
Destroy a previously created process object.
Note that this does not stop the process, just destroys the SDL object used to track it. If you want to stop the process you should use SDL_KillProcess().
- Thread safety
- This function is not thread safe.
- See also
sDL_CreateProcess,sDL_CreateProcessWithProperties,sDL_KillProcess- C declaration
SDL_DestroyProcess, defined atSDL3/SDL_process.h 433:34
Since: 3.2.0