|
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 7
|
|
Программа в Linux12.05.2011, 00:25. Показов 965. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|