Files
libreoffice/sal/inc/osl/process.h

299 lines
10 KiB
C
Raw Normal View History

2000-09-18 14:18:43 +00:00
/*************************************************************************
*
* $RCSfile: process.h,v $
*
2001-03-16 14:12:25 +00:00
* $Revision: 1.6 $
2000-09-18 14:18:43 +00:00
*
2001-03-16 14:12:25 +00:00
* last change: $Author: jbu $ $Date: 2001-03-16 15:12:25 $
2000-09-18 14:18:43 +00:00
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the "License"); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
#ifndef _OSL_PROCESS_H_
#define _OSL_PROCESS_H_
#ifndef _RTL_USTRING_H
# include <rtl/ustring.h>
#endif
#ifndef _RTL_TEXTENC_H
# include <rtl/textenc.h>
#endif
2001-03-14 08:50:26 +00:00
#ifndef _OSL_TIME_H_
#include <osl/time.h>
#endif
2000-09-18 14:18:43 +00:00
#ifndef _OSL_FILE_H_
# include <osl/file.h>
#endif
#ifndef _OSL_PIPE_H_
#include <osl/pipe.h>
#endif
#ifndef _OSL_SOCKET_H_
# include <osl/socket.h>
#endif
#ifndef _OSL_SECURITY_H_
# include <osl/security.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef sal_Int32 oslProcessOption;
#define osl_Process_WAIT 0x0001 /* wait for completion */
#define osl_Process_SEARCHPATH 0x0002 /* search path for executable */
#define osl_Process_DETACHED 0x0004 /* run detached */
#define osl_Process_NORMAL 0x0000 /* run in normal window */
#define osl_Process_HIDDEN 0x0010 /* run hidden */
#define osl_Process_MINIMIZED 0x0020 /* run in minimized window */
#define osl_Process_MAXIMIZED 0x0040 /* run in maximized window */
#define osl_Process_FULLSCREEN 0x0080 /* run in fullscreen window */
typedef sal_Int32 oslProcessData;
2001-02-27 11:29:59 +00:00
/* defines for osl_getProcessInfo , can be OR'ed */
#define osl_Process_IDENTIFIER 0x0001 /* retrieves the process identifier */
#define osl_Process_EXITCODE 0x0002 /* retrieves exit code of the process */
#define osl_Process_CPUTIMES 0x0004 /* retrieves used cpu time */
#define osl_Process_HEAPUSAGE 0x0008 /* retrieves the used size of heap */
2000-09-18 14:18:43 +00:00
typedef sal_uInt32 oslProcessIdentifier;
typedef sal_uInt32 oslProcessExitCode;
typedef enum {
osl_Process_E_None, /* no error */
osl_Process_E_NotFound, /* image not found */
osl_Process_E_TimedOut, /* timout occured */
osl_Process_E_NoPermission, /* permission denied */
osl_Process_E_Unknown, /* unknown error */
osl_Process_E_InvalidError, /* unmapped error */
osl_Process_E_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
} oslProcessError;
typedef enum {
osl_Process_TypeNone, /* no descriptor */
osl_Process_TypeSocket, /* socket */
osl_Process_TypeFile, /* file */
osl_Process_TypePipe, /* pipe */
osl_Process_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
} oslDescriptorType;
typedef sal_Int32 oslDescriptorFlag;
#define osl_Process_DFNONE 0x0000
#define osl_Process_DFWAIT 0x0001
#ifdef SAL_W32
# pragma pack(push, 8)
#elif defined(SAL_OS2)
# pragma pack(1)
#endif
typedef union {
oslSocket Socket;
oslFileHandle File;
} oslResourceDescriptor;
/** */
typedef struct {
oslDescriptorType Type;
oslDescriptorFlag Flags;
oslResourceDescriptor Descriptor;
} oslIOResource;
typedef struct {
2001-02-27 11:29:59 +00:00
sal_uInt32 Size;
2000-09-18 14:18:43 +00:00
oslProcessData Fields;
oslProcessIdentifier Ident;
oslProcessExitCode Code;
TimeValue UserTime;
TimeValue SystemTime;
2001-02-27 11:29:59 +00:00
sal_uInt32 HeapUsage;
2000-09-18 14:18:43 +00:00
} oslProcessInfo;
#ifdef SAL_W32
# pragma pack(pop)
#elif defined(SAL_OS2)
# pragma pack()
#endif
/** Process handle
@see osl_executeProcess
2001-02-27 11:29:59 +00:00
@see osl_terminateProcess
2000-09-18 14:18:43 +00:00
@see osl_freeProcessHandle
2001-02-27 11:29:59 +00:00
@see osl_getProcessInfo
2000-09-18 14:18:43 +00:00
@see osl_joinProcess
*/
typedef void* oslProcess;
/** Execute a process.
@param strImageName [in] denotes the name of the executable to be started.
@param strArguments [in] is an array of argument strings.
@param nArgument [in] the number of arguments provided.
@param Options [in] is a combination of int-constants to describe the mode of execution.
@param Security [in] describes a the user and his rights for wich the process is started.
@param strDirectory [in] denotes the name of the startup directory.
@param strEnviroments [in] is an array of strings wich describes the enviroment to set.
Each string has the form "variable=value".
@param nEnvironmentVars [in] the number of environment vars to set.
@param pResource [in] is a NULL terminated array of resources to transmit to the client process.
@param pProcess [out] points to a oslProcess variable, in wich the processhandle is returned.
@return osl_Process_E_None if the executable could be started, otherwise an error-code.
@see osl_freeProcessHandle
@see osl_getIOResources
@see osl_loginUser
*/
oslProcessError SAL_CALL osl_executeProcess(rtl_uString *strImageName,
rtl_uString *strArguments[],
sal_uInt32 nArguments,
oslProcessOption Options,
oslSecurity Security,
rtl_uString *strWorkDir,
rtl_uString *strEnvironment[],
sal_uInt32 nEnvironmentVars,
oslIOResource* pResources,
oslProcess *pProcess);
2001-02-27 11:29:59 +00:00
/** Terminate a process
@param Process [in] the handle of the process to be terminated
@see osl_executeProcess
@see osl_getProcess
@see osl_joinProcess
*/
2000-09-18 14:18:43 +00:00
oslProcessError SAL_CALL osl_terminateProcess(oslProcess Process);
2001-02-27 11:29:59 +00:00
/** @deprecated
Retrieve the process handle of a process identifier
@param Ident [in] a process identifier
@return the process handle on success, NULL in all other cases
*/
2000-09-18 14:18:43 +00:00
oslProcess SAL_CALL osl_getProcess(oslProcessIdentifier Ident);
2001-02-27 11:29:59 +00:00
2000-09-18 14:18:43 +00:00
/** Free the specified proces-handle.
@param Process [in]
*/
void SAL_CALL osl_freeProcessHandle(oslProcess Process);
2001-02-27 11:29:59 +00:00
2000-09-18 14:18:43 +00:00
/** Wait for completation of the specified childprocess.
@param Process [in]
@return ols_Process_E_None
@see osl_executeProcess
*/
oslProcessError SAL_CALL osl_joinProcess(oslProcess Process);
2001-02-27 11:29:59 +00:00
/** Retrieves information about a Process
@param Process [in] the process handle of the process
@param Field [in] the information which is to be retrieved
this can be one or more of
osl_Process_IDENTIFIER
osl_Process_EXITCODE
osl_Process_CPUTIMES
osl_Process_HEAPUSAGE
@param pInfo [out] a pointer to a vaid oslProcessInfo structure.
the Size field has to be initialized with the size
of the oslProcessInfo structure.
on success the the Field member holds the (or'ed)
retrieved valid information fields.
@return osl_Process_E_None on success, osl_Process_E_Unknown on failure.
*/
2000-09-18 14:18:43 +00:00
oslProcessError SAL_CALL osl_getProcessInfo(oslProcess Process, oslProcessData Fields,
oslProcessInfo* pInfo);
/** Get the filename of the executable.
@param strFile [out] the string that receives the executable file path.
@return osl_Process_E_None or does not return.
@see osl_executeProcess
*/
oslProcessError SAL_CALL osl_getExecutableFile(rtl_uString **strFile);
/** @return the number of commandline arguments passed to the main-function of
this process
@see osl_getCommandArg
*/
sal_uInt32 SAL_CALL osl_getCommandArgCount();
/** Get the nArg-th command-line argument passed to the main-function of this process.
@param nArg [in] The number of the argument to return.
@param strCommandArg [out] The string receives the nArg-th command-line argument.
@return osl_Process_E_None or does not return.
@see osl_executeProcess
*/
oslProcessError SAL_CALL osl_getCommandArg(sal_uInt32 nArg, rtl_uString **strCommandArg);
/** Get the value of one enviroment variable.
@param strVar [in] denotes the name of the variable to get.
@param strValue [out] string that receives the value of environment variable.
*/
oslProcessError SAL_CALL osl_getEnvironment(rtl_uString *strVar, rtl_uString **strValue);
sal_Bool SAL_CALL osl_sendResourcePipe(oslPipe Pipe, oslSocket Socket);
oslSocket SAL_CALL osl_receiveResourcePipe(oslPipe Pipe);
#ifdef __cplusplus
}
#endif
#endif /* _OSL_PROCESS_H_ */