• 大小: 6KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-07-10
  • 语言: 其他
  • 标签:

资源简介

本资源可以实现应用madplay在linux环境下应用双向链表实现MP3播放器制作,应用进程它可以实现歌曲上下切换,停止,继续

资源截图

代码片段和文件信息

/******************************************************
*******************************************************
 
********************物联网1403************************* 
****************MP3工程小队制作 *********************** 
******************************************************* 

******************************************************* 
*******************************************************/ 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

#include                              
#include                     

pid_t fd;
char *p_addr;
int flag=2;
pid_t pid;
int play_flag=1;
struct song
{
char songname[64];
struct song *prev;
struct song *next;
};

struct song *nextsong;
struct song *prevsong;

struct song *creat_list(void)
{
FILE *fd;
size_t size;
size_t len;
char *line=NULL;
struct song *head;
struct song *p1;
struct song *p2;
system(“ls /home/Keshe/song > song_list“);
fd=fopen(“song_list““r“);
p1=(struct song *)malloc(sizeof(struct song));

//

size=getline(&line&lenfd);
strncpy(p1->songnamelinestrlen(line));
head=p1;
while((size=getline(&line&lenfd))!=-1)
{
p2=p1;
p1=(struct song *)malloc(sizeof(struct song));
strncpy(p1->songnamelinestrlen(line));
p2->next=p1;
p1->prev=p2;
}
p1->next=head;
head->prev=p1;
p1=NULL;
p2=NULL;
system(“rm -rf song_list“);
return head;

}

void sig_handler(int signo)
{
char *p;
int len;
char my_song[64]=“/home/Keshe/song/“;
if(signo==SIGCHLD&&flag!=2)
{
if(flag==0)
{
printf(“The mp3 player is stop!\n“);
}
else if(flag==1)
{
printf(“The mp3 player is continue!\n“);
}
else if(flag==3)
{
printf(“Playing next song!\n“);
}
else if(flag==4)
{
printf(“Playing prev song!\n“);
}
else 
{
printf(“Exit the system!\n“);
}

flag=2;
}
else if(flag==2)
{
printf(“NEXT SONG!\n“);
pid=fork();
if(pid<0)
{
perror(“ERROR!“);
}
else if(pid==0)
{

strcat(my_songnextsong->songname);
p=my_song;
len=strlen(p);
my_song[len-1]=‘\0‘;
printf(“PLAYING :%s\n“nextsong->songname);
execlp(“madplay““madplay““-q“my_songNULL);
}
else
{

prevsong=nextsong->prev;
nextsong=nextsong->next;
printf(“THE NEXT SONG IS :%s\n“nextsong->songname);
}
}
}

void play(struct song *currentsong)
{
int len;
char *p;
char *c_addr;
char my_song[64]=“/home/Keshe/song/“;

pid=fork();
if(pid==-1)
{
perror(“fork“);
exit(1);
}
else if(pid==0)
{
strcat(my_songcurrentsong->songname);
p=my_song;
len=strlen(p);

my_song[len-1]=‘\0‘;
printf(“PLAYING :%s\n“currentsong->songname);
execlp(“madplay““madplay““-q“my_songNULL);
// perror(“Music play!“);
}
else
{
nextsong=currentsong->next;
prevsong=currentsong->prev;
// if(pid==wait(NULL))
// currentsong=currentsong->n

评论

共有 条评论

相关资源