socket基本套接字2(signal和wait)
来源:互联网 发布:傲剑金蛇数据 编辑:程序博客网 时间:2024/06/06 15:04
1. 服务器进程//增加了signal 和 wait #include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>#include <arpa/inet.h>#include <signal.h>#define MAXLINE 1024#define SERVER_PORT 9877typedef void sigfunc(int);/* * struct sigaction{ * void (*sa_handler)(int); * sigset_t set_mask; * int flag; * void (*sa_sigaction)(int ,siginfo_t *,void *); * } * */sigfunc *signal(int signo,sigfunc *func){ struct sigaction act,oact; act.sa_handler = func; sigemptyset(&act.sa_mask); act.sa_flags = 0; if( signo == SIGALRM){#ifdef SA_INTERRUPT act.sa_flags |= SA_INTERRUPT;#endif }else{#ifdef SA_RESTART act.sa_flags |= SA_RESTART;#endif } if(sigaction(signo,&act,&oact) < 0){ return (SIG_ERR); } return (oact.sa_handler);}void sig_child(int signo){ pid_t pid ; int stat ; pid = wait(&stat); printf("child %d terminated \n",pid); return ;}void str_echo(int sockfd){ ssize_t n; char buf[MAXLINE] = {0}; while((n = read(sockfd,buf,MAXLINE)) >0 ){ write(sockfd,buf,n); }}int main(int argc,char *argv[]){ int listenfd,connfd; pid_t childpid ; socklen_t len; struct sockaddr_in cliaddr,servaddr; listenfd = socket(AF_INET,SOCK_STREAM,0); //void bzero(void *s,size_t n) bzero(&servaddr,sizeof(struct sockaddr_in)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERVER_PORT); // bind(int,struct sockaddr *,socklen_t) bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr)); signal(SIGCHLD,sig_child); //listen(int sockfd,int backlog); listen(listenfd,5); for( ; ;){ len = sizeof(cliaddr); // int accept(int sockfd,struct sockaddr *cliaddr,socklen_t *addrlen) connfd = accept(listenfd,(struct sockaddr *)&cliaddr,&len); if( (childpid = fork()) == 0){ close(listenfd); str_echo(connfd); exit(0); } close(connfd); } return 0;}
0 0
- socket基本套接字2(signal和wait)
- socket 基本套接字1
- 基本套接字编程socket函数和connect函数
- socket(套接字)在服务器端和客户端之间的基本工作原理流程图
- Socket(套接字)
- Socket(套接字)
- Socket(套接字)
- Socket(套接字)
- Socket(套接字)
- socket(套接字)
- 套接字和socket编程
- 原始套接字2(Raw Socket)
- ?2 基本套接字
- 什么是套接字(Socket)?套接字(Socket)是什么意思?(转载)
- 什么是套接字(Socket)?套接字(Socket)是什么意思?(转载)
- 什么是套接字(Socket)?套接字(Socket)是什么意思?(转载)
- 套接字(socket) 端口
- 什么是套接字(Socket)
- 1004. Counting Leaves (30)
- Spark1.3从创建到提交:5)Executor启动源码分析
- STL源码剖析——list容器的排序算法sort()
- 爬虫之页面链接获取
- Leetcode Reverse Linked List II 92
- socket基本套接字2(signal和wait)
- mac下在命令行使用sublime text
- CSDN-UWP
- Android 常用控件 学习笔记
- 素数回文数的个数
- 使用JDBC链接Oracle
- Java 匿名对象的详解
- 关于eclipse输出的中文乱码问题
- for循环中定义变量