当前位置: 技术问答>linux和unix
想不明白一个问题,求高手指点
来源: 互联网 发布时间:2016-10-05
本文导语: 我在linux环境用一个库函数建立一个socket服务器端,监听端口为52655。后面又用ODBC连接oracle数据库。 然后用lsof命令查看端口占用情况,输出如下: david@linux-xi:/root> lsof -i:52655 COMMAND PID USER FD TYPE DEVICE SIZE NODE NA...
我在linux环境用一个库函数建立一个socket服务器端,监听端口为52655。后面又用ODBC连接oracle数据库。
然后用lsof命令查看端口占用情况,输出如下:
david@linux-xi:/root> lsof -i:52655
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
aaaaaa 19622 david 39u IPv4 10147201 TCP *:52655 (LISTEN)
oracle 19829 david 39u IPv4 10147201 TCP *:52655 (LISTEN)
oracle 19831 david 39u IPv4 10147201 TCP *:52655 (LISTEN)
oracle 19835 david 39u IPv4 10147201 TCP *:52655 (LISTEN)
oracle 19837 david 39u IPv4 10147201 TCP *:52655 (LISTEN)
不明白,为什么会出现oracle监听52655 端口的信息啊?
然后用lsof命令查看端口占用情况,输出如下:
david@linux-xi:/root> lsof -i:52655
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
aaaaaa 19622 david 39u IPv4 10147201 TCP *:52655 (LISTEN)
oracle 19829 david 39u IPv4 10147201 TCP *:52655 (LISTEN)
oracle 19831 david 39u IPv4 10147201 TCP *:52655 (LISTEN)
oracle 19835 david 39u IPv4 10147201 TCP *:52655 (LISTEN)
oracle 19837 david 39u IPv4 10147201 TCP *:52655 (LISTEN)
不明白,为什么会出现oracle监听52655 端口的信息啊?
|
实际上如果你使用netstat查看tcp的端口情况,可以看到只有一个监听端口。lsof显示的是文件描述符,由于同一个socket端口可以有多个文件描述符引用它,所以你上面的显示是没有什么问题的。
只要你在父进程中给socket描述符设置了FD_CLOEXEC标志,就不会出现上面的问题了(如果子进程没有执行exec,则应该fork后把监听描述符关掉)
只要你在父进程中给socket描述符设置了FD_CLOEXEC标志,就不会出现上面的问题了(如果子进程没有执行exec,则应该fork后把监听描述符关掉)
|
用ps -ef显示一下这些进程ID都是什么进程
19622 19829 19831 19835 19837
19622 19829 19831 19835 19837
|
可是子进程也不该显示使用该端口的是oracle啊 我也想知道他这是为什么 比如apache
#lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
httpd 16444 root 4u IPv6 76802 TCP *:http (LISTEN)
httpd 31021 apache 4u IPv6 76802 TCP *:http (LISTEN)
httpd 31022 apache 4u IPv6 76802 TCP *:http (LISTEN)
httpd 31023 apache 4u IPv6 76802 TCP *:http (LISTEN)
httpd 31024 apache 4u IPv6 76802 TCP *:http (LISTEN)
httpd 31025 apache 4u IPv6 76802 TCP *:http (LISTEN)
httpd 31026 apache 4u IPv6 76802 TCP *:http (LISTEN)
httpd 31027 apache 4u IPv6 76802 TCP *:http (LISTEN)
httpd 31028 apache 4u IPv6 76802 TCP *:http (LISTEN)
httpd 31029 apache 4u IPv6 76802 TCP *:http (LISTEN)