Проблема с передачей по каналу команд в C

Я думаю, что необходимо будет объединить несколько этих ответов для получения то, что Вы хотите. Если Вы используете nohup в сочетании с точкой с запятой и обертываете все это в кавычки, то Вы добираетесь:

ssh user@target "cd /some/directory; nohup myprogram > foo.out 2> foo.err < /dev/null"

, который, кажется, работает на меня. С nohup Вы не должны добавлять & к команде, которая будет выполнена. Кроме того, если Вы не должны читать ни один вывод команды, можно использовать

ssh user@target "cd /some/directory; nohup myprogram > /dev/null 2>&1"

для перенаправления всего вывода к/dev/null.

10
задан Bill the Lizard 19 September 2012 в 16:32
поделиться

2 ответа

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

Просто догадываюсь, я не запускал код.

3
ответ дан 4 December 2019 в 04:21
поделиться

Когда я набираю «ls | wc», wc работает так, как ожидалось, и выводит количество слов, выводимых командой ls. Помните, что когда вы передаете команды по конвейеру, используя "|" вам не нужно создавать каналы в вашем приложении. Первая команда должна выводить на стандартный вывод, а вторая команда должна читать этот вывод из стандартного in.

0
ответ дан 4 December 2019 в 04:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: