最近做毕业设计,使用到madplay,但是用madplay总会在屏幕上打印出播放音频的信息,这里有一种办法来去除这种bug。
Linux常见特殊符号
Linux
1. > 重定向输出符号。
2. >>重定向输出符号,但有追加的功能。
3. 2>错误重定向输出符号,覆盖原文件内容。
4. 2>>错误重定向输出符号,有文件内容追加的功能。
5. * 匹配任意字符。
6. ?匹配任意一个字符。
7. | 管道符号。
8. & 后台进程符。
9. &&l逻辑与符号。用法:命令1 && 命令2 表示如果命令1执行成功,继续执行命令2。
10.|| 逻辑或符号。用法:命令1 | | 命令2 表示如果命令1执行成功,不执行命令2;但如果命令1执行失败才执行命令2。
11.逻辑非符号。排除指定范围。
12.[x-y]表示一定的范围。
13.# 注释符。
14.” ” 双引号表示把它所包含的内容作为普通字符,但` ` $ \ ‘ ‘ 几个符号除外。
15.’ ’ 单引号表示把它所包含的内容作为普通的字符,无特殊例外。
16.$ 变量符。
17.\ 转义字符。
18.’ ’倒引号,表示它所包含的内容。
19.;命令分隔符。
20.< 重定向输入符。
21.()表示整体执行命令。
以前写过一个测试网络的代码,先参考一下:
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <linux/fb.h>
#include <unistd.h>
#include <termios.h>
#include <string.h>
#include <linux/kd.h>
#include <sys/ioctl.h>
#include<sys/stat.h>
#define CMD_IFCONFIG "ifconfig eth0 192.168.1.138 1>./net 2>./net"
#define CMD_PING "ping -c 2 192.168.1.1 1>./net 2>./net"
#define CMD_GREP "cat ./net | grep '2 packets transmitted, 2 packets received, 0% packet loss' 1>./net_info 2>./net_info"
#define ERRO_INFO "./net_info"
#define CMD_NET_DOWN "ifconfig eth0 down"
#define CMD_NET_UP "ifconfig eth0 up"
int main(void)
{
struct stat stat_buf;
system(CMD_IFCONFIG);
printf("CMD_IFCONFIG OK!\n\r");
system(CMD_PING);
printf("CMD_PING OK!\n\r");
system(CMD_GREP);
printf("CMD_GREP OK!\n\r");
if (stat(ERRO_INFO,&stat_buf)<0)
{
printf("Failed:buf<0\n\r");
return -1;
}
if (stat_buf.st_size <= 0)
{
printf("Failed:size<=0\n\r");
return -1;
}
printf("net is ok!\n\r");
return 0;
}
其中, “ping -c 2 192.168.1.1 1>./net 2>./net” 意思是,ping 路由器两次,成功(1>./net)则重定向输出到./net文件中(不存在则自动创建),失败(2>./net)则重定向输出到./net 文件中。
同样madplay在代码中可以这么用:
system("madplay music.mp3 1>./tmp 2>./tmp");
在熟悉madplay的情况下,可以直接这么来做(推荐):
system("madplay -Q music.mp3");