QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2266|回复: 6

怎么样将原本在终端标准输出的内容在QT界面上显示???

[复制链接]
发表于 2005-5-26 20:35:28 | 显示全部楼层 |阅读模式
我已经将一个其他的程序加如到我QT的界面程序里,现在想把原先在终端标准输出的内容在我的QT界面中的一个multilineedit里显示出来.请问各位大侠,我该怎么做呢?应该有解决的方法吧???郁闷!!!~>_<~
发表于 2005-5-26 23:17:55 | 显示全部楼层
可以用管道。把管道的的写端设为标准输出。从另一端读。
回复

使用道具 举报

发表于 2005-5-27 11:04:15 | 显示全部楼层
[code:1]#include <unistd.h>
#include <stdlib.h>
#include  <stdio.h>
#include <string.h>

int main()
{
  
  int file_pipes[2];
  char buffer[500];
  int count;

  if (pipe(file_pipes) == 0 ){
    close(1);
    dup(file_pipes[1]);

    system("uname -a ");

    count = read(file_pipes[0],buffer,499);

    buffer[1]='*';
   
    write(STDERR_FILENO,buffer,count);

  }
  return 0;
}
[/code:1]
回复

使用道具 举报

 楼主| 发表于 2005-5-27 11:48:02 | 显示全部楼层
谢谢 笑 !我想我做一点注释,看看是不是这样理解的!
int main()
{

  int file_pipes[2];  //定义2个管道端口
  char buffer[500];
  int count;

  if (pipe(file_pipes) == 0 ){
    close(1);
    dup(file_pipes[1]);  //这个不明白

    system("uname -a ");  //这个不明白

    count = read(file_pipes[0],buffer,499);  //从缓冲区0端读入

    buffer[1]='*';  //这个不明白
   
    write(STDERR_FILENO,buffer,count);  //从1端写,就是标准输入缓冲区

  }
  return 0;
}

请指点一下,呵呵!不要笑话我噢!
回复

使用道具 举报

发表于 2005-5-27 13:08:24 | 显示全部楼层
[code:1]#include <unistd.h>
#include <stdlib.h>
#include  <stdio.h>
#include <string.h>

int main()
{

  int file_pipes[2];
  char buffer[500];
  int count;

  if (pipe(file_pipes) == 0 ){
    close(1); //关闭原来的标准输出
    dup(file_pipes[1]);  //将管道的输入与标准输出联系在一起,注意dup会
                                    //选取系统可用的最小描述符,因1已可用,些时就
                                    //会选取1 也就是标准输出了。

    system("uname -a ");  //这时系统输出会写入管道

    count = read(file_pipes[0],buffer,499);   //从管道的另一端读

    buffer[1]='*';   //将读出来的数据做一点更改,以证明是从管道读出来的
                           //而不是uname -a的输出(证明dup函数起了作用)
                          //如果没有这些管道操作,就会看到输出Linux。此时会输出
                           //L*nux
    write(STDERR_FILENO,buffer,count);//标准输出已关闭,为了看到效果
        //将数据写入标准错误输出。
  }
  return 0;
} [/code:1]
回复

使用道具 举报

 楼主| 发表于 2005-5-27 13:22:23 | 显示全部楼层
多谢版主,哈哈,我还有一个很菜的问题?这个函数中,从管道读取之后的数据会在哪里显示呢?我希望它显示在我的QT中的widget中的一个multilineedit 里,该怎么做呢?
回复

使用道具 举报

发表于 2005-5-27 13:30:06 | 显示全部楼层
已经读入buffer字符串中。看看read函数说明。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 00:41 , Processed in 0.038136 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表