⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p12-13.c

📁 SUN Solaris8平台下进程间通信
💻 C
字号:
#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <netinet/in.h>#include <signal.h>#include <unistd.h>#include "err_exit.h"int make_socket(unsigned short int port);void doit(int);int main(void){    int server_sockfd, client_sockfd;    int server_len, client_len;    struct sockaddr_in client_address;    server_sockfd = make_socket(2003);    /* 创建连接队列,忽略子进程终止信号 */    listen(server_sockfd, 5);    signal(SIGCHLD, SIG_IGN);    while(1) {        printf("server waiting\n");        /* 接收连接 */        client_len = sizeof(client_address);        client_sockfd = accept(server_sockfd,             (struct sockaddr *)&client_address, &client_len);        /* 为这个客户创建一个子进程 */        if(fork() == 0) {             /* 若为子进程,接收并回答客户的消息 */            close(server_sockfd);     /* 子进程关闭侦听套接字 */            doit(client_sockfd);      /* 处理客户的请求 */            close(client_sockfd);     /* 已处理完该客户的请求 */            exit(0);                  /* 子进程终止 */        }        else {            close(client_sockfd);     /* 父进程关闭被连接的套接字 */        }    }}void doit(client_sockfd){char buf[255];    int n;    /* 接收并回应客户的消息 */    n = read(client_sockfd, buf, sizeof(buf));    sleep(5);                /* 睡眠5秒仅为了演示需要 */    buf[n] = 0;    write(client_sockfd, buf, n);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -