【笔试题面试题】IO类 常问常考的一些知识点

server/2024/9/22 23:27:27/

        认真汇总了一下IO里面的一些知识点,持续补充,今天就先到这吧,发布此笔记督促自己学习,希望和大家一起进步,学无止境加油,希望我发布的文章对你也有所帮助(欢迎大家前来白嫖)

目录

IO%E5%92%8C%E6%96%87%E4%BB%B6IO%E7%9A%84%E5%8C%BA%E5%88%AB-toc" style="margin-left:0px;">1、标准IO和文件IO的区别

2、关于缓冲区的介绍

3、如何创建出一个守护进程?

4、多个进程之间能否使用全局变量来进行进程间的通信?

5、管道读写的特点(笔试面试题)

6、有关死锁的问题(笔试面试题)


IO%E5%92%8C%E6%96%87%E4%BB%B6IO%E7%9A%84%E5%8C%BA%E5%88%AB">1、标准IO和文件IO的区别

1、标准IO属于库函数,调用封装好的相关库函数,来实现数据的输入输出;
      文件IO属于系统调用,调用系统(内核)提供的相关函数,来实现数据的输入输出

2、标准IO操作的是文件指针,文件IO操作的是文件描述符

3、标准IO有缓冲区,文件IO没有缓冲区

2、关于缓冲区的介绍

        标准IO提供了三种缓冲区:行缓存,全缓存,不缓存

1、行缓存:有关标准输入、标准输出指针对应的缓冲区,其大小为1024字节
        【关于行缓存的刷新时机】
        1、换行会刷新行缓存
        2、程序结束后,会自动刷新行缓存
        3、当文件指针关闭后,会刷新行缓存
        4、当使用fflush函数刷新文件指针时,会刷新行缓存
        5、当输入输出切换时,会刷新行缓存
        6、当缓存区满了后,再放数据时,会刷新行缓存

2、全缓存:有关普通文件指针对应的缓冲区,其大小为4096字节
       【关于全缓存的刷新时机】
        1、程序结束后,会自动刷新全缓存
        2、当文件指针关闭后,会刷新全缓存
        3、当使用fflush函数刷新文件指针时,会刷新全缓存
        4、当输入输出切换时,会刷新全缓存
        5、当缓存区满了后,再放数据时,会刷新全缓存

3、不缓存:有关标准出错文件指针对应的缓冲区,其大小为0

3、如何创建出一个守护进程?

        守护进程相当于一个服务,不依赖于任何终端而存在,随着系统的启动而启动,终止而结束
        守护进程制作流程:
        1、创建子进程,让其成为孤儿进程:fork、exit
        2、将自己设置成会话组组长,不依赖于终端:setsid
        3、更改操作目录为根目录:chdir
        4、设置文件操作权限(最大):umask
        5、将标准输入、输出、出错文件描述符重定向到指定文件中:dup2

4、多个进程之间能否使用全局变量来进行进程间的通信?

        不能,多个进程之间的用户空间是相互独立的,每个进程的全局变量是各个进程独立拥有的,更改一个进程的全局变量,另一个进程不会受到影响
        多个进程之间的内核空间是共享的,我们可以通过将数据放入到内核空间,来完成两个进程之间信息的交流

5、管道读写的特点(笔试面试题)

        1、当管道读端存在时,写管道有多少写多少,直到写满64k为止
        2、当管道读端不存在时,写管道写入数据时,会出现管道破裂,此时内核空间会向用户空间发送一个SIGPIPE信号
        3、当写端存在时,读管道有多少读多少,没有数据会在read处阻塞
        4、当写端不存在时,读管道有多少读多少,没有数据也不会再read处阻塞

6、有关死锁的问题(笔试面试题)

        在多线程编程中,死锁是一种情况,其中两个或多个线程被永久阻塞,因为每个线程都在等待其他线程释放它们需要的资源,在C语言中,这通常涉及互斥锁(mutexes),当多个互斥锁被不同的线程以不同的顺序获取时,很容易发生死锁


http://www.ppmy.cn/server/99238.html

相关文章

手机误操作导致永久删除照片的恢复方法有哪些?

随着手机功能的不断增强和应用程序的不断丰富,人们越来越依赖手机,离不开手机。但有时因为我们自己的失误操作,导致我们手机上重要的照片素材被永久删除,这时我们需要怎么做,才能找回我们被永久删除的照片素材呢&#…

【JavaEE】初步认识多线程

🔥个人主页: 中草药 🔥专栏:【Java】登神长阶 史诗般的Java成神之路 🎷 一.线程 1.概念 线程(Thread)是在计算机科学中,特别是操作系统领域里的一个关键概念。它是操作系统能够进行…

IDE连接本地docker(基于windows的docker desktop)

1.在docker desktop中的setting中,打开 “Expose daemon on tcp://localhost:2375 without TLS Exposing daemon on TCP without TLS helps legacy clients connect to the daemon. It also makes yourself vulnerable to remote code execution attacks. Use wi…

怀山府交付,怀柔主城品质生活完美呈现

时间是美好的质造者,也是美好的检阅者。 越秀天恒怀山府,作为越秀地产进驻北京的开篇之作,承载着越秀地产深厚的匠心传承与府系产品的卓越品质,以时间为笔,四季为墨,7月26日,终于迎来了盛大交付…

【Pytorch实用教程】nn.LogSoftmax的详细用法及公式

nn.LogSoftmax 是 PyTorch 中的一个层,用于在对数空间中计算 Softmax 激活函数。它通常用于多类别分类任务中,以提高数值稳定性。其输入是 logits,即未归一化的得分,输出是这些得分在对数空间中的 Softmax。 用法 nn.LogSoftmax 可以在构建模型时作为层使用,也可以通过函…

【数据结构】线性表(线性表的定义和基本操作)

计算机考研408-数据结构笔记本之——第二章 线性表 2.1 线性表的定义和基本操作 1 线性表的定义(数据结构三要素——逻辑结构) 线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列. 其中n为表长,当n0 时线性表是一个空表。 若用L命名线性表&…

自动驾驶系列—图像到IPM:深入解析IMP投影变换技术

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

Linux中V4L2框架介绍—V4L2 Core

文章目录 V4L2框架简介V4L2 框架的主要功能V4L2 框架的组成部分V4L2 Core 中相关对象video_devicev4l2_devicev4l2_subdevvideo buf 2 V4L2 子设备介绍V4L2 Core 中相关数据结构v4l2_device 结构体v4l2_subdev结构体video_device 结构体三者之间的关系 V4L2框架简介 V4L2&…