Какая оболочка выполнит cmd при вызове popen - PullRequest
0 голосов
/ 19 ноября 2018

Прежде всего, простите мой ужасный английский .....

Это прототип

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

Вот мой вопрос, книга говорит, что когда вызывается функция popen,он вызовет exec, чтобы получить оболочку для выполнения строки cmd_string, которую мы даем popen, но я не уверен, какая оболочка получит exec, поэтому кто-нибудь может дать мне ответ?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Давайте попробуем и посмотрим:

$ 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
0 голосов
/ 19 ноября 2018

/ 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.
...