Die Parameter sollten niemals als zusammenhängender String übergeben werden!
Das wurden sie auch nicht. Aber einer der Parameter im Array hatte leider ein "&" und der anschließende Aufruf der Shell (mit execv) führte genau zu dem Problem, mit dem ich so nicht gerechnet hatte. Seltsamerweise kann ich das nicht mehr nachstellen. cmd_params ist eben ein std::vector mit allen Parametern und vielleicht liegt genau da das übel. Ich wollte da sowieso noch mal ran, weil mir die aktuelle Lösung nicht gefällt.