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

我fork了一个子进程现在想获取子进程的控制台输出,不想让他打印到控制台上我该怎么做?谢谢~!if((pid=fork())<0){syslog(LOG_DEBUG,"f... 我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)的输出 我怎么得到?程序该怎么改?谢谢~!
展开
 我来答
吉祥二进制
高粉答主

2015-07-09 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84566

向TA提问 私信TA
展开全部

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

printf("hello world\n");

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


#include <stdio.h>
int main()
{
printf("hello world\n");
return 0;
}

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

匿名用户
2008-09-24
展开全部
利用管道将结果输出到文件,然后在主进程中读取文件的内容:

#include <stdio.h>

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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LCJQY
2008-09-25
知道答主
回答量:23
采纳率:0%
帮助的人:0
展开全部
我想LZ的意思是想把结果弄到自己想放的地方吧,这样的话,可以更改函数,但更简单的是,在控制台输出后,右击——全选——回车,比如再打开记事本,右击粘贴即可,因为那时按回车,系统已经把内容送到了粘贴版的。不知道,我的理解对不,还是希望你早日解决
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
03013110
2008-09-24 · TA获得超过529个赞
知道小有建树答主
回答量:1216
采纳率:0%
帮助的人:385万
展开全部
控制台。。。还是叫终端比较好吧。

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

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

代码还是要你自己写~
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tyoukiLL
2008-09-24 · TA获得超过501个赞
知道小有建树答主
回答量:429
采纳率:0%
帮助的人:453万
展开全部
?

fflush(stdin);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式