我如何才能获得 Linux 实用程序 tail 的源代码?
- 2024-11-14 08:30:00
- admin 原创
- 16
问题描述:
这个命令确实非常有用,但是我可以在哪里获得源代码来查看里面发生了什么。
谢谢 。
解决方案 1:
tail 实用程序是 Linux 上 coreutils 的一部分。
源代码 tarball: ftp: //ftp.gnu.org/gnu/coreutils/coreutils-7.4.tar.gz
源文件:https ://git.savannah.gnu.org/cgit/coreutils.git/tree/src/tail.c (原始 http链接)
我一直认为 FreeBSD 的源代码比 gnu 实用程序清晰得多。以下是 FreeBSD 项目中的 tail.c:
解决方案 2:
浏览一下 uclinux 网站。由于他们分发了该软件,因此必须以某种方式提供源代码。
或者,您可以阅读man fseek
并猜测它是如何完成的。
注意——请参见下面 William 的评论,在某些情况下您不能使用 seek。
解决方案 3:
您可能会发现编写自己的命令行工具是一项有趣的练习。绝大多数 Unix 命令行工具都是一页左右相当简单的 C 代码。
如果只看代码,可以很容易地在 gnu.org 或您最喜欢的 Linux 镜像站点上找到 GNU CoreUtils 源代码。
解决方案 4:
/`*This example implements the option n of tail command.*/`
#define _FILE_OFFSET_BITS 64
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <getopt.h>
#define BUFF_SIZE 4096
FILE *openFile(const char *filePath)
{
FILE *file;
file= fopen(filePath, "r");
if(file == NULL)
{
fprintf(stderr,"Error opening file: %s
",filePath);
exit(errno);
}
return(file);
}
void printLine(FILE *file, off_t startline)
{
int fd;
fd= fileno(file);
int nread;
char buffer[BUFF_SIZE];
lseek(fd,(startline + 1),SEEK_SET);
while((nread= read(fd,buffer,BUFF_SIZE)) > 0)
{
write(STDOUT_FILENO, buffer, nread);
}
}
void walkFile(FILE *file, long nlines)
{
off_t fposition;
fseek(file,0,SEEK_END);
fposition= ftell(file);
off_t index= fposition;
off_t end= fposition;
long countlines= 0;
char cbyte;
for(index; index >= 0; index --)
{
cbyte= fgetc(file);
if (cbyte == '
' && (end - index) > 1)
{
countlines ++;
if(countlines == nlines)
{
break;
}
}
fposition--;
fseek(file,fposition,SEEK_SET);
}
printLine(file, fposition);
fclose(file);
}
int main(int argc, char *argv[])
{
FILE *file;
file= openFile(argv[2]);
walkFile(file, atol(argv[1]));
return 0;
}
/*Note: take in mind that i not wrote code to parse input options and arguments, neither code to check if the lines number argument is really a number.*/
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD