visualtest/include/SDL_visualtest_process.h
author Sam Lantinga <slouken@libsdl.org>
Sat, 23 Sep 2017 12:38:47 -0700
changeset 11543 53b03749a7ff
parent 11382 2c50e79b19e0
permissions -rw-r--r--
Fixed bug 3842 - fix SDL_thread.h for emx

Ozkan Sezer

EMX declares _beginthread() / _endthread() in stdlib.h, not process.h.
The attached patch updates the OS/2 case of SDL_thread.h for it. (It
also tidies the unreadable whitespace in win32 case.)
     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: */