The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Создать новую тему
 - Свернуть нити
Пометить прочитанным
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Архив | Избранное | Мое | Новое | | |  
Форум Программирование под UNIX
Символьные устройства FreeBSD 8. Отсутствие tty_subr.c, !*! Антон, (C/C++) 25-Мрт-21, 21:14  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Добрый день!
Есть ISA плата ввода-вывода. Под FreeBSD 4, 5, 6, 7 для ее работы был написан драйвер ядра как символьное устройство.
Компилируется вместе с ядром FreeBSD.

В нем присутствуют функции b_to_q и q_to_b работы со связанными списками clist для которого выделятся блоки.
Функции находятся в ../kern/tty_subr.c.
При чтении с канала ввода-вывода туда помещаем данные,используется как буфер.

В версия FreeBSD 8 и выше данный файл отсутствует.https://cgit.freebsd.org/src/tree/sys/kern
Что вместо него использовать?
Или что можно почитать для разработки драйвера для символьного устройства? Или уже эта технология не актуальна, т.е. используют, например блочные устройства или pci карты по-другому работают?


Программирование изображений, !*! Anonymooum, (Разное) 20-Мрт-21, 19:24  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Изображения – крайне значительная часть компьютера для пользователей. Сегодня. Сколько изображений Вы просматриваете загрузив компьютер к моменту 'рабочего стола', если он у Вас есть? Я думаю что во всяком случае одну.

Именно по этой причине меня заинтересовала тема программирования изображений. И у меня случилась тотальная попболь. :(

Хотите знать почему? С:

Libpng не имеет документации на русском, magickwand не имеет, libraw не имеет документации на русском языке, первая статья про программирование tiff/bmp двухтысячного года с использованием самописной библиотеки и то у меня не заработала. Сколько дней нужно потратить на изучение документации libpng? Я вот целый день как бы читаю с учётом неосиляторства английского. Ничего не понял и у меня случилась попболь.

Как вкатиться в программирование. Изображений? КАК Вы в этом программируете?



Random и Zeromemory, !*! kapibara, (C/C++) 13-Мрт-21, 01:06  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Как реализовать следующие криптографические функции в юникс: генерация случайных данных (да, знаю что истинно случайных данных нет, но все же) и secure_zero_memory, т.е. гарантированная очистка данных в памяти? Может есть какие-то готовые либы, примеры етц.
Какой язык функционального программирования учить?, !*! Аноним, (Средства разработки) 11-Мрт-21, 12:32  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Доброго! Уважаемые анонимусы, подскажите, какому языку посвятить свое драгоценное время?
Давно изучаю и программирую на ++, сейчас потянуло на что-то новенькое.
Присматриваюсь к Elang, Haskell, Sсala.
Хотелось бы в последствии пофрилансить и поваять свои проекты для души.
Интересуют задачи типа бэкэнда торговой платформы.


ресурсы для изучения Xlib, !*! Anonimoum, (Процессы, Треды, RPC) 25-Фев-21, 00:24  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
b, чувствую что всё не то и меня обманывают. Ну не могут по этим ресурсам учиться программисты!
Изучал по http://dfe.petrsu.ru/koi/posob/X. Проблемы: не живой язык, примерочный код писали довольно странно.
Ну и вообще хочу узнать что есть и как можно.

Язык написания не критичен (нужно только чтоб былo **живой**), посоветуйте, если знаете что-то, пожалуйста. Спасибо.

Как выкачать определенный pack-файл с Git-репозитария?, !*! xintrea, (Контроль версий, Git, SVN, Bazaar, Mercurial) 23-Фев-21, 19:33  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Сижу сейчас на мобильном интернете.

У меня в локальной копии репозитария оказался поломанный pack-файл. Я бы мог перевыкачать весь репозитарий, но размер репозитария несколько гигабайт.

Я знаю точно название pack-файла, и мне надо выкачать только его:


.git/objects/pack/pack-dd181d6ed4ebbcf10347fb0908a2f644ef40b993.pack

Вопрос: как это сделать? Репозитарий на Гитхабе.

Что не так c noreturn функцией?, !*! Павел Отредиез, (C/C++) 22-Фев-21, 12:22  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
_exit.c:

#include <sys/types.h>
#include <sys/syscall.h>

void __syscall(quad_t n, ...);

void _exit(int status)
{
    __syscall(SYS_exit, status);
}



$ cc -c -Wall _exit.c
_exit.c:31:1: warning: function declared 'noreturn' should not return
      [-Winvalid-noreturn]
}
^
1 warning generated.

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

Смещение контура матрицы. Алгоритм  (развлекательная задача), !*! dcc0, (PHP) 21-Фев-21, 16:21  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Доброго!
Смотрел способы транспонирования матриц.
И возникла такая мысль: как минимальными средствами сдвинуть только контур (пусть будет квадтратной) матрицы. Например,  на  1 позицию, или последовательно на несколько позиций (в цикле).
Конутром матрицы считается:

1) Верхняя строка
2) Правый столбец  
3) Нижняя строка
4) Левый столбец
Относительно пользователя, глядящего в экран :)

Пока получился такой алгоритм: сохранить контур в отельном массиве - contour.
1) Циклически сдвинуть на 1 позицию  массив contour.
2) Переписать строки и столбцы в матрице.

Для матрицы размером 3*3, получается так:


<?php

        /*Циклическое смещение контура на единицу*/    
        
        
        /*Матрица*/            
        $matrix[0]=array( 1,1,1);
        $matrix[1]=array( 2,2,2);
        $matrix[2]=array( 3,3,3);
    
        /*Контур  матрицы */
        $contour=array(1,1,1,2,3,3,3,2);
    
    
    for ($j=0; $j < 8; $j++)
    
    
    {        
            
        /*Сдвигаем массив*/    
        $temp=array_pop($contour);
        array_unshift($contour, $temp);
        
        /*Смещение верхней и правой границы*/
        foreach ($matrix[0] as $k => $value)
        {
        $matrix[0][$k]=$contour[$k];    
        $matrix[$k][2]=$contour[$k+2];
        }
        
        /*Смещение нижней границы*/
        $x=3;
        for ($i=0; $i < 3; $i++)
        $matrix[2][--$x]=$contour[$i+4];
        
        /*Смещение левой границы*/
        $x=2;
        for ( $i=0; $i < 1; $i++)                 
        $matrix[--$x][0]=$contour[$i+7];
        
        
        /*Печатаем*/
        print '<br/>';
        print_r($matrix[0]);
        print '<br/>';
        print_r($matrix[1]);
        print '<br/>';
        print_r($matrix[2]);
        print '<br/>';
        print_r($matrix[3]);
        print '<br/>';
        print '<br/>';
        print '<br/>';
}
?>



Use undeclared indentifer в emit sig(), !*! Just friend, (GUI, XWindow, Qt, GTK) 20-Фев-21, 21:20  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Qt 5.15
OS: Ubuntu 20.04


// foo.h
class Foo : public QObject {
    Q_OBJECT
public:
    explicit Foo();
    void init();
signals:
    void sig();
}

foo.cpp
Foo::Foo() : QObject(nullptr)
{
    ...
}

void init()
{
    ...
    emit sig();    //  Use undeclared indentifer 'sig'
}

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

Назначить сложную команду на yad button, !*! bicyclist56, (Shell скрипты) 10-Фев-21, 06:20  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
#! /bin/bash
# Есть работающий пример:
yad --center --borders=20 \
    --title="YAD Custom Dialog Buttons" \
    --button="Выполнить":"bash -c 'echo Yes!'" \
    --button="Exit"
# Задаю для простоты значения напрямую (на самом деле через форму yad):
HH=10
MM=30
TT="aplay /home/vvv/.local/share/sounds/timer.wav"
DD="03/10/21"
# Не создается at задача таким образом:
yad --center --borders=20 \
    --title="Запись задания" \
    --button="Выполнить":"echo $TT | at $HH:$MM $DD" \
    --button="Exit"
# И если в одну переменную:
CL="echo $TT | at $HH:$MM $DD"
# То тоже не работает:
yad --center --borders=20 \
    --title="Запись задания" \
    --button="Выполнить":"bash -c $CL" \
    --button="Exit"

Отдельной строкой успешно выполняется:
echo $TT | at $HH:$MM $DD

Вопрос: как правильно назначить эту команду на button="Выполнить"? Целый день игрался с разными кавычками, скобками и прочими спец.символами, сдался...

Интернет через usb, !*! Аноним, (Разное) 09-Фев-21, 23:10  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Привет!

Подскажите, пожалуйста, как заставить raspberry pi4 подключённую к компьютеру через usb передавать интернет этому компьютеру через usb; с учётом того, что на raspberry pi интернет уже есть?

>Программирование под UNIX.

Ну это не программирование, но я потом буду программировать сети через wifi!

Спасибо!

*Ламерок*

Что такое сети?, !*! Аноним, (Сеть, сокеты) 07-Фев-21, 18:41  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Я только-только начинаю прогроммировать и услышал про **компьютерные сети**. В надежде понять что это такое я прочитал 200 страниц `ComputerNetworks-ATanenbaum-5thedition.pdf` и мне очень понравилось! Но я забросил дальнейшее чтение поскольку она нудновата, а у меня нет терпения.

Расскажите, пожалуйста, где можно почитать про компьютерные сети и так что б там было как их программировать и чтоб я играл с друзьями в мой тетрис!

Спасибо.

P.S. Стоит ли продолжать читать Таненбаума? Книга очень хорошая, но мною туго читается.

Ошибка сегментирования (код 139) ПОСЛЕ завершения работы., !*! Just friend, (GUI, XWindow, Qt, GTK) 07-Фев-21, 05:13  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Доброго времени суток, к сожалению не могу привести пример кода, поскольку проект уже разросся на 1000+ строк, а причина так и не найдена.
Теперь к сути. Разрабатываю на Qt5, в один момент во время тестирования заметил, что при закрытии основного окна приложения (closeEvent(...), qApp->quit() или qApp->exit(0) пробовал все 3) возникает интересная ситуация. Код отрабатывает именно то, что и планировалось, ошибок никаких, но среда QtCreator выводит сообщение не об успешном завершении с кодом 0, а что приложение было завершено с ошибкой и его работа была аварийно остановлена.
При завершении работы (по воле пользователя) присутствует ошибка сегментирования (код ошибки 139).
На данный момент это совершенно не затрагивает работоспособность программы, однако боюсь, что это может повлиять в дальнейшем. Очень хочется знать в чем может быть источник проблемы.
Я только начинаю познавать разработку, по-этому не судите строго. К сожалению поиск в гугл не увенчался успехом. Рассчитываю на вашу помощь.
How to determine connection info (fd,uid,id) ?, !*! Аноним, (C/C++) 04-Фев-21, 10:06  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
По наитию использую libpcap, но с информативностью там сосвсем туго.
Можно ли не теряя удобства использования этой либы, получить хоть какую-то инфу о соединении и если можно то как ?
V или Nim, !*! Анонин, (C/C++) 27-Янв-21, 12:47  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Два модных языка. Оба транслируют код в С и компиляют обычным gcc. Кто-нибудь использует?
Как в SED обработать диапазон строк?, !*! xintrea, (Shell скрипты) 22-Янв-21, 12:24  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Есть такой текст:

...
[AC]
icon=battery-charging

[AC][DPMSControl]
idleTime=3600

[AC][HandleButtonEvents]
lidAction=64
powerButtonAction=8

[Battery]
icon=battery-060

[Battery][DPMSControl]
idleTime=300

[Battery][HandleButtonEvents]
lidAction=64
powerButtonAction=16

[LowBattery]
icon=battery-low

[LowBattery][BrightnessControl]
value=30

[LowBattery][HandleButtonEvents]
lidAction=64
powerButtonAction=16
...


Я хочу обработать диапазон строк между:

[AC][HandleButtonEvents]
...
[.*

В этом диапазоне надо изменить значение powerButtonActions.

Я пытаюсь сделать так:


cat f.txt | sed /\[AC\]\[HandleButtonEvents\]/,/\[.*/s/powerButtonAction\s*=\s*.*/powerButtonAction=125/

Но получаю ошибку:

> sed: -e выражение #1, символ 81: незавершенное адресное регулярное выражение

Вопрос: как правильно написать эту команду?

Как в Python 2.7.13 изменить INI-файл с субсекциями?, !*! xintrea, (Python) 22-Янв-21, 10:32  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Имеется INI-файл с вот такой структурой:

...
[AC]
icon=battery-charging

[AC][DPMSControl]
idleTime=3600

[AC][HandleButtonEvents]
lidAction=64
powerButtonAction=8

[Battery]
icon=battery-060

[Battery][DPMSControl]
idleTime=300

[Battery][HandleButtonEvents]
lidAction=64
powerButtonAction=16

[LowBattery]
icon=battery-low

[LowBattery][BrightnessControl]
value=30

[LowBattery][HandleButtonEvents]
lidAction=64
powerButtonAction=16
...


Здесь видно, что HandleButtonEvents - это "субсекция", а основная секция задается перед субсекцией в той же строке. Не знаю, является ли это стандартом для INI-файлов или нет, не я этот файл создавал.

Задача - поменять значения powerButtonAction в различных субсукциях.

Пробовал достучаться до нужного значения так (хотя бы считать):


import ConfigParser
config=ConfigParser.ConfigParser()
config.read('$fileName')

print( config.get('AC][HandleButtonEvents', 'powerButtonAction' ) )


Но возникает ошибка:

      "Traceback (most recent call last):",
      "  File \"<stdin>\", line 5, in <module>",
      "  File \"/usr/lib/python2.7/ConfigParser.py\", line 607, in get",
      "    raise NoSectionError(section)",
      "ConfigParser.NoSectionError: No section: 'AC][HandleButtonEvents'"

Вопрос: как работать с такими файлами?

UPD: При необходимости могу поставить Python 3.5.3, если это будет нужно для решения.

Посоветуйте что-нибудь быстрое иудобное для хранения пар текста, !*! Аноним, (Python) 15-Янв-21, 08:32  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Здравствуйте.

Нужно искать текст (в пределах 1 кб наверно) и возвращать из базы соответствующий ему другой текст (ещё несколько кб) если тот найден, в один поток одному пользователю. Хранится всё будет в файле на диске. Я собирался взять tokyocabinet, но у него биндинги что-то не очень живые.

Желательно ещё иметь какое-нибудь разделение на категории, ну либо хранить категории в раздельных файлах но тогда доступ к куче файлов должен быть быстрый. Поиск должен быть максимально быстрым -пользователь и так ждёт слишком долго. Запись можно корутиной кидать, нормально будет я думаю.

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

Спасибо.

sed теряет кавычки и не хочет  работать, !*! Аноним, (Shell скрипты) 30-Дек-20, 10:37  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Здравствуйте, подскажите, спасибо. GNU sed только -- остальные исполнение не поддерживают, по-моему. Типичное применение это скормить совпадения date.

echo 'value1="111" value2="222.ext" value3="333" otherdata' | sed -e 's/\(.*\)"\(.*\)\(\.ext\)"\(.*\)/echo 1:"\1" 2:"\2" 3:"\3" 4:"\4"/e'

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



sed/grep - заменить вхождение строки, !*! Аноним, (Shell скрипты) 29-Дек-20, 10:55  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Добрый день. Мне нужно заменить все вхождения строки в файле, но только в тех случаях, когда некоторая последовательность в строке не найдена. Возможно ли это осуществить в sed, как будет выглядеть регулярное выражение? Спасибо.

Также я пытался подобрать подходящий паттерн для grep, тоже ничего не получилось. Мне нужны все совпадения строк, только если строка не включает в себя другую строку ("решено" цепочкой из 2 grep).

В общем-то, я озаботился из-за того, что это достаточно частая задача. И я не совсем понимаю, как её решить в sed.

процедура поиска сигналов и формирования кода завершения, !*! Bazik, (Shell скрипты) 06-Дек-20, 22:40  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Уважаемые форумчане, добрый день!

Я новичок в направлении shell программирования и прошу помощи в написании shell-процедуры следующего типа:

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

Если можно, то с небольшими комментами, если не затруднит.

Буду рад любой помощи.

Спасибо!

buildworld RPI3 - непонятки с LLVM_TARGET_ENABLE, !*! OldMonster, (Компиляция) 06-Дек-20, 15:37  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
ДВС.
строю мир freebsd12.2 на RPI3.
смотрю ps -axwwww | grep TARGET:

56377  1  RN     0:53,09 c++ -target aarch64-unknown-freebsd12.2
--sysroot=/usr/obj/usr/src/arm64.aarch64/tmp
-B/usr/obj/usr/src/arm64.aarch64/tmp/usr/bin
-O2
-pipe
-fno-common
-I/usr/obj/usr/src/arm64.aarch64/lib/clang/libllvm -I/usr/src/contrib/llvm-project/llvm/lib/Target/AArch64
-I/usr/src/contrib/llvm-project/llvm/lib/Target/ARM -I/usr/src/contrib/llvm-project/llvm/lib/Target/Mips
-I/usr/src/contrib/llvm-project/llvm/lib/Target/PowerPC -I/usr/src/contrib/llvm-project/llvm/lib/Target/RISCV
-I/usr/src/contrib/llvm-project/llvm/lib/Target/Sparc -I/usr/src/contrib/llvm-project/llvm/lib/Target/X86 -I/usr/src/lib/clang/include
-I/usr/src/contrib/llvm-project/llvm/include -D__STDC_CONSTANT_MACROS
-D__STDC_FORMAT_MACROS
-D__STDC_LIMIT_MACROS
-DHAVE_VCS_VERSION_INC
-DNDEBUG
-DLLVM_DEFAULT_TARGET_TRIPLE="aarch64-unknown-freebsd12.2"
-DLLVM_HOST_TRIPLE="aarch64-unknown-freebsd12.2"
-DDEFAULT_SYSROOT=""
-DLLVM_TARGET_ENABLE_AARCH64
-DLLVM_TARGET_ENABLE_ARM
-DLLVM_TARGET_ENABLE_MIPS
-DLLVM_TARGET_ENABLE_POWERPC
-DLLVM_TARGET_ENABLE_RISCV
-DLLVM_TARGET_ENABLE_SPARC
-DLLVM_TARGET_ENABLE_X86
-DLLVM_NATIVE_ASMPARSER=LLVMInitializeAArch64AsmParser
-DLLVM_NATIVE_ASMPRINTER=LLVMInitializeAArch64AsmPrinter
-DLLVM_NATIVE_DISASSEMBLER=LLVMInitializeAArch64Disassembler
-DLLVM_NATIVE_TARGET=LLVMInitializeAArch64Target
-DLLVM_NATIVE_TARGETINFO=LLVMInitializeAArch64TargetInfo
-DLLVM_NATIVE_TARGETMC=LLVMInitializeAArch64TargetMC
-ffunction-sections
-fdata-sections
-DNDEBUG
-MD
-MF.depend.Target_Sparc_SparcTargetObjectFile.o
-MTTarget/Sparc/SparcTargetObjectFile.o
-fstack-protector-strong
-Qunused-arguments
-fno-exceptions
-fno-rtti
-std=c++14
-stdlib=libc++
-Wno-c++11-extensions
-c /usr/src/contrib/llvm-project/llvm/lib/Target/Sparc/SparcTargetObjectFile.cpp
-o Target/Sparc/SparcTargetObjectFile.o

Вопрос:
Меня смущают строки типа
-DLLVM_TARGET_ENABLE_MIPS 
-DLLVM_TARGET_ENABLE_POWERPC
-DLLVM_TARGET_ENABLE_RISCV
-DLLVM_TARGET_ENABLE_SPARC
-DLLVM_TARGET_ENABLE_X86

Зачем, ведь целевая архитектура arm64?
Объясните, плиз.
Сложное вычисление на Python и засовывание результата в Ansible, !*! xintrea, (Python) 24-Ноя-20, 15:34  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Нужно мне сделать некоторые вычисления на Python, и результат получить в Ansible.

Делаю так:


  - name: Вычисление суммы
    shell: |
      python <<< "print 1+2"
    register: result

  - debug:
      msg: Результат {{result}}


И при исполнении плейбука ошибка:

fatal: [generatorHost]: FAILED! => {"changed": true, "cmd": "python <<< \"print 1+2\"\n", "delta": "0:00:00.001918", "end": "2020-11-24 15:25:22.719117", "msg": "non-zero return code", "rc": 2, "start": "2020-11-24 15:25:22.717199", "stderr": "/bin/sh: 1: Syntax error: redirection unexpected", "stderr_lines": ["/bin/sh: 1: Syntax error: redirection unexpected"], "stdout": "", "stdout_lines": []}

При этом простое выполнение команды в командной строке работает правильно:

$ python <<< "print 1+2"
3

Как сделать так, чтобы получить значение питоновской команды?

Посоветуйте базу данных, !*! Анонизм, (Базы данных, SQL) 05-Ноя-20, 12:22  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Здравствуйте

Подскажите, есть ли в природе база данных как postgres, но без sql?
Чтобы был ACID, структуры данных, транзакции сетевой протокол обмена..
Но без этого ужасного языка запросов.
Чтобы вместо SQL какая-нибудь апишечка или json-чик, как в монге. Что угодно адекватное.
Короче, что-нибудь адекватней адского месива английских слов и невнятных операторов, именуемого SQL

Умирает скрипт из автозапуска, !*! dvl, (Shell скрипты) 09-Окт-20, 16:00  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Уважаемые спецы:
имеется проблема - есть скрипт на Bash , в нем простой бесконечный цикл (ping через nc).
При запуске из консоли - работает чудно и бесконечно, поставил в автозагрузку, стартует но умирает в течении 1 -5 минут.
Есть идеи?

(старт через init.d , все это в BuzyBox).



Параллельное исполнение в bash, !*! Аноним, (Shell скрипты) 08-Окт-20, 19:15  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
С год назад хотел организовать параллельное исполнение, но что-то не вышло, и я оставил всё на одном ядре. Очень медленно. Как лучше его сделать? Хотя бы без синхронизации (синхронизация фоновых жобов развлечение ещё то, не хочу городить грязь, где она не нужна).

Один. Нужно просто запускать ещё 1 процесс по процессу на ядро как только завершился предыдущий и пока есть работа.

Два. Нужно организовать вывод из всех скриптов, разделить экран по числу ядер в tmux или можно придумать что-нибудь ещё?

Жду ваших советов и предложений, спасибо.



Clang vs Gcc: две компиляторных системы в одном дистрибутиве, !*! sidtver, (Компиляция) 08-Окт-20, 13:50  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
  Компилятор - это помимо собственно фронтенда/оптимизаций/кодогенератора еще binutils, библиотеки runtime-поддержки и стандартные библиотеки. У gcc - это, например, gas/ld, glibc, libstdc++. По мере своего развития длительное время компилятор clang использовал binutils и библиотеки от компилятора gcc. Но разработчики clang последовательно движутся к полной замкнутости своего проекта. У них есть свой ассемблер (llvm-as), они активно развивают свой линкер, сделали свой аналог libstdc++ с названием libc++ и разрабатывают свой аналог glibc с названием libc. Наличие стандарта C/C++ должно гарантировать компиляцию программ обоими компиляторами, но никак не гарантирует совпадение хедеров из двух разных реализаций библиотек. (Например, errno может быть переменной, а может быть макросом, раскрывающимся в вызов функции и т.д. и т.п.) У двух независимо-разрабатываемых библиотек неизбежно будут библиотеки без бинарной совместимости.
  Рассмотрим теперь Unux-дистрибутив, который собран некоторой версией компилятора gcc. В частности, в дистрибутиве будут glibc, libstdc++. Все остальные библиотеки/программы общего назначения будут собраны и слинкованы с glibc/libstdc++. В дистрибутиве также будет компилятор clang. Но компилятор clang при компиляции программ будет линковать их с libc/libc++. Допустим, теперь некоторое приложение X собрано из исходников с помощью clang'а. При этом приложению X нужна библиотека Y, которая есть в дистрибутиве, но собрана с помощью gcc. Тогда X при запуске требует (динамической) линковки с libc/libc++, а Y - glibc/libstdc++. Но гарантий бинарной совместимости libc/libc++ и glibc/libstdc++ нет. Более тонкая ситуация может быть из-за того, что хедеры библиотеки Y будут фактически давать разные варианты, при компиляции разными компиляторами.

  Значит, ли это что дистрибутив фактически превращается в объединение двух дистрибутивов, когда все программы/библиотеки должны быть собраны в двух экземплярах: с помощью gcc и с помощью clang'а?

P.S. Пару лет назад разработчики gcc поменяли алгоритм манглирования C++ имен. У разработчиков clang на полгода перестал "работать" компилятор. Но тогда у них была зависимость от gcc. Они не были довольны изменениями. С другой стороны компилятор clang создает ассемблер, который в общем случае не может ассемблировать gas. В отсутствии стандартов на манглирование, хедеры стандартных библиотек, механизм EH, процессирование шаблонов, ассемблер и т.п. две системы очень быстро станут несовместимыми.



exec 7<&0 </dev/null 6>&1, !*! Аноним, (Shell скрипты) 29-Сен-20, 10:18  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]

#!/bin/sh
...
exec 7<&0 </dev/null 6>&1
...

Не могу распарсить. Помогите.

Рекурсивное использование asprintf, !*! datswd, (C/C++) 27-Сен-20, 09:14  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Всех приветствую.

В GNU libc есть функция asprintf, которая делает то же самое, что и sprintf, но динамически выделяет память в результирующей переменной.

https://www.gnu.org/software/libc/manual/html_node/Dynamic-O...

Если сделать вот так:

asprintf(&a, "%s%s", a, "123");

В результате в переменной a окажется её содержимое дополненное строкой "123".

Вопрос в том, что происходит с точки зрения памяти? Память, изначально выделенная под a, утечет? Или там всё красиво и будет сделан realloc?

Заранее благодарен.

Как правильно использовать QMediaMetaData для определения парам, !*! Oleg1980, (C/C++) 23-Сен-20, 14:48  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Здравствуйте! Подскажите, как мне определить параметры аудиофайла без подключения внешних библиотек MediaInfo при помощи встроенных в Qt инструментов, таких, как QMediaMetaData: битрейт, частоту дискретизации, битовую глубину, формат. Мне нужно получить эти параметры из существующего файла для последующего перекодирования аудиофайла в другой формат. Я пытался использовать QMediaMetaData таким образом (при том не знаю правильно ли я использовал так же QMediaObject):


#include <QtMultimedia/QMediaMetaData>
#include <QtMultimedia/QMediaObject>
#include "mainwindow.h"
#include "ui_mainwindow.h"
.
.
.
void MainWindow::on_pushButton_1_clicked()
{
   QMediaObject mediafile; // Здесь определяю медиаобъект
   QString file_name = "/run/media/helg/WDC/test.aac"; // Путь к медиафайлу  
   mediafile.setMedia(QUrl(file_name));// Привязываю путь до медиаобъекта
   QString bitrate = mediafile.metaData(QMediaMetaData::AudioBitRate).toString(); // Определяю битрейт медиаобъекта
   // Далее идет обработка переменных bitrate и т.д.
   .
   .
}
.
.

На данном этапе программа естественно выдает ошибки на этапе компиляции, я даже не уверен на правильном ли я пути.

 
Пометить прочитанным Создать тему
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Архив | Избранное | Мое | Новое | | |



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру