Выполнить команду оболочки, используя потоки c ++

1

Можно ли выполнить команду оболочки, создав поток, то есть без использования popen/system или любого из вариантов fork-exec? Почему или почему нет?

Чтобы предоставить больше контекста, я запускаю многопоточную программу, где один из потоков должен выполнять сценарий оболочки. В настоящее время он использует popen(). Однако, поскольку разветвление в многопоточной программе считается плохой практикой, можно ли добиться того же путем нереста потока?

  • 0
    Я не вижу никаких примеров в Интернете. Не могли бы вы привести пример того, как можно выполнить команду оболочки, используя потоки в C ++?
  • 0
    Я не понимаю Если я хочу выполнить команду "ls", я могу создать систему ("ls") на C ++. Как я могу использовать потоки STD, чтобы сделать то же самое?
Показать ещё 3 комментария
Теги:
multithreading

1 ответ

1

Здесь полезно резюме по многопоточным и fork + exec потенциальным проблемам: http://www.linuxprogrammingblog.com/threads-and-fork-think-twice-before-using-them

Похоже, что если вы хотите выполнять другие программы и даже сценарии оболочки, вам нужно использовать fork + exec, это неизбежно. Просто будьте осторожны и подготовьте свои темы для такого "плохого" события, как fork. Также вы можете закрыть все ненужные дескрипторы файлов в специальном однопоточном доверенном помощнике выполнения, который запускается из основного приложения, если это проблема.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню