相关疑难解决方法(0)

fork()时是否共享文件描述符?

假设我打开一个文件open().那我是fork()我的节目.

父和子现在会共享文件描述符的相同偏移量吗?

我的意思是如果我在父亲那里写作,那么儿童的偏移量也会改变吗?

或者补偿是否会在fork()?之后独立?

c unix linux fork

24
推荐指数
2
解决办法
1万
查看次数

fclose(stdout) 与 close(STDOUT_FILENO) - C

我想将 STDOUT 重定向到磁盘上的文件。重点是让我的程序上的 printf 写入文件而不是控制台。

我在网上看到一些文章,他们使用了:

dup2(fileno(outputFile), STDOUT_FILENO);
Run Code Online (Sandbox Code Playgroud)

或者:

close(STDOUT_FILENO);
dup(fileno(outputFile)); 
Run Code Online (Sandbox Code Playgroud)

在每个教程中他们都使用 close() 并且它确实有效。但我很好奇,我尝试使用 fclose(stdout) 代替,但当我尝试使用 printf 时发生了一些错误:

fclose(STDOUT_FILENO);
dup(fileno(outputFile)); 
Run Code Online (Sandbox Code Playgroud)

错误:

Bad file descriptor
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么 fclose() 不起作用而 close() 起作用?

谢谢。

c

3
推荐指数
1
解决办法
4249
查看次数

标签 统计

c ×2

fork ×1

linux ×1

unix ×1