在哪里可以找到“正常运行时间”的源代码?


8

我正在学习Python。到目前为止,我只做基本的Python编码。一天前,我检查了tree命令的python实现。突然我想为Windows创建一个Python克隆uptime。对于使用哪种语言以及克隆它涉及的复杂性,我一无所知。

但是我找不到它的源代码。我正在使用Fedora14。已安装kernel-devel软件包。我这样做了,whereis uptime但是/usr/bin/uptime使用vim打开时,生成的文件显示了奇怪的符号。谷歌搜索其源代码也无法产生预期的结果。在哪里可以找到其源代码?


1
尝试(而不是(除了)使用vim打开文件以查看它们的构成)file /usr/bin/uptime。file命令使用一系列半魔术启发法来猜测文件的内容-在这种情况下,是ELF格式的二进制可执行文件。
mattdm 2011年

我喜欢的调试工具是strace。它将显示您的应用程序进行的所有系统调用。如果运行strace uptime,它将显示(加载后)/ proc / uptime和/ proc / loadavg上的打开调用。尽管它并不能显示所有内容,但有时是逆向工程的一个不错的开始
Rich Homolka

Answers:


8

正常运行时间是“ procps”软件包的一部分,上游资源位于http://procps.sourceforge.net/ (不是fedora用户,因此不确定在哪里可以找到他们的.src.rpm)。

要回答您没有提出的问题;看一下/ proc / uptime,第一个数字是启动后的秒数。您应该能够轻松地将其转变为可用的东西:)


谢谢。得到了代码。我在这里发布之前先结帐了/ proc / uptime。那是我要使用的最后一个选项。
Dharmit 2011年

1
仅查看源代码,代码仅从/ proc / uptime中读取正常运行时间。检查procps源中的... / proc / sysinfo.c,以获取uptime()函数:gitorious.org/procps/procps/blobs/master/proc/sysinfo.c#line75
jsbillings

9

通常,在基于RPM的发行版(如Fedora)上,您可以找到提供给定命令的软件包名称rpm -qf /path/to/command。像这样:

$ rpm -qf $( which uptime )
procps-3.2.8-18.20110302git.fc16.x86_64

然后,您可以使用下载源RPM yumdownloader --source procps。(yumdownloader来自yum-utils软件包,如果您尚未安装的话。)拥有src.rpm后,可以使用rpm -i或进行解压缩rpm2cpio

或者,在许多情况下,您可以在RPM软件包中查询项目URL,这可能有助于您将其指向上游源:

$ rpm -qi procps|grep ^URL
URL         : http://gitorious.org/procps

而且,很酷,有些代码可以方便地在网上浏览。如果您按照它进行操作,则基本上所有操作都会被阅读/proc/uptime并有条不紊地打印。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.