进程间通信之共享内存概念篇

共享内存区是最快的可用IPC形式。它允许多个不相关的进程去访问同一部分逻辑内存。如果需要在两个运行中的进程之间传输数据,共享内存将是一种效率极高的解决方案。一旦这样的内存区映射到共享它的进程的地址空间,这些进程间数据的传输就不再涉及内核。这样就可以减…

阅读详细 »

进程间通信之System V消息队列和 Posix 消息队列

消息队列可以认为是一个消息链表,System V 消息队列使用消息队列标识符标识。具有足够特权的任何进程都可以往一个队列放置一个消息,具有足够特权的任何进程都可以从一个给定队列读出一个消息。在某个进程往一个队列写入消息之前,并不需要另外某个进程在该队列上…

阅读详细 »

暑期讲座遗漏知识点整理一

一、有符号数与无符号数的强制类型转换问题 上次遇到一个问题,在比较两sizeof返回值的时候出现了意想不到的错误,原因在于sizeof返回的是无符号类型,所以出现错误。 有符号数和无符号数的区别在于第一位表示正负数,还是数值。换句话说,有符号的二进制数最高位是…

阅读详细 »

再议C语言(编译与链接)讲座整理

编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。 编译的完整过程:C源程序-->预编译处理(.c)-->…

阅读详细 »

再议C语言第二节(数组与指针)讲座整理

首先先区分一下两个容易混淆的定义: 数组指针是指向数组首元素的地址的指针,其本质为指针(这个指针存放的是数组首地址的地址,相当于2级指针,这个指针不可移动); 指针数组是数组元素为指针的数组,其本质为数组。例如:*p[2]是指针数组,实质是一个数组,里面…

阅读详细 »

再议C语言第一节(C类型与运算)讲座整理

一、数据类型 1、float和double 首先先分享一下浮点数的相关知识。 浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方…

阅读详细 »

linux C编程常见断错误总结

定义   所谓的段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gd tr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的 gdt表,后13位保存 相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级…

阅读详细 »

linux C中关于进程控制随笔

    进程组:是一个或多个进程的集合。进程组有进程组ID来唯一标识。除了进程号(PID)之外,进程组ID也是一个进程的必备属性。每个进程组都有一个组长进程,其组长进程的进程号等于进程组ID。且该进程组ID不会因组长进程的退出而受到影响。  &n…

阅读详细 »

fstat、stat和lstat 区别

在介绍三者的区别之前,首先介绍的是一个非常重要的结构体类型,名字叫做struct stat,这是一个保存文件状态信息的结构体,其类型如下: struct stat {     dev_t     st_dev;     /* 文件所在设备的标识&…

阅读详细 »

C语言中关于INT_MIN宏的一些问题

在进行数据表达和运算的时候,二进制补码表示法是非常直观和快捷的,但是在数的上下界时往往会出现问题,这需要我们特别注意。例如在C语言的头文件<limits.h>里面看到    #define INT_MAX        2147483647    #defi…

阅读详细 »