[英]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.