【发布时间】:2017-05-22 14:47:06
【问题描述】:
所以我一直在努力做这个练习。我必须获取我选择的任何给定 Linux 命令(即 ls 或 cd)进行的所有系统调用,将它们列在 .txt 文件中,并在它们旁边列出它们的唯一 ID。
到目前为止,这是我得到的:
strace -o filename.txt ls
这在 Linux shell 中执行时会给我一个“filename.txt”文件,其中包含 ls 命令的所有系统调用。现在在我的 C 脚本中:
#include <stdio.h>
#include <stdlib.h>
int main(){
system("strace -o filename.txt ls");
return 0;
}
这应该和前面的代码一样,但它没有返回任何东西,尽管代码成功编译。我将如何解决这个问题,然后获取 ID?我正在使用“stdlib”库,因为在我的研究中我发现它与系统调用 ID 有一些关系,但没有找到任何关于如何获取它们的指示。基本上我必须读取我创建的那个文件,并让它给每个系统调用它的 ID。
【问题讨论】:
-
从自己的程序中执行 shell 命令有什么意义?如果你被要求在 c 中这样做,你可能应该看看man ptrace
-
1) C 不是脚本语言。 2) @FelixPalmen 是对的:这毫无意义。
标签: c linux operating-system system monitors