看了编程之美这本书,第一个小问题中用到了sleep函数,亲自尝试发现很多问题,在这里记录一下。首先sleep函数在windows和linux中有很多不同之处。在windows中s是大写的,叫Sleep。在linux中sleep是小写的。其次windows下这个函数在windows.h里面,但是linux在unistd.h里面。

windows版本,dev c++编译通过。顺便说一下,dev

c++默认安装minGW作为编译器——就是windows化了的GCC编译器。版本应该是3.4;在VC2010中编译运行,无论是debug版还是release版都一样。

#include

#include

using namespace std;

int main(void)

{

while(1)

{

//cout<

printf("two\n");

Sleep(1000);

}

return 0;

}

linux下:g++编译通过

#include

#include

#include

using namespace std;

int main(void)

{

while(1)

{

//cout<

printf("two\n");

fflush(stdout); sleep(1);

}

return 0;

}

在这个过程中还发现了另一个问题。无论是cout还是printf,只要是回车结尾就没问题,但是如果输出不是回车结尾,在windows下没问题,在linux下就没有输出。需要额外用fflush函数把缓冲区强行写一次。linux里面的输出是line

flush的,所以只有遇到回车时候才flush,但是windows不一样。

按照msdn的说法,参见(setvbuf,serbuf,fflush的文档),windows下是不支持line

flush的,所以标准输出是Full

buffering的。buffer的大小在常数BUFSIZ里面,输出发现是512.但是实际的结果很像不缓存的。这是因为标准输出被定为到了屏幕,屏幕是character

device,所以每次调用库函数都会flush一次。参见(Stream I/O的msdn文档)原文如下“The stdout and

stderr functions are flushed whenever they are full or, if you are

writing to a character device, after each library call.”

linux fflush函数,sleep函数和fflush函数相关推荐

  1. linux c open fopen freopen 文件操作函数

    open是linux下的底层系统调用函数,fopen与freopen c/c++下的标准I/O库函数,带输入/输出缓冲. linxu下的fopen是open的封装函数,fopen最终还是要调用底层的系 ...

  2. linux系统发送信号的系统调用是,linux系统编程之信号:信号发送函数sigqueue和信号安装函数sigaction...

    信号发送函数sigqueue和信号安装函数sigaction sigaction函数用于改变进程接收到特定信号后的行为. sigqueue()是比较新的发送信号系统调用,主要是针对实时信号提出的(当然 ...

  3. linux编程取消wait函数,Linux编程基础之进程等待(wait()函数).pdf

    Linux编程基础之进程等待(wait()函数) 编程过程中,有时需要让一个进程等待另一个进程 ,最常见的是父进程等待自己的子进程 ,或者父进程回收自己 的子进程资源包括僵尸进程.这里简单介绍一下系统 ...

  4. linux 打印函数宏,linux内核中的嵌入式汇编宏函数

    在看linux内核代码时,常会遇到诸如:static inline _syscall0(int,fork)这样的函数.经查阅资料,发现该函数是嵌入式汇编宏函数. linux内核提供了7个非常有用的宏定 ...

  5. 三种睡眠时间函数的区别:linux 的sleep()、usleep()、nanosleep()函数

    三种睡眠时间函数的区别:linux 的sleep().usleep().nanosleep()函数 (1)sleep()-------以秒为单位 unsigned int sleep(unsigned ...

  6. linux内核申请内存的方法,Linux内核空间的内存申请常用函数

    在Linux内核编程中内存的申请不同于系统编程,她有自己的一套机制. 1. kmalloc 函数原型:void *kmalloc( size_t size, int flags ) 参数说明:size ...

  7. linux注册函数机制,Linux可信计算机制模块详细分析之函数实现机制(1)字符设备驱动...

    原标题:Linux可信计算机制模块详细分析之函数实现机制(1)字符设备驱动 2.3 函数实现机制 2.3.1 Linux 字符设备驱动 在linux 3.5.4中,用结构体cdev描述字符设备,cde ...

  8. 【Linux系统编程】可重入函数和不可重入函数

    在实时系统的设计中,经常会出现多个任务调用同一个函数的情况.如果有一个函数不幸被设计成为这样:那么不同任务调用这个函数时可能修改其他任务调用这个函数的数据,从而导致不可预料的后果.这样的函数是不安全的 ...

  9. ​Linux下C如何调用PCI Lib函数

    Linux下C如何调用PCI Lib函数 在Linux下,可以通过"setpci"和"setpci"命令来访问PCI设备的配置空间,那么能否用程序来访问PCI ...

  10. linux 设备数 of,linux下devicetree中惯用的of函数

    linux下devicetree中常用的of函数 从device_node中获取信息: int of_property_read_u8_array(const struct device_node * ...

最新文章

  1. spring boot里面的三种配置文件。
  2. 教你如何使用Solitude评估应用程序中的用户隐私问题
  3. GoLand配置数据库、远程host以及远程调试
  4. mybatis缓存机制
  5. [再寄小读者之数学篇](2014-11-26 幂等矩阵的一个充分条件)
  6. jBPM4.4 window下启动tomcat
  7. 实验四 Windows程序设计
  8. python虚拟环境安装和配置_Python3安装虚拟环境virtualenvwrapper和配置
  9. app服务器该如何配置文件,当你使用 SQL Server 2016 或更高版本应用用户配置文件时,App-V 服务器发布可能会失败...
  10. c# 如何调用非托管函数 (转)
  11. DATE_FORMAT、when case函数用法
  12. 在 Linux 上配置一个 syslog 服务器
  13. ppt中如何合并流程图_PPT中图片如何排版才能好看
  14. selenium 学习之路开始了,一遍搬一遍理解学习,加油!!!
  15. 红帽子 linux 声卡驱动,RedHat Linux系统下安装ALSA驱动的方法
  16. SpringBoot巧用静态内部类优雅地接收参数
  17. ecshop常见漏洞
  18. eclipse开发桌面应用软件程序教程
  19. serverlet 区别_jsp serverlet 区别
  20. JavaScript进阶(四)

热门文章

  1. 校园二手商城小程序,手把手带你开发一款云开发版商城小程序,校园二手微信小程序,可升级社区团购小程序
  2. Traffic shaping 一个事半功倍的程序化”噪音“解决方案
  3. 0x01位运算——a^b
  4. (※)中序遍历二叉树的非递归算法
  5. 二叉树中序遍历非递归算法实现详解
  6. 房地产数据-python爬虫+数据可视化
  7. 进程间通信的方式及原理
  8. 梯度下降、牛顿法、拟牛顿法
  9. matlab如何在文中定义函数
  10. 找出数组中的最大数和最小数