Linux——字符串处理
字符串处理字符串输入输出设备输出stdout、设备键盘输入stdin、设备错误显示stderr。
常用的字符串输入函数有putchar()、puts()、fputc()、fputs()只能输出字符串函数,不像printf可以格式化输出,所以一般用printf。
puts函数原型可通过man 3 puts查看。
使用 puts()函数连换行符’ \n ‘都省了,函数内部会自动在其后添加一个换行符。
putchar函数原型可通过man 3 putchar查看。
putchar()函数可以把参数 c 指定的字符(一个无符号字符)输出到标准输出设备,其输出可以是一个字符,可以是介于 0~127 之间的一个十进制整型数(包含 0 和 127,输出其对应的 ASCII 码字符),也可以是用 char 类型定义好的一个字符型变量。
fputc函数原型可通过man 3 fputc查看
fputc()与 putchar()类似,也用于输出参数 c 指定的字符(一个无符号字符),与 putchar()区别在于,putchar()只能输出到标准输出设备,而 fputc()可把字符输出到指定的文件中,既可以是 ...
学习一个阶段的感受
目前在linux上学习了一个浅显的阶段,学会了命令行的一些常规的操作,也对Linux的内核有了少部分的了解,目前在C语言上的系统学习进入了尾声,之后应该就要时常复习C语言的编程,之前没有编写过底层,现在感觉C语言的应用编写确实复杂,主要是东西有点多,记不下来,打算趁着写选修论文的时候,用平时笔记复习复习,再加强一下C语言前些章节的编写能力,跨过这一阶段,再思考下一阶段科技树点哪的问题吧,科技树可真多呀,只能说还好现在课业不是很重。
linux文件属性
文件类型正所谓Linux下皆文件,系统下一共分为7种文件:
①普通文件
普通文件(regular file)在 Linux 系统下是最常见的,譬如文本文件、二进制文件,我们编写的源代码文件这些都是普通文件。
普通文件分为文本文件和二进制文件。
文本文件:文件中的内容是由文本构成的,所谓文本指的是 ASCII 码字符。文件中的内容其本质上都是数字。
二进制文件:二进制文件中存储的本质上也是数字,只不过对于二进制文件来说,这些数字并不是文本字符编码,而是真正的数字。譬如 Linux 系统下的可执行文件、C 代码编译之后得到的.o 文件、.bin 文件等都是二进制件。
②目录文件
目录(directory)就是文件夹,文件夹在 Linux 系统中也是一种文件,是一种特殊文件。
③字符设备文件和块设备文件
Linux 系统下,一切皆文件,也包括各种硬件设备。设备文件(字符设备文件、块设备文件)对应的是硬件设备,在 Linux 系统中,硬件设备会对应到一个设备文件,应用程序通过对设备文件的读写来操控、使用硬件设备。
Linux 系统中,可将硬件设备分为字符设备和块设备,所以就有了字符设备文件和块 ...
Linux标准IO库
标准IO库简介所谓标准 I/O 库则是标准 C 库中用于文件 I/O 操作(譬如读文件、写文件等)相关的一系列库函数的集合,通常标准 I/O 库函数相关的函数定义都在头文件中。
设计库函数是为了提供比底层系统调用更为方便、好用的调用接口,虽然标准 I/O 构建于文件 I/O 之上,但标准 I/O 却有它自己的优势。
标准 I/O 和文件 I/O 的区别如下:
⚫ 虽然标准 I/O 和文件 I/O 都是 C 语言函数,但是标准 I/O 是标准 C 库函数,而文件 I/O 则是 Linux系统调用;⚫ 标准 I/O 是由文件 I/O 封装而来,标准 I/O 内部实际上是调用文件 I/O 来完成实际操作的;⚫ 可移植性:标准 I/O 相比于文件 I/O 具有更好的可移植性。
⚫ 性能、效率:标准 I/O 库在用户空间维护了自己的 stdio 缓冲区,所以标准 I/O 是带有缓存的,而文件 I ...
Linux深入文件IO
Linux管理文件静态文件与inode文件存放在磁盘文件系统中,并且以一种固定的形式进行存放,称为静态文件。调用 open 函数的时候,会将文件数据(文件内容)从磁盘等块设备读取到内存中,将文件数据在内存中进行维护,内存中的这份文件数据我们就把它称为动态文件。
硬盘的最小存储单位叫做“扇区”(Sector),每个扇区储存 512 字节(相当于 0.5KB),操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的4KB,即连续八个 sector 组成一个 block。
磁盘在进行分区、格式化的时候会将其分为两个区域,一个是数据区,用于存储文件中的数据;另一个是 inode 区,用于存放 inode table(inode 表),inode table 中存放的是一个一个的 inode(也成为 inode节点),不同的 inode 就可以表示不同的文件,每一个文件都必须对应一个 inode。
打开一个文件,系统内部会将这个过程分为三步:
系统找 ...
Linux——文件IO操作
文件IO基础文件IO是指对文件的输入输出操作。
文件描述符调用函数会有返回值,该返回值为一个文件描述符,对于Linux内核而言,所有打开文件都会通过文件描述符进行索引。
当调用open函数打开或者创建一个新文件,内核会向进程返回一个文件描述符,用于指带被打开的文件,所有执行 IO 操作的系统调用都是通过文件描述符来索引到对应的文件。一个进程可以打开多个文件,但是在 Linux 系统中,一个进程可以打开的文件数是有限制,并不是可以无限制打开很多的文件。
12$ ulimit -n ##查看进程打开文件的最大数量1024
每一个被打开的文件在同一个进程中都有一个唯一的文件描述符,不会重复,如果文件被关闭后,它对应的文件描述符将会被释放,那么这个文件描述符将可以再次分配给其它打开的文件、与对应的文件绑定起来。
每次给打开的文件分配文件描述符都是从最小的没有被使用的文件描述符(0~1023)开始,当之前打开的文件被关闭之后,那么它对应的文件描述符会被释放,释放之后也就成为了一个没有被使用的文件描述符了。
但是 0、1、2 这三个文件描述符已经默认被系统占用了,分别分配给了系统标准输入 ...
Linux——Shell脚本学习
shell介绍Shell通常指的是命令行界面的解析器,也用于泛指所有为用户提供操作界面的程序,也就是程序和用户交互的层面。
Shell 执行shell程序,这些程序叫脚本。
创建脚本使用文本编辑器来创建包含指令的文件,这里使用vim
1234567891011$ vim bash.sh#!/bin/bash ##创建脚本文件时候必须在文件第一行指明要用到的shellfor file in * #以#开头的行不会被shell处理do if grep -q POSIX $file then echo $file fidoneexit 0
把脚本设置为可执行,
1、
1$ /bin/bash bash.sh
12$ chmod +x bash.sh ##改变文件权限,使这个文件可以被所有用户执行$ ./bash.sh
Shell 语法变量所有变量都被看作字符串并以字符串来存储.
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:(变量名称使用小写英文命名,因为系统中的全局变量是大写命名的,为防止重 ...
C语言算法项
正三角(反三角)使用为两个for循环进行嵌套
12345678910111213141516#include <stdio.h>int main(){ int a,b,c; for(a=0;a<6;a++) { for(b=0;b<a;b++) { printf("$"); } printf("\n"); } return 0;}
金字塔使用为四个for进行循环思想核心为中间数量为行数n的两倍减去1,外层循环控制换行,内层三个控制空格以及他的打印数据
123456789101112131415161718192021#include <stdio.h>int main(){ int rows,i,j,space,star; scanf("%d", & rows); for(int i=1;i<=rows;++i) { star = 2*i - ...
Linux系统管理篇——进程管理
进程
进程是用来表示正在进行的程序。
内核中一些重要的进程信息如下:
进程的内存地址;
进程当前的状态;
进程正在使用的资源;
进程的优先级;
进程的属组;
PID:进程的ID号
PPID:父进程的PID
所有的进程都必须由另一个进程创建——除了系统在系统引导时,由内核自主创建并安装的进程。当一个进程被创建时,创建他的那个进程称为父进程。这个进程叫做子进程;PPID就是父进程的PID。
只有进程的创建者和root用户才有权对该进程进行操作,记录进程的创建者(属组)就必要了,进程的UID就是创建者的ID。
Linux为进程保存了有效用户ID号叫EUID,用来确定进程对某些资源和文件的访问权限。绝大部分情况,UID和EUID一样,除了seruid程序。
进程的GID是创建者所属组的ID号,进程同样有一个EGID号,当进程需要创建一个新文件时候,这个文件将采用该进程的GID。
监视进程:PS命令
12$ ps aux$ ps lax ##可以提供父进程ID(PPID)和谦让度(IN)
即时跟踪进程信息1$ top ##实时检测10更新一回q退出
查看占用文件的进 ...
Linux工具vim
vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器。他是我们使用Linux系统不能缺少的工具。vim 具有程序编辑的能力,可以以字体颜色辨别语法的正确性。
vi可以分为三种状态,分别是一般模式、编辑模式和命令行模式
一般模式:以vi打开一个文件就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用上下左右按键来移动光标,你可以使用删除字符或删除整行来处理文件内容, 也可以使用复制、粘贴来处理你的文件数据。
编辑模式:在一般模式中可以进行删除、复制、粘贴等的操作,但是却无法编辑文件的内容,只有当你按下【i, I, o, O, a, A, r, R】等任何一个字母之后才会进入编辑模式。这时候屏幕的左下方会出现【INSERT或 REPLACE】的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下【Esc】即可退出编辑模式。
命令行模式:输入【 : / ? 】三个中的任何一个,就可以将光标移动到最底下那一行。在这个模式中, 可以提供查找、读取、存盘、替换字符、离开vi、显示 ...