随笔分类 - linux学习
1
摘要:1.C语言标准中的各类型长度,及指针长度并没有明确指定是多长,只是有一个长度限定。还有建议字节数,但这绝不应该成为我们写程序时的标准。因此,我们每到一个新平台的话就最好先搞清楚各类型是多长!2.C语言中char ,signed char,unsigned char,是3种类型,因为char 到底是signed char 还是char依赖于编译器的实现,K&R建议,为了便于移植,如果我们放的是非字符数据的话最好明确指定是signed char 还是unsigned char!3.隐式转换有算术运算转换,赋值转换4.如果一个函数的形参类型未知,那么调用函数时要对相应的实参做“整形提升(intege
阅读全文
摘要:#strokes
#window list without drag
Stroke 0 0 R N WindowList #button 3 guesture with Ctrl starts programs in any context
#"r" like guestures starts rxvt
#Stroke N5456 0 A C Exec exec xkill
#Stroke N65456 0 A C Exec exec xkill
#Stroke N7414789 0 A C Exec exec rxvt
#Stroke N7414759 0 A C Exe
阅读全文
摘要:ImagePath +:/usr/share/icons:/usr/share/pixmaps:/usr/share/icons/hicolor/48x48/apps:/usr/local/share/fvwm/icons:$HOME/.fvwm/iconsEdgeResistance 250 100EdgeScroll 100 100EdgeThickness 10ColormapFocus FollowsMouseClickTime 750DeskTopSize 2x2#忽略数字锁定键IgnoreModifiers L25# default Styles:Style * BorderWid
阅读全文
摘要:网上大多数都是在redhat系列机器的安装的,我始终不成功:整了好几天总算能启动了:额外的安装步骤如下: 1.安装csh,ksh 2. cd /usrln -s /tmp tmp 3.cd /binln -s /usr/bin/basename basename 4.将教程中的./pubkey -d cdslmd -y改成./pubkey -d cdslmd -fy 剩下的参看:http://www.isspy.com/opensuse13%E4%B8%8B%E5%AE%89%E8%A3%85-cadence-allegro-spb-16-30-000/ 教程
阅读全文
摘要:经过无数次的尝试,我终于在rxvt下vim中的desert配色方案中达到与gnome-terminal相似的结果!Rxvt.colorIT: magenta
Rxvt.underlineColor:cyan
Rxvt.tintColor: gray
Rxvt.cursorColor: white
Rxvt.shading: 100 xvt.background: black
Rxvt.foreground : #f6f3e8
Rxvt.colorBD : #8ac6f2
Rxvt.colorUL : #95e454
! red
!Rxvt.color1 :...
阅读全文
摘要:## /etc/dm/Sessions/Fvwm.desktop ##[Desktop Entry]Name=FvwmComment=FvwmExec=fvwm2Terminal=FalseTryExec=fvwm2Type=Application[Window Manager]SessionManaged=true##此文件应该在在/usr/share/xsessions中
阅读全文
摘要:getopt被用来解析命令行选项参数。#include <unistd.h>extern char *optarg;//选项的参数指针extern int optind, //下一次调用getopt的时,从optind存储的位置处重新开始检查选项。extern int opterr,//当opterr=0时,getopt不向stderr输出错误信息。extern int optopt;//当命令行选项字符不包括在optstring中或者选项缺少必要的参数时,该选项存储在optopt 中,getopt返回'?’、int getopt(int argc, char * cons
阅读全文
摘要:今天看代码时突然发现,好像看到linus在写代码时的一些准则了,再根据赵博士的一句话"内核开发者不可能总是关注这些细节问题的!“,然后参照自己的理解总结出来一些准则,本人初学,如果有问题还请留言指正。 1.在关于锁的操作上,希望是原子操作,所以不管什么先关中断再说 2.在互斥资源上,如果下面可能睡眠,那么先上锁再说,这点可以从inode.c中的read_inode函数中可以看出! 3.如果进程修改了某些indoe等一些公共内容,如果下面有bread之类可能睡眠的函数那么先把i_dirty置1,以免丢失数据。 4.貌似只要是进程打开的,不是用作公共有途的,如打开一个i_node用来添加
阅读全文
摘要:今天看到empty_dir函数发现他并不是比较i_size==32来判断是否为空,而是去读所有的块来判断是否为空,然后就觉得很奇怪,不过总觉得事出必有因,翻来覆去的找了一下,终于有了点发现,去看了一下add_entry和sys_rmdir这两个函数终于发现了一个事实!那就是目录文件的大小只会增大不会减小。下面是实验的截图:在这个实验里我们可以看到当我建立了test2 test3 test4四个文件后test1目录变成了80,但是我删除这3个目录项后,test1目录并没有减少,这就说明了,在empty_dir中为什么linus遍历来确定目录是不是为空了!不知道这算不算是一个小bug,还是mini
阅读全文
摘要:今天看到文件系统namei.c中的add_entry部分了,发现一个问题 block = create_block(dir,i/DIR_ENTRIES_PER_BLOCK); if (!block) return NULL; if (!(bh = bread(dir->i_dev,block))) { i += DIR_ENTRIES_PER_BLOCK; continue; } de = (struct dir_entry *) bh->b_data;可以看到,create_block也是就是当目录...
阅读全文
摘要:由于用户在UNIX下经常会遇到SUID、SGID的概念,而且SUID和SGID涉及到系统安全,所以用户也比较关心这个问题。关于SUID、SGID的问题也经常有人提问,但回答的人一般答得不够详细,加上曾经回答过两个网友的问题,还查了一些资料,决定整理成本文,以供大家参考。限于本人的水平问题,文章中如果有不当之处,请广大网友指正。一、UNIX下关于文件权限的表示方法和解析SUID 是 Set User ID, SGID 是 Set Group ID的意思。UNIX下可以用ls -l 命令来看到文件的权限。用ls命令所得到的表示法的格式是类似这样的:-rwxr-xr-x 。下面解析一下格式所表示的意
阅读全文
摘要:在看文件系统始终觉得有点理解不了,今天偶有所悟还是赶紧记下来为好!看文件系统时要搞清以下几点:1.文件系统是用专门的工具来格式化的,也就是说内核中文件系统的代码是不含文件系统的初始化的。其实所谓的操作系统安装就是通过一个工具来制作文件系统然后将系统文件拷入最后再加个引导,但是这个过程比单纯的格式化要麻烦许多,因为安装时要制作根文件系统而不是仅仅格式化,但原理相似!2.要搞明白在设备中,各种设备也是就i_node的,而这个i_node也就在安装操作系统时就被制作好的。也就是说不管我们mount也好umount也好仅仅是从硬盘目录中读i_node号就行了,并不需要来自己给设备分配结点号。3.这也就
阅读全文
摘要:#设置邮件的编辑器set editor="vim"#设置邮件的发送程序set sendmail="/usr/sbin/exim4"set check_new = yesset timeout = 60#将各个邮箱分类存储set record="/home/findstr/.mail/sent" #发件箱set postponed="/home/findstr/.mail/ponstponed" #延迟发件箱set mbox="/home/findstr/.mail/inbox"#设置你有可能收到
阅读全文
摘要:1.一定要及时换行,要不然latex是不会替你自动换行缩进的,相反如果我第几十个字来换一次那么它就会替我自动缩进下换行。2.关于中文首段缩进问题可用 \usepackage{indentfirst} + \setlength{\parindent}{2em} 来实现3.\setcounter{section}{-1}可使章节从0序号开始4.\usepackage[top=25mm,left=25mm,right=20mm,bottom=20mm]{geometry}可以来定制文档格式5.\documentclass[a4paper,12pt]{article}可以用来指定纸张和通用字体大小6.
阅读全文
摘要:编译完内核后进入linux3.0内核后,习惯性的打开virtualbox,然后突然发现virtualbox提示错误,然后又出现一个对话框,上面写着:Nevertheless, there is no shortage of changes, such as the auto grouping of processes within a session, which has caused a lot of commotion in the Linux online world as it is expected to considerably increase the reaction s...
阅读全文
摘要:boot loader装入kernel, 然后kernel需要执行/sbin/init, 读取这个文件就必须先mount根文件系统, 早期是通过启动时的root=参数告诉内核根文件系统在哪个设备上, 随着硬件和技术的发展,现在根文件系统可能位于一个网络存储如NFS上, 可能由于RAID而散布于多个设备上, 可能位于一个加密设备上需要提供用户名和密码,这时root=参数就显得不够了. 为了应付这种局面, 先后出现两种机制来作为boot loader装载kernel到真正的/sbin/init执行这个启动过程的桥梁: initrd和initramfs, 两者有类似的地方, 比如都是由内核执行其上的
阅读全文
摘要:1、ramdisk、initrd是什么?ramdisk是一种基于内存的虚拟文件系统,通常用于放置内核的中间数据。而initrd全称为"boot loader initialized RAM disk",也就是由启动加载器所初始化的RamDisk设备,它的作用是完善内核的模块机制,让内核的初始化流程更具弹性;内核以及initrd,都由bootloader在机子启动后被加载至内存的指定位置,主要功能为按需加载模块以及按需改变根文件系统。更详细的内容,请参阅initrd的man手册,里面阐述了内核开发者对initrd制订的功能标准。命令:man initrd2、/dev/ram0
阅读全文
摘要:1.我们可以使用gf快捷键来进入任意一个被#include <header.h>的头文件. 2.使用ctrl+O来回到使用gf之前的文件中。 3.找到的一个不错的vimrc修改了一下可以自动更新ctags文件 4.增加了对系统头文件进行ctrl+]来查找的功能 5.增加了对splint进行代码检查的快捷键映射 6.如果想编译时自动定位到出错的地方,那么写一个Makefile,然后在vim中执行make应该是个不错的主意,我想! 7. 此文件在~/.vimrc或/etc/vim/vimrc"Set mapleaderlet g:mapleader = ",&quo
阅读全文
摘要:在一个操作系统的实现中提到了一个软件叫bochs,以前安装好了,今天重现安装一下发现又忘记怎么安装的了,所以还是把这次的过程记录下来为妙。 的ubuntu下我们可以使用sudo apt-get install bochs来安装,但是这样做有一个弊端,那就是不能使用bochs的调试功能,所以我们还是选择使用源码安装的方式来定制我们所需的功能: 1.进入解压后的bochs源码目录,在终端下输入./configure --enable-disasm --enable-debugger意思是说我们编译时使bochs带有反汇编功能和调试器功能。 2.然后出现了第一个错误:ERROR: X window.
阅读全文
摘要:在操作系统加载elf文件时都是按页映射的,而IA32下一页一般为4k,如果ld-Ttext 0x80400那么在操作系统去映设分页时应该是映射到0x80000~0x81000这个页表上的,但因为我们的text段入口地址为0x80400为了让程序去正确找到入口点,可以在text段之前构造SHT_NULL类型的无效段以便使text在文件中的偏移为0x400,这样在映射到页后,在加载时,直接跳到0x80400程序就能正常运行!
阅读全文
1

浙公网安备 33010602011771号