|
|
- /* See LICENSE.txt for the full license governing this code. */
- /**
- * \file SDL_visualtest_process.h
- *
- * Provides cross-platfrom process launching and termination functionality.
- */
-
- #include <SDL_platform.h>
-
- #if defined(__WIN32__)
- #include <windows.h>
- #include <shlwapi.h>
- #elif defined(__LINUX__)
- #include <unistd.h>
- #else
- #error "Unsupported platform."
- #endif
-
- #ifndef SDL_visualtest_process_h_
- #define SDL_visualtest_process_h_
-
- /* Set up for C function definitions, even when using C++ */
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- /**
- * Struct to store a platform specific handle to a process.
- */
- typedef struct SDL_ProcessInfo
- {
- //#if defined(_WIN32) || defined(__WIN32__)
- #if defined(__WIN32__)
- PROCESS_INFORMATION pi;
- //#elif defined(__linux__)
- #elif defined(__LINUX__)
- int pid;
- #endif
- } SDL_ProcessInfo;
-
- /**
- * This structure stores the exit status (value returned by main()) and
- * whether the process exited sucessfully or not.
- */
- typedef struct SDL_ProcessExitStatus
- {
- int exit_success; /*!< Zero if the process exited successfully */
- int exit_status; /*!< The exit status of the process. 8-bit value. */
- } SDL_ProcessExitStatus;
-
- /**
- * Launches a process with the given commandline arguments.
- *
- * \param file The path to the executable to be launched.
- * \param args The command line arguments to be passed to the process.
- * \param pinfo Pointer to an SDL_ProcessInfo object to be populated with
- * platform specific information about the launched process.
- *
- * \return Non-zero on success, zero on failure.
- */
- int SDL_LaunchProcess(char* file, char* args, SDL_ProcessInfo* pinfo);
-
- /**
- * Checks if a process is running or not.
- *
- * \param pinfo Pointer to SDL_ProcessInfo object of the process that needs to be
- * checked.
- *
- * \return 1 if the process is still running; zero if it is not and -1 if the
- * status could not be retrieved.
- */
- int SDL_IsProcessRunning(SDL_ProcessInfo* pinfo);
-
- /**
- * Kills a currently running process.
- *
- * \param pinfo Pointer to a SDL_ProcessInfo object of the process to be terminated.
- * \param ps Pointer to a SDL_ProcessExitStatus object which will be populated
- * with the exit status.
- *
- * \return 1 on success, 0 on failure.
- */
- int SDL_KillProcess(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps);
-
- /**
- * Cleanly exits the process represented by \c pinfo and stores the exit status
- * in the exit status object pointed to by \c ps.
- *
- * \return 1 on success, 0 on failure.
- */
- int SDL_QuitProcess(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps);
-
- /**
- * Gets the exit status of a process. If the exit status is -1, the process is
- * still running.
- *
- * \param pinfo Pointer to a SDL_ProcessInfo object of the process to be checked.
- * \param ps Pointer to a SDL_ProcessExitStatus object which will be populated
- * with the exit status.
- *
- * \return 1 on success, 0 on failure.
- */
- int SDL_GetProcessExitStatus(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps);
-
- /* Ends C function definitions when using C++ */
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* SDL_visualtest_process_h_ */
-
- /* vi: set ts=4 sw=4 expandtab: */
|