LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 832|回复: 8

beep()函数引起段错误,why?

[复制链接]
发表于 2004-8-20 10:50:10 | 显示全部楼层 |阅读模式
一个小程序:

  1. #include <curses.h>
  2. int main()
  3. {
  4.   while(1)
  5.     {
  6.       beep();
  7.     }
  8.   exit(0);
  9. }
复制代码

然后用GCC编译:
$ gcc -o mybeep beep.c -lcurses
编译是ok的。
执行时一声不吭:beat :beat :beat ,
就出一个段错误。:beat :beat :beat
发表于 2004-8-20 10:55:50 | 显示全部楼层
使用 curses 库,是不是要初始化(e.g.initscr())一下?
 楼主| 发表于 2004-8-20 12:05:17 | 显示全部楼层
我没有用到screen和term,也要初始化它么?
我再试试看。
就是让它吼一嗓子看看,居然这么不配合,:comp :comp
 楼主| 发表于 2004-8-20 12:27:21 | 显示全部楼层
试了一下,确实要initscr()。
现在beep()是执行了,但是没有声音出来。
[PHP]
#include <ncurses.h>
int main()
{

  WINDOW *my;
  int tmp;

  my=initscr();

  printf("after init...\n");

  for(tmp=0;tmp<10;tmp++)
    {
      printf("beep...%d\n",tmp);
      beep();
    }

  scanf("%d",&tmp);//这里仅当作一次暂停...
  tmp=endwin();

  printf("tmp=endwin:%d\n",tmp);

  exit(0);
}
[/PHP]
发表于 2004-8-20 14:29:05 | 显示全部楼层
pc speaker正常吗?
 楼主| 发表于 2004-8-20 14:58:41 | 显示全部楼层
这个当然。
是不是与非root帐号有关?

最初由 lucifer 发表
pc speaker正常吗?
发表于 2004-8-20 17:09:45 | 显示全部楼层

err code:

WINDOW *my;
my=initscr();  // int initscr()
 楼主| 发表于 2004-8-20 19:54:51 | 显示全部楼层

回复: err code:

你的好像是错了,
man curs_initscr可以看到:
[PHP]
SYNOPSIS
       #include <curses.h>

       WINDOW *initscr(void);
       int endwin(void);
[/PHP]
最初由 duleell 发表
WINDOW *my;
my=initscr(); // int initscr()
发表于 2004-8-21 07:55:42 | 显示全部楼层
SCO下man initscr就是这样子:
int initscr();
int endwin();
不过man curs_initscr()确实如你所说
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表