2 zuofabutong zuofabutong 于 2014.09.15 17:19 提问

Linux环境下使用哪个系统调用可以查看套接字的状态

socket有SYN_SENT,SYN_RVCD,ESTABLISHED,FIN_WAIT_1,CLOSE_WAIT状态,使用netstat命令亦可打印出套接字的状态。
现在我的问题是在自己的程序里面需要查看套接字状态,但不知道使用哪个系统调用API可以做到这个事。阅读netstat的源码应该可以找到答案,但是源码太复杂,我水平实在不够,找不出在哪个位置。哪位大神如果知道,希望能指点一下。谢谢!

1个回答

u010136832
u010136832   2014.09.16 17:02

函数getsockopt

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
TCP 系统调用
引言 典型的 TCP 客户机和服务器应用程序通过发布 TCP 系统调用序列来获取某些函数。这些系统调用包括socket ()、bind ()、listen ()、accept ()、send () 和 receive()。本文介绍在应用程序发布 TCP 系统调用时在较低级别中发生的情况,如下图 所示。 图 1. TCP 应用程序进行的普通调用序列 图
linux strace命令--跟踪系统调用
简介 strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。 输出参数含义 root@ubuntu:/usr# strace ca
[GNU/Linux] Linux系统调用-线程相关(一):基本知识
线程包含的信息:每个线程中都包含有表示自身执行环境的信息,其中至少包括:标识线程的线程ID、一组寄存器的值、栈、调度优先级和策略、信号屏蔽字、errno变量和线程的私有数据。 线程函数的错误处理与返回值:与一般的POSIX函数不同,线程函数在执行发生错误的时候,一般不会设置errno全局变量值,而是直接返回表示错误类别的错误码。因此下面的函数若不特殊说明,一般不会设置errno。 线程标识符函
如何查看一个进程打开哪些fd及对应的文件或套接字操作
在GNU Linux下使用原生套接字编写了服务端程序与客户端程序,按照常规,服务端程序都是会先创建一个socket并监听此端口的,而客户端程序主要是对服务端的连接,在只开启服务端程序的时候,使用lsof可以看到服务端的所有打开的文件的描述的,服务端程序的进程为29016,如下: ufo@ufo:~/socket$ lsof -p 29016 COMMAND PID USER FD TYPE D
在socket系统调用中,如何完成三次握手和四次挥手
在我们学习网络基础时,传输层的协议有TCP和UDP; 在Linux网络编程中,我们使用socket API,实现网络通信。 那么:         socket API 和 TCP 协议中各个状态是如何对应的呢?我们可以通过下图来看:            在socket系统调用中,如何完成三次握手和四次挥手:         SOCK_DGRAM,即UDP中的co
linux stat系统调用,获取文件信息。
stat 函数原型: int stat(const char *path, struct stat *buf); struct stat 说明 struct stat { mode_t st_mode; //文件对应的模式,文件,目录等 ino_t st_ino; //inode节点号 dev_...
Linux中查看socket进程状态
Linux中查看socket进程状态 Linux中查看socket状态: cat /proc/net/sockstat #(这个是ipv4的) sockets: used 137 TCP: inuse 49 orphan 0 tw 3272 alloc 52 mem 46UDP: inuse 1 mem 0RAW: inuse 0 FRAG: inuse 0 memory
套接字与文件描述符关系
进程的打开文件描述符表 Linux的三个系统调用:open,socket,pipe返回的都是一个描述符。不同的进程,他们返回的描述符可以相同。那么,在同一个进程中,他们可以相同吗? 在内核源码中,三个系统调用声明如下: SYSCALL_DEFINE3(open,const char __user *, filename, int, flags, umode_t, mode); SYSCA
Linux系统调用------追踪系统调用的执行过程
一、基础知识 关于系统调用 系统调用号:内核为每个系统调用定义了一个唯一的编号,这个编号定义在…/include/asm/unisd.h中(最大为NR_syscall) 系统调用表:同时在内核中保存了一张记录系统调用号和其对应服务例程的表,与系统调用表一一对应 在系统调用陷入内核之前,需要把系统调用号一起传入内核,这个标号就是系统调用表的sys_call _ table 下标,这个传递的动作
Linux 进程的系统调用
Linux 进程的系统调用 子进程创建 fork() 创建子进程。fork()后会有两个并发进程执行,子进程复制了父进程的数据段,包括全局变量。父进程返回子进程的PID, 子进程返回0。 头文件:stdio.h vfork() 子进程与父进程共享地址空间。调用vfork()创建的子进程后,父进程被挂起,直到子进程结束。头文件:stdio.h 进程映像的更换 用新的程序代码覆盖原...