我在使用多处理器和共享内存的生产者 - 消费者上进行了分配
我有一个问题如何使用execl()来执行另一个文件
在我的程序中将包含3个c文件
parent.c:父进程
producer.c:生产者流程
consumer.c:消费者流程
编译文件后 - >姓父母,生产者,消费者
如果我把目录放在我所有的文件中:/ home / assign
在parent.c中的我有一个代码来通过fork来调用producer和consumer这样的
if (fork() == 0) { /* in producer process */
/* Replace this program with producer program */
/*idea : execl => path of execution of the program*/
if (execl("/home/assign", "producer", NULL) == -1) {
perror("execl failed for producer");
cleanup_on_exit(); /* clean up before exiting */
exit(3);
}
}
if (fork() == 0) { /* in consumer process */
/* Replace this program with the consumer program */
if (execl("/home/assign", "consumer", NULL) == -1) {
perror("execl failed for consumer");
cleanup_on_exit(); /* clean up before exiting */
exit(3);
}
}
wait(NULL);
wait(NULL);
然而,当我通过Linux命令运行程序时 ./parent
显示这样的结果
execl failed for producer
execl failed for consumer
我知道路径或执行命令之间的错误
你能帮忙解决这个问题吗?
答案 0 :(得分:0)
if (execl("/home/assign/producer", "producer", NULL) == -1) {
,与消费者类似。 - wildplasser