linux C 学习笔记(非常初级 ) - 邓维 - 博客园
linux C 学习笔记(非常初级 )
从以前的笔记中找到的,simple but useful=============================
调试:gdblist //list coderunkill //end debugn=nextquit //terminate gdbbreak lineofcodedelete break(breakpoints) numofbreakwatchgdb基本命令2----------------------------命令 描述break(或b) 行号 在某一行设置断点break 函数名 在某个函数开头设置断点break ... if ... 设置条件断点continue(或c) 从当前位置开始连续运行程序delete breakpoints 断点号 删除断点display 变量名 跟踪查看某个变量,每次停下来都显示它的值disable breakpoints 断点号 禁用断点enable 断点号 启用断点info(或i) breakpoints 查看当前设置了哪些断点run(或r) 从头开始连续运行程序undisplay 跟踪显示号 取消跟踪显示=============================编译:gcc -Wall 可显示 编译 的warninggcc -Istack 告诉gcc,头文件要到子目录stack里面找gcc main.c -L. -lstack -Istack -o main //-L选项告诉编译器去哪里找需要的库文件,-L.表示在当前目录找。-lstack告诉编译器要链接libstack库,-I选项告诉编译器去哪里找头文件。注意,即使库文件就在当前目录,编译器默认也不会去找的,所以-L.选项不能少。=============================库:ar rs //编译成静态库:ar rs libstack.a stack.o push.o pop.o is_empty.ogcc -shared -o libstack.so stack.o push.o pop.o is_empty.o //编译成共享库使用共享库可以很方便地升级库文件而不需要重新编译应用程序,这是静态库所没有的优点。=============================链接:函数声明时,空参数时,参数写 voidInternal Linkage 如果用static关键字修饰一个函数声明,则表示该标识符具有Internal LinkageExternal Linkageinclude:对于用角括号包含的头文件,gcc首先查找-I选项指定的目录,然后查找系统的头文件目录(通常是/usr/include)。对于用引号包含的头文件,gcc首先查找包含头文件的.c文件所在的目录,然后查找-I选项指定的目录,然后查找系统的头文件目录。=============================man page表 3.1. Man Page的SectionSection 描述1 用户命令,例如ls(1)2 系统调用,例如_exit(2)3 库函数,例如printf(3)4 特殊文件,例如null(4)描述了设备文件/dev/null、/dev/zero的作用5 系统配置文件的格式,例如passwd(5)描述了系统配置文件/etc/passwd的格式6 游戏7 其它杂项,例如bash-builtins(7)描述了bash的各种内建命令8 系统管理命令,例如ifconfig(8)例如看C函数printfman 3 printf============================语法:============================结构体:结构体的定义声明 本质上跟基本类型是一样的,int i,j;struct complex_struct{double x,y;}z1,z2;----------int i=2;struct complex_struct z={3.0,4.0};----------但是,不能这样使用:struct comlex_struct z1;z1={3.0,4.0};----------每个复数变量都有两个成员(Member)x和y,可以用.运算符(.号,Period)来访问,这两个成员的存储空间是相邻的============================数组对于数组类型有一条特殊规则:数组类型做右值使用时,自动转换成指向数组首元素的指针。============================文件和目录操作的系统函数access(2)函数检查执行当前进程的用户是否有权限访问某个文件chmod(2)和fchmod(2)函数改变文件的访问权限chown(2)/fchown(2)/lchown(2)改变文件的所有者和组utime(2)函数改变文件的访问时间和修改时间truncate(2)和ftruncate(2)函数把文件截断到某个长度link(2)函数创建硬链接,其原理是在目录的数据块中添加一条新记录unlink(2)函数删除一个链接rename(2)函数改变文件名readlink(2)函数读取一个符号链接所指向的目标路径mkdir(2)函数创建新的目录rmdir(2)函数删除一个目录,这个目录必须是空的(只包含.和..)才能删除opendir(3)/readdir(3)/closedir(3)用于遍历目录数据块中的记录opendir打开一个目录,返回一个DIR *指针代表这个目录,它是一个类似FILE *指针的句柄,closedir用于关闭这个句柄,把DIR *指针传给readdir读取目录数据块中的记录,每次返回一个指向struct dirent的指针,反复读就可以遍历所有记录,所有记录遍历完之后readdir返回NULL。============================