Danny Braniss wrote:
--Rgf3q3z9SdmXC6oT
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Tue, Jun 12, 2007 at 10:55:18PM -0700, Garrett Cooper wrote:
Another simple question (I hope):
   Is there any reason why shell commands should be used in place of a=20
C command (in this case chmod via vsystem instead of the chmod(2)=20
function)? It seems like the fork / exec would be more expensive with=20
the shell command, but any area where code could be optimized is more=20
than welcome I would think.
There often are reasons to prefer using shell commands to C.

There typically exist many tradeoffs involved in evaluating one over the
other, and "machine efficiency" is not always the highest goal.  (For
example, it may be better to reduce complexity in favor of having a
simpler structure that is easier for people to understand and maintain
with confidence that the changes they make have the desired results.
This is, of course, not to try to claim that shell scripts are
inherently easier to understand than C code; that would be a silly
stance to take.)

I commend to your attention Geoff Collyer and Henry Spencer's "C News"
(a successor to Rick Adams' "B News") implementation, a great deal of
which was written as shell scripts (ca. 1988 or so).

(Yes, I realize that that was almost 20 years ago, and that it
didn't involve FreeBSD per se.  Ignoring the lessons of history is
rather short-sighted and foolish:  despite using shell scripts for
so much of the "code," the machine I was then running went from
being extremely busy all the time to having a couple of bursts of
activity per day for about an hour each time -- with more news
flowing with C News vs. B News.)


read the question again, though it is not absolutely clear/correct, the question
was:
        chmod(path, mode)
vs
        system("chmod ...")

and not wheather to write a program or a shell script.

danny


Sorry -- actually I meant that (along similar lines), there was a program with the following lines:

vsystem("/bin/chmod +x %s", filename);

and I replaced it with:

chmod(filename, (mode_t) ( S_IXUSR | S_IXGRP | S_IXOTH ));

Probably won't yield much gain overall, but every drop counts and there are quite a few iterations performed in the pkg_* programs, in particular dealing with X.org.

Next step, eliminating the linked list structure in favor or red-black trees, maybe.

-Garrett
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to