c语言如何获取控制台输出

c语言如何获取控制台输出
我fork了一个子进程现在想获取子进程的控制台输出,不想让他打印到控制台上 我该怎么做?
谢谢~!
if ((pid = fork()) < 0)
{
syslog(LOG_DEBUG,"fork error!");
}
else if(pid==0)
{
if(execlp("/bin/ls", "ls", "-a", "/", (char *)0) < 0)
{

syslog(LOG_DEBUG,"exec command error!");
exit(1);
}
exit(0);
}
if(waitpid(pid, &state, 0) < 0)
{
syslog(LOG_DEBUG,"wait pid error!");
}
现在想获得execlp("/bin/ls", "ls", "-a", "/", (char *)0)的输出 我怎么得到?程序该怎么改?谢谢~!

1、向控制台输出信息可以使用c语言函数库中的搜虚塌printf(),直接打印出信息,比如:

printf("hello world ");

2、要将控制台输出的信息保存,则可以在控制台中使用>或者>>将输出信息输出到文件或者追加世圆到文件,>和>>的区别在于>会覆盖原来的文件,而>>会在文件末尾添加。以hello wrold为例:


#include 
int main()
{
printf("hello world ");
return 0;
}

生成程序后,进入程序所在的目录,如下图所示:誉裂


利用管道将结念圆果输出到文件,然后在主进程中读乎高前取文件的岁清内容:

#include

int main(void)
{
int pd[2];
char str[80];
if (pipe(pd)==-1)
exit(1);
if (fork()==0){
sprintf(str,"FORK SUCCESS");
write(pd[1],str,80*sizeof(char));
return ;}
read(pd[0],str,80*sizeof(char));

puts(str);
return 0;
}
我想LZ的意思是想把结果弄到自己想放的地方吧,肆扰这样的话,可以更改函数,但更简单的是裂散旦,在控制台输出后,右击――全选――回车,比如再打开记事本,右击粘贴即可,因为那时按回车,系统已经把内容送到了粘贴版的。不知掘卖道,我的理解对不,还是希望你早日解决
控制台。握乱。。还是叫终端比较好吧。

帮你解决问题,段散档首先就是父子进程通信问题,可以用文件,管道,或者socket等等,注意自己要写互斥,或加锁。

然后就是关掘谨掉进程的标准输出了。

代码还是要你自己写~
?

fflush(stdin);
← 上一篇: 下一篇: →