从C++应用程序代码调用Linux系统调用



(轻松一点-我不是linux专家)

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

我对以下两个关于进程间共享内存的"新"功能/特性感兴趣:

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

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

C++中没有任何东西从本质上阻止您"直接调用系统调用"。当您调用read()write()open()和其他系统调用时,您已经在执行了。

一如既往,您必须了解权限。从您自己的链接:

当前实现未使用flags参数。和以前一样copy_to_process()将数据写入目标进程的地址空间。两个流程必须具有相同的所有权,或者复制过程必须具有CAP_SYS_PTRACE能力;否则不允许复制。

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

最新更新