gpt4 book ai didi

c - printf() 在后台程序中

转载 作者:行者123 更新时间:2023-12-04 04:56:24 25 4
gpt4 key购买 nike

我有一个前端X程序,在这个程序中,调用了一个后台程序a.out。在a.out中,有一些printf句子。我发现标准输出保存在 ~/.xsession-errors .正常吗?我不想保存这些 printf 内容。除了删除 printf 之外,还有什么方法可以避免保存它们吗? ?

最佳答案

是的,您可以使用 freopen(3) 重定向功能 stdout到其他文件,或者如果您不想有任何输出,则到空设备:

// Discard all further output to standard output for the duration of the
// program (or until the next call to freopen()):
stdout = freopen("/dev/null", "w", stdout);

根据子程序的启动方式,您还可以重定向其标准输出流。如果您使用 system(3) 启动它,你可以只使用 shell 重定向:
system("./a.out args >/dev/null");

如果您使用 fork() 启动它和 exec()对,然后您可以在 fork() 之间重定向标准输出文件描述符和 exec()避免更改父进程中的任何内容:
// Error checking omitted for expository purposes
pid_t pid = fork();
if(pid == 0)
{
// Child process
int fd = open("/dev/null", O_WRONLY);
dup2(fd, STDOUT_FILENO);
close(fd);
execve("./a.out", argv, envp);
}

关于c - printf() 在后台程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16704655/

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