lundi, janvier 26, 2009

Différences entre exec et system

Je n'aime pas trop la notation qui utilise les `` pour lancer une commande système parce que:
  • c'est facile de passer à côté et de les confondre avec un ' normal
  • parce que pour un novice c'est difficile à comprendre
  • etc. ...
Jusqu'à présent j'utilisais exec mais en voulant l'utiliser dans une boucle je me suis rendu compte que mon programme ruby s'arrêtait juste après l'exécution (sous windows mais je pense que c'est pareil sur d'autres os).
Dir["folder/foo_*.txt"].each do |path|
    cmd = "echo #{path}"
    exec(cmd)
end
Si on veut que le programme ruby ne soit pas interompu (la plupart du temps) il faut en fait utiliser system.
Dir["folder/foo_*.txt"].each do |path|
    cmd = "echo #{path}"
    system(cmd)
end