zzy*_*zzy 1 c sockets linux tcp file-descriptor
我试图找到给定进程的所有TCP 套接字的文件描述符,即。给定它的 pid,这样我就可以在另一个进程中获得套接字选项而无需修改原始进程。
例如,如果我知道文件描述符是fd
,那么我希望调用getsockopt(fd, ...)
以在另一个进程中检索选项。我想知道这可行吗?如果是这样,如何fd
在原始过程之外获得我需要的?
我试图在创建套接字时打印出返回值,即。s = socket(...); printf("%d\n", s);
,保持原始进程运行并在getsockopt(s, ...)
其他地方调用但它不起作用 - 似乎这样的返回值是依赖于进程的。
我也找到了 unix 域套接字的解决方案,但我不想修改原始进程的代码。
至于\proc\<PID>\fd
直接阅读还是利用阅读lsof
,我想说我不知道如何从他们那里找到我需要的东西。我的直觉是它们可能是潜在的解决方案。
当然,也欢迎任何其他想法。说实话,我对Linux中的文件描述符机制不是很熟悉。