int g_argc;
char ** g_argv;
bool g_isChild=false;
char INPUTURL[512]={'\0'};
int main(int argc ,char ** argv)
{
g_argc=argc;
g_argv=argv;
if(strcmp(argv[argc-1],"c")==0)
{
g_isChild=true;
}
if(g_isChild==false)
{
if(argc!=2)
{
printf("Usage:%s videoFilePath\n",argv[0]);
return 1;
}
}
LPCSTR lpAppName="slice_up";
LPCSTR lpKeyName="write_index";
LPCSTR lpString=NULL;
LPCSTR lpFileName="ParentPassToChildValue.ini";
char tmpBuf[100];
memset(tmpBuf,0,100);
if(g_isChild==false)
{//(parent)
write_index = !write_index_file(first_segment, last_segment, 0, actual_segment_durations);
lpString=itoa(write_index,tmpBuf,10);
BOOL bRet=WritePrivateProfileStringA(lpAppName,lpKeyName,lpString,lpFileName);
if(bRet==0)
{
printf("Could not write ini file, [%d]\n",GetLastError());
}
//fork
STARTUPINFOA si = { sizeof(si) };
PROCESS_INFORMATION pi;
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = TRUE; //TRUE表示显示创建的进程的窗口
char cmdline[512];//
char *p=cmdline;
for(int i=0;i<g_argc;i++)
{
sprintf(p,"%s ",g_argv[i]);
p=p+strlen(g_argv[i])+1;
}
*p++='c';
*p='\0';
bRet = ::CreateProcessA (
NULL,
cmdline, //在Unicode版本中此参数不能为常量字符串,因为此参数会被修改
NULL,
NULL,
FALSE,
CREATE_NEW_CONSOLE,
NULL,
NULL,
&si,
&pi);
if(bRet)
{
::CloseHandle (pi.hThread);
::CloseHandle (pi.hProcess);
//printf(" 新进程的进程ID号:%d /n", pi.dwProcessId);
//printf(" 新进程的主线程ID号:%d /n", pi.dwThreadId);
}
else
{
int error = GetLastError();
printf("CreateProcess error code:%d\n",error );
}
uinit_mux();
}//g_isChild is false(parent)
else
{//g_isChild is true
DWORD size=GetPrivateProfileStringA(lpAppName,lpKeyName,"0",tmpBuf,100,lpFileName);
write_index=atoi(tmpBuf);
///