2010-09-24 2 views
2

Je prévois d'écrire un programme qui appelle cdrecord. (Je suis un débutant, un débutant essayant de "gratter une démangeaison") Le programme serait écrit en C++. J'ai identifié que je dois être capable de lancer cdrecord pour que cela fonctionne. Cdrecord est écrit en C. Toutefois, la documentation sur son utilisation provient de la ligne de commande. Le code source inclut une fonction principale qui alimente l'application de ligne de commande, qui est la même que le code que je veux que cdrecord fasse.Utilisation d'un programme en tant que bibliothèque contenant la fonction principale

Je me demande si je dois:

  1. principal changement à un autre nom, puis d'inclure le fichier source et l'appeler quand je dois.
  2. Appelez le programme compilé à l'aide de la commande system().
  3. Autre chose. L'utilisation de system() vous permettra de ne pas vous soucier du code de cdrecord.

Répondre

2

system() est généralement une bonne façon d'y aller, faites juste attention de ne pas injecter des valeurs arbitraires non fiables dans la chaîne que vous exécutez. Par exemple, si vous disposez d'une interface Web dont l'option padsize est définie par défaut sur 0 et que quelqu'un tape un nombre autre que "0; rm -rf *;", assurez-vous de ne pas appeler "cdrecord padsize=0; rm -rf *; ...". L'autre chose avec le système est qu'il peut être plus lent de démarrer un deuxième processus distinct - cela peut être important si vous exécutez ce programme des centaines de fois et chaque fois qu'il n'a que quelques millisecondes de travail à faire, mais Dans votre cas, le temps de lancement est réduit par le temps d'exécution probable de cdrecord.

2

Personnellement, je n'inclurais le code dans mon propre programme que si j'avais des problèmes très urgents qui m'obligent à l'inclure. Je pense que system() est la solution.

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

1) Est-il une raison particulière que vous préférez inclure dans votre propre code, plutôt que de simplement l'utiliser comme il est?

2) Avez-vous le droit de modifier le code et de l'inclure dans votre propre programme?

+0

Merci. J'étais surtout préoccupé par le fait que le système créerait un mauvais code. – Portablejim

+0

Nah. Dans ce cas, j'irais avec 'system()'. – Sagar

Questions connexes