*BSD News Article 67405


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.rmit.EDU.AU!news.unimelb.EDU.AU!munnari.OZ.AU!news.ecn.uoknor.edu!paladin.american.edu!gatech!news.mathworks.com!fu-berlin.de!news.belwue.de!news.uni-stuttgart.de!news.rhrz.uni-bonn.de!saph2.physik.uni-bonn.de!juengst
From: juengst@saph1.physik.uni-bonn.de (Henry G. Juengst)
Newsgroups: comp.unix.misc,comp.unix.bsd.misc
Subject: Re: How to delete files within C programs
Date: 1 May 1996 20:13:16 GMT
Organization: Institut fuer Strahlen- und Kernphysik
Lines: 121
Sender: juengst@saph2.physik.uni-bonn.de (Henry G. Juengst)
Distribution: world
Message-ID: <4m8gks$ibu@news.rhrz.uni-bonn.de>
References: <Oum-El-Kheir.Benkahla-3004961724540001@mac-ugm-3.imag.fr> <4m5p3k$3nq@dfw-ixnews2.ix.netcom.com> <4m7sr3$rf9@news.rhrz.uni-bonn.de> <4m8330$ebv@news.inc.net>
Reply-To: juengst@saph1.physik.uni-bonn.de
NNTP-Posting-Host: saph1.physik.uni-bonn.de
Xref: euryale.cc.adfa.oz.au comp.unix.misc:22323 comp.unix.bsd.misc:881


In article <4m8330$ebv@news.inc.net>, nelson@cs.uwp.edu (Jeremy Nelson) writes:
>Topic originally under discussion:  How to remove a file under C in unix?
>
>Henry G. Juengst <juengst@saph1.physik.uni-bonn.de> wrote:
>>This might be a simple solution if you know the solution, but why should
>>a beginner know that the function to delete a file is not something like
>>'delete_file', but 'unlink' in the unix mud ? 
>
>* A beginner does not attempt to program without a good tutorial and 
>  reference book:  Such books would explain these functions reasonably;

Theoretical: yes. Obviously (not only in this case): no.

>
>Therefore:
>* A good book on ANSI C will have a reference to the function "remove",
>  which is mandated by standard C.

"Remove what?" would be the first question of a beginner. You might think
it is simple, but I have teached people more than 13 years and I can tell
you that nothing is simple if it is not clear.

>* A good book on programming in C under unix would mention "unlink".

Even a reference guide would mention it. But that does not mean it is
a good book. I think a good book would emphasize that C and unix are not
the best choice for beginners.

>* The original poster said "I want to know how to do what 'rm' does in C".
>  Almost without exception, if you do a 'man' on a simple system utility,

The first thing people try is 'help', not 'man'.

>  there will be cross-references to related and interesting C functions.  By
>  checking the man pages for those functions, within a few hits, you will

Some of the 'few hits' will be to learn what this '(2)' in 'unlink(2)'
means. I hope you see that it is not so simple as you think.

>  surely find what you are looking for.  The man page for 'rm' is no exception.
>
>
>rm(1)                     User Commands                     rm(1)
>
>NAME
>     rm, rmdir - remove files or directories
>
>SYNOPSIS
>     rm [-f] [-i] filename...
>
>     rm -r [-f] [-i] dirname...[filename...]
>
>     rmdir [-p] [-s] dirname...
>
>[....]
>
>SEE ALSO
>     rmdir(2), unlink(2), environ(5)
>
>
>Since the person wants to remove a file, i would assume they would realize
>that "rmdir" is probably not the right call:  Therefore, looking at "unlink"
>and "environ" would be in order.  (Of course, after looking at a few hundred
                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>man pages, a programmer realizes that C function calls typically fall under
 ~~~~~~~~~ No more comment.

>section 2 and 3 of the man pages.)
>
>
>unlink(2)                 System Calls                  unlink(2)
>
>NAME
>     unlink - remove directory entry
>
>SYNOPSIS
>     #include <unistd.h>
>
>     int unlink(const char *path);
>
>DESCRIPTION
>     unlink() removes the directory entry named by the path  name
>     pointed  to  by  path.  and decrements the link count of the
>     file referenced by the directory entry.  When all links to a
>     file have been removed and no process has the file open, the
>     space occupied by the file is freed and the file  ceases  to
>     exist.
>[....]
>
>Looks like we have a winner!
>
>
>
>>Same for 'sprintf'. This is not a function for fast sprinter. .-)
>
>All reasonably non-novice C programmers should be familiar with
>the presence and use of the sprintf() function.  If they are not, its time
>to go back and refer to your C tutorial book.  I dont think its unreasonable
>for someone to expect another C programmer to know about sprintf(). (IMO)

Are you sure? Have you seen the "solution" using the function of the
exec family? What makes you sure that most people know a C programmer
with enough experiences?

>
>The information is all there:  You just have to learn how to go find it.

This is a banality, but it is not always helpful.

>
>Jeremy Nelson

Henry

--
juengst@saph1.physik.uni-bonn.de         [131.220.161.1]  (Internet)
omni:.de.uni-bonn.physik.saph1::juengst                   (DECnet/OSI, phase V)
saph1::juengst                           [26.358]         (DECnet, phase IV)

Any opinions in this mail are my own.