
谢谢~!
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);