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)的输出 我怎么得到?程序该怎么改?谢谢~! 展开
谢谢~!
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)的输出 我怎么得到?程序该怎么改?谢谢~! 展开
5个回答
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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我想LZ的意思是想把结果弄到自己想放的地方吧,这样的话,可以更改函数,但更简单的是,在控制台输出后,右击——全选——回车,比如再打开记事本,右击粘贴即可,因为那时按回车,系统已经把内容送到了粘贴版的。不知道,我的理解对不,还是希望你早日解决
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
控制台。。。还是叫终端比较好吧。
帮你解决问题,首先就是父子进程通信问题,可以用文件,管道,或者socket等等,注意自己要写互斥,或加锁。
然后就是关掉进程的标准输出了。
代码还是要你自己写~
帮你解决问题,首先就是父子进程通信问题,可以用文件,管道,或者socket等等,注意自己要写互斥,或加锁。
然后就是关掉进程的标准输出了。
代码还是要你自己写~
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
?
fflush(stdin);
fflush(stdin);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询