关闭进程_1 分钟小技巧系列 | 如何在不杀进程的前提下关闭一个 TCP Socket 连接..._weixin_39864373的博客-优快云博客
先写一个测试程序
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include<stdio.h>
#include<iostream>
#include<cstring>
#include<sys/fcntl.h>
#include<sys/socket.h>
#include<unistd.h>
#include<netinet/in.h>
#include<errno.h>
#include<sys/types.h>
#include <arpa/inet.h>
int main()
{
int listenfd;
listenfd=socket(AF_INET,SOCK_STREAM,0);//在socket编程中,AF_INET是必须的,等同于固定搭配
//socket创建成功后如果返回值是-1的话,说明创建失败,为0的时候就是创建成功
if(listenfd==-1)
{
printf("socket create fail\n");
return -1;
}
printf(" listenfd: %d \n", listenfd);
struct sockaddr_in serveraddr;//定义一个用来处理网络通信的数据结构,sockaddr_in分别将端口和地址存储在两个结构体中
//sin_family协议族
memset(&serveraddr,0,sizeof(serveraddr));
serveraddr.sin_family=AF_INET;
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
//serveraddr.sin_addr.s_addr=atoi(argv[1]);// specify ip address
serveraddr.sin_port=htons(5000);//specify port
// serveraddr.sin_port=htons(atoi(argv[1]));//specify port
//printf("%s %s\n",argv[1],argv[2]);
if(bind(listenfd,(struct sockaddr *)&serveraddr,sizeof(serveraddr))!=0)
{
printf("bind failed \n");
return -1;
}
if(listen(listenfd,5)!=0)
{
printf("Listen failed\n");
close(listenfd);
return -1;
}
printf(" listenfd port: %d \n", 5000);
while(1)
sleep(2);
char s[32] = "aaabbbc";
remove_repeat(s);
int a[10];
a[5] = 38;
printf("a size: %d\n", sizeof(a));
array(a);
}
直接删除 /proc/进程id/fd/fd数字
失败没有权限。
使用gdb