自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 程序员面试宝典(2)

进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CP...

2019-03-06 11:30:35 121

原创 程序员面试宝典笔记

printf()函数计算参数是从右向左入栈的。*(ptr++)+=123;含义为*ptr=*ptr+123;ptr++;//括号的优先级比*低float a=1.0f;cout<<(int&amp

2018-10-16 20:49:57 557

原创 Posix条件变量:与互斥锁共同解决生产者与消费者关系

#include <unistd.h>#include <sys/types.h>#include <pthread.h>#include <semaphore.h>#include <stdlib.h>#include <stdio.h>#include <errno.h>#include &lt...

2019-03-22 14:27:04 432

原创 Posix线程:生产者与消费者问题

#include <unistd.h>#include <sys/types.h>#include <pthread.h>#include <semaphore.h>#include <stdlib.h>#include <stdio.h>#include <errno.h>#include &lt...

2019-03-21 17:26:51 423

原创 程序、进程和线程

程序:完成特定功能的一系列有序指令的集合 一个可执行文件 代码段+数据段进程:程序的一次动态执行过程 代码段+数据段+堆栈段+PCB一个进程只对应一个程序一个程序可以有很多进程线程:程序的一个可执行路线进程是资源竞争的基本单位线程是程序执行的最小单位线程共享进程数据,例如进程各种ID,地址空间(4GB),信号处理器表格,文件描述符表但也拥有自己的一部分数据...

2019-03-16 18:00:36 760

原创 Posix共享内存

#include &lt;unistd.h&gt;#include &lt;sys/types.h&gt;#include &lt;sys/mman.h&gt;#include &lt;sys/stat.h&gt;#include &lt;fcntl.h&gt;#include &lt;stdlib.h&gt;#include &lt;stdio.h&gt;#include &a

2019-03-16 16:22:38 279

原创 Posix消息队列

//发送消息#include &amp;lt;unistd.h&amp;gt;#include &amp;lt;sys/types.h&amp;gt;#include &amp;lt;fcntl.h&amp;gt;#include &amp;lt;sys/stat.h&amp;gt;#include &amp;lt;mqueue.h&amp;gt;#include &amp;lt;stdlib

2019-03-15 21:42:44 183

原创 system v信号量函数

/*semget函数功能 用来创建和访问一个消息队列原型 int semget(key_t key, int nsems, int semflg)参数 key 信号集的名字nsems 信号集中信号量的个数semflg 由九个权限标志构成,他们的用法和创建文件时使用的mode模式标志一样返回值:成功返回一个非负整数,即信号集的标识码;失败返回-1*//*semctl函数功能 用于...

2018-12-14 12:00:43 516

原创 system v共享内存函数

/*shmget函数功能:用来创建共享内存int shmget(ket_t key, size_t size, int shmflg);参数key:这个共享内存段名字size:共享内存大小shmflg:由九个权限标志构成,他们的用法和创建文件时使用的mode模式标志是一样的返回值:成功返回一个非负整数,即该共享内存段的标识码;失败返回-1*//*shmat函数功能:将共享内存...

2018-12-13 16:16:40 248

原创 共享内存mmap函数

/*mmap函数 作用:将文件或设备空间映射到共享内存区void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);参数addr:要映射的起始地址。通常指定为NULL,让内核自动选择len:映射到进程地址空间的字节数prot:映射区保护方式 PROT_READ/页面可读 PROT_WRIT...

2018-12-13 15:19:38 178

原创 system v消息队列实现回射客户/服务器

/*可能存在死锁状态:当客户端发送数据给服务器, 服务器回射消息时,消息队列被多个客户端同时发送的大量消息填满, 服务器无法回射,形成死锁/* server.c */#include &lt;unistd.h&gt;#include &lt;sys/types.h&gt;#include &lt;sys/ipc.h&gt;#include &lt;sys/msg.h&gt;#in...

2018-12-11 21:35:04 175

原创 system v消息队列msgrcv函数

/*msgrcv函数从消息队列接受一个消息*///第一个参数为消息队列的标示符msgid//第二个参数为指针,只想准备发送的消息//第三个为指针,指向消息长度//第四个为实现接受优先级的简单方式//第五个为控制着没有相应类型的消息可供接受时将要发生的事情//成功返回实际放到接受缓冲区里去的字符个数,失败返回-1#include &amp;lt;unistd.h&amp;gt;#include &amp;l...

2018-12-11 20:02:06 902

原创 system v消息队列msgsnd函数

/*msgsnd函数将一个消息添加到消息队列*///第一个参数为消息队列的标示符msgid//第二个参数为指针,只想准备发送的消息//第三个为指针,指向消息长度//第四个为控制着当前消息队列满或到达系统上限时将要发生的事情#include &lt;unistd.h&gt;#include &lt;sys/types.h&gt;#include &lt;sys/ipc.h&gt;#i...

2018-12-11 20:00:44 353

原创 system v消息队列msgctl函数

/*msgctl函数创建消息队列*///第一个参数为消息队列的标示符msgid//第二个参数为执行动作,,,IPC_RMID//第三个为消息队列结构体#include &lt;unistd.h&gt;#include &lt;sys/types.h&gt;#include &lt;sys/ipc.h&gt;#include &lt;sys/msg.h&gt;#include &l...

2018-12-11 19:59:52 442

原创 system v消息队列msgget函数

/*msgget函数创建消息队列*/#include &lt;unistd.h&gt;#include &lt;sys/types.h&gt;#include &lt;sys/ipc.h&gt;#include &lt;sys/msg.h&gt;#include &lt;stdlib.h&gt;#include &lt;stdio.h&gt;#include &lt;errno....

2018-12-11 19:58:29 499

原创 UDP组播

/*server*/#include &amp;amp;lt;stdio.h&amp;amp;gt;#include &amp;amp;lt;stdlib.h&amp;amp;gt;#include &amp;amp;lt;sys/types.h&amp;amp;gt;#include &amp;amp;lt;sys/socket.h&amp;amp;gt;#include &amp;amp;lt;string.h&

2018-12-08 18:33:09 660

原创 socket出错处理封装函数

/* socket出错处理封装函数 wrap.h*/#ifndef __WRAP_H_#define __WRAP_H_void perr_exit(const char *s);int Accept(int fd, struct sockaddr* sa, socklen_t *salenptr);void Bind(int fd, const struct sockaddr*...

2018-12-02 21:56:15 379

原创 socket编程多线程模型

/*问题1.调整进程内的最大文件描述符上限2.线程如有共享数据,考虑线程同步3.服务与客户端线程退出时,退出处理4.系统负载,随着链接客户端增加,导致其他线程不能及时得到CPU*//*server.c*/#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;string.h&amp;gt;#include &amp;lt;netinet/in.h&amp;gt;#inclu

2018-12-02 21:55:14 679

原创 线程属性设置简例

#include &lt;stdio.h&gt;#include &lt;pthread.h&gt;#include &lt;string.h&gt;#include &lt;stdlib.h&gt;int print_ntimes(char *str){ sleep(1); printf("%s\n", str); return 0;}void *th_fun(void* ...

2018-11-06 10:56:48 132

原创 线程创建

#include &amp;amp;lt;pthread.h&amp;amp;gt;#include &amp;amp;lt;stdio.h&amp;amp;gt;void *th_fun(void *arg){ int *p = (int *)arg; printf(&amp;quot;thread ID = %d\n&amp;quot;, pthread_self());//打印子线程号 printf(&amp;quot

2018-11-02 20:23:39 107

原创 守护进程创建

#include &amp;amp;amp;amp;lt;stdlib.h&amp;amp;amp;amp;gt;#include &amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;gt;#include &amp;amp;amp;amp;lt;fcntl.h&amp;amp;amp;amp;gt;void daemonize(void){ pid_t pid; /* * 成为一个新会话的首进程

2018-11-02 09:38:23 114

原创 利用信号回收僵尸子进程

#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;unistd.h&gt;#include &lt;errno.h&gt;#include &lt;sys/type.h&gt;#include &lt;sys/wait.h&gt;#include &lt;signal.h&gt;void sys_err(ch

2018-10-30 20:57:08 428

转载 mysleep函数

#include &lt;unistd.h&gt;#include &lt;signal.h&gt;#include &lt;stdio.h&gt;void sig_alrm(int signo){/* nothing to do */}unsigned int mysleep(unsigned int nsecs){ struct sigaction newact, oldac...

2018-10-30 10:07:22 825

原创 sigaction函数捕捉信号

#include &lt;stdio.h&gt;#include &lt;signal.h&gt;void do_sig(int num){ printf("I am do_sig\n"); printf("num = %d\n", num);}int main(void){ struct sigaction act; act.sa_handle = do_sig; /...

2018-10-29 22:07:26 264

原创 内存共享映射的实现通信

//内存共享映射#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;unistd.h&amp;gt;#include &amp;lt;sys/stat.h&amp;gt;#include &amp;lt;sys/types.h&amp;gt;#include &amp;lt;fcntl.h&amp;gt;int main(void){ int fd

2018-10-25 13:06:24 277

原创 fifo有名管道

mkfifo myfifo 创建一个管道名(手动创建管道结点)也可以mam 3 mkfifo查看mkfifo函数下面是手动创建管道结点,运行两个.c文件,实现进程通信mkfifo myfifogcc fifo_w.c -o fifo_wgcc fifo_r.c -o fifo_r./fifo_w myfifo./fifo_r myfifo//fifo_r.c#include ...

2018-10-24 16:42:49 162

原创 pipe管道简单搭建

#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;unistd.h&amp;gt;#include &amp;lt;string.h&amp;gt;#include &amp;lt;stdlib.h&amp;gt;int main(void){ int fd[2]; pid_t pid; char str[1024] = &quot;hel

2018-10-24 14:15:37 420

原创 socket编程socketpair父子进程通信

#include &lt;stdlib.h&gt;#include &lt;stdio.h&gt;#include &lt;errno.h&gt;#include &lt;string.h&gt;#include &lt;unistd.h&gt;#include &lt;sys/types.h&gt;#include &lt;sys/socket.h&gt;#include &amp

2018-09-28 16:35:07 478

原创 socket编程UNIX协议

//服务器#include &lt;stdlib.h&gt;#include &lt;stdio.h&gt;#include &lt;errno.h&gt;#include &lt;string.h&gt;#include &lt;unistd.h&gt;#include &lt;sys/types.h&gt;#include &lt;sys/socket.h&gt;#includ

2018-09-27 19:35:59 298

原创 socket编程UDP协议以及注意事项

//服务器#include &lt;stdlib.h&gt;#include &lt;stdio.h&gt;#include &lt;errno.h&gt;#include &lt;string.h&gt;#include &lt;unistd.h&gt;#include &lt;sys/types.h&gt;#include &lt;sys/socket.h&gt;#includ

2018-09-27 13:16:18 456

原创 socket编程epoll函数

poll和select要遍历所有的文件描述,效率低。epoll函数效率高1.epoll的实现基于回调的,如果fd有期望的时间发生,就可以通过回调函数将其加入epoll就绪队列中,只关心活跃的“fd&quot;。与fd数目无关2.让内核fd消息通知给用户空间的方式poll和select函数采用内存拷贝的方法epoll采用内存共享的方法3.epoll不仅会告诉应用程序有I/O事件到来,还会告诉应用程...

2018-09-26 20:05:08 188

原创 socket编程使用poll替换select

poll函数在处理并发时, 无FD_SETSIZE限制//服务器端#include &lt;unistd.h&gt;#include &lt;sys/types.h&gt;#include &lt;sys/socket.h&gt;#include &lt;netinet/in.h&gt;#include &lt;arpa/inet.h&gt;#include &lt;signal.h...

2018-09-26 16:07:23 635

原创 socket编程I/O超时函数select封装

#include &lt;unistd.h&gt;#include &lt;sys/types.h&gt;#include &lt;sys/socket.h&gt;#include &lt;netinet/in.h&gt;#include &lt;arpa/inet.h&gt;#include &lt;signal.h&gt;//使用signal函数#include &lt;sys/w...

2018-09-25 20:01:08 143

原创 socket编程select实现并发处理

//服务器客户端均已修改//服务器#include &amp;amp;amp;amp;lt;unistd.h&amp;amp;amp;amp;gt;#include &amp;amp;amp;amp;lt;sys/types.h&amp;amp;amp;amp;gt;#include &amp;amp;amp;amp;lt;sys/socket.h&amp;amp;amp;amp;gt;#include &amp;amp;amp;a

2018-09-25 12:29:18 496

原创 socket编程select函数处理多个I/O并发

//本程序仅对客户端进行处理多个并发的I/O//服务器端#include &lt;unistd.h&gt;#include &lt;sys/types.h&gt;#include &lt;sys/socket.h&gt;#include &lt;netinet/in.h&gt;#include &lt;arpa/inet.h&gt;#include &lt;signal.h&gt;/...

2018-09-23 20:42:25 601

原创 socket编程处理僵尸进程

僵尸进程是由于客户端退出连接后,服务器并不知道,还维持一个僵尸进程使用signal消除#include &lt;unistd.h&gt;#include &lt;sys/types.h&gt;#include &lt;sys/socket.h&gt;#include &lt;netinet/in.h&gt;#include &lt;arpa/inet.h&gt;#include &l...

2018-09-20 15:47:23 572 1

原创 socket编程readline函数实现回射服务器/客户端

为了解决粘包问题,reanline函数使用recv函数进行窥探,不清除内容#include &amp;lt;unistd.h&amp;gt;#include &amp;lt;sys/types.h&amp;gt;#include &amp;lt;sys/socket.h&amp;gt;#include &amp;lt;netinet/in.h&amp;gt;#include &amp;lt;arpa/inet.h&a

2018-09-20 10:23:29 308

原创 socket编程回射服务器和客户端

//回射服务器#include &lt;unistd.h&gt;#include &lt;sys/types.h&gt;#include &lt;sys/socket.h&gt;#include &lt;netinet/in.h&gt;#include &lt;arpa/inet.h&gt;#include &lt;stdlib.h&gt;#include &lt;stdio.h...

2018-09-19 22:20:28 252

原创 socket编程点到点通信

//点到点通信//服务器设计#include &lt;unistd.h&gt;#include &lt;sys/types.h&gt;#include &lt;sys/socket.h&gt;#include &lt;netinet/in.h&gt;#include &lt;arpa/inet.h&gt;#include &lt;signal.h&gt;#include &lt;...

2018-09-19 16:29:45 523

原创 SOCKET编程流字节和粘包问题readn和writen函数封装

回射服务器#include &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;unistd.h&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;#include &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;

2018-09-18 21:30:30 293

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除