linux
dongzhongshu
这个作者很懒,什么都没留下…
展开
-
段错误的调试
作者:xiaosuo 我们在用C/C++语言写程序的时侯,内存管理的绝大部分工作都是需要我们来做的。实际上,内存管理是一个比较繁琐的工作,无论你多高明,经验多丰富,难免会在此处犯些小错误,而通常这些错误又是那么的浅显而易于消除。但是手工“除虫”(debug),往往是效率低下且让人厌烦的,本文将就"段错误"这个内存访问越界的错误谈谈如何快速定位这些"段错误"的语句。下面将就以下的一个存在段错误的转载 2008-01-23 09:08:00 · 776 阅读 · 0 评论 -
如何远程登陆VM虚拟机
<br />1、选择VM中的桥接模式。<br />2、进入虚拟机linux,vi /etc/sysconfig/network-scripts/ifcfg-eth0,进行一下配置:<br /> DEVICE=eth0<br />BOOTPROTO=none<br />IPADDR=192.168.11.204<br />NETMASK=255.255.255.0<br />GATEWAY=192.168.11.1<br />ONBOOT=yes<br />#HWADDR=00:0c:29:e4:7b原创 2010-08-20 17:18:00 · 2183 阅读 · 0 评论 -
如何给linux添加IP?
<br />转自:http://iminmin.blog.51cto.com/689308/205774<br />在我们用Linux来架设Web服务器和FTP服务器的时候有可能会遇到在一台服务其上实现多个站点的需要(虚拟主机),这种情况下我们可以通过增加物理网卡,来解决。但是我们的服务器上会有多少多余的扩展槽呢? 那么我们可以通过给一个网卡绑定多个IP地址来实现这一功能,下面我们就来看看如何给一个网络卡绑定多个IP地址。 (IIS的多虚拟主机架设,Apache下基于IP的虚拟主机都是通过这个来原创 2010-08-31 10:52:00 · 2328 阅读 · 0 评论 -
linux 内核调试
<br /><br />1:<br />linux-2.6.15.5-kgdb-2.4.tar.bz2,linux-2.6.15.tar.gz<br />2:<br />patch -p1 < ../linux-2.6.15.5-kgdb-2.4/core-lite.patch<br />patch -p1 < ../linux-2.6.15.5-kgdb-2.4/i386-lite.patch<br />patch -p1 < ../linux-2.6.15.5-kgdb-2.4/8250.patch<b原创 2010-08-30 10:40:00 · 539 阅读 · 0 评论 -
linux和windows如何添加路由
<br />1、添加一条路由表<br />Route add 60.232.142.40 mask 255.255.255.248 192.168.100.250 metric 3 if 2<br />添加一条路由记录,所有到60.232.142.40/29网段的数据包,都通过2号接口卡(网卡)走192.168.100.250的网关,优先级为3。(结果会怎样?)<br />Route add –p 60.232.142.40 mask 255.255.255.248 192.168.100.25原创 2010-08-31 10:54:00 · 6484 阅读 · 0 评论 -
linux 的运行级别
<br />标准的linux运行级为3或者5,如果是3的话,系统就在多用户状态。如果是5的话,则是运行着X Window 系统。如果目前正在3或5,而你把运行级降低到2的话,init就会执行K45named脚本。<br /> 不同的运行级定义如下:(可以参考Red Hat linux里面的/etc/inittab)<br /> # 缺省的运行级,RHS用到的级别如下:<br /> # 0 - 停机(千万不要把initdefault设置为0 )<br /> # 1 - 单用户模式<br /> # 2原创 2010-09-01 10:14:00 · 551 阅读 · 0 评论 -
mysql的使用
<br /> [转贴自http://homepage.qdcatv.com.cn/antonio/mysql/mysql.htm] <br /> <br /> 执行一个查询有以下几个步骤要做。首先执行一个查询,然后保存结果, <br /> 得到的是一个子集。这里是一个小例子: <br /> <br /> #include <br /> #include <br /> #include "mysql.h" <br /> <br /> MYSQL原创 2010-09-01 16:46:00 · 1097 阅读 · 0 评论 -
用init命令玩转linux运行级别
<br />也许大家偶然会发现/sbin里有个init命令。你知道它是如何使用的吗? <br /> 如果你不喜欢使用图形登录方式,如何能够让用户在控制台下运行startx命令呢? <br /> 有时你要维护服务器,暂时不希望别的用户登录系统,但自己仍对网络有访问权,又该怎么办呢? <br /> 其实,如果你知道了三个问题之间的关系,它们就不成问题了。让我们这里入手了解一下Linux的运行级别(runlevel)吧! <br /> 其实init是Linux系统里的根进程,是系统所有进程的祖先。它的主要原创 2010-09-01 10:15:00 · 872 阅读 · 0 评论 -
mysql的备份
<br />mysql备份命令 <br />关键字: mysql <br />还原或者导入数据库命令: <br /><br />mysql -u root --password=root <br /><br />备份数据库命令: <br /><br />mysqldump -u root --password=root --database helloworld >helloworld_backup.sql <br /><br /><br />其他用法: <br /><br />1.导出整个数据库 <br原创 2010-09-01 16:46:00 · 563 阅读 · 0 评论 -
bash的基本用法
<br />这两天写makefile需要用到bash语句,就学到了一些基本用法,其中有一些要点纪录如下:<br />1、在编写bash命令时,需要在刚开始加上@标识符,并且所有命令都需要写在一行,另外每个关键字都需要用空格格开。<br />2、在for语句中引用变量之后,在if语句中如果需要引用该变量,则需要加上双引号。<br />下面举个例子:<br /><br />INCLUDEPATH=./include<br />LIBPATH=./lib<br />LIBS=$(LIBPAHT) -lmysql<原创 2010-09-03 10:42:00 · 989 阅读 · 0 评论 -
在虚拟机上如何配置apache?
<br />这个问题,让我弄了很长时间,把过程记下来吧!<br />1、安装apache:make,make install。<br />2、把虚拟机配置成桥接模式。<br />3、把虚拟机防火墙关掉。<br />4、把虚拟机和客户机设置成同一个网段内。<br />5、启动apache:/usr/local/apache2/bin/apachectl start<br />6、配置apache 的conf目录下面的http.conf:<br /> ServerName: 主机地址和端口<br />原创 2010-09-17 10:38:00 · 3819 阅读 · 0 评论 -
当mysql中指定的socket路径改变时如何通过ODBC进行访问?
<br />困扰我一下午的问题,现在终于明朗了。<br />我们都知道,mysql安装的时候客户端和服务端连接的时候在默认的情况下都是通过/tmp/mysql.sock这个链接来完成的。但是由于我们为了改变数据库的存放路径,我们也改变了这个默认的路径,可以通过my.cnf这个配置文件来修改,具体的参见我的另外一篇博文。<br /> <br />但是在 在改了这个sock之后,我用odbc连的时候却发现总是连不上,提示“[08S01][unixODBC][MySQL][ODBC 5.1 Driver]Can'原创 2010-09-27 17:52:00 · 4048 阅读 · 0 评论 -
mysql的多线程安全问题:在mysql_real_connect时出现段错误。
<br /> 问题简化重现19 #include<br />20 #include 21<br />22 void* func(void* arg)<br />23 {<br />24 MYSQL* mysql = (MYSQL *)arg;<br />26 mysql_real_connect(mysql, “127.0.0.1″, “root”, “213456″, “FC_word”, 3344, NULL, 0);<br />27 mysql_close(mysql);<br />29 return原创 2010-09-30 09:50:00 · 13407 阅读 · 2 评论 -
关于线程库pthread_cond_signal丢失的问题
<br />这两天写了一个关于C++的线程库,刚开始老是出现信号丢失的问题,百思不得其解。后来才发现原来要pthrea_cond_wait和pthread_cond_signal之间要用一个条件变量来控制。例如:while(count==0)pthread_cond_wait();count--;<br />在pthread_cond_signal处,要用if(count==0)pthread_cond_signal();count++.<br />下面是我写的线程池代码:<br />.h文件:<br />原创 2010-12-08 17:03:00 · 5310 阅读 · 0 评论 -
geteuid()和getuid()的区别
<br />geteuid():返回有效用户的ID。<br />getuid():返回实际用户的ID。<br />有效用户ID(EUID)是你最初执行程序时所用的ID <br /> 表示该ID是程序的所有者 <br /> 真实用户ID(UID)是程序执行过程中采用的ID <br /> 该ID表明当前运行位置程序的执行者 <br /> 举个例子 <br /> 程序myprogram的所有者为501/anna <br /> 以501运行该程序此时UID和EUID都是501原创 2011-03-01 11:41:00 · 15157 阅读 · 3 评论 -
alarm(0)函数的作用
<br />alarm也称为闹钟函数,它可以再进程中设置一个定时器,当定时器指定的时间到时,它向进城发送SIGALARM信号。要注意的是,一个进程只能有一个闹钟时间,如果在调用alarm之前已设置过闹钟时间,则任何以前的闹钟时间都被新值所代替。<br /><br />当在调用alarm()前已经设置了一个闹钟,那么我们可以调用alarm(0)来取消此闹钟,并返回剩余时间。<br />函数原型<br /> unsigned int alarm(unsigned int seconds)函数参数<br />原创 2011-03-23 10:30:00 · 11107 阅读 · 0 评论 -
close_on_exec标志位的作用
<br />lose_on_exec 是一个进程所有文件描述符(文件句柄)的位图标志,每个比特位代表一个打开的文件描述符,用于确定在调用系统调用execve()时需要关闭的文件句柄(参见include/fcntl.h)。当一个程序使用fork()函数创建了一个子进程时,通常会在该子进程中调用execve()函数加载执行另一个新程序。此时子进程将完全被新程序替换掉,并在子进程中开始执行新程序。若一个文件描述符在close_on_exec中的对应比特位被设置,那么在执行execve()时该描述符将被关闭,否则该原创 2011-03-23 10:30:00 · 7983 阅读 · 1 评论 -
mysql安装之后没有mysql数据库的原因
mysql安装完之后,登陆后发现只有两个数据库:mysql> show databases;+--------------------+| Database |+--------------------+| information_schema原创 2011-10-09 15:52:21 · 1922 阅读 · 0 评论 -
如何远程登陆VM虚拟机
<br />1、选择VM中的桥接模式。<br />2、进入虚拟机linux,vi /etc/sysconfig/network-scripts/ifcfg-eth0,进行一下配置:<br /> DEVICE=eth0<br />BOOTPROTO=none<br />IPADDR=192.168.11.204<br />NETMASK=255.255.255.0<br />GATEWAY=192.168.11.1<br />ONBOOT=yes<br />#HWADDR=00:0c:29:e4:7b原创 2010-08-20 17:18:00 · 4233 阅读 · 0 评论 -
如何用SSH连接虚拟机linux(不在同一个主机上)
<br />1、选择VM中的桥接模式。<br />2、进入虚拟机linux,vi /etc/sysconfig/network-scripts/ifcfg-eth0,进行一下配置:<br /> DEVICE=eth0<br />BOOTPROTO=none<br />IPADDR=192.168.11.204<br />NETMASK=255.255.255.0<br />GATEWAY=192.168.11.1<br />ONBOOT=yes<br />#HWADDR=00:0c:29:e4:7b原创 2010-08-17 10:13:00 · 1856 阅读 · 0 评论 -
offsetof 详解
offsetof 宏在 中定义了个 offsetof(s,m)宏,这个宏用来取得结构体中元素的偏移量很方便,下面是此宏的具体定义:#define offsetof(s, m) (size_t)&(((s *)0)->m)ofssetof(s, m) 其中,s 是结构体名,m 是它的一个成员。s 和 m 同是宏 offsetof() 的形参,这个宏返回的是原创 2010-05-28 18:00:00 · 4317 阅读 · 0 评论 -
Linux的共享内存
采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信转载 2008-01-23 16:59:00 · 1262 阅读 · 0 评论 -
关于共享内存的一些心得
和我的导师在一块搞了两天,终于弄明白了内存为什么泄漏。原来是每次shmat之后忘了shmat了,因为我们一般用这样的函数形式:shmat(shm_id, 0, 0);因为第二个参数是零,(参见shmat函数说明),所以每次at的时候系统都会连向一个未被使用的地址,因为我们每次at之后都没有shmdt,所以系统会认为这块内存是被占用,所以当又一次shmat的时候系统会重新分配一块内存 ,然后返回原创 2008-01-23 17:14:00 · 1051 阅读 · 0 评论 -
Linux系统调用--semctl函数详解
来源:http://club.cn.yahoo.com/bbs/threadview/1200062866_109__pn1.html【semctl系统调用】 功能描述: 在指定的信号集或信号集内的某个信号上执行控制操作。 用法: #include #include #include int semctl(int semid, int semnum, int cmd转载 2008-01-21 13:31:00 · 15226 阅读 · 0 评论 -
Linux进程间通信
Linux环境进程间通信:管道及有名管道 管道及有名管道 在本系列序中作者概述了 linux 进程间通信的几种主要手段。其中管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。 认清管道和有名管道的读写规则是在程序中应用它转载 2008-01-23 16:57:00 · 719 阅读 · 0 评论 -
linux中的段错误总结
作者: falcon 发表日期: 2006-09-27 15:20 目录1。什么是段错误?2。为什么段错误这么“麻烦”?3。编程中通常碰到段错误的地方有哪些?4。如何发现程序中的段错误并处理掉?正文1。什么是段错误?下面是来自Answers.com的定义: Quote:转载 2008-01-23 09:07:00 · 1165 阅读 · 0 评论 -
makefile的编写
来源:http://dev.csdn.net/article/85014.shtm概述什么是makefile?或许很多Windows的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要 作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还 是要了解HTML的标识的含义转载 2008-01-31 11:43:00 · 695 阅读 · 0 评论 -
system()函数
system()函数功能强大,很多人用却对它的原理知之甚少先看linux版system函数的源码:#include #include #include #include int system(const char * cmdstring){ pid_t pid; int status; if(cmdstring == NULL){ retur转载 2007-12-18 19:40:00 · 719 阅读 · 0 评论 -
关于Linux中动态库的一些学习
类似Windows系统中的动态链接库,Linux中也有相应的共享库用以支持代码的复用。Windows中为*.dll,而Linux中为*.so,我来详细的告诉你如何在linux下编写动态库,以及如何使用它.在linux下编写动态链接库的步骤: 1. 编写库的头文件和源文件.2. 把所有涉及到的源文件用如下方式编译为目标文件: g++/gcc -g -c -转载 2008-01-14 10:40:00 · 457 阅读 · 0 评论 -
linux动态链接库的创建和使用
作者:yacsha 和Windows系统一样Linux也有静态/动态链接库,下面介绍创建和使用方法:假设有下面几个文件:头文件String.h,声明相关函数原形,内容如下:Strlen.c:函数Strlen的实现,获取给定字符串的长度,内容如下:Strlnen.c:函数StrNlen的实现,获取给定字符串的长度,如果输入字符串的长度大于指定的最大长度,则返回最大长度,否者返回字符串的实转载 2008-01-14 11:05:00 · 449 阅读 · 0 评论 -
linux-mmap函数的介绍
mmap函数是unix/linux下的系统调用,来看《Unix Netword programming》卷二12.2节对mmap的介绍:The mmap function maps either a file or a Posix shared memory object into the address space of a process.We use this function for th转载 2008-01-17 13:39:00 · 704 阅读 · 0 评论 -
关于驱动程序中的ioctl
coly(李勇)http://www.linuxforum.net/doc/ioctl-coly.html我这里说的ioctl函数是在驱动程序里的,因为我不知道还有没有别的场合用到了ioctl, 所以就规定了我们讨论的范围。为什么要写篇文章呢,是因为我前一阵子被ioctl给搞混 了,这几天才弄明白它,于是在这里清理一下头脑。 一、 什么是转载 2008-01-17 14:23:00 · 718 阅读 · 0 评论 -
write的奥秘
coly(李勇)http://www.linuxforum.net/doc/write-coly.html 在Linux下我们在使用设备的时候,都会用到write这个函数,通过这个函数我们可以象使 用文件那样向设备传送数据。可是为什么用户使用write函数就可以把数据写到设备里面 去,这个过程到底是怎么实现的呢? 这个奥秘就在于设备驱动程序转载 2008-01-17 15:51:00 · 2640 阅读 · 1 评论 -
Linux环境进程间通信(四):信号灯
来源:http://www.bc-cn.net/Article/kfyy/vc/jszl/200708/5852.html一、信号灯概述信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号灯有以下两种类型: 二值信号灯原创 2008-01-21 13:54:00 · 890 阅读 · 1 评论 -
C语言的inline
本文来自http://blog.pfan.cn/vfdff/36003.html本文介绍了GCC和C99标准中inline使用上的不同之处。inline属性在使用的时候,要注意以下两点:<br />inline关键字在GCC参考文档中仅有对其使用在函数定义(Definition)上的描述,而没有提到其是否能用于函数声明(Declare)。 <br />从inline的作用来看,其放置于函数声明中应当也是毫无作用的:inline只会影响函数在translation unit(可以简单理解为C源码文件)内的编译原创 2010-06-30 17:31:00 · 381 阅读 · 0 评论 -
automake 的使用
<br />automake 所产生的 Makefile 除了可以做到程序的自动编译和链接外,还可以用来生成各种文档(如manual page、info文件),可以将源代码文件包装起来以供发布。所以程序源代码所存放的目录结构最好符合GNU的标准惯例。下面以hello.c程序生成Makefile文件作为例子。<br />1,在当前目录下创建一个名为hello的子目录。hello这个目录用于存放 hello.c这个程序及相关文件。新建一个源程序文件hello.c#include <stdio.h><br /><原创 2010-07-13 09:28:00 · 692 阅读 · 0 评论 -
.bin安装文件制作
<br />Linux常见的安装为tar,zip,gz,rpm,deb,bin等。我们可以简单的分为三类,<br />第一:打包或压缩文件tar,zip,gz等,一般解压后即可,或者解压后运行sh文件;<br />第二:对应的有管理工具的deb,rpm等,通常的这类安装文件可以通过第三方的命令行或UI来简单的安装,例如Ubuntu中的apt来安装deb,Redhat中的yum来安装rpm;<br />第三:像.bin类,其实就是把sh和zip打包为bin,或把sh和rpm打包为bin等,当在命令行运行bin原创 2010-07-13 09:34:00 · 1397 阅读 · 0 评论 -
makefile .c.o的说明
假设我们有下面这样的一个程序,源代码如下: /* main.c */ #include "mytool1.h" #include "mytool2.h" int main(int argc,char **argv) { mytool1_print("hello"); mytool2_print("hello"); }原创 2010-05-27 16:02:00 · 16322 阅读 · 0 评论 -
mysql数据库该路径后没办法启动的问题
修改mysql数据库存储路径之后,一直没法启动,百思不得其解,后来ls -Z查看,原来是selinux的缘故,chcon -t mysqld_db_t /home/mysqlData 即可。附上更改数据库的位置的方法: 1、home目录下建立data目录 cd /原创 2011-10-10 16:01:31 · 1395 阅读 · 0 评论