繁体   English   中英

execlp 时间不显示任何内容

[英]execlp time doesn't show anything

int main(int argc, char* argv[]){
 
   execlp("time", "time", NULL);

   return 0;
}

不过,如果我像 ls 一样向时间添加一个参数,它确实有效:

int main(int argc, char* argv[]){
 
   execlp("time", "time", "ls", NULL);

   return 0;
}

Output:

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)没有arguments 不打印任何东西。 我想time实用程序的其他实现可能会打印一条消息,指出没有给出时间命令和/或退出并显示错误代码。

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

在 linux 终端中,如果您键入时间,它会显示 shell 和子进程时间……

当您在命令行中输入time shell 时,它会执行 shell 的内置time function,而不是系统time程序。 要使用execlp重现这一点,您必须使用execlp启动 shell,而不是time ,并且您必须传递 shell arguments 以给它一个time命令来执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM