Skip to main content

process_vm_readv

Function process_vm_readv 

Source
pub fn process_vm_readv(
    pid: Pid,
    local_iov: &mut [IoSliceMut<'_>],
    remote_iov: &[RemoteIoSlice],
    flags: u32,
) -> Result<usize, Errno>
Expand description

Lit la mémoire d’un autre processus sans ptrace.

Wrappeur de process_vm_readv(2) (Linux 3.2+). Lit depuis les segments remote_iov du processus pid dans local_iov.

§Parameters

  • pid : PID cible (doit avoir les mêmes UID/GID ou CAP_SYS_PTRACE).
  • local_iov : buffers locaux de destination.
  • remote_iov : segments dans l’espace d’adressage du processus cible.
  • flags : réservé, doit être 0.

§Errors

  • ESRCH : processus cible introuvable.
  • EPERM : permissions insuffisantes.
  • EINVAL : flags non nul, ou iov dépasse UIO_MAXIOV.
  • EFAULT : adresse locale ou distante invalide.

§Examples

use air_sys_syscall::mem::process_vm_readv;
use air_sys_types::{Pid, mem::RemoteIoSlice};
use air_sys_types::net::IoSliceMut;

let mut buffer = [0u8; 64];
let mut local = [IoSliceMut::new(&mut buffer)];
let remote = [RemoteIoSlice { addr: remote_addr, len: 64 }];
let n = process_vm_readv(target, &mut local, &remote, 0)
    .expect("process_vm_readv");