2012-10-21 83 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] $< 
相關問題