|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 10:11 am
| Автор |
Съобщение |
|
head_up
Ранг: Форумен бог
Регистриран на: Нед Юни 01, 2008 9:54 pm Мнения: 1503 Местоположение: Пловдив
|
 Re: Ubuntu / Debian
То класическия вариант е с lock файл, обаче не ме радва, че ако ми умре процеса файла ще остане - тогава пък става една... за девайс, който може да не види ресет със седмици е лошо. Освен да сложа пък някой, който да забърсва файловете с pid, който липсва в момента. От друга страна тъй като разните приложения в по-голямата си част, но не винаги, се явяват в thread на друго приложение знам ли какво ще се получи? Това което предлагаш е друг вариант, обаче той си е по същество приложение, не разбрах как да направя същото от C код (т.е. сега търся). Но май там подводни камъни имаше някакви. Нещо като: В случая като root няма какво да ми се опре, но все пак не може да няма по-читаво решение? Има ли начин да се създаде lock файл, който автоматично да бъде изчистен, когато създаващото го приложение изчезне поради някаква причина?
|
| Пон Сеп 23, 2013 3:29 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: Ubuntu / Debian
http://stackoverflow.com/questions/3568 ... semaphoresмисля, че проблема най добре се решава с твой си шаред семафор
_________________ Мразя да мразя ...
|
| Пон Сеп 23, 2013 5:24 pm |
|
 |
|
head_up
Ранг: Форумен бог
Регистриран на: Нед Юни 01, 2008 9:54 pm Мнения: 1503 Местоположение: Пловдив
|
 Re: Ubuntu / Debian
Какво ще кажеш за flock? Че така го написах, но утре ще го пробвам. Има ли подводен камък при условие, че приложенията са стартирани през thread-ове на един процес и то като root? Остави другото, ами е и "безсмъртен" (от inittab-а)... Баси, това като го написах и се замислих дали не съм объркал тотално концепцията, ама късно 
|
| Пон Сеп 23, 2013 5:35 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
 Re: Ubuntu / Debian
На мен ми се струва странно, че можеш да стартираш две копия на една и съща програма като root и двете да могат едновременно да отворят и работят например с /dev/ttyS0. Не съм го пробвал да видя какво ще се получи, но все си мисля, че би трябвало да ти върне грешка, когато второто копие се опита да отвори вече отворения /dev/ttyS0. Довечера ще пусна две копия на moserial като root да видя какво ще стане.
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Пон Сеп 23, 2013 6:21 pm |
|
 |
|
head_up
Ранг: Форумен бог
Регистриран на: Нед Юни 01, 2008 9:54 pm Мнения: 1503 Местоположение: Пловдив
|
 Re: Ubuntu / Debian
Всъщност това си е концепция в линукса - файла си е файл и щом ти е разрешено - можеш да го правиш каквото си решиш едновременно от две-три-Н места. Стига да имаш права. А де факто руута няма кой да го спре. То и за това ги има всичките тия лок-ове. Просто така е направено за разлика от бозата, където кой хванал първи той работи. Ако е просто потребител мисля има опция да поиска от девайса да бъде заключен към него, докато го освободи - това ще важи за другите потребители, но руута отново минава метър и не му пука за тая опция. По дефоулт обаче всички могат да работят едновременно с девайса. Сещаш се до какво води.
|
| Пон Сеп 23, 2013 9:17 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
 Re: Ubuntu / Debian
А защо трябва непременно програмата ти да работи като root ? Защо не е с обикновенни потребителски права ?
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Пон Сеп 23, 2013 9:40 pm |
|
 |
|
head_up
Ранг: Форумен бог
Регистриран на: Нед Юни 01, 2008 9:54 pm Мнения: 1503 Местоположение: Пловдив
|
 Re: Ubuntu / Debian
Е, така се наложи, прави някакви неща, за които ми трябва root-а... Пък и не съм сигурен, че има начин приложение стартирано от inittab (за да е безсмъртно) да бъде с нещо различно от root права. Или греша?
|
| Пон Сеп 23, 2013 10:01 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: Ubuntu / Debian
Е ти като си руут винаги можеш да стартираш процес от името на някой юзер. Друг е въпроса дали по това време вече можеш да сменяш юзери. А защо ти се налага да синхронизираш 2 процеса? т.е. какво пречи да го направиш всичко в един процес където имаш повечко механизми за синхронизация - рестартираш ли го? какво? тя и нишка се рестартира 
_________________ Мразя да мразя ...
|
| Пон Сеп 23, 2013 10:50 pm |
|
 |
|
head_up
Ранг: Форумен бог
Регистриран на: Нед Юни 01, 2008 9:54 pm Мнения: 1503 Местоположение: Пловдив
|
 Re: Ubuntu / Debian
@palavrov, би ли подсказал как се стартира процес от името на друг юзър? Стана ми интересно... Точно сега надали, но ще да е полезно. Е, те са по същество отделни приложения, всяко може да се вика от различно място, за да направи нещо. Някой от тях ползват серийния порт за обмен на данни с някой отвън. Почти всички трябва да се викат периодично, за да си вършат работата. Викането им е асинхронно, всяко на някакъв си интервал, който отговаря на задачата му. Наредил съм си ги като лист с приоритети и време между извикванията им + аргументи и си ги викам от едно безсмъртно приложение като отделни нишки - всяко си върши работата, докладва на това приложение успешно или не, и дали иска да бъде извикано по-скоро отново или по нормален график. И така ... проблем е когато две се застъпят и поискат да ползват серийния порт заедно. Отделно някой от тях могат да бъдат извикани от друго място, защото на някакъв съвсем отделен процес му е притрябвало да направи това-оново с девайса от вън. И когато и тоя се включи в искането да ползва сериен порт - сещай се какъв бой настава. Та въпроса беше как да им указвам, че порта е зает от друго приложение (защото очевидно не мога да го забраня) и да си спестя мешаницата?
|
| Пон Сеп 23, 2013 11:04 pm |
|
 |
|
scout_3pm
Ранг: Популярен
Регистриран на: Вто Авг 07, 2012 3:16 pm Мнения: 331
|
 Re: Ubuntu / Debian
Ако е за от конзола su username -c "program arg1 arg2" може и su username programname но първият вариант е по-гарантиран да работи и да се предадът правилно аргументите към програмата. Въпроса е да не би да питаш за Inittab. А обмислял ли си да си пускаш нещата с cron (crontab) ? edit: За crontab идеята ми е, че в root-ския може да укажеш директно от кой потребител да се изпълни дадената програма и със стринга @reboot може това да става веднъж при boot / reboot. Т.е нещо от рода @reboot username /path/to/program в root-ския crontab ще ти свърши работа Най-лесно да го редактираш е с `crontab -e` като root.
|
| Пон Сеп 23, 2013 11:11 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: Ubuntu / Debian
Ами той scout_3pm ти го написа как - не е кой знае каква философия. Аз лично за ембедед системи хич не харесвам да се слага убунту/дебиан и т.н. десктоп дистрибуции - излишно се товари с камари шел скриптове за какво ли не - при това още от буутването. Мисля, че ще ти е много по лесно ако събереш всичко в една програма - веднага ще ти отпаднат сумати проблеми, включително тези със споделения сериен порт. Разбира се ако ти пишеш всички програми, ако ги ползваш на готово може и да не ти е по лесно 
_________________ Мразя да мразя ...
|
| Пон Сеп 23, 2013 11:46 pm |
|
 |
|
head_up
Ранг: Форумен бог
Регистриран на: Нед Юни 01, 2008 9:54 pm Мнения: 1503 Местоположение: Пловдив
|
 Re: Ubuntu / Debian
@scout_3pm, мерси  Това беше полезно. Но пък съм махнал su-то от съображения за сигурност. Но да - питах за inittab-a. Колкото до cron-a доколкото го гледах (но не задълбах) не е толкова гъвкав, в смисъл не ми позволява така добре да взимам решения след колко време да викам съответното приложение. Беше някак си ... по-фиксиран. Може да не съм дочел нещо. @palavrov, нито е дебиан, нито е убунту, къстъм си е, просто ме мързеше да отварям нова тема, пък тук си питам за общи работи относно линукса - за това пак тук постнах  Може би си прав, че трябваше да го обединия като едно голямо нещо, но дори и тогава голямото нещо можеше да бъде извикано от поне 2 различни места - няколко пъти наблегнах на това - т.е. няма гаранция, че дори и като голямо нещо то няма да има два такива процеса искащи да работят със сериен порт (или каквото друго дойде). Въпроса беше да се предпазя от бой за ресурс/девайс. Е, още се чудя как е най-удачно 
|
| Вто Сеп 24, 2013 12:27 am |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: Ubuntu / Debian
Относно извикването от 2 различни места - това може да се направи като вместо да стартираш нов процес, просто пратиш различни сигнали на един и същ, а той си стартира вътрешно каквито тхредове му трябват. В рамките на един процес споделянето на общ ресурс става съвсем лесно с мутекс например. Също така не забравяй, че реално имаш трети процес който решава кога да ги извика другите два. Обикновенно това се прави с различни малки програмки вместо в една монолитна по ред причини, и не всички правилни  Много често причината е, че програмиста му се струва по трудно да направи една програма на Ц и предпочита да направи няколко скрипта (баш, питон, и т.н.), много често е и защото въобще не знае Ц ама се пише програмист  Та то не, че и така не работи, ама по скоро е отбиване на номера отколкото сериозно и стабилно решение. Единствено което мен ме блазни в такъв дизайн е, че може да подменяш компонентите по отделно. А за ембедет система не съм сигурен дали това въобще се налага. Абе я не ми се впрягай много на приказките - прави както си го решил - все ще стане. Някоя друга милисикунда излишна работа на процесора няма да натежи на никой 
_________________ Мразя да мразя ...
|
| Вто Сеп 24, 2013 10:45 am |
|
 |
|
head_up
Ранг: Форумен бог
Регистриран на: Нед Юни 01, 2008 9:54 pm Мнения: 1503 Местоположение: Пловдив
|
 Re: Ubuntu / Debian
Не съм съвсем съгласен с теб. Ако беше това (за монолитната програма) то разни приложения правещи различни неща, но използващи общ ресурс (като да кажем серийния порт) щяха да се предлагат като ... голяяямо приложение. Не ти ли изглежда странно? Мене ако питаш неща от типа на busybox-а са хубави (типичен пример за това което казваш), но не съвсем. Предпочитам отделни приложения. Обаче тогава си отварям тоя проблем, който и сега имам. Хората са му намерили решение с лок-овете - малко като забърсване под килима, но логично. Може някой ден и да си променя мисленето, сега така го виждам. Пък ако погледнеш колко неща в дистрибуциите са направени на разхвърляни скриптове (баш/питон) и малки приложения ... сигурно има защо? Предполагам. То така или иначе вече го написах с flock, не дава проблеми. Уж.
|
| Вто Сеп 24, 2013 11:19 am |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11265 Местоположение: Добрич
|
 Re: Ubuntu / Debian
я кажете някакво тулче дето може да експортира картинки в raw 1bpp формат?
Пробвах кво ли не... gimp-а може и С-файлове да прави ама само за RGB пък аз искам 1 бит/пиксел да ми запише
|
| Пон Юни 30, 2014 2:29 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|