自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GUI1259802368的博客

本博客的主要作为自己的学习笔记,并不是以教授知识为目的。如果有人能从我的博客中学到东西,我很高兴。有人发现文章中有不对的地方,也欢迎大家纠正。

  • 博客(10)
  • 收藏
  • 关注

原创 socket可选项编程

套接字有多种可选项,有时候是需要更改套接字可选项的,下面是一部分套接字可选项套接字可选项是分层的。IPPROTO_IP层可选项是IP协议相关事项,IPPROTO_TCP层可选项是TCP协议相关事项,SOL_SOCKET层是套接字相关的通用可选项。下面是读取和设置可选项的函数#includeint getsockopt(int sock,int level,int optnam

2018-01-29 10:09:50 1085

原创 Linux多线程临界区问题

临界区指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个线程访问的特性。当有线程进入临界区段时,其他线程或是进程必须等待,有一些同步的机制必须在临界区段的进入点与离开点实现,以确保这些共用资源是被互斥获得使用,例如:semaphore。只能被单一线程访问的设备,例如:打印机。看下面一个例子,#include#include#include

2018-01-25 20:02:39 1274

原创 Linux多线程机制

创建进程的工作本身会给操作系统带来沉重的负担,而且每个进程具有独立的内存空间,因此进程间通信的实现难度也不低。其主要缺点如下: 1.创建进程的过程会带来一定的开销 2.为了完成进程间数据交换,需要特殊的IPC技术另外每秒数十次、甚至数千次的‘上限文切换’是创建进程时的最大的开销。单CPU系统将CPU时间分成多个微小的块后分配给了多个进...

2018-01-23 20:33:47 831

原创 多播与广播

多播多播方式的数据传输是基于UDP完成的。区别在于UDP数据传输以单一目标进行,而多播数据同时传递到加入(注册)特定组的大量主机。采用多播方式可以同时向多个主机传递数据。多播的数据传输方式特点--多播服务器端针对特定多播组,只发送一次数据--即使只发送一次数据,但改组内的所有客户端都会接收数据--多播组数可在IP地址可接收范围内任意增加--加入特定组即可接收发往该多播组的数

2018-01-21 16:27:06 1188

原创 C程序编译过程

C语言一般用gcc进行编译,下面一个程序helloword.c:#include#define BUF_SIZE 30int main(){ char s[BUFSIZE]="hello,world!"; printf("%s\n",s);}用gcc来生成可执行程序,命令为gcc helloword.c -o helloword,helloworld是可执行文件。其中过程一般包

2018-01-18 19:04:40 336

原创 Linux I/O复用-select函数和epoll函数

       应用程序往往需要在多于一个文件描述符上阻塞:例如相应键盘输入、进程间通信以及同时操作多个文件。基于事件驱动机制的图形用户界面(GUI)应用的主循环中可能包含上百个等待响应的文件。       在不使用线程,尤其是独立处理每一个文件的情况下,进程无法在多个文件描述符上同时阻塞。如果文件都处于准备好被读写的状态,同时操作多个文件描述符是没有问题的。但一旦在该过程中出现一个未准备好的文...

2018-01-16 14:51:37 1313

原创 Linux进程间通信--管道

进程间通信是指两个不同进程间可以交换数据,因此操作系统应提供两个进程可以同时访问的内存空间。普通管道(PIPE) 为了完成进程间通信,需要创建管道,管道不属于进程的资源,而是和套接字一样属于操作系统。因此两个进程通过操作系统提供的内存空间进行通信。下面是创建管道的函数:#include<unistd.h>int pipe(int filedes[2]...

2018-01-14 18:22:19 959

原创 Linux信号机制

信号是在特定事件发生时由操作系统向进程发送消息。为了响应消息,执行与消息相关的自定义操作时的过程称为“信号处理”。信号与signal函数信号注册函数#include<signal.h>void(*signal(int signo,void (*func)(int)))(int);函数名:signal参数:int signo,void (*func)(int)...

2018-01-12 19:07:38 926

原创 DNS域名和网络地址

DNS是对IP地址和域名进行相互转换的系统,其核心是DNS服务器。域名:提供网络服务的服务器端也是通过IP地址区分的,IP地址非常难记。因此将容易记、易表述的域名分配取代IP地址。DNS服务器:域名是赋予服务器端的虚拟地址,而非实际地址。因此,需要将虚拟地址转化为实际地址。那如何将域名变为IP地址呢?可以向DNS服务器请求转换地址。       所有计算机中都记录着默认DNS服务器地址...

2018-01-09 19:55:28 1037

转载 拥抱开源——Linux C/C++程序员必须熟悉的开源项目

作为一个经验丰富的Linux C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应用过, 但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定的环境中使用, 对于自己来说, 在不同的项目中应用, 只需要复制代码, 改改也就可以了, 因为自己写的代码

2018-01-03 10:29:27 1648

空空如也

空空如也

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

TA关注的人

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