2009-10-07 3 views
-1

Я хочу выполнить программу на C с использованием Perl-скрипта. Что когда-либо вводится в исполняемый файл C вручную, это должно быть дано моей программой.Как запустить внешнюю программу на Perl?

Позволяет выполнить простую программу, в которой вводятся два ню. и печатает его сумму. Значения должны быть предоставлены скриптом Perl.

Просьба направлять меня через какой-то учебник, где я могу добиться того же.

ответ

5

Используйте system функцию:

system "my-c-program 1 2"; 

Если вы хотите, чтобы захватить выход из программы C в вашем PERL скрипт, а затем использовать кавычку или qx// operator:

my $output = `my-c-program 1 2`; 

Это работает my-c-program 1 2 и фиксирует стандартный вывод в новую переменную $output.

+0

Я думаю, что OP хочет выход из вызываемой программы. –

+0

U нужно направлять меня через этот процесс. Как я новичок в этом .. Или поделитесь с ним хорошим учебным пособием. – AGeek

-1

Возможно, вы после механизма цитирования backticks, который выполняет внешнюю программу и возвращает ее stdout как строку. , например.

$date = `date` 
print $date; 

будет печатать что-то вроде «Wed Oct 7 12:50:33 CEST 2009» в unix. Тем не менее, аргументы должны быть экранированы оболочкой для целей безопасности, и это может быть сложно в определенных сценариях - в большинстве случаев заражение - это путь.

Я рекомендую все новичок, чтобы перейти непосредственно к команде «системы», пока они не знают о последствиях безопасности кавычки - если это так, вы, вероятно, следуешь принимать советы @ Dave Хинтона

Для продвинутой магии вы должны прочитать perlipc perldoc.

+0

'system' и' qx // 'делают разные вещи. Что значит «* идти непосредственно для команды' system', пока они не будут осведомлены о последствиях обратной связи для обеспечения безопасности * »? Кстати, 'system' - это функция. –

+1

Это означает, что новички должны держаться подальше от задних шагов, пока они не узнают об экранировании оболочки. И да, вы правы в отношении системы. – codehead

5

Ну, если вы только учитесь запускать внешние программы в Perl - пожалуйста, сделайте одолжение и забудьте о ``.

Проблема с `` заключается в том, что вы выполняете строку с аргументами в ней, поэтому ее нужно разобрать. И это может привести к проблемам, когда параметры предоставляются пользователем.

Если вы на 100% уверены, что имеете полный контроль над параметрами и имя команды - вы можете использовать ``, но для любой другой ситуации - подумайте об использовании IPC::Run.

Это немного сложнее, но единственный факт, что он не требует анализа парсов, намного лучше. Кроме того, у вас есть полный контроль над stdin, stdout и stderr исполняемой программы - включая привязку к ним обратных вызовов!

+0

Привет, сэр .. Ур ответить немного интересный тоже мне .. Но это звучит слишком много, bcoz i ws не исключает терминологии sms .. Как я могу запустить простую программу C через perl-скрипт .. I.e. во время выполнения, когда запрос запрашивается программой C, тогда perl должен предоставить этот ввод ..С временными задержками в ч/б ... – AGeek

+0

Я не понял ур комментарий? Пожалуйста, напишите это снова и ясно, если возможно .. Anywys thnkx. – AGeek

Смежные вопросы