Создание приложений CLI в C - PullRequest
0 голосов
/ 29 декабря 2018

Мне интересно, как сделать приложение CLI в C, которое "постоянно работает".Что я имею в виду под этим, например, я хочу просто открыть терминал и ввести ключевое слово, и функция в программе выполняется.Как то, что "ls".Когда вы набираете ls, он отображает содержимое текущего каталога.Точно так же я хочу создать программу, которая при компиляции будет выполнять определенные вещи, учитывая, что ключевое слово вызывается.Я не хочу запускать исполняемый файл с помощью ./example, но команда всегда должна быть доступна. Я использую компилятор gcc.Я прочитал, что объектный файл должен быть создан, но я не знаю, как его использовать.

Спасибо

1 Ответ

0 голосов
/ 29 декабря 2018

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

Ваша программа не должна "постоянно"выполнить "для того, чтобы вы могли вызывать его без указания пути ... вам просто нужно убедиться, что программа находится в одном из каталогов в вашем PATH, или, наоборот, что ваша переменная среды PATH включает в себя каталоггде находится ваша программа.

Итак, допустим, вы хотите скомпилировать hello.c в команду с именем hello.Вот код:

#include <stdio.h>

int main(void)    
{
  printf("Hello, world!\n");
  return 0;
}

Таким образом, вы скомпилируете это так:

> gcc -o hello hello.c

Теперь у вас должен быть исполняемый файл с именем hello в вашем текущем каталоге, и вы можете запуститьэто как:

> ./hello

Но вы просто хотите набрать hello где угодно, верно?Таким образом, вы можете добавить текущий каталог в переменную среды PATH, например:

> export PATH=$PATH:$PWD

, которая добавляет значение PWD, переменной среды, содержащей текущий каталог, в PATH, чтопеременная среды, которая содержит список каталогов, в которых оболочка будет искать исполняемые программы.

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

Другой вариант, вместо добавления каталога, содержащего hello в ваш PATH, это переместить hello в один из каталогов, уже перечисленных в PATH.Вы можете увидеть полный список, выполнив следующее:

> echo $PATH

Вы не сказали, какую ОС вы используете, но если это что-то, похожее на Unix, там, вероятно, указан /usr/local/bin.Каталоги .../bin обычно содержат исполняемые программы, а /usr/local - это поддерево каталогов, куда входят локальные дополнения к ОС.Таким образом, вы можете поместить вашу программу в /usr/local/bin, а затем (при условии, что /usr/local/bin находится в вашем PATH), hello всегда будет доступно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...