开发者

my server program can be seen as process what is meaning of S in ps output

开发者 https://www.devze.com 2023-03-16 16:13 出处:网络
Here is my server program #include<stdio.h> #include<stdlib.h> #include<sys/socket.h> #include<sys/un.h>

Here is my server program

#include<stdio.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<sys/un.h>
#include<sys/types.h>
#include<unistd.h>
int main ()
{
int server_sockfd,client_sockfd;
int server_len,client_len;
struct sockaddr_un server_address;
struct sockaddr_un client_address;
unlink("server_socket");
server_sockfd=socket(AF_UNIX,SOCK_STREAM,0);//created socket
server_address.sun_family=AF_UNIX;
strcpy(server_address.sun_path,"server_socket");
server_len=sizeof(server_address);
bind(server_sockfd,(struct sockaddr *)&server_address,server_len);//binded it
listen(server_sockfd,5);
while (1)
        {
 char ch;
 printf("server waiting\n");
 client_len=sizeof开发者_开发知识库(client_address);
 client_sockfd=accept(server_sockfd,(struct sockaddr *)&client_address,&client_len);
 read(client_sockfd,&ch,1);
 ch++;
 write(client_sockfd,&ch,1);
 close(client_sockfd);

}

}

I compiled the above program as follows

 cc server.c -o server.o

when I run a ps -el | grep server.o I get following output

0 S  1000  4450  2228  0  80   0 -   965 skb_re pts/0    00:00:00 server.o

I want to know what is the meaning of S in the above output?


It means "Interruptible sleep". It likely means it is waiting in a blocking system call. In your case that system call is most likely accept or read.

ps(1)

Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process.

   D    Uninterruptible sleep (usually IO)
   R    Running or runnable (on run queue)
   S    Interruptible sleep (waiting for an event to complete)
   T    Stopped, either by a job control signal or because it is being traced.
   W    paging (not valid since the 2.6.xx kernel)
   X    dead (should never be seen)
   Z    Defunct ("zombie") process, terminated but not reaped by its parent.


  • S Marks a process that is sleeping for less than about 20 seconds.
  • D Marks a process in disk (or other short term, uninterruptible) wait.
  • I Marks a process that is idle (sleeping for longer than about 20 seconds).
  • L Marks a process that is waiting to acquire a lock.
  • R Marks a runnable process.
  • T Marks a stopped process.
  • W Marks an idle interrupt thread.
  • Z Marks a dead process (a "zombie").

Source

0

精彩评论

暂无评论...
验证码 换一张
取 消