执行c ++程序的多个进程

时间:2014-07-17 05:47:11

标签: c++ linux fork

我有一个C ++程序。我在LInux上执行它。我想用不同的参数执行这个程序的多个实例。例如:

./ exeutableProgram file.txt
./exeutableProgram file2.txt
./exeutableProgram file3.txt

换句话说,我想创建多个进程,使每个进程在不同的处理器上运行。

我怎样才能完成这项任务? 我需要使用fork()制作一些程序吗?或者我需要编写一些shell脚本? 请在这方面提供一些指导。

2 个答案:

答案 0 :(得分:3)

您可以编写一个bash脚本来执行此操作:

for var in "$@" <-- loops over all of the arguments and sets them to var.
do
    /path/to/executableProgram $var & <-- executes the program with current var 
                                          as argument, & means background process.
done

&将介绍该过程,并且应由操作系统将它们分配给不同的核心。

然后你可以打电话给:

./Script file*.txt  <-- '*' is the wildcard character meaning all files with 
                         the signature file??.txt (file1.txt, file2.txt etc) will
                         all become arguments. 

答案 1 :(得分:1)

如果在Linux发行版上安装util-linux软件包,则可以使用taskset命令在特定CPU上启动进程。要在核心0和核心5上启动程序:

$ taskset 0x1 ./executableProgram file.txt
$ taskset 0x20 ./executableProgram file2.txt