我一直在尝试使用execlp()并提出一个想法。我想用更多过滤器执行man命令。这就是我想出的:
void cmd_help(void)
{
printf("shell command: help\n");
execlp("/usr/bin/man", "man", "intro", "| more -8", NULL);
}
它显示了男人介绍页面,但是" |更多-8"论证不起作用。可能是什么问题?
答案 0 :(得分:1)
使用execlp,您只能执行单个二进制文件并向其发送一些参数。即使它们在命令行上工作,I / O重定向或特殊字符扩展等服务也不起作用。这是因为它们是在调用实际命令之前由shell解释器执行的。要使用它们,您需要调用shell。例如:
void cmd_help(void)
{
printf("shell command: help\n");
execlp("/bin/bash", "bash", "-c", "man intro | more -8", NULL);
}