This item was added on: 2003/03/07
How do I determine the current working directory?
How do I change the current working directory?
How do I obtain file information, like size, creation date, etc?
How do I create and remove a directory?
How do I read all filenames from a directory?
How do I determine the current working directory?
#include <sys/param.h>
#include <unistd.h>
#include <stdio.h>
int main(void)
{
char buf[MAXPATHLEN];
if( getcwd( buf, MAXPATHLEN ) )
{
printf( "%s\n", buf );
}
return 0;
}
How do I change the current working directory?
#include <unistd.h>
if( chdir( "/new/cwd" ) != 0 )
{
}
How do I obtain file information, like size, creation date, etc?Use stat( )
, or use lstat()
for symbolic links and fstat()
for open file descriptors.
int stat(const char *file_name, struct stat *buf);
int fstat(int filedes, struct stat *buf);
int lstat(const char *file_name, struct stat *buf);
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
struct stat sb;
if (stat("filename", &sb) == 0)
{
printf("Size: %d\n", sb.st_size);
printf("Last access: %s\n", ctime(&sb.st_atime));
}
The st_mode member contains information about the file type and access permissions.
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
struct stat s;
int i;
int modes[] = {
S_IRUSR, S_IWUSR, S_IXUSR,
S_IRGRP, S_IWGRP, S_IXGRP,
S_IROTH, S_IWOTH, S_IXOTH
};
if (stat("filename", &s) == 0)
{
for (i = 0; i < 9; ++i)
{
if (modes[i] & s.st_mode)
{
putchar("rwx"[i % 3]);
}
else
{
putchar('-');
}
}
}
How do I create and remove a directory?
#include <sys/types.h>
#include <sys/stat.h>
if (mkdir("foo", S_IRWXU) != 0)
{
}
if (rmdir("foo") != 0)
{
}
How do I read all filenames from a directory?
#include <dirent.h>
#include <stdio.h>
DIR *d;
struct dirent *dir;
d = opendir(".");
if (d)
{
while ((dir = readdir(d)))
{
printf("%s\n", dir->d_name);
}
closedir(d);
}
Credit vVv