随笔分类 -  Linux

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 22 下一页
摘要:多线程程序里不准使用forkUNIX上C++程序设计守则3准则3:多线程程序里不准使用fork在多线程程序里,在“自身以外的线程存在的状态 ”下一使用fork的话,就可能引起各种各样的问题.比较典型的例子就是,fork出来的子进程可能会死锁.请不要,在不能把握问题的原委的情况下就在多线程程序里fork子进程.能引起什么问题呢?那看看实例吧.一执行下面的代码,在子进程的执行开始处调用doit()时,发生死锁的机率会很高.1 void* doit(void*) {23 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;45 pthre 阅读全文
posted @ 2012-01-04 12:46 super119 阅读(631) 评论(0) 推荐(1) 编辑
摘要:在 C++ 中class 和 struct 只有两点主要区别: 默认继承权限。默认情况下,class的继承是以private来继承而struct则是按照public进行继承。成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。 而其它的特性,struct和class基本上,甚至严格来说是一样的: 01//一个不常见的示例,将 struct 直接改为class也能编译通过。02//编译环境为 GCC 4.4.103#include <iostream>04#include <string>05using namespace s 阅读全文
posted @ 2011-12-30 10:57 super119 阅读(322) 评论(0) 推荐(0) 编辑
摘要:纯虚函数是一种特殊的虚函数,它的一般格式如下: class <类名> { virtual <类型><函数名>(<参数表>)=0; … }; 在许多情况下,在基类中不能对虚函数给出有意义有实现,而把它说明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。下面给出一个纯虚函数的例子。 #include class point { public: point(int i=0, int j=0) { x0=i; y0=j; } virtual void set() = 0; virtual void draw() = 0; protect 阅读全文
posted @ 2011-12-30 10:35 super119 阅读(212) 评论(0) 推荐(0) 编辑
摘要:Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意?A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。比如,为了转换一个类型为doubole的浮点数的指针到整型:代码:int i;double d;i = (int) d;或者:i = int (d);对 于具有标准定义转换的简单类型而言工作的很好。然而,这样的转换符也能不分皂白的应用于类(class)和类的指针。ANSI-C++标准定义了四个新的 转换符: 阅读全文
posted @ 2011-12-30 10:21 super119 阅读(319) 评论(0) 推荐(0) 编辑
摘要:转载自:http://www.cnblogs.com/daoluanxiaozi/archive/2011/12/04/2275520.html 本来只想看看书就过了,但是最近在看《设计模式》和《effective C++》这两本书,其中将到很多关于C++中封装,继承和多态的思想,所以不得不做一些笔记。 关于虚函数,在多态当中,一定要将基类的析构函数设置为虚函数并将其实现,只有这样,才能够达到按对象构造的逆序来析构对象;否则,析构的时候,只会析构基类的那一部分,那么派生类那一部分就无法成功析构了。 ?class shape{public:shape(){};virtual void draw. 阅读全文
posted @ 2011-12-30 10:07 super119 阅读(185) 评论(0) 推荐(0) 编辑
摘要:转载自:http://www.cnblogs.com/daoluanxiaozi/archive/2011/12/04/2275364.html §写在前面的学习过C++类的继承与多态的时候,但是很多的童鞋回过头来都忘记之中关于虚函数和纯虚函数的细节,甚至将他们混淆。 §虚函数 虚函数是动态多态性的基础,其调用的方式是动态联编(又称晚期联编,简单解释为只有在程序运行时才决定调用基类的还是子类的,系统会根据基类指针所指向的对象来决定要调用的函数); 非虚函数与其相反,是静态联编(调用已经在编译时期就决定了;在编译时期,系统已经根据指针所属的类型确定了要调用的函数)。 ?cla 阅读全文
posted @ 2011-12-30 10:06 super119 阅读(177) 评论(0) 推荐(0) 编辑
摘要:转载自:http://www.cnblogs.com/BlueTzar/articles/1223313.html 对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=88; int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include<iostream> usingnamespacestd; classCExample{ private: inta; public: CExample(intb) {a=b;} voidShow() { cout<<a<<endl 阅读全文
posted @ 2011-12-30 10:01 super119 阅读(163) 评论(0) 推荐(0) 编辑
摘要:转自:http://www.cnblogs.com/iroultron/archive/2011/12/25/2301362.html相信有许多同学都对free命令中的buffers cached十分不理解,今天笔者就对free命令机器结果做一个详细的剖析。 以下是笔者在虚拟机上运行的debian系统的free情况。该虚拟机内存只有128M,同时分配了256M的SWAP交换区。 total used free shared buffers cached Mem: 124788 11... 阅读全文
posted @ 2011-12-26 10:12 super119 阅读(550) 评论(0) 推荐(0) 编辑
摘要:转自:http://www.cnblogs.com/sujz/archive/2011/12/14/2288050.htmlinode 在讨论Linux系统的链接之前,不得不先说下inode。Linux文件系统中的每一个对象都有唯一的inode索引,每一个inode号和文件系统的 一个对象一一对应,要查看文件或目录的inode号可在ls命令中使用-i选项,每个目录下的.(当前目录)和..(上级目录)都是硬链接。如下面例子: root@vrlab726-desktop:~/Desktop# pwd/root/Desktoproot@vrlab726-desktop:~/Desktop# ... 阅读全文
posted @ 2011-12-15 10:52 super119 阅读(2557) 评论(0) 推荐(0) 编辑
摘要:fork系统调用产生一个新的进程, 叫子进程, 是调用进程的一个复制品. 调用进程叫父进程, 子进程继承了父进程的几乎所有的属性:. 实际UID,GID和有效UID,GID.. 环境变量.. 附加GID.. 调用exec()时的关闭标志.. UID设置模式比特位.. GID设置模式比特位.. 进程组号.. 会话ID.. 控制终端.. 当前工作目录.. 根目录.. 文件创建掩码UMASK.. 文件长度限制ULIMIT.. 预定值, 如优先级和任何其他的进程预定参数, 根据种类不同决定是否可以继承.. 还有一些其它属性.但子进程也有与父进程不同的属性:. 进程号, 子进程号不同与任何一个活动的进程 阅读全文
posted @ 2011-11-22 17:54 super119 阅读(2014) 评论(0) 推荐(0) 编辑
摘要:1. The load address is arbitrary, but was standardized back with SYSV for x86. It's different for every architecture. What goes above and below is also arbitrary, and is often taken up by linked in libraries and mmap() regions. 2. The answer is really: a bunch of things. There is no magical mea. 阅读全文
posted @ 2011-11-21 14:43 super119 阅读(1990) 评论(0) 推荐(0) 编辑
摘要:Prelink is a program, totally not the same thing with Linux's ld.so's LD_PRELOAD environment variable. prelink is a program which modifies ELF shared libraries and ELF dynam- ically linked binaries, so that the time which dynamic linker needs for their relocation at startup significantly dec 阅读全文
posted @ 2011-11-21 14:05 super119 阅读(323) 评论(0) 推荐(0) 编辑
摘要:1. gcc -c 生成.o2. ar rcs <static lib filename> <object file list> 阅读全文
posted @ 2011-11-18 17:38 super119 阅读(189) 评论(0) 推荐(0) 编辑
摘要:测试代码:super@super-desktop:~$catlib.h#ifndef_LIB_H#define_LIB_Hvoidlib_func();#endifsuper@super-desktop:~$catlib.c#include<stdio.h>intsuper_a=0;voidlib_func(){printf("Ais:%d\n",super_a);return;}super@super-desktop:~$catmain.c#include<stdio.h>#include"lib.h"intsuper_a=0; 阅读全文
posted @ 2011-11-18 17:29 super119 阅读(1848) 评论(0) 推荐(0) 编辑
摘要:测试代码:super@super-desktop:~$cata.c#include<stdio.h>#include"b.h"inta;intmain(){a=100;b_process();printf("Ainmainis:%d\n",a);return0;}super@super-desktop:~$catb.c#include<stdio.h>doublea;voidb_process(){a=300;printf("Ainbis:%f\n",a);}super@super-desktop:~$catb 阅读全文
posted @ 2011-11-18 17:14 super119 阅读(278) 评论(0) 推荐(0) 编辑
摘要:可以使用examine命令(简写是x)来查看内存地址中的值。x命令的语法如下所示: x/<n/f/u> <addr> n、f、u是可选的参数。 n 是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容。 f 表示显示的格式,参见上面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。 u 表示从当前地址往后请求的字节数,如果不指定的话,GDB默认是4个bytes。u参数可以用下面的字符来代替,b表示单字节,h表示双字节,w表示四字 节,g表示八字节。当我们指定了字节长度后,GDB会从指内存定的内存地址开始,读写指定字节 阅读全文
posted @ 2011-11-18 17:04 super119 阅读(1147) 评论(0) 推荐(0) 编辑
摘要:sudo apt-get install gstreamer0.10-plugins-ugly-multiverse 阅读全文
posted @ 2011-11-11 12:48 super119 阅读(299) 评论(1) 推荐(0) 编辑
摘要:转自:http://www.cnblogs.com/stephen-liu74/archive/2011/11/10/2240461.html一. 特殊文件:/dev/null和/dev/tty Linux系统提供了两个对Shell编程非常有用的特殊文件,/dev/null和/dev/tty。其中/dev/null将会丢掉所有写入它的数 据,换句换说,当程序将数据写入到此文件时,会认为它已经成功完成写入数据的操作,但实际上什么事都没有做。如果你需要的是命令的退出状态,而非它的输 出,此功能会非常有用,见如下Shell代码: /> vi test_dev_null.sh #!/bin/b. 阅读全文
posted @ 2011-11-10 09:38 super119 阅读(350) 评论(0) 推荐(0) 编辑
摘要:sudo apt-get install autoconf automake libtool libglib2.0-dev libxml2-dev libxext-dev yasm这样就可以写个长命令行一次性将gstreamer, gst-plugins-base, gst-plugins-good, gst-plugins-ugly, gst-plugins-bad, gst-ffmpeg全部编译完了。 阅读全文
posted @ 2011-11-01 14:22 super119 阅读(1701) 评论(0) 推荐(0) 编辑
摘要:gstreamer官方有一个script:gst-uninstalled,这个脚本会export一堆环境变量,如PATH, LD_LIBRARY_PATH, PKG_CONFIG_PATH...,从而保证执行了改脚本之后,所有的gstreamer相关的可执行文件,库,配置都指向我们设定的目录下的gstreamer的版本。这就是说,我们可以在不影响系统中已经安装的gstreamer的前提下,自己搭一个自己需要的gstreamer开发环境。以下是详细的操作步骤:gst-uninstalled is used to create a develop environment based on gst. 阅读全文
posted @ 2011-11-01 14:19 super119 阅读(497) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 22 下一页