3.2.1. Функция system()
Функция system() определена в стандартной библиотеке языка С и позволяет вызывать из программы системную команду, как если бы она была набрана в командной строке. По сути, эта функция запускает стандартный интерпретатор Bourne shell (/bin/sh) и передает ему команду на выполнение. Например, программа, представленная в листинге 3.2, вызывает команду ls -l /, отображающую содержимое корневого каталога.
Листинг 3.2. (system.c) Использование функции system()
return_value = system(«ls -l /»);
Функция system() возвращает код завершения указанной команды. Если интерпретатор не может быть запущен, возвращается значение 127, а в случае возникновения других ошибок — -1.
Поскольку функция system() запускает интерпретатор команд, она подвержена всем тем ограничениям безопасности, что и системный интерпретатор. Рассчитывать на наличие какой-то конкретной версии Bourne shell не приходится. В большинстве UNIX-систем программа /bin/sh представляет собой символическую ссылку на другой интерпретатор. В Linux — это bash (Bourne-Again SHell), причем в разных дистрибутивах присутствуют разные его версии. Вызов из функции system() программы с привилегиями пользователя root также может иметь неодинаковые последствия в разных системах. Таким образом, лучше создавать процессы с помощью функций fork() и exec().
Читайте также
System V API
System V API Этот набор API является базовым для второй ветви[6] UNIX — System V (AT&T Unix System V). Как и оба предыдущих, этот набор API самодостаточен для реализации практически всех возможностей ОС, но использует для этого совершенно другие модели, например сетевую абстракцию TLI вместо
Ранняя AS/400 (она же System/38)
Ранняя AS/400 (она же System/38) В конце 1985 небольшая группа разработчиков из Рочестера продемонстрировала, что на System/38 можно создать среду для программного обеспечения System/36. Стоимость оборудования снизилась настолько, что мы теперь могли создавать малые модели System/38. Это
System V UNIX
System V UNIX Начиная с 1975 года фирма AT&T начала предоставлять лицензии на использование операционной системы как научно-образовательным учреждениям, так и коммерческим организациям. Поскольку основная часть системы поставлялась в исходных текстах, написанных на языке С,
system
system Местонахождение: WINDOWSsystem32config Файл system (обратите внимание, что файл без расширения) содержит раздел реестра
ГЛАВА 3 System V IPC
ГЛАВА 3 System V IPC 3.1. Введение Из имеющихся типов IPC следующие три могут быть отнесены к System V IPC, то есть к методам взаимодействия процессов, соответствующим стандарту System V:? очереди сообщений System V (глава 6);? семафоры System V (глава 11);? общая память System V (глава 14).Термин «System V IPC»
7.3.1.1. System V IPC
7.3.1.1. System V IPC Средства System V IPC — средства передачи сообщений, основанные на имеющихся в System V возможностях общей памяти, которые были описаны ранее.Программы, взаимодействующие с помощью System V IPC, обычно определяют общие протоколы, основанные на обмене короткими (до 8 Кб)
System Сор
System Сор Производитель: Mahaon soft (http://mahaonsoft.com).Статус: коммерческая.Страница для скачивания: http://mahaonsoft.com/downloads.html.Размер: 800 Кбайт.На первый взгляд, эта программа напоминает MagicTweak (см. выше) (рис. 5.35). Действительно, некоторое сходство в интерфейсе есть. В левой части окна
System Mechanic
System Mechanic Производитель: iolo technologies (http://www.iolo.com).Статус: коммерческая.Страница для скачивания: http://www.iolo.com/download.cfm.Размер: 7,8 Мбайт.После запуска System Mechanic вы увидите окно, которое можно условно разделить на три части (рис. 5.36). В левой находятся пункты меню, каждое из которых
7.3.1.1. System V IPC
7.3.1.1. System V IPC Средства System V IPC — средства передачи сообщений, основанные на имеющихся в System V возможностях общей памяти, которые были описаны ранее.Программы, взаимодействующие с помощью System V IPC, обычно определяют общие протоколы, основанные на обмене короткими (до 8 Кб)
System.DateTime и System.TimeSpan
System.DateTime и System.TimeSpan В завершение нашего обзора базовых типов данных позволите обратить ваше внимание на то, что пространство имен System определяет несколько полезных типов данных, для которых в C# не предусмотрено ключевых слов. Это, в частности, типы DateTime и TimeSpan (задачу
Тип System.GC
Тип System.GC Библиотеки базовых классов предлагают тип класса System.GC, который позволяет программно взаимодействовать со сборщиком мусора, используя множество статических членов указанного класса. Следует заметить, что непосредственно использовать этот тип в программном
Базовые классы System.MulticastDelegate и System.Delegate
Базовые классы System.MulticastDelegate и System.Delegate Таким образом, при создании типов c помощью) ключевого слова delegate в C# вы неявно объявляете тип класса, являющегося производным от System.MulticastDelegate. Этот класс обеспечивает своим потомкам доступ к списку с адресами тех методов, которые
Тип System.Web.UI.Page
Тип System.Web.UI.Page Первым интересующим нас родительским классом является сам класс Page. Ниже описаны его многочисленные свойства, обеспечивающие возможность взаимодействия с различными Web-примитивами, такими как переменные приложения и сеанса, запросы и ответы HTTP, темы и т.д.
Тип System.Web.UI.Control
Тип System.Web.UI.Control Базовый класс System.Web.UI.Control определяет различные свойства, методы, и события, которые позволяют взаимодействовать с базовыми членами Web-элемента управления (обычно не относящимися к графическому интерфейсу). В табл. 23.9 предлагаются описания некоторых таких
System c что это
system() выполняет команды, указанные в string , вызывая в свою очередь команду /bin/sh -c string , и возвращается, когда команда выполнена. Во время выполнения команды SIGCHLD будет заблокировано, а SIGINT и SIGQUIT будут игнорироваться.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
При ошибках возвращается значение -1, иначе возвращается статус выполнения команды. Этот возвращаемый статус определяется форматом, указанном в wait (2). Таким образом, код выхода из команды будет равен WEXITSTATUS(status) . Если не может быть запущено /bin/sh , то тогда статус выхода будет такой, как при выполнении exit(127) .
Если string равно NULL , то system() возвращает ненулевой результат при условии, что есть доступ к оболочке shell, и ноль, если доступа нет.
system() не отражается на дочерних процессах.
СООТВЕТСТВИЕ СТАНДАРТАМ
ANSI C, POSIX.2, BSD 4.3
ЗАМЕЧАНИЯ
Крайне неудобно, что system() игнорирует SIGINT и SIGQUIT. Это может привести к тому что программы вызывающие ее из цикла станут неприрываемыми, пока сами не проверят условия выхода для своих дочерних процессов. Например,
while(something) < int ret = system("foo"); if (WIFSIGNALED(ret) && (WTERMSIG(ret) == SIGINT || WTERMSIG(ret) == SIGQUIT)) break;
Не используйте system() в программах с привилегиями suid или sgid, потому что некоторые значения переменных окружения могут вызвать сбои в системе. Вместо нее рекомендуется использование семейства функций exec (3), но не execlp (3) или execvp (3). system() неправильно функционирует в программах с привилегиями suid или sgid тех систем, где /bin/sh заменено на bash версии 2, так как bash 2 обнуляет права при запуске. Debian использует измененный bash, который не производит при запуске этого действия так, как это делает sh .
Проверка доступности /bin/sh не производится, так как всегда подразумевается, что доступ к нему есть. ISO C описывает процесс проверки, а POSIX.2 говорит, что возвращаемое значение никогда не равно нулю, так как shell всегда считается установленным.
Существует возможность, что команда оболочки возвратит значение 127, но это неявное доказательство неуспешного вызова execve() ; проверьте errno для того, чтобы в этом удостовериться.
SystemC
SystemC — язык проектирования и верификации моделей системного уровня, реализованный в виде C++ библиотеки с открытым исходным кодом. [1] Библиотека включает в себя ядро событийного моделирования, что позволяет получить исполняемую модель устройства. Язык применяется для построения транзакционных и поведенческих моделей, а также для высокоуровневого синтеза.
Язык SystemC использует ряд понятий, схожих с теми, которые имеют языки описания аппаратуры VHDL и Verilog: интерфейсы, процессы, сигналы, событийность, иерархия модулей. Стандарт SystemC не вносит ограничения на использование языка C++ при описании моделей систем.
Разработан черновик стандарта на синтез SystemC, целью которого является определить подмножество языков С++ и SystemC, пригодное для поведенческого и RTL синтеза. [2]
Стандарты
- IEEE Std. 1666-2005 IEEE Standard SystemC Language Reference Manual [3]
Пример
Пример описания модели сумматора:
#include "systemc.h" // подключение заголовочного файла библиотеки SystemC SC_MODULE(adder) // декларация модуля (класса) sc_inint> a, b; // порты sc_outint> sum; void do_add() // процесс sum = a + b; > SC_CTOR(adder) // конструктор SC_METHOD(do_add); // регистрация процесса do_add в ядре моделирования sensitive ; // список чувствительности процесса do_add > >;
Особенности языка
Модули (module)
Модули - базовые строительные блоки в SystemC. Модель в SystemC обычно состоит из нескольких модулей, которые общаются через порты.
Сигналы (signal)
Сигналы в SystemC являются эквивалентом посылки по проводу (wire).
Порты (port)
Через порты происходит общение модуля с внешним миром (обычно с другими модулями).
Процессы (process)
Процессы - главные вычислительные элементы. Процессы выполняются параллельно.
Каналы (channel)
Через каналы в SystemC происходит общение элементов. Каналы могут быть простыми проводами или сложными соединительными механизмами наподобие очередей FIFO или шин.
Интерфейсы (interface)
Порты используют интерфейсы для общения через каналы.
События (events)
Должны быть описаны во время инициализации. Позволяют синхронизировать процессы.
Типы данных
SystemC содержит несколько типов данных, поддерживающих моделирование аппаратуры.
Расширение стандартных типов:
- sc_int<> 64-разрядное знаковое целое число
- sc_uint<> 64-разрядное беззнаковое целое число
- sc_bigint<> знаковое целое число произвольной разрядности
- sc_biguint<> беззнаковое целое число произвольной разрядности
- sc_bit 2-значный бит
- sc_logic 4-значный бит
- sc_bv<> вектор (одномерный массив) из sc_bit
- sc_lv<> вектор sc_logic
Типы чисел с фиксированной точкой (Fixed point types):
- sc_fixed<> templated signed fixed point
- sc_ufixed<> templated unsigned fixed point
- sc_fix untemplated signed fixed point
- sc_ufix untemplated unsigned fixed point
Список приложений, поддерживающих SystemC
- AldecActive-HDL, Riviera [4] , совместное моделирование.
- Cadence Design Systems C-to-Silicon Compiler [5] , синтез.
- Synopsys System Studio [6] , моделирование, анализ, верификация.
- Mentor Graphics Catapult C Synthesis [7] , синтез.
- Forte Design Systems Cynthesizer [8] , синтез.
- Calypto SLEC System [9] , анализ кода.
- Jeda Validation Tools Suite [10] , анализ кода.
- SystemCrafter SystemCrafter SC [11] , синтез.
Примечания
- ↑About SystemC (англ.) . — краткое описание языка SystemC. (недоступная ссылка — история) Проверено 13 августа 2009.
- ↑OSCI Drafts Under Public Review (англ.) . — список черновиков стандартов OSCI. Архивировано из первоисточника 21 марта 2012.Проверено 13 августа 2009.
- ↑IEEE-SA GetIEEE 1666 Terms of Use
- ↑Aldec — Technologies — SystemC
- ↑Cadence C-to-Silicon Compiler
- ↑System Studio
- ↑Catapult C Synthesis — Correct-by-Construction, High-Quality RTL, 10-100x Faster — Mentor Graphics
- ↑Cynthesizer Closes the ESL-to-Silicon Gap
- ↑Calypto | SLEC System
- ↑JEDA Products | ESL Model Validation Automation
- ↑SystemCrafter — Products
См. также
- Программное обеспечение по алфавиту
- Библиотеки C++
- САПР
- Стандарты IEEE
- Языки описания аппаратуры
- Языки проектирования
Wikimedia Foundation . 2010 .
- Syslinux
- System Idle Process
Полезное
Смотреть что такое "SystemC" в других словарях:
- SystemC — is often thought of as a hardware description language like VHDL and Verilog, but is more aptly described as a system description language , since it exhibits its real power during transaction level modeling and behavioral modeling. SystemC is a… … Wikipedia
- SystemC — ist eine Modellierungs und Simulationssprache insbesondere für die Entwicklung von komplexen elektronischen Systemen, die sowohl Hardware als auch Softwarekomponenten enthalten. Im Gegensatz zu reinen Hardwarebeschreibungssprachen (wie VHDL und… … Deutsch Wikipedia
- SystemC — es frecuentemente descrito como un lenguaje de descripción de hardware como son VHDL y Verilog, pero es más adecuado describirlo como un lenguaje de descripción de sistemas, puesto que es realmente útil cuando se usa para modelar sistemas a nivel … Wikipedia Español
- SystemC — es frecuentemente descrito como un lenguaje de descripción de hardware como son VHDL y Verilog, pero es más adecuado describirlo como un lenguaje de descripción de sistemas, puesto que es realmente útil cuando se usa para modelar sistemas a nivel … Enciclopedia Universal
- SystemC — Introduction SystemC est souvent présenté comme un langage de description de matériel, au même titre que VHDL ou verilog. En fait, SystemC est un langage de description de plus haut niveau, puisqu il permet une modélisation de systèmes au niveau… … Wikipédia en Français
- Hardware description language — In electronics, a hardware description language or HDL is any language from a class of computer languages and/or programming languages for formal description of electronic circuits. It can describe the circuit s operation, its design and… … Wikipedia
- Transaction-level modeling — (TLM) is a high level approach to modeling digital systems where details of communication among modules are separated from the details of the implementation of functional units or of the communication architecture. Communication mechanisms such… … Wikipedia
- NCSim — Incisive Developer(s) Cadence Design Systems Operating system Cross platform Type Simulator License proprietary … Wikipedia
- Juzzle — est une plateforme de développement open source de mise au point et d exploitation de simulateurs, utilisée depuis de nombreuses années dans les domaines de la simulation scientifique par la communauté industrielle française. Cet environnement se … Wikipédia en Français
- Verilog — Класс языка: Язык описания аппаратуры Появился в: 1983 1984 Автор(ы): Phil Moorby, Prabhu Goel Расширение файлов: .v Verilog, Verilog HDL (англ. Verilog Hardwar … Википедия
- Обратная связь: Техподдержка, Реклама на сайте
- Путешествия
Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.
- Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
- Искать во всех словарях
- Искать в переводах
- Искать в ИнтернетеИскать в этой же категории
system , _wsystem
Этот API нельзя использовать в приложениях, выполняемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.
Синтаксис
int system( const char *command ); int _wsystem( const wchar_t *command );
Параметры
command
Команда для выполнения.
Возвращаемое значение
Если параметр command имеет значение NULL и найден интерпретатор команд, возвращает ненулевое значение. Если интерпретатор команды не найден, возвращает значение 0 и задает errno значение ENOENT . Если command это не NULL так, system возвращает значение, возвращаемое интерпретатором команд. Она возвращает значение 0, только если интерпретатор команд возвращает значение 0. Возвращаемое значение -1 указывает на ошибку и errno имеет одно из следующих значений:
| значение | Description |
|---|---|
| E2BIG | Список аргументов (который зависит от системы) слишком велик. |
| ENOENT | Не удается найти интерпретатор команд. |
| ENOEXEC | Невозможно выполнить файл интерпретатора команд, так как формат недействителен. |
| ENOMEM | Недостаточно памяти доступно для выполнения команды; или доступная память повреждена; или недопустимый блок существует, который указывает, что вызывающий процесс был выделен неправильно. |
Дополнительные сведения о кодах возврата см. в разделе errno , _doserrno _sys_errlist и _sys_nerr .
Замечания
Функция system передает параметр command интерпретатору команд, который выполняет эту строку как команду операционной системы. Для поиска файла интерпретатора команд CMD.exe функция system использует переменные среды COMSPEC и PATH . Если параметр command имеет значение NULL , функция только проверяет, существует ли интерпретатор команд.
Перед вызовом system необходимо явно очистить или fflush _flushall закрыть любой поток.
_wsystem — это версия system с расширенными символами; аргумент command для _wsystem — строка расширенных символов. В остальном эти функции ведут себя одинаково.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Сопоставления подпрограмм универсального текста
| TCHAR.H Обычной | _UNICODE и _MBCS не определен | _MBCS Определенные | _UNICODE Определенные |
|---|---|---|---|
| _tsystem | system | system | _wsystem |
Требования
| Маршрут | Обязательный заголовок |
|---|---|
| system | или |
| _wsystem | или или |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
В этом примере функция system используется для печати (TYPE) текстового файла.
// crt_system.c #include int main( void )
Входные данные: crt_system.txt
Line one. Line two.
Выходные данные
Line one. Line two.