自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hahachenchen789的博客

What does not kill me,makes me stronger.

  • 博客(36)
  • 收藏
  • 关注

原创 unix环境高级编程-信号(1)

信号是软件中断,信号提供了一种处理异步事件的方法每个信号都有一个名字,这些名字都以3个字符SIG开头,例如SIGABRT是夭折信号,当进程调用abort函数时产生这种信号。在头文件中,信号名都被定义为正整数常量。不存在编号为0的信号,这种信号叫做空信号。很多条件会产生信号:1.当用户按某些终端键时,引发终端产生的信号,比如delete键,通常产生中断信号(SIGINT)2.硬件异常

2016-07-31 14:39:34 365

原创 unix环境高级编程-进程关系

会话:是一个或多个进程组的集合。通常是由shell管道将几个进程编成一组,比如 proc1 | proc2 &进程调用setsid函数建立一个新会话。如果调用此函数的进程不是一个进程组的组长,此函数创建一个新会话,该进程会变成新会话的的会话首进程(session leader),此时,该进程是新会话中的唯一进程,该进程成为新进程组的组长进程,新进程组ID是该调用进程的进程ID,该进

2016-07-31 11:45:51 370

原创 unix环境高级编程-读书笔记(7)

终端登陆:1BSD终端登陆:当 系统自举时,内核创建进程ID为1的进程,也就是init进程,init进程使系统进入多用户模式,init读取文件/etc/ttys,对每一个允许登陆的终端,init调用一次fork,所生成的子进程则exec getty程序。getty对终端设备调用open函数,将终端打开,然后getty输出login之类的信息,等待用户输入用户名。进程组:

2016-07-30 23:43:38 339

原创 Unix环境高级编程-进程控制(1)

用户ID和组ID:在设计应用时,总是试图使用最小特权(least privilege)模型,依据此模型,程序应当只具有为完成给定任务所需的最小权限,可用setuid函数设置实际用户ID和有效用户ID。用setgid函数设置实际组ID和有效组ID。

2016-07-30 22:10:21 320

原创 unix环境高级编程-进程环境(2)

函数getrlimit和setrlimit:每个进程都有一组资源限制,可以用这两个函数查看修改。在更改资源限制时要注意:1.任何进程都可将一个软限制值更改为小于或等于其硬限制值2.任何进程都可降低其硬限制值,但必须大于等于其软限制值3.只有超级用户可以提高硬限制值两个函数的resource参数取下列值之一:每个进程都有一个非负整型表示的唯一进程ID,系统有一些专

2016-07-29 17:55:19 303

原创 unix环境高级编程-进程环境

main函数:int main(int argc, char *argv[]);当内核执行一个c程序时(使用一个exec函数),在调用main前先调用一个特殊的启动例程,可执行文件按将此例程作为程序的开始地址-这是由连接编辑器设置的,而连接编辑器由c编译器调用,启动例程从内核取得命令行参数和环境变量,然后按上述方式调用main函数。进程终止的几种方式:1. 从main返回2.调

2016-07-28 19:47:50 341

原创 Unix环境高级编程-系统数据文件和信息

unix口令文件/etc/passwd 包含了下表所示的字段:系统定义了两个获取口令文件项的函数,在给出用户登录名或数值用户ID后,这两个函数能够查看相关项。struct passwd *getpwuid(uid_t uid);struct passwd *getpwnam (const char *name);getpwuid函数由ls程序使用,将i节点中的数字用户ID映射为

2016-07-27 22:46:43 558

原创 unix环境高级编程-标准IO

标准IO库:不仅在unix上,在很多操作系统上都实现了标准的IO库,它处理了很多细节,例如缓冲区分配,优化长度执行IO等。流和FILE对象:对于标准的IO库,它们的操作是围绕流(stream)进行的。标准的io文件流可用于单字节和多字节字符集,流的定向决定了所读。所写的字符是单字节还是多字节的,当一个流最初被创建,并没有定向,若在一个未定向的流上使用一个多字节IO函数,则将该流的定向设

2016-07-26 21:51:57 427

原创 unix环境高级编程-文件和目录(1)

stat、fstat和lstat函数:一旦给出pathname,stat函数返回与此函数命令文件有关的信息结构。第二个参数buf是指针,指向一个我们必须提供的结构体。该结构体的基本结构是:文件类型:1 普通文件(regular file):最常见的文件类型2 目录文件(directory file):包含了其他文件的名字以及指向这些文件有关信息的指针,只有内核可以直

2016-07-26 20:11:24 442

原创 unix环境高级编程-文件IO

文件IO:大多数文件IO只需要用到5个函数:open,read,write,lseek和closeopen函数:调用该函数可以创建或打开一个文件#includeint open(const char *pathname, int oflag, ......);pathname 是要打开或者创建文件的名字,oflag可用来说明函数的多个选项,具体oflag参数有如下:O_RD

2016-07-26 11:10:06 426

原创 unix高级环境编程-读书笔记(1)

在研读了鸟哥的linux私房菜之后,对linux有了大致的概念,下面就开始研读linux学习中被称为圣经的:Advanced Programming in unix environment,也就是众所周知的unix环境高级编程。unix体系结构:操作系统实际上是一个软件,也就是内核,而内核的接口被称为系统调用(system call),公用函数库构建在系统调用接口之上,应用程序既可

2016-07-25 16:45:49 671

原创 在ubuntu下安装新的内核

首先去内核的官网下载官方内核,比如:https://www.kernel.org/pub/linux/kernel/v2.6/。下载压缩文件,*.tar.bz2。解压到/usr/src目录下# tar  -Jxvf  linux-2.6.30.3.tar.bz2 -C  /usr/src/ 此时会在/usr/src下新建一个目录,./linux-2.6.30.3进入该目录,用l

2016-07-23 16:31:59 7974

原创 linux内核

内核kernel是操作系统的最底层,也就是和硬件打交道的关键,因为它包含了驱动主机各项硬件的检测程序和驱动模块。内核通常被放置在/boot/vmlinuz中,但是一台主机而已拥有多个内核文件。内核模块(kernel module)如果电脑的硬件更新了,而内核比较旧,肯定无法支持,是否要拿一个新的内核呢?因此,linux提出了模块化的设计,将一些不常用的驱动程序独立出内核,编译成模块

2016-07-23 15:45:59 367

原创 linux数据备份

个人数据,在一般的计算机中,可以利用norton的ghost备份,可以针对整个分区进行备份,由于个人计算机的数据量通常不大,备份较容易。如果是主机提供internet方面的服务,该如何备份?比如论坛的文章交流等。备份哪些数据:1.操作系统本身需要备份的文件:/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow,/home下的用户主文件夹,由于l

2016-07-23 11:27:30 346

原创 linux的x window system

为什么叫x window system:因为就英文字母来看,x是在w的后面。当时在开发x window system的时候,就希望这个窗口界面不要与硬件有强烈的相关性,不然就等于是一个操作系统了,因此x当初就是以应用程序的概念开发的。x窗口也被称为x11,这个窗口是利用网络架构来进行图形界面的运行和绘制。

2016-07-23 10:49:18 3287

转载 reboot和init 6的区别

偶然一次机会:利用init 6重启机器,打开浏览器发现竟然还是保存这关机前的浏览网页,但是利用reboot就没有。对此进行了搜索,结果如下:对两个命令用man查询了一下:init 6 Stop the operating system and reboot to the state defined by the initdefault entry in /etc/inittab.

2016-07-22 21:38:45 4738

原创 ubuntu 用root登陆图形界面

首先要设置root的密码sudo passwd root设置root密码,输入两次root密码设置完成后进入cd /usr/share/lightdm/lightdm.conf.d/目录下找到50-unity-greeter.config这个文件添加以下代码:user-session=ubuntugreeter-show-manual-login=true

2016-07-22 21:25:36 354

转载 linux软件安装简介(apt和dpkg)

之前博文中提到过以源代码的方式来安装软件,也就是利用tarball进行软件的安装,但是比较麻烦,每次安装都需要检测操作系统与环境,设置编译参数,实际的编译等如果我的linux系统和厂商的系统一模一样,那么在厂商的系统上面编译好的软件自然可以在自己的系统上运行,即类似windows的安装方式。在linux,主要有两种软件管理器,分别是RPM和Debain的dpkg。dpkg:派生于deb

2016-07-22 20:51:03 818

原创 linux的函数库管理

动态和静态函数库静态函数库的特色:拓展名:为.a,函数库通常拓展名为lib×××.a类型编译行为:会直接整合到执行程序当中,所以利用静态函数库编译成的文件会比较大独立执行的状态:最大的优点就是编译成功的可执行文件可以独立执行,不需要向外部要求读取函数库内容升级难易度:只要函数库升级了,所有将此函数库纳入的程序都需要重新编译。动态函数库的特色:拓展名:.lib××

2016-07-22 20:01:30 284

原创 tarball的安装

tarball是以tar这个命令来打包和压缩的文件,整个安装的操作是这样的:1. 取得源文件,将tarball文件在/usr/local/src目录解压缩2. 取得步骤流程:进入新建立目录下面,去查阅install/readme等内容3. 建立makefile,以自动检测程序(configure或config)检测操作环境,并建立makefile这个文件4.编译:make命令编译

2016-07-22 17:03:16 5624 2

原创 make命令进行宏编译

如果我的执行文件要包含四个源文件,那么我得做以下几件事:分别对四个源文件进行gcc -c目标文件编译,产生四个.o文件;再将这四个目标文件通过gcc -o进行链接成为可执行文件,同时加入libm函数库,也就是-lm。可以看出编译的过程需要很多的操作,而且如果要重新编译的话,则上述的流程得重新来一遍,光是找出这些命令就够烦人得了,是否可以一个指令完成上面所有操作呢?make命令就可以完成,在

2016-07-22 13:26:00 2869

原创 linux源码编写入门gcc

使用c语言进行编译的简单实例:编写程序源代码:hello world开始编译和测试执行在默认状态下,如果直接以gcc编译源码,并没有加上任何参数,则执行文件会默认为a.out这个文件名。然后执行这个a.out文件就行那么如果我想产生目标文件object file来进行其他操作,而且执行文件的名字也不是默认的.a.outhello.o

2016-07-22 11:21:34 410

原创 linux软件安装:源码(1)

在windows上安装软件只要不断点击下一步下一步就行,但是无法修改软件的源代码,如果要增加或者减少软件的某些功能,只能求助于当初发行软件的厂商了。而linux上面的软件几乎都经过GPL授权的,也就是说每个软件都提供源代码,可以自行修改程序。何为GPL:GPL,是General Public License的缩写,是一份GNU通用公共授权非正式的中文翻译,保证你共享和修改自由软件的自由。—

2016-07-21 21:45:15 339

原创 boot loader:Grub

boot loader是载入内核的重要工具,没有boot loader的话,kernel根本没办法被内核加载的MBR是整个硬盘的第一个sector内的一个块,大小只有446bytes。但loader的大小不止446bytes,为了解决这个问题,linux将boot loader的程序代码执行与设置值加载成两个阶段(stage)。stage1:执行boot loader 主程序stage

2016-07-21 17:55:14 332

原创 linux启动流程 (1)

启动流程一览:1.加载BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备2.读取并执行第一个启动设备内MBR的boot loader(也就是grub,spfdisk等程序)3.依据boot loader的设置加载kernel,kernel会开始检测硬件与加载驱动程序4.在硬件驱动成功后,kernel会主动调用init进程,而init会取得run-level信息5

2016-07-21 16:10:40 313

原创 linux日志文件

什么是日志:就是记录系统活动信息的几个文件,例如何时、何地(来源ip)、何人、做了什么操作日志文件的重要性:1.解决系统方面的错误 2.解决网络服务的问题 3. 过往事件记录簿linux常见的日志文件名/var/log/cron:工作调度crontab的执行情况/var/log/dmesg:记录系统在开机时候内核检测过程中所产生的各项信息/var/log/lastl

2016-07-21 11:31:58 293

原创 linux daemon(2)

查看系统启动的网络服务:netstat -tulp设置开机后立即启动服务的办法:首先得了解linux主机怎么开机的:1. 打开计算机电源,开始读取bios并进行主机的自我测试;2.通过bios取得第一个可开机设备,读取主要开机区(MBR)取得启动装载程序;3.取得kernel冰加载内存且检测系统硬件4.内核主动调用init进程5.init进程开始执行系统初始

2016-07-21 09:57:38 229

原创 linux系统服务daemon(1)

实现service的程序就是daemon分类:独立启动的stand alone 和super alonestand alone:可自行单独启动服务启动加载到内存中,一直占用内存和系统资源,优点在于:对于客户端的请求,stand alone的daemon响应较快。常见的有www的daemon,ftp的daemonsuper alone:一个特殊的daemon来统一管理当没有客户端

2016-07-20 21:39:43 1401

原创 linux管理和进程(4)

selinux:由美国国家安全局开发的,security enhanced linux的缩写。传统的文件权限与账号关系:自主访问控制 DAC,就是一句进程的所有者与文件资源的rwx权限来决定有无访问能力这种DAC的缺点:root具有最高权限,可以在系统上进行任何资源的访问;用户可取得进程来更改文件资源的访问权限。以策略规则制定特定程序读取特定文件:强制访问控制 MAC可以针

2016-07-20 20:37:15 247

原创 linux的管理和进程(3)

关于进程的执行顺序:系统同时有很多进程在运行中,如果所有进程同时被唤醒,那么cpu应该优先处理哪个程序,也就是要考虑到程序的优先执行顺序(priority)与cpu调度在linux中表示优先级:PRI值,该数值越低代表越优先的意思,不过这个值是由内核动态调整的,用户无法直接调整PRI值。但可以通过Nice值调整上图中的NI就是Nice,一般而言,PRI(new)=PRI(old

2016-07-20 19:16:16 288

原创 linux管理和进程(2)

脱机管理问题:在工作管理(job control)中提到的后台指的是在终端机模式下可以避免ctrl+c中断,并非放在系统后台中去,也就是说依然和终端机有关,那么若用远程连接方式连接到linux主机,并将工作以&方式放到后台中,如果在工作未结束的情况下脱机了,该工作还会继续吗,答案是否,工作会被中断解决方法有两种:一种是at命令,将工作放置到系统后台,而与终端机无关,第二种是nohup命令,

2016-07-20 11:57:26 229

原创 linux程序管理和进程(1)

什么是进程:一个程序被加载到内存中运行,那么在内存中的那个数据就被称为进程,所有系统上面跑的数据都以进程的类型存在。在linux系统中,触发任何一个事件,系统都会定义为一个进程,并且给予这个进程一个ID,称为PID,同时触发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设置。举个常见的例子:登陆操作系统时,通常是利用连接进程或者直接在主机登陆,然后取得shell,在/bin/b

2016-07-19 20:07:42 755

原创 linux shell(1)

用户通过shell 将我们输入的命令与内核进行通信,好让内核控制硬件工作。引用百度百科:在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。在linux中,shell需要调用其他软件,提供用户操作系统的一个接口,因此,man,vi,fdisk等命令都

2016-07-03 02:19:24 230

原创 linux vim程序编辑器-vim1

所有的unix like系统都会内置vi文本编辑器,并且许多软件的编辑接口都会主动调用vim,同时vim具有程序编辑能力。vim共有三种模式:分别是一般模式,编辑模式和命令行模式。一般模式:以vim打开一个文件就直接进入一般模式了,在这么模式中,可以上下左右来移动,可以删除,复制,粘贴数据、编辑模式在一般模式中,可以删除,复制等,但无法编辑文件内容,按下i或o或a任何一个字母时

2016-07-02 20:17:56 455

原创 linux 备份工具

dump参数:-S 仅仅列出后面的待备份数据需要多少磁盘空间才能备份-u 将备份时间记录到/etc/dumpdates文件-v 将dump文件过程显示出来-level 等级0-9-w 列出在/etc/fstab里面的具有dump设置的分区是否备份过restore:恢复

2016-07-02 13:35:09 236

原创 文件压缩与打包

文件压缩原理:目前计算机都是使用所谓的byte来计量的,而事实上最小的计量单位应该是bit,而1byte=8bit,而对于数字1,1byte也就是一个bit,相当于浪费了7个bit,因此可以压缩。linux常见的压缩命令:压缩文件的拓展名一般是: .tar .gz .tgz等gzip最常见的压缩命令:压缩文件名为.gz,参数:-d 解压缩            -v

2016-07-01 19:32:44 354

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除