linux 查看某一个进程的socket连接数

以进程id 4333 为例:

[root@vps88326 ~]# lsof -p 4333 -nP | grep TCP | wc -l
223
[root@vps88326 ~]# ls /proc/4333/fd -l | grep socket: | wc -l
225

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Linux进程本地socket通信接口,可以使用以下步骤: 1. 创建一个socket文件描述符:使用`socket()`函数创建一个本地socket文件描述符,指定协议族为`AF_UNIX`。 2. 绑定socket地址:使用`bind()`函数将socket绑定到一个本地文件路径上。 3. 监听socket:如果需要让socket接受连接请求,可以使用`listen()`函数将socket设置为监听状态。 4. 接受连接请求:如果socket是处于监听状态,可以使用`accept()`函数接受连接请求,并返回一个新的socket文件描述符。 5. 发送和接收数据:使用`send()`和`recv()`函数向连接的另一端发送和接收数据。 下面是一个简单的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/socket.h> #include <sys/un.h> #define SOCK_PATH "/tmp/mysocket" int main(void) { int s, s2, len; socklen_t t; struct sockaddr_un local, remote; char str[100]; // 创建socket if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } // 绑定socket到本地文件路径 local.sun_family = AF_UNIX; strcpy(local.sun_path, SOCK_PATH); unlink(local.sun_path); len = strlen(local.sun_path) + sizeof(local.sun_family); if (bind(s, (struct sockaddr *)&local, len) == -1) { perror("bind"); exit(1); } // 监听socket,设置最大连接数为5 if (listen(s, 5) == -1) { perror("listen"); exit(1); } printf("Waiting for a connection...\n"); // 接受连接请求 t = sizeof(remote); if ((s2 = accept(s, (struct sockaddr *)&remote, &t)) == -1) { perror("accept"); exit(1); } printf("Connected.\n"); // 发送数据 if (send(s2, "Hello, world!", 13, 0) == -1) { perror("send"); exit(1); } // 接收数据 if ((len = recv(s2, str, 100, 0)) == -1) { perror("recv"); exit(1); } str[len] = '\0'; printf("Received: %s\n", str); // 关闭socket close(s2); close(s); return 0; } ``` 这个示例代码可以在终端中运行,将会监听本地文件路径`/tmp/mysocket`,等待连接请求,一旦有连接请求到来,就会发送一条消息,然后等待接收对方发送的消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值