ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

2021-09-25 文件目录和进程基础

2021-09-25 23:03:48  阅读:115  来源: 互联网

标签:25 调用 文件目录 文件 09 pid exit 进程 ID


1.进程环境----子进程继承父进程的那些东西

  • 缓冲区
  • 环境变量
  • 虚拟地址空间
  • 存储映像
  • 共享库
  • 进程表象
  • 附属组ID
  • 进程组ID
  • 会话ID
  • 控制终端
  • 设置用户ID标识和设置组ID标志
  • 当前工作目录
  • 根目录
  • 文件模式创建屏蔽字
  • 信号屏蔽和安排
  • 对任一打开文件描述符的执行时关闭标志
  • 链接的共享存储端
  • 资源限制

2.父进程和子进程之间的区别

  • fork的返回值不同
  • 进程ID不同
  • 两个进程的父进程不同
  • 子进程tms_utime、tms_stime、tms_cuttime和tms_ustime的值设置为0
  • 子进程不继承父进程设置的文件所
  • 子进程的未处理闹钟被清除
  • 子进程的未处理信号集设置为空集

3.fork的两种用法

(1)网络模型中:一个父进程希望复制自己,使父进程和子进程同时执行不同的代码段

(2)类似shell应用:一个进程要执行一个不同的程序,子进程调用exec

4.进程启动和终止的方式

(1)启动方式

  • 内核有C启动历程,子进程通过exec用C启动历程替换子进程
  • 启动历程调用main函数使得整个历程启动起来

(2)终止方式

​ 5种为正常终止

  • 从main返回;

  • 调用exit:

  • 调用__exit或_Exit:

  • 最后一个线程从其启动例程返回:

  • 从最后一个线程调用pthread_exit 。

    异常终止有3种方式,它们是:

  • 调用abort ;

  • 接到一个信号;

  • 最后一个线程对取消请求做出响应。

5.main return和exit和_exit进程终止有什么区别

  • return是返回函数值并退出函数
  • exit结束之前会清理I/O缓存和终止处理程序
  • _exit直接终止程序

6.c的存储空间布局是如何划分

(1)栈空间

​ 用于存放局部变量,变量未初始化时为随机值

(2)堆空间

​ 用户动态分配和释放存储孔空间

(3)数据段

​ 包含了已初始化的全局变量和静态局部变量

(4)bss段

​ 存放未初始化的全局变量和静态局部变量,在程序开始之前,内核将此段中的数据初始化为0或空指针

7.父进程想到等待子进程完成在继续运行需要怎么做

用wait和waitpid

waitpid的第一个参数作用

pid<1等待组ID等于pid绝对值的任一子进程
pid==-1等待任一子进程
pid==0等待组ID等于调用进程组ID的任一子进程
pid>0等待组ID等于与pid相等的子进程

8.进程替换的接口有几种,有哪些区别

六种 execl execv execlp execvp execle execve

execl execlp execle 需要单独的参数,以空指针结尾

execv execvp execve 需要构造一个指向个参数的指针数组

execlp execvp 需要环境变量的path每一个路径,只要文件名,不需要行路径

9.标准I/O和文件I/O有什么区别

  • 标准I/O有缓存区 文件I/O没有缓存区
  • 标准I/O是库 文件I/O是系统调用
  • 标准I/O可以移植性好 文件I/O速度快
  • 标准I/O通过文件流标志打开的文件 文件I/O通过文件描述符标志打开的文件

10.缓存区的类型和刷新缓存区的方法

  • ​ 缓冲区:暂存空间,大多数情况下,缓冲区的存在是件好事,作用合并系统调用
  • ​ 行缓冲:stdout,换行时,满了时,强制刷新
  • ​ 全缓冲:默认,(只要不是终端设备,全采用全缓冲模式)满了时,强制刷新
  • ​ 无缓冲:stderr需要立即输出

11.文件的元信息和文件类型

(1)元信息

  • 文件的类型和权限
  • 用户ID
  • 组ID
  • 文件字节数
  • 文件块大小
  • 最后一次访问时间
  • 最后一次修改时间
  • 最后一次改变时间(属性)
  • 文件的设备编号

(2)文件类型

  • - 普通文件regular file
  • d 目录文件dirctory
  • b 块设备文件block device
  • c 字符设备文件character device
  • s 套接字文件socket
  • p 管道文件 pipe
  • l 链接文件link

12.如何得到文件拥有者的名字

​ 通过stat函数得到uid,getpwuid读出/etc/passwd每一个字段,其中包括用户名

13.如何读目录

​ opendir()得到一个目录流,通过目录流读取目录项中的每一个,通过readdir()得到目录项,多次调用时会偏移到每一个元素,当读到最后一个目录流,readdir()返回NULL,之后再closedir()

标签:25,调用,文件目录,文件,09,pid,exit,进程,ID
来源: https://blog.csdn.net/qq_56668238/article/details/120479272

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有