sdl

FORK: Simple Directmedia Layer
git clone https://git.neptards.moe/neptards/sdl.git
Log | Files | Refs

SDL_visualtest_process.h (3175B)


      1 /* See COPYING.txt for the full license governing this code. */
      2 /**
      3  * \file SDL_visualtest_process.h
      4  *
      5  * Provides cross-platfrom process launching and termination functionality.
      6  */
      7 
      8 #include <SDL_platform.h>
      9 
     10 #if defined(__WIN32__)
     11 #include <Windows.h>
     12 #include <Shlwapi.h>
     13 #elif defined(__LINUX__)
     14 #include <unistd.h>
     15 #else
     16 #error "Unsupported platform."
     17 #endif
     18 
     19 #ifndef SDL_visualtest_process_h_
     20 #define SDL_visualtest_process_h_
     21 
     22 /* Set up for C function definitions, even when using C++ */
     23 #ifdef __cplusplus
     24 extern "C" {
     25 #endif
     26 
     27 /**
     28  * Struct to store a platform specific handle to a process.
     29  */
     30 typedef struct SDL_ProcessInfo
     31 {
     32 //#if defined(_WIN32) || defined(__WIN32__)
     33 #if defined(__WIN32__)
     34     PROCESS_INFORMATION pi;
     35 //#elif defined(__linux__)
     36 #elif defined(__LINUX__)
     37     int pid;
     38 #endif
     39 } SDL_ProcessInfo;
     40 
     41 /**
     42  * This structure stores the exit status (value returned by main()) and
     43  * whether the process exited sucessfully or not.
     44  */
     45 typedef struct SDL_ProcessExitStatus
     46 {
     47     int exit_success;   /*!< Zero if the process exited successfully */
     48     int exit_status;    /*!< The exit status of the process. 8-bit value. */
     49 } SDL_ProcessExitStatus;
     50 
     51 /**
     52  * Launches a process with the given commandline arguments.
     53  *
     54  * \param file  The path to the executable to be launched.
     55  * \param args  The command line arguments to be passed to the process.
     56  * \param pinfo Pointer to an SDL_ProcessInfo object to be populated with
     57  *              platform specific information about the launched process.
     58  *
     59  * \return Non-zero on success, zero on failure.
     60  */
     61 int SDL_LaunchProcess(char* file, char* args, SDL_ProcessInfo* pinfo);
     62 
     63 /**
     64  * Checks if a process is running or not.
     65  *
     66  * \param pinfo Pointer to SDL_ProcessInfo object of the process that needs to be
     67  *              checked.
     68  *
     69  * \return 1 if the process is still running; zero if it is not and -1 if the
     70  *         status could not be retrieved.
     71  */
     72 int SDL_IsProcessRunning(SDL_ProcessInfo* pinfo);
     73 
     74 /**
     75  * Kills a currently running process.
     76  *
     77  * \param pinfo Pointer to a SDL_ProcessInfo object of the process to be terminated.
     78  * \param ps Pointer to a SDL_ProcessExitStatus object which will be populated
     79  *           with the exit status.
     80  *
     81  * \return 1 on success, 0 on failure.
     82  */
     83 int SDL_KillProcess(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps);
     84 
     85 /**
     86  * Cleanly exits the process represented by \c pinfo and stores the exit status
     87  * in the exit status object pointed to by \c ps.
     88  *
     89  * \return 1 on success, 0 on failure.
     90  */
     91 int SDL_QuitProcess(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps);
     92 
     93 /**
     94  * Gets the exit status of a process. If the exit status is -1, the process is
     95  * still running.
     96  *
     97  * \param pinfo Pointer to a SDL_ProcessInfo object of the process to be checked.
     98  * \param ps Pointer to a SDL_ProcessExitStatus object which will be populated
     99  *           with the exit status.
    100  *
    101  * \return 1 on success, 0 on failure.
    102  */
    103 int SDL_GetProcessExitStatus(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps);
    104 
    105 /* Ends C function definitions when using C++ */
    106 #ifdef __cplusplus
    107 }
    108 #endif
    109 
    110 #endif /* SDL_visualtest_process_h_ */
    111 
    112 /* vi: set ts=4 sw=4 expandtab: */