我将在 Linux-arm 嵌入式设备上运行常规程序。
我尝试使用函数在我的程序system(cmd)
中运行 linux shell 。cmd
cmd
将是一个音频播放命令"aplay -N sound.wav"
如果cmd
是上述情况,我的linux设备将不会发出声音,程序的进程将处于T
状态(跟踪或停止)。
如果 cmd 设置为"aplay -N sound.wav &"
,则一切正常。
我的问题是造成这种情况的原因,为什么"&"
在这种情况下背景参数很重要。
谢谢。
我想我明白了为什么。我在'&'模式下运行我的qt程序,所以我猜在任何系统(cmd)中,cmd必须包含'&'。
我尝试在没有“&”的情况下运行我的 qt 程序,之后,没有“&”的 cmd 可以正常工作。
所以我猜原因是你不能从后台父进程运行 fork 前台子进程。
如果 aplay 允许 STDIN 充当控制器,则在前台运行它可能无法提供它所期望的控制输入。后台可能会分离 STDIN 并使 aplay 恢复为默认的“播放一次直到完成”模式。你有 aplay 的手册页吗?