Linux
chenzeyang的博客
这个作者很懒,什么都没留下…
展开
-
Linux之软件包管理
上一篇提到了update这个命令,说它是更新了列表。。。。那/etc/apt/source.list 和 /var/lib/apt/list 这两个目录有什么区别呢????首先/etc/apt/source.list这个文件指定apt查找或者安装某个软件包时候要搜索的仓库,里面每一行定义一个仓库。仓库里面有存放着一组软件包及其相关信息,包括用来描述每个软件包的头部信息,包之间的依赖关系。。原创 2017-02-23 16:54:48 · 318 阅读 · 0 评论 -
文件IO编程十一
这一节主要是讲缓冲类型。根据不同的刷新时间可分为不同的缓冲类型:不缓冲、全缓冲、行缓冲。标准输出stdout是行缓冲,stderr是不缓冲。普通文件打开都是全缓冲不缓冲====================一旦遇到数据全缓冲:=====================1 填满了缓冲区2 fflush() 强制刷新3 fclose()调用fflush()原创 2017-05-11 17:13:59 · 198 阅读 · 0 评论 -
文件IO编程十二
windows目录是是一个容器,是在分区下的,也是一个文件夹而linux下目录是一个路径,是供分区挂载的,用户通过这个路径才可以找到分区。 i_node是描写文件的属性。dir/是文件名以及索引名。我们在操作文件的时候,经常需要获取文件的属性,比如类型、权限、大小、所有者等等。头文件:#include #include #include 原型:int原创 2017-05-11 21:47:13 · 247 阅读 · 0 评论 -
系统编程一
进程是一个程序的一次执行的过程。进程和程序的区别:程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念。进程是一个动态的概念,它是程序执行的过程,包括创建、调度和消亡。进程是资源管理的最小单位。线程是系统调度的最小单位。task_struct在内核中称之为任务,cpu是调度它。进程包含指令和用户数据,当执行一个程序时,系统将程序中的指令和数原创 2017-05-12 10:24:37 · 301 阅读 · 0 评论 -
系统编程二
进程状态转换父进程通过一个fork()可以生出一个子进程,此时是就绪状态(task_running),它是在等待cpu的调度(schedule),如果它被CPU调度了,就会变成执行态(task_running)。如果此时需要等待资源(好比是排队排到你了,但你忘记带钱了),就进入睡眠状态,可分为浅度睡眠和深度睡眠。浅的可以被信号中断唤醒,深的不行,浅的一般都是等待一个软件信号,深的都是硬件信号,原创 2017-05-12 11:38:32 · 219 阅读 · 0 评论 -
系统编程四
exec函数以及wait函数(1)exec实际上,在linux中并没有exec函数,而是有6个以上的exec开头的函数族。原型:int execl(const char *path, const char *arg, ...)int execv(const char *path, char *const argv[])in原创 2017-05-15 19:56:29 · 257 阅读 · 0 评论 -
系统编程三
进程的创建和退出(1) fork函数原型 pid_t fork(void);头文件:#include 说明:该函数执行成功之后,将会产生一个新的子进程,在新的子进程中其返回值为 0,在原来的父进程中其返回值为大于 0 的正整数,该正整数就是子进程的 PID。程序:int main(int argc, char **argv){printf("[%d]\n", __L原创 2017-05-15 16:16:10 · 236 阅读 · 0 评论 -
系统编程五
对话期:用secucrt软件远程登录一个用户的时候,就是创建了一个对话期(session)。对话期和进程组都是为了方便给进程发信号而存在的。./test 是在前台进程组运行./test &是在后台进程组运行精灵进程是就算关闭终端了,它还在运行。。只要主机不断电。他是在一个独立的空间默默的运行。下面说一下创建精灵进程的步骤:最先运行在前台组的程序是原创 2017-05-15 22:37:22 · 216 阅读 · 0 评论 -
系统编程六
主要是讲进程之间的通信传统的进程间通信:无名管道(pipe) 有名管道(fifo) 信号(signal)System v ipc对象:共享内存 消息队列 信号量 POSIX信号量(无名、有名)BSD:套接字(主机与主机之间)管道有三种:无名管道(pipe) 、有名管道(fifo) 、套接字无名管道:用于一对一,而且要亲缘关系,而且数据量少。P1进程把数据通过管道原创 2017-05-15 23:50:51 · 198 阅读 · 0 评论 -
系统编程七
这一节主要是讲有名管道有名管道的特点是它保证了写入原子性,而且可用于无亲缘关系的任意进程,它是创建在某个路径下,所以当进程退出时它也不会消失,而无名管道是创建在内存中,所以进程退出时候它就消失了。进程利用有名管道通信需要用到双线程,一个线程用于读,一个线程用于写。下图是有名管道与无名管道的区别:程序://写进程#define FIFONAME "myfifo"#de原创 2017-05-16 11:10:49 · 212 阅读 · 0 评论 -
文件IO编程二
上一章主要是讲了文件系统以及整个操作的流程,这一讲主要是讲VFS虚拟文件系统引言LINUX中允许众多不同的文件系统共存,如ext2,ext3,vfat等。通过使用同一套文件I/O系统调用即可对LINUX中的任意文件进行操作而无需考虑文件系统格式。对文件的操作也可以跨文件系统而执行。我们可以使用cp命令从vfat文件系统格式的硬盘拷贝数据到ext3文件系统格式的硬盘,这操作涉及到两个不同的文原创 2017-05-09 15:10:31 · 191 阅读 · 0 评论 -
文件IO编程三
这一节主要是讲系统IO和标准IO的区别。在VFS虚拟文件系统的上层有个系统调用API,系统I/O有一部分是操作文件IO,而标准IO是封装过的,它最终也会调用系统IO。区别:1. 系统IO是操作文件描述符(整数),而标准IO是操作文件指针。2. 系统IO比较耗时,所以标准IO是有个缓冲区buffer的,只有达到某一个阙值,它才会去调用系统IO,这样比较省时。原创 2017-05-09 15:22:04 · 336 阅读 · 0 评论 -
文件IO编程四
这一节主要将系统IO的特点以及处理文件的函数。首先介绍以下linux下的七种文件系统:1.d 目录2.- 普通文件3.c 字符设备4.b 块设备5.l 符号链接文件6.s 本地套接字7.p 管道文件文件描述符是什么意思呢?一个txt文件读到哪了,或者它是以什么模式打开的等等信息都记录在file这个结构体中,一个file结构体只能记录一个文件的信息原创 2017-05-09 16:30:50 · 293 阅读 · 0 评论 -
文件IO编程五
这一节主要是将系统IO的四个函数:read write(1)read头文件:#include ssize_t read(int fd, void * buf, size_t count);说明:read是把参数fd所指的文件传送count个字节到buf指针所指的内存中去。若参数count为0,则read()不会有作用并返回0。返回值为实际读取的字节数,若返回0.表示已经读取完成原创 2017-05-09 23:32:45 · 237 阅读 · 0 评论 -
文件IO编程十
(1) fgets 详解函数:char *fgets(char *s, int size, FILE *stream);说明:fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符,读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。 若成功则返回s指针,返回NULL则失败。(2) fputs详解函数:原创 2017-05-11 14:49:37 · 218 阅读 · 0 评论 -
文件IO编程九
(1) fgetc/getc/getchar 详解函数:int fgetc(FILE *stream);说明:fgetc()从参数stream所指的文件中读取一个字符,若读到文件尾而无数据时则返回EOF。正常情况下是返回该值函数:int getc(FILE *stream);说明:与fgetc()的区别就是fgetc()是函数调用,而getc()是宏,它会相对比较快速。但是普通原创 2017-05-11 11:51:17 · 210 阅读 · 0 评论 -
linux之nfs服务器下载及配置
如果你想把主机上的目录通过mount命令挂载到远程主机,应下载个nfs服务器。。。配置nfs服务1. 下载并安装sudo apt-get install nfs-kernel-server2. 配置nfs,使得某一个你指定的目录,成为nfs网络分区,以供其他主机挂载。sudo vi /etc/exports添加以下信息:/opt * (rw,sync,n原创 2017-02-28 22:35:06 · 864 阅读 · 0 评论 -
linux 磁盘分区命令
使用fdisk命令需要加一些参数1. fdisk /dev/sdb 进入sdb硬盘分区模式2. 输入m查看命令帮助信息3. 输入n给硬盘添加一个新的分区4. 第一个分区分主分区,输入p;不输,默认是主分区5.给分区指定编号,1~4是预留给主分区或者扩展分区的 Partition number(1~4, default 1)6. 给这个分区指定扇区的起始和终止位置扇区的起原创 2016-09-09 00:20:46 · 705 阅读 · 0 评论 -
Linux系统分区
1. 一个硬盘主分区至少有1个,最多有4个,扩展分区可以没有,最多有1个。且主分区+扩展分区最多不能超过4个,逻辑分区可以有若干个。2. 分出主区后,其余部分可分为扩展分区,一般是剩下的全部分为扩展分区,也可以不全分,那就浪费了。3. 扩展分区不能直接使用,不能写入数据,必须分为若干逻辑分区,所有的逻辑分区都是扩展分区的一部分。硬盘的容量=主分区的容量+扩展分区的容量 扩展原创 2016-09-08 10:46:21 · 323 阅读 · 0 评论 -
Linux 磁盘管理
常用命令df 查看磁盘分区的使用情况-l 仅显示本地磁盘(默认)-a 显示所有的文件系统的磁盘使用情况-h 以1024进制计算最合适的单位显示磁盘容量-H 以1000进制计算最合适的单位显示磁盘容量-T 显示磁盘分区类型-t 显示指定类型文件系统的磁盘分区(类型如ext4,ext3) df -th ext4 -x 不显示指定类型文件系统的磁盘分区(与 -t参数互原创 2016-09-08 10:30:06 · 225 阅读 · 0 评论 -
sqlite3数据库在linux下安装以及设置成交叉编译
弄了一天终于搞定,一开始直接通过sudo apt-get install sqlite3下载软件,结果编译程序的时候总是找不到库文件所在,后来我感觉是因为我的libsqlite3-dev库文件版本和sqlite3软件版本不一样,而且通过sudo apt-get install libsqlite3-dev下载的都是在is86环境下的。所以这时我只能去下载sqlite3源码包。1.先下载原创 2016-07-11 22:33:51 · 525 阅读 · 0 评论 -
vi编辑器
vi编辑器的三种模式(1)命令模式(默认模式) (2)输入模式 (3)底行模式(保存,退出,搜索)vim 文件名:光标定位到文件的第一行。vim + 文件名:将光标定位到文件最后一行。vim +行号 文件名:将光标定位到文件该行,如果行号超出范围值,定位到最后一行。vim +/xxx 文件名:将光标定位到指定单词“xxx”第一次出现的行号,可以通过n切换到下一次出现的行数。原创 2016-09-08 10:02:50 · 224 阅读 · 0 评论 -
linux之apt与dpkg安装包管理工具的区别
一般来说linux系统主要分为两大类:1.RedHat系列:RedHat,Centos,Fedora等;2.Debian系列:Debian,Ubuntu等;Dpkg(Debian系):UbuntuRPM(RedHat系):Centos,FedoraRedHat系列:常见的安装包格式rpm包,安装rpm包的命令是“rpm -参数”包管理工具yum支持t原创 2017-02-21 21:33:24 · 6990 阅读 · 3 评论 -
Linux安装软件的几种方法
1. 通常情况下linux应用软件的安装包有三种:1). tar包,如software-1.2.3-1.tar.gz,它是使用linux系统打包工具tar打包的。2). rpm包,如software-1.2.3-1.i386.rpm。它是redhat linux提供的一种包封装格式。3). dpkg包,如software-1.2.3-1.deb。它是Debian Linux提供的一种包原创 2017-02-28 23:31:57 · 1370 阅读 · 0 评论 -
linux之共享文件夹
今天弄了linux和windows的共享文件夹。。。。。首先我先设置了虚拟机上的设置->共享文件夹(听说要在关机的时候进行)。然后我直接打开/mnt/hgfs,结果发现根本没有hgfs这个文件夹。上网查了一下资料,别人都是:sudo apt-get install open-vm-dkms(动态内核模块支持框架)sudo mount -t vmhgfs .host:/ /mnt原创 2017-02-22 21:10:51 · 398 阅读 · 0 评论 -
linux之 更新update&upgrade&源
windows的自动升级也可以是设定升级地点,默认是微软。ubuntu是开源的,他的源升级点是在全世界,你可以选择速度最快的源。windows的更新仅仅是微软的东西。而Linux的源包含的是,所有在源里的开源软件的可选升级包。附加:可能大家还有一个疑问,那么我在windows上,下的东西都是哪里来的呢?难道微软包括了所有软件?其实我们下载软件都还是在每个软件的官网或者给我们对应原创 2017-02-23 00:00:09 · 808 阅读 · 0 评论 -
文件IO编程一
文件概念在LINUX中,有一句经典的话叫做:一切皆文件。这句话是站在内核的角度说的,因为在内核中所有的设备(除了网络接口)都一律使用LINUX独有的虚拟文件系统(VFS)来管理。这样做的目的是不同的设备“文件”这个概念加以封装和屏蔽,简化应用层编程的难度。文件,是LINUX系统最重要的两个抽象概念之一(另一个是进程)。另外VFS有个很重要的结构体叫做file{},这个结构体中包含一个非常重原创 2017-04-14 22:58:43 · 274 阅读 · 0 评论 -
文件IO编程七
这一节主要是讲mmap()和错误码的处理mmap函数mmap()函数在进程的虚拟内存空间中映射出一块内存区域,用以对应指定的一个文件,该内存区域上的数据对应的文件的数据是一一对应的,并在一开始的时候用文件的内容来初始化这片内存。void *mmap(void *addr, size_t length,int prot, int flags, int fd, off_t offs原创 2017-05-10 17:59:31 · 302 阅读 · 0 评论 -
文件IO编程八
这一节主要是讲标准IO标准IO的操作对象是文件指针,FILE *。而且标准IO是有缓冲区的。stdout是行缓冲。这个文件指针则是由fopen()函数获取的。(1) fopenFILE *fopen(const char *path, const char *mode);头文件 #include path:要打开的文件。mode: “r”: 以只读方式打原创 2017-05-10 23:56:19 · 182 阅读 · 0 评论 -
文件IO编程六
这一节继续讲解系统IO函数(1) dup头文件:#include 定义函数:int dup (int oldfd);说明:dup()用来复制参数oldfd所指向的文件描述符,此时返回的新的文件描述符和参数oldfd所指的是同一个文件,共享所有的锁定、读写位置和各项权限或旗标。例如,当利用lseek()对某个文件描述符作用时,另一个文件描述符的读写位置也会随着改变。原创 2017-05-10 16:21:45 · 214 阅读 · 0 评论