2013-02-21 88 views

回答

2

在C++中没有任何内容阻止你“直接调用系统调用”。当您拨打read(),write(),open()和其他系统调用时,您已经在执行此操作。

与往常一样,您必须了解权限。从您自己的链接:

当前实现不使用flags参数。与预期的 一样,copy_to_process()将数据写入目标进程的地址空间 。这两个进程必须具有相同的所有权或复制进程必须具有CAP_SYS_PTRACE功能;否则 副本将不被允许。

因此,您当然可以调用这些函数,但请注意,它们可能会返回一个错误代码,因此请确保您有适当的错误处理。当然,这假定你的内核版本实际上支持这些系统调用。如果您不熟悉Linux,可能无法将文章中引用的修补程序应用于您的内核。

+1

我建议不要使用不是例外的怪异系统调用(即'copy_from_process' ...)。 Posix标准在大多数内核中都没有实现。有更多的标准方法可以在进程之间共享一些内存。阅读http://advancedlinuxprogramming.com/ – 2013-02-21 06:51:08