Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

linux 和 DOS的system

Posted on 2009-05-05 16:57 Prayer 阅读(191) 评论(0)  编辑 收藏 引用 所属分类: LINUX/UNIX/AIX
 Linux和Windows中system的不同之处在于:如果子程序调用成功,但执行失败时,Linux下的system函数返回该子进程的返回值,而Windows下的system函数返回0,不是返回该子进程返回值,也无法得到该子进程返回值,所以用CreateProcess函数和GetExitCodeProcess函数代替。  
  改造方法如下:  
  1) 使用SetStdHandle函数改变STD_OUTPUT_HANDLE的值(把标准输出重定向到指定的文件)。  
  2) 使用GetStdHandle函数得到STD_OUTPUT_HANDLE的句柄(用来指定子进程的输出位置)。  
  3) 设置STARTUPINFO结构(以siStartInfo为例),siStartInfo.dwFlags|=   STARTF_USESTDHANDLES,siStartInfo.hStdOutput   =(上步得到的句柄)。  
  4) 执行CreateProcess函数,创建子进程。  
  5) 执行WaitForSingleObject函数,等待子进程执行结束。(注:以INFINITE为第2个参数)  
  6) 执行GetExitCodeProcess函数,得到子进程的退出代码。  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理