2
(Go easy-我不是Linux專家)從C++應用程序代碼調用Linux系統調用?
有沒有什麼能阻止我直接從Linux上運行的C++應用程序調用syscalls?
我關於共享內存的過程當中有興趣在以下兩個「新」功能/特性:
http://lwn.net/Articles/405346/
我會遇到像Windows用戶/內核模式的安全權限?
(Go easy-我不是Linux專家)從C++應用程序代碼調用Linux系統調用?
有沒有什麼能阻止我直接從Linux上運行的C++應用程序調用syscalls?
我關於共享內存的過程當中有興趣在以下兩個「新」功能/特性:
http://lwn.net/Articles/405346/
我會遇到像Windows用戶/內核模式的安全權限?
在C++中沒有任何內容阻止你「直接調用系統調用」。當您撥打read()
,write()
,open()
和其他系統調用時,您已經在執行此操作。
與往常一樣,您必須瞭解權限。從您自己的鏈接:
當前實現不使用flags參數。與預期的 一樣,copy_to_process()將數據寫入目標進程的地址空間 。這兩個進程必須具有相同的所有權或複製進程必須具有CAP_SYS_PTRACE功能;否則 副本將不被允許。
因此,您當然可以調用這些函數,但請注意,它們可能會返回一個錯誤代碼,因此請確保您有適當的錯誤處理。當然,這假定你的內核版本實際上支持這些系統調用。如果您不熟悉Linux,可能無法將文章中引用的修補程序應用於您的內核。
我建議不要使用不是例外的怪異系統調用(即'copy_from_process' ...)。 Posix標準在大多數內核中都沒有實現。有更多的標準方法可以在進程之間共享一些內存。閱讀http://advancedlinuxprogramming.com/ – 2013-02-21 06:51:08