Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 7

Программа в Linux

12.05.2011, 00:25. Показов 958. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В программе нужно сравнить файлы находящиеся в двух каталогах. С мелкими каталогами она работает. Но если ввести каталог /etc глючит.


#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <dirent.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <wait.h>
#include <pthread.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>

void * thread_func(void *buf44);
int count=1;


main(int argc, char ** argv)

{
char outfile3[256]={'\0'},outfile4[256]={'\0'},outfile5[256]={'\0'},*outfile6;
char outf[256]={'\0'};
int result,result1,num1;
int n;
int interray;
struct dirent *entry1;
DIR * dir1;
DIR * dir2;
pthread_t thread1;
char buff[256]={'\0'};
struct dirent *entry2;
if (argc < 4)
{
fprintf (stderr, "%s Too few arguments\n",argv[1]);
return 1;
}
dir1 = opendir (argv[1]);
if (dir1 == NULL)
{
fprintf (stderr, "%s opendir() error\n",argv[1]);
return 1;
}

n=atoi(argv[3]);

while ((entry1 = readdir (dir1)) != NULL)
{

dir2 = opendir (argv[2]);
if (dir2 == NULL)
{
printf ("%s opendir() error\n",argv[2]);
}
else
{

while ((entry2 = readdir (dir2))!=NULL)
{
outfile6=(char*)malloc(256);
sprintf(outf,"%s/%s",argv[1],entry1->d_name);
sprintf(outfile3,"%s/%c",outf,',');
sprintf(outfile4,"%s/%s",outfile3,argv[2]);

sprintf(outfile5,"%s/%s",outfile4,entry2->d_name);
sprintf(outfile6,"%s/%c",outfile5,',');

if(entry1->d_name[0]!='.')
while(1)
{
if(count<=n)
{
pthread_create(&thread1,NULL,thread_func ,outfile6);
count++;

break;
}
}

}

rewinddir (dir2);

}

closedir(dir2);

}
closedir(dir1);

pthread_join(thread1,NULL);

return 0;
}
void * thread_func(void *buff44) // void func(char *outfile1,char *buff)
{
struct stat buf1;
struct stat buf2;
char buff1[100]={'\0'};
strcpy(buff1,buff44);
int j=0,i=0;
int fd1,fd2;
char outfile1[256]={'\0'};
char ch1[1],ch2[1];
long k;

char outfile2[256]={'\0'};

while(buff1[j+1]!=',')
{
outfile1[i]=buff1[j];
i++;
j++;

}
outfile1[i]='\0';
j++;
j++;
j++;
i=0;
while(buff1[j+1]!=',')
{
outfile2[i]=buff1[j];
i++;
j++;
}
outfile2[i]='\0';


fd1=open (outfile1, O_RDONLY);
fstat(fd1, &buf1);
if((long)buf1.st_mode>30000)
{
if (fd1 == -1)
{
printf ("Cannot open file1 %s\n",outfile1);
puts(outfile1);
}
fd2=open (outfile2, O_RDONLY);
if(fd2 == -1)
{
printf("Cannot open file %s\n",outfile2);

}
else
{

fstat( fd2, &buf2);
if((long)buf2.st_mode>30000)
{
k=1;
while ((read (fd1, ch1, 1)>0)&&(read(fd2,ch2,1)>0))
{
if(ch1[0]==ch2[0])
{
k++;
}
else {break;}
}
if((buf1.st_size==buf2.st_size)&&((long int)buf1.st_size==(long int)(k-1)))
{
printf("ID: %u file1: %s file2: %s sravnili bait: %ld equal\n",(unsigned int)pthread_self(),outfile1,outfile2,k-1);
}
else
{
printf("ID: %u file1: %s file2: %s sravnili bait: %ld not equal\n",(unsigned int)pthread_self(),outfile1,outfile2,k);
}
lseek (fd1, 0, SEEK_SET);
lseek (fd2, 0, SEEK_SET);
}
close(fd2);

}
}


close(fd1);
count--;
return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.05.2011, 00:25
Ответы с готовыми решениями:

Программа в VS работает, в Linux не работает
Задание следующее, из текстового файла вывести самые редкие числа, самые частые, кол-во разных, вывести числа из интервала и удалить...

Компиляция Builder'овского проекта под Linux, (и освоение Linux после Builder'a)
Есть не очень маленький проект, написанный в винде на Builder'e. 1) Сложно ли его будет отредактировать что бы откомпилировать в...

Программа на СИ (можно и на Linux)
(terminal_select) TCP клиент (на языке СИ)\ TCP клиент, ориентированный на построчный ввод-вывод текста. Задача- дать...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.05.2011, 00:25
Помогаю со студенческими работами здесь

Программа не компилируется на Linux
Программа была написана на винде, но надо ее скомпилировать на линуксе. Помогите, просто очень срочно надо #include &lt;conio.h&gt; ...

Программа на С под Linux
1. Одержати наступну системну інформацію: • час в секундах, що пройшов з моменту завантаження системи; • число процесів, що працюють в...

Программа под Linux
На данный момент есть программа на C# wpf + wcf сервер (так же в планах sftp сервер) Програма на подобие рекламных банеров, воспроизводит...

Программа под Linux
Она у меня уже есть, написанная на C#, но как её написать под Linux - не знаю. Слышал, что можно Mono использовать. Может кто-нибудь...

Программа на С под Linux
Пpоцесс откpывает N файлов, pеально существующие на диске, либо вновь созданные. Разpаботать пpогpамму, демонстpиpующую динамику...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru