30 lines
769 B
C
30 lines
769 B
C
#include "kernel/param.h"
|
||
#include "kernel/types.h"
|
||
#include "kernel/stat.h"
|
||
#include "user/user.h"
|
||
int
|
||
main(int argc, char *argv[])
|
||
{
|
||
int i;
|
||
//存储待跟踪程序的名称和参数
|
||
char *nargv[MAXARG];
|
||
|
||
//保证trace的参数不少于三个,并且跟踪的系统调用号在0-99之间
|
||
if(argc < 3 || (argv[1][0] < '0' || argv[1][0] > '9')){
|
||
fprintf(2, "Usage: %s mask command\n", argv[0]);
|
||
exit(1);
|
||
}
|
||
//调用trace系统调用,传入待跟踪系统调用号
|
||
if (trace(atoi(argv[1])) < 0) {
|
||
fprintf(2, "%s: trace failed\n", argv[0]);
|
||
exit(1);
|
||
}
|
||
//保存待跟踪程序的名称和参数
|
||
for(i = 2; i < argc && i < MAXARG; i++){
|
||
nargv[i-2] = argv[i];
|
||
}
|
||
//运行待跟踪的程序
|
||
exec(nargv[0], nargv);
|
||
exit(0);
|
||
}
|