- 博客(24)
- 收藏
- 关注
原创 管道的概念
操作管理的进程被销毁之后,管道自动被释放。读端,写端,对应两个文件描述符。数据只能读取一次,不能重复读取。大小会根据实际情况做适当调整。数据写端流入,读端流出。
2024-10-23 10:49:42
226
原创 wait阻塞函数
函数作用:1.阻塞并等待子进程退出2.回收子进程残留资源3.获取子进程结束状态(退出原因)从运行结果可以看到,使用wait阻塞函数之后是先运行子进程在运行父进程的,打印了进程退出状态的参数说明进程是正常退出的。
2024-10-22 21:36:59
451
原创 vfrok创建进程
以下是vfrok函数创建进程的代码,子进程先对变量i进行自加操作,直到变量i大于或者等于3时才退出进程, 用exit(0)函数退出进程。可以看到使用vfork()函数之后,先执行的是子进程的代码,再执行父进程的代码。可以直接使用父进程存储空间,不拷贝。可以保证子进程先运行,当子进程调用。退出后,父进程才执行。
2024-10-21 10:42:17
214
原创 孤儿进程和僵尸进程
一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。为了释放子进程的占用的系统资源:1.进程结束之后,能够释放用户区空间2.释放不了PCB,必须由父进程释放以下是一个孤儿进程的示例程序,在此程序中,让父进程先退出,然后子进程再次打印自己的父进程号,使用sleep函数保证父进程先退出。
2024-10-21 10:35:54
164
原创 exec函数族
* path : 要执行程序的路径(最好是绝对路径) 变参arg : 要执行的程序需要的参数 第一位arg: 占位 后边的arg: 命令的参数 参数写完之后:null 一般执行自己写的程序 *//* file :执行的命令名字 第一个arg:占位 后边的arg:命令的参数 参数写完之后:NULL 执行系统自带的程序:/bin/xx */ ps aux。这里以execl函数为例,在这里在原来代码的基础上,运行当前目录的hello代码文件,文件名是hello。3执行另外的程序,不需要创建额外的的地址空间。
2024-10-21 09:29:03
515
原创 父子进程的数据共享
1.一个进程,包括代码、数据和分配给进程的资源。2.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。3.一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。使用fork函数之后两个地址空间区数据完全相同各个进程的地址空间中的数据是完全独立的。
2024-10-21 09:13:49
435
原创 fork函数
()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进 程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。1.一个进程,包括代码、数据和分配给进程的资源。得到当前进程的父进程的。
2024-10-17 21:27:14
640
原创 进程和进程状态
多核的情况中,才会发生并行。否则,看似同时发生的事情,其实都是并发执行的。进程基本的状态有五种,分别为初始态,就绪态,运行态,挂起态和终止态。处理的速度非常快,只要时间间隔处理得当,即可让用户感觉是多个应。并发,指的是多个事情,在同一时间段内同时发生了。并行,指的是多个事情,在同一时间点上同时发生了。其中初始态为进程准备阶段,常常与就绪态结合来看。2.进程的状态,有就绪,运行,挂起,停止等状态。那么,就可以说听音乐和打游戏是并发的。并行的多个任务之间是不互相抢占资源的、并发的多个任务之间是互相抢占资源的。
2024-10-16 16:39:32
368
原创 静态库的创建
则指定了静态函数库名,由于静态函数库的命名方式是。依然可以运行,因为静态库的内容已经整合进去了。,在编译时就将库编译进可执行程序中。,表示静态函数库在本目录下查找。创建一个C语言文件,并写入如下代码。指定静态函数库的位置供查找,注意。: 如果从别处得到一个静态库。,想知道其中包含哪些模块。中不需要外部的函数库。2.缺点:可执行程序大。就会把静态函数库整合进。
2024-10-16 11:07:42
510
原创 行缓存的读写函数fgets函数和fputs函数
1.第一个参数:缓存,即读到哪里去2.第二个参数:读多少个字节3.第三个参数:从什么地方读4.返回值:若成功则为s(缓存的地址),若已处文件尾端或出错则为null。
2024-10-15 10:46:39
414
原创 fprintf和sprintf行缓存函数
字符串格式”)2.fprintf可以输出到文件中,也可输出到显示器,3.printf只能输出到显示器中。字符串格式”) 输出内容到一个字符串中注:fprintf,printf,sprintf都是行缓存函数,要用特定条件才能写到内核缓存里面。
2024-10-12 15:45:26
164
原创 fflush刷新缓冲和stderr无缓冲
但这里没有使用\n,也没有写满1024个字节,也没有使用系统函数和缓存函数,如图所示:这里使用fputs函数输出字符并配置为stdout(标准输出)使用stderr参数后,将用户缓存写入到内核缓存里,成功输出了字符数据。使用fflush刷新缓存函数,把用户缓存写入到系统缓存里。把库函数中的缓存内容强制写到内核中。使用fflush函数刷新缓存函数,成功输出字符数据。这里使用stderr(标准错误输出),即是无缓存参数。只要用户调这个函数,就会将其内容写到内核中。所有无法输出字符数据。
2024-10-12 14:56:08
536
原创 缓存的存在
标准IO:C语言的库函数(printf()),puts().gets()等之类。每打开一个文件,内核在内核空间中也会开辟一块缓存,这个叫内核空间的缓存。库缓存写满时,会调用系统调用函数,将库缓存内容写到内核缓存中。时,会将库缓存的内容写到内核缓存中,即调用了系统调用函数。我们的程序中的缓存,就是你想从内核读写的缓存(数组)中的写即是将用户空间中的缓存写到内核空间的缓存中。中的读即是将内核空间的缓存写到用户空间中的缓存中。1.使用标准IO,即使间接使用系统调用函数。的库函数中也有一个缓存,这个缓存称为。
2024-10-12 11:44:20
295
原创 fseek函数
把fp指针移动到离文件当前位置100字节处;把fp指针退回到离文件结尾100字节处。表示把fp指针移动到离文件开头1字节处,则在文件的开头的第一个位置开始写入数据(计算机里是从0开始的)。1.参数:第一个为文件指针,第二个是指针的偏移量,第三个是指针偏移起始位置。执行代码后就在e的位置继续写入数据(hell)若不懂fwrite函数可以看一下上一篇文章。
2024-10-10 21:25:58
471
原创 main函数参数
2.argv存放了命令行中各字符串的首地址分别是./a.out ,src 和dec。1.argc表示命令行参数个数有3个,是 a.out ,src ,和dec。这里给大家讲清楚main函数参数(让大家理解一下原理)通过gcc +文件名(c语言文件)进行编译 如。可用./a.out执行编译后的文件。
2024-10-09 10:57:29
161
原创 read函数
并打印出来读出来的数据(两者代码都是差不多的,只是一个是写操作,一个是读操作)2.屏蔽单独写的操作,进行对文件单独读的操作。返回值:成功返回读取的字节数,出错返回。1.先对文件进行单独写的操作。之前已到达文件末尾,则这次。
2024-10-09 10:37:09
130
原创 write函数使用
先把hello world的字符串指针拷贝到writebuff数组里,完成open文件任务后,把writebuff里数据写入到mm文件里。会返回实际写入的字节数(当有错误发生时则返回。看看是否写入文件成功。
2024-10-09 10:26:02
230
原创 文件权限属性
2.权限指对文件的操作,linux根据文件将用户的身份分为 owner/group/other,而每个身份对文件的操作又分为 read/write/execute。打开此文件,如文件不存在就创建一个文件,并设置为可读可写模式,liunx系统中采用三位十进制表示权限,如0755,0644。1.属性指文件的信息,如大小、创建时间等。755 -> 用户:可读可写可执行。
2024-10-09 10:14:52
327
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅