2012-10-21 52 views
0

我正在致力于一个C项目,其目标是使用多个进程对文件进行排序。这个文件被提供给第一个程序,即'根'进程,但是然后root会分叉并执行一个'splitter'进程,然后fork进程并执行一个'排序'进程。基本上是用于排序的进程的二叉树。你如何组织文件系统的叉和执行程序?

我的问题是如何组织文件系统中的所有这些程序。我需要3种主要的方法吗?因为当你执行主要的方法是运行正确的?如果是的话,所有3个程序不能在同一个文件夹中并且一起编译?我将不得不有3个不同的文件?

将我需要的东西是这样的: 主文件夹

根文件夹 - 分路器文件夹 - 分拣文件夹

这是第一个OS项目我有过涉及多个进程。 提前致谢

回答

0

您可以拥有一个单一的可执行文件,在每次调用fork()之后,都可以判断它是父文件还是子文件,并执行相应的代码。

+0

是好的,所以如果这个过程是一个孩子它的高管。那么这个过程将不得不从主要权利开始?或没有? – Tim

+0

@Tim - 你需要'执行'这些孩子吗?你应该可以在一个程序中做到这一点,这个程序只是“分叉”它的必要的孩子,然后依次执行他们的功能。通过这种方式,不,新的程序不会从main开始。 – Duck

+0

是的,孩子们将被执行。我不明白执行exec后会发生什么。那么孩子们的主要会被执行? – Tim

0

您仍然可以在同一个文件夹中有三个可执行文件,全部使用相同的生成文件进行编译。只是以不同的名字命名

Makefile例子:

CC = gcc 
CFLAGS = -Wall 
LDFLAGS = 

TARGET1 = program1 
TARGET2 = program2 
TARGET3 = program3 
ALL_TARGETS = $(TARGET1) $(TARGET2) $(TARGET3) 

all: $(ALL_TARGETS) 

$(TARGET1): program1.o 
    $(CC) $(LDFLAGS) -o [email protected] $< 

$(TARGET2): program2.o 
    $(CC) $(LDFLAGS) -o [email protected] $< 

$(TARGET3): program3.o 
    $(CC) $(LDFLAGS) -o [email protected] $< 

.c.o: 
    $(CC) $(CFLAGS) -c -o [email protected] $< 
相关问题