使用程序作为包含main函数的库

时间:2010-09-24 14:36:46

标签: c++ call

我打算编写一个调用cdrecord的程序。 (我是初学者,初学者试图“划伤痒”)该程序将用C ++编写。我已经确定我需要能够运行cdrecord才能使其正常工作。

cdrecord是用C语言编写的。但是使用它的文档来自命令行。源代码包括一个为命令行应用程序提供支持的主函数,它与我将使用cdrecord执行的代码相同。

我想知道我是否应该:

  1. 将main更改为其他名称,然后包含源文件并在需要时调用它。
  2. 使用system()命令调用已编译的程序。
  3. 别的。

2 个答案:

答案 0 :(得分:2)

使用system()将不再担心cdrecord的代码。就个人而言,如果我有一些非常紧迫的问题需要我加入,我只会将代码包含在我自己的程序中。我认为system()是要走的路。

http://www.cplusplus.com/reference/clibrary/cstdlib/system/

1)是否有任何特殊原因你而不是将它包含在你自己的代码中,而不是仅仅使用它?

2)您是否有权更改代码并将其包含在您自己的程序中?

答案 1 :(得分:2)

system()通常是一个很好的方法,只要注意不要将任意不受信任的值注入你执行的字符串中。例如,如果您有一个网页前端,其中padize选项默认为0,而某人输入的数字不是“0; rm -rf *;”,请确保您最终不会调用“cdrecord padsize=0; rm -rf *; ...

系统的另一个原因就是它可以更慢地启动第二个不同的进程 - 如果你运行该程序数百次并且每次只有几毫秒的工作要做,这可能很重要,但是在你的情况下,启动的开销与可能的cdrecord运行时相比相形见绌。