我是unix的新手,并且学习编写一些我们可以在ubuntu中使用gcc编译器执行的c程序。问题:我需要写一些与此类似的东西:“time ls”,其中时间应该由我的程序替换。我知道如何为此编写c程序,但是,我无法理解如果我用实用程序替换时间,unix将如何确定要执行的内容,例如说“mytime”?这方面的一些背景确实会有所帮助
阅读一些很好的Linux编程书,也许ALP - 有点旧,但可以免费下载。
另请阅读intro(2)和syscalls(2)。
对于时间相关的东西,从time(7)开始。它解释说有几种时间概念。然后考虑time(2),gettimeofday(2),getrusage(2),clock_gettime(2),times(2),localtime(3),strftime(3)等......
另请注意,time(1)既可以是shell的内置命令,也可以是/usr/bin/time
中的外部命令。所以它是一些free software,你可以下载和研究它的源代码。
我无法理解unix将如何确定要执行的内容
请注意PATH
variable和environ(7)使用的shells(另见execvp(3))。你可以设置你的PATH
以满足你的需求。您可能也会对strace(1)感兴趣,以了解system calls命令或进程正在做什么。请注意,shell是普通的程序,你可以编写自己的程序(这是一个非常有用的练习)。大多数贝壳都是free software,你可以学习它的源代码。 sash
是一个非常简单的shell ...