Есть программа, которая проверяет, есть ли ~/sample, и если нет, то создает такой каталог, иначе сообщает, что это каталог или не каталог
~/programming/sample $ cat sample.cpp
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<pwd.h>
#include<string.h>
#include<stdio.h>
int main()
{
struct passwd *user;
struct stat *dir;
char *name = "";
user = getpwuid( getuid());
name = user->pw_dir;
strcat( name, "/sample");
if ( stat( name, dir) == -1)
{
printf( "folder %s doesn't exists, creating\n", name);
mkdir( name, 0755);
}
else
{
if ((dir->st_mode & S_IFDIR) != S_IFDIR)
{
printf( "%s exists and is not a folder\n", name);
}
else
{
printf( "%s exists and is folder", name);
}
}
}
~/programming/sample $ g++ sample.cpp -o sample
~/programming/sample $ ./sample
folder /home/user/sample doesn't exists, creating
~/programming/sample $ ./sample
Ошибка сегментирования
~/programming/sample $ rmdir ../../sample/
~/programming/sample $ touch ../../sample
~/programming/sample $ ./sample
Ошибка сегментирования
Объясните пожалуйста, почему происходит сегфолт?
Ответ на:
комментарий
от Reset
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум stat() (2003)
- Форум Ошибка сегментирования. Рекурсивный обход каталогов (2017)
- Форум C память (2013)
- Форум Segmentation fault core dumped (2022)
- Форум Не работает велосипед pwd на сях (2015)
- Форум FUSE (2013)
- Форум Семафоры (2005)
- Форум Не могу поймать fstat (2004)
- Форум помогите отыскать ошибку в простом коде на си (2015)
- Форум Система контроля действия пользователя (2015)