问一个adb的使用问题

SunyKing 2014-10-15 07:11:05
大家好,我打算做跟360那样的安卓程序管理的功能,目前卡在移动应用到sd卡这个功能上了,下面这行命令,有问题吗?怎么每次调用都会让adb崩溃呢?
adb.exe shell su -c 'cp /data/app/ /system/sd && rm -f /data/app/ && ln -s /system/sd/ /data/app/ '

贴主要代码:
SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;

//创建匿名管道
if (!CreatePipe(&hRead,&hWrite,&sa,0))
{
return _T("");
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
si.wShowWindow = SW_HIDE;
si.hStdError = hWrite;//数据输出用的文件句柄
si.hStdOutput = hWrite;//数据输出用的文件句柄

//FILE* lLogFile = freopen ("mylog.log","w",hWrite);

//执行cmd命令,并在命名中管道中写入cmd命令返回的串
if (!CreateProcess(NULL,cstrCmd.GetBuffer()
,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
CloseHandle(hRead);
CloseHandle(hWrite);
return _T("");
}

CloseHandle(hWrite);

//检测到退出事件;
if(WaitForSingleObject(g_dlhThreadEvent, 0) == WAIT_OBJECT_0)
{
CloseHandle(hRead);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return _T("检测到退出事件");
}

if( seconds != INFINITE) seconds = 1000;


cstrCmd就是上述的那个命令,在WaitForSingleObject这里崩溃。对这方面也不太了解,望大家指点,多谢。
...全文
70 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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