Ciao!!!

Non riesco a capire perchè se provo a lanciare passwd, con execve non ottengo niente??? Nemmeno errori...
Centra qualche cosa il bit setuid??
codice:
 

#include <stdio.h>
#include <string.h>
#include <unistd.h>


int main () { 

	if ( !fork()) {
		if ( execve("/usr/bin/passwd", NULL, NULL) == -1) { 
			perror("EXECVE ERROR"); 
		}	 
	} 
	else 
	wait((int *)0); 
	return 0; 
}