VirtualBox

Ignore:
Timestamp:
May 12, 2010 9:50:16 PM (15 years ago)
Author:
vboxsync
Message:

Guest Control/VBoxService: Added support for cancel pending (blocking) calls; added support for properly stopping + shutting down main thread.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp

    r29193 r29438  
    318318                        if (verbose)
    319319                            RTPrintf("No time left to wait for process!\n");
    320                     }                   
     320                    }
    321321                }
    322322                else if (verbose)
    323                     RTPrintf("Waiting for process to exit ...\n");                       
     323                    RTPrintf("Waiting for process to exit ...\n");
    324324
    325325                /* setup signal handling if cancelable */
     
    344344                while (SUCCEEDED(progress->COMGETTER(Completed(&fCompleted))))
    345345                {
    346                     /* 
     346                    /*
    347347                     * because we want to get all the output data even if the process
    348348                     * already ended, we first need to check whether there is some data
    349349                     * left to output before checking the actual timeout and is-process-completed
    350                      * stuff. 
     350                     * stuff.
    351351                     */
    352352                    if (cbOutputData <= 0)
     
    363363                    }
    364364
    365                     if (   waitForStdOut 
     365                    if (   waitForStdOut
    366366                        || waitForStdErr)
    367367                    {
    368                         CHECK_ERROR_BREAK(guest, GetProcessOutput(uPID, 0 /* aFlags */, 
     368                        CHECK_ERROR_BREAK(guest, GetProcessOutput(uPID, 0 /* aFlags */,
    369369                                                                  u32TimeoutMS, _64K, ComSafeArrayAsOutParam(aOutputData)));
    370370                        cbOutputData = aOutputData.size();
     
    421421                }
    422422                else
    423                 {                   
     423                {
    424424                    if (fCompleted)
    425425                    {
     
    440440                            CHECK_ERROR_BREAK(guest, GetProcessStatus(uPID, &uRetExitCode, &uRetFlags, &uRetStatus));
    441441                            RTPrintf("Exit code=%u (Status=%u, Flags=%u)\n", uRetExitCode, uRetStatus, uRetFlags);
    442                         }       
    443                     }
    444                     else /* not completed yet? -> timeout */
    445                     {
    446                         RTPrintf("Process timed out!\n");
     442                        }
    447443                    }
    448444                }
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette