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)的输出 我怎么得到?程序该怎么改?谢谢~!
2026年09月28日 13:52
有5个网友回答
网友(1):

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

printf("hello world\n");

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


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

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

网友(2):

利用管道将结果输出到文件,然后在主进程中读取文件的内容:

#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;
}

网友(3):

我想LZ的意思是想把结果弄到自己想放的地方吧,这样的话,可以更改函数,但更简单的是,在控制台输出后,右击——全选——回车,比如再打开记事本,右击粘贴即可,因为那时按回车,系统已经把内容送到了粘贴版的。不知道,我的理解对不,还是希望你早日解决

网友(4):

控制台。。。还是叫终端比较好吧。

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

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

代码还是要你自己写~

网友(5):

?

fflush(stdin);