摘要:
每一个在UNIX/Linux上工作的程序员可能都擅长Shell脚 本编程。但大家解决问题的方式却不尽相同,这要取决于对专业知识的掌握程度、使用命令的种类、看待问题的方式等等。对于那些处在shell脚本编程初级阶 段的程序员来说,遵循一些恰当的做法可以帮助你更快、更好的学习这些编程技巧。下面,我们就来讨论这些能帮助你学习shell脚本编程的方法吧。 阅读全文
摘要:
fork()函数用于从一个已存在进程中创建一个新进程,新进程称为子进程,原进程称为父进程,父子进程分别有各自的返回值,其中父进程的返回值是子进程的进程号,而子进程则返回0。使用fork函数得到的子进程是父进程的一个复制品,它从父进程处继承了整个进程的地址空间。地址空间:包括进程上下文、进程堆栈、打开的文件描述符、信号控制设定、进程优先级、进程组号等。子进程所独有的只有它的进程号,计时器等。因此,使用fork函数的代价是很大的。一般来说,在fork之后是父进程先执行还是子进程先执行是不确定的.这取决于内核所使用的调度算法。 阅读全文
摘要:
程序是存放在磁盘上,处于某个目录中的一个可执行文件.程序的执行实例被称为进程.进程是linux事物管理的基本单元。所有的进程均拥有自己独立的处理环境和系统资源。进程和程序的最本质的区别是程序是静态的,它是一些保存在磁盘上的指令的有序集合。进程是一个动态的概念,它是程序执行的过程,包括动态创建、调度和消亡的整个过程。进程最重要的属性是进程号(PID)和父进程号(PPID),PID惟一地标识了一个进程.一个进程创建的新进程称为子进程。相应创建了子进程的进程称为父进程。进程整个生命周期可以划分为三种状态: 1、执行态:该进程正在占用CPU运行 2、就绪态:进程已经具备执行的一切条件,正在等待... 阅读全文
摘要:
sscanf函数的高级用法
sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。
函数原型:
int scanf( const char *format [,argument]... );
其中的format可以是一个或多个:
{%[*][width][{h|l|I64|L}]type|' '|'\t'|'\n'|非%符号}, 阅读全文
摘要:
FILE *fopen(const char *pathname, const char *mode)
#include
注:Linux不区分二进制文件和文本文件,这一点与DOS、Windows系统中是有区分的。 阅读全文
摘要:
Linux中文件编程可以使用两种方法:
1、Linux系统调用(依赖于Linux系统)
2、C语言库函数(与系统独立,在任何系统下,使用C语言库函数操作文件的方法都是相同的) 阅读全文
摘要:
Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称为普通文件)。
Linux文件类型常见的有:普通文件、目录、字符设备文件、块设备文件、符号链接文件等;现在我们进行一个简要的说明。 阅读全文
摘要:
信号的阻塞就是让系统暂时保留信号留待以后发送。由于另外有办法让系统忽略信号,所以一般情况下信号的阻塞只是暂时的,只是为了防止信号打断敏感的操作。 阅读全文
摘要:
“/bin”、“/sbin”、“/usr/bin”、“/usr/sbin”、“/usr/local/bin”等路径已经在系统环境变量中了,如果可执行文件在这几个标准位置,在终端命令行输入该软件可执行文件的文件名和参数(如果需要参数),回车即可。 阅读全文
摘要:
shell简介
shell脚本程序就是按照一定的语法结构把若干linux命令组织在一起,使这些命令按照我们的要求完成一定功能。它可以进行类似程序的编写,并且不需要编译就能执行.
当编辑好脚本程序后,要使脚本程序可执行,需要改变其权限:
#chmod +x filename 阅读全文
摘要:
Linux中,命令的stdout(标准输出)和stderr(标准错误输出)是显示屏幕,而stdin(标准输入)是键盘.
一般情况下,shell通过标准命令接收用户命令,将执行的结果送往标准终端显示输出,而将标准错误信息写到标准错误信息输出。
有时,我们会希望把输出信息输出到某个特定文件中,或从某个文件读入输入信息.这时,就要用到输入输出重定向.
stdin 代码为0 使用或
stderr 代码为2 使用2或2 阅读全文
摘要:
GRUB:系统引导管理器。GRUB启动时会在 /boot/grub 中寻找一个名字为grub.conf的设置文件,如果找不到此设置文件则不进入菜单模式而直接进入命令行模式。
grub.conf是一个纯文字文件,您可以用任何一个文字编辑器来打开它。每一行代表一个设置命令,如果一行的第一个字符为井号#,则这一行为注释,您可以简单地用增加或减少注释行来改变设置。 阅读全文
摘要:
linux采用树状结构管理磁盘,先构建顶层根目录,再将硬盘的不同分区挂载到不同的目录下。
Linux以树状结构管理所有目录、文件,其它分区挂载在某个目录上,这些目录被称为挂载点或安装点,然后通过此目录来访问这个分区上的文件。Linux引导启动时,默认使用的文件系统是根文件系统,其中一般都包括这样一些子目录:/etc/,/dev/,/usr/,/bin/, /var/等。
在Linux面世不久,就开始了对Linux文件系统进行标准化的活动,于1994年推出了名为FHS(FilesystemHierarchy Standard)的Linux文件系统层次结构标准,对根文件系统目录做了统一的规范,形成了FHS标准,FHS标准规定了linux根目录各文件夹的名称及作用,统一了linux界命名混乱的局面。 阅读全文
摘要:
Linux命令格式:
#command [-options] parameter1…
例:# ls -al /root
--help
大多数GNU工具都有--help选项,用来显示工具的一些信息,如:#cat –help
文件及文件夹操作命令(cd、ls、cp等) 阅读全文
摘要:
使用make编译软件源码包一般步骤是:
#./configure (生成Makefile文件)
#make clean (进行清理工作)
#make (编译源文件)
#make install (安装可执行文件) 阅读全文
摘要:
在用gcc编译程序时,加上 –g 参数,然后执行 (gdb 可执行程序名) 就进入gdb调试模式
常用指令:
1. l (list) 列出程序清单
2. r (run) 运行程序
3. b(breakpoint) 设置断点,格式: b [行号/函数名]
4. b num if i==20 设置断点的触发条件
5. condition num(断点号) i==50 改变断点的触发条件
6. info b 查看断点信息
7. clear [行号] , 清除断点 阅读全文
摘要:
gcc编译器的使用,编译分四个阶段:
预处理,完成头文件和宏定义的展开,生成*.cpp文件
gcc –E –o hello.cpp hello.c
编译,生成汇编代码,生成*.s文件
gcc –S hello.c
汇编,生成二进制目标文件,生成*.o文件
gcc –c hello.c
链接,链接相关库,生成可执行文件,没有后缀,
一般直接用这步实现编译
gcc –o hello hello.c 阅读全文
摘要:
vi 的基本操作
由编辑模式切换到插入模式
vi启动后,在输入文本之前,必须通过按i键(在光标前插入字符)或a键(在光标后追加字符)将vi切换到插入模 式
由插入模式切换到编辑模式
输入完成后,按ESCAPE键,将返回到vi编辑模式
由编辑模式进入最后一行模式
在编辑模式下,shift+冒号,使vi处于最后一行模式 阅读全文
摘要:
栈:后进先出 允许插入和删除的一端叫栈顶top 不允许的一端叫栈底bottom
主要操作:进栈、出栈、判断栈满和栈空
有两个现成的函数 int push(int s[],int x,int *ptop), int pop(int s[],int *py,int *ptop) 直接拿过来用就行 要压入的栈空间 要进栈的数 栈顶指针
队列:先进先出 允许插入的叫队尾rear 允许数据离开的叫队头front
主要操作:入队、出队、判断队满和队空
有两个现成的函数 int EnQueue(int *Q,int x,int *pf,int *pr) pf:队头指针
直接拿过来用就行 int DeQueue(int *Q,int *py,int *pf,int *pr) pr:队尾指针
Q:要进入的队空间 x:要进入队的数 py:要出队的数 阅读全文
摘要:
操作系统中对文件的操作主要包括:
打开、关闭、读、写、 定位等操作
所用到的库函数主要包括:
文件打开函数: fopen
文件关闭函数: fclose
字符读写函数: fgetc和fputc
字符串读写函数:fgets和fputs
数据块读写函数:freed和fwrite
格式化读写函数:fscanf和fprinf
随机读写函数: rewind 函数和fseek函数 阅读全文