我有一个使用多处理器和共享内存的生产者-消费者任务
我有一个问题如何使用 execl() 执行另一个文件
在我的程序中将包含 3 个 c 文件
parent.c : 父进程
producer.c :生产者进程
consumer.c :消费者进程
在我编译文件后 -> 名称 parent,producer,consumer
如果我放目录,我放的所有文件都是:/home/assign
在 parent.c 我有一个代码可以像这样通过 fork 调用生产者和消费者
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
我知道路径或执行命令之间有问题
你能帮忙吗