(放轻松——我不是 linux 专家)
有什么阻止我直接从 Linux 上运行的 C++ 应用程序调用系统调用?
我对以下两个有关在进程之间共享内存的“新”功能/特性感兴趣:
http://lwn.net/Articles/405346/
我会在 Windows 上遇到像用户/内核模式这样的安全权限吗?
(放轻松——我不是 linux 专家)
有什么阻止我直接从 Linux 上运行的 C++ 应用程序调用系统调用?
我对以下两个有关在进程之间共享内存的“新”功能/特性感兴趣:
http://lwn.net/Articles/405346/
我会在 Windows 上遇到像用户/内核模式这样的安全权限吗?
C++ 中没有什么可以从本质上阻止您“直接调用系统调用”。当您调用 , 和其他系统调用时,您已经在这样read()
做了write()
。open()
与往常一样,您必须了解权限。从您自己的链接:
当前实现不使用 flags 参数。正如所料,copy_to_process() 将数据写入目标进程的地址空间。要么两个进程必须具有相同的所有权,要么复制进程必须具有 CAP_SYS_PTRACE 能力;否则不允许复制。
因此,您当然可以调用这些函数,但请注意它们可能会返回错误代码,因此请确保您有适当的错误处理。当然,这假设您的内核版本实际上支持这些系统调用。如果您是 Linux 新手,您可能无法将文章中提到的补丁应用到您的内核。