1
我正在寫一個C++代碼來執行android設備中的「top」命令。這是我使用的代碼。在Android設備上運行C++程序
using namespace std;
int main()
{
char buffer[1024];
string result;
system("top -n 1 | head -n 4 | tail -n 3");
FILE *memcpu= popen("top -n 1 | head -n 4 | tail -n 3","r");
while (!feof(memcpu)) {
if (fgets(buffer, 1024, memcpu) != NULL)
result+=buffer;
}
cout<<"result you need\n"<<result;
}
我想在adb設備中運行此文件。因此,我用命令
arm-linux-gnueabi-g++ -static -march=armv7-a name.cpp -o test
構建程序當我運行該程序,該字符串結果是空的。
我通過在程序中包含system("top -n 1");
行來測試該程序。但是我沒有從adb shell獲得任何輸出(空字符串)。
我使用g ++編譯相同的程序,並在linux pc中運行。那時我正在得到正確的輸出。什麼可能是我沒有得到所需的android設備的adb外殼輸出的原因?
你是用'JNI'還是其他方式運行這個'C++'代碼? – Sma
我不使用JNI。基本上我只是建立這個程序到設備兼容的可執行文件,並使用'adb push'命令將此可執行文件放到system/bin文件夾中。然後我進入adb shell並從'bin'執行程序。 – deepz
您的測試設備上是否有3個程序(頂部,頭部和尾部)? –