- 博客(34)
- 收藏
- 关注
原创 MYSQL C API 常用函数详解
初始化MySQL库,创建一个MySQL对象,用于后续的数据库连接和操作。连接到MySQL服务器,建立与数据库的通信连接。执行SQL查询。将查询结果存储在内存中以供后续处理。从查询结果集中获取一行数据。获取结果集中的字段数。获取结果集中的行数。释放查询结果集资源,释放内存。关闭MySQL连接。
2023-10-10 11:35:22 185
原创 Linux系统编程之套接字Socket
套接字(Socket)是一种用于在计算机网络中进行通信的编程接口或端点。它允许不同计算机上的进程通过网络进行数据传输和通信。套接字是网络通信的基础构建块,使程序能够在不同主机之间发送和接收数据。套接字提供了一种标准化的方法来创建、连接、发送和接收数据,无论是在本地计算机上的不同进程之间还是在远程计算机之间。套接字通常用于支持各种网络协议,如TCP(传输控制协议)、UDP(用户数据报协议)、IP(互联网协议)等,以实现不同类型的网络通信。
2023-09-25 20:35:42 257
原创 Linux系统编程之进程间通信
管道是UNIX环境中历史最悠久的进程间通信方式,分为匿名管道和命名管道。但是这样未免显得太麻烦了。所以,管道的概念应运而生。对比以上两种方法,我们也可以理解为,管道本质上就是一个文件,前面的进程以写方式打开文件,后面的进程以读方式打开。这样前面写完后面读,于是就实现了通信。实际上管道的设计也是遵循UNIX的“一切皆文件”设计原则的,它本质上就是一个文件。Linux系统直接把管道实现成了一种文件系统,借助VFS给应用程序提供操作接口。虽然实现形态上是文件,但是管道本身并不占用磁盘或者其他外部存储的空间。
2023-09-18 22:42:52 261
原创 Linux系统编程之IO复用
select函数是一种多路复用(Multiplexing)I/O模型,其原理是通过监视一组文件描述符(File Descriptor,通常是套接字)的状态来进行 I/O 操作。它的核心思想是将程序挂起(阻塞)等待多个文件描述符中的任何一个变为就绪(可读、可写或异常),然后执行相应的操作。
2023-09-12 11:14:47 232
原创 Linux系统编程之线程与线程同步
线程可以理解为一个正在运行的函数。posix线程是一套标准,而不是具体实现,所以不同系统会有不同的实现。该标准定义了pthread_t类型的线程标识,其中p表示posix,这一类型在不同系统下底层实现不同,所以不要打印线程ID.
2023-09-08 16:25:12 71
原创 Linux系统编程之信号
信号就是软件中断。每当程序收到一个信号,都需要按指定的方法去处理。以下是UNIX系统的信号表。其中core表示产生一个复制了该进程内存映像的core文件,它保存了程序现场,可以使用gdb来调试。
2023-08-11 17:14:29 181
原创 Linux系统编程之进程控制
每个进程都有非负整数表示的唯一进程ID,即pid,其类型为pid_t类型。可用ps命令查看当前所有进程的信息,该命令可以加选项,一般使用ps -ef或ps axf(打印进程树),查看当前系统所有进程的信息。需要注意的是和fd(文件描述符)不同,pid是顺次使用的,即当10001,10002,10003被用过后,10002释放了,下个进程的pid会继续使用10004而不是回头使用最小的可用pid10002。pid为1的进程是init进程,它是所有进程的祖先进程。
2023-07-29 17:44:39 379
原创 Linux系统编程之进程环境
首先我们需要知道一个进程什么情况是正常终止什么情况是异常终止。从main函数返回调用exit调用_exit或_Exit最后一个线程从其启动例程返回最后一个线程调用pthread_exit调用abort接到一个信号并终止最后一个线程对其取消请求做出相应。
2023-07-26 15:19:45 125
原创 C++设计模式之模板方法、策略模式、观察者模式
定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。Template Method模式是一种非常基础的设计模式,在面向对象系统中有大量的应用。它用最简单的机制(虚函数的多态性)为很多应用程序框架提供了灵活的扩展点,是代码复用方面的基本实现结构。除了可以灵活应对子步骤的变化外,“不要调用我,让我来调用你”的反向控制结构是Template Method的典型应用。
2023-07-24 12:08:33 1014
原创 Linux系统编程之目录解析
结构体的指针,该结构体包含了目录流中目录指针(dirp)所指向的下一个文件的信息。这是一个以null结尾的字符数组,存储了文件的名称。这是一个glob函数的使用示例,该代码将打印指定路径下的所有.txt文件。函数是一个用于模式匹配的函数,它可以根据指定的模式匹配文件路径。则是用一个被open过的目录文件返回的文件描述符来打开一个目录。是匹配到的路径的字符串数组,以NULL结束,在某些情况下,函数用于关闭一个打开的文件流,并且会关闭其文件描述符。类型的指针,该指针可以用于后续的目录操作。
2023-06-27 21:46:47 791
原创 Linux系统编程之文件系统
另外,在对该文件进行cp时,cp每次从源文件读取一段数据,发现都是'\0'(空字符),也就不做写操作,所以cp过程中不会发生write操作,最后目标文件的blocks是0,也就是不占磁盘空间。需要注意的是,其中的st_size并不是文件真实的占用磁盘空间的大小,Linux中文件系统是按块分配磁盘空间给文件的,所以st_blocks * 512才是其所占磁盘大小,而st_size只是它的一个属性。,这些指针也指向某个数据块,但里面存放的是指针数组,通过该数据块再间接找到存放数据的数据块。
2023-06-24 22:08:57 239
原创 Linux系统编程之系统调用IO
文件节点是在文件系统级别进行管理的,而文件表项是在进程级别进行管理的.这意味着,不同进程打开同一个文件时,它们会有自己独立的文件表项,但是这些文件表项都会指向同一个文件节点.是一个阻塞函数,如果写入的数据量大于文件描述符的缓冲区大小,它会一直等待直到数据被完全写入或者出现错误。lseek()用于设置文件描述符的偏移量,即改变文件的当前读写位置,并返回改变后的偏移量。函数的第三个参数是可选的,用于指定文件的权限(仅在创建文件时有效)。第三个参数是要写入的字节数。函数的第一个参数是要打开或创建的文件的路径名。
2023-06-22 17:45:42 303
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人