cs模式多进程多线程通信

多进程

Client:创建套接字,连接服务器,通信

Server:创建套接字,绑定,监听,接收,创建子进程,通信

信号机制

  • struct sigaction

    struct sigaction {
         
         
        void (*sa_handler)(int);//信号处理函数
        void (*sa_sigaction)(int, siginfo_t *, void *);
        sigset_t sa_mask;	//搁置的信号集
        int sa_flags;		//信号处理的其他相关操作,
    //SA_RESETHAND:当调用信号处理函数时,将信号的处理函数重置为缺省值SIG_DFL					
    //SA_RESTART:如果信号中断了进程的某个系统调用,则系统自动启动该系统调用
    //SA_NODEFER :一般情况下,当信号处理函数运行时,内核将阻塞该给定信号。但是如果设置了SA_NODEFER标记,那么在该信号处理函数运行时,内核将不会阻塞该信号
        void (*sa_restorer)(void);
    }
    
  • sigaction函数

    int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
    	- 功能:检查或修改与指定信号相关联的处理动作,可同时两种操作
        - 参数:
            - signum:捕获信号的类型
            - act: 指定新的信号处理方式
            - oldact:输出老的信号处理方式
    

多线程

Client:创建套接字,连接服务器,通信

Server:创建套接字,绑定,监听,接收,创建子线程,通信

#include <pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
	- 功能:创建线程
    - 返回值:成功:0,失败:错误号
    - 参数:
        -thread:传出参数,保存系统为我们分配好的线程ID
        -attr:通常传NULL,表示使用线程默认属性。若想使用具体属性也可以修改该参数。
        -start_routine:函数指针,指向线程主函数(线程体),该函数运行结束,则线程结束。
        -arg:线程主函数执行期间所使用的参数,如要传多个参数, 可以用结构封装。

pthread_t pthread_self(void);
	- 功能:获取线程号
    - 返回值:线程号
    - 参数:
int pthread_equal(pthread_t t1, pthread_t t2);
	- 功能:
    - 返回值:
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值