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

rqdpfwrv  于 2022-12-17  发布在  其他
关注(0)|答案(1)|浏览(135)
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

你知道吗?

ecbunoof

ecbunoof1#

execlp("time", "time", NULL);等效于执行/usr/bin/time(假设它解析为x1m1 n1.;它可能是与我不同的环境),并且在没有参数的情况下执行/usr/bin/time(同样在我的系统上,macOS 10. 14. 6)不会打印任何东西。我想time实用程序的其他实现可能会打印一条消息,说明没有给出要计时的命令和/或退出并显示错误代码。
相比之下,execlp("time", "time", "ls", NULL);等效于执行/usr/bin/time ls,在这种情况下,time程序执行ls并报告其时间。
在Linux终端中,如果你输入时间,它会显示 shell 和子进程的时间...
当您在命令行shell中键入time时,它会执行shell的内置time函数,而不是系统time程序。要使用execlp重现此情况,必须使用execlp而不是time启动shell,并且必须传递shell参数以向其提供要执行的time命令。

相关问题