Pread
,
Pread_string
—
read data from a process
Process Control Library (libproc, -lproc)
#include
<libproc.h>
ssize_t
Pread
(
struct
ps_prochandle *P,
void *buf,
size_t nbytes,
uintptr_t address);
ssize_t
Pread_string
(
struct
ps_prochandle *P,
char *buf,
size_t nbytes,
uintptr_t address);
The
Pread
() function reads data from the
process handle
P starting at
address in the address space of the process
and reads at most
nbytes of data into
buf and is logically analogous to the
pread(2) function.
For live processes, this function is equivalent to reading from the /proc file
system
as file for the process. For core files
and file handles, it reads and writes from the logical address space and not
the corresponding offset of the file itself. For example, a core file contains
a sparse representation of the address space of a crashed process and unmapped
regions are not present in the file. However,
address still refers to the virtual addresses
that were present at run-time and not those in the core file.
The
Pread_string
() function is similar to the
Pread
() function, except that it attempts
to interpret
address as a null terminated
character string and will stop reading characters into
buf if either
nbytes has been read or a null terminator is
encountered. The resulting data in
buf will
always be null terminated, even if no null terminator was found in the first
nbytes of data.
Upon successful completion, the
Pread
() and
Pread_string
() functions return a
non-negative integer indicating the number of bytes actually read. Otherwise,
the functions return
-1 and set
errno to indicate the error.
For a full list of possible errors also see the
DIAGNOSTICS section in
proc(4) and the
ERRORS section in
pread(2).
Uncommitted
See
LOCKING in
libproc(3LIB).
pread(2),
libproc(3LIB),
proc(4)