Запуск нескольких программ на C из программ на C под Linux - PullRequest
4 голосов
/ 01 марта 2012

Я пытаюсь немного или два узнать о взаимодействии процессов в Linux, поэтому я написал 2 простые программы на Си, которые взаимодействуют друг с другом.

Однако немного раздражает необходимость запускать их вручнуюкаждый раз, поэтому я хотел бы знать, есть ли способ создать программу, которая будет запускать их обоих, что-то вроде этого:

./runner program1 program2

Я использую последнюю версию оболочки Ubuntu и Bash.

Ответы [ 5 ]

4 голосов
/ 01 марта 2012

скрипт run.sh

#!/bin/sh
./program1 & 
./program2 &

команда запуска:

$sh run.sh
2 голосов
/ 01 марта 2012

Эта строка будет делать (в Bash):

program1 & program2 &

Если вы хотите записать вывод:

program1 >output1.txt & program2 >output.txt &

Если вы хотите выполнить команды на двух отдельных терминалах:

xterm -e program1 & xterm -e program2 &
1 голос
/ 02 марта 2012

Почему бы не использовать это:

./program1;./program2

или

./program1 &;./program2 &

Я не знаю, почему кто-то считает, что это бесполезно, но это действительно работает.

Конечно, вы можете написать сценарий, но каково содержание сценария? Все то же самое.

И вы можете изменить его сразу, без необходимости сначала открывать скрипт.

0 голосов
/ 02 марта 2012

Делайте именно то, что вы просили, сначала создайте файл с именем runner, который будет являться сценарием оболочки.

#!/bin/bash

for arg in $@
do
$arg & 
done

$@ в bash - это массив всех аргументов, передаваемых сценарию., это делает скрипт не ограниченным только запуском 2 программ. Обратите внимание, что любые программы, которые вы запускаете с помощью этих сценариев, должны быть на $PATH или переданы сценарию как ./program1.

./runner ./program1 program2 

В примере program1 не включен$PATH но program2 есть.

0 голосов
/ 01 марта 2012

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

...