#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <fcntl.h>
int sig = 1;
void foo(int unused)
{
sig = 0;
}
main()
{
int fd;
int nam;
int len;
char fname[0x400];
(void)signal(SIGINT, foo);
(void)signal(SIGQUIT, foo);
for(nam = 0;sig;nam++)
{
len = sprintf(fname,"/tmp/file.%08x",nam);
if((fd = open(fname, O_RDWR|O_CREAT, 0644)) > 0)
{
if(write(fd, fname, len) == len)
(void)close(fd);
else
{
(void)close(fd);
break;
}
}
else
break;
}
puts("Done!");
return 0;
}
If you run this for a few seconds, you will find that the files
exist in /tmp as expected.
If you run this until it errors out from a full file-system, you
(may) find....
# rm -r /tmp <SEGFAULTS>
# rm /tmp/file.00000000 <waits forever and can't be killed>
# ls /tmp <waits forever and can't be killed>
# vi /tmp/file.00000000 <waits forever and can't be killed>
Converting the program to blindly remove each of the files fails
with ENOENT.
total: used: free: shared: buffers: cached:
Mem: 31244288 28897280 2347008 7794688 6348800 15355904
Swap: 133885952 0 133885952
MemTotal: 30512 kB
MemFree: 2292 kB
MemShared: 7612 kB
Buffers: 6200 kB
Cached: 14996 kB
SwapTotal: 130748 kB
SwapFree: 130748 kB
I used a 640 megabyte disk mounted ext2 on /tmp for this test.
Cheers,
Dick Johnson
***** FILE SYSTEM MODIFIED *****
Penguin : Linux version 2.1.113 on an i586 machine (66.15 BogoMips).
Warning : It's hard to remain at the trailing edge of technology.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html