-1

我将在 Linux-arm 嵌入式设备上运行常规程序。

我尝试使用函数在我的程序system(cmd)中运行 linux shell 。cmd

cmd将是一个音频播放命令"aplay -N sound.wav"

如果cmd是上述情况,我的linux设备将不会发出声音,程序的进程将处于T状态(跟踪或停止)。

如果 cmd 设置为"aplay -N sound.wav &",则一切正常。

我的问题是造成这种情况的原因,为什么"&"在这种情况下背景参数很重要。

谢谢。

4

2 回答 2

0

我想我明白了为什么。我在'&'模式下运行我的qt程序,所以我猜在任何系统(cmd)中,cmd必须包含'&'。

我尝试在没有“&”的情况下运行我的 qt 程序,之后,没有“&”的 cmd 可以正常工作。

所以我猜原因是你不能从后台父进程运行 fork 前台子进程。

于 2013-09-06T13:43:08.917 回答
0

如果 aplay 允许 STDIN 充当控制器,则在前台运行它可能无法提供它所期望的控制输入。后台可能会分离 STDIN 并使 aplay 恢复为默认的“播放一次直到完成”模式。你有 aplay 的手册页吗?

于 2013-09-06T03:54:57.203 回答