- 论坛徽章:
- 0
|
在c中,给一个端口号和一个pid号,看看他们是不是关联的,就是说if判断这个端口号是不是属于这个pid号:
第一种方法:
int main(int argc,char *argv[])
{
if(argc<2)
{
printf("参数少,挂了\n");
return 1;
}
int port=atoi(argv[1]);
int pid=atoi(argv[2]);
关键就是下面这句,不知道怎么才能把prot传入lsof -i :中,更不知道怎么返回pid的值,system只能返回里面语句是否成功
system("lsof -i :port|cut -d * * -f 2");//这句目的是查询一个端口所属的pid,并返回这个pid的值
if(??????)//没有返回值我就没法判断了
printf("端口%d是pid%d的端口 \n");
else
printf("注意:端口%d不是pid%d的端口 \n")
return 0;
}
第二种方法:想从/proc/pid中的某个文件中cat出pid占用的端口号,但是不知道到底是哪个文件里有端口号,cat | grep一下午脑子都成浆糊了,求大神指点
char path[]="/proc/pid/**********";
fd=open(path, O_CREAT | O_RDONLY, 0644);
number=read(fd, buf, 255));
第三种方法:自己想通过pid号,调用某个linux提供的函数返回这个pid的端口号(假设一个pid只能占用一个端口),如int a=linuxfunction(pid);本人小白,不懂内核,估计上面的那个语句真要实现可能是多个函数调用才能实现。但是貌似这个方法效率最高,资源占用最少,也是我最想知道的。各位大神,给几个工作过程的函数名就行,我自己慢慢baidu,要是能再详细点那就感激不尽了
以上三种方法都想学会,请各位前辈指教,谢谢 |
|