【2015/10/17】Linux 逻辑卷管理以及C学习日志_Day7 编译步骤,注释,mystrcpy

来源:互联网 发布:2017年做淘宝还赚钱吗 编辑:程序博客网 时间:2024/06/15 05:14
D7:
    review: 如果想在开机时挂载文件需要在fstab上添加挂载设备!
    
    LVM:(逻辑卷管理)    
        PV(physical volume 物理卷:来源的设备空间)
        VG(volume group 由PE组成的空间)
        LV(logical volume真实使用的由VG分配的空间)

    创建LVM:
        1.fdisk n 出空间
        2.fdisk t 修改Hex code (输入L显示所有code) LVM 的code是8e
        3.partprobe 重载分区
        4.pvcreate </dev/.. (设备路径)>
        5.pvdisplay : 显示pv的信息        
        6.vgcreate -s <16M : PE大小>  <vg0 : 卷组名> <设备名 : /dev/..>
        7.vgdisplay
        8.lvcreate -L <大小 : 1G> -n <lv0 : 设备名> <vg0 : 分配的卷组名>
        9.lvdisplay    
        10.mkfs.xfs </dev/vg0/lv0 : 设备名>
    
    可执行的操作 lvextemd -L <扩展后的空间 : 2G> <设备名 : /dev/vg0/lv0>
    要进行刷新才识别到新的 xfs_growfs <设备名>

        
C语言开始:
    file <文件> : 查看文件类型
    echo $? 显示上一次操作的返回值
        
    vim 编辑器
    gcc 编译器

    编译步骤:    

        总和步骤: gcc hello.c -o hello

        1.预处理    gcc -E <源码文件 *.c> -o <*.i> 对头文件的全部展开(包括各种拓扑关系) 同时进行宏定义以及擦除注释
        2.编译    gcc -S <预处理文件 *.i> -o <*.s> 汇编代码  
        3.汇编    gcc -c <汇编代码文件 *.s> -o <*.o> 二进制代码可以与别的二进制代码进行重定向 (file中信息有 relocatable : 可重定向的)
        4.链接    gcc <汇编二进制代码 *.o> -o <可执行文件名>
        
    linux下ELF是指二进制文件


    函数类型:
        1.可变参函数
        2.递归函数
        3.泛型编程

推荐书籍:《C语言接口与实现》

上课内容:

/*************************************************************************    > File Name: class.c    > Author: khalil    > Mail: hsgwpj@gmail.com     > Created Time: Sat 17 Oct 2015 02:36:53 PM CST ************************************************************************/#if 1#include<stdio.h>#include<string.h>#include<stdlib.h>char *  my_strcpy(char *dest_str,const char * src_str);char *my_strncpy(char *dest_str,const char * src_str,size_t n);int main(int argc , char ** argv){char *str = "hello,world!~~~~~";char str2[100] = {0};char str3[100] = {0};char str4[100] = {0};//把字符串str的内容拷贝到str2//strcpy(str2,str);//my_strcpy(str2,str);my_strncpy(str3,str,50);//printf("%s\n",str2);//printf("%s\n",str3);printf("%d\n",strlen(str3));//my_strncpy(str4,str,3);//printf("%s\n",str4);return 0;}char *  my_strcpy(char *dest_str,const char * src_str){//1.检测传入参数//2.实现拷贝//3.返回dest地址////不建议对传入的指针参数直接进行使用char* dest = dest_str; const char* src  = src_str;if (dest_str == NULL || src_str == NULL || dest_str == src_str){return dest_str;}while((*dest++ = *src++) != '\0'){}return dest_str;}char *my_strncpy(char *dest_str,const char * src_str,size_t n){char * dest = dest_str;const char * src = src_str;size_t i = 0;if (dest_str == NULL || src_str == NULL || dest_str == src_str){return dest_str;}for ( ; (i < n)&&(*src) ; i++){*dest++ = *src++;}for( ; i < n ;){*dest++ = '\0';}return dest_str;}#endif #if 0int main (int argc , char ** argv){int i = 0 ;//操作符两边用空格隔开int a = 10 , b = 20 ;//不建议,每行只对一个变量赋值//要注意缩进return 0 ;}#endif #if 0//注释的三种方式://1.单行注释 ////2. 块注释  /**///3.条件注释//#if (1|0)//#endif////关键字(系统可以识别的,系统自带的)和标识符(用户创建的名字)//Tip: C语言中有32个关键字!////1.标识符由数字字母下划线组成,必须以字母下划线开始//2.常见的命名规范://(1):int ListNode;//Win ver//int List_node;//Linux ver  -推荐使用!//(2):要求:见名识义//    (3):用最少的字母表示出最大的含义!//#endif#if 0//*.c实现功能的文件 //在/usr/lib中存在它的编译后代码 //*.o是静态库 *.so是动态库 //一般情况下 使用者只能获得.c编译后的文件////*.h功能说明文件////linux内核////1.编程规范////字符串要注意特殊字符,以及他们strlen中的长度//要注意/的转义作用//#include<stdio.h>#include<string.h>//可以通过 man <函数名> 来查看它的头文件int main(int argc , char ** argv){char string[] = {"hello,world!"};printf("%d",strlen(string));printf(string);return 0;}#endif#if 0#include<stdio.h>//提高程序的局部性int main(int argc , char **argv){int array[] = {12,123,213,213,21,3,213,21,312,3};int arr_len = sizeof(array) / sizeof (array[0]);//不要在循环语句中进行计算 会降低程序的效率int i = 0;for (i = 0 ; i < arr_len ; ++i){printf("%d\n",array[i]);}return 0 ;}#endif #if 0#include<stdio.h>int main(int argc , char ** argv){int flag ;scanf("%d" , & flag);if (flag == 0){printf("---Hello , World!---\n");return 0;}else{printf("---Nope! You're wrong!---\n");return 1;}}#endif


0 0
原创粉丝点击