Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

176
Visualizações
Descriptores de archivos antes de fork()

Sé que si llamo a la función open antes que fork() , el puntero IO se comparte entre los procesos.

Si uno de estos procesos cierra el archivo llamando a la función close(fd) , ¿seguirán siendo capaces los otros procesos de escribir/leer el archivo o se cerrará el archivo para todos?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Sí. Cada proceso tiene una copia del descriptor del archivo (entre otras cosas). Entonces, un proceso que lo cierra no afectará la copia del fd en otro proceso.

Del manual de la fork() :

El hijo hereda copias del conjunto de descriptores de archivos abiertos del padre. Cada descriptor de archivo en el elemento secundario hace referencia a la misma descripción de archivo abierto (ver open(2)) que el descriptor de archivo correspondiente en el elemento principal. Esto significa que los dos descriptores comparten indicadores de estado de archivo abierto, compensación de archivo actual y atributos de E/S controlados por señal (consulte la descripción de F_SETOWN y F_SETSIG en fcntl(2)).

Del manual close() :

Si fd es el último descriptor de archivo que hace referencia a la descripción de archivo abierto subyacente (consulte open(2)), los recursos asociados con la descripción de archivo abierto se liberan; si el descriptor era la última referencia a un archivo que se eliminó usando unlink(2), el archivo se elimina.

Entonces, si close(fd); cierra solo la referencia en ese proceso y otro proceso que contiene otra referencia al mismo descriptor de archivo puede continuar operando en él.

over 4 years ago · Santiago Trujillo Relatório

0

Cada vez que se crea un proceso secundario, obtiene una copia de la tabla de descriptores de archivos del proceso principal. Y hay un recuento de referencias correspondiente a cada descriptor de archivo, que es el número de procesos que actualmente acceden al archivo. Entonces, si un archivo está abierto en el proceso maestro y se crea un proceso secundario, el recuento de referencias aumenta, ya que ahora también está abierto en el proceso secundario, y cuando se cierra en cualquiera de los procesos, disminuye. Un archivo finalmente se cierra cuando el recuento de referencias llega a cero.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda