2

(放轻松——我不是 linux 专家)

有什么阻止我直接从 Linux 上运行的 C++ 应用程序调用系统调用?

我对以下两个有关在进程之间共享内存的“新”功能/特性感兴趣:

http://lwn.net/Articles/405346/

我会在 Windows 上遇到像用户/内核模式这样的安全权限吗?

4

1 回答 1

2

C++ 中没有什么可以从本质上阻止您“直接调用系统调用”。当您调用 , 和其他系统调用时,您已经在这样read()做了write()open()

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

当前实现不使用 flags 参数。正如所料,copy_to_process() 将数据写入目标进程的地址空间。要么两个进程必须具有相同的所有权,要么复制进程必须具有 CAP_SYS_PTRACE 能力;否则不允许复制。

因此,您当然可以调用这些函数,但请注意它们可能会返回错误代码,因此请确保您有适当的错误处理。当然,这假设您的内核版本实际上支持这些系统调用。如果您是 Linux 新手,您可能无法将文章中提到的补丁应用到您的内核。

于 2013-02-21T00:50:01.213 回答