2013-02-21 103 views

回答

2

在C++中沒有任何內容阻止你「直接調用系統調用」。當您撥打read(),write(),open()和其他系統調用時,您已經在執行此操作。

與往常一樣,您必須瞭解權限。從您自己的鏈接:

當前實現不使用flags參數。與預期的 一樣,copy_to_process()將數據寫入目標進程的地址空間 。這兩個進程必須具有相同的所有權或複製進程必須具有CAP_SYS_PTRACE功能;否則 副本將不被允許。

因此,您當然可以調用這些函數,但請注意,它們可能會返回一個錯誤代碼,因此請確保您有適當的錯誤處理。當然,這假定你的內核版本實際上支持這些系統調用。如果您不熟悉Linux,可能無法將文章中引用的修補程序應用於您的內核。

+1

我建議不要使用不是例外的怪異系統調用(即'copy_from_process' ...)。 Posix標準在大多數內核中都沒有實現。有更多的標準方法可以在進程之間共享一些內存。閱讀http://advancedlinuxprogramming.com/ – 2013-02-21 06:51:08