- 博客(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 <...
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 <...
2019-03-21 17:26:51
423
原创 程序、进程和线程
程序:完成特定功能的一系列有序指令的集合 一个可执行文件 代码段+数据段进程:程序的一次动态执行过程 代码段+数据段+堆栈段+PCB一个进程只对应一个程序一个程序可以有很多进程线程:程序的一个可执行路线进程是资源竞争的基本单位线程是程序执行的最小单位线程共享进程数据,例如进程各种ID,地址空间(4GB),信号处理器表格,文件描述符表但也拥有自己的一部分数据...
2019-03-16 18:00:36
760
原创 Posix共享内存
#include <unistd.h>#include <sys/types.h>#include <sys/mman.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>#include <stdio.h>#include &a
2019-03-16 16:22:38
279
原创 Posix消息队列
//发送消息#include &lt;unistd.h&gt;#include &lt;sys/types.h&gt;#include &lt;fcntl.h&gt;#include &lt;sys/stat.h&gt;#include &lt;mqueue.h&gt;#include &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 <unistd.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#in...
2018-12-11 21:35:04
175
原创 system v消息队列msgrcv函数
/*msgrcv函数从消息队列接受一个消息*///第一个参数为消息队列的标示符msgid//第二个参数为指针,只想准备发送的消息//第三个为指针,指向消息长度//第四个为实现接受优先级的简单方式//第五个为控制着没有相应类型的消息可供接受时将要发生的事情//成功返回实际放到接受缓冲区里去的字符个数,失败返回-1#include &lt;unistd.h&gt;#include &l...
2018-12-11 20:02:06
902
原创 system v消息队列msgsnd函数
/*msgsnd函数将一个消息添加到消息队列*///第一个参数为消息队列的标示符msgid//第二个参数为指针,只想准备发送的消息//第三个为指针,指向消息长度//第四个为控制着当前消息队列满或到达系统上限时将要发生的事情#include <unistd.h>#include <sys/types.h>#include <sys/ipc.h>#i...
2018-12-11 20:00:44
353
原创 system v消息队列msgctl函数
/*msgctl函数创建消息队列*///第一个参数为消息队列的标示符msgid//第二个参数为执行动作,,,IPC_RMID//第三个为消息队列结构体#include <unistd.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#include &l...
2018-12-11 19:59:52
442
原创 system v消息队列msgget函数
/*msgget函数创建消息队列*/#include <unistd.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#include <stdlib.h>#include <stdio.h>#include <errno....
2018-12-11 19:58:29
499
原创 UDP组播
/*server*/#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;stdlib.h&amp;gt;#include &amp;lt;sys/types.h&amp;gt;#include &amp;lt;sys/socket.h&amp;gt;#include &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 &lt;stdio.h&gt;#include &lt;string.h&gt;#include &lt;netinet/in.h&gt;#inclu
2018-12-02 21:55:14
679
原创 线程属性设置简例
#include <stdio.h>#include <pthread.h>#include <string.h>#include <stdlib.h>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;lt;pthread.h&amp;gt;#include &amp;lt;stdio.h&amp;gt;void *th_fun(void *arg){ int *p = (int *)arg; printf(&quot;thread ID = %d\n&quot;, pthread_self());//打印子线程号 printf(&quot
2018-11-02 20:23:39
107
原创 守护进程创建
#include &amp;amp;amp;lt;stdlib.h&amp;amp;amp;gt;#include &amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;#include &amp;amp;amp;lt;fcntl.h&amp;amp;amp;gt;void daemonize(void){ pid_t pid; /* * 成为一个新会话的首进程
2018-11-02 09:38:23
114
原创 利用信号回收僵尸子进程
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <sys/type.h>#include <sys/wait.h>#include <signal.h>void sys_err(ch
2018-10-30 20:57:08
428
转载 mysleep函数
#include <unistd.h>#include <signal.h>#include <stdio.h>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 <stdio.h>#include <signal.h>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 &lt;stdio.h&gt;#include &lt;unistd.h&gt;#include &lt;sys/stat.h&gt;#include &lt;sys/types.h&gt;#include &lt;fcntl.h&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 &lt;stdio.h&gt; #include &lt;unistd.h&gt;#include &lt;string.h&gt;#include &lt;stdlib.h&gt;int main(void){ int fd[2]; pid_t pid; char str[1024] = "hel
2018-10-24 14:15:37
420
原创 socket编程socketpair父子进程通信
#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include &
2018-09-28 16:35:07
478
原创 socket编程UNIX协议
//服务器#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#includ
2018-09-27 19:35:59
298
原创 socket编程UDP协议以及注意事项
//服务器#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#includ
2018-09-27 13:16:18
456
原创 socket编程epoll函数
poll和select要遍历所有的文件描述,效率低。epoll函数效率高1.epoll的实现基于回调的,如果fd有期望的时间发生,就可以通过回调函数将其加入epoll就绪队列中,只关心活跃的“fd"。与fd数目无关2.让内核fd消息通知给用户空间的方式poll和select函数采用内存拷贝的方法epoll采用内存共享的方法3.epoll不仅会告诉应用程序有I/O事件到来,还会告诉应用程...
2018-09-26 20:05:08
188
原创 socket编程使用poll替换select
poll函数在处理并发时, 无FD_SETSIZE限制//服务器端#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <signal.h...
2018-09-26 16:07:23
635
原创 socket编程I/O超时函数select封装
#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <signal.h>//使用signal函数#include <sys/w...
2018-09-25 20:01:08
143
原创 socket编程select实现并发处理
//服务器客户端均已修改//服务器#include &amp;amp;amp;lt;unistd.h&amp;amp;amp;gt;#include &amp;amp;amp;lt;sys/types.h&amp;amp;amp;gt;#include &amp;amp;amp;lt;sys/socket.h&amp;amp;amp;gt;#include &amp;amp;a
2018-09-25 12:29:18
496
原创 socket编程select函数处理多个I/O并发
//本程序仅对客户端进行处理多个并发的I/O//服务器端#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <signal.h>/...
2018-09-23 20:42:25
601
原创 socket编程处理僵尸进程
僵尸进程是由于客户端退出连接后,服务器并不知道,还维持一个僵尸进程使用signal消除#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include &l...
2018-09-20 15:47:23
572
1
原创 socket编程readline函数实现回射服务器/客户端
为了解决粘包问题,reanline函数使用recv函数进行窥探,不清除内容#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&a
2018-09-20 10:23:29
308
原创 socket编程回射服务器和客户端
//回射服务器#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <stdlib.h>#include <stdio.h...
2018-09-19 22:20:28
252
原创 socket编程点到点通信
//点到点通信//服务器设计#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <signal.h>#include <...
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;lt;unistd.h&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;
2018-09-18 21:30:30
293
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人