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!news.ysu.edu!news.cps.udayton.edu!news.engr.udayton.edu!blackbird.afit.af.mil!zombie.ncsc.mil!news.mathworks.com!newsfeed.internetmci.com!howland.reston.ans.net!Germany.EU.net!Dortmund.Germany.EU.net!interface-business.de!usenet
From: j@ida.interface-business.de (J Wunsch)
Newsgroups: comp.unix.misc,comp.unix.bsd.misc
Subject: Re: How to delete files within C programs
Date: 1 May 1996 17:52:33 GMT
Organization: interface business GmbH Dresden
Lines: 30
Message-ID: <4m88d1$3bp@innocence.interface-business.de>
References: <Oum-El-Kheir.Benkahla-3004961724540001@mac-ugm-3.imag.fr>
Reply-To: joerg_wunsch@interface-business.de (Joerg Wunsch)
NNTP-Posting-Host: ida.interface-business.de
X-Newsreader: knews 0.9.6
Xref: euryale.cc.adfa.oz.au comp.unix.misc:22324 comp.unix.bsd.misc:882
Oum-El-Kheir.Benkahla@imag.fr (Oum-El-Kheir Benkahla) writes:
> I am searching a way for deleting files within C programs. I tried the
>exec command for executing rm (execlp("rm", "rm", "myfile", 0), which
>indeed deletes myfile but the problem here is that the exec command
>doesn't return on success.
Ouch! :-)
Btw., you forgot to specify ``-f'' to rm(1), it will otherwise hang
indefinitely when you try removing a file you don't have write
permissions for (since it asks back then and expects a response from
stdin).
It's as simple as:
if (unlink(myfile) == -1) {
perror("Couldn't unlink");
}
Note that you can't specify to _delete_ a file in Unix, all you can do
is unlinking a directory entry. The file will be deleted if the last
reference to it has been removed, i.e. it doesn't have any directory
entries, nor is it considered ``active'' in any way (held open by a
process, or being currently executed).
--
J"org Wunsch Unix support engineer
joerg_wunsch@interface-business.de http://www.interface-business.de/~j