Solaris平台的进程端口映射
来源:互联网 发布:tensorflow 语义理解 编辑:程序博客网 时间:2024/05/21 08:53
在Solaris系统上如何查看进程打开的端口?或者如何查看端口是由哪个进程打开的?
背景知识:
- procfs文件系统
- 库libproc
/* * 遍历进程 * pids : 所有进程的id * pidcnt : pids的大小 * return进程数 */int enum_procs_list(int pids[], int pidcnt); /*由进程id得到fd的路径:"/proc/<pid>/fd"*/int get_procs_fdpath(int pid, char *path, int size); int get_procs_sockfs(int pid, char *path){char sock_fpath[32];char buf[256], ipbuf[16];DIR *dirp;struct dirent *dentp;struct stat statb;int sockfd;struct sockaddr *saddr = (struct sockaddr *)buf;socklen_t len = 0;struct sockaddr_in *sin;int retval = 0;struct ps_prochandle *pshandle = 0; if ((dirp = opendir(path)) == NULL) {return -1;} while ((dentp = readdir(dirp)) != NULL) {if (!isdigit(dentp->d_name[0])) { continue; }strcat(strcpy(fpath, path), dentp->d_name); sockfd = atoi(dentp->d_name);if (stat(fpath, &statb) == -1) {continue;}if (S_ISSOCK(statb.st_mode)) {if (pshandle == 0)pshandle = Pgrab((pid_t)pid, 0x02, &retval);if (phandle != 0) {len = sizeof(buf);if (pr_getsockname(pshandle, sockfd, saddr, &len) != -1) {sin = (struct sockaddr_in *) saddr;printf("pid %d/t/t%s.%u", pid, inet_ntop(AF_INET, &sin->sin_addr, ipbuf, sizeof(ipbuf)), ntohs(sin->sin_port));} len = sizeof(buf);if (pr_getpeername(pshandle, sockfd, saddr, &len) != -1) {sin = (struct sockaddr_in *) saddr;printf("pid %d/t/t%s.%u", pid, inet_ntop(AF_INET, &sin->sin_addr,ipbuf, sizeof(ipbuf)), ntohs(sin->sin_port));}}}if (pshandle)Prelease(pshandle);closedir(dirp);return 1;}
说明:
- struct ps_prochandle、Pgrab、Prelease、pr_getsockname、pr_getpeername都来自libproc。
- 文中只附主要的代码,其他的代码较易从网络获得。
- 文中程序未对sock进行区分(AF_UNIX, AF_INET, AF_INET6...)
- 除了本文中的方式外,还可以参考开源项目lsof,也可以实现进程端口映射。
- Solaris平台的进程端口映射
- 度量快速开发平台端口映射的介绍
- Solaris下shell写的守护进程
- solaris下查看进程的cpu占用率
- solaris下查看进程的cpu占用率
- Solaris系统的进程内存管理库
- 进程与端口映射
- 进程与端口映射
- 进程与端口映射
- Solaris平台网络设置
- Solaris Sparc平台记录
- Solaris之进程管理
- Solaris 进程工具
- solaris intrd 进程
- Solaris平台上如何知道某个端口被哪个进程和应用程序占用?
- Solaris平台上如何知道某个端口被哪个进程和应用程序占用?
- Solaris平台上如何知道某个端口被哪个进程和应用程序占用?
- Solaris平台上如何知道某个端口被哪个进程和应用程序占用?
- asp.net批量生成静态网页
- for myself
- GridView增加一个统计行的方法
- 动态网页的伪静态技术
- Internet网络通信底层学习
- Solaris平台的进程端口映射
- flex调用web服务的安全设置
- 全排列算法
- 网络命令一览表
- c#中使用多线程访问winform中控件的若干问题
- 《老婆的最后一条短信 看完我哭了》转帖
- “防忽悠系列”的终结篇
- 理解 Flex itemRenderer - 第 3 部分: 通信
- asp.net2008(C#)的TreeView1添加树型目录节点