调用popen时,哪个外壳将执行cmd

时间:2018-11-19 15:37:49

标签: unix ansi-c

首先,请原谅我糟糕的英语.....

这是原型

FILE *popen(const char* cmd_string, const char* type);

这是我的问题,这本书说,当调用popen函数时,它将调用exec以获取一个外壳,以执行我们提供给popen的cmd_string,但是我不确定exec将获得哪个外壳,所以任何人都可以给我一个答案?

2 个答案:

答案 0 :(得分:2)

/ bin / sh:来自文档:

   The command argument is a pointer to a null-terminated string
   containing a shell command line.  This command is passed to /bin/sh
   using the -c flag; interpretation, if any, is performed by the shell.

答案 1 :(得分:0)

让我们尝试看看:

$ cat test.c
#include <stdio.h>

int main() {

  FILE *fp;
  char var[5];

  fp = popen("echo $0", "r");
  fgets(var, 5, fp);
  printf("%s", var);
}
$ gcc -Wall test.c
$ ./a.out
sh