Вопрос

У меня есть проект, требующий использования семейства exec.Мой проект состоит из создания интерактивной оболочки.Оболочка реализует несколько основных команд, таких как cd, ls, echo и т. д.Я изучал использование exec, но не нашел полезного сайта.Любые предложенные ссылки помогут.

int ret;
ret = execl ("/bin/ls", "ls", "-1", (char *)0);

Как мне отобразить результат этой операции на экране?

Это было полезно?

Решение

Код, который вы написали, у меня работает в простой тестовой программе, которая больше ничего не делает.Помните: когда вы вызываете execl, процесс сохраняет все старые дескрипторы файлов.Таким образом, каким бы ни был стандартный вывод при вызове execl, он будет таким же при загрузке нового двоичного файла.Если вы просто хотите, чтобы вывод поступал на терминал, просто убедитесь, что стандартный вывод поступает на терминал.

Если вы хотите выполнять ввод-вывод с другой программой, для этого подойдет popen (как упоминалось в mgb).Он создаст новый процесс, настроит для вас систему, вызовет какой-то вариант exec и вернет дескриптор файла, который вы можете использовать для связи.

Другие советы

делает

int fd = 1;
dup(fd);
close(fd);

получает вывод на экран.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top