使用system()函数在后台播放声音

时间:2015-05-30 20:05:04

标签: c++

我在Ubuntu中制作了一个游戏,我使用.wav文件在后台使用此功能播放声音: -

system("canebrake-gtk-play -f file_path")

但是当声音播放时,整个游戏停止意味着动画停止,但声音完成后,游戏会再次正常启动....但这对我来说是一个混乱并且显示出非常糟糕的影响,所以我想从我的游戏中删除这个令人毛骨悚然的东西...所以任何帮助都会很明显.. THANKX

2 个答案:

答案 0 :(得分:1)

system("canebrake-gtk-play -f file_path")

这将从您的代码同步执行。这就是为什么你的程序在执行时被阻止的原因。

您可以考虑使用fork()exec()执行该操作,以便在后台执行。

提供单独的线程(而不是进程)是另一种选择。

答案 1 :(得分:1)

这是一种快速而又肮脏的方式。

pid_t pid = fork();

if (pid == 0) {
   system("canebrake-gtk-play -f file_path");
   exit(0);
}

您也可以使用线程而不是其他进程。