使用execlp的更多过滤器参数

时间:2014-04-12 11:41:42

标签: c shell

我一直在尝试使用execlp()并提出一个想法。我想用更多过滤器执行man命令。这就是我想出的:

void cmd_help(void)
{
  printf("shell command: help\n");
  execlp("/usr/bin/man", "man", "intro", "| more -8", NULL);
}

它显示了男人介绍页面,但是" |更多-8"论证不起作用。可能是什么问题?

1 个答案:

答案 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);
}