[英]How to get the file descriptors of TCP socket for a given process in Linux?
我正在嘗試查找給定進程的所有TCP套接字的文件描述符。 給定它的pid,這樣我就可以在另一個進程中獲取socket選項,而無需修改原始進程。
例如,如果我知道文件描述符是fd
,那么我希望調用getsockopt(fd, ...)
在另一個進程中檢索選項。 我想知道這可行嗎? 如果是這樣,如何在原始流程之外獲得我需要的fd
?
我嘗試在創建套接字時打印出返回值,即。 s = socket(...); printf("%d\\n", s);
,保持原始進程運行,並在其他位置調用getsockopt(s, ...)
,但是它不起作用-看來這種返回值取決於進程。
我也找到了使用Unix域套接字的解決方案,但我不想修改原始過程的代碼。
至於直接閱讀\\proc\\<PID>\\fd
還是利用lsof
,我想說我不知道如何從他們那里找到我需要的東西。 我的直覺是,它們可能是潛在的解決方案。
當然,任何其他想法也都歡迎。 老實說,我對Linux中的文件描述符機制不是很熟悉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.