Movatterモバイル変換


[0]ホーム

URL:


Skip Navigation Links
Exit Print View
Link to oracle.comman pages section 2: System Calls    Oracle Solaris 11 Information Library
Oracle Technology Network
Library
PDF
Print View
Feedback
search filter icon
search icon
 Search Scope:

Document Information

Preface

Introduction

System Calls

access(2)

acct(2)

acl(2)

adjtime(2)

alarm(2)

brk(2)

chdir(2)

chmod(2)

chown(2)

chroot(2)

close(2)

creat(2)

dup(2)

exec(2)

execl(2)

execle(2)

execlp(2)

execv(2)

execve(2)

execvex(2)

execvp(2)

_Exit(2)

_exit(2)

exit(2)

faccessat(2)

facl(2)

fchdir(2)

fchmod(2)

fchmodat(2)

fchown(2)

fchownat(2)

fchroot(2)

fcntl(2)

fexecve(2)

fgetlabel(2)

fork1(2)

fork(2)

forkall(2)

forkallx(2)

forkx(2)

fpathconf(2)

fstat(2)

fstatat(2)

fstatvfs(2)

futimens(2)

futimesat(2)

getacct(2)

getcontext(2)

getdents(2)

getegid(2)

geteuid(2)

getgid(2)

getgroups(2)

getisax(2)

getitimer(2)

getlabel(2)

getmsg(2)

getpflags(2)

getpgid(2)

getpgrp(2)

getpid(2)

getpmsg(2)

getppid(2)

getppriv(2)

getprojid(2)

getrctl(2)

getrlimit(2)

getsid(2)

gettaskid(2)

getuid(2)

getustack(2)

ioctl(2)

issetugid(2)

kill(2)

lchown(2)

link(2)

linkat(2)

llseek(2)

lseek(2)

lstat(2)

_lwp_cond_broadcast(2)

_lwp_cond_reltimedwait(2)

_lwp_cond_signal(2)

_lwp_cond_timedwait(2)

_lwp_cond_wait(2)

_lwp_continue(2)

_lwp_info(2)

_lwp_kill(2)

_lwp_mutex_lock(2)

_lwp_mutex_trylock(2)

_lwp_mutex_unlock(2)

_lwp_self(2)

_lwp_sema_init(2)

_lwp_sema_post(2)

_lwp_sema_trywait(2)

_lwp_sema_wait(2)

_lwp_suspend(2)

memcntl(2)

meminfo(2)

mincore(2)

mkdir(2)

mkdirat(2)

mknod(2)

mknodat(2)

mmap(2)

mmapobj(2)

mount(2)

mprotect(2)

msgctl(2)

msgget(2)

msgids(2)

msgrcv(2)

msgsnap(2)

msgsnd(2)

munmap(2)

nice(2)

ntp_adjtime(2)

ntp_gettime(2)

open(2)

openat(2)

pathconf(2)

pause(2)

pcsample(2)

pipe(2)

poll(2)

p_online(2)

ppoll(2)

pread(2)

priocntl(2)

priocntlset(2)

processor_bind(2)

processor_info(2)

profil(2)

pset_assign(2)

pset_bind(2)

pset_create(2)

pset_destroy(2)

pset_getattr(2)

pset_info(2)

pset_list(2)

pset_setattr(2)

putacct(2)

putmsg(2)

putpmsg(2)

pwrite(2)

read(2)

readlink(2)

readlinkat(2)

readv(2)

rename(2)

renameat(2)

resolvepath(2)

rmdir(2)

sbrk(2)

semctl(2)

semget(2)

semids(2)

semop(2)

semtimedop(2)

setcontext(2)

setegid(2)

seteuid(2)

setgid(2)

setgroups(2)

setitimer(2)

setpflags(2)

setpgid(2)

setpgrp(2)

setppriv(2)

setrctl(2)

setregid(2)

setreuid(2)

setrlimit(2)

setsid(2)

settaskid(2)

setuid(2)

setustack(2)

shmadv(2)

shmat(2)

shmctl(2)

shmdt(2)

shmget(2)

shmids(2)

shmop(2)

sigaction(2)

sigaltstack(2)

sigpending(2)

sigprocmask(2)

sigsend(2)

sigsendset(2)

sigsuspend(2)

sigwait(2)

__sparc_utrap_install(2)

stat(2)

statvfs(2)

stime(2)

swapctl(2)

symlink(2)

symlinkat(2)

sync(2)

sysfs(2)

sysinfo(2)

time(2)

times(2)

uadmin(2)

ulimit(2)

umask(2)

umount(2)

umount2(2)

uname(2)

unlink(2)

unlinkat(2)

ustat(2)

utime(2)

utimensat(2)

utimes(2)

uucopy(2)

vfork(2)

vforkx(2)

vhangup(2)

waitid(2)

wracct(2)

write(2)

writev(2)

yield(2)

close

- close a file descriptor

Synopsis

#include <unistd.h>intclose(intfildes);

Description

Theclose() function deallocates the file descriptor indicated byfildes. To deallocatemeans to make the file descriptor available for return by subsequent callstoopen(2) or other functions that allocate file descriptors. All outstanding recordlocks owned by the process on the file associated with the filedescriptor will be removed (that is, unlocked).

Ifclose() is interrupted by a signal that is to be caught,it will return-1 witherrno set toEINTR and the stateoffildes is unspecified. If an I/O error occurred while reading fromor writing to the file system duringclose(), it returns -1, setserrnotoEIO, and the state offildes is unspecified.

When all file descriptors associated with a pipe or FIFO special fileare closed, any data remaining in the pipe or FIFO will bediscarded.

When all file descriptors associated with an open file description have beenclosed the open file description will be freed.

If the link count of the file is 0, when all filedescriptors associated with the file are closed, the space occupied by thefile will be freed and the file will no longer be accessible.

If a streams-based (seeIntro(2))fildes is closed and the calling processwas previously registered to receive aSIGPOLL signal (seesignal(3C)) for events associatedwith that stream (seeI_SETSIG instreamio(7I)), the calling process will beunregistered for events associated with the stream. The lastclose() fora stream causes the stream associated withfildes to be dismantled. IfO_NONBLOCK andO_NDELAY are not set and there have been no signalsposted for the stream, and if there is data on the module'swrite queue,close() waits up to 15 seconds (for each module and driver)for any output to drain before dismantling the stream. The time delaycan be changed via anI_SETCLTIMEioctl(2) request (seestreamio(7I)). If theO_NONBLOCKorO_NDELAY flag is set, or if there are any pending signals,close()does not wait for output to drain, and dismantles the stream immediately.

Iffildes is associated with one end of a pipe, the lastclose() causes a hangup to occur on the other end of thepipe. In addition, if the other end of the pipe hasbeen named byfattach(3C), then the lastclose() forces the named endto be detached byfdetach(3C). If the named end has no open filedescriptors associated with it and gets detached, the stream associated with thatend is also dismantled.

Iffildes refers to the master side of a pseudo-terminal, aSIGHUPsignal is sent to the session leader, if any, for which theslave side of the pseudo-terminal is the controlling terminal. It is unspecifiedwhether closing the master side of the pseudo-terminal flushes all queued input andoutput.

Iffildes refers to the slave side of a streams-based pseudo-terminal, azero-length message may be sent to the master.

When there is an outstanding cancelable asynchronous I/O operation againstfildes whenclose() is called, that I/O operation is canceled. An I/O operation thatis not canceled completes as if theclose() operation had not yetoccurred. All operations that are not canceled will complete as if theclose()blocked until the operations completed.

If a shared memory object or a memory mapped file remains referencedat the last close (that is, a process has it mapped), thenthe entire contents of the memory object will persist until the memoryobject becomes unreferenced. If this is the last close of a sharedmemory object or a memory mapped file and the close results in thememory object becoming unreferenced, and the memory object has been unlinked, thenthe memory object will be removed.

Iffildes refers to a socket,close() causes the socket to bedestroyed. If the socket is connection-mode, and theSO_LINGER option isset for the socket with non-zero linger time, and the socket hasuntransmitted data, thenclose() will block for up to the current linger intervaluntil all data is transmitted.

Return Values

Upon successful completion,0 is returned. Otherwise,-1 is returned anderrnois set to indicate the error.

Errors

Theclose() function will fail if:

EBADF

Thefildes argument is not a valid file descriptor.

EINTR

Theclose() function was interrupted by a signal.

ENOLINK

Thefildes argument is on a remote machine and the link to that machine is no longer active.

ENOSPC

There was no free space remaining on the device containing the file.

Theclose() function may fail if:

EIO

An I/O error occurred while reading from or writing to the file system.

Examples

Example 1 Reassign a file descriptor.

The following example closes the file descriptor associated with standard output forthe current process, re-assigns standard output to a new file descriptor, andcloses the original file descriptor to clean up. This example assumes thatthe file descriptor 0, which is the descriptor for standard input, is notclosed.

#include <unistd.h>...int pfd;...close(1);dup(pfd);close(pfd);...

Incidentally, this is exactly what could be achieved using:

dup2(pfd, 1);close(pfd);

Example 2 Close a file descriptor.

In the following example,close() is used to close a file descriptorafter an unsuccessful attempt is made to associate that file descriptor witha stream.

#include <stdio.h>#include <unistd.h>#include <stdlib.h>#define LOCKFILE "/etc/ptmp"...int pfd;FILE *fpfd;...if ((fpfd = fdopen (pfd, "w")) == NULL) {        close(pfd);        unlink(LOCKFILE);        exit(1);}...

Usage

An application that used thestdio functionfopen(3C) to open a fileshould use the correspondingfclose(3C) function rather thanclose().

Attributes

Seeattributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Interface Stability
Committed
MT-Level
Async-Signal-Safe
Standard

See Also

Intro(2),creat(2),dup(2),exec(2),fcntl(2),ioctl(2),open(2)pipe(2),fattach(3C),fclose(3C),fdetach(3C),fopen(3C),signal(3C),signal.h(3HEAD),attributes(5),standards(5),streamio(7I)

Copyright © 2011, Oracle and/or its affiliates. All rights reserved.Legal Notices
PreviousNext

[8]ページ先頭

©2009-2025 Movatter.jp