当前位置: 技术问答>linux和unix
关于more 命令的一个问题
来源: 互联网 发布时间:2016-12-28
本文导语: unix,linux编程实践教程上35页的一个关于more的案例 以下是书上用来仿more功能的more01代码: #include #include #include #define PAGELEN 24 #define LINELEN 512 void do_more(FILE *); int see_more(); int main(int ac,char *av[]) { FILE *fp; ...
unix,linux编程实践教程上35页的一个关于more的案例
以下是书上用来仿more功能的more01代码:
编译,链接都没问题。
但是执行此处的more01 more01.c 测试这个more01指令时报:more01:找不到命令
请问:1.这是什么原因造成的.2.怎么解决这个问题
非常感谢大家提供帮助。
以下是书上用来仿more功能的more01代码:
#include
#include
#include
#define PAGELEN 24
#define LINELEN 512
void do_more(FILE *);
int see_more();
int main(int ac,char *av[])
{
FILE *fp;
if(ac==1)
do_more(stdin);
else
while(--ac)
if((fp=fopen(* ++av,"r"))!=NULL)
{
do_more(fp);
fclose(fp);
}
else
exit(1);
return 0;
}
void do_more(FILE *fp)
/*
*read PAGELEN lines, then call see_more() for further instructions
*/
{
char line[LINELEN];
int num_of_lines=0;
int see_more(),reply;
while(fgets(line,LINELEN,fp)){ /* more input */
if(num_of_lines==PAGELEN){ /*full screen? */
reply=see_more();
if(reply==0)
break;
num_of_lines-=reply;
}
if(fputs(line,stdout)==EOF)
exit(1);
num_of_lines++;
}
}
int see_more()
/*
* print message, wait for response, return # of lines to advance
* q means no, space means yes, CR means one line.
*/
{
int c;
printf("33[7m more?33[m");
while((c=getchar())!=EOF)
{
if(c=='q')
return 0;
if(c==' ')
return PAGELEN;
if(c=='n')
return 1;
}
return 0;
}
编译,链接都没问题。
但是执行此处的more01 more01.c 测试这个more01指令时报:more01:找不到命令
请问:1.这是什么原因造成的.2.怎么解决这个问题
非常感谢大家提供帮助。
|
./more01 more01.c
要加上路径,否则从$PATH环境变量中找more01,找不到的话就报错啦
要加上路径,否则从$PATH环境变量中找more01,找不到的话就报错啦
|
恩 楼上说的很对