system("cross_match -arguments > /dev/null"); # dumps garbage anyway `cross_match`; # dumps garbage anyway system("cross_match -arguments 2>&1"); # won't work because cross_match manages to interpret 2>&1 as an invalid argument system("cross_match -arguments > log.txt 2>&1"); # won't work because of "ambiguous redirect" open("cross_match -arguments |"); #won't work because cross_match manages to interpret | as an invalid argument open2(\*REALIN, \*REALOUT, "cross_match -arguments"); # crashes, says arguments have to be passed on the command line