|
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 7
|
|
Программа в Linux12.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
|
|
| 12.05.2011, 00:25 | |
|
Ответы с готовыми решениями:
0
Программа в VS работает, в Linux не работает Компиляция Builder'овского проекта под Linux, (и освоение Linux после Builder'a) Программа на СИ (можно и на Linux) |
| 12.05.2011, 00:25 | |
|
Помогаю со студенческими работами здесь
1
Программа не компилируется на Linux Программа на С под Linux Программа под Linux Программа под Linux Программа на С под Linux Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник 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 и. . .
|