Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用端口和状态_C_Linux_Network Programming_Port_Netstat - Fatal编程技术网

C 使用端口和状态

C 使用端口和状态,c,linux,network-programming,port,netstat,C,Linux,Network Programming,Port,Netstat,如何在Linux上使用端口及其状态?基本上,netstat可以做的一切,但是在C?中,对于“netstat可以做的一切”,可以从netstat本身开始。源代码如下: 应该注意的是,netstat所做的大部分工作都是从/proc文件系统获得的;看起来*\u do\u one例程拥有大多数“有趣的”胆量。在运行netstat时,将向您显示它进行的系统调用及其参数 $ strace netstat ... open("/proc/net/tcp6", O_RDONLY) = 3 ope

如何在Linux上使用端口及其状态?基本上,
netstat
可以做的一切,但是在C?

中,对于“netstat可以做的一切”,可以从
netstat
本身开始。源代码如下:

应该注意的是,
netstat
所做的大部分工作都是从
/proc
文件系统获得的;看起来
*\u do\u one
例程拥有大多数“有趣的”胆量。

在运行netstat时,将向您显示它进行的系统调用及其参数

$ strace netstat
...
open("/proc/net/tcp6", O_RDONLY)        = 3
open("/proc/net/udp", O_RDONLY)         = 3
...

这通常是了解程序正在做什么或它发出的调用的一种好方法,如果您只需要在手册页上找到要查找的调用,那么有时比查看源代码更容易

是什么让你认为netstat不是用C写的?或者code.turnkeylinux.org/busybox/networking/netstat.cAlso,如果
netstat
已经做了你想要的,为什么要重写它呢?我不打算重写netstat,只是在我自己的一个程序中有类似的功能。我不是说这是一个天真的问题,我只是希望有一套方法,但我很惊讶地发现它从
/proc
读取文件。。。对于程序来说,这不是一个糟糕的策略吗?例如,我将使用
sysinfo()
获取正常运行时间,而不是读取
/proc/uptime
@bean:记住
/proc/uptime
不是标准文件,而是直接访问内核中提供正常运行时间的设备驱动程序(文本格式)。
/proc
中的其余部分工作方式相同。一般来说,
/proc
/sys
文件系统是许多Linux内核子系统的首选接口。当有提供重复功能的库函数可用时,它们通常(但不总是)在libc中作为对proc访问的包装器实现。我不知道,如果
sysinfo
就是这样一个调用,但它的主页确实链接到proc(5)。