免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1329 | 回复: 4
打印 上一主题 下一主题

请教怎么显示变动的时间 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-04-04 18:09 |只看该作者 |倒序浏览
我在sco 5.0.6下编译
我想显示时间变动的输出,代码如下
是不是需要用fork()来实现

  1. #include<curses.h>;
  2. #include<sys/timeb.h>;
  3. #include<time.h>;
  4. #define ESCAPE 27

  5. init_curses()
  6. {
  7.         initscr();
  8.         start_color();
  9.         init_pair(1,COLOR_WHITE,COLOR_BLUE); /**  蓝底白字 **/
  10.         curs_set(0);
  11.         noecho();
  12.         keypad(stdscr,TRUE);

  13. }
  14. main ()
  15. {
  16.         int key;
  17.         char  str[20];
  18.         struct tm *t_nowtime;
  19.         time_t lt;
  20.         WINDOW * bom_win,* scoll_win;
  21.         lt=time(NULL);
  22.         t_nowtime=localtime(&lt);
  23.         strftime(str,15,"%X",t_nowtime);
  24.         init_curses();
  25.         bkgd(COLOR_PAIR(1));
  26.         box(stdscr,'┃','━');
  27.         /*** 画底部方框 ***/
  28.         bom_win=subwin(stdscr,3,80,22,0);
  29.         box(bom_win,ACS_VLINE,ACS_HLINE);
  30.         scoll_win=subwin(bom_win,1,79,23,1);
  31.         touchwin(scoll_win);
  32.         wprintw(scoll_win,str);
  33.         wprintw(scoll_win,"%c",ACS_VLINE);
  34.         refresh();
  35.         do
  36.         {
  37.         key=getch();
  38.         touchwin(scoll_win);
  39.         werase(scoll_win);
  40.         wrefresh(scoll_win);
  41.         lt=time(NULL);
  42.         t_nowtime=localtime(&lt);
  43.         strftime(str,15,"%X",t_nowtime);
  44.         wprintw(scoll_win,str);
  45.         wrefresh(scoll_win);
  46.         touchwin(stdscr);
  47.         refresh();
  48.         } while(key!=ESCAPE);
  49.         endwin();
  50.         return(0);
  51. }
复制代码

先谢谢了!

论坛徽章:
0
2 [报告]
发表于 2003-04-04 19:01 |只看该作者

请教怎么显示变动的时间

使用线程也可以呀
只要循环更新显示就可以了

fork进程的话
因为新进程有自己地址空间
无法访问父进程地址空间

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2003-04-04 19:21 |只看该作者

请教怎么显示变动的时间

do
{
   key=getch();
   .......
}
导致阻塞,所以必不能看到时间的连续变化,要么注释掉该语句,如下:
do
{
  /* key=getch();  */
   .......
}

论坛徽章:
0
4 [报告]
发表于 2003-04-04 20:01 |只看该作者

请教怎么显示变动的时间

我的意思就是要在输入ESC的时候退出
请问用线程怎么写呢?

论坛徽章:
0
5 [报告]
发表于 2003-04-04 20:50 |只看该作者

请教怎么显示变动的时间

WHILE(1){
select () //读标准输入,等待时间不可很长,可以设为0
IF(有输入)
  if 输入=esc
    break;

做你想做的
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP