在 2012年4月5日 下午6:38,Daniel P. Berrange <berrange@xxxxxxxxxx> 写道: > On Thu, Apr 05, 2012 at 06:06:43PM +0800, Zhihua Che wrote: >> Hi, everyone >> >> I'm writing application using libvirt and I need call >> virDomainGetCPUStats to get domain cpu stats . I learn from API >> reference that this function has to be called when domain is running. >> So my question is if there is an atomic way to test the domain's state >> and get its stats? >> >> Or, it's ok to call this function when domain is not active, but >> caller just gets error returned. >> >> In my code, I just call it directly and return error. I wonder if >> this programming practice has subtle problem like race condition. > > For a function which is only callable when the domain is running, libvirt > will return a special error code VIR_ERR_OPERATION_INVALID if you invoke > it when the domain is shutoff. > > Thus the race-free way to deal with this scenario is to just call the > API, and check for VIR_ERR_OPERATION_INVALID. Any other error code is > an indication of a "real" error situaton. > > Regards, > Daniel > -- I guess I got it.