- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用户操作? Linux 下 stdin stdout stderr 的由来? HYPERLINK javascript:d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(saveit=window.open(/storeit.aspx?t=+escape(d.title)+u=+escape(d.location.href)+c=+escape(t),saveit,scrollbars=no,width=590,height=300,left=75,top=20,status=no,resizable=yes));saveit.focus(); \o 收藏到我的网摘中,并分享给我的朋友 收藏
现在就从linux kernel的源代码的角度来分析该。二:fork()与execve()中stderr,stdio.stdout的继承关系?其实用继承这个词好像不太准确,要准确一点,可能复制更适合.?首先有二点:?1:父进程fork出子进程后,是共享所有文件描述符的(实际上也包括socket)?2:进程在execve后,除了用O_CLOEXEC标志打开的文件外,其它的文件描述符都是会复制到下个执行序列(注意这里不会产生一个新进程,只是将旧的进程替换了)?下面我们从代码中找依据来论证以上的两个观点.?对于第一点:?我们在分析进程创建的时候,已经说过,如果父过程在创建子进程的时候带了CLONE_FILES标志的时候,会和父进程共享task-files.如果没有定义,就会复制父进程的task-files.无论是哪种情况,父子进程的环境都是相同的.?代码如下:?static int copy_files(unsigned long clone_flags, struct task_struct * tsk)?{????? struct files_struct *oldf, *newf;????? int error = 0;????? oldf = current-files;????? if (!oldf)????????? goto out;????? if (clone_flags CLONE_FILES) {????????? atomic_inc(oldf-count);????????? goto out;????? }????? tsk-files = NULL;????? newf = dup_fd(oldf, error);????? if (!newf)????????? goto out;????? tsk-files = newf;????? error = 0;?out:????? return error;?}?从上面的代码可以看出.如果带CLONE_FILES标志,只是会增加它的引用计数.否则,打开的文件描符述会全部复制.?对于二:?我们之前同样也分析过sys_execve().如果有不太熟悉的,到本站找到相关文章进行阅读.在这里不再详细说明整个流程.相关代码如下:?static void flush_old_files(struct files_struct * files)?{????? long j = -1;????? struct fdtable *fdt;????? spin_lock(files-file_lock);????? for (;;) {????????? unsigned long set, i;????????? j++;????????? i = j * __NFDBITS;????????? fdt = files_fdtable(files);????????? if (i = fdt-max_fds)?????????????? break;????????? set = fdt-close_on_exec-fds_bits[j];????????? if (!set)?????????????? continue;????????? fdt-close_on_exec-fds_bits[j] = 0;????????? spin_unlock(files-file_lock);????????? for ( ; set ; i++,set = 1) {?????????????? if (set 1) {??????????????????? sys_close(i);???
您可能关注的文档
最近下载
- 2025年上海市高中物理学业水平合格考试卷试题(含答案详解).docx
- 标准图集-20S515-钢筋混凝土及砖砌排水检查井.pdf VIP
- 七年级上册数学第三章整式的加减知识点梳理与题型精讲(含解析).docx VIP
- GB51164-2016 钢铁企业煤气储存和输配系统施工及质量验收规范.docx VIP
- y系列电机介绍.docx VIP
- 中国重症肌无力诊断和治疗指南2025版解读.pptx
- 2025年铁岭卫生职业学院单招笔试职业能力测验试题库含答案解析(5套卷).docx VIP
- 《中国缺血性卒中和短暂性脑缺血发作二级预防指南2022》解读.pptx
- 2025年纪委监委专项遴选笔试模拟题及答案.doc VIP
- 工程力学 课件 1.2约束和约束反力.ppt
原创力文档


文档评论(0)