LINUX.ORG.RU

Записывалка дисков


0

1

Вдруг захотелось написать записывалку дисков. :) Стою перед выбором python/c++. Я раньше прог под linux (да и под оффтопик подавно, код на Windows API врагу не пожелаешь увидеть...) не писал, так что анонимусов прошу не горячиться. Также стою перед выбором qt/gtk. Говорят, что qt проще для новичка - так ли это? Вобщем посоветуйте, как лучше.. Вобщем, собираюсь сделать так: создается временная папка, а когда я кидаю файл/папку в окошко, создается симлинк, затем по нажатию кнопочки burn, выполняется что-то вроде

growisofs -Z /dev/sr0 /tmp/tmp.blablabla -f
и вывод ее появляется в каком-то текстовом поле - на примете пайп. Но.. пока диск будет записываться, записывалка будет ждать от growisofs вывода, и ничего не сможет в этот момент делать. Будет выглядеть, что она повисла. Как этого можно избежать?


Ответ на: комментарий от pekmop1024

Может и так, но почему-то захотелось.. Насчет xfburn, меня достал досадный баг наутилса «the location is not a folder»

nic11
() автор топика

Simpleburn форкай, улучшай лучше.
Хотя эти писалки и не нужны уже, да и хватает их.

amorpher ★★★★★
()

Говорят, что qt проще для новичка - так ли это?

Вобще абсоютно флэймовый вопрос. У qt документация больше и подробнее, imho.

Если смотреть на твое описание задачи, то тебе больше подойдет что-то скриптово-ориентированое на UI: Tk или какие-то dialog-образные.

antares0 ★★★★
()
Ответ на: комментарий от antares0

Tk? Спасибо, посмотрим. Думаю, подойдет tkiner..

nic11
() автор топика
Ответ на: комментарий от Zorn

Ну, я тоже считаю пилящуюся прогу бессмысленной, но она будет первой с практической пользой, да и опыт даст =) я же нуб пока

nic11
() автор топика
Ответ на: комментарий от nic11

Ну и писал бы их с консоли. Нафига фронтенд ваять, нафига это виндузятство?

Hertz ★★★★★
()

Стою перед выбором python/c++.

Если не знаешь ни того ни другого то пистон попроще будет, однако могут возникнуть проблемы с отсутствием биндингов к некоторым библиотекам.

Также стою перед выбором qt/gtk.

Под пайтон gtk по приятнее будет.

Будет выглядеть, что она повисла. Как этого можно избежать?

Использовать потоки.

fat_angel ★★★★★
()

И таки я считаю, что проще написать патчи к/форкнуть xfburn.

fat_angel ★★★★★
()

Если вообще опыта нет, то питон попроще будет, так как без опыта и общего представления об внутренней архитектуре приложения на сях ты накодишь такого быдлокода, что оно начнет жрать память ведрами и падать когда попало.

Для гуя можно юзать pyQt или pyGtk, там оно попроще будет.

Zhbert ★★★★★
()

Также стою перед выбором qt/gtk.

Бери Qt, оно гораздо удобнее.

Вобщем, собираюсь сделать так: создается временная папка, а когда я кидаю файл/папку в окошко, создается симлинк

А зачем вообще создавать каталог? Можно просто запоминать, какие файлы выбраны, а потом вызвать mkisofs, передав ему параметрами пути к файлам, а вывод mkisofs через пайп пустить на cdrecord. Точно синтаксис не скажу, тут надо ман читать, но k3b, AFAIK, примерно так работает. Прогресс надо будет читать с stderr mkisofs.

Но.. пока диск будет записываться, записывалка будет ждать от growisofs вывода, и ничего не сможет в этот момент делать. Будет выглядеть, что она повисла. Как этого можно избежать?

Тогда нужно либо сделать отдельный тред, в котором слушать выхлоп mkisofs, либо периодически вызывать QApplication::processEvents(), когда программа долго не выходит в event loop, либо сделать ещё один event loop, либо заюзать QSocketNotifier, который будет слать сигналы при получении новых данных от mkisofs. Последний способ мне кажется лучше.

gentoo_root ★★★★★
()
Ответ на: комментарий от nic11

да... не причём. я думал проблема ТСа - запустить писалку от рута.

drBatty ★★
()

Лично я предпочитаю dd, а если нужно создать iso то заранее прогоняю через mkisofs. И никакие GUI не нужны

comp00 ★★★★
()
Ответ на: комментарий от Reset

Может и не нужно, но! Человек делает для себя, набирается опыта. Так что все можно попробовать.

От себя посоветовал бы использовать python3 + Tk. А чтоб не зависало (как посоветовали) используй потоки. (почитай про всякие там форки и т.п.). Удачи!

GreenBag ★★
()

Будет выглядеть, что она повисла. Как этого можно избежать?

Емнип, обычно это делается потоками.

damnemall
()
Ответ на: комментарий от GreenBag

В данном случае потоки не нужны. С pipe'ами можно работать в асихронном режиме, используя poll/epoll/select/kqueue/...

Reset ★★★★★
()
Ответ на: комментарий от Reset

Спасибо за замечание, про пайпы и ассинхронный режим не знал. Взял на заметку.

GreenBag ★★
()

У меня было три простых способа: первый — накидать в директорию файлов, проверить при помощи du, чтобы директория влезла на диск, и записать «на лету» при помощи cdrecord/wodim.

Способ номер два: накидать файлы в созданный файл, отформатированный в ext2 (размер файла равнялся вместимости DVD), а потом, как заполнится полностью, тупо записать его на диск при помощи cdrecord/wodim.

Третий — когда надо надергать файлов из разных мест и нужно iso9660 (т.к. некоторые дебилоидные плееры не понимают ext2 на DVD): k3b.

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.