Perl, передающий некоторых по каналу из сценария и некоторых на экран

Вы пробовали g_content_type_get_icon ()?

Вы, возможно, должны были бы звонить g_content_type_from_mime_type () сначала.

Документы GContentType

1
17.07.2012, 19:07
2 ответа

При помощи различных дескрипторов файлов.

По умолчанию у Вас будут оба STDOUT и STDERR. print функция в Perl является действительно стенографией для print STDOUT.

В Вашем терминале STDOUT дан дескриптор файла 1 и STDERR дан дескриптор файла 2.

Вот пример печати к каждому дескриптору файла и перенаправления каждого к/dev/null.

$ perl -e 'print STDOUT "foo\n"; print STDERR "bar\n";'
foo
bar
$ perl -e 'print STDOUT "foo\n"; print STDERR "bar\n";' 1> /dev/null
bar
% perl -e 'print STDOUT "foo\n"; print STDERR "bar\n";' 2> /dev/null
foo
  • Первая команда печатает обоих.
  • Вторая команда выбрасывает STDOUT и печать только STDERR
  • Третья команда выбрасывает STDERR и печать только STDOUT

Можно также объявить собственные дескрипторы файлов (например, файл журнала) и распечатать к этому вместо этого. Посмотрите perldoc -f open.

3
27.01.2020, 23:21
  • 1
    я не могу выполнить perldoc, системные катастрофические отказы. Вы могли отметить, как объявить мой собственный недескриптор файла? –  Hermann Ingjaldsson 17.07.2012, 22:45
  • 2
    Просто печать к STDOUT. Это перейдет к экрану. –  bahamat 17.07.2012, 22:46
  • 3
    я знаю, что, существует STDOUT и STDERR, но я должен сделать свой собственный, третий дескриптор, который я могу передать по каналу конкретно из программы. А-ч –  Hermann Ingjaldsson 17.07.2012, 22:47
  • 4
    Возможно, можно разъяснить вопрос с некоторым примером кода и где Вы хотите, чтобы вывод пошел. –  bahamat 17.07.2012, 22:49
  • 5
    я хочу, чтобы некоторый вывод перешел к экрану и некоторым, чтобы быть переданным по каналу 'числом> some_bash_script'. Извините, но пример кода точно, что я пропускаю. –  Hermann Ingjaldsson 17.07.2012, 22:52

Вы, вероятно, хотите прочитать perlipc документацию, в особенности раздел по Именованным каналам.

http://perldoc.perl.org/perlipc.html#Named-Pipes

perlipc - Межпроцессное взаимодействие Perl (сигналы, fifos, каналы, безопасные подпроцессы, сокеты и семафоры)

Если Вам нужно двухсторонний (чтение и запись) связь с внешней программой, то IPC:: Open2 или IPC:: модули Open3 (стандартный lib жемчуга, также зарегистрированный в URL выше), будут полезны.

1
27.01.2020, 23:21

Теги

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