2014年2月10日

关于进程exit后,内存释放释放的实践

摘要: 最近碰到一个问题,或许也是小猿们都会碰到的问题:内存泄露。都知道malloc后需要free才能释放内存,shmat后需要shmdt才能断掉内存区并使用IPC_RMID命令删除共享内存。那么如果是当前进程exit后,这些东西还需要收到清理吗?进程退出会清理除打开的文件描述符外,还做些什么呢?代码:思路:在进程中申请内存空间不释放,进程退出,查看当期是否有内存释放 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 10 //在进程中申请内存空间不释放,进... 阅读全文

posted @ 2014-02-10 11:25 净坛使者 阅读(4073) 评论(9) 推荐(1) 编辑

2013年10月13日

<转>如何利用socket进行HTTP访问

摘要: 如何利用socket进行HTTP访问平常我们要访问某个URL一般都是通过浏览器进行:提交一个URL请求后,浏览器将请求发向目标服务器或者代理服务器,目标服务器或者代理服务器返回我们所需要的数据,浏览器接收到这些数据后保存成文件并进行显示。下面我们看看如何自己利用winsock2.h中的接口来实现这个功能?为了简化问题,作以下假设:通过代理服务器进行HTTP访问,这样就省去了对URL进行DNS解析的步骤,假设代理服务器的地址为:192.168.0.1:808。这个功能由以下几个部分组成:1.如何建立连接?2.如何发送请求?3.如何接收数据?4.如何判断数据接收完成?下面我们依次来看下这些问题如何 阅读全文

posted @ 2013-10-13 22:29 净坛使者 阅读(654) 评论(0) 推荐(0) 编辑

2013年9月24日

<转> win7下破解已安装的VS2008

摘要: http://renfan.blog.51cto.com/3466724/754301在win7系统下,已安装的VS2008维护界面是不显示序列号输入的,需要按以下步骤进行才能破解1.点击“卸载/更改”按钮,然后到已有三个选项的界面(添加或删除功能|修复重新安装|卸载)2.打开一个下载的叫PatchVS2008的软件(我在附件里提供了,可以下载),注意要以管理员身份运行。3.点击PatchVS2008程序上的“打补丁”按钮,于是之前那个页面出现了输入序列号的框和升级按钮。4.输入一个序列号(PYHYP-WXB3B-B2CCM-V9DX9-VDY8T),然后点击升级,5.等个几分钟就好了再看VS 阅读全文

posted @ 2013-09-24 16:40 净坛使者 阅读(243) 评论(0) 推荐(0) 编辑

<转>杜绝 Defunct进程 僵尸进程

摘要: http://hanover.iteye.com/blog/881972在测试基于 DirectFB+Gstreamer 的视频联播系统的一个 Demo 的时候,其中大量使用 system 调用的语句,例如在 menu 代码中的 system("./play") ,而且多次执行,这种情况下,在 ps -ef 列表中出现了大量的 defunct 进程,对程序的运行时有害的。按说system的源码中应该已经包含了wait,但也不能排除开发板上这个版本的system中可能没有wait,总之,开发板上在调用system后添加wait之后,defunct进程不复存在了。下面谈谈 de 阅读全文

posted @ 2013-09-24 10:22 净坛使者 阅读(404) 评论(1) 推荐(0) 编辑

2013年9月23日

<转>linux操作系统编程——共享内存读写(采用信号量进行同步互斥)

摘要: http://blog.csdn.net/yanghaoran321/article/details/7872722程序要求: 创建一个写端和一个读端,写端写入数据后读端才开始读,读端读完数据后,写端才可以开始写,这样的同步采用信号机制实现,并且写端与读端打开顺序不同也能实现功能;程序如下:(1)write.c(写端)[cpp]view plaincopyprint?#include#include#include#include#include#include#include#include"sem.h"typedefstruct{charbuf[1024];}memor 阅读全文

posted @ 2013-09-23 10:38 净坛使者 阅读(844) 评论(0) 推荐(1) 编辑

2013年9月22日

<转>UNIX 共享内存应用中的问题及解决方法

摘要: http://www.ibm.com/developerworks/cn/aix/library/au-cn-sharemem/共享内存是一种非常重要且常用的进程间通信方式,相对于其它IPC机制,因其速度最快、效率最高,被广泛应用于各类软件产品及应用开发中。System V IPC 为UNIX平台上的共享内存应用制定了统一的API标准,从而为在UNIX/Linux平台上进行跨平台开发提供了极大的便利;开发人员基于一套基本相同的源代码,便可开发出同时支持AIX、Solaris、HP-UX、Linux等平台的产品。然而,各个平台对System V 标准的API在实现上各有差异,由此对相关应用开发带 阅读全文

posted @ 2013-09-22 16:57 净坛使者 阅读(371) 评论(0) 推荐(1) 编辑

<转>Linux 环境进程间通信(六)

摘要: http://www.ibm.com/developerworks/cn/linux/l-ipc/part6/一个套接口可以看作是进程间通信的端点(endpoint),每个套接口的名字都是唯一的(唯一的含义是不言而喻的),其他进程可以发现、连接并且与之通信。通信域用来说明套接口通信的协议,不同的通信域有不同的通信协议以及套接口的地址结构等等,因此,创建一个套接口时,要指明它的通信域。比较常见的是unix域套接口(采用套接口机制实现单机内的进程间通信)及网际通信域。1、背景知识linux目前的网络内核代码主要基于伯克利的BSD的unix实现,整个结构采用的是一种面向对象的分层机制。层与层之间有严 阅读全文

posted @ 2013-09-22 16:46 净坛使者 阅读(249) 评论(0) 推荐(1) 编辑

<转>Linux环境进程间通信(五): 共享内存(下)

摘要: http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index2.html系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的),后面还将阐述。1、系统V共享内存原理进程间需要共享的数据被放在一个叫做IPC共享内存区域的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地址空间中去。系统V共享内存通过shmget获得或创建一个IPC共享内存区域, 阅读全文

posted @ 2013-09-22 16:45 净坛使者 阅读(240) 评论(0) 推荐(1) 编辑

<转>Linux环境进程间通信(五): 共享内存(上)

摘要: http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,这样,数据内容一直保存在共享内存中,并没有写回文件。共享内存中的内容 阅读全文

posted @ 2013-09-22 16:39 净坛使者 阅读(260) 评论(0) 推荐(1) 编辑

<转>Linux环境进程间通信--信号灯(四)

摘要: http://www.ibm.com/developerworks/cn/linux/l-ipc/part4/一、信号灯概述信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号灯有以下两种类型:二值信号灯:最简单的信号灯形式,信号灯的值只能取0或1,类似于互斥锁。注:二值信号灯能够实现互斥锁的功能,但两者的关注内容不同。信号灯强调共享资源,只要共享资源可用,其他进程同样可以修改信号灯的值;互斥锁更强调进程,占用资源的进程使用完资源后,必须 阅读全文

posted @ 2013-09-22 16:28 净坛使者 阅读(503) 评论(0) 推荐(1) 编辑

导航