Open System Services Porting Guide (G06.24+, H06.03+)

Table Of Contents
Open System Services Porting Guide520573-006
5-1
5
Interoperating Between
Programming Environments
This section is intended for users of the OSS and Guardian environments who need to
understand interoperating between the two. This section discusses the following topics:
Interoperability on page 5-1 as it relates to programming environments
Header Files on page 5-3 for compilation in the Guardian and OSS environments
API Interoperability on page 5-4
Process Interoperability on page 5-6
File Interoperability on page 5-9
Native Signal Interoperability on page 5-11
I/O Interoperability on page 5-12
Mixed-Module Programming on page 5-13
Mixed-Language Programming on page 5-15
Interoperability
One of the primary objectives of interoperability is to support and encourage the
porting of existing UNIX applications from other platforms to the OSS environment and
the developing of new applications for the OSS environment. Another objective is the
migration of Guardian applications to the OSS environment. The OSS environment has
been designed to make it easy to migrate Guardian applications to the OSS
environment. Interoperability between the OSS and Guardian environments makes
migration tasks easier to achieve. Applications written for the OSS environment can
take advantage of the parallelism and scalability offered by NonStop systems.
Interoperability between environments is achieved by using standard function calls and
HP extensions to these calls and to the Guardian procedures. Interoperability is also
achieved by adhering to the ISO/ANSI C programming standards for code written in
either environment. The C compilers, the TNS C++ preprocessor, and the TNS/R and
TNS/E native C++ compilers, conform to industry standards and specifications such as
ISO/ANSI C, POSIX.1, POSIX.2, and XPG4.
Many levels of interoperability have been provided between the OSS and Guardian
environments, for example; the following actions are supported:
Using a command from the other environment
Using an API from the other environment
Operating on an object (file, process) that resides in the other environment
Communicating with a process in the other environment