mv'ing files from a C program

Conor P. Cahill cpcahil at virtech.uucp
Sat Nov 17 10:19:09 AEST 1990


In article <1990Nov15.183359.963 at ssd.kodak.com> weimer at ssd.kodak.com (Gary Weimer) writes:
>In article <1990Nov15.132952.11932 at virtech.uucp> cpcahil at virtech.UUCP (Conor P. Cahill) writes:
>>You don't have to use system(3), you can use fork/execl(2) (or one of it's 
>>family of functions) as follows:
>>
>>	if( fork() == 0 )
>>		execl("/bin/mv","mv",oldfile,newfile,(char *)0);
>>	else
>>		wait((int *)0);
>
>That's just about exactly what system(3) does. (i.e. you gain nothing for
>all the added code)

No.  System(3) does something like the following: (with error checking removed)

	if( fork() == 0)
		execl("/bin/sh", "-c", argstr, (char*)0);
	else
		wait(...

Note that it execs the shell, which then has to parse the string which
then gets exec'd from the shell.  Quite a bit different.

-- 
Conor P. Cahill            (703)430-9247        Virtual Technologies, Inc.,
uunet!virtech!cpcahil                           46030 Manekin Plaza, Suite 160
                                                Sterling, VA 22170 



More information about the Comp.unix.questions mailing list