Linux必会简答题.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux必会简答题

文件系统和进程常用的结构体结构struct stat保存文件的各项具体信息struct stat { dev_t st_dev; /* 文件所在的设备号 */ ino_t st_ino; /* 文件的inode号 */ mode_t st_mode; /* 文件的访问模式 */ nlink_t st_nlink; /* 指向该文件的硬连接数 */ uid_t st_uid; /* 用户ID */ gid_t st_gid; /* 组ID */ dev_t st_rdev; /* 若文件是个设备节点,文件所代表的设备 */ off_t st_off; /* 文件字节数 */ unsigned long st_blksize; /* 块大小 */ unsigned long st_blocks; /* 文件所占的块数 */ time_t st_atime; /* 最后一次访问时间 */ time_t st_mtime; /* 最后一次修改时间 */ time_tst_ctime; /* 最后一次改变时间(指文件属性) */};目录结构体:struct dirent{ ino_t d_ino; /* 该目录的inode节点号 */ off_t d_off; /* 相对下一个dirent结构的偏移量 */unsigned short d_reclen; /* 当前dirent结构的长度 */ unsigned char d_type; /* 文件类型 */ char d_name[256]; /* 文件名 */}用户和用户组信息:struct passwd{ char *pw_name; /* 登录名称 */ char *pw_passwd; /* 登录口令 */ uid_t pw_uid; /* 用户ID */ gid_t pw_gid; /* 用户组ID */ char *pw_gecos; /* 用户的真名 */ char *pw_dir; /* 用户的目录 */ char *pw_shell; /* 用户的SHELL */ }; 内存管理的每个段定义作用代码段(text段):用来存放可执行文件的操作指令,是可执行程序在内存中的镜像。准许读取操作,不允许写入(修改)操作,防止在运行时被非法修改。数据段(data段):用来存放可执行文件中已初始化的全局变量和静态变量。这些变量在编译时就分配好了BSS段(Block Started by Symbol):用来存放程序中未初始化的全局变量,属于静态内存分配。未初始化的全局变量和局部静态变量默认值都为0。为未初始化的全局变量和局部静态变量预留位置,没有内容,在文件中也不占据空间。堆(heap):用于存放进程运行中被动态分配的内存段,大小不固定,可动态扩张或缩减。栈(stack):用户存放程序临时创建的局部变量的内存区,函数括弧“{ }”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也被存放回栈中。栈先进后出特点,方便用来保存/恢复调用现场。文件系统十六进制位11109876543210SGTrwxrwxrwx野指针定义定义:指向一个已删除的对象或未申请访问受限内存区域的指针。成因:1)指针变量未初始化 2)指针释放后之后未置空 3) 指针操作超越变量作用域解决:1)初始化时置 NULL 2)释放时置 NULL内存泄露原因及预防方法定义:用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。成因:1)在释放某块动态内存前将指向该内存区域的指针重新赋值,那么该内存区域就无法释放。2)使用malloc、realloc或calloc分配内存后,没有用free去释放。解决:1)用free或delete释放内存后,立即将指针设置为NULL,防止产生“野指针”。2)动态内存的申请(malloc/calloc/new)与释放(free/delete)必须成对,防止内存泄漏。3)用malloc或new申请内存后立即检查指针是否为NULL,以防止使用值为NULL的指针。4)不要忘记为数组和动态内存赋初值,防止未初始化的内存被使用。Fork()与exec()区别Fork():当一个进程调用了fork以后,系统会创建一个子进程.这个子进程和父进程不同的地方只有进程ID和父进程ID,其他的都是一样Exec()提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代调用进程的数据段、代码段和堆栈段执行完之后,调用进程的内容除了进程号、优

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档