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