摘要:
关于堆及内存分配点滴 1. 无论是堆,还是栈都是对虚存的操作和管理。 2. 系统调用brk()和mmap()用来动态分配虚存空间,也就是表明这些虚存地址是合法的,访问的时候,系统应为其分配物理内存,而不是报错。 3. 堆的本质是动态申请的虚存空间。理论上可以用任何方式去管理这块空间。但数据结构--"堆"是最常用的一种,所以这块分配的空间常称为被堆。 4. 和栈不一样,堆的管理是在用户... 阅读全文
摘要:
信号本质 信号是在软件层次上对中断机制的一种模拟,软中断 信号来源 信号事件的发生有两个来源: 硬件来源:(比如我们按下了键盘或者其它硬件故障); 软件来源:最常用发送信号的系统函数是kill, raise, alarm和setitimer以及sigqueue函数,软件来源还包括一些非法运算等操作。 区分是什么原因唤醒进程,用signal_pending(... 阅读全文
摘要:
1970年1月1日0点 1969年8月,贝尔实验室的程序员肯汤普逊利用妻儿离开一个月的机会,开始着手创造一个全新的革命性的操作系统,他使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本。随后,汤普逊和同事丹尼斯里奇改进了B语言,开发出了C语言,重写了UNIX,新版于1971年发布。 那时的计算机操作系统是32位,时间用32位有符号数表示,则可表示 68 年,用32位... 阅读全文
摘要:
Linux的shell中echo改变输出显示样式 echo -e "\033[44;37;5m ME \033[0m COOL" 原文 http://www.cnblogs.com/276815076/archive/2011/05/11/2043367.html 阅读全文
摘要:
Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。当page cache的数据需要刷新时,page cache中的数据交给buffer cache,但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。 在Linux 2.6的内核中Pa... 阅读全文
摘要:
修复删除文件 1、debugfs 打开,刚刚被删除文件所在的分区 open /dev/sda2 2、用ls 加-d参数显示刚刚删除文件所在的目录 ls -d /root/data 显示有<>尖括号的就是我们要找的文件Inode 号 执行logdump –I <393289> 记下得到的block号b_num。 3、推出debugfs 4、... 阅读全文
摘要:
在awk中执行外部命令 1、借助system/getline删除 awk '{cmd="rm "$0;system(cmd)}' filename awk '{cmd="rm "$0;cmd|getline }' filename man awk里面有关于getline的说明。 2、 awk '{system("wget -O - "url" | gre... 阅读全文
摘要:
删除特殊大小的文件 1. 根据文件的时间,创建人,大小等特征,用find命令找到文件 find . -maxdepth 1 -type f -size +72019c -size -72021c 解释: -maxdepth 1 搜索深度为1 -type f 搜索普通文件 -size +72019c 文件大于72019byte ;-size -72021... 阅读全文
摘要:
bash shell的命令分为两类:外部命令和内部命令。外部命令是通过系统调用或独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。 环境变量(传给子进程的变量,遗传性是本地变量和环境变量的根本区别)只能单向从父进程传给子进程。不管子进程的环境变量如何变化,都不会影响父进程的环境变量。 shell scrip... 阅读全文
摘要:
shell中exec命令 1、find中的-exec参数 在当前目录下(包含子目录),查找所有txt文件并找出含有字符串"bin"的行 find ./ -name "*.txt" -exec grep "bin" {} \; 在当前目录下(包含子目录),删除所有txt文件 find ./ -name "*.txt" -exec rm {} \; Execu... 阅读全文
摘要:
volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。 例如: volatile int i=10; int j = i; ... ... 阅读全文
摘要:
struct linger TCP连接断开的时候调用closesocket函数,有优雅的断开和强制断开两种方式. 那么如何设置断开连接的方式呢?是通过设置socket描述符一个linger结构体属性。 linger结构体数据结构如下: struct linger { int l_onoff; int l_linger; }; 有三种组合方... 阅读全文
摘要:
找到文件inode为31467125 并重命名。 find . -type f -inum 31467125 -exec mv {} new_name.html \; 找到指定inode并删除之 find . -type f -inum 314167125 -delete 找到相关文件,并删除;使用-print0和-0参数,避免某些文件中有包含有分隔符(如test m... 阅读全文
摘要:
tcpdump抓取TCP标识位 按每8位组算,TCP的标志位位于第13个8位组中,如下,第一行一共32位是0 - 3个8位组,第二行是4-7八位组,第三行是8-11八位组,data offset +reserved的前四个是第12个8位组,reserved中的后2位+6个标志位是第13个八位组。 以下TCP报头 因此第13个八位组结构为 - - + + + +... 阅读全文
摘要:
curl命令简单使用 下载文件 curl -o 1.jpg http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG 批量下载 curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG 续传 curl -c -O http://cgi2.tk... 阅读全文
摘要:
1、查看命令 [root@www ~]# sysctl -a | grep local 或cat /proc/sys/net/ipv4/ip_local_port_range 2、修改端口范围 1)永久修改 vi /etc/sysctl.conf 添加下面一行: net.ipv4.ip_local_port_range = 1024 65535 然... 阅读全文
摘要:
wget是linux上的命令行的下载工具。支持HTTP和FTP协议,支持代理服务器和断点续传功能,能够自动递归远程主机的目录,找到合乎条件的文件并将其下载到本地硬盘上;如果必要,Linux wget将恰当地转换页面中的超级连接以在本地生成可浏览的镜像。 基本用法: wget -i $file -a out.log -O /dev/null -T 0.001-t 1 有些网站... 阅读全文
摘要:
在写代码的时候,经常会用到读取系统时间的函数。localtime函数不是线程安全的。如果在多线程里调用localtime函数,很可能会出现问题。 多线程应用里面,应该用localtime_r函数替代localtime函数,因为localtime_r是线程安全的。 struct tm *localtime(const time_t *clock); struct tm* lo... 阅读全文
摘要:
首先,调用函数curl_global_init()来初始化库函数;记得最后调用curl_global_cleanup()来释放库资源。其次,调用curl_easy_init()来初始化一个句柄,得到一个easy interface型指针;curl_easy_init函数是线程相关的,也就是说不能在一个线程中调用另外一个线程通过curl_easy_init创建的CURL指针。记得最后要调用curl_easy_cleanup(easy interface);接着,再调用curl_easy_setopt来设置将要访问的网络地址。curl_easy_perform来执行下载。注意的是:libcurl的 阅读全文
摘要:
curl: error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory 解决办法: ln -s /usr/lib/libcurl.so.3 /usr/lib/libcurl.so.4 原文: http://hi... 阅读全文