【发布时间】:2012-03-01 17:36:15
【问题描述】:
我正在尝试学习一点或两点关于 Linux 下进程通信的知识,所以我编写了 2 个相互通信的简单 C 程序。
但是,每次都必须手动运行它们有点烦人,所以我想知道有没有办法制作一个可以同时运行它们的程序,如下所示:
./runner program1 program2
我正在使用最新的 Ubuntu 和 Bash shell。
【问题讨论】:
我正在尝试学习一点或两点关于 Linux 下进程通信的知识,所以我编写了 2 个相互通信的简单 C 程序。
但是,每次都必须手动运行它们有点烦人,所以我想知道有没有办法制作一个可以同时运行它们的程序,如下所示:
./runner program1 program2
我正在使用最新的 Ubuntu 和 Bash shell。
【问题讨论】:
run.sh 脚本
#!/bin/sh
./program1 &
./program2 &
运行命令:
$sh run.sh
【讨论】:
这一行会做(在 Bash 中):
program1 & program2 &
如果要记录输出:
program1 >output1.txt & program2 >output.txt &
如果您想在两个单独的终端中运行命令:
xterm -e program1 & xterm -e program2 &
【讨论】:
为什么不用这个:
./program1;./program2
或
./program1 &;./program2 &
我不知道为什么有人认为它没有用,但它确实有效。
你当然可以写一个脚本,但脚本的内容是什么?还是一样的。
您可以一次更改它,而无需先打开脚本。
【讨论】:
只需编写一个 shell 脚本来做你想做的事——你不需要使用 C 程序来运行 C 程序。
【讨论】:
完全按照您的要求做,首先创建一个名为runner 的文件,该文件将是shell 脚本。
#!/bin/bash
for arg in $@
do
$arg &
done
$@ in bash 是传递给脚本的所有参数的数组,这使得脚本不限于仅启动 2 个程序。 请注意,您使用此脚本启动的任何程序都需要在 $PATH 上或作为./program1 传递给脚本。
./runner ./program1 program2
在示例中,program1 不在 $PATH 上,但 program2 在。
【讨论】: