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