![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux高性能服务器编程
文章平均质量分 81
巴巴多斯小魔
这个作者很懒,什么都没留下…
展开
-
多进程编程
fork、vfork 、exec系列 系统调用fork()、vfork()、__clone()库函数都根据各自需要的参数标志去调用clone(),然后由clone()去调用do_fork().do_fork()调用copy_process(),然后让进程开始运行。copy_process():调用dup_task_struct为新进程创建一个内核栈、thread_info结构、task_struct,这些值与当前进程得值相同。此时子进程和父进程描述符完全相同。检查新创建这个子进程后,当前用户所拥原创 2021-04-10 13:17:50 · 106 阅读 · 0 评论 -
Linux信号
信号是由用户、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。Linux信号可由如下条件产生:对于前台进程,用于可以通过输入特殊的终端字符来给他发送信号。如输入Ctrl+C.系统异常。如浮点异常和非法内存段访问.系统状态变化。比如alarm定时器到期引起的SIGALRM信号。运行kill命令或调用kill函数.fork产生的子进程的进程表项(复制的父进程的),信号位图会被清除(原进程设置的信号处理函数不再对新进程起作用),子进程继承父进的信号掩码,但具有一个空的挂起原创 2021-02-21 20:31:40 · 185 阅读 · 2 评论 -
高级I/O函数
pipe、socketpair#include<unistd.h>int pipe(int fd[2]);要想实现双向的数据传输,应该使用两个管道。管道内部传输的数据时字节流,这和TCP字节流的概念相同。但TCP写入多少字节的数据决定对方的接受窗口和拥塞窗口,而管道本身有一个容量限制,默认是65536字节。我们可以使用fcntl函数来修改管道容量。#include<sys/types.h>#include<sys/socket.h>int socketpa原创 2021-02-21 17:50:55 · 107 阅读 · 0 评论 -
Linux网络编程基础API
创建socket#include<sys/types.h>#include<socket.h>int socket(int domain,int type,int protocol);domain:告诉系统使用哪个底层协议族,对于TCP/IP而言,参数应该设置为PF_INET(用于IPv4)或PF_INET6(用于IPv6);对于UNIX本地域协议族而言,参数应该设置为PF-UNIX。type:指定服务类型。服务类型主要有SOCK_STREAM服务(流服务)和SOCK_原创 2021-02-21 14:29:26 · 81 阅读 · 0 评论