自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 大端字节序、 小端字节序

大端字节序 :网络字节序小端字节序 :主机字节序大端字节序 :高字节序存于内存的低地址;低字节序存于内存的高地址。小端字节序 :   高字节序存于内存的高地址;低字节序存于内存的低地址。方法一:[cpp] view plain copy#include   #include   

2016-12-31 12:34:55 275

原创 进程间通信方式及比较

# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。# 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资

2016-12-30 18:27:03 310

原创 strcpy,sprintf的区别

strcpy,sprintf的区别这些函数的区别在于实现功能以及操作对象不同。strcpy 函数操作的对象是 字符串 ,完成从源字符串到目的字符串的拷贝功能。snprintf 函数操作的对象 不限于字符串  :虽然目的对象是字符串,但是源对象可以是字符串、也可以是任意基本类型的数据。这个函数主要用来实现 (字符串或基本数据类型)向 字符串 的转换 功能。如果源对象是字符串,并且指定

2016-12-29 22:51:13 1634

转载 什么是程序死锁,如何预防

在并发程序设计中,死锁 (deadlock) 是一种十分常见的逻辑错误。通过采用正确的编程方式,死锁的发生不难避免。 死锁的四个必要条件在计算机专业的本科教材中,通常都会介绍死锁的四个必要条件。这四个条件缺一不可,或者说只要破坏了其中任何一个条件,死锁就不可能发生。我们来复习一下,这四个条件是:•互斥(Mutual exclusion):存在这样一种资源,它在某个时刻只能被分配给一个执

2016-12-28 10:35:48 488

原创 TCP和UDP

TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主

2016-12-27 21:27:24 174

原创 堆和栈的区别

堆和栈的区别:  一、堆栈空间分配区别:  1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;  2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。  二、堆栈缓存方式区别:  1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;  2

2016-12-26 22:46:17 217

原创 链表与数组的区别

二者都属于一种数据结构从逻辑结构来看1. 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。2. 链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项,非常繁琐)链表必须根据next指针找到下一个元素

2016-12-25 21:22:54 195

转载 TCP三次握手

TCP是如何保证数据可靠传输TCP为应用程序提供可靠的通信连接,因为他采用了三次握手协议,三次握手协议指的是在发送数据的准备阶段,服务器端和客户端之间需要进行三次交互。第一次握手:客户端发送SYN包到服务器,并进行SYN_SEND状态,等待服务器确认;第二次握手:服务器收到SYN包并确认,同时自己发送一个SYN+ACK包,此时服务器进入SYN_RECV状态第三次握手

2016-12-24 22:52:55 170

原创 打印菱形

* * * * * * * * ** * * * * * * * * * * * * * * * #include int main(){ int i,j,k; for(i=1;i<5;i++) //上四行 { for(j=1;j<=5-i;j++) printf(" "); //空格 for(k=1;k<=2*i-1;k

2016-12-23 22:33:39 280

原创 signal_test.c

#include #include #include #include void myfunc(int sign){ if(sign == SIGINT) { printf("hello world!\n"); } if(sign == SIGQUIT) { printf("exit!\n"); exit(1);

2016-12-22 22:58:55 268

转载 c++整数类型

C++中提供的整数类型有三种:int、long、short,每种类型又分为有符号和无符号两种类型。有符号整数既可以表示非负整数,又可以表示负整数;但是,无符号整数不能表示负数,只能表示非负整数。(一)无符号整数    在内存中,int整数通常占4字节,这里,我们假定int为32位,那么无符号整数表示的取值范围为0x00000000~0xFFFFFFFF,转换为十进制为0~42949

2016-12-21 23:21:45 1518

转载 信号的生命周期

信号生命周期为从信号发送到信号处理函数的执行完毕。对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生;信号在进程中注册完毕;信号在进程中的注销完毕;信号处理函数执行完毕。相邻两个事件的时间间隔构成信号生命周期的一个阶段。下面阐述四个事件的实际意义:1、信号"诞生"。信号的诞生指的是触发信号的

2016-12-20 18:51:22 1342

原创 shmwrite.c

#include #include #include #include #include "shmdata.c"#include #define BUFFSIZE 2048int main(){ int running = 1; void *shm = NULL; struct shared_use_st * shared = NULL; cha

2016-12-19 19:44:14 259

原创 msg.c

#include #include #include struct msg_buf { int mtype; char data[255]; }; int main(){ key_t key; int msgid; int ret; struc

2016-12-18 21:49:11 372

原创 shmread

#include #include #include #include #include "shmdata.c"#include int main(){ int running = 1; void *shm = NULL; struct shared_use_st * shared; int shmid; shmid = shmg

2016-12-17 22:47:47 273

原创 shmem

#include #include #include #include #include #include #include #include #include #define PERM S_IRUSR|S_IWUSR/* 共享内存 */int main(int argc,char **argv) { int shmid; char *p_addr,*c_add

2016-12-16 19:20:24 1042

原创 shm_comm.c

#include #include #include #include #include #include #define BUFFER_SIZE 2048int main(){ pid_t pid; int shmid; char *shm_addr; char flag[]="parent"; char buff[BUFFER_SIZ

2016-12-15 21:58:14 284

原创 rcv_msg

#include #include #include #include #include #define BUFSZ 4096struct msg{ long msg_types; char msg_buf[512];};int main(int argc,char ** argv){ int qid; int len; struc

2016-12-14 19:23:05 341

原创 msg_port_full

#include #include #include #include #include #include #include #include struct msg_buf { int mtype; char data[255]; }; int main(){ key_t ke

2016-12-13 16:39:15 329

原创 signal_test

#include #include #include #include void myfunc(int sign){ if(sign == SIGINT) { printf("hello world!\n"); } if(sign == SIGQUIT) { printf("exit!\n"); exit(1);

2016-12-12 19:53:17 230

原创 旋转输出

例:“ABCDEFG”,8,4输出:“EFGABCD”#include void xuanzhuan(char str[20],int n,int p){ int i = 0; int j = 0; char new[20]; for(i = 0;i <= p;i++) { new[j + p - 1] = str[i]; j++; } j = 0; for(

2016-12-11 22:54:54 276

原创 消息队列小实例二

#include #include #include #include #include #include #include #include struct msg_buf { int mtype; char data[255]; }; int main(){ key_t ke

2016-12-10 22:24:37 162

原创 消息队列小实例

#include #include #include struct msg_buf { int mtype; char data[255]; }; int main(){ key_t key; int msgid; int ret; struc

2016-12-09 22:17:27 289

原创 thread_exit

#include #include #include void *create(void *arg){ printf("new thread is created ... \n"); return (void *)8;}int main(int argc,char *argv[]){ pthread_t tid; int

2016-12-08 20:14:08 1370

原创 thread_share

#include #include #include //static int a=4;int a = 1;void *create(void *arg){ printf("new pthread ... \n"); printf("a=%d \n",a); return (void *)0;}int main(int

2016-12-07 13:13:56 206

原创 udp服务器、客户端

客户端#include #include #include #include #include int main(int argc,char **argv){ int sockfd; int n; struct sockaddr_in servaddr,cliaddr; char sendline[1000]; char recvline[1000]; if(arg

2016-12-06 18:46:29 151

原创 网络编程,client,server初始版

客户端#include #include #include #include #include int main(int argc,char **argv){ int sockfd; int n; struct sockaddr_in servaddr,cliaddr; char sendline[1000]; char recvline[1000]; if(argc

2016-12-05 12:59:49 269

原创 回文字符串

找最长回文字符串#include int main(){ char str[100]; int i;//循环变量 int n;//字符串位数 int temp1,temp2; int j = 1; int count = 0; int flag = 0; printf("输入字符串(100个字符以内):"); scanf("%s",str); printf("输入字符串

2016-12-04 13:35:45 228

原创 pthread_struct

#include #include #include #include struct menber{ int a; char *s;};void *create(void *arg){ struct menber *temp; temp=(struct menber *)arg; printf("menber

2016-12-03 11:01:28 188

原创 买票简易版

三个售票口买十张票#include #include #include #include int ticket = 10;void *sell_ticket1(void){ while(1) { if(ticket > 0) { //sleep(1); printf("sell ticket--> chool ticket1

2016-12-02 20:36:39 197

原创 pthread_struct

#include #include #include #include struct menber{ int a; char *s;};void *create(void *arg){ struct menber *temp; temp=(struct menber *)arg; printf("menber

2016-12-01 09:59:08 174

空空如也

空空如也

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

TA关注的人

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