如何组织forks和execs程序的文件系统?

时间:2012-10-21 23:23:20

标签: c file exec fork main

我正在开发一个C项目,其目标是使用多个进程对文件进行排序。该文件被提供给第一个程序,即“root”进程,然后是root forks和exec到一个'splitter'进程,然后分叉并执行到'排序'进程。基本上是用于排序的二进制树。

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

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

根文件夹 - 拆分器文件夹 - 分拣机文件夹

这是我第一个涉及多个流程的os项目。 提前谢谢你

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您仍然可以在同一个文件夹中拥有三个可执行文件,所有这些文件都使用相同的makefile进行编译。只是用不同的名字命名。

示例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 $@ $<

$(TARGET2): program2.o
    $(CC) $(LDFLAGS) -o $@ $<

$(TARGET3): program3.o
    $(CC) $(LDFLAGS) -o $@ $<

.c.o:
    $(CC) $(CFLAGS) -c -o $@ $<