假设我打开一个文件open().那我是fork()我的节目.
父和子现在会共享文件描述符的相同偏移量吗?
我的意思是如果我在父亲那里写作,那么儿童的偏移量也会改变吗?
或者补偿是否会在fork()?之后独立?
我想将 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() 起作用?
谢谢。