c - 如何在 c 中 exec() 我的程序?

标签 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:错误地址”...我真的不知道错误来自何处

最佳答案

所以,我的问题是 req->data 是 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;
    }

关于c - 如何在 c 中 exec() 我的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48101788/

相关文章:

c - 使用 C api 调用 Ruby 函数时出现段错误

无法在 HP Loadrunner 11 中使用参数

c - 为什么这个程序会出现段错误?

C/C++ 将控制台输出保存在变量中

c - C中的strtok和strsep有什么区别

C - 自定义 qsort 不工作

对 malloc 和 free 行为感到困惑

c - 指针和 malloc 问题

c - 为什么在编程中使用常量?

c - 将指向 void* 的指针传递给 pthread_join 的目的是什么?