Как я могу записать вывод вызова execve?

Я написал эту простую программу. Я хочу, чтобы выходные данные были зарегистрированы в test.log, как показано ниже. Могу ли я сделать это?

int main(int argc, char **argv)
{
      int fd = open("test.log", O_CREAT|O_WRONLY);
      char *path[2];
      path[0] = "/bin/ls";
      path[1] = NULL;

      execve((char *)&path[0], &path, NULL);

      close(fd);
      return 0;
}

1 ответ

Рабочий раствор, руководствуясь Ричи.

int main(int argc, char **argv)
{
        int fd = open("test.log", O_CREAT|O_WRONLY, 0600);
        char *path[2];
        path[0] = "./tes";
        path[1] = NULL;

        dup2(fd, 1);
        dup2(fd, 2);
        close(fd);

        execve(path[0], (char **)&path, NULL);

        return EXIT_FAILURE;
}
Другие вопросы по тегам