LINUX.ORG.RU

[C] [Своими руками] [Костыль] CDialog

 ,


0

1

Прошу больно не пинать, это моя первая прога относительной полезности.

CDialog 0.1 prealpha

Типо библиотека для использования утилиты dialog из C/C++
Использование:

#include <cdialog.c>

using namespace std;

int main(int argc, char ** argv){
   char* dexec = dialog_exec("--menu \«Select item, please!\» 10 40 9 1 \«Item 1\» 2 \«Item 2\»");
   char msgstr[10240];
   sprintf(msgstr, "--msgbox \«You selected item %s\» 7 40", dexec);
   dialog_exec(msgstr);
   return 0;
};

Для установки библиотеки - make install,
для удаления - make uninstall

Для сборки и запуска примера:
cd «chelloworld-2 example»
make
./chelloworld-2

ВНИМАНИЕ! Библиотека статическая! А это значит, что при обновлении либы нужно пересобирать приложения, которые6 её используют.

http://waper.ru/file/1666467/download/9f821ab88204de8b3a0/cdialog-static.tar.gz



Последнее исправление: startApp (всего исправлений: 2)

> sprintf(cmdl2, «dialog %s 2>/tmp/cdialogres», cmdl);

Лучше направить вывод в pipe, а не в файл. Потому что, например, в /tmp может не быть места. Вообще, временные файлы – это последнее средство, при малейшей возможности лучше обходиться без них.

Кроме того, в случае отсутствия в системе утилиты dialog, как я понял, функция вернёт строку типа «dialog: command not found»; правильным поведением было бы возвращать NULL.

anonymous
()

Я щитаю, это полный здец. Лучше бы плеер написал.

baverman ★★★
()

Да, и сейчас тут начнут (уже начали) поливать грязью и кричать «не нужно» – не слушай их, хоть непосредственной практической пользы действительно немного, но как упражнение на межпроцессное взаимодействие – вполне пойдёт. Пиши ещё, набирайся опыта.

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

но как упражнение на межпроцессное взаимодействие – вполне пойдёт.

Ты, верно, шутишь? Где там межпроцессное взаимодействие? Дернуть команду через шелл, причем шелл (sic!) делает перенаправление в файл и потом вычитать этот файл?

А 10240 это вообще пестня. А где обработка ошибок? В общем wtf-style хелловорлд, не более. ТС выучил функцию system! Давайте разольемся в дифирамбах.

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

> Где там межпроцессное взаимодействие?

Будет, когда через пайпы перепишет.

Как будто твои первые программы хоть чем-то лучше были.

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

Как будто твои первые программы хоть чем-то лучше были.

Если бы в то время был ЛОР, то я бы начал топик со слов «помогите улучшить программу», чуешь разницу?

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

>Как будто твои первые программы хоть чем-то лучше были.

Вопрос стоит не столько в (не)нужности и (бес)полезности этой программы, сколько в том, зачем ее выкладывать в интернеты и тем более на мой уютный ЛОР.

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

> зачем ее выкладывать в интернеты и тем более на мой уютный ЛОР

Чтобы услышать рекоммендации, как правильно читать вывод дочерних процессов, и как правильно создавтаь библиотеки.

anonymous
()
Ответ на: комментарий от baverman

> Если бы в то время был ЛОР, то я бы начал топик со слов «помогите улучшить программу»

И, несомненно, был бы очень рад прочитать в ответ «это полный здец» или «что тут улучшать, выкинь свою программу вместе с мозгами».

anonymous
()

#include <cdialog.c>

FUUUUU

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

Чтобы услышать рекоммендации, как правильно читать вывод дочерних процессов, и как правильно создавтаь библиотеки.

А причем тут сабжевый код? У ТС нет языка, чтобы прямо спросить совета? Я отвечу — он поймал звезду и хотел потешить ЧСВ.

P.S. А вообще это сильно смахивает на тонкий троллинг, более всего подозрителен анонимус-доброхот и особенно в такой теме, откуда ты вылез? Раньше тебя не видел.

baverman ★★★
()

Автору: не надо #include'ить .c файл, надо выносить прототипы функций в .h файл и включать его, а .c файл с реализацией прилинковывать.

Как-то так:

gcc -c library.c

ar -r library.a library.o

gcc program.c library.a

anonymous
()
Ответ на: комментарий от baverman

> вообще это сильно смахивает на тонкий троллинг, более всего подозрителен анонимус-доброхот и особенно в такой теме, откуда ты вылез?

Никакого отношения к ТС я не имею, если ты об этом. В другой стране даже живу.

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

В другой стране даже живу.

Озаботился проксей? Молодец.

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

> В другой стране даже живу.

Вот ты и пропалился! Откуда ты знаешь, в какой стране живет ТС?

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

Лучше сделать динамическую библиотеку.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от baverman

> Мы общество по охране детских иллюзий что-ле?

Нет, но наставлять людей на путь истинный можно и повежливее. Особенно когда случится делать это в жизни, а не на форуме.

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

Нет, но наставлять людей на путь истинный можно и повежливее.

Давай я приду к тебе домой и вывалю в прихожке кучу мусора — любуйся. Что ты мне ответишь? Заметь, кирби за спиной пристегнут не будет.

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

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

Вообще жёсткий оффтоп какой-то пошёл, пора заканчивать.

anonymous
()

Кто нибудь знает, как читать stderr дочернего процесса, оставляя stdin/stdout в консоли?

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

> #include <cdialog.c>

Сделайте мне развидеть это!

geekless ★★
()

> #include <cdialog.c>
facepalm.cxx

>Библиотека статическая!
а что мешает вынести все объявления функций в заголовочный файл, инклудить его. саму либу сделать динамической, а программы линковать с ней?

memnek
()

>dialog_exec("--menu \«Select item, please!\» 10 40 9 1 \«Item 1\» 2 \«Item 2\»");

мда. Цифры 10, 40, 9, 1 это наверное размеры окна, но почему их четыре?

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