≮♂金今哲♀≯

好好学习~天天向上!

参考资料

http://baike.baidu.com/view/1745416.htm

http://blog.csdn.net/fisher_jiang/article/details/5608399

execve(参数1,参数2,参数3)

参数1:命令所在路径

参数2:命令的集合

参数3:传递给执行文件的环境变量集

[c-sharp] view plaincopy

#include <stdio.h>  

#include <unistd.h>  

int main(int arg,char **args)  

{  

    //char *name="/usr/bin/ls";  

    char *argv[]={"ls","-l","/cway-linux/source",NULL};//传递给执行文件的参数数组,这里包含执行文件的参数   

    char *envp[]={0,NULL};//传递给执行文件新的环境变量数组  

    execve("/bin/ls",argv,envp);  

}  

exec用被执行的程序完全替换调用它的程序的影像。fork创建一个新的进程就产生了一个新的PID,

exec启动一个新程序,替换原有的进程,

       Linux小技巧收集[zz]

[文本处理]

1、查看某文件的一部分

如果你只想看文件的前 5 行,可以使用 head 命令,

如:head -5 /etc/passwd

如果你想查看文件的后 10 行,可以使用 tail 命令,

如:tail -10 /etc/passwd

查看文件中间一段,可以使用 sed 命令

如:sed –n ’5,10p’ /etc/passwd 这样你就可以只查看文件的第 5 行到第 10 行

2、将 file.txt 里的123改为 456

方法 1

sed ‘s/123/456/g’ file.txt > file.txt.new 修改的保存到其它文件

sed -i ‘s/123/456/g’ file.txt 直接修改原文件

方法 2

vi file.txt

输入命令:

:%s/123/456/g

注意:如果替换的文件有特殊符号如/就要用\来取消。

例:sed -i ‘s/\/usr\/local\/apache2\/htdocs/\/var\/www\/html/g’ /usr/local/apache2/conf/httpd.conf

如果只是下原有的行后添加就用&

例:sed -i ‘s/DirectoryIndex index.html index.html.var/& index.htm index.php /g’ /usr/local/apache2/conf/httpd.conf

3、echo 典型应用

echo “abcdefg” | perl -lne ‘{$a = reverse($_); print $a;}’ 把一个字符串翻转

echo bottle|rev 把一

文章图片

http://blog.chinaunix.net/uid-26833883-id-3219335.html 

一、什么是库

本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的本质不同,因此二者库的二进制是不兼容的。

Linux操作系统支持的函数库分为静态库和动态库,动态库又称共享库。Linux系统有几个重要的目录存放相应的函数库,如/lib    /usr/lib。

二、静态函数库、动态函数库

A.  这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进可执行文件了。当然这也会称为它的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译,而且体积也较大。

B.这类库德名字一般是libxxx.so,动态库又称共享库;相对于静态函数库,动态函数库在编译的时候并没有被编译进目标代码中,你的程序执行到相关函数时才调用函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。由于函数库没有被整合进你的程序,而是程序运行时动态申请并调用,所以程序的运行环境中必须提供相应的库。动态函数库的改变并不影响你的程序

文章图片

http://www.perfgeeks.com/?p=770 

perfgeeks

linux . bash . php . python . c

Linux内存点滴 用户进程内存空间

经常使用top命令了解进程信息,其中包括内存方面的信息。命令top帮助文档是这么解释各个字段的。

VIRT , Virtual Image (kb)

RES, Resident size (kb)

SHR, Shared Mem size (kb)

%MEM, Memory usage(kb)

SWAP, Swapped size (kb)

CODE, Code size (kb)

DATA, Data+Stack size (kb)

nFLT, Page Fault count

nDRT, Dirty Pages count

尽管有注释,但依然感觉有些晦涩,不知所指何意?

进程内存空间

正在运行的程序,叫进程。每个进程都有完全属于自己的,独立的,不被干扰的内存空间。此空间,被分成几个段(Segment),分别是Text, Data, BSS, Heap, Stack。用户进程内存空间,也是系统内核分配给该进程的VM(虚拟内存),但并不表示这个进程占用了这么多的RAM(物理内存)。这个空间有多大?命令top输出的VIRT值告诉了我们各个进程内存空间的大小(进程内存空间随着程序的执行会增大或者缩小)。你还可以通过/proc//maps,或者pmap –d 了解某个进程内存空间都分布,比如:

#cat /proc/1449/maps

0012e000-002a4000 r-xp 00000000 08:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

typedef int (*cmp)(void const* one, void const* other); //抽象函数,比较两个对象大小

int cmp_int(void const *one, void const *other) //具体函数比较两个整数大小

{

const int *a = (int*) one; //必须转化

const int *b = (int*) other;

if (*a > *b)

return 1;

else if (*a == *b)

return 0;

else

return -1;

}

int cmp_string(void const *one, void const *other) //具体函数比较两个字符串大小

{

const char *str1 = (char*) one;

const char *str2 = (char*) other;

return strcmp(str1, str2);

}

void const *MaxofTwo(void const *one, void const *other, cmp func) //回调函数,返回两个对象最大的那个

{

if (func(one, other) >= 0)

return one;

else

return other;

}

void InputException() {

printf("Input Exception!\n");

exit(0);

}

void MemException() {

printf("Memeory Exception!\n");

exit(0);

文章图片

转至:http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html 

我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:

1、网络中进程之间如何通信?

2、Socket是什么?

3、socket的基本操作

3.1、socket()函数

3.2、bind()函数

3.3、listen()、connect()函数

3.4、accept()函数

3.5、read()、write()函数等

3.6、close()函数

4、socket中TCP的三次握手建立连接详解

5、socket中TCP的四次握手释放连接详解

6、一个例子(实践一下)

7、留下一个问题,欢迎大家回帖回答!!!

1、网络中进程之间如何通信?

本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类:

消息传递(管道、FIFO、消息队列)

同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量)

共享内存(匿名的和具名的)

远程过程调用(Solaris门和Sun RPC)

但这些都不是本文的主题!我们要讨论的是网络中进程之间如何通信?首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可

批量 ping ip的脚本,

把ip的集合房租ips文件,一行一个ip。

用法

cat ips|sh ping.sh

ping.sh文件内容:

#!/bin/bash

#用法

#cat ips|sh ping.sh

i=0

while read ip

do

i=$(($i+1))

ret=`ping -c 2 -w 2 $ip`

ret=`echo $ret|cut -d '-' -f 7-`

#if(test -s `echo $ret|grep 0 packets received`)

echo $ip $ret

done

官方文档:

http://httpd.apache.org/docs/2.0/en/programs/ab.html 

post的测试方法

./ab -n 100 -c 10 -e postout -p post  -T'application/x-www-form-urlencoded' http://test.com

post文件内容:

dir=2

query=女優・吉高由里子(23)に双子の姉がいた!?、という新CMが5月15日より放送される。CMは江崎グリコのスナック「チーザ」の「由里子と具里子」予告編。母親から「あなたには双子の姉がいるの。名前は具里子(ぐりこ)」と告げられた吉高が姉を捜す旅に出る姿を描いている。5月17日からは衝撃編、決意編、再会編、家族編の本編4話が順次放送される。

说明两个参数 

dir和query

有几个参数就多少航

This is ApacheBench, Version 2.3 <$Revision: 655654 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking xns35.exp.nhnsystem.com (be patient).....done

Server Software:      

source insight 常用快捷键(右键里大多功能有快捷键提示) 

退出程序                                : Alt+F4

重画屏幕                                : Ctrl+Alt+Space

完成语法                                : Ctrl+E

复制一行                                : Ctrl+K

恰好复制该位置右边的该行的字符          : Ctrl+Shift+