您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在C语言中,如何在执行execvp()或类似调用时将stdin / stdout / stderr重定向到文件?

在C语言中,如何在执行execvp()或类似调用时将stdin / stdout / stderr重定向到文件?

正确的方法是替换文件描述符STDIN_FILENOSTDOUT_FILENOSTDERR_FILENO使用打开的文件dup2()。然后,您还应该在子进程中关闭原始文件

else if (pid == 0)
{
    dup2(fileno(someopenfile), STDIN_FILENO);
    dup2(fileno(someotherfile), STDOUT_FILENO);
    dup2(fileno(somethirdopenfile), STDERR_FILENO);
    fclose(someopenfile);
    fclose(someotheropenfile);
    fclose(somethirdopenfile);
    execvp(args[0], args);
    // handle error ...
}
其他 2022/1/1 18:14:29 有651人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶