Correct way to call execve?
Chad David
davidc at issci.ca
Mon Jul 21 10:42:10 PDT 2003
On Mon, Jul 21, 2003 at 01:23:21PM -0400, Leo Bicknell wrote:
> In a message written on Mon, Jul 21, 2003 at 11:15:38AM -0600, Chad David wrote:
> > Try cc -Wwrite-strings -Wcast-qual exec.c.
> >
> > You cannot simply cast away a const.
>
> Grumble, will someone give me all the warnings you want turned on so I
> can work around all of them? :)
>
> % cat exec.c
>
> #include <unistd.h>
> #include <paths.h>
> #include <string.h>
>
> int main(int argc, char *const argv[], char *const envp[]) {
> char *const execargv[] = { strdup(_PATH_BSHELL), strdup(NULL) };
>
> execve(_PATH_BSHELL,execargv,envp);
>
> return 0;
> }
> % cc -Wwrite-strings -Wcast-qual exec.c
> % cc -Wall exec.c
You can/should probably skip the strdup(NULL), or ensure V in malloc.conf :).
I assumed it was obvious that you could copy the data, but I believe
the intent of the original question was to find an alternative. As
far as I know there isn't one. A const is a const, except in C++.
--
Chad David davidc at issci.ca
www.FreeBSD.org davidc at freebsd.org
ISSci Inc. Calgary, Alberta Canada
More information about the freebsd-hackers
mailing list