c shell system programming tutorial with examples
Цей підручник дає детальний звіт про оболонку C ++ або виклик system (), який використовується для виклику команди операційної системи із програми C ++.
У світі програмування програмного забезпечення більшість API операційної системи націлені на C. Мова C ++ забезпечує пряму підтримку виклику функцій C із коду C ++.
Отже, у цьому випадку C ++ також стає системною мовою програмування. C ++ надає команду “system ()” для виклику команд операційної системи із програми C / C ++.
Іншими словами, можна сказати, що команда system () виконує команду оболонки C ++. У цьому підручнику ми детально обговоримо виконання команди оболонки або системи ().
=> Ознайомтеся з простими навчальними серіями C ++ тут.
Як відкрити торрентовані файли
Що ви дізнаєтесь:
- Системні дзвінки на C ++
- Пауза системи C ++
- Функції системи проти бібліотеки
- Висновок
- Рекомендована література
Системні дзвінки на C ++
Тепер обговоримо системний виклик та його деталі на прикладах.
Прототип функції: система int (команда const char *);
Параметри:
command => C-рядок, що містить команду, яку потрібно виконати.
Якщо передано нульовий покажчик, виконується лише перевірка для командного процесора.
Повернене значення: Повертає значення int. Повернене значення залежить від того, вказано рядок у стилі С як аргумент, або вказано нульовий покажчик.
- Нульовий покажчик => Якщо вказано нульовий покажчик, він повертає ненульове значення, якщо доступний командний процесор, і нульове в іншому випадку.
- Вказана команда => Коли команда вказана, зазвичай повертається код стану, але повернене значення залежить від реалізації системи та бібліотеки.
Опис: Системна команда виконує команду, яка подається як аргумент. Значення, яке повертається при виконанні команди, як правило, залежить від реалізації системи та бібліотеки. Якщо замість команди передано нульовий вказівник, тоді цей виклик просто перевіряє, доступний чи ні командний процесор.
Виклик повертає ненульове значення, якщо доступний командний процесор, і нульове в іншому випадку.
Використовуючи system (), ми можемо запустити майже будь-яку команду за умови, що операційна система це дозволяє. Наприклад, ми можемо запускати систему (“dir”) або систему (“ls”) з однаковою легкістю. Насправді ми можемо навіть викликати компілятор GCC з нашої програми.
Нижче наведено кілька прикладів системних команд, які використовуються в C ++ для виконання команд оболонки C ++.
Приклад 1:
У цьому прикладі показано демонстрацію системної команди з нульовим покажчиком як аргумент.
#include #include using namespace std; int main () { int i; cout<< 'Check if command processor is available...'< Вихід:

У наведеній вище програмі ми спочатку перевіряємо, чи доступний командний процесор, передаючи null системному виклику. Якщо доступний командний процесор, ми виконуємо команду dir. Якщо командний процесор недоступний, ми виходимо з програми з помилкою.
Приклад 2:
У наведеному нижче прикладі показано виконання команди ls, в якій вихід передається у текстовий файл “output.txt”. Після виконання виклику system () ми друкуємо вміст output.txt.
#include #include #include int main() { std::system('ls -l >output.txt'); // execute the UNIX command 'ls -l >test.txt' std::cout << std::ifstream('output.txt').rdbuf(); }
Вихід:

Результатом роботи вищевказаної програми є вміст файлу “output.txt”, який є не чим іншим, як результатом команди ls.
Приклад 3:
Наведена нижче програма C ++ є продовженням попереднього прикладу. Тут ми виконуємо команду ls, яка перенаправляється на output.txt за допомогою системного виклику. Потім ми виконуємо ще один системний виклик за допомогою команди “rm” (видалити) для видалення файлу output.txt.
Після цього ми знову виконуємо команду ls і цього разу перенаправляємо висновок в інший файл, тобто text.txt. Нарешті, ми друкуємо вміст файлу text.txt.
#include #include #include using namespace std; int main() { // execute the UNIX command 'ls -l >output.txt' system('ls -l >output.txt'); cout << ifstream('output.txt').rdbuf(); // execute the UNIX command 'rm output.txt' system('rm output.txt'); cout<<'removed output.txt'<text.txt' cout<<'ls after removing output.txt & creating text.txt'<text.txt'); cout << ifstream('text.txt').rdbuf(); }
Вихід:

Пауза системи C ++
Команда system (“pause”) тимчасово зупиняє операції при виконанні. Системний ('пауза') виклик залежить від операційної системи і виконує наступні кроки:
- Цей виклик тимчасово призупиняє програму, а також сигналізує операційній системі про відкриття оболонки операційної системи.
- Операційна система виділяє пам’ять для виконання команди.
- Потім він звільняє пам’ять, виходить з операційної системи та відновлює призупинену програму.
Наступна програма показує приклад системного виклику (“пауза”).
#include #include using namespace std; int main () { cout << 'Hello World!' << endl; system('pause'); return 0; }
Вихід:

Як уже зазначалося, системний ('пауза') дзвінок дуже повільний і залежить від операційної системи. Вищезгадані кроки важкі для виконання.
Крім того, системні дзвінки можуть також становити певні ризики для безпеки. Тому ми, як правило, не покладаємось на системні виклики («пауза») у наших програмах.
Натомість ми можемо використовувати cin.get для досягнення тієї ж функціональності, що і система (“пауза”), як показано в програмі нижче.
#include #include using namespace std; int main () { cout << 'This is SoftwareTestingHelp.com' << endl; cin.get(); // same as getchar() return 0; }
Вихід:

Як показано вище, ми можемо використовувати cin.get, щоб призупинити вихід, поки ми не натиснемо якусь клавішу. На відміну від системи (“пауза”) не залежить від операційної системи. Він також не слідує крокам, виконаним під час запуску системи (“пауза”).
Функції системи проти бібліотеки
Системні дзвінки залежать від операційної системи. Вони також дуже повільні та важкі за ресурсами. Функції бібліотеки не залежать від ОС. Вони швидші і не споживають занадто багато ресурсів або пам'яті.
Найпоширеніші способи використання системних викликів - це системні (“пауза”) та системні (“cls”) команди. Бібліотечні функції - це вбудовані функції, що містять функції, пов’язані з математикою, введенням-виведенням файлів тощо.
Висновок
У цьому посібнику з оболонки C ++ ми обговорили різні системні функції. Ми бачили приклади передачі нульового вказівника на системну команду, яка перевіряє, доступний чи ні командний процесор. Ми також детально обговорили команду system (“pause”) та її альтернативи.
=> Перевірте ВСІ підручники з C ++ тут.
Рекомендована література
- Сортування оболонки в C ++ з прикладами
- Підручник зі створення сценаріїв Unix Shell із прикладами
- Типи циклів оболонки Unix: виконуйте в той час, як цикл, для циклу, до циклу в Unix
- Приклади арифметичних та булевих операторів сценарію оболонки Unix
- Функції скрипта оболонки Unix з параметрами та поверненням
- Розширений скрипт оболонки Unix: масиви, оператори тестування файлів і рядків, спеціальні змінні
- Підручник із регулярних виразів C ++: регулярні вирази на C ++ з прикладами