免费注册 查看新帖 |

Chinaunix

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

进程结束的问题,新手,求指导~~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-03 13:14 |只看该作者 |倒序浏览
本帖最后由 chenyx 于 2011-09-03 21:59 编辑

下面那段程序是网上拉的。。。
求教如何加几条语句使得在任何时候都可以通过按任意见退出程序。。。
还有,对于他设置的变量,有没有人可以解释下呢~~
  1. /* 此文件中定义了下面所有形如SND_的变量*/
  2. #include <sys/soundcard.h>
  3. #include <stdio.h>
  4. #include <unistd.h>
  5. #include <sys/ioctl.h>
  6. #include <fcntl.h>
  7. #include <stdlib.h>

  8. int main()
  9. {
  10. /* id:读取音频文件描述符;fd:写入的文件描述符。i,j为临时变量*/
  11. int id,fd,i,j;
  12. /* 存储音频数据的缓冲区,可以调整*/
  13. char testbuf[4096];
  14. /* 打开声卡设备,失败则退出*/
  15. if ( ( id = open ( "/dev/audio", O_RDWR ) ) < 0 ) {
  16.   fprintf (stderr, " Can't open sound device!\n");
  17.   exit ( -1 ) ;
  18. }
  19. /* 打开输出文件,失败则退出*/
  20. if ( ( fd = open ("test.wav",O_RDWR))<0){
  21.   fprintf ( stderr, " Can't open output file!\n");
  22.   exit (-1 );
  23. }
  24. /* 设置适当的参数,使得声音设备工作正常*/
  25. /* 详细情况请参考Linux关于声卡编程的文档*/
  26. i=0;
  27. ioctl (id,SNDCTL_DSP_RESET,(char *)&i) ;
  28. ioctl (id,SNDCTL_DSP_SYNC,(char *)&i);
  29. i=1;
  30. ioctl (id,SNDCTL_DSP_NONBLOCK,(char *)&i);
  31. i=8000;
  32. ioctl (id,SNDCTL_DSP_SPEED,(char *)&i);
  33. i=1;
  34. ioctl (id,SNDCTL_DSP_CHANNELS,(char *)&i);
  35. i=8;
  36. ioctl (id,SNDCTL_DSP_SETFMT,(char *)&i);
  37. i=3;
  38. ioctl (id,SNDCTL_DSP_SETTRIGGER,(char *)&i);
  39. i=3;
  40. ioctl (id,SNDCTL_DSP_SETFRAGMENT,(char *)&i);
  41. i=1;
  42. ioctl (id,SNDCTL_DSP_PROFILE,(char *)&i);
  43. /* 读取一定数量的音频数据,并将之写到输出文件中去*/
  44. for ( j=0; j<100;){
  45.   i=read(id,testbuf,4096);
  46.   if(i>0){
  47.    write(fd,testbuf,i);
  48.    j++;
  49.   }
  50. }
  51. /* 关闭输入、输出文件*/
  52. close(fd);
  53. close(id);
  54. exit(0);
  55. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-09-03 13:49 |只看该作者
求高手解答啦!!!!!!!!!!!!!!1

论坛徽章:
0
3 [报告]
发表于 2011-09-03 16:25 |只看该作者
回复 3# hbshengtong


    问题看不懂还是程序看不懂?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2011-09-03 17:20 |只看该作者
下面那段程序是网上拉的。。。
求教如何加几条语句使得在任何时候都可以通过按任意见退出程序。。。
finalmiracleday 发表于 2011-09-03 13:14



    把 read /dev/audio 操作單獨放在一個綫程或進程中,然後在主進程/綫程中讀取用戶的輸入。若是用戶輸入了,就退出。

论坛徽章:
0
5 [报告]
发表于 2011-09-03 21:27 |只看该作者
可以把按键事件添加一个flag标志,初始化flag=0,有按键事件的时候flag=1,当flag=1的时候结束程序

论坛徽章:
0
6 [报告]
发表于 2011-09-03 21:51 |只看该作者
本帖最后由 finalmiracleday 于 2011-09-03 21:52 编辑
把 read /dev/audio 操作單獨放在一個綫程或進程中,然後在主進程/綫程中讀取用戶的輸入。若是用 ...
MMMIX 发表于 2011-09-03 17:20



    这个想法不错,去试试~~

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2011-09-04 00:17 |只看该作者
可以把按键事件添加一个flag标志,初始化flag=0,有按键事件的时候flag=1,当flag=1的时候结束程序
pre-linux 发表于 2011-09-03 21:27


你說的這個「按鍵事件」誰來通知給進程?如何通知?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP