Как запустить x11vnc через сокет (т.е. только при необходимости)

Нет способа передать аргумент между исполняемыми файлами, если он превышает ограничение ARG_MAX ядра.

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

Синтаксис: xargs команда <файл. Если вы опустите команду, она отобразит свои аргументы, например эхо.

В качестве демонстрации

xargs -n 4 </etc/motd

напечатает первые четыре токена в одной строке (первый вызов), следующие четыре — в другой и т. д. (Аргумент -n устанавливает максимальное количество аргументов, так что ограничение ARG_MAX вообще не используется.)

Если команда, которую вы хотите запустить, имеет нежелательные побочные эффекты, это может не сработать. Например, если команда command перезапишет любой ранее существовавший файл ./a.out, вы, очевидно, останетесь с результатами только последнего запуска после его завершения.

Если вы можете настроить или изменить команду так, чтобы она читала файл или стандартный ввод вместо аргумента командной строки, это позволит обойти ограничение. Файл или поток может быть намного больше, чем ARG_MAX, и часто так и есть.

1
21.05.2016, 21:54
0 ответов

Теги

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