Я думаю, это зависит от того, какую версию NDK вы используете
Также, просматривая исходное дерево пряников для бионики, я нашел реализацию popen.Реализация может не соответствовать 100% правильному положению libc, но она, по крайней мере, в некоторой степени функциональна.
Используя NDK v6, следующий пример компилируется без проблем и работает на моем устройстве Android.
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fpipe;
char *command="/system/bin/ps";
char line[256];
if ( !(fpipe = (FILE*)popen(command,"r")) ) exit(1)
while ( fgets( line, sizeof line, fpipe))
{
puts(line);
}
pclose(fpipe);
}
ОБНОВЛЕНИЕ: Похоже, что popen на предыдущих версиях ICS использовал vfork () вместо fork (), и эти vfork (), как известно, вызывают повреждение стека.сохранить, чтобы использовать, но в более ранних версиях Android он доступен, но очень глючит.