C - 执行时间不显示任何内容


int main(int argc, char* argv[]){

execlp("time", "time", NULL);
return 0;
}

然而,如果我给time添加一个参数,比如ls,它确实可以工作:

int main(int argc, char* argv[]){

execlp("time", "time", "ls", NULL);
return 0;
}

输出:

LICENCIA                main.c                  msh                     parser.y                prueba.c                scanner.o               y.tab.h
Makefile                main.o                  parser.o                prueba                  scanner.l               tempCodeRunnerFile.c
0,00 real         0,00 user         0,00 sys

任何想法?

按预期工作。execlp("time", "time", NULL);等价于执行/usr/bin/time(假设这是它解析到的;它可能是不同的环境,与我的不同),并且执行/usr/bin/time(同样在我的系统上,macOS 10.14.6)没有参数不会打印任何东西。我猜想time实用程序的其他实现可以打印一条消息,表示没有给出时间命令和/或以错误代码退出。

相反,execlp("time", "time", "ls", NULL);相当于执行/usr/bin/time ls,在这种情况下,time程序执行ls并报告其时间。

在linux终端中,如果你输入time,它会显示shell和子进程的时间…

当您在命令行shell中输入time时,它执行shell内置的time函数,而不是系统的time程序。要使用execlp复制此操作,您必须使用execlp而不是time来启动shell,并且您必须传递shell参数以给它一个time命令来执行。

最新更新