下面是一些简单的代码;请注意,在呼叫printf
之前,有一个waitFor()
声明。为什么程序会暂停三秒钟而然后打印消息?
int main(int argc, char* argv)
{
producer();
return 0;
}
void waitFor(unsigned int secs) {
unsigned int retTime = time(0) + secs; // Get finishing time.
while (time(0) < retTime); // Loop until it arrives.
}
static void *producer()
{
int s = 3;
printf("Busy for %d seconds", s);
waitFor(s);
return NULL;
}
答案 0 :(得分:1)
这可能是因为在旋转等待CPU之前你没有让输出刷新。
你的waitFor例程不是真正的正确方法。看一下使用sleep()
。
在我的Mac上,如果我在邮件中添加换行符,则会立即输出而无需刷新。
printf("Busy for %d seconds\n", s);
答案 1 :(得分:1)
你是如何运行这个程序的?有时printf()的输出是缓冲的,只有在打印大量数据或程序退出时才会出现。解决它的两种简单方法是:
import sys;
import os;
import socket
ucf='/opt/userconfig.sec'
ukf='/opt/userkey.sec'
host = socket.gethostname()
port = '9556'
domain_name = 'WLS_Domain'
domain_dir = '/opt/domains/WLS_Domain'
nm_type = 'SSL'
def status():
try:
nmConnect(userConfigFile=ucf,userKeyFile=ukf,host=host,port=port,domainName=domain_name,domainDir=domain_dir,nmType=nm_type)
server_state = nmServerStatus('AdminServer')
print 'AdminServer is in state: ' + server_state
- &gt; printf(
fprintf(stderr,