C++编写程式执行adb shell su 命令并显示出输出结果

youyun123 2012-04-19 08:49:47
如何用C++编写程式执行
adb shell
$su
#
在#后输入linux命令并显示出结果,结果要在自己定义的输出窗口显示。
遇到的问题:输入adb shell命令后,显示$,再输入su命令就不能识别,而直接输入adb shell su出现#,但不能用。
希望能实现在输入adb shell命令之后能够停在$的界面上,然后再输入su命令之后再停在#界面上,最后在#界面上下命令。


...全文
1255 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
weiweiloong 2013-10-23
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/weiweiloong/5046960 这里有源代码,你去下载吧
codinglf 2013-10-14
  • 打赏
  • 举报
回复
使用匿名管道
string ExeCmd(const char * pszCmd)
{
    //创建匿名管道
    SECURITY_ATTRIBUTES sa = {sizeof(SECURITY_ATTRIBUTES), NULL, TRUE};
    HANDLE hRead, hWrite;
    if (!CreatePipe(&hRead, &hWrite, &sa, 0))
    {
        return "";
    }
    //设置命令行进程启动信息(以隐藏方式启动命令并定位其输出到hWrite)
    STARTUPINFO si = {sizeof(STARTUPINFO)};
    GetStartupInfo(&si);
    si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
    si.wShowWindow = SW_HIDE;
    si.hStdError = hWrite;
    si.hStdOutput = hWrite;
    //启动命令行
    PROCESS_INFORMATION pi;
    if (!CreateProcess(NULL, (char *)pszCmd, NULL, NULL, TRUE, NULL, NULL, NULL, &si, &pi))
    {
        return "";
    }
    //立即关闭hWrite
    CloseHandle(hWrite);
    //读取命令行返回值
    std::string strRet;
    char buff[1024] = {0};
    DWORD dwRead = 0;
    while (ReadFile(hRead, buff, 1024, &dwRead, NULL))
    {
        strRet.append(buff, dwRead);
    }
    CloseHandle(hRead);
    return strRet;
} 
youyun123 2012-05-01
  • 打赏
  • 举报
回复
有没有人知道怎么弄啊
youyun123 2012-04-20
  • 打赏
  • 举报
回复
等待帮助中.....

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧