1
|
Linux секция за начинаещи / Настройка на програми / Re: Bash script
|
-: Apr 25, 2018, 21:28
|
Да се създадат три процеса, базирани на C програма комуникиращи през обща памет с размер едно цяло число. Първият процес генерира числа от 1 до 100 и ги записва в общата памет. Останалите процеси четат от общата памет като формират съответно сумите на четните и нечетните числа и ги визуализират.` Почти е готова, но господина каза че трябва да използвам още един или два семафора който да използвам в PS() на процесите odd и even. Ако някой може да помогне. Аз се мъчих но не става това е процеса Even #include <stdio.h> #include "shared.h" #include <stdbool.h> int main() { int i,k,e,j; int *common; common=(int *)getmem(61560111); sem_t empty; empty = sem_init(61560111); sem_t full; full = sem_init(61560112); j=0; for(i=1;i<=100;i++) { *common=e; PS(full); if(e%2==0) { j+=e;
VS(empty); } for(k=0;k<1000;k++); } printf("\n"); printf("The sum of even numbers is: %d \n",j); printf("Even numbers process ended. \n"); }
Процес odd #include <stdio.h> #include "shared.h" #include <stdbool.h> int main() { int i,f,s,k,a; int sum; int *common; common=(int *)getmem(61560111); sem_t empty; empty = sem_init(61560111); sem_t full; full = sem_init(61560112); s=0; for(i=1;i<=100;i++) { a=*common; PS(full); if(a%2!=0) {
s+=a; } //printf("decc %d \n", a); VS(empty); for(k=0;k<1000;k++); } printf("The sum of odd numbers is: %d \n",s); printf("Odd numbers process end. \n");
}
А това е процеса init където се инициализира семафорите. #include <stdio.h> #include "shared.h" int main() { int *common; common = (int *)getmem(61560111); *common = 0; sem_t empty; empty = sem_init(61560111); sem_set(empty,1); sem_t full; full = sem_init(61560112); sem_set(full,0); printf("The initial %d \n", *common); }
|
|
|
3
|
Linux секция за начинаещи / Настройка на програми / Re: Bash script
|
-: Apr 03, 2018, 20:59
|
Аз го оправих това, но сега имам проблем с тази задача: Да се създадат три процеса, базирани на C програма комуникиращи през обща памет с размер едно цяло число. Първият процес генерира числа от 1 до 100 и ги записва в общата памет. Останалите процеси четат от общата памет като формират съответно сумите на четните и нечетните числа и ги визуализират.
Не знам как се работи с тази обща памет, изобщо тази задача ми е мъгла, ако някой може да помогне
|
|
|
4
|
Linux секция за начинаещи / Настройка на програми / Re: Bash script
|
-: Apr 03, 2018, 18:07
|
Пробвах го и тръгна на другият комп, явно нещо от мойта среда е. Искам да попитам дали някой знае как трябва да се направи тази задача: Да се създадат три процеса, базирани на C програма комуникиращи през обща памет с размер едно цяло число. Първият процес генерира числа от 1 до 100 и ги записва в общата памет. Останалите процеси четат от общата памет като формират съответно сумите на четните и нечетните числа и ги визуализират.
|
|
|
6
|
Linux секция за начинаещи / Настройка на програми / Re: Bash script
|
-: Apr 02, 2018, 21:13
|
не става утре ще го пробвам на друг комп щото аз мисля че това е от това, че съм със stackware. Не не съм го писал писал на windows даже създавам нов скрипт с едно echo вътре и като го пусна самостоятелно работи, но като го пробвам да го пусна от скрипта ми изписва zad1.sh ./ff.sh bin/bash: bad interpreter: No such file or directory. където zad1.sh ми е скрипта с менюто, а ff.sh ми е скрипта с echo които изкам да ми изведе
|
|
|
7
|
Linux секция за начинаещи / Настройка на програми / Re: Bash script
|
-: Apr 02, 2018, 20:56
|
3) echo -n "Vavedete imeto na faila:" read filename3 if [ -d $filename3 ]; then echo "Tova e direktoria!" else if [[ $filename3 == *.с ]]; then programname="${filename3%.*}" gcc -o $programname $filename3 &> "error.log" else echo "Faila ne e programa na С." fi fi;; 4) echo -n "Vavedete imeto na faila:" read filename4 if [[ -x $filename4 && $filename4 == *.sh ]]; then ./$filename4 else echo "Faila ne e izpalnim:" fi;; *) echo "Opitaite otnovo!";; esac
Аз така правя натискам 3 и компилирам някакъв .с проект и ако има грешки ги записва в error.log и после натискам 4 и избирам някакъв друг .sh файл и него пускам. Не трябва ли да е така. Защото ми каза господина, че тези опции не е задължително да е за един файл.
|
|
|
9
|
Linux секция за начинаещи / Настройка на програми / Re: Bash script
|
-: Apr 02, 2018, 19:56
|
Самата 3 опция компилира програмата и ако има грешки се записва в отделен файл, а не ми ги показва в конзолата и точно тези два реда това правят прави файл в които да се запишат грешките. Поне така мисля че се прави, ако има друг вариант може да кажете и изобщо дали цялата задача е така както е условието. А колкото до това което писа с chmod +x стана прави го изпълним файл обаче с това ./ Не става да не е щото аз ползвам virtualbox с stackware 14.2.
|
|
|
10
|
Linux секция за начинаещи / Настройка на програми / Re: Bash script
|
-: Apr 02, 2018, 18:20
|
не става обаче като махна / и остане само . $filename стана, но искам да попитам как да го направя изпълним смисъл такъв аз първо трябва да напиша chmod u+x s.sh и след това да пусна другият скрипт за да се изпълни.
|
|
|
11
|
Linux секция за начинаещи / Настройка на програми / Re: Bash script
|
-: Apr 02, 2018, 17:26
|
Не става с това изписва ми bad interpreter: No such file or directory Ето и кода #!/bin/bash echo "1 - Sazdavane na fail." echo "2- Redaktirane na fail." echo "3 - Kompilirane na fail" echo "4 - Izpalnenie na faila." echo "Vavedete edin ot variantite, dadeni po gore ot menuto:" read option case $option in 1) echo -n "Vavedete imeto na faila:" read filename touch $filename echo "Faila e sazdaden!";; 2) echo -n "Vavedete imeto na faila:" read filename2 if [ -e $filename2 ]; then nano $filename2 echo "Faila e redaktiran:"; else echo "Faila ne sashtestvuva!"; fi;; 3) echo -n "Vavedete imeto na faila:" read filename3 if [ -d $filename3 ]; then echo "Tova e direktoria!" else if [[ $filename3 == *.sh ]]; then programname="${filename3%.*}" gcc -o $programname $filename3 &> "error.log" else echo "Faila ne e programa na sh." fi fi;; 4) echo -n "Vavedete imeto na faila:" read filename4 if [[ -x $filename4 && $filename4 == *.sh]]; then ./$filename4 else echo "Faila ne e izpalnim:" fi;; *) echo "Opitaite otnovo!";; esac
|
|
|
12
|
Linux секция за начинаещи / Настройка на програми / Re: Bash script
|
-: Mar 30, 2018, 11:50
|
Търсил съм но не мога да намеря, затова пиша тука. Имам следната задача да се създаде shell скрипт предоставяща среда за създаване, редактиране, компилиране и изпълнение на файлове на базата на меню. Грешките при компилиране да се записват в отделен файл. Това с създаването и редактиране съм го направил. С компилирането също мисля че е направено, обаче това с изпълнение на файл не съм. И до колкото разбирам примерно избирам от менюто за изпълнение на файл и пиша името и той да ми стартира скрипта. Поне аз така го разбирам. И мисля че това не трябва да се прави с готови функции, а един вид аз да я напиша функцията
|
|
|
14
|
Linux секция за начинаещи / Настройка на програми / Re: Bash script
|
-: Mar 29, 2018, 19:42
|
Аз имам предвид няма ли как да се направи без такива опции като cat и другите. Смисъл без вградени функции, а нещо като се използват -f -a. A също не може ли пак да се създаде скрипт и като го пуснеш и напишеш името на файла той да ти го отваря
|
|
|
|