c - 如何编写unix "time"之类的实用程序

标签 c unix

我是unix新手,正在学习编写一些c程序,我们可以在ubuntu中使用gcc编译器执行这些程序。问题:我需要写一些类似的东西:“time ls”,其中时间应该由我的程序替换。我知道如何为此编写c程序,但是,我无法理解如果我用我的实用程序替换时间,例如“mytime”,unix将如何计算出要执行的内容?一些背景知识确实会有帮助

最佳答案

阅读一些好的 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 ,您可以下载并研究其源代码。

I cannot understand how unix will figure out what to execute

请注意PATH variable (另请参阅 environ(7) ),由 shells 使用并在 execvp(3) 。您可以设置PATH以满足您的需求。您可能还对 strace(1) 感兴趣了解什么system calls一个命令或者一个进程正在做的事情。请注意,shell 是普通程序,您可以编写自己的程序(这是一项非常有用的练习)。大多数 shell 是 free software您可以研究其源代码。 sash是一个非常简单的外壳...

关于c - 如何编写unix "time"之类的实用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48108655/

相关文章:

c - 结构字符未正确分配

c++ - Visual Studio C 或 C++ 中的最大值

c++ - FileObject->FileName 不返回文件的完整路径

c - 在 C 中寻找一个好的哈希表实现

php - 如何从不同的IP发送新闻通讯?

linux - UNIX - 以 root 身份执行命令,没有 sudo/su 访问权限

c - 数组不返回用户输入的字母

c# - 有人使用 CLI 后端为 gcc 编译器编译 lib x264 吗?

unix - 如何在 unix/shell 中以编程方式清除旧目录?

linux - 解释 UNIX 中不同的 EXIT 命令