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

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

Я где-то видел, что «bash используется для взаимодействия с ядром Linux».

Это применимо только к терминалу? Или каждая программа (включая программы с графическим интерфейсом) должна проходить через оболочку, чтобы завершить процесс, который она хочет сделать?

(Представьте, что мы раскрашиваем фотографию. Откуда bash знает, что мы делаем? Есть ли третья сторона между gimp и bash, которая конвертирует их в bash?)

Было бы очень полезно, если бы вы привели пример для объяснения :)

решение1

Нет. Только пользователи должны проходить через оболочку, чтобы общаться с ядром. Приложения используютAPI-интерфейсы.

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

  1. С помощью оболочки интерфейса командной строки (CLI), такой как bash, я могу использовать rmкоманду для удаления файла.
  2. С оболочкой GUI (например, Unity или GNOME Shell) я могу использовать что-то еще, например, файловый менеджер, чтобы удалить файл. Оболочке GUI, в свою очередь, не нужно использовать оболочку CLI.

Оба файловых менеджера и rmв свою очередь могут использовать функцию unlink(3)(или более высокого уровня remove(3)) (илисистемный вызов) для выполнения фактической работы.

Связанный контент