自动播放完文件后停止mpg123

Stop mpg123 after playing the file completely in automatically

首先我使用 mpg123 远程使用 FIFO 实现暂停功能,但现在我想在文件自动播放时关闭 mpg123 播放器。

播放电流的代码是

pid p = fork();  
if (p<0)  
  return;  
else if (p==0)  
  execlp("mpg123", "mpg123", "-R", "--fifo", "aFifo", NULL);  
else  
  system("load test.mp3 > aFifo");

目前如果文件通过那么子进程播放 else if (p==0) 将留在那里并且 mpg123 播放器进程将继续存在

你的问题中没有 ?,但无论如何 你的代码看起来不对,因为 system 使用 forkexec 在引擎盖下。所以不是一个 fork 和一个 exec 你使用 fork 三次并使用 execv 两次。

在此处阅读如何运行处理:how to correctly use fork, exec, wait

在你 运行 以正确的方式处理后,你有 mpg123 的真实 pid, 所以你可以根据需要杀死它,或者暂停或其他你想要的。