转载
(1)软连接可以 跨文件系统 ,硬连接不可以 。实践的方法就是用共享文件把windows下的 aa.txt文本文档连接到linux下/root目录 下 bb,cc . ln -s aa.txt /root/bb 连接成功 。ln aa.txt /root/bb 失败 。
(2)关于 I节点的问题 。硬连接不管有多少个,都指向的是同一个I节点,会把 结点连接数增加 ,只要结点的连接数不是 0,文件就一直存在 ,不管你删除的是源文件还是 连接的文件 。只要有一个存在 ,文件就 存在 (其实也不分什么 源文件连接文件的 ,因为他们指向都是同一个 I节点)。 当你修改源文件或者连接文件任何一个的时候 ,其他的 文件都会做同步的修改 。软链接不直接使用i节点号作为文件指针,而是使用文件路径名作为指针。所以 删除连接文件 对源文件无影响,但是 删除 源文件,连接文件就会找不到要指向的文件 。软链接有自己的inode,并在磁盘上有一小片空间存放路径名.
(3)软连接可以对一个不存在的文件名进行连接 。
(4)软连接可以对目录进行连接。
备注:I节点 :它是UNIX内部用于描述文件特性的数据结构.我们通常称I节点为文件索引结点(信息结点).i节点 含有关于文件的大部分的重要信息,包括文件数据块在磁盘上的地址.每一个I节点有它自己的 ......
gprof介绍
gprof是GNU profiler工具,存在于binutils工具包。可以显示程序运行的“flat profile”,包括每个函数的调用次数,每个函数消耗的处理器时间。也可以显示“调用图”,包括函数的调用关系,每个函数调用花费了多少时间。还可以显示“注释的源代码”,是程序源代码的一个复本,标记有程序中每行代码的执行次数。
gprof 实现原理:
gprof并不神奇,在编译和链接程序的时 候(使用 -pg 编译和链接选项),gcc 在你应用程序的每个函数中都加入了一个名为mcount(or“_mcount”, or“__mcount”)的函数,也就是说-pg编译的应用程序里的每一个函数都会调用mcount, 而mcount会在内存中保存一张函数调用图,并通过函数调用堆栈的形式查找子函数和父函数的地址。这张调用图也保存了所有与函数相关的调用时间,调用次数等等的所有信息。
GPROF的基本使用方法如下:
1.使用GCC加上-pg选项编译程序
2.执行程序,会生成gmon.out
3.使用gprof分析gmon.out文件,得出统计资料
4.GPROF不支持动态链接库和多线程
范例:
#include<stdio.h>
void funca()
{
int i = 0;
&nb ......
最近在学习Linux系统。对于要想从事java开发方向的人士来说熟悉Linux系统是有必要的。
我来对自己学习Linux做些总结吧。
1.Linux里的常用指令要会用,比如vi指令,RPM指令,ifconfig指令,netconfig指令,>.<指令,wall指令,rm指令,mkdir,rmdir指令,useradd,userdel,groupadd,groupdel指令,more指令,chkconfig指令,chmod指令,gzip指令,tar指令,ps指令等等.这些指令都会有参数,一般的参数要会用,比如 rm -rf XX强制删除某某文件或文件夹,gzip是可压缩又可解压文件的,-d是解压相关参数可以在gzip --help中看到或到谷歌一收就出来了
2.Linux系统我是安装在虚拟机里面的。将本机文件上传到Linux系统中我用的是默认的FTP这个东东要会,主机怎么和虚拟机连上,要注意几个地方,Linux 系统的防火墙最好是关掉要不然可能会出问题的,可能ping通但ftp不上,在主机上安装SSH最流行的客户端putty,LeapFTP。可以有别的方法,好像samba可以上传文件到Linux系统中
3.将主机上的文件传到Linux中要知道怎样安装那些系统什么JDK,还有Tomcat,Mysql等等。。。这些文件安装格式可能不一样,有bin结尾的,有gz结尾的要知道怎样解压怎样安装相关程序,卸载程序rpm -e ......
1.点号进度显示code 1
#!/bin/sh
#输出"."进度条函数,兼容bsh、ksh、bash
#首先trap 1 2 3 15信号,重要
trap 'kill $BG_PID;echo;exit' 1 2 3 15
function dots
{
stty -echo >/dev/null 2>&1
while true
do
echo -e ".\c"
sleep 1
done
stty echo
echo
}
#---------------------------------------------
# 主程序开始
#---------------------------------------------
#首先使dots函数后台运行
dots &
BG_PID=$!
#开始程序主体,本例中执行休眠1 ......
感觉对这个有些晕,做了个实验,弄清楚了。
实验思路,用同一份代码编译同时生成动态和静态库,通过测试程序调用,看调用的是动态库还是静态库。
生成静态库代码:
/***********hellod.h*************/
#ifndef _HELLO_S_H
#define _HELLO_S_H
void prints(char *str);
#endif
/*hellod.c*/
#include "hellod.h"
#include <stdio.h>
void printd(char *str)
{
printf("print in static way:%s",str);
}
gcc -c -o hellod.o hellod.c
ar cqs libhellod.a hellod.o
生成的静态库为libhellod.a
生成动态库代码:
将上面hellod.c中的打印语句,打印输入:print in dynamic way。以示区别。
gcc -shared -o libhellod.so hellod.c
生成的动态库为libhellod.so。
测试代码main.c
#include "hellod.h"
int main(void)
{
char *text = "hello,world\n";
printd(text);
}
使用静态库:gcc -o hello main.c -static -L./ -lhellod
执行生成文件,打印:print in static way:hello,world
使用动态库: gcc -o hello main.c -L./ -lhell ......
http://en.wikipedia.org/wiki/Loop_device
In Unix-like operating systems, a loop device, vnd (vnode disk), or lofi (loopback file interface) is a pseudo-device that makes a file accessible as a block device.
所谓loop device指的就是拿文件来模拟块设备。
Albert Woodhull语:"The Linux loop device can be used to handle this - it makes a file look like a filesystem, and the file can be defined as a byte offset from the beginning of a primary partition"。
losetup 用 来 将 loop device 与 档 案 或 block device 联结 、 分 离 . 以 及 查 询 loop device 目 前 的 状 况 , 如 只给 定 loop_device 的 参 数 . 则 秀 出 loop device 目 前 的状 况 .
最近在看<> ( 见http://www.oldlinux.org/index_cn.html),对Linux下loopback设备的使用琢磨了一段时间。
记录如下:
一、imag 文件的生成
1. 可以通过bochs提供的bximage.exe生成。
2. 在FC3下通过命令dd if=/dev/zero of=test.img bs=512 count=524160 命令生成。
二、对生成的文件进行分区
1、可以将生成的image文件挂载在bochs下,当作从 ......