Can';在netstat或lsof命令中看不到我正在运行的进程?

Can';在netstat或lsof命令中看不到我正在运行的进程?,c,bash,sockets,network-programming,C,Bash,Sockets,Network Programming,我正在尝试套接字编程。我已经创建了以下文件inetaddr.c,我正在使用Ubuntu 12.04。 下面的代码没有在控制台上显示我当前正在运行的进程,当我执行它时,它应该显示该进程。我尝试了以下两个命令 系统(“netstat-pa--tcp 2>/dev/null | sed-n'1,/^Proto/p;/inetaddr/p'” 甚至 系统(“lsof-i tcp | sed-n'1p;/inetaddr/p'” 我的代码有什么问题吗?如何通过netstat或lsof命令查看正在运行的进程

我正在尝试套接字编程。我已经创建了以下文件inetaddr.c,我正在使用Ubuntu 12.04。 下面的代码没有在控制台上显示我当前正在运行的进程,当我执行它时,它应该显示该进程。我尝试了以下两个命令

系统(“netstat-pa--tcp 2>/dev/null | sed-n'1,/^Proto/p;/inetaddr/p'”

甚至

系统(“lsof-i tcp | sed-n'1p;/inetaddr/p'”

我的代码有什么问题吗?如何通过netstat或lsof命令查看正在运行的进程

inetaddr.c
尝试在netstat之前添加侦听套接字。像这样:

/* Display our socket address */
listen(sck_inet,50);  /* <--- Add this */
system("lsof -i tcp | sed -n '1p;/inetaddr/p'");
//system("netstat -pa --tcp 2>/dev/null | sed -n '1,/^Proto/p;/bind/p'");
return 0;
/*显示我们的套接字地址*/

听(sck_inet,50);/* 尝试在netstat之前添加侦听套接字。像这样:

/* Display our socket address */
listen(sck_inet,50);  /* <--- Add this */
system("lsof -i tcp | sed -n '1p;/inetaddr/p'");
//system("netstat -pa --tcp 2>/dev/null | sed -n '1,/^Proto/p;/bind/p'");
return 0;
/*显示我们的套接字地址*/

听(sck_inet,50);/*至少在linux上,
netstat-ap
同时显示侦听套接字和非侦听套接字。看你是正确的,尽管听了之后,我能够列出netstat和lsof的程序。我将编辑我的答案。Thanks我认为lsof和netstat都只显示“打开”或活动套接字。对于TCP套接字,它将处于侦听状态,或任何连接状态,如已建立、SYN_RECV等。谢谢,解决了我的问题。但是你能给我一个关于监听端口的参考吗?这些端口是否与用于通信的开放端口相同?在写入服务器套接字时,需要将其设置为侦听状态,然后才能“接受”连接。当您在客户端时,在创建套接字之后,您需要在发送和接收数据之前将其“连接”到服务器。当然,这是一个非常简单的定义,适用于SOCK_流(tcp)套接字。我建议您进一步阅读Richard Stevens的书,“TCP/IP插图,第1卷”或“Unix网络编程,第1卷”,这些书可以为您提供非常好的参考资料和知识。至少在linux上,
netstat-ap
同时显示侦听套接字和非侦听套接字。看你是正确的,尽管听了之后,我能够列出netstat和lsof的程序。我将编辑我的答案。Thanks我认为lsof和netstat都只显示“打开”或活动套接字。对于TCP套接字,它将处于侦听状态,或任何连接状态,如已建立、SYN_RECV等。谢谢,解决了我的问题。但是你能给我一个关于监听端口的参考吗?这些端口是否与用于通信的开放端口相同?在写入服务器套接字时,需要将其设置为侦听状态,然后才能“接受”连接。当您在客户端时,在创建套接字之后,您需要在发送和接收数据之前将其“连接”到服务器。当然,这是一个非常简单的定义,适用于SOCK_流(tcp)套接字。我建议您进一步阅读Richard Stevens的书,“TCP/IP图解,第1卷”或“Unix网络编程,第1卷”,这些书可以为您提供非常好的参考资料和知识。
/* Display our socket address */
listen(sck_inet,50);  /* <--- Add this */
system("lsof -i tcp | sed -n '1p;/inetaddr/p'");
//system("netstat -pa --tcp 2>/dev/null | sed -n '1,/^Proto/p;/bind/p'");
return 0;