栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

错误处理函数和多进程与多线程预习

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

错误处理函数和多进程与多线程预习

错误处理函数: 封装目的:
在server.c编程过程中突出逻辑,将出错处理与逻辑分开,可以直接跳转man手册。

【wrap.c】                                         【wrap.h】

存放网络通信相关常用  自定义函数                    存放 网络通信相关常用  自定义函数原型(声明)。
命名方式:系统调用函数,处理出错场景。
                如:Listen()、Accept();
函数功能:调用系统函数,处理出错场景。
在server.c和client.c中调用  自定义函数

联合编译 server.c  和  wrap.c 生成server
                client.c  和  wrap.c  生成client

readn:

 - 读 N个字节

readline:

 - 读一行
多进程并发服务器:server.c
1.Socket();        创建  监听套接字lfd
2.Bind();            绑定地址结构Struct sockaddr_in addr;
3.Listen();                
4.

while(1)                
            cfd=Accpet();                接收客户端连接请求。
            pid=fork();
            if(pid==0){                    子进程read(cfd)----小-》大——write(cfd)
                    close(lfd)                关闭用于建立连接的套接字lfd
                    read()                       
                    小---大
                    write()
            }else if (pid>0){
                    close(cfd);            关闭用于与客户端通信的套接字cfd
                    contiue;
            }
}
5.子进程:
	* 
close(lfd)
	* 
read()
	* 
小--大
	* 
write()


 父进程:
	* 
close(cfd);
	* 
注册信号捕捉函数:    SIGCHLD
	* 
在回调函数中,完成子进程回收
	* 
            while(waitpid());


多线程并发服务器:server.c
1.Socket();        创建  监听套接字lfd
2.Bind();            绑定地址结构Struct sockaddr_in addr;
3.Listen();  
4.

while(1){
        cfd=Accept(lfd,);
        pthread_create(&tid,NULL,tfn,NULL);
        pthread_detach(tid);    //pthead_join(tid, void**);    新线程--专用于回收子线程。
}
5.子线程:

void *tfn(void *arg)
{
        close(lfd)                    不能关闭。主线程要使用lfd
        read(cfd)
        小--大
        write(cfd) 
        pthread_exit((void*)10);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/718411.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号