2014-07-17 74 views
0

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

./exeutableProgram FILE.TXT
./exeutableProgram FILE2.TXT
./exeutableProgram file3.txt

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

我该如何实现这个任务? 我需要使用fork()来制作一些程序吗?或者我需要编写一些shell脚本? 请在这方面提供一些指导。

+2

使用shell脚本? –

+0

@Mayerz是shell脚本 – Xara

+1

每个进程在不同的处理器上运行?不必要。你可能只有一个处理器,但是内核可以为你做时间切片。 – asgs

回答

3

你可以写一个bash脚本来做到这一点:

for var in "[email protected]" <-- 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. 
+0

实现此任务与脚本的帮助和使用Linux fork()之间有什么区别? – Xara

+1

'fork()'意思是写一个程序,它可以打开相同的可执行文件很多次,这和我在这里完成的一样,除了它会更加困难。 'fork()'更典型地用于客户端服务器应用程序,其中服务器分叉来处理每个客户端。 –

+0

我没有写太多脚本。你能解释我$ var&正在做什么。当我调用这个脚本时,我可以发出多个参数吗? – Xara

1

如果你的Linux版本安装包util-linux,您可以使用taskset命令来启动一个特定的CPU中的过程。要在核心0和核心5上启动程序:

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