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