- 博客(8)
- 收藏
- 关注
原创 文件操作函数
如果向后移动的字节数超过了文件末尾,再次写入时将增大文件尺寸,从原来的文件末尾到fseek移动之后的读写位置之间的字节都是0。系统对于每个打开的文件都记录着当前读写位置,当文件打开时,读写位置在文件开头,每调用一次fgetc,读写位置向后移动一个字节,因此可以连续多次调用fgetc函数依次读取多个字节。需要注意的是,返回的字符串是静态的,因此每次调用strerror都会覆盖之前的内容。直接在文件中读写结构体的程序是不可移植的,因为不同平台的大小端可能不同,结构体的填充方式也可能不同。
2024-09-12 08:40:31
318
原创 预处理笔记
预处理令牌(Token)是指预处理器在处理源代码时识别的基本单元。预处理令牌用于执行宏替换、条件编译和文件包含等操作。预处理令牌的主要类型包括:标识符(变量名、函数名)、关键字(#define、#include)、常量、运算符、分隔符。宏定义名可以像变量一样在代码中使用。宏定义名可以像函数一样在代码中使用。int j = 10;return 0;函数式宏定义的参数没有类型,预处理器只负责进行形式上的替换,而不做参数类型检查。
2024-09-10 20:06:35
1002
原创 线程的结束(Linux C/C++笔记)
线程就被动结束,一种方法是可以在同进程的另外一个线程中通过函数pthread_kill发送信号给要结束的线程,目标线程收到信号后再退出;只能只能按快捷键Ctrl+C来停止进程,这说明在主线程中虽然发送取消请求了,但并没有让子线程停止运行,因为如果停止运行,pthread_join是会返回并打印其后面的语句的。如果不用pthread_testcancel,则可以在while循环中用sleep函数来代替,但这样会影响while的速度,在实际开发中,可以根据具体项目具体分析。thread:需要取消的线程的ID。
2024-09-09 13:28:31
772
原创 线程的属性(Linux C/C++笔记)
线程的属性有:分离状态、调度策略和参数、作用域、栈尺寸、栈地址、优先级。char __size[__SIZEOF_PTHREAD_ATTR_T]字符数组,大小为__SIZEOF_PTHREAD_ATTR_T,用于存储属性值对齐成员,确保结构体的对齐方式符合要求用于获取线程thread的属性,并将这些属性存储在attr指向的pthread_attr_t结构体中,当获得的属性结构体变量不再需要的时候,应该用函数pthread_attr_destroy进行销毁。使用该函数需要定义宏#define
2024-09-08 15:11:57
779
原创 线程的创建(LinuxC/C++笔记)
sleep只能等待固定的时间,在这个时间内,有可能子线程早就结束了,也有可能子线程没有完成,用sleep等待子线程结束并不精确。指向pthread_attr_t类型的常量指针,用于指定线程属性(线程的栈大小、调度策略)。函数指针,指向线程函数的地址。线程函数是函数创建后要执行的函数,返回void*类型的指针,参数为void*类型的指针。指向void的指针,传递给线程函数的参数。接收线程的返回值,*value_ptr指向该返回值。指向pthread_t类型的指针,指向创建成功后的线程ID。
2024-09-07 16:14:49
450
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人