亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么Golang實現的程序不使用libc.so.6的函數,比如socket()?

為什么Golang實現的程序不使用libc.so.6的函數,比如socket()?

Go
蕭十郎 2022-06-21 16:13:43
謝謝回答我的問題。我最近在為一個項目工作。在這個項目中,我編寫了一個共享庫并將 設置LD_PRELAOD為共享庫的路徑。我想通過使用這個共享庫來攔截一些程序的系統調用,例如socket(), bind(), send(). 它適用于 C 程序和 Python 程序,但不適用于 Golang 程序。后來我知道 Go 程序符合靜態庫。所以我嘗試了這個命令:go build -linkshared <test-name>,不幸的是,它失敗了。最后,我使用命令nm檢查應用程序中的符號。我發現了這些:# nm -Do <go-program-name> | grep socket# results are as follows<go-program-name>: <address> T net.socket<go-program-name>: <address> D net.socektFunc<go-program-name>: <address> T syscall.socket# nm -Do <C-program-name> | grep socket<C-program>: U socket這是屏幕截圖。 在此處輸入圖像描述 再次感謝。
查看完整描述

1 回答

?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

為什么 Go[...] 實現的程序不使用 libc.so.6 的功能。

因為 Go 使用對底層操作系統的直接系統調用。


查看完整回答
反對 回復 2022-06-21
  • 1 回答
  • 0 關注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號