C
文章平均质量分 59
吖桂
这个作者很懒,什么都没留下…
展开
-
Linux Socket编程
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型转载 2014-11-30 12:57:24 · 321 阅读 · 0 评论 -
Linux系统编程--read/write
read/write read函数从打开的设备或文件中读取数据。#include ssize_t read(int fd, void *buf, size_t count); 返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0参数count是请求读取的字节数,读上来的数据保存在缓冲区buf中,同时文件的当前读转载 2015-04-02 13:04:22 · 306 阅读 · 0 评论 -
Linux环境进程间通信(二): 信号(上)
一、信号及信号来源信号本质信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强转载 2015-03-25 15:04:22 · 266 阅读 · 0 评论 -
《unix高级环境编程》进程关系——控制终端、作业控制和守护进程
首先总结下进程、进程组与会话之间的关系。进程属于一个进程组,进程组属于一个会话,会话可能有或没有控制终端。以下是一些基本概念: 僵死进程:一个子进程已经终止,但是其父进程没有对其进行善后处理(获取终止子进程有关信息,释放它仍占有的资源),则该子进程就成为僵死进程。消灭僵尸进程的唯一方法是终止其父进程。 孤儿进程:子进程的父进程已经终止,但是该进程依然存在,则称该子转载 2015-04-08 19:07:58 · 257 阅读 · 0 评论 -
linux文件链接
链接:一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。我们首先来了解一下几个名词:索引节点(inode)要了解链接,我们首先得了解一个概念,叫索引节点(inode)。在Linux系统中,内核为每一个新创建的文件分配一个Inode(原创 2015-04-15 11:29:43 · 223 阅读 · 0 评论 -
C语言编程创建函数fork() 执行解析
最近在看进程间的通信,看到了fork()函数,虽然以前用过,这次经过思考加深了理解。现总结如下:1.函数本身(1)头文件#include#include(2)函数原型pid_t fork( void);(pid_t 是一个宏定义,其实质是int 被定义在#include中)返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1原创 2015-01-20 11:11:06 · 398 阅读 · 0 评论 -
C语言中的指针和内存泄漏
引言对于任何使用 C 语言的人,如果问他们 C 语言的最大烦恼是什么,其中许多人可能会回答说是指针和内存泄漏。这些的确是消耗了开发人员大多数调试时间的事项。指针和内存泄漏对某些开发人员来说似乎令人畏惧,但是一旦您了解了指针及其关联内存操作的基础,它们就是您在 C 语言中拥有的最强大工具。本文将与您分享开发人员在开始使用指针来编程前应该知道的秘密。本文内容包括原创 2014-12-24 23:10:16 · 336 阅读 · 0 评论 -
二维数组动态分配和释放
(1)已知第二维Code-1char (*a)[N];//指向数组的指针a = (char (*)[N])malloc(sizeof(char *) * m);printf("%d\n", sizeof(a));//4,指针printf("%d\n", sizeof(a[0]));//N,一维数组free(a);(2)已知第一维Code-2char* a[M转载 2014-12-09 17:11:06 · 229 阅读 · 0 评论 -
Segmentation Fault in Linux(段错误)
何为段错误:当程序试图访问不被允许访问的内存区域(比如,尝试写一块属于操作系统的内存),或以错误的类型访问内存区域(比如,尝试写一块只读内存)。这个描述是准确的。SIGSEGV是在访问内存时发生的错误,它属于内存管理的范畴SIGSEGV是一个用户态的概念,是操作系统在用户态程序错误访问内存时所做出的处理当用户态程序访问(访问表示读、写或执行)不允许访问的内存时,产生SIGS原创 2014-11-30 18:47:43 · 407 阅读 · 0 评论 -
read/write函数与(非)阻塞I/O的概念
read/write 函数read函数从打开的设备或文件中读取数据。#include ssize_t read(int fd, void *buf, size_t count);返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0参数count是请求读取的字节数,读上来的数据转载 2014-11-30 13:39:36 · 317 阅读 · 0 评论 -
C中的继承和多态
1、引言继承和多态是面向对象语言最强大的功能。有了继承和多态,我们可以完成代码重用。在C中有许多技巧可以实现多态。本文的目的就是演示一种简单和容易的技术,在C中应用继承和多态。通过创建一个VTable(virtual table)和在基类和派生类对象之间提供正确的访问,我们能在C中实现继承和多态。VTable能通过维护一张函数表指针表来实现。为了提供基类和派生类对象之间的访问,我们可以在基转载 2015-01-06 20:51:55 · 305 阅读 · 0 评论 -
Linux多线程编程(不限Linux)
前言线程?为什么有了进程还需要线程呢,他们有什么区别?使用线程有什么优势呢?还有多线程编程的一些细节问题,如线程之间怎样同步、互斥,这些东西将在本文中介绍。我在某QQ群里见到这样一道面试题:是否熟悉POSIX多线程编程技术?如熟悉,编写程序完成如下功能:1)有一int型全局变量g_Flag初始值为0;2) 在主线称中起动线程1,打印“this is thread1”,并将g转载 2015-01-06 23:02:26 · 218 阅读 · 0 评论 -
动态存储变量与静态存储变量
在C语言中,每一个变量都有3个属性:一是“数据类型”,如int、float、char等,它确定了变量存储长度和运算方式;二是“作用域”,如上节所述,由变量所处的位置确定变量是局部变量还是全局变量,从而确定变量的作用域;三是“存储类别”,即变量在内存中的存储方式,不同的存储方式决定了变量存在的时间,即生存期。 静态存储的变量是指变量在程序执行的全过程中始终占据着大小固定的存储单元转载 2014-12-03 14:07:54 · 1045 阅读 · 0 评论 -
字符串常量
字符常量是由一对单引号括起来的单个字符。不能将字符串常量与字符常量混淆。字符常量可以赋值给字符变量,如"char b='a';",但不能把一个字符串常量赋给一个字符变量,同时也不能对字符串常量赋值!(1)含义字符串常量是一对双引号括起来的字符序列。例如下面的是合法的字符串常量:"how do you do.","CHINA","a","$123.45"存储:字符串中的字符依次存原创 2014-12-02 12:10:05 · 554 阅读 · 0 评论 -
未初始化和非法的指针
下面这个代码段说明了一个极为常见的错误:int *a;...*a = 12;这个声明创建了一个名叫a的指针变量,后面那条赋值语句把12存储在a所指向的内存位置。 警告: 但是究竟a指向哪里呢?我们声明了这个变量,但从未对它进行初始化,所以我们没有办法预测12这个值将存储于什么地方。从这一点看,指针变量和其他变量并无区别。如果变量是静态的,它会被初始化为0;但原创 2014-12-02 12:19:39 · 514 阅读 · 0 评论 -
结构体和联合体
共用体构造数据类型,也叫联合体用途:使几个不同类型的变量共占一段内存(相互覆盖)结构体是一种构造数据类型用途:把不同类型的数据组合成一个整体-------自定义数据类型---------------------------------------------------------------结构体变量所占内存长度是各成员占的内存长度的总和。共同体变量所占内存长度是各最原创 2014-12-04 13:39:47 · 263 阅读 · 0 评论 -
getchar,putchar等函数详解
fgetc (由文件中读取一个字符)头文件: include函数声明: int fgetc(FILE * stream);说明:fgetc()从参数stream所指的文件中读取一个字符.若读到文件尾而无数据时便返回EOF.字符读取函数fgetc()可从文件数据流中一次读取一个字符,然后读取光标移动到下一个字符,并逐步将文件的内容读出返回值 : getc(转载 2014-12-07 20:17:29 · 447 阅读 · 0 评论