Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Windows.h>
- #include <iostream>
- #include <chrono>
- #include <ctime>
- void main( int argc, TCHAR *argv[] )
- {
- STARTUPINFO si;
- PROCESS_INFORMATION pi;
- ZeroMemory( &si, sizeof(si) );
- si.cb = sizeof(si);
- ZeroMemory( &pi, sizeof(pi) );
- if( argc != 2 )
- {
- printf("Usage: %s [cmdline]\n", argv[0]);
- return;
- }
- auto parent_time = std::chrono::system_clock::now();
- auto time_t_parent = std::chrono::system_clock::to_time_t(parent_time);
- std::cout << "Parent: time: " << std::ctime(&time_t_parent);
- Sleep(2000);
- // Start the child process.
- if( !CreateProcess( NULL, // No module name (use command line)
- argv[1], // Command line
- NULL, // Process handle not inheritable
- NULL, // Thread handle not inheritable
- FALSE, // Set handle inheritance to FALSE
- CREATE_NEW_CONSOLE, // No creation flags
- NULL, // Use parent's environment block
- NULL, // Use parent's starting directory
- &si, // Pointer to STARTUPINFO structure
- &pi ) // Pointer to PROCESS_INFORMATION structure
- )
- {
- printf( "CreateProcess failed (%d).\n", GetLastError() );
- return;
- }
- // Wait until child process exits.
- WaitForSingleObject( pi.hProcess, INFINITE );
- // Close process and thread handles.
- CloseHandle( pi.hProcess );
- CloseHandle( pi.hThread );
- }
- // void main(int argc, TCHAR *argv[]){
- // STARTUPINFO si;
- // PROCESS_INFORMATION pi;
- // // ZeroMemory( &si, sizeof(si) );
- // // si.cb = sizeof(si);
- // // ZeroMemory( &pi, sizeof(pi) );
- // // if( argc != 2 )
- // // {
- // // printf("Usage: %s [cmdline]\n", argv[0]);
- // // return;
- // // }
- // TCHAR commandLine[] = TEXT("laba1Win64child_run.exe");
- // // Start the child process.
- // if( !CreateProcess( NULL, // No module name (use command line)
- // commandLine, // Command line
- // NULL, // Process handle not inheritable
- // NULL, // Thread handle not inheritable
- // FALSE, // Set handle inheritance to FALSE
- // CREATE_NEW_CONSOLE, // No creation flags
- // NULL, // Use parent's environment block
- // NULL, // Use parent's starting directory
- // &si, // Pointer to STARTUPINFO structure
- // &pi ) // Pointer to PROCESS_INFORMATION structure
- // )
- // {
- // printf( "CreateProcess failed (%d).\n", GetLastError());
- // return;
- // }
- // // // Wait until child process exits.
- // // WaitForSingleObject( pi.hProcess, INFINITE );
- // // // Close process and thread handles.
- // // CloseHandle( pi.hProcess );
- // // CloseHandle( pi.hThread );
- // return ;
- // }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement