On 3/7/07, Prasanta Sadhukhan <Prasanta.Sadhukhan@xxxxxxx> wrote:
Steve Graegert wrote: > On 3/7/07, Prasanta Sadhukhan <Prasanta.Sadhukhan@xxxxxxx> wrote: > >> Hi, >> >> When I tried the following program >> void test4() >> { >> printf("doing execv\n"); >> if(execv("/bin/ls", "-l") == -1) >> printf("exec failed with errno %d\n", errno); >> else >> printf("exec succeed\n"); >> } > > > Prasanta, > > A NULL terminated array of arguments must be passed to execv(2) as the > prototype indicates: int execv(const char *path, char *const argv[]); > > For example: > > #include <unistd.h> > > char *cmd[] = { "ls", "-l", NULL }; > int result = execv ("/bin/ls", cmd); > > An error of EFAULT usually means that an argument points to an illegal > address. > > \Steve Thanks Steve... If I have a string like this sprintf(str, "-Xparameter:%d %s, value, command"), how to make it NULL terminated. Is this declaration char *cmd[] = {str, NULL} and invocation execv(path, cmd) correct?
If you mean sprintf(str, "-Xparameter:%d %s", value, command); your declaration and invocation of char *cmd[] = {str, NULL} execv(path, cmd); should be OK. \Steve -- Steve Grägert <steve@xxxxxxxxxxxx> Jabber xmpp://graegerts@xxxxxxxxxx Internet http://eth0.graegert.com, http://blog.graegert.com - To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html