CreateProcess输入参数例子

来源:互联网 发布:2017年9月m2数据 编辑:程序博客网 时间:2024/06/05 00:38

//用创建进程的方式执行mysql命令把文件数据导入数据到数据库


一.直接执行
char cmdline[2048];
memset(cmdline,0,2048);
sprintf(cmdline,"mysql -h%s -u%s -p%s -D%s < /"%s/"",sSererIp,sUsname,sPsw,sDataName,wfsqlname);
system( cmdline);

二、创建进程的方式执行
BOOL brunsucc = FALSE;
char cmdline[2048];
memset(cmdline,0,2048);

//注意没有 < /"%s/"
sprintf(cmdline,"mysql -h%s -u%s -p%s -D%s",sSererIp,sUsname,sPsw,sDataName);  

SECURITY_ATTRIBUTES SecAtrrs={0};
SecAtrrs.nLength=sizeof(SecAtrrs);
SecAtrrs.lpSecurityDescriptor=NULL;
SecAtrrs.bInheritHandle=TRUE;

HANDLE hInputFile = CreateFile(wfsqlname,
        GENERIC_READ|GENERIC_WRITE,
        FILE_SHARE_READ|FILE_SHARE_WRITE,
        &SecAtrrs,
        OPEN_ALWAYS,
        FILE_ATTRIBUTE_NORMAL| FILE_FLAG_WRITE_THROUGH,
        NULL);
if (hInputFile != INVALID_HANDLE_VALUE)
{
 PROCESS_INFORMATION   process;
 STARTUPINFO   startupInfo={0};  
 startupInfo.cb=sizeof(STARTUPINFO);
 startupInfo.dwFlags=STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
 startupInfo.wShowWindow =SW_HIDE;
 startupInfo.hStdInput=hInputFile;
 startupInfo.lpReserved=NULL;  
 startupInfo.lpReserved2=NULL;  
 startupInfo.lpDesktop=NULL;  
    
 BOOL bcrtps=CreateProcess(NULL,
       cmdline,
       NULL,
       NULL,
       TRUE,
       NORMAL_PRIORITY_CLASS,
       NULL,
       NULL,
       &startupInfo,&process);
 if (bcrtps)
 {     
  if (WaitForSingleObject(process.hProcess, INFINITE) == WAIT_FAILED)
  {
   CloseHandle(process.hThread);  
   CloseHandle(process.hProcess);      
  }
  else
  {
   CloseHandle(process.hThread);  
   CloseHandle(process.hProcess);      
   brunsucc = TRUE;
   ...   
 }

CloseHandle(hInputFile);

原创粉丝点击