欢迎来到天天文库
浏览记录
ID:41037271
大小:1.39 MB
页数:27页
时间:2019-08-14
《linux高级编程笔计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Linux应用编程一、IO2标准IO口库:2打开流:2标准IO库读写:3标准I/O口库-定位3文件IO4一、unix输入输出4二、文件IO操作4二、静态库和动态库6三、进程操作8系统进程查看:8进程类型:9进程运行状态:9应用程序进程操作10创建进程:10替换进程:10进程阻塞:10进程结束10进程的一生11进程间通信11网络编程17UDP21TCP21一、IOMan:1conmmand2syscall3functionSorceinsight可以更新符号表,方便编程Posix标准接口windowslinux应用层与内核层的标准接口。在posix之上还可能有其它封装如glibc.标准IO
2、口库:处理缓存分配、以优化执行I/O,Strace加可执行文件可跟踪程序从应用层到硬件的调用过程Stream流:文本流:在流中处理的数据以字符出现。二进制制流:流中处理的是二进制的序列。缓冲文件系统:(高级磁盘IO)目的:心量减少使用read/write的使用定义:文件读写都经过内存中介。分类:全缓存,行缓存,不缓存非级冲文件系统:(低级磁盘IO)打开流:*fopen(constchar*path,constchar*mode。。。)释放:fclose*freopen(constchar*restrictpathname,constcharrestricttype,file*restri
3、ctfp)标准IO库读写:feof()判断文件是否结束。EOF/feof()EOF是glibc中文件结束的返回标志为32位-1。读一个字符:Getc(FILE*steam)Fgetc()Getchar()若成功则为下一个字符,若已到文件尾端则为EOF写一个字符:Fputc(‘a’,*)每次输入一行:Char*gets(char*s)Char*fgets(char*s,intsize.FILE*stream)Fegets()安全的读取到一个合法的字符串。最多读取到size-1个,s[size-1]一定为0每次输出一行:Puts:一定是一行,‘、0’结束符来终址函数,转义成换行字符。Fput
4、s:内存搬移:Fwrite()Fread()若文件大于4G则在编译时打开__USE_FILE_OFFSET64宏fpos_t标准I/O口库-定位ftellfseek(),SEEK_SET/SEEK_CUR/SEEK_ENDrewind(*stream)设定文件位置为开始fgetpos(FILE*stream,longoffset,intwhence)fsetpos()临时文件char*tmpnam(char*s)FILE*tmpfile(void)linux下EOF为Ctrl+D文件IO一、unix输入输出1、文件描述符a)顺序分配的非负整数b)内核用以标识一个特定进程正在访问的文件c)
5、其它资源的访问标识2、3、不用绶存的I/Oa)通过文件描述符进行访问4、标准IO二、文件IO操作open()在内核中注册一个设备。intopen(constchar*pathname,intflags,mode_tmode);可以打开设备文件,只能创建普通文件close()关闭表述符文件属性获取fstat/chmod/chown目录mkdir/rmdir/chdir/opendir/readdir目录没有执行权限,我们对该目录不能操作,进入,删除删阶除,修改删除文件必须是该文件的所在文件夹具有执行,可写权限。chown改变所有者truncate()文件截短opendir()条开目录文件r
6、eaddir()mkdir()已知文件名和路径,获取文件大小的方式:stat(filename,&stat)file_sizeopen();RET=read()openret=lseek(fd,o,SEEK_END)硬链接软链接区别硬链接:硬盘中目录对应的内容,其另目录就是硬链接link()unlink()软链接:相当于windos的快捷方式symlink()unlink()二、静态库和动态库库:(链接权限)可执行文件:(执行)都是二进制的bin。静态库:arcrs*.o动态库:gcc-shared-fPIC-o*.so*.o共同点:都是二进制文件的打包不同点:链接成可执行文件的时候,作
7、用范围不同静态库:链接阶段,会跟我们其余的*.o文件一起生成可执行文件。gcc-obuild*.o*.a.build具备*.a中所有二进制的代码。动态库:链接阶段,只是起到一个标签的作用,不会跟其余*.o文件共同生成可执行程序build,这个build里没有so文件的二进制代码,在运行期间由操作系统来调度相关的so文件。gcc-obuild*.o*.so默认下GCC是按动态方式编译文件编译时加–static即可实现静态库如何创建静态
此文档下载收益归作者所有