当前位置: 首页 > 面试题库 >

Linux API确定进程拥有的套接字

公羊俭
2023-03-14
问题内容

是否有Linux库可以使我知道哪些进程拥有哪些IP套接字?我想我正在寻找的程序化等效项lsof -i。最终,我想将透视的数据libpcap与进程关联起来。

更新: 有人建议使用/proc/<pid>/net/tcpudp,但是在我的系统上,每个进程都显示相同的数据,因此无济于事。


问题答案:

我认为您首先必须浏览/ proc / * / fd中打开的fds,例如

4 -> socket:[11147]

然后在/ proc / net / tcp(或/ proc / net / udp)中查找引用的套接字(通过inode),例如

12: B382595D:8B40 D5C43B45:0050 01 00000000:00000000 00:00000000 00000000  1000        0 11065 1 ffff88008bd35480 69 4 12 4 -1


 类似资料:
  • 我用uWSGI运行一个烧瓶服务器。进程由System d启动。 现在我需要一些以“while(True)”运行的子流程,它们必须始终收集一些信息。 我现在开始一个具有多重处理的子过程。 下面是我的一些代码: 然后我用systemd重新启动/停止uWSGI,进程阻塞,当然它不受SIG影响。 我的第一个想法是实现一个单音句柄: 但不幸的是,他们没有点火。。。 如果服务器即将关闭,是否会触发事件,或者我

  • 问题内容: 对于Java对象,有没有办法告诉哪个线程(或null)当前 拥有其监视器?或者至少是一种方法来判断当前线程是否拥有它? 问题答案: 我自己找到了一些答案。要测试当前线程是否拥有 监视器,是否 存在! exists! 这确实非常快(亚微秒),并且从1.4开始就可用。 通常,要测试哪个线程(或线程ID)持有该锁,可以 对 classes (thanks @amicngh). 有一些注意事项

  • MSDN说方法: 侦听会导致... Socket侦听传入连接尝试。backlog参数指定可以排队接受的传入连接数...使用接受或开始接受从队列中接受连接。 这意味着套接字将把传入的连接放入队列中。我们如何确定排队连接的数量? 我尝试过的一件事显然不起作用,就是服务器套接字。轮询(timeToWait,SelectMode。SelectRead)。这总是返回false。

  • 问题内容: 我正在Linux下编写一个从TCP套接字获取数据的接口。用户提供一个缓冲区,在其中存储接收到的数据。如果提供的缓冲区太小,我只想返回一个错误。第一个问题是确定缓冲区是否过小。recv()函数仅向我返回实际写入缓冲区的字节数。如果我使用recv()联机帮助页上所述的MSG_TRUNC标志,它仍然返回相同的内容。第二个问题是丢弃仍在套接字中排队的数据。因此,如果我确定提供的Buffer很小

  • 我一直在研究HandlerThread类,因为最初我使用的是一个简单的线程和处理程序,但是在Android中使用NetworkOnMainThreadException出现了一个裁剪器。 我似乎无法理解如何将套接字之类的东西引入到HandlerThread中,您可以在其中运行阻塞代码。但是您不能使用HandlerThread来实现这一点,因为您不应该覆盖run,因为这是循环器所在的位置。 而且我不

  • 我需要一个帮助,我正在试图使客户服务器应用程序复制文件在Java...我有一个MainWnd对象,它创建了TCPServer对象,在send按钮上,它将创建TCPClient对象,它将初始数据发送给对手TCPServer并将打开给定数量的侦听线程(让它是n个)(这个侦听线程在这里只是因为它们接受一个文件)(每个线程在不同的端口上侦听发送回TCPClient)TCPClient然后创建n个其他TCP