您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > linux高级编程笔计
Linux应用编程一、IO..............................................................................................................................................2标准IO口库:........................................................................................................................2打开流:...........................................................................................................................2标准IO库读写:............................................................................................................3标准I/O口库-定位..........................................................................................................3文件IO.....................................................................................................................................4一、unix输入输出...........................................................................................................4二、文件IO操作..................................................................................................................4二、静态库和动态库.......................................................................................................................6三、进程操作...................................................................................................................................8系统进程查看:.......................................................................................................................8进程类型:...............................................................................................................................9进程运行状态:.......................................................................................................................9应用程序进程操作.................................................................................................................10创建进程:.....................................................................................................................10替换进程:.....................................................................................................................10进程阻塞:.....................................................................................................................10进程结束.........................................................................................................................10进程的一生.....................................................................................................................13进程间通信.....................................................................................................................................13网络编程.........................................................................................................................................19UDP...........................................................................................................................................23TCP...........................................................................................................................................23一、IOMan:1conmmand2syscall3functionSorceinsight可以更新符号表,方便编程Posix标准接口windowslinux应用层与内核层的标准接口。在posix之上还可能有其它封装如glibc.标准IO口库:处理缓存分配、以优化执行I/O,Strace加可执行文件可跟踪程序从应用层到硬件的调用过程Stream流:文本流:在流中处理的数据以字符出现。二进制制流:流中处理的是二进制的序列。缓冲文件系统:(高级磁盘IO)目的:心量减少使用read/write的使用定义:文件读写都经过内存中介。分类:全缓存,行缓存,不缓存非级冲文件系统:(低级磁盘IO)打开流:*fopen(constchar*path,constchar*mode。。。)释放:fclose*freopen(constchar*restrictpathname,constcharrestricttype,file*restrictfp)标准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’结束符来终址函数,转义成换行字符。Fputs:内存搬移: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)其它资源的访问标识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()条开目录文件readdir()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共同点:都是二进制文件的打包不同点:链接成可执行文件的时候,作用范围不同静态库:链接阶段,会跟我们其余的*.o文件一起生成可执行文件。gcc-obuild*.o*.a.build具备*.a中所有二进制的代码。动态库:链接阶段,只是起到一个标签的作用,不会跟其余*.o文件共同生成可执行程序build,这个build里没有so文件的二进制代码,在运行期间由操作系统来调度相关的so文件。gcc-obuild*.o*.so默认下GCC是按动态方式编译文件编译时加–static即可实现静态库如何创建静态库:1、先将*。c转成。o文件。2、用ar命令,它将很多*。o的文件生成库3、arcrslib.a1.o2.o。系统默认的库目录为/lib/user/lib,把生成的库放在系统默认库中。或者在生成可执行文件时加入–L文件路径动态库:链接阶段,只是起到一个标签的作用,创建动态库gcc–fPIC–c*.c–o*.ogcc–shared–fPIC–o*.so*.o系统
本文标题:linux高级编程笔计
链接地址:https://www.777doc.com/doc-4210864 .html