当前位置:  技术问答>linux和unix

关于标准输出的转向问题.

    来源: 互联网  发布时间:2015-10-27

    本文导语:  在一个程序A里,有没有办法把另一个程序B的标注输出读到A的一个变量里呢?   自己想到的一个方法是在A里运行system命令 让B的输出重定向到一个文件里,A再读出来但这样的效率太低了... 有没有更好的方法呢? ...

在一个程序A里,有没有办法把另一个程序B的标注输出读到A的一个变量里呢?  

自己想到的一个方法是在A里运行system命令 让B的输出重定向到一个文件里,A再读出来但这样的效率太低了... 有没有更好的方法呢?

|
如果我没有确定错的话:你这个属于进程间的通信机制问题?即,一个进程的资源,另一个进程要使用的问题。
1.用文件的通信的方式是一种.
2.另外一种就是共享内存的方式,就是一个进程把资源存储到一个内存空间中,另一个进程来读,不过这种方式一定要主要加锁,即一个进程在进行读的时候,另外一个进程不能写,反之,一个进程写的时候,另外一个进程不能读。

|
可以通过管道,命名管道,消息,共享内存等方式传递

|
大致如下
 int fd[2];
        int fd_err[2];
 pipe(fd )
 /*...判断返回..*/
 pipe(fd_err )
 /*...判断返回..*/
 pid= fork()
  /*...判断返回..*/
 if( pid >0)
 {
       close( fd[1] );
       close( fd_err[1] )
       while( 1 )
       {
            ready_fd = select(max_fd+1, &rfds, NULL, NULL, &tv);
            /*...判断返回..*/
            if( FD_ISSET( fd[0],&rfds ) )/*如果有标准输出*/
            {
                read( fd[0],buffer_stdout,MAX_READ_BUF)
                /*...判断返回..*/  
            } 
            if( FD_ISSET( fd_err[0],&rfds ) )/*如果有错误输出*/
            {
                read( fd_err[0],buffer_sterr,MAX_READ_BUF)
                /*...判断返回..*/  
            }
            if( !n_fd  && !n_fd_err )/*子程序结束*/
            {
                                close( fd[0] );
                                close( fd_err[0] );
                                break;
             }
        }
        /*获取子进程退出状态*/
         sleep(1);
                if( (ret=waitpid(pid,&status,0)) 

    
 
 

您可能感兴趣的文章:

  • 请问如何将标准输出重定向到标准输入?
  • 有关标准输入,标准输出等的弱问!送分
  • 如何在关闭标准输入输出之后重新打开它们
  • 关于标准输出的缓冲造成的死锁
  • daemon打起的C后台进程,怎么看标准输出?
  • 关于标准输出重定向的问题
  • 请问:怎么提取标准输出(stdout)的内容到别的地方显示?
  • 请问如何捕获"tar"命令的标准错误输出
  • emacs 如何显示标准输出
  • 如何捕获标准输出?
  • 怎样把标准输出指定到一个文件,这样我便不用关心运行时间长的程序的屏幕输出,待运行完后看文件里的内容就可以了吧?
  • 请问各位大侠:如何将标准输出定位到套接字?
  • 会者不难 !csh 中如何输出标准错误 不是2>&1 csh不支持这种语法的
  • UNIX下如何读取标准输出上的字符?
  • 如何把LINUX命令执行产生的标准错误信息输出到一个变量里?
  • 如何既定向到标准输出又定向到文件!
  • 无法使用管道命令或重定向标准输出
  • 求解!关于如何获取系统中其它进程的标准输出
  • 将标准输出同时重定向到屏幕和文件
  • 结果可不可以同时标准输出,并且写入文件
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux支持标准问题
  • 子进程重定向标准输入的问题
  • 标准库问题
  • 请教高手关于各种标准的问题!
  • (专业编程的问题)Linux下是否支持svr4标准?
  • 关于标准.zip文件解压的问题
  • 关于标准时间的问题!
  • 初学者问题:标准的sql里有处理日期的函数吗?
  • 解决URL中含有-与号-不符合标准问题
  • 标准视频采集卡 数据采集 编程!linux下的问题?
  • 关于标准IO操作的一个问题
  • 标准IO库的缓冲区问题
  • Linux下C++编程时的包含标准库的头文件问题
  • hp-unix下用标准C开发程序,头文件的问题<在线,有答案就揭帖>
  • 有关GNU C++新标准的问题 (我给100分)
  • 关于标准C读文件的问题,急啊,怎么办呢?在线等!!!
  • web标准常见问题集合第1/2页
  • 请问shell标准输入的有关问题
  • 标准输出重定向问题
  • 想询问一下一些有关LINUX的标准I/O函式库的问题
  • C++ I/O 成员 sync_with_stdio():同标准I/O同步
  • 有没有这样的软件:把一个不标准格式的JAVA原代码转换为具有标准(或比较标准)编码规范的代码。
  • php将标准字符串格式时间转换成unix时间戳_strtotime
  • 请问能否把JCombobox控件设成标准列表框(window标准风格)
  • C++准标准库boost库中文介绍
  • 我用管道作为一个程序的标准输入时,程序报错说不是一个终端不能做为标准输入,请问怎么样管道成为它的标准输入呢???具体错误信息见内
  • 标准视频采集卡 数据采集 编程!linux下的问题? iis7站长之家
  • 用标准件的方式来组装网页DIV布局-WEB标准网站设计心得
  • C++ STL标准模板库类String成员详细列表参考及示例代码
  • 当A,B程序都在不断读入标准输入的时候, 为什么往A标准输入里面输入的数据一定能被A读到,而不是被B读到?
  • HTML 标准颜色值实例代码表


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3