【问题标题】:Stop mpg123 after playing the file completely in automatically播放完文件后自动停止 mpg123
【发布时间】:2016-02-12 11:47:44
【问题描述】:

首先我通过 FIFO 远程使用 mpg123 来实现暂停功能,但现在我想在文件自动播放时关闭 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 播放器进程将继续存在

【问题讨论】:

    标签: c linux fork


    【解决方案1】:

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

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

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

    【讨论】:

    • 我明白了你的观点并编辑了问题,我怀疑类似的命令是否可用于第二个命令,以及我的确切问题,因为 mpg123 播放器附加到子进程中的 fifo,现在来自父进程提供了命令,那么我们在父进程中如何获取播放器的状态?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 2016-10-07
    相关资源
    最近更新 更多