c语言 - 为什么system(cmd)函数需要在Linux-arm中使用&背景参数设置命令字符串



我将在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将正常工作。

所以我想原因是您无法从后台父进程运行分叉前台子进程。

最新更新