Welcome 微信登录

首页 / 操作系统 / Linux

Linux Shell位置参数

Linux Shell位置参数

1.$0, $1, $2,等等:位置参数,从命令行传递给脚本,或者是传递给函数.或者赋职给一个变量.2.$#:命令行或者是位置参数的个数.3.$*:所有的位置参数,被作为一个单词.注意:"$*"必须被""引用.4.$@:与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被完整地传递,并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的单词.注意:"$@"必须被引用.5.$-:传递给脚本的falg(使用set 命令).注...
关于Linux fork()函数的工作机制

关于Linux fork()函数的工作机制

在看Linux源代码时,遇到的fork()函数实在是太奇怪了,调用一次,竟然会对子进程和父进程分别返回两个不同的值,令人费解,一个函数怎么会有两个返回值呢。终于找到了答案。如下: fork()并不是进行进程切换,而是复制一个当前进程。举例来说,假如初始进程号为100,当进入fork()系统调用后,操作系统就把100号进程一模一样地复制出来一个新的进程101号。所谓一模一样,是指100号进程与101号进程所包含的任何信息,例如变量的值,空间分配,特别是正在...
Linux内存泄漏的检查方法

Linux内存泄漏的检查方法

1. 在需要内存泄漏检查的代码的开始调用void mtrace(void) (在mcheck.h中? 有声明). mtrace为malloc等函数安装hook, 用于记录内存分配信息.在需要内存泄漏检查的代码的结束调用void muntrace(void). 注意: 一般情况下不要调用muntrace, 而让程序自然结束. 因为可能有些释放内存代码要到muntrace之后才运行. 2. 用debug模式编译被检查代码(-g或-ggdb) 3. 设置环...
菜鸟课堂 教你打造个人无敌系统全攻略

菜鸟课堂 教你打造个人无敌系统全攻略

Slammer、SoBig、Blaster等蠕虫病毒的共同特点就是攻击系统漏洞,造成大规模的网络中断。尽管在这些病毒爆发之前,阻挡它们的补丁程序已经问世,然而依然不能有效扼制病毒的蔓延,造成这一现象的主要原因在于修补系统不得力。 修补系统之所以艰巨,原因有两点:一是从安全漏洞被披露到黑客利用漏洞发起攻击,时间间隔越来越短,用户没有足够的时间去修补系统;二是大量客户机成为病毒攻击的目标和帮凶,使病毒传播得更广泛、更迅速。除了Windows外,路由器、交换机...
把Linux下nand读操作搞定了

把Linux下nand读操作搞定了

最后还是用了实地址和虚地址转换的函数,正确读出了写入的信息,挂载了cramfs分区终于在最后一天晚上吧nand驱动的读取部分做好了,现在可以从cramfs启动文件系统,write应该也快了吧,ECC校验和yaffs还需要时间。简单记录下这几天和LM兄调试nand的痛苦经历。我加入Linux项目组时LM兄已经开始着手看nand驱动的相关内容,所以主要程序都是他写的,我只是一起开发,解决问题。一开始是串口不能输出和2.6不能启动这些历史遗留问题,不再赘述。记得...
LinuxUnix 系统编程 -- 关于缓冲设置时容易出现的错误

LinuxUnix 系统编程 -- 关于缓冲设置时容易出现的错误

以下这段程序是笔者在阅读《Unix环境高级编程(第二版)》时看到的一个例子,感觉非常有说明意义,这种内存控制错误在初学者,甚至是一些老手中都会出现,所以拿出来给大家分享一下,也提醒自己注意。 这里出现的问题是,当open_data返回时,它所占用的栈空间将被释放用于下一个函数的调用。但是标准I/O库将仍然使用这一块缓冲。混乱必定会导致错误的出现。为了更正这里的问题,我们应该把databuf这个变量声明为全局的,或者静态的,或者extern,或者使用all...
LinuxUnix 系统编程 -- 等待某个子进程结束的wait方法

LinuxUnix 系统编程 -- 等待某个子进程结束的wait方法

如果我们有很多个子进程,那么,当任何一个子进程结束的时候wait都会返回。如果我们像等待其中某一个特定的进程结束(假定我们知道那个进程的进程ID),在老版本的Unix系统上,我们能够调用wait函数,并且比较它返回的进程ID和我们想得到的进程ID。如果这个结束的进程不是我们期望的进程,那么我们不得不保存这个进程ID和结束状态,然后再一次调用wait函数。我们需要继续做这样的事情直到我们期望的进程结束。下一次我们我想要等待一个特定进程的时候,我们需要借助已经...
C++的标准库头文件所在目录

C++的标准库头文件所在目录

在用ifstream的seekg()函数时遇到了问题,想查看一下C++标准库的头文件,找了半天终于找到我机器上的标准库头文件所在目录。在我机器上是:/usr/include/c++/4.0.0其中以.h为后缀的头文件在这个目录下的backward文件夹里查找文件的相应命令:比如要找iostream,可以使用locate命令,如locate iostream也可以使用find命令,find命令比locate复杂一点关于 Linux下或者mac os下的查找命...
Linux对一个3G的文本进行编码转换全过程

Linux对一个3G的文本进行编码转换全过程

本过程中涉及到的Linux的命令有:split, iconv, cat问题:有一个3G的文本a.txt,编码格式为gbk,现在需要对其进行转换成为utf-8。难点:iconv的转换是在内存中进行的,因此3G大小的文本,无法进行直接转换。思路:先利用split进行文件切分,然后对每一个字文件进行ivonv转换,最后进行cat合并。具体操作如下:1) ll -h a.txt 查看文件的大小,2.9G2) wc -l a.txt 查看文件的行数,9千200万行3...
Linux内核中的红黑树的使用

Linux内核中的红黑树的使用

最近需要使用红黑树,在网上查找资料的时候无意中发现linux内核中有个红黑树的实现,并且其代码非常的独立,现把它摘录出来。我摘录自2.6.24的内核,分为两个文件rbtree.h和rbtree.c,rbtree.h位于内核源码的include/linux目录中,rbtree.c位于内核源码的lib目录中。rbtree.h中删除#include 和#include 两行,添加#include 对于rb_node的声明删除掉最后的__attribute__((...
Linux vi中移动光标命令

Linux vi中移动光标命令

Linux vi中移动光标命令 移动光标上:k nk:向上移动n行 9999k或gg可以移到第一行 G移到最后一行下:j nj:向下移动n行左:h nh:向左移动n列右:l nl:向右移动n列 w:光标以单词向前移动 nw:光标向前移动n个单词 光标到单词的第一个字母上b:与w相反e: 光标以单词向前移动 ne:光标向前移动n个单词 光标到单词的最后一个字母上ge:与e相反$:移动光标到行尾 n$:移动到第n行的行尾0(Num):移动光标到行首^:移动光标...
关于Linux的socket的一个奇怪现象

关于Linux的socket的一个奇怪现象

在Linux下使用一个TCP Socket进行Listen的时候,最近发现一个诡异的问题。 accept(2)是可以接受一个sockaddr指针来返回一个远端主机的地址,但是,实际情况是,如果这个连接是这个程序第一次发生的时候,是没有获得任何数据的,从第二次开始就没有这个问题,也就是紧跟这accept函数使用一个getpeername(2),即可以得到连接的主机的IP地址,从这以后开始的连接都没有这个问题。可是,如果accept中如果用accept(so...
编译Linux2.6.x内核驱动的makefile文件

编译Linux2.6.x内核驱动的makefile文件

##文件说明,编译2.6.x的Linux驱动的makefile文件# 作者:wyj# 创建时间:2008-09-23##使用说明:# 变量DRI_NAME MOD_NAME NOD_NAME 分别设置伪驱动程序的名称,生成模块的名称和设备节点的名称# 使用make install进行安装驱动 需要root权限# 使用make uninstall进行卸载驱动 需要root权限# 使用make clean清除多余的文件,包括生成的模块代码# 驱动名称DRI_N...
<< 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 >>