gpt4 book ai didi

C 将 stdout 定向到文件,然后重置

转载 作者:太空宇宙 更新时间:2023-11-03 23:21:01 25 4
gpt4 key购买 nike

我想更改文件描述符,以便将我的 execvp 命令发送到文件。之后,我想将 stdout 重置回控制台。

这是我目前所拥有的:

int main() {
printf("to console\n");
int stdoutfd = dup(STDOUT_FILENO);
FILE* file = fopen("./test.txt","ab+");
int filefd = fileno(file);
dup2(filefd,STDOUT_FILENO);
char *args[] = {"ls","-la",NULL};
execvp(args[0],args);
dup2(stdoutfd,STDOUT_FILENO);
close(stdoutfd);
printf("to console\n");
}

第一个 printf 打印到控制台,然后“ls -la”命令上的 execvp 被打印到 test.txt 文件,但我的问题是第二 printf 不打印任何地方。

我发现类似的问题已在 C restore stdout to terminal ,但该解决方案似乎不起作用。

最佳答案

没有后续了。 execvp 函数调用替换了您的进程。如果成功,您的其余代码将不会执行。

关于C 将 stdout 定向到文件,然后重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39782729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com