3道简单的问题,也是一个大学研究生的入学考试题!
一:
#include <stdio.h>
main()
{
int status;
int tochild[2];
char *msg="what is this program doing";
char *argv[]={"/usr/bin/wc","-w",null};
pipe(tochild);
if ( fork()==0 )
{
close(tochild[1]);
dup2(tochild[0],0);
close(tochild[0]);
execv(argv[0],argv);
exit(1);
}
close(tochild[0]);
write(tochild[1],msg,strlen(msg));
close(tochild[1]);
wait(&status);
}
二:
int what(int x,int y)
{
printf("what(%d,%d)¥n",x,y);
if (y==0)
{
return x;
}
else {
return what(y,x%y);
}
}
main()
{
what(8,12);
}
三:
#include <stodio.h>
main()
{
int status;
char *argv[]={"/usr/bin/wc","-1","execwc.c",null};
if (fork()==0) {
execv(argv[0],argv);
exit(1);
}
wait(&status);
}
呵呵,一和三其实差不多,是两年的题。二却是两年都有的。
虽然说二比较简单,但一和三还是有点不懂,各位大大帮忙也解一解吧。^_^。