leggi questo: http://www.lilik.it/~mirko/gapil/gapilsu42.html

prova così:

char *val[] = {"3", "\0"};

/* poi */

execv("percorso/file_eseguibile", val);

/* */

p.s. per compilare ed assegnare un nome non standard all'eseguibile:

gcc nomesorgente.c -o nomeeseguibile.exe