File-Descriptors

關閉後可以重新使用stdout(1)文件描述符嗎?

  • May 1, 2022

我首先呼叫 close(1),然後使用 open() 系統呼叫打開一個文件。

open() 是否有可能返回 1,因為它將使用最低的空閒文件描述符?

我讀過 open() 在這裡使用最低的免費文件描述符。

是的,fd 1 將被重新使用。嘗試這個:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv) {
   close(1);
   fprintf(stderr, "%d\n", open("/dev/null", O_RDONLY));
}

引用自:https://unix.stackexchange.com/questions/701028