MSG_WAITALL和文件描述符的阻塞模式

recv函数可以设置一些标志,这也是recv和read的不同之处。 其中有一个MSG_WAITALL标志,如果recv设置了这个标志,当没有收到请求的字节数时,recv函数会阻塞。然而,当被信号打断,或者发生了错误,或者断开了连接,或者接收到的下一个数据和已经接收的数据的数据类型不一致时,rec...

2017-10-20 15:28:46

阅读数 2438

评论数 0

部分读和部分写的原因及处理方法

部分读写是指,执行read或者write操作时,读取的或者写入的字节数小于请求的字节数。 部分读的原因有两个,一是接近文件末尾(EOF),二是被信号打断。 部分写的原因也是被信号打断。 其实,recv和send也会出现部分接收或者发送的情况,其原因都是被信号打断。、 (其他原因参考man手册,此处...

2017-10-19 11:16:40

阅读数 95

评论数 0

linux下利用coredump技术追查进程崩溃原因

最近项目中出现了一个问题,服务器端程序会突然崩溃退出,我们采取了coredump技术以找到崩溃原因,即确定进程退出时正在执行的函数是哪个,其状态如何。        如果系统开启了coredump,准确的说如果当前的shell环境开启了coredump,当前shell环境下的程序崩溃退出时,会把当...

2017-03-29 12:43:28

阅读数 4020

评论数 0

GDB观察栈的内存布局

进程的内存布局如下图所示,栈是其中一块向下(低地址处)增长的内存。  栈的英文是stack,堆的英文是heap,很多人把stact翻译成堆栈,是不对的。               栈由栈帧组成。当一个函数调用时,栈会为这个函数分配一个栈帧,用于存储函数的实参、局部变量、返回值...

2017-03-29 12:38:43

阅读数 2096

评论数 0

send函数可以直接发送结构体吗?

网络通信编程中,常常用结构体对待发送的数据进行封装。比如, struct msg { charcmd;  char len;  int extraData[0]; }; cmd表示命令,远端会根据cmd进行不同的处理;extraData是要发送的数组;len则表示extraData的占用的内存...

2017-03-28 17:40:36

阅读数 649

评论数 0

由开启coredump引起的对shell的深入探究

问题:要开coredump功能,需要把core file size的软限制值由0改为一个大于0的值,一般取unlimited。     有两个方法可以改变这个值,一个是ulimit命令,执行ulimit –c unlimited,可把core file size值设置为unlimited,但这只对...

2017-03-28 15:11:37

阅读数 805

评论数 0

何时让指针变量指向用malloc新分配的一块内存?

定义指针,有时是为了接收函数的返回值,如DIR* opendir (const char * path ),需要定义一个DIR指针接收返回值;有时是作为函数的实参传入,如int lstat(const char *path, struct stat *buf),需要定义一个struct stat指...

2017-03-14 20:38:32

阅读数 1384

评论数 0

UNIX下的5种IO模型

套接字的IO操作,如recvfrom,分为两个阶段: (1)等待内核中的接收缓冲区中有数据可读。 (2)将接收缓冲区中的数据复制进应用缓冲区。 调用IO操作的进程阻塞不仅指接收缓冲区没有数据时阻塞,数据到达后,从接收缓冲区复制数据时,也阻塞(难以理解)。 1,阻塞式IO 文件描述符open时,如果...

2016-12-13 16:29:40

阅读数 449

评论数 1

函数返回指针时涉及的作用域和生存期问题

今天写服务器程序时,需要在dir_list_handler函数中返回struct resp_dir_list结构体指针。 这时首先想到一个问题,指针是一个变量,在函数结束时其作用域和生存期就结束了(根据内存的进程布局,函数的形参和局部变量,都存储于栈中,当函数结束时,会自动销毁这些变量),那么指针...

2016-12-06 13:40:06

阅读数 208

评论数 0

非阻塞式connect的Windows实现

下面是connect的MSDN文档。由划线部分可知,当socket设置为非阻塞模式时,connect发起后会立即返回,然而,“三次握手”却依然进行,此时,connect返回SOCKET_ERROR,WSAGetLastError()返回WSAEWOULDBLOCK。如果需要判断connect是否成...

2016-11-22 16:07:29

阅读数 1181

评论数 0

非阻塞式connect的Linux实现

#include #include #include #include #include #include #include #include #include #include int main() { int sockfd; sockfd = socket...

2016-11-14 21:38:24

阅读数 175

评论数 0

非阻塞式connect的实现

本文以Windows为例讲解非阻塞式connect的实现,Linux下原理相同。     系统默认connect的超时时间是75s,现在我们想调整这个超时时间。send()和recv()函数可以通过setsockopt()函数设置阻塞后的超时时间, int timeout = 50...

2016-11-13 20:03:43

阅读数 478

评论数 0

struct内存对齐

struct内存对齐遵循以下两条原则:     1,  结构体中成员变量的内存地址相对于结构体首地址的偏移量,是其自身长度的整数倍。     2,  结构体变量的整体长度是其中最长成员变量长度的整数倍。     struct data{          char a;          sho...

2016-11-13 19:58:45

阅读数 110

评论数 0

8086系统中字的“对准存放”

先讲普通变量(如char short int long double)的内存对齐。     cpu根据数据总线条数分为:16位cpu(如INTEL 8086),32位cpu,64位cpu。现在Pentium以上的cpu都是64位。     cpu一次可以从内存读取的最大位数,由数据总线条数决定。...

2016-11-10 20:29:27

阅读数 1070

评论数 0

extern和头文件在多文件编译过程中的作用

多文件编译中,extern(外来的)是连接这些文件的关键。只要多个文件处于一个工程中(vs),或者使用gcc一起编译(linux,如gccfile1.c file2.c -otest),extern可以将本文件中定义的变量或者函数的作用域至其他文件,当然这些变量和函数必须是全局的。    至于头...

2016-11-07 20:44:17

阅读数 194

评论数 0

Linux下获取内存占有率和CPU占有率

#include #include #include //Cpu(s): 0.0%us, 0.1%sy, 0.0%ni, 99.1%id, 0.6%wa, 0.0%hi, 0.1%si, 0.0%st //Mem: 1004608k total, 414696k use...

2016-11-07 20:40:37

阅读数 364

评论数 0

C++笔记

类和结构体 不同点: 在结构体外部,结构体内部数据和函数都是公有的,而类内部成员可以规定公有、私有、保护这三种类型。   类继承来的成员的访问权限。P210 类成员的访问权限:类内部可以随便访问任何成员,因此类成员的访问权限是指定了类外部访问类成员的权限,即通过类对象访问类成员的权限。派...

2016-11-07 20:34:32

阅读数 98

评论数 0

赋值过程

此处的赋值指的是把常量赋值给变量,因此首先说明两者在内存中是如何存在的。     数据分为变量和常量。我们知道变量是有数据类型的,数据类型规定了变量所占内存大小以及数据存放形式。整型数据以补码形式存放,字符型数据以其ASCII码形式存放,浮点型数据以规范化的指数形式存放(小数点前数字为0,小...

2016-11-07 20:33:08

阅读数 158

评论数 0

linux网络编程笔记

基础知识        socket是一种IPC方法,它允许位于同一主机(计算机)或使用网络(IPV4或IPV6)连接起来的不同主机上的应用程序之间交换数据。P945        socket存在于一个通信domain中,现代操作系统至少支持下列domain:               ...

2016-11-07 20:31:57

阅读数 100

评论数 0

sscanf()中的格式说明符对数据的作用

由于sscanf与scanf的作用基本一致,后者是从控制台输入,前者是从内存中输入,此处以scanf解释格式说明符的作用。 格式说明符不对数据类型进行转换,而是向计算机说明这个数据是什么类型的数据,以便计算机存储相应的二进制。   1,scanf('%x',&data);输入12,...

2016-11-07 20:30:44

阅读数 515

评论数 0

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