【发布时间】:2012-02-24 11:40:34
【问题描述】:
我正在尝试编写一个程序,该程序有时需要通过系统调用外部应用程序并等待其他可执行文件完成。我非常想要 python subprocess.call(...) 方法的 C++ 版本。我知道 system() 可以通过 shell 调用命令,但我不知道它是否能够阻塞直到命令终止。有人知道这样做的正确方法吗?
我是为 Linux 系统编写的,但如果可能的话,我希望它是可移植的。无论如何,任何帮助将不胜感激。
【问题讨论】:
我正在尝试编写一个程序,该程序有时需要通过系统调用外部应用程序并等待其他可执行文件完成。我非常想要 python subprocess.call(...) 方法的 C++ 版本。我知道 system() 可以通过 shell 调用命令,但我不知道它是否能够阻塞直到命令终止。有人知道这样做的正确方法吗?
我是为 Linux 系统编写的,但如果可能的话,我希望它是可移植的。无论如何,任何帮助将不胜感激。
【问题讨论】:
system() 等待命令完成:
http://linux.die.net/man/3/system
system() 通过调用 /bin/sh -c 执行 command 中指定的命令 命令,并在命令完成后返回。期间 执行该命令,SIGCHLD 将被阻塞,而 SIGINT 和 SIGQUIT 将被忽略。
【讨论】:
popen 命令应该很适合你:http://linux.die.net/man/3/popen
【讨论】: