
Linux应用层必备技能
文章平均质量分 97
_天之白_
这个作者很懒,什么都没留下…
展开
-
Linux应用(五)必备小技能{动态库与静态库}
如果是初学者,建议先跳过概念,对比什么的,直接看库的生成和使用,直接看用法才是初学的正确姿势;概念什么的都是复习,深入理解才要看的;天启四骑士:我愿理解为:预处理所有#代码,把所有C文件编译成汇编文件,把所有汇编文件汇编成二进制可执行文件,最后把所有二进制文件链接在一起形成一个文件; 也就是说,在Linux中,命令ldd+可执行文件名,即可查看这个文件依赖的所有库;在用file+文件名,可以查看每个库的具体信息,可知是静态库还是动态库;当然在Linux当中,以.so为后缀的是动态库,以.a为后缀的是静态库,原创 2022-07-01 20:23:25 · 1103 阅读 · 0 评论 -
Linux应用(四)socket网络编程
如果你想看编程接口,请不要看这章,本章内容繁杂直接劝退;socket有流式SOCK_STREAM和数据报SOCK_DGRAM两种,前者用于TCP模型,后者用于UDP模型;是一种可靠的、双向的通信数据流,TCP协议能够使数据可以准确无误地到达另一台计算机,如果损坏或丢失,可以重新发送; SOCK_STREAM 有以下几个特征: 数据在传输过程中不会消失; 数据是按照顺序传输的; 数据的发送和接收不是同步的(有的教程也称“不存在数据边界”)。数据报套接字是一种不可靠的、不按顺序传递的、以追求速度为目的的套接字原创 2022-06-25 12:39:28 · 1736 阅读 · 2 评论 -
linux应用(三)多线程编程
想要编程来让linux系统“同时”执行多个任务,一种方法是使用多进程,也就是我在执行一个程序,哎,我又开一个程序,操作系统你让它俩“同时”运行;这种方式可以,但进程间的切换开销大,通信和同步较为复杂,不合适;我想实现的是,就开一个程序,这个程序的不同代码段可以“同时”运行;这就要用到多线程;线程是轻量级的进程; 进程是程序的一次动态执行,但是真正执行代码的是线程;操作系统为进程分配资源,进程中的线程来执行任务代码;一个进程至少包含一个线程,即主线程;其他线程(代码创建出来的)为子线程; 注:线程库不在lin原创 2022-06-25 12:39:01 · 590 阅读 · 0 评论 -
Linux应用(二)多进程编程
进程是程序的一次动态执行过程,是程序执行和资源管理的最小单位 。程序是静态的,是一些保存在磁盘上的指令的有序集合,没有任何执行的概念; 进程是一个动态的概念,它是程序执行的过程,包括创建、调度和消亡;注意:程序一旦被运行,就会产生一个进程,并且会被每一个进程分配一个0-4G(32OS下)的内存空间,分配空间大小和操作系统的位数有关。32位系统可以对应232 个地址,那么就有232 字节=4X1024X1024X1024个字节; C语言内存分配图: 进程控制块(pcb):PID,进程用户, 进程优先级,文原创 2022-06-25 12:38:05 · 1208 阅读 · 0 评论 -
Linux应用(一)文件与IO
常规文件 r 目录文件 d 字符设备文件 c 块设备文件 b 管道文件 p 套接字文件 s 符号链接文件 l系统调用就是操作系统提供的接口函数。 如果我们把系统调用封装成库函数就可以起到隔离的作用,提高程序的可移植性。 Printf就是库函数然后调用了系统调用才在显示器上显示字符。标准I/O由ANSI C标准定义,标准I/O通过缓冲机制减少系统调用,实现更高的效率有三个预定义的流,在每个进程中自动创建: stdin;stdout;stderr;它们都是FILE流结构体;打开文件: 返回值:出错返回NULL,原创 2022-06-25 12:12:28 · 949 阅读 · 1 评论