Unix网络编程之三:查看进程的状态和关系

时间:2022-08-28 22:01:36

一、查看端口号和进程号的对应关系

netstat -anpt | grep 1113
tcp        0      0 0.0.0.0:1113            0.0.0.0:*               LISTEN      4413/inputoutput_1
tcp        0      0 127.0.0.1:55342         127.0.0.1:1113          ESTABLISHED 4573/telnet     
tcp        0      0 127.0.0.1:1113          127.0.0.1:55342         ESTABLISHED 4574/inputoutput_1

处于listen状态的为父进程,父进程accept一个新连接后会fork一个子进程与客户端连接。之后父进程会close(connfd),子进程会close(listenfd)

二、查看进程对应的伪终端号

ps -aux | grep 4413
root      4413  0.0  0.0   4364   656 pts/7    Ss+  08:23   0:00 /root/NetBeansProjects/InputOutput_1/dist/Debug/GNU-Linux/inputoutput_1 127.0.0.1

三、查看进程的状态和关系

 ps -t pts/7 -o pid,ppid,tty,stat,args,wchan
  PID  PPID TT       STAT COMMAND                     WCHAN
 4413  4412 pts/7    Ss+  /root/NetBeansProjects/Inpu inet_csk_accept
 4574  4413 pts/7    S+   /root/NetBeansProjects/Inpu wait_woken

stat 为S,表明进程在等待某些资源而睡眠。进程处于睡眠状态时WCHAN列指出相应的条件。Linux在进程阻塞于acceptconnect时,输出wait_for_connect;在进程阻塞于套接字输入或输出时,输出tcp_data_wait;在进程阻塞于终端IO时,输出read_chan.

详见Unix网络编程第5章