如何使用execl()执行另一个程序

时间:2013-12-04 17:07:28

标签: c fork consumer producer

我在使用多处理器和共享内存的生产者 - 消费者上进行了分配

我有一个问题如何使用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

我知道路径或执行命令之间的错误

你能帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

if (execl("/home/assign/producer", "producer", NULL) == -1) {,与消费者类似。 - wildplasser