- 博客(25)
- 收藏
- 关注
原创 进程线程(3)
多线程程序设计:可以包括专门的线程进行资源申请和初始化、执行处理程序以及进行资源释放。线程间通信:由于线程共享进程资源,需要注意线程间的通信和同步,以保证数据的正确性和安全性。通过合理使用线程,可以提高程序的并发性能,但在使用过程中需要注意线程的安全性、稳定性和调试等问题。希望本文对大家理解和使用Linux中的线程有所帮助,如有不足之处,欢迎大家指正。
2024-08-14 19:56:00
312
原创 进程线程(2)
(wait/waitpid --- 查看子进程的退出状态)进程执行结束但空间未被回收变成僵尸进程。(2)参数:status 进程退出时候的状态如果不关心其退出状态一般用NULL表示。(3)以e结尾的函数,可以传入一个指向环境字符串的指针数组的指针。用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),新进程,所以调用exec前后该进程的id并未改变。这些函数如果调用成功则加载新的程序从启动代码开始执行,不再返回,如果调用出错。当进程调用一种exec函数时,该进程的。
2024-08-13 19:54:49
723
原创 进程线程(1)
进程会分配内存资源(如栈、堆、静态区等)和CPU资源,具有程序状态的变化,可以并发执行,并且进程之间会竞争计算机的资源。例如,在服务器程序中,通过创建多个进程可以同时处理多个客户端的请求,提高服务器的响应能力。之前,则子进程会继承父进程已打开的文件的相关信息(文件表项),此时父子进程共享(文件表项),实现对同一个文件的操作;之后各自打开,则父子进程各自拥有各自的文件描述符及对应的文件表项,各自独立操作该文件,可能存在文件内容被覆盖的情况。是程序执行的过程,包括进程的创建、调度和消亡,是。
2024-08-12 21:04:36
707
原创 标准IO和文件IO(3)
返回值:成功返回 ID 对应用户的信息,失败返回。:成功返回保存日历时间结构体的指针,失败返回NULL。返回值:成功返回 0,失败返回 -1。返回值:成功返回 0,失败返回 -1。返回值:成功返回 0,失败返回 -1。返回值:成功返回 0,失败返回 -1。:成功返回1970年到现在的秒数,失败返回 - 1。:成功返回获得时间字符串的首地址,失败返回NULL。功能:将一个老的路径名改为新的路径。返回值:成功返回组信息,失败返回。返回值:成功返回对应的错误信息。功能:创建一个硬链接文件。开辟特殊长度内存空间。
2024-08-08 20:24:54
1063
原创 标准IO和文件IO(2)
返回值:包含文件信息的结构体,出错或者读到目录流末尾返回NULL。返回值:成功返回包含路径空间的字符串首地址,失败返回NULL。功能:从目录流中读取文件信息并将保存信息的结构体地址返回。返回值:成功返回目录流指针,失败返回NULL。返回值:成功返回0,失败返回 - 1。功能:打开一个目录获得一个目录流指针。返回值:成功返回0,失败返回 - 1。返回值:成功返回0,失败返回 - 1。返回值:成功返回0,失败返回 - 1。返回值:成功返回0,失败返回 - 1。功能:获得当前的工作路径。功能:获得文件的属性。
2024-08-07 20:38:49
784
原创 标准IO和文件IO(1)
在标准IO中,不同的缓存机制适用于不同的场景,以提高数据处理的效率和性能。全缓存适用于文件读写,能够减少系统调用的次数,提高数据传输的效率;在操作系统中,为了方便用户使用系统功能,系统对外提供了一组系统函数,称为系统调用,其中包括文件IO。文件IO是一种基于Linux内核的没有缓存的IO机制,主要用于对设备文件和普通文件进行操作。(3)对普通文件进行标准IO操作时,建立的缓存一般为全缓存。3.返回值:成功返回读到数据的个数,失败返回 - 1,读到文件结尾返回0。(2)不缓存数据,直接将数据输出或处理。
2024-08-06 19:57:08
943
原创 标准IO操作
一般都是对普通文件操作,是一种有缓存的IO在文件IO和用户程序之间加入缓冲区,可以有效减少系统调用的效率,节省系统IO调度资源。eg : ====》stdio.h ===>stdio.c==>libc.so ==>/usr/lib so 动态库。ANSIC 设计的一组用文件IO封装的操作库函数头文件:stdio.h 标准输入输出头文件。< > :是系统库函数,默认路径在/usr/include/(1)fwrite写文件。(1)fputc读文件。(1)fputs读文件。(2)fread读文件。
2024-08-05 19:40:30
1026
原创 Linux shell脚本配置
shell脚本的本质就是一系列shell命令的集合。练习:从终端接收两个数,并打印出这两个数四则运算的结果。例如:每隔五个输出从20至100的数。
2024-08-03 19:54:05
1376
原创 共用体、枚举类型、typedef定义,位运算
位运算(所有位运算要操作数的类型是与整形或者整形兼容,或者枚举也可以;但是指针,结构体这些都不可以,不与整形兼容)共用体所有成员变量,所占空间重叠,占共同的空间。用来声明新的类型名来达到给予类型的作用。数据类型1 成员变量1;数据类型2 成员变量2;数据类型3 成员变量3;右移(算术右移,右移一位该数除以2)union 共用体名。将变量的值一一列举出来。enum 枚举类型名。
2024-08-02 20:39:14
528
原创 结构体与共用体,链表的学习
C语言允许用户自己定义一种数据结构,称为结构体。声明一个结构体类型一般形式为:strcut 结构体名成员列表int id;//";"不能丢失int i;s.id = 1;return 0;//部分初始化。
2024-08-01 19:33:13
686
原创 指向指针的指针
一个函数在编译时被分配给一个入口地址,这个函数的入口地址就称为函数的指针。表示定义一个指向函数的指针变量p,他不是固定指向哪一个函数的,只是表示定义了这样一个类型的变量,它是专门用来存放函数的入口地址的。例如:int a[10] = {1,2,3,4,5,6,7,8,9,0};&a:指向长度为10的一维int数组的地址。一个数组,若其元素均为指针类型数据,称为指针数据,其每一个元素都相当于一个指针变量。char *为基类型,*为类型说明符,p为指针变量。指的是一个指针变量,该变量的值为另一个指针的地址。
2024-07-31 19:38:55
530
原创 字符串与指针
在内存空间使用完时,应该对该空间进行销毁采用的函数为(free)(空指针传给free函数并不会导致错误);如果请求的空间不够用应采用realloc函数延申开辟的空间,销毁原来的空间;该指针所指向的地址不可更改;但可以通过该指针去修改该地址的变量的值;无法通过该指针再修改它所指向的变量,该指针所指向的变量不能作为左值;需要更大的空间时就需要请求一块更大的内存,这样的内存区在堆区;不能通过指针P来修改i的值,只可读而不能修改(问接访问时);1024*1024*8是栈区内的最大内存空间。字符串有效长度的计算。
2024-07-30 21:00:11
261
原创 指针初步了解
指针:指针则是一个特殊的变量,它存储的是内存地址。通过指针,我们可以间接地访问到指针所指向的内存地址中的数据。地址:在计算机内存中,每个存储单元都有一个唯一的地址,就像我们现实生活中的门牌号码一样。通过这个地址,我们可以找到相应的存储单元,从而访问其中存储的数据。函数调用时,一般为值传递,因此不能直接访问,需要通过指针来取地址进行间接访问,从而能够在被调函数中修改主调函数。指针变量只能存放地址(指针),不能将一个整数或任何其他非地址类型的数据赋给一个指针变量。指针是用来装地址的数据类型。
2024-07-29 18:47:28
336
原创 局部变量和全局变量、预处理命令
局部变量在一个函数内部定义的变量,只在本函数范围内有效。全局变量可以为本文件中其他函数所共用,其有效范围为从定义变量的位置开始到本源文件结束。
2024-07-27 21:39:57
992
原创 数组作为函数参数
(3)在被调用函数中声明了形参数组的大小,但在实际上,指定其大小是不起任何作用的,因为C语言编译对形参数组大小不做检查,只是将实参数组的首元素的地址传给形参数组。因此,形参数组名获得了实参数组的首元素的地址,数组名代表数组的首元素的地址,因此,形参数组首元素和实参数组首元素具有同一地址,它们共占同一存储单元指的是同一单元。但是不能省略第二维以及其他高维的大小说明。由于实参可以是表达式,而数组元素可以是表达式的组成部分,因此数组元素当然可以作函数实参,与用变量作实参一样,是单向传递,即“值传送”方式。
2024-07-26 20:01:53
577
原创 函数的调用
1.在定义函数中指定的形参,在未出现函数调用时,它们并不占用内存中的存储单元,只有在发生函数调用时,函数中的形参才会被分配内存单元。在调用结束后,形参所占的内存单元也会被释放。通常是用于那些在编译期间就能确定存储大小的变量的存储区,但它用于的是在整个程序运行期间都可见的全局变量和静态变量。bss段:未初始化的全局变量和未初始化的静态变量存放在**.bss段**。在调用一个函数的过程中又直接或间接的调用该函数,称为函数的递归调用。在被定义的函数中,必须指定形参的类型,实参与形参的类型应当相同或赋值兼容。
2024-07-25 20:27:00
495
原创 二维数组学习、c语言函数初步了解
1.所有的执行都是平行的,即定义函数时分别进行,互相独立,函数不能嵌套定义。2.从用户使用的角度来看,函数可分为标准函数和自定义函数两种,标准函数即库函数,由系统提供,自定义函数为用户自己定义的,用以解决用户专门需要的函数。3.从函数的形式来看可分为无参函数和有参函数。无参函数是有参函数的特殊形式。int max;max = c;return max;
2024-07-24 20:42:44
880
原创 C语言字符数组
fgets(s,sizeof(s)/sizeof(s[0]),stdin):将回车也作为有效字符输入,导致结果出现liang'ge'huan'ha。若初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余元素自动定为空字符。,此时数组c的长度会自动定为字符串的长度加1(因为字符串常量的最后由系统加上一个'\0'字符数组是用来存放字符数据的数组,其定义方式与其他类型数组类似,例如。如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。在C语言中,字符串是作为字符数组来处理的,例如。
2024-07-23 19:55:33
468
原创 一维数组的学习
类型说明符 数组名[常量表达式];如int a[10];数组的命名规则和变量名相同,定义数组时,需要指定数组中元素的个数,"[]"中的常量表达式用来表示元素的个数,即数组长度。数组元素的表现形式为数组名[下标],下标可以是整型常量或整型表达式。特点:1.单一性:数组中各元素所占字节大小都相同。2.有序性:下标小的元素总靠前,放在下标大的元素之前(地址)。3.连续性:各元素之间在内存中存放时没有间隔。选择排序:在数组合适的位置上放上合适的数。
2024-07-22 21:34:22
479
原创 循环控制语句
while循环中,只在while后面的括号内指定循环条件,因 此为了使循环能正常结束,应在循环体中包含使循环趋于结束的语句(如i++,或i=i+ 1等)。for循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作 全部放到表达式3中。(4)while循环、do·while循环和for循环,可以用break语句跳出循环,用continue 语句结束本次循环。若表达式结果为非零(真)时,返回重新执行循环语句,反复进行,直到表达式的值为0时,循环结束。时,执行while语句中的内嵌语句。
2024-07-20 17:42:01
665
原创 选择结构程序设计
条件运算符的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表 达式3的值就是整个条件表达式的值。逻辑表达式的值是一个逻辑量“真”或“假”,在C语言中,表示逻辑运算结果时,1表示真,0表示假。如上表(逻辑运算的真值表)所示:在(a&&b)中,若a为假,其值为假;在(a||b)中,若a为真,其值为真,出现。在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”。关系表达式的值为一个逻辑值,即“真”或“假”。
2024-07-19 21:22:32
617
原创 顺序程序设计、输入与输出
缓冲区:(FIFO)先进先出,如果代码处要求输入四个字符,而只写了两个字符,此时按回车并不会结束,而是要在输入一个字符,按下回车相当于一个"\n"(换行)。(4)对于scanf的字符输入,若格式控制串中无非格式字符,所有输入字符均有效;(1)输入/输出的数据类型要与格式字符严格匹配,否则可能导致错误或未定义的行为。putchar(c)输出字符变量c的值,c可以是字符型变量或整型变量。(5)复合语句:用{}将一些语句括起来成为复合语句(分程序)(1)控制语句(C只有9种控制语句)
2024-07-18 20:16:47
525
原创 变量赋初值、各类数值型数据间混合运算以及运算符和表达式的学习
初始化:在程序运行时执行本函数时赋初值,相当于有一个赋值语句int a = 0;在声明一个变量的时候指定变量的值,这叫做初始化。int a;a = 2;这叫做赋值。编译器只对确定类型进行检查;类型转换是否能够成功无明确判断,编译时or运行时。lvalue[left(locatable)value]变量,能放到运算符的左边。地址可取。rvalue[right(readable)value]常量,只能放到右边,所有的临时变量(匿名变量)都为右值。地址不可取。
2024-07-17 18:55:13
382
原创 整型,浮点型,字符型数据类型学习
整型常量表示:在C语言中,有三种形式:十进制整数整型变量:数据在内存中以二进制形式存放。数值以补码表示:正整数的补码与该数的原码相同;负数的补码为其绝对值的二进制形式按位取反再加1。有符号[signed],无符号[unsigned]
2024-07-16 18:41:23
513
原创 跨入嵌入式day1(Linux下C语言-基础知识)
使用GNU下的Linux的Ubuntu简单编译,了解了常用指令的含义与使用练习。进一步了解c语言的数据类型,常变量及一些拓展知识。第一天学习了解了Linux下C语言编程的基础知识。
2024-07-15 18:43:13
259
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人