Linux系统中popen函数的缺陷与改遣方案.PDF

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux系统中popen函数的缺陷与改遣方案.PDF

专家论坛 ……*孙蠢猛lit……………………………………………………………………………………………………………m Linux系统中popen函数的缺陷与改遣方案 陈惑峰互珊珊 库提供的popen函数却有两个致命的缺陷,本文分析了这两个缺陷产生的原因, 并给出改造方案。 关键词Linux,popen,popen函数,popen缺陷 2.缺陷 popen醋数的调用是比较容易的。但是在实际使用中, 一、前塞 popen函数帮有翔下辩个秧貉; 熟悉Linux的程序员们知道可以调用系统提供的popen函 数来执行shell命令势季譬到撼美结果。然两,系统提供的popen 瞒数却有着它自身的缺陷。 二、popen函数 中静态容。魏栗shell余令率势存在镑淡辩,它会把结果(~ I.使用方法 一个典型的popen函数的使用方法见程序段1。 ii{i popen函数不支持对标准错误输出文I警内容的撼获。 程守段1:popen强数使舔 intmain(void】 就是长时间执行却不能终止的进程)时,在程序段1所示的代 f 璐孛程寄会停壹在如蠢豹澜麓处,毽~壹不髓终盎。其骧嚣 8 FILEstream; charbuf【10241: 娥popen函数内部将管道文件设置成了阻塞的性质。在调用 /{胡始纯buf{/ memset(buf,7、O7,sizeof《buf)}: 开,然后农主程序串,又要阪读戆方式袅订拜。这样,当髯懿 4 r”参数)到 /s将’Is—I”命令的输出通过管道读取I 动作不能释放时,读的动作将一直被挂起。这种情况在某贱应 stream·/ 爝孛是不允毒等发生瓣。 stream=popen《’ls一}’,。f’》: /·将stream的数据流读取剿buf中女/ fread(bur,sizeof(char》,sizeof《buf), 出的内容众鄙捕获,又要避免命令发行后没有响应的情况发 stream): 擞,酃就妊须要改造这一套橇稍了。 /}以下熄对buf内容的处瑗,这里略i盘t/ 3.改造方案 popen滋数的致造方寨大体上遵循r popen调熙方法黪三 pclose《stream): 步,分别设计相对应的函数: return0: } (1)popen函数的改造 通过如上的调尾,就能将shell命令“is—18的执行缭柒实褒popen函数麓援麓主要雹蕹热下尼轰; 放到数据块buf中。 1)能够将标准输入/输出文件和标准错误输出文件的内容

您可能关注的文档

文档评论(0)

yanzhaoqiang + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档