在 Julia 中读/写进程内存

Posted

技术标签:

【中文标题】在 Julia 中读/写进程内存【英文标题】:Read/write process memory in Julia 【发布时间】:2017-03-16 23:41:16 【问题描述】:

是否有可能在 Julia 中读写进程内存?我用 C# 举例说明我的意思:

WinAPI.ReadProcessMemory(c_Process.handle, offset, buffer, size, IntPtr.Zero);

【问题讨论】:

在 Windows 上,您可以直接调用该函数。首先使用GetModuleHandleEx。 Here 是示例 winapi 调用。跨平台,进程内可以使用ccall(:jl_load_dynamic_library, ...) 作为句柄,reinterpret + unsafe_* 函数。如果这种挥手的描述还不够,我会尝试举一个例子。 (注意:这仅适用于同一进程,我认为以跨平台方式读取 其他进程 内存更困难。使用共享内存可能更好)。 【参考方案1】:

您可以创建任意指针并通过它读取或写入,但不建议以这种方式编程。这是一个用于对 Julia 进行段错误的简短程序:

julia> p = reinterpret(PtrInt, 0)
PtrInt64 @0x0000000000000000

julia> unsafe_store!(p, 123)

signal (11): Segmentation fault: 11

【讨论】:

以上是关于在 Julia 中读/写进程内存的主要内容,如果未能解决你的问题,请参考以下文章

Linux Linux程序练习五

使用数组视图时意外的内存分配 (julia)

多线程,多进程使用场景

写/读受内存保护的进程的内存

Mysql Innodb体系结构

如何在 Julia 中逐行读取文件?