一般来说,我建议在考虑使用调用之前,最好使用库函数,或者编写提供所需功能的代码
system()
执行另一个程序。
如果有一个合适的API(也称为一组库函数)直接提供所需的功能,那么如果您的程序使用该API,它可能会更可靠。显然,这假设库函数正常工作,并且有足够的文档可以正确使用它们。这里的风险与错误或文档记录不良的库函数以及这些库的作者在解决问题时的响应性有关。
如果没有合适的API可用,那么下一个选项是自己实现所需的功能(使用您可以访问的代码和库),然后-假设您做了合理的工作-然后,再次,您的程序工作得相当好。这里的风险在你的控制之下——你对你要做的事情理解程度如何,你设计和实现所需功能的能力有多强(例如,工作超出你的理解有多远?),和你投入的努力把事情做好。
作为最后手段,您可以使用
系统()
呼叫这里的问题是
系统()
是正式的实现定义,因此在主机系统、编译器及其标准库之间可能有所不同。第二部分是必须处理使用
系统()
调用-例如,如果第三方程序的作者引入了新的功能,它实际上可以改变该程序的运行方式-例如,添加GUI、更改命令行选项等。虽然库函数可以以中断程序的方式更改,但使用
系统()
通话很可能会随着时间的推移而改变,从而中断您的节目。
我不是建议你永远不要使用
系统()
. 但是,如果其他方法令人望而却步,而不是您需要的第一个工具,请将其视为一种选择。