我怎样才能在c中执行我的程序?

时间:2018-01-04 18:56:13

标签: c

我正在尝试使用execl()函数在c中运行我的程序。 目前,应运行程序的代码片段如下所示,info_proc位于info_proc.c文件中,其中main包含printf。

`switch(fork()) {
   case -1:
      perror("fork");
      exit(EXIT_FAILURE);
   case 0:
      getcwd(dir, 256);
      strcat(dir, "/info_proc");
      printf("dir %s", dir);
      execl(dir, "info_proc", req->data, NULL);
      perror("execl");
      exit(EXIT_FAILURE);
    default:
      wait(NULL);
      break;
}

`

我的程序返回" execl:错误的地址"执行...我真的没有看到错误来自哪里

1 个答案:

答案 0 :(得分:0)

所以,我的问题是req->数据是pid_t。 以下是我解决问题的方法(感谢cdark,usr2564301和Fred Larson !!)

char *dir = malloc(sizeof(char) * 256);
    switch(fork()) {
        case -1:
            perror("fork");
            exit(EXIT_FAILURE);
        case 0:
            getcwd(dir, 256);
            strcat(dir, "/info_proc");
            printf("dir %s", dir);
            char *pid = malloc(10 * sizeof(char));
            sprintf(pid, "%d", req->data);
            execl(dir, "info_proc", pid, NULL);
            perror("execl");
            exit(EXIT_FAILURE);
        default:
            wait(NULL);
            break;
    }