HP-UX Reference (11i v3 07/02) - 2 System Calls (vol 5)
p
pstat(2) pstat(2)
perror("pstat_getipc");
}
Example 7
List all the open files for the parent process.
main()
{
#define BURST ((size_t)10)
pid_t target = getppid();
struct pst_fileinfo2 psf[BURST];
int i, count;
int idx = 0; /* index within the context */
(void)printf("Open files for process PID %d\n", target);
/* loop until all fetched */
while ((count = pstat_getfile2(psf, sizeof(struct pst_fileinfo2),
BURST, idx, target)) > 0) {
/* process them (max of BURST) at a time */
for (i = 0; i < count; i++) {
(void)printf("fd #%llu\tFSid %llx:%llx\tfileid %lld\n",
psf[i].psf_fd,
psf[i].psf_id.psf_fsid.psfs_id,
psf[i].psf_id.psf_fsid.psfs_type,
psf[i].psf_id.psf_fileid);
}
/*
* Now go back and do it again, using the
* next index after the current ’burst’
*/
idx = psf[count-1].psf_fd + 1;
}
if (count == -1)
perror("pstat_getfile2()");
#undef BURST
}
Example 8
Acquire information about a specific LWP.
main()
{
struct lwp_status lwpbuf;
int count;
/*
* get information for LWP whose lwpid is 4321 within
* a process whose pid is 1234.
*/
count = pstat_getlwp(&lwpbuf, sizeof(struct lwp_status),
0, 4321, 1234);
if ((count == -1) && (errno == ESRCH))
perror("pstat_getlwp(): cannot find given lwpid or pid");
else if (count == -1)
perror("pstat_getlwp()");
else {
/* process data from the call... */
(void)printf("processing lwp data...\n");
HP-UX 11i Version 3: February 2007 − 21 − Hewlett-Packard Company 311