- 论坛徽章:
- 0
|
小弟初学fork对下面这个程序的运行流程不是太理解,请高手帮忙:
#define MAXLINE 512
main(void)
{
char buf[MAXLINE];
pid_t pid;
int status;
printf("##" ;
while(fgets(buf,MAXLINE,stdin) !=NULL){
buf[strlen(buf)-1]=0;
if( (pid=fork())<0)
printf("for error" ;
else if(pid==0){
execlp(buf,buf,(char *)0);
printf("couldn't execute: %s",buf);
exit(127);
}
if((pid=waitpid(pid,&status, 0 ))<0)
printf("waitpid error" ;
printf("##" ;
}
exit(0);
}
这是一个产生循环的输入命令,并产生输出的程序;
但让我产生两个疑问:
1:
while(fgets(buf,MAXLINE,stdin) !=NULL){
buf[strlen(buf)-1]=0;
execlp(buf,buf,(char *)0);
}
这样写就不能实现循环;输入一次就退出了;请问上面的程序循环是在那控制的?
2:fgets(buf,MAXLINE,stdin) 中的stdin是什么意思?屏幕标准输入吗?
谢谢 |
|