点击返回 自学Linux命令行与Shell脚本之路 16.3-函数递归+创建库 1. 函数递归 递归调用函数是指函数调用自身进行求解. 通常,递归函数有基值,函数最终递推到达该值. 许多高级数学算法使用递归将复杂等式的递归层次反复降低,直到到达基值指定的层次. 递归算法的一个经典示例是计算阶乘.一个数的阶乘是这个数乘以它前面的所有数的积. 比如计算5的阶乘:  5!=1*2*3*4*5=120使用递归的话,可以简化成:x!=x*(x-1)!    也就是x的阶乘等于x乘以x-1的阶乘 #!/bi…
点击返回 自学Linux命令行与Shell脚本之路 16.4-在命令行上使用函数 脚本函数不仅可以用作shell脚本命令,也可以用作命令行界面的命令.一旦在shell中定义了函数,可以从系统的任意目录使用这个函数.不必担心PATH环境变量是否包含函数文件所在目录.关键是能使shell识别出这个函数.主要有两种方法. 1. 在命令行创建函数 shell在键盘输入命令时解释命令,函数可以直接在命令行定义.这有两种方法: 第一种方法将函数定义在一行命令中:在命令行中定义函数时,每条命令的结尾必须包含分…
点击返回 自学Linux命令行与Shell脚本之路 16.1-函数概念 编写比较复杂的shell脚本时,完成具体任务的代码可能需要重复使用.bash shell提供满足这种要求的特性.函数是被赋予名称的脚本代码块,可以在代码的任意位置重用.每当需要在脚本中使用这样代码块时,只需引用该代码块被赋予的函数名称. 1. 创建函数 在bash shell脚本中创建函数可以使用两种格式.一种格式是使用关键字function,后跟代码块的函数名: function name { commands } nam…
点击返回 自学Linux命令行与Shell脚本之路 16.2-函数中使用变量 1. 向函数传递参数 函数可以使用标准参数环境变量来表示命令行传递给函数的参数.例如,     函数名在变量$0中定义,函数命令行的其他参数使用变量$1和$2等定义.     专用变量$#可以用来确定传递给函数的参数数目. 在脚本中指定函数时,必须在函数所在命令行提供参数值.func1 $value1 10 由于函数为自己的参数值使用专用的参数环境变量,所以函数无法从脚本命令行直接访问脚本参数值. 以上含义:函数add…
自学Linux命令行与Shell脚本之路[第一回]:初识Linux   1.1 自学Linux Shell1.1-Linux初识 1.2 自学Linux Shell1.2-Linux目录结构 1.3 自学Linux Shell1.3-Linux文件系统 自学Linux命令行与Shell脚本之路[第二回] : 走进shell 2.1 自学Linux Shell2.1-进入shell命令行 2.2 自学Linux Shell2.2-GHOME Terminal仿真器 自学Linux命令行与Shell…
原文出处: 吴秦的博客    这次分享的宗旨是--让大家学会创建与使用静态库.动态库,知道静态库与动态库的区别,知道使用的时候如何选择.这里不深入介绍静态库.动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书<程序员的自我修养--链接.装载与库>. 什么是库 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.库有两种:静态库(.a.…
linux下和windows下的 创建线程函数 #ifdef __GNUC__ //Linux #include <pthread.h> #define CreateThreadEx(tid,threadFun,args) pthread_create(tid, 0, threadFun, args) #define CloseHandle(ph) /* int pthread_create( //指向线程标识符的指针. pthread_t *restrict tidp, //设置线程属性.传…
linux进程编程:子进程创建及执行函数简介 子进程创建及执行函数有三个: (1)fork();(2)exec();(3)system();    下面分别做详细介绍.(1)fork()    函数定义:    pid_t fork();    函数说明:    linux下进程在内存中由三部分数据组成:代码段.数据段.堆栈段.在一个进程中,调用fork函数,可以创建.启动一个新进程.新进程与父进程共享代码段,复制父进程的数据段和堆栈段.创建成功后,fork()会向两个进程都有返回值.向父进程的…
dlopen()是一个强大的库函数.该函数将打开一个新库,并把它装入内存.该函数主要用来加载库中的符号,这些符号在编译的时候是不知道的.这种机制使得在系统中添加或者删除一个模块时,都不需要重新编译了.可以在自己的程序中使用 dlopen().dlopen() 在 dlfcn.h 中定义,并在 dl 库中实现.它需要两个参数:一个文件名和一个标志.文件名就是一个动态库so文件,标志指明是否立刻计算库的依赖性.如果设置为 RTLD_NOW 的话,则立刻计算:如果设置的是 RTLD_LAZY,则在需要…
项目开发中免不了要在服务器上创建文件夹,比如上传图片时的目录,模板解析时的目录等.这不当前手下的项目就用到了这个,于是总结了几个循环创建层级目录的方法. php默认的mkdir一次只能创建一层目录,而要逐层创建各级目录的话,一般都是先从父创建,然后逐层往下创建,但是这样手工创建的话,有点太过于麻烦了. 我们写程序是做什么的?不久是为了能自动化实现我们需要的功能么,这里的方法就是为了能够通过程序帮我们自动创建完成层级目录. Ruesin.com 思路有两种: 一.从上往下(父级→子级) 1.先判断…