HP OpenVMS Systemsask the wizard |
The Question is: Im compiling a C routine on a vax. In you r documnetation, a routine getppid exists which returns a type 'pid_t' defined in header file 'unistd.h'. I cannot find in the docs anywhere where it defines what pid_t is and I cannot find the location of the header files. question 1: where in the docs are all the types defined. question 2: where are header files located on a standard vax, what is the logical pointing to the header files location? The Answer is :
The C documentation is available at the Compaq OpenVMS website, the URL
for the language documentation is included in the OpenVMS FAQ. Additional
information on C programming and particularly on some common C programming
mistakes is included (no pun intended) in the OpenVMS FAQ.
Information on the location of and the specification of and the processing
of the C header files is included in the Compaq C User's Guide, in the
section of the "Preprocessor Directives" chapter entitled "File Inclusion
(#include)".
Also, from the C installation procedure: "The C Runtime Library headers
and Starlet headers are installed as a Text Library (.TLB). The
traditional text form of the headers (.H files) are also provided for
reference purposes only) in the directories:
SYS$COMMON:[DECC$LIB.REFERENCE.DECC$RTLDEF] and
SYS$COMMON:[DECC$LIB.REFERENCE.SYS$STARLET_C].
"Please note that the compiler does not search the reference areas
SYS$COMMON:[DECC$LIB.REFERENCE.DECC$RTLDEF] and
SYS$COMMON:[DECC$LIB.REFERENCE.SYS$STARLET_C]
during compilation. Instead headers are taken from the text library."
The following is from the C on-line help text:
CC
Run-time_functions
getppid
Returns the parent process ID of the calling process.
Syntax:
#include <unistd.h>
pid_t getppid (void);
$ cc/vers
Compaq C V6.4-004 on OpenVMS Alpha V7.2-1
$ type x.c
#include <unistd.h>
#include <stdio.h>
main()
{
pid_t pid = getpid(); /* this example uses getpid, not getppid */
printf("0x0%08.8x\n", pid );
return 1;
}
$ cc x
$ link x
$ run x
0x0000008cb
$ show process
... Process ID: 000008CB ...
$ search sys$sysroot:[decc$lib...]unistd.h pid_t
******************************
SYS$COMMON:[DECC$LIB.REFERENCE.DECC$RTLDEF]UNISTD.H;1
# ifndef __PID_T
# define __PID_T 1
typedef __pid_t pid_t;
__pid_t getpid (void);
__pid_t getppid (void);
__pid_t getpgid (__pid_t);
__pid_t getpgrp (void);
__pid_t getsid (__pid_t);
int setpgid (__pid_t, __pid_t);
__pid_t setpgrp (void);
__pid_t setsid (void);
__pid_t vfork(void);
|