OSDN Git Service

LDP: Update drafts from ja.po of LDP v3.51
authorAkihiro MOTOKI <motoki@da.jp.nec.com>
Tue, 30 Apr 2013 16:11:40 +0000 (01:11 +0900)
committerAkihiro MOTOKI <motoki@da.jp.nec.com>
Tue, 30 Apr 2013 16:11:40 +0000 (01:11 +0900)
903 files changed:
manual/LDP_man-pages/draft/man1/intro.1
manual/LDP_man-pages/draft/man1/ldd.1 [new file with mode: 0644]
manual/LDP_man-pages/draft/man1/time.1
manual/LDP_man-pages/draft/man2/_exit.2
manual/LDP_man-pages/draft/man2/_syscall.2
manual/LDP_man-pages/draft/man2/accept.2
manual/LDP_man-pages/draft/man2/access.2
manual/LDP_man-pages/draft/man2/acct.2
manual/LDP_man-pages/draft/man2/adjtimex.2
manual/LDP_man-pages/draft/man2/alarm.2
manual/LDP_man-pages/draft/man2/alloc_hugepages.2
manual/LDP_man-pages/draft/man2/arch_prctl.2
manual/LDP_man-pages/draft/man2/bdflush.2
manual/LDP_man-pages/draft/man2/bind.2
manual/LDP_man-pages/draft/man2/brk.2
manual/LDP_man-pages/draft/man2/cacheflush.2
manual/LDP_man-pages/draft/man2/capget.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/chdir.2
manual/LDP_man-pages/draft/man2/chmod.2
manual/LDP_man-pages/draft/man2/chown.2
manual/LDP_man-pages/draft/man2/chroot.2
manual/LDP_man-pages/draft/man2/clock_getres.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/clock_nanosleep.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/clone.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/close.2
manual/LDP_man-pages/draft/man2/connect.2
manual/LDP_man-pages/draft/man2/create_module.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/dup.2
manual/LDP_man-pages/draft/man2/epoll_create.2
manual/LDP_man-pages/draft/man2/epoll_ctl.2
manual/LDP_man-pages/draft/man2/epoll_wait.2
manual/LDP_man-pages/draft/man2/eventfd.2
manual/LDP_man-pages/draft/man2/execve.2
manual/LDP_man-pages/draft/man2/exit_group.2
manual/LDP_man-pages/draft/man2/faccessat.2
manual/LDP_man-pages/draft/man2/fallocate.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/fchmodat.2
manual/LDP_man-pages/draft/man2/fchownat.2
manual/LDP_man-pages/draft/man2/fcntl.2
manual/LDP_man-pages/draft/man2/flock.2
manual/LDP_man-pages/draft/man2/fork.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/fstatat.2
manual/LDP_man-pages/draft/man2/fsync.2
manual/LDP_man-pages/draft/man2/futex.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/futimesat.2
manual/LDP_man-pages/draft/man2/get_kernel_syms.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/get_mempolicy.2
manual/LDP_man-pages/draft/man2/get_thread_area.2
manual/LDP_man-pages/draft/man2/getcpu.2
manual/LDP_man-pages/draft/man2/getdents.2
manual/LDP_man-pages/draft/man2/getdomainname.2
manual/LDP_man-pages/draft/man2/getgid.2
manual/LDP_man-pages/draft/man2/getgroups.2
manual/LDP_man-pages/draft/man2/gethostname.2
manual/LDP_man-pages/draft/man2/getitimer.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/getpagesize.2
manual/LDP_man-pages/draft/man2/getpeername.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/getpid.2
manual/LDP_man-pages/draft/man2/getpriority.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/getresuid.2
manual/LDP_man-pages/draft/man2/getrlimit.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/getsid.2
manual/LDP_man-pages/draft/man2/getsockname.2
manual/LDP_man-pages/draft/man2/getsockopt.2
manual/LDP_man-pages/draft/man2/gettid.2
manual/LDP_man-pages/draft/man2/gettimeofday.2
manual/LDP_man-pages/draft/man2/getuid.2
manual/LDP_man-pages/draft/man2/getxattr.2
manual/LDP_man-pages/draft/man2/idle.2
manual/LDP_man-pages/draft/man2/inotify_add_watch.2
manual/LDP_man-pages/draft/man2/inotify_init.2
manual/LDP_man-pages/draft/man2/inotify_rm_watch.2
manual/LDP_man-pages/draft/man2/intro.2
manual/LDP_man-pages/draft/man2/io_cancel.2
manual/LDP_man-pages/draft/man2/io_destroy.2
manual/LDP_man-pages/draft/man2/io_getevents.2
manual/LDP_man-pages/draft/man2/io_setup.2
manual/LDP_man-pages/draft/man2/io_submit.2
manual/LDP_man-pages/draft/man2/ioctl.2
manual/LDP_man-pages/draft/man2/ioctl_list.2
manual/LDP_man-pages/draft/man2/ioperm.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/iopl.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/ioprio_set.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/ipc.2
manual/LDP_man-pages/draft/man2/kexec_load.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/kill.2
manual/LDP_man-pages/draft/man2/killpg.2
manual/LDP_man-pages/draft/man2/link.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/linkat.2
manual/LDP_man-pages/draft/man2/listen.2
manual/LDP_man-pages/draft/man2/listxattr.2
manual/LDP_man-pages/draft/man2/llseek.2
manual/LDP_man-pages/draft/man2/lookup_dcookie.2
manual/LDP_man-pages/draft/man2/lseek.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/madvise.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/mbind.2
manual/LDP_man-pages/draft/man2/migrate_pages.2
manual/LDP_man-pages/draft/man2/mincore.2
manual/LDP_man-pages/draft/man2/mkdir.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/mkdirat.2
manual/LDP_man-pages/draft/man2/mknod.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/mknodat.2
manual/LDP_man-pages/draft/man2/mlock.2
manual/LDP_man-pages/draft/man2/mmap.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/mmap2.2
manual/LDP_man-pages/draft/man2/modify_ldt.2
manual/LDP_man-pages/draft/man2/mount.2
manual/LDP_man-pages/draft/man2/move_pages.2
manual/LDP_man-pages/draft/man2/mprotect.2
manual/LDP_man-pages/draft/man2/mq_getsetattr.2
manual/LDP_man-pages/draft/man2/mremap.2
manual/LDP_man-pages/draft/man2/msgctl.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/msgget.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/msgop.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/msync.2
manual/LDP_man-pages/draft/man2/nanosleep.2
manual/LDP_man-pages/draft/man2/nfsservctl.2
manual/LDP_man-pages/draft/man2/nice.2
manual/LDP_man-pages/draft/man2/open.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/openat.2
manual/LDP_man-pages/draft/man2/outb.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/pause.2
manual/LDP_man-pages/draft/man2/pciconfig_read.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/personality.2
manual/LDP_man-pages/draft/man2/pipe.2
manual/LDP_man-pages/draft/man2/pivot_root.2
manual/LDP_man-pages/draft/man2/poll.2
manual/LDP_man-pages/draft/man2/posix_fadvise.2
manual/LDP_man-pages/draft/man2/pread.2
manual/LDP_man-pages/draft/man2/query_module.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/read.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/readahead.2
manual/LDP_man-pages/draft/man2/readdir.2
manual/LDP_man-pages/draft/man2/readlink.2
manual/LDP_man-pages/draft/man2/readlinkat.2
manual/LDP_man-pages/draft/man2/readv.2
manual/LDP_man-pages/draft/man2/reboot.2
manual/LDP_man-pages/draft/man2/recv.2
manual/LDP_man-pages/draft/man2/remap_file_pages.2
manual/LDP_man-pages/draft/man2/removexattr.2
manual/LDP_man-pages/draft/man2/rename.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/renameat.2
manual/LDP_man-pages/draft/man2/rmdir.2
manual/LDP_man-pages/draft/man2/sched_get_priority_max.2
manual/LDP_man-pages/draft/man2/sched_rr_get_interval.2
manual/LDP_man-pages/draft/man2/sched_setaffinity.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/sched_setparam.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/sched_setscheduler.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/sched_yield.2
manual/LDP_man-pages/draft/man2/select.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/select_tut.2
manual/LDP_man-pages/draft/man2/semctl.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/semget.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/semop.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/send.2
manual/LDP_man-pages/draft/man2/sendfile.2
manual/LDP_man-pages/draft/man2/set_mempolicy.2
manual/LDP_man-pages/draft/man2/set_thread_area.2
manual/LDP_man-pages/draft/man2/set_tid_address.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/seteuid.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/setfsgid.2
manual/LDP_man-pages/draft/man2/setfsuid.2
manual/LDP_man-pages/draft/man2/setgid.2
manual/LDP_man-pages/draft/man2/setns.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/setpgid.2
manual/LDP_man-pages/draft/man2/setresuid.2
manual/LDP_man-pages/draft/man2/setreuid.2
manual/LDP_man-pages/draft/man2/setsid.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/setuid.2
manual/LDP_man-pages/draft/man2/setup.2
manual/LDP_man-pages/draft/man2/setxattr.2
manual/LDP_man-pages/draft/man2/sgetmask.2
manual/LDP_man-pages/draft/man2/shmctl.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/shmget.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/shmop.2
manual/LDP_man-pages/draft/man2/shutdown.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/sigaction.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/sigaltstack.2
manual/LDP_man-pages/draft/man2/signal.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/signalfd.2
manual/LDP_man-pages/draft/man2/sigpending.2
manual/LDP_man-pages/draft/man2/sigprocmask.2
manual/LDP_man-pages/draft/man2/sigreturn.2
manual/LDP_man-pages/draft/man2/sigsuspend.2
manual/LDP_man-pages/draft/man2/sigwaitinfo.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/socket.2
manual/LDP_man-pages/draft/man2/socketcall.2
manual/LDP_man-pages/draft/man2/socketpair.2
manual/LDP_man-pages/draft/man2/splice.2
manual/LDP_man-pages/draft/man2/spu_create.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/spu_run.2
manual/LDP_man-pages/draft/man2/stat.2
manual/LDP_man-pages/draft/man2/statfs.2
manual/LDP_man-pages/draft/man2/stime.2
manual/LDP_man-pages/draft/man2/swapon.2
manual/LDP_man-pages/draft/man2/symlink.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/symlinkat.2
manual/LDP_man-pages/draft/man2/sync.2
manual/LDP_man-pages/draft/man2/sync_file_range.2
manual/LDP_man-pages/draft/man2/syscalls.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/sysctl.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/sysfs.2
manual/LDP_man-pages/draft/man2/sysinfo.2
manual/LDP_man-pages/draft/man2/tee.2
manual/LDP_man-pages/draft/man2/time.2
manual/LDP_man-pages/draft/man2/timerfd_create.2
manual/LDP_man-pages/draft/man2/times.2
manual/LDP_man-pages/draft/man2/tkill.2
manual/LDP_man-pages/draft/man2/truncate.2
manual/LDP_man-pages/draft/man2/umask.2
manual/LDP_man-pages/draft/man2/umount.2
manual/LDP_man-pages/draft/man2/uname.2
manual/LDP_man-pages/draft/man2/unimplemented.2
manual/LDP_man-pages/draft/man2/unlink.2
manual/LDP_man-pages/draft/man2/unlinkat.2
manual/LDP_man-pages/draft/man2/unshare.2
manual/LDP_man-pages/draft/man2/uselib.2
manual/LDP_man-pages/draft/man2/ustat.2
manual/LDP_man-pages/draft/man2/utime.2
manual/LDP_man-pages/draft/man2/vfork.2
manual/LDP_man-pages/draft/man2/vhangup.2
manual/LDP_man-pages/draft/man2/vm86.2
manual/LDP_man-pages/draft/man2/vmsplice.2
manual/LDP_man-pages/draft/man2/wait.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/wait4.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man2/write.2 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/CPU_SET.3
manual/LDP_man-pages/draft/man3/INFINITY.3
manual/LDP_man-pages/draft/man3/MB_CUR_MAX.3
manual/LDP_man-pages/draft/man3/MB_LEN_MAX.3
manual/LDP_man-pages/draft/man3/__setfpucw.3
manual/LDP_man-pages/draft/man3/a64l.3
manual/LDP_man-pages/draft/man3/abort.3
manual/LDP_man-pages/draft/man3/abs.3
manual/LDP_man-pages/draft/man3/acos.3
manual/LDP_man-pages/draft/man3/acosh.3
manual/LDP_man-pages/draft/man3/addseverity.3
manual/LDP_man-pages/draft/man3/adjtime.3
manual/LDP_man-pages/draft/man3/aio_cancel.3
manual/LDP_man-pages/draft/man3/aio_error.3
manual/LDP_man-pages/draft/man3/aio_fsync.3
manual/LDP_man-pages/draft/man3/aio_init.3
manual/LDP_man-pages/draft/man3/aio_read.3
manual/LDP_man-pages/draft/man3/aio_return.3
manual/LDP_man-pages/draft/man3/aio_suspend.3
manual/LDP_man-pages/draft/man3/aio_write.3
manual/LDP_man-pages/draft/man3/alloca.3
manual/LDP_man-pages/draft/man3/argz_add.3
manual/LDP_man-pages/draft/man3/asin.3
manual/LDP_man-pages/draft/man3/asinh.3
manual/LDP_man-pages/draft/man3/asprintf.3
manual/LDP_man-pages/draft/man3/assert.3
manual/LDP_man-pages/draft/man3/assert_perror.3
manual/LDP_man-pages/draft/man3/atan.3
manual/LDP_man-pages/draft/man3/atan2.3
manual/LDP_man-pages/draft/man3/atanh.3
manual/LDP_man-pages/draft/man3/atexit.3
manual/LDP_man-pages/draft/man3/atof.3
manual/LDP_man-pages/draft/man3/atoi.3
manual/LDP_man-pages/draft/man3/backtrace.3
manual/LDP_man-pages/draft/man3/basename.3
manual/LDP_man-pages/draft/man3/bcmp.3
manual/LDP_man-pages/draft/man3/bcopy.3
manual/LDP_man-pages/draft/man3/bindresvport.3
manual/LDP_man-pages/draft/man3/bsd_signal.3
manual/LDP_man-pages/draft/man3/bsearch.3
manual/LDP_man-pages/draft/man3/bstring.3
manual/LDP_man-pages/draft/man3/btowc.3
manual/LDP_man-pages/draft/man3/btree.3
manual/LDP_man-pages/draft/man3/byteorder.3
manual/LDP_man-pages/draft/man3/bzero.3
manual/LDP_man-pages/draft/man3/cabs.3
manual/LDP_man-pages/draft/man3/cacos.3
manual/LDP_man-pages/draft/man3/cacosh.3
manual/LDP_man-pages/draft/man3/canonicalize_file_name.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/carg.3
manual/LDP_man-pages/draft/man3/casin.3
manual/LDP_man-pages/draft/man3/casinh.3
manual/LDP_man-pages/draft/man3/catan.3
manual/LDP_man-pages/draft/man3/catanh.3
manual/LDP_man-pages/draft/man3/catgets.3
manual/LDP_man-pages/draft/man3/catopen.3
manual/LDP_man-pages/draft/man3/cbrt.3
manual/LDP_man-pages/draft/man3/ccos.3
manual/LDP_man-pages/draft/man3/ccosh.3
manual/LDP_man-pages/draft/man3/ceil.3
manual/LDP_man-pages/draft/man3/cerf.3
manual/LDP_man-pages/draft/man3/cexp.3
manual/LDP_man-pages/draft/man3/cexp2.3
manual/LDP_man-pages/draft/man3/cfree.3
manual/LDP_man-pages/draft/man3/cimag.3
manual/LDP_man-pages/draft/man3/clearenv.3
manual/LDP_man-pages/draft/man3/clock.3
manual/LDP_man-pages/draft/man3/clog.3
manual/LDP_man-pages/draft/man3/clog10.3
manual/LDP_man-pages/draft/man3/clog2.3
manual/LDP_man-pages/draft/man3/closedir.3
manual/LDP_man-pages/draft/man3/cmsg.3
manual/LDP_man-pages/draft/man3/confstr.3
manual/LDP_man-pages/draft/man3/conj.3
manual/LDP_man-pages/draft/man3/copysign.3
manual/LDP_man-pages/draft/man3/cos.3
manual/LDP_man-pages/draft/man3/cosh.3
manual/LDP_man-pages/draft/man3/cpow.3
manual/LDP_man-pages/draft/man3/cproj.3
manual/LDP_man-pages/draft/man3/creal.3
manual/LDP_man-pages/draft/man3/crypt.3
manual/LDP_man-pages/draft/man3/csin.3
manual/LDP_man-pages/draft/man3/csinh.3
manual/LDP_man-pages/draft/man3/csqrt.3
manual/LDP_man-pages/draft/man3/ctan.3
manual/LDP_man-pages/draft/man3/ctanh.3
manual/LDP_man-pages/draft/man3/ctermid.3
manual/LDP_man-pages/draft/man3/ctime.3
manual/LDP_man-pages/draft/man3/daemon.3
manual/LDP_man-pages/draft/man3/dbopen.3
manual/LDP_man-pages/draft/man3/des_crypt.3
manual/LDP_man-pages/draft/man3/difftime.3
manual/LDP_man-pages/draft/man3/dirfd.3
manual/LDP_man-pages/draft/man3/div.3
manual/LDP_man-pages/draft/man3/dl_iterate_phdr.3
manual/LDP_man-pages/draft/man3/dlopen.3
manual/LDP_man-pages/draft/man3/dprintf.3
manual/LDP_man-pages/draft/man3/drand48.3
manual/LDP_man-pages/draft/man3/drand48_r.3
manual/LDP_man-pages/draft/man3/dysize.3
manual/LDP_man-pages/draft/man3/ecvt.3
manual/LDP_man-pages/draft/man3/ecvt_r.3
manual/LDP_man-pages/draft/man3/encrypt.3
manual/LDP_man-pages/draft/man3/end.3
manual/LDP_man-pages/draft/man3/endian.3
manual/LDP_man-pages/draft/man3/envz_add.3
manual/LDP_man-pages/draft/man3/erf.3
manual/LDP_man-pages/draft/man3/erfc.3
manual/LDP_man-pages/draft/man3/err.3
manual/LDP_man-pages/draft/man3/errno.3
manual/LDP_man-pages/draft/man3/error.3
manual/LDP_man-pages/draft/man3/ether_aton.3
manual/LDP_man-pages/draft/man3/euidaccess.3
manual/LDP_man-pages/draft/man3/exec.3
manual/LDP_man-pages/draft/man3/exit.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/exp.3
manual/LDP_man-pages/draft/man3/exp10.3
manual/LDP_man-pages/draft/man3/exp2.3
manual/LDP_man-pages/draft/man3/expm1.3
manual/LDP_man-pages/draft/man3/fabs.3
manual/LDP_man-pages/draft/man3/fclose.3
manual/LDP_man-pages/draft/man3/fcloseall.3
manual/LDP_man-pages/draft/man3/fdim.3
manual/LDP_man-pages/draft/man3/fenv.3
manual/LDP_man-pages/draft/man3/ferror.3
manual/LDP_man-pages/draft/man3/fexecve.3
manual/LDP_man-pages/draft/man3/fflush.3
manual/LDP_man-pages/draft/man3/ffs.3
manual/LDP_man-pages/draft/man3/fgetgrent.3
manual/LDP_man-pages/draft/man3/fgetpwent.3
manual/LDP_man-pages/draft/man3/fgetwc.3
manual/LDP_man-pages/draft/man3/fgetws.3
manual/LDP_man-pages/draft/man3/finite.3
manual/LDP_man-pages/draft/man3/flockfile.3
manual/LDP_man-pages/draft/man3/floor.3
manual/LDP_man-pages/draft/man3/fma.3
manual/LDP_man-pages/draft/man3/fmax.3
manual/LDP_man-pages/draft/man3/fmemopen.3
manual/LDP_man-pages/draft/man3/fmin.3
manual/LDP_man-pages/draft/man3/fmod.3
manual/LDP_man-pages/draft/man3/fmtmsg.3
manual/LDP_man-pages/draft/man3/fnmatch.3
manual/LDP_man-pages/draft/man3/fopen.3
manual/LDP_man-pages/draft/man3/fpathconf.3
manual/LDP_man-pages/draft/man3/fpclassify.3
manual/LDP_man-pages/draft/man3/fpurge.3
manual/LDP_man-pages/draft/man3/fputwc.3
manual/LDP_man-pages/draft/man3/fputws.3
manual/LDP_man-pages/draft/man3/fread.3
manual/LDP_man-pages/draft/man3/frexp.3
manual/LDP_man-pages/draft/man3/fseek.3
manual/LDP_man-pages/draft/man3/fseeko.3
manual/LDP_man-pages/draft/man3/ftime.3
manual/LDP_man-pages/draft/man3/ftok.3
manual/LDP_man-pages/draft/man3/fts.3
manual/LDP_man-pages/draft/man3/ftw.3
manual/LDP_man-pages/draft/man3/futimes.3
manual/LDP_man-pages/draft/man3/fwide.3
manual/LDP_man-pages/draft/man3/gamma.3
manual/LDP_man-pages/draft/man3/gcvt.3
manual/LDP_man-pages/draft/man3/get_nprocs_conf.3
manual/LDP_man-pages/draft/man3/getaddrinfo.3
manual/LDP_man-pages/draft/man3/getcontext.3
manual/LDP_man-pages/draft/man3/getcwd.3
manual/LDP_man-pages/draft/man3/getdate.3
manual/LDP_man-pages/draft/man3/getdirentries.3
manual/LDP_man-pages/draft/man3/getdtablesize.3
manual/LDP_man-pages/draft/man3/getfsent.3
manual/LDP_man-pages/draft/man3/getgrent.3
manual/LDP_man-pages/draft/man3/getgrent_r.3
manual/LDP_man-pages/draft/man3/getgrnam.3
manual/LDP_man-pages/draft/man3/getgrouplist.3
manual/LDP_man-pages/draft/man3/gethostbyname.3
manual/LDP_man-pages/draft/man3/gethostid.3
manual/LDP_man-pages/draft/man3/getipnodebyname.3
manual/LDP_man-pages/draft/man3/getline.3
manual/LDP_man-pages/draft/man3/getloadavg.3
manual/LDP_man-pages/draft/man3/getlogin.3
manual/LDP_man-pages/draft/man3/getmntent.3
manual/LDP_man-pages/draft/man3/getnameinfo.3
manual/LDP_man-pages/draft/man3/getnetent.3
manual/LDP_man-pages/draft/man3/getnetent_r.3
manual/LDP_man-pages/draft/man3/getopt.3
manual/LDP_man-pages/draft/man3/getpass.3
manual/LDP_man-pages/draft/man3/getprotoent.3
manual/LDP_man-pages/draft/man3/getprotoent_r.3
manual/LDP_man-pages/draft/man3/getpt.3
manual/LDP_man-pages/draft/man3/getpw.3
manual/LDP_man-pages/draft/man3/getpwent.3
manual/LDP_man-pages/draft/man3/getpwent_r.3
manual/LDP_man-pages/draft/man3/getpwnam.3
manual/LDP_man-pages/draft/man3/getrpcent.3
manual/LDP_man-pages/draft/man3/getrpcent_r.3
manual/LDP_man-pages/draft/man3/getrpcport.3
manual/LDP_man-pages/draft/man3/gets.3
manual/LDP_man-pages/draft/man3/getservent.3
manual/LDP_man-pages/draft/man3/getservent_r.3
manual/LDP_man-pages/draft/man3/getspnam.3
manual/LDP_man-pages/draft/man3/getsubopt.3
manual/LDP_man-pages/draft/man3/getttyent.3
manual/LDP_man-pages/draft/man3/getumask.3
manual/LDP_man-pages/draft/man3/getusershell.3
manual/LDP_man-pages/draft/man3/getutent.3
manual/LDP_man-pages/draft/man3/getutmp.3
manual/LDP_man-pages/draft/man3/getw.3
manual/LDP_man-pages/draft/man3/getwchar.3
manual/LDP_man-pages/draft/man3/glob.3
manual/LDP_man-pages/draft/man3/gnu_get_libc_version.3
manual/LDP_man-pages/draft/man3/grantpt.3
manual/LDP_man-pages/draft/man3/gsignal.3
manual/LDP_man-pages/draft/man3/hash.3
manual/LDP_man-pages/draft/man3/hsearch.3
manual/LDP_man-pages/draft/man3/hypot.3
manual/LDP_man-pages/draft/man3/iconv.3
manual/LDP_man-pages/draft/man3/iconv_close.3
manual/LDP_man-pages/draft/man3/iconv_open.3
manual/LDP_man-pages/draft/man3/ilogb.3
manual/LDP_man-pages/draft/man3/index.3
manual/LDP_man-pages/draft/man3/inet.3
manual/LDP_man-pages/draft/man3/inet_ntop.3
manual/LDP_man-pages/draft/man3/inet_pton.3
manual/LDP_man-pages/draft/man3/infnan.3
manual/LDP_man-pages/draft/man3/initgroups.3
manual/LDP_man-pages/draft/man3/insque.3
manual/LDP_man-pages/draft/man3/intro.3
manual/LDP_man-pages/draft/man3/isalpha.3
manual/LDP_man-pages/draft/man3/isatty.3
manual/LDP_man-pages/draft/man3/isgreater.3
manual/LDP_man-pages/draft/man3/iswalnum.3
manual/LDP_man-pages/draft/man3/iswalpha.3
manual/LDP_man-pages/draft/man3/iswblank.3
manual/LDP_man-pages/draft/man3/iswcntrl.3
manual/LDP_man-pages/draft/man3/iswctype.3
manual/LDP_man-pages/draft/man3/iswdigit.3
manual/LDP_man-pages/draft/man3/iswgraph.3
manual/LDP_man-pages/draft/man3/iswlower.3
manual/LDP_man-pages/draft/man3/iswprint.3
manual/LDP_man-pages/draft/man3/iswpunct.3
manual/LDP_man-pages/draft/man3/iswspace.3
manual/LDP_man-pages/draft/man3/iswupper.3
manual/LDP_man-pages/draft/man3/iswxdigit.3
manual/LDP_man-pages/draft/man3/j0.3
manual/LDP_man-pages/draft/man3/key_setsecret.3
manual/LDP_man-pages/draft/man3/ldexp.3
manual/LDP_man-pages/draft/man3/lgamma.3
manual/LDP_man-pages/draft/man3/lio_listio.3
manual/LDP_man-pages/draft/man3/localeconv.3
manual/LDP_man-pages/draft/man3/lockf.3
manual/LDP_man-pages/draft/man3/log.3
manual/LDP_man-pages/draft/man3/log10.3
manual/LDP_man-pages/draft/man3/log1p.3
manual/LDP_man-pages/draft/man3/log2.3
manual/LDP_man-pages/draft/man3/logb.3
manual/LDP_man-pages/draft/man3/login.3
manual/LDP_man-pages/draft/man3/longjmp.3
manual/LDP_man-pages/draft/man3/lrint.3
manual/LDP_man-pages/draft/man3/lround.3
manual/LDP_man-pages/draft/man3/lsearch.3
manual/LDP_man-pages/draft/man3/lseek64.3
manual/LDP_man-pages/draft/man3/makecontext.3
manual/LDP_man-pages/draft/man3/makedev.3
manual/LDP_man-pages/draft/man3/malloc.3
manual/LDP_man-pages/draft/man3/malloc_hook.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/malloc_info.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/malloc_stats.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/matherr.3
manual/LDP_man-pages/draft/man3/mblen.3
manual/LDP_man-pages/draft/man3/mbrlen.3
manual/LDP_man-pages/draft/man3/mbrtowc.3
manual/LDP_man-pages/draft/man3/mbsinit.3
manual/LDP_man-pages/draft/man3/mbsnrtowcs.3
manual/LDP_man-pages/draft/man3/mbsrtowcs.3
manual/LDP_man-pages/draft/man3/mbstowcs.3
manual/LDP_man-pages/draft/man3/mbtowc.3
manual/LDP_man-pages/draft/man3/memccpy.3
manual/LDP_man-pages/draft/man3/memchr.3
manual/LDP_man-pages/draft/man3/memcmp.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/memcpy.3
manual/LDP_man-pages/draft/man3/memfrob.3
manual/LDP_man-pages/draft/man3/memmem.3
manual/LDP_man-pages/draft/man3/memmove.3
manual/LDP_man-pages/draft/man3/mempcpy.3
manual/LDP_man-pages/draft/man3/memset.3
manual/LDP_man-pages/draft/man3/mkdtemp.3
manual/LDP_man-pages/draft/man3/mkfifo.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/mkfifoat.3
manual/LDP_man-pages/draft/man3/mkstemp.3
manual/LDP_man-pages/draft/man3/mktemp.3
manual/LDP_man-pages/draft/man3/modf.3
manual/LDP_man-pages/draft/man3/mpool.3
manual/LDP_man-pages/draft/man3/mq_close.3
manual/LDP_man-pages/draft/man3/mq_getattr.3
manual/LDP_man-pages/draft/man3/mq_notify.3
manual/LDP_man-pages/draft/man3/mq_open.3
manual/LDP_man-pages/draft/man3/mq_receive.3
manual/LDP_man-pages/draft/man3/mq_send.3
manual/LDP_man-pages/draft/man3/mq_unlink.3
manual/LDP_man-pages/draft/man3/nan.3
manual/LDP_man-pages/draft/man3/netlink.3
manual/LDP_man-pages/draft/man3/nextafter.3
manual/LDP_man-pages/draft/man3/nl_langinfo.3
manual/LDP_man-pages/draft/man3/offsetof.3
manual/LDP_man-pages/draft/man3/on_exit.3
manual/LDP_man-pages/draft/man3/opendir.3
manual/LDP_man-pages/draft/man3/openpty.3
manual/LDP_man-pages/draft/man3/perror.3
manual/LDP_man-pages/draft/man3/popen.3
manual/LDP_man-pages/draft/man3/posix_fallocate.3
manual/LDP_man-pages/draft/man3/posix_memalign.3
manual/LDP_man-pages/draft/man3/posix_openpt.3
manual/LDP_man-pages/draft/man3/pow.3
manual/LDP_man-pages/draft/man3/pow10.3
manual/LDP_man-pages/draft/man3/printf.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/profil.3
manual/LDP_man-pages/draft/man3/program_invocation_name.3
manual/LDP_man-pages/draft/man3/psignal.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/pthread_attr_init.3
manual/LDP_man-pages/draft/man3/pthread_attr_setaffinity_np.3
manual/LDP_man-pages/draft/man3/pthread_attr_setdetachstate.3
manual/LDP_man-pages/draft/man3/pthread_attr_setguardsize.3
manual/LDP_man-pages/draft/man3/pthread_attr_setinheritsched.3
manual/LDP_man-pages/draft/man3/pthread_attr_setschedparam.3
manual/LDP_man-pages/draft/man3/pthread_attr_setschedpolicy.3
manual/LDP_man-pages/draft/man3/pthread_attr_setscope.3
manual/LDP_man-pages/draft/man3/pthread_attr_setstack.3
manual/LDP_man-pages/draft/man3/pthread_attr_setstackaddr.3
manual/LDP_man-pages/draft/man3/pthread_attr_setstacksize.3
manual/LDP_man-pages/draft/man3/pthread_cancel.3
manual/LDP_man-pages/draft/man3/pthread_cleanup_push.3
manual/LDP_man-pages/draft/man3/pthread_cleanup_push_defer_np.3
manual/LDP_man-pages/draft/man3/pthread_create.3
manual/LDP_man-pages/draft/man3/pthread_detach.3
manual/LDP_man-pages/draft/man3/pthread_equal.3
manual/LDP_man-pages/draft/man3/pthread_exit.3
manual/LDP_man-pages/draft/man3/pthread_getattr_np.3
manual/LDP_man-pages/draft/man3/pthread_getcpuclockid.3
manual/LDP_man-pages/draft/man3/pthread_join.3
manual/LDP_man-pages/draft/man3/pthread_kill.3
manual/LDP_man-pages/draft/man3/pthread_kill_other_threads_np.3
manual/LDP_man-pages/draft/man3/pthread_self.3
manual/LDP_man-pages/draft/man3/pthread_setaffinity_np.3
manual/LDP_man-pages/draft/man3/pthread_setcancelstate.3
manual/LDP_man-pages/draft/man3/pthread_setconcurrency.3
manual/LDP_man-pages/draft/man3/pthread_setname_np.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/pthread_setschedparam.3
manual/LDP_man-pages/draft/man3/pthread_setschedprio.3
manual/LDP_man-pages/draft/man3/pthread_sigmask.3
manual/LDP_man-pages/draft/man3/pthread_sigqueue.3
manual/LDP_man-pages/draft/man3/pthread_testcancel.3
manual/LDP_man-pages/draft/man3/pthread_tryjoin_np.3
manual/LDP_man-pages/draft/man3/pthread_yield.3
manual/LDP_man-pages/draft/man3/ptsname.3
manual/LDP_man-pages/draft/man3/putenv.3
manual/LDP_man-pages/draft/man3/putgrent.3
manual/LDP_man-pages/draft/man3/putpwent.3
manual/LDP_man-pages/draft/man3/puts.3
manual/LDP_man-pages/draft/man3/putwchar.3
manual/LDP_man-pages/draft/man3/qecvt.3
manual/LDP_man-pages/draft/man3/qsort.3
manual/LDP_man-pages/draft/man3/queue.3
manual/LDP_man-pages/draft/man3/raise.3
manual/LDP_man-pages/draft/man3/rand.3
manual/LDP_man-pages/draft/man3/random.3
manual/LDP_man-pages/draft/man3/random_r.3
manual/LDP_man-pages/draft/man3/rcmd.3
manual/LDP_man-pages/draft/man3/re_comp.3
manual/LDP_man-pages/draft/man3/readdir.3
manual/LDP_man-pages/draft/man3/realpath.3
manual/LDP_man-pages/draft/man3/recno.3
manual/LDP_man-pages/draft/man3/regex.3
manual/LDP_man-pages/draft/man3/remainder.3
manual/LDP_man-pages/draft/man3/remove.3
manual/LDP_man-pages/draft/man3/remquo.3
manual/LDP_man-pages/draft/man3/resolver.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/rewinddir.3
manual/LDP_man-pages/draft/man3/rexec.3
manual/LDP_man-pages/draft/man3/rint.3
manual/LDP_man-pages/draft/man3/round.3
manual/LDP_man-pages/draft/man3/rpc.3
manual/LDP_man-pages/draft/man3/rpmatch.3
manual/LDP_man-pages/draft/man3/rtime.3
manual/LDP_man-pages/draft/man3/rtnetlink.3
manual/LDP_man-pages/draft/man3/scalb.3
manual/LDP_man-pages/draft/man3/scalbln.3
manual/LDP_man-pages/draft/man3/scandir.3
manual/LDP_man-pages/draft/man3/scandirat.3
manual/LDP_man-pages/draft/man3/scanf.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/sched_getcpu.3
manual/LDP_man-pages/draft/man3/seekdir.3
manual/LDP_man-pages/draft/man3/sem_close.3
manual/LDP_man-pages/draft/man3/sem_destroy.3
manual/LDP_man-pages/draft/man3/sem_getvalue.3
manual/LDP_man-pages/draft/man3/sem_init.3
manual/LDP_man-pages/draft/man3/sem_open.3
manual/LDP_man-pages/draft/man3/sem_post.3
manual/LDP_man-pages/draft/man3/sem_unlink.3
manual/LDP_man-pages/draft/man3/sem_wait.3
manual/LDP_man-pages/draft/man3/setaliasent.3
manual/LDP_man-pages/draft/man3/setbuf.3
manual/LDP_man-pages/draft/man3/setenv.3
manual/LDP_man-pages/draft/man3/setjmp.3
manual/LDP_man-pages/draft/man3/setlocale.3
manual/LDP_man-pages/draft/man3/setlogmask.3
manual/LDP_man-pages/draft/man3/setnetgrent.3
manual/LDP_man-pages/draft/man3/shm_open.3
manual/LDP_man-pages/draft/man3/siginterrupt.3
manual/LDP_man-pages/draft/man3/signbit.3
manual/LDP_man-pages/draft/man3/significand.3
manual/LDP_man-pages/draft/man3/sigpause.3
manual/LDP_man-pages/draft/man3/sigqueue.3
manual/LDP_man-pages/draft/man3/sigset.3
manual/LDP_man-pages/draft/man3/sigsetops.3
manual/LDP_man-pages/draft/man3/sigvec.3
manual/LDP_man-pages/draft/man3/sigwait.3
manual/LDP_man-pages/draft/man3/sin.3
manual/LDP_man-pages/draft/man3/sincos.3
manual/LDP_man-pages/draft/man3/sinh.3
manual/LDP_man-pages/draft/man3/sleep.3
manual/LDP_man-pages/draft/man3/sockatmark.3
manual/LDP_man-pages/draft/man3/sqrt.3
manual/LDP_man-pages/draft/man3/statvfs.3
manual/LDP_man-pages/draft/man3/stdarg.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/stdin.3
manual/LDP_man-pages/draft/man3/stdio.3
manual/LDP_man-pages/draft/man3/stdio_ext.3
manual/LDP_man-pages/draft/man3/stpcpy.3
manual/LDP_man-pages/draft/man3/stpncpy.3
manual/LDP_man-pages/draft/man3/strcasecmp.3
manual/LDP_man-pages/draft/man3/strcat.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/strchr.3
manual/LDP_man-pages/draft/man3/strcmp.3
manual/LDP_man-pages/draft/man3/strcoll.3
manual/LDP_man-pages/draft/man3/strcpy.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/strdup.3
manual/LDP_man-pages/draft/man3/strerror.3
manual/LDP_man-pages/draft/man3/strfmon.3
manual/LDP_man-pages/draft/man3/strfry.3
manual/LDP_man-pages/draft/man3/strftime.3
manual/LDP_man-pages/draft/man3/string.3
manual/LDP_man-pages/draft/man3/strlen.3
manual/LDP_man-pages/draft/man3/strnlen.3
manual/LDP_man-pages/draft/man3/strpbrk.3
manual/LDP_man-pages/draft/man3/strptime.3
manual/LDP_man-pages/draft/man3/strsep.3
manual/LDP_man-pages/draft/man3/strsignal.3
manual/LDP_man-pages/draft/man3/strspn.3
manual/LDP_man-pages/draft/man3/strstr.3
manual/LDP_man-pages/draft/man3/strtod.3
manual/LDP_man-pages/draft/man3/strtoimax.3
manual/LDP_man-pages/draft/man3/strtok.3
manual/LDP_man-pages/draft/man3/strtol.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/strtoul.3
manual/LDP_man-pages/draft/man3/strverscmp.3
manual/LDP_man-pages/draft/man3/strxfrm.3
manual/LDP_man-pages/draft/man3/swab.3
manual/LDP_man-pages/draft/man3/sysconf.3
manual/LDP_man-pages/draft/man3/syslog.3
manual/LDP_man-pages/draft/man3/system.3
manual/LDP_man-pages/draft/man3/sysv_signal.3
manual/LDP_man-pages/draft/man3/tan.3
manual/LDP_man-pages/draft/man3/tanh.3
manual/LDP_man-pages/draft/man3/tcgetpgrp.3
manual/LDP_man-pages/draft/man3/tcgetsid.3
manual/LDP_man-pages/draft/man3/telldir.3
manual/LDP_man-pages/draft/man3/tempnam.3
manual/LDP_man-pages/draft/man3/termios.3
manual/LDP_man-pages/draft/man3/tgamma.3
manual/LDP_man-pages/draft/man3/timegm.3
manual/LDP_man-pages/draft/man3/timeradd.3
manual/LDP_man-pages/draft/man3/tmpfile.3
manual/LDP_man-pages/draft/man3/tmpnam.3
manual/LDP_man-pages/draft/man3/toascii.3
manual/LDP_man-pages/draft/man3/toupper.3
manual/LDP_man-pages/draft/man3/towctrans.3
manual/LDP_man-pages/draft/man3/towlower.3
manual/LDP_man-pages/draft/man3/towupper.3
manual/LDP_man-pages/draft/man3/trunc.3
manual/LDP_man-pages/draft/man3/tsearch.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/ttyname.3
manual/LDP_man-pages/draft/man3/ttyslot.3
manual/LDP_man-pages/draft/man3/tzset.3
manual/LDP_man-pages/draft/man3/ualarm.3
manual/LDP_man-pages/draft/man3/ulimit.3
manual/LDP_man-pages/draft/man3/undocumented.3
manual/LDP_man-pages/draft/man3/ungetwc.3
manual/LDP_man-pages/draft/man3/unlocked_stdio.3
manual/LDP_man-pages/draft/man3/unlockpt.3
manual/LDP_man-pages/draft/man3/updwtmp.3
manual/LDP_man-pages/draft/man3/usleep.3
manual/LDP_man-pages/draft/man3/wcpcpy.3
manual/LDP_man-pages/draft/man3/wcpncpy.3
manual/LDP_man-pages/draft/man3/wcrtomb.3
manual/LDP_man-pages/draft/man3/wcscasecmp.3
manual/LDP_man-pages/draft/man3/wcscat.3
manual/LDP_man-pages/draft/man3/wcschr.3
manual/LDP_man-pages/draft/man3/wcscmp.3
manual/LDP_man-pages/draft/man3/wcscpy.3
manual/LDP_man-pages/draft/man3/wcscspn.3
manual/LDP_man-pages/draft/man3/wcsdup.3
manual/LDP_man-pages/draft/man3/wcslen.3
manual/LDP_man-pages/draft/man3/wcsncasecmp.3
manual/LDP_man-pages/draft/man3/wcsncat.3
manual/LDP_man-pages/draft/man3/wcsncmp.3
manual/LDP_man-pages/draft/man3/wcsncpy.3
manual/LDP_man-pages/draft/man3/wcsnlen.3
manual/LDP_man-pages/draft/man3/wcsnrtombs.3
manual/LDP_man-pages/draft/man3/wcspbrk.3
manual/LDP_man-pages/draft/man3/wcsrchr.3
manual/LDP_man-pages/draft/man3/wcsrtombs.3
manual/LDP_man-pages/draft/man3/wcsspn.3
manual/LDP_man-pages/draft/man3/wcsstr.3
manual/LDP_man-pages/draft/man3/wcstoimax.3
manual/LDP_man-pages/draft/man3/wcstok.3
manual/LDP_man-pages/draft/man3/wcstombs.3
manual/LDP_man-pages/draft/man3/wcswidth.3
manual/LDP_man-pages/draft/man3/wctob.3
manual/LDP_man-pages/draft/man3/wctomb.3
manual/LDP_man-pages/draft/man3/wctrans.3
manual/LDP_man-pages/draft/man3/wctype.3
manual/LDP_man-pages/draft/man3/wcwidth.3
manual/LDP_man-pages/draft/man3/wmemchr.3
manual/LDP_man-pages/draft/man3/wmemcmp.3
manual/LDP_man-pages/draft/man3/wmemcpy.3
manual/LDP_man-pages/draft/man3/wmemmove.3
manual/LDP_man-pages/draft/man3/wmemset.3
manual/LDP_man-pages/draft/man3/wordexp.3
manual/LDP_man-pages/draft/man3/wprintf.3
manual/LDP_man-pages/draft/man3/xcrypt.3
manual/LDP_man-pages/draft/man3/xdr.3
manual/LDP_man-pages/draft/man3/y0.3
manual/LDP_man-pages/draft/man4/console.4
manual/LDP_man-pages/draft/man4/console_codes.4
manual/LDP_man-pages/draft/man4/console_ioctl.4
manual/LDP_man-pages/draft/man4/dsp56k.4
manual/LDP_man-pages/draft/man4/fd.4
manual/LDP_man-pages/draft/man4/full.4
manual/LDP_man-pages/draft/man4/hd.4
manual/LDP_man-pages/draft/man4/initrd.4
manual/LDP_man-pages/draft/man4/intro.4
manual/LDP_man-pages/draft/man4/lp.4
manual/LDP_man-pages/draft/man4/mem.4
manual/LDP_man-pages/draft/man4/mouse.4
manual/LDP_man-pages/draft/man4/null.4
manual/LDP_man-pages/draft/man4/pts.4
manual/LDP_man-pages/draft/man4/ram.4
manual/LDP_man-pages/draft/man4/random.4 [new file with mode: 0644]
manual/LDP_man-pages/draft/man4/rtc.4
manual/LDP_man-pages/draft/man4/sd.4
manual/LDP_man-pages/draft/man4/sk98lin.4
manual/LDP_man-pages/draft/man4/st.4
manual/LDP_man-pages/draft/man4/tty.4
manual/LDP_man-pages/draft/man4/ttyS.4
manual/LDP_man-pages/draft/man4/tty_ioctl.4
manual/LDP_man-pages/draft/man4/vcs.4
manual/LDP_man-pages/draft/man4/wavelan.4
manual/LDP_man-pages/draft/man5/acct.5
manual/LDP_man-pages/draft/man5/charmap.5
manual/LDP_man-pages/draft/man5/core.5 [new file with mode: 0644]
manual/LDP_man-pages/draft/man5/dir_colors.5
manual/LDP_man-pages/draft/man5/elf.5
manual/LDP_man-pages/draft/man5/filesystems.5
manual/LDP_man-pages/draft/man5/ftpusers.5
manual/LDP_man-pages/draft/man5/group.5
manual/LDP_man-pages/draft/man5/host.conf.5
manual/LDP_man-pages/draft/man5/hosts.5
manual/LDP_man-pages/draft/man5/hosts.equiv.5
manual/LDP_man-pages/draft/man5/intro.5
manual/LDP_man-pages/draft/man5/issue.5
manual/LDP_man-pages/draft/man5/locale.5
manual/LDP_man-pages/draft/man5/motd.5
manual/LDP_man-pages/draft/man5/networks.5
manual/LDP_man-pages/draft/man5/nologin.5
manual/LDP_man-pages/draft/man5/nscd.conf.5 [new file with mode: 0644]
manual/LDP_man-pages/draft/man5/nsswitch.conf.5 [new file with mode: 0644]
manual/LDP_man-pages/draft/man5/passwd.5
manual/LDP_man-pages/draft/man5/proc.5 [new file with mode: 0644]
manual/LDP_man-pages/draft/man5/protocols.5
manual/LDP_man-pages/draft/man5/resolv.conf.5 [new file with mode: 0644]
manual/LDP_man-pages/draft/man5/rpc.5
manual/LDP_man-pages/draft/man5/securetty.5
manual/LDP_man-pages/draft/man5/services.5
manual/LDP_man-pages/draft/man5/shells.5
manual/LDP_man-pages/draft/man5/slabinfo.5
manual/LDP_man-pages/draft/man5/termcap.5
manual/LDP_man-pages/draft/man5/ttytype.5
manual/LDP_man-pages/draft/man5/tzfile.5
manual/LDP_man-pages/draft/man5/utmp.5
manual/LDP_man-pages/draft/man6/intro.6
manual/LDP_man-pages/draft/man7/aio.7
manual/LDP_man-pages/draft/man7/armscii-8.7
manual/LDP_man-pages/draft/man7/arp.7 [new file with mode: 0644]
manual/LDP_man-pages/draft/man7/ascii.7
manual/LDP_man-pages/draft/man7/boot.7
manual/LDP_man-pages/draft/man7/bootparam.7 [new file with mode: 0644]
manual/LDP_man-pages/draft/man7/capabilities.7 [new file with mode: 0644]
manual/LDP_man-pages/draft/man7/charsets.7
manual/LDP_man-pages/draft/man7/complex.7
manual/LDP_man-pages/draft/man7/cp1251.7
manual/LDP_man-pages/draft/man7/credentials.7
manual/LDP_man-pages/draft/man7/ddp.7
manual/LDP_man-pages/draft/man7/environ.7
manual/LDP_man-pages/draft/man7/epoll.7
manual/LDP_man-pages/draft/man7/feature_test_macros.7
manual/LDP_man-pages/draft/man7/fifo.7
manual/LDP_man-pages/draft/man7/futex.7
manual/LDP_man-pages/draft/man7/glob.7
manual/LDP_man-pages/draft/man7/hier.7
manual/LDP_man-pages/draft/man7/hostname.7
manual/LDP_man-pages/draft/man7/icmp.7
manual/LDP_man-pages/draft/man7/inotify.7
manual/LDP_man-pages/draft/man7/intro.7
manual/LDP_man-pages/draft/man7/ip.7 [new file with mode: 0644]
manual/LDP_man-pages/draft/man7/ipv6.7 [new file with mode: 0644]
manual/LDP_man-pages/draft/man7/iso_8859-1.7 [new file with mode: 0644]
manual/LDP_man-pages/draft/man7/iso_8859-10.7
manual/LDP_man-pages/draft/man7/iso_8859-11.7
manual/LDP_man-pages/draft/man7/iso_8859-13.7
manual/LDP_man-pages/draft/man7/iso_8859-14.7
manual/LDP_man-pages/draft/man7/iso_8859-15.7
manual/LDP_man-pages/draft/man7/iso_8859-16.7
manual/LDP_man-pages/draft/man7/iso_8859-2.7
manual/LDP_man-pages/draft/man7/iso_8859-3.7
manual/LDP_man-pages/draft/man7/iso_8859-4.7
manual/LDP_man-pages/draft/man7/iso_8859-5.7
manual/LDP_man-pages/draft/man7/iso_8859-6.7
manual/LDP_man-pages/draft/man7/iso_8859-7.7
manual/LDP_man-pages/draft/man7/iso_8859-8.7
manual/LDP_man-pages/draft/man7/iso_8859-9.7
manual/LDP_man-pages/draft/man7/koi8-r.7
manual/LDP_man-pages/draft/man7/koi8-u.7
manual/LDP_man-pages/draft/man7/libc.7
manual/LDP_man-pages/draft/man7/locale.7
manual/LDP_man-pages/draft/man7/mailaddr.7
manual/LDP_man-pages/draft/man7/man-pages.7 [new file with mode: 0644]
manual/LDP_man-pages/draft/man7/man.7
manual/LDP_man-pages/draft/man7/math_error.7
manual/LDP_man-pages/draft/man7/mdoc.7
manual/LDP_man-pages/draft/man7/mdoc.samples.7 [new file with mode: 0644]
manual/LDP_man-pages/draft/man7/mq_overview.7
manual/LDP_man-pages/draft/man7/netdevice.7
manual/LDP_man-pages/draft/man7/netlink.7 [new file with mode: 0644]
manual/LDP_man-pages/draft/man7/operator.7
manual/LDP_man-pages/draft/man7/packet.7
manual/LDP_man-pages/draft/man7/path_resolution.7
manual/LDP_man-pages/draft/man7/pipe.7
manual/LDP_man-pages/draft/man7/posixoptions.7
manual/LDP_man-pages/draft/man7/pthreads.7
manual/LDP_man-pages/draft/man7/pty.7
manual/LDP_man-pages/draft/man7/raw.7
manual/LDP_man-pages/draft/man7/regex.7
manual/LDP_man-pages/draft/man7/rtnetlink.7 [new file with mode: 0644]
manual/LDP_man-pages/draft/man7/sem_overview.7
manual/LDP_man-pages/draft/man7/shm_overview.7
manual/LDP_man-pages/draft/man7/signal.7
manual/LDP_man-pages/draft/man7/socket.7 [new file with mode: 0644]
manual/LDP_man-pages/draft/man7/standards.7
manual/LDP_man-pages/draft/man7/suffixes.7
manual/LDP_man-pages/draft/man7/svipc.7 [new file with mode: 0644]
manual/LDP_man-pages/draft/man7/tcp.7
manual/LDP_man-pages/draft/man7/termio.7
manual/LDP_man-pages/draft/man7/time.7 [new file with mode: 0644]
manual/LDP_man-pages/draft/man7/udp.7
manual/LDP_man-pages/draft/man7/udplite.7
manual/LDP_man-pages/draft/man7/unicode.7
manual/LDP_man-pages/draft/man7/units.7
manual/LDP_man-pages/draft/man7/unix.7
manual/LDP_man-pages/draft/man7/uri.7 [new file with mode: 0644]
manual/LDP_man-pages/draft/man7/utf-8.7
manual/LDP_man-pages/draft/man7/x25.7
manual/LDP_man-pages/draft/man8/intro.8
manual/LDP_man-pages/draft/man8/ld.so.8 [new file with mode: 0644]
manual/LDP_man-pages/draft/man8/ldconfig.8
manual/LDP_man-pages/draft/man8/nscd.8
manual/LDP_man-pages/draft/man8/sync.8
manual/LDP_man-pages/draft/man8/tzselect.8
manual/LDP_man-pages/draft/man8/zdump.8 [new file with mode: 0644]
manual/LDP_man-pages/draft/man8/zic.8

index e5c3df6..d3cb4d1 100644 (file)
@@ -180,6 +180,6 @@ UNIX システムでは、多くのユーザプロセスとシステムプロセ
 .SH 関連項目
 \fBstandards\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man1/ldd.1 b/manual/LDP_man-pages/draft/man1/ldd.1
new file mode 100644 (file)
index 0000000..62a5745
--- /dev/null
@@ -0,0 +1,81 @@
+.\" Copyright 1995-2000 David Engel (david@ods.com)
+.\" Copyright 1995 Rickard E. Faith (faith@cs.unc.edu)
+.\" Copyright 2000 Ben Collins (bcollins@debian.org)
+.\"    Redone for GLibc 2.2
+.\" Copyright 2000 Jakub Jelinek (jakub@redhat.com)
+.\"    Corrected.
+.\" Most of this was copied from the README file.
+.\"
+.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
+.\" Do not restrict distribution.
+.\" May be distributed under the GNU General Public License
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH LDD 1 2012\-07\-16 "" "Linux Programmer's Manual"
+.SH 名前
+ldd \- 共有ライブラリへの依存関係を表示する
+.SH 書式
+\fBldd\fP [OPTION]... FILE...
+.SH 説明
+\fBldd\fP はコマンドラインで指定したプログラムや共有ライブラリについて、 それぞれで必要とされる共有ライブラリを表示する。
+.SS Security
+.\" Mainline glibc's ldd allows this possibility (the line
+.\"      try_trace "$file"
+.\" in glibc 2.15, for example), but many distro versions of
+.\" ldd seem to remove that code path from the script.
+In the usual case, \fBldd\fP invokes the standard dynamic linker (see
+\fBld.so\fP(8))  with the \fBLD_TRACE_LOADED_OBJECTS\fP environment variable set
+to 1, which causes the linker to display the library dependencies.  Be
+aware, however, that in some circumstances, some versions of \fBldd\fP may
+attempt to obtain the dependency information by directly executing the
+program.  Thus, you should \fInever\fP employ \fBldd\fP on an untrusted
+executable, since this may result in the execution of arbitrary code.  A
+safer alternative when dealing with untrusted executables is:
+
+    $ objdump \-p /path/to/program | grep NEEDED
+.SH オプション
+.TP 
+\fB\-\-version\fP
+\fBldd\fP のバージョン番号を表示する。
+.TP 
+\fB\-v\ \-\-verbose\fP
+シンボルのバージョン情報などを含めた全ての情報を表示する。
+.TP 
+\fB\-u\ \-\-unused\fP
+使用されていない直接の依存関係を表示する (glibc 2.3.4 以降)。
+.TP 
+\fB\-d\ \-\-data\-relocs\fP
+リロケーションを実行し、足りないオブジェクトについてレポートする (ELF のみ)。
+.TP 
+\fB\-r\ \-\-function\-relocs\fP
+足りないオブジェクトや関数についてレポートする (ELF のみ)。
+.TP 
+\fB\-\-help\fP
+使用法を表示する。
+.SH 注意
+標準的なバージョンの \fBldd\fP は glibc2 に付属している。 libc5 には古いバージョンのものが付属しており、
+これが入っているシステムもまだ存在する。 libc5 バージョンではロングオプションがサポートされていない。 一方、glibc2 バージョンでは
+\fB\-V\fP をサポートしておらず、これと同じ意味の \fB\-\-version\fP しかサポートしていない。
+.LP
+libc5 バージョンのプログラムでは、 コマンドラインで与えられたライブラリ名に \(aq/\(aq
+が含まれている場合は、ライブラリ名をそのまま用いる。 \(aq/\(aq が含まれていない場合は、標準的なパスからライブラリを検索する。
+カレントディレクトリにある共有ライブラリに対して実行するには、 名前にプレフィックス "./" を付けること。
+.SH バグ
+\fBldd\fP は a.out 共有ライブラリでは動作しない。
+.PP
+.\" .SH AUTHOR
+.\" David Engel.
+.\" Roland McGrath and Ulrich Drepper.
+\fBldd\fP は非常に古い a.out プログラム (\fBldd\fP のサポートがコンパイラに追加される以前にビルドされたようなプログラム)
+では動作しない。 このようなプログラムに対して \fBldd\fP を用いると、プログラムは \fIargc\fP = 0 で実行される。結果は予想不可能である。
+.SH 関連項目
+\fBld.so\fP(8), \fBldconfig\fP(8)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index d529959..93b3f64 100644 (file)
@@ -3,7 +3,7 @@
 .\" Inspired by kromJx@crosswinds.net.
 .\"
 .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
-.\" This page is distributed under GPL.
+.\" Distributed under GPL
 .\" %%%LICENSE_END
 .\"
 .\"*******************************************************************
@@ -215,6 +215,6 @@ GNU \fBtime\fP に対する提案やバグレポートは
 .SH 関連項目
 \fBtcsh\fP(1), \fBtimes\fP(2), \fBwait3\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 33356aa..c63ad0c 100644 (file)
@@ -1,5 +1,5 @@
 .\" This manpage is Copyright (C) 1992 Drew Eckhardt;
-.\"                               1993 Michael Haardt, Ian Jackson.
+.\"             and Copyright (C) 1993 Michael Haardt, Ian Jackson.
 .\"
 .\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
@@ -86,6 +86,6 @@ exit の効果、終了状態の受渡し、ゾンビプロセス、シグナル
 \fBwait4\fP(2), \fBwaitpid\fP(2), \fBatexit\fP(3), \fBexit\fP(3), \fBon_exit\fP(3),
 \fBtermios\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ad9ad14..bfcadbe 100644 (file)
@@ -92,7 +92,7 @@ _syscall() マクロは、そのシステムコールの返り値 \fIr\fP が負
 .\" The preferred way to invoke system calls that glibc does not know
 .\" about yet is via
 .\" .BR syscall (2).
-.\" However, this mechanism can only be used if using a libc
+.\" However, this mechanism can be used only if using a libc
 .\" (such as glibc) that supports
 .\" .BR syscall (2),
 .\" and if the
@@ -149,6 +149,6 @@ Number of processes = 40
 .SH 関連項目
 \fBintro\fP(2), \fBsyscall\fP(2), \fBerrno\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e922b78..7e89deb 100644 (file)
@@ -217,6 +217,6 @@ Single UNIX Specification や glibc2 ではこのように宣言されるよう
 \fBbind\fP(2), \fBconnect\fP(2), \fBlisten\fP(2), \fBselect\fP(2), \fBsocket\fP(2),
 \fBsocket\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 084b300..0ab5984 100644 (file)
@@ -1,5 +1,5 @@
 .\" This manpage is Copyright (C) 1992 Drew Eckhardt;
-.\"                               1993 Michael Haardt, Ian Jackson.
+.\"             and Copyright (C) 1993 Michael Haardt, Ian Jackson.
 .\" and Copyright (C) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
 .\"
 .\" %%%LICENSE_START(VERBATIM)
@@ -45,7 +45,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH ACCESS 2 2013\-02\-28 Linux "Linux Programmer's Manual"
+.TH ACCESS 2 2013\-04\-16 Linux "Linux Programmer's Manual"
 .SH 名前
 access \- ファイルに対する実ユーザーでのアクセス権をチェックする
 .SH 書式
@@ -70,8 +70,11 @@ access \- ファイルに対する実ユーザーでのアクセス権をチェ
 呼び出し元プロセスが特権プロセス (つまり、プロセスの実 UID が 0) の場合、 通常のファイルに対する \fBX_OK\fP
 のチェックは、そのファイルの所有者、グループ、他人のいずれかの 実行許可が有効になっていれば成功する。
 .SH 返り値
-成功した場合 (要求した全てについて許可が得られたら)、ゼロが返される。 エラーの場合 (\fImode\fP
-の少なくとも一つのビットで要求した許可がなかった場合や、 他のエラーが起こった場合)、\-1 が返され、 \fIerrno\fP が適切に設定される。
+On success (all requested permissions granted, or \fImode\fP is \fBF_OK\fP and the
+file exists), zero is returned.  On error (at least one bit in \fImode\fP asked
+for a permission that is denied, or \fImode\fP is \fBF_OK\fP and the file does not
+exist, or some other error occurred), \-1 is returned, and \fIerrno\fP is set
+appropriately.
 .SH エラー
 \fBaccess\fP()  は以下の場合に失敗する。
 .TP 
@@ -160,6 +163,6 @@ POSIX.1\-2001 では、 呼び出し元プロセスが適切な特権を持っ
 \fBsetuid\fP(2), \fBstat\fP(2), \fBeauidaccess\fP(3), \fBcredentials\fP(7),
 \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8687d9f..58c5ce9 100644 (file)
@@ -117,6 +117,6 @@ SVr4, 4.3BSD (POSIX ではない)。
 .SH 関連項目
 \fBacct\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index d406b5f..388cc04 100644 (file)
@@ -116,6 +116,6 @@ struct timex {
 .SH 関連項目
 \fBsettimeofday\fP(2), \fBadjtime\fP(3), \fBcapabilities\fP(7), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index d44ec43..51f10aa 100644 (file)
@@ -1,5 +1,5 @@
 .\" This manpage is Copyright (C) 1992 Drew Eckhardt;
-.\"                               1993 Michael Haardt, Ian Jackson.
+.\"             and Copyright (C) 1993 Michael Haardt, Ian Jackson.
 .\"
 .\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
@@ -32,7 +32,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH ALARM 2 2008\-06\-12 Linux "Linux Programmer's Manual"
+.TH ALARM 2 2013\-04\-18 Linux "Linux Programmer's Manual"
 .SH 名前
 alarm \- シグナル配送のためのアラーム・クロックを設定する
 .SH 書式
@@ -44,7 +44,7 @@ alarm \- シグナル配送のためのアラーム・クロックを設定す
 .SH 説明
 \fBalarm\fP()  は \fBSIGALRM\fP シグナルを \fIseconds\fP 秒後に呼び出したプロセスに配送するように手配する。
 
-\fIseconds\fP がゼロならば、新たな \fBalarm\fP()  は手配されない。
+If \fIseconds\fP is zero, any pending alarm is cancelled.
 
 今までに設定されていた \fBalarm\fP()  は中断される。
 .SH 返り値
@@ -62,6 +62,6 @@ SVr4, POSIX.1\-2001, 4.3BSD.
 \fBgettimeofday\fP(2), \fBpause\fP(2), \fBselect\fP(2), \fBsetitimer\fP(2),
 \fBsigaction\fP(2), \fBsignal\fP(2), \fBsleep\fP(3), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6edca79..724cb72 100644 (file)
@@ -93,6 +93,6 @@ HugePages_Free, Hugepagesize の サイズについての情報を提供する
 .\" mount -t hugetlbfs hugetlbfs /huge
 .\" SHM_HUGETLB
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index afef075..7777d8b 100644 (file)
@@ -94,6 +94,6 @@ x86\-64 の副機能は以下の通り:
 
 AMD X86\-64 Programmer's manual
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ecb364c..7889319 100644 (file)
@@ -81,6 +81,6 @@ bdflush \- バッファー・ダーティー・フラッシュ・デーモンを
 .SH 関連項目
 \fBfsync\fP(2), \fBsync\fP(2), \fBsync\fP(8), \fBupdate\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5581ee2..9a90a23 100644 (file)
@@ -246,6 +246,6 @@ main(int argc, char *argv[])
 \fBgetaddrinfo\fP(3), \fBgetifaddrs\fP(3), \fBip\fP(7), \fBipv6\fP(7),
 \fBpath_resolution\fP(7), \fBsocket\fP(7), \fBunix\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ca4ce8f..dfc278c 100644 (file)
@@ -113,6 +113,6 @@ Linux では \fBsbrk\fP()  は \fBbrk\fP()  システムコールを使うライ
 .SH 関連項目
 \fBexecve\fP(2), \fBgetrlimit\fP(2), \fBend\fP(3), \fBmalloc\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8074f64..f2b5de2 100644 (file)
@@ -67,6 +67,6 @@ cacheflush \- 命令キャッシュやデータキャッシュの内容をフラ
 .SH バグ
 現在の実装では、引き数 \fIaddr\fP と \fInbytes\fP は無視される。そのため、 常に全てのキャッシュがフラッシュされる。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/capget.2 b/manual/LDP_man-pages/draft/man2/capget.2
new file mode 100644 (file)
index 0000000..dbb18b1
--- /dev/null
@@ -0,0 +1,142 @@
+.\" written by Andrew Morgan <morgan@kernel.org>
+.\"
+.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
+.\" may be distributed as per GPL
+.\" %%%LICENSE_END
+.\"
+.\" Modified by David A. Wheeler <dwheeler@ida.org>
+.\" Modified 2004-05-27, mtk
+.\" Modified 2004-06-21, aeb
+.\" Modified 2008-04-28, morgan of kernel.org
+.\"     Update in line with addition of file capabilities and
+.\"     64-bit capability sets in kernel 2.6.2[45].
+.\" Modified 2009-01-26, andi kleen
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH CAPGET 2 2013\-03\-11 Linux "Linux Programmer's Manual"
+.SH 名前
+capget, capset \- スレッドのケーパビリティを設定/取得する
+.SH 書式
+\fB#include <sys/capability.h>\fP
+.sp
+\fBint capget(cap_user_header_t \fP\fIhdrp\fP\fB, cap_user_data_t \fP\fIdatap\fP\fB);\fP
+.sp
+\fBint capset(cap_user_header_t \fP\fIhdrp\fP\fB, const cap_user_data_t
+\fP\fIdatap\fP\fB);\fP
+.SH 説明
+Linux 2.2 で、スーパーユーザー (root) の権限は、個別のケーパビリティ (capabilities)
+へと分割され、その集合として表現されるようになった。 各スレッドは「実効ケーパビリティ (effective capability) の集合」を持ち、
+それによって現在どの操作が実行可能かを識別できる。 また、各スレッドは、 「継承可能ケーパビリティ (inheritable capability)
+の集合」と 「許可ケーパビリティ (permitted capability) の集合」を持つ。 「継承可能ケーパビリティの集合」は
+\fBexecve\fP(2)  を通じて渡すことができるケーパビリティの集合であり、 「許可ケーパビリティ (permitted capability)
+の集合」は 実効ケーパビリティや継承可能ケーパビリティとして有効にできる ケーパビリティを規定するものである。
+.PP
+この二つのシステムコールはスレッドのケーパビリティを取得したり設定したりするための 生のカーネルインターフェースである。 これらのシステムコールは
+Linux 特有であるというだけでなく、 カーネル API は変更されるかもしれず、これらのシステムコールの使用法 (特に
+\fIcap_user_*_t\fP 型という書式) はカーネルのリビジョン毎に拡張されるかもしれないが、 以前のプログラムはそのまま動作する。
+.sp
+移植性のあるインターフェースは \fBcap_set_proc\fP(3)  と \fBcap_get_proc\fP(3)  である。
+可能ならばアプリケーションはこれらの関数を使用すべきである。 アプリケーションに Linux 拡張を使用したい場合には、より簡単に
+使えるインターフェースである \fBcapsetp\fP(3)  と \fBcapgetp\fP(3)  を使用すべきである。
+.SS 現在の詳細
+現在のカーネルの詳細について注意を述べておく。 構造体は以下のように定義される。
+.sp
+.nf
+.in +4n
+#define _LINUX_CAPABILITY_VERSION_1  0x19980330
+#define _LINUX_CAPABILITY_U32S_1     1
+
+#define _LINUX_CAPABILITY_VERSION_2  0x20071026
+#define _LINUX_CAPABILITY_U32S_2     2
+
+typedef struct __user_cap_header_struct {
+   __u32 version;
+   int pid;
+} *cap_user_header_t;
+
+typedef struct __user_cap_data_struct {
+   __u32 effective;
+   __u32 permitted;
+   __u32 inheritable;
+} *cap_user_data_t;
+.fi
+.in -4n
+.sp
+フィールド \fIeffective\fP, \fIpermitted\fP, \fIinheritable\fP は、 \fBcapability\fP(7)
+で定義されるケーパビリティのビットマスクである。 \fICAP_*\fP はビット番号を表すインデックス値であり、 ビットフィールドに OR を行う前に
+\fICAP_*\fP の値の分だけビットシフトを行う必要がある。 typedef の方はポインタなので、 このシステムコールに渡す構造体を定義するには、
+\fIstruct __user_cap_header_struct\fP と \fIstruct __user_cap_data_struct\fP
+という名前を使用しなければならない。
+
+カーネル 2.6.25 より前では、バージョン \fB_LINUX_CAPABILITY_VERSION_1\fP の 32
+ビットケーパビリティが推奨である。 カーネル 2.6.25 以降では、バージョン \fB_LINUX_CAPABILITY_VERSION_2\fP の 64
+ビットケーパビリティが推奨である。 64 ビットケーパビリティでは \fIdatap\fP[0] と \fIdatap\fP[1] が使用されるのに対し、 32
+ビットケーパビリティでは \fIdatap\fP[0] だけが使用される。
+.sp
+これらのシステムコールの挙動に影響があるもう一つの変更点は、 ファイルケーパビリティ (file capabilities) のカーネルによるサポート
+(VFS ケーパビリティのサポート) である。 VFS ケーパビリティのサポートは現在のところコンパイル時のオプションである (カーネル 2.6.24
+で追加された)。
+.sp
+\fBcapget\fP()  では、 \fIhdrp\->pid\fP のフィールド値にケーパビリティを知りたいプロセスのプロセス ID を
+指定することで、任意のプロセスのケーパビリティを調べることができる。
+.SS "VFS ケーパビリティがサポートされている場合"
+VFS ケーパビリティのサポートでは、特権実行ファイルにケーパビリティを 追加するためのファイル属性メソッドが作成された。
+この特権モデルの導入により、あるプロセスにより別のプロセスのケーパビリティ を非同期に設定する機能のカーネルによるサポートは廃止される。 つまり、VFS
+サポートでは、 \fBcapset\fP()  を呼び出す際に \fIhdrp\->pid\fP の値として許されるのは 0 と \fBgetpid\fP(2)
+が返す値だけとなる (どちらの値でも等価である)。
+.SS "VFS ケーパビリティがサポートされていない場合"
+カーネルが VFS ケーパビリティをサポートしていない場合、 \fIhdrp\fP の \fIpid\fP フィールドが 0 以外であれば、 \fBcapset\fP()
+の操作対象は \fIpid\fP で指定されたスレッドのケーパビリティになる。 \fIpid\fP が 0
+の場合は呼び出し元のスレッドのケーパビリティが操作対象となる。 \fIpid\fP がシングルスレッド・プロセスを参照している場合、 \fIpid\fP
+は以前から使われているプロセスID を使って指定できる。 マルチスレッド・プロセス内のあるスレッドを対象にする場合は、 \fBgettid\fP(2)
+が返すスレッドID を用いて指定する必要がある。 また、 \fBcapset\fP()  では \-1 や \-1 より小さな値を指定することもできる。 \-1
+は呼び出し元と \fBinit\fP(8)  を除く全てのスレッドを対象として変更を行うことを、 \-1 より小さな値は ID が \-\fIpid\fP
+のプロセスグループの全メンバ を対象として変更を行うことを意味する。
+
+このデータの詳細は \fBcapabilities\fP(7)  を参照すること。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+
+\fIhdrp\fP のフィールド \fIversion\fP にサポートされていない値が指定された場合、 呼び出しはエラー \fBEINVAL\fP で失敗し、
+\fIversion\fP にカーネル推奨の \fB_LINUX_CAPABILITY_VERSION_?\fP を設定する。
+このようにして、現在の推奨ケーパビリティ・リビジョンが何かを 調べることができる。
+.SH エラー
+.TP 
+\fBEFAULT\fP
+不正なメモリアドレス。 \fIhdrp\fP は NULL であってはならない。 \fIdatap\fP に NULL
+を指定してよいのは、ユーザがカーネルがサポートしている 推奨のケーパビリティ・バージョンを判定しようとしているときだけである。
+.TP 
+\fBEINVAL\fP
+引き数のどれかが無効である。
+.TP 
+\fBEPERM\fP
+「許可ケーパビリティセット」にケーパビリティを追加しようとしているか、 もしくは「許可ケーパビリティセット」に含まれないケーパビリティを
+「実効ケーパビリティセット」や「継承可能ケーパビリティセット」に セットしようとしている。
+.TP 
+\fBEPERM\fP
+呼び出し元が自分以外のスレッドのケーパビリティを \fBcapset\fP()  を使って修正しようとしたが、十分な特権がなかった。 VFS
+ケーパビリティをサポートしているカーネルでは、 この操作が許可されることは決してない。 VFS ケーパビリティをサポートしていないカーネルでは、
+\fBCAP_SETPCAP\fP ケーパビリティが必要である。 (バージョン 2.6.11 より前のカーネルには、 このケーパビリティを持たないスレッドが
+\fIpid\fP フィールドに 0 でない値 (つまり、0 の代わりに \fBgetpid\fP(2)  が返す値)
+を指定して自分自身のケーパビリティを変更しようとした場合にも、 このエラーが発生するというバグがあった。)
+.TP 
+\fBESRCH\fP
+そのようなスレッドが存在しない。
+.SH 準拠
+これらのシステムコールは Linux 独自である。
+.SH 注意
+ケーパビリティを設定したり取得したりする機能のための移植性ある インターフェースは \fIlibcap\fP ライブラリによって提供される。
+このライブラリは以下から入手できる:
+.br
+.UR http://git.kernel.org/cgit\:/linux\:/kernel\:/git\:/morgan\:\:/libcap.git
+.UE
+.SH 関連項目
+\fBclone\fP(2), \fBgettid\fP(2), \fBcapabilities\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9b32061..5f8557c 100644 (file)
@@ -111,6 +111,6 @@ SVr4, 4.4BSD, POSIX.1\-2001.
 .SH 関連項目
 \fBchroot\fP(2), \fBgetcwd\fP(3), \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9c5a294..0b1104c 100644 (file)
@@ -178,6 +178,6 @@ I/O エラーが発生した。
 \fBchown\fP(2), \fBexecve\fP(2), \fBfchmodat\fP(2), \fBopen\fP(2), \fBstat\fP(2),
 \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 37d0642..7ace1ea 100644 (file)
@@ -231,6 +231,6 @@ main(int argc, char *argv[])
 \fBchmod\fP(2), \fBfchownat\fP(2), \fBflock\fP(2), \fBpath_resolution\fP(7),
 \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index fd2bf77..37f9040 100644 (file)
@@ -130,6 +130,6 @@ FreeBSD にはより強力な \fBjail\fP()  システムコールがある。
 .SH 関連項目
 \fBchdir\fP(2), \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/clock_getres.2 b/manual/LDP_man-pages/draft/man2/clock_getres.2
new file mode 100644 (file)
index 0000000..bb5f7be
--- /dev/null
@@ -0,0 +1,186 @@
+.\" Copyright (c) 2003 Nick Clifford (zaf@nrc.co.nz), Jan 25, 2003
+.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl), Aug 24, 2003
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" 2003-08-23 Martin Schulze <joey@infodrom.org> improvements
+.\" 2003-08-24 aeb, large parts rewritten
+.\" 2004-08-06 Christoph Lameter <clameter@sgi.com>, SMP note
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH CLOCK_GETRES 2 2013\-02\-25 "" "Linux Programmer's Manual"
+.SH 名前
+clock_getres, clock_gettime, clock_settime \- クロックと時間の関数
+.SH 書式
+\fB#include <time.h>\fP
+.sp
+\fBint clock_getres(clockid_t \fP\fIclk_id\fP\fB, struct timespec *\fP\fIres\fP\fB);\fP
+
+\fBint clock_gettime(clockid_t \fP\fIclk_id\fP\fB, struct timespec *\fP\fItp\fP\fB);\fP
+
+\fBint clock_settime(clockid_t \fP\fIclk_id\fP\fB, const struct timespec
+*\fP\fItp\fP\fB);\fP
+.sp
+Link with \fI\-lrt\fP (only for glibc versions before 2.17).
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+.ad l
+\fBclock_getres\fP(), \fBclock_gettime\fP(), \fBclock_settime\fP():
+.RS
+_POSIX_C_SOURCE\ >=\ 199309L
+.RE
+.ad b
+.SH 説明
+関数 \fBclock_getres\fP()  は 指定されたクロック \fIclk_id\fP の分解能 (精度) を探し出す。 \fIres\fP が NULL
+でない場合、その分解能を \fIres\fP で指される \fIstruct timespec\fP に格納する。 クロックの分解能は実装に依存し、
+特定のプロセスによって設定することはできない。 \fBclock_settime\fP()  の引き数 \fItp\fP で指される時間の値が \fIres\fP
+の倍数でない場合、 \fIres\fP の倍数に切り詰められる。
+.PP
+関数 \fBclock_gettime\fP()  と \fBclock_settime\fP()  は、指定されたクロック \fIclk_id\fP
+の時間を取得または設定する。
+.PP
+\fIres\fP と \fItp\fP 引き数は \fItimespec\fP 構造体であり、 \fI<time.h>\fP で以下のように規定されている:
+.sp
+.in +4n
+.nf
+struct timespec {
+    time_t   tv_sec;        /* seconds */
+    long     tv_nsec;       /* nanoseconds */
+};
+.fi
+.in
+.PP
+\fIclk_id\fP 引き数は特定のクロックの識別子であり、そのクロックで動作する。 クロックはシステム全体に適用することもでき、
+その場合は全てのプロセスから見ることができる。 また 1 つのプロセス内でのみ時間を計測する場合は、 プロセス毎に適用することもできる。
+.LP
+全ての実装においてシステム全体のリアルタイムクロックがサポートされ、 \fBCLOCK_REALTIME\fP で識別される。 時間は紀元 (the
+Epoch) からの秒とナノ秒で表される。 時間が変更された場合、相対的な時間間隔のタイマは影響を受けないが、 絶対的な時点のタイマは影響を受ける。
+.LP
+さらにいくつかのクロックが実装されているかもしれない。 対応する時間の値を解釈する方法とタイマへの影響は、定められていない。
+.LP
+glibc と Linux カーネルの最新のバージョンでは、
+以下のクロックがサポートされている。
+.TP 
+\fBCLOCK_REALTIME\fP
+実時間を計測するシステム全体で一意な時間。
+このクロックを設定するには適切な特権が必要である。
+このクロックは、システム時間の不連続な変化 (例えば、システム管理者が
+システム時間を手動で変更した場合など) や \fBadjtime\fP や NTP が行う
+段階的な調整の影響を受ける。
+.TP 
+\fBCLOCK_REALTIME_COARSE\fP (Linux 2.6.32 以降; Linux 特有)
+.\" Added in commit da15cfdae03351c689736f8d142618592e3cebc3
+A faster but less precise version of \fBCLOCK_REALTIME\fP.  Use when you need
+very fast, but not fine\-grained timestamps.
+.TP 
+.TP 
+\fBCLOCK_MONOTONIC\fP
+設定することができないクロックで、ある開始時点からの単調増加の時間で
+表現されるクロック (開始時点がどの時点となるかは規定されていない)。
+この時計は、システム時間の不連続な変化 (例えば、システム管理者がシステ
+ム時間を手動で変更した場合など) の影響を受けないが、
+\fBadjtime\fP(3) や NTP が行う段階的な調整の影響を受ける。
+.TP 
+\fBCLOCK_MONOTONIC_COARSE\fP (Linux 2.6.32 以降; Linux 特有)
+.\" Added in commit da15cfdae03351c689736f8d142618592e3cebc3
+A faster but less precise version of \fBCLOCK_MONOTONIC\fP.  Use when you need
+very fast, but not fine\-grained timestamps.
+.TP 
+\fBCLOCK_MONOTONIC_RAW\fP (Linux 2.6.28 以降; Linux 特有)
+.\" Added in commit 2d42244ae71d6c7b0884b5664cf2eda30fb2ae68, John Stultz
+\fBCLOCK_MONOTONIC\fP と同様だが、NTP による調整や \fBadjtime\fP(3) が行う
+段階的な調整の影響を受けない、ハードウェアによる生の時刻へのアクセス
+ができる。
+.TP 
+\fBCLOCK_BOOTTIME\fP (Linux 2.6.39 以降; Linux 特有)
+.\" commit 7fdd7f89006dd5a4c702fa0ce0c272345fa44ae0
+.\" commit 70a08cca1227dc31c784ec930099a4417a06e7d0
+Identical to \fBCLOCK_MONOTONIC\fP, except it also includes any time that the
+system is suspended.  This allows applications to get a suspend\-aware
+monotonic clock without having to deal with the complications of
+\fBCLOCK_REALTIME\fP, which may have discontinuities if the time is changed
+using \fBsettimeofday\fP(2).
+.TP 
+\fBCLOCK_PROCESS_CPUTIME_ID\fP
+CPU による高分解能のプロセス毎のタイマ。
+.TP 
+\fBCLOCK_THREAD_CPUTIME_ID\fP
+スレッド固有の CPU タイムクロック。
+.SH 返り値
+\fBclock_gettime\fP(), \fBclock_settime\fP(), \fBclock_getres\fP()  は成功した場合に 0
+を返し、失敗した場合に \-1 を返す (失敗した場合、 \fIerrno\fP が適切に設定される)。
+.SH エラー
+.TP 
+\fBEFAULT\fP
+\fItp\fP がアクセス可能なアドレス空間の外を指した。
+.TP 
+\fBEINVAL\fP
+.\" Linux also gives this error on attempts to set CLOCK_PROCESS_CPUTIME_ID
+.\" and CLOCK_THREAD_CPUTIME_ID, when probably the proper error should be
+.\" EPERM.
+指定された \fIclk_id\fP がこのシステムでサポートされていない。
+.TP 
+\fBEPERM\fP
+指示されたクロックを設定する権限が \fBclock_settime\fP()  にない。
+.SH 準拠
+SUSv2, POSIX.1\-2001.
+.SH 可用性
+これらの関数が利用可能な POSIX システムでは、\fI<unistd.h>\fP においてシンボル \fB_POSIX_TIMERS\fP が
+0 より大きい値に定義されている。 シンボル \fB_POSIX_MONOTONIC_CLOCK\fP, \fB_POSIX_CPUTIME\fP,
+\fB_POSIX_THREAD_CPUTIME\fP は \fBCLOCK_MONOTONIC\fP, \fBCLOCK_PROCESS_CPUTIME_ID\fP,
+\fBCLOCK_THREAD_CPUTIME_ID\fP が利用可能なことを示す。 (\fBsysconf\fP(3)  も参照すること。)
+.SH 注意
+.SS "SMP システムについての注意"
+\fBCLOCK_PROCESS_CPUTIME_ID\fP と \fBCLOCK_THREAD_CPUTIME_ID\fP クロックは、CPU からのタイマ
+(i386 上の TSC、Itanium 上の AR.ITC) を用いて実現されている。 これらのレジスタは CPU 間で異なる可能性があり、
+プロセスが他の CPU に移動させられた場合、 結果としてこれらのクロックが\fB偽の結果\fP (bogus results) を返すかもしれない。
+.PP
+SMP システムの各 CPU が別々のクロック源を持つ場合、 タイマレジスタ間の相互関係を管理する方法はない。 これは各 CPU
+が微妙に異なる周波数で動作するためである。 これが真実の場合 (訳註: 各 CPU が別々のクロック源を持つ場合)、
+\fIclock_getcpuclockid(0)\fP は \fBENOENT\fP を返して、その状況を表す。 2 つのクロックは、プロセスが特定の CPU
+上に留まっていることが 保証できる場合にのみ有効である。
+.PP
+SMP システムの各プロセッサは全く同じ時刻に起動する訳ではないので、 各タイマレジスタは通常はあるオフセットで動作している。
+オフセットをブート時に制限するコードが含まれるアーキテクチャもある。 しかし、このコードがオフセットを正確に調整することは保証できない。 glibc は
+(Linux カーネルとは異なり) オフセットを扱うためのコードを提供しない。 通常はこれらのオフセットが小さいので、多くの場合でその影響は無視できる。
+.SH バグ
+.\" See http://bugzilla.kernel.org/show_bug.cgi?id=11972
+POSIX.1\-2001 では、 「適切な特権 (appropriate privileges)」を持ったプロセスは、
+\fBclock_settime\fP()  を使って、クロック \fBCLOCK_PROCESS_CPUTIME_ID\fP と
+\fBCLOCK_THREAD_CPUTIME_ID\fP を設定することができるとされている。 Linux では、これらのクロックは設定可能ではない
+(すなわち、どのプロセスも「適切な特権」を持たない)。
+.SH 関連項目
+\fBdate\fP(1), \fBgettimeofday\fP(2), \fBsettimeofday\fP(2), \fBtime\fP(2),
+\fBadjtime\fP(3), \fBclock_getcpuclockid\fP(3), \fBctime\fP(3), \fBftime\fP(3),
+\fBpthread_getcpuclockid\fP(3), \fBsysconf\fP(3), \fBtime\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/clock_nanosleep.2 b/manual/LDP_man-pages/draft/man2/clock_nanosleep.2
new file mode 100644 (file)
index 0000000..b88d8a1
--- /dev/null
@@ -0,0 +1,154 @@
+.\" Copyright (c) 2008, Linux Foundation, written by Michael Kerrisk
+.\" <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH CLOCK_NANOSLEEP 2 2012\-11\-07 Linux "Linux Programmer's Manual"
+.SH 名前
+clock_nanosleep \- 指定したクロックでの高精度な実行停止 (sleep)
+.SH 書式
+\fB#include <time.h>\fP
+.nf
+.sp
+\fBint clock_nanosleep(clockid_t \fP\fIclock_id\fP\fB, int \fP\fIflags\fP\fB,\fP
+\fB                    const struct timespec *\fP\fIrequest\fP\fB,\fP
+\fB                    struct timespec *\fP\fIremain\fP\fB);\fP
+.fi
+.sp
+Link with \fI\-lrt\fP (only for glibc versions before 2.17).
+.sp
+.ad l
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBclock_nanosleep\fP():
+.RS 4
+_XOPEN_SOURCE\ >=\ 600 || _POSIX_C_SOURCE\ >=\ 200112L
+.RE
+.ad
+.SH 説明
+\fBclock_nanosleep\fP()  を使うと、 \fBnanosleep\fP(2)
+同様、ナノ秒の精度で指定された期間だけ呼び出したスレッドの実行を 停止することができる。 \fBnanosleep\fP(2)
+と違うのは、呼び出し側が停止期間をどのクロックに対して計測するのかを選択 できる点と、停止期間を絶対値でも相対値でも指定できる点である。
+
+このシステムコールに渡したり、このシステムコールが返したりする時間の値は \fItimespec\fP
+構造体を使って指定される。この構造体の定義は以下の通りである。
+.sp
+.in +4n
+.nf
+struct timespec {
+    time_t tv_sec;        /* seconds */
+    long   tv_nsec;       /* nanoseconds [0 .. 999999999] */
+};
+.fi
+.in
+
+\fIclock_id\fP 引き数で、停止期間をどのクロックに対して計測するかを指定する。 この引き数には以下の値のいずれか一つを指定できる。
+.TP  17
+\fBCLOCK_REALTIME\fP
+システム全体で使われる実時間クロック。 このクロックは変更可能である。
+.TP 
+\fBCLOCK_MONOTONIC\fP
+.\" On Linux this clock measures time since boot.
+過去のある時点からの時間を計測する、単調増加のクロック。 起点となる時点はシステム起動後には変更されない。 このクロックは変更することができない。
+.TP 
+\fBCLOCK_PROCESS_CPUTIME_ID\fP
+.\" There is some trickery between glibc and the kernel
+.\" to deal with the CLOCK_PROCESS_CPUTIME_ID case.
+そのプロセスの全スレッドで消費される CPU 時間を計測するプロセス単位の クロック。このクロックは設定可能である。
+.PP
+これらのクロックの詳細については \fBclock_getres\fP(2)  を参照。
+
+\fIflags\fP が 0 の場合、 \fIrequest\fP に指定された値は \fIclock_id\fP
+で指定されたクロックの現在の値からの相対的な期間と解釈される。
+
+\fIflags\fP が \fBTIMER_ABSTIME\fP の場合、 \fIrequest\fP は指定されたクロックで計測される絶対時刻と解釈される。
+\fIrequest\fP が指定されたクロックの現在の値以下の場合、 \fBclock_nanosleep\fP()
+は、呼び出したスレッドの停止を行わず、すぐに返る。
+
+\fBclock_nanosleep\fP()  は、少なくとも \fIrequest\fP で指定された時間が経過するまで、呼び出したスレッドの実行を停止する。
+シグナルハンドラが呼び出されたり、そのプロセスを終了させるような シグナルが配送されたりした場合にも、スレッドの実行停止は終了する。
+
+呼び出しがシグナルハンドラによって割り込まれた場合、 \fBclock_nanosleep\fP()  はエラー \fBEINTR\fP で失敗する。さらに、
+\fIremain\fP が NULL でなく、かつ \fIflags\fP が \fBTIMER_ABSTIME\fP でない場合には、 \fIremain\fP
+に残りの停止時間が返される。 この値を使って \fBclock_nanosleep\fP()  を再度呼び出すことで、(相対的な期間の)
+停止を完了することができる。
+.SH 返り値
+要求された期間の停止に成功すると、 \fBclock_nanosleep\fP()  は 0 を返す。
+シグナルハンドラで割り込まれたり、エラーが発生したりした場合、 「エラー」の節のリストにある正のエラー番号のいずれか一つを返す。
+.SH エラー
+.TP 
+\fBEFAULT\fP
+\fIrequest\fP や \fIremain\fP に無効なアドレスが指定された。
+.TP 
+\fBEINTR\fP
+停止がシグナルハンドラにより割り込まれた。
+.TP 
+\fBEINVAL\fP
+\fItv_nsec\fP フィールドの値が 0 から 999999999 の範囲でないか、 \fItv_sec\fP の値が負であった。
+.TP 
+\fBEINVAL\fP
+\fIclock_id\fP が無効であった (\fBCLOCK_THREAD_CPUTIME_ID\fP が \fIclock_id\fP として有効な値ではない)。
+.SH バージョン
+\fBclock_nanosleep\fP()  システムコールは Linux 2.6 で初めて登場した。 glibc ではバージョン 2.1
+以降でサポートされている。
+.SH 準拠
+POSIX.1\-2001.
+.SH 注意
+\fIrequest\fP で指定された停止期間が、時間の計測に使用されるクロック (\fBtime\fP(7)  参照)
+の精度の倍数ちょうどでない場合、停止期間は一番近い次の倍数に 切り上げられる。さらに、停止が完了した後に、CPU が呼び出したスレッドを
+もう一度実行できるようになるまでには、遅延が入る可能性がある。
+
+絶対値指定のタイマを使うのは、 \fBnanosleep\fP(2)  に書かれている類のタイマのずれの問題を防止するのに役立つ
+(この種の問題は、シグナルに割り込まれた際に相対指定の停止を 繰り返し再開しようとするプログラムでは、かえって悪化する)。
+これらの問題を回避して相対指定の停止を実行するには、 希望するクロックで \fBclock_gettime\fP(2)
+を呼び出し、その返り値の時刻値に希望する期間を加算してから、 \fBTIMER_ABSTIME\fP フラグを指定して
+\fBclock_nanosleep\fP()  を呼び出す。
+
+\fBsigaction\fP(2) で \fBSA_RESTART\fP フラグが指定されているかに関わらず、シグナルハンドラにより割り込まれた後に
+\fBclock_nanosleep\fP() が再開されることは決してない。
+
+\fIflags\fP が \fBTIMER_ABSTIME\fP の場合、 \fIremain\fP 引き数は使用されず、不要である (絶対値での停止では、同じ
+\fIrequest\fP 引き数を使って再度呼び出すことができる)。
+
+POSIX.1 の規定では、 \fBclock_nanosleep\fP()  はシグナルの処理方法やシグナルマスクに影響を与えない、とされている。
+
+POSIX.1 の規定では、 \fBclock_settime\fP(2)  で \fBCLOCK_REALTIME\fP クロックの値を変更した後は、絶対値指定の
+\fBclock_nanosleep\fP()  で停止しているスレッドを起動させる時刻の判定は、 新しいクロック値を使って行われる、とされている。
+新しいクロック値において停止期間の終了時刻が過去になってしまった場合には、 \fBclock_nanosleep\fP()  はすぐに返ることになる。
+
+POSIX.1 の規定では、 \fBclock_settime\fP(2)  で \fBCLOCK_REALTIME\fP クロックの値を変更しても、相対値指定の
+\fBclock_nanosleep\fP()  で停止しているスレッドには影響を与えない、とされている。
+.SH 関連項目
+\fBclock_getres\fP(2), \fBnanosleep\fP(2), \fBtimer_create\fP(2), \fBsleep\fP(3),
+\fBusleep\fP(3), \fBtime\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/clone.2 b/manual/LDP_man-pages/draft/man2/clone.2
new file mode 100644 (file)
index 0000000..4e1058b
--- /dev/null
@@ -0,0 +1,650 @@
+.\" Copyright (c) 1992 Drew Eckhardt <drew@cs.colorado.edu>, March 28, 1992
+.\" and Copyright (c) Michael Kerrisk, 2001, 2002, 2005, 2013
+.\"
+.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
+.\" May be distributed under the GNU General Public License.
+.\" %%%LICENSE_END
+.\"
+.\" Modified by Michael Haardt <michael@moria.de>
+.\" Modified 24 Jul 1993 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 21 Aug 1994 by Michael Chastain <mec@shell.portal.com>:
+.\"   New man page (copied from 'fork.2').
+.\" Modified 10 June 1995 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified 25 April 1998 by Xavier Leroy <Xavier.Leroy@inria.fr>
+.\" Modified 26 Jun 2001 by Michael Kerrisk
+.\"     Mostly upgraded to 2.4.x
+.\"     Added prototype for sys_clone() plus description
+.\"    Added CLONE_THREAD with a brief description of thread groups
+.\"    Added CLONE_PARENT and revised entire page remove ambiguity
+.\"            between "calling process" and "parent process"
+.\"    Added CLONE_PTRACE and CLONE_VFORK
+.\"    Added EPERM and EINVAL error codes
+.\"    Renamed "__clone" to "clone" (which is the prototype in <sched.h>)
+.\"    various other minor tidy ups and clarifications.
+.\" Modified 26 Jun 2001 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Updated notes for 2.4.7+ behavior of CLONE_THREAD
+.\" Modified 15 Oct 2002 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Added description for CLONE_NEWNS, which was added in 2.4.19
+.\" Slightly rephrased, aeb.
+.\" Modified 1 Feb 2003 - added CLONE_SIGHAND restriction, aeb.
+.\" Modified 1 Jan 2004 - various updates, aeb
+.\" Modified 2004-09-10 - added CLONE_PARENT_SETTID etc. - aeb.
+.\" 2005-04-12, mtk, noted the PID caching behavior of NPTL's getpid()
+.\"    wrapper under BUGS.
+.\" 2005-05-10, mtk, added CLONE_SYSVSEM, CLONE_UNTRACED, CLONE_STOPPED.
+.\" 2005-05-17, mtk, Substantially enhanced discussion of CLONE_THREAD.
+.\" 2008-11-18, mtk, order CLONE_* flags alphabetically
+.\" 2008-11-18, mtk, document CLONE_NEWPID
+.\" 2008-11-19, mtk, document CLONE_NEWUTS
+.\" 2008-11-19, mtk, document CLONE_NEWIPC
+.\" 2008-11-19, Jens Axboe, mtk, document CLONE_IO
+.\"
+.\" FIXME Document CLONE_NEWUSER, which is new in 2.6.23
+.\"       (also supported for unshare()?)
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH CLONE 2 2013\-04\-16 Linux "Linux Programmer's Manual"
+.SH 名前
+clone, __clone2 \- 子プロセスを作成する
+.SH 書式
+.nf
+/* Prototype for the glibc wrapper function */
+
+\fB#include <sched.h>\fP
+
+\fBint clone(int (*\fP\fIfn\fP\fB)(void *), void *\fP\fIchild_stack\fP\fB,\fP
+\fB          int \fP\fIflags\fP\fB, void *\fP\fIarg\fP\fB, ... \fP
+\fB          /* pid_t *\fP\fIptid\fP\fB, struct user_desc *\fP\fItls\fP\fB, pid_t *\fP\fIctid\fP\fB */ );\fP
+
+/* Prototype for the raw system call */
+
+\fBlong clone(unsigned long \fP\fIflags\fP\fB, void *\fP\fIchild_stack\fP\fB,\fP
+\fB          void *\fP\fIptid\fP\fB, void *\fP\fIctid\fP\fB,\fP
+\fB          struct pt_regs *\fP\fIregs\fP\fB);\fP
+.fi
+.sp
+.in -4n
+Feature Test Macro Requirements for glibc wrapper function (see
+\fBfeature_test_macros\fP(7)):
+.in
+.sp
+\fBclone\fP():
+.ad l
+.RS 4
+.PD 0
+.TP  4
+Since glibc 2.14:
+_GNU_SOURCE
+.TP  4
+.\" FIXME See http://sources.redhat.com/bugzilla/show_bug.cgi?id=4749
+Before glibc 2.14:
+_BSD_SOURCE || _SVID_SOURCE
+    /* _GNU_SOURCE also suffices */
+.PD
+.RE
+.ad b
+.SH 説明
+\fBclone\fP()  creates a new process, in a manner similar to \fBfork\fP(2).
+
+This page describes both the glibc \fBclone\fP()  wrapper function and the
+underlying system call on which it is based.  The main text describes the
+wrapper function; the differences for the raw system call are described
+toward the end of this page.
+
+\fBfork\fP(2) とは異なり、\fBclone\fP() では、子プロセス (child process)
+と呼び出し元のプロセスとが、メモリ空間、ファイルディスクリプタのテーブル、シグナル・ハンドラのテーブルなどの 実行コンテキストの一部を共有できる。
+(このマニュアルにおける「呼び出し元のプロセス」は、通常は 「親プロセス」と一致する。但し、後述の \fBCLONE_PARENT\fP の項も参照のこと)
+
+\fBclone\fP()  の主要な使用法はスレッド (threads) を実装することである:
+一つのプログラムの中の複数のスレッドは共有されたメモリ空間で 同時に実行される。
+
+\fBclone\fP()  で子プロセスが作成された時に、作成された子プロセスは関数 \fIfn\fP(\fIarg\fP)  を実行する。 (この点が
+\fBfork\fP(2)  とは異なる。 \fBfork\fP(2)  の場合、子プロセスは \fBfork\fP(2)  が呼び出された場所から実行を続ける。)
+\fIfn\fP 引き数は、子プロセスが実行を始める時に子プロセスが呼び出す 関数へのポインタである。 \fIarg\fP 引き数はそのまま \fIfn\fP
+関数へと渡される。
+
+\fIfn\fP(\fIarg\fP)  関数が終了すると、子プロセスは終了する。 \fIfn\fP によって返された整数が子プロセスの終了コードとなる。 子プロセスは、
+\fBexit\fP(2)  を呼んで明示的に終了することもあるし、致命的なシグナルを受信した 場合に終了することもある。
+
+\fIchild_stack\fP 引き数は、子プロセスによって使用されるスタックの位置を指定する。
+子プロセスと呼び出し元のプロセスはメモリを共有することがあるため、 子プロセスは呼び出し元のプロセスと同じスタックで実行することができない。
+このため、呼び出し元のプロセスは子プロセスのスタックのためのメモリ空間を 用意して、この空間へのポインタを \fBclone\fP()
+へ渡さなければならない。 (HP PA プロセッサ以外の) Linux が動作する全てのプロセッサでは、 スタックは下方 (アドレスが小さい方向)
+へと伸びる。このため、普通は \fIchild_stack\fP は子プロセスのスタックのために用意したメモリ空間の一番大きい アドレスを指すようにする。
+
+\fIflags\fP の下位 1 バイトは子プロセスが死んだ場合に親プロセスへと送られる \fI終了シグナル (termination signal)\fP
+の番号を指定する。このシグナルとして \fBSIGCHLD\fP 以外が指定された場合、親プロセスは、 \fBwait\fP(2)
+で子プロセスを待つ際に、オプションとして \fB__WALL\fP または \fB__WCLONE\fP を指定しなければならない。
+どのシグナルも指定されなかった場合、子プロセスが終了した時に親プロセス にシグナルは送られない。
+
+\fIflags\fP には、以下の定数のうち 0個以上をビット毎の論理和 (bitwise\-or)
+をとったものを指定できる。これらの定数は呼び出し元のプロセスと 子プロセスの間で何を共有するかを指定する:
+.TP 
+\fBCLONE_CHILD_CLEARTID\fP (Linux 2.5.49 以降)
+子プロセスが終了したときに子プロセスのメモリ内の \fIctid\fP が指す場所にある子プロセスのスレッド ID を消去し、 そのアドレスで futex を
+wake (起床) させる。 このアドレスは \fBset_tid_address\fP(2)  システムコールで変更することができる。
+この機能はスレッドライブラリで使用される。
+.TP 
+\fBCLONE_CHILD_SETTID\fP (Linux 2.5.49 以降)
+子プロセスのメモリ内の \fIctid\fP が指す場所に子プロセスのスレッド ID を格納する。
+.TP 
+\fBCLONE_FILES\fP (Linux 2.0 以降)
+\fBCLONE_FILES\fP が設定された場合、呼び出し元のプロセスと子プロセスはファイルディスクリプタの テーブルを共有する。
+呼び出し元プロセスとその子プロセスの一方が作成した ファイルディスクリプタは、もう一方においても有効である。
+同じように、一方のプロセスがファイルディスクリプタを閉じたり、 (\fBfcntl\fP(2)  \fBF_SETFD\fP 操作を使って)
+ディスクリプタに関連するフラグを変更したりすると、 もう一方のプロセスにも影響する。
+
+\fBCLONE_FILES\fP が設定されていない場合、子プロセスは、 \fBclone\fP()
+が実行された時点で、呼び出し元のプロセスがオープンしている全ての ファイルディスクリプタのコピーを継承する
+(子プロセスの複製されたファイルディスクリプタは、 対応する呼び出し元のプロセスのファイルディスクリプタと 同じファイル記述 (\fBopen\fP(2)
+参照) を参照する)。 これ以降に、呼び出し元のプロセスと子プロセスの一方が ファイルディスクリプタの操作 (ファイルディスクリプタの
+オープン・クローズや、ファイルディスクリプタ・フラグの変更)  を行っても、もう一方のプロセスには影響を与えない。
+.TP 
+\fBCLONE_FS\fP (Linux 2.0 以降)
+\fBCLONE_FS\fP が設定された場合、呼び出し元のプロセスと子プロセスが同じファイル・システム
+情報を共有する。ファイル・システム情報は、ファイル・システムのルート (root)、 カレント・ワーキング・ディレクトリ (current
+working directory)  や umask などである。 呼び出し元のプロセスや子プロセスのどちらか一方によって \fBchroot\fP(2),
+\fBchdir\fP(2), \fBumask\fP(2)  が呼び出されると、もう一方のプロセスにも影響が及ぶ。
+
+\fBCLONE_FS\fP が設定されていない場合、子プロセスは、 \fBclone\fP()
+が実行された時点での、呼び出し元のプロセスのファイル・システム情報のコピーを 使用する。 これ以降は、呼び出し元のプロセスと子プロセスの一方が
+\fBchroot\fP(2), \fBchdir\fP(2), \fBumask\fP(2)  を呼び出しても、もう一方のプロセスには影響を与えない。
+.TP 
+\fBCLONE_IO\fP (Linux 2.6.25 以降)
+\fBCLONE_IO\fP が設定された場合、新しいプロセスは呼び出し元のプロセスと I/O コンテキストを共有する。
+このフラグが設定されていない場合には、 (\fBfork\fP(2)  の場合と同様) 新しいプロセスは自分専用の I/O コンテキストを持つ。
+
+.\" The following based on text from Jens Axboe
+.\" the anticipatory and CFQ scheduler
+.\" with CFQ and AS.
+I/O コンテキストは、ディスクスケジュールの I/O スコープである (言い換えると、I/O コンテキストは I/O スケジューラがプロセス I/O
+の スケジューリングをモデル化するのに使用される)。 複数のプロセスが同じ I/O コンテキストを共有する場合、 これらのプロセスは I/O
+スケジューラからは一つとして扱われる。 結果として、これらのプロセスはディスクアクセスの時間を共有するようになる。 いくつかの I/O
+スケジューラでは、 二つのプロセスが I/O コンテキストを共有している場合、 これらのプロセスはディスクアクセスを交互に行うことができる。
+同じプロセスの複数のスレッドが I/O を実行している場合 (例えば \fBaio_read\fP(3))、 \fBCLONE_IO\fP を利用することで I/O
+性能を良くすることができる。
+
+カーネルの設定が \fBCONFIG_BLOCK\fP オプション付きでない場合、 このフラグは何の意味も持たない。
+.TP 
+\fBCLONE_NEWIPC\fP (Linux 2.6.19 以降)
+\fBCLONE_NEWIPC\fP が設定された場合、新しい IPC 名前空間 (namespace) でプロセスを作成する。
+このフラグが設定されていない場合、 (\fBfork\fP(2)  の場合と同様) 呼び出し元のプロセスと同じ IPC 名前空間でプロセスが 作成される。
+このフラグは、コンテナの実装での使用を意図して用意されたものである。
+
+.\" commit 7eafd7c74c3f2e67c27621b987b28397110d643f
+.\" https://lwn.net/Articles/312232/
+An IPC namespace provides an isolated view of System V IPC objects (see
+\fBsvipc\fP(7))  and (since Linux 2.6.30)  POSIX message queues (see
+\fBmq_overview\fP(7)).  The common characteristic of these IPC mechanisms is
+that IPC objects are identified by mechanisms other than filesystem
+pathnames.
+
+Objects created in an IPC namespace are visible to all other processes that
+are members of that namespace, but are not visible to processes in other IPC
+namespaces.
+
+IPC 名前空間が破棄される時 (すなわち、その名前空間のメンバーの最後のプロセスが終了する時)、 その名前空間の全ての IPC
+オブジェクトは自動的に破棄される。
+
+このフラグを使用するためには、 カーネルでオプション \fBCONFIG_SYSVIPC\fP と \fBCONFIG_IPC_NS\fP を有効になっていること、
+プロセスが特権 (\fBCAP_SYS_ADMIN\fP)  を持っていることが必要である。 このフラグは \fBCLONE_SYSVSEM\fP
+と組み合わせて使うことはできない。
+.TP 
+\fBCLONE_NEWNET\fP (Linux 2.6.24 以降)
+.\" FIXME Check when the implementation was completed
+(このフラグの実装は、Linux 2.6.29 あたりまでには完成した。)
+
+\fBCLONE_NEWNET\fP が設定された場合、新しいネットワーク名前空間 (network namaspace)  でプロセスを作成する。
+このフラグが設定されていない場合、 (\fBfork\fP(2)  の場合と同様) 呼び出し元のプロセスと同じネットワーク名前空間でプロセスが 作成される。
+このフラグは、コンテナの実装での使用を意図して用意されたものである。
+
+.\" FIXME Add pointer to veth(4) page when it is eventually completed
+ネットワーク名前空間は、分離されたネットワークスタックを提供するものである (ネットワークスタックとは、 ネットワークデバイスインタフェース、IPv4
+や IPv6 プロトコルスタック、 \fI/proc/net\fP、 \fI/sys/class/net\fP ディレクトリツリー、ソケットなどである)。
+物理ネットワークデバイスが所属できるネットワーク名前空間は一つだけである。 仮想ネットワークデバイス ("veth") のペアにより パイプ風の抽象化
+(abstraction) が実現されており、 これを使うことで、ネットワーク名前空間間のトンネルを作成したり、
+別の名前空間の物理ネットワークデバイスへのブリッジを作成したり することができる。
+
+ネットワーク名前空間が解放される時 (すなわち、その名前空間の最後のプロセスが終了する時)、 物理ネットワークデバイスは初期ネットワーク名前空間
+(initial network namespace) に戻される (親プロセスのネットワーク名前空間に戻される訳ではない)。
+
+このフラグを使用するためには、 カーネルでオプション \fBCONFIG_NET_NS\fP を有効になっていること、 プロセスが特権
+(\fBCAP_SYS_ADMIN\fP)  を持っていることが必要である。
+.TP 
+\fBCLONE_NEWNS\fP (Linux 2.4.19 以降)
+子プロセスを新しいマウント名前空間 (mount namespace) で開始する。
+
+各プロセスはある一つのマウント名前空間中に存在する。プロセスの \fI名前空間 (namespace)\fP
+は、そのプロセスから見えるファイル階層を表すデータ (mount の集合) である。 \fBCLONE_NEWNS\fP フラグがセットされずに
+\fBfork\fP(2)  か \fBclone\fP()  が呼ばれると、子プロセスは親プロセスと同じマウント名前空間に作成される。 システムコール
+\fBmount\fP(2)、 \fBumount\fP(2)  が呼ばれると呼び出し元のプロセスのマウント名前空間が変更され、この結果
+呼び出し元のプロセスと同じ名前空間にいるプロセスはすべて影響を受けるが、 異なるマウント名前空間にいるプロセスは影響を受けない。
+
+\fBCLONE_NEWNS\fP フラグがセットされて \fBclone\fP()  が呼ばれると、clone で作成された子プロセスは新しいマウント名前空間で
+開始される。新しい名前空間は親プロセスの名前空間のコピーで初期化される。
+
+特権プロセス (\fBCAP_SYS_ADMIN\fP ケーパビリティを持つプロセス) のみが \fBCLONE_NEWNS\fP フラグを指定することができる。
+一つの \fBclone\fP()  呼び出しで、 \fBCLONE_NEWNS\fP と \fBCLONE_FS\fP の両方を指定することはできない。
+.TP 
+\fBCLONE_NEWPID\fP (Linux 2.6.24 以降)
+.\" This explanation draws a lot of details from
+.\" http://lwn.net/Articles/259217/
+.\" Authors: Pavel Emelyanov <xemul@openvz.org>
+.\" and Kir Kolyshkin <kir@openvz.org>
+.\"
+.\" The primary kernel commit is 30e49c263e36341b60b735cbef5ca37912549264
+.\" Author: Pavel Emelyanov <xemul@openvz.org>
+\fBCLONE_NEWPID\fP が設定された場合、新しい PID 名前空間でプロセスを作成する。 このフラグが設定されていない場合、
+(\fBfork\fP(2)  の場合と同様) 呼び出し元のプロセスと同じ PID 名前空間で プロセスが作成される。
+このフラグは、コンテナの実装での使用を意図して用意されたものである。
+
+PID 名前空間は、PID に関して分離された環境を提供するものである。 新しい名前空間における PID は 1 から始まり
+(これはスタンドアロンのシステムと似たような感じ)、 \fBfork\fP(2), \fBvfork\fP(2), \fBclone\fP()
+を呼び出すと、その名前空間で一意な PID を持ったプロセスが作成される。
+
+新しい名前空間で作成される最初のプロセス (つまり、 \fBCLONE_NEWPID\fP フラグを使って作成されたプロセス) の PID は 1 であり、
+このプロセスはその名前空間における "init" プロセスとなる。 この名前空間において孤児 (orphaned) となった子プロセスについては、
+\fBinit\fP(8)  ではなくこのプロセスが親プロセスとなる。 昔ながらの \fBinit\fP プロセスとは違い、PID 名前空間の "init"
+プロセスは終了 (terminated) する ことができ、その場合には、この名前空間の全てのプロセスが終了される。
+
+PID 名前空間間には階層構造が形成される。 新しい PID 名前空間が作成されると、その名前空間のプロセスは、 新しい名前空間を作成したプロセスの
+PID 名前空間で見える。 同様に、親の PID 名前空間自体が別の PID 名前空間の子供の場合には、 子供の PID 名前空間と親の PID
+名前空間のプロセスはどれも 親の親の PID 名前空間でも見えることになる。 反対に、「子供」の PID 名前空間のプロセスには、
+親の名前空間のプロセスは見えない。 名前空間に階層構造が存在するということは、個々のプロセスは 複数の PID を持つということを意味している。
+そのプロセスが見える名前空間一つにつき PID が一つあり、 それぞれの PID は対応する名前空間において一意である。 (\fBgetpid\fP(2)
+を呼び出すと、常にそのプロセスが存在している名前空間における PID が返される。)
+
+.\" mount -t proc proc /proc
+新しい名前空間の作成後には、 子プロセスにおいて、 \fBps\fP(1)  といったツールが正しく動作するように、 自身の root ディレクトリを変更し、
+\fI/proc\fP に新しい procfs インスタンスをマウントするのがよいだろう。 (\fBflags\fP に \fBCLONE_NEWNS\fP
+も指定されていた場合には、root ディレクトリを変更する必要はなく、 いきなり新しい procfs インスタンスを \fI/proc\fP
+にマウントすることができる。)
+
+このフラグを使用するためには、 カーネルでオプション \fBCONFIG_PID_NS\fP を有効になっていること、 プロセスが特権
+(\fBCAP_SYS_ADMIN\fP)  を持っていることが必要である。 このフラグは \fBCLONE_THREAD\fP と組み合わせて使うことはできない。
+.TP 
+\fBCLONE_NEWUTS\fP (Linux 2.6.19 以降)
+\fBCLONE_NEWUTS\fP が設定された場合、新しい UTS 名前空間でプロセスを作成する。 新しい UTS
+名前空間の識別子の初期値は、呼び出し元のプロセスの UTS 名前空間の識別子を複製したものとなる。 このフラグが設定されていない場合、
+(\fBfork\fP(2)  の場合と同様) 呼び出し元のプロセスと同じ UTS 名前空間で プロセスが作成される。
+このフラグは、コンテナの実装での使用を意図して用意されたものである。
+
+UTS 名前空間は、 \fBuname\fP(2)  が返す識別子の集合である。 識別子としてはドメイン名とホスト名があり、 それぞれ
+\fBsetdomainname\fP(2), \fBsethostname\fP(2)  で修正することができる。 ある UTS
+名前空間における識別子の変更は同じ名前空間の他のすべての プロセスに見えるが、別の UTS 名前空間のプロセスには見えない。
+
+このフラグを使用するためには、 カーネルでオプション \fBCONFIG_UTS_NS\fP を有効になっていること、 プロセスが特権
+(\fBCAP_SYS_ADMIN\fP)  を持っていることが必要である。
+.TP 
+\fBCLONE_PARENT\fP (Linux 2.3.12 以降)
+\fBCLONE_PARENT\fP が設定された場合、新しい子供の (\fBgetppid\fP(2)  で返される)
+親プロセスは呼び出し元のプロセスの親プロセスと同じになる。
+
+\fBCLONE_PARENT\fP が設定されていない場合、 (\fBfork\fP(2)  と同様に) 呼び出し元のプロセスがその子供の親になる。
+
+子供が終了した時にシグナルが送られるのは \fBgetppid\fP(2)  が返す親プロセスである点に注意すること。このため \fBCLONE_PARENT\fP
+が設定された場合、呼び出し元のプロセスではなく呼び出し元のプロセスの 親プロセスにシグナルが送られる。
+.TP 
+\fBCLONE_PARENT_SETTID\fP (Linux 2.5.49 以降)
+親プロセスと子プロセスのメモリ内の \fIptid\fP が指す領域に子プロセスのスレッド ID を格納する。 (Linux 2.5.32\-2.5.48
+では、 同じことをする \fBCLONE_SETTID\fP というフラグが存在した。)
+.TP 
+\fBCLONE_PID\fP (廃止予定)
+\fBCLONE_PID\fP が設定された場合、子プロセスは呼び出し元のプロセスと同じプロセス ID
+で作成される。これはシステムをハッキングするのには便利だが、 それ以外にはあまり使われない。 Linux 2.3.21 以降では、
+システムのブートプロセス (PID 0) だけがこのフラグを指定できる。 Linux 2.5.16 で削除された。
+.TP 
+\fBCLONE_PTRACE\fP (Linux 2.2 以降)
+\fBCLONE_PTRACE\fP が指定され、かつ呼び出し元のプロセスが追跡 (trace) されていた場合、子プロセスも 同様に追跡される。
+(\fBptrace\fP(2)  を参照のこと)
+.TP 
+\fBCLONE_SETTLS\fP (Linux 2.5.32 以降)
+\fInewtls\fP 引き数は、新しい TLS (Thread Local Storage) ディスクリプタである。
+(\fBset_thread_area\fP(2)  を参照のこと)
+.TP 
+\fBCLONE_SIGHAND\fP (Linux 2.0 以降)
+\fBCLONE_SIGHAND\fP が設定された場合、呼び出し元のプロセスと子プロセスは同じシグナル・ハン
+ドラのテーブルを共有する。呼び出し元のプロセスまたは子プロセスのどちらかが \fBsigaction\fP(2)
+を呼び出してシグナルに対応する動作を変更した場合、 もう一方のプロセスのシグナル動作も変更される。 但し、呼び出し元のプロセスと子プロセスは、
+プロセス毎に、シグナル・マスク (signal mask) と処理待ちシグナルの集合 を持っている。このため、あるプロセスは、
+\fBsigprocmask\fP(2)  を使用して、もう一方のプロセスに影響を与えずに シグナルを禁止 (block) したり許可 (unblock)
+したりできる。
+
+\fBCLONE_SIGHAND\fP が設定されていない場合、子プロセスは \fBclone\fP()
+が実行された時点での、呼び出し元のプロセスのシグナル・ハンドラの コピーを継承する。これ以降は、一方のプロセスが \fBsigaction\fP(2)
+を呼び出しても、もう一方のプロセスには影響を与えない。
+
+Linux 2.6.0\-test6 以降では、 \fBCLONE_SIGHAND\fP を指定する場合、 \fBCLONE_VM\fP も \fIflags\fP
+に含めなければならない。
+.TP 
+\fBCLONE_STOPPED\fP (Linux 2.6.0\-test2 以降)
+\fBCLONE_STOPPED\fP が設定されると、子プロセスは最初 (\fBSIGSTOP\fP シグナルを送られたかのように) 停止した状態となる。
+子プロセスを再開させるには \fBSIGCONT\fP シグナルを送信しなければならない。
+
+.\" glibc 2.8 removed this defn from bits/sched.h
+このフラグは Linux 2.6.25 以降では\fI非推奨\fPであり、
+Linux 2.6.38 で完全に\fI削除\fPされた。
+.TP 
+\fBCLONE_SYSVSEM\fP (Linux 2.5.10 以降)
+\fBCLONE_SYSVSEM\fP がセットされると、子プロセスと呼び出し元プロセスは一つの System V セマフォのアンドゥ値リスト
+(\fBsemop\fP(2)  参照) を共有する。このフラグがセットされていなければ、 子プロセスは独自のアンドゥリストを持つ
+(リストの初期値は空である)。
+.TP 
+\fBCLONE_THREAD\fP (Linux 2.4.0\-test8以降)
+\fBCLONE_THREAD\fP が設定された場合、子プロセスは呼び出し元のプロセスと同じスレッド・グループに 置かれる。 \fBCLONE_THREAD\fP
+についての以降の議論を読みやすくするため、 「スレッド」という用語はスレッド・グループの中のプロセスを 参照するのに使うこととする。
+
+スレッド・グループは、 スレッド集合で一つの PID を共有するという POSIX スレッドの概念をサポートするために Linux 2.4
+に加えられた機能であった。 内部的には、この共有 PID はいわゆるそのスレッドグループの スレッド・グループ識別子 (TGID) である。 Linux
+2.4 以降では、 \fBgetpid\fP(2)  の呼び出しではそのプロセスのスレッド・グループ ID を返す。
+
+あるグループに属するスレッドは (システム全体で) 一意なスレッド ID (TID)  で区別できる。新しいスレッドの TID は \fBclone\fP()
+の呼び出し元へ関数の結果として返され、 スレッドは自分自身の TID を \fBgettid\fP(2)  で取得できる。
+
+\fBCLONE_THREAD\fP を指定せずに \fBclone\fP()  の呼び出しが行われると、 生成されたスレッドはそのスレッドの TID と同じ値の
+TGID を持つ 新しいスレッド・グループに置かれる。このスレッドは 新しいスレッド・グループの「リーダー」である。
+
+\fBCLONE_THREAD\fP を指定して作成された新しいスレッドは、 (\fBCLONE_PARENT\fP の場合と同様に)  \fBclone\fP()
+を呼び出し元と同じ親プロセスを持つ。 そのため、 \fBgetppid\fP(2)  を呼ぶと、一つのスレッド・グループに属すスレッドは全て同じ値を返す。
+\fBCLONE_THREAD\fP で作られたスレッドが終了した際に、 そのスレッドを \fBclone\fP()  を使って生成したスレッドには
+\fBSIGCHLD\fP (もしくは他の終了シグナル) は送信されない。 また、 \fBwait\fP(2)
+を使って終了したスレッドの状態を取得することもできない (そのようなスレッドは \fIdetached\fP (分離された) といわれる)。
+
+スレッド・グループに属す全てのスレッドが終了した後、 そのスレッド・グループの親プロセスに \fBSIGCHLD\fP (もしくは他の終了シグナル)
+が送られる。
+
+スレッド・グループに属すいずれかのスレッドが \fBexecve\fP(2)  を実行すると、スレッド・グループ・リーダー以外の全てのスレッドは
+終了され、新しいプロセスがそのスレッド・グループ・リーダーの下で 実行される。
+
+スレッド・グループに属すスレッドの一つが \fBfork\fP(2)  を使って子プロセスを作成した場合、 スレッド・グループのどのスレッドであっても
+その子供を \fBwait\fP(2)  できる。
+
+Linux 2.5.35 以降では、 \fBCLONE_THREAD\fP を指定する場合、 \fIflags\fP に \fBCLONE_SIGHAND\fP
+も含まれていなければならない。
+
+\fBkill\fP(2)  を使ってスレッド・グループ全体 (つまり TGID) にシグナルを送ることもできれば、 \fBtgkill\fP(2)
+を使って特定のスレッド (つまり TID) にシグナルを送ることもできる。
+
+シグナルの配送と処理はプロセス全体に影響する: ハンドラを設定していないシグナルがあるスレッドに配送されると、
+そのシグナルはスレッド・グループの全メンバーに影響を及ぼす (終了したり、停止したり、動作を継続したり、無視されたりする)。
+
+各々のスレッドは独自のシグナルマスクを持っており、 \fBsigprocmask\fP(2)  で設定できる。 だが、処理待ちのシグナルには、
+\fBkill\fP(2)  で送信されるプロセス全体に対するもの (つまり、スレッド・グループの どのメンバーにも配送できるもの) と、
+\fBtgkill\fP(2)  で送信される個々のスレッドに対するものがありえる。 \fBsigpending\fP(2)
+を呼び出すと、プロセス全体に対する処理待ちシグナルと呼び出し元の スレッドに対する処理待ちシグナルを結合したシグナル集合が返される。
+
+\fBkill\fP(2)  を使ってスレッド・グループにシグナルが送られた場合で、 そのスレッド・グループがそのシグナルに対するシグナル・ハンドラが
+登録されていたときには、シグナル・ハンドラはスレッド・グループの メンバーのうち、ただ一つのスレッドでだけ起動される。ハンドラが
+起動されるスレッドは、そのシグナルを禁止 (block) していない メンバーの中から一つだけが勝手に (arbitrarily) 選ばれる。
+スレッド・グループに属す複数のスレッドが \fBsigwaitinfo\fP(2)  を使って同じシグナルを待っている場合、
+これらのスレッドの中から一つをカーネルが勝手に選択し、 そのスレッドが \fBkill (2)\fP を使って送信されたシグナルを受信する。
+.TP 
+\fBCLONE_UNTRACED\fP (Linux 2.5.46 以降)
+\fBCLONE_UNTRACED\fP が指定されると、 trace を行っているプロセスは この子プロセスに \fBCLONE_PTRACE\fP
+を適用することができない。
+.TP 
+\fBCLONE_VFORK\fP (Linux 2.2 以降)
+\fBCLONE_VFORK\fP が設定された場合、 (\fBvfork\fP(2)  と同様に) 子プロセスが \fBexecve\fP(2)  または
+\fB_exit\fP(2)  によって仮想メモリを解放するまで、呼び出し元のプロセスの実行は停止される。
+
+\fBCLONE_VFORK\fP が設定されていない場合、 \fBclone\fP()  呼び出し後は、呼び出し元のプロセスと子プロセスの
+両方がスケジュール対象となり、アプリケーションはこれらのプロセスの 実行順序に依存しないようにすべきである。
+.TP 
+\fBCLONE_VM\fP (Linux 2.0 以降)
+\fBCLONE_VM\fP が設定された場合、呼び出し元のプロセスと子プロセスは同じメモリ空間で
+実行される。特に、呼び出し元のプロセスや子プロセスの一方がメモリに 書き込んだ内容はもう一方のプロセスからも見ることができる。さらに、
+子プロセスや呼び出し元のプロセスの一方が \fBmmap\fP(2)  や \fBmunmap\fP(2)  を使ってメモリをマップしたりアンマップした場合、
+もう一方のプロセスにも影響が及ぶ。
+
+\fBCLONE_VM\fP が設定されていない場合、子プロセスは \fBclone\fP()  が実行された時点での、親プロセスのメモリ空間をコピーした
+別のメモリ空間で実行される。 一方のプロセスが行ったメモリへの書き込みや ファイルのマップ/アンマップは、 \fBfork\fP(2)
+の場合と同様、もう一方のプロセスには影響しない。
+.SS 生のシステムコールのインターフェース
+The raw \fBclone\fP()  system call corresponds more closely to \fBfork\fP(2)  in
+that execution in the child continues from the point of the call.  As such,
+the \fIfn\fP and \fIarg\fP arguments of the \fBclone\fP()  wrapper function are
+omitted.  Furthermore, the argument order changes.  The raw system call
+interface on x86 and many other architectures is roughly:
+.in +4
+.nf
+
+\fBlong clone(unsigned long \fP\fIflags\fP\fB, void *\fP\fIchild_stack\fP\fB,\fP
+\fB           void *\fP\fIptid\fP\fB, void *\fP\fIctid\fP\fB,\fP
+\fB           struct pt_regs *\fP\fIregs\fP\fB);\fP
+
+.fi
+.in
+生のシステムコールのもう一つの違いは、 \fIchild_stack\fP 引き数がゼロでも良いことである。この場合には、どちらかのプロセスが
+スタックを変更した時に、書き込み時コピー (copy\-on\-write) 方式により
+子プロセスがスタック・ページの独立したコピーを得られることが保証される。 この場合、正常に動作させるためには、 \fBCLONE_VM\fP
+オプションを指定してはならない。
+
+For some architectures, the order of the arguments for the system call
+differs from that shown above.  On the score, microblaze, ARM, ARM 64,
+PA\-RISC, arc, Power PC, xtensa, and MIPS architectures, the order of the
+fourth and fifth arguments is reversed.  On the cris and s390 architectures,
+the order of the first and second arguments is reversed.
+.SS "blackfin, m68k, and sparc"
+The argument\-passing conventions on blackfin, m68k, and sparc are different
+from descriptions above.  For details, see the kernel (and glibc) source.
+.SS ia64
+ia64 では、別のインターフェースが使用される:
+.nf
+
+\fBint __clone2(int (*\fP\fIfn\fP\fB)(void *), \fP
+\fB             void *\fP\fIchild_stack_base\fP\fB, size_t \fP\fIstack_size\fP\fB,\fP
+\fB             int \fP\fIflags\fP\fB, void *\fP\fIarg\fP\fB, ... \fP
+\fB          /* pid_t *\fP\fIptid\fP\fB, struct user_desc *\fP\fItls\fP\fB, pid_t *\fP\fIctid\fP\fB */ );\fP
+.fi
+.PP
+The prototype shown above is for the glibc wrapper function; the raw system
+call interface has no \fIfn\fP or \fIarg\fP argument, and changes the order of the
+arguments so that \fIflags\fP is the first argument, and \fItls\fP is the last
+argument.
+.PP
+\fB__clone2\fP() は \fBclone\fP() と同じように動作するが、以下の点が異なる: \fIchild_stack_base\fP
+は子プロセスのスタックエリアの最小のアドレスを指し、 \fIstack_size\fP は \fIchild_stack_base\fP
+が指し示すスタックエリアの大きさを示す。
+.SS "Linux 2.4 and earlier"
+Linux 2.4 以前では、 \fBclone\fP()  は引き数 \fIptid\fP, \fItls\fP, \fIctid\fP を取らない。
+.SH 返り値
+.\" gettid(2) returns current->pid;
+.\" getpid(2) returns current->tgid;
+成功した場合、呼び出し元の実行スレッドには子プロセスのスレッドID が返される。 失敗した場合、 呼び出し元のコンテキストには \-1
+が返され、子プロセスは 作成されず、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+すでに実行中のプロセスが多すぎる。
+.TP 
+\fBEINVAL\fP
+\fBCLONE_SIGHAND\fP が指定されていたが、 \fBCLONE_VM\fP が指定されていなかった。 (Linux 2.6.0\-test6 以降)
+.TP 
+\fBEINVAL\fP
+.\" .TP
+.\" .B EINVAL
+.\" Precisely one of
+.\" .B CLONE_DETACHED
+.\" and
+.\" .B CLONE_THREAD
+.\" was specified.
+.\" (Since Linux 2.6.0-test6.)
+\fBCLONE_THREAD\fP が指定されていたが、 \fBCLONE_SIGHAND\fP が指定されていなかった。 (Linux 2.5.35 以降)
+.TP 
+\fBEINVAL\fP
+\fBCLONE_FS\fP と \fBCLONE_NEWNS\fP の両方が \fIflags\fP に指定された。
+.TP 
+\fBEINVAL\fP
+\fBCLONE_NEWIPC\fP と \fBCLONE_SYSVSEM\fP の両方が \fIflags\fP に指定された。
+.TP 
+\fBEINVAL\fP
+\fBCLONE_NEWPID\fP と \fBCLONE_THREAD\fP の両方が \fIflags\fP に指定された。
+.TP 
+\fBEINVAL\fP
+\fIchild_stack\fP にゼロを指定した場合に \fBclone\fP()  が返す。
+.TP 
+\fBEINVAL\fP
+\fIflags\fP に \fBCLONE_NEWIPC\fP が指定されたが、カーネルでオプション \fBCONFIG_SYSVIPC\fP と
+\fBCONFIG_IPC_NS\fP が有効になっていなかった。
+.TP 
+\fBEINVAL\fP
+\fIflags\fP に \fBCLONE_NEWNET\fP が指定されたが、カーネルでオプション \fBCONFIG_NET_NS\fP が有効になっていなかった。
+.TP 
+\fBEINVAL\fP
+\fIflags\fP に \fBCLONE_NEWPID\fP が指定されたが、カーネルでオプション \fBCONFIG_PID_NS\fP が有効になっていなかった。
+.TP 
+\fBEINVAL\fP
+\fIflags\fP に \fBCLONE_NEWUTS\fP が指定されたが、カーネルでオプション \fBCONFIG_UTS\fP が有効になっていなかった。
+.TP 
+\fBENOMEM\fP
+子プロセスのために確保すべきタスク構造体や、呼び出し元のコンテキストの 一部をコピーするのに必要なメモリを十分に割り当てることができない。
+.TP 
+\fBEPERM\fP
+非特権プロセス (\fBCAP_SYS_ADMIN\fP を持たないプロセス) が \fBCLONE_NEWIPC\fP, \fBCLONE_NEWNET\fP,
+\fBCLONE_NEWNS\fP, \fBCLONE_NEWPID\fP, \fBCLONE_NEWUTS\fP を指定した。
+.TP 
+\fBEPERM\fP
+PID が 0 以外のプロセスによって \fBCLONE_PID\fP が指定された。
+.SH バージョン
+libc5 には \fBclone\fP()  はない。glibc2 では \fBclone\fP()  が提供されており、このマニュアルページに記載の通りである。
+.SH 準拠
+\fBclone\fP() は Linux 特有であり、移植を考慮したプログラムでは使用すべき ではない。
+.SH 注意
+カーネル 2.4.x 系列では、一般的には \fBCLONE_THREAD\fP フラグを指定しても新しいスレッドの親を
+呼び出し元プロセスの親と同じにはしない。 しかし、バージョン 2.4.7〜2.4.18 のカーネルでは、 (カーネル 2.6 と同じように)
+CLONE_THREAD フラグを指定すると、 暗黙のうちに CLONE_PARENT フラグを指定したことになる。
+
+\fBCLONE_DETACHED\fP というフラグが、2.5.32 で導入されて以来しばらくの間存在した。
+このフラグは親プロセスが子プロセス終了のシグナルを必要としないことを 表すものである。 2.6.2 で、 CLONE_DETATCHED を
+CLONE_THREAD と一緒に指定する必要はなくなった。 このフラグはまだ定義されているが、何の効果もない。
+
+i386 上では、 \fBclone\fP()  は vsyscall 経由ではなく、直接 \fIint $0x80\fP 経由で呼び出すべきである。
+.SH バグ
+NPTL スレッド・ライブラリを含んでいる GNU C ライブラリのいくつかのバージョン には、 \fBgetpid\fP(2)
+のラッパー関数が含まれており、このラッパー関数は PID をキャッシュする。 このキャッシュ処理が正しく動作するためには glibc の
+\fBclone\fP()  のラッパー関数での助けが必要だが、現状の実装では、 ある状況下においてキャッシュが最新とならない可能性がある。 特に、
+\fBclone\fP()  の呼び出し直後にシグナルが子プロセスに配送された場合に、 そのシグナルに対するハンドラ内で \fBgetpid\fP(2)
+を呼び出すと、それまでに clone のラッパー関数が子プロセスの PID キャッシュを 更新する機会が得られていなければ、呼び出し元プロセス
+("親プロセス") の PID が 返される可能性がある。 (この議論では、子プロセスが \fBCLONE_THREAD\fP
+を使って作成された場合のことは無視している。 子プロセスが \fBCLONE_THREAD\fP を作って作成された場合には、
+呼び出し元と子プロセスは同じスレッド・グループに属すので、 \fBgetpid\fP(2)  は子プロセスと \fBclone\fP()
+を呼び出したプロセスで同じ値を返すのが「正しい」。 キャッシュが最新とならない問題 (stale\-cache problem) は、 \fIflags\fP
+に \fBCLONE_VM\fP が含まれている場合にも発生しない。)  本当の値を得るためには、次のようなコードを使う必要があるかもしれない。
+.nf
+
+    #include <syscall.h>
+
+    pid_t mypid;
+
+    mypid = syscall(SYS_getpid);
+.fi
+.\" See also the following bug reports
+.\" https://bugzilla.redhat.com/show_bug.cgi?id=417521
+.\" http://sourceware.org/bugzilla/show_bug.cgi?id=6910
+.SH EXAMPLE
+.SS "Create a child that executes in a separate UTS namespace"
+The following program demonstrates the use of \fBclone\fP()  to create a child
+process that executes in a separate UTS namespace.  The child changes the
+hostname in its UTS namespace.  Both parent and child then display the
+system hostname, making it possible to see that the hostname differs in the
+UTS namespaces of the parent and child.  For an example of the use of this
+program, see \fBsetns\fP(2).
+
+.nf
+#define _GNU_SOURCE
+#include <sys/wait.h>
+#include <sys/utsname.h>
+#include <sched.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \e
+                        } while (0)
+
+static int              /* Start function for cloned child */
+childFunc(void *arg)
+{
+    struct utsname uts;
+
+    /* Change hostname in UTS namespace of child */
+
+    if (sethostname(arg, strlen(arg)) == \-1)
+        errExit("sethostname");
+
+    /* Retrieve and display hostname */
+
+    if (uname(&uts) == \-1)
+        errExit("uname");
+    printf("uts.nodename in child:  %s\en", uts.nodename);
+
+    /* Keep the namespace open for a while, by sleeping.
+       This allows some experimentation\-\-for example, another
+       process might join the namespace. */
+
+    sleep(200);
+
+    return 0;           /* Child terminates now */
+}
+
+#define STACK_SIZE (1024 * 1024)    /* Stack size for cloned child */
+
+int
+main(int argc, char *argv[])
+{
+    char *stack;                    /* Start of stack buffer */
+    char *stackTop;                 /* End of stack buffer */
+    pid_t pid;
+    struct utsname uts;
+
+    if (argc < 2) {
+        fprintf(stderr, "Usage: %s <child\-hostname>\en", argv[0]);
+        exit(EXIT_SUCCESS);
+    }
+
+    /* Allocate stack for child */
+
+    stack = malloc(STACK_SIZE);
+    if (stack == NULL)
+        errExit("malloc");
+    stackTop = stack + STACK_SIZE;  /* Assume stack grows downward */
+
+    /* Create child that has its own UTS namespace;
+       child commences execution in childFunc() */
+
+    pid = clone(childFunc, stackTop, CLONE_NEWUTS | SIGCHLD, argv[1]);
+    if (pid == \-1)
+        errExit("clone");
+    printf("clone() returned %ld\en", (long) pid);
+
+    /* Parent falls through to here */
+
+    sleep(1);           /* Give child time to change its hostname */
+
+    /* Display hostname in parent\(aqs UTS namespace. This will be
+       different from hostname in child\(aqs UTS namespace. */
+
+    if (uname(&uts) == \-1)
+        errExit("uname");
+    printf("uts.nodename in parent: %s\en", uts.nodename);
+
+    if (waitpid(pid, NULL, 0) == \-1)    /* Wait for child */
+        errExit("waitpid");
+    printf("child has terminated\en");
+
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBfork\fP(2), \fBfutex\fP(2), \fBgetpid\fP(2), \fBgettid\fP(2), \fBkcmp\fP(2),
+\fBset_thread_area\fP(2), \fBset_tid_address\fP(2), \fBsetns\fP(2), \fBtkill\fP(2),
+\fBunshare\fP(2), \fBwait\fP(2), \fBcapabilities\fP(7), \fBpthreads\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 04e5cfc..9b9165b 100644 (file)
@@ -1,5 +1,5 @@
 .\" This manpage is Copyright (C) 1992 Drew Eckhardt;
-.\"                               1993 Michael Haardt, Ian Jackson.
+.\"             and Copyright (C) 1993 Michael Haardt, Ian Jackson.
 .\"
 .\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
@@ -93,6 +93,6 @@ SVr4, 4.3BSD, POSIX.1\-2001.
 \fBfcntl\fP(2), \fBfsync\fP(2), \fBopen\fP(2), \fBshutdown\fP(2), \fBunlink\fP(2),
 \fBfclose\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index fba48c6..a7fb474 100644 (file)
@@ -182,6 +182,6 @@ POSIX.1\-2001 では \fI<sys/types.h>\fP のインクルードは必須とされ
 \fBaccept\fP(2), \fBbind\fP(2), \fBgetsockname\fP(2), \fBlisten\fP(2), \fBsocket\fP(2),
 \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/create_module.2 b/manual/LDP_man-pages/draft/man2/create_module.2
new file mode 100644 (file)
index 0000000..ca293c1
--- /dev/null
@@ -0,0 +1,61 @@
+.\" Copyright (C) 1996 Free Software Foundation, Inc.
+.\"
+.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
+.\" This file is distributed according to the GNU General Public License.
+.\" %%%LICENSE_END
+.\"
+.\" 2006-02-09, some reformatting by Luc Van Oostenryck; some
+.\" reformatting and rewordings by mtk
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH CREATE_MODULE 2 2012\-10\-18 Linux "Linux Programmer's Manual"
+.SH 名前
+create_module \- ローダブルモジュールのエントリを作成する
+.SH 書式
+.nf
+\fB#include <linux/module.h>\fP
+.sp
+\fBcaddr_t create_module(const char *\fP\fIname\fP\fB, size_t \fP\fIsize\fP\fB);\fP
+.fi
+.SH 説明
+\fBNote\fP: This system call is present only in kernels before Linux 2.6.
+
+\fBcreate_module\fP()  は、ローダブルモジュールのエントリを作成し、そのモジュールの保持に必要な カーネルメモリを予約しようとする。
+このシステムコールを使うには特権が必要である。
+.SH 返り値
+成功すると、モジュールが配置されるカーネル空間のアドレスを返す。 エラーの場合 \-1 を返し、 \fIerrno\fP を適切に設定する。
+.SH エラー
+.TP 
+\fBEEXIST\fP
+その名前のモジュールがすでに存在する。
+.TP 
+\fBEFAULT\fP
+\fIname\fP がプログラムがアクセスできるアドレス空間の外部にある。
+.TP 
+\fBEINVAL\fP
+要求したサイズが小さすぎて、モジュールのヘッダ情報すら格納できない。
+.TP 
+\fBENOMEM\fP
+モジュールを格納するのに必要な大きさの連続したメモリブロックを カーネルが確保できなかった。
+.TP 
+\fBENOSYS\fP
+\fBcreate_module\fP()  is not supported in this version of the kernel (e.g.,
+the kernel is version 2.6 or later).
+.TP 
+\fBEPERM\fP
+呼び出し元が特権 (\fBCAP_SYS_MODULE\fP ケーパビリティ) を持っていなかった。
+.SH バージョン
+.\" Removed in Linux 2.5.48
+このシステムコールが存在するのはカーネル 2.4 までの Linux だけである。 Linux 2.6 では削除された。
+.SH 準拠
+\fBcreate_module\fP()  は Linux 固有である。
+.SH 関連項目
+\fBdelete_module\fP(2), \fBinit_module\fP(2), \fBquery_module\fP(2)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 63dfbaf..371c992 100644 (file)
@@ -121,6 +121,6 @@ close\-on\-exec flag (\fBfcntl\fP(2)  参照) は off となる。
 .SH 関連項目
 \fBclose\fP(2), \fBfcntl\fP(2), \fBopen\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e888848..94e38bd 100644 (file)
@@ -98,6 +98,6 @@ Linux 2.6.8 以降では、\fIsize\fP 引き数は無視されるが、 0 より
 .SH 関連項目
 \fBclose\fP(2), \fBepoll_ctl\fP(2), \fBepoll_wait\fP(2), \fBepoll\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 3a31a0f..21b50d0 100644 (file)
@@ -147,6 +147,6 @@ NULL を指定できるようになっている。 2.6.9 より前のカーネ
 .SH 関連項目
 \fBepoll_create\fP(2), \fBepoll_wait\fP(2), \fBpoll\fP(2), \fBepoll\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6c45e18..54295dd 100644 (file)
@@ -140,6 +140,6 @@ struct epoll_event {
 .SH 関連項目
 \fBepoll_create\fP(2), \fBepoll_ctl\fP(2), \fBepoll\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index eb825b7..4b40611 100644 (file)
@@ -274,6 +274,6 @@ main(int argc, char *argv[])
 \fBsignalfd\fP(2), \fBtimerfd_create\fP(2), \fBwrite\fP(2), \fBepoll\fP(7),
 \fBsem_overview\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ed97497..ce10ba9 100644 (file)
@@ -432,6 +432,6 @@ argv[4]: world
 \fBgetopt\fP(3), \fBcredentials\fP(7), \fBenviron\fP(7), \fBpath_resolution\fP(7),
 \fBld.so\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2e7bf28..37e6d3a 100644 (file)
@@ -50,6 +50,6 @@ glibc 2.3 以降では、 \fBexit\fP(2)  のラッパー関数が呼び出され
 .SH 関連項目
 \fBexit\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index d4b8616..2d73948 100644 (file)
@@ -109,6 +109,6 @@ POSIX.1\-2008.
 \fBaccess\fP(2), \fBopenat\fP(2), \fBeauidaccess\fP(3), \fBcredentials\fP(7),
 \fBpath_resolution\fP(7), \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/fallocate.2 b/manual/LDP_man-pages/draft/man2/fallocate.2
new file mode 100644 (file)
index 0000000..2a80a5e
--- /dev/null
@@ -0,0 +1,127 @@
+.\" Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved
+.\" Written by Dave Chinner <dgc@sgi.com>
+.\"
+.\" %%%LICENSE_START(GPLv2_ONELINE)
+.\" May be distributed as per GNU General Public License version 2.
+.\" %%%LICENSE_END
+.\"
+.\" 2011-09-19: Added FALLOC_FL_PUNCH_HOLE
+.\" 2011-09-19: Substantial restructuring of the page
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH FALLOCATE 2 2013\-02\-12 Linux "Linux Programmer's Manual"
+.SH 名前
+fallocate \- ファイル空間の操作
+.SH 書式
+.nf
+\fB#define _GNU_SOURCE\fP             /* feature_test_macros(7) 参照 */
+\fB#include <fcntl.h>\fP
+
+\fBint fallocate(int \fP\fIfd\fP\fB, int \fP\fImode\fP\fB, off_t \fP\fIoffset\fP\fB, off_t \fP\fIlen\fP\fB);\fP
+.fi
+.SH 説明
+このシステムコールは、移植性のない、Linux 固有のシステムコールである。 移植性が必要な場合は、ファイルに対してディスク空間を確実に確保するために、
+POSIX.1 で規定された方法である \fBposix_fallocate\fP(3)  を使うこと。
+
+\fBfallocate\fP()  を使うと、 \fIfd\fP が参照するファイルに割り当てられたディスク空間を直接操作できる。 操作対象は、
+\fIoffset\fP から始まる長さ \fIlen\fP バイトの領域である。
+
+\fImode\fP 引き数は、指定された領域に対して実行する操作を指定する。
+サポートされている操作の詳細は以下のサブセクションで説明する。
+.SS ディスク領域の割り当て
+\fBfallocate\fP() のデフォルトの動作 (つまり \fImode\fP が 0 の場合) は、
+\fIoffset\fP と \fIlen\fP で指定された範囲のディスク領域の割り当てと初期化を行う。
+\fIoffset\fP+\fIlen\fP がファイルサイズよりも大きかった場合、
+(\fBstat\fP(2) で報告される) ファイルサイズが変更される。このデフォルトの動作は、
+ライブラリ関数 \fBposix_fallocate\fP(3) の動作と非常に似ている。これは、
+このシステムコールが \fBposix_fallocate\fP(3) を最適に実装する手段を提供する
+ことを目的としているからである。
+
+呼び出しが成功した場合、
+\fIoffset\fP と \fIlen\fP で指定された範囲へのそれ以降の書き込みでは、
+ディスクの領域不足での書き込み失敗が起こらないことが保証される。
+
+\fBFALLOC_FL_KEEP_SIZE\fP フラグが \fImode\fP に指定された場合、このシステムコール
+の動作は似ているが、 \fIoffset\fP+\fIlen\fP がファイルサイズよりも大きい場合で
+あってもファイルサイズは変更されない点が異なる。この場合のファイルの末尾
+よりも後ろの前もって割り当てられた 0 で埋められたブロックは、ファイルへの
+追記を最適化したい場合に役に立つ。
+.PP
+割り当てはブロックサイズ単位で行われるため、 \fBfallocate\fP() は指定されたより
+も大きなディスク領域を割り当てることがある。
+.SS ファイル空間の割り当て解除
+Specifying the \fBFALLOC_FL_PUNCH_HOLE\fP flag (available since Linux 2.6.38)
+in \fImode\fP deallocates space (i.e., creates a hole)  in the byte range
+starting at \fIoffset\fP and continuing for \fIlen\fP bytes.  Within the specified
+range, partial file system blocks are zeroed, and whole file system blocks
+are removed from the file.  After a successful call, subsequent reads from
+this range will return zeroes.
+
+The \fBFALLOC_FL_PUNCH_HOLE\fP flag must be ORed with \fBFALLOC_FL_KEEP_SIZE\fP in
+\fImode\fP; in other words, even when punching off the end of the file, the
+file size (as reported by \fBstat\fP(2))  does not change.
+
+Not all file systems support \fBFALLOC_FL_PUNCH_HOLE\fP; if a file system
+doesn't support the operation, an error is returned.
+.SH 返り値
+\fBfallocate\fP()  は成功すると 0 を返し、エラーの場合は \-1 を返す。
+.SH エラー
+.TP 
+\fBEBADF\fP
+\fIfd\fP が有効なファイルディスクリプタでないか、 書き込み用としてオープンされていない。
+.TP 
+\fBEFBIG\fP
+\fIoffset + len\fP がファイルサイズの最大値よりも大きい。
+.TP 
+\fBEINTR\fP
+実行中にシグナルが捕捉された。
+.TP 
+\fBEINVAL\fP
+.\" FIXME (raise a kernel bug) Probably the len==0 case should be
+.\" a no-op, rather than an error. That would be consistent with
+.\" similar APIs for the len==0 case.
+.\" See "Re: [PATCH] fallocate.2: add FALLOC_FL_PUNCH_HOLE flag definition"
+.\" 21 Sep 2012
+.\" http://thread.gmane.org/gmane.linux.file-systems/48331/focus=1193526
+\fIoffset\fP が 0 未満だったか、 \fIlen\fP が 0 以下だった。
+.TP 
+\fBEIO\fP
+ファイルシステムとの読み書き中に入出力エラーが発生した。
+.TP 
+\fBENODEV\fP
+\fIfd\fP が通常のファイルかディレクトリを参照していない (\fIfd\fP がパイプや FIFO を参照している場合、別のエラーが発生する)。
+.TP 
+\fBENOSPC\fP
+\fIfd\fP が参照するファイルを含むデバイスに十分な空き領域がない。
+.TP 
+\fBENOSYS\fP
+このカーネルでは \fBfallocate\fP() は実装されていない。
+.TP 
+\fBEOPNOTSUPP\fP
+\fIfd\fP が参照するファイルを含むファイルシステムが 指定された操作を
+サポートしていない。 \fIfd\fP が参照するファイルを含むファイルシステムが
+\fImode\fP をサポートしていない。
+.TP 
+\fBEPERM\fP
+The file referred to by \fIfd\fP is marked immutable (see \fBchattr\fP(1)).  Or:
+\fImode\fP specifies \fBFALLOC_FL_PUNCH_HOLE\fP and the file referred to by \fIfd\fP
+is marked append\-only (see \fBchattr\fP(1)).
+.TP 
+\fBESPIPE\fP
+\fIfd\fP がパイプか FIFO を参照している。
+.SH バージョン
+.\" See http://sourceware.org/bugzilla/show_bug.cgi?id=14964
+\fBfallocate\fP()  はカーネル 2.6.23 以降の Linux で利用可能である。 glibc での対応はバージョン 3.10
+以降で行われている。 \fBFALLOC_FL_*\fP が glibc のヘッダファイルで定義されているのは、バージョン 2.18 以降のみである。
+.SH 準拠
+\fBfallocate\fP()  は Linux 固有である。
+.SH 関連項目
+\fBfallocate\fP(1), \fBftruncate\fP(2), \fBposix_fadvise\fP(3), \fBposix_fallocate\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2b9bb15..07bfc4a 100644 (file)
@@ -104,6 +104,6 @@ POSIX で規定されたインターフェースを実装している。
 .SH 関連項目
 \fBchmod\fP(2), \fBopenat\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a3cbcef..16b6dfc 100644 (file)
@@ -97,6 +97,6 @@ POSIX.1\-2008.  Solaris には、これと同じようなシステムコール
 .SH 関連項目
 \fBchown\fP(2), \fBopenat\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 340600e..40c6eed 100644 (file)
@@ -657,6 +657,6 @@ Linux カーネルソースの \fIDocumentation/filesystems/\fP ディレクト
 \fIDocumentation/\fP ディレクトリ直下にあり、 \fImandatory\-locking.txt\fP は \fImandatory.txt\fP
 という名前であった)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5a710c1..e082f25 100644 (file)
@@ -132,6 +132,6 @@ kernel 2.0 以降では、 \fBflock\fP()  は、GNU C ライブラリでの \fBf
 Linux カーネルソース内の \fIDocumentation/filesystem/locks.txt\fP (以前のカーネルでは
 \fIDocumentation/locks.txt\fP)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/fork.2 b/manual/LDP_man-pages/draft/man2/fork.2
new file mode 100644 (file)
index 0000000..d11ad58
--- /dev/null
@@ -0,0 +1,160 @@
+.\" Copyright (C) 2006 Michael Kerrisk <mtk.manpages@gmail.com>
+.\" A few fragments remain from an earlier (1992) page by
+.\" Drew Eckhardt (drew@cs.colorado.edu),
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified by Michael Haardt (michael@moria.de)
+.\" Modified Sat Jul 24 13:22:07 1993 by Rik Faith (faith@cs.unc.edu)
+.\" Modified 21 Aug 1994 by Michael Chastain (mec@shell.portal.com):
+.\"   Referenced 'clone(2)'.
+.\" Modified 1995-06-10, 1996-04-18, 1999-11-01, 2000-12-24
+.\"   by Andries Brouwer (aeb@cwi.nl)
+.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on capability requirements
+.\" 2006-09-04, Michael Kerrisk
+.\"     Greatly expanded, to describe all attributes that differ
+.\"    parent and child.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH FORK 2 2013\-03\-12 Linux "Linux Programmer's Manual"
+.SH 名前
+fork \- 子プロセスを生成する
+.SH 書式
+\fB#include <unistd.h>\fP
+.sp
+\fBpid_t fork(void);\fP
+.SH 説明
+\fBfork\fP()  は呼び出し元プロセスを複製して新しいプロセスを生成する。 \fIchild\fP で参照される新しいプロセスは、以下の点を除き、
+\fIparent\fP で参照される呼び出し元プロセスの完全な複製である:
+.IP * 3
+子プロセスは独自のプロセス ID を持ち、 この PID は既存のどのプロセスグループ (\fBsetpgid\fP(2))  の ID とも一致しない。
+.IP *
+子プロセスの親プロセス ID は、親プロセスのプロセス ID と同じである。
+.IP *
+子プロセスは親プロセスのメモリロック (\fBmlock\fP(2), \fBmlockall\fP(2))  を引き継がない。
+.IP *
+プロセスの資源利用量 (\fBgetrusage\fP(2))  と CPU タイムカウンタ (\fBtimes\fP(2))  が、子プロセスでは 0
+にリセットされる。
+.IP *
+子プロセスの処理待ちのシグナルの集合 (\fBsigpending\fP(2))  は、初期状態では空になる。
+.IP *
+子プロセスは親プロセスからセマフォ調整 (\fBsemop\fP(2))  を引き継がない。
+.IP *
+子プロセスは親プロセスからレコードロック (\fBfcntl\fP(2))  を引き継がない。
+.IP *
+子プロセスは親プロセスからタイマー (\fBsetitimer\fP(2), \fBalarm\fP(2), \fBtimer_create\fP(2))
+を引き継がない。
+.IP *
+子プロセスは親プロセスから主だった非同期 I/O 操作を引き継がない (\fBaio_read\fP(3), \fBaio_write\fP(3)  参照)。
+また、親プロセスから非同期 I/O コンテキストを引き継がない (\fBio_setup\fP(2)  参照)。
+.PP
+上記のリストにあるプロセス属性は、POSIX.1\-2001 で全て指定されている。 親プロセスと子プロセスは、以下の Linux
+固有のプロセス属性も異なる:
+.IP * 3
+子プロセスは親プロセスからディレクトリ変更通知 (dnotify)  (\fBfcntl\fP(2)  における \fBF_NOTIFY\fP の説明を参照)
+を引き継がない。
+.IP *
+\fBprctl\fP(2)  の \fBPR_SET_PDEATHSIG\fP の設定がリセットされ、子プロセスは親プロセスが終了したときに
+シグナルを受信しない。
+.IP *
+The default timer slack value is set to the parent's current timer slack
+value.  See the description of \fBPR_SET_TIMERSLACK\fP in \fBprctl\fP(2).
+.IP *
+\fBmadvise\fP(2)  の \fBMADV_DONTFORK\fP フラグでマークされたメモリマッピングは、 \fBfork\fP()
+によって引き継がれない。
+.IP *
+子プロセスの終了シグナルは常に \fBSIGCHLD\fP である (\fBclone\fP(2)  を参照)。
+.IP *
+The port access permission bits set by \fBioperm\fP(2)  are not inherited by
+the child; the child must turn on any bits that it requires using
+\fBioperm\fP(2).
+.PP
+以下の点についても注意すること:
+.IP * 3
+子プロセスはシングルスレッドで生成される。つまり、 \fBfork\fP()  を呼び出したスレッドとなる。
+親プロセスの仮想アドレス空間全体が子プロセスに複製される。 これにはミューテックス (mutex) の状態・条件変数・ pthread
+オブジェクトが含まれる。 これが引き起こす問題を扱うには、 \fBpthread_atfork\fP(3)  を使うと良いだろう。
+.IP *
+子プロセスは親プロセスが持つ オープンファイルディスクリプタの集合のコピーを引き継ぐ。 子プロセスの各ファイルディスクリプタは、
+親プロセスのファイルディスクリプタに対応する 同じオープンファイル記述 (file description) を参照する (\fBopen\fP(2)
+を参照)。 これは 2 つのディスクリプタが、ファイル状態フラグ・ 現在のファイルオフセット、シグナル駆動 (signal\-driven) I/O 属性
+(\fBfcntl\fP(2)  における \fBF_SETOWN\fP, \fBF_SETSIG\fP の説明を参照) を共有することを意味する。
+.IP *
+子プロセスは親プロセスが持つオープンメッセージキューディスクリプタ (\fBmq_overview\fP(7)  を参照) の集合のコピーを引き継ぐ。
+子プロセスの各ディスクリプタは、 親プロセスのディスクリプタに対応する 同じオープンメッセージキューディスクリプタを参照する。 これは 2
+つのディスクリプタが同じフラグ (\fImq_flags\fP)  を共有することを意味する。
+.IP *
+子プロセスは、親プロセスのオープン済みのディレクトリストリームの集合 (\fBopendir\fP(3)  参照) のコピーを継承する。
+POSIX.1\-2001 では、親プロセスと子プロセス間の対応するディレクトリストリーム はディレクトリストリームの位置 (positioning)
+を共有してもよいとされている。 Linux/glibc ではディレクトリストリームの位置の共有は行われていない。
+.SH 返り値
+成功した場合、親プロセスには子プロセスの PID が返され、 子プロセスには 0 が返される。 失敗した場合、親プロセスに \-1
+が返され、子プロセスは生成されず、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+親プロセスのページ・テーブルのコピーと 子プロセスのタスク構造に生成に必要なメモリを \fBfork\fP()  が割り当てることができなかった。
+.TP 
+\fBEAGAIN\fP
+呼び出し元の \fBRLIMIT_NPROC\fP 資源の制限 (resource limit) に達したために、新しいプロセスを生成できなかった。
+この制限を超えるには、プロセスは \fBCAP_SYS_ADMIN\fP または \fBCAP_SYS_RESOURCE\fP ケーパビリティ
+(capability) を持っていなくてはならない。
+.TP 
+\fBENOMEM\fP
+メモリが足りないために、 \fBfork\fP()  は必要なカーネル構造体を割り当てることができなかった。
+.TP 
+\fBENOSYS\fP
+.\" e.g., arm (optionally), blackfin, c6x, frv, h8300, microblaze, xtensa
+\fBfork\fP() はこのプラットフォームではサポートされていない
+(例えば、メモリ管理ユニット (MMU) がないハードウェア)。
+.SH 準拠
+SVr4, 4.3BSD, POSIX.1\-2001.
+.SH 注意
+.PP
+Linux では、 \fBfork\fP()  を 書き込み時コピー (copy\-on\-write)・ページを用いて実装している。 したがって、fork
+を行うことの唯一のデメリットは、 親プロセスのページ・テーブルを複製と 子プロセス自身のタスク構造の作成のための時間とメモリが必要なことである。
+
+.\" nptl/sysdeps/unix/sysv/linux/fork.c
+.\" and does some magic to ensure that getpid(2) returns the right value.
+glibc 2.3.3 以降では、 NPTL スレッド実装の一部として提供されている
+glibc の\fBfork\fP() ラッパー関数は、 カーネルの \fBfork\fP() システムコール
+を起動するのではなく、\fBclone\fP(2) を起動する。
+\fBclone\fP(2) に渡すフラグとして、伝統的な \fBfork\fP() システムコールと
+同じ効果が得られるようなフラグが指定される (\fBfork\fP() の呼び出しは、
+\fIflags\fP に \fBSIGCHLD\fP だけを指定して \fBclone\fP(2) を呼び出すのと等価である)。
+glibc のラッパー関数は \fBpthread_atfork\fP(3) を使って設定されている
+任意の fork ハンドラを起動する。
+.SH 例
+\fBpipe\fP(2)  および \fBwait\fP(2)  を参照。
+.SH 関連項目
+\fBclone\fP(2), \fBexecve\fP(2), \fBexit\fP(2), \fBsetrlimit\fP(2), \fBunshare\fP(2),
+\fBvfork\fP(2), \fBwait\fP(2), \fBdaemon\fP(3), \fBcapabilities\fP(7), \fBcredentials\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index d608405..5bd409e 100644 (file)
@@ -110,6 +110,6 @@ glibc の \fBfstatat\fP() のラッパー関数が利用するシステムコー
 .SH 関連項目
 \fBopenat\fP(2), \fBstat\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7),
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 04ef165..b24dfe8 100644 (file)
@@ -114,6 +114,6 @@ Linux 2.2 以前では、 \fBfdatasync\fP()  は \fBfsync\fP()  と等価であ
 \fBbdflush\fP(2), \fBopen\fP(2), \fBsync\fP(2), \fBsync_file_range\fP(2), \fBhdparm\fP(8),
 \fBmount\fP(8), \fBsync\fP(8), \fBupdate\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/futex.2 b/manual/LDP_man-pages/draft/man2/futex.2
new file mode 100644 (file)
index 0000000..d758fb0
--- /dev/null
@@ -0,0 +1,214 @@
+.\" Page by b.hubert
+.\"
+.\" %%%LICENSE_START(FREELY_REDISTRIBUTABLE)
+.\" may be freely modified and distributed
+.\" %%%LICENSE_END
+.\"
+.\" Niki A. Rahimi (LTC Security Development, narahimi@us.ibm.com)
+.\" added ERRORS section.
+.\"
+.\" Modified 2004-06-17 mtk
+.\" Modified 2004-10-07 aeb, added FUTEX_REQUEUE, FUTEX_CMP_REQUEUE
+.\"
+.\" FIXME
+.\" See also https://bugzilla.kernel.org/show_bug.cgi?id=14303
+.\" 2.6.14 adds FUTEX_WAKE_OP
+.\"    commit 4732efbeb997189d9f9b04708dc26bf8613ed721
+.\"    Author: Jakub Jelinek <jakub@redhat.com>
+.\"    Date:   Tue Sep 6 15:16:25 2005 -0700
+.\"
+.\" FIXME
+.\" 2.6.18 adds (Ingo Molnar) priority inheritance support:
+.\" FUTEX_LOCK_PI, FUTEX_UNLOCK_PI, and FUTEX_TRYLOCK_PI.  These need
+.\" to be documented in the manual page.  Probably there is sufficient
+.\" material in the kernel source file Documentation/pi-futex.txt.
+.\"    commit c87e2837be82df479a6bae9f155c43516d2feebc
+.\"    Author: Ingo Molnar <mingo@elte.hu>
+.\"    Date:   Tue Jun 27 02:54:58 2006 -0700
+.\"
+.\"    commit e2970f2fb6950183a34e8545faa093eb49d186e1
+.\"    Author: Ingo Molnar <mingo@elte.hu>
+.\"    Date:   Tue Jun 27 02:54:47 2006 -0700
+.\"
+.\"    See Documentation/futex-requeue-pi.txt
+.\"
+.\" FIXME
+.\" 2.6.25 adds FUTEX_WAKE_BITSET, FUTEX_WAIT_BITSET
+.\"    commit cd689985cf49f6ff5c8eddc48d98b9d581d9475d
+.\"    Author: Thomas Gleixner <tglx@linutronix.de>
+.\"    Date:   Fri Feb 1 17:45:14 2008 +0100
+.\"
+.\" FIXME
+.\" 2.6.31 adds FUTEX_WAIT_REQUEUE_PI, FUTEX_CMP_REQUEUE_PI
+.\"    commit 52400ba946759af28442dee6265c5c0180ac7122
+.\"    Author: Darren Hart <dvhltc@us.ibm.com>
+.\"    Date:   Fri Apr 3 13:40:49 2009 -0700
+.\"
+.\"    commit ba9c22f2c01cf5c88beed5a6b9e07d42e10bd358
+.\"    Author: Darren Hart <dvhltc@us.ibm.com>
+.\"    Date:   Mon Apr 20 22:22:22 2009 -0700
+.\"
+.\"    See Documentation/futex-requeue-pi.txt
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH FUTEX 2 2013\-03\-15 Linux "Linux Programmer's Manual"
+.SH 名前
+futex \- 高速ユーザ空間ロック
+.SH 書式
+.nf
+.sp
+\fB#include <linux/futex.h>\fP
+\fB#include <sys/time.h>\fP
+.sp
+\fBint futex(int *\fP\fIuaddr\fP\fB, int \fP\fIop\fP\fB, int \fP\fIval\fP\fB, const struct timespec *\fP\fItimeout\fP\fB,\fP
+.br
+.\" int *? void *? u32 *?
+\fB          int *\fP\fIuaddr2\fP\fB, int \fP\fIval3\fP\fB);\fP
+.fi
+.SH 説明
+.PP
+\fBfutex\fP()  システムコールは、 指定したアドレスの値が変更されるのをプログラムが待つ手段や 特定のアドレスに対して待機中のプロセスを
+wake (起床) させる手段を提供する (プロセスが異なれば同じメモリに対するアドレスも同じではないかもしれないが、
+カーネルは異なる位置にマップされた同じメモリを \fBfutex\fP()  で使えるよう内部でマップする)。 通常は、このシステムコールは
+\fBfutex\fP(7)  に書かれているように、 共有メモリ中のロックが競合する場合の処理を実装するのに用いられる。
+.PP
+\fBfutex\fP(7)  の操作がユーザ空間で競合なく完了しなかった場合、 カーネルに仲裁させるためにシステムコールを呼ぶ必要がある。
+仲裁というのは、呼び出しプロセスを sleep (起床待ち) させたり、反対に 待ちプロセスを wake させたりすることを意味する。
+.PP
+この関数を呼び出すプロセスは \fBfutex\fP(7)  に記述されているセマンティクスに忠実であることが要求される。
+このセマンティクスには移植不可能なアセンブリ命令を書くことが含まれる。 このことは言い換えると futex
+のユーザのほとんどは実際はライブラリの作者であり、 一般アプリケーションの開発者ではないということである。
+.PP
+\fIuaddr\fP 引き数は、カウンタを格納する、 アラインメントの揃った int 型変数を指している必要がある。 実行する操作は \fIop\fP
+引き数を介して、値 \fIval\fP とともに渡される。
+.PP
+現在のところ 5 つの操作が定義されている:
+.TP 
+\fBFUTEX_WAIT\fP
+この操作は futex アドレス \fIuaddr\fP に指定された値 \fIval\fP がまだ格納されているかどうかを不可分操作で検証し、 sleep 状態で
+この futex アドレスに対して \fBFUTEX_WAKE\fP が実行されるのを待つ。 \fItimeout\fP 引き数が NULL でない場合、その内容は
+待ち時間の最大値を表す。NULL の場合は無限大を表す。 引き数 \fIuaddr2\fP と \fIval3\fP は無視される。
+
+\fBfutex\fP(7)  に照らし合わせると、この呼び出しは カウントのデクリメントで負の値 (競合を表す) になった場合に実行され、
+別のプロセスがその futex を解放し \fBFUTEX_WAKE\fP の操作を実行するまで sleep する。
+.TP 
+\fBFUTEX_WAKE\fP
+この操作では指定した futex アドレスに対して待ち状態の (すなわち \fBFUTEX_WAIT\fP 中の) 最大 \fIval\fP 個のプロセスを
+wake させる。 引き数 \fItimeout\fP, \fIuaddr2\fP, \fIval3\fP は無視される。
+
+\fBfutex\fP(4) に照らし合わせると、 この操作は カウントのインクリメントで待ちプロセスがあると判明し、 futex 値が 1 に設定された
+(利用可能であることを表す) 場合に実行される。
+.TP 
+\fBFUTEX_FD\fP (Linux 2.6.25 以前)
+.\" , suitable for .BR poll (2).
+非同期の wake に対応するため、この操作はファイルディスクリプタを futex に 関連づける。 別のプロセスが \fBFUTEX_WAKE\fP
+を実行すると、プロセスは \fIval\fP で渡されたシグナル番号のシグナルを受信する。 呼び出しプロセスは使用後、返されたファイルディスクリプタを
+クローズしなければならない。 引き数 \fItimeout\fP, \fIuaddr2\fP, \fIval3\fP は無視される。
+
+競合状態を防止するため、呼び出しプロセスは \fBFUTEX_FD\fP が返ったあと futex が up されたかどうかを確認しなければならない。
+
+\fBFUTEX_FD\fP はもともと競合が起きやすかったため、 Linux 2.6.26 以降で削除されている。
+.TP 
+\fBFUTEX_REQUEUE\fP (Linux 2.5.70 以降)
+この操作は、 \fBFUTEX_WAKE\fP が使われていて、かつ wake されている全てのプロセスが 他の futex を取得する必要がある場合に、
+「獣の群れの暴走 (thundering herd)」効果を避けるために導入された。 この呼び出しは \fIval\fP 個のプロセスを wake
+し、アドレス \fIuaddr2\fP で futex を待っている他の全てのプロセスを再度キューにいれる。 引き数 \fItimeout\fP と \fIval3\fP
+は無視される。
+.TP 
+\fBFUTEX_CMP_REQUEUE\fP (Linux 2.6.7 以降)
+故意に \fBFUTEX_REQUEUE\fP を使う場合に競合が起こるため、 \fBFUTEX_CMP_REQUEUE\fP が導入された。これは
+\fBFUTEX_REQUEUE\fP と似ているが、場所 \fIuaddr\fP に値 \fIval3\fP がまだ保持されているかを最初にチェックする。
+保持されていない場合、操作はエラー \fBEAGAIN\fP で失敗する。引き数 \fItimeout\fP は無視される。
+.SH 返り値
+.PP
+In the event of an error, all operations return \-1, and set \fIerrno\fP to
+indicate the error.  The return value on success depends on the operation,
+as described in the following list:
+.TP 
+\fBFUTEX_WAIT\fP
+Returns 0 if the process was woken by a \fBFUTEX_WAKE\fP call.  See ERRORS for
+the various possible error returns.
+.TP 
+\fBFUTEX_WAKE\fP
+wake したプロセスの数を返す。
+.TP 
+\fBFUTEX_FD\fP
+futex に関連づけられた新たなファイルディスクリプタを返す。
+.TP 
+\fBFUTEX_REQUEUE\fP
+wake したプロセスの数を返す。
+.TP 
+\fBFUTEX_CMP_REQUEUE\fP
+wake したプロセスの数を返す。
+.SH エラー
+.TP 
+\fBEACCES\fP
+futex メモリに読み込みアクセス権がなかった。
+.TP 
+\fBEAGAIN\fP
+\fBFUTEX_CMP_REQUEUE\fP detected that the value pointed to by \fIuaddr\fP is not
+equal to the expected value \fIval3\fP.  (This probably indicates a race; use
+the safe \fBFUTEX_WAKE\fP now.)
+.TP 
+\fBEFAULT\fP
+ユーザ空間から \fItimeout\fP の情報を取得する際にエラーが発生した。
+.TP 
+\fBEINTR\fP
+A \fBFUTEX_WAIT\fP operation was interrupted by a signal (see \fBsignal\fP(7))  or
+a spurious wakeup.
+.TP 
+\fBEINVAL\fP
+Invalid argument.
+.TP 
+\fBENFILE\fP
+オープンされているファイルの総数がシステムの制限に達した。
+.TP 
+\fBENOSYS\fP
+\fIop\fP に無効な操作が指定された。
+.TP 
+\fBETIMEDOUT\fP
+Timeout during the \fBFUTEX_WAIT\fP operation.
+.TP 
+\fBEWOULDBLOCK\fP
+\fIop\fP was \fBFUTEX_WAIT\fP and the value pointed to by \fIuaddr\fP was not equal
+to the expected value \fIval\fP at the time of the call.
+.SH バージョン
+.PP
+最初の futex 対応は Linux 2.5.7 で組み込まれたが、 上記のセマンティクスとは異なる。 4
+つの引き数のここに書かれているセマンティクスを持つ システムコールは、Linux 2.5.40 で導入された。 Linux 2.5.70 では 1
+つの引き数が追加された。 Linux 2.6.7 では 6 番目の引き数が追加された。 これは汚く、s390 アーキテクチャ上の特別のものである。
+.SH 準拠
+このシステムコールは Linux 固有である。
+.SH 注意
+.PP
+.\" .SH "AUTHORS"
+.\" .PP
+.\" Futexes were designed and worked on by
+.\" Hubertus Franke (IBM Thomas J. Watson Research Center),
+.\" Matthew Kirkwood, Ingo Molnar (Red Hat)
+.\" and Rusty Russell (IBM Linux Technology Center).
+.\" This page written by bert hubert.
+繰り返すが、裸の futex はエンドユーザが容易に使うことのできる概念として 意図されたものではない (glibc
+にはこのシステムコールに対するラッパー関数はない)。 実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザ空間ライブラリの
+ソースを読み終えていることが要求される。
+.SH 関連項目
+\fBfutex\fP(7)
+.PP
+\fIFuss, Futexes and Furwocks: Fast Userlevel Locking in Linux\fP (proceedings
+of the Ottawa Linux Symposium 2002), online at
+.br
+.UR http://kernel.org\:/doc\:/ols\:/2002\:/ols2002\-pages\-479\-495.pdf
+.UE
+.PP
+futex の使用例ライブラリ, futex\-*.tar.bz2
+.br
+.UR ftp://ftp.nl.kernel.org\:/pub\:/linux\:/kernel\:/people\:/rusty/
+.UE
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6760526..7c32a93 100644 (file)
@@ -86,6 +86,6 @@ Solaris には、これと同じようなシステムコールが存在する。
 \fBstat\fP(2), \fButimensat\fP(2), \fButimes\fP(2), \fBfutimes\fP(3),
 \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/get_kernel_syms.2 b/manual/LDP_man-pages/draft/man2/get_kernel_syms.2
new file mode 100644 (file)
index 0000000..0fd7f48
--- /dev/null
@@ -0,0 +1,70 @@
+.\" Copyright (C) 1996 Free Software Foundation, Inc.
+.\"
+.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
+.\" This file is distributed according to the GNU General Public License.
+.\" %%%LICENSE_END
+.\"
+.\" 2006-02-09, some reformatting by Luc Van Oostenryck; some
+.\" reformatting and rewordings by mtk
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GET_KERNEL_SYMS 2 2012\-10\-18 Linux "Linux Programmer's Manual"
+.SH 名前
+get_kernel_syms \- 公開されているカーネルやモジュールのシンボルの取得
+.SH 書式
+.nf
+\fB#include <linux/module.h>\fP
+.sp
+\fBint get_kernel_syms(struct kernel_sym *\fP\fItable\fP\fB);\fP
+.fi
+.SH 説明
+\fBNote\fP: This system call is present only in kernels before Linux 2.6.
+
+\fBget_kernel_syms\fP()  は、 \fItable\fP が NULL の場合、 問い合わせできるシンボルの数を返す。 NULL
+以外の場合、以下の構造体の列 (table) に値を入れて返す。
+.PP
+.in +4n
+.nf
+struct kernel_sym {
+    unsigned long value;
+    char          name[60];
+};
+.fi
+.in
+.PP
+シンボルの中には、 \fB#\fP\fImodule\-name\fP という形式の、カーネルが空の名前を持っているマジックシンボル (magic symbol)
+が散在している。この形式のシンボルに対応する値は モジュールがロードされたアドレスとなる。
+.PP
+個々のモジュールから公開 (export) されたシンボルは、マジックモジュールタグ
+の後ろに置かれる。また、モジュールはロードされた順番とは逆順で返される。
+.SH 返り値
+成功すると、 \fItable\fP にコピーされたシンボル数を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP を適切に設定する。
+.SH エラー
+返る可能性があるエラーは一つだけである。
+.TP 
+\fBENOSYS\fP
+\fBget_kernel_syms\fP()  がこのバージョンのカーネルではサポートされていない。
+.SH バージョン
+.\" Removed in Linux 2.5.48
+このシステムコールが存在するのはカーネル 2.4 までの Linux だけである。 Linux 2.6 では削除された。
+.SH 準拠
+\fBget_kernel_syms\fP()  は Linux 固有である。
+.SH バグ
+\fItable\fP 用に確保したバッファの大きさを伝える方法がない。 プログラムがシンボルテーブルの大きさを問い合わせた後に、カーネルに
+シンボルが追加されると、メモリの内容が破壊されることになる。
+.PP
+公開されるシンボル名の長さが 59 文字に制限されている。
+.PP
+これらの制限があるので、このシステムコールを使うよりは \fBquery_module\fP(2)  を使うのが望ましい (現在では
+\fBquery_module\fP(2)  自身もそのマニュアルページに書かれているように 他のインタフェースを使うのが望ましいとされている)。
+.SH 関連項目
+\fBcreate_module\fP(2), \fBdelete_module\fP(2), \fBinit_module\fP(2),
+\fBquery_module\fP(2)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 19585d4..8951a7f 100644 (file)
@@ -111,6 +111,6 @@ NUMA (非対称メモリアクセス) マシンでは、CPU により メモリ
 \fBgetcpu\fP(2), \fBmbind\fP(2), \fBmmap\fP(2), \fBset_mempolicy\fP(2), \fBnuma\fP(3),
 \fBnuma\fP(7), \fBnumactl\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8cf32c3..83167d2 100644 (file)
@@ -47,6 +47,6 @@ get_thread_area \- スレッド局所記憶 (TLS) 領域を取り出す
 .SH 関連項目
 \fBmodify_ldt\fP(2), \fBset_thread_area\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9f018b1..ff56e4e 100644 (file)
@@ -14,7 +14,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH GETCPU 2 2012\-07\-13 Linux "Linux Programmer's Manual"
+.TH GETCPU 2 2013\-04\-03 Linux "Linux Programmer's Manual"
 .SH 名前
 getcpu \- 呼び出し元スレッドが動作している CPU と NUMA ノードを判定する
 .SH 書式
@@ -34,8 +34,9 @@ getcpu \- 呼び出し元スレッドが動作している CPU と NUMA ノー
 \fIcpu\fP か \fInode\fP のいずれかが NULL であれば、
 その引き数に対応する情報の書き込みは行われない。
 
-このシステムコールの 3 番目の引き数は現在は使われていない
-(「注意」を参照)。
+The third argument to this system call is nowadays unused, and should be
+specified as NULL unless portability to Linux 2.6.23 or earlier is required
+(see NOTES).
 
 \fIcpu\fP に格納された情報が最新だと保証できるのは、システムコールが呼ばれ
 た時点だけである。\fBsched_setaffinity\fP(2) を使って CPU affinity が固定
@@ -95,7 +96,7 @@ glibc はこのシステムコールに対するラッパー関数を提供し
 .\" With a cache
 .\" .BR getcpu ()
 .\" is faster.
-.\" However, the cached information is only updated once per jiffy (see
+.\" However, the cached information is updated only once per jiffy (see
 .\" .BR time (7)).
 .\" This means that the information could theoretically be out of date,
 .\" although in practice the scheduler's attempt to maintain
@@ -113,6 +114,6 @@ glibc はこのシステムコールに対するラッパー関数を提供し
 \fBmbind\fP(2), \fBsched_setaffinity\fP(2), \fBset_mempolicy\fP(2),
 \fBsched_getcpu\fP(3), \fBcpuset\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 739d603..4b6f553 100644 (file)
@@ -59,12 +59,12 @@ struct linux_dirent {
     unsigned long  d_off;     /* Offset to next \fIlinux_dirent\fP */
     unsigned short d_reclen;  /* Length of this \fIlinux_dirent\fP */
     char           d_name[];  /* Filename (null\-terminated) */
-                        /* length is actually (d_reclen \- 2 \-
-                           offsetof(struct linux_dirent, d_name) */
+                      /* length is actually (d_reclen \- 2 \-
+                         offsetof(struct linux_dirent, d_name)) */
     /*
     char           pad;       // Zero padding byte
-    char           d_type;    // File type (only since Linux 2.6.4;
-                              // offset is (d_reclen \- 1))
+    char           d_type;    // File type (only since Linux
+                              // 2.6.4); offset is (d_reclen \- 1)
     */
 
 }
@@ -146,7 +146,7 @@ glibc はこのシステムコールに対するラッパー関数を提供し
 \fBgetdents64\fP() では、\fIlinux_dirent\fP 構造体のフィールド \fId_ino\fP と
 \fId_off\fP でビット幅の大きなデータ型が使われている。
 .SH 例
-.\" FIXME: This program uses the older getdents(0 system call
+.\" FIXME: This program uses the older getdents() system call
 .\" and the structure with smaller field widths.
 下記のプログラムは \fBgetdents\fP()  の使用例を示したものである。 以下は、このプログラムを ext2 ディレクトリで実行した際に得られる
 出力の例である。
@@ -235,6 +235,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBreaddir\fP(2), \fBreaddir\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index fe21f37..f3787ed 100644 (file)
@@ -92,6 +92,6 @@ Linux 1.0 以降では、ドメイン名の長さの上限は 終端の NULL バ
 .SH 関連項目
 \fBgethostname\fP(2), \fBsethostname\fP(2), \fBuname\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 72ee0c1..b9998fe 100644 (file)
@@ -56,6 +56,6 @@ glibc の \fBgetgid\fP() と \fBgetegid\fP() のラッパー関数は
 .SH 関連項目
 \fBgetresgid\fP(2), \fBsetgid\fP(2), \fBsetregid\fP(2), \fBcredentials\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6652cd9..d9236b9 100644 (file)
@@ -115,6 +115,6 @@ SVr4, 4.3BSD.  \fBgetgroups\fP()  関数は POSIX.1\-2001 に準拠している
 \fBgetgid\fP(2), \fBsetgid\fP(2), \fBgetgrouplist\fP(3), \fBinitgroups\fP(3),
 \fBcapabilities\fP(7), \fBcredentials\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c10371a..2008240 100644 (file)
@@ -111,6 +111,6 @@ GNU C ライブラリは、 \fBgethostname\fP()  システムコールを利用
 .SH 関連項目
 \fBgetdomainname\fP(2), \fBsetdomainname\fP(2), \fBuname\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/getitimer.2 b/manual/LDP_man-pages/draft/man2/getitimer.2
new file mode 100644 (file)
index 0000000..1c81238
--- /dev/null
@@ -0,0 +1,142 @@
+.\" Copyright 7/93 by Darren Senn <sinster@scintilla.santa-clara.ca.us>
+.\" Based on a similar page Copyright 1992 by Rick Faith
+.\"
+.\" %%%LICENSE_START(FREELY_REDISTRIBUTABLE)
+.\" May be freely distributed
+.\" %%%LICENSE_END
+.\"
+.\" Modified Tue Oct 22 00:22:35 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\" 2005-04-06 mtk, Matthias Lang <matthias@corelatus.se>
+.\"    Noted MAX_SEC_IN_JIFFIES ceiling
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETITIMER 2 2012\-10\-01 Linux "Linux Programmer's Manual"
+.SH 名前
+getitimer, setitimer \- インターバル・タイマーの値を取得または設定する
+.SH 書式
+.nf
+\fB#include <sys/time.h>\fP
+.sp
+\fBint getitimer(int \fP\fIwhich\fP\fB, struct itimerval *\fP\fIcurr_value\fP\fB);\fP
+.br
+\fBint setitimer(int \fP\fIwhich\fP\fB, const struct itimerval *\fP\fInew_value\fP\fB,\fP
+\fB              struct itimerval *\fP\fIold_value\fP\fB);\fP
+.fi
+.SH 説明
+システムは 1 個のプロセスにつき 3 個のインターバル・タイマーを提供する。 それぞれのタイマーは別々の時間領域で減少する。
+どのタイマーも満了するとプロセスにシグナルが送られ、 タイマーは (設定によっては) 再び開始される。
+.TP  1.5i
+\fBITIMER_REAL\fP
+実時間 (real time) で減少し、満了すると \fBSIGALRM\fP が送られる。
+.TP 
+\fBITIMER_VIRTUAL\fP
+プロセスが実行されている間のみ減少し、満了すると \fBSIGVTALRM\fP が送られる。
+.TP 
+\fBITIMER_PROF\fP
+プロセスが実行されていて、 かつシステムがそのプロセスのために処理を行なっている間に減少する。 多くの場合、このタイマーは
+\fBITIMER_VIRTUAL\fP と組み合わされて、アプリケーションがカーネル空間とユーザー空間で
+どれだけの時間を過ごしたかをプロファイルするのに使用される。 満了すると \fBSIGPROF\fP が送られる。
+.LP
+タイマーの値は以下の構造体によって定義される:
+.PD 0
+.in +4n
+.nf
+
+struct itimerval {
+    struct timeval it_interval; /* next value */
+    struct timeval it_value;    /* current value */
+};
+
+struct timeval {
+    time_t      tv_sec;         /* seconds */
+    suseconds_t tv_usec;        /* microseconds */
+};
+.fi
+.in
+.PD
+.LP
+\fBgetitimer\fP()  関数は、 \fIwhich\fP で指定されたタイマー (\fBITIMER_REAL\fP, \fBITIMER_VIRTUAL\fP,
+\fBITIMER_PROF\fP のどれか) の現在の設定を、 \fIcurr_value\fP で指定された構造体に格納する。 \fIit_value\fP
+要素にはタイマーの残り時間が設定される。タイマーがオフの場合は ゼロが設定される。同様に \fIit_interval\fP には初期値が設定される。
+
+\fBsetitimer\fP()  関数は指定されたタイマーに \fInew_value\fP の値を設定する。 \fIold_value\fP が NULL
+以外の場合、タイマーの古い値が \fIold_value\fP に格納される。
+.LP
+タイマーは \fIit_value\fP からゼロへ向けて減っていき、シグナルを生成し、 \fIit_interval\fP に初期化される。
+タイマーがゼロに設定された場合 (\fIit_value\fP がゼロか、タイマーが満了した時に \fIit_interval\fP がゼロの場合) は停止する。
+.LP
+タイマーの期間は \fItv_sec\fP と \fItv_usec\fP の両方により決定される。
+.LP
+要求した時間がくる前にタイマーが満了することはないが、 逆にある (短い) 時間だけ満了が遅れることはある。
+どれだけ遅れるかはシステムの時間分解能とシステムの負荷に依存する (\fBtime\fP(7)  参照; 但し、バグの項も参照のこと)。
+タイマーが満了するとシグナルが生成され、タイマーは初期化される。 プロセスがアクティブな時 (\fBITIMER_VIRTUAL\fP
+の場合には常にそうである) にタイマーが満了した場合、生成されたシグナルは すぐに配送される。それ以外の場合は、システムの負荷により少しの時間だけ
+遅れて配送される。
+.SH 返り値
+成功した場合、0 が返される。エラーが発生した場合、\-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEFAULT\fP
+\fInew_value\fP, \fIold_value\fP, \fIcurr_value\fP が有効なポインタではない。
+.TP 
+\fBEINVAL\fP
+\fIwhich\fP が \fBITIMER_REAL\fP, \fBITIMER_VIRTUAL\fP, \fBITIMER_PROF\fP のどれでもない。 または
+(Linux 2.6.22 以降で)  \fInew_value\fP で指定された構造体の \fItv_usec\fP フィールドの一つが 0 以上 999999
+以下の範囲に入らない値である。
+.SH 準拠
+POSIX.1\-2001, SVr4, 4.4BSD (このコールは 4.2BSD で始めて現われた).  POSIX.1\-2008 では、
+\fBgetitimer\fP()  と \fBsetitimer\fP()  は廃止予定とされており、 代わりに POSIX タイマー API
+(\fBtimer_gettime\fP(2), \fBtimer_settime\fP(2)  など) を使うことが推奨されている。
+.SH 注意
+\fBfork\fP(2)  で作成された子プロセスは、 親プロセスのインターバル・タイマーを継承しない。 \fBexecve\fP(2)
+の前後ではインターバル・タイマーは保存される。
+
+POSIX.1 では、 \fBsetitimer\fP()  と、 \fBalarm\fP(2), \fBsleep\fP(3), \fBusleep\fP(3)  という 3
+つのインタフェースとの相互の影響については規定していない。
+
+The standards are silent on the meaning of the call:
+
+    setitimer(which, NULL, &old_value);
+
+Many systems (Solaris, the BSDs, and perhaps others)  treat this as
+equivalent to:
+
+    getitimer(which, &old_value);
+
+In Linux, this is treated as being equivalent to a call in which the
+\fInew_value\fP fields are zero; that is, the timer is disabled.  \fIDon't use
+this Linux misfeature\fP: it is nonportable and unnecessary.
+.SH バグ
+シグナルの生成と配送は別個のものであり、 前述のシグナルのそれぞれについて一つだけがプロセスのために 待機する。 非常に重い負荷の下では、
+\fBITIMER_REAL\fP タイマーでは、時間切れにより生成された一つ前のシグナルが配送される前に、 次の時間切れが起こる場合がある。
+そのような場合、 2 個めのイベントに対するシグナルは失われてしまう。
+
+バージョン 2.6.16 より前の Linux カーネルでは、 タイマーの値は jiffy で表現される。 要求が jiffy 表現で
+(\fIinclude/linux/jiffies.h\fP で定義されている)  \fBMAX_SEC_IN_JIFFIES\fP
+を越える値をタイマーに設定しようとするものの場合、 タイマーは暗黙にこの上限値に切り詰められる。 Linux/i386 の場合 (Linux
+2.6.13 以降では jiffy は 0.004 秒) の場合、 これはタイマーの上限値がおよそ 99.42 日になることを意味する。 Linux
+2.6.16 以降では、カーネルは時間に関する内部表現として 異なる表現を使うようになっており、この上限はなくなった。
+
+.\" 4 Jul 2005: It looks like this bug may remain in 2.4.x.
+.\"    http://lkml.org/lkml/2005/7/1/165
+(i386 を含む) いくつかのシステムでは、 バージョン 2.6.12 以前の Linux カーネルは ある種の状況では 1 jiffy
+早くタイマーが終了してしまうというバグがあった。 このバグはカーネル 2.6.12 で修正された。
+
+.\" Bugzilla report 25 Apr 2006:
+.\" http://bugzilla.kernel.org/show_bug.cgi?id=6443
+.\" "setitimer() should reject noncanonical arguments"
+POSIX.1\-2001 では \fBsetitimer\fP()  は \fItv_usec\fP の値が 0 から 999999
+の範囲外である場合には失敗するべきだとしている。 しかし、2.6.21 以前のカーネルの Linux ではエラーにならず、
+対応する秒数の分だけそのタイマーの秒の値が暗黙に調整される。 カーネル 2.6.22 以降では、この標準非準拠の動作は修正され、 \fItv_usec\fP
+の値が不適切な場合には \fBEINVAL\fP エラーとなる。
+.SH 関連項目
+\fBgettimeofday\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBtimer_create\fP(2),
+\fBtimerfd_create\fP(2), \fBtime\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index c934cd9..9ef010c 100644 (file)
@@ -88,6 +88,6 @@ long sz = sysconf(_SC_PAGESIZE);
 .SH 関連項目
 \fBmmap\fP(2), \fBsysconf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/getpeername.2 b/manual/LDP_man-pages/draft/man2/getpeername.2
new file mode 100644 (file)
index 0000000..1e25c05
--- /dev/null
@@ -0,0 +1,108 @@
+.\" Copyright (c) 1983, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\" %%%LICENSE_END
+.\"
+.\"     @(#)getpeername.2      6.5 (Berkeley) 3/10/91
+.\"
+.\" Modified Sat Jul 24 16:37:50 1993 by Rik Faith <faith@cs.unc.edu>
+.\" Modified Thu Jul 30 14:37:50 1993 by Martin Schulze <joey@debian.org>
+.\" Modified Sun Mar 28 21:26:46 1999 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified 17 Jul 2002, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Added 'socket' to NAME, so that "man -k socket" will show this page.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETPEERNAME 2 2013\-02\-12 Linux "Linux Programmer's Manual"
+.SH 名前
+getpeername \- 接続している相手ソケットの名前を取得する
+.SH 書式
+\fB#include <sys/socket.h>\fP
+.sp
+\fBint getpeername(int \fP\fIsockfd\fP\fB, struct sockaddr *\fP\fIaddr\fP\fB, socklen_t
+*\fP\fIaddrlen\fP\fB);\fP
+.SH 説明
+\fBgetpeername\fP()  は、ソケット(socket)  \fIsockfd\fP に接続している相手のアドレスを、 \fIaddr\fP
+が指すバッファに格納して返す。 \fIaddrlen\fP 引き数は、 \fIaddr\fP が指している領域のサイズに初期化しておかなければならない。
+関数が返る時には、 \fIaddrlen\fP には実際に返された名前のサイズが (バイト単位で) 格納される。
+提供されたバッファが小さすぎた場合には、名前は切り詰められる。
+
+渡されたバッファが小さ過ぎた場合は、返されるアドレスの末尾が切り詰められる。 この場合には、 \fIaddrlen\fP
+には、呼び出し時に指定された値よりも大きな値が格納される。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEBADF\fP
+引き数 \fIsockfd\fP が有効なディスクリプタでない。
+.TP 
+\fBEFAULT\fP
+\fIaddr\fP 引き数の指しているメモリが有効なプロセスのアドレス空間の 一部でない。
+.TP 
+\fBEINVAL\fP
+\fIaddrlen\fP が不正である (例えば、負で場合など)。
+.TP 
+\fBENOBUFS\fP
+この操作を行なうのに十分な資源がシステムに存在しない。
+.TP 
+\fBENOTCONN\fP
+ソケットが接続していない。
+.TP 
+\fBENOTSOCK\fP
+引き数 \fIsockfd\fP がソケットでなくてファイルである。
+.SH 準拠
+SVr4, 4.4BSD (\fBgetpeername\fP()  関数は 4.2BSD で登場した), POSIX.1\-2001.
+.SH 注意
+\fBgetpeername\fP()  の三番目の引き数は実際には \fI`int *'\fP である (4.x BSD, libc4, libc5 では
+このようになっている)。 POSIX では紆余曲折を経て現在の \fIsocklen_t\fP になっており、 glibc でも \fIsocklen_t\fP
+を使っている。 \fBaccept\fP(2)  も参照のこと。
+
+For stream sockets, once a \fBconnect\fP(2)  has been performed, either socket
+can call \fBgetpeername\fP()  to obtain the address of the peer socket.  On the
+other hand, datagram sockets are connectionless.  Calling \fBconnect\fP(2)  on
+a datagram socket merely sets the peer address for outgoing datagrams sent
+with \fBwrite\fP(2)  or \fBrecv\fP(2).  The caller of \fBconnect\fP(2)  can use
+\fBgetpeername\fP()  to obtain the peer address that it earlier set for the
+socket.  However, the peer socket is unaware of this information, and
+calling \fBgetpeername\fP()  on the peer socket will return no useful
+information (unless a \fBconnect\fP(2)  call was also executed on the peer).
+Note also that the receiver of a datagram can obtain the address of the
+sender when using \fBrecvfrom\fP(2).
+.SH 関連項目
+\fBaccept\fP(2), \fBbind\fP(2), \fBgetsockname\fP(2), \fBip\fP(7), \fBsocket\fP(7),
+\fBunix\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9775347..1dbc78b 100644 (file)
@@ -85,6 +85,6 @@ glibc バージョン 2.3.4 以降では、 glibc の \fBgetpid\fP()  のラッ
 \fBclone\fP(2), \fBfork\fP(2), \fBkill\fP(2), \fBexec\fP(3), \fBmkstemp\fP(3),
 \fBtempnam\fP(3), \fBtmpfile\fP(3), \fBtmpnam\fP(3), \fBcredentials\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/getpriority.2 b/manual/LDP_man-pages/draft/man2/getpriority.2
new file mode 100644 (file)
index 0000000..5461c6f
--- /dev/null
@@ -0,0 +1,142 @@
+.\" Copyright (c) 1980, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\" %%%LICENSE_END
+.\"
+.\"     @(#)getpriority.2      6.9 (Berkeley) 3/10/91
+.\"
+.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 1996-07-01 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified 1996-11-06 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 2001-10-21 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Corrected statement under EPERM to clarify privileges required
+.\" Modified 2002-06-21 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Clarified meaning of 0 value for 'who' argument
+.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" FIXME Oct 2008: Denys Vlasenko is working on a PRIO_THREAD feature that
+.\" is likely to get included in mainline; this will need to be documented.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETPRIORITY 2 2013\-02\-12 Linux "Linux Programmer's Manual"
+.SH 名前
+getpriority, setpriority \- プログラムのスケジューリングの優先度を取得/設定する
+.SH 書式
+\fB#include <sys/time.h>\fP
+.br
+\fB#include <sys/resource.h>\fP
+.sp
+\fBint getpriority(int \fP\fIwhich\fP\fB, int \fP\fIwho\fP\fB);\fP
+.br
+\fBint setpriority(int \fP\fIwhich\fP\fB, int \fP\fIwho\fP\fB, int \fP\fIprio\fP\fB);\fP
+.SH 説明
+システムコール \fBgetpriority\fP()  や \fBsetpriority\fP()  は、 \fIwhich\fP と \fIwho\fP
+で指定されたプロセス、プロセスグループ、ユーザーの スケジューリング優先度 (scheduling priority) の 取得や設定をそれぞれ行う。
+
+\fIwhich\fP の値は \fBPRIO_PROCESS\fP, \fBPRIO_PGRP\fP, \fBPRIO_USER\fP, のどれか一つで、 \fIwho\fP は
+\fIwhich\fP に応じて解釈される (\fBPRIO_PROCESS\fP だとプロセス識別子、 \fBPRIO_PGRP\fP だとプロセスグループ識別子、
+\fBPRIO_USER\fP だと UID (ユーザID) と解釈される)。 \fIwho\fP がゼロならば、(それぞれ)呼び出したプロセス、
+呼び出したプロセスのプロセスグループ、 呼び出したプロセスの実UID を意味する。 \fIprio\fP は \-20 から 19 の範囲の値で
+(但し以下の注意の項を参照のこと)、 デフォルトの優先度は 0 である; 小さな数字ほど、有利なスケジューリングとなる。
+
+\fBgetpriority\fP()  コールは指定したプロセスの中の最も高い優先度 (数値的には最小の値) を返す。 \fBsetpriority\fP()
+コールは指定したプロセス全ての優先度を指定した値に設定する。 優先度を今より小さい値に設定できるのはスーパーユーザーだけである。
+.SH 返り値
+\fBgetpriority\fP()  は成功した場合にも \-1 の値を返す可能性があるので、 呼び出しの前に外部変数の \fIerrno\fP
+をクリアし、呼び出しの後に返り値の \-1 が正当な値か エラーかを判別する必要がある。 \fBsetpriority\fP()  コールはエラーがなければ 0
+を返し、エラーがあれば \-1 を返す。
+.SH エラー
+.TP 
+\fBEINVAL\fP
+\fIwhich\fP が \fBPRIO_PROCESS\fP, \fBPRIO_PGRP\fP, \fBPRIO_USER\fP のいずれでもない。
+.TP 
+\fBESRCH\fP
+\fIwhich\fP と \fIwho\fP で指定されたプロセスが存在しない。
+.PP
+上記のものに加えて \fBsetpriority\fP()  では以下のエラーがある:
+.TP 
+\fBEACCES\fP
+呼び出し元がプロセスの優先度を下げようとしたが、必要な特権を 持っていなかった (Linux の場合、 \fBCAP_SYS_NICE\fP
+ケーパビリティがなかった)。 Linux 2.6.12 以降では、呼び出し元が、あるプロセスの優先度を、 変更対象のプロセスのリソース
+\fBRLIMIT_NICE\fP のソフトリミットの範囲外に設定しようとした場合にのみ、 このエラーが発生する。詳細は \fBgetrlimit\fP(2)
+を参照。
+.TP 
+\fBEPERM\fP
+プロセスは見つかったが、そのプロセスの実効 (effective) UID が 呼び出し元の実効UID にも実 (real) UID にも一致せず、
+呼び出し元が特権も持っていなかった (Linux の場合、 \fBCAP_SYS_NICE\fP ケーパビリティがなかった)。 以下の「注意」も参照のこと。
+.SH 準拠
+SVr4, 4.4BSD (これらの関数は 4.2BSD で最初に登場した), POSIX.1\-2001.
+.SH 注意
+\fBfork\fP(2)  で作成された子プロセスは、 親プロセスの nice 値を継承する。 \fBexecve\fP(2)  の前後で nice
+値は保存される。
+
+相対的な nice 値の違いがプロセス間のスケジューリングにどの程度影響を与えるか は、UNIX システム間で異なり、Linux
+ではカーネルバージョンにより異なる。 Linux は、カーネル 2.6.23 以降で、nice 値の相対的な違いが、非常に強い影響を
+与えるアルゴリズムを採用した。このアルゴリズムでは、 他に優先度の高いものがシステムに存在する時には、 非常に低い nice 値 (+19)
+ではプロセスに本当にほとんど CPU が割り当てられない。 また、高い nice 値 (\-20) では CPU を必要とするアプリケーション (例えば
+オーディオアプリケーション) に CPU のほとんどが割り当てられる。
+
+\fBEPERM\fP が発生する条件の詳細はシステムに依存する。 上記の説明は POSIX.1\-2001 のものであり、全ての System V
+風システムは これに従っているようである。 2.6.12 より前の Linux カーネルでは、呼び出し元の実 UID または 実効 UID がプロセス
+\fIwho\fP の (実効 UID でなく)  実 UID に一致する必要がある。 Linux 2.6.12 以降では、呼び出し元の実行 UID
+がプロセス \fIwho\fP の実 UID か実効 UID のいずれかと一致する必要がある。 全ての BSD 風システム (SunOS 4.1.3,
+Ultrix 4.2, 4.3BSD, FreeBSD 4.3, OpenBSD\-2.5等) は、 Linux 2.6.12 以降と同じ動作をする。
+.LP
+実際の優先度の値の範囲はカーネルのバージョンによって異なる。 1.3.36 より前の Linux では、優先度の範囲は負の無限大 〜 15 である。
+1.3.43 以降の Linux では、優先度の範囲は \-20 〜 19 である。 カーネル内部では、nice 値は実際には 40 〜 1
+の範囲を使って 表現されており (負の値はエラーコードとなるため)、こちらの値が システムコール \fBsetpriority\fP()  と
+\fBgetpriority\fP()  で使用されている。 glibc のこれらのシステムコールのラッパー関数において、nice 値の ユーザ領域
+(user\-land) とカーネル表現の間の変換が行われる。 変換式は以下の通り: \fIunice\ =\ 20\ \-\ knice\fP
+.LP
+いくつかのシステムでは、nice 値の範囲は \20 〜 20 である。
+.LP
+現在では \fI<sys/time.h>\fP をインクルードする必要はないが、インクルードすれば移植性を高めることができる (実際には
+\fI<sys/resource.h>\fP で \fIrusage\fP 構造体が定義されているが、そのフィールドで使用されている
+\fIstruct timeval\fP 型は \fI<sys/time.h>\fP で定義されている)。
+.SH バグ
+According to POSIX, the nice value is a per\-process setting.  However, under
+the current Linux/NPTL implementation of POSIX threads, the nice value is a
+per\-thread attribute: different threads in the same process can have
+different nice values.  Portable applications should avoid relying on the
+Linux behavior, which may be made standards conformant in the future.
+.SH 関連項目
+\fBnice\fP(1), \fBrenice\fP(1), \fBfork\fP(2), \fBcapabilities\fP(7)
+
+Linux カーネルのソースツリー内の \fIDocumentation/scheduler/sched\-nice\-design.txt\fP (Linux
+2.6.23 以降)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index bec4a97..6aaceee 100644 (file)
@@ -68,6 +68,6 @@ glibc の \fBgetresuid\fP() と \fBgetresgid\fP() のラッパー関数は
 \fBgetuid\fP(2), \fBsetresuid\fP(2), \fBsetreuid\fP(2), \fBsetuid\fP(2),
 \fBcredentials\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/getrlimit.2 b/manual/LDP_man-pages/draft/man2/getrlimit.2
new file mode 100644 (file)
index 0000000..e495054
--- /dev/null
@@ -0,0 +1,416 @@
+.\" Copyright (c) 1992 Drew Eckhardt, March 28, 1992
+.\" and Copyright (c) 2002, 2004, 2005, 2008, 2010 Michael Kerrisk
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified by Michael Haardt <michael@moria.de>
+.\" Modified 1993-07-23 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 1996-01-13 by Arnt Gulbrandsen <agulbra@troll.no>
+.\" Modified 1996-01-22 by aeb, following a remark by
+.\"          Tigran Aivazian <tigran@sco.com>
+.\" Modified 1996-04-14 by aeb, following a remark by
+.\"          Robert Bihlmeyer <robbe@orcus.ping.at>
+.\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 2001-05-04 by aeb, following a remark by
+.\"          Håvard Lygre <hklygre@online.no>
+.\" Modified 2001-04-17 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Modified 2002-06-13 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added note on nonstandard behavior when SIGCHLD is ignored.
+.\" Modified 2002-07-09 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Enhanced descriptions of 'resource' values
+.\" Modified 2003-11-28 by aeb, added RLIMIT_CORE
+.\" Modified 2004-03-26 by aeb, added RLIMIT_AS
+.\" Modified 2004-06-16 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on CAP_SYS_RESOURCE
+.\"
+.\" 2004-11-16 -- mtk: the getrlimit.2 page, which formally included
+.\" coverage of getrusage(2), has been split, so that the latter
+.\" is now covered in its own getrusage.2.
+.\"
+.\" Modified 2004-11-16, mtk: A few other minor changes
+.\" Modified 2004-11-23, mtk
+.\"    Added notes on RLIMIT_MEMLOCK, RLIMIT_NPROC, and RLIMIT_RSS
+.\"            to "CONFORMING TO"
+.\" Modified 2004-11-25, mtk
+.\"    Rewrote discussion on RLIMIT_MEMLOCK to incorporate kernel
+.\"            2.6.9 changes.
+.\"    Added note on RLIMIT_CPU error in older kernels
+.\" 2004-11-03, mtk, Added RLIMIT_SIGPENDING
+.\" 2005-07-13, mtk, documented RLIMIT_MSGQUEUE limit.
+.\" 2005-07-28, mtk, Added descriptions of RLIMIT_NICE and RLIMIT_RTPRIO
+.\" 2008-05-07, mtk / Peter Zijlstra, Added description of RLIMIT_RTTIME
+.\" 2010-11-06, mtk: Added documentation of prlimit()
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETRLIMIT 2 2013\-02\-11 Linux "Linux Programmer's Manual"
+.SH 名前
+getrlimit, setrlimit, prlimit \- 資源の制限を取得/設定する
+.SH 書式
+\fB#include <sys/time.h>\fP
+.br
+\fB#include <sys/resource.h>\fP
+.sp
+\fBint getrlimit(int \fP\fIresource\fP\fB, struct rlimit *\fP\fIrlim\fP\fB);\fP
+.br
+\fBint setrlimit(int \fP\fIresource\fP\fB, const struct rlimit *\fP\fIrlim\fP\fB);\fP
+.sp
+\fBint prlimit(pid_t \fP\fIpid\fP\fB, int \fP\fIresource\fP\fB, const struct rlimit
+*\fP\fInew_limit\fP\fB,\fP
+.br
+\fB struct rlimit *\fP\fIold_limit\fP\fB);\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBprlimit\fP(): _GNU_SOURCE && _FILE_OFFSET_BITS == 64
+.SH 説明
+\fBgetrlimit\fP() と \fBsetrlimit\fP() はそれぞれ資源 (resource) の制限
+(limit) の設定と取得を行う。 各リソースには、それに対応するソフトリミッ
+トとハードリミットがあり、 \fIrlimit\fP 構造体で定義される:
+.PP
+.in +4n
+.nf
+struct rlimit {
+    rlim_t rlim_cur;  /* ソフトリミット */
+    rlim_t rlim_max;  /* ハードリミット
+                         (rlim_cur より小さくない) */
+};
+
+.fi
+.in
+ソフトリミットは、カーネルが対応するリソースに対して課す制限値である。 ハードリミットはソフトリミットの上限として働く。
+特権を持たないプロセスは、ソフトリミットの値を 0 からハードリミットの範囲に設定することと、 ハードリミットを下げることのみができる
+(一度下げたハードリミットは上げられない)。 特権プロセス (Linux では \fBCAP_SYS_RESOURCE\fP ケーパビリティ
+(capability) を持つプロセス) は ソフトリミットとハードリミットを自由に変更できる。
+.PP
+値 \fBRLIM_INFINITY\fP はリソースに制限がないことを表す (この値は \fBgetrlimit\fP()  が返す構造体と
+\fBsetrlimit\fP()  に渡す構造体の両方で使用される)。
+.PP
+\fIresource\fP 引き数は次のいずれか 1 つである。
+.TP 
+\fBRLIMIT_AS\fP
+.\" since 2.0.27 / 2.1.12
+プロセスの仮想メモリ (アドレス空間) の最大サイズ (バイト単位)。 この制限は \fBbrk\fP(2), \fBmmap\fP(2),
+\fBmremap\fP(2)  の呼び出しに影響し、この制限を超えた場合は エラー \fBENOMEM\fP で失敗する。 また自動的なスタック拡張にも失敗する
+(さらに \fBsigaltstack\fP(2)  を使った代替スタックを利用可能にしていなかった場合には、 \fBSIGSEGV\fP を生成してそのプロセスを
+kill する)。 この値は \fIlong\fP 型なので、32 ビットの \fIlong\fP 型を持つマシンでは、 この制限は最大で 2 GiB
+になるか、この資源が無制限になる。
+.TP 
+\fBRLIMIT_CORE\fP
+\fIcore\fP ファイルの最大サイズ。 0 の場合、core ファイルは生成されない。 0 以外の場合、このサイズより大きいダンプは切り詰められる。
+.TP 
+\fBRLIMIT_CPU\fP
+CPU 時間の上限 (秒数)。プロセスがソフトリミットに達した場合に、
+\fBSIGXCPU\fP シグナルを送る。このシグナルに対するデフォルトの動作は、
+プロセスの終了である。ただし、シグナルをキャッチして、ハンドラがメイン
+プログラムに制御を返すこともできる。プロセスが CPU 時間を使い続けた
+場合は、ハードリミットに達するまで 1 秒毎にプロセスに \fBSIGXCPU\fP を送り、
+ハードリミットに達すると \fBSIGKILL\fP を送る。
+(ソフトリミットを超過したときの動作は、 Linux における動作である。ソフ
+トリミットを超えて CPU 時間を使い続けるプロセスの扱い方についての実装は
+変化してきている。 このシグナルをキャッチする必要のある 移植性を考えた
+アプリケーションでは、 最初に \fBSIGXCPU\fP を受け取った時点で正しく終了
+すべきである。)
+.TP 
+\fBRLIMIT_DATA\fP
+プロセスのデータセグメント (初期化されたデータ・初期化されていないデータ・ヒープ) の最大値。 このリミットは \fBbrk\fP(2)  と
+\fBsbrk\fP(2)  の呼び出しに影響する。 これらの関数は、このリソースのソフトリミットに達すると、 エラー \fBENOMEM\fP で失敗する。
+.TP 
+\fBRLIMIT_FSIZE\fP
+プロセスが作成できるファイルサイズの最大値。 このサイズを超えてファイルを拡張すると、 \fBSIGXFSZ\fP シグナルを送る。
+デフォルトでは、このシグナルはプロセスを終了する。 プロセスをキャッチすることもできるが、 関連するシステムコール (\fBwrite\fP(2),
+\fBtruncate\fP(2)  など) はエラー \fBEFBIG\fP で失敗する。
+.TP 
+\fBRLIMIT_LOCKS\fP (初期の Linux 2.4 のみ)
+.\" to be precise: Linux 2.4.0-test9; no longer in 2.4.25 / 2.5.65
+このプロセスが実行できる \fBflock\fP(2)  ロック数と \fBfcntl\fP(2)  リース数の合計値を制限する。
+.TP 
+\fBRLIMIT_MEMLOCK\fP
+RAM 内にロックできるメモリの最大バイト数。 実際には、この制限はシステムページサイズの最も近い倍数に 切り捨てて丸められる。 この制限は
+\fBmlock\fP(2), \fBmlockall\fP(2), \fBmmap\fP(2)  の \fBMAP_LOCKED\fP 操作に影響する。 Linux
+2.6.9 以降では \fBshmctl\fP(2)  \fBSHM_LOCK\fP 操作にも影響する。 この操作は呼び出し元プロセスの実 (real) ユーザー
+ID にロックされる 共有メモリセグメント (\fBshmget\fP(2)  を参照) の合計バイト数の最大値を設定する。 \fBshmctl\fP(2)
+\fBSHM_LOCK\fP によるロックは、 \fBmlock\fP(2), \fBmlockall\fP(2), \fBmmap\fP(2)  の
+\fBMAP_LOCKED\fP によって確立されるプロセス毎のメモリロックとは分けて数える。 1 つのプロセスはこの制限までのバイトをロックできる。
+この制限には 2 つの種類がある。 2.6.9 より前の Linux カーネル では、
+この制限は特権プロセスによってロックされるメモリの合計を制御していた。 Linux 2.6.9
+以降では、特権プロセスがロックするメモリの合計に制限はなく、 代わりにこの制限は非特権プロセスがロックするメモリの合計に 適用されるようになった。
+.TP 
+\fBRLIMIT_MSGQUEUE\fP (Linux 2.6.8 以降)
+呼び出し元プロセスの実ユーザー ID に対して、 POSIX メッセージキューのために確保できるバイト数の制限を指定する。 この制限は
+\fBmq_open\fP(3)  に対して適用される。 ユーザが作成した各々のメッセージキューのバイト数は
+以下の式により計算され、(そのキューが削除されるまでの間)  この制限の計算対象に含められる。
+.nf
+
+    bytes = attr.mq_maxmsg * sizeof(struct msg_msg *) +
+            attr.mq_maxmsg * attr.mq_msgsize
+
+.fi
+ここで \fIattr\fP は \fImq_attr\fP 構造体であり、 \fBmq_open\fP(3)  の第 4 引き数として指定される。
+
+\fIsizeof(struct msg_msg *)\fP (Linux/i386 では 4 バイト) を含む最初の加数は、 ユーザーが長さ 0
+のメッセージを無制限に作れないこと保証している (このようなメッセージであっても、 記録のためのオーバーヘッドでシステムメモリを消費する)。
+.TP 
+\fBRLIMIT_NICE\fP (Linux 2.6.12 以降, 下記の「バグ」の節も参照)
+\fBsetpriority\fP(2)  や \fBnice\fP(2)  を使って引き上げられるプロセスの nice 値の上限を指定する。 nice
+値の実際の上限は \fI20\ \-\ rlim_cur\fP で計算される (このような変な状況は、リソース制限値として負の数を指定できないため
+発生する。通常、負の値は特別な意味を持っているからである。 例えば、通常は \fBRLIM_INFINITY\fP の値は \-1 である)。
+.TP 
+\fBRLIMIT_NOFILE\fP
+このプロセスがオープンできるファイルディスクリプタ数の最大値より 1 大きい値を指定する。 (\fBopen\fP(2), \fBpipe\fP(2),
+\fBdup\fP(2)  などにより) この上限を超えようとした場合、エラー \fBEMFILE\fP が発生する (歴史的に、BSD ではこの上限は
+\fBRLIMIT_OFILE\fP という名前となっている)。
+.TP 
+\fBRLIMIT_NPROC\fP
+呼び出したプロセスの実ユーザー ID で作成できる最大プロセス数 (より正確には Linux ではスレッド数)。 この上限に達すると、
+\fBfork\fP(2)  はエラー \fBEAGAIN\fP で失敗する。
+.TP 
+\fBRLIMIT_RSS\fP
+.\" As at kernel 2.6.12, this limit still does nothing in 2.6 though
+.\" talk of making it do something has surfaced from time to time in LKML
+.\"       -- MTK, Jul 05
+プロセスの resident set (RAM 上に存在する仮想ページの数) の 上限を (ページ数で) 指定する。 この制限は 2.4.30
+より前でしか影響がなく、 \fBmadvise\fP(2)  に \fBMADV_WILLNEED\fP を指定した関数コールにしか影響しない。
+.TP 
+\fBRLIMIT_RTPRIO\fP (Linux 2.6.12 以降, バグの節も参照)
+\fBsched_setscheduler\fP(2)  や \fBsched_setparam\fP(2)
+を使って設定できる、そのプロセスのリアルタイム優先度の上限を指定する。
+.TP 
+\fBRLIMIT_RTTIME\fP (Linux 2.6.25 以降)
+リアルタイムスケジューリング方針でスケジューリングされるプロセスが ブロッキング型のシステムコールを呼び出さずに消費することのできる CPU
+時間の合計についての上限を (マイクロ秒単位で) 指定する。 この上限の目的のため、プロセスがブロッキング型のシステムコールを 呼び出す度に、消費された
+CPU 時間のカウントは 0 にリセットされる。 プロセスが CPU を使い続けようとしたが他のプロセスに置き換えられた (preempted)
+場合や、そのプロセスのタイムスライスが満了した場合、 そのプロセスが \fBsched_yield\fP(2)  を呼び出した場合は、CPU
+時間のカウントはリセットされない。
+
+ソフトリミットに達すると、そのプロセスに \fBSIGXCPU\fP シグナルが送られる。そのプロセスがこのシグナルを捕捉するか 無視して、CPU
+時間を消費し続けた場合には、 ハードリミットに達するまで 1 秒に 1 回 \fBSIGXCPU\fP が生成され続けることになる。
+ハードリミットに達した時点で、そのプロセスには \fBSIGKILL\fP シグナルが送られる。
+
+この上限を意図的に使用するのは、暴走したリアルタイムプロセスを 停止して、システムが動かなくなるのを避ける場合である。
+.TP 
+\fBRLIMIT_SIGPENDING\fP (Linux 2.6.8 以降)
+.\" This replaces the /proc/sys/kernel/rtsig-max system-wide limit
+.\" that was present in kernels <= 2.6.7.  MTK Dec 04
+呼び出し元プロセスの実ユーザー ID に対して キューに入れられるシグナルの
+数の制限を指定する。この制限をチェックするため、標準シグナルとリアルタ
+イムシグナルの両方がカウントされる。しかし、この制限は \fBsigqueue\fP(3)
+に対してのみ適用され、 \fBkill\fP(2) 使うことで、そのプロセスに対してま
+だキューに入れられていない シグナルのインスタンスをキューに入れることが
+できる。
+.TP 
+\fBRLIMIT_STACK\fP
+プロセススタックの最大サイズをバイト単位で指定する。 この上限に達すると、 \fBSIGSEGV\fP シグナルが生成される。 このシグナルを扱うためには、
+プロセスは代りのシグナルスタック (\fBsigaltstack\fP(2))  を使用しなければならない。
+
+Linux 2.6.23 以降では、この制限はプロセスのコマンドライン引き数と環境変数
+に使用される空間の合計サイズの上限の決定にも使用される。詳細については \fBexecve\fP(2)  を参照。
+.SS prlimit()
+.\" commit c022a0acad534fd5f5d5f17280f6d4d135e74e81
+.\" Author: Jiri Slaby <jslaby@suse.cz>
+.\" Date:   Tue May 4 18:03:50 2010 +0200
+The Linux\-specific \fBprlimit\fP()  system call combines and extends the
+functionality of \fBsetrlimit\fP()  and \fBgetrlimit\fP().  It can be used to both
+set and get the resource limits of an arbitrary process.
+
+The \fIresource\fP argument has the same meaning as for \fBsetrlimit\fP()  and
+\fBgetrlimit\fP().
+
+If the \fInew_limit\fP argument is a not NULL, then the \fIrlimit\fP structure to
+which it points is used to set new values for the soft and hard limits for
+\fIresource\fP.  If the \fIold_limit\fP argument is a not NULL, then a successful
+call to \fBprlimit\fP()  places the previous soft and hard limits for
+\fIresource\fP in the \fIrlimit\fP structure pointed to by \fIold_limit\fP.
+
+.\" FIXME this permission check is strange
+.\" Asked about this on LKML, 7 Nov 2010
+.\"     "Inconsistent credential checking in prlimit() syscall"
+The \fIpid\fP argument specifies the ID of the process on which the call is to
+operate.  If \fIpid\fP is 0, then the call applies to the calling process.  To
+set or get the resources of a process other than itself, the caller must
+have the \fBCAP_SYS_RESOURCE\fP capability, or the real, effective, and saved
+set user IDs of the target process must match the real user ID of the caller
+\fIand\fP the real, effective, and saved set group IDs of the target process
+must match the real group ID of the caller.
+.SH 返り値
+成功した場合、これらのシステムコールは 0 を返す。
+エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEFAULT\fP
+場所を指すポインタ引き数がアクセス可能なアドレス空間外を指している。
+.TP 
+\fBEINVAL\fP
+\fIresource\fP で指定された値が有効でない。
+または、 \fBsetrlimit\fP() や \fBprlimit\fP() で、
+\fIrlim\->rlim_cur\fP が \fIrlim\->rlim_max\fP よりも大きかった。
+.TP 
+\fBEPERM\fP
+特権のないプロセスがハードリミットを上げようとした。
+これを行うためには \fBCAP_SYS_RESOURCE\fP ケーパビリティが必要である。
+または、特権のないプロセスが \fBRLIMIT_NOFILE\fP ハードリミットを
+現在のカーネルの最大値 (\fBNR_OPEN\fP) 以上に増やそうとした。
+または、呼び出したプロセスが \fIpid\fP で指定されたプロセスのリミットを
+設定する許可を持っていなかった。
+.TP 
+\fBESRCH\fP
+Could not find a process with the ID specified in \fIpid\fP.
+.SH バージョン
+The \fBprlimit\fP()  system call is available since Linux 2.6.36.  Library
+support is available since glibc 2.13.
+.SH 準拠
+\fBgetrlimit\fP(), \fBsetrlimit\fP(): SVr4, 4.3BSD, POSIX.1\-2001.
+.br
+\fBprlimit\fP(): Linux\-specific.
+
+\fBRLIMIT_MEMLOCK\fP と \fBRLIMIT_NPROC\fP は BSD から派生し、
+POSIX.1\-2001 には指定されていない。
+これらは BSD 系と Linux に存在するが、他の実装は少ない。
+\fBRLIMIT_RSS\fP は BSD から派生し、POSIX.1\-2001 には指定されていない。
+それにも関わらず多くの実装で存在する。
+\fBRLIMIT_MSGQUEUE\fP, \fBRLIMIT_NICE\fP, \fBRLIMIT_RTPRIO\fP, \fBRLIMIT_RTTIME\fP,
+\fBRLIMIT_SIGPENDING\fP は Linux 固有のものである。
+.SH 注意
+\fBfork\fP(2)  で作成された作成された子プロセスは、 親プロセスのリソース制限を継承する。 \fBexecve\fP(2)
+の前後でリソース制限は保存される。
+
+シェルのリソース制限は、シェルの組み込みコマンドである \fIulimit\fP (\fBcsh\fP(1)  では \fIlimit )\fP
+を使って設定することができる。 このシェルのリソース制限は、コマンドを実行してシェルが生成するプロセス に引き継がれる。
+
+Since Linux 2.6.24, the resource limits of any process can be inspected via
+\fI/proc/[pid]/limits\fP; see \fBproc\fP(5).
+
+古いシステムでは、 \fBsetrlimit\fP()  と同様の目的を持つ関数 \fBvlimit\fP()  が提供されていた。 後方互換性のため、glibc
+でも \fBvlimit\fP()  を提供している。 全ての新しいアプリケーションでは、 \fBsetrlimit\fP()  を使用すべきである。
+.SH バグ
+.\" FIXME prlimit() does not suffer
+.\" https://bugzilla.kernel.org/show_bug.cgi?id=5042
+.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=12201
+.\" Since versions 2.13, glibc has library implementations of
+.\" getrlimit() and setrlimit() that use prlimit() to work around
+.\" this bug.
+以前の Linux カーネルでは、プロセスがソフトまたはハード \fBRLIMIT_CPU\fP リミットに達した場合に送られる \fBSIGXCPU\fP と
+\fBSIGKILL\fP シグナルが、本来送られるべき時点の 1 (CPU) 秒後に送られてしまう。 これはカーネル 2.6.8 で修正された。
+
+.\" see http://marc.theaimsgroup.com/?l=linux-kernel&m=114008066530167&w=2
+2.6.17 より前の 2.6.x カーネルでは、 \fBRLIMIT_CPU\fP リミットが 0 の場合、 (\fBRLIM_INFINITY\fP
+と同じように) 「制限なし」と間違って解釈されていた。 Linux 2.6.17 以降では、リミットを 0 に設定した場合にも
+効果を持つようになっているが、実際にはリミットの値は 1 秒となる。
+
+.\" See https://lwn.net/Articles/145008/
+カーネル 2.6.12 には、 \fBRLIMIT_RTPRIO\fP が動作しないというバグがある。この問題はカーネル 2.6.13 で修正されている。
+
+.\" see http://marc.theaimsgroup.com/?l=linux-kernel&m=112256338703880&w=2
+カーネル 2.6.12 では、 \fBgetpriority\fP(2)  と \fBRLIMIT_NICE\fP
+が返す優先度の範囲が一つずれていた。このため、nice 値の実際の上限が \fI19\ \-\ rlim_cur\fP
+になってしまうという影響があった。これはカーネル 2.6.13 で修正された。
+
+.\" The relevant patch, sent to LKML, seems to be
+.\" http://thread.gmane.org/gmane.linux.kernel/273462
+.\" From: Roland McGrath <roland <at> redhat.com>
+.\" Subject: [PATCH 7/7] make RLIMIT_CPU/SIGXCPU per-process
+.\" Date: 2005-01-23 23:27:46 GMT
+.\" Tested Solaris 10, FreeBSD 9, OpenBSD 5.0
+.\" FIXME https://bugzilla.kernel.org/show_bug.cgi?id=50951
+Since Linux 2.6.12, if a process reaches its soft \fBRLIMIT_CPU\fP limit and
+has a handler installed for \fBSIGXCPU\fP, then, in addition to invoking the
+signal handler, the kernel increases the soft limit by one second.  This
+behavior repeats if the process continues to consume CPU time, until the
+hard limit is reached, at which point the process is killed.  Other
+implementations do not change the \fBRLIMIT_CPU\fP soft limit in this manner,
+and the Linux behavior is probably not standards conformant; portable
+applications should avoid relying on this Linux\-specific behavior.  The
+Linux\-specific \fBRLIMIT_RTTIME\fP limit exhibits the same behavior when the
+soft limit is encountered.
+
+2.4.22 より前のカーネルでは、 \fIrlim\->rlim_cur\fP が \fIrlim\->rlim_max\fP より大きかった場合、
+\fBsetrlimit\fP()  での \fBEINVAL\fP エラーを検出できない。
+.SH 例
+The program below demonstrates the use of \fBprlimit\fP().
+.PP
+.nf
+#define _GNU_SOURCE
+#define _FILE_OFFSET_BITS 64
+#include <stdio.h>
+#include <time.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/resource.h>
+
+#define errExit(msg)   do { perror(msg); exit(EXIT_FAILURE); \e
+                        } while (0)
+
+int
+main(int argc, char *argv[])
+{
+    struct rlimit old, new;
+    struct rlimit *newp;
+    pid_t pid;
+
+    if (!(argc == 2 || argc == 4)) {
+        fprintf(stderr, "Usage: %s <pid> [<new\-soft\-limit> "
+                "<new\-hard\-limit>]\en", argv[0]);
+        exit(EXIT_FAILURE);
+    }
+
+    pid = atoi(argv[1]);        /* PID of target process */
+
+    newp = NULL;
+    if (argc == 4) {
+        new.rlim_cur = atoi(argv[2]);
+        new.rlim_max = atoi(argv[3]);
+        newp = &new;
+    }
+
+    /* Set CPU time limit of target process; retrieve and display
+       previous limit */
+
+    if (prlimit(pid, RLIMIT_CPU, newp, &old) == \-1)
+        errExit("prlimit\-1");
+    printf("Previous limits: soft=%lld; hard=%lld\en",
+            (long long) old.rlim_cur, (long long) old.rlim_max);
+
+    /* Retrieve and display new CPU time limit */
+
+    if (prlimit(pid, RLIMIT_CPU, NULL, &old) == \-1)
+        errExit("prlimit\-2");
+    printf("New limits: soft=%lld; hard=%lld\en",
+            (long long) old.rlim_cur, (long long) old.rlim_max);
+
+    exit(EXIT_FAILURE);
+}
+.fi
+.SH 関連項目
+\fBprlimit\fP(1), \fBdup\fP(2), \fBfcntl\fP(2), \fBfork\fP(2), \fBgetrusage\fP(2),
+\fBmlock\fP(2), \fBmmap\fP(2), \fBopen\fP(2), \fBquotactl\fP(2), \fBsbrk\fP(2),
+\fBshmctl\fP(2), \fBmalloc\fP(3), \fBsigqueue\fP(3), \fBulimit\fP(3), \fBcore\fP(5),
+\fBcapabilities\fP(7), \fBsignal\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 75e1932..b1d0292 100644 (file)
@@ -73,6 +73,6 @@ Linux は \fBEPERM\fP を返さない。
 .SH 関連項目
 \fBgetpgid\fP(2), \fBsetsid\fP(2), \fBcredentials\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 921ea23..4833ebe 100644 (file)
@@ -88,6 +88,6 @@ glibc でも使われている現在の \fIsocklen_t\fP に関して、 POSIX 
 \fBbind\fP(2), \fBsocket\fP(2), \fBgetifaddrs\fP(3), \fBip\fP(7), \fBsocket\fP(7),
 \fBunix\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4778d40..09a8179 100644 (file)
@@ -125,6 +125,6 @@ glibc でも \fIsocklen_t\fP を使っている。 \fBaccept\fP(2)  も参照の
 \fBioctl\fP(2), \fBsocket\fP(2), \fBgetprotoent\fP(3), \fBprotocols\fP(5), \fBsocket\fP(7),
 \fBtcp\fP(7), \fBunix\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 46fa9d9..6075651 100644 (file)
@@ -69,6 +69,6 @@ glibc はこのシステムコールに対するラッパー関数を提供し
 \fBsched_setaffinity\fP(2), \fBsched_setparam\fP(2), \fBsched_setscheduler\fP(2),
 \fBtimer_create\fP(2), \fBtgkill\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f76f9f8..b73d91c 100644 (file)
@@ -179,6 +179,6 @@ Linux において \fBsettimeofday\fP() を呼び出すときは、
 \fBctime\fP(3), \fBftime\fP(3), \fBtimeradd\fP(3), \fBcapabilities\fP(7),
 \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 33f9d58..c8ec1c4 100644 (file)
@@ -61,6 +61,6 @@ glibc の \fBgetuid\fP() と \fBgeteuid\fP() のラッパー関数は
 .SH 関連項目
 \fBgetresuid\fP(2), \fBsetreuid\fP(2), \fBsetuid\fP(2), \fBcredentials\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1587231..478953d 100644 (file)
@@ -96,6 +96,6 @@ inode に対して、互いに独立な名前空間が複数あってもよい
 \fBgetfattr\fP(1), \fBsetfattr\fP(1), \fBlistxattr\fP(2), \fBopen\fP(2),
 \fBremovexattr\fP(2), \fBsetxattr\fP(2), \fBstat\fP(2), \fBattr\fP(5), \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 40f2c96..64de9fb 100644 (file)
@@ -59,6 +59,6 @@ Linux 2.3.13 以降では、もはやこのシステムコールは存在しな
 .SH 準拠
 この関数は Linux 特有であり、移植を意図したプログラムでは 使用すべきでない。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 277c2af..c8bd06c 100644 (file)
@@ -86,6 +86,6 @@ inotify は Linux カーネル 2.6.13 に組み込まれた。
 .SH 関連項目
 \fBinotify_init\fP(2), \fBinotify_rm_watch\fP(2), \fBinotify\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 73b4734..473c59c 100644 (file)
@@ -80,6 +80,6 @@ inotify インスタンスの総数がシステムの上限に達していた。
 .SH 関連項目
 \fBinotify_add_watch\fP(2), \fBinotify_rm_watch\fP(2), \fBinotify\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 593f4f3..e0cb0db 100644 (file)
@@ -59,6 +59,6 @@ inotify は Linux カーネル 2.6.13 に組み込まれた。
 .SH 関連項目
 \fBinotify_add_watch\fP(2), \fBinotify_init\fP(2), \fBinotify\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 44a69e7..104eaaa 100644 (file)
@@ -71,6 +71,6 @@ Linux のシステムコールのリストについては \fBsyscalls\fP(2)  を
 \fBsem_overview\fP(7), \fBshm_overview\fP(7), \fBsignal\fP(7), \fBsocket\fP(7),
 \fBstandards\fP(7), \fBsvipc\fP(7), \fBsymlink\fP(7), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c7d84c1..87f15e2 100644 (file)
@@ -9,7 +9,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH IO_CANCEL 2 2012\-07\-13 Linux "Linux Programmer's Manual"
+.TH IO_CANCEL 2 2013\-04\-10 Linux "Linux Programmer's Manual"
 .SH 名前
 io_cancel \- 未処理の非同期 I/O 操作の取り消し
 .SH 書式
@@ -23,12 +23,12 @@ io_cancel \- 未処理の非同期 I/O 操作の取り消し
 \fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。
 .SH 説明
 .PP
-\fBio_cancel\fP() システムコールは、過去に \fBio_submit\fP(2) を使って登録さ
-れた非同期 I/O (AIO) 操作の取り消しを行おうとする。 \fIctx_id\fP 引き数は、
-取り消しを行う操作の AIO コンテキストの ID である。指定した AIO コンテ
-キストが見つかると、対象のイベントの取り消しが行われ、その後 \fIresult\fP
-で指されたメモリに コピーされる (このとき、完了キューへの移動は行われな
-い)。
+The \fBio_cancel\fP()  system call attempts to cancel an asynchronous I/O
+operation previously submitted with \fBio_submit\fP(2).  The \fIiocb\fP argument
+describes the operation to be canceled and the \fIctx_id\fP argument is the AIO
+context to which the operation was submitted.  If the operation is
+successfully canceled, the event will be copied into the memory pointed to
+by \fIresult\fP without being placed into the completion queue.
 .SH 返り値
 成功した場合、 \fBio_cancel\fP()  は 0 を返す。 失敗時の返り値については、「注意」の節を参照すること。
 .SH エラー
@@ -74,6 +74,6 @@ glibc はこのシステムコールのラッパー関数を提供していな
 \fBio_destroy\fP(2), \fBio_getevents\fP(2), \fBio_setup\fP(2), \fBio_submit\fP(2),
 \fBaio\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 39762c3..5990196 100644 (file)
@@ -9,7 +9,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH IO_DESTROY 2 2012\-07\-13 Linux "Linux Programmer's Manual"
+.TH IO_DESTROY 2 2013\-04\-08 Linux "Linux Programmer's Manual"
 .SH 名前
 io_destroy \- 非同期 I/O コンテキストの消去
 .SH 書式
@@ -22,11 +22,10 @@ io_destroy \- 非同期 I/O コンテキストの消去
 \fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。
 .SH 説明
 .PP
-\fBio_destroy\fP() システムコールは、I/O コンテキストのリストから
-\fIctx_id\fP で指定された非同期 I/O コンテキストを削除した後、
-そのコンテキストを消去する。
-\fIctx_id\fP 上に未処理の非同期 I/O 命令および完了キューの
-ブロックの取り消しも行うことができる。
+The \fBio_destroy\fP()  system call will attempt to cancel all outstanding
+asynchronous I/O operations against \fIctx_id\fP, will block on the completion
+of all operations that could not be cancelled, and will destroy the
+\fIctx_id\fP.
 .SH 返り値
 成功した場合、 \fBio_destroy\fP()  は 0 を返す。 失敗時の返り値については、「注意」の節を参照すること。
 .SH エラー
@@ -69,6 +68,6 @@ glibc はこのシステムコールのラッパー関数を提供していな
 \fBio_cancel\fP(2), \fBio_getevents\fP(2), \fBio_setup\fP(2), \fBio_submit\fP(2),
 \fBaio\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 95de9b9..4aa2504 100644 (file)
@@ -9,7 +9,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH IO_GETEVENTS 2 2012\-11\-11 Linux "Linux Programmer's Manual"
+.TH IO_GETEVENTS 2 2013\-04\-08 Linux "Linux Programmer's Manual"
 .SH 名前
 io_getevents \- 完了キューから非同期 I/O イベントを読み出す
 .SH 書式
@@ -24,13 +24,11 @@ io_getevents \- 完了キューから非同期 I/O イベントを読み出す
 \fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。
 .SH 説明
 .PP
-\fBio_getevents\fP() システムコールは、少なくとも \fImin_nr\fP の、最大
-\fInr\fP 個のイベントを、 \fIctx_id\fP 引き数で指定された AIO (非同期 I/O)
-コンテキストの 完了キューから読み出そうとする。 \fItimeout\fP はイベント
-読み出しの待ち時間の合計を指定する。 タイムアウトに NULL を指定した場合、
-少なくとも \fImin_nr\fP 個のイベントが 読み出されるまで待つことを意味する。
-注意点を以下にあげる: \fItimeout\fP は相対的な指定である。 NULL でない場合
-更新されることもありえる。 呼び出し元の動作は停止する。
+The \fBio_getevents\fP()  system call attempts to read at least \fImin_nr\fP
+events and up to \fInr\fP events from the completion queue of the AIO context
+specified by \fIctx_id\fP.  The \fItimeout\fP argument specifies the amount of
+time to wait for events, where a NULL timeout waits until at least \fImin_nr\fP
+events have been seen.  Note that \fItimeout\fP is relative.
 .SH 返り値
 成功すると、 \fBio_getevents\fP()  は読み出したイベント数を返す。 イベントが一つも読み出されなかった場合は 0 が返され、
 \fItimeout\fP 時間が経過した場合は \fImin_nr\fP 未満の値が返される。 失敗時の返り値については、「注意」の節を参照すること。
@@ -81,6 +79,6 @@ glibc はこのシステムコールのラッパー関数を提供していな
 \fBio_cancel\fP(2), \fBio_destroy\fP(2), \fBio_setup\fP(2), \fBio_submit\fP(2),
 \fBaio\fP(7), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 132bd81..e40f420 100644 (file)
@@ -9,7 +9,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH IO_SETUP 2 2012\-07\-13 Linux "Linux Programmer's Manual"
+.TH IO_SETUP 2 2013\-04\-08 Linux "Linux Programmer's Manual"
 .SH 名前
 io_setup \- 非同期 I/O コンテキストを作成する
 .SH 書式
@@ -22,18 +22,18 @@ io_setup \- 非同期 I/O コンテキストを作成する
 \fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。
 .SH 説明
 .PP
-\fBio_setup\fP() システムコールは、少なくとも \fInr_events\fP 個のイベントを
-受信可能な非同期 I/O (AIO) コンテキストの作成を行う。 \fIctx_idp\fP 引き数
-は、すでに存在する AIO コンテキストを指していてはならず、
-\fBio_setup\fP() の呼び出しの前に 0 に初期化されていなければならない。
-AIO コンテキストの作成に成功すると、 \fI*ctx_idp\fP に作成された AIO
-コンテキストへのポインタがセットされる。
+The \fBio_setup\fP()  system call creates an asynchronous I/O context capable
+of of concurrently processing at least \fInr_events\fP.  The \fIctx_idp\fP
+argument must not point to an AIO context that already exists, and must be
+initialized to 0 prior to the call.  On successful creation of the AIO
+context, \fI*ctx_idp\fP is filled in with the resulting handle.
 .SH 返り値
 成功した場合、 \fBio_setup\fP()  は 0 を返す。 失敗時の返り値については、「注意」の節を参照すること。
 .SH エラー
 .TP 
 \fBEAGAIN\fP
-指定された \fInr_events\fP がユーザが使用できるイベント数の上限を越えている。
+The specified \fInr_events\fP exceeds the user's limit of available events, as
+defined in \fI/proc/sys/fs/aio\-max\-nr\fP.
 .TP 
 \fBEFAULT\fP
 \fIctx_idp\fP に無効なポインタが指定されている。
@@ -78,6 +78,6 @@ glibc はこのシステムコールのラッパー関数を提供していな
 \fBio_cancel\fP(2), \fBio_destroy\fP(2), \fBio_getevents\fP(2), \fBio_submit\fP(2),
 \fBaio\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 62d7e96..eb9656e 100644 (file)
@@ -78,6 +78,6 @@ glibc はこのシステムコールのラッパー関数を提供していな
 \fBio_cancel\fP(2), \fBio_destroy\fP(2), \fBio_getevents\fP(2), \fBio_setup\fP(2),
 \fBaio\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 287fa59..9b6560f 100644 (file)
@@ -94,6 +94,6 @@ UNIX の ストリーム I/O モデル に きちんと適合していない操
 .\" .BR mt (4),
 \fBexecve\fP(2), \fBfcntl\fP(2), \fBioctl_list\fP(2), \fBopen\fP(2), \fBsd\fP(4), \fBtty\fP(4)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 71715c1..46b47fa 100644 (file)
@@ -822,6 +822,6 @@ l l l.
 .SH 関連項目
 \fBioctl\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/ioperm.2 b/manual/LDP_man-pages/draft/man2/ioperm.2
new file mode 100644 (file)
index 0000000..1280b13
--- /dev/null
@@ -0,0 +1,94 @@
+.\" Copyright (c) 1993 Michael Haardt
+.\" (michael@moria.de)
+.\" Fri Apr  2 11:32:09 MET DST 1993
+.\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
+.\"
+.\" Modified Sat Jul 24 15:12:05 1993 by Rik Faith <faith@cs.unc.edu>
+.\" Modified Tue Aug  1 16:27    1995 by Jochen Karrer
+.\"                              <cip307@cip.physik.uni-wuerzburg.de>
+.\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified Mon Feb 15 17:28:41 CET 1999 by Andries E. Brouwer <aeb@cwi.nl>
+.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on capability requirements
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH IOPERM 2 2013\-03\-12 Linux "Linux Programmer's Manual"
+.SH 名前
+ioperm \- ポートの入出力許可を設定する
+.SH 書式
+\fB#include <unistd.h>\fP /* for libc5 */
+.br
+\fB#include <sys/io.h>\fP /* for glibc */
+.sp
+\fBint ioperm(unsigned long \fP\fIfrom\fP\fB, unsigned long \fP\fInum\fP\fB, int
+\fP\fIturn_on\fP\fB);\fP
+.SH 説明
+\fBioperm\fP()  は、引き数 \fIfrom\fP の I/O ポートアドレスから \fInum\fP
+ビット分の領域に対する、呼び出し元スレッドのアクセス許可ビットを設定する。 \fIturn_on\fP が 0
+以外の場合、指定されたビットに対応する許可が有効になる。 \fIturn_on\fP が 0 以外の場合、呼び出し元プロセスは特権
+(\fBCAP_SYS_RAWIO\fP)  を持っていなければならない。
+
+Linux 2.6.8 より前のバージョンでは、この方法で設定できるのは 0x3ff 番地までの
+I/Oポートに限られていた。これよりも大きなアドレスのポートに対しては \fBiopl\fP(2) 関数を使わなければならなかった。Linux 2.6.8
+以降では、65,536 個の I/O ポートを指定できる。
+
+アクセス権は \fBfork\fP(2)  で作成された子プロセスには継承されない。子プロセスでは、\fBfork\fP(2)
+の後で必要なアクセス権を有効にしなければならない。 \fBexecve\fP(2)  の前後でアクセス権は保存される。この機能は
+非特権プログラムにポートへのアクセス権を 与えるのに使用できる。
+
+このシステムコールはほとんど i386 アーキテクチャのためだけのものである。 その他の多くのアーキテクチャでは存在しないか、常にエラーを返す。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEINVAL\fP
+\fIfrom\fP または \fInum\fP の値が不正である。
+.TP 
+\fBEIO\fP
+(PowerPC で) このシステムコールはサポートしていない。
+.TP 
+\fBENOMEM\fP
+.\" Could not allocate I/O bitmap.
+メモリ不足。
+.TP 
+\fBEPERM\fP
+呼び出し元スレッドに十分な権限がなかった。
+.SH 準拠
+\fBioperm\fP()  は Linux 特有の関数であり、移植を意図したプログラムで 使用してはならない。
+.SH 注意
+The \fI/proc/ioports\fP file shows the I/O ports that are currently allocated
+on the system.
+
+libc5 ではシステムコールとして扱い \fI<unistd.h>\fP にプロトタイプが存在している。 glibc1
+にはプロトタイプは存在しない。 glibc2 は \fI<sys/io.h>\fP と \fI<sys/perm.h>\fP
+の両方にプロトタイプを持っている。 後者は i386 のみで利用可能なので、使用すべきではない。
+.SH 関連項目
+\fBiopl\fP(2), \fBoutb\fP(2), \fBcapabilities\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/iopl.2 b/manual/LDP_man-pages/draft/man2/iopl.2
new file mode 100644 (file)
index 0000000..3208226
--- /dev/null
@@ -0,0 +1,85 @@
+.\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu)
+.\" Portions extracted from linux/kernel/ioport.c (no copyright notice).
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified Tue Aug  1 16:47    1995 by Jochen Karrer
+.\"                              <cip307@cip.physik.uni-wuerzburg.de>
+.\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified Fri Nov 27 14:50:36 CET 1998 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on capability requirements
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH IOPL 2 2013\-03\-15 Linux "Linux Programmer's Manual"
+.SH 名前
+iopl \- I/O 特権レベルを変更する
+.SH 書式
+\fB#include <sys/io.h>\fP
+.sp
+\fBint iopl(int \fP\fIlevel\fP\fB);\fP
+.SH 説明
+\fBiopl\fP()  changes the I/O privilege level of the calling process, as
+specified by the two least significant bits in \fIlevel\fP.
+
+この関数は 8514 互換の X サーバを Linux で動作させるために必要である。 なぜならこの X サーバは 65536 個の I/O
+ポート全てへのアクセスを要求するので \fBioperm\fP(2)  関数では不十分だからである。
+
+より高い I/O 特権レベルでの動作をさせることによって I/O ポートアクセスの制限を解除することに加えて、プロセスが割り込みを
+無効にすることもできるようになる。この機能は時としてシステムの破壊を もたらすので勧められない。
+
+\fBfork\fP(2)  や \fBexec\fP(2)  を行った場合、特権は継承される。
+
+通常のプロセスの I/O 特権レベルは 0 である。
+
+このシステムコールはほとんど i386 アーキテクチャのためだけのものである。 その他の多くのアーキテクチャでは存在しないか、常にエラーを返す。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEINVAL\fP
+引き数 \fIlevel\fP が 3 より大きい。
+.TP 
+\fBENOSYS\fP
+このシステムコールは実装されていない。
+.TP 
+\fBEPERM\fP
+The calling process has insufficient privilege to call \fBiopl\fP(); the
+\fBCAP_SYS_RAWIO\fP capability is required to raise the I/O privilege level
+above its current value.
+.SH 準拠
+\fBipc\fP()  は Linux 特有であり、 移植を意図したプログラムでは 使用してはいけない。
+.SH 注意
+libc5 ではシステムコールとして扱い \fI<unistd.h>\fP にプロトタイプが存在している。 glibc1
+にはプロトタイプは存在していない。 glibc2 は \fI<sys/io.h>\fP と \fI<sys/perm.h>\fP
+の両方にプロトタイプを持っている。 後者は i386 のみで利用可能なので、使用すべきではない。
+.SH 関連項目
+\fBioperm\fP(2), \fBoutb\fP(2), \fBcapabilities\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/ioprio_set.2 b/manual/LDP_man-pages/draft/man2/ioprio_set.2
new file mode 100644 (file)
index 0000000..9ea92c8
--- /dev/null
@@ -0,0 +1,198 @@
+.\" Copyright (c) International Business Machines orp., 2006
+.\"
+.\" %%%LICENSE_START(GPLv2+_SW_3_PARA)
+.\" This program is free software; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
+.\" the GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
+.\"
+.\" HISTORY:
+.\" 2006-04-27, created by Eduardo M. Fleury <efleury@br.ibm.com>
+.\" with various additions by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH IOPRIO_SET 2 2013\-02\-12 Linux "Linux Programmer's Manual"
+.SH 名前
+ioprio_get, ioprio_set \- I/O スケジューリングクラスと優先度の設定/取得
+.SH 書式
+.nf
+\fBint ioprio_get(int \fP\fIwhich\fP\fB, int \fP\fIwho\fP\fB);\fP
+\fBint ioprio_set(int \fP\fIwhich\fP\fB, int \fP\fIwho\fP\fB, int \fP\fIioprio\fP\fB);\fP
+.fi
+
+\fINote\fP: There are no glibc wrappers for these system calls; see NOTES.
+.SH 説明
+システムコール \fBioprio_get\fP()  / \fBioprio_set\fP()  は、(1つ以上の) スレッドの I/O スケジューリングクラスと
+優先度の取得/設定を行う。
+
+\fIwhich\fP と \fIwho\fP 引き数でシステムコールの操作対象となるスレッドを指示する。 \fIwhich\fP 引き数は、 \fIwho\fP
+をどのように解釈するかを決めるもので、以下のいずれか一つを指定する。
+.TP 
+\fBIOPRIO_WHO_PROCESS\fP
+\fIwho\fP is a process ID or thread ID identifying a single process or thread.
+If \fIwho\fP is 0, then operate on the calling thread.
+.TP 
+\fBIOPRIO_WHO_PGRP\fP
+\fIwho\fP is a process group ID identifying all the members of a process
+group.  If \fIwho\fP is 0, then operate on the process group of which the
+caller is a member.
+.TP 
+\fBIOPRIO_WHO_USER\fP
+.\" FIXME who==0 needs to be documented,
+.\" See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=652443
+\fIwho\fP はユーザID であり、実 UID に一致する全プロセスが対象となる。
+.PP
+\fBioprio_get\fP()  の呼び出し時に \fIwhich\fP に \fBIOPRIO_WHO_PGRP\fP か \fBIOPRIO_WHO_USER\fP
+が指定され、 \fIwho\fP に一致するプロセスが複数あった場合、 一致するプロセス全体の中で最も高い優先度が返される。
+優先度が高いとは、より高い優先度クラスに属している (\fBIOPRIO_CLASS_RT\fP が最も高い優先度クラスで、
+\fBIOPRIO_CLASS_IDLE\fP が最も低い)、もしくは 同じ優先度クラスに属しているが優先度レベルが高い
+(優先度番号が小さい方が優先度レベルが高いことを意味する)、 ということである。
+
+\fBioprio_set\fP()  に渡す \fIioprio\fP 引き数は、対象となるプロセスに割り当てるスケジューリングクラスと
+優先度の両方を指定するビットマスクである。 \fIioprio\fP の値を組み立てたり解釈するのに、以下のマクロが利用できる。
+.TP 
+\fBIOPRIO_PRIO_VALUE(\fP\fIclass\fP\fB, \fP\fIdata\fP\fB)\fP
+スケジューリングクラス \fIclass\fP と優先度 (\fIdata\fP)  を与えると、このマクロは 2つの値を組み合わせて、 \fIioprio\fP
+値を生成し、マクロの結果として返す。
+.TP 
+\fBIOPRIO_PRIO_CLASS(\fP\fImask\fP\fB)\fP
+\fImask\fP (\fIioprio\fP 値) を与えると、このマクロは I/O クラス要素、つまり \fBIOPRIO_CLASS_RT\fP,
+\fBIOPRIO_CLASS_BE\fP, \fBIOPRIO_CLASS_IDLE\fP のいずれか一つの値を返す。
+.TP 
+\fBIOPRIO_PRIO_DATA(\fP\fImask\fP\fB)\fP
+\fImask\fP (\fIioprio\fP 値) を与えると、このマクロは優先度 (\fIdata\fP)  要素を返す。
+.PP
+スケジューリングクラスと優先度に関する詳しい情報は、 「備考」の節を参照のこと。
+
+I/O 優先度は読み出しと同期書き込み (\fBO_DIRECT\fP, \fBO_SYNC\fP)  に対応している。 I/O
+優先度は非同期書き込みには対応していない。なぜなら、 非同期書き込みはメモリ書き換えを行うプログラムの動作 (context) とは
+関係なく発行され、そのためプログラム単位の優先度は適用されないから である。
+.SH 返り値
+成功すると、 \fBioprio_get\fP()  は、 \fIwhich\fP と \fIwho\fP で指定された基準に合致した全プロセスで最も高い I/O
+優先度を持つプロセスの \fIioprio\fP 値を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。
+.PP
+成功すると、 \fBioprio_set\fP()  は 0 を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。
+.SH エラー
+.TP 
+\fBEINVAL\fP
+\fIwhich\fP か \fIioprio\fP の値が不正である。 \fIioprio\fP 用に指定可能なスケジューラクラスと優先度レベルについては
+「備考」を参照のこと。
+.TP 
+\fBEPERM\fP
+呼び出し元プロセスが、指定されたプロセスに \fIioprio\fP を割り当てるのに必要な権限を持っていない。 \fBioprio_set\fP()
+に必要な権限についての詳しい情報は「備考」の節を参照のこと。
+.TP 
+\fBESRCH\fP
+\fIwhich\fP と \fIwho\fP で指定された基準に合致するプロセスが見つからなかった。
+.SH バージョン
+これらのシステムコールはカーネル 2.6.13 以降の Linux で利用可能である。
+.SH 準拠
+これらのシステムコールは Linux 独自である。
+.SH 注意
+glibc はこれらのシステムコールに対するラッパー関数を提供していない。 \fBsyscall\fP(2)  を使って呼び出すこと。
+
+Two or more processes or threads can share an I/O context.  This will be the
+case when \fBclone\fP(2)  was called with the \fBCLONE_IO\fP flag.  However, by
+default, the distinct threads of a process will \fBnot\fP share the same I/O
+context.  This means that if you want to change the I/O priority of all
+threads in a process, you may need to call \fBioprio_set\fP()  on each of the
+threads.  The thread ID that you would need for this operation is the one
+that is returned by \fBgettid\fP(2)  or \fBclone\fP(2).
+
+これらのシステムコールは、I/O 優先度に対応した I/O スケジューラと 組み合わせて使用された場合にのみ効果を持つ。 カーネル 2.6.17
+では、この条件を満たすスケジューラは Completely Fair Queuing (CFQ) I/O スケジューラだけである。
+.SS "I/O スケジューラの選択"
+I/O スケジューラの選択はデバイス単位に行われ、その選択は スペシャルファイル
+\fI/sys/block/<device>/queue/scheduler\fP 経由で行われる。
+
+現在の I/O スケジューラは \fI/sys\fP ファイルシステム経由で参照できる。例えば、以下のコマンドを実行すると、
+現在カーネルでロードされているスケジューラの全リストが表示される。
+.sp
+.RS
+.nf
+$\fB cat /sys/block/hda/queue/scheduler\fP
+noop anticipatory deadline [cfq]
+.fi
+.RE
+.sp
+括弧で囲まれたスケジューラがそのデバイス (上の例では \fIhda\fP)  について実際に使用されているスケジューラである。
+別のスケジューラを設定するには、このファイルに新しいスケジューラ名を 書き込めばよい。例えば、以下のコマンドを実行すると、デバイス \fIhda\fP
+のスケジューラとして \fIcfq\fP が設定される。
+.sp
+.RS
+.nf
+$\fB su\fP
+Password:
+#\fB echo cfq > /sys/block/hda/queue/scheduler\fP
+.fi
+.RE
+.SS "Completely Fair Queuing (CFQ) I/O スケジューラ"
+バージョン 3 (別名 CFQ Time Sliced) 以降、 CPU スケジューリングと同様の I/O nice レベルが CFQ
+に実装されている。 これらの nice レベルは 3つのスケジューリングクラスに分類でき、 各スケジューリングクラスにつき
+1つ以上の優先度レベルが定義されている。
+.TP 
+\fBIOPRIO_CLASS_RT\fP (1)
+これはリアルタイム I/O クラスである。 このスケジューリングクラスには他のクラスよりも高い優先度が与えられる。
+このクラスのプロセスには、常にディスクへのアクセスが優先して 割り当てられる。そのため、この I/O クラスを使う際には、 たった一つの リアルタイム
+I/O クラスのプロセスにより システム全体のディスクアクセスができなくなってしまうことがある という点に、注意を払う必要がある。 このクラスには、8
+段階の class data (優先度レベル) がある。 この値は、そのプロセスが 1回のディスクアクセスにどれだけの
+時間が必要かを正確に決めるためのものである。 最高のリアルタイム優先度レベルは 0 で、最低は 7 である。
+将来的には、優先度レベルは、希望するデータレートを渡すなど、 より直接的に性能条件を反映できるように変更されるかもしれない。
+.TP 
+\fBIOPRIO_CLASS_BE\fP (2)
+これは ベストエフォート・スケジューリングクラスである。 このクラスは、特定の I/O 優先度を設定していないプロセスの デフォルト値である。
+class data (優先度レベル) により、そのプロセスがどの程度の I/O 帯域を得られるかが決定される。
+ベストエフォート・優先度レベルは、CPU の nice 値 (\fBgetpriority\fP(2)  参照) と同様のものである。
+優先度レベルは、ベストエフォート・スケジューリングクラスの中で 他のプロセスとの相対的な優先度を決定する。 優先度レベルの値の範囲は 0 (最高) から
+7 (最低) である。
+.TP 
+\fBIOPRIO_CLASS_IDLE\fP (3)
+これは idle スケジューリングクラスである。 このレベルで動作するプロセスは他にディスクアクセスをしようとする プロセスがない場合にのみ I/O
+時間を取得する。 idle クラスには class data (優先度) は用意されていない。 プロセスにこの優先度を割り当てる際には注意が必要である。
+なぜなら、優先度の高いプロセスが常にディスクにアクセスしている場合には ディスクにアクセスできなくなる可能性があるからだ。
+.PP
+CFQ I/O スケジューラの更なる情報とサンプルプログラムについては \fIDocumentation/block/ioprio.txt\fP
+を参照のこと。
+.SS "I/O 優先度の設定に必要な許可"
+プロセスの優先度を変更する許可が得られるかどうかは 以下の 2つの条件に基いて決定される。
+.TP 
+\fBプロセスの所有権\fP
+非特権プロセスは、プロセスの実 UID が呼び出し元プロセスの実 UID もしくは 実効 UID と一致するプロセスの I/O 優先度のみを設定できる。
+\fBCAP_SYS_NICE\fP ケーパビリティを持つプロセスは、どのプロセスの優先度でも変更できる。
+.TP 
+\fBどの優先度に設定しようとしているか\fP
+非常に高い優先度 (\fBIOPRIO_CLASS_RT\fP)  を設定しようとする場合、 \fBCAP_SYS_ADMIN\fP ケーパビリティが必要である。
+カーネル 2.6.24 以前では、非常に低い優先度 (\fBIOPRIO_CLASS_IDLE\fP)  を設定するためにも \fBCAP_SYS_ADMIN\fP
+ケーパビリティが必要であったが、 Linux 2.6.25 以降ではもはや必要なくなった。
+.PP
+\fBioprio_set\fP()  はこの両方のルールに従い、条件を満たさない場合、エラー \fBEPERM\fP で失敗する。
+.SH バグ
+.\" 6 May 07: Bug report raised:
+.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=4464
+.\" Ulrich Drepper replied that he wasn't going to add these
+.\" to glibc.
+glibc は、このページに記載された関数プロトタイプやマクロを定義する 適切なヘッダファイルをまだ提供していない。 必要な定義については
+\fIlinux/ioprio.h\fP を見ればよい。
+.SH 関連項目
+\fBionice\fP(1), \fBgetpriority\fP(2), \fBopen\fP(2), \fBcapabilities\fP(7)
+
+Linux カーネルソース内の \fIDocumentation/block/ioprio.txt\fP
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index ff05adb..57423bb 100644 (file)
@@ -52,6 +52,6 @@ ipc \- System V IPC システムコール
 \fBsemget\fP(2), \fBsemop\fP(2), \fBshmat\fP(2), \fBshmctl\fP(2), \fBshmdt\fP(2),
 \fBshmget\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/kexec_load.2 b/manual/LDP_man-pages/draft/man2/kexec_load.2
new file mode 100644 (file)
index 0000000..669a71a
--- /dev/null
@@ -0,0 +1,125 @@
+.\" Copyright (C) 2010 Intel Corporation
+.\" Author: Andi Kleen
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH KEXEC_LOAD 2 2012\-07\-13 Linux "Linux Programmer's Manual"
+.SH 名前
+kexec_load \- 新しいカーネルを後で実行するためにロードする
+.SH 書式
+\fB#include <linux/kexec.h>\fP
+.br
+\fBlong kexec_load(unsigned long \fP\fIentry\fP\fB, unsigned long
+\fP\fInr_segments\fP\fB,\fP
+.br
+\fB struct kexec_segment *\fP\fIsegments\fP\fB, unsigned long \fP\fIflags\fP\fB);\fP
+
+\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。
+.SH 説明
+\fBkexec_load\fP() システムコールは、新しいカーネルをロードし、
+その後の \fBreboot\fP(2) で実行できるようにする。
+.PP
+\fIflags\fP 引き数はマスクビットで、
+その上位ビットでシステムコールの呼び出しの動作を制御する。
+\fIflags\fP には以下の値を指定できる。
+.TP 
+\fBKEXEC_ON_CRASH\fP (Linux 2.6.13 以降)
+.\" FIXME figure out how this is really used
+システムのクラッシュ時に、新しいカーネルを自動的に実行する。
+.TP 
+\fBKEXEC_PRESERVE_CONTEXT\fP (since Linux 2.6.27)
+Preserve the system hardware and software states before executing the new
+kernel.  This could be used for system suspend.  This flag is available only
+if the kernel was configured with \fBCONFIG_KEXEC_JUMP\fP, and is effective
+only if \fInr_segments\fP is greater than 0.
+.PP
+\fIflags\fP の下位ビットには、実行されるカーネルのアーキテクチャが入る。
+現在のアーキテクチャを使うことを意味する定数 \fBKEXEC_ARCH_DEFAULT\fP か、
+アーキテクチャ定数 \fBKEXEC_ARCH_386\fP, \fBKEXEC_ARCH_X86_64\fP,
+\fBKEXEC_ARCH_PPC\fP, \fBKEXEC_ARCH_PPC64\fP, \fBKEXEC_ARCH_IA_64\fP,
+\fBKEXEC_ARCH_ARM\fP, \fBKEXEC_ARCH_S390\fP, \fBKEXEC_ARCH_SH\fP,
+\fBKEXEC_ARCH_MIPS\fP, \fBKEXEC_ARCH_MIPS_LE\fP の
+いずれか一つを (OR で) 指定する。指定するアーキテクチャは、
+システムの CPU で実行可能なものでなければならない。
+
+\fIentry\fP 引き数は、カーネルイメージの物理エントリーアドレスである。
+\fInr_segments\fP 引き数は、 \fIsegments\fP ポインタが指すセグメントの
+数である。 \fIsegments\fP 引き数は \fIkexec_segment\fP 構造体の配列で、
+この構造体によりカーネルの配置が定義される。
+.in +4n
+.nf
+
+struct kexec_segment {
+    void   *buf;        /* Buffer in user space */
+    size_t  bufsz;      /* Buffer length in user space */
+    void   *mem;        /* Physical address of kernel */
+    size_t  memsz;      /* Physical address length */
+};
+.fi
+.in
+.PP
+.\" FIXME elaborate on the following:
+\fIsegments\fP で定義されたカーネルイメージは、
+呼び出したプロセスから予約済みメモリにコピーされる。
+.SH 返り値
+成功すると、 \fBkexec_load\fP は 0 を返す。
+エラーの場合、 \-1 が返り、 \fIerrno\fP にエラーを示す値が設定される。
+.SH エラー
+.TP 
+\fBEBUSY\fP
+別のクラッシュカーネルがすでにロードされているか、
+クラッシュカーネルがすでに使用されている。
+.TP 
+\fBEINVAL\fP
+.\" KEXEC_SEGMENT_MAX == 16
+\fIflags\fP が無効である。 \fInr_segments\fP が大きすぎる。
+.TP 
+\fBEPERM\fP
+呼び出し側が \fBCAP_SYS_BOOT\fP ケーパビリティを持っていない。
+.SH バージョン
+\fBkexec_load\fP() システムコールは Linux 2.6.13 で初めて登場した。
+.SH 準拠
+このシステムコールは Linux 固有である。
+.SH 注意
+現在のところ、 \fBkexec_load\fP() は glibc ではサポートされていない。
+\fBsyscall\fP(2) を使って呼び出すこと。
+.PP
+.\" FIXME Andi submitted a patch for this.
+.\" Check if it got accepted later.
+必要な定数は Linux カーネルのソースファイル \fIlinux/kexec.h\fP で定義されている
+が、現在のところ glibc には公開されていない。
+そのため、これらの定数は手動で定義しなければならない。
+
+このシステムコールは、カーネルの設定で \fBCONFIG_KEXEC\fP が有効になって
+いる場合にのみ利用できる。
+.SH 関連項目
+\fBreboot\fP(2), \fBsyscall\fP(2)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8f4bdc7..14391d5 100644 (file)
@@ -127,6 +127,6 @@ Linux では、特権のないプロセスが他のプロセスにシグナル
 \fB_exit\fP(2), \fBkillpg\fP(2), \fBsignal\fP(2), \fBtkill\fP(2), \fBexit\fP(3),
 \fBsigqueue\fP(3), \fBcredentials\fP(7), \fBcapabilities\fP(7), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1546639..a7e8e42 100644 (file)
@@ -100,6 +100,6 @@ Linux では、 \fBkillpg\fP()  はライブラリ関数として実装されて
 \fBgetpgrp\fP(2), \fBkill\fP(2), \fBsignal\fP(2), \fBcredentials\fP(7),
 \fBcapabilities\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/link.2 b/manual/LDP_man-pages/draft/man2/link.2
new file mode 100644 (file)
index 0000000..f709161
--- /dev/null
@@ -0,0 +1,137 @@
+.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
+.\"             and Copyright (C) 1993 Michael Haardt, Ian Jackson.
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified 1993-07-23 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 1994-08-21 by Michael Haardt
+.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Modified 2005-04-04, as per suggestion by Michael Hardt for rename.2
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH LINK 2 2013\-01\-27 Linux "Linux Programmer's Manual"
+.SH 名前
+link \- ファイルの新しい名前を作成する
+.SH 書式
+\fB#include <unistd.h>\fP
+.sp
+\fBint link(const char *\fP\fIoldpath\fP\fB, const char *\fP\fInewpath\fP\fB);\fP
+.SH 説明
+\fBlink\fP()  は存在するファイルへの新しいリンク (link)  (ハードリンク (hard link) ともいう) を作成する。
+
+\fInewpath\fP が存在する場合には上書きは\fIされない\fP。
+
+この新しい名前は全ての操作において古い名前と完全に同じように使用される; 両方の名前は同じファイルを参照しており (それで同じ許可
+(permission) や所有者 (ownership) となるので)、 どちらの名前が本来のものであるか判別できない。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEACCES\fP
+\fInewpath\fP を含んでいるディレクトリへの書き込みが許されていないか、 \fIoldpath\fP または \fInewpath\fP
+へのディレクトリのどれかに検索許可がない (\fBpath_resolution\fP(7)  を参照)。
+.TP 
+\fBEDQUOT\fP
+The user's quota of disk blocks on the file system has been exhausted.
+.TP 
+\fBEEXIST\fP
+\fInewpath\fP が既に存在する。
+.TP 
+\fBEFAULT\fP
+\fIoldpath\fP や \fInewpath\fP がアクセス可能なアドレス空間の外を指している。
+.TP 
+\fBEIO\fP
+I/O エラーが発生した。
+.TP 
+\fBELOOP\fP
+\fIoldpath\fP または \fInewpath\fP を解決する際に遭遇したシンボリックリンクが多過ぎる。
+.TP 
+\fBEMLINK\fP
+\fIoldpath\fP によって参照されるファイルは 既に最大数までのリンクを持っている。
+.TP 
+\fBENAMETOOLONG\fP
+\fIoldpath\fP または \fInewpath\fP が長過ぎる。
+.TP 
+\fBENOENT\fP
+\fIoldpath\fP または \fInewpath\fP のディレクトリ部分が存在しないか、 壊れた(dangling)シンボリックリンクである。
+.TP 
+\fBENOMEM\fP
+十分なカーネルメモリーがない。
+.TP 
+\fBENOSPC\fP
+そのファイルを含んでいるデバイスに新しいディレクトリエントリを 作成するための空きがない。
+.TP 
+\fBENOTDIR\fP
+\fIoldpath\fP または \fInewpath\fP のディレクトリ部分が、実際には、ディレクトリでない。
+.TP 
+\fBEPERM\fP
+\fIoldpath\fP がディレクトリである。
+.TP 
+\fBEPERM\fP
+\fIoldpath\fP と \fInewpath\fP を含んでいるファイルシステムがハードリンクをサポートしていない。
+.TP 
+\fBEPERM\fP (Linux 3.6 以降)
+The caller does not have permission to create a hard link to this file (see
+the description of \fI/proc/sys/fs/protected_hardlink\fP in \fBproc\fP(5)).
+.TP 
+\fBEROFS\fP
+ファイルが読み込み専用のファイルシステムに存在する。
+.TP 
+\fBEXDEV\fP
+\fIoldpath\fP と \fInewpath\fP が同じマウントされたファイルシステムに存在しない。 (Linux は 1
+つのファイルシステムを複数のマウント位置に マウントすることを許可している。 しかし \fBlink\fP()  は、たとえ同じファイルシステムであっても、
+別々のマウント位置を跨いでは動作しない。)
+.SH 準拠
+.\" SVr4 documents additional ENOLINK and
+.\" EMULTIHOP error conditions; POSIX.1 does not document ELOOP.
+.\" X/OPEN does not document EFAULT, ENOMEM or EIO.
+SVr4, 4.3BSD, POSIX.1\-2001 (但し「注意」を参照)。
+.SH 注意
+\fBlink\fP()  でファイルシステムを超えてハードリンクを作成することはできない。 このような場合は \fBsymlink\fP(2)  を使用すること。
+
+.\" more precisely: since kernel 1.3.56
+.\" For example, the default Solaris compilation environment
+.\" behaves like Linux, and contributors to a March 2005
+.\" thread in the Austin mailing list reported that some
+.\" other (System V) implementations did/do the same -- MTK, Apr 05
+POSIX.1\-2001 では、 \fIoldpath\fP がシンボリックリンクである場合、 \fBlink\fP()  は \fIoldpath\fP
+の参照を解決すべきであると記述されている。 しかし、カーネル 2.0 以降の Linux ではそのようになっていない。 \fIoldpath\fP
+がシンボリックリンクである場合、 \fInewpath\fP は同じシンボリックリンクファイルへの (ハード) リンクとして作成される (つまり
+\fInewpath\fP は \fIoldpath\fP が参照していた同じファイルへのシンボリックリンクになる)。 他のいくつかの実装でも Linux
+と同じように動作する。 POSIX.1\-2008 では \fBlink\fP()  の仕様が変更され、 \fIoldpath\fP
+がシンボリックリンクの場合にシンボリックリンクの参照を 解決するかどうかは実装依存となった。
+リンク作成時のシンボリックリンクの扱いについての詳細な制御に 関しては \fBlinkat\fP(2)  を参照のこと。
+.SH バグ
+NFS ファイルシステムでは、NFS サーバーがリンクを作成した後に、 それを伝える前に死んだ場合には返り値が不正な場合がある。
+リンクが作成できたかどうか見つけるためには \fBstat\fP(2)  を使用すること。
+.SH 関連項目
+\fBln\fP(1), \fBlinkat\fP(2), \fBopen\fP(2), \fBrename\fP(2), \fBstat\fP(2), \fBsymlink\fP(2),
+\fBunlink\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index cc92a4c..1dfb260 100644 (file)
@@ -98,6 +98,6 @@ POSIX.1\-2008.
 .SH 関連項目
 \fBlink\fP(2), \fBopenat\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2da6ce3..7704642 100644 (file)
@@ -118,6 +118,6 @@ syncookie が有効になっている場合、 論理的な最大長は存在せ
 .SH 関連項目
 \fBaccept\fP(2), \fBbind\fP(2), \fBconnect\fP(2), \fBsocket\fP(2), \fBsocket\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ff491e5..526669b 100644 (file)
@@ -27,7 +27,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH LISTXATTR 2 2013\-01\-27 Linux "Linux Programmer's Manual"
+.TH LISTXATTR 2 2013\-04\-09 Linux "Linux Programmer's Manual"
 .SH 名前
 listxattr, llistxattr, flistxattr \- 拡張属性の名前リストを得る
 .SH 書式
@@ -46,9 +46,13 @@ listxattr, llistxattr, flistxattr \- 拡張属性の名前リストを得る
 これらは、システム上のすべての inode に関連付けられた通常の属性 (\fBstat\fP(2)  が返すデータ) を拡張するものである。
 拡張属性のコンセプトは \fBattr\fP(5)  に書かれている。
 .PP
-\fBlistxattr\fP()  は、ファイルシステム内の指定された \fIpath\fP に対応する拡張属性の名前リストを取得する。 リストは名前の集合で、
-NULL 終端された文字列が連続して並んでいる。 呼び出したプロセスがアクセスする権限のない拡張属性の名前は、 リストに含まれない。拡張属性の名前の
-\fIlist\fP の長さが返される。
+\fBlistxattr\fP()  retrieves the list of extended attribute names associated
+with the given \fIpath\fP in the file system.  The retrieved list is placed in
+\fIlist\fP, a caller\-allocated buffer whose size (in bytes) is specified in the
+argument \fIsize\fP.  The list is the set of (null\-terminated) names, one after
+the other.  Names of extended attributes to which the calling process does
+not have access may be omitted from the list.  The length of the attribute
+name \fIlist\fP is returned.
 .PP
 \fBllistxattr\fP()  は \fBlistxattr\fP()  と同じだが、シンボリックリンクの場合に、リンクが参照しているファイル
 ではなく、リンクそのものの拡張属性の名前リストを取得する点だけが異なる。
@@ -108,6 +112,6 @@ system.posix_acl_access\e0system.posix_acl_default\e0
 \fBgetfattr\fP(1), \fBsetfattr\fP(1), \fBgetxattr\fP(2), \fBopen\fP(2),
 \fBremovexattr\fP(2), \fBsetxattr\fP(2), \fBstat\fP(2), \fBattr\fP(5), \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8261b93..db49be9 100644 (file)
@@ -68,6 +68,6 @@ glibc はこのシステムコールに対するラッパー関数を提供し
 .SH 関連項目
 \fBlseek\fP(2), \fBlseek64\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 810823f..0f10d16 100644 (file)
@@ -74,6 +74,6 @@ Linux 2.5.43 以降で利用できる。 エラー \fBENAMETOOLONG\fP を返す
 
 指定されたディレクトリ・エントリが削除されていた場合、返されるパス名の最後に " (deleted)" という文字列が付加されることがある。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/lseek.2 b/manual/LDP_man-pages/draft/man2/lseek.2
new file mode 100644 (file)
index 0000000..49c4d6a
--- /dev/null
@@ -0,0 +1,180 @@
+.\" t
+.\" Copyright (c) 1980, 1991 Regents of the University of California.
+.\" and Copyright (c) 2011, Michael Kerrisk <mtk.manpages@gmail.com>
+.\" All rights reserved.
+.\"
+.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\" %%%LICENSE_END
+.\"
+.\"     @(#)lseek.2    6.5 (Berkeley) 3/10/91
+.\"
+.\" Modified 1993-07-23 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 1995-06-10 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified 1996-10-31 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 1998-01-17 by Michael Haardt
+.\"   <michael@cantor.informatik.rwth-aachen.de>
+.\" Modified 2001-09-24 by Michael Haardt <michael@moria.de>
+.\" Modified 2003-08-21 by Andries Brouwer <aeb@cwi.nl>
+.\" 2011-09-18, mtk, Added SEEK_DATA + SEEK_HOLE
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH LSEEK 2 2013\-03\-27 Linux "Linux Programmer's Manual"
+.SH 名前
+lseek \- ファイルの読み書きオフセットの位置を変える
+.SH 書式
+\fB#include <sys/types.h>\fP
+.br
+\fB#include <unistd.h>\fP
+.sp
+\fBoff_t lseek(int \fP\fIfd\fP\fB, off_t \fP\fIoffset\fP\fB, int \fP\fIwhence\fP\fB);\fP
+.SH 説明
+\fBlseek\fP()  関数は、ファイルディスクリプタ (descriptor)  \fIfd\fP に対応するオープンされたファイルのオフセットを、
+\fIwhence\fP に基づき \fIoffset\fP 引き数の位置へ以下のように変更する:
+.TP 
+\fBSEEK_SET\fP
+オフセットは \fIoffset\fP バイトに設定される。
+.TP 
+\fBSEEK_CUR\fP
+オフセットは現在位置に \fIoffset\fP バイトを足した位置になる。
+.TP 
+\fBSEEK_END\fP
+オフセットはファイルのサイズに \fIoffset\fP バイトを足した位置になる。
+.PP
+\fBlseek\fP()  関数は、オフセットをファイルの末尾を越えた位置に設定できる (但し、これによりファイルのサイズが変わらない)。
+もしデータがこのオフセット位置以降に書き込まれた場合、 間の空隙の部分 ("穴 (hole)") の読み出しがあると、
+実際にそこにデータを書き込まれるまでは NULL バイト (\(aq\e0\(aq) の列が返される。
+.SS "Seeking file data and holes"
+Linux バージョン 3.1 以降では、
+\fIwhence\fP に以下の値も指定することができる。
+.TP 
+\fBSEEK_DATA\fP
+Adjust the file offset to the next location in the file greater than or
+equal to \fIoffset\fP containing data.  If \fIoffset\fP points to data, then the
+file offset is set to \fIoffset\fP.
+.TP 
+\fBSEEK_HOLE\fP
+Adjust the file offset to the next hole in the file greater than or equal to
+\fIoffset\fP.  If \fIoffset\fP points into the middle of a hole, then the file
+offset is set to \fIoffset\fP.  If there is no hole past \fIoffset\fP, then the
+file offset is adjusted to the end of the file (i.e., there is an implicit
+hole at the end of any file).
+.PP
+In both of the above cases, \fBlseek\fP()  fails if \fIoffset\fP points past the
+end of the file.
+
+These operations allow applications to map holes in a sparsely allocated
+file.  This can be useful for applications such as file backup tools, which
+can save space when creating backups and preserve holes, if they have a
+mechanism for discovering holes.
+
+.\" https://lkml.org/lkml/2011/4/22/79
+.\" http://lwn.net/Articles/440255/
+.\" http://blogs.oracle.com/bonwick/entry/seek_hole_and_seek_data
+For the purposes of these operations, a hole is a sequence of zeros that
+(normally) has not been allocated in the underlying file storage.  However,
+a file system is not obliged to report holes, so these operations are not a
+guaranteed mechanism for mapping the storage space actually allocated to a
+file.  (Furthermore, a sequence of zeros that actually has been written to
+the underlying storage may not be reported as a hole.)  In the simplest
+implementation, a file system can support the operations by making
+\fBSEEK_HOLE\fP always return the offset of the end of the file, and making
+\fBSEEK_DATA\fP always return \fIoffset\fP (i.e., even if the location referred to
+by \fIoffset\fP is a hole, it can be considered to consist of data that is a
+sequence of zeros).
+
+The \fB_GNU_SOURCE\fP feature test macro must be defined in order to obtain the
+definitions of \fBSEEK_DATA\fP and \fBSEEK_HOLE\fP from \fI<unistd.h>\fP.
+.SH 返り値
+成功した場合、 \fBlseek\fP()  は結果のファイル位置をファイルの先頭からのバイト数で返す。 エラーの場合、値 \fI(off_t)\ \-1\fP
+が返され、 \fIerrno\fP にエラーが指示される。
+.SH エラー
+.TP 
+\fBEBADF\fP
+\fIfd\fP がオープンされたファイルディスクリプタでない。
+.TP 
+\fBEINVAL\fP
+.\" Some systems may allow negative offsets for character devices
+.\" and/or for remote file systems.
+\fIwhence\fP が有効な値ではない。または、seek の結果、ファイルオフセットが負に
+なってしまうか、 seek 可能なデバイスの末尾を越えてしまう。
+.TP 
+\fBEOVERFLOW\fP
+.\" HP-UX 11 says EINVAL for this case (but POSIX.1 says EOVERFLOW)
+結果のファイルオフセットを \fIoff_t\fP 型で表現することができない。
+.TP 
+\fBESPIPE\fP
+\fIfd\fP がパイプ、ソケット、FIFO を参照している。
+.TP 
+\fBENXIO\fP
+\fIwhence\fP が \fBSEEK_DATA\fP か \fBSEEK_HOLE\fP で、
+現在のファイルオフセットがファイルの末尾を超えた位置である。
+.SH 準拠
+SVr4, 4.3BSD, POSIX.1\-2001.
+
+.\" FIXME . Review http://austingroupbugs.net/view.php?id=415 in the future
+\fBSEEK_DATA\fP and \fBSEEK_HOLE\fP are nonstandard extensions also present in
+Solaris, FreeBSD, and DragonFly BSD; they are proposed for inclusion in the
+next POSIX revision (Issue 8).
+.SH 注意
+いくつかのデバイスでは seek ができない。 POSIX はどのデバイスが \fBlseek\fP()  に対応すべきかは規定していない。
+
+.\" Other systems return the number of written characters,
+.\" using SEEK_SET to set the counter. (Of written characters.)
+Linux では、端末 (terminal) デバイスに \fBlseek\fP() を使用すると \fBESPIPE\fP が返る。
+
+古いコードを変換する時は \fIwhence\fP の値を以下のマクロに置き換えること:
+.TS
+c c
+l l.
+old    new
+0      SEEK_SET
+1      SEEK_CUR
+2      SEEK_END
+L_SET  SEEK_SET
+L_INCR SEEK_CUR
+L_XTND SEEK_END
+.TE
+.\" .PP
+.\" SVr1-3 returns \fIlong\fP instead of \fIoff_t\fP,
+.\" (ancient) BSD returns \fIint\fP.
+.PP
+\fBdup\fP(2)  や \fBfork\fP(2)  で作成されたファイルディスクリプタは、現在のファイル位置ポインタ (current file
+position pointer) を共有しているので、 このようなファイルで移動を行うと競合状態を引き起こす可能性がある。
+.SH 関連項目
+\fBdup\fP(2), \fBfork\fP(2), \fBopen\fP(2), \fBfseek\fP(3), \fBlseek64\fP(3),
+\fBposix_fallocate\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/madvise.2 b/manual/LDP_man-pages/draft/man2/madvise.2
new file mode 100644 (file)
index 0000000..ab88e5c
--- /dev/null
@@ -0,0 +1,256 @@
+.\" Copyright (C) 2001 David Gómez <davidge@jazzfree.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Based on comments from mm/filemap.c. Last modified on 10-06-2001
+.\" Modified, 25 Feb 2002, Michael Kerrisk, <mtk.manpages@gmail.com>
+.\"    Added notes on MADV_DONTNEED
+.\" 2010-06-19, mtk, Added documentation of MADV_MERGEABLE and
+.\"     MADV_UNMERGEABLE
+.\" 2010-06-15, Andi Kleen, Add documentation of MADV_HWPOISON.
+.\" 2010-06-19, Andi Kleen, Add documentation of MADV_SOFT_OFFLINE.
+.\" 2011-09-18, Doug Goldstein <cardoe@cardoe.com>
+.\"     Document MADV_HUGEPAGE and MADV_NOHUGEPAGE
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MADVISE 2 2012\-04\-28 Linux "Linux Programmer's Manual"
+.SH 名前
+madvise \- メモリ利用に関するアドバイスを与える
+.SH 書式
+\fB#include <sys/mman.h>\fP
+.sp
+\fBint madvise(void *\fP\fIaddr\fP\fB, size_t \fP\fIlength\fP\fB, int \fP\fIadvice\fP\fB);\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBmadvise\fP(): _BSD_SOURCE
+.SH 説明
+\fBmadvise\fP()  システムコールは、アドレス \fIaddr\fP からはじまる \fIlength\fP
+バイトのメモリブロックのページング入出力をどう扱えば良いか、 カーネルにアドバイスする。 これを用いると、 アプリケーションからカーネルに、
+マップされたメモリや共有メモリをどのように扱ってほしいか伝えることができ、 カーネルはそれに応じて先読みやキャッシュなどの適切な手法を選択できる。
+このコールはアプリケーションの動作そのものには影響しない (\fBMADV_DONTNEED\fP の場合は別) が、 性能には影響しうる。
+なおこのアドバイスを受け入れるかどうかはカーネルに任される。
+.LP
+アドバイスは引き数 \fIadvice\fP によって与える。以下のいずれかを指定できる。
+.TP 
+\fBMADV_NORMAL\fP
+特別な扱いは行わない。これがデフォルトである。
+.TP 
+\fBMADV_RANDOM\fP
+ページ参照はランダムな順序で行われそうだ。 (したがって、先読みはあまり効果がなさそうだ。)
+.TP 
+\fBMADV_SEQUENTIAL\fP
+ページ参照はシーケンシャルな順序で行われそうだ。 (したがって与えた範囲のページは積極的に先読みしておくと良いだろう。
+またアクセスが終わったら速やかに解放して良い。)
+.TP 
+\fBMADV_WILLNEED\fP
+近い将来にアクセスされそうだ。 (したがってこれらのページを今のうちに先読みしておくといいだろう。)
+.TP 
+\fBMADV_DONTNEED\fP
+しばらくアクセスはなさそうだ。 (現時点でアプリケーションは与えた範囲の処理を終えている。 したがってカーネルはこれに関連するリソースを解放して良い。)
+これ以降この範囲のページへのアクセスがあると、 成功はするが、メモリの内容をマップ元のファイルからロードし直すことになる (\fBmmap\fP(2)
+を見よ) か、 または元ファイルがないマップページでは アクセスがあったときに 0 埋めが行われることになる。
+.TP 
+\fBMADV_REMOVE\fP (Linux 2.6.16 以降)
+.\" 2.6.18-rc5
+.\" Databases want to use this feature to drop a section of their
+.\" bufferpool (shared memory segments) - without writing back to
+.\" disk/swap space.  This feature is also useful for supporting
+.\" hot-plug memory on UML.
+指定された範囲のページと関連するバッキングストアを解放する。 現在のところ、 shmfs/tmpfs だけがこれに対応している。
+他のファイルシステムでは \fBENOSYS\fP が返される。
+.TP 
+\fBMADV_DONTFORK\fP (Linux 2.6.16 以降)
+.\" See http://lwn.net/Articles/171941/
+.\" [PATCH] madvise MADV_DONTFORK/MADV_DOFORK
+.\" Currently, copy-on-write may change the physical address of
+.\" a page even if the user requested that the page is pinned in
+.\" memory (either by mlock or by get_user_pages).  This happens
+.\" if the process forks meanwhile, and the parent writes to that
+.\" page.  As a result, the page is orphaned: in case of
+.\" get_user_pages, the application will never see any data hardware
+.\" DMA's into this page after the COW.  In case of mlock'd memory,
+.\" the parent is not getting the realtime/security benefits of mlock.
+.\"
+.\" In particular, this affects the Infiniband modules which do DMA from
+.\" and into user pages all the time.
+.\"
+.\" This patch adds madvise options to control whether memory range is
+.\" inherited across fork. Useful e.g. for when hardware is doing DMA
+.\" from/into these pages.  Could also be useful to an application
+.\" wanting to speed up its forks by cutting large areas out of
+.\" consideration.
+.\"
+.\" SEE ALSO: http://lwn.net/Articles/171941/
+.\" "Tweaks to madvise() and posix_fadvise()", 14 Feb 2006
+\fBfork\fP(2)  が行われた後、指定された範囲のページを子プロセスが利用できないようにする。 この機能は、書き込み時コピー
+(copy\-on\-write) 方式で、 \fBfork\fP(2)  の後で親プロセスがページに書き込みを行った場合に
+ページの物理位置が変化しないようにするのに有効である (ページの再配置はハードウェアがそのページに DMA 転送を行うような場合に
+問題を起こすことがある)。
+.TP 
+\fBMADV_DOFORK\fP (Linux 2.6.16 以降)
+\fBMADV_DONTFORK\fP の影響を取り消し、デフォルトの動作に戻す。 つまり、 \fBfork\fP(2)
+の前後でマッピングは継承されるようになる。
+.TP 
+\fBMADV_HWPOISON\fP (Linux 2.6.32 以降)
+Poison a page and handle it like a hardware memory corruption.  This
+operation is available only for privileged (\fBCAP_SYS_ADMIN\fP)  processes.
+This operation may result in the calling process receiving a \fBSIGBUS\fP and
+the page being unmapped.  This feature is intended for testing of memory
+error\-handling code; it is available only if the kernel was configured with
+\fBCONFIG_MEMORY_FAILURE\fP.
+.TP 
+\fBMADV_SOFT_OFFLINE\fP (Linux 2.6.33 以降)
+Soft offline the pages in the range specified by \fIaddr\fP and \fIlength\fP.  The
+memory of each page in the specified range is preserved (i.e., when next
+accessed, the same content will be visible, but in a new physical page
+frame), and the original page is offlined (i.e., no longer used, and taken
+out of normal memory management).  The effect of the \fBMADV_SOFT_OFFLINE\fP
+operation is invisible to (i.e., does not change the semantics of)  the
+calling process.  This feature is intended for testing of memory
+error\-handling code; it is available only if the kernel was configured with
+\fBCONFIG_MEMORY_FAILURE\fP.
+.TP 
+\fBMADV_MERGEABLE\fP (Linux 2.6.32 以降)
+Enable Kernel Samepage Merging (KSM) for the pages in the range specified by
+\fIaddr\fP and \fIlength\fP.  The kernel regularly scans those areas of user
+memory that have been marked as mergeable, looking for pages with identical
+content.  These are replaced by a single write\-protected page (which is
+automatically copied if a process later wants to update the content of the
+page).  KSM merges only private anonymous pages (see \fBmmap\fP(2)).  The KSM
+feature is intended for applications that generate many instances of the
+same data (e.g., virtualization systems such as KVM).  It can consume a lot
+of processing power; use with care.  See the Linux kernel source file
+\fIDocumentation/vm/ksm.txt\fP for more details.  The \fBMADV_MERGEABLE\fP and
+\fBMADV_UNMERGEABLE\fP operations are available only if the kernel was
+configured with \fBCONFIG_KSM\fP.
+.TP 
+\fBMADV_UNMERGEABLE\fP (Linux 2.6.32 以降)
+Undo the effect of an earlier \fBMADV_MERGEABLE\fP operation on the specified
+address range; KSM unmerges whatever pages it had merged in the address
+range specified by \fIaddr\fP and \fIlength\fP.
+.TP 
+\fBMADV_HUGEPAGE\fP (Linux 2.6.38 以降)
+.\" http://lwn.net/Articles/358904/
+.\" https://lwn.net/Articles/423584/
+Enables Transparent Huge Pages (THP) for pages in the range specified by
+\fIaddr\fP and \fIlength\fP.  Currently, Transparent Huge Pages work only with
+private anonymous pages (see \fBmmap\fP(2)).  The kernel will regularly scan
+the areas marked as huge page candidates to replace them with huge pages.
+The kernel will also allocate huge pages directly when the region is
+naturally aligned to the huge page size (see \fBposix_memalign\fP(2)).  This
+feature is primarily aimed at applications that use large mappings of data
+and access large regions of that memory at a time (e.g., virtualization
+systems such as QEMU).  It can very easily waste memory (e.g., a 2MB mapping
+that only ever accesses 1 byte will result in 2MB of wired memory instead of
+one 4KB page).  See the Linux kernel source file
+\fIDocumentation/vm/transhuge.txt\fP for more details.  The \fBMADV_HUGEPAGE\fP
+and \fBMADV_NOHUGEPAGE\fP operations are available only if the kernel was
+configured with \fBCONFIG_TRANSPARENT_HUGEPAGE\fP.
+.TP 
+\fBMADV_NOHUGEPAGE\fP (Linux 2.6.38 以降)
+Ensures that memory in the address range specified by \fIaddr\fP and \fIlength\fP
+will not be collapsed into huge pages.
+.TP 
+\fBMADV_DONTDUMP\fP (Linux 3.4 以降)
+Exclude from a core dump those pages in the range specified by \fIaddr\fP and
+\fIlength\fP.  This is useful in applications that have large areas of memory
+that are known not to be useful in a core dump.  The effect of
+\fBMADV_DONTDUMP\fP takes precedence over the bit mask that is set via the
+\fI/proc/PID/coredump_filter\fP file (see \fBcore\fP(5)).
+.TP 
+\fBMADV_DODUMP\fP (Linux 3.4 以降)
+Undo the effect of an earlier \fBMADV_DONTDUMP\fP.
+.SH 返り値
+\fBmadvise\fP()  は成功すると 0 を返す。 エラーが起こると \-1 を返し、 \fIerrno\fP を適切な値に設定する。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+何らかのカーネルリソースが一時的に利用できなかった。
+.TP 
+\fBEBADF\fP
+指定したマップは存在するが、ファイルではないところをマップしている。
+.TP 
+\fBEINVAL\fP
+This error can occur for the following reasons:
+.RS
+.IP * 3
+.\" .I len
+.\" is zero,
+\fIlen\fP が負の値である。
+.IP *
+\fIaddr\fP is not page\-aligned.
+.IP *
+\fIadvice\fP が有効な値でない。
+.IP *
+アプリケーションがロックされたページや共有ページを (\fBMADV_DONTNEED\fP で) 解放
+しようとしている。
+.IP *
+\fBMADV_MERGEABLE\fP or \fBMADV_UNMERGEABLE\fP was specified in \fIadvice\fP, but the
+kernel was not configured with \fBCONFIG_KSM\fP.
+.RE
+.TP 
+\fBEIO\fP
+(\fBMADV_WILLNEED\fP の場合) この範囲のページングを行うと、 プロセスの RSS (resident set size)
+の最大値を越えてしまう。
+.TP 
+\fBENOMEM\fP
+(\fBMADV_WILLNEED\fP の場合) メモリが足りず、ページングに失敗した。
+.TP 
+\fBENOMEM\fP
+指定した範囲のアドレスが、現在マップされていない。 あるいはプロセスのアドレス空間の内部にない。
+.SH 準拠
+.\" FIXME . Write a posix_madvise(3) page.
+POSIX.1b.  POSIX.1\-2001 では、 \fBposix_madvise\fP(3)  を \fBPOSIX_MADV_NORMAL\fP
+などの定数とともに記述していた (それぞれの振る舞いはここで述べたものに近い)。 ファイルアクセスに対しても \fBposix_fadvise\fP(2)
+という類似の関数が存在する。
+
+\fBMADV_REMOVE\fP, \fBMADV_DONTFORK\fP, \fBMADV_DOFORK\fP, \fBMADV_HWPOISON\fP,
+\fBMADV_MERGEABLE\fP, \fBMADV_UNMERGEABLE\fP は Linux 固有である。
+.SH 注意
+.SS "Linux での注意"
+.LP
+現在の Linux の実装 (2.4.0) では、 このシステムコールをアドバイスというよりは命令と見ている。
+したがってこのアドバイスに対して通常行われる動作が不可能な場合は、 エラーを返すことがある (上記の エラー の記述を参照)。
+この振舞いは標準とは異なる。
+.LP
+.\" .SH HISTORY
+.\" The
+.\" .BR madvise ()
+.\" function first appeared in 4.4BSD.
+Linux の実装では \fIaddr\fP のアドレスはページ境界の値でなければならない。また \fIlength\fP は 0 であっても構わない。 また
+Linux 版の \fBmadvise\fP()  では、指定されたアドレス範囲にマップされていない部分があると、
+これらを無視して残りの部分にアドバイスを適用する (しかしシステムコールに対してはちゃんと \fBENOMEM\fP を返す)。
+.SH 関連項目
+\fBgetrlimit\fP(2), \fBmincore\fP(2), \fBmmap\fP(2), \fBmprotect\fP(2), \fBmsync\fP(2),
+\fBmunmap\fP(2), \fBcore\fP(5)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 60b7eb6..21a853c 100644 (file)
@@ -66,8 +66,8 @@ mbind \- メモリ領域に対してメモリポリシーを設定する
 
 \fIaddr\fP と \fIlen\fP で指定されたメモリ範囲に、 メモリの「無名」領域 \(em \fBMAP_ANONYMOUS\fP 付きの
 \fBmmap\fP(2)  システムコールを使って作成されたメモリ領域 \(em や \fBMAP_PRIVATE\fP 付きの \fBmmap\fP(2)
-を使ってマップされたメモリマップ・ファイルが含まれている場合、 ページが指定されたポリシーに基づいて割り当てられるのは、アプリケーション
\81\8cã\81\9dã\81®ã\83\9aã\83¼ã\82¸ã\81¸ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ (ã\83\87ã\83¼ã\82¿ã\81®æ ¼ç´\8d) ã\82\92è¡\8cã\81£ã\81\9fæ\99\82ã\81 ã\81\91ã\81§ã\81\82ã\82\8bã\80\82 無名領域の場合、最初の読み出しアクセスの際には カーネル内の全データが 0
+を使ってマップされたメモリマップ・ファイルが含まれている場合、アプリケーションがそのページへの書き込み (データの格納)
\82\92è¡\8cã\81£ã\81\9fæ\99\82ã\81«ã\81¯æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\83\9dã\83ªã\82·ã\83¼ã\81®ã\81¿ã\81«å\9fºã\81¥ã\81\84ã\81¦ã\83\9aã\83¼ã\82¸ã\81\8cå\89²ã\82\8aå½\93ã\81¦ã\82\89ã\82\8cã\82\8bã\80\82無名領域の場合、最初の読み出しアクセスの際には カーネル内の全データが 0
 である共有ページが使用される。 \fBMAP_PRIVATE\fP でマップされたファイルの場合、最初の読み出しアクセスがあると、
 ページ割り当てが発生するきっかけとなったプロセスのデフォルトポリシー にしたがってページの割り当てが行われる。
 ページ割り当てのきっかけとなったプロセスは、 \fBmbind\fP()  を呼び出したプロセスと同じとは限らない。
@@ -211,6 +211,6 @@ NUMA ポリシーは、 \fBMAP_SHARED\fP フラグが指定されてマップさ
 \fBshmat\fP(2), \fBshmget\fP(2), \fBnuma\fP(3), \fBcpuset\fP(7), \fBnuma\fP(7),
 \fBnumactl\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 24aae38..e7bae54 100644 (file)
@@ -98,6 +98,6 @@ migrate_pages \- プロセスの全ページを別のノード集合に移動す
 
 Linux カーネルソースの \fIDocumentation/vm/page_migration\fP
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1f23a83..0fb3a66 100644 (file)
@@ -115,6 +115,6 @@ Linux 2.3.99pre1 と glibc 2.2 から利用可能である。
 .SH 関連項目
 \fBmlock\fP(2), \fBmmap\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/mkdir.2 b/manual/LDP_man-pages/draft/man2/mkdir.2
new file mode 100644 (file)
index 0000000..ce4e3ef
--- /dev/null
@@ -0,0 +1,105 @@
+.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
+.\"             and Copyright (C) 1993 Michael Haardt
+.\"             and Copyright (C) 1993,1994 Ian Jackson.
+.\"
+.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
+.\" You may distribute it under the terms of the GNU General
+.\" Public License. It comes with NO WARRANTY.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MKDIR 2 2013\-01\-27 Linux "Linux Programmer's Manual"
+.SH 名前
+mkdir \- ディレクトリを作成する
+.SH 書式
+.nf
+.\" .B #include <unistd.h>
+\fB#include <sys/stat.h>\fP
+\fB#include <sys/types.h>\fP
+.sp
+\fBint mkdir(const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB);\fP
+.fi
+.SH 説明
+\fBmkdir\fP()  は \fIpathname\fP で示される名前のディレクトリを作成しようとする。
+
+\fImode\fP 引き数は、作成されたディレクトリの許可属性を決定するのに使われる。 この値に、通常通りプロセスの \fIumask\fP
+による修正が加えられる。 したがって、作成されたディレクトリの許可属性は (\fImode\fP & ~\fIumask\fP & 0777)  となる。
+作成されたディレクトリのその他のモードビットはオペレーティングシステムに 依存する。Linux の場合は、以下の通りである。
+
+新しく作成されたディレクトリの所有者はプロセスの実効ユーザ ID に設定される。 新たに作成されたディレクトリが含まれる親ディレクトリに set
+group ID ビットがセットされていたり、ファイルシステムが BSD の グループセマンティクス (\fImount \-o bsdgroups\fP
+あるいは、同じ意味の \fImount \-o grpid\fP)  に従ってマウントされている場合には、
+新たに作成されたディレクトリのグループ所有権は親ディレクトリの ものが継承される (親ディレクトリと同じになる)。
+それ以外の場合は、グループ所有権はプロセスの実効グループ ID となる。
+
+もし親ディレクトリに set group ID ビットがセットされていれば新しく作成される ディレクトリにも set group ID
+ビットがセットされる。
+.SH 返り値
+\fBmkdir\fP()  は成功した場合 0 を、失敗した場合 \-1 を返す (また、 \fIerrno\fP がエラーの内容にしたがって適切に設定される)。
+.SH エラー
+.TP 
+\fBEACCES\fP
+プロセスが親ディレクトリへの書き込み許可を持たない、もしくは \fIpathname\fP 中のディレクトリのどれかに検索許可属性が無い
+(\fBpath_resolution\fP(7)  も参照)。
+.TP 
+\fBEDQUOT\fP
+The user's quota of disk blocks or inodes on the file system has been
+exhausted.
+.TP 
+\fBEEXIST\fP
+\fIpathname\fP が既に存在している(ただしそれがディレクトリであるとは限らない)。 \fIpathname\fP がシンボリックリンクの場合も
+(その指定先が存在するかどうかに関らず)エラーになる。
+.TP 
+\fBEFAULT\fP
+\fIpathname\fP がアクセス可能なアドレス空間の外を指している。
+.TP 
+\fBELOOP\fP
+\fIpathname\fP を解決するときに、解決すべきシンボリックリンクが多すぎた。
+.TP 
+\fBEMLINK\fP
+親ディレクトリへのリンク数が \fBLINK_MAX\fP を超えてしまう。
+.TP 
+\fBENAMETOOLONG\fP
+\fIpathname\fP が長すぎる。
+.TP 
+\fBENOENT\fP
+\fIpathname\fP の構成要素のディレクトリのいずれかが存在しないか、 またはリンク先が存在しないシンボリックリンクである。
+.TP 
+\fBENOMEM\fP
+カーネルに十分なメモリがない。
+.TP 
+\fBENOSPC\fP
+\fIpathname\fP を含むデバイスに新たにディレクトリを作成する空きが無い。
+.TP 
+\fBENOSPC\fP
+もしくはユーザーのディスク quota が使い切られているため、 新たにディレクトリを作成することができない。
+.TP 
+\fBENOTDIR\fP
+\fIpathname\fP のディレクトリ部分が実際にはディレクトリでない。
+.TP 
+\fBEPERM\fP
+\fIpathname\fP を含むファイルシステムがディレクトリの作成をサポートしていない。
+.TP 
+\fBEROFS\fP
+\fIpathname\fP が読み出し専用ファイルシステム上のファイルを指している。
+.SH 準拠
+.\" SVr4 documents additional EIO, EMULTIHOP
+SVr4, BSD, POSIX.1\-2001.
+.SH 注意
+Linux では、許可ビット以外で意味を持つのは、 \fBS_ISVTX\fP モードビットだけである。 つまり、Linux
+では作成されたディレクトリは実際には (\fImode\fP & ~\fIumask\fP & 01777)  のモードを持つことになる。 \fBstat\fP(2)
+を参照のこと。
+.PP
+NFS を実現しているプロトコルには多くの不備が存在し、 それら中には \fBmkdir\fP()  に影響を与えるものもある。
+.SH 関連項目
+\fBmkdir\fP(1), \fBchmod\fP(2), \fBchown\fP(2), \fBmkdirat\fP(2), \fBmknod\fP(2),
+\fBmount\fP(2), \fBrmdir\fP(2), \fBstat\fP(2), \fBumask\fP(2), \fBunlink\fP(2),
+\fBpath_resolution\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index d290e65..d5260e3 100644 (file)
@@ -86,6 +86,6 @@ POSIX.1\-2008.
 .SH 関連項目
 \fBmkdir\fP(2), \fBopenat\fP(2), \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/mknod.2 b/manual/LDP_man-pages/draft/man2/mknod.2
new file mode 100644 (file)
index 0000000..a66e4d3
--- /dev/null
@@ -0,0 +1,139 @@
+.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
+.\"             and Copyright (C) 1993 Michael Haardt
+.\"             and Copyright (C) 1993,1994 Ian Jackson.
+.\"
+.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
+.\" You may distribute it under the terms of the GNU General
+.\" Public License. It comes with NO WARRANTY.
+.\" %%%LICENSE_END
+.\"
+.\" Modified 1996-08-18 by urs
+.\" Modified 2003-04-23 by Michael Kerrisk
+.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MKNOD 2 2013\-01\-27 Linux "Linux Programmer's Manual"
+.SH 名前
+mknod \- 特殊ファイルや通常のファイルを作成する
+.SH 書式
+.nf
+\fB#include <sys/types.h>\fP
+\fB#include <sys/stat.h>\fP
+\fB#include <fcntl.h>\fP
+\fB#include <unistd.h>\fP
+.sp
+\fBint mknod(const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB, dev_t \fP\fIdev\fP\fB);\fP
+.fi
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBmknod\fP():
+.ad l
+.RS 4
+_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+.RE
+.ad
+.SH 説明
+システムコール \fBmknod\fP()  は \fIpathname\fP という名前のファイルシステム・ノード
+(ファイル、デバイススペシャルファイル、名前付きパイプ) を、 属性 \fImode\fP と \fIdev\fP の指定にしたがって作成する。
+
+\fImode\fP 引き数には、作成するノードの許可属性 (permission) とタイプを指定する。 \fImode\fP
+の指定は以下にあげるファイルタイプのうちの 1 つと、 許可属性の組合せ (ビットごとの OR を使用) で行う。
+
+許可属性は通常通り、プロセスの \fIumask\fP によって修正され、作成されたノードの許可属性は \fI(mode & ~umask)\fP となる。
+
+.\" (S_IFSOCK since Linux 1.2.4)
+ファイルタイプには \fBS_IFREG\fP, \fBS_IFCHR\fP, \fBS_IFBLK\fP, \fBS_IFIFO\fP, \fBS_IFSOCK\fP
+のいずれかを指定しなければならない。 それぞれ順に、通常のファイル (空のファイルとして作成される)・
+キャラクタスペシャルファイル・ブロックスペシャルファイル・ FIFO (名前付きパイプ)・UNIX ドメインソケットである (ファイルタイプ 0 は
+\fBS_IFREG\fP と同じである)。
+
+ファイルタイプが \fBS_IFCHR\fP または \fBS_IFBLK\fP のとき、 \fIdev\fP には作成するデバイススペシャルファイルのメジャー番号と
+マイナー番号を指定する (\fBmakedev\fP(3)  は \fIdev\fP のこれらの番号を作成する際に役立つだろう)。 それ以外の場合は \fIdev\fP
+は無視される。
+
+\fIpathname\fP が既に存在する場合、またはシンボリックリンクの場合、 この呼び出しは \fBEEXIST\fP エラーで失敗する。
+
+新しく作成されたノードの所有者はプロセスの実効ユーザ ID にセットされる。 新たに作られたノードを保持する 親ディレクトリの set\-group\-ID
+ビットがセットされていたり、 ファイルシステムが BSD のグループセマンティクスにしたがって
+マウントされている場合には、新しいノードのグループ所有権は親ディレクトリの グループ所有権を継承する (親ディレクトリと同じになる)。
+また、そうでなかった場合の所有グループはプロセスの実効グループ ID となる。
+.SH 返り値
+\fBmknod\fP()  は成功した場合 0 を、失敗した場合 \-1 を返す (失敗した場合 \fIerrno\fP がエラーの内容にしたがってセットされる)。
+.SH エラー
+.TP 
+\fBEACCES\fP
+プロセスが親ディレクトリへの書き込み許可を持たない。 もしくはパス名 \fIpathname\fP 中のディレクトリ部分のどれかに検索許可属性が無い
+(\fBpath_resolution\fP(7)  も参照すること)。
+.TP 
+\fBEDQUOT\fP
+The user's quota of disk blocks or inodes on the file system has been
+exhausted.
+.TP 
+\fBEEXIST\fP
+\fIpathname\fP がすでに存在する。 これには \fIpathname\fP がシンボリックリンクである場合も含まれる
+(シンボリックリンクがリンク切れか (dangling) どうかは関係ない)。
+.TP 
+\fBEFAULT\fP
+\fIpathname\fP がそのプロセスのアクセス可能なアドレス空間の外を指している。
+.TP 
+\fBEINVAL\fP
+\fImode\fP が通常のファイル・デバイススペシャルファイル・FIFO・ソケット以外を 作成するようにセットされている。
+.TP 
+\fBELOOP\fP
+パス名 \fIpathname\fP を解決するときに、含まれているシンボリックリンクが多すぎた。
+.TP 
+\fBENAMETOOLONG\fP
+\fIpathname\fP が長過ぎる。
+.TP 
+\fBENOENT\fP
+\fIpathname\fP 中のディレクトリ部分が存在しない、 もしくはリンク先の無いシンボリックリンクである。
+.TP 
+\fBENOMEM\fP
+十分なカーネルメモリが無い。
+.TP 
+\fBENOSPC\fP
+\fIpathname\fP のあるデバイスに新たにノードを作成する空きが無い。
+.TP 
+\fBENOTDIR\fP
+\fIpathname\fP 中のディレクトリ要素が、実際にはディレクトリでない。
+.TP 
+\fBEPERM\fP
+.\" For UNIX domain sockets and regular files, EPERM is returned only in
+.\" Linux 2.2 and earlier; in Linux 2.4 and later, unprivileged can
+.\" use mknod() to make these files.
+\fImode\fP は通常のファイル・FIFO (名前付きパイプ)・UNIX ドメインソケット以外を 作成するようにセットされているが、実行者が特権
+(Linux では \fBCAP_MKNOD\fP ケーパビリティ (capability)) を持っていない。 または \fIpathname\fP
+を保持するファイルシステムが、指定されたノード形式をサポートしていない。
+.TP 
+\fBEROFS\fP
+\fIpathname\fP が読み出し専用ファイルシステム上のファイルを指している。
+.SH 準拠
+.\" The Linux version differs from the SVr4 version in that it
+.\" does not require root permission to create pipes, also in that no
+.\" EMULTIHOP, ENOLINK, or EINTR error is documented.
+SVr4, 4.4BSD, POSIX.1\-2001 (下記も参照).
+.SH 注意
+POSIX.1\-2001 では次のように書いている: 「\fBmknod\fP()  の唯一の移植性のある使用法は、FIFO
+スペシャルファイルを作成することである。 \fImode\fP が \fBS_IFIFO\fP ではない場合、または \fIdev\fP が 0 ではない場合、
+\fBmknod\fP()  の挙動は規定されていない。」 しかしながら、現在ではこの目的のために \fBmknod\fP()
+を使用すべきではない。この目的のために特別に定義された関数である \fBmkfifo\fP()  を使用すべきである。
+
+.\" and one should make UNIX domain sockets with socket(2) and bind(2).
+Linux では、ディレクトリを作成するために この呼び出しを使用することはできない。 ディレクトリは \fBmkdir\fP(2)  で作成すべきである。
+
+NFS を実現しているプロトコルには多くの不備が存在し、 それらのいくつかは \fBmknod\fP()  に影響を与える。
+.SH 関連項目
+\fBchmod\fP(2), \fBchown\fP(2), \fBfcntl\fP(2), \fBmkdir\fP(2), \fBmknodat\fP(2),
+\fBmount\fP(2), \fBsocket\fP(2), \fBstat\fP(2), \fBumask\fP(2), \fBunlink\fP(2),
+\fBmakedev\fP(3), \fBmkfifo\fP(3), \fBpath_resolution\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 62d648a..13a43fb 100644 (file)
@@ -88,6 +88,6 @@ POSIX.1\-2008.
 .SH 関連項目
 \fBmknod\fP(2), \fBopenat\fP(2), \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5e2ead1..92f0e01 100644 (file)
@@ -190,6 +190,6 @@ Linux 2.6.9 以降では、特権を持つプロセスがロックできるメ
 \fBmmap\fP(2), \fBsetrlimit\fP(2), \fBshmctl\fP(2), \fBsysconf\fP(3), \fBproc\fP(5),
 \fBcapabilities\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/mmap.2 b/manual/LDP_man-pages/draft/man2/mmap.2
new file mode 100644 (file)
index 0000000..06cd0dc
--- /dev/null
@@ -0,0 +1,426 @@
+.\" Copyright (C) 1996 Andries Brouwer <aeb@cwi.nl>
+.\" and Copyright (C) 2006, 2007 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 2000-03-25 by Jim Van Zandt <jrv@vanzandt.mv.com>
+.\" Modified 2001-10-04 by John Levon <moz@compsoc.man.ac.uk>
+.\" Modified 2003-02-02 by Andi Kleen <ak@muc.de>
+.\" Modified 2003-05-21 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    MAP_LOCKED works from 2.5.37
+.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Modified 2004-09-11 by aeb
+.\" Modified 2004-12-08, from Eric Estievenart <eric.estievenart@free.fr>
+.\" Modified 2004-12-08, mtk, formatting tidy-ups
+.\" Modified 2006-12-04, mtk, various parts rewritten
+.\" 2007-07-10, mtk, Added an example program.
+.\" 2008-11-18, mtk, document MAP_STACK
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MMAP 2 2013\-04\-17 Linux "Linux Programmer's Manual"
+.SH 名前
+mmap, munmap \- ファイルやデバイスをメモリにマップ/アンマップする
+.SH 書式
+.nf
+\fB#include <sys/mman.h>\fP
+.sp
+\fBvoid *mmap(void *\fP\fIaddr\fP\fB, size_t \fP\fIlength\fP\fB, int \fP\fIprot\fP\fB, int \fP\fIflags\fP\fB,\fP
+\fB           int \fP\fIfd\fP\fB, off_t \fP\fIoffset\fP\fB);\fP
+\fBint munmap(void *\fP\fIaddr\fP\fB, size_t \fP\fIlength\fP\fB);\fP
+.fi
+
+See NOTES for information on feature test macro requirements.
+.SH 説明
+\fBmmap\fP()  は、新しいマッピングを呼び出し元プロセスの仮想アドレス空間に作成する。 新しいマッピングの開始アドレスは \fIaddr\fP
+で指定される。マッピングの長さは \fIlength\fP 引き数で指定される。
+
+.\" Before Linux 2.6.24, the address was rounded up to the next page
+.\" boundary; since 2.6.24, it is rounded down!
+\fIaddr\fP が NULL の場合、カーネルがマッピングを作成するアドレスを選択する。 この方法は最も移植性のある新しいマッピングの作成方法である。
+\fIaddr\fP が NULL でない場合、カーネルはマッピングをどこに配置するかのヒントとして \fIaddr\fP を使用する。Linux
+では、マッピングはすぐ近くのページ境界に作成される。 新しいマッピングのアドレスは、呼び出しの返り値として返される。
+
+ファイルマッピングの内容は、 ファイルディスクリプタ \fIfd\fP で参照されるファイル (もしくは他のオブジェクト) のオフセット \fIoffset\fP
+から開始される \fIlength\fP バイトのデータで初期化される (ファイルマッピングは無名マッピングの反対語である。 \fBMAP_ANONYMOUS\fP
+を参照)。 \fIoffset\fP は \fIsysconf(_SC_PAGE_SIZE)\fP が返すページサイズの倍数でなければならない。
+.LP
+引き数 \fIprot\fP には、マッピングのメモリ保護をどのように行なうかを指定する (ファイルのオープンモードと矛盾してはいけない)。 \fIprot\fP
+には、 \fBPROT_NONE\fP か、以下のフラグをひとつ以上ビット毎の論理和 (OR) をとったものを 指定できる。
+.TP  1.1i
+\fBPROT_EXEC\fP
+ページは実行可能である。
+.TP 
+\fBPROT_READ\fP
+ページは読み込み可能である。
+.TP 
+\fBPROT_WRITE\fP
+ページに書き込み可能である。
+.TP 
+\fBPROT_NONE\fP
+ページにはアクセスできない。
+.LP
+\fIflags\fP 引き数により、マッピングに対する更新が同じ領域をマッピングしている 他のプロセスに見えるか、更新がマッピング元のファイルを通じて
+伝えられるか、が決定される。この動作は、以下の値のいずれか一つだけ (複数は指定できない) を \fIflags\fP に含めることで指定する。
+.TP  1.1i
+\fBMAP_SHARED\fP
+このマッピングを共有する。 マッピングに対する更新はこのファイルをマッピングしている他のプロセス
+から見える。更新はマッピング元のファイルを通じて伝えられる。 ただし、ファイルの実際の更新は \fBmsync\fP(2)  または \fBmunmap\fP()
+が呼ばれるまで行われないこともある。
+.TP 
+\fBMAP_PRIVATE\fP
+プライベートな copy\-on\-write (書き込み時コピー) マップを生成する。
+マッピングに対する更新は同じファイルをマッピングしている他のプロセス には見えず、更新がマッピング元のファイルを通じて伝えられることもない。
+\fBmmap\fP()  の呼び出し後にマッピング元のファイルに対して行われた変更が、 マップ領域に反映されるかどうかは規定されていない。
+.LP
+上記の二つのフラグは POSIX.1\-2001 で規定されている。
+
+さらに、以下の値のうち 0 個以上をビット毎の論理和 (OR) で \fIflags\fP に指定することができる。
+.TP 
+\fBMAP_32BIT\fP (Linux 2.4.20, 2.6 以降)
+.\" See http://lwn.net/Articles/294642 "Tangled up in threads", 19 Aug 08
+マッピングをプロセスのアドレス空間の先頭 2 ギガバイト以内に配置する。 このフラグがサポートされているのは x86\-64 アーキテクチャ上の 64
+ビットプログラムのみである。 このフラグが追加されたのは、スレッドのスタックをメモリの先頭 2GB 以内の どこかに割り当てることで、初期のいくつかの
+64 ビットプロセッサにおける コンテキストスイッチの性能問題を改善するためである。 最近の x86\-64 プロセッサではこの性能問題はもはや存在せず、
+そのようなシステムではこのフラグを使用する必要はない。 \fBMAP_FIXED\fP がセットされている場合は、 \fBMAP_32BIT\fP
+フラグは無視される。
+.TP 
+\fBMAP_ANON\fP
+\fBMAP_ANONYMOUS\fP の同義語。非推奨。
+.TP 
+\fBMAP_ANONYMOUS\fP
+マッピングはどのファイルとも関連付けされない。 マッピングの内容は 0 で初期化される。 引き数 \fIfd\fP と \fIoffset\fP は無視される。
+ただし、実装によっては \fBMAP_ANONYMOUS\fP (もしくは \fBMAP_ANON\fP)  が指定された場合、 \fIfd\fP を \-1
+にする必要があり、 移植性が必要なアプリケーションでは必ず \fIfd\fP を \-1 にすべきである。 \fBMAP_ANONYMOUS\fP と
+\fBMAP_SHARED\fP を組み合わせての利用は カーネル 2.4 以降の Linux でのみサポートされている。
+.TP 
+\fBMAP_DENYWRITE\fP
+.\" Introduced in 1.1.36, removed in 1.3.24.
+このフラグは無視される (ずっと前は、マップ元のファイルへの書き込みを行おうとすると、エラー \fBETXTBUSY\fP
+で失敗するようにシグナルが設定されていたが、これは denial\-of\-service (サービス拒否) 攻撃の原因となった)。
+.TP 
+\fBMAP_EXECUTABLE\fP
+.\" Introduced in 1.1.38, removed in 1.3.24. Flag tested in proc_follow_link.
+.\" (Long ago, it signaled that the underlying file is an executable.
+.\" However, that information was not really used anywhere.)
+.\" Linus talked about DOS related to MAP_EXECUTABLE, but he was thinking of
+.\" MAP_DENYWRITE?
+このフラグは無視される。
+.TP 
+\fBMAP_FILE\fP
+.\" On some systems, this was required as the opposite of
+.\" MAP_ANONYMOUS -- mtk, 1 May 2007
+互換性のためのフラグ。無視される。
+.TP 
+\fBMAP_FIXED\fP
+\fIaddr\fP をアドレスのヒントとして使用するのではなく、 \fIaddr\fP で指定されたアドレスをそのまま使用してマッピングを配置する。
+\fIaddr\fP はページサイズの倍数でなければならない。 \fIaddr\fP と \fIlen\fP
+で指定されたメモリ領域が既存のマッピングのページと重なる場合、 既存のマッピングの重なった部分は捨てられる。 もし指定されたアドレスが使用できない場合、
+\fBmmap\fP()  は失敗する。 マッピングに対して固定アドレスを要求するのは移植性の面で劣るので、 このオプションは使用しないことを推奨する。
+.TP 
+\fBMAP_GROWSDOWN\fP
+スタック用に使用される。マッピングをメモリ内で逆向きに行うことを カーネル仮想メモリシステムに指示する。
+(訳注:マッピングは通常はメモリ・アドレスが増加する向きに行うが、 このオプションを指定すると逆向きにマッピングを行う)
+.TP 
+\fBMAP_HUGETLB\fP (Linux 2.6.32 以降)
+"huge page" を使ってマッピングを割り当てる。詳しい情報は、Linux カーネルソースの
+\fIDocumentation/vm/hugetlbpage.txt\fP を参照。
+.TP 
+\fBMAP_LOCKED\fP (Linux 2.5.37 以降)
+.\" If set, the mapped pages will not be swapped out.
+マップされた領域のページを \fBmlock\fP(2)  の方法でメモリ内にロックする。 それ以前のカーネルでは、このフラグは無視される。
+.TP 
+\fBMAP_NONBLOCK\fP (Linux 2.5.46 以降)
+\fBMAP_POPULATE\fP と組み合わせた場合のみ意味を持つ。 read\-ahead (前もって読み込むこと) を実行しない。 単に、すでに RAM
+上に存在するページに対してのみページテーブルエントリを作成する。 Linux 2.6.23 以降では、このフラグは \fBMAP_POPULATE\fP
+に何の影響も与えない。 いつか \fBMAP_POPULATE\fP と \fBMAP_NONBLOCK\fP
+を組み合わせた場合の動作は実装し直されるかもしれない。
+.TP 
+\fBMAP_NORESERVE\fP
+このマッピングに対するスワップ空間の予約を行わない。 スワップ空間を予約した場合は、このマッピングの変更が必ず可能なことが
+保証される。予約を行わなかった場合、物理メモリに空きがないと 書き込み時に \fBSIGSEGV\fP エラーを受け取ることがある。 \fBproc\fP(5)
+の \fI/proc/sys/vm/overcommit_memory\fP ファイルについての議論も参照。 バージョン 2.6
+より前のカーネルでは、このフラグは書き込み可能な プライベート・マッピングについてのみ効果があった。
+.TP 
+\fBMAP_POPULATE\fP (Linux 2.5.46 以降)
+マッピング用のページテーブルを配置 (populate) する ファイルマッピングの場合には、これによりファイルが先読み (read\-ahead)
+が行われる。この以後は、マッピングに対するアクセスがページフォールトで ブロックされることがなくなる。 Linux 2.6.23
+以降でのみプライベート・マッピングについて \fBMAP_POPULATE\fP がサポートされている。
+.TP 
+\fBMAP_STACK\fP (Linux 2.6.27 以降)
+.\" See http://lwn.net/Articles/294642 "Tangled up in threads", 19 Aug 08
+.\" commit cd98a04a59e2f94fa64d5bf1e26498d27427d5e7
+.\" http://thread.gmane.org/gmane.linux.kernel/720412
+.\" "pthread_create() slow for many threads; also time to revisit 64b
+.\"  context switch optimization?"
+プロセスやスレッドのスタックに適したアドレスにマッピングを割り当てる。 現在のところ、このフラグは何もしないが、 glibc
+のスレッド実装では使用されている。 これは、いくつかのアーキテクチャではスタックの割り当てに関して特別な扱い が必要な場合に、glibc
+にそのサポートを後で透過的に実装できるようにする ためである。
+.TP 
+\fBMAP_UNINITIALIZED\fP (Linux 2.6.33 以降)
+無名ページ (anonymous page) のクリアを行わない。このフラグは組み込みデバイス
+での性能向上を目的に作られてものである。カーネルの設定で
+\fBCONFIG_MMAP_ALLOW_UNINITIALIZED\fP オプションが有効になっている場合のみ、
+このフラグは効果を持つ。
+セキュリティ面の考慮から、このオプションは通常組み込みデバイス (すなわち、
+ユーザメモリの内容を完全に制御化におけるデバイス) においてのみ有効にされる。
+.LP
+上記のフラグの中では、 \fBMAP_FIXED\fP だけが POSIX.1\-2001 で規定されている。 しかしながら、ほとんどのシステムで
+\fBMAP_ANONYMOUS\fP (またはその同義語である \fBMAP_ANON\fP)  もサポートされている。
+.LP
+いくつかのシステムでは、上記以外にフラグとして \fBMAP_AUTOGROW\fP, \fBMAP_AUTORESRV\fP, \fBMAP_COPY\fP,
+\fBMAP_LOCAL\fP が規定されている。
+.LP
+\fBmmap\fP()  によってマップされたメモリの属性は \fBfork\fP(2)  の際に継承される。
+.LP
+ファイルはページサイズの整数倍の領域にマップされる。サイズがページサイズの 整数倍でないファイルの場合、マップ時に残りの領域は 0
+で埋められ、この領域へ 書きこみを行ってもファイルに書き出されることはない。マッピングを行った元
+ファイルのサイズを変更した場合、元ファイルの追加されたり削除された領域に対応 するマップされたページに対してどのような影響があるかは規定されていない。
+.SS munmap()
+システムコール \fBmunmap\fP()  は指定されたアドレス範囲のマップを消去し、 これ以降のその範囲内へのメモリ参照は不正となる。
+この領域は、プロセスが終了したときにも自動的にアンマップされる。 一方、ファイル記述子をクローズしても、この領域はアンマップされない。
+.LP
+\fIaddr\fP アドレスはページサイズの整数倍でなければならない。指定された範囲の一部分を
+含む全てのページはアンマップされ、これ以降にこれらのページへの参照があると \fBSIGSEGV\fP が発生する。
+指定した範囲内にマップされたページが一つも含まれていない場合でも エラーにならない。
+.SS ファイルと関連付けられたマッピングに対するタイムスタンプの更新
+ファイルと関連付けられたマッピングの場合、マッピングされたファイルの \fIst_atime\fP フィールドは、 \fBmmap\fP()  されてからアンマップ
+(unmap) されるまでの間に更新されることがある。 それまでに更新が行われていなければ、マップされたページへの最初の参照があった 際に更新される。
+.LP
+\fBPROT_WRITE\fP と \fBMAP_SHARED\fP の両方を指定してマップされたファイルの場合、書き込みがあると、 \fIst_ctime\fP と
+\fIst_mtime\fP の両フィールドは、マップされた領域への書き込みより後で、 \fBMS_SYNC\fP または \fBMS_ASYNC\fP フラグを指定して
+\fBmsync\fP(2)  が呼ばれる前までに更新される。
+.SH 返り値
+\fBmmap\fP()  は成功するとマップされた領域へのポインタを返す。 失敗すると値 \fBMAP_FAILED\fP (つまり \fI(void\ *)\ \-1\fP)  を返し、 \fIerrno\fP がエラーの内容にしたがってセットされる。 \fBmunmap\fP()  は成功すると 0 を返す。失敗すると \-1
+を返し、 \fIerrno\fP がセットされる (多くの場合 \fBEINVAL\fP になるだろう)。
+.SH エラー
+.TP 
+\fBEACCES\fP
+以下のいずれかの場合。 ファイル記述子の参照先が通常のファイルではない (non\-regular file) 。 \fBMAP_PRIVATE\fP
+を要求したが \fIfd\fP は読み込み用にオープンされていない。 \fBMAP_SHARED\fP を要求して \fBPROT_WRITE\fP をセットしたが
+\fIfd\fP は読み書きモード (\fBO_RDWR\fP)  でオープンされていない、 \fBPROT_WRITE\fP をセットしたが、ファイルは追加
+(append) 専用である。
+.TP 
+\fBEAGAIN\fP
+ファイルがロックされている。またはロックされているメモリが多すぎる (\fBsetrlimit\fP(2)  を参照)。
+.TP 
+\fBEBADF\fP
+\fIfd\fP が有効なファイル記述子 (file descriptor) ではない (かつ \fBMAP_ANONYMOUS\fP がセットされていない)。
+.TP 
+\fBEINVAL\fP
+\fIaddr\fP か \fIlength\fP か \fIoffset\fP が適切でない (例えば、大きすぎるとか、ページ境界にアラインメントされていない)。
+.TP 
+\fBEINVAL\fP
+(Linux 2.6.12 以降)  \fIlength\fP が 0 であった。
+.TP 
+\fBEINVAL\fP
+\fIflags\fP に \fBMAP_PRIVATE\fP と \fBMAP_SHARED\fP のどちらも含まれていなかった、もしくは その両方が含まれていた。
+.TP 
+\fBENFILE\fP
+.\" This is for shared anonymous segments
+.\" [2.6.7] shmem_zero_setup()-->shmem_file_setup()-->get_empty_filp()
+.\" .TP
+.\" .B ENOEXEC
+.\" A file could not be mapped for reading.
+システム全体でオープンされているファイルの総数が上限に達した。
+.TP 
+\fBENODEV\fP
+指定されたファイルが置かれているファイルシステムがメモリマッピングをサポート していない。
+.TP 
+\fBENOMEM\fP
+メモリに空きがない、または処理中のプロセスのマッピング数が最大数を超過した。
+.TP 
+\fBEPERM\fP
+.\" (Since 2.4.25 / 2.6.0.)
+\fIprot\fP 引き数は \fBPROT_EXEC\fP を行うように指定されているが、 no\-exec でマウントされたファイルシステム上のファイルに
+マップ領域が対応している。
+.TP 
+\fBETXTBSY\fP
+\fBMAP_DENYWRITE\fP がセットされているが \fIfd\fP で指定されているオブジェクトは書き込み用に開かれている。
+.TP 
+\fBEOVERFLOW\fP
+On 32\-bit architecture together with the large file extension (i.e., using
+64\-bit \fIoff_t\fP): the number of pages used for \fIlength\fP plus number of
+pages used for \fIoffset\fP would overflow \fIunsigned long\fP (32 bits).
+.LP
+マップ領域を利用する際に、以下のシグナルが発生することがある:
+.TP 
+\fBSIGSEGV\fP
+読み込み専用で mmap された領域へ書き込みを行おうとした。
+.TP 
+\fBSIGBUS\fP
+バッファのうち、ファイルに関連づけられていない部分 (例えばファイル末尾を越えた部分など。これには
+他のプロセスがファイルを切り詰めた場合なども含まれる)  にアクセスしようとした。
+.SH 準拠
+.\" SVr4 documents additional error codes ENXIO and ENODEV.
+.\" SUSv2 documents additional error codes EMFILE and EOVERFLOW.
+SVr4, 4.4BSD, POSIX.1\-2001.
+.SH 可用性
+.\" POSIX.1-2001: It shall be defined to -1 or 0 or 200112L.
+.\" -1: unavailable, 0: ask using sysconf().
+.\" glibc defines it to 1.
+\fBmmap\fP(), \fBmsync\fP(2)  \fBmunmap\fP()  が利用可能な POSIX システムでは、
+\fB_POSIX_MAPPED_FILES\fP は <unistd.h> で 0 より大きな値に定義される (\fBsysconf\fP(3)
+も参照のこと)。
+.SH 注意
+.\" Since around glibc 2.1/2.2, depending on the platform.
+このページでは glibc の \fBmmap\fP() のラッパー関数が提供するインターフェースに
+ついて説明している。元々は、この関数は同じ名前のシステムコールを起動していた。
+カーネル 2.4 以降、このシステムコールは \fBmmap2\fP(2) に取って代わられ、現在
+では、 glibc の \fBmmap\fP() のラッパー関数は \fIoffset\fP を適切に調整してから
+\fBmmap2\fP(2) を起動する。
+
+(i386 などの) いくつかのアーキテクチャでは、 \fBPROT_WRITE\fP をセットすると、暗黙のうちに \fBPROT_READ\fP
+がセットされる。 \fBPROT_READ\fP をセットした際に暗黙のうちに \fBPROT_EXEC\fP がセットされるかどうかは、アーキテクチャ依存である。
+移植性を考慮したプログラムでは、 新規にマップした領域でコードを実行したい場合は、常に \fBPROT_EXEC\fP をセットすべきである。
+
+マッピングを作成する移植性のある方法は、 \fIaddr\fP に 0 (NULL) を指定し、 \fIflags\fP から \fBMAP_FIXED\fP
+を外すことである。 この場合、システムがマッピング用のアドレスの選択を行う。 アドレスは既存のマッピングと衝突しないように、 かつ 0
+にならないように選択される。 \fBMAP_FIXED\fP フラグが指定され、かつ \fIaddr\fP が 0 (NULL)
+の場合には、マップされるアドレスが 0 (NULL) になる。
+
+Certain \fIflags\fP constants are defined only if either \fB_BSD_SOURCE\fP or
+\fB_SVID_SOURCE\fP is defined.  (Requiring \fB_GNU_SOURCE\fP also suffices, and
+requiring that macro specifically would have been more logical, since these
+flags are all Linux specific.)  The relevant flags are: \fBMAP_32BIT\fP,
+\fBMAP_ANONYMOUS\fP (and the synonym \fBMAP_ANON\fP), \fBMAP_DENYWRITE\fP,
+\fBMAP_EXECUTABLE\fP, \fBMAP_FILE\fP, \fBMAP_GROWSDOWN\fP, \fBMAP_HUGETLB\fP,
+\fBMAP_LOCKED\fP, \fBMAP_NONBLOCK\fP, \fBMAP_NORESERVE\fP, \fBMAP_POPULATE\fP, and
+\fBMAP_STACK\fP.
+.SH バグ
+Linux においては、上記の \fBMAP_NORESERVE\fP で述べられているような保証はない。
+デフォルトでは、システムがメモリを使い切った場合には、 どのプロセスがいつ強制終了されるか分からないからである。
+
+2.6.7 より前のカーネルでは、 \fIprot\fP に \fBPROT_NONE\fP が指定された場合にのみ、 \fBMAP_POPULATE\fP
+フラグが効力を持つ。
+
+SUSv3 では、 \fIlength\fP が 0 の場合、 \fBmmap\fP()  は失敗すると規定されている。しかしながら、2.6.12
+より前のカーネルでは、 この場合に \fBmmap\fP()  は成功していた (マッピングは作成されず、 \fIaddr\fP が返されていた)。 カーネル
+2.6.12 以降では、 \fBmmap\fP()  はエラー \fBEINVAL\fP で失敗する。
+
+POSIX specifies that the system shall always zero fill any partial page at
+the end of the object and that system will never write any modification of
+the object beyond its end.  On Linux, when you write data to such partial
+page after the end of the object, the data stays in the page cache even
+after the file is closed and unmapped and even though the data is never
+written to the file itself, subsequent mappings may see the modified
+content.  In some cases, this could be fixed by calling \fBmsync\fP(2)  before
+the unmap takes place; however, this doesn't work on tmpfs (for example,
+when using POSIX shared memory interface documented in \fBshm_overview\fP(7)).
+.SH 例
+.\" FIXME . Add an example here that uses an anonymous shared region for
+.\" IPC between parent and child.
+.PP
+以下のプログラムは、一番目のコマンドライン引き数で指定された ファイルの一部を標準出力に表示する。
+表示する範囲は、二番目、三番目のコマンドライン引き数で渡される オフセットと長さで指定される。
+このプログラムは、指定されたファイルの必要なページのメモリ・ マッピングを作成し、 \fBwrite\fP(2)  を使って所望のバイトを出力する。
+.nf
+
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define handle_error(msg) \e
+    do { perror(msg); exit(EXIT_FAILURE); } while (0)
+
+int
+main(int argc, char *argv[])
+{
+    char *addr;
+    int fd;
+    struct stat sb;
+    off_t offset, pa_offset;
+    size_t length;
+    ssize_t s;
+
+    if (argc < 3 || argc > 4) {
+        fprintf(stderr, "%s file offset [length]\en", argv[0]);
+        exit(EXIT_FAILURE);
+    }
+
+    fd = open(argv[1], O_RDONLY);
+    if (fd == \-1)
+        handle_error("open");
+
+    if (fstat(fd, &sb) == \-1)           /* To obtain file size */
+        handle_error("fstat");
+
+    offset = atoi(argv[2]);
+    pa_offset = offset & ~(sysconf(_SC_PAGE_SIZE) \- 1);
+        /* offset for mmap() must be page aligned */
+
+    if (offset >= sb.st_size) {
+        fprintf(stderr, "offset is past end of file\en");
+        exit(EXIT_FAILURE);
+    }
+
+    if (argc == 4) {
+        length = atoi(argv[3]);
+        if (offset + length > sb.st_size)
+            length = sb.st_size \- offset;
+                /* Can\(aqt display bytes past end of file */
+
+    } else {    /* No length arg ==> display to end of file */
+        length = sb.st_size \- offset;
+    }
+
+    addr = mmap(NULL, length + offset \- pa_offset, PROT_READ,
+                MAP_PRIVATE, fd, pa_offset);
+    if (addr == MAP_FAILED)
+        handle_error("mmap");
+
+    s = write(STDOUT_FILENO, addr + offset \- pa_offset, length);
+    if (s != length) {
+        if (s == \-1)
+            handle_error("write");
+
+        fprintf(stderr, "partial write");
+        exit(EXIT_FAILURE);
+    }
+
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBgetpagesize\fP(2), \fBmincore\fP(2), \fBmlock\fP(2), \fBmmap2\fP(2), \fBmprotect\fP(2),
+\fBmremap\fP(2), \fBmsync\fP(2), \fBremap_file_pages\fP(2), \fBsetrlimit\fP(2),
+\fBshmat\fP(2), \fBshm_open\fP(3), \fBshm_overview\fP(7)
+
+The descriptions of the following files in \fBproc\fP(5): \fI/proc/[pid]/maps\fP,
+\fI/proc/[pid]/map_files\fP, and \fI/proc/[pid]/smaps\fP.
+
+.\"
+.\" Repeat after me: private read-only mappings are 100% equivalent to
+.\" shared read-only mappings. No ifs, buts, or maybes. -- Linus
+B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128\-129 and 389\-391.
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 57421f8..96b6215 100644 (file)
@@ -78,6 +78,6 @@ ia64 では、 \fIoffset\fP の単位は、実際にはシステムのページ
 .SH 関連項目
 \fBgetpagesize\fP(2), \fBmmap\fP(2), \fBmremap\fP(2), \fBmsync\fP(2), \fBshm_open\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a3ace67..fa875dd 100644 (file)
@@ -99,6 +99,6 @@ glibc はこのシステムコールに対するラッパー関数を提供し
 .SH 関連項目
 \fBvm86\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1133ebf..a309097 100644 (file)
@@ -271,7 +271,7 @@ Linux 2.4 以降では、 \fBMS_NODEV\fP, \fBMS_NOEXEC\fP, \fBMS_NOSUID\fP は
 .\" FIXME: Definitions of the so-far-undocumented MS_UNBINDABLE, MS_PRIVATE,
 .\"  MS_SHARED, and MS_SLAVE were (also) only added to glibc headers in 2.12.
 \fBMS_DIRSYNC\fP, \fBMS_MOVE\fP, \fBMS_REC\fP, \fBMS_RELATIME\fP, \fBMS_STRICTATIME\fP の定義が
-glibc ã\81®ã\83\98ã\83\83ã\83\80ã\81«è¿½å\8a ã\81\95ã\82\8cã\81\9fã\81®ã\81¯ ã\83\90ã\83¼ã\82¸ã\83§ã\83³ 2.12 ã\81«ã\81\8aã\81\84ã\81¦ã\81®ã\81¿ã\81§ã\81\82ã\82\8bã\80\82
+glibc のヘッダに追加されたのは バージョン 2.12 においてである。
 .SH 準拠
 この関数は Linux 固有の関数であり、移植を考慮したプログラムでは 使用すべきでない。
 .SH 注意
@@ -307,6 +307,6 @@ Linux 独自のファイル \fI/proc/PID/mounts\fP では、指定された ID 
 \fBumount\fP(2), \fBnamespaces\fP(7), \fBpath_resolution\fP(7), \fBmount\fP(8),
 \fBumount\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2606f94..48861a7 100644 (file)
@@ -146,6 +146,6 @@ dirty なページを移動できない。 ファイルシステムが dirty な
 \fBnuma_maps\fP(5), \fBcpuset\fP(7), \fBnuma\fP(7), \fBmigratepages\fP(8),
 \fBnuma_stat\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0cf81dd..a207fbd 100644 (file)
@@ -185,6 +185,6 @@ main(void)
 .SH 関連項目
 \fBmmap\fP(2), \fBsysconf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6155701..3b90e45 100644 (file)
@@ -54,6 +54,6 @@ glibc はこのシステムコールに対するラッパー関数を提供し
 .SH 関連項目
 \fBmq_getattr\fP(3), \fBmq_overview\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2545147..a476bed 100644 (file)
@@ -119,6 +119,6 @@ Linux ではメモリはページに分割される。ユーザー・プロセ
 Randolf Bentson, \fIThe Design of the UNIX Operating System\fP by Maurice
 J. Bach.)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/msgctl.2 b/manual/LDP_man-pages/draft/man2/msgctl.2
new file mode 100644 (file)
index 0000000..273c03e
--- /dev/null
@@ -0,0 +1,209 @@
+.\" Copyright 1993 Giorgio Ciucci (giorgio@crcc.it)
+.\" and Copyright 2004, 2005 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified Sun Feb 18 01:59:29 2001 by Andries E. Brouwer <aeb@cwi.nl>
+.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on CAP_IPC_OWNER requirement
+.\" Modified, 17 Jun 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on CAP_SYS_ADMIN requirement for IPC_SET and IPC_RMID
+.\" Modified, 11 Nov 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Language and formatting clean-ups
+.\"    Added msqid_ds and ipc_perm structure definitions
+.\" 2005-08-02, mtk: Added IPC_INFO, MSG_INFO, MSG_STAT descriptions
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MSGCTL 2 2012\-05\-31 Linux "Linux Programmer's Manual"
+.SH 名前
+msgctl \- System V メッセージ制御操作
+.SH 書式
+.nf
+\fB#include <sys/types.h>\fP
+\fB#include <sys/ipc.h>\fP
+\fB#include <sys/msg.h>\fP
+
+\fBint msgctl(int \fP\fImsqid\fP\fB, int \fP\fIcmd\fP\fB, struct msqid_ds *\fP\fIbuf\fP\fB);\fP
+.fi
+.SH 説明
+\fBmsgctl\fP()  はメッセージ・キュー識別子 \fImsqid\fP で指定された System V メッセージ・キュー (message
+queue) に対して \fIcmd\fP で指定された制御操作を行なう。
+.PP
+\fImsqid_ds\fP データ構造体は \fI<sys/msg.h>\fP で以下のように定義されている:
+.nf
+.in +4n
+
+struct msqid_ds {
+    struct ipc_perm msg_perm;     /* 所有権と許可 */
+    time_t          msg_stime;    /* 最後の msgsnd(2) の時刻 */
+    time_t          msg_rtime;    /* 最後の msgrcv(2) の時刻 */
+    time_t          msg_ctime;    /* 最後に変更が行われた時刻 */
+    unsigned long   __msg_cbytes; /* キューにある現在のバイト数
+                                     (非標準) */
+    msgqnum_t       msg_qnum;     /* キューにある現在入っている
+                                     メッセージの数 */
+    msglen_t        msg_qbytes;   /* キューに許可されている
+                                     最大バイト数 */
+    pid_t           msg_lspid;    /* 最後の msgsnd(2) の PID */
+    pid_t           msg_lrpid;    /* 最後の msgrcv(2) の PID */
+};
+.in
+.fi
+.PP
+\fIipc_perm\fP 構造体は以下のように定義されている (強調されたフィールドは \fBIPC_SET\fP を使って設定可能である):
+.PP
+.nf
+.in +4n
+struct ipc_perm {
+    key_t          __key;       /* msgget(2) に与えるキー */
+    uid_t          \fBuid\fP;         /* 所有者の実効 UID */
+    gid_t          \fBgid\fP;         /* 所有者の実効 GID */
+    uid_t          cuid;        /* 作成者の実効 UID */
+    gid_t          cgid;        /* 作成者の実効 GID */
+    unsigned short \fBmode\fP;        /* 許可 */
+    unsigned short __seq;       /* シーケンス番号 */
+};
+.in
+.fi
+.PP
+\fIcmd\fP として有効な値は:
+.TP 
+\fBIPC_STAT\fP
+\fImsqid\fP に関連づけられたメッセージ・キュー・データ構造体から、ポインタ \fIbuf\fP が指し示す \fImsqid_ds\fP
+構造体に情報をコピーする。 呼び出し側はメッセージ・キューに対する読み込み許可を持っていなければならない。
+.TP 
+\fBIPC_SET\fP
+ポインタ \fIbuf\fP が指し示す \fImsqid_ds\fP 構造体のメンバーの値を、メッセージ・キューに関連づけられた
+カーネル・データ構造体に書き込み、 \fImsg_ctime\fP メンバーも更新する。 構造体のメンバーのうち、更新されるものを以下に示す:
+\fImsg_qbytes\fP, \fImsg_perm.uid\fP, \fImsg_perm.gid\fP, \fImsg_perm.mode\fP (の下位 9
+ビット)。 呼び出したプロセスの実効ユーザ ID が、メッセージ・キューの所有者 (\fImsg_perm.uid\fP)  または作成者
+(\fImsg_perm.cuid\fP)  と一致するか、呼び出し元が特権を持たなければならない。 \fImsg_qbytes\fP をシステム・パラメータの
+\fBMSGMNB\fP を超えて設定するには、適切な特権 (Linux では \fBCAP_IPC_RESOURCE\fP ケーパビリティ
+(capability)) が必要である。
+.TP 
+\fBIPC_RMID\fP
+メッセージ・キューをただちに削除する。 同時にその構造体の読み書きの待ち状態にあったプロセスに通知する (エラーが返り、 \fIerrno\fP が
+\fBEIDRM\fP に設定される)。 呼び出したプロセスが適切な特権を持っているか、 呼び出したプロセスの実効ユーザ ID がメッセージ・キューの作成者か
+所有者の実効ユーザ ID でなければならない。
+.TP 
+\fBIPC_INFO\fP (Linux 固有)
+システム全体でのメッセージ・キューの制限とパラメータに関する情報を、 \fIbuf\fP が指す構造体に入れて返す。 この構造体は \fImsginfo\fP
+型である (そのためキャストが必要である)。 \fImsginfo\fP は \fB_GNU_SOURCE\fP 機能検査マクロが定義された場合に
+\fI<sys/msg.h>\fP で以下のように定義される:
+.nf
+.in +4n
+
+struct msginfo {
+    int msgpool; /* メッセージ・データの保持に使用される
+                    バッファ・プールの大きさ (1024 バイト単位);
+                    カーネル内では未使用 */
+    int msgmap;  /* メッセージ・マップの最大エントリ数;
+                    カーネル内では未使用 */
+    int msgmax;  /* 一つのメッセージに書き込み可能な
+                    最大バイト数 */
+    int msgmnb;  /* 一つのキューに書き込み可能な最大バイト数;
+                    (msgget(2) での) キュー作成中の msg_qbytes
+                    の初期化に使用される */
+    int msgmni;  /* メッセージ・キューの数の最大値 */
+    int msgssz;  /* メッセージ・セグメントのサイズ;
+                    カーネル内では未使用 */
+    int msgtql;  /* システム上の全キューの最大メッセージ数;
+                    カーネル内では未使用 */
+    unsigned short int msgseg;
+                 /* 最大セグメント数; カーネル内では未使用 */
+};
+
+.in
+.fi
+設定 \fImsgmni ,\fP \fImsgmax ,\fP \fImsgmnb\fP は \fI/proc\fP にある同じ名前のファイル経由で変更可能である。 詳しくは
+\fBproc\fP(5)  を参照。
+.TP 
+\fBMSG_INFO\fP (Linux 固有)
+\fBIPC_INFO\fP のときと同じ情報を格納した \fImsginfo\fP 構造体を返す。 但し、以下のフィールドにはメッセージ・キューが
+消費しているシステム資源に関する情報が格納される点が異なる。 \fImsgpool\fP フィールドは現在システム上に存在するメッセージ・キューの数を返す。
+\fImsgmap\fP フィールドはシステム上の全てのキューに入っているメッセージ総数を返す。 \fImsgtql\fP
+フィールドはシステム上の全てのキューに入っている全メッセージの 総バイト数を返す。
+.TP 
+\fBMSG_STAT\fP (Linux 固有)
+\fBIPC_STAT\fP と同じく \fImsqid_ds\fP 構造体を返す。 但し、 \fImsqid\fP
+引き数は、キュー識別子ではなく、システム上の全てのメッセージ・キュー に関する情報を管理するカーネルの内部配列へのインデックスである。
+.SH 返り値
+成功すると、 \fBIPC_STAT\fP, \fBIPC_SET\fP, \fBIPC_RMID\fP は 0 を返す。 \fBIPC_INFO\fP と
+\fBMSG_INFO\fP 操作は、成功すると、全てのメッセージ・キューに関する情報を 管理しているカーネルの内部配列の使用中エントリのインデックスの
+うち最大値を返す (この情報は、システムの全てのメッセージ・キューに関する情報を 取得するために、 \fBMSG_STAT\fP
+操作を繰り返し実行する際に使用できる)。 \fBMSG_STAT\fP 操作は、成功すると、 \fImsqid\fP
+で指定されたインデックスを持つメッセージ・キューの識別子を返す。
+
+エラーの場合は \-1 を返し、 \fIerrno\fP を適切に設定する。
+.SH エラー
+失敗した場合、 \fIerrno\fP は以下の値の中のどれか一つに設定される:
+.TP 
+\fBEACCES\fP
+引き数 \fIcmd\fP が \fBIPC_STAT\fP または \fBMSG_STAT\fP に等しいが、呼び出したプロセスがメッセージ・キュー \fImsqid\fP
+に対する読み込み許可を持っておらず、かつ \fBCAP_IPC_OWNER\fP ケーパビリティを持っていない。
+.TP 
+\fBEFAULT\fP
+引き数 \fIcmd\fP が \fBIPC_SET\fP か \fBIPC_STAT\fP で、ポインタ \fIbuf\fP で指されているアドレスがアクセス可能でない。
+.TP 
+\fBEIDRM\fP
+メッセージ・キューが削除された。
+.TP 
+\fBEINVAL\fP
+\fIcmd\fP または \fImsqid\fP に不正な値が設定された。 もしくは、 \fBMSG_STAT\fP 操作の場合に、 \fImsqid\fP
+で指定されたインデックス値が現在未使用の配列のスロットを参照いていた。
+.TP 
+\fBEPERM\fP
+引き数 \fIcmd\fP が \fBIPC_SET\fP か \fBIPC_RMID\fP であるが、呼び出したプロセスの実効ユーザ ID がメッセージキューの
+(\fImsg_perm.cuid\fP として見つかる) 作成者 と (\fImsg_perm.uid\fP として見つかる) 所有者のいずれでもなく、
+かつ呼び出したプロセスに特権 (Linux では \fBCAP_SYS_ADMIN\fP ケーパビリティ) がない。
+.SH 準拠
+.\" SVID does not document the EIDRM error condition.
+SVr4, POSIX.1\-2001.
+.SH 注意
+.\" Like Linux, the FreeBSD man pages still document
+.\" the inclusion of these header files.
+The inclusion of \fI<sys/types.h>\fP and \fI<sys/ipc.h>\fP isn't
+required on Linux or by any version of POSIX.  However, some old
+implementations required the inclusion of these header files, and the SVID
+also documented their inclusion.  Applications intended to be portable to
+such old systems may need to include these header files.
+
+\fBIPC_INFO\fP, \fBMSG_STAT\fP, \fBMSG_INFO\fP 操作は、 \fBipcs\fP(1)
+プログラムで割り当て済の資源に関する情報を提供するために 使用されている。将来、これらの操作は変更されたり、 /proc
+ファイルシステムのインタフェースに移動されるかもしれない。
+
+\fIstruct msqid_ds\fP 内の多くのフィールドは、 Linux 2.2 では \fIshort\fP だったが、Linux 2.4 では
+\fIlong\fP になった。 この利点を生かすには、glibc\-2.1.91 以降の環境下で 再コンパイルすれば十分である。
+(カーネルは新しい形式の呼び出しと古い形式の呼び出しを \fIcmd\fP 内の \fBIPC_64\fP フラグで区別する。)
+.SH 関連項目
+\fBmsgget\fP(2), \fBmsgrcv\fP(2), \fBmsgsnd\fP(2), \fBcapabilities\fP(7),
+\fBmq_overview\fP(7), \fBsvipc\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/msgget.2 b/manual/LDP_man-pages/draft/man2/msgget.2
new file mode 100644 (file)
index 0000000..fd6fc8a
--- /dev/null
@@ -0,0 +1,133 @@
+.\" Copyright 1993 Giorgio Ciucci <giorgio@crcc.it>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Added correction due to Nick Duffek <nsd@bbc.com>, aeb, 960426
+.\" Modified Wed Nov  6 04:00:31 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified, 8 Jan 2003, Michael Kerrisk, <mtk.manpages@gmail.com>
+.\"    Removed EIDRM from errors - that can't happen...
+.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on capability requirements
+.\" Modified, 11 Nov 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Language and formatting clean-ups
+.\"    Added notes on /proc files
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MSGGET 2 2012\-05\-31 Linux "Linux Programmer's Manual"
+.SH 名前
+msgget \- System V メッセージ・キュー識別子を取得する
+.SH 書式
+.nf
+\fB#include <sys/types.h>\fP
+\fB#include <sys/ipc.h>\fP
+\fB#include <sys/msg.h>\fP
+
+\fBint msgget(key_t \fP\fIkey\fP\fB, int \fP\fImsgflg\fP\fB);\fP
+.fi
+.SH 説明
+\fBmsgget\fP()  システムコールは \fIkey\fP 引き数の値に対応する System V メッセージ・キューの識別子を返す。 \fIkey\fP
+の値が \fBIPC_PRIVATE\fP の場合、または \fIkey\fP が \fBIPC_PRIVATE\fP でなくても、 \fIkey\fP
+に対応するメッセージ・キューが存在せず、 \fImsgflg\fP に \fBIPC_CREAT\fP が指定されている場合、
+新しいメッセージ・キューが作成される。
+.PP
+\fImsgflg\fP に \fBIPC_CREAT\fP と \fBIPC_EXCL\fP の両方が指定された場合、 \fIkey\fP
+に対応するメッセージ・キューが既に存在すると、 \fBmsgget\fP()  は失敗し、 \fIerrno\fP に \fBEEXIST\fP が設定される。 (これは
+\fBopen\fP(2)  に \fBO_CREAT | O_EXCL\fP を指定した場合の動作と同じである)
+.PP
+メッセージ・キューの作成時に、 \fImsgflg\fP 引き数の下位 9 ビットは、 そのメッセージ・キューのアクセス許可の定義として使用される。
+これらの許可ビットは \fBopen\fP(2)  の引き数 \fImode\fP と同じ形式で同じ意味である。 や \fBcreat\fP(2)
+システム・コールのアクセス許可パラメータと同じ形式で、同じ意味を持つ。 (但し、実行 (execute) 許可は使用されない。)
+.PP
+新規のメッセージ・キューを作成する際、 \fBmsgget\fP()  システム・コールはメッセージ・キューのデータ構造体 \fImsqid_ds\fP
+を以下のように初期化する (\fImsqid_ds\fP については \fBmsgctl\fP(2)  を参照):
+.IP
+\fImsg_perm.cuid\fP と \fImsg_perm.uid\fP に呼び出し元プロセスの実効 (effective) ユーザーID を設定する。
+.IP
+\fImsg_perm.cgid\fP と \fImsg_perm.gid\fP に呼び出し元プロセスの実効 (effective) グループID を設定する。
+.IP
+\fImsg_perm.mode\fP の下位 9 ビットは \fImsgflg\fP の下位 9 ビットを設定する。
+.IP
+\fImsg_qnum\fP, \fImsg_lspid\fP, \fImsg_lrpid\fP, \fImsg_stime\fP, \fImsg_rtime\fP に 0
+を設定される。
+.IP
+\fImsg_ctime\fP に現在の時刻を設定する。
+.IP
+\fImsg_qbytes\fP に、システムで決められたメッセージ・キューの最大サイズ \fBMSGMNB\fP を設定する。
+.PP
+メッセージ・キューがすでに存在する場合は、アクセス許可の検査と、 破棄 (destruction) マークがないかの確認が行われる。
+.SH 返り値
+成功した場合、返り値はメッセージ・キュー識別子 (非負の整数) となる。 失敗した場合は \-1 が返され、 \fIerrno\fP にそのエラーが示される。
+.SH エラー
+失敗した場合、 \fIerrno\fP に以下の値のいずれか一つが設定される:
+.TP 
+\fBEACCES\fP
+\fIkey\fP に対応するメッセージ・キューは存在するが、 呼び出し元プロセスはそのキューに対するアクセス許可がなく、 \fBCAP_IPC_OWNER\fP
+ケーパビリティも持っていない。
+.TP 
+\fBEEXIST\fP
+\fIkey\fP に対応するメッセージ・キューが存在し、 \fImsgflg\fP に \fBIPC_CREAT\fP と \fBIPC_EXCL\fP が指定されていた。
+.TP 
+\fBENOENT\fP
+\fIkey\fP に対応するメッセージ・キューが存在せず、 \fImsgflg\fP に \fBIPC_CREAT\fP が指定されていなかった。
+.TP 
+\fBENOMEM\fP
+メッセージ・キューを作成しようとしたが、新しいデータ構造体を作成 するのに十分なメモリがシステムに存在しない。
+.TP 
+\fBENOSPC\fP
+メッセージ・キューを作成しようとしたが、作成すると システム全体のメッセージ・キュー数の最大値 (\fBMSGMNI\fP)  を超えてしまう。
+.SH 準拠
+SVr4, POSIX.1\-2001.
+.SH 注意
+.\" Like Linux, the FreeBSD man pages still document
+.\" the inclusion of these header files.
+The inclusion of \fI<sys/types.h>\fP and \fI<sys/ipc.h>\fP isn't
+required on Linux or by any version of POSIX.  However, some old
+implementations required the inclusion of these header files, and the SVID
+also documented their inclusion.  Applications intended to be portable to
+such old systems may need to include these header files.
+
+\fBIPC_PRIVATE\fP はフラグではなく、 \fIkey_t\fP 型である。 この特別な値が \fIkey\fP として使用された場合、
+\fBmsgget\fP()  システムコールは \fImsgflg\fP の下位 9 ビット以外の全てを無視して (成功した場合は)
+新しいメッセージ・キューを作成する。
+.PP
+\fBmsgget\fP()  システムコールに影響を及ぼすメッセージ・キューの資源の システムとしての制限を以下に示す:
+.TP 
+\fBMSGMNI\fP
+システム全体のメッセージ・キュー数の最大値: 方針依存 (Linux では、この制限値は \fI/proc/sys/kernel/msgmni\fP
+経由で参照したり、変更したりできる)。
+.SS "Linux での注意"
+Linux 2.3.20 までは、削除が予定されているメッセージ・キューに対して \fBmsgget\fP()  を行うと \fBEIDRM\fP
+がエラーとして返されるようになっていた。
+.SH バグ
+\fBIPC_PRIVATE\fP という名前を選んだのはおそらく失敗であろう。 \fBIPC_NEW\fP の方がより明確にその機能を表しているだろう。
+.SH 関連項目
+\fBmsgctl\fP(2), \fBmsgrcv\fP(2), \fBmsgsnd\fP(2), \fBftok\fP(3), \fBcapabilities\fP(7),
+\fBmq_overview\fP(7), \fBsvipc\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/msgop.2 b/manual/LDP_man-pages/draft/man2/msgop.2
new file mode 100644 (file)
index 0000000..00600b2
--- /dev/null
@@ -0,0 +1,239 @@
+.\" Copyright 1993 Giorgio Ciucci <giorgio@crcc.it>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified Tue Oct 22 16:40:11 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified Mon Jul 10 21:09:59 2000 by aeb
+.\" Modified 1 Jun 2002, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Language clean-ups.
+.\"    Enhanced and corrected information on msg_qbytes, MSGMNB and MSGMAX
+.\"    Added note on restart behavior of msgsnd() and msgrcv()
+.\"    Formatting clean-ups (argument and field names marked as .I
+.\"            instead of .B)
+.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on capability requirements
+.\" Modified, 11 Nov 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Language and formatting clean-ups
+.\"    Added notes on /proc files
+.\" FIXME . Add example programs to this page.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MSGOP 2 2012\-05\-31 Linux "Linux Programmer's Manual"
+.SH 名前
+msgrcv, msgsnd \- System V メッセージキュー操作
+.SH 書式
+.nf
+\fB#include <sys/types.h>\fP
+\fB#include <sys/ipc.h>\fP
+\fB#include <sys/msg.h>\fP
+.sp
+\fBint msgsnd(int \fP\fImsqid\fP\fB, const void *\fP\fImsgp\fP\fB, size_t \fP\fImsgsz\fP\fB, int \fP\fImsgflg\fP\fB);\fP
+.sp
+\fBssize_t msgrcv(int \fP\fImsqid\fP\fB, void *\fP\fImsgp\fP\fB, size_t \fP\fImsgsz\fP\fB, long \fP\fImsgtyp\fP\fB,\fP
+\fB               int \fP\fImsgflg\fP\fB);\fP
+.fi
+.SH 説明
+システムコール \fBmsgsnd\fP()  と \fBmsgrcv\fP()  はそれぞれ、 System V メッセージ・キューへのメッセージの送信と、
+メッセージの受信に使用される。呼び出し元プロセスは、 メッセージを送信するためにはメッセージ・キューに対する書き込み許可を、
+メッセージを受信するためには読み出し許可を持っていなければならない。
+.PP
+呼び出し元プロセスは以下に示す構造体を用意し、この構造体への ポインタを \fImsgp\fP 引き数として渡す。
+.in +4n
+.nf
+
+struct msgbuf {
+    long mtype;       /* message type, must be > 0 */
+    char mtext[1];    /* message data */
+};
+.fi
+.in
+.PP
+\fImtext\fP フィールドは配列 (または他の構造体) で、その大きさは 非負の整数である \fImsgsz\fP で指定される。 長さ 0 のメッセージ
+(つまり \fImtext\fP フィールドがないメッセージ) も認められている。 \fBmtype\fP フィールドは厳密に正の整数でなければならない。
+この値は、メッセージを受信するプロセスでメッセージを選択するために 使用される (下記の \fBmsgrcv\fP()  の説明を参照のこと)。
+.SS msgsnd()
+\fBmsgsnd\fP()  システムコールは \fImsgp\fP 引き数で指定されたメッセージのコピーを \fImsqid\fP
+で指定された識別子を持つメッセージ・キューへ追加する。
+.PP
+キューに十分な空き容量がある場合、 \fBmsgsnd\fP()  は直ちに成功する。 (キューの容量は、メッセージ・キューのデータ構造体の
+\fImsg_qbytes\fP フィールドで定義される。 キュー作成時にこのフィールドは \fBMSGMNB\fP に初期化されるが、この制限は
+\fBmsgctl\fP(2)  を使って変更できる。)  キューに十分な空き容量がない場合、 デフォルトでは \fBmsgsnd\fP()
+は空き容量ができるまで停止 (block) する。 \fImsgflg\fP に \fBIPC_NOWAIT\fP が指定された場合は、エラー \fBEAGAIN\fP
+で失敗する。
+
+停止している \fBmsgsnd\fP()  は以下の場合にも失敗する。
+.IP * 2
+キューが削除された。 この場合、 \fIerrno\fP は \fBEIDRM\fP に設定される。
+.IP *
+シグナルが捕捉された。 この場合、 \fIerrno\fP は \fBEINTR\fP に設定される。 \fBsignal\fP(7)  参照。 (\fBmsgsnd\fP()
+は、たとえシグナルハンドラの設定時に \fBSA_RESTART\fP を指定していたとしても、シグナルハンドラによって割り込まれた後で
+自動的に再スタートすることは決してない。)
+.PP
+正常に終了した場合、メッセージ・キューのデータ構造体は以下のように 更新される:
+.IP
+\fImsg_lspid\fP には呼び出し元プロセスのプロセス ID が設定される。
+.IP
+\fImsg_qnum\fP は 1 増加する。
+.IP
+\fImsg_stime\fP には現在時刻が設定される。
+.SS msgrcv()
+\fBmsgrcv\fP()  システムコールは \fImsqid\fP で指定されたキューからメッセージを削除し、 \fImsgp\fP
+で指定されたバッファにそのメッセージを格納する。
+.PP
+\fImsgsz\fP 引き数には \fImsgp\fP 引き数で指定された構造体の \fImtext\fP メンバーの最大のバイト数を指定する。
+メッセージのテキストの長さが \fImsgsz\fP より大きい場合の動作は、 \fImsgflg\fP に \fBMSG_NOERROR\fP
+が指定されているかどうかで決まる。 \fBMSG_NOERROR\fP が指定されていれば、メッセージのテキストは切り詰められる
+(切り捨てられた部分は失われる)。 \fBMSG_NOERROR\fP が指定されていなければ、メッセージはキューから削除されず、 システムコールは \-1
+を返して失敗し、 \fIerrno\fP に \fBE2BIG\fP が設定される。
+.PP
+\fImsgtyp\fP 引き数には要求するメッセージの型を指定する。 型は以下のように指定する:
+.IP * 2
+\fImsgtyp\fP が 0 ならば、キューの最初にあるメッセージが読み込まれる。
+.IP *
+\fImsgtyp\fP が 0 より大きい場合、 \fImsgflg\fP に \fBMSG_EXCEPT\fP が指定されていなければ、 \fImsgtyp\fP
+型のキューの最初のメッセージが読み込まれる。 \fBMSG_EXCEPT\fP が指定された場合は、 \fImsgtyp\fP
+型以外のキューの最初のメッセージが読み込まれる。
+.IP *
+\fImsgtyp\fP が 0 より小さければ、 \fImsgtyp\fP の絶対値以下で最も小さい型を持つキューの最初のメッセージが読み込まれる。
+.PP
+\fImsgflg\fP 引き数には、以下のフラグを任意の数だけ (0個も可)、これらの OR で指定する:
+.TP 
+\fBIPC_NOWAIT\fP
+キューに要求された型のメッセージがない場合には直ちに返る。 システムコールは失敗し、 \fIerrno\fP には \fBENOMSG\fP が設定される。
+.TP 
+\fBMSG_EXCEPT\fP
+0 より大きな \fImsgtyp\fP と一緒に使用して、 \fImsgtyp\fP 以外のキューの最初のメッセージを読み込む。
+.TP 
+\fBMSG_NOERROR\fP
+\fImsgsz\fP バイトよりも長かった場合はメッセージのテキストを切り詰める。
+.PP
+要求された型のメッセージが存在せず、 \fImsgflg\fP に \fBIPC_NOWAIT\fP が指定されていなかった場合、呼び出し元プロセスは
+以下のいずれかの状況になるまで停止 (block) される:
+.IP * 2
+要求している型のメッセージがキューへ入れられた。
+.IP *
+メッセージ・キューがシステムから削除された。 この場合、システムコールは失敗し、 \fIerrno\fP に \fBEIDRM\fP が設定される。
+.IP *
+呼び出し元プロセスがシグナルを捕獲した。 この場合、システムコールは失敗し、 \fIerrno\fP に \fBEINTR\fP が設定される。
+(\fBmsgrcv\fP()  は、たとえシグナルハンドラの設定時に \fBSA_RESTART\fP
+を指定していたとしても、シグナルハンドラによって割り込まれた後で 自動的に再スタートすることは決してない。)
+.PP
+正常に終了した場合、メッセージ・キューのデータ構造体は以下のように 更新される:
+.IP
+\fImsg_lrpid\fP には呼び出し元プロセスのプロセス ID が設定される。
+.IP
+\fImsg_qnum\fP は 1 減算される。
+.IP
+\fImsg_rtime\fP には現在の時刻が設定される。
+.SH 返り値
+失敗した場合は、どちらの関数も \-1 を返し、エラーを \fIerrno\fP に表示する。成功した場合、 \fBmsgsnd\fP()  は 0 を返し、
+\fBmsgrcv\fP()  は \fImtext\fP 配列に実際にコピーしたバイト数を返す。
+.SH エラー
+\fBmsgsnd\fP()  が失敗した場合、 \fBerrno\fP に以下の値のいずれかが設定される:
+.TP 
+\fBEACCES\fP
+呼び出し元プロセスにはメッセージ・キューに対する書き込み許可がなく、 \fBCAP_IPC_OWNER\fP ケーパビリティもない。
+.TP 
+\fBEAGAIN\fP
+\fImsg_qbytes\fP がキューの制限を超えていたため、メッセージを送ることができず、かつ \fImsgflg\fP に \fBIPC_NOWAIT\fP
+が指定されていた。
+.TP 
+\fBEFAULT\fP
+\fImsgp\fP が指しているアドレスがアクセス可能でない。
+.TP 
+\fBEIDRM\fP
+メッセージ・キューが削除された。
+.TP 
+\fBEINTR\fP
+メッセージ・キューが要求した条件を満たすまで停止している時に、 プロセスがシグナルを捕獲した。
+.TP 
+\fBEINVAL\fP
+\fImsqid\fP が不適切な値であるか、 \fImtype\fP が正の値でないか、 \fImsgsz\fP が不適切な値 (0 以下か、システムで決まる値
+\fBMSGMAX\fP よりも大きい値) である。
+.TP 
+\fBENOMEM\fP
+\fImsgp\fP が指すメッセージのコピーを作成するのに十分なメモリがシステムに存在しない。
+.PP
+\fBmsgrcv\fP()  が失敗した場合には \fIerrno\fP に以下の値のいずれかが設定される:
+.TP 
+\fBE2BIG\fP
+メッセージのテキストの長さが \fImsgsz\fP よりも大きく、 \fImsgflg\fP に \fBMSG_NOERROR\fP が設定されていなかった。
+.TP 
+\fBEACCES\fP
+呼び出し元プロセスにはメッセージ・キューに対する読み込み許可がなく、 \fBCAP_IPC_OWNER\fP ケーパビリティもない。
+.TP 
+\fBEAGAIN\fP
+キューにはメッセージがなく、 \fImsgflg\fP に \fBIPC_NOWAIT\fP が指定された。
+.TP 
+\fBEFAULT\fP
+\fImsgp\fP が指しているアドレスがアクセス可能でない。
+.TP 
+\fBEIDRM\fP
+メッセージを受信するためにプロセスが停止している間に、 メッセージ・キューが削除された。
+.TP 
+\fBEINTR\fP
+メッセージを受けるためにプロセスが停止している間に、 プロセスがシグナルを捕獲した。 \fBsignal\fP(7)  参照。
+.TP 
+\fBEINVAL\fP
+\fImsgqid\fP が不正か、 \fImsgsz\fP が 0 より小さい。
+.TP 
+\fBENOMSG\fP
+\fImsgflg\fP に \fBIPC_NOWAIT\fP が設定されており、 メッセージ・キューに要求された型のメッセージが存在しなかった。
+.SH 準拠
+SVr4, POSIX.1\-2001.
+.SH 注意
+.\" Like Linux, the FreeBSD man pages still document
+.\" the inclusion of these header files.
+The inclusion of \fI<sys/types.h>\fP and \fI<sys/ipc.h>\fP isn't
+required on Linux or by any version of POSIX.  However, some old
+implementations required the inclusion of these header files, and the SVID
+also documented their inclusion.  Applications intended to be portable to
+such old systems may need to include these header files.
+
+\fImsgp\fP 引き数は、 libc4, libc5, glibc 2.0, glibc 2.1 では \fIstruct msgbuf *\fP
+と宣言されている。glibc 2.2 以降では、 SUSv2 と SUSv3 の要求通り、\fIvoid *\fP と宣言されている。
+
+以下は \fBmsgsnd\fP システムコールに影響するシステム制限である:
+.TP 
+\fBMSGMAX\fP
+メッセージのテキストの最大サイズ: 8192 バイト (Linux では、この制限値は \fI/proc/sys/kernel/msgmax\fP
+経由で読み出したり変更したりできる)。
+.TP 
+\fBMSGMNB\fP
+バイト単位でのメッセージ・キューのデフォルトの最大サイズ : 16384 バイト。 (Linux では、この制限値は
+\fI/proc/sys/kernel/msgmnb\fP 経由で読み出したり変更したりできる)。 スーパーユーザーは \fBmsgctl\fP(2)
+システムコールでメッセージ・キューのサイズを \fBMSGMNB\fP よりも大きい値に増やすことができる。
+.PP
+現在の実装では、システム全体のメッセージ・ヘッダーの最大数 (\fBMSGTQL\fP)  と、システム全体のメッセージ・プールの最大バイト数
+(\fBMSGPOOL\fP)  に関して実装依存の制限はない。
+.SH 関連項目
+\fBmsgctl\fP(2), \fBmsgget\fP(2), \fBcapabilities\fP(7), \fBmq_overview\fP(7),
+\fBsvipc\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8480314..881acd9 100644 (file)
@@ -75,6 +75,6 @@ POSIX.1\-2001.
 
 B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128\-129 and 389\-391.
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8d295fe..cb8b7ce 100644 (file)
@@ -126,6 +126,6 @@ Linux 2.4 では、 \fBnanosleep\fP()  が (\fBSIGTSTP\fP などの) シグナ
 \fBclock_nanosleep\fP(2), \fBsched_setscheduler\fP(2), \fBtimer_create\fP(2),
 \fBsleep\fP(3), \fBusleep\fP(3), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b184664..88c1e3e 100644 (file)
@@ -57,6 +57,6 @@ union nfsctl_res {
 .SH 準拠
 このコールは Linux 特有である。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index baab8a6..abf5f46 100644 (file)
@@ -75,6 +75,6 @@ glibc 2.2.4 以降では、 \fBnice\fP()  は \fBgetpriority\fP(2)  を呼び出
 \fBnice\fP(1), \fBrenice\fP(1), \fBfork\fP(2), \fBgetpriority\fP(2), \fBsetpriority\fP(2),
 \fBcapabilities\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/open.2 b/manual/LDP_man-pages/draft/man2/open.2
new file mode 100644 (file)
index 0000000..f1422ad
--- /dev/null
@@ -0,0 +1,500 @@
+.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
+.\"             and Copyright (C) 1993 Michael Haardt, Ian Jackson.
+.\"             and Copyright (C) 2008 Greg Banks
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified 1993-07-21 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 1994-08-21 by Michael Haardt
+.\" Modified 1996-04-13 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified 1996-05-13 by Thomas Koenig
+.\" Modified 1996-12-20 by Michael Haardt
+.\" Modified 1999-02-19 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified 1998-11-28 by Joseph S. Myers <jsm28@hermes.cam.ac.uk>
+.\" Modified 1999-06-03 by Michael Haardt
+.\" Modified 2002-05-07 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" 2004-12-08, mtk, reordered flags list alphabetically
+.\" 2004-12-08, Martin Pool <mbp@sourcefrog.net> (& mtk), added O_NOATIME
+.\" 2007-09-18, mtk, Added description of O_CLOEXEC + other minor edits
+.\" 2008-01-03, mtk, with input from Trond Myklebust
+.\"     <trond.myklebust@fys.uio.no> and Timo Sirainen <tss@iki.fi>
+.\"     Rewrite description of O_EXCL.
+.\" 2008-01-11, Greg Banks <gnb@melbourne.sgi.com>: add more detail
+.\"     on O_DIRECT.
+.\" 2008-02-26, Michael Haardt: Reorganized text for O_CREAT and mode
+.\"
+.\" FIXME . Apr 08: The next POSIX revision has O_EXEC, O_SEARCH, and
+.\" O_TTYINIT.  Eventually these may need to be documented.  --mtk
+.\" FIXME Linux 2.6.33 has O_DSYNC, and a hidden __O_SYNC.
+.\" FIXME: Linux 2.6.39 added O_PATH
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH OPEN 2 2013\-02\-18 Linux "Linux Programmer's Manual"
+.SH 名前
+open, creat \- ファイルやデバイスのオープン、作成を行う
+.SH 書式
+.nf
+\fB#include <sys/types.h>\fP
+\fB#include <sys/stat.h>\fP
+\fB#include <fcntl.h>\fP
+.sp
+\fBint open(const char *\fP\fIpathname\fP\fB, int \fP\fIflags\fP\fB);\fP
+\fBint open(const char *\fP\fIpathname\fP\fB, int \fP\fIflags\fP\fB, mode_t \fP\fImode\fP\fB);\fP
+
+\fBint creat(const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB);\fP
+.fi
+.SH 説明
+ファイルの \fIpathname\fP を与えると、 \fBopen\fP()  はファイルディスクリプタを返す。
+ファイルディスクリプタは、この後に続くシステムコール (\fBread\fP(2), \fBwrite\fP(2), \fBlseek\fP(2),
+\fBfcntl\fP(2) など)  で使用される小さな非負の整数である。 このシステムコールが成功した場合に返されるファイルディスクリプタは
+そのプロセスがその時点でオープンしていないファイルディスクリプタの うち最小の数字のものとなる。
+.PP
+デフォルトでは、新しいファイルディスクリプタは \fBexecve\fP(2) を実行した後も
+オープンされたままとなる (つまり、 \fBfcntl\fP(2) に説明がある \fBFD_CLOEXEC\fP
+ファイルディスクリプタフラグは最初は無効である; 後述の \fBO_CLOEXEC\fP フラグ
+を使うとこのデフォルトを変更することができる)。 ファイルオフセット
+(file offset) はファイルの先頭に設定される (\fBlseek\fP(2) 参照)。
+.PP
+\fBopen\fP()  を呼び出すと、「オープンファイル記述」 \fI(open file description)\fP
+が作成される。ファイル記述とは、システム全体の オープン中のファイルのテーブルのエントリである。 このエントリは、ファイルオフセットとファイル状態フラグ
+(\fBfcntl\fP(2)  \fBF_SETFL\fP 操作により変更可能) が保持する。 ファイルディスクリプタはこれらのエントリの一つへの参照である。
+この後で \fIpathname\fP が削除されたり、他のファイルを参照するように変更されたりしても、 この参照は影響を受けない。
+新しいオープンファイル記述は最初は他のどのプロセスとも 共有されていないが、 \fBfork\fP(2)  で共有が起こる場合がある。
+.PP
+引き数 \fIflags\fP には、アクセスモード \fBO_RDONLY\fP, \fBO_WRONLY\fP, \fBO_RDWR\fP
+のどれかひとつが入っていなければならない。 これらはそれぞれ読み込み専用、書き込み専用、読み書き用に ファイルをオープンすることを要求するものである。
+
+.\" SUSv4 divides the flags into:
+.\" * Access mode
+.\" * File creation
+.\" * File status
+.\" * Other (O_CLOEXEC, O_DIRECTORY, O_NOFOLLOW)
+.\" though it's not clear what the difference between "other" and
+.\" "File creation" flags is.  I raised an Aardvark to see if this
+.\" can be clarified in SUSv4; 10 Oct 2008.
+.\" http://thread.gmane.org/gmane.comp.standards.posix.austin.general/64/focus=67
+.\" TC1 (balloted in 2013), resolved this, so that those three constants
+.\" are also categorized" as file status flags.
+.\"
+さらに、 \fIflags\fP には、ファイル作成フラグ (file creation flag) とファイル状態フラグ (file status
+flag) を 0 個以上「ビット単位の OR (bitwise\-or)」で 指定することができる。 \fIファイル作成フラグ\fP は
+\fBO_CLOEXEC\fP, \fBO_CREAT\fP, \fBO_DIRECTORY\fP, \fBO_EXCL\fP, \fBO_NOCTTY\fP,
+\fBO_NOFOLLOW\fP, \fBO_TRUNC\fP, \fBO_TTY_INIT\fP である。 \fIファイル状態フラグ\fP
+は以下のリストのうち上記以外の残りのものである。 二種類のフラグの違いは、ファイル状態フラグの方は \fBfcntl\fP(2)
+を使ってその内容を取得したり (場合によっては) 変更したりできる点にある。 ファイル作成フラグとファイル状態フラグの全リストを以下に示す:
+.TP 
+\fBO_APPEND\fP
+.\" For more background, see
+.\" http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=453946
+.\" http://nfs.sourceforge.net/
+ファイルを追加 (append) モードでオープンする。 毎回の \fBwrite\fP(2)  の前に \fBlseek\fP(2)
+を行ったかのように、ファイルポインタをファイルの最後に移動する。 NFS ファイルシステムで、 \fBO_APPEND\fP
+を使用すると、複数のプロセスがひとつのファイルに同時にデータを追加した場合、 ファイルが壊れてしまうことがある。 これは NFS
+が追加モードをサポートしていないため、 クライアントのカーネル (kernel) がそれをシミュレートしなければならないのだが、
+競合状態を避けることはできないからである。
+.TP 
+\fBO_ASYNC\fP
+シグナル駆動 I/O (signal\-driven I/O) を有効にする: このファイルディスクリプタへの
+入力または出力が可能になった場合に、シグナルを生成する (デフォルトは \fBSIGIO\fP であるが、 \fBfcntl\fP(2)
+によって変更可能である)。 この機能が使用可能なのは端末、疑似端末、ソケットのみであり、 (Linux 2.6 以降では) パイプと FIFO
+に対しても使用できる。 さらに詳しい説明は \fBfcntl\fP(2)  を参照すること。
+.TP 
+\fBO_CLOEXEC\fP (Linux 2.6.23 以降)
+.\" This flag fixes only one form of the race condition;
+.\" The race can also occur with, for example, descriptors
+.\" returned by accept(), pipe(), etc.
+新しいファイルディスクリプタに対して close\-on\-exec フラグを有効にする。 このフラグを指定することで、プログラムは
+\fBFD_CLOEXEC\fP フラグをセットするための \fBfcntl\fP(2)  \fBF_SETFD\fP 操作を別途呼び出す必要がなくなる。
+また、ある種のマルチスレッドのプログラムはこのフラグの使用は 不可欠である。なぜなら、個別に \fBFD_CLOEXEC\fP フラグを設定する
+\fBfcntl\fP(2)  \fBF_SETFD\fP 操作を呼び出したとしても、あるスレッドがファイルディスクリプタを オープンするのと同時に別のスレッドが
+\fBfork\fP(2)  と \fBexecve\fP(2)  を実行するという競合条件を避けるのには十分ではないからである。
+.TP 
+\fBO_CREAT\fP
+.\" As at 2.6.25, bsdgroups is supported by ext2, ext3, ext4, and
+.\" XFS (since 2.6.14).
+ファイルが存在しなかった場合は作成 (create) する。 ファイルの所有者 (ユーザー ID) は、プロセスの実効ユーザー ID に設定される。
+グループ所有権 (グループ ID) は、プロセスの実効グループ ID または親ディレクトリのグループ ID に設定される
+(これは、ファイルシステムタイプ、マウントオプション、 親ディレクトリのモードに依存する。 \fBmount\fP(8)  で説明されているマウントオプション
+\fIbsdgroups\fP と \fIsysvgroups\fP を参照)。
+.RS
+.PP
+\fImode\fP は新しいファイルを作成する場合に使用するアクセス許可 (permission) を指定する。 \fIflags\fP に \fBO_CREAT\fP
+が指定されている場合、 \fImode\fP を指定しなければならない。 \fBO_CREAT\fP が指定されていない場合、 \fImode\fP は無視される。
+有効なアクセス許可は、普段と同じようにプロセスの \fIumask\fP によって修正され、作成されたファイルの許可は \fI(mode\ &\ ~umask)\fP となる。 このモードは、新しく作成されたファイルに対するそれ以降のアクセス にのみ適用される点に注意すること。
+読み取り専用のファイルを作成する \fBopen\fP()  コールであっても、 読み書き可能なファイルディスクリプタを返すことがありうる。
+.PP
+\fImode\fP のために以下のシンボル定数が提供されている :
+.TP  9
+\fBS_IRWXU\fP
+00700 ユーザー (ファイルの所有者) に読み込み、書き込み、 実行の許可がある。
+.TP 
+\fBS_IRUSR\fP
+00400 ユーザーに読み込みの許可がある。
+.TP 
+\fBS_IWUSR\fP
+00200 ユーザーに書き込みの許可がある。
+.TP 
+\fBS_IXUSR\fP
+00100 ユーザーに実行の許可がある。
+.TP 
+\fBS_IRWXG\fP
+00070 グループに読み込み、書き込み、実行の許可がある。
+.TP 
+\fBS_IRGRP\fP
+00040 グループに読み込みの許可がある。
+.TP 
+\fBS_IWGRP\fP
+00020 グループに書き込みの許可がある。
+.TP 
+\fBS_IXGRP\fP
+00010 グループに実行の許可がある。
+.TP 
+\fBS_IRWXO\fP
+00007 他人 (others) に読み込み、書き込み、実行の許可がある。
+.TP 
+\fBS_IROTH\fP
+00004 他人に読み込みの許可がある。
+.TP 
+\fBS_IWOTH\fP
+00002 他人に書き込みの許可がある。
+.TP 
+\fBS_IXOTH\fP
+00001 他人に実行の許可がある。
+.RE
+.TP 
+\fBO_DIRECT\fP (Linux 2.4.10 以降)
+このファイルに対する I/O のキャッシュの効果を最小化しようとする。このフラグを使うと、一般的に性能が低下する。
+しかしアプリケーションが独自にキャッシングを行っているような 特別な場合には役に立つ。 ファイルの I/O はユーザー空間バッファに対して直接行われる。
+\fBO_DIRECT\fP フラグ自身はデータを同期で転送しようとはするが、 \fBO_SYNC\fP
+フラグのようにデータと必要なメタデータの転送が保証されるわけではない。同期 I/O を保証するためには、 \fBO_DIRECT\fP に加えて
+\fBO_SYNC\fP を使用しなければならない。下記の「注意」の節の議論も参照。
+.sp
+ブロックデバイスに対する似通った意味のインターフェースが \fBraw\fP(8)  で説明されている (但し、このインタフェースは非推奨である)。
+.TP 
+\fBO_DIRECTORY\fP
+.\" But see the following and its replies:
+.\" http://marc.theaimsgroup.com/?t=112748702800001&r=1&w=2
+.\" [PATCH] open: O_DIRECTORY and O_CREAT together should fail
+.\" O_DIRECTORY | O_CREAT causes O_DIRECTORY to be ignored.
+\fIpathname\fP がディレクトリでなければオープンは失敗する。 このフラグは Linux 特有であり、 \fBopendir\fP(3)  が FIFO
+やテープデバイスに対してコールされた場合の サービス不能 (denial\-of\-service) 攻撃を避けるために カーネル 2.1.126
+で追加された。 しかしこれは \fBopendir\fP(3)  の実装以外では使用するべきではない。
+.TP 
+\fBO_EXCL\fP
+この呼び出しでファイルが作成されることを保証する。このフラグが \fBO_CREAT\fP と
+一緒に指定され、 \fIpathname\fP のファイルが既に存在した場合、 \fBopen\fP() は失敗
+する。
+
+.\" POSIX.1-2001 explicitly requires this behavior.
+これら二つのフラグが指定された際、シンボリックリンクは辿られない。 \fIpathname\fP がシンボリックリンクの場合、
+シンボリックリンクがどこを指しているかに関わらず \fBopen\fP()  は失敗する。
+
+一般的には、 \fBO_CREAT\fP を指定せずに \fBO_EXCL\fP を使用した場合の
+\fBO_EXCL\fP の動作は規定されていない。
+これには一つ例外があり、Linux 2.6 以降では、
+\fIpathname\fP がブロックデバイスを参照している場合、
+\fBO_CREAT\fP なしで \fBO_EXCL\fP を使用することができる。
+システムがそのブロックデバイスを使用中の場合 (例えば、
+マウントされているなど)、 \fBopen\fP() はエラー \fBEBUSY\fP で失敗する。
+
+NFS では、 \fBO_EXCL\fP は、Linux 2.6 以降で NFSv3 以降を使っている場合でのみサポートされる。 \fBO_EXCL\fP
+サポートが提供されていない NFS 環境では、このフラグに頼って ロック処理を実行するプログラムは競合状態 (race condition) に出会う
+可能性がある。 ロックファイルを使用して不可分 (atomic) なファイルロックを実現し、 NFS が \fBO_EXCL\fP
+をサポートしているかに依存しないようにしたい場合、 移植性のある方法は、同じファイルシステム上に他と名前の重ならない ファイル (例えばホスト名と
+PID を組み合わせた名前) を作成し、 \fBlink\fP(2)  を使用してそのロックファイルへのリンクを作成することである。 \fBlink\fP(2)
+コールの返り値が 0 ならばロックに成功している。 あるいは、そのファイルに \fBstat\fP(2)  を使用してリンク数 (link count) が
+2 になっているかをチェックする。 そうなっていれば、同じくロックに成功しているということである。
+.TP 
+\fBO_LARGEFILE\fP
+(LFS) \fIoff_t\fP ではサイズを表せない (だだし \fIoff64_t\fP ではサイズを表せる)ファ
+イルをオープン可能にする。この定義を有効にするためには、(\fIどの\fPヘッダファイ
+ルをインクルードするよりも前に) \fB_LARGEFILE64_SOURCE\fP マクロを定義しなければ
+ならない。
+32 ビットシステムにおいて大きなファイルにアクセスしたい場合、
+(\fBO_LARGEFILE\fP を使うよりも) \fB_FILE_OFFSET_BITS\fP 機能検査マクロを 64 に
+セットする方が望ましい方法である (\fBfeature_test_macros\fP(7) を参照)。
+.TP 
+\fBO_NOATIME\fP (Linux 2.6.8 以降)
+.\" The O_NOATIME flag also affects the treatment of st_atime
+.\" by mmap() and readdir(2), MTK, Dec 04.
+ファイルに対して \fBread\fP(2)  が実行されたときに、最終アクセス時刻 (inode の \fIst_atime\fP) を更新しない。
+このフラグはインデックス作成やバックアッププログラムで使うことを意図している。 これを使うとディスクに対する操作を大幅に減らすことができる。
+このフラグは全てのファイルシステムに対して有効であるわけではない。 その一例が NFS であり、サーバがアクセス時刻を管理している。
+.TP 
+\fBO_NOCTTY\fP
+\fIpathname\fP が端末 (terminal) デバイス \(em \fBtty\fP(4) 参照 \(em を指している
+場合に、たとえそのプロセスが制御端末を持っていなくても、オープンしたファイル
+は制御端末にはならない。
+.TP 
+\fBO_NOFOLLOW\fP
+.\" The headers from glibc 2.0.100 and later include a
+.\" definition of this flag; \fIkernels before 2.1.126 will ignore it if
+.\" used\fP.
+\fIpathname\fP がシンボリックリンクだった場合、オープンは失敗する。 これは FreeBSD の拡張で、Linux には 2.1.126
+より追加された。 pathname の前のコンポーネント (earlier component; 訳註: 最後のディレクトリセパレータより前の部分) が
+シンボリックリンクである場合には、それが指す先が参照される。
+.TP 
+\fBO_NONBLOCK\fP または \fBO_NDELAY\fP
+可能ならば、ファイルは非停止 (nonblocking) モードでオープンされる。
+\fBopen\fP() も、返したファイルディスクリプタに対する以後のすべての操作も呼び出
+したプロセスを待たせることはない。 FIFO (名前付きパイプ) を扱う場合には
+\fBfifo\fP(7) も参照すること。 強制ファイルロック (mandatory file lock) やファイ
+ルリース (file lease) と組み合わせた場合の、 \fBO_NONBLOCK\fP の効果についての
+議論は、 \fBfcntl\fP(2) を参照すること。
+.TP 
+\fBO_SYNC\fP
+ファイルは同期 (synchronous) I/O モードでオープンされる。 \fBopen\fP()  が返したファイルディスクリプタに対して
+\fBwrite\fP(2)  を行うと、必ず呼び出したプロセスをブロックし、 該当ハードウェアに物理的に書き込まれるまで返らない。
+\fI以下の「注意」の章も参照。\fP
+.TP 
+\fBO_TRUNC\fP
+ファイルが既に存在し、通常ファイルであり、 書き込み可モードでオープンされている (つまり、 \fBO_RDWR\fPまたは\fBO_WRONLY\fP の)
+場合、長さ 0 に切り詰め (truncate) られる。 ファイルが FIFO または端末デバイスファイルの場合、 \fBO_TRUNC\fP
+フラグは無視される。 それ以外の場合、 \fBO_TRUNC\fP の効果は未定義である。
+.PP
+これらの選択フラグのいくつかはファイルをオープンした後でも \fBfcntl\fP(2)  を使用して変更することができる。
+
+\fBcreat\fP()  は \fIflags\fP に \fBO_CREAT|O_WRONLY|O_TRUNC\fP を指定して \fBopen\fP()
+を行うのと等価である。
+.SH 返り値
+\fBopen\fP()  と \fBcreat\fP()  は新しいファイルディスクリプタを返す。 エラーが発生した場合は \-1 を返す (その場合は
+\fIerrno\fP が適切に設定される)。
+.SH エラー
+.TP 
+\fBEACCES\fP
+ファイルに対する要求されたアクセスが許されていないか、 \fIpathname\fP のディレクトリ部分の何れかのディレクトリに検索許可がなかった。
+またはファイルが存在せず、親ディレクトリへの書き込み許可がなかった。 (\fBpath_resolution\fP(7)  も参照すること。)
+.TP 
+\fBEDQUOT\fP
+Where \fBO_CREAT\fP is specified, the file does not exist, and the user's quota
+of disk blocks or inodes on the file system has been exhausted.
+.TP 
+\fBEEXIST\fP
+\fIpathname\fP は既に存在し、 \fBO_CREAT\fP と \fBO_EXCL\fP が使用された。
+.TP 
+\fBEFAULT\fP
+\fIpathname\fP がアクセス可能なアドレス空間の外を指している。
+.TP 
+\fBEFBIG\fP
+\fBEOVERFLOW\fP 参照。
+.TP 
+\fBEINTR\fP
+遅いデバイス (例えば FIFO、 \fBfifo\fP(7)  参照) のオープンが完了するのを待って停止している間に
+システムコールがシグナルハンドラにより割り込まれた。 \fBsignal\fP(7)  参照。
+.TP 
+\fBEISDIR\fP
+\fIpathname\fP はディレクトリを参照しており、書き込み要求が含まれていた (つまり \fBO_WRONLY\fP または \fBO_RDWR\fP
+が設定されている)。
+.TP 
+\fBELOOP\fP
+\fIpathname\fP を解決する際に遭遇したシンボリックリンクが多過ぎる。 または \fBO_NOFOLLOW\fP が指定されており、
+\fIpathname\fP がシンボリックリンクだった。
+.TP 
+\fBEMFILE\fP
+プロセスがオープンしているファイル数がすでに最大数に達している。
+.TP 
+\fBENAMETOOLONG\fP
+\fIpathname\fP が長過ぎる。
+.TP 
+\fBENFILE\fP
+オープンされているファイルの総数がシステムの制限に達している。
+.TP 
+\fBENODEV\fP
+\fIpathname\fP がデバイススペシャルファイルを参照しており、対応するデバイスが存在しない。 (これは Linux
+カーネルのバグであり、この場合には \fBENXIO\fP が返されるべきである)
+.TP 
+\fBENOENT\fP
+\fBO_CREAT\fP が設定されておらず、かつ指定されたファイルが存在しない。 または、 \fIpathname\fP のディレクトリ部分が存在しないか壊れた
+(dangling) シンボリックリンクである。
+.TP 
+\fBENOMEM\fP
+十分なカーネルメモリーがない。
+.TP 
+\fBENOSPC\fP
+\fIpathname\fP を作成する必要があるが、 \fIpathname\fP を含んでいるデバイスに新しいファイルのための空き容量がない。
+.TP 
+\fBENOTDIR\fP
+\fIpathname\fP に含まれるディレクトリ部分のどれかが実際にはディレクトリでない。 または \fBO_DIRECTORY\fP が指定されており、
+\fIpathname\fP がディレクトリでない。
+.TP 
+\fBENXIO\fP
+\fBO_NONBLOCK\fP | \fBO_WRONLY\fP が設定されており、指定したファイルが FIFO で
+そのファイルを読み込みのためにオープンしているプロセスが存在しない。 または、ファイルがデバイススペシャルファイルで 対応するデバイスが存在しない。
+.TP 
+\fBEOVERFLOW\fP
+.\" See http://bugzilla.kernel.org/show_bug.cgi?id=7253
+.\" "Open of a large file on 32-bit fails with EFBIG, should be EOVERFLOW"
+.\" Reported 2006-10-03
+\fIpathname\fP が参照しているのが、大き過ぎてオープンできない通常のファイルである。 通常、このエラーが発生するは、32
+ビットプラットフォーム上で \fI\-D_FILE_OFFSET_BITS=64\fP を指定せずにコンパイルされたアプリケーションが、ファイルサイズが
+\fI(2<31)\-1\fP ビットを超えるファイルを開こうとした場合である。 上記の \fBO_LARGEFILE\fP も参照。 これは
+POSIX.1\-2001 で規定されているエラーである。 2.6.24 より前のカーネルでは、Linux はこの場合にエラー \fBEFBIG\fP
+を返していた。
+.TP 
+\fBEPERM\fP
+.\" Strictly speaking, it's the file system UID... (MTK)
+\fBO_NOATIME\fP フラグが指定されたが、呼び出し元の実効ユーザー ID が ファイルの所有者と一致せず、かつ呼び出し元に特権
+(\fBCAP_FOWNER\fP)  がない。
+.TP 
+\fBEROFS\fP
+\fIpathname\fP が読み込み専用のファイルシステム上のファイルを参照しており、 書き込みアクセスが要求された。
+.TP 
+\fBETXTBSY\fP
+\fIpathname\fP が現在実行中の実行イメージを参照しており、書き込みが要求された。
+.TP 
+\fBEWOULDBLOCK\fP
+\fBO_NONBLOCK\fP フラグが指定されたが、そのファイルには矛盾するリースが設定されていた (\fBfcntl\fP(2)  参照)。
+.SH 準拠
+SVr4, 4.3BSD, POSIX.1\-2001.  フラグ \fBO_DIRECTORY\fP, \fBO_NOATIME\fP, \fBO_NOFOLLOW\fP
+は Linux 特有のものであり、 これらのフラグの定義を得るためには、 (「どの」ヘッダファイルをインクルードするよりも前に)
+\fB_GNU_SOURCE\fP を定義する必要があるかもしれない。
+
+\fBO_CLOEXEC\fP フラグは POSIX.1\-2001 では規定されていないが、 POSIX.1\-2008 で規定されている。
+
+\fBO_DIRECT\fP は POSIX では規定されていない。 \fBO_DIRECT\fP の定義を得るには
+(「どの」ヘッダファイルをインクルードするよりも前に)  \fB_GNU_SOURCE\fP を定義しなければならない。
+.SH 注意
+Linux では、 \fBO_NONBLOCK\fP フラグは、 open を実行したいが read または write を実行する意図は
+必ずしもないことを意味する。 これは \fBioctl\fP(2)  のためのファイルディスクリプタを取得するために、
+デバイスをオープンするときによく用いられる。
+
+.\" See for example util-linux's disk-utils/setfdprm.c
+.\" For some background on access mode 3, see
+.\" http://thread.gmane.org/gmane.linux.kernel/653123
+.\" "[RFC] correct flags to f_mode conversion in __dentry_open"
+.\" LKML, 12 Mar 2008
+「アクセスモード」の値 \fBO_RDONLY\fP, \fBO_WRONLY\fP, \fBO_RDWR\fP は、 \fIflags\fP
+に指定できる他の値と違い、個々のビットを指定するものではなく、 これらの値は \fIflags\fP の下位 2 ビットを定義する。 \fBO_RDONLY\fP,
+\fBO_WRONLY\fP, \fBO_RDWR\fP はそれぞれ 0, 1, 2 に定義されている。 言い換えると、 \fBO_RDONLY |
+O_WRONLY\fP の組み合わせは論理的に間違いであり、確かに \fBO_RDWR\fP と同じ意味ではない。 Linux
+では、特別な、非標準なアクセスモードとして 3 (バイナリでは 11) が 予約されており \fIflags\fP に指定できる。
+このアクセスモードを指定すると、ファイルの読み出し/書き込み許可をチェックし、 読み出しにも書き込みにも使用できないディスクリプタを返す。
+この非標準のアクセスモードはいくつかの Linux ドライバで、デバイス固有の \fBioctl\fP(2)
+操作にのみ使用されるディスクリプタを返すために使われている。
+.LP
+.\" Linux 2.0, 2.5: truncate
+.\" Solaris 5.7, 5.8: truncate
+.\" Irix 6.5: truncate
+.\" Tru64 5.1B: truncate
+.\" HP-UX 11.22: truncate
+.\" FreeBSD 4.7: truncate
+\fBO_RDONLY | O_TRUNC\fP の影響は未定義であり、その動作は実装によって異なる。 多くのシステムではファイルは実際に切り詰められる。
+.PP
+NFS を実現しているプロトコルには多くの不備があり、特に \fBO_SYNC\fP と \fBO_NDELAY\fP に影響する。
+
+POSIX では、3 種類の同期 I/O が提供されており、 \fBO_SYNC\fP, \fBO_DSYNC\fP, \fBO_RSYNC\fP
+フラグがこれに対応するものである。 今のところ (カーネル 2.6.31)、 Linux では \fBO_SYNC\fP だけが実装されているが、 glibc
+は \fBO_DSYNC\fP と \fBO_RSYNC\fP に \fBO_SYNC\fP と同じ数値を割り当てている。 ほとんどの Linux
+のファイルシステムは、実際には POSIX の \fBO_SYNC\fP の動作ではなく \fBO_DSYNC\fP の動作だけを実装している。 POSIX の
+\fBO_SYNC\fP では、 \fBopen\fP()  がユーザ空間に返る際に、書き込みに関する全てのメタデータの
+更新がディスクに書き込まれている必要がある。 一方、 \fBO_DSYNC\fP では、 \fBopen\fP()
+が返るまでに、実際のファイルのデータとそのデータを取得するために 必要なメタデータだけがディスクに書き込まれていればよい。
+
+\fBopen\fP()  はスペシャルファイルをオープンすることができるが、 \fBcreat\fP()  でスペシャルファイルを作成できない点に注意すること。
+代わりに \fBmknod\fP(2)  を使用する。
+.LP
+UID マッピングを使用している NFS ファイルシステムでは、 \fBopen\fP()  がファイルディスクリプタを返した場合でも \fBread\fP(2)
+が \fBEACCES\fP で拒否される場合がある。 これはクライアントがアクセス許可のチェックを行って \fBopen\fP()
+を実行するが、読み込みや書き込みの際には サーバーで UID マッピングが行われるためである。
+
+ファイルが新しく作成されると、 ファイルの \fIst_atime\fP, \fIst_ctime\fP, \fIst_mtime\fP フィールド
+(それぞれ最終アクセス時刻、最終状態変更時刻、最終修正時刻である。 \fBstat\fP(2)  参照) が現在時刻に設定される。 さらに親ディレクトリの
+\fIst_ctime\fP と \fIst_mtime\fP も現在時刻に設定される。 それ以外の場合で、O_TRUNC フラグでファイルが修正されたときは、
+ファイルの \fIst_ctime\fP と \fIst_mtime\fP フィールドが現在時刻に設定される。
+.SS O_DIRECT
+.LP
+\fBO_DIRECT\fP フラグを使用する場合、ユーザ空間バッファの長さやアドレス、 I/O
+のファイルオフセットに関してアラインメントの制限が課されることがある。 Linux では、アラインメントの制限はファイルシステムやカーネルのバージョンに
+よって異なり、全く制限が存在しない場合もある。 しかしながら、現在のところ、指定されたファイルやファイルシステムに対して
+こうした制限があるかを見つけるための、アプリケーション向けのインタフェースで ファイルシステム非依存のものは存在しない。
+いくつかのファイルシステムでは、制限を確認するための独自のインタフェースが 提供されている。例えば、 \fBxfsctl\fP(3)  の
+\fBXFS_IOC_DIOINFO\fP 命令である。
+.LP
+Linux 2.4 では、転送サイズ、 ユーザーバッファのアラインメント、ファイルオフセットは、
+ファイルシステムの論理ブロックサイズの倍数でなければならない。 Linux 2.6 では、512 バイトごとの境界に配置されていれば充分である。
+.LP
+メモリバッファがプライベートマッピング (\fBmmap\fP(2) の \fBMAP_PRIVATE\fP
+フラグで作成されたマッピング) の場合には、\fBO_DIRECT\fP I/O は
+\fBfork\fP(2) システムコールと同時に決して実行すべきではない
+(プライベートマッピングには、ヒープ領域に割り当てられたメモリや静的に
+割り当てたバッファも含まれる)。非同期 I/O インターフェース (AIO) 経由
+やプロセス内の他のスレッドから発行された、このような I/O は、
+\fBfork\fP(2) が呼び出される前に完了されるべきである。
+そうしなかった場合、データ破壊や、親プロセスや子プロセスでの予期しない
+動作が起こる可能性がある。
+\fBO_DIRECT\fP I/O 用のメモリバッファが \fBshmat\fP(2) や\fBMAP_SHARED\fP フラグ
+付きの \fBmmap\fP(2) で作成された場合には、この制限はあてはまらない。
+\fBmadvise\fP(2) でメモリバッファにアドバイス \fBMADV_DONTFORK\fP が設定され
+ている場合にも、この制限はあてはまらない(\fBMADV_DONTFORK\fP はそのメモリ
+バッファが \fBfork\fP(2) 後に子プロセスからは利用できないことを保証するも
+のである)。
+.LP
+\fBO_DIRECT\fP フラグは SGI IRIX で導入された。SGI IRIX にも Linux 2.4 と同様の (ユーザーバッファの)
+アラインメントの制限がある。 また、IRIX には適切な配置とサイズを取得するための \fBfcntl\fP(2)  コールがある。 FreeBSD 4.x
+も同じ名前のフラグを導入したが、アラインメントの制限はない。
+.LP
+\fBO_DIRECT\fP が Linux でサポートされたのは、カーネルバージョン 2.4.10 である。 古い Linux
+カーネルは、このフラグを単に無視する。 \fBO_DIRECT\fP フラグをサポートしていないファイルシステムもあり、その場合は、 \fBO_DIRECT\fP
+を使用すると \fBopen\fP()  は \fBEINVAL\fP で失敗する。
+.LP
+アプリケーションは、同じファイル、 特に同じファイルの重複するバイト領域に対して、 \fBO_DIRECT\fP と通常の I/O
+を混ぜて使うのは避けるべきである。 ファイルシステムがこのような状況において一貫性の問題を正しく 扱うことができる場合であっても、全体の I/O
+スループットは どちらか一方を使用するときと比べて低速になるであろう。 同様に、アプリケーションは、同じファイルに対して \fBmmap\fP(2)  と直接
+I/O (\fBO_DIRECT\fP)  を混ぜて使うのも避けるべきである。
+.LP
+NFS で \fBO_DIRECT\fP を使った場合の動作はローカルのファイルシステムの場合と違う。
+古いカーネルや、ある種の設定でコンパイルされたカーネルは、 \fBO_DIRECT\fP と NFS の組み合わせをサポートしていないかもしれない。 NFS
+プロトコル自体はサーバにフラグを渡す機能は持っていないので、 \fBO_DIRECT\fP I/O
+はクライアント上のページキャッシュをバイパスするだけになり、 サーバは I/O をキャッシュしているかもしれない。 クライアントは、
+\fBO_DIRECT\fP の同期機構を保持するため、サーバに対して I/O を同期して行うように依頼する。 サーバによっては、こうした状況下、特に I/O
+サイズが小さい場合に 性能が大きく劣化する。 また、サーバによっては、I/O が安定したストレージにまで行われたと、
+クライアントに対して嘘をつくものもある。 これは、サーバの電源故障が起こった際にデータの完全性が保たれない
+危険は少しあるが、性能面での不利な条件を回避するために行われている。 Linux の NFS クライアントでは \fBO_DIRECT\fP I/O
+でのアラインメントの制限はない。
+.PP
+まとめると、 \fBO_DIRECT\fP は、注意して使うべきであるが、強力なツールとなる可能性を持っている。 アプリケーションは \fBO_DIRECT\fP
+をデフォルトでは無効になっている性能向上のためのオプションと 考えておくのがよいであろう。
+.PP
+.RS
+「O_DIRECT でいつも困るのは、インタフェース全部が本当にお馬鹿な点だ。 たぶん危ないマインドコントロール剤で
+頭がおかしくなったサルが設計したんじゃないかな」 \(em Linus
+.RE
+.SH バグ
+.\" FIXME . Check bugzilla report on open(O_ASYNC)
+.\" See http://bugzilla.kernel.org/show_bug.cgi?id=5993
+現在のところ、 \fBopen\fP()  の呼び出し時に \fBO_ASYNC\fP を指定してシグナル駆動 I/O を有効にすることはできない。
+このフラグを有効にするには \fBfcntl\fP(2)  を使用すること。
+.SH 関連項目
+\fBchmod\fP(2), \fBchown\fP(2), \fBclose\fP(2), \fBdup\fP(2), \fBfcntl\fP(2), \fBlink\fP(2),
+\fBlseek\fP(2), \fBmknod\fP(2), \fBmmap\fP(2), \fBmount\fP(2), \fBopenat\fP(2), \fBread\fP(2),
+\fBsocket\fP(2), \fBstat\fP(2), \fBumask\fP(2), \fBunlink\fP(2), \fBwrite\fP(2),
+\fBfopen\fP(3), \fBfifo\fP(7), \fBpath_resolution\fP(7), \fBsymlink\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2981ef0..ecf5cd4 100644 (file)
@@ -113,6 +113,6 @@ POSIX.1\-2008.  Solaris には、これと同じようなシステムコール
 \fBreadlinkat\fP(2), \fBrenameat\fP(2), \fBsymlinkat\fP(2), \fBunlinkat\fP(2),
 \fButimensat\fP(2), \fBmkfifoat\fP(3), \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/outb.2 b/manual/LDP_man-pages/draft/man2/outb.2
new file mode 100644 (file)
index 0000000..c1da6c6
--- /dev/null
@@ -0,0 +1,88 @@
+.\" Copyright (c) 1995 Paul Gortmaker
+.\" (gpg109@rsphy1.anu.edu.au)
+.\" Wed Nov 29 10:58:54 EST 1995
+.\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH OUTB 2 2012\-12\-31 Linux "Linux Programmer's Manual"
+.SH 名前
+outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl,
+outb_p, outw_p, outl_p, inb_p, inw_p, inl_p \- ポート入出力
+.SH 書式
+.nf
+\fB#include <sys/io.h>\fP
+
+\fBunsigned char inb(unsigned short int \fP\fIport\fP\fB);\fP
+\fBunsigned char inb_p(unsigned short int \fP\fIport\fP\fB);\fP
+\fBunsigned short int inw(unsigned short int \fP\fIport\fP\fB);\fP
+\fBunsigned short int inw_p(unsigned short int \fP\fIport\fP\fB);\fP
+\fBunsigned int inl(unsigned short int \fP\fIport\fP\fB);\fP
+\fBunsigned int inl_p(unsigned short int \fP\fIport\fP\fB);\fP
+
+\fBvoid outb(unsigned char \fP\fIvalue\fP\fB, unsigned short int \fP\fIport\fP\fB);\fP
+\fBvoid outb_p(unsigned char \fP\fIvalue\fP\fB, unsigned short int \fP\fIport\fP\fB);\fP
+\fBvoid outw(unsigned short int \fP\fIvalue\fP\fB, unsigned short int \fP\fIport\fP\fB);\fP
+\fBvoid outw_p(unsigned short int \fP\fIvalue\fP\fB, unsigned short int \fP\fIport\fP\fB);\fP
+\fBvoid outl(unsigned int \fP\fIvalue\fP\fB, unsigned short int \fP\fIport\fP\fB);\fP
+\fBvoid outl_p(unsigned int \fP\fIvalue\fP\fB, unsigned short int \fP\fIport\fP\fB);\fP
+
+\fBvoid insb(unsigned short int \fP\fIport\fP\fB, void *\fP\fIaddr\fP\fB,\fP
+\fB           unsigned long int \fP\fIcount\fP\fB);\fP
+\fBvoid insw(unsigned short int \fP\fIport\fP\fB, void *\fP\fIaddr\fP\fB,\fP
+\fB           unsigned long int \fP\fIcount\fP\fB);\fP
+\fBvoid insl(unsigned short int \fP\fIport\fP\fB, void *\fP\fIaddr\fP\fB,\fP
+\fB           unsigned long int \fP\fIcount\fP\fB);\fP
+\fBvoid outsb(unsigned short int \fP\fIport\fP\fB, const void *\fP\fIaddr\fP\fB,\fP
+\fB           unsigned long int \fP\fIcount\fP\fB);\fP
+\fBvoid outsw(unsigned short int \fP\fIport\fP\fB, const void *\fP\fIaddr\fP\fB,\fP
+\fB           unsigned long int \fP\fIcount\fP\fB);\fP
+\fBvoid outsl(unsigned short int \fP\fIport\fP\fB, const void *\fP\fIaddr\fP\fB,\fP
+\fB           unsigned long int \fP\fIcount\fP\fB);\fP
+.fi
+.SH 説明
+この一連の関数はポートに対する低レベルの入出力に使用する。 out* 関数はポート出力、in* 関数はポート入力を行う。 語尾に b
+がついている関数はバイト単位、w がついている関数はワード単位である。 _p がついている関数は I/O が終了するまで待つ。
+.LP
+.\" , given the following information
+.\" in addition to that given in
+.\" .BR outb (9).
+これらの関数はもともとカーネル内部での使用を想定して設計されているが、 ユーザー空間からでも使用できる。
+
+\fB\-O\fP や \fB\-O2\fP などを指定してコンパイルしなければならない。 これらの関数はインライン・マクロとして定義されており、
+最適化を行わないと関数の展開が行われず、 リンクの時に「解決できない参照(unresolved reference)」が発生する。
+
+ユーザー空間のアプリケーションが I/O ポートにアクセスすることを カーネルに教えるために \fBioperm\fP(2)  もしくは \fBiopl\fP(2)
+を使用すること。これを忘れるとアプリケーションはセグメンテーション違反 (segmentation fault) を受けとることになる。
+.SH 準拠
+\fBoutb\fP()  とその仲間はハードウェア特有である。 \fIvalue\fP 引数が最初に渡され、 \fIport\fP 引数が二番目に渡される。
+この順序はほとんどの DOS での実装とは逆である。
+.SH 関連項目
+\fBioperm\fP(2), \fBiopl\fP(2)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5783acf..e0c56e3 100644 (file)
@@ -55,6 +55,6 @@ SVr4, 4.3BSD, POSIX.1\-2001.
 .SH 関連項目
 \fBkill\fP(2), \fBselect\fP(2), \fBsignal\fP(2), \fBsigsuspend\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/pciconfig_read.2 b/manual/LDP_man-pages/draft/man2/pciconfig_read.2
new file mode 100644 (file)
index 0000000..f0be468
--- /dev/null
@@ -0,0 +1,80 @@
+.\" Contributed by Niki A. Rahimi, LTC Security Development
+.\" narahimi@us.ibm.com
+.\"
+.\" %%%LICENSE_START(FREELY_REDISTRIBUTABLE)
+.\" May be freely distributed.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH PCICONFIG_READ 2 2003\-07\-14 Linux "Linux Programmer's Manual"
+.SH 名前
+pciconfig_read, pciconfig_write, pciconfig_iobase \- pci デバイス情報を扱う
+.SH 書式
+.nf
+\fB#include <pci.h>\fP
+.sp
+\fBint pciconfig_read(unsigned long \fP\fIbus\fP\fB, unsigned long \fP\fIdfn\fP\fB,\fP
+\fB          unsigned long \fP\fIoff\fP\fB, unsigned long \fP\fIlen\fP\fB, void *\fP\fIbuf\fP\fB);\fP
+\fBint pciconfig_write(unsigned long \fP\fIbus\fP\fB, unsigned long \fP\fIdfn\fP\fB,\fP
+\fB          unsigned long \fP\fIoff\fP\fB, unsigned long \fP\fIlen\fP\fB, void *\fP\fIbuf\fP\fB);\fP
+\fBint pciconfig_iobase(long \fP\fIwhich\fP\fB, unsigned long \fP\fIbus\fP\fB,\fP
+\fB          unsigned long \fP\fIdevfn\fP\fB);\fP
+.fi
+.SH 説明
+.PP
+PCI デバイスとのやり取り (interaction) は カーネル PCI レイヤですでに処理されているので、
+通常はこららの関数をユーザ空間からアクセスする必要はない。
+.TP 
+\fBpciconfig_read\fP()
+デバイス \fIdev\fP のオフセット \fIoff\fP の値を \fIbuf\fP に読み込む。
+.TP 
+\fBpciconfig_write\fP()
+デバイス \fIdev\fP のオフセット \fIoff\fP に \fIbuf\fP の値を書き込む。
+.TP 
+\fBpciconfig_iobase\fP()
+bus/devfn ペアをこの関数に渡し、 メモリオフセット (prep のようなものでは、この値は 0xc0000000 である) と PIO
+サイクルの IO ベースの物理アドレスを取得する。 また、もしあるならば ISA hole の物理アドレスを取得する。
+.SH 返り値
+.TP 
+\fBpciconfig_read\fP()
+成功した場合、0 が返される。 エラーの場合、\-1 が返され、 \fIerrno\fP が適切に設定される。
+.TP 
+\fBpciconfig_write\fP()
+成功した場合、0 が返される。 エラーの場合、\-1 が返され、 \fIerrno\fP が適切に設定される。
+.TP 
+\fBpciconfig_iobase\fP()
+\fIwhich\fP の値に基づいて、物理メモリ内の様々な I/O 領域の位置情報が返される。 \fIwhich\fP の値は、
+\fBIOBASE_BRIDGE_NUMBER\fP, \fBIOBASE_MEMORY\fP, \fBIOBASE_IO\fP, \fBIOBASE_ISA_IO\fP,
+\fBIOBASE_ISA_MEM\fP である。
+.SH エラー
+.TP 
+\fBEINVAL\fP
+\fIlen\fP の値が無効である。 このエラーは \fBpciconfig_iobase\fP()  には適用されない。
+.TP 
+\fBEIO\fP
+I/O エラー。
+.TP 
+\fBENODEV\fP
+\fBpciconfig_iobase\fP()  の場合、でホース (hose) の値が NULL である。 他の呼び出しの場合、スロット (slot)
+が見つからない。
+.TP 
+\fBENOSYS\fP
+このシステムはこれらの呼び出しを実装していない。 (\fBCONFIG_PCI\fP が定義されていない)。
+.TP 
+\fBEOPNOTSUPP\fP
+この返り値は \fBpciconfig_iobase\fP()  でのみ有効である。 このエラーは \fIwhich\fP の値が無効であるときに返される。
+.TP 
+\fBEPERM\fP
+ユーザが \fBCAP_SYS_ADMIN\fP 権限を持っていない。 このエラーは \fBpciconfig_iobase\fP()  には適用されない。
+.SH 準拠
+これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能である。
+.SH 関連項目
+\fBcapabilities\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 575c836..9c7a365 100644 (file)
@@ -57,6 +57,6 @@ Linux は、プロセス毎の異なる実行ドメイン、すなわち パー
 .SH 準拠
 \fBpersonality\fP()  は Linux 固有であり、移植を意図したプログラムで使用すべきではない。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 04a16bf..ba5f435 100644 (file)
@@ -151,6 +151,6 @@ main(int argc, char *argv[])
 \fBfork\fP(2), \fBread\fP(2), \fBsocketpair\fP(2), \fBwrite\fP(2), \fBpopen\fP(3),
 \fBpipe\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index caff68c..d53b6fd 100644 (file)
@@ -97,6 +97,6 @@ glibc はこのシステムコールに対するラッパー関数を提供し
 .SH 関連項目
 \fBchdir\fP(2), \fBchroot\fP(2), \fBstat\fP(2), \fBinitrd\fP(4), \fBpivot_root\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ba04914..b1a8be8 100644 (file)
@@ -226,6 +226,6 @@ Linux の \fBppoll\fP()  システムコールは \fItimeout_ts\fP 引き数を
 .SH 関連項目
 \fBselect\fP(2), \fBselect_tut\fP(2), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2cc8e09..74ce5d5 100644 (file)
@@ -30,7 +30,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH POSIX_FADVISE 2 2010\-10\-09 Linux "Linux Programmer's Manual"
+.TH POSIX_FADVISE 2 2013\-04\-01 Linux "Linux Programmer's Manual"
 .SH 名前
 posix_fadvise \- ファイルデータのアクセスパターンをあらかじめ宣言する
 .SH 書式
@@ -118,13 +118,16 @@ Linux では、\fBPOSIX_FADV_NORMAL\fP はバッキングデバイスの デフ
 
 まだ書き出されていないページは影響を受けないので、 そのページの解放が保証されることをアプリケーションが望んでいるなら、 最初に \fBfsync\fP(2)
 または \fBfdatasync\fP(2)  を呼ぶべきである。
-.SS arm_fadvise()
-ARM アーキテクチャでは、64 ビットの引き数は適切なレジスタの組に割り当て
-る必要がある。このアーキテクチャでは、\fBposix_fadvise\fP() の呼び出し方に
-は欠陥があり、それはこのシステムコールでは引き数 \fIfd\fP と \fIlen\fP の間の
-パディング (詰めもの) でレジスタが一つ消費されてしまうというものである。
-そのため、Linux 2.6.14 以降では、ARM では引き数が適切な順序になった別の
-システムコールが定義されている。
+.SS "Architecture\-specific variants"
+Some architectures require 64\-bit arguments to be aligned in a suitable pair
+of registers (see \fBsyscall\fP(2)  for further detail).  On such
+architectures, the call signature of \fBposix_fadvise\fP()  shown in the
+SYNOPSIS would force a register to be wasted as padding between the \fIfd\fP
+and \fIlen\fP arguments.  Therefore, these architectures define a version of
+the system call that orders the arguments suitably, but otherwise is
+otherwise exactly the same as \fBposix_fadvise\fP().
+
+For example, since Linux 2.6.14, ARM has the following system call:
 .PP
 .in +4n
 .nf
@@ -133,10 +136,9 @@ ARM アーキテクチャでは、64 ビットの引き数は適切なレジス
 .fi
 .in
 .PP
-.\" No ARM support in glibc.
-上記の点以外は、このシステムコールの動作は \fBposix_fadvise\fP() と全く
-同じである。このシステムコールに対するライブラリによるサポートは glibc
-では提供されていない。
+These architecture\-specific details are generally hidden from applications
+by the glibc \fBposix_fadvise\fP()  wrapper function, which invokes the
+appropriate architecture\-specific system call.
 .SH バグ
 2.6.6 より前のカーネルでは、 \fIlen\fP に 0 が指定された場合、 「ファイルの終りまでの全てのバイト」という意味ではなく、 文字通り「0
 バイト」として解釈されていた。
@@ -145,6 +147,6 @@ ARM アーキテクチャでは、64 ビットの引き数は適切なレジス
 \fBreadahead\fP(2), \fBsync_file_range\fP(2), \fBposix_fallocate\fP(3),
 \fBposix_madvise\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2128fe2..204f343 100644 (file)
@@ -27,7 +27,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH PREAD 2 2012\-04\-30 Linux "Linux Programmer's Manual"
+.TH PREAD 2 2013\-04\-01 Linux "Linux Programmer's Manual"
 .SH 名前
 pread, pwrite \- 指定したオフセットでファイルディスクリプタを読み書きする
 .SH 書式
@@ -79,6 +79,9 @@ Linux では、裏で呼び出されるシステムコールの名前がカー
 \fBpread\fP() は \fBpread64\fP() になり、 \fBpwrite\fP() は \fBpwrite64\fP() になった。
 システムコールの番号は変更されていない。
 glibc の \fBpread\fP() と \fBpwrite\fP() のラッパー関数はこれらの変更を吸収している。
+
+On some 32\-bit architectures, the calling signature for these system calls
+differ, for the reasons described in \fBsyscall\fP(2).
 .SH バグ
 .\" FIXME https://bugzilla.kernel.org/show_bug.cgi?id=43178
 POSIX では、\fBO_APPEND\fP フラグを指定してファイルをオープンした場合、
@@ -89,6 +92,6 @@ POSIX では、\fBO_APPEND\fP フラグを指定してファイルをオープ
 .SH 関連項目
 \fBlseek\fP(2), \fBread\fP(2), \fBreadv\fP(2), \fBwrite\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/query_module.2 b/manual/LDP_man-pages/draft/man2/query_module.2
new file mode 100644 (file)
index 0000000..cd3282c
--- /dev/null
@@ -0,0 +1,127 @@
+.\" Copyright (C) 1996 Free Software Foundation, Inc.
+.\"
+.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
+.\" This file is distributed according to the GNU General Public License.
+.\" %%%LICENSE_END
+.\"
+.\" 2006-02-09, some reformatting by Luc Van Oostenryck; some
+.\" reformatting and rewordings by mtk
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH QUERY_MODULE 2 2013\-01\-27 Linux "Linux Programmer's Manual"
+.SH 名前
+query_module \- モジュールに関連する各種の情報をカーネルに問い合わせる
+.SH 書式
+.nf
+\fB#include <linux/module.h>\fP
+.sp
+\fBint query_module(const char *\fP\fIname\fP\fB, int \fP\fIwhich\fP\fB, void *\fP\fIbuf\fP\fB,\fP
+\fB                 size_t \fP\fIbufsize\fP\fB, size_t *\fP\fIret\fP\fB);\fP
+.fi
+
+\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。
+.SH 説明
+\fBNote\fP: This system call is present only in kernels before Linux 2.6.
+
+\fBquery_module\fP()  は、ローダブルモジュールに関する情報をカーネルに問い合わせる。 情報は \fIbuf\fP
+が指し示すバッファに格納されて返される。 呼び出し元は \fIbuf\fP のサイズを \fIbufsize\fP に指定しなければならない。
+得られる情報の正確な意味とフォーマットは、 \fIwhich\fP でどの操作を指定するかによって異なる。 現在ロードされているモジュールを特定するために
+\fIname\fP を必要とする操作があれば、 カーネル固有であることを示す NULL を指定できる操作もある。
+
+\fIwhich\fP には以下の値を指定できる:
+.TP 
+\fB0\fP
+カーネルが \fBquery_module\fP()  をサポートしている場合、成功を返す。 このシステムコールが利用可能かを調べるために使われる。
+.TP 
+\fBQM_MODULES\fP
+.\" ret is set on ENOSPC
+ロードされている全てのモジュールの名前を返す。 バッファには、NULL 終端された文字列が順に入る。 返されるバッファ \fIret\fP
+にはモジュールの数が設定される。
+.TP 
+\fBQM_DEPS\fP
+.\" ret is set on ENOSPC
+指定されたモジュールが使用している全モジュールの名前を返す。 バッファには、NULL 終端された文字列が順に入る。 返されるバッファ \fIret\fP
+にはモジュールの数が設定される。
+.TP 
+\fBQM_REFS\fP
+.\" ret is set on ENOSPC
+指定されたモジュールを使用している全モジュールの名前を返す。 これは \fBQM_DEPS\fP と逆の機能である。 バッファには、NULL
+終端された文字列が順に入る。 返されるバッファ \fIret\fP にはモジュールの数が設定される。
+.TP 
+\fBQM_SYMBOLS\fP
+.\" ret is set on ENOSPC
+カーネルまたは指定されたモジュールがエクスポートしているシンボルと 値を返す。 バッファのデータは、 以下の構造体の配列に NULL
+終端された文字列が続く形となる。
+.in +4n
+.nf
+
+struct module_symbol {
+    unsigned long value;
+    unsigned long name;
+};
+.fi
+.in
+.IP
+\fIname\fP の値は、 \fIbuf\fP の先頭からの文字列までのオフセット文字数である。 \fIret\fP にはシンボルの数が設定される。
+.TP 
+\fBQM_INFO\fP
+指定されたモジュールに関する様々な情報を返す。 出力バッファのフォーマットは以下の形式となる:
+.in +4n
+.nf
+
+struct module_info {
+    unsigned long address;
+    unsigned long size;
+    unsigned long flags;
+};
+.fi
+.in
+.IP
+\fIaddress\fP はそのモジュールが配置されているカーネル空間上のアドレス、 \fIsize\fP はそのモジュールのバイト単位のサイズ、
+\fIflags\fP は \fBMOD_RUNNING\fP, \fBMOD_AUTOCLEAN\fP 等のマスクであり、そのモジュールの現在の状態を示す (Linux
+カーネルのソースファイル \fIinclude/linux/module.h\fP を参照)。 \fIret\fP には \fImodule_info\fP
+構造体のサイズが設定される。
+.SH 返り値
+成功の場合 0 が返される。エラーの場合 \-1 が返され、 \fIerrno\fP に適切な値が設定される。
+.SH エラー
+.TP 
+\fBEFAULT\fP
+\fIname\fP, \fIbuf\fP, \fIret\fP の少なくとも一つが、プログラムがアクセスできる アドレス空間の外部であった。
+.TP 
+\fBEINVAL\fP
+.\" Not permitted with QM_DEPS, QM_REFS, or QM_INFO.
+\fIwhich\fP が不正である。あるいは \fIname\fP が NULL だが (NULL は "カーネル" を示す)、 \fIwhich\fP
+で指定された値との組み合わせは許可されていない。
+.TP 
+\fBENOENT\fP
+\fIname\fP という名前のモジュールが存在しない。
+.TP 
+\fBENOSPC\fP
+与えられたバッファの大きさが小さすぎる。 \fIret\fP には最小限必要なバッファのサイズが設定される。
+.TP 
+\fBENOSYS\fP
+\fBquery_module\fP()  is not supported in this version of the kernel (e.g., the
+kernel is version 2.6 or later).
+.SH バージョン
+.\" Removed in Linux 2.5.48
+このシステムコールが存在するのはカーネル 2.4 までの Linux だけである。 Linux 2.6 では削除された。
+.SH 準拠
+\fBquery_module\fP()  は Linux 固有である。
+.SH 注意
+Some of the information that was formerly available via \fBquery_module\fP()
+can be obtained from \fI/proc/modules\fP, \fI/proc/kallsyms\fP, and the files
+under the directory \fI/sys/module\fP.
+
+glibc はこのシステムコールに対するラッパー関数を提供していない。おそらくないと思うが、古いカーネルでこのシステムコールを使いたい場合は
+\fBsyscall\fP(2) を使うこと。
+.SH 関連項目
+\fBcreate_module\fP(2), \fBdelete_module\fP(2), \fBget_kernel_syms\fP(2),
+\fBinit_module\fP(2), \fBlsmod\fP(8), \fBmodinfo\fP(8)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/read.2 b/manual/LDP_man-pages/draft/man2/read.2
new file mode 100644 (file)
index 0000000..9664f6c
--- /dev/null
@@ -0,0 +1,123 @@
+.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
+.\"             and Copyright (C) 1993 Michael Haardt, Ian Jackson.
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified Sat Jul 24 00:06:00 1993 by Rik Faith <faith@cs.unc.edu>
+.\" Modified Wed Jan 17 16:02:32 1996 by Michael Haardt
+.\"   <michael@cantor.informatik.rwth-aachen.de>
+.\" Modified Thu Apr 11 19:26:35 1996 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified Sun Jul 21 18:59:33 1996 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified Fri Jan 31 16:47:33 1997 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified Sat Jul 12 20:45:39 1997 by Michael Haardt
+.\"   <michael@cantor.informatik.rwth-aachen.de>
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH READ 2 2013\-02\-12 Linux "Linux Programmer's Manual"
+.SH 名前
+read \- ファイルディスクリプタから読み込む
+.SH 書式
+.nf
+\fB#include <unistd.h>\fP
+.sp
+\fBssize_t read(int \fP\fIfd\fP\fB, void *\fP\fIbuf\fP\fB, size_t \fP\fIcount\fP\fB);\fP
+.fi
+.SH 説明
+\fBread\fP()  はファイルディスクリプタ (file descriptor)  \fIfd\fP から最大 \fIcount\fP バイトを \fIbuf\fP
+で始まるバッファーへ読み込もうとする。
+
+On files that support seeking, the read operation commences at the current
+file offset, and the file offset is incremented by the number of bytes
+read.  If the current file offset is at or past the end of file, no bytes
+are read, and \fBread\fP()  returns zero.
+
+If \fIcount\fP is zero, \fBread\fP()  \fImay\fP detect the errors described below.
+In the absence of any errors, or if \fBread\fP()  does not check for errors, a
+\fBread\fP()  with a \fIcount\fP of 0 returns zero and has no other effects.
+
+\fIcount\fP が \fBSSIZE_MAX\fP より大きければ、結果は規定できない。
+.SH 返り値
+成功した場合、読み込んだバイト数を返す (0 はファイルの終りを意味する)。 ファイル位置はこの数だけ進められる。
+この数が要求した数より小さかったとしてもエラーではない; 例えば今すぐには実際にそれだけの数しかない場合 (ファイルの最後に近いのかも
+しれないし、パイプ (pipe) や端末 (terminal) から読み込んでいるかもしれない) や \fBread\fP()  がシグナル (signal)
+によって割り込まれた場合にこれは起こりえる。 エラーの場合は、\-1 が返され、 \fIerrno\fP
+が適切に設定される。この場合はファイル位置が変更されるかどうかは 不定である。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+ファイルディスクリプタ \fIfd\fP がソケット以外のファイルを参照していて、 非停止 (nonblocking) モード (\fBO_NONBLOCK\fP)
+に設定されており、読み込みを行うと停止する状況にある。
+.TP 
+\fBEAGAIN\fP または \fBEWOULDBLOCK\fP
+.\" Actually EAGAIN on Linux
+ファイルディスクリプタ \fIfd\fP がソケットを参照していて、非停止 (nonblocking) モード (\fBO_NONBLOCK\fP)
+に設定されており、読み込みを行うと停止する状況にある。 POSIX.1\-2001 は、この場合にどちらのエラーを返すことも認めており、 これら 2
+つの定数が同じ値を持つことも求めていない。 したがって、移植性が必要なアプリケーションでは、両方の可能性を 確認すべきである。
+.TP 
+\fBEBADF\fP
+\fIfd\fP が有効なファイルディスクリプタでないか、読み込みのために オープン (open) されていない。
+.TP 
+\fBEFAULT\fP
+\fIbuf\fP がアクセス可能なアドレス空間の外にある。
+.TP 
+\fBEINTR\fP
+何のデータも読み込まないうちにシグナルに割り込まれた。 \fBsignal\fP(7)  参照。
+.TP 
+\fBEINVAL\fP
+\fIfd\fP は読み込みに適していないオブジェクトを参照している。 もしくは、ファイルが \fBO_DIRECT\fP フラグを指定してオープンされているが、
+\fIbuf\fP に指定されたアドレス、 \fIcount\fP に指定された値、 現在のファイルオフセットのいずれかの アラインメントが不適切である。
+.TP 
+\fBEINVAL\fP
+\fIfd\fP が \fBtimerfd_create\fP(2)  の呼び出しで作成されたが、 \fBread\fP()  に間違ったサイズのバッファが渡された。
+さらなる情報は \fBtimerfd_create\fP(2)  を参照のこと。
+.TP 
+\fBEIO\fP
+I/O エラー。これは例えばプロセスがバックグランド・プロセスグループで、それを制御している端末から読み込もうとし、 \fBSIGTTIN\fP が無視
+(ignore) または禁止 (blocking) されている場合や、 そのプロセスグループが孤立 (orphan) している場合に起こる。
+またディスクやテープを読んでいる時に低レベル I/O エラー が発生した場合にも起こる。
+.TP 
+\fBEISDIR\fP
+\fIfd\fP がディレクトリを参照している。
+.PP
+\fIfd\fP が接続しているオブジェクトによっては他のエラーも起こりえる。 POSIX では、 いくらかのデータを読んだ後に割り込みが起こった場合、
+\fBread\fP()  は (\fIerrno\fP に \fBEINTR\fP を設定して) \-1 を返してもよいし、 既に読み込んだバイト数を返してもよい。
+.SH 準拠
+SVr4, 4.3BSD, POSIX.1\-2001.
+.SH 注意
+NFS において。少量のデータを読み込む場合、最初の時のみにタイム スタンプが更新され、続くコールでは更新されないだろう。
+これはクライアント側で属性のキャッシングを行なうためである。 なぜならば、もし全ての NFS クライアントが st_atime
+(最終ファイルアクセス時刻)  の更新をサーバーに送らず、クライアント側でキャッシュを読むことに満足して いれば、サーバー側での read
+は発生しないので st_atime の更新は行なわれからだ。 UNIX の方式では、クライアント側の属性のキャッシングを無効にすることで、
+これを得ることができる。しかしほとんどの状況ではこれは続くサーバーの 負荷を増加させ、パフォーマンスの低下をもたらす。
+.SH 関連項目
+\fBclose\fP(2), \fBfcntl\fP(2), \fBioctl\fP(2), \fBlseek\fP(2), \fBopen\fP(2), \fBpread\fP(2),
+\fBreaddir\fP(2), \fBreadlink\fP(2), \fBreadv\fP(2), \fBselect\fP(2), \fBwrite\fP(2),
+\fBfread\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index d9f8a12..aa93a6f 100644 (file)
@@ -30,7 +30,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH READAHEAD 2 2010\-09\-10 Linux "Linux Programmer's Manual"
+.TH READAHEAD 2 2013\-04\-01 Linux "Linux Programmer's Manual"
 .SH 名前
 readahead \- 前もってファイルをページ・キャッシュに読み込む
 .SH 書式
@@ -63,9 +63,12 @@ readahead \- 前もってファイルをページ・キャッシュに読み込
 以降で行われている。
 .SH 準拠
 \fBreadahead\fP()  システムコールは Linux 固有であり、移植を考慮したプログラムでは 使用を避けるべきである。
+.SH 注意
+On some 32\-bit architectures, the calling signature for this system call
+differs, for the reasons described in \fBsyscall\fP(2).
 .SH 関連項目
 \fBlseek\fP(2), \fBmadvise\fP(2), \fBmmap\fP(2), \fBposix_fadvise\fP(2), \fBread\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 678dc64..b08ebe6 100644 (file)
@@ -32,7 +32,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH READDIR 2 2012\-07\-13 Linux "Linux Programmer's Manual"
+.TH READDIR 2 2013\-03\-26 Linux "Linux Programmer's Manual"
 .SH 名前
 readdir \- ディレクトリ・エントリを読み込む
 .SH 書式
@@ -92,9 +92,11 @@ struct old_linux_dirent {
 glibc はこのシステムコールに対するラッパー関数を提供していない。 \fBsyscall\fP(2)  を使って呼び出すこと。
 \fIold_linux_dirent\fP 構造体を自分自身で定義する必要がある。しかし、たいていはこのシステムコールではなく \fBreaddir\fP(3)
 を使うべき場面のことが多い。
+
+このシステムコールは x86\-64 では存在しない。
 .SH 関連項目
 \fBgetdents\fP(2), \fBreaddir\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7953ff3..bf88dd6 100644 (file)
@@ -185,6 +185,6 @@ main(int argc, char *argv[])
 \fBreadlink\fP(1), \fBlstat\fP(2), \fBreadlinkat\fP(2), \fBstat\fP(2), \fBsymlink\fP(2),
 \fBpath_resolution\fP(7), \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0a141a9..486bf78 100644 (file)
@@ -90,6 +90,6 @@ POSIX.1\-2008.
 .SH 関連項目
 \fBopenat\fP(2), \fBreadlink\fP(2), \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 190600e..0d7e435 100644 (file)
@@ -169,6 +169,6 @@ nwritten = writev(STDOUT_FILENO, iov, 2);
 .SH 関連項目
 \fBpread\fP(2), \fBread\fP(2), \fBwrite\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index d7155c9..05da177 100644 (file)
@@ -122,6 +122,6 @@ magic の数字か \fIcmd\fP が間違っている。
 \fBsync\fP(2), \fBbootparam\fP(7), \fBctrlaltdel\fP(8), \fBhalt\fP(8), \fBreboot\fP(8),
 \fBcapabilities\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2a840a6..7b216a2 100644 (file)
@@ -306,6 +306,6 @@ POSIX.1\-2001 では、構造体 \fImsghdr\fP のフィールド \fImsg_controll
 \fBfcntl\fP(2), \fBgetsockopt\fP(2), \fBread\fP(2), \fBrecvmmsg\fP(2), \fBselect\fP(2),
 \fBshutdown\fP(2), \fBsocket\fP(2), \fBcmsg\fP(3), \fBsockatmark\fP(3), \fBsocket\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c234851..69c552c 100644 (file)
@@ -92,6 +92,6 @@ remap_file_pages \- 非線形ファイルマッピングを作成する。
 \fBgetpagesize\fP(2), \fBmmap\fP(2), \fBmmap2\fP(2), \fBmprotect\fP(2), \fBmremap\fP(2),
 \fBmsync\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 71f7eb1..65f4528 100644 (file)
@@ -82,6 +82,6 @@ inode に対し、互いに独立な名前空間が複数あってもよい。
 \fBgetfattr\fP(1), \fBsetfattr\fP(1), \fBgetxattr\fP(2), \fBlistxattr\fP(2), \fBopen\fP(2),
 \fBsetxattr\fP(2), \fBstat\fP(2), \fBattr\fP(5), \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/rename.2 b/manual/LDP_man-pages/draft/man2/rename.2
new file mode 100644 (file)
index 0000000..1abf56f
--- /dev/null
@@ -0,0 +1,150 @@
+.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
+.\"             and Copyright (C) 1993 Michael Haardt;
+.\"             and Copyright (C) 1993,1995 Ian Jackson.
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified Sat Jul 24 00:35:52 1993 by Rik Faith <faith@cs.unc.edu>
+.\" Modified Thu Jun  4 12:21:13 1998 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified Thu Mar  3 09:49:35 2005 by Michael Haardt <michael@moria.de>
+.\" 2007-03-25, mtk, added various text to DESCRIPTION.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH RENAME 2 2013\-01\-27 Linux "Linux Programmer's Manual"
+.SH 名前
+rename \- ファイルの名前や位置を変更する
+.SH 書式
+\fB#include <stdio.h>\fP
+.sp
+\fBint rename(const char *\fP\fIoldpath\fP\fB, const char *\fP\fInewpath\fP\fB);\fP
+.SH 説明
+\fBrename\fP()  はファイルの名前を変更し、必要ならばディレクトリ間の移動を行なう。 そのファイルに対する (\fBlink\fP(2)
+を使用して作られた) 他のハードリンク (hard link) には影響はない。 オープン済の \fIoldpath\fP
+に対するファイルディスクリプタにも影響はない。
+
+\fInewpath\fP が既に存在する場合、それは不可分操作で (atomically) 置き換えられる (ただし、いくつかの条件がある;
+以下の「エラー」のセクションを参照)。 そのため、 \fInewpath\fP にアクセスしようとしている他のプロセスがファイルを見失うことはない (訳註:
+常にアクセス可能である)。
+
+\fIoldpath\fP と \fInewpath\fP がどちらも既存のハードリンクで、同じファイルを参照している場合、 \fBrename\fP()
+は何も行わず、ステータスとして成功を返す。
+
+\fInewpath\fP が存在し、何らかの理由で操作が失敗した場合、 \fBrename\fP()  は \fInewpath\fP
+の実体を元のまま残すことを保証する。
+
+\fIoldpath\fP にはディレクトリを指定することもできる。 この場合、 \fInewpath\fP は存在しないか、空のディレクトリでなければならない。
+
+一方で、上書きを行なう場合は、rename が行なわれるファイルを \fIoldpath\fP と \fInewpath\fP
+の両方で参照できる瞬間がおそらく存在する。
+
+\fIoldpath\fP がシンボリックリンク (symbolic link) を参照している場合は、 リンクの名前が変更される。 また、
+\fInewpath\fP がシンボリックリンクを参照している場合は、リンクが上書きされる。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEACCES\fP
+\fIoldpath\fP または \fInewpath\fP を含んでいるディレクトリの書き込み許可がない。 または、 \fIoldpath\fP または
+\fInewpath\fP のディレクトリ部分のどれかに検索許可がない。 または、 \fIoldpath\fP がディレクトリで (\fI..\fP
+エントリを更新するのに必要な) 書き込み許可がない (\fBpath_resolution\fP(7)  も参照)。
+.TP 
+\fBEBUSY\fP
+\fIoldpath\fP または \fInewpath\fP がディレクトリで、何らかのプロセスが使用中
+(多分、カレントワーキングディレクトリか、ルートディレクトリか、 読み込みのためにオープンされているかでろう)  もしくは、システムが使用中
+(例えばマウントポイントである)  であり、システムがこれをエラーであると判断したために rename が失敗した。 (このような場合に
+\fBEBUSY\fP を返すことは規格では要求されていない点に注意すること。 このような場合に、rename をとにかく実行してみるのは何の問題もない。
+ただし、そのような状況で、システムが他に返すエラーがない場合には \fBEBUSY\fP を返すことが許されている。)
+.TP 
+\fBEDQUOT\fP
+The user's quota of disk blocks on the file system has been exhausted.
+.TP 
+\fBEFAULT\fP
+\fIoldpath\fP や \fInewpath\fP がアクセス可能なアドレス空間の外を指している。
+.TP 
+\fBEINVAL\fP
+\fInewpath\fP が \fIoldpath\fP のパス部分を含んでいる。ディレクトリを自分自身のサブディレクトリに
+変更しようとした場合がほとんどである。
+.TP 
+\fBEISDIR\fP
+\fInewpath\fP は存在しているディレクトリであるが、 \fIoldpath\fP はディレクトリでない。
+.TP 
+\fBELOOP\fP
+\fIoldpath\fP または \fInewpath\fP を解決する際に遭遇したシンボリックリンクが多過ぎる。
+.TP 
+\fBEMLINK\fP
+\fIoldpath\fP は既に最大数までのリンクを持っているか、それがディレクトリで \fInewpath\fP
+を含んでいるディレクトリが最大数までのリンクを持っている。
+.TP 
+\fBENAMETOOLONG\fP
+\fIoldpath\fP または \fInewpath\fP が長過ぎる。
+.TP 
+\fBENOENT\fP
+\fIoldpath\fP という名前のリンクが存在しない。 または、 \fInewpath\fP というディレクトリが存在しない。 または、 \fIoldpath\fP
+か \fInewpath\fP が空の文字列である。
+.TP 
+\fBENOMEM\fP
+十分なカーネルメモリーがない。
+.TP 
+\fBENOSPC\fP
+そのファイルを含んでいるデバイスに新しいディレクトリエントリを 作成するための空きがない。
+.TP 
+\fBENOTDIR\fP
+\fIoldpath\fP か \fInewpath\fP に含まれているディレクトリ部分が 実際にはディレクトリでない。 または \fIoldpath\fP
+がディレクトリで、 \fInewpath\fP が存在してディレクトリでない。
+.TP 
+\fBENOTEMPTY  または  EEXIST\fP
+\fInewpath\fP が空でないディレクトリである。すなわち "." と ".." 以外を含んでいる。
+.TP 
+\fBEPERM\fP または \fBEACCES\fP
+\fIoldpath\fP のあるディレクトリにスティッキービット (sticky bit)  (\fBS_ISVTX\fP)  が設定されており、
+プロセスの実効ユーザー ID が 削除しようとするファイルのユーザー ID と そのファイルを含むディレクトリのユーザー ID
+のいずれとも一致せず、かつ プロセスに特権がない (Linux では \fBCAP_FOWNER\fP ケーパビリティ (capability) がない)。
+または、 \fInewpath\fP がすでに存在するファイルで、親ディレクトリにスティッキービットが設定されており、 プロセスの実効ユーザー ID が
+置き換えようとするファイルのユーザー ID と そのファイルを含むディレクトリのユーザー ID のいずれとも一致せず、かつ プロセスに特権がない
+(Linux では \fBCAP_FOWNER\fP ケーパビリティがない)。 または \fIoldpath\fP と \fInewpath\fP
+が存在するファイルシステムが、要求された種類の名前の変更を サポートしていない。
+.TP 
+\fBEROFS\fP
+ファイルが読み込み専用のファイルシステムに存在する。
+.TP 
+\fBEXDEV\fP
+\fIoldpath\fP と \fInewpath\fP が同じマウントされたファイルシステムに存在しない。 (Linux は 1
+つのファイルシステムを複数のマウント位置に マウントすることを許可している。 しかし \fBrename\fP()
+は、たとえ同じファイルシステムであっても、 別々のマウント位置を跨いでは動作しない。)
+.SH 準拠
+4.3BSD, C89, C99, POSIX.1\-2001.
+.SH バグ
+NFS ファイルシステムでは、操作が失敗したからといって、 ファイルの名前が変更できなかったと決めてかかることはできない。 サーバが rename
+操作を終えてからクラッシュした場合、 サーバが再び立ち上がったときに、 再送信された RPC が処理されるが、これは失敗となる。
+アプリケーションはこの問題を正しく取り扱うことが期待されている。 同様の問題について \fBlink\fP(2)  にも書かれている。
+.SH 関連項目
+\fBmv\fP(1), \fBchmod\fP(2), \fBlink\fP(2), \fBrenameat\fP(2), \fBsymlink\fP(2),
+\fBunlink\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 45c4e54..d84b6af 100644 (file)
@@ -93,6 +93,6 @@ POSIX.1\-2008.
 .SH 関連項目
 \fBopenat\fP(2), \fBrename\fP(2), \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 63629d6..be84c42 100644 (file)
@@ -1,5 +1,5 @@
 .\" This manpage is Copyright (C) 1992 Drew Eckhardt;
-.\"                               1993 Michael Haardt, Ian Jackson.
+.\"             and Copyright (C) 1993 Michael Haardt, Ian Jackson.
 .\"
 .\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
@@ -98,6 +98,6 @@ NFS プロトコルに潜在している欠陥によって、まだ使用中の
 \fBrm\fP(1), \fBrmdir\fP(1), \fBchdir\fP(2), \fBchmod\fP(2), \fBmkdir\fP(2), \fBrename\fP(2),
 \fBunlink\fP(2), \fBunlinkat\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 591e764..af12172 100644 (file)
@@ -79,6 +79,6 @@ POSIX.1\-2001.
 \fIProgramming for the real world \- POSIX.4\fP by Bill O. Gallmeister, O'Reilly
 & Associates, Inc., ISBN 1\-56592\-074\-0.
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 04d4ea3..4f594f2 100644 (file)
@@ -31,7 +31,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH SCHED_RR_GET_INTERVAL 2 2011\-10\-16 Linux "Linux Programmer's Manual"
+.TH SCHED_RR_GET_INTERVAL 2 2013\-03\-18 Linux "Linux Programmer's Manual"
 .SH 名前
 sched_rr_get_interval \- 指定されたプロセスの SCHED_RR 間隔を取得する
 .SH 書式
@@ -88,20 +88,27 @@ POSIX システムで \fBsched_rr_get_interval\fP() は \fI<unistd.h>\fP に
 \fB_POSIX_PRIORITY_SCHEDULING\fP が定義されている場合にのみ使用可能である。
 .SS "Linux での注意"
 .\" commit a4ec24b48ddef1e93f7578be53270f0b95ad666c
+POSIX does not specify any mechanism for controlling the size of the
+round\-robin time quantum.  Older Linux kernels provide a (nonportable)
+method of doing this.  The quantum can be controlled by adjusting the
+process's nice value (see \fBsetpriority\fP(2)).  Assigning a negative (i.e.,
+high) nice value results in a longer quantum; assigning a positive (i.e.,
+low) nice value results in a shorter quantum.  The default quantum is 0.1
+seconds; the degree to which changing the nice value affects the quantum has
+varied somewhat across kernel versions.  This method of adjusting the
+quantum was removed starting with Linux 2.6.24.
+
+.\" commit ce0dbbbb30aee6a835511d5be446462388ba9eee
 .\" .SH BUGS
 .\" As of Linux 1.3.81
 .\" .BR sched_rr_get_interval ()
 .\" returns with error
 .\" ENOSYS, because SCHED_RR has not yet been fully implemented and tested
 .\" properly.
-POSIX ではラウンドロビン時間量の大きさを制御する仕組みが規定されていな
-い。古い Linux カーネルではこれを変更する方法が提供されている (この方法
-に移植性はない)。プロセスの nice 値を調整することで時間量を制御できる
-(\fBsetpriority\fP(2) 参照)。 負の nice 値 (すなわち、高い nice 値) を割り
-当てると時間量は長くなり、 正の nice 値 (すなわち、低い nice 値) を割り
-当てると時間量は短くなる。 デフォルトの時間量は 0.1 秒である。 nice 値
-の変更が時間量にどの程度影響を与えるかは カーネルのバージョンにより多少
-異なる。
+Linux 3.9 added a new mechanism for adjusting (and viewing) the \fBSCHED_RR\fP
+quantum: the \fI/proc/sys/kernel/sched_rr_timeslice_ms\fP file exposes the
+quantum as a millisecond value, whose default is 100.  Writing 0 to this
+file resets the quantum to the default value.
 .SH 関連項目
 \fBsched_setscheduler\fP(2) に Linux のスケジューリング方式についての説明
 がある。
@@ -109,6 +116,6 @@ POSIX ではラウンドロビン時間量の大きさを制御する仕組み
 \fIProgramming for the real world \- POSIX.4\fP by Bill O. Gallmeister, O'Reilly
 & Associates, Inc., ISBN 1\-56592\-074\-0.
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/sched_setaffinity.2 b/manual/LDP_man-pages/draft/man2/sched_setaffinity.2
new file mode 100644 (file)
index 0000000..c73c3a0
--- /dev/null
@@ -0,0 +1,136 @@
+.\" Copyright (C) 2002 Robert Love
+.\" and Copyright (C) 2006 Michael Kerrisk
+.\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
+.\"
+.\" 2002-11-19 Robert Love <rml@tech9.net> - initial version
+.\" 2004-04-20 mtk - fixed description of return value
+.\" 2004-04-22 aeb - added glibc prototype history
+.\" 2005-05-03 mtk - noted that sched_setaffinity may cause thread
+.\"    migration and that CPU affinity is a per-thread attribute.
+.\" 2006-02-03 mtk -- Major rewrite
+.\" 2008-11-12, mtk, removed CPU_*() macro descriptions to a
+.\" separate CPU_SET(3) page.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SCHED_SETAFFINITY 2 2013\-02\-11 Linux "Linux Programmer's Manual"
+.SH 名前
+sched_setaffinity, sched_getaffinity \- プロセスの CPU affinity マスクを設定・取得する
+.SH 書式
+.nf
+\fB#define _GNU_SOURCE\fP             /* feature_test_macros(7) 参照 */
+\fB#include <sched.h>\fP
+.sp
+\fBint sched_setaffinity(pid_t \fP\fIpid\fP\fB, size_t \fP\fIcpusetsize\fP\fB,\fP
+\fB                      cpu_set_t *\fP\fImask\fP\fB);\fP
+.sp
+\fBint sched_getaffinity(pid_t \fP\fIpid\fP\fB, size_t \fP\fIcpusetsize\fP\fB,\fP
+\fB                      cpu_set_t *\fP\fImask\fP\fB);\fP
+.fi
+.SH 説明
+プロセスの CPU affinity (親和度) マスクは、そのプロセスが 実行を許可されている CPU の集合を決定する。
+マルチプロセッサ・システムでは、CPU affinity マスクを設定することで 性能上のメリットを得られる可能性がある。
+例えば、特定のプロセスを一つの CPU に括り付け (すなわち、そのプロセスの affinity マスクを一つの CPU に設定し)、
+他の全てのプロセスの affinity マスクからその CPU を除外することで、 確実にそのプロセスの実行速度を最大にすることができる。
+また、あるプロセスの実行を一つの CPU に限定することで、 一つの CPU での実行を停止してから別の CPU で実行を再開するときに発生する
+キャッシュ無効化 (cache invalidation) による性能面の劣化を避けることもできる。
+
+CPU affinity マスクは「CPU の集合」を表す \fIcpu_set_t\fP 構造体で表現され、 \fIcpu_set_t\fP へのポインタ
+\fImask\fP で指定される。 CPU 集合を操作するためのマクロ群については \fBCPU_SET\fP(3)  で記載されている。
+
+\fBsched_setaffinity\fP()  は、プロセスID が \fIpid\fP のプロセスの CPU affinity マスクを \fImask\fP
+で指定された値に設定する。 \fIpid\fP が 0 の場合、呼び出し元プロセスが使われる。 \fIcpusetsize\fP 引き数には \fImask\fP
+が指すデータの長さ (バイト単位) である。 通常は、この引き数には \fIsizeof(cpu_set_t)\fP を指定すればよい。
+
+\fIpid\fP で指定されたプロセスが \fImask\fP で指定された CPU のいずれかで現在実行されていない場合、 そのプロセスは \fImask\fP
+で指定された CPU のいずれかに移動される。
+
+\fBsched_getaffinity\fP()  は、 プロセスID が \fIpid\fP のプロセスの affinity マスクを \fImask\fP が指す
+\fIcpu_set_t\fP 構造体に書き込む。 \fIcpusetsize\fP 引き数には \fImask\fP の (バイト単位の) 大きさを指定する。
+.SH 返り値
+成功した場合、 \fBsched_setaffinity\fP()  と \fBsched_getaffinity\fP()  は 0 を返す。 エラーの場合は
+\-1 を返し、 \fIerrno\fP を適切に設定する。
+.SH エラー
+.TP 
+\fBEFAULT\fP
+指定されたメモリ番地が不正である。
+.TP 
+\fBEINVAL\fP
+システム上に現在実際に存在し、かつ "cpuset" 機構が課す制限においてそのプロセスに対して許可されている プロセッサが、 affinity
+ビットマスク \fImask\fP に含まれていない。 "cpuset" 機構については \fBcpuset\fP(7)  を参照。
+.TP 
+\fBEINVAL\fP
+(\fBsched_getaffinity\fP()  と、カーネル 2.6.9 以前の \fBsched_setaffinity\fP())
+\fIcpusetsize\fP がカーネルで使われている affinity マスクのサイズより小さい。
+.TP 
+\fBEPERM\fP
+(\fBsched_setaffinity\fP())  呼び出し元のプロセスに適切な特権がなかった。 呼び出し元は、実効ユーザ ID が \fIpid\fP
+で識別されるプロセスの実ユーザ ID または実効ユーザ ID と同じであるか、 \fBCAP_SYS_NICE\fP ケーパビリティ (capability)
+を持たなければならない。
+.TP 
+\fBESRCH\fP
+プロセス ID \fIpid\fP のプロセスが見つからなかった。
+.SH バージョン
+CPU affinity システムコールは Linux kernel 2.5.8 で導入された。 これらのシステムコールのラッパー関数は glibc
+2.3 で導入された。 最初は、glibc のインタフェースには \fIunsigned int\fP 型の \fIcpusetsize\fP 引き数が入っていた。
+glibc 2.3.3 では \fIcpusetsize\fP 引き数が削除されたが、glibc 2.3.4 で \fIsize_t\fP 型で復活した。
+.SH 準拠
+これらのシステムコールは Linux 固有である。
+.SH 注意
+\fBsched_setaffinity\fP()  を呼び出した後は、プロセスが実際に実行される CPU の集合は、 \fImask\fP
+引き数で指定された集合と、システム上に実際に存在する CPU の集合の 共通集合 (AND) となる。 "cpuset"
+機構が使用されている場合には、プロセスが動作する CPU 集合 に対してシステムはさらに制限を加えるかもしれない ("cpuset" 機構については
+\fBcpuset\fP(7)  を参照)。 プロセスが動作する実際の CPU 集合に対する制限はカーネルにより 暗黙のうちに適用される。
+
+\fBsched_setscheduler\fP(2) に Linux のスケジューリング方式についての説明
+がある。
+.PP
+実際には affinity マスクはスレッド単位の属性で、スレッドグループの 各スレッド単位に独立して調整することができる。 \fBgettid\fP(2)
+コールからの返り値をこのコールの \fIpid\fP 引き数として渡すことができる。 \fIpid\fP に 0 を指定すると呼び出し元のスレッドの属性が設定され、
+\fBgetpid\fP(2)  コールからの返り値を \fIpid\fP に指定するとスレッドグループのメインスレッドの属性が設定される (POSIX スレッド
+API を使用している場合、 \fBsched_setaffinity\fP()  の代わりに \fBpthread_setaffinity_np\fP(3)
+を使用すること)。
+
+\fBfork\fP(2)  経由で生成された子プロセスは親プロセスの CPU affinity マスクを継承する。 affinity マスクは
+\fBexecve\fP(2)  の前後で保存される。
+
+このマニュアルページでは CPU affinity コールの glibc インタフェースを
+説明している。実際のシステムコール・インタフェースは少し違っており、 実際の実装では CPU 集合は簡単なビットマスクであるという実状を反映し、
+\fImask\fP の型が \fIunsigned long *\fP となっている。 成功時には、生の \fBsched_getaffinity\fP()
+システムコール自身は \fIcpumask_t\fP データ型の (バイト単位の) 大きさを返す。 \fIcpumask_t\fP はカーネル内部で CPU
+集合のビットマスクを表現するのに 使われているデータ型である。
+.SH 関連項目
+.ad l
+.nh
+\fBtaskset\fP(1), \fBclone\fP(2), \fBgetcpu\fP(2), \fBgetpriority\fP(2), \fBgettid\fP(2),
+\fBnice\fP(2), \fBsched_get_priority_max\fP(2), \fBsched_get_priority_min\fP(2),
+\fBsched_getscheduler\fP(2), \fBsched_setscheduler\fP(2), \fBsetpriority\fP(2),
+\fBCPU_SET\fP(3), \fBpthread_setaffinity_np\fP(3), \fBsched_getcpu\fP(3),
+\fBcapabilities\fP(7), \fBcpuset\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/sched_setparam.2 b/manual/LDP_man-pages/draft/man2/sched_setparam.2
new file mode 100644 (file)
index 0000000..e2934c7
--- /dev/null
@@ -0,0 +1,101 @@
+.\" Copyright (C) Tom Bjorkholm & Markus Kuhn, 1996
+.\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
+.\"
+.\" 1996-04-01 Tom Bjorkholm <tomb@mydata.se>
+.\"            First version written
+.\" 1996-04-10 Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
+.\"            revision
+.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SCHED_SETPARAM 2 2013\-02\-12 Linux "Linux Programmer's Manual"
+.SH 名前
+sched_setparam, sched_getparam \- スケジューリング・パラメータの設定と取得を行なう
+.SH 書式
+.nf
+\fB#include <sched.h>\fP
+.sp
+\fBint sched_setparam(pid_t \fP\fIpid\fP\fB, const struct sched_param *\fP\fIparam\fP\fB);\fP
+.sp
+\fBint sched_getparam(pid_t \fP\fIpid\fP\fB, struct sched_param *\fP\fIparam\fP\fB);\fP
+.sp
+\fBstruct sched_param {
+    ...
+    int \fP\fIsched_priority\fP\fB;
+    ...
+};\fP
+.fi
+.SH 説明
+\fBsched_setparam\fP()  は \fIpid\fP で指定されたプロセスのスケジューリング方針 (scheduling policy) に
+関連するスケジューリング・パラメータを設定する。 \fIpid\fP が 0 ならば、呼び出し元のプロセスのパラメータが設定される。 引き数 \fIparam\fP
+の解釈は、 \fIpid\fP で指定されたプロセスのスケジューリング方針によって異なる。 Linux でサポートされているスケジューリング方針の説明は
+\fBsched_setscheduler\fP(2)  を参照のこと。
+
+\fBsched_getparam\fP()  は \fIpid\fP で指定されたプロセスのスケジューリング・パラメータを取得する。 \fIpid\fP が 0
+ならば、呼び出し元のプロセスのパラメータを取得する。
+
+\fBsched_setparam\fP()  はプロセスのスケジューリング方針における \fIparam\fP の妥当性をチェックする。
+\fIparam\->sched_priority\fP の値は \fBsched_get_priority_min\fP(2)  と
+\fBsched_get_priority_max\fP(2)  の範囲に入っていなければならない。
+
+スケジューリングの優先度と方針に関連する特権とリソース制限の 議論に関しては \fBsched_setscheduler\fP(2)  を参照のこと。
+
+\fBsched_setparam\fP()  と \fBsched_getparam\fP()  が使用できる POSIX システムでは、
+\fI<unistd.h>\fP に \fB_POSIX_PRIORITY_SCHEDULING\fP が定義されている。
+.SH 返り値
+成功した場合は \fBsched_setparam\fP()  と \fBsched_getparam\fP()  は 0 を返す。 エラーの場合は \-1
+が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEINVAL\fP
+引き数 \fIparam\fP が現在のスケジューリング方針においては 無意味である。
+.TP 
+\fBEPERM\fP
+呼び出し元のプロセスが適切な特権を持っていない (Linux では、 \fBCAP_SYS_NICE\fP ケーパビリティを持っていない)。
+.TP 
+\fBESRCH\fP
+プロセス ID \fIpid\fP のプロセスが見つからなかった。
+.SH 準拠
+POSIX.1\-2001.
+.SH 注意
+.PP
+Scheduling parameters are in fact per\-thread attributes on Linux; see
+\fBsched_setscheduler\fP(2).
+.SH 関連項目
+.ad l
+.nh
+\fBgetpriority\fP(2), \fBnice\fP(2), \fBsched_get_priority_max\fP(2),
+\fBsched_get_priority_min\fP(2), \fBsched_getaffinity\fP(2),
+\fBsched_getscheduler\fP(2), \fBsched_setaffinity\fP(2), \fBsched_setscheduler\fP(2),
+\fBsetpriority\fP(2), \fBcapabilities\fP(7)
+.PP
+\fIProgramming for the real world \- POSIX.4\fP by Bill O. Gallmeister, O'Reilly
+& Associates, Inc., ISBN 1\-56592\-074\-0.
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/sched_setscheduler.2 b/manual/LDP_man-pages/draft/man2/sched_setscheduler.2
new file mode 100644 (file)
index 0000000..b03b582
--- /dev/null
@@ -0,0 +1,351 @@
+.\" Copyright (C) Tom Bjorkholm, Markus Kuhn & David A. Wheeler 1996-1999
+.\" and Copyright (C) 2007 Carsten Emde <Carsten.Emde@osadl.org>
+.\" and Copyright (C) 2008 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
+.\"
+.\" 1996-04-01 Tom Bjorkholm <tomb@mydata.se>
+.\"            First version written
+.\" 1996-04-10 Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
+.\"            revision
+.\" 1999-08-18 David A. Wheeler <dwheeler@ida.org> added Note.
+.\" Modified, 25 Jun 2002, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Corrected description of queue placement by sched_setparam() and
+.\"            sched_setscheduler()
+.\"    A couple of grammar clean-ups
+.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" 2005-03-23, mtk, Added description of SCHED_BATCH.
+.\" 2007-07-10, Carsten Emde <Carsten.Emde@osadl.org>
+.\"     Add text on real-time features that are currently being
+.\"     added to the mainline kernel.
+.\" 2008-05-07, mtk; Rewrote and restructured various parts of the page to
+.\"     improve readability.
+.\" 2010-06-19, mtk, documented SCHED_RESET_ON_FORK
+.\"
+.\" Worth looking at: http://rt.wiki.kernel.org/index.php
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SCHED_SETSCHEDULER 2 2013\-02\-12 Linux "Linux Programmer's Manual"
+.SH 名前
+sched_setscheduler, sched_getscheduler \- スケジューリング・ポリシーとパラメータを設定/取得する
+.SH 書式
+.nf
+\fB#include <sched.h>\fP
+.sp
+\fBint sched_setscheduler(pid_t \fP\fIpid\fP\fB, int \fP\fIpolicy\fP\fB,\fP
+.br
+\fB                       const struct sched_param *\fP\fIparam\fP\fB);\fP
+.sp
+\fBint sched_getscheduler(pid_t \fP\fIpid\fP\fB);\fP
+.sp
+\fBstruct sched_param {
+    ...
+    int \fP\fIsched_priority\fP\fB;
+    ...
+};\fP
+.fi
+.SH 説明
+\fBsched_setscheduler\fP()  は \fIpid\fP で指定された ID を持つプロセスのスケジューリング・ポリシーや
+それに関連するパラメータを設定する。\fIpid\fP が 0 の場合は 呼び出したプロセスのスケジューリング・ポリシーとパラメータが設定される。 引き数
+\fIparam\fP の解釈は選択されたポリシーによる。 現在のところ、Linux では 以下に示す「通常」(リアルタイムでない)
+スケジューリング・ポリシーが サポートされている。
+.TP  14
+\fBSCHED_OTHER\fP
+.\" In the 2.6 kernel sources, SCHED_OTHER is actually called
+.\" SCHED_NORMAL.
+標準の、ラウンドロビンによる時分割型のスケジューリング・ポリシー。
+.TP 
+\fBSCHED_BATCH\fP
+「バッチ」形式でのプロセスの実行用。
+.TP 
+\fBSCHED_IDLE\fP
+「非常に」低い優先度で動作するバックグラウンド・ジョブ用。
+.PP
+どの実行可能プロセスを選択するかについて、より正確な制御を必要とする 時間の制約が厳しい特別なアプリケーション用として、
+以下の「リアルタイム」ポリシーもサポートされている。
+.TP  14
+\fBSCHED_FIFO\fP
+ファーストイン、ファーストアウト型のポリシー。
+.TP 
+\fBSCHED_RR\fP
+ラウンドロビン型のポリシー。
+.PP
+これらのポリシーのそれぞれの動作については以下で説明する。
+
+.\"
+\fBsched_getscheduler\fP()  は \fIpid\fP で識別されるプロセスに現在適用されている
+スケジューリング・ポリシーを尋ねる。\fIpid\fP が 0 ならば、呼び出した プロセス自身のスケジューリング・ポリシーが返される。
+.SS "スケジューリング・ポリシー (scheduling policy)"
+スケジューラ (scheduler) とはカーネルの構成要素で、 次に CPU で実行される実行可能なプロセスを決定するものである。
+各々のプロセスには、スケジューリング・ポリシーと 「静的」なスケジューリング優先度 \fIsched_priority\fP が対応付けられ、 これらの設定は
+\fBsched_setscheduler\fP()  で変更できる。 スケジューラは、システム上の全プロセスのスケジューリング・ポリシーと
+静的優先度に関する知識に基づいて決定を行う。
+
+通常のスケジューリング・ポリシー (\fBSCHED_OTHER\fP, \fBSCHED_IDLE\fP, \fBSCHED_BATCH\fP)
+の下でスケジューリングされるプロセスでは、 \fIsched_priority\fP はスケジューリングの決定に使用されない
+(\fIsched_priority\fP には 0 を指定しなければならない)。
+
+リアルタイム・スケジューリング・ポリシー (\fBSCHED_FIFO\fP, \fBSCHED_RR\fP)  の下でスケジューリングされるプロセスは、
+\fIsched_priority\fP の値は 1 (最低) から 99 (最高) の範囲となる
+(数字から分かるように、リアルタイム・プロセスは常に通常のプロセスよりも 高い優先度を持つ)。 ここで注意すべきなのは、POSIX.1\-2001
+が要求しているのは、 リアルタイム・ポリシーの実装において最低 32 種類の異なる優先度レベルが
+サポートされることだけであり、いくつかのシステムではこの最低限の数の 優先度しか提供されていない、ということである。 移植性が必要なプログラムでは、
+\fBsched_get_priority_min\fP(2)  と \fBsched_get_priority_max\fP(2)
+を使って、あるポリシーがサポートする優先度の範囲を調べるべきである。
+
+概念としては、 スケジューラはその \fIsched_priority\fP の値それぞれに対して 実行可能なプロセスのリストを管理している。
+どのプロセスを次に実行するかを決定するために、 スケジューラは静的優先度の最も高い空でないリストを探して、 そのリストの先頭のプロセスを選択する。
+
+各プロセスのスケジューリング・ポリシーは、 そのプロセスが同じ静的優先度を持つプロセスのリストの中のどこに挿入され、
+このリストの中をどのように移動するかを決定する。
+
+全てのスケジューリングはプリエンプティブ (preemptive) である: より高い優先度のプロセスが実行可能になると、現在実行中のプロセスは実行権を
+取り上げられ (preempted)、そのプロセスの静的優先度レベルの待ちリストに 戻される。スケジューリング・ポリシーは同じ静的優先度を持つ実行可能な
+プロセスのリストの中で順番のみを決定する。
+.SS "SCHED_FIFO: ファーストイン・ファーストアウト・スケジューリング"
+\fBSCHED_FIFO\fP は 0 より大きな静的優先度でのみ使用できる。このポリシーでは、 \fBSCHED_FIFO\fP
+プロセスが実行可能になった場合、 そのポリシーが \fBSCHED_OTHER\fP、 \fBSCHED_BATCH\fP、 \fBSCHED_IDLE\fP の
+現在実行中のプロセスは直ちに実行権を取り上げられる。 \fBSCHED_FIFO\fP は時分割のない単純なスケジューリング・アルゴリズムである。
+\fBSCHED_FIFO\fP ポリシーでスケジューリングされているプロセスには以下の ルールが適用される:
+.IP * 3
+より高い優先度の他のプロセスによって取って代わられた \fBSCHED_FIFO\fP プロセスはその優先度のリストの先頭に留まり続け、
+より高い優先度のプロセス全てが停止 (block) した場合に実行を再開する。
+.IP *
+\fBSCHED_FIFO\fP プロセスが実行可能になった時、その優先度のリストの最後 に挿入される。
+.IP *
+.\" In 2.2.x and 2.4.x, the process is placed at the front of the queue
+.\" In 2.0.x, the Right Thing happened: the process went to the back -- MTK
+\fBsched_setscheduler\fP()  や \fBsched_setparam\fP(2)  は \fIpid\fP で指定された
+\fBSCHED_FIFO\fP (または \fBSCHED_RR\fP) プロセスが 実行可能な場合、リストの最初に置く。
+結果として、もし優先度が同じだった場合、 現在実行中のプロセスに先んじるかもしれない。 (POSIX.1\-2001
+ではプロセスはリストの最後に行くべきと規定されている。)
+.IP *
+\fBsched_yield\fP(2)  を呼び出したプロセスはリストの最後に置かれる。
+.PP
+その他のイベントによって \fBSCHED_FIFO\fP ポリシーで スケジューリングされるプロセスが同じ優先度の実行可能な
+プロセスの待ちリストの中を移動することはない。
+
+\fBSCHED_FIFO\fP プロセスは I/O 要求によって停止するか、 より高い優先度のプロセスによって置きかえられるか、
+\fBsched_yield\fP(2)  を呼び出すまで実行を続ける。
+.SS "SCHED_RR: ラウンドロビン (round\-robin)・スケジューリング"
+.\" On Linux 2.4, the length of the RR interval is influenced
+.\" by the process nice value -- MTK
+.\"
+\fBSCHED_RR\fP は \fBSCHED_FIFO\fP の単純な拡張である。 上述された
+\fBSCHED_FIFO\fP に関する記述は全て \fBSCHED_RR\fP に 適用できる。異なるのは
+それぞれのプロセスは最大時間単位までしか実行できない ということである。
+\fBSCHED_RR\fP プロセスが時間単位と同じかそれより 長い時間実行されると、
+その優先度のリストの最後に置かれる。 より高い優先度のプロセスによって
+置きかえられ、その後実行を再開した \fBSCHED_RR\fP プロセスは、そのラウンド
+ロビン時間単位を完全に使い切る まで実行される。その時間単位の長さは
+\fBsched_rr_get_interval\fP(2) を使って取得できる。
+.SS "SCHED_OTHER: Linux のデフォルトの時分割スケジューリング"
+.\"
+\fBSCHED_OTHER\fP は静的優先度 0 でのみ使用できる。 \fBSCHED_OTHER\fP は Linux 標準の時分割スケジューラで、
+特別なリアルタイム機構を必要としていない全てのプロセスで使用される。 実行するプロセスは、静的優先度 0 のリストから、このリストの中だけで
+決定される「動的な」優先度 (dynamic priority) に基いて決定される。 動的な優先度は (\fBnice\fP(2)  や
+\fBsetpriority\fP(2)  により設定される) nice 値に基づいて決定されるもので、
+単位時間毎に、プロセスが実行可能だが、スケジューラにより実行が拒否された 場合にインクリメントされる。 これにより、全ての \fBSCHED_OTHER\fP
+プロセスでの公平性が保証される。
+.SS "SCHED_BATCH: バッチプロセスのスケジューリング"
+(Linux 2.6.16 以降)  \fBSCHED_BATCH\fP は静的優先度 0 でのみ使用できる。 このポリシーは (nice 値に基づく)
+動的な優先度にしたがってプロセスの スケジューリングが行われるという点で、\fBSCHED_OTHER\fP に似ている。
+異なるのは、このポリシーでは、プロセスが常に CPU に負荷のかかる (CPU\-intensive)  処理を行うと、スケジューラが仮定する点である。
+スケジューラはプロセスを呼び起こす毎にそのプロセスにスケジューリング上の ペナルティを少し課し、その結果、このプロセスはスケジューリングの決定で
+若干冷遇されるようになる。
+
+.\" The following paragraph is drawn largely from the text that
+.\" accompanied Ingo Molnar's patch for the implementation of
+.\" SCHED_BATCH.
+.\"
+このポリシーは、非対話的な処理だがその nice 値を下げたくない処理や、 (処理のタスク間で) 余計なタスクの置き換えの原因とある対話的な処理なしで
+確定的な (deterministic) スケジューリング・ポリシーを適用したい処理に 対して有効である。
+.SS "SCHED_IDLE: 非常に優先度の低いジョブのスケジューリング"
+(Linux 2.6.23 以降)  \fBSCHED_IDLE\fP は静的優先度 0 でのみ使用できる。 このポリシーではプロセスの nice
+値はスケジューリングに影響を与えない。
+
+.\"
+非常に低い優先度でのジョブの実行を目的としたものである (非常に低い優先度とは、ポリシー \fBSCHED_OTHER\fP か \fBSCHED_BATCH\fP
+での nice 値 +19 よりさらに低い優先度である)。
+.SS 子プロセスでのスケジューリング・ポリシーのリセット
+Linux 2.6.32 以降では、 \fBsched_setscheduler\fP() を呼び出す際に \fIpolicy\fP に
+\fBSCHED_RESET_ON_FORK\fP フラグを OR で指定できる。このフラグが指定されると、 \fBfork\fP(2)
+で作成された子プロセスは特権が必要なスケジューリング・ポリシーを継承しない。この機能はメディア再生を行うアプリケーションを想定して作られ、この機能を使うことで、アプリケーションが複数の子プロセスを作成することで
+\fBRLIMIT_RTTIME\fP リソース上限 (\fBgetrlimit\fP(2) 参照) を回避するのを防ぐことができる。
+
+より正確には、 \fBSCHED_RESET_ON_FORK\fP フラグが指定された場合、それ以降に作成される子プロセスに以下のルールが適用される。
+.IP * 3
+呼び出したプロセスのスケジューリング・ポリシーが \fBSCHED_FIFO\fP か \fBSCHED_RR\fP の場合、子プロセスのポリシーは
+\fBSCHED_OTHER\fP にリセットされる。
+.IP *
+子プロセスが負の nice 値を持っている場合、子プロセスの nice 値は 0 にリセットされる。
+.PP
+一度 \fBSCHED_RESET_ON_FORK\fP フラグが有効にされた後は、このフラグをリセットできるのは、プロセスが \fBCAP_SYS_NICE\fP
+ケーパビリティを持つ場合だけである。このフラグは \fBfork\fP(2) で作成された子プロセスでは無効になる。
+
+.\"
+\fBSCHED_RESET_ON_FORK\fP フラグは、 \fBsched_getscheduler\fP() が返すポリシー値で参照できる。
+.SS 特権とリソース制限
+2.6.12 より前のバージョンの Linux カーネルでは、 特権プロセス (\fBCAP_SYS_NICE\fP ケーパビリティを持つプロセス) だけが
+0 以外の静的優先度を設定する (すなわち、リアルタイム・スケジューリング・ポリシーを設定する) ことができる。 非特権プロセスができる変更は
+\fBSCHED_OTHER\fP ポリシーを設定することだけであり、さらにこの変更を行えるのは \fBsched_setscheduler\fP()
+の呼び出し元の実効ユーザ ID がポリシーの変更対象プロセス (\fIpid\fP で指定されたプロセス) の実ユーザ ID か実効ユーザ ID と
+一致する場合だけである。
+
+Linux 2.6.12 以降では、リソース制限 \fBRLIMIT_RTPRIO\fP が定義されており、 スケジューリング・ポリシーが
+\fBSCHED_RR\fP と \fBSCHED_FIFO\fP の場合の、非特権プロセスの静的優先度の上限を定めている。
+スケジューリング・ポリシーと優先度を変更する際のルールは以下の通りである。
+.IP * 3
+非特権プロセスに 0 以外の \fBRLIMIT_RTPRIO\fP ソフト・リミットが設定されている場合、
+非特権プロセスはそのプロセスのスケジューリング・ポリシーと優先度を 変更できるが、優先度を現在の自身の優先度と \fBRLIMIT_RTPRIO\fP
+ソフト・リミットの大きい方よりも高い値に設定できないという制限が課される。
+.IP *
+\fBRLIMIT_RTPRIO\fP ソフト・リミットが 0 の場合、優先度を下げるか、 リアルタイムでないポリシーへ切り替えるかの変更だけが許可される。
+.IP *
+ある非特権プロセスが別のプロセスに対してこれらの変更を行う際にも、 同じルールが適用される。変更を行えるのは、変更を行おうとするプロセス の実効ユーザ
+ID が変更対象のプロセスの実ユーザ ID か実効ユーザ ID と 一致している場合に限られる。
+.IP *
+.\" commit c02aa73b1d18e43cfd79c2f193b225e84ca497c8
+\fBSCHED_IDLE\fP の場合には特別なルールが適用される。 2.6.39 より前の Linux
+カーネルでは、このポリシーで動作する非特権プロセスは、 \fBRLIMIT_RTPRIO\fP
+リソース上限の値に関わらず、自分のポリシーを変更することができない。 2.6.39 以降の Linux カーネルでは、非特権プロセスは、自分の nice
+値が \fBRLIMIT_NICE\fP リソース上限 (\fBgetrlimit\fP(2) 参照)
+で許可された範囲である限りは、自分のスケジューリング・ポリシーを \fBSCHED_BATCH\fP か \fBSCHED_NORMAL\fP
+ポリシーに切り替えることができる。
+.PP
+特権プロセス (\fBCAP_SYS_NICE\fP ケーパビリティを持つプロセス) の場合、 \fBRLIMIT_RTPRIO\fP の制限は無視される;
+古いカーネルと同じように、スケジューリング・ポリシーと優先度に対し 任意の変更を行うことができる。 \fBRLIMIT_RTPRIO\fP
+に関するもっと詳しい情報は \fBgetrlimit\fP(2)  を参照のこと。
+.SS "応答時間 (response time)"
+.\" as described in
+.\" .BR request_irq (9).
+I/O 待ちで停止したより高い優先度のプロセスは再びスケジューリングされる 前にいくらかの応答時間がかかる。デバイス・ドライバーを書く場合には
+"slow interrupt" 割り込みハンドラーを使用することで この応答時間を劇的に減少させることができる。
+.SS その他
+子プロセスは \fBfork\fP(2)  の際に親プロセスのスケジューリング・ポリシーとパラメータを継承する。 \fBexecve\fP(2)
+の前後で、スケジューリング・ポリシーとパラメータは保持される。
+
+リアルタイム・プロセスは大抵、ページングの待ち時間を避けるために \fBmlock\fP(2)  や \fBmlockall\fP(2)
+を使ってメモリ・ロックをしなければならない。
+
+\fBSCHED_FIFO\fP や \fBSCHED_RR\fP でスケジューリングされる プロセスが停止せずに無限ループに陥ると、
+他の全てのより低い優先度のプロセスを永久に停止 (block) させてしまうので、 ソフトウェア開発者はコンソールのシェルの静的優先度をテストする
+アプリケーションよりも常に高く保つべきである。 これによって期待通りに停止したり終了したりしないリアルタイム・
+アプリケーションを緊急終了させることが可能になる。 \fBgetrlimit\fP(2)  のリソース制限 \fBRLIMIT_RTTIME\fP
+の説明も参照のこと。
+
+POSIX システムでは \fI<unistd.h>\fP に \fB_POSIX_PRIORITY_SCHEDULING\fP
+が定義されている場合にのみ \fBsched_setscheduler\fP()  と \fBsched_getscheduler\fP()  が使用できる。
+.SH 返り値
+成功した場合、 \fBsched_setscheduler\fP()  は 0 を返す。 成功した場合、 \fBsched_getscheduler\fP()
+は現在のそのプロセスのポリシー (非負の整数) を返す。 エラーの場合、\-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEINVAL\fP
+スケジューリング・ポリシー \fIpolicy\fP が間違っている。
+または \fIparam\fP が NULL である。
+または \fIparam\fP がそのポリシーでは意味をなさない。
+.TP 
+\fBEPERM\fP
+呼び出したプロセスが適切な特権を持っていない。
+.TP 
+\fBESRCH\fP
+プロセス ID \fIpid\fP のプロセスが見つからなかった。
+.SH 準拠
+POSIX.1\-2001 (但し、下記のバグの節も参照)。 \fBSCHED_BATCH\fP と \fBSCHED_IDLE\fP ポリシーは Linux
+固有である。
+.SH 注意
+POSIX.1 は、非特権プロセスが \fBsched_setscheduler\fP()  を呼び出すために必要な権限の詳細を規定しておらず、
+詳細はシステムにより異なる。 例えば、Solaris 7 のマニュアルページでは、 呼び出し元プロセスの実ユーザ ID または実効ユーザ ID が
+設定対象のプロセスの実ユーザ ID か保存 (save) set\-user\-ID と 一致していなければならない、となっている。
+.PP
+The scheduling policy and parameters are in fact per\-thread attributes on
+Linux.  The value returned from a call to \fBgettid\fP(2)  can be passed in the
+argument \fIpid\fP.  Specifying \fIpid\fP as 0 will operate on the attribute for
+the calling thread, and passing the value returned from a call to
+\fBgetpid\fP(2)  will operate on the attribute for the main thread of the
+thread group.  (If you are using the POSIX threads API, then use
+\fBpthread_setschedparam\fP(3), \fBpthread_getschedparam\fP(3), and
+\fBpthread_setschedprio\fP(3), instead of the \fBsched_*\fP(2)  system calls.)
+.PP
+もともとは、標準の Linux は一般目的のオペレーティングシステムとして 設計されており、バックグラウンド・プロセスや対話的アプリケーション、
+リアルタイム性の要求が厳しくないリアルタイム・アプリケーション (普通はタイミングの応答期限 (deadline) を満たす必要があるアプリケーション)
+を扱うことができた。 Linux カーネル 2.6 では、 カーネルのプリエンプション (タスクの置き換え) が可能であり、 新たに導入された O(1)
+スケジューラにより、 アクティブなタスクの数に関わらずスケジューリングに必要な時間は 固定で確定的 (deterministic)
+であることが保証されている。 それにも関わらず、カーネル 2.6.17 までは 真のリアルタイム・コンピューティングは実現できなかった。
+.SS "本流の Linux カーネルでのリアルタイム機能"
+.\" FIXME . Probably this text will need some minor tweaking
+.\" by about the time of 2.6.30; ask Carsten Emde about this then.
+カーネル 2.6.18 から現在まで、 Linux は徐々にリアルタイム機能を備えつつ
+あるが、 これらの機能のほとんどは、 Ingo Molnar, Thomas Gleixner,
+Steven Rostedt らによって開発された、 以前の \fIrealtime\-preempt\fP パッチ
+からのものである。 これらのパッチが本流のカーネルに完全にマージされるま
+では (マージの完了はカーネル 2.6.30 あたりの予定)、 最高のリアルタイム
+性能を達成するには realtime\-preempt パッチを 組み込まなければならない。
+これらのパッチは
+.in +4n
+.nf
+
+patch\-\fIkernelversion\fP\-rt\fIpatchversion\fP
+.fi
+.in
+.PP
+という名前で、
+.UR http://www.kernel.org\:/pub\:/linux\:/kernel\:/projects\:/rt/
+.UE
+からダウンロードできる。
+
+このパッチが適用されず、かつパッチの内容の本流のカーネルへのマージが 完了するまでは、カーネルの設定では \fBCONFIG_PREEMPT_NONE\fP,
+\fBCONFIG_PREEMPT_VOLUNTARY\fP, \fBCONFIG_PREEMPT_DESKTOP\fP の 3つのプリエンプション・クラス
+(preemption class) だけが提供される。 これらのクラスでは、最悪の場合のスケジューリング遅延がそれぞれ
+全く減らない、いくらか減る、かなり減る。
+
+パッチが適用された場合、またはパッチの内容の本流のカーネルへのマージが 完了した後では、上記に加えて設定項目として
+\fBCONFIG_PREEMPT_RT\fP が利用可能になる。この項目を選択すると、 Linux
+は通常のリアルタイム・オペレーティングシステムに変身する。 この場合には、 \fBsched_setscheduler\fP()  で選択できる FIFO と
+RR のスケジューリング・ポリシーは、 真のリアルタイム優先度を持つプロセスを最悪の場合のスケジューリング遅延が
+最小となる環境で動作させるために使われることになる。
+.SH バグ
+POSIX では、成功時に \fBsched_setscheduler\fP()  は直前のスケジューリング・ポリシーを返すべきとされている。 Linux の
+\fBsched_setscheduler\fP()  はこの要求仕様に準拠しておらず、 成功時には常に 0 を返す。
+.SH 関連項目
+.ad l
+.nh
+\fBchrt\fP(1), \fBgetpriority\fP(2), \fBmlock\fP(2), \fBmlockall\fP(2), \fBmunlock\fP(2),
+\fBmunlockall\fP(2), \fBnice\fP(2), \fBsched_get_priority_max\fP(2),
+\fBsched_get_priority_min\fP(2), \fBsched_getaffinity\fP(2), \fBsched_getparam\fP(2),
+\fBsched_rr_get_interval\fP(2), \fBsched_setaffinity\fP(2), \fBsched_setparam\fP(2),
+\fBsched_yield\fP(2), \fBsetpriority\fP(2), \fBcapabilities\fP(7), \fBcpuset\fP(7)
+.ad
+.PP
+\fIProgramming for the real world \- POSIX.4\fP by Bill O. Gallmeister, O'Reilly
+& Associates, Inc., ISBN 1\-56592\-074\-0.
+.PP
+The Linux kernel source file \fIDocumentation/scheduler/sched\-rt\-group.txt\fP
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index f0ba9a9..e8c3eed 100644 (file)
@@ -65,6 +65,6 @@ Linux のスケージュリング (scheduling) については \fBsched_setsched
 \fIProgramming for the real world \- POSIX.4\fP by Bill O. Gallmeister, O'Reilly
 & Associates, Inc., ISBN 1\-56592\-074\-0.
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/select.2 b/manual/LDP_man-pages/draft/man2/select.2
new file mode 100644 (file)
index 0000000..5905f7c
--- /dev/null
@@ -0,0 +1,355 @@
+.\" This manpage is copyright (C) 1992 Drew Eckhardt,
+.\"                 copyright (C) 1995 Michael Shields.
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 1995-05-18 by Jim Van Zandt <jrv@vanzandt.mv.com>
+.\" Sun Feb 11 14:07:00 MET 1996  Martin Schulze  <joey@linux.de>
+.\"    * layout slightly modified
+.\"
+.\" Modified Mon Oct 21 23:05:29 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified Thu Feb 24 01:41:09 CET 2000 by aeb
+.\" Modified Thu Feb  9 22:32:09 CET 2001 by bert hubert <ahu@ds9a.nl>, aeb
+.\" Modified Mon Nov 11 14:35:00 PST 2002 by Ben Woodard <ben@zork.net>
+.\" 2005-03-11, mtk, modified pselect() text (it is now a system
+.\"     call in 2.6.16.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SELECT 2 2012\-08\-17 Linux "Linux Programmer's Manual"
+.SH 名前
+select, pselect, FD_CLR, FD_ISSET, FD_SET, FD_ZERO \- 同期 I/O の多重化
+.SH 書式
+.nf
+/* POSIX.1\-2001 に従う場合 */
+.br
+\fB#include <sys/select.h>\fP
+.sp
+/* 以前の規格に従う場合 */
+.br
+\fB#include <sys/time.h>\fP
+.br
+\fB#include <sys/types.h>\fP
+.br
+\fB#include <unistd.h>\fP
+.sp
+\fBint select(int \fP\fInfds\fP\fB, fd_set *\fP\fIreadfds\fP\fB, fd_set *\fP\fIwritefds\fP\fB,\fP
+\fB           fd_set *\fP\fIexceptfds\fP\fB, struct timeval *\fP\fItimeout\fP\fB);\fP
+.sp
+\fBvoid FD_CLR(int \fP\fIfd\fP\fB, fd_set *\fP\fIset\fP\fB);\fP
+.br
+\fBint  FD_ISSET(int \fP\fIfd\fP\fB, fd_set *\fP\fIset\fP\fB);\fP
+.br
+\fBvoid FD_SET(int \fP\fIfd\fP\fB, fd_set *\fP\fIset\fP\fB);\fP
+.br
+\fBvoid FD_ZERO(fd_set *\fP\fIset\fP\fB);\fP
+.sp
+\fB#include <sys/select.h>\fP
+.sp
+\fBint pselect(int \fP\fInfds\fP\fB, fd_set *\fP\fIreadfds\fP\fB, fd_set *\fP\fIwritefds\fP\fB,\fP
+\fB            fd_set *\fP\fIexceptfds\fP\fB, const struct timespec *\fP\fItimeout\fP\fB,\fP
+\fB            const sigset_t *\fP\fIsigmask\fP\fB);\fP
+.fi
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBpselect\fP(): _POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600
+.SH 説明
+\fBselect\fP()  や \fBpselect\fP()  を使うと、プログラムで複数のファイルディスクリプタを監視し、
+一つ以上のファイルディスクリプタがある種の I/O 操作の 「ready (準備ができた)」状態 (例えば、読み込み可能になった状態)
+になるまで待つことができる。 ファイルディスクリプタが ready (準備ができた) とは、 対応する I/O 操作 (例えば \fBread\fP(2)
+など) が停止 (block) なしに実行可能な状態にあることを意味する。
+.PP
+\fBselect\fP()  と \fBpselect\fP()  の動作は同じであるが、以下の 3 点が異なる:
+.TP 
+(i)
+\fBselect\fP()  では、タイムアウト時間の指定に構造体 \fIstruct timeval\fP (秒・マイクロ秒単位) を用いる。 一方、
+\fBpselect\fP()  関数では、構造体 \fIstruct timespec\fP (秒・ナノ秒単位) を用いる。
+.TP 
+(ii)
+\fBselect\fP()  は残り時間を示す \fItimeout\fP 引き数を更新することがある。 \fBpselect\fP()  はこの引き数を変更しない。
+.TP 
+(iii)
+\fBselect\fP()  は \fIsigmask\fP 引き数を持たない。その動作は \fIsigmask\fP に NULL を指定した場合の
+\fBpselect\fP()  と同じである。
+.PP
+3 つの独立したファイルディスクリプタ集合の監視を行う。 \fIreadfds\fP に入れられたディスクリプタについては、読み込みが可能かどうかを 監視する
+(より正確にいうと、停止 (block) なしで読むことができるかを 調べる。ファイルの終端 (end\-of\-file) の場合も、
+ファイルディスクリプタは読み込み可能として扱われる)。 \fIwritefds\fP に入れられたディスクリプタについては、停止せずに書き込みが
+可能かどうかを監視する。 \fIexceptfds\fP にあるものについては、例外の監視を行なう。システムコール終了時に、
+どのファイルディスクリプタの状態が実際に変化したか示すために、 集合の内容が変更される。
+ある種別のイベントを監視したいファイルディスクリプタが一つもない場合には、 対応するファイルディスクリプタ集合に NULL を指定することができる。
+.PP
+集合を操作するために 4 つのマクロが提供されている。 \fBFD_ZERO\fP()  は集合を消去する。 \fBFD_SET\fP()  と
+\fBFD_CLR\fP()  はそれぞれ指定したファイルディスクリプタの集合への追加、削除を行う。 \fBFD_ISSET\fP()
+は集合にファイルディスクリプタがあるかどうか調べる; このマクロは \fBselect\fP()  が終了した後に使うと便利である。
+.PP
+\fInfds\fP は 3 つの集合に含まれるファイルディスクリプタの最大値に 1 を足したものである。
+.PP
+\fItimeout\fP 引き数で、ファイルディスクリプタが ready になるのを待って
+\fBselect\fP() が停止する最小の停止時間を指定する
+(この停止時間はシステムクロックの粒度に切り上げられ、
+カーネルのスケジューリング遅延により少しだけ長くなる可能性がある)。
+\fItimeval\fP 構造体の両方のフィールドが 0 の場合、 \fBselect\fP() はすぐに復
+帰する (この機能はポーリング (polling) を行うのに便利である)。
+\fItimeout\fP に NULL (タイムアウトなし) が指定されると、 \fBselect\fP() は無
+期限に停止 (block) する。
+.PP
+\fIsigmask\fP は、シグナルマスク (\fBsigprocmask\fP(2)  を参照) へのポインタである。 \fIsigmask\fP が NULL
+でない場合、 \fBpselect\fP()  は \fIsigmask\fP が指しているシグナルマスクで現在のシグナルマスクを置き換えてから、 "select"
+関数を実行し、 終了後にシグナルマスクを元のシグナルマスクに戻す。
+.PP
+\fItimeout\fP 引き数の精度の違いを除くと、以下の \fBpselect\fP()  の呼び出しは、
+.nf
+
+    ready = pselect(nfds, &readfds, &writefds, &exceptfds,
+                    timeout, &sigmask);
+
+.fi
+次のコールを \fIatomic\fP に実行するのと等価である。
+.nf
+
+    sigset_t origmask;
+
+    pthread_sigmask(SIG_SETMASK, &sigmask, &origmask);
+    ready = select(nfds, &readfds, &writefds, &exceptfds, timeout);
+    pthread_sigmask(SIG_SETMASK, &origmask, NULL);
+.fi
+.PP
+\fBpselect\fP()  が必要になる理由は、シグナルやファイルディスクリプタの状態変化を 待ちたいときには、競合状態を避けるために atomic
+なテストが必要になる からである。 (シグナルハンドラが大域フラグを設定して戻る場合を考えてみよう。 この大域フラグのテストに続けて
+\fBselect\fP()  を呼び出すと、 シグナルがテストの直後かつ呼び出しの直前に届いた時には \fBselect\fP()
+は永久にハングしてしまうかもしれない。 一方、 \fBpselect\fP()  を使うと、まずシグナルを禁止 (block)
+して、入ってくるシグナルを操作し、 望みの \fIsigmask\fP で \fBpselect\fP()  を呼び出すことで、前記の競合を避けることができる。)
+.SS タイムアウト
+これらの関数で使用される時間関連の構造体は、 \fI<sys/time.h>\fP で
+
+.in +4n
+.nf
+struct timeval {
+    long    tv_sec;         /* 秒 */
+    long    tv_usec;        /* マイクロ秒 */
+};
+.fi
+.in
+
+や
+
+.in +4n
+.nf
+struct timespec {
+    long    tv_sec;         /* 秒 */
+    long    tv_nsec;        /* ナノ秒 */
+};
+.fi
+.in
+
+のように定義されている。 (POSIX.1\-2001 での定義については下記の「注意」を参照)
+.PP
+秒単位以下の精度でスリープを実現する 移植性の高い方法として、 3 つの集合全てを空、 \fInfds\fP を 0 、 \fItimeout\fP を NULL
+でない値に設定して \fBselect\fP()  を呼び出すという方法を使っているコードもある。
+.PP
+.\" .PP - it is rumored that:
+.\" On BSD, when a timeout occurs, the file descriptor bits are not changed.
+.\" - it is certainly true that:
+.\" Linux follows SUSv2 and sets the bit masks to zero upon a timeout.
+Linux では、 \fBselect\fP()  は \fItimeout\fP を変更し、残りの停止時間を反映するようになっているが、
+他のほとんどの実装ではこのようになっていない (POSIX.1\-2001 はどちらの動作も認めている)。 このため、 \fItimeout\fP
+を参照している Linux のコードを他のオペレーティング・システムへ 移植する場合、問題が起こる。 また、ループの中で \fItimeval\fP
+構造体を初期化せずにそのまま再利用して \fBselect\fP()  を複数回行なっているコードを Linux へ移植する場合にも、問題が起こる。
+\fBselect\fP()  から復帰した後は \fItimeout\fP は未定義であると考えるべきである。
+.SH 返り値
+成功した場合、 \fBselect\fP()  と \fBpselect\fP()  は更新された 3 つのディスクリプタ集合に含まれている
+ファイルディスクリプタの数 (つまり、 \fIreadfds\fP, \fIwritefds\fP, \fIexceptfds\fP 中の 1 になっているビットの総数)
+を返す。 何も起こらずに時間切れになった場合、 ディスクリプタの数は 0 になることもある。 エラーならば \-1 を返し、 \fIerrno\fP
+に適切な値が設定される; 集合と \fItimeout\fP は未定義となるので、エラーが起こった後はそれらの内容を信頼してはならない。
+.SH エラー
+.TP 
+\fBEBADF\fP
+いずれかの集合に無効なファイルディスクリプタが指定された (おそらくは、すでにクローズされたファイルディスクリプタか、
+エラーが発生したファイルディスクリプタが指定された)。
+.TP 
+\fBEINTR\fP
+シグナルを受信した。
+.TP 
+\fBEINVAL\fP
+\fIn\fP が負、または \fItimeout\fP に入っている値が不正である。
+.TP 
+\fBENOMEM\fP
+内部テーブルにメモリを割り当てることができなかった。
+.SH バージョン
+\fBpselect\fP()  はカーネル 2.6.16 で Linux に追加された。 それ以前は、 \fBpselect\fP()  は glibc
+でエミュレートされていた (「バグ」の章を参照)。
+.SH 準拠
+\fBselect\fP()  は POSIX.1\-2001 と 4.4BSD (\fBselect\fP()  は 4.2BSD で最初に登場した) に準拠する。
+BSD ソケット層のクローンをサポートしている非 BSD システム (System V 系も含む) との間でだいたい移植性がある。しかし System
+V 系では たいがい timeout 変数を exit の前にセットするが、 BSD 系ではそうでないので注意すること。
+.PP
+\fBpselect\fP()  は POSIX.1g と POSIX.1\-2001 で定義されている。
+.SH 注意
+\fIfd_set\fP は固定サイズのバッファである。 負や \fBFD_SETSIZE\fP 以上の値を持つ \fIfd\fP に対して \fBFD_CLR\fP()  や
+\fBFD_SET\fP()  を実行した場合、 どのような動作をするかは定義されていない。 また、 POSIX では \fIfd\fP
+は有効なファイルディスクリプタでなければならないと規定されている。
+
+型宣言に関しては、昔ながらの状況では \fItimeval\fP 構造体の 2 つのフィールドは (上記のように) 両方とも \fIlong\fP
+型であり、構造体は \fI<sys/time.h>\fP で定義されている。 POSIX.1\-2001 の下では、以下のようになっている。
+
+.in +4n
+.nf
+struct timeval {
+        time_t         tv_sec;     /* 秒 */
+        suseconds_t    tv_usec;    /* マイクロ秒 */
+};
+.fi
+.in
+
+この構造体は \fI<sys/select.h>\fP で定義されており、データ型 \fItime_t\fP と \fIsuseconds_t\fP は
+\fI<sys/types.h>\fP で定義されている。
+.LP
+プロトタイプに関しては、昔ながらの状況で \fBselect\fP()  を使いたい場合は、 \fI<time.h>\fP
+をインクルードすればよい。 POSIX.1\-2001 の環境で \fBselect\fP()  と \fBpselect\fP()  を使いたい場合は、
+\fI<sys/select.h>\fP をインクルードすればよい。
+
+ヘッダファイル \fI<sys/select.h>\fP は libc4 と libc5 にはなく、glibc 2.0 以降に存在する。
+悪いことに glibc 2.0 以前では \fBpselect\fP()  のプロトタイプが間違っている。 glibc 2.1 から 2.2.1 では
+\fB_GNU_SOURCE\fP が定義されている場合に、 \fBpselect\fP()  が提供される。 glibc 2.2.2 以降では、
+\fBpselect\fP()  を使用するには、「書式」に記載された要件を満たす必要がある。
+.SS "Multithreaded applications"
+If a file descriptor being monitored by \fBselect\fP()  is closed in another
+thread, the result is unspecified.  On some UNIX systems, \fBselect\fP()
+unblocks and returns, with an indication that the file descriptor is ready
+(a subsequent I/O operation will likely fail with an error, unless another
+the file descriptor reopened between the time \fBselect\fP()  returned and the
+I/O operations was performed).  On Linux (and some other systems), closing
+the file descriptor in another thread has no effect on \fBselect\fP().  In
+summary, any application that relies on a particular behavior in this
+scenario must be considered buggy.
+.SS "Linux での注意"
+このページで説明している \fBpselect\fP() のインターフェースは、glibc に
+実装されているものである。内部で呼び出される Linux のシステムコールは
+\fBpselect6\fP() という名前である。このシステムコールは glibc のラッパー
+関数とは少し違った動作をする。
+
+Linux の \fBpselect6\fP() システムコールは \fItimeout\fP 引き数を変更する。
+しかし、glibc のラッパー関数は、システムコールに渡す timeout 引き数と
+してローカル変数を使うことでこの動作を隠蔽している。このため、glibc の
+\fBpselect\fP() 関数は \fItimeout\fP 引き数を変更しない。
+これが POSIX.1\-2001 が要求している動作である。
+
+\fBpselect6\fP() システムコールの最後の引き数は \fIsigset_t\ *\fP 型の
+ポインタではなく、以下に示す構造体である。
+.in +4
+.nf
+
+struct {
+    const sigset_t *ss;     /* シグナル集合へのポインタ */
+    size_t          ss_len; /* 'ss' が指すオブジェクトのサイズ
+                               (バイト数) */
+};
+
+.fi
+.in
+このようにすることで、ほとんどのアーキテクチャがサポートしている
+システムコールの引き数が最大で 6 個という事実を満たしつつ、
+\fBpselect6\fP() システムコールがシグナル集合へのポインタとシグナル集合
+のサイズの両方を取得することができるのである。
+.SH バグ
+glibc 2.0 では、 \fIsigmask\fP 引き数を取らないバージョンの \fBpselect\fP()  が提供されていた。
+
+バージョン 2.1 以降の glibc では、 \fBpselect\fP()  は \fBsigprocmask\fP(2)  と \fBselect\fP()
+を使ってエミュレートされていた。 この実装にはきわどい競合条件において脆弱性が残っていた。 この競合条件における問題を防止するために
+\fBpselect\fP()  は設計されたのである。 最近のバージョンの glibc では、カーネルがサポートしている場合には、 (競合が起こらない)
+\fBpselect\fP()  システムコールが使用される。
+
+\fBpselect\fP() がないシステムにおいて、シグナルの捕捉を信頼性があり (移植
+性も高い) 方法で行うには、 自己パイプ (self\-pipe) という技を使うとよい。
+この方法では、シグナルハンドラはパイプへ 1 バイトのデータを書き込み、
+同じパイプのもう一端をメインプログラムの \fBselect\fP() で監視する (一杯に
+なったパイプへの書き込みや空のパイプから読み出しを行った際に起こるであ
+ろう停止 (blocking) を避けるためには、パイプへの読み書きの際には 非停止
+(nonblocking) I/O を使用するとよい)。
+
+.\" Stevens discusses a case where accept can block after select
+.\" returns successfully because of an intervening RST from the client.
+.\" Maybe the kernel should have returned EIO in such a situation?
+Linux では、 \fBselect\fP()  がソケットファイルディスクリプタで "読み込みの準備ができた" と報告した場合でも、 この後で read
+を行うと停止 (block) することがある。このような状況は、 例えば、データが到着したが、検査でチェックサム異常が見つかり廃棄された時
+などに起こりえる。他にもファイルディスクリプタが準備できたと間違って 報告される状況が起こるかもしれない。
+したがって、停止すべきではないソケットに対しては \fBO_NONBLOCK\fP を使うとより安全であろう。
+
+Linux では、 \fBselect\fP()  がシグナルハンドラにより割り込まれた場合 (つまり \fBEINTR\fP エラーが返る場合)、
+\fItimeout\fP も変更する。 これは POSIX.1\-2001 では認められていない挙動である。 Linux の \fBpselect\fP()
+システムコールも同じ挙動をするが、 glibc のラッパー関数がこの挙動を隠蔽している。 具体的には、glibc のラッパー関数の内部で、
+\fItimeout\fP をローカル変数にコピーし、 このローカル変数をシステムコールに渡している。
+.SH 例
+.nf
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+int
+main(void)
+{
+    fd_set rfds;
+    struct timeval tv;
+    int retval;
+
+    /* stdin (fd 0) を監視し、入力があった場合に表示する。*/
+    FD_ZERO(&rfds);
+    FD_SET(0, &rfds);
+
+    /* 5 秒間監視する。*/
+    tv.tv_sec = 5;
+    tv.tv_usec = 0;
+
+    retval = select(1, &rfds, NULL, NULL, &tv);
+    /* この時点での tv の値を信頼してはならない。*/
+
+    if (retval == \-1)
+       perror("select()");
+    else if (retval)
+        printf("今、データが取得できました。\en");
+        /* FD_ISSET(0, &rfds) が true になる。*/
+    else
+        printf("5 秒以内にデータが入力されませんでした。\en");
+
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBaccept\fP(2), \fBconnect\fP(2), \fBpoll\fP(2), \fBread\fP(2), \fBrecv\fP(2), \fBsend\fP(2),
+\fBsigprocmask\fP(2), \fBwrite\fP(2), \fBepoll\fP(7), \fBtime\fP(7)
+
+考察と使用例の書かれたチュートリアルとして、 \fBselect_tut\fP(2)  がある。
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 539dc90..d033265 100644 (file)
@@ -602,6 +602,6 @@ main(int argc, char *argv[])
 \fBsigaddset\fP(3), \fBsigdelset\fP(3), \fBsigemptyset\fP(3), \fBsigfillset\fP(3),
 \fBsigismember\fP(3), \fBepoll\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/semctl.2 b/manual/LDP_man-pages/draft/man2/semctl.2
new file mode 100644 (file)
index 0000000..4914ee1
--- /dev/null
@@ -0,0 +1,284 @@
+.\" Copyright 1993 Giorgio Ciucci (giorgio@crcc.it)
+.\" and Copyright 2004, 2005 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified Tue Oct 22 17:53:56 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified Fri Jun 19 10:59:15 1998 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified Sun Feb 18 01:59:29 2001 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified 20 Dec 2001, Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Modified 21 Dec 2001, aeb
+.\" Modified 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on CAP_IPC_OWNER requirement
+.\" Modified 17 Jun 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on CAP_SYS_ADMIN requirement for IPC_SET and IPC_RMID
+.\" Modified, 11 Nov 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Language and formatting clean-ups
+.\"    Rewrote semun text
+.\"    Added semid_ds and ipc_perm structure definitions
+.\" 2005-08-02, mtk: Added IPC_INFO, SEM_INFO, SEM_STAT descriptions.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SEMCTL 2 2012\-05\-31 Linux "Linux Programmer's Manual"
+.SH 名前
+semctl \- System V セマフォの制御操作を行なう
+.SH 書式
+.nf
+\fB#include <sys/types.h>\fP
+\fB#include <sys/ipc.h>\fP
+\fB#include <sys/sem.h>\fP
+.sp
+\fBint semctl(int \fP\fIsemid\fP\fB, int \fP\fIsemnum\fP\fB, int \fP\fIcmd\fP\fB, ...);\fP
+.fi
+.SH 説明
+\fBsemctl\fP()  は、 \fIsemid\fP で指定された System V セマフォ集合 (semaphore set)  またはセマフォ集合の
+\fIsemnun\fP 番目のセマフォに対して、 \fIcmd\fP で指定された制御操作を行なう (集合内のセマフォの番号は 0 から始まる)。
+.PP
+この関数は、 \fIcmd\fP の値に依存して、3 個または 4 個の引き数を持つ。 引き数が 4 個の場合、第 4 引き数の型は \fIunion
+semun\fP である。 \fI呼び出し元プログラム\fPは、 この共用体 (union) を以下のように定義しなければならない。
+
+.nf
+.in +4n
+union semun {
+    int              val;    /* SETVAL の値 */
+    struct semid_ds *buf;    /* IPC_STAT, IPC_SET 用のバッファ */
+    unsigned short  *array;  /* GETALL, SETALL 用の配列 */
+    struct seminfo  *__buf;  /* IPC_INFO 用のバッファ
+                                (Linux 固有) */
+};
+.in
+.fi
+.PP
+\fIsemid_ds\fP データ構造体は \fI<sys/sem.h>\fP で以下のように定義されている:
+.nf
+.in +4n
+
+struct semid_ds {
+    struct ipc_perm sem_perm;  /* 所有権と許可 */
+    time_t          sem_otime; /* 最後の semop の時刻 */
+    time_t          sem_ctime; /* 最後に変更が行われた時刻 */
+    unsigned short  sem_nsems; /* 集合内のセマフォの数 */
+};
+.in
+.fi
+.PP
+\fIipc_perm\fP 構造体は以下のように定義されている (強調されたフィールドは \fBIPC_SET\fP を使って設定可能である):
+.PP
+.nf
+.in +4n
+struct ipc_perm {
+    key_t          __key; /* semget(2) に与えられるキー */
+    uid_t          \fBuid\fP;   /* 所有者 (owner) の実効 UID */
+    gid_t          \fBgid\fP;   /* 所有者の実効 GID */
+    uid_t          cuid;  /* 作成者 (creator) の実効 UID */
+    gid_t          cgid;  /* 作成者の実効 GID */
+    unsigned short \fBmode\fP;  /* 許可 */
+    unsigned short __seq; /* シーケンス番号 */
+};
+.in
+.fi
+.PP
+\fIcmd\fP として有効な値は
+.TP  10
+\fBIPC_STAT\fP
+\fIsemid\fP に関連づけられたカーネルデータ構造体の情報を \fIarg.buf\fP で指された \fIsemid_ds\fP 構造体へコピーする。
+\fIsemnum\fP 引き数は無視される。 呼び出したプロセスはそのセマフォ集合に対する 読み込み許可を持たなければならない。
+.TP 
+\fBIPC_SET\fP
+\fIarg.buf\fP で指定された \fIsemid_ds\fP 構造体のメンバーのいくつかの値を、
+このセマフォに関連づけられたカーネルデータ構造体に書き込み、 \fIsem_ctime\fP メンバーの値も更新する。 構造体の以下のメンバーが更新される:
+\fIsem_perm.uid\fP, \fIsem_perm.gid\fP, \fIsem_perm.mode\fP (の最下位 9 ビット)。
+呼び出したプロセスの実効 UID が所有者 (\fIsem_perm.uid\fP)  または作成者 (\fIsem_perm.cuid\fP)
+と一致するか、呼び出した人が特権を持たなければならない。 \fIsemnum\fP 引き数は無視される。
+.TP 
+\fBIPC_RMID\fP
+セマフォ集合をただちに削除し、その集合上の \fBsemop\fP(2)  コールでブロックされている全てのプロセスを目覚めさせる (エラー値が返されて、
+\fIerrno\fP に \fBEIDRM\fP が設定される)。 呼び出したプロセスの実効ユーザ ID が そのセマフォ集合の作成者または所有者と一致するか、
+呼び出した人が特権を持たなければならない。 \fIsemnum\fP 引き数は無視される。
+.TP 
+\fBIPC_INFO\fP (Linux 固有)
+システム全体でのセマフォの制限とパラメータに関する情報を、 \fIarg.__buf\fP が指す構造体に入れて返す。 この構造体は \fIseminfo\fP
+型である。 \fIseminfo\fP は \fB_GNU_SOURCE\fP 機能検査マクロが定義された場合に \fI<sys/sem.h>\fP
+で以下のように定義される:
+.nf
+.in +4n
+
+struct  seminfo {
+    int semmap;  /* セマフォ・マップの最大エントリ数;
+                    カーネル内では未使用 */
+    int semmni;  /* セマフォ集合の最大数 */
+    int semmns;  /* 全セマフォ集合中のセマフォの
+                    最大数 */
+    int semmnu;  /* アンドゥ構造体のシステム全体での
+                    最大数; カーネル内では未使用 */
+    int semmsl;  /* 一つのセマフォ集合の最大セマフォ数 */
+    int semopm;  /* semop(2) に渡す操作の最大数 */
+    int semume;  /* プロセスあたりのアンドゥ・エントリ
+                    の最大数; カーネル内では未使用 */
+    int semusz;  /* 構造体 sem_undo のサイズ */
+    int semvmx;  /* セマフォの最大値 */
+    int semaem;  /* セマフォの調整 (semaphore adjustment;
+                     SEM_UNDO) のために記録される最大値 */
+};
+
+.in
+.fi
+設定 \fIsemmsl\fP, \fIsemmns\fP, \fIsemopm\fP, \fIsemmni\fP は \fI/proc/sys/kernel/sem\fP
+経由で変更可能である。 詳しくは \fBproc\fP(5)  を参照。
+.TP 
+\fBSEM_INFO\fP (Linux 固有)
+\fBIPC_INFO\fP のときと同じ情報を格納した \fIseminfo\fP 構造体を返す。 但し、以下のフィールドにはセマフォが消費しているシステム資源に
+関する情報が格納される点が異なる。 \fIsemusz\fP フィールドは現在システム上に存在するセマフォ集合の数を返す。 \fIsemaem\fP
+フィールドはシステム上の全てのセマフォ集合に含まれる セマフォの総数を返す。
+.TP 
+\fBSEM_STAT\fP (Linux 固有)
+\fBIPC_STAT\fP と同じく \fIsemid_ds\fP 構造体を返す。 但し、 \fIsemid\fP
+引き数は、セマフォ識別子ではなく、システム上の全てのセマフォ集合 に関する情報を管理するカーネルの内部配列へのインデックスである。
+.TP 
+\fBGETALL\fP
+集合の全てのセマフォの \fBsemval\fP の値 (現在の値) を \fIarg.array\fP に返す。 \fIsemnum\fP 引き数は無視される。
+呼び出したプロセスはそのセマフォ集合に読み込み許可を持たなければならない。
+.TP 
+\fBGETNCNT\fP
+システムコールは集合の \fIsemnum\fP 番目のセマフォの \fBsemncnt\fP の値を返す (集合の \fIsemnum\fP 番目のセマフォの
+\fBsemval\fP の増加を待っているプロセスの数を返す)。 呼び出したプロセスはそのセマフォ集合に読み込み許可を持たなければならない。
+.TP 
+\fBGETPID\fP
+システムコールは集合の \fIsemnum\fP 番目のセマフォの \fBsempid\fP の値 (集合の \fIsemnum\fP 番目のセマフォに最後に
+\fBsemop\fP(2)  コールを実行したプロセスの PID) を返す。 呼び出したプロセスはそのセマフォ集合に読み込み許可を持たなければならない。
+.TP 
+\fBGETVAL\fP
+システムコールは集合の \fIsemnum\fP 番目のセマフォの \fBsemval\fP の値を返す。
+呼び出したプロセスはそのセマフォ集合に読み込み許可を持たなければならない。
+.TP 
+\fBGETZCNT\fP
+システムコールは集合の \fIsemnum\fP 番目のセマフォの \fBsemzcnt\fP の値を返す (集合の \fIsemnum\fP 番目のセマフォの
+\fBsemval\fP の値が 0 になるのを待っているプロセスの数を返す)。 呼び出したプロセスはそのセマフォ集合に読み込み許可を持たなければならない。
+.TP 
+\fBSETALL\fP
+集合の全てのセマフォの \fBsemval\fP に \fIarg.array\fP で指定された値を設定する。 その集合に関連する \fIsemid_ds\fP
+構造体の \fIsem_ctime\fP メンバーの値も更新する。 全てのプロセスのセマフォの変更についてのアンドゥ・エントリ (\fBsemop\fP(2)
+を参照) は消去 (clear) される。 セマフォの値の変更により、他のプロセス内でブロックされている \fBsemop\fP(2)
+コールの続行が許可されると、それらのプロセスは起こされる (wake up)。 \fIsemnum\fP 引き数は無視される。
+呼び出したプロセスはそのセマフォ集合に 変更 (書き込み) 許可を持たなければならない。
+.TP 
+\fBSETVAL\fP
+集合の \fIsemnum\fP 番目のセマフォの \fBsemval\fP に \fIarg.val\fP の値を設定する。その集合に関連する \fIsemid_ds\fP
+構造体の \fIsem_ctime\fP メンバーの値も更新する。 全てのプロセスのセマフォの変更についてのアンドゥ・エントリは消去される。
+セマフォの値の変更により、他のプロセス内でブロックされている \fBsemop\fP(2)  コールの続行が許可されると、それらのプロセスは起こされる
+(wake up)。 呼び出したプロセスはそのセマフォ集合に 変更 (書き込み) 許可を持たなければならない。
+.SH 返り値
+失敗した場合、 \fBsemctl\fP()  は \-1 を返し、 \fIerrno\fP にそのエラーを示す。
+
+そうでなければシステムコールは \fIcmd\fP によって以下の負でない値を返す:
+.TP  12
+\fBGETNCNT\fP
+\fBsemncnt\fP の値
+.TP 
+\fBGETPID\fP
+\fBsempid\fP の値
+.TP 
+\fBGETVAL\fP
+\fBsemval\fP の値
+.TP 
+\fBGETZCNT\fP
+\fBsemzcnt\fP の値
+.TP 
+\fBIPC_INFO\fP
+全てのセマフォ集合に関する情報を管理しているカーネルの内部配列の使用中 エントリのインデックスの最大値
+(この情報は、システムの全てのセマフォ集合に関する情報を取得するために \fBSEM_STAT\fP 操作を繰り返し実行する際に使用できる)
+.TP 
+\fBSEM_INFO\fP
+\fBIPC_INFO\fP と同じ
+.TP 
+\fBSEM_STAT\fP
+\fIsemid\fP で指定されたインデックスを持つセマフォ集合の識別子
+.LP
+\fIcmd\fP の値がそれ以外の場合、成功すると 0 が返される。
+.SH エラー
+失敗した場合は \fIerrno\fP には以下の値のどれかが設定される:
+.TP 
+\fBEACCES\fP
+\fIcmd\fP 引き数が \fBGETALL\fP, \fBGETPID\fP, \fBGETVAL\fP, \fBGETNCNT\fP, \fBGETZCNT\fP,
+\fBIPC_STAT\fP, \fBSEM_STAT\fP, \fBSETALL\fP, \fBSETVAL\fP のうちの何れかの値を持ち、
+呼び出したプロセスがセマフォに対して必要とされる許可と \fBCAP_IPC_OWNER\fP ケーパビリティ (capability) を持っていない。
+.TP 
+\fBEFAULT\fP
+\fIarg.buf\fP または \fIarg.array\fP で指されているアドレスにアクセスすることができない。
+.TP 
+\fBEIDRM\fP
+セマフォ集合が削除された。
+.TP 
+\fBEINVAL\fP
+\fIcmd\fP または \fIsemid\fP に無効な値が指定された。 もしくは、 \fBSEM_STAT\fP 操作の場合に、 \fIsemid\fP
+で指定されたインデックス値が現在未使用の配列のスロットを参照いていた。
+.TP 
+\fBEPERM\fP
+\fIcmd\fP 引き数に \fBIPC_SET\fP または \fBIPC_RMID\fP が指定され、呼び出したプロセスの実効ユーザ ID がセマフォの
+(\fIsem_perm.cuid\fP で見つかる) 作成者または (\fIsem_perm.uid\fP で見つかる) 所有者でもなく、 プロセスが
+\fBCAP_SYS_ADMIN\fP ケーパビリティを持たない。
+.TP 
+\fBERANGE\fP
+\fIcmd\fP 引き数に \fBSETALL\fP または \fBSETVAL\fP が指定され、(集合のセマフォのどれかの)  \fBsemval\fP に設定される値が
+0 より小さいか、実装の制限 \fBSEMVMX\fP よりも大きい。
+.SH 準拠
+.\" SVr4 documents more error conditions EINVAL and EOVERFLOW.
+SVr4, POSIX.1\-2001.
+.SH 注意
+.\" Like Linux, the FreeBSD man pages still document
+.\" the inclusion of these header files.
+The inclusion of \fI<sys/types.h>\fP and \fI<sys/ipc.h>\fP isn't
+required on Linux or by any version of POSIX.  However, some old
+implementations required the inclusion of these header files, and the SVID
+also documented their inclusion.  Applications intended to be portable to
+such old systems may need to include these header files.
+
+\fBIPC_INFO\fP, \fBSEM_STAT\fP, \fBSEM_INFO\fP 操作は \fBipcs\fP(1)
+プログラムによって割当られた資源について情報を提供するために使用される。 将来的にはこれらは変更されるか、 /proc
+ファイル・システム・インタフェースに移動されるかもしれない。
+.LP
+\fI構造体 semid_ds\fP 内の多くのフィールドは、 Linux 2.2 では \fIshort\fP 型だったが、Linux 2.4 では
+\fIlong\fP 型になった。 この利点を生かすには、glibc\-2.1.91 以降の環境下で 再コンパイルすれば十分である。
+カーネルは新しい形式の呼び出しと古い形式の呼び出しを \fIcmd\fP 内の \fBIPC_64\fP フラグで区別する。
+.PP
+初期のバージョンの glibc では、 \fIsemun\fP 共用体は \fI<sys/sem.h>\fP で定義されていたが、
+POSIX.1\-2001 では呼び出し側がこの共用体を定義する必要がある。 この共用体が定義されて\fIいない\fP glibc のバージョンでは、 マクロ
+\fB_SEM_SEMUN_UNDEFINED\fP が \fI<sys/sem.h>\fP で定義されている。
+.PP
+以下は \fBsemctl\fP()  コールに影響するセマフォ集合のシステム制限:
+.TP 
+\fBSEMVMX\fP
+\fBsemval\fP の最大値 : 実装依存 (32767)。
+.LP
+移植性を高めるための一番良い方法は、常に 4 個の引き数で \fBsemctl\fP()  を呼び出すことである。
+.SH 関連項目
+\fBipc\fP(2), \fBsemget\fP(2), \fBsemop\fP(2), \fBcapabilities\fP(7),
+\fBsem_overview\fP(7), \fBsvipc\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/semget.2 b/manual/LDP_man-pages/draft/man2/semget.2
new file mode 100644 (file)
index 0000000..dff712b
--- /dev/null
@@ -0,0 +1,168 @@
+.\" Copyright 1993 Giorgio Ciucci (giorgio@crcc.it)
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified Tue Oct 22 17:54:56 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 1 Jan 2002, Martin Schulze <joey@infodrom.org>
+.\" Modified 4 Jan 2002, Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on capability requirements
+.\" Modified, 11 Nov 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Language and formatting clean-ups
+.\"    Added notes on /proc files
+.\"    Rewrote BUGS note about semget()'s failure to initialize
+.\"            semaphore values
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SEMGET 2 2012\-05\-31 Linux "Linux Programmer's Manual"
+.SH 名前
+semget \- System V セマフォ集合の識別子を取得する
+.SH 書式
+.nf
+\fB#include <sys/types.h>\fP
+\fB#include <sys/ipc.h>\fP
+\fB#include <sys/sem.h>\fP
+.fi
+.sp
+\fBint semget(key_t \fP\fIkey\fP\fB,\fP \fBint \fP\fInsems\fP\fB,\fP \fBint \fP\fIsemflg\fP\fB);\fP
+.SH 説明
+\fBsemget\fP()  システムコールは、引き数 \fIkey\fP に対応する System V セマフォ集合 (semaphore set) の 識別子
+(identifier) を返す。 \fIkey\fP の値が \fBIPC_PRIVATE\fP の場合、もしくは \fIsemflg\fP に
+\fBIPC_CREAT\fP が指定されていて、 \fIkey\fP に対応するセマフォ集合が存在しない場合、 \fInsems\fP
+個のセマフォからなる新しい集合が作成される。
+.PP
+\fIsemflg\fP に \fBIPC_CREAT\fP と \fBIPC_EXCL\fP の両方が指定された場合、 \fIkey\fP
+に対応するセマフォ集合が既に存在すると、 \fBsemget\fP()  は失敗し、 \fIerrno\fP に \fBEEXIST\fP が設定される (これは
+\fBopen\fP(2)  に \fBO_CREAT | O_EXCL\fP が指定された場合の動作と同じである)。
+.PP
+セマフォ集合作成時に、引き数 \fIsemflg\fP の下位 9 ビットは、そのセマフォ集合の (所有者 (owner)、グループ (group)、 他人
+(others) に対する) アクセス許可の定義として使用される。 これらのビットは \fBopen\fP(2)  の引き数 \fImode\fP
+と同じ形式で同じ意味である (但し、実行 (execute) 許可はセマフォでは意味を持たず、 書き込み (write) 許可はセマフォ値の変更
+(alter) 許可として機能する)。
+.PP
+.\" In truth, every one of the many implementations that I've tested sets
+.\" the values to zero, but I suppose there is/was some obscure
+.\" implementation out there that does not.
+新しく作成されたセマフォ集合の各セマフォの値は不定である (この点は POSIX.1\-2001 に明記されている)。 Linux
+は他の多くの実装と同様にセマフォ値を 0 に初期化するが、 移植性を考慮したアプリケーションではこの動作を前提にすべきではない。
+アプリケーションは明示的にセマフォを希望の値で初期化すべきである。
+.PP
+新規のセマフォ集合を作成する際、 \fBsemget\fP()  はセマフォ集合の情報を保持するデータ構造体 \fIsemid_ds\fP を次のように初期化する
+(\fIsemid_ds\fP については \fBsemctl\fP(2)  を参照):
+.IP
+\fIsem_perm.cuid\fP と \fIsem_perm.uid\fP に、呼び出し元のプロセスの実効 (effective) ユーザ ID を設定する。
+.IP
+\fIsem_perm.cgid\fP と \fIsem_perm.gid\fP に、呼び出し元のプロセスの実効 (effective) グループ ID
+を設定する。
+.IP
+\fIsem_perm.mode\fP の下位 9 ビットに \fIsemflg\fP の下位 9 ビットを設定する。
+.IP
+\fIsem_nsems\fP に \fInsems\fP の値を設定する。
+.IP
+\fIsem_otime\fP に 0 を設定する。
+.IP
+\fIsem_ctime\fP に現在の時刻を設定する。
+.PP
+セマフォ集合の作成を行わない場合は、引き数 \fInsems\fP に (don't care を意味する) 0 を指定してもよい。 そうでない場合は、
+\fInsems\fP は 0 より大きい値でなければならず、セマフォ集合あたりのセマフォの最大数 (\fBSEMMSL\fP)  以下でなければならない。
+.PP
+.\" and a check is made to see if it is marked for destruction.
+セマフォ集合が既に存在した場合は、アクセス許可の検査が行われる。
+.SH 返り値
+成功した場合、セマフォ集合の識別子 (非負の整数) が返り値となる。 失敗した場合は \-1 が返され、 \fIerrno\fP にエラーを示す値が設定される。
+.SH エラー
+失敗した場合、 \fIerrno\fP には以下の値のいずれか一つが設定される:
+.TP 
+\fBEACCES\fP
+\fIkey\fP に対応するセマフォ集合は存在するが、 呼び出し元のプロセスはその集合へのアクセス許可がなく、 \fBCAP_IPC_OWNER\fP
+ケーパビリティも持っていない。
+.TP 
+\fBEEXIST\fP
+.\" .TP
+.\" .B EIDRM
+.\" The semaphore set is marked to be deleted.
+\fIkey\fP に対応するセマフォ集合が存在し、 \fIsemflg\fP には \fBIPC_CREAT\fP と \fBIPC_EXCL\fP が指定されていた。
+.TP 
+\fBEINVAL\fP
+\fInsems\fP が 0 より小さいか、セマフォ集合あたりのセマフォの最大数 (\fBSEMMSL\fP)  より大きい。 または、 \fIkey\fP
+に対応するセマフォ集合が既に存在し、 \fInsems\fP がその集合のセマフォ数よりも大きい。
+.TP 
+\fBENOENT\fP
+\fIkey\fP に対応するセマフォ集合が存在せず、 \fIsemflg\fP に \fBIPC_CREAT\fP が指定されてもいない。
+.TP 
+\fBENOMEM\fP
+セマフォ集合を作成しようとしたが、新しいデータ構造体を 作成するのに十分なメモリがシステムに存在しない。
+.TP 
+\fBENOSPC\fP
+セマフォ集合を作成しようとすると、システムのセマフォ集合の 最大数 (\fBSEMMNI\fP)  か、システム全体のセマフォの最大数 (\fBSEMMNS\fP)
+のいずれかを超えてしまう。
+.SH 準拠
+.\" SVr4 documents additional error conditions EFBIG, E2BIG, EAGAIN,
+.\" ERANGE, EFAULT.
+SVr4, POSIX.1\-2001.
+.SH 注意
+.\" Like Linux, the FreeBSD man pages still document
+.\" the inclusion of these header files.
+The inclusion of \fI<sys/types.h>\fP and \fI<sys/ipc.h>\fP isn't
+required on Linux or by any version of POSIX.  However, some old
+implementations required the inclusion of these header files, and the SVID
+also documented their inclusion.  Applications intended to be portable to
+such old systems may need to include these header files.
+
+\fBIPC_PRIVATE\fP はフラグ・フィールドに指定するものではなく、 \fIkey_t\fP 型である。 この特別な値が \fIkey\fP に指定されると、
+\fBsemget\fP()  \fIsemflg\fP の下位 9 ビット以外は全て無視し、 (成功した場合は) 新しいセマフォ集合を作成する。
+.PP
+セマフォ集合のリソースに関する制限のうち、 \fBsemget\fP()  に影響を及ぼすものを以下に挙げる:
+.TP 
+\fBSEMMNI\fP
+.\" This /proc file is not available in Linux 2.2 and earlier -- MTK
+システム全体のセマフォ集合の最大数: 方針依存 (Linux では、この制限値は \fI/proc/sys/kernel/sem\fP
+の第4フィールドに対応し、読み出しも変更もできる)。
+.TP 
+\fBSEMMSL\fP
+semid あたりのセマフォの最大数: 実装依存 (Linux では、この制限値は \fI/proc/sys/kernel/sem\fP
+の第1フィールドに対応し、読み出しも変更もできる)。
+.TP 
+\fBSEMMNS\fP
+システム全体のセマフォの最大数: 方針依存 (Linux では、この制限値は \fI/proc/sys/kernel/sem\fP
+の第2フィールドに対応し、読み出しも変更もできる)。 \fBSEMMSL * SEMMNI\fP より大きな値は意味を持たない。
+.SH バグ
+\fBIPC_PRIVATE\fP という名前を選んだのはおそらく失敗であろう。 \fBIPC_NEW\fP の方がより明確にその機能を表しているだろう。
+.LP
+.\" In fact they are initialized to zero on Linux, but POSIX.1-2001
+.\" does not specify this, and we can't portably rely on it.
+セマフォ集合内のセマフォは \fBsemget\fP()  では初期化されない。 このセマフォを初期化するには、セマフォ集合に対して \fBsemctl\fP(2)
+を使って \fBSETVAL\fP か \fBSETALL\fP 操作を実行する必要がある。 (複数箇所からセマフォ集合の操作が行われる場面では、
+誰が最初に集合を初期化すればよいか分からない。 この状況を避けるには、 \fBsemctl\fP(2)  の \fBIPC_STAT\fP
+操作で取得できるセマフォのデータ構造体の \fIsem_otime\fP が 0 以外になっているかをチェックすればよい。)
+.SH 関連項目
+\fBsemctl\fP(2), \fBsemop\fP(2), \fBftok\fP(3), \fBcapabilities\fP(7),
+\fBsem_overview\fP(7), \fBsvipc\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/semop.2 b/manual/LDP_man-pages/draft/man2/semop.2
new file mode 100644 (file)
index 0000000..47ff9c4
--- /dev/null
@@ -0,0 +1,282 @@
+.\" Copyright 1993 Giorgio Ciucci (giorgio@crcc.it)
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified 1996-10-22, Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 2002-01-08, Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Modified 2003-04-28, Ernie Petrides <petrides@redhat.com>
+.\" Modified 2004-05-27, Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Modified, 11 Nov 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Language and formatting clean-ups
+.\"    Added notes on /proc files
+.\" 2005-04-08, mtk, Noted kernel version numbers for semtimedop()
+.\" 2007-07-09, mtk, Added an EXAMPLE code segment.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SEMOP 2 2013\-04\-17 Linux "Linux Programmer's Manual"
+.SH 名前
+semop, semtimedop \- System V セマフォの操作
+.SH 書式
+.nf
+\fB#include <sys/types.h>\fP
+\fB#include <sys/ipc.h>\fP
+\fB#include <sys/sem.h>\fP
+.sp
+\fBint semop(int \fP\fIsemid\fP\fB, struct sembuf *\fP\fIsops\fP\fB, unsigned \fP\fInsops\fP\fB);\fP
+.sp
+\fBint semtimedop(int \fP\fIsemid\fP\fB, struct sembuf *\fP\fIsops\fP\fB, unsigned \fP\fInsops\fP\fB,\fP
+\fB               struct timespec *\fP\fItimeout\fP\fB);\fP
+.fi
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBsemtimedop\fP(): _GNU_SOURCE
+.SH 説明
+System V セマフォ集合 (semaphore set) のメンバーの各セマフォは 以下の関連情報を持っている:
+.sp
+.in +4n
+.nf
+unsigned short  semval;   /* セマフォ値 */
+unsigned short  semzcnt;  /* ゼロを待つプロセス数 */
+unsigned short  semncnt;  /* 増加を待つプロセス数 */
+pid_t           sempid;   /* 最後に操作を行なったプロセスの ID */
+.sp
+.in -4n
+.fi
+\fBsemop\fP()  は \fIsemid\fP で指定されたセマフォ集合の選択されたセマフォに対して操作を行う。 \fIsops\fP は \fInsops\fP
+個の要素の配列を指し、配列の各要素は個々のセマフォに 対する操作を示す。その型は \fIstruct sembuf\fP で、次のメンバを持つ:
+.sp
+.in +4n
+.nf
+unsigned short sem_num;  /* セマフォ番号 */
+short          sem_op;   /* セマフォ操作 */
+short          sem_flg;  /* 操作フラグ */
+.sp
+.in -4n
+.fi
+\fIsem_flg\fP には \fBIPC_NOWAIT\fP と \fBSEM_UNDO\fP が設定できる。 \fBSEM_UNDO\fP
+が指定された操作は、そのプロセスが終了した時に自動的に取り消される。
+.PP
+\fIsops\fP に含まれる操作の集合は、 \fI配列の順序\fP で、 \fIアトミックに\fP 実行される。
+すなわち、全ての操作が完全に実行されるか、全く実行されないかの どちらかとなる。 全ての操作が直ちに実行できない場合のこのシステムコールの振る舞いは
+個々の操作の \fIsem_flg\fP フィールドに \fBIPC_NOWAIT\fP が存在するかによって決まり、後述のようになる。
+
+それぞれの操作はセマフォ集合の \fIsem_num\fP番目 のセマフォに対して実行される。セマフォ集合の最初のセマフォには 番号 0 が振られる。
+そして操作は三種類あり、 \fIsem_op\fP の値で区別される。
+.PP
+If \fIsem_op\fP is a positive integer, the operation adds this value to the
+semaphore value (\fIsemval\fP).  Furthermore, if \fBSEM_UNDO\fP is specified for
+this operation, the system subtracts the value \fIsem_op\fP from the semaphore
+adjustment (\fIsemadj\fP)  value for this semaphore.  This operation can always
+proceed\(emit never forces a thread to wait.  The calling process must have
+alter permission on the semaphore set.
+.PP
+\fIsem_op\fP が 0 の場合、「ゼロまで待つ」操作である。この場合、プロセスは そのセマフォ集合に対する読み込み許可がなければならない。
+\fIsemval\fP が 0 ならば、操作は直ちに行われる。 \fIsemval\fP が 0 でない場合、 \fIsem_flg\fP に
+\fBIPC_NOWAIT\fP が指定されていれば、 \fBsemop\fP()  は失敗し、 \fBerrno\fP に \fBEAGAIN\fP が設定される (このとき
+\fIsops\fP に対する操作は全く実行されない)。 \fIsem_flg\fP に \fBIPC_NOWAIT\fP が指定されていない場合、 \fIsemzcnt\fP
+(セマフォ値が 0 になるのを待っているスレッドの数) を 1 増加させて、 以下のいずれかが起こるまでスレッドを停止 (sleep) する。
+.IP \(bu 3
+\fIsemval\fP が 0 になった: このとき \fIsemzcnt\fP の値は 1 減算される。
+.IP \(bu
+セマフォ集合が削除された: このとき \fBsemop\fP()  は失敗し、 \fIerrno\fP に \fBEIDRM\fP が設定される。
+.IP \(bu
+呼び出し元スレッドがシグナルを捕獲した: このとき \fIsemzcnt\fP の値は 1 減算され、 \fBsemop\fP()  は失敗し \fIerrno\fP に
+\fBEINTR\fP が設定される。
+.IP \(bu
+\fBsemtimedop\fP()  の \fItimeout\fP で指定された制限時間が経過した: このとき \fBsemtimedop\fP()  は失敗し、
+\fIerrno\fP に \fBEAGAIN\fP が設定される。
+.PP
+If \fIsem_op\fP is less than zero, the process must have alter permission on
+the semaphore set.  If \fIsemval\fP is greater than or equal to the absolute
+value of \fIsem_op\fP, the operation can proceed immediately: the absolute
+value of \fIsem_op\fP is subtracted from \fIsemval\fP, and, if \fBSEM_UNDO\fP is
+specified for this operation, the system adds the absolute value of
+\fIsem_op\fP to the semaphore adjustment (\fIsemadj\fP)  value for this
+semaphore.  If the absolute value of \fIsem_op\fP is greater than \fIsemval\fP,
+and \fBIPC_NOWAIT\fP is specified in \fIsem_flg\fP, \fBsemop\fP()  fails, with
+\fIerrno\fP set to \fBEAGAIN\fP (and none of the operations in \fIsops\fP is
+performed).  Otherwise \fIsemncnt\fP (the counter of threads waiting for this
+semaphore's value to increase)  is incremented by one and the thread sleeps
+until one of the following occurs:
+.IP \(bu 3
+\fIsemval\fP becomes greater than or equal to the absolute value of \fIsem_op\fP:
+the operation now proceeds, as described above.
+.IP \(bu
+セマフォ集合がシステムから削除された: このとき \fBsemop\fP()  は失敗し \fIerrno\fP に \fBEIDRM\fP が設定される。
+.IP \(bu
+呼び出したスレッドがシグナルを捕獲した: このとき \fIsemncnt\fP が 1 減算され、 \fBsemop\fP()  は失敗し \fIerrno\fP に
+\fBEINTR\fP が設定される。
+.IP \(bu
+\fBsemtimedop\fP()  の \fItimeout\fP で指定された制限時間が経過した: このとき \fBsemtimedop\fP()  は失敗し、
+\fIerrno\fP に \fBEAGAIN\fP が設定される。
+.PP
+.\" and
+.\" .I sem_ctime
+操作が成功した場合、 \fIsops\fP が指す配列によって操作対象となった各セマフォの \fIsempid\fP メンバーには呼び出し元のプロセス ID
+が設定される。さらに \fIsem_otime\fP に現在時刻が設定される。
+.PP
+\fBsemtimedop\fP() 関数の振る舞いは \fBsemop\fP() と全く同じだが、呼び出し元
+スレッドが停止する場合、停止期間の上限が \fItimeout\fP 引き数の指す
+\fItimespec\fP 構造体で指定された時間となる点だけが異なる (この停止期間は
+システムクロックの粒度に切り上げられ、カーネルのスケジューリング遅延に
+より、この停止期間は少しだけ長くなる可能性がある)。
+指定した制限時間に達した場合は、 \fBsemtimedop\fP() は失敗し、 \fIerrno\fP に
+\fBEAGAIN\fP が設定される (このとき \fIsops\fP の操作は実行されない)。
+\fItimeout\fP 引き数が NULL の場合、 \fBsemtimedop\fP() 関数の振る舞いは
+\fBsemop\fP() 関数と全く同じになる。
+.SH 返り値
+成功した場合、 \fBsemop\fP()  と \fBsemtimedop\fP()  は 0 を返す。そうでなければ \-1 を返し、 エラーを示す
+\fIerrno\fP を設定する。
+.SH エラー
+失敗した場合、 \fIerrno\fP に以下のどれかが設定される:
+.TP 
+\fBE2BIG\fP
+\fInsops\fP 引き数が \fBSEMOPM\fP より大きい。 \fBSEMOPM\fP は一回のシステムコールで許される操作の最大個数である。
+.TP 
+\fBEACCES\fP
+呼び出し元プロセスには指定されたセマフォ操作を行うのに 必要なアクセス許可がなく、 \fBCAP_IPC_OWNER\fP ケーパビリティもない。
+.TP 
+\fBEAGAIN\fP
+操作を直ちに処理することができず、かつ \fIsem_flg\fP に \fBIPC_NOWAIT\fP が指定されているか \fItimeout\fP
+で指定された制限時間が経過した。
+.TP 
+\fBEFAULT\fP
+引き数 \fIsops\fP か \fItimeout\fP が指しているアドレスにアクセスできない。
+.TP 
+\fBEFBIG\fP
+ある操作で、 \fIsem_num\fP の値が 0 未満か、集合内のセマフォの数以上である。
+.TP 
+\fBEIDRM\fP
+セマフォ集合が削除された。
+.TP 
+\fBEINTR\fP
+このシステムコールで停止している時にスレッドがシグナルを捕獲した。 \fBsingle\fP(7) 参照。
+.TP 
+\fBEINVAL\fP
+セマフォ集合が存在しないか、 \fIsemid\fP が 0 未満であるか、 \fInsops\fP が正の数でない。
+.TP 
+\fBENOMEM\fP
+ある操作で \fIsem_flg\fP に \fBSEM_UNDO\fP が指定されたが、システムにアンドゥ構造体に割り当てる十分なメモリがない。
+.TP 
+\fBERANGE\fP
+ある操作で \fIsem_op+semval\fP が \fBSEMVMX\fP より大きい。 \fBSEMVMX\fP は \fIsemval\fP
+の最大値で、その値は実装依存である。
+.SH バージョン
+\fBsemtimedop\fP()  は Linux 2.5.52 で初めて登場し、 それからカーネル 2.4.22 にも移植された。
+\fBsemtimedop\fP()  の glibc でのサポートはバージョン 2.3.3 で初めて登場した。
+.SH 準拠
+.\" SVr4 documents additional error conditions EINVAL, EFBIG, ENOSPC.
+SVr4, POSIX.1\-2001.
+.SH 注意
+.\" Like Linux, the FreeBSD man pages still document
+.\" the inclusion of these header files.
+The inclusion of \fI<sys/types.h>\fP and \fI<sys/ipc.h>\fP isn't
+required on Linux or by any version of POSIX.  However, some old
+implementations required the inclusion of these header files, and the SVID
+also documented their inclusion.  Applications intended to be portable to
+such old systems may need to include these header files.
+
+あるプロセスの \fIsem_undo\fP 構造体は \fBfork\fP(2)  で生成された子プロセスには継承されないが、 \fBexecve\fP(2)
+システムコールの場合は継承される。
+.PP
+\fBsemop\fP()  はシグナルハンドラによって中断された後に、 決して自動的に再開することはない。 たとえシグナルハンドラの設定時に
+\fBSA_RESTART\fP フラグがセットされていても再開することはない
+
+A semaphore adjustment (\fIsemadj\fP)  value is a per\-process, per\-semaphore
+integer that is the negated sum of all operations performed on a semaphore
+specifying the \fBSEM_UNDO\fP flag.  Each process has a list of \fIsemadj\fP
+values\(emone value for each semaphore on which it has operated using
+\fBSEM_UNDO\fP.  When a process terminates, each of its per\-semaphore \fIsemadj\fP
+values is added to the corresponding semaphore, thus undoing the effect of
+that process's operations on the semaphore (but see BUGS below).  When a
+semaphore's value is directly set using the \fBSETVAL\fP or \fBSETALL\fP request
+to \fBsemctl\fP(2), the corresponding \fIsemadj\fP values in all processes are
+cleared.
+.PP
+あるセマフォの \fIsemval\fP, \fIsempid\fP, \fIsemzcnt\fP, \fIsemnct\fP の値はいずれも、適切な操作を指定して
+\fBsemctl\fP(2)  を呼び出すことで取得できる。
+.PP
+セマフォ集合のリソースに関する制限のうち、 \fBsemop\fP()  に影響を及ぼすものを以下に挙げる:
+.TP 
+\fBSEMOPM\fP
+.\" This /proc file is not available in Linux 2.2 and earlier -- MTK
+一回の \fBsemop\fP()  で許される操作の最大数 (32)。 (Linux では、この制限値は \fI/proc/sys/kernel/sem\fP
+の第3フィールドに対応し、読み出しも変更もできる)。
+.TP 
+\fBSEMVMX\fP
+\fIsemval\fP が取り得る最大値: 実装依存 (32767)。
+.PP
+以下の値に関しては実装依存の制限はない。 終了時の調整 (adjust on exit) の最大値 (\fBSEMAEM\fP)、
+システム全体のアンドゥ構造体の最大数 (\fBSEMMNU\fP)、 プロセスあたりのアンドゥ構造体の最大数。
+.SH バグ
+プロセスが終了する際、プロセスに対応する \fIsemadj\fP の集合を使って、 \fBSEM_UNDO\fP
+フラグ付きで実行された全てのセマフォ操作の影響を取り消す。 これによりある問題が発生する: これらのセマフォの調整を行っていると、 中にはセマフォの値が
+0 未満の値にしようとする場合が出てくる。 このような場合、どのように実装するべきか? ひとつの考えられる手法は、全てのセマフォ調整が実行されるまで
+停止することである。しかし、この方法ではプロセスの終了が 長時間にわたって停止されることがあるので望ましくない。
+しかもどれくらい長時間になるかは分からない。 別の選択肢として、このようなセマフォ調整を完全に無視してしまう方法がある (これはセマフォ操作として
+\fBIPC_NOWAIT\fP が指定するのと少し似ている)。 Linux は第三の手法を採用している: セマフォの値を出来るだけ (つまり 0 まで)
+減少させて、プロセスの終了を直ちに続行できるようにしている。
+
+.\" The bug report:
+.\" http://marc.theaimsgroup.com/?l=linux-kernel&m=110260821123863&w=2
+.\" the fix:
+.\" http://marc.theaimsgroup.com/?l=linux-kernel&m=110261701025794&w=2
+カーネル 2.6.x (x <= 10) には、ある状況においてセマフォ値が 0 になるのを 待っているスレッドが、セマフォ値が実際に 0
+になったときに起床 (wake up)  されない、というバグがある。このバグはカーネル 2.6.11 で修正されている。
+.SH 例
+以下の部分的なコードは、 セマフォ 0 の値が 0 になるのを待ってから、 セマフォの値を 1 加算する処理を、 \fBsemop\fP()
+を使ってアトミック (atomically) に行う。
+.nf
+
+    struct sembuf sops[2];
+    int semid;
+
+    /* Code to set \fIsemid\fP omitted */
+
+    sops[0].sem_num = 0;        /* Operate on semaphore 0 */
+    sops[0].sem_op = 0;         /* Wait for value to equal 0 */
+    sops[0].sem_flg = 0;
+
+    sops[1].sem_num = 0;        /* Operate on semaphore 0 */
+    sops[1].sem_op = 1;         /* Increment value by one */
+    sops[1].sem_flg = 0;
+
+    if (semop(semid, sops, 2) == \-1) {
+        perror("semop");
+        exit(EXIT_FAILURE);
+    }
+.fi
+.SH 関連項目
+\fBclone\fP(2), \fBsemctl\fP(2), \fBsemget\fP(2), \fBsigaction\fP(2),
+\fBcapabilities\fP(7), \fBsem_overview\fP(7), \fBsvipc\fP(7), \fBtime\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7c46b72..3a51948 100644 (file)
@@ -251,6 +251,6 @@ Linux は \fBENOTCONN\fP を返す状況で \fBEPIPE\fP を返すことがある
 \fBsendmmsg\fP(2), \fBshutdown\fP(2), \fBsocket\fP(2), \fBwrite\fP(2), \fBcmsg\fP(3),
 \fBip\fP(7), \fBsocket\fP(7), \fBtcp\fP(7), \fBudp\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ac18715..682b293 100644 (file)
@@ -124,6 +124,6 @@ Linux 固有の \fBsplice\fP(2) システムコールは、任意のファイル
 \fBmmap\fP(2), \fBopen\fP(2), \fBsocket\fP(2), \fBsplice\fP(2)
 
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 61fc93e..bf32fc6 100644 (file)
@@ -141,6 +141,6 @@ node)」に空きメモリが全くない場合、システムは 「近くの (
 \fBget_mempolicy\fP(2), \fBgetcpu\fP(2), \fBmbind\fP(2), \fBmmap\fP(2), \fBnuma\fP(3),
 \fBcpuset\fP(7), \fBnuma\fP(7), \fBnumactl\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0f9d0d6..79b2cc6 100644 (file)
@@ -53,6 +53,6 @@ set_thread_area \- スレッド局所記憶 (TLS) 領域を設定する
 .SH 関連項目
 \fBget_thread_area\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/set_tid_address.2 b/manual/LDP_man-pages/draft/man2/set_tid_address.2
new file mode 100644 (file)
index 0000000..3d476af
--- /dev/null
@@ -0,0 +1,79 @@
+.\" Copyright (C) 2004 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SET_TID_ADDRESS 2 2012\-07\-19 Linux "Linux Programmer's Manual"
+.SH 名前
+set_tid_address \- スレッド ID へのポインタを設定する
+.SH 書式
+.nf
+\fB#include <linux/unistd.h>\fP
+.sp
+\fBlong set_tid_address(int *\fP\fItidptr\fP\fB);\fP
+.fi
+.SH 説明
+各プロセスについて、カーネルは \fIset_child_tid\fP と \fIclear_child_tid\fP という 2 つの属性を保持する。この 2
+つの属性はデフォルトでは NULL である。
+.TP 
+\fIset_child_tid\fP
+プロセスが \fBCLONE_CHILD_SETTID\fP フラグを指定した \fBclone\fP(2)  によって開始された場合、
+\fIset_child_tid\fP は \fBclone\fP(2) のシステムコールの \fIctid\fP 引き数で渡された値に設定される。
+.IP
+\fIset_child_tid\fP が設定された場合、一番最初に新しいプロセスが行うことは、 このアドレスに自身の PID を書き込むことである。
+.TP 
+\fIclear_child_tid\fP
+プロセスが \fBCLONE_CHILD_CLEARTID\fP フラグを指定した \fBclone\fP(2) によって開始された場合、
+\fIclear_child_tid\fP は \fBclone\fP(2) のシステムコールの \fIctid\fP 引き数で渡された値に設定される。
+.LP
+システムコール \fBset_tid_address\fP()  は呼び出し元プロセスの \fIclear_child_tid\fP の値を \fItidptr\fP
+に設定する。
+.LP
+When a process whose \fIclear_child_tid\fP is not NULL terminates, then, if the
+process is sharing memory with other processes or threads, then 0 is written
+at the address specified in \fIclear_child_tid\fP and the kernel performs the
+following operation:
+
+    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);
+
+The effect of this operation is to wake a single process that is performing
+a futex wait on the memory location.  Errors from the futex wake operation
+are ignored.
+.SH 返り値
+\fBset_tid_address\fP()  は常に現在のプロセスの PID を返す。
+.SH エラー
+\fBset_tid_address\fP()  は常に成功する。
+.SH バージョン
+この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux 2.5.49 以降で有効である。
+.SH 準拠
+このシステムコールは Linux 固有である。
+.SH 関連項目
+\fBclone\fP(2), \fBfutex\fP(2)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/seteuid.2 b/manual/LDP_man-pages/draft/man2/seteuid.2
new file mode 100644 (file)
index 0000000..f8cf003
--- /dev/null
@@ -0,0 +1,100 @@
+.\" Copyright (C) 2001 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" [should really be seteuid.3]
+.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on capability requirements
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SETEUID 2 2012\-07\-02 Linux "Linux Programmer's Manual"
+.SH 名前
+seteuid, setegid \- 実効ユーザー ID や 実効グループ ID を設定する
+.SH 書式
+\fB#include <sys/types.h>\fP
+.br
+\fB#include <unistd.h>\fP
+.sp
+\fBint seteuid(uid_t \fP\fIeuid\fP\fB);\fP
+.br
+\fBint setegid(gid_t \fP\fIegid\fP\fB);\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+.ad l
+\fBseteuid\fP(), \fBsetegid\fP():
+.RS 4
+_BSD_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600
+.RE
+.ad
+.SH 説明
+\fBseteuid\fP()  は呼び出し元のプロセスの実効ユーザー ID を設定する。 非特権ユーザーのプロセスの場合、実効ユーザー ID
+に設定できるのは、 実ユーザー ID・実効ユーザー ID・保存 set\-user\-ID のいずれかだけである。
+
+.\" When
+.\" .I euid
+.\" equals \-1, nothing is changed.
+.\" (This is an artifact of the implementation in glibc of seteuid()
+.\" using setresuid(2).)
+\fBsetegid\fP()  は「ユーザー」ではなく「グループ」に対して全く同じことを行う。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.\" .TP
+.\" .B EINVAL
+.TP 
+\fBEPERM\fP
+呼び出し元のプロセスに特権がなく、 \fIeuid\fP (\fIegid\fP)  が実ユーザー (グループ) ID、または実効ユーザー (グループ) ID、
+保存 set\-user\-ID (保存 set\-group\-ID) のいずれでもではない (Linux においては、 \fBseteuid\fP()  では
+\fBCAP_SETUID\fP ケーパビリティ (capability) が、 \fBsetegid\fP()  では \fBCAP_SETGID\fP
+ケーパビリティがない場合に、特権がないと判断される)。
+.SH 準拠
+4.3BSD, POSIX.1\-2001.
+.SH 注意
+実効ユーザー (グループ) ID を保存 set\-user\-ID (保存 set\-group\-ID) に 設定できるのは、Linux 1.1.37
+(1.1.38) 以降である。 全てのシステムにおいて \fB_POSIX_SAVED_IDS\fP をチェックすべきである。
+.LP
+Under libc4, libc5 and glibc 2.0 \fBseteuid(\fP\fIeuid\fP\fB)\fP is equivalent to
+\fBsetreuid(\-1,\fP\fI euid\fP\fB)\fP and hence may change the saved set\-user\-ID.
+Under glibc 2.1 and later it is equivalent to \fBsetresuid(\-1,\fP\fI euid\fP\fB,
+\-1)\fP and hence does not change the saved set\-user\-ID.  Analogous remarks
+hold for \fBsetegid\fP(), with the difference that the change in implementation
+from \fBsetregid(\-1,\fP\fI egid\fP\fB)\fP to \fBsetresgid(\-1,\fP\fI egid\fP\fB, \-1)\fP
+occurred in glibc 2.2 or 2.3 (dependeing on the hardware architecture).
+
+POSIX.1 では、 \fBseteuid\fP()  (\fBsetegid\fP())  で、 \fIeuid\fP (\fIegid\fP)  として現在の実効ユーザ
+(グループ) ID と同じ値を指定可能である 必要はないとされており、いくつかの実装では \fIeuid\fP (\fIegid\fP)  として現在の実効ユーザ
+(グループ) ID と同じ値を 指定することができない。
+.SH 関連項目
+\fBgeteuid\fP(2), \fBsetresuid\fP(2), \fBsetreuid\fP(2), \fBsetuid\fP(2),
+\fBcapabilities\fP(7), \fBcredentials\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index f4cdc7a..4e34be8 100644 (file)
@@ -45,7 +45,7 @@ setfsgid \- ファイルシステムのチェックに用いられるグルー
 IDを設定する。通常は \fIfsgid\fP の値は実効 (effective) グループID と同じになる。実際、 実効グループ ID が変更される度に
 \fIfsgid\fP もまた新しい実効グループID の値に変更される。
 
-通常、 \fBsetfsuid\fP()  や \fBsetfsgid\fP()  が明示的に呼び出されるのは、Linux NFS サーバー のように、
+通常、 \fBsetfsuid\fP()  や \fBsetfsgid\fP() を明示的に呼び出すのは、Linux NFS サーバー のように、
 ファイルアクセスに用いるユーザID / グループID を変更しなければならないが、 対応する実(real)/実効(effective) ユーザID /
 グループID は変更したくないような プログラムに限られる。 NFS サーバーのようなプログラムで、通常のユーザID を変更すると、
 プロセスを望まないシグナルにさらす可能性があり、 セキュリティホールになる。(下記参照)
@@ -79,6 +79,6 @@ glibc の \fBsetfsgid\fP() のラッパー関数は
 .SH 関連項目
 \fBkill\fP(2), \fBsetfsuid\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e7802d1..ec0154f 100644 (file)
@@ -45,7 +45,7 @@ setfsuid \- ファイルシステムのチェックに用いられるユーザ I
 \fIfsuid\fP の値は実効 (effective) ユーザID と同じになる。実際、 実効ユーザID が変更される度に \fIfsuid\fP
 もまた新しい実効ユーザID の値に変更される。
 
-通常、 \fBsetfsuid\fP()  や \fBsetfsgid\fP()  が明示的に呼び出されるのは、Linux NFS サーバー のように、
+通常、 \fBsetfsuid\fP()  や \fBsetfsgid\fP() を明示的に呼び出すのは、Linux NFS サーバー のように、
 ファイルアクセスに用いるユーザID / グループID を変更しなければならないが、 対応する実(real)/実効(effective) ユーザID /
 グループID は変更したくないような プログラムに限られる。 NFS サーバーのようなプログラムで、通常のユーザID を変更すると、
 プロセスを望まないシグナルにさらす可能性があり、 セキュリティホールになる。(下記参照)
@@ -79,6 +79,6 @@ glibc の \fBsetfsuid\fP() のラッパー関数は
 .SH 関連項目
 \fBkill\fP(2), \fBsetfsgid\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0b61521..4823ee2 100644 (file)
@@ -67,6 +67,6 @@ glibc の \fBsetgid\fP() のラッパー関数は
 \fBgetgid\fP(2), \fBsetegid\fP(2), \fBsetregid\fP(2), \fBcapabilities\fP(7),
 \fBcredentials\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/setns.2 b/manual/LDP_man-pages/draft/man2/setns.2
new file mode 100644 (file)
index 0000000..11bf6a4
--- /dev/null
@@ -0,0 +1,165 @@
+.\" Copyright (C) 2011, Eric Biederman <ebiederm@xmission.com>
+.\" and Copyright (C) 2011, 2012, Michael Kerrisk <mtk.manpages@gamil.com>
+.\"
+.\" %%%LICENSE_START(GPLv2_ONELINE)
+.\" Licensed under the GPLv2
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SETNS 2 2013\-01\-01 Linux "Linux Programmer's Manual"
+.SH 名前
+setns \- スレッドに名前空間を関連付けしなおす
+.SH 書式
+.nf
+\fB#define _GNU_SOURCE\fP             /* feature_test_macros(7) 参照 */
+\fB#include <sched.h>\fP
+.sp
+\fBint setns(int \fP\fIfd\fP\fB, int \fP\fInstype\fP\fB);\fP
+.fi
+.SH 説明
+名前空間を参照するファイルディスクリプタを指定すると、
+呼び出したスレッドにその名前空間を関連付けしなおす。
+
+\fIfd\fP 引き数は、 \fI/proc/[pid]/ns/\fP ディレクトリ内の名前空間エントリ
+のいずれかを参照するファイルディスクリプタである。
+\fI/proc/[pid]/ns/\fP の詳細は \fBproc\fP(5) を参照。
+\fInstype\fP 引き数で指定された制限の範囲内で、
+呼び出したスレッドに \fIfd\fP に対応する名前空間を関連付けしなおす。
+
+\fInstype\fP 引き数は、呼び出したスレッドがどのタイプの名前空間を
+関連付けしなおすことができるかを指定する。
+この引き数には以下のいずれかの値を指定できる。
+.TP 
+\fB0\fP
+どのタイプの名前空間も関連付けることができる。
+.TP 
+\fBCLONE_NEWIPC\fP
+\fIfd\fP は IPC 名前空間を参照していなければならない。
+.TP 
+\fBCLONE_NEWNET\fP
+\fIfd\fP はネットワーク名前空間を参照していなければならない。
+.TP 
+\fBCLONE_NEWUTS\fP
+\fIfd\fP は UTS 名前空間を参照していなければならない。
+.PP
+呼び出し側が \fIfd\fP がどのタイプの名前空間を参照しているかを知っている
+(もしくは気にする必要がない) 場合には、 \fInstype\fP に 0 を指定すれば十分
+である。呼び出し側が \fIfd\fP がどのタイプの名前空間を参照しているかを
+知っておらず、かつ、特定のタイプの名前空間であることを保証したい場合、
+\fInstype\fP に 0 以外の値を指定するとよい。 (ファイルディスクリプタが別の
+プロセスによりオープンされ、例えば、UNIX ドメインソケット経由で呼び出し
+側に渡された場合などでは、呼び出し側が \fIfd\fP がどのタイプの名前空間を
+参照しているかを知らない可能性がある。)
+.SH 返り値
+成功すると \fIsetns\fP() は 0 を返す。
+失敗すると、 \-1 が返され、 \fIerrno\fP にエラーを示す値が設定される。
+.SH エラー
+.TP 
+\fBEBADF\fP
+\fIfd\fP が有効なファイルディスクリプタではない。
+.TP 
+\fBEINVAL\fP
+\fIfd\fP が \fInstype\fP で指定されたタイプと一致しない名前空間を参照している。
+または、指定された名前空間をそのスレッドに関連付けし直す際に問題
+があった。
+.TP 
+\fBENOMEM\fP
+指定された名前空間に変更するのに必要なメモリが割り当てられない。
+.TP 
+\fBEPERM\fP
+呼び出したスレッドがこの操作を行うのに必要な特権 (\fBCAP_SYS_ADMIN\fP) を
+持っていなかった。
+.SH バージョン
+\fBsetns\fP() システムコールはカーネル 3.0 で Linux に初めて登場した。
+ライブラリによるサポートは glibc バージョン 2.14 を追加された。
+.SH 準拠
+\fBsetns\fP() システムコールは Linux 固有である。
+.SH 注意
+新しいスレッドが \fBclone\fP(2) を使って作成された際に共有できる全ての属性を、
+\fBsetns\fP() を使って変更できるわけではない。
+.SH EXAMPLE
+The program below takes two or more arguments.  The first argument specifies
+the pathname of a namespace file in an existing \fI/proc/[pid]/ns/\fP
+directory.  The remaining arguments specify a command and its arguments.
+The program opens the namespace file, joins that namespace using \fBsetns\fP(),
+and executes the specified command inside that namespace.
+
+The following shell session demonstrates the use of this program (compiled
+as a binary named \fIns_exec\fP)  in conjunction with the \fBCLONE_NEWUTS\fP
+example program in the \fBclone\fP(2)  man page (complied as a binary named
+\fInewuts\fP).
+
+We begin by executing the example program in \fBclone\fP(2)  in the
+background.  That program creates a child in a separate UTS namespace.  The
+child changes the hostname in its namespace, and then both processes display
+the hostnames in their UTS namespaces, so that we can see that they are
+different.
+
+.nf
+.in +4n
+$ \fBsu\fP                   # Need privilege for namespace operations
+Password:
+# \fB./newuts bizarro &\fP
+[1] 3549
+clone() returned 3550
+uts.nodename in child:  bizarro
+uts.nodename in parent: antero
+# \fBuname \-n\fP             # Verify hostname in the shell
+antero
+.in
+.fi
+
+We then run the program shown below, using it to execute a shell.  Inside
+that shell, we verify that the hostname is the one set by the child created
+by the first program:
+
+.nf
+.in +4n
+# \fB./ns_exec /proc/3550/ns/uts /bin/bash\fP
+# \fBuname \-n\fP             # Executed in shell started by ns_exec
+bizarro
+.in
+.fi
+.SS プログラムのソース
+.nf
+#define _GNU_SOURCE
+#include <fcntl.h>
+#include <sched.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \e
+                        } while (0)
+
+int
+main(int argc, char *argv[])
+{
+    int fd;
+
+    if (argc < 3) {
+        fprintf(stderr, "%s /proc/PID/ns/FILE cmd args...\en", argv[0]);
+        exit(EXIT_FAILURE);
+    }
+
+    fd = open(argv[1], O_RDONLY);   /* Get descriptor for namespace */
+    if (fd == \-1)
+        errExit("open");
+
+    if (setns(fd, 0) == \-1)         /* Join that namespace */
+        errExit("setns");
+
+    execvp(argv[2], &argv[2]);      /* Execute a command in namespace */
+    errExit("execvp");
+}
+.fi
+.SH 関連項目
+\fBclone\fP(2), \fBfork\fP(2), \fBvfork\fP(2), \fBproc\fP(5), \fBunix\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 11d8388..874aa56 100644 (file)
@@ -185,6 +185,6 @@ control) の実装のための プロセスグループを作成するのに使
 \fBgetuid\fP(2), \fBsetsid\fP(2), \fBtcgetpgrp\fP(3), \fBtcsetpgrp\fP(3), \fBtermios\fP(3),
 \fBcredentials\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c78dcba..39776a7 100644 (file)
@@ -84,6 +84,6 @@ glibc の \fBsetresuid\fP() と \fBsetresgid\fP() のラッパー関数は
 \fBgetresuid\fP(2), \fBgetuid\fP(2), \fBsetfsgid\fP(2), \fBsetfsuid\fP(2),
 \fBsetreuid\fP(2), \fBsetuid\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8f2e01a..4fe32bc 100644 (file)
@@ -116,6 +116,6 @@ glibc の \fBsetreuid\fP() と \fBsetregid\fP() のラッパー関数は
 \fBgetgid\fP(2), \fBgetuid\fP(2), \fBseteuid\fP(2), \fBsetgid\fP(2), \fBsetresuid\fP(2),
 \fBsetuid\fP(2), \fBcapabilities\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/setsid.2 b/manual/LDP_man-pages/draft/man2/setsid.2
new file mode 100644 (file)
index 0000000..86bace8
--- /dev/null
@@ -0,0 +1,72 @@
+.\" Copyright Michael Haardt (michael@cantor.informatik.rwth-aachen.de)
+.\"     Sat Aug 27 20:43:50 MET DST 1994
+.\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
+.\"
+.\" Modified Sun Sep 11 19:19:05 1994 <faith@cs.unc.edu>
+.\" Modified Mon Mar 25 10:19:00 1996 <aeb@cwi.nl> (merged a few
+.\"    tiny changes from a man page by Charles Livingston).
+.\" Modified Sun Jul 21 14:45:46 1996 <aeb@cwi.nl>
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SETSID 2 2013\-02\-11 Linux "Linux Programmer's Manual"
+.SH 名前
+setsid \- セッション (session) を作成し、プロセスグループ ID を設定する
+.SH 書式
+.ad l
+\fB#include <unistd.h>\fP
+.sp
+\fBpid_t setsid(void);\fP
+.br
+.ad b
+.SH 説明
+\fBsetsid\fP()  は呼び出したプロセスがプロセスグループ・リーダー (process group leader)
+でなければ、新しいセッションを作成する。 呼び出したプロセスは新しいセッションのリーダー、新しいプロセスグループの
+プロセスグループ・リーダーとなり、端末の制御を持たない。 呼び出したプロセスのプロセスグループ ID とセッション ID には、 呼び出したプロセスの
+PID が設定される。呼び出したプロセスはこの 新しいプロセスグループ、この新しいセッションの唯一のプロセスとなる。
+.SH 返り値
+成功すると、呼び出したプロセスの (新しい) セッション ID が返される。 エラーの場合は、 \fI(pid_t)\ \-1\fP が返され、
+\fIerror\fP にエラーを示す値が設定される。
+.SH エラー
+.TP 
+\fBEPERM\fP
+いずれかのプロセスのプロセスグループ ID が、 呼び出したプロセスの PID と等しい。 これは、呼び出したプロセスが既にプロセスリーダーの場合には
+\fBsetsid\fP()  は失敗することを意味する。
+.SH 準拠
+SVr4, POSIX.1\-2001.
+.SH 注意
+\fBfork\fP(2)  で作成された子プロセスは、親プロセスのセッション ID を継承する。 \fBexecve\fP(2)  の前後でセッション ID
+は保存される。
+
+プロセスグループ・リーダーとは、そのプロセスのプロセスグループ ID が その PID に等しいプロセスである。 \fBsetsid\fP()
+を確実に成功させるためには、 \fBfork\fP(2)  して \fBexit\fP(2)  し、子プロセスで \fBsetsid\fP()  を行なえば良い。
+.SH 関連項目
+\fBsetsid\fP(1), \fBgetsid\fP(2), \fBsetpgid\fP(2), \fBsetpgrp\fP(2), \fBtcgetsid\fP(3),
+\fBcredentials\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6ab9ab8..6edc850 100644 (file)
@@ -90,6 +90,6 @@ glibc の \fBsetuid\fP() のラッパー関数は
 \fBgetuid\fP(2), \fBseteuid\fP(2), \fBsetfsuid\fP(2), \fBsetreuid\fP(2),
 \fBcapabilities\fP(7), \fBcredentials\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 044acd6..89ea935 100644 (file)
@@ -63,6 +63,6 @@ Linux 2.1.121 以降では、もはやこの関数は存在しない。
 呼び出し手続きは変化してきた。 ある時は \fIsetup ()\fP は一つの引数 \fIvoid *BIOS\fP を取っており、またある時には \fIint
 magic\fP を一つの引数として取っていた。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e77d5ba..fcc118d 100644 (file)
@@ -102,6 +102,6 @@ inode に対して、互いに独立な名前空間が複数あってもよい
 \fBgetfattr\fP(1), \fBsetfattr\fP(1), \fBgetxattr\fP(2), \fBlistxattr\fP(2), \fBopen\fP(2),
 \fBremovexattr\fP(2), \fBstat\fP(2), \fBattr\fP(5), \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9b35074..ff3ff75 100644 (file)
@@ -62,6 +62,6 @@ glibc はこれらの古いシステムコールに対するラッパー関数
 .SH 関連項目
 \fBsigprocmask\fP(2), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/shmctl.2 b/manual/LDP_man-pages/draft/man2/shmctl.2
new file mode 100644 (file)
index 0000000..d030a48
--- /dev/null
@@ -0,0 +1,267 @@
+.\" Copyright (c) 1993 Luigi P. Bai (lpb@softint.com) July 28, 1993
+.\" and Copyright 1993 Giorgio Ciucci <giorgio@crcc.it>
+.\" and Copyright 2004, 2005 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified 1993-07-28, Rik Faith <faith@cs.unc.edu>
+.\" Modified 1993-11-28, Giorgio Ciucci <giorgio@crcc.it>
+.\" Modified 1997-01-31, Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 2001-02-18, Andries Brouwer <aeb@cwi.nl>
+.\" Modified 2002-01-05, 2004-05-27, 2004-06-17,
+.\"    Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Modified 2004-10-11, aeb
+.\" Modified, Nov 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Language and formatting clean-ups
+.\"    Updated shmid_ds structure definitions
+.\"    Added information on SHM_DEST and SHM_LOCKED flags
+.\"    Noted that CAP_IPC_LOCK is not required for SHM_UNLOCK
+.\"            since kernel 2.6.9
+.\" Modified, 2004-11-25, mtk, notes on 2.6.9 RLIMIT_MEMLOCK changes
+.\" 2005-04-25, mtk -- noted aberrant Linux behavior w.r.t. new
+.\"    attaches to a segment that has already been marked for deletion.
+.\" 2005-08-02, mtk: Added IPC_INFO, SHM_INFO, SHM_STAT descriptions.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SHMCTL 2 2013\-03\-18 Linux "Linux Programmer's Manual"
+.SH 名前
+shmctl \- System V 共有メモリ (shared memory) を制御する
+.SH 書式
+.ad l
+\fB#include <sys/ipc.h>\fP
+.br
+\fB#include <sys/shm.h>\fP
+.sp
+\fBint shmctl(int \fP\fIshmid\fP\fB, int \fP\fIcmd\fP\fB, struct shmid_ds *\fP\fIbuf\fP\fB);\fP
+.ad b
+.SH 説明
+\fBshmctl\fP()  は、識別子が \fIshmid\fP の System V 共有メモリ・セグメントに対して \fIcmd\fP
+で指示した制御命令を実行する。
+.PP
+\fIbuf\fP 引き数は、 \fIshmid_ds\fP 構造体へのポインタである。 この構造体は \fI<sys/shm.h>\fP
+で以下のように定義されている
+.PP
+.in +4n
+.nf
+struct shmid_ds {
+    struct ipc_perm shm_perm;    /* 所有権と許可 */
+    size_t          shm_segsz;   /* セグメントのサイズ (バイト) */
+    time_t          shm_atime;   /* 最後の付加 (attach) の時刻 */
+    time_t          shm_dtime;   /* 最後の分離 (detach) の時刻 */
+    time_t          shm_ctime;   /* 最後に変更が行われた時刻 */
+    pid_t           shm_cpid;    /* 作成者 (creator) の PID */
+    pid_t           shm_lpid;    /* 最後の shmat(2)/shmdt(2) の PID */
+    shmatt_t        shm_nattch;  /* 現在付加されている数 */
+    ...
+};
+.fi
+.in
+.PP
+\fIipc_perm\fP 構造体は以下のように定義されている (強調されたフィールドは \fBIPC_SET\fP を使って設定可能である):
+.PP
+.in +4n
+.nf
+struct ipc_perm {
+    key_t          __key;    /* shmget(2) に与えられるキー */
+    uid_t          \fBuid\fP;      /* 所有者の実効 UID */
+    gid_t          \fBgid\fP;      /* 所有者の実効 GID */
+    uid_t          cuid;     /* 作成者の実効 UID */
+    gid_t          cgid;     /* 作成者の実効 GID */
+    unsigned short \fBmode\fP;     /* \fB許可\fP + SHM_DEST と
+                                SHM_LOCKED フラグ */
+    unsigned short __seq;    /* シーケンス番号 */
+};
+.fi
+.in
+.PP
+\fIcmd\fP として有効な値は以下の通り:
+.br
+.TP  10
+\fBIPC_STAT\fP
+\fIshmid\fP に関連づけられたカーネルデータ構造体の情報を \fIbuf\fP で指された \fIshmid_ds\fP 構造体にコピーする。
+呼び出し元は共有メモリ・セグメントに対する 読み込み許可を持たなければならない。
+.TP 
+\fBIPC_SET\fP
+\fIbuf\fP によって指される \fIshmid_ds\fP 構造体のいくつかのメンバーの値を、
+この共有メモリ・セグメントに関連づけられたカーネルデータ構造体に書き込み、 \fIshm_ctime\fP メンバーも更新する。
+以下のフィールドは変更できる。 \fIshm_perm.uid\fP, \fIshm_perm.gid\fP, \fIshm_perm.mode\fP (の最下位 9
+ビット)。 呼び出したプロセスの実効 UID が所有者 (\fIshm_perm.uid\fP)  または作成者 (\fIshm_perm.cuid\fP)
+と一致するか、呼び出し元が特権を持たなければならない。
+.TP 
+\fBIPC_RMID\fP
+セグメントに破棄済みのマークを付ける。 セグメントは、実際には最後プロセスがセグメントを分離した (関連する \fIshmid_ds\fP 構造体の
+\fIshm_nattch\fP メンバーが 0 になった) 後でのみ破棄される。 呼び出し元は所有者か作成者であるか、特権を持たなければならない。
+セグメントに破棄のマークが付けられると、 関連するデータ構造体において \fIshm_perm.mode\fP フィールドの (標準ではない)
+\fBSHM_DEST\fP フラグが設定される。 このデータ構造体は \fBIPC_STAT\fP で取得される。
+.IP
+呼び出し元は最終的にはセグメントを忘れずに破棄\fIしなければならない\fP。 そうでなれば、フォールト (fault) されたページは メモリかスワップ
+(swap) に残り続ける。
+.IP
+See also the description of \fI/proc/sys/kernel/shm_rmid_forced\fP in
+\fBproc\fP(5).
+.TP  10
+\fBIPC_INFO\fP (Linux 固有)
+システム全体での共有メモリの制限とパラメータに関する情報を、 \fIbuf\fP が指す構造体に入れて返す。 この構造体は \fIshminfo\fP 型である
+(そのためキャストが必要である)。 \fIshminfo\fP は \fB_GNU_SOURCE\fP 機能検査マクロが定義された場合に
+\fI<sys/shm.h>\fP で以下のように定義される:
+.nf
+.in +4n
+
+struct  shminfo {
+    unsigned long shmmax; /* 最大セグメントサイズ */
+    unsigned long shmmin; /* 最小セグメントサイズ。
+                             常に 1 */
+    unsigned long shmmni; /* 最大セグメント数 */
+    unsigned long shmseg; /* プロセスが付加できる
+                             セグメントの最大数。
+                             カーネル内では未使用 */
+    unsigned long shmall; /* 共有メモリの最大ページ数。
+                             システム全体での値 */
+};
+
+.in
+.fi
+設定 \fIshmmni\fP, \fIshmmax\fP, \fIshmall\fP は \fI/proc\fP にある同じ名前のファイル経由で変更可能である。 詳しくは
+\fBproc\fP(5)  を参照。
+.TP 
+\fBSHM_INFO\fP (Linux 固有)
+共有メモリが消費しているシステム資源に関する情報を 格納した \fIshm_info\fP 構造体を返す。 この構造体は、 \fB_GNU_SOURCE\fP
+機能検査マクロが定義された場合に \fI<sys/shm.h>\fP で以下のように定義される:
+.nf
+.in +4n
+
+struct shm_info {
+    int           used_ids; /* 現在存在するセグメント数 */
+    unsigned long shm_tot;  /* 共有メモリのページ総数 */
+    unsigned long shm_rss;  /* メモリ上にある (スワップされて
+                               いない) 共有メモリページ数 */
+    unsigned long shm_swp;  /* スワップされている共有メモリ
+                               ページ数 */
+    unsigned long swap_attempts;
+                            /* Linux 2.4 以降では未使用 */
+    unsigned long swap_successes;
+                            /* Linux 2.4 以降では未使用 */
+};
+.in
+.fi
+.TP 
+\fBSHM_STAT\fP (Linux 固有)
+\fBIPC_STAT\fP と同じく \fIshmid_ds\fP 構造体を返す。 但し、 \fIshmid\fP
+引き数は、セグメント識別子ではなく、システム上の全ての共有メモリ セグメントに関する情報を管理するカーネルの内部配列へのインデックス である。
+.PP
+呼び出し元は、\fIcmd\fP に以下の値を指定することで、共有メモリ・セグメントが スワップされることを防止したり、許可したりできる:
+.br
+.TP  10
+\fBSHM_LOCK\fP (Linux 固有)
+共有メモリ・セグメントをスワップすることを防止する。 ロックが有効になった後、呼び出し元は、
+存在することが要求された全てのページをフォールトさせなければならない。 セグメントがロックされると、 関連するデータ構造体において
+\fIshm_perm.mode\fP フィールドの (標準的ではない)  \fBSHM_LOCKED\fP フラグが設定される。 このデータ構造体は
+\fBIPC_STAT\fP で取得される。
+.TP 
+\fBSHM_UNLOCK\fP (Linux 固有)
+セグメントのロックを解除し、スワップ・アウトすることを可能にする。
+.PP
+.\" There was some weirdness in 2.6.9: SHM_LOCK and SHM_UNLOCK could
+.\" be applied to a segment, regardless of ownership of the segment.
+.\" This was a botch-up in the move to RLIMIT_MEMLOCK, and was fixed
+.\" in 2.6.10.  MTK, May 2005
+2.6.10 より前のカーネルでは、特権プロセスだけが \fBSHM_LOCK\fP と \fBSHM_UNLOCK\fP を利用することができた。 2.6.10
+以降のカーネルでは、非特権プロセスであっても次の条件を満たせば これらの操作を利用することができる。その条件とは、プロセスの実効 UID
+がそのセグメントの所有者もしくは作成者の UID と一致し、 (\fBSHM_LOCK\fP の場合には) ロックするメモリの合計が
+\fBRLIMIT_MEMLOCK\fP リソース上限 (\fBsetrlimit\fP(2)  参照) の範囲内に入っていることである。
+.SH 返り値
+\fBIPC_INFO\fP と \fBSHM_INFO\fP 操作は、成功すると、全ての共有メモリセグメントに関する情報を
+管理しているカーネルの内部配列の使用中エントリのインデックスの うち最大値を返す (この情報は、システムの全ての共有メモリセグメントに関する情報を
+取得するために、 \fBSHM_STAT\fP 操作を繰り返し実行する際に使用できる)。 \fBSHM_STAT\fP 操作は、成功すると、 \fIshmid\fP
+で指定されたインデックスを持つ共有メモリセグメントの識別子を返す。 他の操作は、成功の場合 0 を返す。
+
+エラーの場合は \-1 を返し、 \fIerrno\fP を適切に設定する。
+.SH エラー
+.TP 
+\fBEACCES\fP
+\fBIPC_STAT\fP または \fBSHM_STAT\fP が要求され、 \fIshm_perm.mode\fP が \fIshmid\fP
+への読み込みアクセスを許しておらず、 かつ呼び出したプロセスが \fBCAP_IPC_OWNER\fP ケーパビリティ (capability)
+を持っていない。
+.TP 
+\fBEFAULT\fP
+\fIcmd\fP 引き数に \fBIPC_SET\fP か \fBIPC_STAT\fP が指定されたが \fIbuf\fP で指されているアドレスにアクセスできない。
+.TP 
+\fBEIDRM\fP
+\fIshmid\fP が削除 (remove) された識別子 (identifier) を指している。
+.TP 
+\fBEINVAL\fP
+\fIshmid\fP が有効な識別子でないか、 \fIcmd\fP が有効なコマンドでない。 もしくは、 \fBSHM_STAT\fP 操作の場合に、 \fIshmid\fP
+で指定されたインデックス値が現在未使用の配列のスロットを参照していた。
+.TP 
+\fBENOMEM\fP
+(2.6.9 以降のカーネルにおいて)  \fBSHM_LOCK\fP が指定され、 ロックされる予定のセグメントのサイズ
+(ロックされる共有メモリ・セグメントの合計バイト数) が、 呼び出したプロセスの実ユーザー ID についての制限を超えた。 この制限は
+\fBRLIMIT_MEMLOCK\fP ソフト資源制限で定義される (\fBsetrlimit\fP(2)  を参照)。
+.TP 
+\fBEOVERFLOW\fP
+\fBIPC_STAT\fP が試みられ、GID や UID の値が \fIbuf\fP で指示される構造体に格納するには大き過ぎる。
+.TP 
+\fBEPERM\fP
+\fBIPC_SET\fP か \fBIPC_RMID\fP が試みられ、 呼び出したプロセスの実効ユーザー ID が作成者 (\fIshm_perm.cuid\fP)
+でも所有者 (\fIshm_perm.uid\fP)  でもなく、プロセスが特権を持たない (Linux では \fBCAP_SYS_ADMIN\fP
+ケーパビリティを持たない)。
+
+または (2.6.9 より前のカーネルで)  \fBSHM_LOCK\fP または \fBSHM_UNLOCK\fP が指定されているが、プロセスが特権を持たない
+(Linux では \fBCAP_IPC_LOCK\fP ケーパビリティを持たない)。 (Linux 2.6.9 以降では、
+\fBRLIMIT_MEMLOCK\fP が 0 で呼び出し元が特権を持たない場合にも、このエラーが起こる。)
+.SH 準拠
+.\" SVr4 documents additional error conditions EINVAL,
+.\" ENOENT, ENOSPC, ENOMEM, EEXIST.  Neither SVr4 nor SVID documents
+.\" an EIDRM error condition.
+SVr4, POSIX.1\-2001.
+.SH 注意
+.\" Like Linux, the FreeBSD man pages still document
+.\" the inclusion of these header files.
+The inclusion of \fI<sys/types.h>\fP and \fI<sys/ipc.h>\fP isn't
+required on Linux or by any version of POSIX.  However, some old
+implementations required the inclusion of these header files, and the SVID
+also documented their inclusion.  Applications intended to be portable to
+such old systems may need to include these header files.
+
+\fBIPC_INFO\fP, \fBSHM_STAT\fP, \fBSHM_INFO\fP 操作は、 \fBipcs\fP(1)
+プログラムで割り当て済の資源に関する情報を提供するために 使用されている。将来、これらの操作は変更されたり、 /proc
+ファイルシステムのインタフェースに移動されるかもしれない。
+
+Linux では、 \fIshmctl(IPC_RMID)\fP を使ってすでに削除マークがつけられている共有メモリ・セグメントを あるプロセスが付加
+(attach)  (\fBshmat\fP(2))  することを許可している。 この機能は他の UNIX の実装では利用できない。
+移植性を考慮したアプリケーションではこれに依存しないようにすべきである。
+
+\fI構造体 shmid_ds\fP 内の多くのフィールドは、 Linux 2.2 では \fIshort\fP 型だったが、Linux 2.4 では
+\fIlong\fP 型になった。 この利点を生かすには、glibc\-2.1.91 以降の環境下で 再コンパイルすれば十分である。
+カーネルは新しい形式の呼び出しと古い形式の呼び出しを \fIcmd\fP 内の \fBIPC_64\fP フラグで区別する。
+.SH 関連項目
+\fBmlock\fP(2), \fBsetrlimit\fP(2), \fBshmget\fP(2), \fBshmop\fP(2), \fBcapabilities\fP(7),
+\fBshm_overview\fP(7), \fBsvipc\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/shmget.2 b/manual/LDP_man-pages/draft/man2/shmget.2
new file mode 100644 (file)
index 0000000..19dd843
--- /dev/null
@@ -0,0 +1,186 @@
+.\" Copyright (c) 1993 Luigi P. Bai (lpb@softint.com) July 28, 1993
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified Wed Jul 28 10:57:35 1993, Rik Faith <faith@cs.unc.edu>
+.\" Modified Sun Nov 28 16:43:30 1993, Rik Faith <faith@cs.unc.edu>
+.\"          with material from Giorgio Ciucci <giorgio@crcc.it>
+.\" Portions Copyright 1993 Giorgio Ciucci <giorgio@crcc.it>
+.\" Modified Tue Oct 22 22:03:17 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified, 8 Jan 2003, Michael Kerrisk, <mtk.manpages@gmail.com>
+.\"    Removed EIDRM from errors - that can't happen...
+.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on capability requirements
+.\" Modified, 11 Nov 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Language and formatting clean-ups
+.\"    Added notes on /proc files
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SHMGET 2 2012\-05\-31 Linux "Linux Programmer's Manual"
+.SH 名前
+shmget \- System V 共有メモリ・セグメントを割り当てる
+.SH 書式
+.ad l
+\fB#include <sys/ipc.h>\fP
+.br
+\fB#include <sys/shm.h>\fP
+.sp
+\fBint shmget(key_t \fP\fIkey\fP\fB, size_t \fP\fIsize\fP\fB, int \fP\fIshmflg\fP\fB);\fP
+.ad b
+.SH 説明
+\fBshmget\fP()  は \fIkey\fP 引き数に対応する System V 共有メモリ・セグメントの識別子を返す。 \fIkey\fP の値が
+\fBIPC_PRIVATE\fP の場合、もしくは \fIkey\fP に対応する共有メモリ・セグメントが存在せず、 \fIshmflg\fP に
+\fBIPC_CREAT\fP が指定されていた場合、 新しい共有メモリ・セグメントを作成する。 作成される共有メモリ・セグメントは、 \fIsize\fP
+引き数の値を \fBPAGE_SIZE\fP の倍数へと切り上げた (round up) 大きさとなる。
+.PP
+\fIshmflg\fP に \fBIPC_CREAT\fP と \fBIPC_EXCL\fP の両方が指定された場合、 \fIkey\fP
+に対応する共有メモリ・セグメントが既に存在すると、 \fBshmget\fP()  は失敗し、 \fIerrno\fP に \fBEEXIST\fP が設定される
+(これは \fBopen\fP(2)  に \fBO_CREAT | O_EXCL\fP を指定した場合の動作と同じである)。
+.PP
+\fIshmflg\fP は以下の内容から構成される:
+.TP  12
+\fBIPC_CREAT\fP
+新しいセグメントを作成する。このフラグが指定されなかった場合、 \fBshmget\fP()  は \fIkey\fP に対応するセグメントを探し、
+ユーザがそのセグメントにアクセスする許可があるかどうかをチェックする。
+.TP 
+\fBIPC_EXCL\fP
+\fBIPC_CREAT\fP と共に使用し、セグメントが既に存在した場合には 失敗することを保証する。
+.TP 
+\fImode_flags\fP
+(下位 9 ビット)  所有者、グループ、他人 (world) への許可を指定する。 これらのビットは \fBopen\fP(2)  の \fImode\fP
+引き数と同じ形式で同じ意味を持つ。 今のところ、システムは実行 (execute) 許可を参照しない。
+.TP 
+\fBSHM_HUGETLB\fP (Linux 2.6 以降)
+"ヒュージページ (huge page)" を使うセグメントを割り当てる。詳細な情報は、Linux カーネルソースのファイル
+\fIDocumentation/vm/hugetlbpage.txt\fP を参照。
+.TP 
+\fBSHM_NORESERVE\fP (Linux 2.6.15 以降)
+.\" As at 2.6.17-rc2, this flag has no effect if SHM_HUGETLB was also
+.\" specified.
+このフラグは、 \fBmmap\fP(2)  の \fBMAP_NORESERVE\fP フラグと同じ役割を果たす。
+このセグメントに対するスワップ空間の予約を行わない。 スワップ空間を予約した場合は、そのセグメントの変更が必ず成功することが
+保証される。スワップ空間の予約を行わなかった場合は、物理メモリに空きが ないと書き込み時に \fBSIGSEGV\fP を受け取る可能性がある。
+\fBproc\fP(5)  にある \fI/proc/sys/vm/overcommit_memory\fP ファイルに関する議論も参照のこと。
+.PP
+共有メモリ・セグメントが新たに作成される際、 共有メモリ・セグメントの内容は 0 で初期化され、 関連情報を保持するデータ構造体 \fIshmid_ds\fP
+は以下のように初期化される。
+.IP
+\fIshm_perm.cuid\fP と \fIshm_perm.uid\fP に呼び出し元プロセスの実効 (effective) ユーザーID を設定する。
+.IP
+\fIshm_perm.cgid\fP と \fIshm_perm.gid\fP に呼び出し元プロセスの実効グループID を設定する。
+.IP
+\fIshm_perm.mode\fP の下位 9 ビットに \fIshmflg\fP の下位 9 ビットを設定する。
+.IP
+\fIshm_segsz\fP に \fIsize\fP の値を設定する。
+.IP
+\fIshm_lpid\fP, \fIshm_nattch\fP, \fIshm_atime\fP, \fIshm_dtime\fP に 0 を設定する。
+.IP
+\fIshm_ctime\fP に現在の時刻を設定する。
+.PP
+共有メモリ・セグメントが既に存在する場合、アクセス許可の検査と、 破壊 (destruction) マークがつけられていないかのチェックが行われる。
+.SH 返り値
+成功した場合、有効なセグメント識別子 \fIshmid\fP が返される。エラーの場合、 \-1 が返される。
+.SH エラー
+失敗した場合は \fIerrno\fP が以下のどれかに設定される:
+.TP 
+\fBEACCES\fP
+ユーザーはその共有メモリ・セグメントへのアクセス許可を持たず、 \fBCAP_IPC_OWNER\fP ケーパビリティも持っていない。
+.TP 
+\fBEEXIST\fP
+\fBIPC_CREAT | IPC_EXCL\fP が指定されていたが、そのセグメントが既に存在する。
+.TP 
+\fBEINVAL\fP
+新しいセグメントを作成しようとした際に \fIsize\fP < \fBSHMMIN\fP または \fIsize\fP > \fBSHMMAX\fP
+であった。 もしくは、指定されたキーに対応するセグメントが既に存在して、新しい セグメントを作成しようとはしなかったが、\fIsize\fP
+が存在するセグメントの サイズよりも大きかった。
+.TP 
+\fBENFILE\fP
+.\" [2.6.7] shmem_zero_setup()-->shmem_file_setup()-->get_empty_filp()
+システム全体でオープンされているファイルの総数が上限に達した。
+.TP 
+\fBENOENT\fP
+指定された \fIkey\fP に対応するセグメントが存在せず、 \fBIPC_CREAT\fP も指定されていなかった。
+.TP 
+\fBENOMEM\fP
+セグメントの管理情報 (overhead) に割り当てるメモリがなかった。
+.TP 
+\fBENOSPC\fP
+システム全体の共有メモリ・セグメント数の制限 (\fBSHMMNI\fP)  に達した、または要求された \fIsize\fP のセグメントの割り当てが
+システム全体の共有メモリサイズの制限 (\fBSHMALL\fP)  を超過した。
+.TP 
+\fBEPERM\fP
+\fBSHM_HUGETLB\fP フラグが指定されたが、呼び出し元には権限がなかった (\fBCAP_IPC_LOCK\fP ケーパビリティを持っていなかった)。
+.SH 準拠
+.\" SVr4 documents an additional error condition EEXIST.
+SVr4, POSIX.1\-2001.
+
+\fBSHM_HUGETLB\fP は Linux での拡張であり、移植性はない。
+.SH 注意
+.\" Like Linux, the FreeBSD man pages still document
+.\" the inclusion of these header files.
+The inclusion of \fI<sys/types.h>\fP and \fI<sys/ipc.h>\fP isn't
+required on Linux or by any version of POSIX.  However, some old
+implementations required the inclusion of these header files, and the SVID
+also documented their inclusion.  Applications intended to be portable to
+such old systems may need to include these header files.
+
+\fBIPC_PRIVATE\fP はフラグではなく \fIkey_t\fP 型である。 この特別な値が \fIkey\fP に使用された場合は、 \fBshmget\fP()
+は \fIshmflg\fP の下位 9 ビットを除いた全てを無視し、 (成功すれば) 新しい共有メモリ・セグメントを作成する。
+.PP
+\fBshmget\fP()  コールに影響する共有メモリ・セグメント資源の制限は以下の通りである:
+.TP 
+\fBSHMALL\fP
+システム全体の共有メモリ・ページの最大数 (Linux では、この上限値は \fI/proc/sys/kernel/shmall\fP
+経由で参照したり、変更したりできる)。
+.TP 
+\fBSHMMAX\fP
+共有メモリ・セグメントのバイト単位の大きさの上限: 方針依存 (Linux では、この上限値は \fI/proc/sys/kernel/shmmax\fP
+経由で参照したり、変更したりできる)。
+.TP 
+\fBSHMMIN\fP
+共有メモリ・セグメントのバイト単位の大きさの下限: 実装依存 (現在は 1 バイトだが、実質的な最小サイズは \fBPAGE_SIZE\fP である)。
+.TP 
+\fBSHMMNI\fP
+.\" Kernels between 2.4.x and 2.6.8 had an off-by-one error that meant
+.\" that we could create one more segment than SHMMNI -- MTK
+.\" This /proc file is not available in Linux 2.2 and earlier -- MTK
+システム全体の共有メモリーの数の上限: 実装依存 (現在は 4096。Linux 2.3.99 より前では 128。 Linux では、この上限値は
+\fI/proc/sys/kernel/shmmni\fP 経由で参照したり、変更したりできる)。
+.PP
+プロセス当りの共有メモリ・セグメントの個数の最大値 (\fBSHMSEG\fP)  に関する実装上の制限はない。
+.SS "Linux での注意"
+バージョン 2.3.30 までは、Linux は 削除が予定されている共有メモリ・セグメントに対して \fBshmget\fP()  が行われると
+\fBEIDRM\fP を返していた。
+.SH バグ
+\fBIPC_PRIVATE\fP という名前を選んだのはおそらく失敗であろう。 \fBIPC_NEW\fP の方がより明確にその機能を表しているだろう。
+.SH 関連項目
+\fBshmat\fP(2), \fBshmctl\fP(2), \fBshmdt\fP(2), \fBftok\fP(3), \fBcapabilities\fP(7),
+\fBshm_overview\fP(7), \fBsvipc\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index a5c0f16..a01d10e 100644 (file)
@@ -45,7 +45,7 @@
 .\"*******************************************************************
 .TH SHMOP 2 2013\-02\-12 Linux "Linux Programmer's Manual"
 .SH 名前
-shmat, shmdt \- 共有メモリ (shared memory) の操作
+shmat, shmdt \- System V 共有メモリ (shared memory) の操作
 .SH 書式
 .nf
 \fB#include <sys/types.h>\fP
@@ -56,7 +56,7 @@ shmat, shmdt \- 共有メモリ (shared memory) の操作
 \fBint shmdt(const void *\fP\fIshmaddr\fP\fB);\fP
 .fi
 .SH 説明
-\fBshmat\fP()  は \fIshmid\fP で指定された共有メモリ・セグメント (shared memory segment) を
+\fBshmat\fP()  は \fIshmid\fP で指定された System V 共有メモリ・セグメント (shared memory segment) を
 コールしたプロセスのアドレス空間に付加 (attach) する。 付加するアドレスは \fIshmaddr\fP に以下のどれかの形式で指定する:
 .LP
 \fIshmaddr\fP が NULL ならば、システムはセグメントを付加するための 適切な (使用されていない) アドレスを選択する。
@@ -160,6 +160,6 @@ POSIX.1\-2001 ではこのような動作を指定しておらず、 他の多
 \fBbrk\fP(2), \fBmmap\fP(2), \fBshmctl\fP(2), \fBshmget\fP(2), \fBcapabilities\fP(7),
 \fBshm_overview\fP(7), \fBsvipc\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/shutdown.2 b/manual/LDP_man-pages/draft/man2/shutdown.2
new file mode 100644 (file)
index 0000000..dd93b5f
--- /dev/null
@@ -0,0 +1,88 @@
+.\" Copyright (c) 1983, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\" %%%LICENSE_END
+.\"
+.\"     $Id: shutdown.2,v 1.1.1.1 1999/03/21 22:52:23 freitag Exp $
+.\"
+.\" Modified Sat Jul 24 09:57:55 1993 by Rik Faith <faith@cs.unc.edu>
+.\" Modified Tue Oct 22 22:04:51 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 1998 by Andi Kleen
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SHUTDOWN 2 2012\-09\-06 Linux "Linux Programmer's Manual"
+.SH 名前
+shutdown \- 全二重接続の一部を閉じる
+.SH 書式
+\fB#include <sys/socket.h>\fP
+.sp
+\fBint shutdown(int \fP\fIsockfd\fP\fB, int \fP\fIhow\fP\fB);\fP
+.SH 説明
+\fBshutdown\fP()  は、 \fIsockfd\fP に関連づけられているソケットによる全二重接続 (full\-duplex connection)
+の一部または全てを閉じる。 \fIhow\fP が \fBSHUT_RD\fP ならば、それ以降の受信を禁止する。 \fIhow\fP が \fBSHUT_WR\fP
+ならば、それ以降の送信を禁止する。 \fIhow\fP が \fBSHUT_RDWR\fP ならば、それ以降の送受信を禁止する。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEBADF\fP
+\fIsockfd\fP が有効なディスクリプターでない。
+.TP 
+\fBEINVAL\fP
+An invalid value was specified in \fIhow\fP (but see BUGS).
+.TP 
+\fBENOTCONN\fP
+指定されたソケットは接続されていない。
+.TP 
+\fBENOTSOCK\fP
+\fIsockfd\fP がソケットでなくファイルである。
+.SH 準拠
+POSIX.1\-2001, 4.4BSD (\fBshutdown\fP()  関数コールは 4.2BSD で初めて登場した)。
+.SH 注意
+\fBSHUT_RD\fP, \fBSHUT_WR\fP, \fBSHUT_RDWR\fP の各定数 (それぞれ 0, 1, 2 の値を持つ) は
+glibc\-2.1.91 以降、 \fI<sys/socket.h>\fP で定義されている。
+.SH バグ
+.\" FIXME
+.\" https://bugzilla.kernel.org/show_bug.cgi?id=47111
+As currently implemented, checks for the validity of \fIhow\fP are done in
+domain\-specific code, and not all domains perform these checks.  Most
+notably, UNIX domain sockets simply ignore invalid values; this may change
+in the future.
+.SH 関連項目
+\fBconnect\fP(2), \fBsocket\fP(2), \fBsocket\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/sigaction.2 b/manual/LDP_man-pages/draft/man2/sigaction.2
new file mode 100644 (file)
index 0000000..d127eeb
--- /dev/null
@@ -0,0 +1,512 @@
+.\" t
+.\" Copyright (c) 1994,1995 Mike Battersby <mib@deakin.edu.au>
+.\" and Copyright 2004, 2005 Michael Kerrisk <mtk.manpages@gmail.com>
+.\" based on work by faith@cs.unc.edu
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified, aeb, 960424
+.\" Modified Fri Jan 31 17:31:20 1997 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified Thu Nov 26 02:12:45 1998 by aeb - add SIGCHLD stuff.
+.\" Modified Sat May  8 17:40:19 1999 by Matthew Wilcox
+.\"    add POSIX.1b signals
+.\" Modified Sat Dec 29 01:44:52 2001 by Evan Jones <ejones@uwaterloo.ca>
+.\"    SA_ONSTACK
+.\" Modified 2004-11-11 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Added mention of SIGCONT under SA_NOCLDSTOP
+.\"    Added SA_NOCLDWAIT
+.\" Modified 2004-11-17 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Updated discussion for POSIX.1-2001 and SIGCHLD and sa_flags.
+.\"    Formatting fixes
+.\" 2004-12-09, mtk, added SI_TKILL + other minor changes
+.\" 2005-09-15, mtk, split sigpending(), sigprocmask(), sigsuspend()
+.\"    out of this page into separate pages.
+.\" 2010-06-11 Andi Kleen, add hwpoison signal extensions
+.\" 2010-06-11 mtk, improvements to discussion of various siginfo_t fields.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SIGACTION 2 2013\-02\-12 Linux "Linux Programmer's Manual"
+.SH 名前
+sigaction \- シグナルの動作の確認と変更
+.SH 書式
+.nf
+\fB#include <signal.h>\fP
+.sp
+\fBint sigaction(int \fP\fIsignum\fP\fB, const struct sigaction *\fP\fIact\fP\fB,\fP
+\fB              struct sigaction *\fP\fIoldact\fP\fB);\fP
+.fi
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+.ad l
+\fBsigaction\fP(): _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
+
+\fIsiginfo_t\fP: _POSIX_C_SOURCE >= 199309L
+.ad b
+.SH 説明
+\fBsigaction\fP()  システムコールは、特定のシグナルを受信した際の プロセスの動作を変更するのに使用される (シグナルの概要については
+\fBsignal\fP(7)  を参照)。
+.PP
+\fIsignum\fP には、 \fBSIGKILL\fP と \fBSIGSTOP\fP 以外の有効なシグナルをどれでも指定できる。
+.PP
+\fIact\fP が NULL 以外であれば、シグナル \fIsignum\fP の新しい動作 (action) として \fIact\fP が設定される。
+\fIoldact\fP が NULL でなければ、今までの動作が \fIoldact\fP に格納される。
+.PP
+\fIsigaction\fP 構造体は以下のような感じに定義される。
+.sp
+.in +4n
+.nf
+struct sigaction {
+    void     (*sa_handler)(int);
+    void     (*sa_sigaction)(int, siginfo_t *, void *);
+    sigset_t   sa_mask;
+    int        sa_flags;
+    void     (*sa_restorer)(void);
+};
+.fi
+.in
+.PP
+アーキテクチャによっては共用体 (union) が用いられており、その場合には \fIsa_handler\fP と \fIsa_sigaction\fP
+の両方を同時に割り当てることはできない。
+.PP
+\fIsa_restorer\fP 要素は廃止予定であり使用すべきではない。 POSIX には \fIsa_restorer\fP 要素に関する規定はない。
+.PP
+\fIsa_handler\fP は \fIsignum\fP に対応する動作を指定するもので、 デフォルトの動作を行う \fBSIG_DFL\fP、
+そのシグナルを無視する \fBSIG_IGN\fP、 シグナルハンドラ関数へのポインタが設定できる。
+シグナルハンドラ関数の引き数は一つであり、シグナル番号が引き数として 渡される。
+.PP
+\fIsa_flags\fP に \fBSA_SIGINFO\fP が指定された場合、 (\fIsa_handler\fP ではなく)
+\fIsa_sigaction\fP により \fIsignum\fP に対応するシグナルハンドラ関数が指定さ
+れる。指定される関数は、最初の引き数としてシグナル番号を、二番目の引き
+数として \fIsiginfo_t\fP へのポインタを、三番目の引き数として (\fIvoid\ *\fP
+にキャストした) \fIucontext_t\fP へのポインタを受けとる。 (一般的には、
+ハンドラ関数の三番目の引き数が使用されない。\fIucontext_t\fP についての
+詳しい情報は \fBgetcontext\fP(3) を参照。)
+.PP
+\fIsa_mask\fP は、シグナル・ハンドラ実行中に禁止 (block) すべきシグナルのマスクを指定する
+(ハンドラ実行中のシグナルの禁止は、シグナル・ハンドラが起動されたスレッド のシグナルのマスクに追加することで行われる)。 さらに、
+\fBSA_NODEFER\fP フラグが指定されていない場合は、ハンドラを起動するきっかけとなる シグナルにも \fIsa_mask\fP が適用される。
+.PP
+\fIsa_flags\fP はシグナル・ハンドラの動作を変更するためのフラグの集合を指定する。 \fIsa_flags\fP には、以下に示すフラグの (0
+個以上の) 論理和をとったものを指定する。
+.RS 4
+.TP 
+\fBSA_NOCLDSTOP\fP
+\fIsignum\fP が \fBSIGCHLD\fP の場合、 子プロセスが停止したり (子プロセスが \fBSIGSTOP\fP, \fBSIGTSTP\fP,
+\fBSIGTTIN\fP, \fBSIGTTOU\fP を受けたとき) 再開したり (子プロセスが \fBSIGCONT\fP を受けたとき) したときに
+\fBSIGCHLD\fP の通知を受けない。 このフラグは、 \fBSIGCHLD\fP に対してハンドラを設定する際にのみ意味を持つ。
+.TP 
+\fBSA_NOCLDWAIT\fP (Linux 2.6 以降)
+.\" To be precise: Linux 2.5.60 -- MTK
+(Linux 2.6 以降)  \fIsignum\fP が \fBSIGCHLD\fP の場合、子プロセスが終了したときに
+子プロセスをゾンビプロセスに変化させない (\fBwaitpid\fP(2)  も参照)。 このフラグは、 \fBSIGCHLD\fP
+に対してハンドラを設定する際、もしくはそのシグナルの処理方法を \fBSIG_DFL\fP に設定する際にのみ意味を持つ。
+
+\fBSIGCHLD\fP に対してハンドラを設定する際に \fBSA_NOCLDWAIT\fP フラグをセットした場合、 子プロセスが終了した際に
+\fBSIGCHLD\fP シグナルが生成されるかどうかは、 POSIX.1 では規定されていない。 Linux では、この状況で \fBSIGCHLD\fP
+シグナルは生成される。 いくつかの他の実装では生成されない。
+.TP 
+\fBSA_NODEFER\fP
+それ自身のシグナル・ハンドラーの内部にいる時でも そのシグナルをマスクしないようにする。 このフラグはシグナルハンドラを設定する際にのみ意味を持つ。
+\fBSA_NOMASK\fP はこのフラグと同じ意味だが、廃止されており、非標準である。
+.TP 
+\fBSA_ONSTACK\fP
+\fBsigaltstack\fP(2)  で提供される別のシグナル・スタックでシグナルハンドラを呼び出す。
+別のシグナル・スタックが利用可能でなければ、デフォルトのスタックが 使用される。 このフラグはシグナルハンドラを設定する際にのみ意味を持つ。
+.TP 
+\fBSA_RESETHAND\fP
+シグナルハンドラを設定する際に、シグナルの動作をデフォルトに戻す。 このフラグはシグナルハンドラを設定する際にのみ意味を持つ。
+\fBSA_ONESHOT\fP はこのフラグと同じ意味だが、廃止されており、非標準である。
+.TP 
+\fBSA_RESTART\fP
+いくつかのシステムコールをシグナルの通知の前後で再開できるようにして、 BSD シグナル方式 (semantics) と互換性のある動作を提供する。
+このフラグはシグナルハンドラを設定する際にのみ意味を持つ。 \fBsignal\fP(7)  に書かれているシステムコールの再開に関する議論を参照のこと。
+.TP 
+\fBSA_SIGINFO\fP (Linux 2.2 以降)
+.\" (The
+.\" .I sa_sigaction
+.\" field was added in Linux 2.1.86.)
+シグナルハンドラは一つではなく、三つの引き数を持つ。この場合は \fIsa_handler\fP のかわりに \fIsa_sigaction\fP
+を設定しなければならない このフラグはシグナルハンドラを設定する際にのみ意味を持つ。
+.RE
+.PP
+\fIsa_sigaction\fP のパラメータ \fIsiginfo_t\fP は以下の要素を持つ構造体である:
+.sp
+.in +4n
+.nf
+.\" FIXME
+.\" si_trapno seems to be only used on SPARC and Alpha;
+.\" this page could use a little more detail on its purpose there.
+.\" In the kernel: si_tid
+siginfo_t {
+    int      si_signo;    /* Signal number */
+    int      si_errno;    /* An errno value */
+    int      si_code;     /* Signal code */
+    int      si_trapno;   /* Trap number that caused
+                             hardware\-generated signal
+                             (unused on most architectures) */
+    pid_t    si_pid;      /* Sending process ID */
+    uid_t    si_uid;      /* Real user ID of sending process */
+    int      si_status;   /* Exit value or signal */
+    clock_t  si_utime;    /* User time consumed */
+    clock_t  si_stime;    /* System time consumed */
+    sigval_t si_value;    /* Signal value */
+    int      si_int;      /* POSIX.1b signal */
+    void    *si_ptr;      /* POSIX.1b signal */
+    int      si_overrun;  /* Timer overrun count; POSIX.1b timers */
+    int      si_timerid;  /* Timer ID; POSIX.1b timers */
+    void    *si_addr;     /* Memory location which caused fault */
+    long     si_band;     /* Band event (was \fIint\fP in
+                             glibc 2.3.2 and earlier) */
+    int      si_fd;       /* File descriptor */
+    short    si_addr_lsb; /* Least significant bit of address
+                             (since Linux 2.6.32) */
+}
+.fi
+.in
+
+\fIsi_signo\fP, \fIsi_errno\fP, \fIsi_code\fP は全てのシグナルに対して定義されている (\fIsi_errno\fP は
+Linux では一般的には使用されない)。 構造体の残りの部分は、共用体 (union) になっているかもしれない。
+その場合は該当するシグナルにおいて意味のあるフィールドのみを読み込む ことができる。
+.IP * 2
+Signals sent with \fBkill\fP(2)  and \fBsigqueue\fP(3)  fill in \fIsi_pid\fP and
+\fIsi_uid\fP.  In addition, signals sent with \fBsigqueue\fP(3)  fill in \fIsi_int\fP
+and \fIsi_ptr\fP with the values specified by the sender of the signal; see
+\fBsigqueue\fP(3)  for more details.
+.IP *
+POSIX.1b タイマ (Linux 2.6 以降) は \fIsi_overrun\fP と \fIsi_timerid\fP を
+設定する。 \fIsi_timerid\fP フィールドはカーネルがタイマを特定するのに
+使用する内部 ID であり、 \fBtimer_create\fP(2) が返すタイマ ID と同じではない。
+\fIsi_overrun\fP フィールドはタイマが回り切った回数である。
+これは \fBtimer_getoverrun\fP(2) の呼び出しで取得できる情報と同じである。
+これらのフィールドは非標準で Linux による拡張である。
+.IP *
+Signals sent for message queue notification (see the description of
+\fBSIGEV_SIGNAL\fP in \fBmq_notify\fP(3))  fill in \fIsi_int\fP/\fIsi_ptr\fP, with the
+\fIsigev_value\fP supplied to \fBmq_notify\fP(3); \fIsi_pid\fP, with the process ID
+of the message sender; and \fIsi_uid\fP, with the real user ID of the message
+sender.
+.IP *
+.\" FIXME .
+.\" When si_utime and si_stime where originally implemented, the
+.\" measurement unit was HZ, which was the same as clock ticks
+.\" (sysconf(_SC_CLK_TCK)).  In 2.6, HZ became configurable, and
+.\" was *still* used as the unit to return the info these fields,
+.\" with the result that the field values depended on the the
+.\" configured HZ.  Of course, the should have been measured in
+.\" USER_HZ instead, so that sysconf(_SC_CLK_TCK) could be used to
+.\" convert to seconds.  I have a queued patch to fix this:
+.\" http://thread.gmane.org/gmane.linux.kernel/698061/ .
+.\" This patch made it into 2.6.27.
+.\" But note that these fields still don't return the times of
+.\" waited-for children (as is done by getrusage() and times()
+.\" and wait4()).  Solaris 8 does include child times.
+\fBSIGCHLD\fP は \fIsi_pid\fP, \fIsi_uid\fP, \fIsi_status\fP, \fIsi_utime\fP,
+\fIsi_stime\fP を設定し、子プロセスに関する情報を提供する。
+\fIsi_pid\fP フィールドは子プロセスのプロセス ID で、
+\fIsi_uid\fP フィールドは子プロセスの実ユーザ ID である。
+\fIsi_stime\fP フィールドには、 (\fIsi_code\fP が \fBCLD_EXITED\fP の場合は)
+子プロセスの終了ステータスが、それ以外の場合は状態が変化する原因と
+なったシグナル番号が格納される。
+\fIsi_utime\fP と \fIsi_stime\fP には子プロセスが使用したユーザ CPU 時間とシ
+ステム CPU 時間がそれぞれ格納される。(\fBgetrusage\fP(2) や \fBtime\fP(2) と
+異なり) これらのフィールドには wait 待ちの子プロセスにより使用された時
+間は含まれない。 2.6 より前と 2.6.27 以降のカーネルでは、 これらのフィー
+ルドに格納される CPU 時間の単位は \fIsysconf(_SC_CLK_TCK)\fP である。
+2.6.27 より前の 2.6 系のカーネルでは、バグがあり、 これらのフィールドの
+CPU 時間の単位が (カーネルのコンフィグで指定される) システムの jiffy で
+あった (\fBtime\fP(7) 参照)。
+.IP *
+.\" FIXME SIGTRAP also sets the following for ptrace_notify() ?
+.\"     info.si_code = exit_code;
+.\"     info.si_pid = task_pid_vnr(current);
+.\"     info.si_uid = current_uid();  /* Real UID */
+\fBSIGILL\fP, \fBSIGFPE\fP, \fBSIGSEGV\fP, \fBSIGBUS\fP, and \fBSIGTRAP\fP fill in
+\fIsi_addr\fP with the address of the fault.  On some architectures, these
+signals also fill in the \fIsi_trapno\fP filed.  Some suberrors of \fBSIGBUS\fP,
+in particular \fBBUS_MCEERR_AO\fP and \fBBUS_MCEERR_AR\fP, also fill in
+\fIsi_addr_lsb\fP.  This field indicates the least significant bit of the
+reported address and therefore the extent of the corruption.  For example,
+if a full page was corrupted, \fIsi_addr_lsb\fP contains
+\fIlog2(sysconf(_SC_PAGESIZE))\fP.  \fBBUS_MCERR_*\fP and \fIsi_addr_lsb\fP are
+Linux\-specific extensions.
+.IP *
+\fBSIGIO\fP/\fBSIGPOLL\fP (the two names are synonyms on Linux)  fills in
+\fIsi_band\fP and \fIsi_fd\fP.  The \fIsi_band\fP event is a bit mask containing the
+same values as are filled in the \fIrevents\fP field by \fBpoll\fP(2).  The
+\fIsi_fd\fP field indicates the file descriptor for which the I/O event
+occurred.
+.PP
+\fIsi_code\fP は、そのシグナルが送信された理由を示す値である (ビットマスクではない)。 以下のリストに、どのシグナルの場合でも
+\fIsi_code\fP に入りうる値を、シグナルが生成された理由とともに記載する。
+.RS 4
+.TP  15
+\fBSI_USER\fP
+\fBkill\fP(2)
+.TP 
+\fBSI_KERNEL\fP
+カーネルにより送信された
+.TP 
+\fBSI_QUEUE\fP
+\fBsigqueue\fP(3)
+.TP 
+\fBSI_TIMER\fP
+POSIX タイマが満了した
+.TP 
+\fBSI_MESGQ\fP
+POSIX メッセージキューの状態が変化した (Linux 2.6.6 以降)。 \fBmq_notify\fP(3)\fB参照。\fP
+.TP 
+\fBSI_ASYNCIO\fP
+非同期 IO (AIO) が完了した
+.TP 
+\fBSI_SIGIO\fP
+Queued \fBSIGIO\fP (only in kernels up to Linux 2.2; from Linux 2.4 onward
+\fBSIGIO\fP/\fBSIGPOLL\fP fills in \fIsi_code\fP as described below).
+.TP 
+\fBSI_TKILL\fP
+.\" SI_DETHREAD is defined in 2.6.9 sources, but isn't implemented
+.\" It appears to have been an idea that was tried during 2.5.6
+.\" through to 2.5.24 and then was backed out.
+\fBtkill\fP(2)  または \fBtgkill\fP(2)  (Linux 2.4.19 以降)
+.RE
+.PP
+\fBSIGILL\fP シグナルの場合、 \fIsi_code\fP には以下の値を指定できる:
+.RS 4
+.TP  15
+\fBILL_ILLOPC\fP
+不正な命令コード (opcode)
+.TP 
+\fBILL_ILLOPN\fP
+不正なオペランド
+.TP 
+\fBILL_ILLADR\fP
+不正なアドレッシングモード
+.TP 
+\fBILL_ILLTRP\fP
+不正なトラップ
+.TP 
+\fBILL_PRVOPC\fP
+特権が必要な命令コード (opcode)
+.TP 
+\fBILL_PRVREG\fP
+特権が必要なレジスタ
+.TP 
+\fBILL_COPROC\fP
+コプロセッサのエラー
+.TP 
+\fBILL_BADSTK\fP
+内部スタックエラー
+.RE
+.PP
+\fBSIGFPE\fP シグナルの場合、 \fIsi_code\fP には以下の値を指定できる:
+.RS 4
+.TP  15
+\fBFPE_INTDIV\fP
+整数の 0 による除算
+.TP 
+\fBFPE_INTOVF\fP
+整数のオーバーフロー
+.TP 
+\fBFPE_FLTDIV\fP
+浮動小数点の 0 による除算
+.TP 
+\fBFPE_FLTOVF\fP
+浮動小数点のオーバーフロー
+.TP 
+\fBFPE_FLTUND\fP
+浮動小数点のアンダーフロー
+.TP 
+\fBFPE_FLTRES\fP
+浮動小数点の不正確な演算結果 (inexact result)
+.TP 
+\fBFPE_FLTINV\fP
+浮動小数点の不正な操作
+.TP 
+\fBFPE_FLTSUB\fP
+範囲外の添字 (subscript)
+.RE
+.PP
+\fBSIGSEGV\fP シグナルの場合、 \fIsi_code\fP には以下の値を指定できる:
+.RS 4
+.TP  15
+\fBSEGV_MAPERR\fP
+オブジェクトにマッピングされていないアドレス
+.TP 
+\fBSEGV_ACCERR\fP
+マッピングされたオブジェクトに対するアクセス許可がない
+.RE
+.PP
+\fBSIGBUS\fP シグナルの場合、 \fIsi_code\fP には以下の値を指定できる:
+.RS 4
+.TP  15
+\fBBUS_ADRALN\fP
+不正なアドレス・アライメント (alignment)
+.TP 
+\fBBUS_ADRERR\fP
+存在しない物理アドレス
+.TP 
+\fBBUS_OBJERR\fP
+オブジェクト固有のハードウェアエラー
+.TP 
+\fBBUS_MCEERR_AR\fP (Linux 2.6.32 以降)
+Hardware memory error consumed on a machine check; action required.
+.TP 
+\fBBUS_MCEERR_AO\fP (Linux 2.6.32  以降)
+Hardware memory error detected in process but not consumed; action optional.
+.RE
+.PP
+\fBSIGTRAP\fP シグナルの場合、 \fIsi_code\fP には以下の値を指定できる:
+.RS 4
+.TP  15
+\fBTRAP_BRKPT\fP
+プロセスのブレークポイント
+.TP 
+\fBTRAP_TRACE\fP
+プロセスのトレース・トラップ
+.TP 
+\fBTRAP_BRANCH\fP (Linux 2.4 以降)
+process taken branch trap
+.TP 
+\fBTRAP_HWBKPT\fP (Linux 2.4 以降)
+hardware breakpoint/watchpoint
+.RE
+.PP
+\fBSIGCHLD\fP シグナルの場合、 \fIsi_code\fP には以下の値を指定できる:
+.RS 4
+.TP  15
+\fBCLD_EXITED\fP
+子プロセスが終了した (exited)
+.TP 
+\fBCLD_KILLED\fP
+子プロセスが kill された
+.TP 
+\fBCLD_DUMPED\fP
+子プロセスが異常終了した
+.TP 
+\fBCLD_TRAPPED\fP
+トレース対象の子プロセスがトラップを上げた
+.TP 
+\fBCLD_STOPPED\fP
+子プロセスが停止 (stop) した
+.TP 
+\fBCLD_CONTINUED\fP
+停止していた子プロセスが再開した (Linux 2.6.9 以降)
+.RE
+.PP
+\fBSIGIO\fP/\fBSIGPOLL\fP シグナルの場合、 \fIsi_code\fP には以下の値を
+指定できる:
+.RS 4
+.TP  15
+\fBPOLL_IN\fP
+入力データが利用可能
+.TP 
+\fBPOLL_OUT\fP
+出力バッファが利用可能
+.TP 
+\fBPOLL_MSG\fP
+入力メッセージが利用可能
+.TP 
+\fBPOLL_ERR\fP
+I/O エラー
+.TP 
+\fBPOLL_PRI\fP
+高優先の入力が利用可能
+.TP 
+\fBPOLL_HUP\fP
+デバイスが接続されていない
+.RE
+.SH 返り値
+\fBsigaction\fP()  は成功すれば 0 を返し、エラーならば \-1 を返す。
+.SH エラー
+.TP 
+\fBEFAULT\fP
+\fIact\fP か \fIoldact\fP が指しているメモリが正しいプロセスのアドレス空間にない。
+.TP 
+\fBEINVAL\fP
+無効なシグナルが指定された。補足 (catch) したり無視したりできない シグナルである \fBSIGKILL\fP や \fBSIGSTOP\fP
+に対する動作を変更しようとした場合にも発生する。
+.SH 準拠
+.\" SVr4 does not document the EINTR condition.
+POSIX.1\-2001, SVr4.
+.SH 注意
+\fBfork\fP(2) 経由で作成された子プロセスは、親プロセスのシグナルの処理方法の コピーを継承する。
+\fBexecve\fP(2) の前後で、ハンドラが設定されているシグナルの処理方法はデフォルトにリセットされ、
+無視が設定されているシグナルの処理方法は変更されずそのままとなる。
+
+POSIX では、 \fBkill\fP(2)  や \fBraise\fP(3)  で生成できないシグナル \fBSIGFPE\fP, \fBSIGILL\fP,
+\fBSIGSEGV\fP を無視 (ignore) した場合、その後の動作は未定義である。 ゼロによる整数割り算の結果は未定義となる。
+アーキテクチャーによっては、このとき \fBSIGFPE\fP シグナルが生成される。 (同様に負の最大整数を \-1 で割ると \fBSIGFPE\fP
+が生成されるかもしれない)  このシグナルを無視すると無限ループに陥るかもしれない。
+.PP
+POSIX.1\-1990 では \fBSIGCHLD\fP に \fBSIG_IGN\fP を設定することを認めていない。 POSIX.1\-2001
+では認められており、 \fBSIGCHLD\fP を無視することでゾンビプロセスの生成を防止することができる (\fBwait\fP(2)  を参照)。
+さらに、BSD と SystemV では \fBSIGCHLD\fP を無視した際の動作が異なっている。
+そのため、完全に移植性がある方法で、終了した子プロセスがゾンビにならないこと を保証するには、 \fBSIGCHLD\fP シグナルを補足し、
+\fBwait\fP(2)  などを実行するしかない。
+.PP
+POSIX.1\-1990 の仕様では \fBSA_NOCLDSTOP\fP のみが定義されている。
+POSIX.1\-2001 では \fBSA_NOCLDWAIT\fP, \fBSA_RESETHAND\fP, \fBSA_NODEFER\fP,
+\fBSA_SIGINFO\fP が追加された。 UNIX の古い実装で動かすアプリケーションで、
+他の \fIsa_flags\fP フラグを使用すると移植性が下がる。
+.PP
+\fBSA_RESETHAND\fP フラグは SVr4 の同じ名前のフラグと互換性がある。
+.PP
+\fBSA_NODEFER\fP フラグは 1.3.9 以降のカーネルでは同じ名前の SVr4 のフラグと互換性がある。 ぞれ以前の Linux
+カーネルの実装では、このフラグを設定しているシグナル だけでなく、どのシグナルでも受けることを許していた (実際には \fIsa_mask\fP
+の設定により無効にできる)。
+.PP
+\fBsigaction\fP()  の二番目の引き数に NULL を指定して呼び出すと、現在のシグナルハンドラを確認する
+ことができる。また、二番目と三番目の引き数を NULL にて呼び出すことで、 指定されたシグナルが現在のマシンで使えるかどうかチェックできる。
+.PP
+\fBSIGKILL\fP や \fBSIGSTOP\fP を (\fIsa_mask\fP に指定して) 禁止することはできない。 禁止しようとしても黙って無視される。
+.PP
+シグナル集合の操作に関する詳細は \fBsigsetops\fP(3)  を参照のこと。
+.PP
+シグナルハンドラ内から安全に呼び出すことができる、 async\-signal\-safe functions (非同期シングルで安全な関数) の
+リストについては \fBsignal\fP(7)  を参照。
+.SS 非公式
+\fBSA_SIGINFO\fP が導入される前は、 \fIstruct sigcontext\fP 型の二番目の引き数と一緒に \fIsa_handler\fP
+を使用することで、 いくつかの追加の情報を入手することができた。 詳細については Linux カーネルソースの関連部分を見てほしい。
+現在はこの使用法は廃止されている。
+.SH バグ
+2.6.13 以前のカーネルでは、 \fIsa_flags\fP に \fBSA_NODEFER\fP を指定した場合、
+ハンドラが実行中に配送されたシグナル自身がマスクされなくなるだけでなく、 \fIsa_mask\fP に指定されたシグナルもマスクされなくなる。
+このバグは、カーネル 2.6.14 で修正された。
+.SH 例
+\fBmprotect\fP(2)  参照。
+.SH 関連項目
+\fBkill\fP(1), \fBkill\fP(2), \fBkillpg\fP(2), \fBpause\fP(2), \fBsigaltstack\fP(2),
+\fBsignal\fP(2), \fBsignalfd\fP(2), \fBsigpending\fP(2), \fBsigprocmask\fP(2),
+\fBsigsuspend\fP(2), \fBwait\fP(2), \fBraise\fP(3), \fBsiginterrupt\fP(3),
+\fBsigqueue\fP(3), \fBsigsetops\fP(3), \fBsigvec\fP(3), \fBcore\fP(5),
+\fBsignal\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index f4f281c..04f897a 100644 (file)
@@ -167,6 +167,6 @@ if (sigaltstack(&ss, NULL) == \-1)
 \fBexecve\fP(2), \fBsetrlimit\fP(2), \fBsigaction\fP(2), \fBsiglongjmp\fP(3),
 \fBsigsetjmp\fP(3), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/signal.2 b/manual/LDP_man-pages/draft/man2/signal.2
new file mode 100644 (file)
index 0000000..1f6fb0f
--- /dev/null
@@ -0,0 +1,164 @@
+.\" Copyright (c) 2000 Andries Brouwer <aeb@cwi.nl>
+.\" and Copyright (c) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
+.\" and Copyright (c) 2008, Linux Foundation, written by Michael Kerrisk
+.\"      <mtk.manpages@gmail.com>
+.\" based on work by Rik Faith <faith@cs.unc.edu>
+.\" and Mike Battersby <mike@starbug.apana.org.au>.
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified 2004-11-19, mtk:
+.\" added pointer to sigaction.2 for details of ignoring SIGCHLD
+.\" 2007-06-03, mtk: strengthened portability warning, and rewrote
+.\"     various sections.
+.\" 2008-07-11, mtk: rewrote and expanded portability discussion.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SIGNAL 2 2013\-02\-09 Linux "Linux Programmer's Manual"
+.SH 名前
+signal \- ANSI C シグナル操作
+.SH 書式
+\fB#include <signal.h>\fP
+.sp
+\fBtypedef void (*sighandler_t)(int);\fP
+.sp
+\fBsighandler_t signal(int \fP\fIsignum\fP\fB, sighandler_t \fP\fIsighandler\fP\fB);\fP
+.SH 説明
+\fBsignal\fP()  の動作は UNIX のバージョンにより異なる。 また、歴史的に見て Linux のバージョンによっても異なっている。
+\fBこのシステムコールの使用は避け、\fP 代わりに \fBsigaction\fP(2)  を使用すること。 下記の「移植性」を参照。
+
+\fBsignal\fP()  はシグナル \fIsignum\fP の処理方法を \fIhandler\fP に設定する。 \fIhandler\fP には、
+\fBSIG_IGN\fP、 \fBSIG_DFL\fP、 プログラマが定義した関数 (「シグナル・ハンドラ」) のアドレスの いずれかを指定する。
+
+シグナル \fIsignum\fP がプロセスに配送されると、以下のいずれかが発生する。
+.TP  3
+*
+処理方法が \fBSIG_IGN\fP に設定されている場合、そのシグナルは無視される。
+.TP 
+*
+処理方法が \fBSIG_DFL\fP に設定されている場合、シグナルに関連づけられた デフォルトの動作が行われる (\fBsignal\fP(7)  参照)。
+.TP 
+*
+処理方法として関数が設定されている場合、 まず最初に処理方法が \fBSIG_DFL\fP にリセットされるかそのシグナルのブロックが実行された後、
+\fIsignum\fP を引き数として \fIhandler\fP が呼び出される。 ハンドラが起動される際にシグナルがブロックされた場合、
+ハンドラが返る際にそのシグナルのブロックが解除される。
+.PP
+シグナル \fBSIGKILL\fP と \fBSIGSTOP\fP は捕捉できず、無視することもできない。
+.SH 返り値
+\fBsignal\fP()  は、今までのシグナル・ハンドラの値を返す。エラーの場合は \fBSIG_ERR\fP を返す。
+.SH エラー
+.TP 
+\fBEINVAL\fP
+\fIsignum\fP が不正である。
+.SH 準拠
+C89, C99, POSIX.1\-2001.
+.SH 注意
+マルチスレッドプロセスにおける \fBsignal\fP()  の結果は、指定されていない。
+.PP
+POSIX では、 \fBkill\fP(2)  や \fBraise\fP(3)  で生成できないシグナル \fBSIGFPE\fP, \fBSIGILL\fP,
+\fBSIGSEGV\fP を無視 (ignore) した場合、その後の動作は未定義である。 ゼロによる整数割り算の結果は未定義となる。
+アーキテクチャーによっては、このとき \fBSIGFPE\fP シグナルが生成される。 (同様に負の最大整数を \-1 で割ると \fBSIGFPE\fP
+が生成されるかもしれない)  このシグナルを無視すると無限ループに陥るかもしれない。
+.PP
+\fBSIGCHLD\fP の動作として \fBSIG_IGN\fP を設定した場合の詳細な動作については、 \fBsigaction\fP(2)  を参照すること。
+.PP
+シグナル・ハンドラ内から安全に呼び出すことができる、 async\-signal\-safe functions (非同期シングルで安全な関数) の
+リストについては \fBsignal\fP(7)  を参照。
+.PP
+.\" libc4 and libc5 define
+.\" .IR SignalHandler ;
+\fIsighandler_t\fP の使用は GNU 拡張であり、 \fB_GNU_SOURCE\fP が定義された
+場合に公開される。glibc では \fB_BSD_SOURCE\fP が定義された場合には (BSD
+由来の) \fIsig_t\fP も定義される。このような型を使用しないと、
+\fBsignal\fP() の宣言は読みにくいものとなる。
+.in +4n
+.nf
+
+\fBvoid ( *\fP\fIsignal\fP\fB(int \fP\fIsignum\fP\fB, void (*\fP\fIhandler\fP\fB)(int)) ) (int);\fP
+.fi
+.in
+.SS 移植性
+移植性のある \fBsignal\fP()  の使い方は、シグナルの処理方法を \fBSIG_DFL\fP か \fBSIG_IGN\fP に設定する方法だけである。
+シグナル・ハンドラを設定するのに \fBsignal\fP()  を使ったときの動作はシステムにより異なる (POSIX.1
+は明示的にこの違いを認めている)。 \fB移植性が必要なときはこのシステムコールを使用しないこと。\fP
+
+POSIX.1 は、 \fBsigaction\fP(2)  を規定することで移植性に関する混乱を解決した。 \fBsigaction\fP(2)
+はシグナル・ハンドラが起動される際の挙動を明示的に制御できる。 \fBsignal\fP()  の代わりにこのインターフェイスを使うこと。
+
+オリジナルの UNIX システムでは、 \fBsignal\fP()  を使って設定されたハンドラがシグナルの配送により起動されると、
+そのシグナルの処理方法は \fBSIG_DFL\fP にリセットされ、システムは同じシグナルがさらに生成されても
+シグナルの配送をブロックしなかった。これは、以下のフラグで \fBsigaction\fP(2) を呼び出すのと等価である。
+
+    sa.sa_flags = SA_RESETHAND | SA_NODEFER;
+
+System V でも、 \fBsignal\fP()  に対してこれらの挙動を規定している。 こうした挙動はまずく、ハンドラがハンドラ自身を再設定する機会が
+来るより前に、同じシグナルがまた配送される可能性がある。 さらに、同じシグナルが立て続けに配送されると、同じシグナルが
+ハンドラを繰り返し起動されることになる。
+
+BSD improved on this situation, but unfortunately also changed the semantics
+of the existing \fBsignal\fP()  interface while doing so.  On BSD, when a
+signal handler is invoked, the signal disposition is not reset, and further
+instances of the signal are blocked from being delivered while the handler
+is executing.  Furthermore, certain blocking system calls are automatically
+restarted if interrupted by a signal handler (see \fBsignal\fP(7)).  The BSD
+semantics are equivalent to calling \fBsigaction\fP(2)  with the following
+flags:
+
+    sa.sa_flags = SA_RESTART;
+
+Linux での状況は以下の通りである。
+.IP * 2
+カーネルの \fBsignal\fP()  システムコールは System V 方式を提供している。
+.IP *
+デフォルトでは、glibc 2 以降では、 \fBsignal\fP()  ラッパー関数はカーネルのシステムコールを起動しない。 代わりに、ラッパー関数は
+BSD 方式を示すフラグを使って \fBsigaction\fP(2)  を呼び出す。 機能検査マクロ \fB_BSD_SOURCE\fP
+を定義していれば、このデフォルトの動作となる。 デフォルトでは、 \fB_BSD_SOURCE\fP が定義される。 \fB_BSD_SOURCE\fP は
+\fB_GNU_SOURCE\fP が定義された場合には暗黙のうちに定義され、 もちろん明示的に定義することもできる。
+.sp
+.\"
+.\" System V semantics are also provided if one uses the separate
+.\" .BR sysv_signal (3)
+.\" function.
+glibc 2 以降では、機能検査マクロ \fB_BSD_SOURCE\fP が定義されていなければ、 \fBsignal\fP()  は System V
+方式となる。 (\fBgcc\fP(1)  が標準指定モード (\fI\-std=xxx\fP or \fI\-ansi\fP)  で起動された場合、もしくは
+\fB_POSIX_SOURCE\fP, \fB_XOPEN_SOURCE\fP, \fB_SVID_SOURCE\fP
+といった他の様々な機能検査マクロが定義された場合、 デフォルトの \fB_BSD_SOURCE\fP の暗黙の定義は行われない。
+\fBfeature_test_macros\fP(7)  を参照のこと。)
+.IP *
+Linux の libc4 と libc5 の \fBsignal\fP()  関数は System V 方式である。 libc5 システムにおいて
+\fI<signal.h>\fP のかわりに \fI<bsd/signal.h>\fP をインクルードすると、
+\fBsignal\fP()  は \fB__bsd_signal\fP()  に再定義され、 \fBsignal\fP()  は BSD 方式となる。
+.SH 関連項目
+\fBkill\fP(1), \fBalarm\fP(2), \fBkill\fP(2), \fBkillpg\fP(2), \fBpause\fP(2),
+\fBsigaction\fP(2), \fBsignalfd\fP(2), \fBsigpending\fP(2), \fBsigprocmask\fP(2),
+\fBsigsuspend\fP(2), \fBbsd_signal\fP(3), \fBraise\fP(3), \fBsiginterrupt\fP(3),
+\fBsigqueue\fP(3), \fBsigsetops\fP(3), \fBsigvec\fP(3), \fBsysv_signal\fP(3),
+\fBsignal\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 068c7a4..569fef7 100644 (file)
@@ -263,6 +263,6 @@ main(int argc, char *argv[])
 \fBsigprocmask\fP(2), \fBsigwaitinfo\fP(2), \fBtimerfd_create\fP(2), \fBsigsetops\fP(3),
 \fBsigwait\fP(3), \fBepoll\fP(7), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c95e2b9..c0541a6 100644 (file)
@@ -74,6 +74,6 @@ POSIX.1\-2001.
 \fBkill\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBsigprocmask\fP(2),
 \fBsigsuspend\fP(2), \fBsigsetops\fP(3), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index d6334d1..decc29a 100644 (file)
@@ -99,6 +99,6 @@ POSIX.1\-2001.
 \fBsigsuspend\fP(2), \fBpthread_sigmask\fP(3), \fBsigqueue\fP(3), \fBsigsetops\fP(3),
 \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9bf45eb..b1cb0fc 100644 (file)
@@ -58,6 +58,6 @@ Linux カーネルは、 シグナル・ハンドラ用にスタック・フレ
 .SH 関連項目
 \fBkill\fP(2), \fBsigaltstack\fP(2), \fBsignal\fP(2), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 69fc53d..a021dbe 100644 (file)
@@ -81,6 +81,6 @@ POSIX.1\-2001.
 \fBkill\fP(2), \fBpause\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBsigprocmask\fP(2),
 \fBsigwaitinfo\fP(2), \fBsigsetops\fP(3), \fBsigwait\fP(3), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/sigwaitinfo.2 b/manual/LDP_man-pages/draft/man2/sigwaitinfo.2
new file mode 100644 (file)
index 0000000..37cbe60
--- /dev/null
@@ -0,0 +1,121 @@
+.\" Copyright (c) 2002 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SIGWAITINFO 2 2012\-07\-21 Linux "Linux Programmer's Manual"
+.SH 名前
+sigwaitinfo, sigtimedwait \- キューに入れられたシグナルを同期して待つ
+.SH 書式
+.nf
+\fB#include <signal.h>\fP
+.sp
+\fBint sigwaitinfo(const sigset_t *\fP\fIset\fP\fB, siginfo_t *\fP\fIinfo\fP\fB);\fP
+.sp
+\fBint sigtimedwait(const sigset_t *\fP\fIset\fP\fB, siginfo_t *\fP\fIinfo\fP\fB, \fP
+\fB                 const struct timespec *\fP\fItimeout\fP\fB);\fP
+.fi
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBsigwaitinfo\fP(), \fBsigtimedwait\fP(): _POSIX_C_SOURCE\ >=\ 199309L
+.SH 説明
+\fBsigwaitinfo\fP()  は \fIset\fP のうちのどれかのシグナルが処理待ちになるまで、 呼び出しスレッドの実行を一時停止する
+(呼び出しスレッドに対して \fIset\fP のうちのどれかのシグナルが既に待機中 (pending) である場合、 \fBsigwaitinfo\fP()
+はすぐに戻る)。
+
+\fBsigwaitinfo\fP()  はそのシグナルを待機中のシグナルの集合から削除し、関数の結果としてシグナル番号を返す。 \fIinfo\fP 引き数が
+NULL でない場合、配送されたシグナルの情報が入った \fIsiginfo_t\fP 型 (\fBsigaction\fP(2)  を参照) の構造体を
+\fIinfo\fP が指すバッファに入れて返す。
+.PP
+If multiple signals in \fIset\fP are pending for the caller, the signal that is
+retrieved by \fBsigwaitinfo\fP()  is determined according to the usual ordering
+rules; see \fBsignal\fP(7)  for further details.
+.PP
+\fBsigtimedwait\fP() は、 \fBsigwaitinfo\fP() と次の点を除いて全く同じように
+動作する。この関数にはもう 1 つの引き数 \fItimeout\fP があり、シグナル待ち
+でスレッドが一時停止する最小時間を指定することができる(この時間はシステ
+ムクロックの粒度に切り上げられ、カーネルのスケジューリング遅延により
+少しだけ長くなる可能性がある)。この引き数の型は以下のとおりである:
+.sp
+.in +4n
+.nf
+struct timespec {
+    long    tv_sec;         /* 秒 */
+    long    tv_nsec;        /* ナノ秒 */
+}
+.fi
+.in
+.sp
+この構造体の 2 つのフィールドがともに 0 の場合、ポーリングが行われる: \fBsigtimedwait\fP()  は、呼び出し側プロセスに対して
+待機しているシグナルの情報を返して戻るか、 \fIset\fP のうちのどのシグナルも待機していない場合はエラーを返して戻る。
+.SH 返り値
+成功した場合、 \fBsigwaitinfo\fP()  と \fBsigtimedwait\fP()  はシグナル番号 (すなわち 0 より大きい数) を返す。
+失敗した場合、2 つの関数は \-1 を返し、 \fIerrno\fP はエラーを表す値に設定される。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+\fIset\fP のうちのどのシグナルも \fBsigtimedwait\fP()  に指定された \fItimeout\fP の期間内に処理待ちにならなかった。
+.TP 
+\fBEINTR\fP
+シグナル待ちがシグナルハンドラによって中断 (interrupt) された (このハンドラは \fIset\fP にあるシグナル以外のものである)。
+\fBsignal\fP(7)  参照。
+.TP 
+\fBEINVAL\fP
+\fItimeout\fP が不正である。
+.SH 準拠
+POSIX.1\-2001.
+.SH 注意
+通常の使用法では、呼び出し側プロセスはこれらの関数より先に \fBsigprocmask\fP(2)  の呼び出すことにより \fIset\fP
+に含まれるシグナルをブロックし (そのためにこれらのシグナルがこの後に続く \fBsigwaitinfo\fP()  や \fBsigtimedwait\fP()
+の呼び出しの間に処理待ちになった場合には、デフォルトの動作は行われず)、 これらのシグナルに対するハンドラは設定しない。 マルチスレッドプログラムでは、
+\fBsigwaitinfo\fP()  や \fBsigtimedwait\fP()
+を呼び出したスレッド以外のスレッドで、そのシグナルがデフォルトの動作に基いて処理されないように、全てのスレッドで該当シグナルをブロックすべきである。
+
+指定されたスレッドに対する処理待ちのシグナルの集合は、 そのスレッド自体宛ての処理待ちのシグナル集合と、プロセス全体宛ての
+処理待ちのシグナル集合をあわせたものである (\fBsignal\fP(7)  参照)。
+
+\fBSIGKILL\fP と \fBSIGSTOP\fP を待とうとした場合、黙って無視される。
+
+一つのプロセス内の複数のスレッドが \fBsigwaitinfo\fP()  や \fBsigtimedwait\fP()  で同じシグナルを待って停止した場合、
+プロセス全体宛てのシグナルが処理待ちになると、複数のスレッドのうち一つだけが 実際にそのシグナルを受信することになる。
+どのスレッドがシグナルを受信するかは決まっていない。
+
+POSIX では \fBsigtimedwait\fP()  の引き数 \fItimeout\fP の値を NULL にした場合の意味を未定義としている。
+\fBsigwaitinfo\fP()  を呼び出したのと同じ意味としてもよいことになっており、 実際 Linux ではこのように動作する。
+
+Linux では、 \fBsigwaitinfo\fP()  は \fBsigtimedwait\fP()  を用いて実装されたライブラリ関数である。
+.SH 関連項目
+\fBkill\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBsignalfd\fP(2), \fBsigpending\fP(2),
+\fBsigprocmask\fP(2), \fBsigqueue\fP(3), \fBsigsetops\fP(3), \fBsigwait\fP(3),
+\fBsignal\fP(7), \fBtime\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5c1600b..6c22d59 100644 (file)
@@ -256,6 +256,6 @@ POSIX.1\-2001 では \fI<sys/types.h>\fP のインクルードは必須とされ
 \(lqBSD Interprocess Communication Tutorial\(rq, (\fIUNIX Programmer's
 Supplementary Documents Volume 1.\fP として再版された)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a3f4515..4a9a233 100644 (file)
@@ -50,6 +50,6 @@ socketcall \- ソケット・システムコール
 \fBrecvfrom\fP(2), \fBrecvmsg\fP(2), \fBsend\fP(2), \fBsendmsg\fP(2), \fBsendto\fP(2),
 \fBsetsockopt\fP(2), \fBshutdown\fP(2), \fBsocket\fP(2), \fBsocketpair\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 3172d85..e9eb745 100644 (file)
@@ -98,6 +98,6 @@ POSIX.1\-2001 では \fI<sys/types.h>\fP のインクルードは必須とされ
 .SH 関連項目
 \fBpipe\fP(2), \fBread\fP(2), \fBsocket\fP(2), \fBwrite\fP(2), \fBsocket\fP(7), \fBunix\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 598eb6a..204d9fb 100644 (file)
@@ -143,6 +143,6 @@ splice \- パイプとの間でデータを継ぎ合わせる
 .SH 関連項目
 \fBsendfile\fP(2), \fBtee\fP(2), \fBvmsplice\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/spu_create.2 b/manual/LDP_man-pages/draft/man2/spu_create.2
new file mode 100644 (file)
index 0000000..9ee7573
--- /dev/null
@@ -0,0 +1,195 @@
+.\" Copyright (c) International Business Machines Corp., 2006
+.\"
+.\" %%%LICENSE_START(GPLv2+_SW_3_PARA)
+.\" This program is free software; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
+.\" the GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
+.\"
+.\" HISTORY:
+.\" 2005-09-28, created by Arnd Bergmann <arndb@de.ibm.com>
+.\" 2006-06-16, revised by Eduardo M. Fleury <efleury@br.ibm.com>
+.\" 2007-07-10, some polishing by mtk
+.\" 2007-09-28, updates for newer kernels by Jeremy Kerr <jk@ozlabs.org>
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SPU_CREATE 2 2012\-08\-05 Linux "Linux Programmer's Manual"
+.SH 名前
+spu_create \- 新しい SPU コンテキストを生成する
+.SH 書式
+.nf
+\fB#include <sys/types.h>\fP
+\fB#include <sys/spu.h>\fP
+
+\fBint spu_create(const char *\fP\fIpathname\fP\fB, int \fP\fIflags\fP\fB, mode_t \fP\fImode\fP\fB);\fP
+\fBint spu_create(const char *\fP\fIpathname\fP\fB, int \fP\fIflags\fP\fB, mode_t \fP\fImode\fP\fB,\fP
+\fB               int \fP\fIneighbor_fd\fP\fB);\fP
+.fi
+
+\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。
+.SH 説明
+\fBspu_create\fP() システムコールは、Cell Broadband Engine アーキテクチャ
+を実装した PowerPC マシンにおいて、Synergistic Processor Unit (SPU) に
+アクセスする ために使用される。 このシステムコールは、SPU に対する新し
+い論理コンテキストを \fIpathname\fP に生成し、そのコンテキストに関連付けら
+れたファイルディスクリプタを返す。 \fIpathname\fP は SPU ファイルシステム
+(\fBspufs\fP) のマウントポイント内の 存在しないディレクトリを指していなけ
+ればならない。 \fBspu_create\fP() が成功すると、 \fIpathname\fP にディレクト
+リが生成され、そのディレクトリに \fBspufs\fP(7) で説明されているファイル群
+が配置される。
+
+When a context is created, the returned file descriptor can only be passed
+to \fBspu_run\fP(2), used as the \fIdirfd\fP argument to the \fB*at\fP family of
+system calls (e.g., \fBopenat\fP(2)), or closed; other operations are not
+defined.  A logical SPU context is destroyed (along with all files created
+within the context's \fIpathname\fP directory) once the last reference to the
+context has gone; this usually occurs when the file descriptor returned by
+\fBspu_create\fP()  is closed.
+
+\fIflags\fP 引き数には 0 か以下の定数の組み合わせ (ビット単位の論理和)
+を指定できる。
+.TP 
+\fBSPU_CREATE_EVENTS_ENABLED\fP
+Rather than using signals for reporting DMA errors, use the \fIevent\fP
+argument to \fBspu_run\fP(2).
+.TP 
+\fBSPU_CREATE_GANG\fP
+Create an SPU gang instead of a context.  (A gang is a group of SPU contexts
+that are functionally related to each other and which share common
+scheduling parameters\(empriority and policy.  In the future, gang
+scheduling may be implemented causing the group to be switched in and out as
+a single unit.)
+
+A new directory will be created at the location specified by the \fIpathname\fP
+argument.  This gang may be used to hold other SPU contexts, by providing a
+pathname that is within the gang directory to further calls to
+\fBspu_create\fP().
+.TP 
+\fBSPU_CREATE_NOSCHED\fP
+Create a context that is not affected by the SPU scheduler.  Once the
+context is run, it will not be scheduled out until it is destroyed by the
+creating process.
+
+Because the context cannot be removed from the SPU, some functionality is
+disabled for \fBSPU_CREATE_NOSCHED\fP contexts.  Only a subset of the files
+will be available in this context directory in \fBspufs\fP.  Additionally,
+\fBSPU_CREATE_NOSCHED\fP contexts cannot dump a core file when crashing.
+
+Creating \fBSPU_CREATE_NOSCHED\fP contexts requires the \fBCAP_SYS_NICE\fP
+capability.
+.TP 
+\fBSPU_CREATE_ISOLATE\fP
+Create an isolated SPU context.  Isolated contexts are protected from some
+PPE (PowerPC Processing Element)  operations, such as access to the SPU
+local store and the NPC register.
+
+Creating \fBSPU_CREATE_ISOLATE\fP contexts also requires the
+\fBSPU_CREATE_NOSCHED\fP flag.
+.TP 
+\fBSPU_CREATE_AFFINITY_SPU\fP
+Create a context with affinity to another SPU context.  This affinity
+information is used within the SPU scheduling algorithm.  Using this flag
+requires that a file descriptor referring to the other SPU context be passed
+in the \fIneighbor_fd\fP argument.
+.TP 
+\fBSPU_CREATE_AFFINITY_MEM\fP
+Create a context with affinity to system memory.  This affinity information
+is used within the SPU scheduling algorithm.
+.PP
+The \fImode\fP argument (minus any bits set in the process's \fBumask\fP(2))
+specifies the permissions used for creating the new directory in \fBspufs\fP.
+See \fBstat\fP(2)  for a full list of the possible \fImode\fP values.
+.SH 返り値
+成功すると、 \fBspu_create\fP() は新しいファイルディスクリプタを返す。
+エラーの場合、\-1 を返し、 \fIerrno\fP に以下のリストに記載のエラーコードの
+いずれかを設定する。
+.SH エラー
+.TP 
+\fBEACCES\fP
+現在のユーザが \fBspufs\fP(7) のマウントポイントへの書き込み許可を持って
+いない。
+.TP 
+\fBEEXIST\fP
+指定されたパス名で SPU コンテキストがすでに生成されている。
+.TP 
+\fBEFAULT\fP
+\fIpathname\fP が呼び出し元のプロセスのアドレス空間で有効な文字列ポインタ
+ではない。
+.TP 
+\fBEINVAL\fP
+\fIpathname\fP が SPUFS マウントポインタ内のディレクトリではない。
+または、無効なフラグが指定された。
+.TP 
+\fBELOOP\fP
+\fIpathname\fP を解決するまでに辿ったシンボリックリンクが多過ぎた。
+.TP 
+\fBEMFILE\fP
+そのプロセスがオープンできるファイル数の上限に達していた。
+.TP 
+\fBENAMETOOLONG\fP
+\fIpathname\fP が長過ぎる。
+.TP 
+\fBENFILE\fP
+システム全体でオープンできるファイル数の上限に達していた。
+.TP 
+\fBENODEV\fP
+An isolated context was requested, but the hardware does not support SPU
+isolation.
+.TP 
+\fBENOENT\fP
+\fIpathname\fP の一部が解決できなかった。
+.TP 
+\fBENOMEM\fP
+カーネルが必要なリソースの全てを割り当てることができなかった。
+.TP 
+\fBENOSPC\fP
+新しいコンテキストを生成するのに十分な SPU リソースがなかった、
+または SPU コンテキスト数がそのユーザの特定の上限に達していた。
+.TP 
+\fBENOSYS\fP
+機能が動作中のシステムで提供されていない。理由は、 ハードウェアで SPU が提供されていないか、 spufs
+モジュールがロードされていないか、のどちらかである。
+.TP 
+\fBENOTDIR\fP
+\fIpathname\fP の一部がディレクトリではない。
+.TP 
+\fBEPERM\fP
+The \fISPU_CREATE_NOSCHED\fP flag has been given, but the user does not have
+the \fBCAP_SYS_NICE\fP capability.
+.SH ファイル
+\fIpathname\fP は \fBspufs\fP のマウントポイントの配下の場所を指して
+いなければならない。 慣例では \fI/spu\fP にマウントされる。
+.SH バージョン
+\fBspu_create\fP() システムコールはカーネル 2.6.16 で Linux に追加された。
+.SH 準拠
+このシステムコールは Linux 固有であり、 PowerPC アーキテクチャでのみ
+実装されている。 このシステムコールを使ったプログラムは移植性がない。
+.SH 注意
+glibc はこのシステムコールに対するラッパー関数を提供していない。 \fBsyscall\fP(2)  を使うこと。ただし、
+\fBspu_create\fP()  は より抽象度の高い SPU へのインタフェースを実装するライブラリから
+利用されることを意図したものであり、通常のアプリケーションから 使用は意図されていない。推奨のライブラリについては
+.UR http://www.bsc.es\:/projects\:/deepcomputing\:/linuxoncell/
+.UE
+を参照のこと。
+.SH 例
+See \fBspu_run\fP(2)  for an example of the use of \fBspu_create\fP()
+.SH 関連項目
+\fBclose\fP(2), \fBspu_run\fP(2), \fBcapabilities\fP(7), \fBspufs\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1f95dca..e79f152 100644 (file)
@@ -191,6 +191,6 @@ int main(void)
 .SH 関連項目
 \fBclose\fP(2), \fBspu_create\fP(2), \fBcapabilities\fP(7), \fBspufs\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ca0189c..90d7b2f 100644 (file)
@@ -459,6 +459,6 @@ main(int argc, char *argv[])
 \fBaccess\fP(2), \fBchmod\fP(2), \fBchown\fP(2), \fBfstatat\fP(2), \fBreadlink\fP(2),
 \fButime\fP(2), \fBcapabilities\fP(7), \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index aa145e3..bc1f0bc 100644 (file)
@@ -196,6 +196,6 @@ statfs\fP を返す (\fI<sys/vfs.h>\fP で定義されている)。 この構造
 .SH 関連項目
 \fBstat\fP(2), \fBstatvfs\fP(2), \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2bfd7f0..85f51fd 100644 (file)
@@ -63,6 +63,6 @@ SVr4.
 .SH 関連項目
 \fBdate\fP(1), \fBsettimeofday\fP(2), \fBcapabilities\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 351ea7b..54fe274 100644 (file)
@@ -128,6 +128,6 @@ path のファイルが有効なスワップの署名 (signature) を 含んで
 .SH 関連項目
 \fBmkswap\fP(8), \fBswapoff\fP(8), \fBswapon\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/symlink.2 b/manual/LDP_man-pages/draft/man2/symlink.2
new file mode 100644 (file)
index 0000000..4997097
--- /dev/null
@@ -0,0 +1,135 @@
+.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
+.\"             and Copyright (C) 1993 Michael Haardt, Ian Jackson.
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified 1993-07-24 by Rik Faith
+.\" Modified 1996-04-26 by Nick Duffek <nsd@bbc.com>
+.\" Modified 1996-11-06 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SYMLINK 2 2013\-01\-27 Linux "Linux Programmer's Manual"
+.SH 名前
+symlink \- ファイルに新しい名前を付ける
+.SH 書式
+\fB#include <unistd.h>\fP
+.sp
+\fBint symlink(const char *\fP\fIoldpath\fP\fB, const char *\fP\fInewpath\fP\fB);\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+.ad l
+\fBsymlink\fP():
+.RS 4
+_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _POSIX_C_SOURCE\ >=\ 200112L
+.RE
+.ad b
+.SH 説明
+\fBsymlink\fP()  は \fIoldpath\fP という文字列をファイルの内容として持つ \fInewpath\fP というシンボリックリンク
+(symbolic link) を作成する。
+
+シンボリックリンクは実行時に解釈され、 リンクの内容でパスを置き換えて、そのパスを辿ることで、 ファイルやディレクトリに到達する。
+
+シンボリックリンクはパスの部分に \fI..\fP を含むかもしれない。これは (もしリンクの最初に使用された場合は) リンクの
+存在するディレクトリの親ディレクトリが参照される。
+
+シンボリックリンクは (ソフトリンク (soft link) とも呼ばれ)  存在するファイルを指しているかもしれないし、
+存在しないファイルを指しているかもしれない; 後者の場合は壊れたリンク (dangling link) とも呼ばれる。
+
+シンボリックリンクの許可 (permission) は無意味である; リンクを追跡する場合には所有権 (ownership) は無視される。
+ただし、リンクの削除や名前の変更が要求され、かつリンクが存在する ディレクトリにスティッキービット (sticky bit)  (\fBS_ISVTX\fP)
+が設定されている場合には、所有権のチェックが行われる。
+
+\fInewpath\fP が存在する場合には上書きは\fIされない\fP。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEACCES\fP
+\fInewpath\fP を含んでいるディレクトリへの書き込みが拒否されたか、 \fInewpath\fP
+に含まれているディレクトリのどれかに検索許可が与えられていない (\fBpath_resolution\fP(7)  も参照すること)。
+.TP 
+\fBEDQUOT\fP
+The user's quota of resources on the file system has been exhausted.  The
+resources could be inodes or disk blocks, depending on the file system
+implementation.
+.TP 
+\fBEEXIST\fP
+\fInewpath\fP が既に存在する。
+.TP 
+\fBEFAULT\fP
+\fIoldpath\fP や \fInewpath\fP がアクセス可能なアドレス空間の外を指している。
+.TP 
+\fBEIO\fP
+I/O エラーが発生した。
+.TP 
+\fBELOOP\fP
+\fInewpath\fP を解決する際に遭遇したシンボリックリンクが多過ぎる。
+.TP 
+\fBENAMETOOLONG\fP
+\fIoldpath\fP または \fInewpath\fP が長過ぎる。
+.TP 
+\fBENOENT\fP
+\fInewpath\fP に含まれるディレクトリ部分が存在しないか、壊れたリンクであるか、 \fIoldpath\fP が空文字列である。
+.TP 
+\fBENOMEM\fP
+十分なカーネルメモリーがない。
+.TP 
+\fBENOSPC\fP
+そのファイルを含んでいるデバイスに新しいディレクトリエントリを 作成するための空きがない。
+.TP 
+\fBENOTDIR\fP
+\fInewpath\fP に含まれるディレクトリ部分が、実際には、ディレクトリではない。
+.TP 
+\fBEPERM\fP
+\fInewpath\fP を含んでいるファイルシステム (file system) が シンボリックリンクの作成をサポートしていない。
+.TP 
+\fBEROFS\fP
+\fInewpath\fP が読み込み専用のファイルシステムに存在している。
+.SH 準拠
+.\" SVr4 documents additional error codes EDQUOT and ENOSYS.
+.\" See
+.\" .BR open (2)
+.\" re multiple files with the same name, and NFS.
+SVr4, 4.3BSD, POSIX.1\-2001.
+.SH 注意
+\fIoldpath\fP についてのチェックは行なわれない。
+
+symlink によって参照される名前を削除すると (それが他にハードリンク (hard link) を持たなければ) 実際にファイルが削除される。
+この動作が望んだものでない場合は、 \fBlink\fP(2)  を使用すること。
+.SH 関連項目
+\fBln\fP(1), \fBlchown\fP(2), \fBlink\fP(2), \fBlstat\fP(2), \fBopen\fP(2), \fBreadlink\fP(2),
+\fBrename\fP(2), \fBsymlinkat\fP(2), \fBunlink\fP(2), \fBpath_resolution\fP(7),
+\fBsymlink\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index e9e4f76..22c6082 100644 (file)
@@ -88,6 +88,6 @@ POSIX.1\-2008.
 .SH 関連項目
 \fBopenat\fP(2), \fBsymlink\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0a702a0..04840ec 100644 (file)
@@ -104,6 +104,6 @@ libc4, libc5 と、2.2.1 までの glibc ではプロトタイプは "int sync(v
 .SH 関連項目
 \fBbdflush\fP(2), \fBfdatasync\fP(2), \fBfsync\fP(2), \fBsync\fP(8), \fBupdate\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9cb9482..0ffbf57 100644 (file)
@@ -32,7 +32,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH SYNC_FILE_RANGE 2 2010\-10\-09 Linux "Linux Programmer's Manual"
+.TH SYNC_FILE_RANGE 2 2013\-04\-01 Linux "Linux Programmer's Manual"
 .SH 名前
 sync_file_range \- ファイルセグメントをディスクと同期する
 .SH 書式
@@ -125,13 +125,12 @@ I/O エラー。
 このシステムコールは Linux 独自であり、 移植性が必要なプログラムでは使用を避けるべきである。
 .SH 注意
 .\" See kernel commit edd5cd4a9424f22b0fa08bef5e299d41befd5622
-いくつかのアーキテクチャ (例えば、 PowerPC や ARM) では、 64 ビットの
-引き数は適切なレジスタの組に割り当てる必要がある。このようなアーキテク
-チャでは、 \fBsync_file_range\fP() の呼び出し方には欠陥があり、それはこの
-システムコールでは引き数 \fIfd\fP と \fIoffset\fP の間のパディング (詰めもの)
-でレジスタが一つ消費されてしまうというものである。そのため、これらの
-アーキテクチャでは引き数が適切な順序になった別のシステムコールが定義
-されている。
+Some architectures (e.g., PowerPC, ARM)  need 64\-bit arguments to be aligned
+in a suitable pair of registers.  On such architectures, the call signature
+of \fBsync_file_range\fP()  shown in the SYNOPSIS would force a register to be
+wasted as padding between the \fIfd\fP and \fIoffset\fP arguments.  (See
+\fBsyscall\fP(2)  for details.)  Therefore, these architectures define a
+different system call that orders the arguments suitably:
 .PP
 .in +4n
 .nf
@@ -154,6 +153,6 @@ glibc のラッパー関数は \fBsync_file_range\fP() という名前で
 .SH 関連項目
 \fBfdatasync\fP(2), \fBfsync\fP(2), \fBmsync\fP(2), \fBsync\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/syscalls.2 b/manual/LDP_man-pages/draft/man2/syscalls.2
new file mode 100644 (file)
index 0000000..049a769
--- /dev/null
@@ -0,0 +1,684 @@
+.\" Copyright (C) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
+.\" with some input from Stepan Kasal <kasal@ucw.cz>
+.\"
+.\" Some content retained from an earlier version of this page:
+.\" Copyright (C) 1998 Andries Brouwer (aeb@cwi.nl)
+.\" Modifications for 2.2 and 2.4 Copyright (C) 2002 Ian Redfern
+.\" <redferni@logica.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SYSCALLS 2 2013\-04\-17 Linux "Linux Programmer's Manual"
+.SH 名前
+syscalls \- Linux のシステムコール
+.SH 書式
+Linux のシステムコール。
+.SH 説明
+システムコールは、アプリケーションと Linux カーネルとの間の 基本的なインタフェースである。
+.SS システムコールとライブラリのラッパー関数
+システムコールは一般には直接起動されず、 glibc (や他の何らかのライブラリ)  経由で起動される。 システムコールの直接起動については、詳細は
+\fBintro\fP(2)  を参照のこと。 いつもという訳ではないが、普通は、ラッパー関数の名前はその関数が起動する システムコールの名前と同じである。
+例えば、glibc には \fBtruncate\fP()  という関数があり、この関数は "truncate" システムコールを起動する。
+
+たいていの場合、glibc のラッパー関数はかなり簡単なもので、 システムコールを起動する前に引き数を適切なレジスタにコピーし、
+システムコールが返った後は \fIerrno\fP を適切に設定する以外は、ほとんど処理を行わない (これらは、ラッパー関数が提供されていない場合に
+システムコールを起動するのに使用する \fBsyscall\fP(2)  により実行される処理と同じである)。 [注意]
+システムコールは失敗を示すのに負のエラー番号を呼び出し元に返す。 失敗が起こった際には、ラッパー関数は返されたエラー番号を反転して
+(正の値に変換し)、それを \fIerrno\fP にコピーし、ラッパー関数の呼び出し元に \-1 を返す。
+
+しかしながら、時には、ラッパー関数がシステムコールを起動する前に 何らかの追加の処理を行う場合がある。 例えば、現在、 二つの関連するシステムコール
+\fBtruncate\fP(2)  と \fBtruncate64\fP(2)  があり、glibc のラッパー関数 \fBtruncate\fP()
+は、カーネルがこれらのシステムコールのうちどちらを提供しているかをチェックし、 どちらを採用するかを決定する。
+.SS システムコールのリスト
+以下は Linux のシステムコールのリストである。 このリストで、 \fIKernel\fP の列は、Linux 2.2 以降で登場したシステムコールが
+登場したカーネルバージョンを示す。 以下に詳細な説明を記す。
+.IP * 3
+カーネルバージョンがない場合、そのシステムコールは カーネル 1.0 もしくはそれ以前に登場した。
+.IP *
+システムコールに "1.2" と書かれている場合、 そのシステムコールがおそらくバージョン 1.1.x のカーネルで登場し、 安定版のカーネルでは
+1.2 で初めて登場したことを意味する。 (バージョン 1.2 のカーネルは、カーネル 1.0.6 から分岐し、 バージョン 1.1.x
+の不安定版のカーネル系列として開発された。)
+.IP *
+.\" Was kernel 2.0 started from a branch of 1.2.10?
+.\" At least from the timestamps of the tarballs of
+.\" of 1.2.10 and 1.3.0, that's how it looks, but in
+.\" fact the diff doesn't seem very clear, the
+.\" 1.3.0 .tar.bz is much bigger (2.0 MB) than the
+.\" 1.2.10 .tar.bz2 (1.8 MB), and AEB points out the
+.\" timestamps of some files in 1.3.0 seem to be older
+.\" than those in 1.2.10.  All of this suggests
+.\" that there might not have been a clean branch point.
+システムコールに "2.0" と書かれている場合、 そのシステムコールがおそらくバージョン 1.3.x のカーネルで登場し、 安定版のカーネルでは
+2.0 で初めて登場したことを意味する。 (バージョン 2.0 のカーネルは、バージョン 1.2.10 あたりのカーネル 1.2.x
+から分岐し、バージョン 1.3.x の不安定版のカーネル系列として開発された。)
+.IP *
+システムコールに "2.2" と書かれている場合、 そのシステムコールがおそらくバージョン 2.1.x のカーネルで登場し、 安定版のカーネルでは
+2.2.0 で初めて登場したことを意味する。 (バージョン 2.2 のカーネルは、カーネル 2.0.21 から分岐し、 バージョン 2.1.x
+の不安定版のカーネル系列として開発された。)
+.IP *
+システムコールに "2.4" と書かれている場合、 そのシステムコールがおそらくバージョン 2.3.x のカーネルで登場し、 安定版のカーネルでは
+2.4.0 で初めて登場したことを意味する。 (バージョン 2.4 のカーネルは、カーネル 2.2.8 から分岐し、 バージョン 2.3.x
+の不安定版のカーネル系列として開発された。)
+.IP *
+システムコールに "2.6" と書かれている場合、 そのシステムコールがおそらくバージョン 2.5.x のカーネルで登場し、 安定版のカーネルでは
+2.6.0 で初めて登場したことを意味する。 (バージョン 2.6 のカーネルは、カーネル 2.4.15 から分岐し、 バージョン 2.5.x
+の不安定版のカーネル系列として開発された。)
+.IP *
+カーネル 2.6.0 から開発モデルは変更され、新しいシステムコールが
+個々の 2.6.x のリリースでも登場するようになった。
+その場合、このリストでは、システムコールが登場した
+厳密なバージョン番号が記載されている。この慣習は、カーネル 2.6.39 の
+後継となるバージョン 3.x 系列のカーネルでも継続されている。
+.IP *
+前の安定版カーネル系列から分岐した後に安定版カーネル系列にシステムコール が追加された場合、以前の安定版カーネル系列にそのシステムコールが 移植
+(backport) されることがある。 例えば、2.6.x で登場したシステムコールのいくつかは、 2.4.15 以降の 2.4.x リリースにも
+backport された。 この場合、システムコールが登場したバージョンとして、 両方の安定版系列のバージョンが記載されている。
+.PP
+.\"
+.\" Looking at scripts/checksyscalls.sh in the kernel source is
+.\" instructive about x86 specifics.
+.\"
+カーネル 3.9 で利用可能なシステムコールのリストを以下に示す
+(それ以前のカーネルでだけ利用可能なものも少数だが含まれる):
+.ad l
+.TS
+l l l
+---
+l l l.
+\fBSystem call\fP      \fBKernel\fP    \fBNotes\fP
+
+\fB_llseek\fP(2)       1.2
+\fB_newselect\fP(2)    2.0
+\fB_sysctl\fP(2)       2.0
+\fBaccept\fP(2)        2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBaccept4\fP(2)       2.6.28
+\fBaccess\fP(2)        1.0
+\fBacct\fP(2)  1.0
+\fBadd_key\fP(2)       2.6.11
+\fBadjtimex\fP(2)      1.0
+\fBalarm\fP(2) 1.0
+\fBalloc_hugepages\fP(2)       2.5.36  2.5.44 で削除
+\fBbdflush\fP(2)       1.2     T{
+2.6 以降では非推奨
+.br
+(何もしない)
+T}
+\fBbind\fP(2)  2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBbrk\fP(2)   1.0
+\fBcacheflush\fP(2)    1.2     x86 にはない
+\fBcapget\fP(2)        2.2
+\fBcapset\fP(2)        2.2
+\fBchdir\fP(2) 1.0
+\fBchmod\fP(2) 1.0
+\fBchown\fP(2) 2.2     T{
+バージョン毎の詳細は
+.br
+\fBchown\fP(2) を参照。
+T}
+\fBchown32\fP(2)       2.4
+\fBchroot\fP(2)        1.0
+\fBclock_adjtime\fP(2) 2.6.39
+\fBclock_getres\fP(2)  2.6
+\fBclock_gettime\fP(2) 2.6
+\fBclock_nanosleep\fP(2)       2.6
+\fBclock_settime\fP(2) 2.6
+\fBclone\fP(2) 1.0
+\fBclose\fP(2) 1.0
+\fBconnect\fP(2)       2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBcreat\fP(2) 1.0
+\fBcreate_module\fP(2)         2.6 で削除
+\fBdelete_module\fP(2) 1.0
+\fBdup\fP(2)   1.0
+\fBdup2\fP(2)  1.0
+\fBdup3\fP(2)  2.6.27
+\fBepoll_create\fP(2)  2.6
+\fBepoll_create1\fP(2) 2.6.27
+\fBepoll_ctl\fP(2)     2.6
+\fBepoll_pwait\fP(2)   2.6.19
+\fBepoll_wait\fP(2)    2.6
+\fBeventfd\fP(2)       2.6.22
+\fBeventfd2\fP(2)      2.6.27
+\fBexecve\fP(2)        1.0
+\fBexit\fP(2)  1.0
+\fBexit_group\fP(2)    2.6
+\fBfaccessat\fP(2)     2.6.16
+\fBfadvise64\fP(2)     2.6
+.\" Implements \fBposix_fadvise\fP(2)
+\fBfadvise64_64\fP(2)  2.6
+\fBfallocate\fP(2)     2.6.23
+\fBfanotify_init\fP(2) 2.6.37
+\fBfanotify_mark\fP(2) 2.6.37
+.\" The fanotify calls were added in Linux 2.6.36,
+.\" but disabled while the API was finalized.
+\fBfchdir\fP(2)        1.0
+\fBfchmod\fP(2)        1.0
+\fBfchmodat\fP(2)      2.6.16
+\fBfchown\fP(2)        1.0
+\fBfchown32\fP(2)      2.4
+\fBfchownat\fP(2)      2.6.16
+\fBfcntl\fP(2) 1.0
+\fBfcntl64\fP(2)       2.4
+\fBfdatasync\fP(2)     2.0
+\fBfgetxattr\fP(2)     2.6; 2.4.18
+\fBfinit_module\fP(2)  3.8
+\fBflistxattr\fP(2)    2.6; 2.4.18
+\fBflock\fP(2) 2.0
+\fBfork\fP(2)  1.0
+\fBfree_hugepages\fP(2)        2.5.36  2.5.44 で削除
+\fBfremovexattr\fP(2)  2.6; 2.4.18
+\fBfsetxattr\fP(2)     2.6; 2.4.18
+\fBfstat\fP(2) 1.0
+\fBfstat64\fP(2)       2.4
+\fBfstatat64\fP(2)     2.6.16
+\fBfstatfs\fP(2)       1.0
+\fBfstatfs64\fP(2)     2.6
+\fBfsync\fP(2) 1.0     1.0
+\fBftruncate\fP(2)     1.0
+\fBftruncate64\fP(2)   2.4
+\fBfutex\fP(2) 2.6
+\fBfutimesat\fP(2)     2.6.16
+\fBget_kernel_syms\fP(2)               2.6 で削除
+\fBget_mempolicy\fP(2) 2.6.6
+\fBget_robust_list\fP(2)       2.6.17
+\fBget_thread_area\fP(2)       2.6
+\fBgetcpu\fP(2)        2.6.19
+\fBgetcwd\fP(2)        2.2
+\fBgetdents\fP(2)      2.0
+\fBgetdents64\fP(2)    2.4
+\fBgetegid\fP(2)       1.0
+\fBgetegid32\fP(2)     2.4
+\fBgeteuid\fP(2)       1.0
+\fBgeteuid32\fP(2)     2.4
+\fBgetgid\fP(2)        1.0
+\fBgetgid32\fP(2)      2.4
+\fBgetgroups\fP(2)     1.0
+\fBgetgroups32\fP(2)   2.4
+\fBgetitimer\fP(2)     1.0
+\fBgetpeername\fP(2)   2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBgetpagesize\fP(2)   2.0     x86 にはない
+\fBgetpgid\fP(2)       1.0
+\fBgetpgrp\fP(2)       1.0
+\fBgetpid\fP(2)        1.0
+\fBgetppid\fP(2)       1.0
+\fBgetpriority\fP(2)   1.0
+\fBgetresgid\fP(2)     2.2
+\fBgetresgid32\fP(2)   2.4
+\fBgetresuid\fP(2)     2.2
+\fBgetresuid32\fP(2)   2.4
+\fBgetrlimit\fP(2)     1.0
+\fBgetrusage\fP(2)     1.0
+\fBgetsid\fP(2)        2.0
+\fBgetsockname\fP(2)   2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBgetsockopt\fP(2)    2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBgettid\fP(2)        2.4.11
+\fBgettimeofday\fP(2)  1.0
+\fBgetuid\fP(2)        1.0
+\fBgetuid32\fP(2)      2.4
+.\" \fBgetunwind\fP(2) 2.4.8   ia64; DEPRECATED
+\fBgetxattr\fP(2)      2.6; 2.4.18
+\fBinit_module\fP(2)   1.0
+\fBinotify_add_watch\fP(2)     2.6.13
+\fBinotify_init\fP(2)  2.6.13
+\fBinotify_init1\fP(2) 2.6.27
+\fBinotify_rm_watch\fP(2)      2.6.13
+\fBio_cancel\fP(2)     2.6
+\fBio_destroy\fP(2)    2.6
+\fBio_getevents\fP(2)  2.6
+\fBio_setup\fP(2)      2.6
+\fBio_submit\fP(2)     2.6
+\fBioctl\fP(2) 1.0
+\fBioperm\fP(2)        1.0
+\fBiopl\fP(2)  1.0
+\fBioprio_get\fP(2)    2.6.13
+\fBioprio_set\fP(2)    2.6.13
+\fBipc\fP(2)   1.0
+.\" Implements System V IPC calls
+\fBkcmp\fP(2)  3.5
+\fBkern_features\fP(2) 3.7     Sparc64
+\fBkexec_load\fP(2)    2.6.13
+.\" The entry in the syscall table was reserved starting in 2.6.7
+.\" Was named sys_kexec_load() from 2.6.7 to 2.6.16
+\fBkeyctl\fP(2)        2.6.11
+\fBkill\fP(2)  1.0
+\fBlchown\fP(2)        1.0     T{
+バージョン毎の詳細は
+.br
+\fBchown\fP(2) を参照。
+T}
+\fBlchown32\fP(2)      2.4
+\fBlgetxattr\fP(2)     2.6; 2.4.18
+\fBlink\fP(2)  1.0
+\fBlinkat\fP(2)        2.6.16
+\fBlisten\fP(2)        2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBlistxattr\fP(2)     2.6; 2.4.18
+\fBllistxattr\fP(2)    2.6; 2.4.18
+\fBlookup_dcookie\fP(2)        2.6
+\fBlremovexattr\fP(2)  2.6; 2.4.18
+\fBlseek\fP(2) 1.0
+\fBlsetxattr\fP(2)     2.6; 2.4.18
+\fBlstat\fP(2) 1.0
+\fBlstat64\fP(2)       2.4
+\fBmadvise\fP(2)       2.4
+\fBmadvise1\fP(2)      2.4
+\fBmbind\fP(2) 2.6.6
+.\" \fBmemory_ordering\fP(2)   ???     Sparc64
+\fBmigrate_pages\fP(2) 2.6.16
+\fBmincore\fP(2)       2.4
+\fBmkdir\fP(2) 1.0
+\fBmkdirat\fP(2)       2.6.16
+\fBmknod\fP(2) 1.0
+\fBmknodat\fP(2)       2.6.16
+\fBmlock\fP(2) 2.0
+\fBmlockall\fP(2)      2.0
+\fBmmap\fP(2)  1.0
+\fBmmap2\fP(2) 2.4
+\fBmodify_ldt\fP(2)    1.0
+\fBmount\fP(2) 1.0
+\fBmove_pages\fP(2)    2.6.18
+\fBmprotect\fP(2)      1.0
+\fBmq_getsetattr\fP(2) 2.6.6
+.\" Implements \fBmq_getattr\fP(3) and \fBmq_setattr\fP(3)
+\fBmq_notify\fP(2)     2.6.6
+\fBmq_open\fP(2)       2.6.6
+\fBmq_timedreceive\fP(2)       2.6.6
+\fBmq_timedsend\fP(2)  2.6.6
+\fBmq_unlink\fP(2)     2.6.6
+\fBmremap\fP(2)        2.0
+\fBmsgctl\fP(2)        2.0     \fBipc\fP(2) の「注意」の節を参照
+\fBmsgget\fP(2)        2.0     \fBipc\fP(2) の「注意」の節を参照
+\fBmsgrcv\fP(2)        2.0     \fBipc\fP(2) の「注意」の節を参照
+\fBmsgsnd\fP(2)        2.0     \fBipc\fP(2) の「注意」の節を参照
+\fBmsync\fP(2) 2.0
+.\" \fBmultiplexer\fP(2)       ??      __NR_multiplexer reserved on
+.\"            PowerPC, but unimplemented?
+\fBmunlock\fP(2)       2.0
+\fBmunlockall\fP(2)    2.0
+\fBmunmap\fP(2)        1.0
+\fBname_to_handle_at\fP(2)     2.6.39
+\fBnanosleep\fP(2)     2.0
+\fBnfsservctl\fP(2)    2.2     3.1 で削除
+\fBnice\fP(2)  1.0
+\fBoldfstat\fP(2)      1.0
+\fBoldlstat\fP(2)      1.0
+\fBoldolduname\fP(2)   1.0
+\fBoldstat\fP(2)       1.0
+\fBolduname\fP(2)      1.0
+\fBopen\fP(2)  1.0
+\fBopen_by_handle_at\fP(2)     2.6.39
+\fBopenat\fP(2)        2.6.16
+\fBpause\fP(2) 1.0
+\fBpciconfig_iobase\fP(2)      2.2.15; 2.4     x86 にはない
+.\" Alpha, PowerPC, ARM; not x86
+\fBpciconfig_read\fP(2)        2.0.26; 2.2     x86 にはない
+.\" , PowerPC, ARM; not x86
+\fBpciconfig_write\fP(2)       2.0.26; 2.2     x86 にはない
+.\" , PowerPC, ARM; not x86
+\fBperf_event_open\fP(2)       2.6.31  T{
+2.6.31 では perf_counter_open() という
+.br
+名前であった; 2.6.32 で名称変更
+T}
+\fBpersonality\fP(2)   1.2
+\fBperfctr\fP(2)       2.2     Sparc; 2.6.34 で削除
+.\"    commit c7d5a0050773e98d1094eaa9f2a1a793fafac300 removed perfctr()
+\fBperfmonctl\fP(2)    2.4     ia64
+\fBpipe\fP(2)  1.0
+\fBpipe2\fP(2) 2.6.27
+\fBpivot_root\fP(2)    2.4
+\fBpoll\fP(2)  2.0.36; 2.2
+\fBppc_rtas\fP(2)              PowerPC のみ
+\fBppoll\fP(2) 2.6.16
+\fBprctl\fP(2) 2.2
+\fBpread64\fP(2)               T{
+2.2 で "pread" として追加;
+.br
+2.6 で "pread64" に名称変更
+T}
+\fBpreadv\fP(2)        2.6.30
+\fBprlimit\fP(2)       2.6.36
+\fBprocess_vm_readv\fP(2)      3.2
+\fBprocess_vm_writev\fP(2)     3.2
+\fBpselect6\fP(2)      2.6.16
+.\" Implements \fBpselect\fP(2)
+\fBptrace\fP(2)        1.0
+\fBpwrite64\fP(2)              T{
+2.2 で "pwrite" として追加;
+.br
+2.6 で "pwrite64" に名称変更
+T}
+\fBpwritev\fP(2)       2.6.30
+\fBquery_module\fP(2)  2.2     2.6 で削除
+\fBquotactl\fP(2)      1.0
+\fBread\fP(2)  1.0
+\fBreadahead\fP(2)     2.4.13
+\fBreaddir\fP(2)       1.0
+.\" Supersedes \fBgetdents\fP(2)
+\fBreadlink\fP(2)      1.0
+\fBreadlinkat\fP(2)    2.6.16
+\fBreadv\fP(2) 2.0
+\fBreboot\fP(2)        1.0
+\fBrecv\fP(2)  2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBrecvfrom\fP(2)      2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBrecvmsg\fP(2)       2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBrecvmmsg\fP(2)      2.6.33
+\fBremap_file_pages\fP(2)      2.6
+\fBremovexattr\fP(2)   2.6; 2.4.18
+\fBrename\fP(2)        1.0
+\fBrenameat\fP(2)      2.6.16
+\fBrequest_key\fP(2)   2.6.11
+\fBrestart_syscall\fP(2)       2.6
+\fBrmdir\fP(2) 1.0
+\fBrt_sigaction\fP(2)  2.2
+\fBrt_sigpending\fP(2) 2.2
+\fBrt_sigprocmask\fP(2)        2.2
+\fBrt_sigqueueinfo\fP(2)       2.2
+\fBrt_sigreturn\fP(2)  2.2
+\fBrt_sigsuspend\fP(2) 2.2
+\fBrt_sigtimedwait\fP(2)       2.2
+\fBrt_tgsigqueueinfo\fP(2)     2.6.31
+\fBs390_runtime_instr\fP(2)    3.7     s390 のみ
+\fBsched_get_priority_max\fP(2)        2.0
+\fBsched_get_priority_min\fP(2)        2.0
+\fBsched_getaffinity\fP(2)     2.6
+\fBsched_getparam\fP(2)        2.0
+\fBsched_getscheduler\fP(2)    2.0
+\fBsched_rr_get_interval\fP(2) 2.0
+\fBsched_setaffinity\fP(2)     2.6
+\fBsched_setparam\fP(2)        2.0
+\fBsched_setscheduler\fP(2)    2.0
+\fBsched_yield\fP(2)   2.0
+\fBselect\fP(2)        1.0
+\fBsemctl\fP(2)        2.0     \fBipc\fP(2) の「注意」の節を参照
+\fBsemget\fP(2)        2.0     \fBipc\fP(2) の「注意」の節を参照
+\fBsemop\fP(2) 2.0     \fBipc\fP(2) の「注意」の節を参照
+\fBsemtimedop\fP(2)    2.6; 2.4.22
+\fBsend\fP(2)  2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBsendfile\fP(2)      2.2
+\fBsendfile64\fP(2)    2.6; 2.4.19
+\fBsendmmsg\fP(2)      3.0
+\fBsendmsg\fP(2)       2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBsendto\fP(2)        2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBset_mempolicy\fP(2) 2.6.6
+\fBset_robust_list\fP(2)       2.6.17
+\fBset_thread_area\fP(2)       2.6
+\fBset_tid_address\fP(2)       2.6
+.\" See http://lkml.org/lkml/2005/8/1/83
+.\" "[PATCH] remove sys_set_zone_reclaim()"
+\fBsetdomainname\fP(2) 1.0
+\fBsetfsgid\fP(2)      1.2
+\fBsetfsgid32\fP(2)    2.4
+\fBsetfsuid\fP(2)      1.2
+\fBsetfsuid32\fP(2)    2.4
+\fBsetgid\fP(2)        1.0
+\fBsetgid32\fP(2)      2.4
+\fBsetgroups\fP(2)     1.0
+\fBsetgroups32\fP(2)   2.4
+\fBsethostname\fP(2)   1.0
+\fBsetitimer\fP(2)     1.0
+\fBsetns\fP(2) 3.0
+\fBsetpgid\fP(2)       1.0
+\fBsetpriority\fP(2)   1.0
+\fBsetregid\fP(2)      1.0
+\fBsetregid32\fP(2)    2.4
+\fBsetresgid\fP(2)     2.2
+\fBsetresgid32\fP(2)   2.4
+\fBsetresuid\fP(2)     2.2
+\fBsetresuid32\fP(2)   2.4
+\fBsetreuid\fP(2)      1.0
+\fBsetreuid32\fP(2)    2.4
+\fBsetrlimit\fP(2)     1.0
+\fBsetsid\fP(2)        1.0
+\fBsetsockopt\fP(2)    2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBsettimeofday\fP(2)  1.0
+\fBsetuid\fP(2)        1.0
+\fBsetuid32\fP(2)      2.4
+\fBsetup\fP(2)         2.2 で削除
+\fBsetxattr\fP(2)      2.6; 2.4.18
+\fBsgetmask\fP(2)      1.0
+\fBshmat\fP(2) 2.0     \fBipc\fP(2) の「注意」の節を参照
+\fBshmctl\fP(2)        2.0     \fBipc\fP(2) の「注意」の節を参照
+\fBshmdt\fP(2) 2.0     \fBipc\fP(2) の「注意」の節を参照
+\fBshmget\fP(2)        2.0     \fBipc\fP(2) の「注意」の節を参照
+\fBshutdown\fP(2)      2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBsigaction\fP(2)     1.0
+\fBsigaltstack\fP(2)   2.2
+\fBsignal\fP(2)        1.0
+\fBsignalfd\fP(2)      2.6.22
+\fBsignalfd4\fP(2)     2.6.27
+\fBsigpending\fP(2)    1.0
+\fBsigprocmask\fP(2)   1.0
+\fBsigreturn\fP(2)     1.0
+\fBsigsuspend\fP(2)    1.0
+\fBsocket\fP(2)        2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBsocketcall\fP(2)    1.0
+.\" Implements BSD socket calls
+\fBsocketpair\fP(2)    2.0     \fBsocketcall\fP(2) の「注意」の節を参照
+\fBsplice\fP(2)        2.6.17
+\fBspu_create\fP(2)    2.6.16  PowerPC のみ
+\fBspu_run\fP(2)       2.6.16  PowerPC のみ
+\fBssetmask\fP(2)      1.0
+\fBstat\fP(2)  1.0
+\fBstat64\fP(2)        2.4
+\fBstatfs\fP(2)        1.0
+\fBstatfs64\fP(2)      2.6
+\fBstime\fP(2) 1.0
+\fBsubpage_prot\fP(2)  2.6.25  PowerPC で
+               CONFIG_PPC_64K_PAGES の場合
+\fBswapoff\fP(2)       1.0
+\fBswapon\fP(2)        1.0
+\fBsymlink\fP(2)       1.0
+\fBsymlinkat\fP(2)     2.6.16
+\fBsync\fP(2)  1.0
+\fBsync_file_range\fP(2)       2.6.17
+\fBsync_file_range2\fP(2)      2.6.22  T{
+アーキテクチャ固有の
+\fBsync_file_range\fP(2) の一種
+T}
+.\" PowerPC, ARM, tile
+.\" First appeared on ARM, as arm_sync_file_range(), but later renamed
+.\" \fBsys_debug_setcontext\fP(2)      ???     PowerPC if CONFIG_PPC32
+\fBsyncfs\fP(2)        2.6.39
+\fBsysfs\fP(2) 1.2
+\fBsysinfo\fP(2)       1.0
+\fBsyslog\fP(2)        1.0
+.\" glibc interface is \fBklogctl\fP(3)
+\fBtee\fP(2)   2.6.17
+\fBtgkill\fP(2)        2.6
+\fBtime\fP(2)  1.0
+\fBtimer_create\fP(2)  2.6
+\fBtimer_delete\fP(2)  2.6
+\fBtimer_getoverrun\fP(2)      2.6
+\fBtimer_gettime\fP(2) 2.6
+\fBtimer_settime\fP(2) 2.6
+\fBtimerfd_create\fP(2)        2.6.25
+\fBtimerfd_gettime\fP(2)       2.6.25
+\fBtimerfd_settime\fP(2)       2.6.25
+\fBtimes\fP(2) 1.0
+\fBtkill\fP(2) 2.6; 2.4.22
+\fBtruncate\fP(2)      1.0
+\fBtruncate64\fP(2)    2.4
+\fBugetrlimit\fP(2)    2.4
+\fBumask\fP(2) 1.0
+\fBumount\fP(2)        1.0
+.\" sys_oldumount() -- __NR_umount
+\fBumount2\fP(2)       2.2
+.\" sys_umount() -- __NR_umount2
+\fBuname\fP(2) 1.0
+\fBunlink\fP(2)        1.0
+\fBunlinkat\fP(2)      2.6.16
+\fBunshare\fP(2)       2.6.16
+\fBuselib\fP(2)        1.0
+\fBustat\fP(2) 1.0
+\fButime\fP(2) 1.0
+\fButimensat\fP(2)     2.6.22
+\fButimes\fP(2)        2.2
+\fButrap_install\fP(2) 2.2     Sparc
+\fBvfork\fP(2) 2.2
+\fBvhangup\fP(2)       1.0
+\fBvm86old\fP(2)       1.0     T{
+以前は "vm86";
+2.0.28/2.2 で改名された
+T}
+\fBvm86\fP(2)  2.0.28; 2.2
+\fBvmsplice\fP(2)      2.6.17
+\fBwait4\fP(2) 1.0
+\fBwaitid\fP(2)        2.6.10
+\fBwaitpid\fP(2)       1.0
+\fBwrite\fP(2) 1.0
+\fBwritev\fP(2)        2.0
+.TE
+.ad
+.PP
+x86\-32 を含む多くのプラットフォームでは、ソケット関連のシステムコールは (glibc のラッパー関数を介してだが) すべて
+\fBsocketcall\fP(2) 経由に多重されている。 同様に、System V IPC 関連のシステムコールは \fBipc\fP(2)
+経由に多重されている。
+
+.\" __NR_afs_syscall is 53 on Linux 2.6.22/i386
+.\" __NR_break is 17 on Linux 2.6.22/i386
+.\" __NR_ftime is 35 on Linux 2.6.22/i386
+.\" __NR_getpmsg is 188 on Linux 2.6.22/i386
+.\" __NR_gtty is 32 on Linux 2.6.22/i386
+.\" __NR_idle is 112 on Linux 2.6.22/i386
+.\" __NR_lock is 53 on Linux 2.6.22/i386
+.\" __NR_madvise1 is 219 on Linux 2.6.22/i386
+.\" __NR_mpx is 66 on Linux 2.6.22/i386
+.\" Slot has been reused
+.\" __NR_prof is 44 on Linux 2.6.22/i386
+.\" __NR_profil is 98 on Linux 2.6.22/i386
+.\" __NR_putpmsg is 189 on Linux 2.6.22/i386
+.\" __NR_security is 223 on Linux 2.4/i386
+.\" __NR_security is 223 on Linux 2.4/i386; absent on 2.6/i386, present
+.\" on a couple of 2.6 architectures
+.\" __NR_stty is 31 on Linux 2.6.22/i386
+.\" The security call is for future use.
+.\" __NR_tuxcall is 184 on x86_64, also on PPC and alpha
+.\" __NR_ulimit is 58 on Linux 2.6.22/i386
+.\" __NR_vserver is 273 on Linux 2.6.22/i386
+以下のシステムコールは、システムコール・テーブルにスロットが予約されているが、
+標準のカーネルには実装されていない:
+\fBafs_syscall\fP(2), \fBbreak\fP(2), \fBftime\fP(2), \fBgetpmsg\fP(2), \fBgtty\fP(2),
+\fBidle\fP(2), \fBlock\fP(2), \fBmadvise1\fP(2), \fBmpx\fP(2), \fBphys\fP(2), \fBprof\fP(2),
+\fBprofil\fP(2), \fBputpmsg\fP(2), \fBsecurity\fP(2), \fBstty\fP(2), \fBtuxcall\fP(2),
+\fBulimit\fP(2), \fBvserver\fP(2) (\fBunimplemented\fP(2) も参照)。
+しかし、\fBftime\fP(3), \fBprofil\fP(3), \fBulimit\fP(3) はライブラリ・ルーチンとして
+実装されている。 \fBphys\fP(2) 用の場所は 2.1.116 以降では \fBumount\fP(2) 用に
+使用されている; 将来においても \fBphys\fP(2) は実装されない。
+\fBgetpmsg\fP(2) と \fBputpmsg\fP(2) は STREAMS 対応のパッチが適用された
+カーネル用であり、標準のカーネルに登場することはないかもしれない。
+
+There was briefly \fBset_zone_reclaim\fP(2), added in Linux 2.6.13, and removed
+in 2.6.16; this system call was never available to user space.
+.SH 注意
+.PP
+たいていは、 \fI/usr/include/asm/unistd.h\fP で定義されている番号 __NR_xxx のシステムコールのコードは、 Linux
+カーネルソースの \fIsys_xxx\fP() というルーチンに書かれている (i386 における実行テーブルは
+\fI/usr/src/linux/arch/i386/kernel/entry.S\fP に書かれている)。
+しかしこれには多くの例外がある。古いシステムコールは新版に置き換えられて きたが、この置き換えはあまり体系立てて行われて来なかったからである。
+parisc, sparc, sparc64, alpha
+といったプロプリエタリなオペレーティングシステムのエミュレーション機能があるプラットフォームでは、多くの追加システムコールがある。 mips64
+には、32 ビットシステムコールのフルセットも含まれている。
+
+時間の経過とともに、いくつかのシステムコールではインタフェースの 変更が必要になってきた。
+こうした変更の理由の一つは、システムコールに渡される構造体やスカラー値 のサイズを増やす必要があることだった。
+これらの変更の結果、現在では、同様の処理を実行するが 引き数のサイズなどの詳細は異なる、一連のシステムコール群が いくつか存在する (例えば、
+\fBtruncate\fP(2)  と \fBtruncate64\fP(2))。 (すでに述べたように、
+一般にはアプリケーションがこのことを意識することはない。 glibc のラッパー関数が、適切なシステムコールを起動し、古いバイナリに 対して ABI
+レベルでの互換性を保持することを保証する処理を行っている。)  複数のバージョンが存在するシステムコールの例を以下に挙げる。
+.IP * 3
+.\" e.g., on 2.6.22/i386: __NR_oldstat 18, __NR_stat 106, __NR_stat64 195
+.\" The stat system calls deal with three different data structures,
+.\" defined in include/asm-i386/stat.h: __old_kernel_stat, stat, stat64
+これまでに、 \fBstat\fP(2)  には 3 種類の異なるバージョンが存在する。 \fIsys_stat\fP()  (スロットは
+\fI__NR_oldstat\fP)、 \fIsys_newstat\fP()  (スロットは \fI__NR_stat\fP)、 \fIsys_stat64\fP()
+(カーネル 2.4 で導入; スロットは \fI__NR_stat64\fP)。 3つのうち最後のものが最新である。 \fBlstat\fP(2)  と
+\fBfstat\fP(2)  についても同様である。
+.IP *
+また、 \fI__NR_oldolduname\fP, \fI__NR_olduname\fP, \fI__NR_uname\fP という定義は、それぞれ
+\fIsys_olduname\fP(), \fIsys_uname\fP(), \fIsys_newuname\fP()  というルーチンを参照している。
+.IP *
+Linux 2.0 では、 \fBvm86\fP(2)  の新バージョンが登場した。カーネルルーチンの 古いバージョン、新しいバージョンはそれぞれ
+\fIsys_vm86old\fP(), \fIsys_vm86\fP()  という名前である。
+.IP *
+Linux 2.4 では、 \fBgetrlimit\fP(2)  の新バージョンが登場した。カーネルルーチンの 古いバージョン、新しいバージョンはそれぞれ
+\fIsys_old_getrlimit\fP()  (スロットは \fI__NR_getrlimit\fP), \fIsys_getrlimit\fP()
+(スロットは \fI__NR_ugetrlimit\fP)  という名前である。
+.IP *
+.\" 64-bit off_t changes: ftruncate64, *stat64,
+.\" fcntl64 (because of the flock structure), getdents64, *statfs64
+Linux 2.4 で、ユーザ ID とグループ ID のサイズが 16 ビットから 32 ビットに増えた。
+この変更に対応するため、いくつかのシステムコールが追加された (\fBchown32\fP(2), \fBgetuid32\fP(2),
+\fBgetgroups32\fP(2), \fBsetresuid32\fP(2)  など)。 これらのシステムコールが、末尾の "32" が付かない同名の
+古いバージョンに代わって使われるようになった。
+.IP *
+Linux 2.4 では、32 ビット・アーキテクチャ上のアプリケーションが 大きなファイル (つまり、32 ビットでは表現できないサイズや
+ファイル・オフセットが必要なファイル) にアクセスできるようになった。 この変更に対応するため、ファイル・オフセットとサイズを扱う
+システムコールの置き換えが必要となった。その結果、 \fBfcntl64\fP(2), \fBftruncate64\fP(2),
+\fBgetdents64\fP(2), \fBstat64\fP(2), \fBstatfs64\fP(2)
+と、ファイルディスクリプタやシンボリックリンクで同じ機能を持つ システムコールが追加された。 これらのシステムコールが、末尾の "64"
+が付かない同名の 古いバージョンに代わって使われるようになった。 但し、"stat" 系のシステムコールはその限りではない。
+
+64\-bit ファイルアクセスと 32\-bit UID のみを持つ 新しいプラットフォーム (alpha, ia64, s390x など) では、
+*64 や *32 という名前のシステムコールはない。 *64 や *32 というシステムコールが存在する場合、 *64 や *32
+がついていないシステムコールは廃止扱いである。
+.IP *
+リアルタイムシグナル (\fBsignal\fP(7)  参照) への対応を追加するために、 \fIrt_sig*\fP 系のシステムコールがカーネル 2.2
+で追加された。 これらのシステムコールが、先頭に "rt_" が付かない同名の 古いバージョンに代わって使われるようになった。
+.IP *
+.\" (used by libc 6)
+.\" .PP
+.\" Two system call numbers,
+.\" .IR __NR__llseek
+.\" and
+.\" .IR __NR__sysctl
+.\" have an additional underscore absent in
+.\" .IR sys_llseek ()
+.\" and
+.\" .IR sys_sysctl ().
+.\"
+.\" In kernel 2.1.81,
+.\" .BR lchown (2)
+.\" and
+.\" .BR chown (2)
+.\" were swapped; that is,
+.\" .BR lchown (2)
+.\" was added with the semantics that were then current for
+.\" .BR chown (2),
+.\" and the semantics of the latter call were changed to what
+.\" they are today.
+\fBselect\fP(2)  と \fBmmap\fP(2)  は 5つもしくはそれ以上の引き数を使用しており、 i386 では引き数の受け渡しに問題が生じる。
+そのため、他のアーキテクチャでは \fI__NR_select\fP と \fI__NR_mmap\fP に対応する \fIsys_select\fP()  と
+\fIsys_mmap\fP()  が存在するが、i386 では代わりに \fIold_select\fP()  と \fIold_mmap\fP()
+というルーチンがある (これらのルーチンは引き数ブロックへのポインタを使用する)。 現在では 5つの引き数を渡すことはもはや問題ではなくなっており、
+\fI__NR__newselect\fP は \fIsys_select\fP()  に直接対応するようになっている。 \fI__NR_mmap2\fP
+についても同様である。
+.SH 関連項目
+\fBsyscall\fP(2), \fBunimplemented\fP(2), \fBlibc\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/sysctl.2 b/manual/LDP_man-pages/draft/man2/sysctl.2
new file mode 100644 (file)
index 0000000..6ac4cc9
--- /dev/null
@@ -0,0 +1,150 @@
+.\" Copyright (C) 1996 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Written 11 April 1996 by Andries Brouwer <aeb@cwi.nl>
+.\" 960412: Added comments from Stephen Tweedie
+.\" Modified Tue Oct 22 22:28:41 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified Mon Jan  5 20:31:04 1998 by aeb.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SYSCTL 2 2012\-12\-22 Linux "Linux Programmer's Manual"
+.SH 名前
+sysctl \- システム・パラメーターを読み書きする
+.SH 書式
+.nf
+\fB#include <unistd.h>\fP
+.br
+\fB#include <linux/sysctl.h>\fP
+.sp
+\fBint _sysctl(struct __sysctl_args *\fP\fIargs\fP\fB);\fP
+.fi
+
+\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。
+.SH 説明
+\fBこのシステムコールを使用しないこと!\fP 「注意」の節を参照。
+
+\fB_sysctl\fP()  コールはカーネルパラメーターを読み書きする。例えば、 ホストネームや同時にオープンできるファイルの最大数など。
+引き数は以下の形式である。
+.PP
+.in +4n
+.nf
+struct __sysctl_args {
+    int    *name;    /* integer vector describing variable */
+    int     nlen;    /* length of this vector */
+    void   *oldval;  /* 0 or address where to store old value */
+    size_t *oldlenp; /* available room for old value,
+                        overwritten by actual size of old value */
+    void   *newval;  /* 0 or address of new value */
+    size_t  newlen;  /* size of new value */
+};
+.fi
+.in
+.PP
+このコールは \fI/proc/sys\fP の下のディレクトリ・ツリーに似た木構造(tree structure)を検索する。
+そして、要求された項目が見つかった場合は適切なルーチンを呼び出して 値を読んだり修正したりする。
+.SH 返り値
+成功した場合は \fB_sysctl\fP()  は 0 を返す。失敗した場合、\-1 が返され、 \fIerrno\fP がそのエラーを示す値に設定される。
+.SH エラー
+.TP 
+\fBEFAULT\fP
+\fIoldval\fP に NULL でない値を設定して、以前の値を要求しているのに、 \fIoldlenp\fP に空きがない。
+.TP 
+\fBENOTDIR\fP
+\fIname\fP が見つからなかった。
+.TP 
+\fBEACCES\fP か \fBEPERM\fP
+「ディレクトリ」のどれかに検索許可がなかったか、 \fIoldval\fP が 0 でないのに読み込み許可がなかったか、 \fInewval\fP が 0
+でないのに書き込み許可がなかった。
+.SH 準拠
+このコールは Linux 特有であり、移植を意図したプログラムで使用しては いけない。 \fBsysctl\fP()  コールは Linux のバージョン
+1.3.57 から存在している。 これは 4.4BSD に由来している。Linux は \fI/proc/sys\fP
+に写し(mirror)をもっており、項目の名前の付け方が Linux と 4.4BSD では 異っている。しかし \fBsysctl\fP()
+関数の宣言は両方で同じである。
+.SH 注意
+.\" See http://lwn.net/Articles/247243/
+.\" Though comments in suggest that it is needed by old glibc binaries,
+.\" so maybe it's not going away.
+Glibc does not provide a wrapper for this system call; call it using
+\fBsyscall\fP(2).  Or rather...  \fIdon't\fP call it: use of this system call has
+long been discouraged, and it is so unloved that \fBit is likely to disappear
+in a future kernel version\fP.  Since Linux 2.6.24, uses of this system call
+result in warnings in the kernel log.  Remove it from your programs now; use
+the \fI/proc/sys\fP interface instead.
+
+This system call is available only if the kernel was configured with the
+\fBCONFIG_SYSCTL_SYSCALL\fP option.
+.SH バグ
+オブジェクトの名前は、カーネルのバージョンごとに異なっている。 このため、このシステム・コールはアプリケーションにとって 無価値なものとなっている。
+.PP
+全ての可能な項目が正確に記述されているわけではない。
+.PP
+今のところ \fI/proc/sys/kernel/ostype\fP に書き込むことでオペーレーティング・システムを変えることはできない。
+.SH 例
+.nf
+#define _GNU_SOURCE
+#include <unistd.h>
+#include <sys/syscall.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <linux/sysctl.h>
+
+int _sysctl(struct __sysctl_args *args );
+
+#define OSNAMESZ 100
+
+int
+main(void)
+{
+    struct __sysctl_args args;
+    char osname[OSNAMESZ];
+    size_t osnamelth;
+    int name[] = { CTL_KERN, KERN_OSTYPE };
+
+    memset(&args, 0, sizeof(struct __sysctl_args));
+    args.name = name;
+    args.nlen = sizeof(name)/sizeof(name[0]);
+    args.oldval = osname;
+    args.oldlenp = &osnamelth;
+
+    osnamelth = sizeof(osname);
+
+    if (syscall(SYS__sysctl, &args) == \-1) {
+        perror("_sysctl");
+        exit(EXIT_FAILURE);
+    }
+    printf("This machine is running %*s\en", osnamelth, osname);
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBproc\fP(5)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 076c56f..bccb1d7 100644 (file)
@@ -73,6 +73,6 @@ SVr4.
 .SH バグ
 libc または glibc のサポートは存在しない。 \fIbuf\fP の大きさがどれだけ必要かを推測する方法がない。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index db38b32..ce18594 100644 (file)
@@ -84,6 +84,6 @@ Linux カーネルは 0.98.pl6 から \fBsysinfo\fP()  システムコールを
 .SH 関連項目
 \fBproc\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e176852..5a1d2d5 100644 (file)
@@ -151,6 +151,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBsplice\fP(2), \fBvmsplice\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index bb79919..dce320e 100644 (file)
@@ -66,6 +66,6 @@ POSIX.1 では、指定した時刻と紀元との間の秒数を近似する変
 .SH 関連項目
 \fBdate\fP(1), \fBgettimeofday\fP(2), \fBctime\fP(3), \fBftime\fP(3), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 20bc593..18c1194 100644 (file)
@@ -372,6 +372,6 @@ main(int argc, char *argv[])
 \fBsignalfd\fP(2), \fBtimer_create\fP(2), \fBtimer_gettime\fP(2),
 \fBtimer_settime\fP(2), \fBepoll\fP(7), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 53e3c17..a378251 100644 (file)
@@ -130,6 +130,6 @@ V7 では構造体のメンバに \fIlong\fP 型を使っていた。まだ \fIt
 \fBtime\fP(1), \fBgetrusage\fP(2), \fBwait\fP(2), \fBclock\fP(3), \fBsysconf\fP(3),
 \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 342c34a..3c6d296 100644 (file)
@@ -101,6 +101,6 @@ glibc はこれらのシステムコールに対するラッパー関数を提
 .SH 関連項目
 \fBclone\fP(2), \fBgettid\fP(2), \fBkill\fP(2), \fBrt_sigqueueinfo\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index da4bef9..d8cf825 100644 (file)
@@ -45,7 +45,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH TRUNCATE 2 2011\-09\-08 Linux "Linux Programmer's Manual"
+.TH TRUNCATE 2 2013\-04\-01 Linux "Linux Programmer's Manual"
 .SH 名前
 truncate, ftruncate \- 指定した長さにファイルを切り詰める
 .SH 書式
@@ -186,6 +186,9 @@ VFAT がある。
 ただし、glibc を使ったアプリケーションではこれらの詳細は気にする必要はない。
 glibc のラッパー関数は新しいシステムコールが利用できる場合にはそれらを利用する
 ようになっているからである。
+
+On some 32\-bit architectures, the calling signature for these system calls
+differ, for the reasons described in \fBsyscall\fP(2).
 .SH バグ
 .\" http://sourceware.org/bugzilla/show_bug.cgi?id=12037
 glibc 2.12 のヘッダファイルにはバグがあり、 \fBftruncate\fP()  の宣言を公開するのに必要な \fB_POSIX_C_SOURCE\fP
@@ -193,6 +196,6 @@ glibc 2.12 のヘッダファイルにはバグがあり、 \fBftruncate\fP()  
 .SH 関連項目
 \fBopen\fP(2), \fBstat\fP(2), \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6fecc63..a4ddd2f 100644 (file)
@@ -84,9 +84,8 @@ umask の設定は、そのプロセスが生成する POSIX IPC オブジェク
 に設定される許可にも影響を与える。 一方、umask は、そのプロセスが (\fBmsgget\fP(2), \fBsemget\fP(2),
 \fBshmget\fP(2)  を使って) 生成する System V IPC オブジェクトに設定される許可には 影響を与えない。
 .SH 関連項目
-.\" FIXME . eventually: .BR acl (5)
-\fBchmod\fP(2), \fBmkdir\fP(2), \fBopen\fP(2), \fBstat\fP(2)
+\fBchmod\fP(2), \fBmkdir\fP(2), \fBopen\fP(2), \fBstat\fP(2)  \fBacl\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9aa855f..5919972 100644 (file)
@@ -105,7 +105,7 @@ Linux 2.1.116 から、 \fBumount2\fP()  システムコールが追加された
 呼び出し元が必要な権限を持っていない。
 .SH バージョン
 .\" http://sourceware.org/bugzilla/show_bug.cgi?id=10092
-\fBMNT_DETACH\fP と \fBMNT_EXPIRE\fP はバージョン 2.11 以降の glibc でのみ利用できる。
+\fBMNT_DETACH\fP と \fBMNT_EXPIRE\fP はバージョン 2.11 以降の glibc で利用できる。
 .SH 準拠
 この関数は Linux 固有の関数であり、移植を考慮したプログラムでは 使用すべきでない。
 .SH 注意
@@ -117,6 +117,6 @@ Linux 2.1.116 から、 \fBumount2\fP()  システムコールが追加された
 .SH 関連項目
 \fBmount\fP(2), \fBpath_resolution\fP(7), \fBmount\fP(8), \fBumount\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 160ef05..3974b4d 100644 (file)
@@ -102,6 +102,6 @@ utsname の情報は、 \fI/proc/sys/kernel/\fP{\fIostype\fP, \fIhostname\fP, \f
 .SH 関連項目
 \fBuname\fP(1), \fBgetdomainname\fP(2), \fBgethostname\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 072702c..7228c1e 100644 (file)
@@ -50,6 +50,6 @@ stty, tuxcall, ulimit, vserver \- 実装されていないシステムコール
 .SH 関連項目
 \fBsyscalls\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 3b2725a..1a398c4 100644 (file)
@@ -1,5 +1,5 @@
 .\" This manpage is Copyright (C) 1992 Drew Eckhardt;
-.\"                               1993 Ian Jackson.
+.\"             and Copyright (C) 1993 Ian Jackson.
 .\"
 .\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
@@ -120,6 +120,6 @@ NFS プロトコルに内在する問題により、まだ使用中のファイ
 \fBrmdir\fP(2), \fBunlinkat\fP(2), \fBmkfifo\fP(3), \fBremove\fP(3),
 \fBpath_resolution\fP(7), \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 33ab5c5..f8fd92d 100644 (file)
@@ -100,6 +100,6 @@ POSIX.1\-2008.  Solaris には、これと同じようなシステムコール
 .SH 関連項目
 \fBopenat\fP(2), \fBrmdir\fP(2), \fBunlink\fP(2), \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a3f6429..e79fe2f 100644 (file)
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH UNSHARE 2 2012\-12\-31 Linux "Linux Programmer's Manual"
+.TH UNSHARE 2 2013\-04\-17 Linux "Linux Programmer's Manual"
 .SH 名前
 unshare \- プロセス実行コンテキストの一部を分離する
 .SH 書式
 .nf
-.\" Actually _BSD_SOURCE || _SVID_SOURCE
-.\" FIXME See http://sources.redhat.com/bugzilla/show_bug.cgi?id=4749
-\fB#define _GNU_SOURCE\fP             /* feature_test_macros(7) 参照 */
 \fB#include <sched.h>\fP
 .sp
 \fBint unshare(int \fP\fIflags\fP\fB);\fP
 .fi
+.sp
+.in -4n
+Feature Test Macro Requirements for glibc (see \fBfeature_test_macros\fP(7)):
+.in
+.sp
+\fBunshare\fP():
+.ad l
+.RS 4
+.PD 0
+.TP  4
+Since glibc 2.14:
+_GNU_SOURCE
+.TP  4
+.\" FIXME See http://sources.redhat.com/bugzilla/show_bug.cgi?id=4749
+Before glibc 2.14:
+_BSD_SOURCE || _SVID_SOURCE
+    /* _GNU_SOURCE also suffices */
+.PD
+.RE
+.ad b
 .SH 説明
 \fBunshare\fP()  を使うと、プロセスは他のプロセスと現在共有している 実行コンテキストの一部を分離することができる。
 実行コンテキストの一部、たとえばマウント名前空間 (mount namespace)  などは、新しいプロセスを \fBfork\fP(2)  または
@@ -162,6 +179,6 @@ System V セマフォのアンドゥ値を共有せず、呼び出し元プロ
 
 Linux カーネルソース内の \fIDocumentation/unshare.txt\fP
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9a42088..c3277d1 100644 (file)
@@ -78,6 +78,6 @@ glibc2 は、このシステムコールを使用しない。
 \fBar\fP(1), \fBgcc\fP(1), \fBld\fP(1), \fBldd\fP(1), \fBmmap\fP(2), \fBopen\fP(2),
 \fBdlopen\fP(3), \fBcapabilities\fP(7), \fBld.so\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index aa7ae42..16ef590 100644 (file)
@@ -91,6 +91,6 @@ HP\-UX 版の構造体 \fIustat\fP には、その他にフィールド \fIf_blk
 .SH 関連項目
 \fBstat\fP(2), \fBstatfs\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 93761b7..056f6dd 100644 (file)
@@ -120,6 +120,6 @@ libc4 と libc5 では、 \fButimes\fP()  は単に \fButime\fP()  のラッパ
 \fBchattr\fP(1), \fBfutimesat\fP(2), \fBstat\fP(2), \fButimensat\fP(2), \fBfutimens\fP(3),
 \fBfutimes\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 28fbdc6..518346d 100644 (file)
@@ -166,6 +166,6 @@ Linux では 2.2.0\-pre6 あたりまでは \fBfork\fP(2)  と等価であった
 .SH 関連項目
 \fBclone\fP(2), \fBexecve\fP(2), \fBfork\fP(2), \fBunshare\fP(2), \fBwait\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4f0ed9f..d51a3a6 100644 (file)
@@ -60,6 +60,6 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 .SH 関連項目
 \fBcapabilities\fP(7), \fBinit\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0888203..449c520 100644 (file)
@@ -57,11 +57,11 @@ VM86 モードはプロテクトモードタスクにおける リアルモー
 この返り値は、このコールが現在のアーキテクチャで実装されていないことを示す。
 .TP 
 \fBEPERM\fP
-保存されたカーネルスタックが既に存在している。(これはカーネルが通常の 状態であるかをチェックしている。保存されたスタックは vm86 モードで
-しか存在しない。)
+Saved kernel stack exists.  (This is a kernel sanity check; the saved stack
+should exist only within vm86 mode itself.)
 .SH 準拠
 この関数は 32 ビット Intel プロセッサ上の Linux 特有の関数であり、 移植を意図したプログラムでは使用すべきでない。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8e748a2..0e6fcc8 100644 (file)
@@ -111,6 +111,6 @@ struct iovec {
 .SH 関連項目
 \fBsplice\fP(2), \fBtee\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/wait.2 b/manual/LDP_man-pages/draft/man2/wait.2
new file mode 100644 (file)
index 0000000..f9e8b97
--- /dev/null
@@ -0,0 +1,380 @@
+.\" Copyright (c) 1993 by Thomas Koenig <ig25@rz.uni-karlsruhe.de>
+.\" and Copyright (c) 2004 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified Sat Jul 24 13:30:06 1993 by Rik Faith <faith@cs.unc.edu>
+.\" Modified Sun Aug 21 17:42:42 1994 by Rik Faith <faith@cs.unc.edu>
+.\"          (Thanks to Koen Holtman <koen@win.tue.nl>)
+.\" Modified Wed May 17 15:54:12 1995 by Rik Faith <faith@cs.unc.edu>
+.\"           To remove *'s from status in macros (Thanks to Michael Shields).
+.\" Modified as suggested by Nick Duffek <nsd@bbc.com>, aeb, 960426
+.\" Modified Mon Jun 23 14:09:52 1997 by aeb - add EINTR.
+.\" Modified Thu Nov 26 02:12:45 1998 by aeb - add SIGCHLD stuff.
+.\" Modified Mon Jul 24 21:37:38 2000 by David A. Wheeler
+.\"          <dwheeler@dwheeler.com> - noted thread issues.
+.\" Modified 26 Jun 01 by Michael Kerrisk
+.\"          Added __WCLONE, __WALL, and __WNOTHREAD descriptions
+.\" Modified 2001-09-25, aeb
+.\" Modified 26 Jun 01 by Michael Kerrisk, <mtk.manpages@gmail.com>
+.\"    Updated notes on setting disposition of SIGCHLD to SIG_IGN
+.\" 2004-11-11, mtk
+.\"    Added waitid(2); added WCONTINUED and WIFCONTINUED()
+.\"    Added text on SA_NOCLDSTOP
+.\"    Updated discussion of SA_NOCLDWAIT to reflect 2.6 behavior
+.\"    Much other text rewritten
+.\" 2005-05-10, mtk, __W* flags can't be used with waitid()
+.\" 2008-07-04, mtk, removed erroneous text about SA_NOCLDSTOP
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH WAIT 2 2012\-12\-21 Linux "Linux Programmer's Manual"
+.SH 名前
+wait, waitpid, waitid \- プロセスの状態変化を待つ
+.SH 書式
+\fB#include <sys/types.h>\fP
+.br
+\fB#include <sys/wait.h>\fP
+.sp
+\fBpid_t wait(int *\fP\fIstatus\fP\fB);\fP
+
+\fBpid_t waitpid(pid_t \fP\fIpid\fP\fB, int *\fP\fIstatus\fP\fB, int \fP\fIoptions\fP\fB);\fP
+
+\fBint waitid(idtype_t \fP\fIidtype\fP\fB, id_t \fP\fIid\fP\fB, siginfo_t *\fP\fIinfop\fP\fB,
+int \fP\fIoptions\fP\fB);\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+.ad l
+.PD 0
+\fBwaitid\fP():
+.RS 4
+_SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+.br
+|| /* glibc 2.12 以降: */ _POSIX_C_SOURCE\ >=\ 200809L
+.RE
+.PD
+.ad
+.SH 説明
+これらのシステムコールはいずれも、呼び出し元プロセスの子プロセスの 状態変化を待ち、状態が変化したその子プロセスの情報を取得するのに 使用される。
+状態変化とは以下のいずれかである: 子プロセスの終了、シグナルによる子プロセスの停止、 シグナルによる子プロセスの再開。
+子プロセスが終了した場合は、wait を実行することで、 システムがその子プロセスに関連するリソースを解放できるようになる。 wait
+が実行されなかった場合には、終了した子プロセスは 「ゾンビ」状態で残り続ける (下記の注意の章を参照のこと)。
+
+子プロセスの状態変化がすでに発生していた場合、これらのコールは すぐに復帰する。それ以外の場合は、子プロセスの状態変化が起こるか、
+シグナルハンドラによりシステムコールが中断されるまで、 停止 (block) する (後者は、 \fBsigaction\fP(2)  の
+\fBSA_RESTART\fP フラグによりシステムコールが自動的に再スタートするようになっていない 場合の動作である)。
+以下の説明では、状態変化が起こったがこれらのシステムコールのいずれかに よって待たれていない子プロセスを \fIwaitable\fP (待ち可能) と呼ぶ。
+.SS "wait() と waitpid()"
+\fBwait\fP()  システムコールは、子プロセスのいずれかが終了するまで 呼び出し元のプロセスの実行を一時停止する。 呼び出し
+\fIwait(&status)\fP は以下と等価である:
+.nf
+
+    waitpid(\-1, &status, 0);
+.fi
+
+\fBwaitpid\fP()  システムコールは、 \fIpid\fP 引き数で指定した子プロセスの状態変化が起こるまで、
+呼び出し元のプロセスの実行を一時停止する。デフォルトでは、 \fBwaitpid\fP()  は子プロセスの終了だけを待つが、この動作は \fIoptions\fP
+引き数により変更可能である。
+
+\fIpid\fP に指定できる値は以下の通り:
+.IP "< \-1"
+プロセスグループID が \fIpid\fP の絶対値に等しい子プロセスのいずれかが終了するまでを待つ。
+.IP \-1
+子プロセスのどれかが終了するまで待つ。
+.IP 0
+プロセスグループID が呼び出したプロセスのものと等しい 子プロセスを待つ。
+.IP "> 0"
+プロセスID が \fIpid\fP に等しい子プロセスを待つ。
+.PP
+\fIoptions\fP の値は次の定数の 0 個以上の論理和である:
+.TP  12
+\fBWNOHANG\fP
+状態変化が起こった子プロセスがない場合にすぐに復帰する。
+.TP 
+\fBWUNTRACED\fP
+子プロセスが停止した場合にも復帰する (子プロセスが \fBptrace\fP(2)  でトレースされている場合は除く)。
+このオプションが指定されていない場合でも、停止したプロセスが 「トレース (traced)」されていれば、子プロセスの状態が報告される。
+.TP 
+\fBWCONTINUED\fP (Linux 2.6.10 以降)
+停止した子プロセスが \fBSIGCONT\fP の配送により再開した場合にも復帰する。
+.PP
+(Linux 専用オプションについては後述する)
+.PP
+\fIstatus\fP が NULL でなければ、 \fBwait\fP()  や \fBwaitpid\fP()  は \fIstatus\fP で指す \fIint\fP
+に状態情報を格納する。 この整数は以下のマクロを使って検査できる。 (これらのマクロの引き数には、 \fBwait\fP()  や \fBwaitpid\fP()
+が書き込んだ整数そのものを指定する。ポインタではない!)
+.TP 
+\fBWIFEXITED(\fP\fIstatus\fP\fB)\fP
+子プロセスが正常に終了した場合に真を返す。 「正常に」とは、 \fBexit\fP(3)  か \fB_exit\fP(2)  が呼び出された場合、もしくは
+main() から復帰した場合である。
+.TP 
+\fBWEXITSTATUS(\fP\fIstatus\fP\fB)\fP
+子プロセスの終了ステータスを返す。 終了ステータスは \fIstatus\fP 引き数の下位 8ビットで構成されており、 \fBexit\fP(3)  や
+\fB_exit\fP(2)  の呼び出し時に渡された値、もしくは main() の return 文の 引き数として指定された値である。
+このマクロを使用するのは \fBWIFEXITED\fP が真を返した場合だけにすべきである。
+.TP 
+\fBWIFSIGNALED(\fP\fIstatus\fP\fB)\fP
+子プロセスがシグナルにより終了した場合に真を返す。
+.TP 
+\fBWTERMSIG(\fP\fIstatus\fP\fB)\fP
+子プロセス終了の原因となったシグナルの番号を返す。 このマクロを使用するのは \fBWIFSIGNALED\fP が真を返した場合だけにすべきである。
+.TP 
+\fBWCOREDUMP(\fP\fIstatus\fP\fB)\fP
+子プロセスがコアダンプを生成した場合に真を返す。 このマクロを使用するのは \fBWIFSIGNALED\fP が真を返した場合だけにすべきである。
+このマクロは POSIX.1\-2001 では規定されておらず、 (AIX, SunOS などの) いくつかの UNIX の実装では利用できない。 必ず
+#ifdef WCOREDUMP ... #endif で括って使用すること。
+.TP 
+\fBWIFSTOPPED(\fP\fIstatus\fP\fB)\fP
+子プロセスがシグナルの配送により停止した場合に真を返す。 これが真になるのは、システムコールが \fBWUNTRACED\fP
+を指定して呼び出された場合か、子プロセスがトレースされている場合 (\fBptrace\fP(2)  参照) だけである。
+.TP 
+\fBWSTOPSIG(\fP\fIstatus\fP\fB)\fP
+子プロセスを停止させたシグナルの番号を返す。 このマクロを使用するのは \fBWIFSTOPPED\fP が 0 以外を返した場合だけにすべきである。
+.TP 
+\fBWIFCONTINUED(\fP\fIstatus\fP\fB)\fP
+(Linux 2.6.10 以降)  子プロセスが \fBSIGCONT\fP の配送により再開した場合に真を返す。
+.SS waitid()
+\fBwaitid\fP()  システムコール (Linux 2.6.9 以降で利用可能) を使うと、
+子プロセスのどの状態変化を待つかについてより細かな制御ができる。
+
+引き数 \fIidtype\fP と \fIid\fP でどの子プロセスを待つかを選択する:
+.IP "\fIidtype\fP == \fBP_PID\fP"
+プロセスID が \fIid\fP と一致する子プロセスを待つ。
+.IP "\fIidtype\fP == \fBP_PGID\fP"
+プロセスグループID が \fIid\fP と一致する子プロセスを待つ。
+.IP "\fIidtype\fP == \fBP_ALL\fP"
+子プロセス全部を対象に待つ。 \fIid\fP は無視される。
+.PP
+子プロセスのどの状態変化を待つかは以下のフラグで指定する (\fIoptions\fP には 1個以上のフラグの論理和をとって指定する):
+.TP  12
+\fBWEXITED\fP
+子プロセスの終了を待つ。
+.TP 
+\fBWSTOPPED\fP
+子プロセスがシグナルの配送により停止するのを待つ。
+.TP 
+\fBWCONTINUED\fP
+(停止していた) 子プロセスが \fBSIGCONT\fP が配送されて再開するのを待つ。
+.PP
+さらに以下のフラグを論理和の形で \fIoptions\fP に指定できる:
+.TP  12
+\fBWNOHANG\fP
+\fBwaitpid\fP()  と同様。
+.TP 
+\fBWNOWAIT\fP
+waitable 状態のプロセスをそのままにする。この後で wait コールを 使って、同じ子プロセスの状態情報をもう一度取得することができる。
+.PP
+成功した場合には、 \fBwaitid\fP()  は \fIinfop\fP が指す \fIsiginfo_t\fP 構造体の以下のフィールドを設定する:
+.TP  12
+\fIsi_pid\fP
+子プロセスのプロセスID。
+.TP 
+\fIsi_uid\fP
+子プロセスの実ユーザID (このフィールドは他のほとんどの実装では設定されない)。
+.TP 
+\fIsi_signo\fP
+常に \fBSIGCHLD\fP が設定される。
+.TP 
+\fIsi_status\fP
+\fB_exit\fP(2)  (か \fBexit\fP(3))  に指定された子プロセスの終了ステータス、もしくは
+子プロセスの終了、停止、再開の原因となったシグナルが設定される。 このフィールドをどう解釈するかは、 \fIsi_code\fP
+フィールドを参照して決めることができる。
+.TP 
+\fIsi_code\fP
+以下のいずれかが設定される: \fBCLD_EXITED\fP (子プロセスが \fB_exit\fP(2)  を呼び出した); \fBCLD_KILLED\fP
+(シグナルにより子プロセスが kill された); \fBCLD_DUMPED\fP (シグナルにより子プロセスが kill され、コア・ダンプが行われた);
+\fBCLD_STOPPED\fP (シグナルにより子プロセスが停止した); \fBCLD_TRAPPED\fP
+(トレースされていた子プロセスがトラップを受信した); \fBCLD_CONTINUED\fP (\fBSIGCONT\fP により子プロセスが再開された)。
+.PP
+.\" POSIX.1-2001 leaves this possibility unspecified; most
+.\" implementations (including Linux) zero out the structure
+.\" in this case, but at least one implementation (AIX 5.1)
+.\" does not -- MTK Nov 04
+\fBWNOHANG\fP が \fIoptions\fP に指定されていて、 waitable 状態の子プロセスがなかった場合には、 \fBwaitid\fP()
+はすぐに 0 を返す。このとき、 \fIinfop\fP が指す \fIsiginfo_t\fP 構造体の内容は不定である。 この場合を waitable
+状態の子プロセスがあった場合と区別するには、 \fBwaitid\fP()  を呼び出す前に \fIsi_pid\fP を 0
+にしておき、コールが復帰した後でこのフィールドが 0 以外の値かどうか をチェックすればよい。
+.SH 返り値
+\fBwait\fP(): 成功すると、終了した子プロセスのプロセスID を返す。 エラーの場合 \-1 を返す。
+
+\fBwaitpid\fP(): 成功すると、状態が変化した子プロセスのプロセスID を返す。 \fBWNOHANG\fP が指定されていて、 \fIpid\fP
+で指示された子プロセスが一つ以上存在するが、どの子プロセスでも 状態変化が起こっていなかった場合は、 0 を返す。 エラーの場合 \-1 を返す。
+
+.\" FIXME: As reported by Vegard Nossum, if infop is NULL, then waitid()
+.\" returns the PID of the child.  Either this is a bug, or it is intended
+.\" behavior that needs to be documented.  See my Jan 2009 LKML mail
+.\" "waitid() return value strangeness when infop is NULL".
+\fBwaitid\fP(): 成功すると 0 を返す。 \fBWNOHANG\fP が指定されていて、 \fIpid\fP
+で指示された子プロセスで状態変化が起こっていなかった場合にも 0 を返す。 エラーの場合 \-1 を返す。 エラーの場合、これらのシステムコールはいずれも
+\fIerrno\fP に適切な値を設定する。
+.SH エラー
+.TP 
+\fBECHILD\fP
+(\fBwait\fP()  の場合)  呼び出し元プロセスには、wait を行っていない子プロセスはない。
+.TP 
+\fBECHILD\fP
+(\fBwaitpid\fP()  か \fBwaitid\fP()  の場合)  \fIpid\fP (\fBwaitpid\fP())  か \fIidtype\fP と
+\fIid\fP (\fBwaitid\fP())  で指定したプロセスが存在しないか、呼び出し元プロセスの子プロセスでない (\fBSIGCHLD\fP の動作に
+\fBSIG_IGN\fP を設定した場合には、自分自身の子プロセスでも起こりうる。 スレッドに関しては「Linux での注意」の節も参照すること)。
+.TP 
+\fBEINTR\fP
+\fBWNOHANG\fP が設定されておらず、禁止 (block) されていないシグナルや \fBSIGCHLD\fP を受信した。 \fBsignal\fP(7)
+参照。
+.TP 
+\fBEINVAL\fP
+\fIoptions\fP 引き数が不正である。
+.SH 準拠
+SVr4, 4.3BSD, POSIX.1\-2001.
+.SH 注意
+終了したが、wait されていない子プロセスは「ゾンビ」になる。 後で親プロセスが wait を実行して子プロセスについての情報を取得できるように、
+カーネルはゾンビプロセスについて最小限の情報 (PID、終了ステータス、 リソース使用状況) を保持する。 ゾンビプロセスは、 wait
+によってシステムから削除されない限り、 カーネルのプロセステーブルの 1 エントリを消費する。このプロセステーブルが
+一杯になると、新たにプロセスを作ることができなくなる。 親プロセスが終了すると、その親プロセスの「ゾンビ」の 子プロセスは (もしあれば)
+\fBinit\fP(8)  の養子となる。 \fBinit\fP(8)  は wait を自動的に実行し、ゾンビを削除する。
+
+POSIX.1\-2001 では以下のように規定されている。 \fBSIGCHLD\fP の動作が \fBSIG_IGN\fP に設定されたか、 \fBSIGCHLD\fP
+に対して \fBSA_NOCLDWAIT\fP フラグが設定された場合 (\fBsigaction\fP(2)  参照)、終了した子プロセスはゾンビにはならず、
+\fBwait\fP()  や \fBwaitpid\fP()  の呼び出しは全ての子プロセスが終了するまで停止し、 子プロセスが全部終了した後 \fIerrno\fP
+に \fBECHILD\fP を設定して失敗する。 (もともとの POSIX 標準は \fBSIGCHLD\fP に \fBSIG_IGN\fP
+を設定した場合の振る舞いを未規定のままにしている。 \fBSIGCHLD\fP のデフォルトの動作が「無視」であるにもかかわらず、 \fBSIGCHLD\fP
+の動作として \fBSIG_IGN\fP を明示的に設定した場合にはゾンビプロセスの子プロセスの扱いが 異なる点に注意すること。)  Linux 2.6
+はこの仕様に準拠している。 しかし、Linux 2.4 (とそれ以前のバージョン) はそうではない: \fBSIGCHLD\fP が無視される状態で
+\fBwait\fP()  または \fBwaitpid\fP()  が呼び出された場合、 \fBSIGCHLD\fP が無視されていないかのように振る舞う。
+つまり、呼び出しによって次の子プロセスの終了までブロックされ、 終了した子プロセスの PID と状態が返される。
+.SS "Linux での注意"
+Linux カーネルでは、カーネルによってスケジュールされるスレッドは プロセスと明確に区別できる構成要素ではない。スレッドは Linux 固有の
+\fBclone\fP(2)  システムコールを使用して生成されるプロセスに過ぎない。 移植性のある \fBpthread_create\fP(3)
+コールのような他のルーチンは \fBclone\fP(2)  を使用して実装されている; これらでは \fBwaitid\fP()  を使うことはできない。
+Linux 2.4 より前では、スレッドは単に特殊なプロセスであったので、 例え同じスレッドグループであっても、
+あるスレッドが別のスレッドの子プロセスが終了するのを待つことは出来なかった。 しかし、POSIX ではこのような機能を規定しており、 Linux 2.4
+以降では、あるスレッドが同じスレッドグループの他のスレッドの 子プロセスが終了するのを待つことができるようになった。
+そして将来はこれがデフォルトの動作になるであろう。
+.LP
+\fBclone\fP(2)  を用いて作られた子プロセスには、以下の Linux 固有の \fIoptions\fP が使用できる。
+.TP 
+\fB__WCLONE\fP
+.\" since 0.99pl10
+"clone" な子プロセスだけを待つ。 指定されなかった場合は非 "clone" な子プロセスだけを待つ ("clone"
+な子プロセスは、終了時に親プロセスへ全くシグナルを送らないか、 \fBSIGCHLD\fP 以外のシグナルを送る)。 このオプションは \fB__WALL\fP
+も指定された場合は無視される。
+.TP 
+\fB__WALL\fP (Linux 2.4 以降)
+.\" since patch-2.3.48
+"clone" であるかないかに関わらず、 全ての子プロセスを待つ。
+.TP 
+\fB__WNOTHREAD\fP (Linux 2.4 以降)
+.\" since patch-2.4.0-test8
+同じスレッドグループの他のスレッドの子プロセスは待たない。 Linux 2.4 より前ではデフォルトであった。
+.SH バグ
+According to POSIX.1\-2008, an application calling \fBwaitid\fP()  must ensure
+that \fIinfop\fP points to a \fIsiginfo_t\fP structure (i.e., that it is a
+non\-NULL pointer).  On Linux, if \fIinfop\fP is NULL, \fBwaitid\fP()  succeeds,
+and returns the process ID of the waited\-for child.  Applications should
+avoid relying on this inconsistent, nonstandard, and unnecessary feature.
+.SH 例
+.\" fork.2 refers to this example program.
+以下のプログラムは、 \fBfork\fP(2)  と \fBwaitpid\fP()  の使用方法の例を示している。 このプログラムでは子プロセスを生成する。
+コマンドライン引き数が指定されなかったときは、 子プロセスは \fBpause\fP(2)  を使ってその実行を一時停止し、ユーザがその子プロセスに
+シグナルを送信できるようにする。 コマンドライン引き数が指定された場合は、 子プロセスは直ちに終了し、
+コマンドラインで指定された整数を終了ステータスとして使用する。 親プロセスは、 \fBwaitpid\fP()  を使って子プロセスを監視し、 wait
+のステータス値を上記の W*() マクロを使って解析するという ループを実行する。
+
+以下のシェルのセッションはこのプログラムの使用例を示したものである。
+.in +4n
+.nf
+
+$\fB ./a.out &\fP
+Child PID is 32360
+[1] 32359
+$\fB kill \-STOP 32360\fP
+stopped by signal 19
+$\fB kill \-CONT 32360\fP
+continued
+$\fB kill \-TERM 32360\fP
+killed by signal 15
+[1]+  Done                    ./a.out
+$
+.fi
+.in
+.SS プログラムのソース
+\&
+.nf
+#include <sys/wait.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+
+int
+main(int argc, char *argv[])
+{
+    pid_t cpid, w;
+    int status;
+
+    cpid = fork();
+    if (cpid == \-1) {
+        perror("fork");
+        exit(EXIT_FAILURE);
+    }
+
+    if (cpid == 0) {            /* Code executed by child */
+        printf("Child PID is %ld\en", (long) getpid());
+        if (argc == 1)
+            pause();                    /* Wait for signals */
+        _exit(atoi(argv[1]));
+
+    } else {                    /* Code executed by parent */
+        do {
+            w = waitpid(cpid, &status, WUNTRACED | WCONTINUED);
+            if (w == \-1) {
+                perror("waitpid");
+                exit(EXIT_FAILURE);
+            }
+
+            if (WIFEXITED(status)) {
+                printf("exited, status=%d\en", WEXITSTATUS(status));
+            } else if (WIFSIGNALED(status)) {
+                printf("killed by signal %d\en", WTERMSIG(status));
+            } else if (WIFSTOPPED(status)) {
+                printf("stopped by signal %d\en", WSTOPSIG(status));
+            } else if (WIFCONTINUED(status)) {
+                printf("continued\en");
+            }
+        } while (!WIFEXITED(status) && !WIFSIGNALED(status));
+        exit(EXIT_SUCCESS);
+    }
+}
+.fi
+.SH 関連項目
+\fB_exit\fP(2), \fBclone\fP(2), \fBfork\fP(2), \fBkill\fP(2), \fBptrace\fP(2),
+\fBsigaction\fP(2), \fBsignal\fP(2), \fBwait4\fP(2), \fBpthread_create\fP(3),
+\fBcredentials\fP(7), \fBsignal\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/wait4.2 b/manual/LDP_man-pages/draft/man2/wait4.2
new file mode 100644 (file)
index 0000000..75c767f
--- /dev/null
@@ -0,0 +1,127 @@
+.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de)
+.\" and Copyright (c) 2004 by Michael Kerrisk (mtk.manpages@gmail.com)
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified Sat Jul 24 13:32:44 1993 by Rik Faith (faith@cs.unc.edu)
+.\" Modified Mon Jun 23 14:09:52 1997 by aeb - add EINTR.
+.\" Modified Tue Jul  7 12:26:42 1998 by aeb - changed return value wait3
+.\" Modified 2004-11-11, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Rewrote much of this page, and removed much duplicated text,
+.\"            replacing with pointers to wait.2
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH WAIT4 2 2012\-09\-23 Linux "Linux Programmer's Manual"
+.SH 名前
+wait3, wait4 \- BSD スタイルでプロセスの状態変化を待つ
+.SH 書式
+.nf
+\fB#include <sys/types.h>\fP
+\fB#include <sys/time.h>\fP
+\fB#include <sys/resource.h>\fP
+\fB#include <sys/wait.h>\fP
+.sp
+\fBpid_t wait3(int *\fP\fIstatus\fP\fB, int \fP\fIoptions\fP\fB,\fP
+\fB            struct rusage *\fP\fIrusage\fP\fB);\fP
+.sp
+\fBpid_t wait4(pid_t \fP\fIpid\fP\fB, int *\fP\fIstatus\fP\fB, int \fP\fIoptions\fP\fB,\fP
+\fB            struct rusage *\fP\fIrusage\fP\fB);\fP
+.fi
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+.ad l
+\fBwait3\fP():
+.RS 4
+_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+.RE
+.br
+\fBwait4\fP():
+.RS 4
+_BSD_SOURCE
+.RE
+.ad
+.SH 説明
+These functions are obsolete; use \fBwaitpid\fP(2)  or \fBwaitid\fP(2)  in new
+programs.
+
+システムコール \fBwait3\fP()  と \fBwait4\fP()  は \fBwaitpid\fP(2)
+と同様の動作をする。それに加え、子プロセスのリソース使用状況の情報を \fIrusage\fP が指す構造体に入れて返す。
+.PP
+\fIrusage\fP を使用する点を除けば、次の \fBwait3\fP()  の呼び出し
+.nf
+
+    wait3(status, options, rusage);
+
+.fi
+は以下と等価である。
+.nf
+
+    waitpid(\-1, status, options);
+
+.fi
+同様に、次の \fBwait4\fP()  の呼び出し
+.nf
+
+    wait4(pid, status, options, rusage);
+
+.fi
+は以下と等価である。
+.nf
+
+    waitpid(pid, status, options);
+
+.fi
+言い換えると、 \fBwait3\fP()  は全ての子プロセスを対象に待つが、 \fBwait4\fP()  では特定の子プロセス (複数可)
+を選んで待つことができる。
+.PP
+\fIrusage\fP が NULL でない場合、 \fIrusage\fP が指す \fIrusage 構造体\fP には子プロセスのアカウント情報が格納される。
+詳しくは \fBgetrusage\fP(2)  を参照のこと。
+.SH 返り値
+\fBwaitpid\fP(2)  と同様。
+.SH エラー
+\fBwaitpid\fP(2)  と同様。
+.SH 準拠
+4.3BSD.
+
+SUSv1 included a specification of \fBwait3\fP(); SUSv2 included \fBwait3\fP(), but
+marked it LEGACY; SUSv3 removed it.
+.SH 注意
+現在では \fI<sys/time.h>\fP をインクルードする必要はないが、インクルードしておくと 移植性を高めることができる (実際には
+\fI<sys/resource.h>\fP で \fIrusage\fP 構造体が定義されているが、そのフィールドで使用されている
+\fIstruct timeval\fP 型は \fI<sys/time.h>\fP で定義されている)。
+
+Linux では、 \fBwait3\fP()  はライブラリ関数であり、 \fBwait4\fP()  システムコールを使って実装されている。
+.SH 関連項目
+\fBfork\fP(2), \fBgetrusage\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBwait\fP(2),
+\fBsignal\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man2/write.2 b/manual/LDP_man-pages/draft/man2/write.2
new file mode 100644 (file)
index 0000000..94f54b3
--- /dev/null
@@ -0,0 +1,141 @@
+.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
+.\"             and Copyright (C) 1993 Michael Haardt, Ian Jackson.
+.\" and Copyright (C) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Modified Sat Jul 24 13:35:59 1993 by Rik Faith <faith@cs.unc.edu>
+.\" Modified Sun Nov 28 17:19:01 1993 by Rik Faith <faith@cs.unc.edu>
+.\" Modified Sat Jan 13 12:58:08 1996 by Michael Haardt
+.\"   <michael@cantor.informatik.rwth-aachen.de>
+.\" Modified Sun Jul 21 18:59:33 1996 by Andries Brouwer <aeb@cwi.nl>
+.\" 2001-12-13 added remark by Zack Weinberg
+.\" 2007-06-18 mtk:
+.\"            Added details about seekable files and file offset.
+.\"    Noted that write() may write less than 'count' bytes, and
+.\"    gave some examples of why this might occur.
+.\"    Noted what happens if write() is interrupted by a signal.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH WRITE 2 2013\-01\-27 Linux "Linux Programmer's Manual"
+.SH 名前
+write \- ファイルディスクリプタ (file descriptor) に書き込む
+.SH 書式
+\fB#include <unistd.h>\fP
+.sp
+\fBssize_t write(int \fP\fIfd\fP\fB, const void *\fP\fIbuf\fP\fB, size_t \fP\fIcount\fP\fB);\fP
+.SH 説明
+\fBwrite\fP()  は、 \fIbuf\fP が指すバッファから、ファイルディスクリプタ \fIfd\fP が参照するファイルへ、最大 \fIcount\fP
+バイトを書き込む。
+
+書き込まれるバイト数は \fIcount\fP よりも小さくなることがある。 例えば、書き込み対象の物理メディアに十分な領域がない場合、 リソース上限
+\fBRLIMIT_FSIZE\fP に達した場合 (\fBsetrlimit\fP(2)  参照)、 \fIcount\fP バイト未満の書き込みが行われた後で
+呼び出しがシグナルハンドラにより割り込まれた場合、 などである。 (\fBpipe\fP(7)  も参照のこと。)
+
+seek 可能なファイル (つまり \fBlseek\fP(2)  が適用できるファイル、例えば通常のファイル) では、
+書き込みは現在のファイルオフセットから行われ、 ファイルオフセットは実際に書き込みが行われたバイト数分 加算される。ファイルが \fBO_APPEND\fP
+で \fBopen\fP(2)  された場合、ファイルオフセットは書き込み前に ファイルの末尾に設定される。
+ファイルオフセットの調整と書き込み操作はアトミックな処理として 実行される。
+
+POSIX は \fBwrite\fP()  が行なわれた後に実行した \fBread\fP(2)  が 新しいデータを返すことを要求している。
+全てのファイルシステムが POSIX 準拠ではない点に注意すること。
+.SH 返り値
+成功した場合、書き込まれたバイト数が返される (ゼロは何も書き込まれなかったことを示す)。 エラーならば \-1 が返され、\fIerrno\fP
+が適切に設定される。
+
+\fIcount\fP が 0 で、 \fIfd\fP が通常のファイル (regular file) を参照している場合、 \fBwrite\fP()
+は後述のエラーのいずれかを検出した場合、失敗を返すことがある。 エラーが検出されなかった場合は、 0 を返し、他に何の影響も与えない。 \fIcount\fP
+が 0 で、 \fIfd\fP が通常のファイル以外のファイルを参照している場合、 その結果は規定されていない。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+ファイルディスクリプタ \fIfd\fP がソケット以外のファイルを参照していて、 非停止 (nonblocking) モード (\fBO_NONBLOCK\fP)
+に設定されており、書き込みを行うと停止する状況にある。
+.TP 
+\fBEAGAIN\fP または \fBEWOULDBLOCK\fP
+.\" Actually EAGAIN on Linux
+ファイルディスクリプタ \fIfd\fP がソケットを参照していて、非停止 (nonblocking) モード (\fBO_NONBLOCK\fP)
+に設定されており、書き込みを行うと停止する状況にある。 POSIX.1\-2001 は、この場合にどちらのエラーを返すことも認めており、 これら 2
+つの定数が同じ値を持つことも求めていない。 したがって、移植性が必要なアプリケーションでは、両方の可能性を 確認すべきである。
+.TP 
+\fBEBADF\fP
+\fIfd\fP が有効なファイルディスクリプタでないか書き込みのためにオープン (open) されていない。
+.TP 
+\fBEDESTADDRREQ\fP
+\fIfd\fP が、 \fBconnect\fP(2)  を使って通信相手のアドレスが設定されていないデータグラムソケットを 参照している。
+.TP 
+\fBEDQUOT\fP
+The user's quota of disk blocks on the file system containing the file
+referred to by \fIfd\fP has been exhausted.
+.TP 
+\fBEFAULT\fP
+\fIbuf\fP がアクセス可能なアドレス空間の外にある。
+.TP 
+\fBEFBIG\fP
+実装定義の最大ファイルサイズまたはプロセスのファイルサイズ制限を 超えてファイルに書き込もうとした。
+または許可されたオフセット値の限界を超えた先の位置に 書き込もうとした。
+.TP 
+\fBEINTR\fP
+何のデータも書かない間にシグナルにより割り込まれた (interrupt)。 \fBsignal\fP(7)  参照。
+.TP 
+\fBEINVAL\fP
+\fIfd\fP が書き込みが不適切なオブジェクトを参照している。 もしくは、ファイルが \fBO_DIRECT\fP フラグを指定してオープンされているが、
+\fIbuf\fP に指定されたアドレス、 \fIcount\fP に指定された値、 現在のファイルオフセットのいずれかの アラインメントが不適切である。
+.TP 
+\fBEIO\fP
+inode の修正中に低レべル (low\-level) I/O エラーが発生した。
+.TP 
+\fBENOSPC\fP
+\fIfd\fP によって参照されるファイルを含むデバイス (device) に十分な空きがない。
+.TP 
+\fBEPIPE\fP
+\fIfd\fP がパイプ (pipe) かソケット (socket) に接続されており、 その反対側 (読み込み側) がクローズ (close)
+されている。 これが発生した場合には、書き込みを行なうプロセスは \fBSIGPIPE\fP シグナル (signal)も受ける。
+(したがって、プログラムがこのシグナルを捕獲 (catch)、停止 (block)、無視 (ignore)  した場合のみ、write
+の返り値を参照できる。)
+.PP
+\fIfd\fP に接続されたオブジェクトによっては、他のエラーが起こるかもしれない。
+.SH 準拠
+.\" SVr4 documents additional error
+.\" conditions EDEADLK, ENOLCK, ENOLNK, ENOSR, ENXIO, or ERANGE.
+SVr4, 4.3BSD, POSIX.1\-2001.
+
+SVr4 では write が割り込まれると、データが書き込まれる直前ではなく、 その時点で \fBEINTR\fP が返る。
+.SH 注意
+\fBwrite\fP()  が成功して返ってきても、データがディスクに記録されたことを 保証するものではない。
+実際、データのためのスペースが確保されたことすら保証されないという バグっぽい実装もある。 これを確実にする唯一の方法は、 全てのデータを write
+した後に \fBfsync\fP(2)  を呼び出すことである。
+
+\fBwrite\fP()  が 1 バイトも書き込まないうちにシグナルハンドラにより割り込まれた場合、 \fBwrite\fP()  はエラー \fBEINTR\fP
+で失敗する。 1バイトでも書き込んだ後で割り込まれた場合には、 \fBwrite\fP()  は成功し、書き込んだバイト数を返す。
+.SH 関連項目
+\fBclose\fP(2), \fBfcntl\fP(2), \fBfsync\fP(2), \fBioctl\fP(2), \fBlseek\fP(2), \fBopen\fP(2),
+\fBpwrite\fP(2), \fBread\fP(2), \fBselect\fP(2), \fBwritev\fP(2), \fBfwrite\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9cfa0af..3d4ab36 100644 (file)
@@ -254,6 +254,6 @@ main(int argc, char *argv[])
 \fBsched_setaffinity\fP(2), \fBpthread_attr_setaffinity_np\fP(3),
 \fBpthread_setaffinity_np\fP(3), \fBcpuset\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1742e06..3740215 100644 (file)
@@ -65,6 +65,6 @@ glibc システムではマクロ \fBHUGE_VAL\fP が常に使用可能である
 .SH 関連項目
 \fBfpclassify\fP(3), \fBmath_error\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 63e5381..fa0cc91 100644 (file)
@@ -38,6 +38,6 @@ C99, POSIX.1\-2001.
 \fBMB_LEN_MAX\fP(3), \fBmblen\fP(3), \fBmbstowcs\fP(3), \fBmbtowc\fP(3), \fBwcstombs\fP(3),
 \fBwctomb\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a5310f1..de5fb7b 100644 (file)
@@ -38,6 +38,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBMB_CUR_MAX\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c2126a5..7c3d51d 100644 (file)
@@ -47,6 +47,6 @@ FPU のコントロールワードへどうしても直接アクセスする必
 .br
 \fI<fpu_control.h>\fP
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 39e4c9c..def2355 100644 (file)
@@ -65,6 +65,6 @@ POSIX.1\-2001.
 .\" .BR itoa (3),
 \fBuuencode\fP(1), \fBstrtoul\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9c6e653..c68ec77 100644 (file)
@@ -62,6 +62,6 @@ SVr4, POSIX.1\-2001, 4.3BSD, C89, C99.
 .SH 関連項目
 \fBgdb\fP(1), \fBsigaction\fP(2), \fBexit\fP(3), \fBlongjmp\fP(3), \fBraise\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 60e48f6..ce11fe2 100644 (file)
@@ -72,7 +72,7 @@ or \fIcc\ \-std=c99\fP
 .SH 返り値
 それぞれの関数の型に応じた整数の引数の絶対値を返す。
 .SH 準拠
-.\" POSIX.1 (1996 edition) only requires the
+.\" POSIX.1 (1996 edition) requires only the
 .\" .BR abs ()
 .\" function.
 SVr4, POSIX.1\-2001, 4.3BSD, C99.  C89 は \fBabs\fP()  関数と \fBlabs\fP()  関数のみを含んでいる。
@@ -91,6 +91,6 @@ GCC は \fBabs\fP()  と \fBlabs\fP()  をビルドイン関数として扱う
 .SH 関連項目
 \fBcabs\fP(3), \fBceil\fP(3), \fBfabs\fP(3), \fBfloor\fP(3), \fBrint\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7dd7eee..ac0b974 100644 (file)
@@ -90,6 +90,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 \fBasin\fP(3), \fBatan\fP(3), \fBatan2\fP(3), \fBcacos\fP(3), \fBcos\fP(3), \fBsin\fP(3),
 \fBtan\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 23ddf44..57c6935 100644 (file)
@@ -98,6 +98,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 .SH 関連項目
 \fBasinh\fP(3), \fBatanh\fP(3), \fBcacosh\fP(3), \fBcosh\fP(3), \fBsinh\fP(3), \fBtanh\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c5e71d3..9d20009 100644 (file)
@@ -1,7 +1,7 @@
 .\"  Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de)
 .\"
 .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
-.\"  Distributed under GPL
+.\" Distributed under GPL
 .\" %%%LICENSE_END
 .\"  adapted glibc info page
 .\"
@@ -46,6 +46,6 @@ System V システムで利用可能である。
 .SH 関連項目
 \fBfmtmsg\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1eddacd..0d49d75 100644 (file)
@@ -91,6 +91,6 @@ struct timeval {
 .SH 関連項目
 \fBadjtimex\fP(2), \fBgettimeofday\fP(2), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ae9ef38..ff5629e 100644 (file)
@@ -90,6 +90,6 @@ POSIX.1\-2001, POSIX.1\-2008.
 \fBaio_error\fP(3), \fBaio_fsync\fP(3), \fBaio_read\fP(3), \fBaio_return\fP(3),
 \fBaio_suspend\fP(3), \fBaio_write\fP(3), \fBlio_listio\fP(3), \fBaio\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0f0078b..dbd5bfd 100644 (file)
@@ -68,6 +68,6 @@ POSIX.1\-2001, POSIX.1\-2008.
 \fBaio_cancel\fP(3), \fBaio_fsync\fP(3), \fBaio_read\fP(3), \fBaio_return\fP(3),
 \fBaio_suspend\fP(3), \fBaio_write\fP(3), \fBlio_listio\fP(3), \fBaio\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a7c6d51..ebadbe4 100644 (file)
@@ -77,6 +77,6 @@ POSIX.1\-2001, POSIX.1\-2008.
 \fBaio_suspend\fP(3), \fBaio_write\fP(3), \fBlio_listio\fP(3), \fBaio\fP(7),
 \fBsigevent\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 46cc003..e7179a4 100644 (file)
@@ -95,6 +95,6 @@ The \fBaio_init\fP() 関数は glibc 2.1 以降で利用できる。
 .SH 関連項目
 \fBaio\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9263ed6..a2caa34 100644 (file)
@@ -103,6 +103,6 @@ POSIX.1\-2001, POSIX.1\-2008.
 \fBaio_cancel\fP(3), \fBaio_error\fP(3), \fBaio_fsync\fP(3), \fBaio_return\fP(3),
 \fBaio_suspend\fP(3), \fBaio_write\fP(3), \fBlio_listio\fP(3), \fBaio\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 765083b..f3361a8 100644 (file)
@@ -65,6 +65,6 @@ POSIX.1\-2001, POSIX.1\-2008.
 \fBaio_cancel\fP(3), \fBaio_error\fP(3), \fBaio_fsync\fP(3), \fBaio_read\fP(3),
 \fBaio_suspend\fP(3), \fBaio_write\fP(3), \fBlio_listio\fP(3), \fBaio\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8026c7d..21e6dfb 100644 (file)
@@ -93,6 +93,6 @@ POSIX.1\-2001, POSIX.1\-2008.
 \fBaio_cancel\fP(3), \fBaio_error\fP(3), \fBaio_fsync\fP(3), \fBaio_read\fP(3),
 \fBaio_return\fP(3), \fBaio_write\fP(3), \fBlio_listio\fP(3), \fBaio\fP(7), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c848296..350119d 100644 (file)
@@ -102,6 +102,6 @@ POSIX.1\-2001, POSIX.1\-2008.
 \fBaio_cancel\fP(3), \fBaio_error\fP(3), \fBaio_fsync\fP(3), \fBaio_read\fP(3),
 \fBaio_return\fP(3), \fBaio_suspend\fP(3), \fBlio_listio\fP(3), \fBaio\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9782624..da4d7db 100644 (file)
@@ -99,6 +99,6 @@ alloca \- 自動的に解放されるメモリを割り当てる
 .SH 関連項目
 \fBbrk\fP(2), \fBlongjmp\fP(3), \fBmalloc\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index fe0e8f5..ed4f498 100644 (file)
@@ -114,6 +114,6 @@ NULL バイトで終端されていない argz vector を使用した場合、 s
 .SH 関連項目
 \fBenvz_add\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f2f34c9..577f0c7 100644 (file)
@@ -93,6 +93,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 \fBacos\fP(3), \fBatan\fP(3), \fBatan2\fP(3), \fBcasin\fP(3), \fBcos\fP(3), \fBsin\fP(3),
 \fBtan\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7ab9e54..e26c828 100644 (file)
@@ -94,6 +94,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 .SH 関連項目
 \fBacosh\fP(3), \fBatanh\fP(3), \fBcasinh\fP(3), \fBcosh\fP(3), \fBsinh\fP(3), \fBtanh\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b7e2407..25d9bef 100644 (file)
@@ -54,6 +54,6 @@ asprintf, vasprintf \- 文字列を割り当ててそれに出力する
 .SH 関連項目
 \fBfree\fP(3), \fBmalloc\fP(3), \fBprintf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8714b25..87b4c1d 100644 (file)
@@ -59,6 +59,6 @@ POSIX.1\-2001, C89, C99.  C89 では \fBexpression\fP は \fIint\fP
 .SH 関連項目
 \fBabort\fP(3), \fBassert_perror\fP(3), \fBexit\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 04bf3b7..64b2560 100644 (file)
@@ -57,6 +57,6 @@ assert マクロの目的は、プログラマがプログラム中のバグを
 .SH 関連項目
 \fBabort\fP(3), \fBassert\fP(3), \fBexit\fP(3), \fBstrerror\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f8cc739..b97be00 100644 (file)
@@ -88,6 +88,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 \fBacos\fP(3), \fBasin\fP(3), \fBatan2\fP(3), \fBcarg\fP(3), \fBcatan\fP(3), \fBcos\fP(3),
 \fBsin\fP(3), \fBtan\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index fd0235a..fe28b1a 100644 (file)
@@ -116,6 +116,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 \fBacos\fP(3), \fBasin\fP(3), \fBatan\fP(3), \fBcarg\fP(3), \fBcos\fP(3), \fBsin\fP(3),
 \fBtan\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ed3948b..7bd1903 100644 (file)
@@ -111,6 +111,6 @@ glibc 2.9 とそれ以前のバージョンでは、 極エラーが発生した
 .SH 関連項目
 \fBacosh\fP(3), \fBasinh\fP(3), \fBcatanh\fP(3), \fBcosh\fP(3), \fBsinh\fP(3), \fBtanh\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8686b71..18793f9 100644 (file)
@@ -117,6 +117,6 @@ main(void)
 .SH 関連項目
 \fB_exit\fP(2), \fBexit\fP(3), \fBon_exit\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index dd00183..a687887 100644 (file)
@@ -58,6 +58,6 @@ SVr4, POSIX.1\-2001, 4.3BSD, C89, C99.
 .SH 関連項目
 \fBatoi\fP(3), \fBatol\fP(3), \fBstrtod\fP(3), \fBstrtol\fP(3), \fBstrtoul\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 61bf958..2fcda37 100644 (file)
@@ -88,6 +88,6 @@ SVr4, POSIX.1\-2001, 4.3BSD, C99.  C89 と POSIX.1\-1996 には \fBatoi\fP()  
 .SH 関連項目
 \fBatof\fP(3), \fBstrtod\fP(3), \fBstrtol\fP(3), \fBstrtoul\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 14b373c..c7023b2 100644 (file)
@@ -166,6 +166,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBgcc\fP(1), \fBld\fP(1), \fBdlopen\fP(3), \fBmalloc\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a3d3459..8e8fea7 100644 (file)
@@ -115,6 +115,6 @@ printf("dirname=%s, basename=%s\en", dname, bname);
 .SH 関連項目
 \fBbasename\fP(1), \fBdirname\fP(1)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7cadf2f..d811930 100644 (file)
@@ -54,6 +54,6 @@ bcmp \- バイト列を比較する
 \fBmemcmp\fP(3), \fBstrcasecmp\fP(3), \fBstrcmp\fP(3), \fBstrcoll\fP(3),
 \fBstrncasecmp\fP(3), \fBstrncmp\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b1a9045..58039ee 100644 (file)
@@ -55,6 +55,6 @@ bcopy \- バイト列をコピーする
 .SH 関連項目
 \fBmemccpy\fP(3), \fBmemcpy\fP(3), \fBmemmove\fP(3), \fBstrcpy\fP(3), \fBstrncpy\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a32ac0b..640be78 100644 (file)
@@ -75,6 +75,6 @@ POSIX.1\-2001 にはない。 BSD, Solaris およびその他の多くのシス
 .SH 関連項目
 \fBbind\fP(2), \fBgetsockname\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 52b9b49..7e62c78 100644 (file)
@@ -64,6 +64,6 @@ bsd_signal \- BSD 方式のシグナル処理
 .SH 関連項目
 \fBsigaction\fP(2), \fBsignal\fP(2), \fBsysv_signal\fP(3), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 48fee26..4361c9e 100644 (file)
@@ -108,6 +108,6 @@ main(int argc, char **argv)
 .SH 関連項目
 \fBhsearch\fP(3), \fBlsearch\fP(3), \fBqsort\fP(3), \fBtsearch\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e10abd5..4127457 100644 (file)
@@ -76,6 +76,6 @@ memmove, memset \- バイト列の操作を行なう
 \fBmemcmp\fP(3), \fBmemcpy\fP(3), \fBmemfrob\fP(3), \fBmemmem\fP(3), \fBmemmove\fP(3),
 \fBmemset\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 3f9e8c6..b71192f 100644 (file)
@@ -43,6 +43,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBmbrtowc\fP(3), \fBmbtowc\fP(3), \fBwctob\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 87cf387..794849f 100644 (file)
@@ -168,6 +168,6 @@ Systems, Vol. 2, 1 (March 1977), 11\-26.
 \fIThe Art of Computer Programming Vol. 3: Sorting and Searching\fP,
 D.E. Knuth, 1968, pp 471\-480.
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 88b1839..15fa448 100644 (file)
@@ -72,6 +72,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBendian\fP(3), \fBgethostbyname\fP(3), \fBgetservent\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 3c8f650..974c8cd 100644 (file)
@@ -53,6 +53,6 @@ bzero \- 値 0 のバイトで埋める
 .SH 関連項目
 \fBmemset\fP(3), \fBswab\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 33f95a1..2d6ae78 100644 (file)
@@ -33,6 +33,6 @@ C99.
 .SH 関連項目
 \fBabs\fP(3), \fBcimag\fP(3), \fBhypot\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 15a6b32..3e82fb9 100644 (file)
@@ -71,6 +71,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBccos\fP(3), \fBclog\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index d7c1599..ff49f09 100644 (file)
@@ -69,6 +69,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBacosh\fP(3), \fBcabs\fP(3), \fBccosh\fP(3), \fBcimag\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/canonicalize_file_name.3 b/manual/LDP_man-pages/draft/man3/canonicalize_file_name.3
new file mode 100644 (file)
index 0000000..6bebd8d
--- /dev/null
@@ -0,0 +1,68 @@
+.\" Copyright 2013 Michael Kerrisk (mtk.manpages@gmail.com).
+.\" (Replaces an earlier page by Walter Harms and Michael Kerrisk)
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH CANONICALIZE_FILE_NAME 3 2013\-03\-10 GNU "Linux Programmer's Manual"
+.SH 名前
+canonicalize_file_name \- 正規化された絶対パス名を返す
+.SH 書式
+\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */
+.br
+\fB#include <stdlib.h>\fP
+.sp
+\fBchar *canonicalize_file_name(const char *\fP\fIpath\fP\fB);\fP
+.SH 説明
+The \fBcanonicalize_file_name\fP()  function returns a null\-terminated string
+containing the canonicalized absolute pathname corresponding to \fIpath\fP.  In
+the returned string, symbolic links are resolved, as are \fI.\fP and \fI..\fP
+pathname components.  Consecutive slash (\fI/\fP)  characters are replaced by a
+single slash.
+
+The returned string is dynamically allocated by \fBcanonicalize_file_name\fP()
+and the caller should deallocate it with \fBfree\fP(3)  when it is no longer
+required.
+
+\fIcanonicalize_file_name(path)\fP は以下と等価である。
+
+    realpath(path, NULL);
+.SH 準拠
+この関数は GNU による拡張である。
+.SH 返り値
+On success, \fBcanonicalize_file_name\fP()  returns a null\-terminated string.
+On error (e.g., a pathname component is unreadable or does not exist),
+\fBcanonicalize_file_name\fP()  returns NULL and sets \fIerrno\fP to indicate the
+error.
+.SH エラー
+\fBrealpath\fP(3) 参照。
+.SH 関連項目
+\fBreadlink\fP(2), \fBrealpath\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1468f79..8c323b9 100644 (file)
@@ -54,6 +54,6 @@ C99.
 .SH 関連項目
 \fBcabs\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 160684d..95748b7 100644 (file)
@@ -37,6 +37,6 @@ C99.
 .SH 関連項目
 \fBclog\fP(3), \fBcsin\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e2386c0..e60ed3d 100644 (file)
@@ -37,6 +37,6 @@ C99.
 .SH 関連項目
 \fBasinh\fP(3), \fBcabs\fP(3), \fBcimag\fP(3), \fBcsinh\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e0dc616..83523e6 100644 (file)
@@ -71,6 +71,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBccos\fP(3), \fBclog\fP(3), \fBctan\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 22a7848..a8b2304 100644 (file)
@@ -69,6 +69,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBatanh\fP(3), \fBcabs\fP(3), \fBcimag\fP(3), \fBctanh\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 40797e3..3df7fce 100644 (file)
@@ -58,6 +58,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBcatopen\fP(3), \fBsetlocale\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f8e80a6..78b563f 100644 (file)
@@ -92,6 +92,6 @@ POSIX.1\-2001.  定数 \fBMCLoadBySet\fP と \fBMCLoadAll\fP に対応するソ
 .SH 関連項目
 \fBcatgets\fP(3), \fBsetlocale\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0f94143..a043dec 100644 (file)
@@ -84,6 +84,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBpow\fP(3), \fBsqrt\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 380a8a7..177c8bd 100644 (file)
@@ -35,6 +35,6 @@ C99.
 .SH 関連項目
 \fBcabs\fP(3), \fBcacos\fP(3), \fBcsin\fP(3), \fBctan\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 40aea34..374d70e 100644 (file)
@@ -35,6 +35,6 @@ C99.
 .SH 関連項目
 \fBcabs\fP(3), \fBcacosh\fP(3), \fBcsinh\fP(3), \fBctanh\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2133f09..4063538 100644 (file)
@@ -85,6 +85,6 @@ SUSv2 と POSIX.1\-2001 にはオーバーフローに関する記述があり
 \fBfloor\fP(3), \fBlrint\fP(3), \fBnearbyint\fP(3), \fBrint\fP(3), \fBround\fP(3),
 \fBtrunc\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index afb9890..20256de 100644 (file)
@@ -40,6 +40,6 @@ cerf, cerff, cerfl, cerfc, cerfcf, cerfcl \- 複素数の誤差関数
 .SH 関連項目
 \fBerf\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9350d47..1c8e2cc 100644 (file)
@@ -37,6 +37,6 @@ C99.
 .SH 関連項目
 \fBcabs\fP(3), \fBcexp2\fP(3), \fBclog\fP(3), \fBcpow\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index cef5de7..67a682a 100644 (file)
@@ -32,6 +32,6 @@ cexp2, cexp2f, cexp2l \- 複素数の 2 の累乗
 .SH 関連項目
 \fBcabs\fP(3), \fBcexp\fP(3), \fBclog10\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index d41b110..7e7faaf 100644 (file)
@@ -86,6 +86,6 @@ Specification, Edition 2 (Intel386 バイナリ互換仕様、第 2 版) に準
 .SH 関連項目
 \fBmalloc\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2f486ce..863ddc2 100644 (file)
@@ -39,6 +39,6 @@ gcc では __imag__ を使うこともできるが、 これは GNU による拡
 .SH 関連項目
 \fBcabs\fP(3), \fBcreal\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8c51db6..64197ae 100644 (file)
@@ -55,7 +55,7 @@ libc4, libc5 では使用できない。 glibc 2.0 以降の glibc で使用で
 (DG/UX, HP\-UX, QNX, などの) 多くの UNIX 系 OS。 (FORTRAN77 へのバインディングである) POSIX.9。
 POSIX.1\-1996 では \fBclearenv\fP()  と \fBputenv\fP(3)  は採用されなかったが、
 方針が変更され、この標準規格の以降の号 (B.4.6.1 を参照) では 採用されることになった。 しかし POSIX.1\-2001 では
-\fBputenv\fP(3)  しか追加されず、 \fBclearenv\fP()  の追加は否決された。
+\fBputenv\fP(3) だけが追加され、 \fBclearenv\fP()  の追加は否決された。
 .SH 注意
 この関数はセキュリティに考慮したアプリケーションで使われる。 この関数が使用できない場合は、
 .nf
@@ -72,6 +72,6 @@ DG/UX と Tru64 man ページには次のように記されている: \fIenvir
 .SH 関連項目
 \fBgetenv\fP(3), \fBputenv\fP(3), \fBsetenv\fP(3), \fBunsetenv\fP(3), \fBenviron\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b31531f..9922b24 100644 (file)
@@ -65,6 +65,6 @@ C の標準規格ではプログラムの開始の時点ではどんな値が返
 .SH 関連項目
 \fBclock_gettime\fP(2), \fBgetrusage\fP(2), \fBtimes\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 563f4e6..8977127 100644 (file)
@@ -40,6 +40,6 @@ C99.
 .SH 関連項目
 \fBcabs\fP(3), \fBcexp\fP(3), \fBclog10\fP(3), \fBclog2\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f33e8ed..31af2a4 100644 (file)
@@ -36,6 +36,6 @@ clog10, clog10f, clog10l \- 底が 10 の複素数の対数
 .SH 関連項目
 \fBcabs\fP(3), \fBcexp\fP(3), \fBclog\fP(3), \fBclog2\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c2b0617..0d74818 100644 (file)
@@ -36,6 +36,6 @@ clog2, clog2f, clog2l \- 底が 2 の複素数の対数
 .SH 関連項目
 \fBcabs\fP(3), \fBcexp\fP(3), \fBclog\fP(3), \fBclog10\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1d95a04..858c8ba 100644 (file)
@@ -62,6 +62,6 @@ SVr4, POSIX.1\-2001, 4.3BSD.
 \fBclose\fP(2), \fBopendir\fP(3), \fBreaddir\fP(3), \fBrewinddir\fP(3), \fBscandir\fP(3),
 \fBseekdir\fP(3), \fBtelldir\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7957eaf..1ee1dea 100644 (file)
@@ -81,7 +81,7 @@ struct cmsghdr {
 この補助データモデルは、POSIX.1g draft, 4.4BSD\-Lite, RFC\ 2292 に 記述されている IPv6 advanced
 API, そして SUSv2 に準拠している。 \fBCMSG_ALIGN\fP()  は Linux の拡張である。
 .SH 注意
-移æ¤\8dæ\80§ã\81®ã\81\9fã\82\81ã\81«ã\80\81è£\9cå\8a©ã\83\87ã\83¼ã\82¿ã\81¸ã\81®ã\82¢ã\82¯ã\82»ã\82¹ã\81«ã\81¯ã\80\81 ã\81\93ã\81\93ã\81§è¿°ã\81¹ã\82\89ã\82\8cã\81¦ã\81\84ã\82\8bã\83\9eã\82¯ã\83­ã\82\92使ã\81\86ã\81 ã\81\91ã\81«ã\81\99べきである。 \fBCMSG_ALIGN\fP()  は Linux
+移æ¤\8dæ\80§ã\81®ã\81\9fã\82\81ã\81«ã\80\81è£\9cå\8a©ã\83\87ã\83¼ã\82¿ã\81¸ã\81®ã\82¢ã\82¯ã\82»ã\82¹ã\81«ã\81¯ã\80\81 ã\81\93ã\81\93ã\81§è¿°ã\81¹ã\82\89ã\82\8cã\81¦ã\81\84ã\82\8bã\83\9eã\82¯ã\83­ã\81 ã\81\91ã\82\92使ã\81\86べきである。 \fBCMSG_ALIGN\fP()  は Linux
 での拡張であり、移植性を考えたプログラムでは使うべきではない。
 .PP
 Linux では \fBCMSG_LEN\fP(), \fBCMSG_DATA\fP(), \fBCMSG_ALIGN\fP()  は定数式である
@@ -143,6 +143,6 @@ msg.msg_controllen = cmsg\->cmsg_len;
 .PP
 RFC\ 2292
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 78ab2d9..7dc07b8 100644 (file)
@@ -103,6 +103,6 @@ confstr(_CS_PATH, pathbuf, n);
 .SH 関連項目
 \fBsh\fP(1), \fBexec\fP(3), \fBsystem\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f48a36a..f59b22c 100644 (file)
@@ -37,6 +37,6 @@ C99.
 .SH 関連項目
 \fBcabs\fP(3), \fBcsqrt\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 17eb743..5dde70e 100644 (file)
@@ -82,6 +82,6 @@ C99, POSIX.1\-2001.  この関数は IEC 559 で定義されている (また IE
 .SH 関連項目
 \fBsignbit\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 698084e..bd046c4 100644 (file)
@@ -90,6 +90,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD にも準拠し
 \fBacos\fP(3), \fBasin\fP(3), \fBatan\fP(3), \fBatan2\fP(3), \fBccos\fP(3), \fBsin\fP(3),
 \fBsincos\fP(3), \fBtan\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b5381f1..03386b3 100644 (file)
@@ -99,6 +99,6 @@ glibc バージョン 2.3.4 以前では、オーバーフローが発生した
 .SH 関連項目
 \fBacosh\fP(3), \fBasinh\fP(3), \fBatanh\fP(3), \fBccos\fP(3), \fBsinh\fP(3), \fBtanh\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index bb5bcaa..b80f220 100644 (file)
@@ -34,6 +34,6 @@ C99.
 .SH 関連項目
 \fBcabs\fP(3), \fBpow\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7f45816..b73d896 100644 (file)
@@ -36,6 +36,6 @@ C99.
 .SH 関連項目
 \fBcabs\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index bd1f9f1..124bde0 100644 (file)
@@ -39,6 +39,6 @@ gcc では __real__ を使うこともできるが、 これは GNU による拡
 .SH 関連項目
 \fBcabs\fP(3), \fBcimag\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 48f2bb9..047376a 100644 (file)
@@ -176,6 +176,6 @@ SHA\-512 | 86 characters
 .SH 関連項目
 \fBlogin\fP(1), \fBpasswd\fP(1), \fBencrypt\fP(3), \fBgetpass\fP(3), \fBpasswd\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e44fc3f..0c124c7 100644 (file)
@@ -35,6 +35,6 @@ C99.
 .SH 関連項目
 \fBcabs\fP(3), \fBcasin\fP(3), \fBccos\fP(3), \fBctan\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4952868..a426ed7 100644 (file)
@@ -35,6 +35,6 @@ C99.
 .SH 関連項目
 \fBcabs\fP(3), \fBcasinh\fP(3), \fBccosh\fP(3), \fBctanh\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4bf5ea8..1f954f4 100644 (file)
@@ -33,6 +33,6 @@ C99.
 .SH 関連項目
 \fBcabs\fP(3), \fBcexp\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a779be4..baac075 100644 (file)
@@ -35,6 +35,6 @@ C99.
 .SH 関連項目
 \fBcabs\fP(3), \fBcatan\fP(3), \fBccos\fP(3), \fBcsin\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 05ce26e..9a17d1b 100644 (file)
@@ -35,6 +35,6 @@ C99.
 .SH 関連項目
 \fBcabs\fP(3), \fBcatanh\fP(3), \fBccosh\fP(3), \fBcsinh\fP(3), \fBcomplex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a939573..eaffd08 100644 (file)
@@ -62,6 +62,6 @@ SVr4, POSIX.1\-2001.
 .SH 関連項目
 \fBttyname\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 23e3da9..31d11f0 100644 (file)
@@ -213,6 +213,6 @@ POSIX.1\-2004 によると、 \fBlocaltime\fP()  はあたかも \fBtzset\fP(3)
 \fBdifftime\fP(3), \fBstrftime\fP(3), \fBstrptime\fP(3), \fBtimegm\fP(3), \fBtzset\fP(3),
 \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8d25b8d..f3545cb 100644 (file)
@@ -73,6 +73,6 @@ POSIX.1\-2001 にはない。 同様の関数が BSD には見られる。 \fBda
 .SH 関連項目
 \fBfork\fP(2), \fBsetsid\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1dbcf85..acc0037 100644 (file)
@@ -302,6 +302,6 @@ typedef \fIDBT\fP は \*(lqdata base thang\*(rqの略語であるが、これが
 \fILIBTP: Portable, Modular Transactions for UNIX\fP, Margo Seltzer, Michael
 Olson, USENIX proceedings, Winter 1992.
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index efff53c..6511c6c 100644 (file)
@@ -80,6 +80,6 @@ Code Book) モードで暗号化する。 このモードでは (個々の) デ
 .SH 関連項目
 \fBdes\fP(1), \fBcrypt\fP(3), \fBxcrypt\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index fd4a3f4..8ee59ca 100644 (file)
@@ -61,6 +61,6 @@ POSIX システムでは \fItime_t\fP は数値型なので、引き算の際に
 \fBdate\fP(1), \fBgettimeofday\fP(2), \fBtime\fP(2), \fBctime\fP(3), \fBgmtime\fP(3),
 \fBlocaltime\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c47fa63..beb2502 100644 (file)
@@ -82,6 +82,6 @@ POSIX.1\-2008.  この関数は BSD 拡張であった。 4.3BSD\-Reno には存
 \fBopen\fP(2), \fBclosedir\fP(3), \fBopendir\fP(3), \fBreaddir\fP(3), \fBrewinddir\fP(3),
 \fBscandir\fP(3), \fBseekdir\fP(3), \fBtelldir\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8c6e839..f4c248d 100644 (file)
@@ -91,6 +91,6 @@ SVr4, 4.3BSD, C89, C99.
 .SH 関連項目
 \fBabs\fP(3), \fBremainder\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8b13cca..59bb0b4 100644 (file)
@@ -146,6 +146,6 @@ main(int argc, char *argv[])
 
 オンラインのいろいろな場所で入手できる \fIExecutable and Linking Format Specification\fP
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 689178e..c99ef13 100644 (file)
@@ -304,6 +304,6 @@ main(int argc, char **argv)
 
 ld.so info pages, gcc info pages, ld info pages
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 81cd2d8..07582d2 100644 (file)
@@ -87,6 +87,6 @@ _GNU_SOURCE
 .SH 関連項目
 \fBprintf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 475bd90..6254386 100644 (file)
@@ -132,6 +132,6 @@ SVID 3 ではこれらの関数は時代遅れと宣言されている。 SVID 3
 .SH 関連項目
 \fBrand\fP(3), \fBrandom\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1230253..feee9f3 100644 (file)
@@ -95,6 +95,6 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 .SH 関連項目
 \fBdrand48\fP(3), \fBrand\fP(3), \fBrandom\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 84afab1..56c0b1e 100644 (file)
@@ -55,6 +55,6 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 .SH 関連項目
 \fBstrftime\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ac17912..c52577d 100644 (file)
@@ -91,6 +91,6 @@ Linux libc4 と libc5 では \fIndigits\fP の型は \fIsize_t\fP となって
 .SH 関連項目
 \fBecvt_r\fP(3), \fBgcvt\fP(3), \fBqecvt\fP(3), \fBsetlocale\fP(3), \fBsprintf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a152d9f..1e610cc 100644 (file)
@@ -75,6 +75,6 @@ _SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500
 .SH 関連項目
 \fBecvt\fP(3), \fBqecvt\fP(3), \fBsprintf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 104d3bc..1694842 100644 (file)
@@ -124,6 +124,6 @@ main(void)
 .\" .BR fcrypt (3)
 \fBcbc_crypt\fP(3), \fBcrypt\fP(3), \fBecb_crypt\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ae54a9c..b6e1814 100644 (file)
@@ -94,6 +94,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBobjdump\fP(1), \fBreadelf\fP(1), \fBsbrk\fP(2), \fBelf\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1588589..682eb0f 100644 (file)
@@ -143,6 +143,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBbyteorder\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 94dd6ca..7d7b2a4 100644 (file)
@@ -94,6 +94,6 @@ main(int argc, char *argv[], char *envp[])
 .SH 関連項目
 \fBargz_add\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 70af323..822b58b 100644 (file)
@@ -105,6 +105,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD にも準拠し
 .SH 関連項目
 \fBcerf\fP(3), \fBerfc\fP(3), \fBexp\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 75a995b..32f9b19 100644 (file)
@@ -103,6 +103,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD にも準拠し
 .SH 関連項目
 \fBcerf\fP(3), \fBerf\fP(3), \fBexp\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c4fa46a..09593e2 100644 (file)
@@ -123,6 +123,6 @@ if ((fd = open(block_device, O_RDONLY, 0)) == \-1)
 .SH 関連項目
 \fBerror\fP(3), \fBexit\fP(3), \fBperror\fP(3), \fBprintf\fP(3), \fBstrerror\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f7976c7..4ad0a54 100644 (file)
@@ -481,6 +481,6 @@ errno\fP のように) 定義するのが一般的であった。 \fBこのよ
 .SH 関連項目
 \fBerr\fP(3), \fBerror\fP(3), \fBperror\fP(3), \fBstrerror\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4d10c47..16c380e 100644 (file)
@@ -83,6 +83,6 @@ error_print_progname \- glibc のエラー書き出し関数
 \fBerr\fP(3), \fBerrno\fP(3), \fBexit\fP(3), \fBperror\fP(3),
 \fBprogram_invocation_name\fP(3), \fBstrerror\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 01d0792..1464b08 100644 (file)
@@ -99,6 +99,6 @@ glibc 2.2.5 での \fBether_line\fP()  の実装はおかしい。
 .SH 関連項目
 \fBethers\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a49f855..327fe49 100644 (file)
@@ -74,6 +74,6 @@ euidaccess, eaccess \- ファイルへのアクセス権を実効ユーザでチ
 \fBsetgid\fP(2), \fBsetuid\fP(2), \fBstat\fP(2), \fBcredentials\fP(7),
 \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 03cedd9..b4c9f0f 100644 (file)
@@ -137,6 +137,6 @@ Linux 以外のシステムには、 (環境変数 \fBPATH\fP が定義されて
 \fBsh\fP(1), \fBexecve\fP(2), \fBfork\fP(2), \fBptrace\fP(2), \fBfexecve\fP(3),
 \fBenviron\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/exit.3 b/manual/LDP_man-pages/draft/man3/exit.3
new file mode 100644 (file)
index 0000000..08b649f
--- /dev/null
@@ -0,0 +1,97 @@
+.\" Copyright (C) 2001 Andries Brouwer <aeb@cwi.nl>.
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" FIXME There are a lot of other process termination actions that
+.\" could be listed on this page. See, for example, the list in the
+.\" POSIX exit(3p) page.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH EXIT 3 2013\-02\-14 Linux "Linux Programmer's Manual"
+.SH 名前
+exit \- プロセスの正常終了
+.SH 書式
+.nf
+\fB#include <stdlib.h>\fP
+.sp
+\fBvoid exit(int \fP\fIstatus\fP\fB);\fP
+.fi
+.SH 説明
+\fBexit\fP()  関数は、プロセスを正常に終了させ、 \fIstatus & 0377\fP という値を親プロセスへ返す (\fBwait\fP(2)
+を参照)。
+.LP
+\fBatexit\fP(3)  や \fBon_exit\fP(3)  によって 登録された全ての関数は、それらが登録された順番と逆順にコールされる。
+(登録された関数の中で \fBatexit\fP(3)  or \fBon_exit\fP(3)  を使って exit
+処理中に実行される追加の関数を登録することができる; 新規に登録された関数は、この後で実行される関数リストの先頭に 追加される。)
+これらの関数の一つが返らなかった場合 (例えば、その関数が \fB_exit\fP(2)  を呼び出したり、シグナルで自分自身を kill した場合)、
+残りの関数はどれも呼び出されず、それ以降の exit 処理 (特に \fBstdio\fP(3)  ストリームのフラッシュなど) は中止される。 ある関数が
+\fBatexit\fP(3)  や \fBon_exit\fP(3)  を使って複数回登録されていた場合、 その関数は登録されたのと同じ回数だけ呼び出される。
+.LP
+オープン中の \fBstdio\fP(3)  ストリームは全てフラッシュされて、クローズされる。 \fBtmpfile\fP(3)
+によって作成されたファイルは削除される。
+.LP
+C 標準では \fBEXIT_SUCCESS\fP と \fBEXIT_FAILURE\fP という 2つの定数が
+定義されている。それぞれ正常終了と異常終了を示すもので、 \fBexit\fP()  として渡すことができる。
+.SH 返り値
+\fBexit\fP()  関数は返らない。
+.SH 準拠
+SVr4, 4.3BSD, POSIX.1\-2001, C89, C99.
+.SH 注意
+.LP
+\fBatexit\fP(3)  や \fBon_exit\fP(3)  を使って登録された関数の中で \fBexit\fP() か \fBlongjmp\fP(3)
+が呼び出された場合、 何が起こるかは未定義である。 \fBexecve\fP(2) を呼び出すと、 \fBatexit\fP(3) や \fBon_exit\fP(3)
+を使って登録された関数が削除される点に注意すること。
+.LP
+\fBEXIT_SUCCESS\fP と \fBEXIT_FAILURE\fP を使うと、0 や (1 や \-1 といった) 0 以外の値を使うのに比べて
+(UNIX 以外の環境に) 移植するのがいくらか簡単になる。 特に VMS は別の方式を用いている。
+.LP
+BSD は終了コードを標準化しようとしている; \fI<sysexits.h>\fP を参照すること。
+.LP
+\fBexit\fP()  の後、親プロセスに終了ステータスが渡されなければならない。 終了ステータスの渡し方には 3 つの場合がある。 親プロセスが
+\fBSA_NOCLDWAIT\fP を設定した場合、 または \fBSIGCHLD\fP ハンドラを \fBSIG_IGN\fP に設定した場合、
+ステータスは破棄される。 親プロセスが子プロセスの終了を待っている場合、 親プロセスに終了ステータスが伝えられる。 どちらの場合でも exit
+のプロセスは直ちに終了する。 「終了ステータスを関知せず終了も待たない」 ということを親プロセスが指示していない場合、 exit プロセスは
+(終了ステータスを表す 1 バイトのみを保持する)  「ゾンビ」プロセスになる。 これにより、後から \fBwait\fP(2)  関数を呼び出すことで、
+親プロセスは終了ステータスを知ることができる。
+.LP
+\fBSIGCHLD\fP シグナルのサポートが実装されている場合、 このシグナルは親プロセスに送られる。 親プロセスが \fBSA_NOCLDWAIT\fP
+を設定した場合、 \fBSIGCHLD\fP シグナルが送られるかどうかは定義されていない。
+.LP
+そのプロセスがセッションのリーダーで、 そのプロセスの制御端末がそのセッションの制御端末である場合、
+この制御端末のフォアグラウンドプロセスグループにある 各プロセスに \fBSIGHUP\fP シグナルが送られ、端末がセッションから切り離される。
+これにより新しい制御プロセスを取得することができる。
+.LP
+プロセスが終了することにより、プロセスグループが孤立して、 そのグループのメンバーのうちのどれかが停止した場合、 プロセスグループの各プロセスに対して
+\fBSIGHUP\fP シグナルが送られ、続いて \fBSIGCONT\fP シグナルが送られる。 孤立した (orphaned) プロセスグループの説明は
+\fBsetpgid\fP(2)  を参照。
+.SH 関連項目
+\fB_exit\fP(2), \fBsetpgid\fP(2), \fBwait\fP(2), \fBatexit\fP(3), \fBon_exit\fP(3),
+\fBtmpfile\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index dab1986..185208b 100644 (file)
@@ -97,6 +97,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 .SH 関連項目
 \fBcbrt\fP(3), \fBcexp\fP(3), \fBexp10\fP(3), \fBexp2\fP(3), \fBsqrt\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f378ff7..ec340be 100644 (file)
@@ -73,6 +73,6 @@ exp10, exp10f, exp10l \- 基数が 10 の指数関数
 .SH 関連項目
 \fBcbrt\fP(3), \fBexp\fP(3), \fBexp2\fP(3), \fBlog10\fP(3), \fBsqrt\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 35e40a4..2f42f24 100644 (file)
@@ -83,6 +83,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 .SH 関連項目
 \fBcbrt\fP(3), \fBcexp2\fP(3), \fBexp\fP(3), \fBexp10\fP(3), \fBsqrt\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index dbbdb33..c4800b1 100644 (file)
@@ -126,6 +126,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBexp\fP(3), \fBlog\fP(3), \fBlog1p\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2150455..33e73b0 100644 (file)
@@ -80,6 +80,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 .SH 関連項目
 \fBabs\fP(3), \fBcabs\fP(3), \fBceil\fP(3), \fBfloor\fP(3), \fBlabs\fP(3), \fBrint\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 94136bf..c5e60d0 100644 (file)
@@ -80,6 +80,6 @@ C89, C99.
 .SH 関連項目
 \fBclose\fP(2), \fBfcloseall\fP(3), \fBfflush\fP(3), \fBfopen\fP(3), \fBsetbuf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index fd67f3e..572a95d 100644 (file)
@@ -49,6 +49,6 @@ fcloseall \- 開いているすべてのストリームを閉じる
 .SH 関連項目
 \fBclose\fP(2), \fBfclose\fP(3), \fBfflush\fP(3), \fBfopen\fP(3), \fBsetbuf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4d87fb5..960c642 100644 (file)
@@ -3,7 +3,7 @@
 .\"     <mtk.manpages@gmail.com>
 .\"
 .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
-.\" Distributed under GPL.
+.\" Distributed under GPL
 .\" %%%LICENSE_END
 .\"
 .\"*******************************************************************
@@ -67,6 +67,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBfmax\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1fd6a3a..e4fce48 100644 (file)
@@ -193,6 +193,6 @@ C99 の規定では、 \fBFLT_ROUNDS\fP の値には \fBfesetround\fP()
 .SH 関連項目
 \fBmath_error\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7d7ef10..189a641 100644 (file)
@@ -85,6 +85,6 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 .SH 関連項目
 \fBopen\fP(2), \fBfdopen\fP(3), \fBstdio\fP(3), \fBunlocked_stdio\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b9169c6..95552c5 100644 (file)
@@ -81,6 +81,6 @@ Linux では、 \fBfexecve\fP()  は \fBproc\fP(5)  ファイルシステムを
 .SH 関連項目
 \fBexecve\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0bc9a44..4f60e34 100644 (file)
@@ -85,6 +85,6 @@ C89, C99, POSIX.1\-2001, POSIX.1\-2008.
 \fBfsync\fP(2), \fBsync\fP(2), \fBwrite\fP(2), \fBfclose\fP(3), \fBfopen\fP(3),
 \fBsetbuf\fP(3), \fBunlocked_stdio\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b428d14..72fa9d1 100644 (file)
@@ -89,6 +89,6 @@ BSD システムでは \fI<string.h>\fP にプロトタイプがある。
 .SH 関連項目
 \fBmemchr\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 881e08c..65ba5cc 100644 (file)
@@ -79,6 +79,6 @@ SVr4.
 \fBendgrent\fP(3), \fBfgetgrent_r\fP(3), \fBfopen\fP(3), \fBgetgrent\fP(3),
 \fBgetgrgid\fP(3), \fBgetgrnam\fP(3), \fBputgrent\fP(3), \fBsetgrent\fP(3), \fBgroup\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index 8bb525a..c3c029d 100644 (file)
@@ -89,6 +89,6 @@ SVr4.
 \fBendpwent\fP(3), \fBfgetpwent_r\fP(3), \fBfopen\fP(3), \fBgetpw\fP(3), \fBgetpwent\fP(3),
 \fBgetpwnam\fP(3), \fBgetpwuid\fP(3), \fBputpwent\fP(3), \fBsetpwent\fP(3), \fBpasswd\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index 317163c..cf08e67 100644 (file)
@@ -58,6 +58,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBfgetws\fP(3), \fBfputwc\fP(3), \fBungetwc\fP(3), \fBunlocked_stdio\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6c869be..302c3e8 100644 (file)
@@ -51,6 +51,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBfgetwc\fP(3), \fBunlocked_stdio\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e70aa12..420462a 100644 (file)
@@ -106,6 +106,6 @@ _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600
 .SH 関連項目
 \fBfpclassify\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f442b7a..e33a330 100644 (file)
@@ -88,6 +88,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBunlocked_stdio\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 79c6ab8..b72c3e2 100644 (file)
@@ -81,6 +81,6 @@ SUSv2 と POSIX.1\-2001 にはオーバーフローに関する記述があり
 \fBceil\fP(3), \fBlrint\fP(3), \fBnearbyint\fP(3), \fBrint\fP(3), \fBround\fP(3),
 \fBtrunc\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0c0a077..a230c0f 100644 (file)
@@ -102,6 +102,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBremainder\fP(3), \fBremquo\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5c93510..02adb67 100644 (file)
@@ -54,6 +54,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBfmin\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e408be0..9ba8a9b 100644 (file)
@@ -210,6 +210,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBfopen\fP(3), \fBfopencookie\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9ad011d..659ee54 100644 (file)
@@ -54,6 +54,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBfmax\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 336e0f9..bd20470 100644 (file)
@@ -101,6 +101,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 .SH 関連項目
 \fBremainder\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a5371a8..fa962d4 100644 (file)
@@ -1,7 +1,7 @@
 .\"  Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de)
 .\"
 .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
-.\"  Distributed under GPL
+.\" Distributed under GPL
 .\" %%%LICENSE_END
 .\"
 .\"  adapted glibc info page
@@ -214,6 +214,6 @@ main(void)
 .SH 関連項目
 \fBaddseverity\fP(3), \fBperror\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 790f922..f8b4e17 100644 (file)
@@ -62,7 +62,7 @@ fnmatch \- ファイル名またはパス名へのマッチを行う
 .TP 
 \fBFNM_LEADING_DIR\fP
 このフラグは GNU での拡張である。これがセットされている場合には、 パターンが \fIstring\fP の最初の部分 (にスラッシュを付けたもの)
\81«ã\83\9eã\83\83ã\83\81ã\81\99ã\82\8cã\81°ã\80\81 ã\83\9eã\83\83ã\83\81ã\81\97ã\81\9fã\82\82ã\81®ã\81¨ã\81¿ã\81ªã\81\95ã\82\8cã\82\8bã\80\82 ã\81\93ã\81®ã\83\95ã\83©ã\82°ã\81¯ä¸»ã\81¨ã\81\97ã\81¦ glibc ã\81§å\86\85é\83¨ç\9a\84ã\81«ä½¿ç\94¨ã\81\97ã\80\81ã\81\9dã\81®ã\81\9fã\82\81のみ実装されている。
\81«ã\83\9eã\83\83ã\83\81ã\81\99ã\82\8cã\81°ã\80\81 ã\83\9eã\83\83ã\83\81ã\81\97ã\81\9fã\82\82ã\81®ã\81¨ã\81¿ã\81ªã\81\95ã\82\8cã\82\8bã\80\82 ã\81\93ã\81®ã\83\95ã\83©ã\82°ã\81¯ä¸»ã\81¨ã\81\97ã\81¦ glibc ã\81§å\86\85é\83¨ç\9a\84ã\81«ä½¿ç\94¨ã\81\99ã\82\8bã\82\82ã\81®ã\81§ã\80\81ã\81\9dã\81®ã\81\9fã\82\81ã\81«のみ実装されている。
 .TP 
 \fBFNM_CASEFOLD\fP
 このフラグは GNU での拡張である。これがセットされている場合には、 パターンのマッチに大文字小文字が区別されない。
@@ -75,6 +75,6 @@ POSIX.2.  \fBFNM_FILE_NAME\fP, \fBFNM_LEADING_DIR\fP, \fBFNM_CASEFOLD\fP フラ
 .SH 関連項目
 \fBsh\fP(1), \fBglob\fP(3), \fBscandir\fP(3), \fBwordexp\fP(3), \fBglob\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 365e892..3e88378 100644 (file)
@@ -202,6 +202,6 @@ glibc の \fBfopen\fP() と \fBfreopen\fP() の実装では、
 .SH 関連項目
 \fBopen\fP(2), \fBfclose\fP(3), \fBfileno\fP(3), \fBfmemopen\fP(3), \fBfopencookie\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5b7eebd..a81bf15 100644 (file)
@@ -115,6 +115,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBgetconf\fP(1), \fBopen\fP(2), \fBstatfs\fP(2), \fBsysconf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7dce8eb..0a42e5a 100644 (file)
@@ -104,6 +104,6 @@ glibc 2.01 以前では、 \fBisinf\fP()  は \fIx\fP が正の無限大か負
 .SH 関連項目
 \fBfinite\fP(3), \fBINFINITY\fP(3), \fBisgreater\fP(3), \fBsignbit\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ba8e7aa..535c5ad 100644 (file)
@@ -65,6 +65,6 @@ fpurge, __fpurge \- ストリームを一掃 (purge) する
 .\" .BR fclean (3),
 \fBfflush\fP(3), \fBsetbuf\fP(3), \fBstdio_ext\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0735d7a..0e77a48 100644 (file)
@@ -57,6 +57,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBfgetwc\fP(3), \fBfputws\fP(3), \fBunlocked_stdio\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index dc4cf75..1aab580 100644 (file)
@@ -44,6 +44,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBfputwc\fP(3), \fBunlocked_stdio\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 91b26b6..fca6cac 100644 (file)
@@ -80,6 +80,6 @@ C89, POSIX.1\-2001.
 .SH 関連項目
 \fBread\fP(2), \fBwrite\fP(2), \fBfeof\fP(3), \fBferror\fP(3), \fBunlocked_stdio\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7fd9047..f44feb7 100644 (file)
@@ -115,6 +115,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBldexp\fP(3), \fBmodf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a8ee39a..05a2f87 100644 (file)
@@ -104,6 +104,6 @@ C89, C99.
 .SH 関連項目
 \fBlseek\fP(2), \fBfseeko\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6f393a3..2933fb4 100644 (file)
@@ -66,6 +66,6 @@ SUSv2, POSIX.1\-2001.
 .SH 関連項目
 \fBfseek\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index db1d97b..1f843ee 100644 (file)
@@ -77,6 +77,6 @@ glibc 2.1.1 から再び正常になった。
 .SH 関連項目
 \fBgettimeofday\fP(2), \fBtime\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 919e8b3..8a91bf4 100644 (file)
@@ -69,6 +69,6 @@ libc4 と libc5 (および SunOS 4.x) では、 プロトタイプは以下の
 .SH 関連項目
 \fBmsgget\fP(2), \fBsemget\fP(2), \fBshmget\fP(2), \fBstat\fP(2), \fBsvipc\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7dbb9d7..0e4a94d 100644 (file)
@@ -355,6 +355,6 @@ preorder でたどられたディレクトリでない場合や 何も含んで
 .SH 関連項目
 \fBfind\fP(1), \fBchdir\fP(2), \fBstat\fP(2), \fBftw\fP(3), \fBqsort\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b576cdf..c87d985 100644 (file)
@@ -258,6 +258,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBstat\fP(2), \fBfts\fP(3), \fBreaddir\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6af9994..baf4b54 100644 (file)
@@ -74,6 +74,6 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 .SH 関連項目
 \fButime\fP(2), \fButimensat\fP(2), \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 07bd2ec..fb06c5d 100644 (file)
@@ -70,6 +70,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBfprintf\fP(3), \fBfwprintf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index bc2846d..14c65d5 100644 (file)
@@ -74,6 +74,6 @@ Gamma(|\fIx\fP|)  の符号が extern int \fIsigngam\fP に格納されていた
 .SH 関連項目
 \fBlgamma\fP(3), \fBsigngam\fP(3), \fBtgamma\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 82f14c7..5e54251 100644 (file)
@@ -77,6 +77,6 @@ POSIX.1\-2001 では、 この関数は「過去の名残 (LEGACY)」と位置
 .SH 関連項目
 \fBecvt\fP(3), \fBfcvt\fP(3), \fBsprintf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1806e81..c337fd7 100644 (file)
 .\" a permission notice identical to this one.
 .\"
 .\" Since the Linux kernel and libraries are constantly changing, this
-.\" manual page may be incorrect or out-of-date.  The author(s) assume.
-.\" no responsibility for errors or omissions, or for damages resulting.
-.\" from the use of the information contained herein.  The author(s) may.
-.\" not have taken the same level of care in the production of this.
-.\" manual, which is licensed free of charge, as they might when working.
+.\" manual page may be incorrect or out-of-date.  The author(s) assume
+.\" no responsibility for errors or omissions, or for damages resulting
+.\" from the use of the information contained herein.  The author(s) may
+.\" not have taken the same level of care in the production of this
+.\" manual, which is licensed free of charge, as they might when working
 .\" professionally.
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
@@ -81,6 +81,6 @@ main(int argc, char *argv[])
 .fi
 
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 495f16b..45ebb80 100644 (file)
@@ -183,16 +183,16 @@ struct addrinfo {
 フィールドにはソケットアドレスの長さがバイト単位で書き込まれる。
 .PP
 \fIhints.ai_flags\fP が \fBAI_ADDRCONFIG\fP を含む場合、 \fIres\fP が指すリスト
\81«ã\81¯ã\80\81ã\83­ã\83¼ã\82«ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\81«æ\9c\80ä½\8eä¸\80ã\81¤ã\81® IPv4 ã\82¢ã\83\89ã\83¬ã\82¹ã\81\8c設å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81¯
\81«ã\81¯ã\80\81ã\83­ã\83¼ã\82«ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\81«æ\9c\80ä½\8eä¸\80ã\81¤ã\81® IPv4 ã\82¢ã\83\89ã\83¬ã\82¹ã\81\8c設å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81®ã\81¿
 IPv4 アドレスが返され、 ローカルシステムに最低一つの IPv6 アドレスが
-設å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81¯ IPv6 アドレスが返される。なお、この場合には、
+設å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81«ã\81®ã\81¿ IPv6 アドレスが返される。なお、この場合には、
 ループバックアドレスは有効に設定されたアドレスとはみなされない。
 .PP
-\fIhint.ai_flags\fP に \fBAI_V4MAPPED\fP が指定されていて、 \fIhints.ai_family\fP に \fBAF_INET6\fP
-が指定され、 マッチする IPv6 アドレスが見つからなかった場合、 \fIres\fP が指すリストには IPv4\-mapped IPv6
-アドレスが返される。 \fIhints.ai_flags\fP に \fBAI_V4MAPPED\fP と \fBAI_ALL\fP の両方が指定されている場合、
-\fIres\fP が指すリストには IPv6 アドレスと IPv4\-mapped IPv6 アドレスの 両方が返される。 \fBAI_V4MAPPED\fP
-が指定されていない場合、 \fBAI_ALL\fP は無視される。
+\fIhints.ai_flags\fP に \fBAI_V4MAPPED\fP が指定されていて、 \fIhints.ai_family\fP に
+\fBAF_INET6\fP が指定され、 マッチする IPv6 アドレスが見つからなかった場合、 \fIres\fP が指すリストには IPv4\-mapped
+IPv6 アドレスが返される。 \fIhints.ai_flags\fP に \fBAI_V4MAPPED\fP と \fBAI_ALL\fP
+の両方が指定されている場合、 \fIres\fP が指すリストには IPv6 アドレスと IPv4\-mapped IPv6 アドレスの 両方が返される。
+\fBAI_V4MAPPED\fP が指定されていない場合、 \fBAI_ALL\fP は無視される。
 .PP
 \fBfreeaddrinfo\fP()  関数は、 リンクリスト \fIres\fP に対して動的に割り当てられたメモリを解放する。
 .SS "国際化ドメイン名のための getaddrinfo() の拡張"
@@ -509,6 +509,6 @@ main(int argc, char *argv[])
 \fBgetaddrinfo_a\fP(3), \fBgethostbyname\fP(3), \fBgetnameinfo\fP(3), \fBinet\fP(3),
 \fBgai.conf\fP(5), \fBhostname\fP(7), \fBip\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 669c90a..a5bbc7a 100644 (file)
@@ -102,6 +102,6 @@ SUSv2, POSIX.1\-2001.  POSIX.1\-2008 では、移植性の問題から \fBgetcon
 \fBsigaction\fP(2), \fBsigaltstack\fP(2), \fBsigprocmask\fP(2), \fBlongjmp\fP(3),
 \fBmakecontext\fP(3), \fBsigsetjmp\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e6e84b0..9dd006b 100644 (file)
@@ -148,6 +148,6 @@ Linux では (2.1.92 以降)、 \fBgetcwd\fP()  はシステムコールであ
 \fBchdir\fP(2), \fBfchdir\fP(2), \fBopen\fP(2), \fBunlink\fP(2), \fBfree\fP(3),
 \fBmalloc\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 75a1197..d460f1a 100644 (file)
@@ -227,6 +227,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBtime\fP(2), \fBlocaltime\fP(3), \fBsetlocale\fP(3), \fBstrftime\fP(3), \fBstrptime\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 32bc83e..fda5746 100644 (file)
@@ -57,6 +57,6 @@ POSIX.1\-2001 にはない。 BSD に存在し、他にもいくつかのシス
 .SH 関連項目
 \fBlseek\fP(2), \fBopen\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 78ac751..9d88148 100644 (file)
@@ -74,6 +74,6 @@ SVr4, 4.4BSD (\fBgetdtablesize\fP()  関数は 4.2BSD で最初に現われた)
 .SH 関連項目
 \fBclose\fP(2), \fBdup\fP(2), \fBgetrlimit\fP(2), \fBopen\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c1a2531..cf72db6 100644 (file)
@@ -97,6 +97,6 @@ Linux ではブロックスペシャルデバイスを複数の場所にマウ
 .SH 関連項目
 \fBgetmntent\fP(3), \fBfstab\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 955280a..7f3bd35 100644 (file)
@@ -127,6 +127,6 @@ SVr4, 4.3BSD, POSIX.1\-2001.
 \fBfgetgrent\fP(3), \fBgetgrent_r\fP(3), \fBgetgrgid\fP(3), \fBgetgrnam\fP(3)
 \fBgetgrouplist\fP(3), \fBputgrent\fP(3), \fBgroup\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index c4585c2..dd51c75 100644 (file)
@@ -152,6 +152,6 @@ main(void)
 \fBfgetgrent\fP(3), \fBgetgrent\fP(3), \fBgetgrgid\fP(3), \fBgetgrnam\fP(3),
 \fBputgrent\fP(3), \fBgroup\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index de47ada..94fd0bc 100644 (file)
@@ -163,6 +163,6 @@ SVr4, 4.3BSD, POSIX.1\-2001.
 \fBendgrent\fP(3), \fBfgetgrent\fP(3), \fBgetgrent\fP(3), \fBgetpwnam\fP(3),
 \fBsetgrent\fP(3), \fBgroup\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index 0c9de1c..9fcebf1 100644 (file)
@@ -149,6 +149,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBgetgroups\fP(2), \fBsetgroups\fP(2), \fBgetgrent\fP(3), \fBgroup\fP(5), \fBpasswd\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index 1dcecee..fb81f87 100644 (file)
@@ -261,6 +261,6 @@ NULL になる。 これらの関数は、成功した場合 0 を返し、失
 \fBinet_pton\fP(3), \fBresolver\fP(3), \fBhosts\fP(5), \fBnsswitch.conf\fP(5),
 \fBhostname\fP(7), \fBnamed\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 781f0c1..104a052 100644 (file)
@@ -92,6 +92,6 @@ glibc の実装では、ホスト ID を保存したファイルを オープン
 .SH 関連項目
 \fBhostid\fP(1), \fBgethostbyname\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 31f980b..9da6a38 100644 (file)
@@ -154,6 +154,6 @@ RFC\ 2553.
 .SH 関連項目
 \fBgetaddrinfo\fP(3), \fBgetnameinfo\fP(3), \fBinet_ntop\fP(3), \fBinet_pton\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 3c28dc3..48cd7d8 100644 (file)
@@ -117,6 +117,6 @@ main(void)
 .SH 関連項目
 \fBread\fP(2), \fBfgets\fP(3), \fBfopen\fP(3), \fBfread\fP(3), \fBgets\fP(3), \fBscanf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ca55814..8eda3f3 100644 (file)
@@ -65,6 +65,6 @@ POSIX.1\-2001 にはない。 BSD 系と Solaris に存在する。
 .SH 関連項目
 \fBuptime\fP(1), \fBproc\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 985fc7a..9f5dc1d 100644 (file)
@@ -131,6 +131,6 @@ glibc は POSIX 仕様には従っておらず、 \fI/dev/tty\fP ではなく \f
 .SH 関連項目
 \fBgeteuid\fP(2), \fBgetuid\fP(2), \fButmp\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f6c3b9b..5ead49e 100644 (file)
@@ -132,6 +132,6 @@ System V にも \fBgetmntent\fP()  関数はあるが、 呼び出し手順が
 .SH 関連項目
 \fBfopen\fP(3), \fBfstab\fP(5), \fBmount\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5a01cda..52830ae 100644 (file)
@@ -204,6 +204,6 @@ the freenix track: 2000 USENIX annual technical conference, June 2000
 .UR http://www.usenix.org\:/publications\:/library\:/proceedings\:/usenix2000\:/freenix\:/metzprotocol.html
 .UE .
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1dadf76..ea2a3f2 100644 (file)
@@ -108,6 +108,6 @@ struct netent {
 .br
 RFC\ 1101
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2413192..b865fb8 100644 (file)
@@ -113,6 +113,6 @@ _BSD_SOURCE || _SVID_SOURCE
 .SH 関連項目
 \fBgetnetent\fP(3), \fBnetworks\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4f8e50f..9ebab07 100644 (file)
@@ -344,6 +344,6 @@ main(int argc, char **argv) {
 .SH 関連項目
 \fBgetsubopt\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8207dfe..05fd045 100644 (file)
@@ -101,6 +101,6 @@ SUSv2 によれば、 \fBPASS_MAX\fP の値が 8 以下の場合は、この値
 .SH 関連項目
 \fBcrypt\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2189f4c..b57dd4c 100644 (file)
@@ -101,6 +101,6 @@ struct protoent {
 .SH 関連項目
 \fBgetnetent\fP(3), \fBgetprotoent_r\fP(3), \fBgetservent\fP(3), \fBprotocols\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 259623b..1b49476 100644 (file)
@@ -202,6 +202,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBgetprotoent\fP(3), \fBprotocols\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index aab0740..7b23853 100644 (file)
@@ -40,6 +40,6 @@ getpt \- 擬似端末マスタ (PTM) をオープンする
 \fBgrantpt\fP(3), \fBposix_openpt\fP(3), \fBptsname\fP(3), \fBunlockpt\fP(3),
 \fBptmx\fP(4), \fBpty\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index fdb27e7..c41c9d6 100644 (file)
@@ -95,6 +95,6 @@ SVr2
 \fBendpwent\fP(3), \fBfgetpwent\fP(3), \fBgetpwent\fP(3), \fBgetpwnam\fP(3),
 \fBgetpwuid\fP(3), \fBputpwent\fP(3), \fBsetpwent\fP(3), \fBpasswd\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index aca92b0..cc01fe1 100644 (file)
@@ -125,6 +125,6 @@ SVr4, 4.3BSD, POSIX.1\-2001.  \fIpw_gecos\fP フィールドは POSIX では規
 \fBfgetpwent\fP(3), \fBgetpw\fP(3), \fBgetpwent_r\fP(3), \fBgetpwnam\fP(3),
 \fBgetpwuid\fP(3), \fBputpwent\fP(3), \fBpasswd\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index fa0e0c7..45f79d3 100644 (file)
@@ -150,6 +150,6 @@ main(void)
 \fBfgetpwent\fP(3), \fBgetpw\fP(3), \fBgetpwent\fP(3), \fBgetpwnam\fP(3),
 \fBgetpwuid\fP(3), \fBputpwent\fP(3), \fBpasswd\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index 5c24d9f..0fe02ae 100644 (file)
@@ -228,6 +228,6 @@ main(int argc, char *argv[])
 \fBendpwent\fP(3), \fBfgetpwent\fP(3), \fBgetgrnam\fP(3), \fBgetpw\fP(3),
 \fBgetpwent\fP(3), \fBgetspnam\fP(3), \fBputpwent\fP(3), \fBsetpwent\fP(3), \fBpasswd\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index 69f50bb..3581985 100644 (file)
@@ -79,6 +79,6 @@ POSIX.1\-2001 にはない。 BSD 系、Solaris や他の多くのシステム
 .SH 関連項目
 \fBgetrpcent_r\fP(3), \fBrpc\fP(5), \fBrpcinfo\fP(8), \fBypserv\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1a2b218..aa24997 100644 (file)
@@ -105,6 +105,6 @@ _BSD_SOURCE || _SVID_SOURCE
 .SH 関連項目
 \fBgetrpcent\fP(3), \fBrpc\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index cb7f1b6..6672d7b 100644 (file)
@@ -26,6 +26,6 @@ getrpcport \- RPC ポート番号を取得する
 .SH 準拠
 POSIX.1\-2001 にはない。 BSD 系、Solaris や他の多くのシステムに存在する。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b836de6..bb20bc9 100644 (file)
@@ -99,6 +99,6 @@ glibc バージョン 2.16 以降では、機能検査マシン \fB_ISOC11_SOURC
 \fBputs\fP(3), \fBscanf\fP(3), \fBungetwc\fP(3), \fBunlocked_stdio\fP(3),
 \fBfeature_test_macros\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 152a0c1..d08d10c 100644 (file)
@@ -110,6 +110,6 @@ struct servent {
 .SH 関連項目
 \fBgetnetent\fP(3), \fBgetprotoent\fP(3), \fBgetservent_r\fP(3), \fBservices\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index efe52bf..05b2316 100644 (file)
@@ -207,6 +207,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBgetservent\fP(3), \fBservices\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0a2383c..9bd6648 100644 (file)
@@ -179,6 +179,6 @@ API が提供されている。
 .SH 関連項目
 \fBgetgrnam\fP(3), \fBgetpwnam\fP(3), \fBgetpwnam_r\fP(3), \fBshadow\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index d1af2b6..34d245c 100644 (file)
@@ -178,6 +178,6 @@ int main(int argc, char **argv)
 .SH 関連項目
 \fBgetopt\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1c61098..3b8a745 100644 (file)
@@ -1,7 +1,7 @@
 .\"  Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de)
 .\"
 .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
-.\"  Distributed under GPL
+.\" Distributed under GPL
 .\" %%%LICENSE_END
 .\"
 .\"*******************************************************************
@@ -62,6 +62,6 @@ Linux では、ファイル \fI/etc/ttys\fP と上で説明した関数は使わ
 .SH 関連項目
 \fBttyname\fP(3), \fBttyslot\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 78437f8..74e5699 100644 (file)
@@ -63,6 +63,6 @@ mode_t getumask(void)
 .SH 関連項目
 \fBumask\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9792a0a..39757af 100644 (file)
@@ -76,6 +76,6 @@ _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
 .SH 関連項目
 \fBshells\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2d8608f..d86b420 100644 (file)
@@ -211,6 +211,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBgetutmp\fP(3), \fButmp\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b6969a5..204a5d7 100644 (file)
@@ -62,6 +62,6 @@ Linux では、これらの構造体は同じフィールドを持っており
 .SH 関連項目
 \fBgetutent\fP(3), \fButmp\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6338125..f3bc590 100644 (file)
@@ -75,6 +75,6 @@ SVr4, SUSv2.  POSIX.1\-2001 には存在しない。
 .SH 関連項目
 \fBferror\fP(3), \fBfread\fP(3), \fBfwrite\fP(3), \fBgetc\fP(3), \fBputc\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 353a3bb..885f5d7 100644 (file)
@@ -45,6 +45,6 @@ C99.
 .SH 関連項目
 \fBfgetwc\fP(3), \fBunlocked_stdio\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index d82bb1d..4bbe595 100644 (file)
@@ -196,6 +196,6 @@ execvp("ls", &globbuf.gl_pathv[0]);
 \fBls\fP(1), \fBsh\fP(1), \fBstat\fP(2), \fBexec\fP(3), \fBfnmatch\fP(3), \fBmalloc\fP(3),
 \fBopendir\fP(3), \fBreaddir\fP(3), \fBwordexp\fP(3), \fBglob\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c576bda..7c20b69 100644 (file)
@@ -75,6 +75,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBconfstr\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7b174b4..2d2873c 100644 (file)
@@ -48,6 +48,6 @@ devpts では、このような補助バイナリを必要としない。
 \fBopen\fP(2), \fBposix_openpt\fP(3), \fBptsname\fP(3), \fBunlockpt\fP(3), \fBpts\fP(4),
 \fBpty\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 89a1db6..da31331 100644 (file)
@@ -67,6 +67,6 @@ Linux ではこれらの関数を使用しないこと。 過去に間違いが
 .SH 関連項目
 \fBkill\fP(2), \fBsignal\fP(2), \fBraise\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ff4ad04..986e0dd 100644 (file)
@@ -126,6 +126,6 @@ hash 関数が指定されると、 \fIhash_open\fP はデータベースが作
 \fIA New Hash Package for UNIX\fP, Margo Seltzer, USENIX Proceedings, Winter
 1991.
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 65620e0..5ef4319 100644 (file)
@@ -200,6 +200,6 @@ int main()
 .SH 関連項目
 \fBbsearch\fP(3), \fBlsearch\fP(3), \fBmalloc\fP(3), \fBtsearch\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index bae835c..c66eafa 100644 (file)
@@ -115,6 +115,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD にも準拠し
 .SH 関連項目
 \fBcabs\fP(3), \fBsqrt\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 567013a..992f72b 100644 (file)
@@ -111,6 +111,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBiconv_close\fP(3), \fBiconv_open\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1176f3a..06fa160 100644 (file)
@@ -37,6 +37,6 @@ UNIX98, POSIX.1\-2001.
 .SH 関連項目
 \fBiconv\fP(3), \fBiconv_open\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 740a64d..c570368 100644 (file)
@@ -65,6 +65,6 @@ UNIX98, POSIX.1\-2001.
 .SH 関連項目
 \fBiconv\fP(1), \fBiconv\fP(3), \fBiconv_close\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index cb7c7f1..314b379 100644 (file)
@@ -120,6 +120,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBlog\fP(3), \fBlogb\fP(3), \fBsignificand\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0a093fb..95339ba 100644 (file)
@@ -60,6 +60,6 @@ index, rindex \- 文字列中の文字の位置を示す
 \fBmemchr\fP(3), \fBstrchr\fP(3), \fBstring\fP(3), \fBstrpbrk\fP(3), \fBstrrchr\fP(3),
 \fBstrsep\fP(3), \fBstrspn\fP(3), \fBstrstr\fP(3), \fBstrtok\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f63ee86..3486d2a 100644 (file)
@@ -200,6 +200,6 @@ main(int argc, char *argv[])
 \fBgetnetent\fP(3), \fBinet_ntop\fP(3), \fBinet_pton\fP(3), \fBhosts\fP(5),
 \fBnetworks\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 92a6e1e..8024187 100644 (file)
@@ -78,6 +78,6 @@ glibc 2.2 以降では \fIsocklen_t\fP となっている。
 .SH 関連項目
 \fBgetnameinfo\fP(3), \fBinet\fP(3), \fBinet_pton\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 20130df..cbc08b4 100644 (file)
@@ -142,6 +142,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBgetaddrinfo\fP(3), \fBinet\fP(3), \fBinet_ntop\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 44049e1..9fe8777 100644 (file)
@@ -67,6 +67,6 @@ infnan \- 無限大と無効値 (NaN) を取扱う
 .SH 注意
 この廃止された (obsolete) 関数は、 libc4 と libc5 で提供されていたが、 glibc2 では提供されていない。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index efb6f70..96dfcae 100644 (file)
@@ -74,6 +74,6 @@ SVr4, 4.3BSD.
 .SH 関連項目
 \fBgetgroups\fP(2), \fBsetgroups\fP(2), \fBcredentials\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index 8faf1b7..d95c939 100644 (file)
@@ -218,6 +218,6 @@ main(int argc, char *argv[])
 }
 .fi
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6849c1b..ae96276 100644 (file)
@@ -80,6 +80,6 @@ intro \- ライブラリ関数の紹介
 \fBenviron\fP(7), \fBfeature_test_macros\fP(7), \fBlibc\fP(7), \fBmath_error\fP(7),
 \fBpath_resolution\fP(7), \fBpthreads\fP(7), \fBsignal\fP(7), \fBstandards\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 75c0c17..90a7033 100644 (file)
@@ -147,6 +147,6 @@ C99, 4.3BSD.  C89 では、これらの関数のうち \fBisascii\fP()  と \fBi
 \fBsetlocale\fP(3), \fBtoascii\fP(3), \fBtolower\fP(3), \fBtoupper\fP(3), \fBascii\fP(7),
 \fBlocale\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 42266d4..a5cd435 100644 (file)
@@ -55,6 +55,6 @@ SVr4, 4.3BSD, POSIX.1\-2001.
 .SH 関連項目
 \fBfstat\fP(2), \fBttyname\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6d6c87b..03a53fc 100644 (file)
@@ -90,6 +90,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBfpclassify\fP(3), \fBisnan\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index fca77a6..c9aabc4 100644 (file)
@@ -56,6 +56,6 @@ C99.
 .SH 関連項目
 \fBisalnum\fP(3), \fBiswctype\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1c7fbce..ca5d62a 100644 (file)
@@ -57,6 +57,6 @@ C99.
 .SH 関連項目
 \fBisalpha\fP(3), \fBiswctype\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 21b0569..44beade 100644 (file)
@@ -61,6 +61,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBisblank\fP(3), \fBiswctype\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index bc1749d..897e948 100644 (file)
@@ -45,6 +45,6 @@ C99.
 .SH 関連項目
 \fBiscntrl\fP(3), \fBiswctype\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 205de76..a6121e2 100644 (file)
@@ -45,6 +45,6 @@ C99.
 \fBiswpunct\fP(3), \fBiswspace\fP(3), \fBiswupper\fP(3), \fBiswxdigit\fP(3),
 \fBwctype\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7fd3f4f..ffc6333 100644 (file)
@@ -55,6 +55,6 @@ C99.
 .SH 関連項目
 \fBisdigit\fP(3), \fBiswctype\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 81a89e9..1d8cbef 100644 (file)
@@ -53,6 +53,6 @@ C99.
 .SH 関連項目
 \fBisgraph\fP(3), \fBiswctype\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0c39fb3..bb19548 100644 (file)
@@ -60,6 +60,6 @@ case)・ タイトル文字 (title case) という 3 つの "case" が含まれ
 .SH 関連項目
 \fBislower\fP(3), \fBiswctype\fP(3), \fBtowlower\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f3e668e..a5ef7b4 100644 (file)
@@ -44,6 +44,6 @@ C99.
 .SH 関連項目
 \fBisprint\fP(3), \fBiswctype\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7eed435..e943de0 100644 (file)
@@ -54,6 +54,6 @@ C99.
 .SH 関連項目
 \fBispunct\fP(3), \fBiswctype\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 67773e1..ccedb46 100644 (file)
@@ -51,6 +51,6 @@ C99.
 .SH 関連項目
 \fBisspace\fP(3), \fBiswctype\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e86833e..df4e567 100644 (file)
@@ -60,6 +60,6 @@ case)・ タイトル文字 (title case) という 3 つの "case" が含まれ
 .SH 関連項目
 \fBisupper\fP(3), \fBiswctype\fP(3), \fBtowupper\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 350e74e..32ee088 100644 (file)
@@ -53,6 +53,6 @@ C99.
 .SH 関連項目
 \fBiswctype\fP(3), \fBisxdigit\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 3c71f52..3fc4c4d 100644 (file)
@@ -116,6 +116,6 @@ _SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 600
 .SH 関連項目
 \fBy0\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 18d4cc8..d2054fc 100644 (file)
@@ -1,7 +1,7 @@
 .\"  Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de)
 .\"
 .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
-.\"  Distributed under GPL
+.\" Distributed under GPL
 .\" %%%LICENSE_END
 .\"
 .\"  I had no way the check the functions out
@@ -54,6 +54,6 @@ DES である。
 .SH 関連項目
 \fBcrypt\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8f84abe..cd9a159 100644 (file)
@@ -95,6 +95,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 .SH 関連項目
 \fBfrexp\fP(3), \fBmodf\fP(3), \fBscalbln\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8682dc8..102a467 100644 (file)
@@ -114,6 +114,6 @@ glibc 2.9 とそれ以前のバージョンでは、 極エラーが発生した
 .SH 関連項目
 \fBtgamma\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1871b5a..f3c871c 100644 (file)
@@ -145,6 +145,6 @@ I/O 操作の実行中は制御ブロックを変更してはならない。デ
 \fBaio_cancel\fP(3), \fBaio_error\fP(3), \fBaio_fsync\fP(3), \fBaio_return\fP(3),
 \fBaio_suspend\fP(3), \fBaio_write\fP(3), \fBaio\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index d338649..a16af35 100644 (file)
@@ -50,6 +50,6 @@ C89, C99
 \fBlocale\fP(1), \fBlocaledef\fP(1), \fBisalpha\fP(3), \fBnl_langinfo\fP(3),
 \fBsetlocale\fP(3), \fBstrcoll\fP(3), \fBstrftime\fP(3), \fBlocale\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index dafeeb4..ce40545 100644 (file)
@@ -108,6 +108,6 @@ Linux カーネルソースの \fIDocumentation/filesystems\fP ディレクト
 \fImandatory\-locking.txt\fP (以前のカーネルでは、これらのファイルは \fIDocumentation\fP ディレクトリ直下にあり、
 \fImandatory\-locking.txt\fP は \fImandatory.txt\fP という名前であった。)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b8a94cf..660e06f 100644 (file)
@@ -101,6 +101,6 @@ glibc 2.5 以前では、 NaN に対して \fBlog\fP()  をとると、間違っ
 .SH 関連項目
 \fBcbrt\fP(3), \fBclog\fP(3), \fBlog10\fP(3), \fBlog1p\fP(3), \fBlog2\fP(3), \fBsqrt\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e867ac9..f430047 100644 (file)
@@ -82,6 +82,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 .SH 関連項目
 \fBcbrt\fP(3), \fBclog10\fP(3), \fBexp10\fP(3), \fBlog\fP(3), \fBlog2\fP(3), \fBsqrt\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 17e061f..87260cb 100644 (file)
@@ -116,6 +116,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBexp\fP(3), \fBexpm1\fP(3), \fBlog\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 40357b8..a2dea5c 100644 (file)
@@ -83,6 +83,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD にも準拠し
 .SH 関連項目
 \fBcbrt\fP(3), \fBclog2\fP(3), \fBlog\fP(3), \fBlog10\fP(3), \fBsqrt\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e25e027..7138623 100644 (file)
@@ -106,6 +106,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBilogb\fP(3), \fBlog\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 65caa1b..66b62f9 100644 (file)
@@ -73,6 +73,6 @@ POSIX.1\-2001 にはない。 BSD 系に存在する。
 .SH 関連項目
 \fBgetutent\fP(3), \fButmp\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 10dd3aa..3998e95 100644 (file)
@@ -84,6 +84,6 @@ POSIX では、 \fBlongjmp\fP() がシグナルコンテキスト (signal contex
 .SH 関連項目
 \fBsetjmp\fP(3), \fBsigsetjmp\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8a64ac6..ada1419 100644 (file)
@@ -95,6 +95,6 @@ C99, POSIX.1\-2001.
 \fBceil\fP(3), \fBfloor\fP(3), \fBlround\fP(3), \fBnearbyint\fP(3), \fBrint\fP(3),
 \fBround\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index bf61dc2..3d8f795 100644 (file)
@@ -97,6 +97,6 @@ C99, POSIX.1\-2001.
 \fBceil\fP(3), \fBfloor\fP(3), \fBlrint\fP(3), \fBnearbyint\fP(3), \fBrint\fP(3),
 \fBround\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ceaffb8..4ab15bb 100644 (file)
@@ -60,6 +60,6 @@ SVr4, 4.3BSD, POSIX.1\-2001.  libc には libc\-4.6.27 以降で実装されて
 .SH 関連項目
 \fBbsearch\fP(3), \fBhsearch\fP(3), \fBtsearch\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f7536bb..864dff7 100644 (file)
@@ -120,6 +120,6 @@ lseek64 \- ファイルの 64 ビットの読み書きオフセットの位置
 .SH 関連項目
 \fBllseek\fP(2), \fBlseek\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6f46510..4bdf5cc 100644 (file)
@@ -168,6 +168,6 @@ main(int argc, char *argv[])
 \fBsigaction\fP(2), \fBsigaltstack\fP(2), \fBsigprocmask\fP(2), \fBgetcontext\fP(3),
 \fBsigsetjmp\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 71eb638..dcf7312 100644 (file)
@@ -68,6 +68,6 @@ glibc 2.3.3 以降では、これらは GNU 固有の 3 つの関数
 .SH 関連項目
 \fBmknod\fP(2), \fBstat\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a349344..b26277d 100644 (file)
@@ -143,6 +143,6 @@ Linux libc の新しいバージョン (5.4.23 より後) と glibc (2.x) には
 \fBmalloc_info\fP(3), \fBmalloc_trim\fP(3), \fBmalloc_usable_size\fP(3),
 \fBmallopt\fP(3), \fBmcheck\fP(3), \fBmtrace\fP(3), \fBposix_memalign\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/malloc_hook.3 b/manual/LDP_man-pages/draft/man3/malloc_hook.3
new file mode 100644 (file)
index 0000000..48a612a
--- /dev/null
@@ -0,0 +1,119 @@
+.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de)
+.\"
+.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
+.\" Distributed under GPL
+.\" %%%LICENSE_END
+.\"
+.\" Heavily based on glibc documentation
+.\" Polished, added docs, removed glibc doc bug, 2002-07-20, aeb
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MALLOC_HOOK 3 2010\-10\-13 GNU "Linux Programmer's Manual"
+.SH 名前
+__malloc_hook, __malloc_initialize_hook, __memalign_hook, __free_hook,
+__realloc_hook, __after_morecore_hook \- malloc デバッグ用の変数
+.SH 書式
+.nf
+\fB#include <malloc.h>\fP
+.sp
+\fBvoid *(*__malloc_hook)(size_t \fP\fIsize\fP\fB, const void *\fP\fIcaller\fP\fB);\fP
+.sp
+\fBvoid *(*__realloc_hook)(void *\fP\fIptr\fP\fB, size_t \fP\fIsize\fP\fB, const void *\fP\fIcaller\fP\fB);\fP
+.sp
+\fBvoid *(*__memalign_hook)(size_t \fP\fIalignment\fP\fB, size_t \fP\fIsize\fP\fB,\fP
+\fB                         const void *\fP\fIcaller\fP\fB);\fP
+.sp
+\fBvoid (*__free_hook)(void *\fP\fIptr\fP\fB, const void *\fP\fIcaller\fP\fB);\fP
+.sp
+\fBvoid (*__malloc_initialize_hook)(void);\fP
+.sp
+\fBvoid (*__after_morecore_hook)(void);\fP
+.fi
+.SH 説明
+GNU C ライブラリでは、適切なフック関数 (hook function) を指定することで \fBmalloc\fP(3), \fBrealloc\fP(3),
+\fBfree\fP(3)  の動作を変更することができる。例えば、動的にメモリ割り当てを行う プログラムのデバッグにこれらのフックを使うことができる。
+.LP
+変数 \fB__malloc_initialize_hook\fP は malloc の実装が初期化される際に一度だけ呼ばれる関数へのポインタである。
+この変数は書き換え可能 (weak) であり、アプリケーション内で 以下のような定義で上書きできる:
+.nf
+
+    void (*__malloc_initialize_hook)(void) = my_init_hook;
+
+.fi
+なお、関数 \fImy_init_hook\fP()  で全てのフックの初期化をすることができる。
+.LP
+\fB__malloc_hook\fP, \fB__realloc_hook\fP, \fB__memalign_hook\fP, \fB__free_hook\fP
+で指される 4 つの関数は、各々 \fBmalloc\fP(3), \fBrealloc\fP(3), \fBmemalign\fP(3), \fBfree\fP(3)
+とよく似たプロトタイプを持っているが、 一番最後の引き数 \fIcaller\fP をとる点が異なる。 引き数 \fIcaller\fP には、
+\fBmalloc\fP(3)  などの呼び出し元 (caller) のアドレスが格納される。
+.LP
+変数 \fB__after_morecore_hook\fP は、領域の追加要求があり \fBsbrk\fP(2)
+が呼ばれた後で毎回呼び出される関数へのポインタである。
+.SH 準拠
+これらの関数は GNU による拡張である。
+.SH 注意
+.\" https://bugzilla.redhat.com/show_bug.cgi?id=450187
+.\" http://sourceware.org/bugzilla/show_bug.cgi?id=9957
+The use of these hook functions is not safe in multithreaded programs, and
+they are now deprecated.  Programmers should instead preempt calls to the
+relevant functions by defining and exporting functions such as "malloc" and
+"free".
+.SH 例
+これらの変数の使い方の簡単な例を以下に示す。
+.sp
+.nf
+#include <stdio.h>
+#include <malloc.h>
+
+/* 使おうとするフックのプロトタイプ宣言 */
+static void my_init_hook(void);
+static void *my_malloc_hook(size_t, const void *);
+
+/* 元々のフックを保存するための変数 */
+static void *(*old_malloc_hook)(size_t, const void *);
+
+/* C ライブラリから呼ばれる初期化フックを上書きする */
+void (*__malloc_initialize_hook) (void) = my_init_hook;
+
+static void
+my_init_hook(void)
+{
+    old_malloc_hook = __malloc_hook;
+    __malloc_hook = my_malloc_hook;
+}
+
+static void *
+my_malloc_hook(size_t size, const void *caller)
+{
+    void *result;
+
+    /* 元々のフックを全て戻す */
+    __malloc_hook = old_malloc_hook;
+
+    /* malloc の再帰的呼び出し */
+    result = malloc(size);
+
+    /* 現在設定されているフック (underlying hook) を保存する */
+    old_malloc_hook = __malloc_hook;
+
+    /* printf() は malloc() を呼び出す可能性があるので
+        ここでもガードを行う (元々のフックのままにしておく) */
+    printf("malloc(%u) called from %p returns %p\en",
+            (unsigned int) size, caller, result);
+
+    /* ユーザが使おうとするフックを再設定する */
+    __malloc_hook = my_malloc_hook;
+
+    return result;
+}
+.fi
+.SH 関連項目
+\fBmallinfo\fP(3), \fBmalloc\fP(3), \fBmcheck\fP(3), \fBmtrace\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/malloc_info.3 b/manual/LDP_man-pages/draft/man3/malloc_info.3
new file mode 100644 (file)
index 0000000..3d51b57
--- /dev/null
@@ -0,0 +1,238 @@
+.\" Copyright (c) 2012 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MALLOC_INFO 3 2012\-04\-28 GNU "Linux Programmer's Manual"
+.SH 名前
+malloc_info \- export malloc state to a stream
+.SH 書式
+.nf
+\fB#include <malloc.h>\fP
+.sp
+\fBint malloc_info(int \fP\fIoptions\fP\fB, FILE *\fP\fIfp\fP\fB);\fP
+.fi
+.SH 説明
+The \fBmalloc_info\fP()  function exports an XML string that describes the
+current state of the memory\-allocation implementation in the caller.  The
+string is printed on the file stream \fIfp\fP.  The exported string includes
+information about all arenas (see \fBmalloc\fP(3)).
+
+As currently implemented, \fIoptions\fP must be zero.
+.SH 返り値
+\fBmalloc_info\fP() は成功すると 0 を返す。エラーの場合は \-1 を返す。
+.SH エラー
+.TP 
+\fBEINVAL\fP
+\fIoptions\fP was nonzero.
+.SH バージョン
+\fBmalloc_info\fP() は glibc バージョン 2.10 で追加された。
+.SH 準拠
+この関数は GNU による拡張である。
+.SH 注意
+The memory\-allocation information is provided as an XML string (rather than
+a C structure)  because the information may change over time (according to
+changes in the underlying implementation).  The output XML string includes a
+version field.
+
+The \fBopen_memstream\fP(3)  function can be used to send the output of
+\fBmalloc_info\fP()  directly into a buffer in memory, rather than to a file.
+
+The \fBmalloc_info\fP()  function is designed to address deficiencies in
+\fBmalloc_stats\fP(3)  and \fBmallinfo\fP(3).
+.SH 例
+The program below takes up to four command\-line arguments, of which the
+first three are mandatory.  The first argument specifies the number of
+threads that the program should create.  All of the threads, including the
+main thread, allocate the number of blocks of memory specified by the second
+argument.  The third argument controls the size of the blocks to be
+allocated.  The main thread creates blocks of this size, the second thread
+created by the program allocates blocks of twice this size, the third thread
+allocates blocks of three times this size, and so on.
+
+The program calls \fBmalloc_info\fP()  twice to display the memory\-allocation
+state.  The first call takes place before any threads are created or memory
+allocated.  The second call is performed after all threads have allocated
+memory.
+
+In the following example, the command\-line arguments specify the creation of
+one additional thread, and both the main thread and the additional thread
+allocate 10000 blocks of memory.  After the blocks of memory have been
+allocated, \fBmalloc_info\fP()  shows the state of two allocation arenas.
+.in +4
+.nf
+
+$ \fBgetconf GNU_LIBC_VERSION\fP
+glibc 2.13
+$ \fB./a.out 1 10000 100\fP
+============ Before allocating blocks ============
+<malloc version="1">
+<heap nr="0">
+<sizes>
+</sizes>
+<total type="fast" count="0" size="0"/>
+<total type="rest" count="0" size="0"/>
+<system type="current" size="135168"/>
+<system type="max" size="135168"/>
+<aspace type="total" size="135168"/>
+<aspace type="mprotect" size="135168"/>
+</heap>
+<total type="fast" count="0" size="0"/>
+<total type="rest" count="0" size="0"/>
+<system type="current" size="135168"/>
+<system type="max" size="135168"/>
+<aspace type="total" size="135168"/>
+<aspace type="mprotect" size="135168"/>
+</malloc>
+
+============ After allocating blocks ============
+<malloc version="1">
+<heap nr="0">
+<sizes>
+</sizes>
+<total type="fast" count="0" size="0"/>
+<total type="rest" count="0" size="0"/>
+<system type="current" size="1081344"/>
+<system type="max" size="1081344"/>
+<aspace type="total" size="1081344"/>
+<aspace type="mprotect" size="1081344"/>
+</heap>
+<heap nr="1">
+<sizes>
+</sizes>
+<total type="fast" count="0" size="0"/>
+<total type="rest" count="0" size="0"/>
+<system type="current" size="1032192"/>
+<system type="max" size="1032192"/>
+<aspace type="total" size="1032192"/>
+<aspace type="mprotect" size="1032192"/>
+</heap>
+<total type="fast" count="0" size="0"/>
+<total type="rest" count="0" size="0"/>
+<system type="current" size="2113536"/>
+<system type="max" size="2113536"/>
+<aspace type="total" size="2113536"/>
+<aspace type="mprotect" size="2113536"/>
+</malloc>
+.fi
+.in
+.SS プログラムのソース
+.nf
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <pthread.h>
+#include <malloc.h>
+#include <errno.h>
+
+static size_t blockSize;
+static int numThreads, numBlocks;
+
+#define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \e
+                        } while (0)
+
+static void *
+thread_func(void *arg)
+{
+    int j;
+    int tn = (int) arg;
+
+    /* The multiplier \(aq(2 + tn)\(aq ensures that each thread (including
+       the main thread) allocates a different amount of memory */
+
+    for (j = 0; j < numBlocks; j++)
+        if (malloc(blockSize * (2 + tn)) == NULL)
+            errExit("malloc\-thread");
+
+    sleep(100);         /* Sleep until main thread terminates */
+    return NULL;
+}
+
+int
+main(int argc, char *argv[])
+{
+    int j, tn, sleepTime;
+    pthread_t *thr;
+
+    if (argc < 4) {
+        fprintf(stderr,
+                "%s num\-threads num\-blocks block\-size [sleep\-time]\en",
+                argv[0]);
+        exit(EXIT_FAILURE);
+    }
+
+    numThreads = atoi(argv[1]);
+    numBlocks = atoi(argv[2]);
+    blockSize = atoi(argv[3]);
+    sleepTime = (argc > 4) ? atoi(argv[4]) : 0;
+
+    thr = calloc(numThreads, sizeof(pthread_t));
+    if (thr == NULL)
+        errExit("calloc");
+
+    printf("============ Before allocating blocks ============\en");
+    malloc_info(0, stdout);
+
+    /* Create threads that allocate different amounts of memory */
+
+    for (tn = 0; tn < numThreads; tn++) {
+        errno = pthread_create(&thr[tn], NULL, thread_func,
+                               (void *) tn);
+        if (errno != 0)
+            errExit("pthread_create");
+
+        /* If we add a sleep interval after the start\-up of each
+           thread, the threads likely won\(aqt contend for malloc
+           mutexes, and therefore additional arenas won\(aqt be
+           allocated (see malloc(3)). */
+
+        if (sleepTime > 0)
+            sleep(sleepTime);
+    }
+
+    /* The main thread also allocates some memory */
+
+    for (j = 0; j < numBlocks; j++)
+        if (malloc(blockSize) == NULL)
+            errExit("malloc");
+
+    sleep(2);           /* Give all threads a chance to
+                           complete allocations */
+
+    printf("\en============ After allocating blocks ============\en");
+    malloc_info(0, stdout);
+
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBmallinfo\fP(3), \fBmalloc\fP(3), \fBmalloc_stats\fP(3), \fBmallopt\fP(3),
+\fBopen_memstream\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/malloc_stats.3 b/manual/LDP_man-pages/draft/man3/malloc_stats.3
new file mode 100644 (file)
index 0000000..144345d
--- /dev/null
@@ -0,0 +1,59 @@
+.\" t
+.\" Copyright (c) 2012 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MALLOC_STATS 3 2012\-05\-06 Linux "Linux Programmer's Manual"
+.SH 名前
+malloc_stats \- メモリ割り当ての統計を表示する
+.SH 書式
+\fB#include <malloc.h>\fP
+
+\fBvoid malloc_stats(void);\fP
+.SH 説明
+.\" .SH VERSIONS
+.\" Available already in glibc 2.0, possibly earlier
+The \fBmalloc_stats\fP()  function prints (on standard error) statistics about
+memory allocated by \fBmalloc\fP(3)  and related functions.  For each arena
+(allocation area), this function prints the total amount of memory allocated
+and the total number of bytes consumed by in\-use allocations.  (These two
+values correspond to the \fIarena\fP and \fIuordblks\fP fields retrieved by
+\fBmallinfo\fP(3).)  In addition, the function prints the sum of these two
+statistics for all arenas, and the maximum number of blocks and bytes that
+were ever simultaneously allocated using \fBmmap\fP(2).
+.SH 準拠
+この関数は GNU による拡張である。
+.SH 注意
+More detailed information about memory allocations in the main arena can be
+obtained using \fBmallinfo\fP(3).
+.SH 関連項目
+\fBmmap\fP(2), \fBmallinfo\fP(3), \fBmalloc\fP(3), \fBmalloc_info\fP(3), \fBmallopt\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 67f659b..b6ea442 100644 (file)
@@ -357,6 +357,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBfenv\fP(3), \fBmath_error\fP(7), \fBstandards\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c4bbea7..14c6de0 100644 (file)
@@ -54,6 +54,6 @@ C99.
 .SH 関連項目
 \fBmbrlen\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index fd291bb..a0c4acb 100644 (file)
@@ -38,7 +38,7 @@ mbrlen \- 次のマルチバイト文字の長さをバイト数で返す
 \fIs\fP から始まるマルチバイト文字列が、次の完全な文字の前に 不正なマルチバイト列を含んでいる場合には、 \fBmbrlen\fP()  は
 \fI(size_t)\ \-1\fP を返し \fIerrno\fP に \fBEILSEQ\fP が設定される。 この場合の \fI*ps\fP への影響は未定義である。
 .PP
-\fIps\fP が NULL ポインターならば、代りに \fBmbrlen\fP()  関数のみが使用する静的で名前のない状態が使用される。
+\fIps\fP が NULL ポインターならば、代りに \fBmbrlen\fP() 関数のみが使用する静的で名前のない状態が使用される。
 .SH 返り値
 ナルワイド文字以外の文字を確認した場合には、 \fBmbrlen\fP()  関数は \fIs\fP から始まるマルチバイト列から使用したバイト数を返す。
 ナルワイド文字が確認された場合にはゼロを返す。 不正なマルチバイト列に遭遇した場合には \fI(size_t)\ \-1\fP を返し \fIerrno\fP に
@@ -51,6 +51,6 @@ C99.
 .SH 関連項目
 \fBmbrtowc\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7232d88..26eb04a 100644 (file)
@@ -50,9 +50,9 @@ puts \fI*ps\fP in the initial state and returns 0.  三番目の場合として
 \fBmbrtowc\fP()  関数は \fI(size_t)\ \-1\fP を返し、 \fIerrno\fP に \fBEILSEQ\fP をセットし、 \fI*ps\fP
 は未定義状態のままにする。 さもなければ、 \fBmbrtowc\fP()  関数は \fI*ps\fP を初期状態にして 0 を返す。
 .PP
-上記の全ての場合において、\fIps\fP が NULL ポインターならば代わりに mbrtowc 関数のみが使用する静的で名前のない状態が使用される。
-さもなければ、\fI*ps\fP は有効な \fImbstate_t\fP オブジェクトで なければならない。 \fImbstate_t\fP オブジェクトである
-\fIa\fP はゼロで埋めることによって 初期状態に初期化できる。以下に例を示す。
+上記の全ての場合において、\fIps\fP が NULL ポインターならば代わりに \fBmbrtowc\fP()
+関数のみが使用する静的で名前のない状態が使用される。 さもなければ、\fI*ps\fP は有効な \fImbstate_t\fP オブジェクトで なければならない。
+\fImbstate_t\fP オブジェクトである \fIa\fP はゼロで埋めることによって 初期状態に初期化できる。以下に例を示す。
 .sp
 .in +4n
 memset(&a, 0, sizeof(a));
@@ -69,6 +69,6 @@ C99.
 .SH 関連項目
 \fBmbsrtowcs\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 90646b1..ea8ec95 100644 (file)
@@ -63,6 +63,6 @@ C99.
 .SH 関連項目
 \fBmbsrtowcs\fP(3), \fBwcsrtombs\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index bab6bd3..a5d810e 100644 (file)
@@ -68,7 +68,8 @@ _GNU_SOURCE
 \fIdest\fP が NULL の場合、\fIlen\fP は無視され、上記と同様の変換が 行われるが、変換されたワイド文字はメモリに書き込まれず、変換先の上限
 が存在しない。
 .PP
-上記のどちらの場合でも、\fIps\fP が NULL ポインターならば、代りに mbsnrtowcs 関数のみが使用する静的で名前のない状態が使用される。
+上記のどちらの場合でも、\fIps\fP が NULL ポインターならば、 代りに \fBmbsnrtowcs\fP()
+関数のみが使用する静的で名前のない状態が使用される。
 .PP
 プログラマーは \fIdest\fP に最低でも \fIlen\fP ワイド文字を書き込むこ とができる空間があることを保証しなければならない。
 .SH 返り値
@@ -84,6 +85,6 @@ POSIX.1\-2008.
 .SH 関連項目
 \fBiconv\fP(3), \fBmbsrtowcs\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4238528..855847f 100644 (file)
@@ -65,6 +65,6 @@ C99.
 .SH 関連項目
 \fBiconv\fP(3), \fBmbsnrtowcs\fP(3), \fBmbstowcs\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 82c4093..7aa67b7 100644 (file)
@@ -58,6 +58,6 @@ C99.
 .SH 関連項目
 \fBmbsrtowcs\fP(3), \fBwcstombs\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 3747a9b..b297581 100644 (file)
@@ -58,6 +58,6 @@ C99.
 .SH 関連項目
 \fBMB_CUR_MAX\fP(3), \fBmbrtowc\fP(3), \fBmbstowcs\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index bbbb684..835daf4 100644 (file)
@@ -54,6 +54,6 @@ SVr4, 4.3BSD, POSIX.1\-2001.
 .SH 関連項目
 \fBbcopy\fP(3), \fBmemcpy\fP(3), \fBmemmove\fP(3), \fBstrcpy\fP(3), \fBstrncpy\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c6c442c..52319b6 100644 (file)
@@ -94,6 +94,6 @@ char *p = rawmemchr(s,\ \(aq\e0\(aq);
 \fBffs\fP(3), \fBindex\fP(3), \fBrindex\fP(3), \fBstrchr\fP(3), \fBstrpbrk\fP(3),
 \fBstrrchr\fP(3), \fBstrsep\fP(3), \fBstrspn\fP(3), \fBstrstr\fP(3), \fBwmemchr\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/memcmp.3 b/manual/LDP_man-pages/draft/man3/memcmp.3
new file mode 100644 (file)
index 0000000..6e5f8b1
--- /dev/null
@@ -0,0 +1,62 @@
+.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" References consulted:
+.\"     Linux libc source code
+.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
+.\"     386BSD man pages
+.\" Modified Sat Jul 24 18:55:27 1993 by Rik Faith (faith@cs.unc.edu)
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MEMCMP 3 2012\-11\-25 "" "Linux Programmer's Manual"
+.SH 名前
+memcmp \- メモリ領域を比較する
+.SH 書式
+.nf
+\fB#include <string.h>\fP
+.sp
+\fBint memcmp(const void *\fP\fIs1\fP\fB, const void *\fP\fIs2\fP\fB, size_t \fP\fIn\fP\fB);\fP
+.fi
+.SH 説明
+\fBmemcmp\fP()  関数は、メモリ領域 \fIs1\fP と\fIs2\fP の最初の \fIn\fP バイトを比較する (各バイトは \fIunsigned
+char\fP として解釈される)。
+.SH 返り値
+\fBmemcmp\fP()  関数は、\fIs1\fP の最初の \fIn\fP バイトが \fIs2\fP の最初の \fIn\fP バイトよりも
+小さいか、同じか、あるいは大きいかによってそれぞれ、負の整数、0、 正の整数を返す。
+
+For a nonzero return value, the sign is determined by the sign of the
+difference between the first pair of bytes (interpreted as \fIunsigned char\fP)
+that differ in \fIs1\fP and \fIs2\fP.
+.SH 準拠
+SVr4, 4.3BSD, C89, C99, POSIX.1\-2001.
+.SH 関連項目
+\fBbcmp\fP(3), \fBstrcasecmp\fP(3), \fBstrcmp\fP(3), \fBstrcoll\fP(3),
+\fBstrncasecmp\fP(3), \fBstrncmp\fP(3), \fBwmemcmp\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 46ffb3f..8ef02a1 100644 (file)
@@ -52,6 +52,6 @@ SVr4, 4.3BSD, C89, C99, POSIX.1\-2001.
 \fBbcopy\fP(3), \fBmemccpy\fP(3), \fBmemmove\fP(3), \fBmempcpy\fP(3), \fBstrcpy\fP(3),
 \fBstrncpy\fP(3), \fBwmemcpy\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 592d938..99ce5be 100644 (file)
@@ -47,8 +47,8 @@ memfrob \- メモリエリアの操作 (暗号化)
 との排他的論理をとることによって暗号化する。 変換後のデータは、暗号化されているメモリエリアに (再度)  \fBmemfrob\fP()
 関数を施すことで、元に戻すことができる。
 .PP
-この関数は妥当な暗号化ルーチンであるとは言えないことに注意して欲しい。 XOR をとる定数を固定しているので、せいぜい、文字列を隠す程度の用法にし
-か向いていない。
+この関数は妥当な暗号化ルーチンであるとは言えないことに注意して欲しい。 XOR
\82\92ã\81¨ã\82\8bå®\9aæ\95°ã\82\92å\9bºå®\9aã\81\97ã\81¦ã\81\84ã\82\8bã\81®ã\81§ã\80\81ã\81\9bã\81\84ã\81\9cã\81\84ã\80\81æ\96\87å­\97å\88\97ã\82\92é\9a ã\81\99ç¨\8b度ã\81®ç\94¨é\80\94ã\81«ã\81\97ã\81\8bå\90\91ã\81\84ã\81¦ã\81\84ã\81ªã\81\84ã\80\82
 .SH 返り値
 \fBmemfrob\fP()  関数は、暗号化されたメモリエリアへのポインタを返す。
 .SH 準拠
@@ -56,6 +56,6 @@ memfrob \- メモリエリアの操作 (暗号化)
 .SH 関連項目
 \fBstrfry\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 199fc6c..f2d727e 100644 (file)
@@ -61,6 +61,6 @@ Linux のライブラリに関していうと、 libc 5.0.9 と それ以前の
 .SH 関連項目
 \fBstrstr\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b43f487..24cd7e6 100644 (file)
@@ -53,6 +53,6 @@ SVr4, 4.3BSD, C89, C99, POSIX.1\-2001.
 \fBbcopy\fP(3), \fBmemccpy\fP(3), \fBmemcpy\fP(3), \fBstrcpy\fP(3), \fBstrncpy\fP(3),
 \fBwmemmove\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1156bf3..bd5f9fe 100644 (file)
@@ -56,6 +56,6 @@ combine (void *o1, size_t s1, void *o2, size_t s2)
 .SH 関連項目
 \fBmemccpy\fP(3), \fBmemcpy\fP(3), \fBmemmove\fP(3), \fBwmemcpy\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ee9b60c..e53a8f8 100644 (file)
@@ -50,6 +50,6 @@ SVr4, 4.3BSD, C89, C99, POSIX.1\-2001.
 .SH 関連項目
 \fBbzero\fP(3), \fBswab\fP(3), \fBwmemset\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b266ed8..2084245 100644 (file)
@@ -79,6 +79,6 @@ POSIX.1\-2008.  この関数は BSD に存在する。
 \fBmkdir\fP(2), \fBmkstemp\fP(3), \fBmktemp\fP(3), \fBtempnam\fP(3), \fBtmpfile\fP(3),
 \fBtmpnam\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/mkfifo.3 b/manual/LDP_man-pages/draft/man3/mkfifo.3
new file mode 100644 (file)
index 0000000..765a15f
--- /dev/null
@@ -0,0 +1,93 @@
+.\" This manpage is Copyright (C) 1995 James R. Van Zandt <jrv@vanzandt.mv.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" changed section from 2 to 3, aeb, 950919
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MKFIFO 3 2013\-01\-27 GNU "Linux Programmer's Manual"
+.SH 名前
+mkfifo \- FIFOスペシャルファイル(名前付きパイプ)を作成する
+.SH 書式
+.nf
+\fB#include <sys/types.h>\fP
+\fB#include <sys/stat.h>\fP
+.sp
+\fBint mkfifo(const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB);\fP
+.fi
+.SH 説明
+\fBmkfifo\fP()  は名前 \fIpathname\fP を持つFIFOスペシャルファイルを作成 する。FIFOの許可モードは \fImode\fP
+で指定され、プロセスの \fBumask\fP によって通常の方式で変更を受ける: 作成されたファイルの許可 モードは \fB(\fP\fImode\fP\fB &
+~umask)\fP となる。
+.PP
+FIFOスペシャルファイルはパイプに似ているが、作成のされ方のみが異なって いる。FIFOスペシャルファイルは名前のない通信路ではなく、
+\fBmkfifo\fP()  の呼び出しによりファイルシステムの中に加えられる。
+.PP
+ひとたびこのようにしてFIFOスペシャルファイルが作成されると、通常のファ イルと同じように、どのプロセスからでも読み出し、書き込み用にこれをオー
+プンすることができる。ただし、これに対する全ての入出力操作に先立って その両端がオープンされている必要がある。FIFOを読み出し用にオープンする
+と、通常他のプロセスによって同じFIFOが書き込み用にオープンされるまでブ ロックされ、逆の場合も同様である。
+FIFOスペシャルファイルをブロックせずに扱う方法については \fBfifo\fP(7)  を参照のこと。
+.SH 返り値
+成功した場合 \fBmkfifo\fP()  は 0 を返す。 エラーの場合 \-1 を返す (また \fIerrno\fP が適切に設定される)。
+.SH エラー
+.TP 
+\fBEACCES\fP
+\fIpathname\fP の中のディレクトリの一つに対し検索(実行)許可がない。
+.TP 
+\fBEDQUOT\fP
+The user's quota of disk blocks or inodes on the file system has been
+exhausted.
+.TP 
+\fBEEXIST\fP
+\fIpathname\fP がすでに存在する。 これには \fIpathname\fP がシンボリックリンクである場合も含まれる
+(シンボリックリンクがリンク切れか (dangling) どうかは関係ない)。
+.TP 
+\fBENAMETOOLONG\fP
+\fIpathname\fP の長さが \fBPATH_MAX\fP を超えているか、個々のファイル 名部分の長さが \fBNAME_MAX\fP
+を超えている。GNUシステムにおいては、ファ イル名の全体の長さに対しては制限は課せられていないが、ファイルシステム
+によっては各部分の長さに制限のある可能性がある。
+.TP 
+\fBENOENT\fP
+\fIpathname\fP 中のディレクトリ部分が存在しない、 もしくはリンク先の無いシンボリックリンクである。
+.TP 
+\fBENOSPC\fP
+ディレクトリまたはファイルシステムに新規ファイルを作成する余地がない。
+.TP 
+\fBENOTDIR\fP
+\fIpathname\fP 中のディレクトリ要素が、実際にはディレクトリでない。
+.TP 
+\fBEROFS\fP
+\fIpathname\fP が読み取り専用のファイルシステムを指している。
+.SH 準拠
+POSIX.1\-2001.
+.SH 関連項目
+\fBmkfifo\fP(1), \fBclose\fP(2), \fBopen\fP(2), \fBread\fP(2), \fBstat\fP(2), \fBumask\fP(2),
+\fBwrite\fP(2), \fBmkfifoat\fP(3), \fBfifo\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0208db0..fb2cec7 100644 (file)
@@ -89,6 +89,6 @@ POSIX.1\-2008.
 .SH 関連項目
 \fBopenat\fP(2), \fBmkfifo\fP(3), \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6b5b01e..9be41b6 100644 (file)
@@ -138,6 +138,6 @@ glibc2 では POSIX.1 に準拠し \fI<stdlib.h>\fP に含まれている。
 .SH 関連項目
 \fBmkdtemp\fP(3), \fBmktemp\fP(3), \fBtempnam\fP(3), \fBtmpfile\fP(3), \fBtmpnam\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e996318..c261766 100644 (file)
@@ -91,6 +91,6 @@ Single UNIX Specification に従って \fI<stdlib.h>\fP に含まれている。
 .SH 関連項目
 \fBmkstemp\fP(3), \fBtempnam\fP(3), \fBtmpfile\fP(3), \fBtmpnam\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 3b9b57c..8451656 100644 (file)
@@ -80,6 +80,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 .SH 関連項目
 \fBfrexp\fP(3), \fBldexp\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c693537..3c9a03e 100644 (file)
@@ -129,6 +129,6 @@ POSIX.1\-2001 にはない。 BSD 系に存在する。
 .SH 関連項目
 \fBbtree\fP(3), \fBdbopen\fP(3), \fBhash\fP(3), \fBrecno\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 09c8ba8..db3c1e1 100644 (file)
@@ -58,6 +58,6 @@ POSIX.1\-2001.
 \fBmq_getattr\fP(3), \fBmq_notify\fP(3), \fBmq_open\fP(3), \fBmq_receive\fP(3),
 \fBmq_send\fP(3), \fBmq_unlink\fP(3), \fBmq_overview\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1fb5718..61e923b 100644 (file)
@@ -95,6 +95,6 @@ Linux では、 \fBmq_getattr\fP()  と \fBmq_setattr\fP()  はライブラリ
 \fBmq_close\fP(3), \fBmq_notify\fP(3), \fBmq_open\fP(3), \fBmq_receive\fP(3),
 \fBmq_send\fP(3), \fBmq_unlink\fP(3), \fBmq_overview\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c4a6a2c..9ef417c 100644 (file)
@@ -173,6 +173,6 @@ main(int argc, char *argv[])
 \fBmq_close\fP(3), \fBmq_getattr\fP(3), \fBmq_open\fP(3), \fBmq_receive\fP(3),
 \fBmq_send\fP(3), \fBmq_unlink\fP(3), \fBmq_overview\fP(7), \fBsigevent\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 813090c..d4510b9 100644 (file)
@@ -133,6 +133,6 @@ POSIX.1\-2001.
 \fBmq_close\fP(3), \fBmq_getattr\fP(3), \fBmq_notify\fP(3), \fBmq_receive\fP(3),
 \fBmq_send\fP(3), \fBmq_unlink\fP(3), \fBmq_overview\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 04fb7a6..53c94fb 100644 (file)
@@ -115,6 +115,6 @@ Linux では、 \fBmq_timedreceive\fP()  はシステムコールである。 \f
 \fBmq_close\fP(3), \fBmq_getattr\fP(3), \fBmq_notify\fP(3), \fBmq_open\fP(3),
 \fBmq_send\fP(3), \fBmq_unlink\fP(3), \fBmq_overview\fP(7), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 428e93d..11efedc 100644 (file)
@@ -118,6 +118,6 @@ Linux では、 \fBmq_timedsend\fP()  はシステムコールである。 \fBmq
 \fBmq_close\fP(3), \fBmq_getattr\fP(3), \fBmq_notify\fP(3), \fBmq_open\fP(3),
 \fBmq_receive\fP(3), \fBmq_unlink\fP(3), \fBmq_overview\fP(7), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1a00a50..fd0a707 100644 (file)
@@ -60,6 +60,6 @@ POSIX.1\-2001.
 \fBmq_close\fP(3), \fBmq_getattr\fP(3), \fBmq_notify\fP(3), \fBmq_open\fP(3),
 \fBmq_receive\fP(3), \fBmq_send\fP(3), \fBmq_overview\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9a1cc7d..e332c2a 100644 (file)
@@ -61,6 +61,6 @@ C99, POSIX.1\-2001.  IEC 559 や推奨関数になっている IEEE 754/IEEE 854
 .SH 関連項目
 \fBisnan\fP(3), \fBstrtod\fP(3), \fBmath_error\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6d775f3..143d241 100644 (file)
@@ -41,7 +41,7 @@ netlink \- netlink マクロ
 .SH 説明
 \fI<linux/netlink.h>\fP では、 netlink データグラムにアクセスしたり、これを作成するための
 標準マクロがいくつか定義されている。 これらは \fBcmsg\fP(3)  で定義されている補助データ (auxiliary data) 用のマクロと、
-その精神において似ているものである。 netlink ソケットに対してやりとりされるバッファには、 必ずこれらのマクロを使ってアクセスすべきである。
\81\9dã\81®ç²¾ç¥\9eã\81«ã\81\8aã\81\84ã\81¦ä¼¼ã\81¦ã\81\84ã\82\8bã\82\82ã\81®ã\81§ã\81\82ã\82\8bã\80\82 netlink ã\82½ã\82±ã\83\83ã\83\88ã\81«å¯¾ã\81\97ã\81¦ã\82\84ã\82\8aã\81¨ã\82\8aã\81\95ã\82\8cã\82\8bã\83\90ã\83\83ã\83\95ã\82¡ã\81«ã\81¯ã\80\81 å¿\85ã\81\9aã\81\93ã\82\8cã\82\89ã\81®ã\83\9eã\82¯ã\83­ã\81 ã\81\91ã\82\92使ã\81£ã\81¦ã\82¢ã\82¯ã\82»ã\82¹ã\81\99ã\81¹ã\81\8dã\81§ã\81\82ã\82\8bã\80\82
 .TP 
 \fBNLMSG_ALIGN\fP
 netlink メッセージの長さを丸めて正しく揃える。
@@ -78,6 +78,6 @@ libnetlink に関しては
 .UR ftp://ftp.inr.ac.ru\:/ip\-routing\:/iproute2*
 .UE
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2453e54..d5eb4dc 100644 (file)
@@ -113,6 +113,6 @@ glibc バージョン 2.5 以前では、アンダーフローが発生した際
 .SH 関連項目
 \fBnearbyint\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 016b9de..5381e51 100644 (file)
@@ -111,6 +111,6 @@ main(int argc, char *argv[])
 .br
 GNU C ライブラリ・リファレンスマニュアル
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e9c0964..fbdf394 100644 (file)
@@ -89,6 +89,6 @@ main(void)
 }
 .fi
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a9c76ed..07e3725 100644 (file)
@@ -66,6 +66,6 @@ return 命令による終了である。 関数 \fIfunction\fP には、直近
 .SH 関連項目
 \fB_exit\fP(2), \fBatexit\fP(3), \fBexit\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 52a973c..84fe71a 100644 (file)
@@ -112,6 +112,6 @@ POSIX.1\-2008 で規定されている。
 \fBopen\fP(2), \fBclosedir\fP(3), \fBdirfd\fP(3), \fBreaddir\fP(3), \fBrewinddir\fP(3),
 \fBscandir\fP(3), \fBseekdir\fP(3), \fBtelldir\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4f45b1d..9b0278e 100644 (file)
@@ -99,6 +99,6 @@ BSD 疑似端末ペアのオープンへと移行する。
 .SH 関連項目
 \fBfork\fP(2), \fBttyname\fP(3), \fBpty\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 66abbde..1166d48 100644 (file)
@@ -91,6 +91,6 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 .SH 関連項目
 \fBerr\fP(3), \fBerrno\fP(3), \fBerror\fP(3), \fBstrerror\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index aecb3a1..0e96a73 100644 (file)
@@ -125,6 +125,6 @@ POSIX.1\-2001.
 \fBsh\fP(1), \fBfork\fP(2), \fBpipe\fP(2), \fBwait4\fP(2), \fBfclose\fP(3), \fBfflush\fP(3),
 \fBfopen\fP(3), \fBstdio\fP(3), \fBsystem\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7dae45e..fc91db3 100644 (file)
@@ -87,6 +87,6 @@ POSIX.1\-2008 では、 \fIlen\fP が 0 の場合、もしくは \fIoffset\fP 
 .SH 関連項目
 \fBfallocate\fP(1), \fBfallocate\fP(2), \fBlseek\fP(2), \fBposix_fadvise\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1f35826..57b3819 100644 (file)
@@ -177,6 +177,6 @@ glibc の \fBmalloc\fP(3) は常に 8 バイトにアラインメントされた
 .SH 関連項目
 \fBbrk\fP(2), \fBgetpagesize\fP(2), \fBfree\fP(3), \fBmalloc\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 29b3036..2f24c02 100644 (file)
@@ -89,6 +89,6 @@ posix_openpt(int flags)
 \fBopen\fP(2), \fBgetpt\fP(3), \fBgrantpt\fP(3), \fBptsname\fP(3), \fBunlockpt\fP(3),
 \fBpts\fP(4), \fBpty\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6feb689..e3e0dfd 100644 (file)
@@ -181,6 +181,6 @@ glibc バージョン 2.3.2 以前では、 アンダーフローやアンダー
 .SH 関連項目
 \fBcbrt\fP(3), \fBcpow\fP(3), \fBsqrt\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0bb49e5..8e0c64e 100644 (file)
@@ -54,6 +54,6 @@ pow10, pow10f, pow10l \- 底が 10 の累乗関数
 .SH 関連項目
 \fBexp10\fP(3), \fBpow\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/printf.3 b/manual/LDP_man-pages/draft/man3/printf.3
new file mode 100644 (file)
index 0000000..e11662a
--- /dev/null
@@ -0,0 +1,525 @@
+.\" Copyright (c) 1999 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" Earlier versions of this page influenced the present text.
+.\" It was derived from a Berkeley page with version
+.\"       @(#)printf.3    6.14 (Berkeley) 7/30/91
+.\" converted for Linux by faith@cs.unc.edu, updated by
+.\" Helmut.Geyer@iwr.uni-heidelberg.de, agulbra@troll.no and Bruno Haible.
+.\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
+.\"
+.\" 1999-11-25 aeb - Rewritten, using SUSv2 and C99.
+.\" 2000-07-26 jsm28@hermes.cam.ac.uk - three small fixes
+.\" 2000-10-16 jsm28@hermes.cam.ac.uk - more fixes
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH PRINTF 3 2013\-03\-05 GNU "Linux Programmer's Manual"
+.SH 名前
+printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf \-
+指定された書式に変換して出力を行う
+.SH 書式
+\fB#include <stdio.h>\fP
+.sp
+\fBint printf(const char *\fP\fIformat\fP\fB, ...);\fP
+.br
+\fBint fprintf(FILE *\fP\fIstream\fP\fB, const char *\fP\fIformat\fP\fB, ...);\fP
+.br
+\fBint sprintf(char *\fP\fIstr\fP\fB, const char *\fP\fIformat\fP\fB, ...);\fP
+.br
+\fBint snprintf(char *\fP\fIstr\fP\fB, size_t \fP\fIsize\fP\fB, const char *\fP\fIformat\fP\fB,
+\&...);\fP
+.sp
+\fB#include <stdarg.h>\fP
+.sp
+\fBint vprintf(const char *\fP\fIformat\fP\fB, va_list \fP\fIap\fP\fB);\fP
+.br
+\fBint vfprintf(FILE *\fP\fIstream\fP\fB, const char *\fP\fIformat\fP\fB, va_list
+\fP\fIap\fP\fB);\fP
+.br
+\fBint vsprintf(char *\fP\fIstr\fP\fB, const char *\fP\fIformat\fP\fB, va_list
+\fP\fIap\fP\fB);\fP
+.br
+\fBint vsnprintf(char *\fP\fIstr\fP\fB, size_t \fP\fIsize\fP\fB, const char
+*\fP\fIformat\fP\fB, va_list \fP\fIap\fP\fB);\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+.ad l
+\fBsnprintf\fP(), \fBvsnprintf\fP():
+.RS 4
+_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _ISOC99_SOURCE ||
+_POSIX_C_SOURCE\ >=\ 200112L;
+.br
+or \fIcc \-std=c99\fP
+.RE
+.ad
+.SH 説明
+\fBprintf\fP()  関数グループは、以下で述べるように、 \fIformat\fP に従って出力を生成するものである。 \fBprintf\fP()  と
+\fBvprintf\fP()  は出力を \fIstdout\fP (標準出力ストリーム) に書き出す。 \fBfprintf\fP()  と
+\fBvfprintf\fP()  は出力を指定された出力 \fIstream\fP に書き出す。 \fBsprintf\fP(), \fBsnprintf\fP(),
+\fBvsprintf\fP(), \fBvsnprintf\fP()  は出力を文字列 \fIstr\fP に書き込む。
+.PP
+\fBsnprintf\fP()  と \fBvsnprintf\fP()  は最大で \fIsize\fP バイトを \fIstr\fP に書き込む (\fIsize\fP
+には文字列を終端する NULL バイト (\(aq\e0\(aq) もを含まれる)。
+.PP
+\fBvprintf\fP(), \fBvfprintf\fP(), \fBvsprintf\fP(), \fBvsnprintf\fP()  の各関数はそれぞれ
+\fBprintf\fP(), \fBfprintf\fP(), \fBsprintf\fP(), \fBsnprintf\fP(),
+の各関数と等価であり、可変数引き数の代わりに \fIva_list\fP を引き数として呼び出される点だけが異なる。 これらの関数では \fIva_end\fP
+マクロは呼び出されない。 これらの関数は \fIva_arg\fP を呼び出すので、呼び出し後の \fIap\fP の値は未定義である。 \fBstdarg\fP(3)
+を参照のこと。
+.PP
+これらの 8 つの関数は \fIformat\fP 文字列の制御に従って出力を書き出す。 \fIformat\fP 文字列は、これに続く引き数 (または
+\fBstdarg\fP(3)  の可変長引き数機構を使ってアクセスできる引き数)  をどのように変換して出力するかを指定する。
+
+C99 と POSIX.1\-2001 では、 \fBsprintf\fP(), \fBsnprintf\fP(), \fBvsprintf\fP(),
+\fBvsnprintf\fP()  の呼び出しで、範囲が重複するオブジェクト間でコピーが発生する場合の 結果は不定であると規定されている
+(例えば、出力先の文字列と入力された 引き数の一つが同じバッファを参照している場合などである)。 「注意」の節を参照。
+.SS "Return Values"
+成功時には、上記の関数は書き込まれた文字数を返す (文字列の最後を示すために使用する NULL バイトは数に含まれない)。
+
+\fBsnprintf\fP()  と \fBvsnprintf\fP()  は、 \fIsize\fP バイトを越える文字数を書き込まない (\fIsize\fP
+には文字列を終端する NULL バイト (\(aq\e0\(aq) も含まれる)。 この制限によって出力が切り詰められた場合には、
+もし十分なスペースがあれば書き込まれたであろう文字の個数 (文字列を終端する NULL バイトを除く) を返す。 従って、返り値が \fIsize\fP
+以上だった場合、出力が切り詰められたことを意味する (後述の注意も参照のこと)。
+
+エラーが発生した場合は、負の数を返す。
+.SS フォーマット文字列のフォーマット
+フォーマット文字列は文字の列で、 (もしあるなら) 初期シフト状態で始まり、初期シフト状態で終わる。 フォーマット用の文字列は 0 個以上の命令
+(directives) によって構成される。 命令には、通常文字と変換指定 (conversion specifications) がある。
+通常文字は \fB%\fP 以外の文字で、出力ストリームにそのままコピーされる。 変換指定は、それぞれが 0 個以上の引き数を取る。 各変換指定は文字
+\fB%\fP で始まり、 \fI変換指定子 (conversion specifier)\fP で終わる。 \fB%\fP と変換指定子の間には、0 個以上の
+\fIフラグ 、\fP 最小 \fIフィールド幅 、\fP \fI精度 、\fP \fI長さ修飾子\fP を (この順序で) 置くことができる。
+
+引き数は (型の格上げの後は) 変換指定子が表す型と正確に対応しなければならない。 デフォルトでは、\(aq*\(aq
+や変換指定子が出てくる毎に次の引き数を要求され、 引き数は指定された順序で使用されていく (指定された引き数の個数が不十分ならエラーとなる)。
+また、引き数が必要な箇所で \(aq%\(aq の代わりに "%m$"、 \(aq*\(aqの代わりに "*m$" と書くことで、
+明示的にどの引き数を使用するかを指定することもできる。 ここで 10進の整数 m は希望の引き数の引き数リストでの位置を示す (最初の引き数の番号が 1
+である)。 従って、
+.in +4n
+.nf
+
+printf("%*d", width, num);
+
+.fi
+.in
+と
+.in +4n
+.nf
+
+printf("%2$*1$d", width, num);
+
+.fi
+.in
+は等価である。 二番目の書き方では同じ引き数を繰り返し参照することができる。 C99 標準には、 Single UNIX Specification
+由来の \(aq$\(aq を使った書き方は含まれていない。 \(aq$\(aq を使ったスタイルを使うと、引き数を取る変換及び幅と精度の引き数を
+全てこのスタイルで指定しなければならないが、 引き数を消費しない "%%" フォーマットと混ざっているかもしれない。 \(aq$\(aq
+で指定される引き数の番号に空きがあってはならない。 例えば、もし引き数 1 と 3 が指定されると、引き数 2 もフォーマット文字列のどこかで
+指定されなければならない。
+
+数値変換には小数点や 1000 単位の区切り文字を使うものもある。 実際にどの文字を使うかはロケールの \fBLC_NUMERIC\fP による。 POSIX
+ロケールでは小数点に \(aq.\(aq を用い、 区切り文字は使わない。 従って、
+.in +4n
+.nf
+
+printf("%\(aq.2f", 1234567.89);
+
+.fi
+.in
+は、 POSIX ロケールでは "1234567.89" 、 nl_NL ロケールでは "1234567,89"、 da_DK ロケールでは
+"1.234.567,89" となる。
+.SS フラグ文字
+% 文字の後ろには 0 個以上のフラグ文字が続く。
+.TP 
+\fB#\fP
+値は「別の形式」に変換される。 \fBo\fP 変換の場合、(先頭文字が 0 になっていない場合に先頭に 0 を追加することで)  出力文字列の最初の文字を
+0 にする。 \fBx\fP と \fBX\fP 変換の場合、数値が 0 でないときには文字列 "0x" (\fBX\fP 変換の場合には "0X") が前に付与される。
+\fBa\fP, \fBA\fP, \fBe\fP, \fBE\fP, \fBf\fP, \fBF\fP, \fBg\fP, \fBG\fP 変換では、 小数点に続く数字がなくても、
+出力には常に小数点が含まれる (通常は、小数点の後に数字が続く場合にのみ、 小数点が表示される)。 \fBg\fP と \fBG\fP
+変換の場合、他の変換とは異なり、末尾のゼロが変換結果から削除されない。 その他の変換では、結果は未定義である。
+.TP 
+\fB\&0\fP
+値をゼロで埋める。 \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP, \fBa\fP, \fBA\fP, \fBe\fP, \fBE\fP, \fBf\fP,
+\fBF\fP, \fBg\fP, \fBG\fP 変換では、変換した値の左側を空白文字の代わりにゼロで埋める。 \fB\&0\fP と \fB\-\fP が両方とも指定された場合は、
+\fB\&0\fP フラグは無視される。 精度が数値変換 (\fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP)
+と同時に指定された場合には、 \fB\&0\fP フラグは無視される。 その他の変換では、動作は未定義である。
+.TP 
+\fB\-\fP
+変換値をフィールド境界で左揃えにする (デフォルトは右揃えである)。 \fBn\fP 変換以外では、変換された値は
+左側ではなく右側を空白文字やゼロで埋められる。 \fB\-\fP と \fB\&0\fP の両方が指定された場合には、 \fB\-\fP が優先される。
+.TP 
+\&\fB' '\fP
+(1個の半角スペース)  符号付き変換で生成された正の数字の前に空白 (または空文字列) が置かれる。
+.TP 
+\fB+\fP
+符号付き変換によって出力される数字の前に、常に符号 (+ か \-) が置かれる。 デフォルトでは、符号は負の数字の場合のみ付与される。 \fB+\fP
+と半角スペースの 両方が使われている場合には、 \fB+\fP が優先される。
+.PP
+上記の 5 つのフラグは C 標準で定義されている。 SUSv2 では、さらにもう一つフラグ文字が規定されている。
+.TP 
+\fB\(aq\fP
+10進数変換 (\fBi\fP, \fBd\fP, \fBu\fP, \fBf\fP, \fBF\fP, \fBg\fP, \fBG\fP)  において、ロケール情報に指定があれば 1000
+単位の区切り文字を出力する。 \fBgcc\fP(1)  の多くのバージョンは、このオプションを解釈することができず、 警告を出力することに注意せよ。
+%\(aqF は SUSv2 には含まれていない。
+.PP
+glibc 2.2 では、さらに一つフラグ文字が追加されている。
+.TP 
+\fBI\fP
+.\" outdigits keyword in locale file
+10進整数変換 (\fBi\fP, \fBd\fP, \fBu\fP)  において、ロケールの代替出力数字があれば、それを用いて出力する。 例えば、 glibc
+2.2.3 以降では、ペルシア ("fa_IR") ロケールで アラビア数字 (Arabic\-Indic digits) を出力できる。
+.SS フィールド幅
+最小のフィールド幅を指定する 10進数の数値文字列 (文字列の最初の文字は ゼロ以外)。本項目はオプションである。
+変換された値の文字数がフィールド長よりも少ない場合、 フィールドの左側をスペースで埋める (左揃えのフラグがある場合は右側を埋める)。
+10進数の文字列の代わりに "*" や "*m$" (\fIm\fP は 10進整数) を書くこともできる。 "*" と "*m$" はそれぞれ、次の引き数と
+\fIm\fP 番目の引き数をフィールド幅として 使うことを指定する (これらの引き数は \fIint\fP 型でなければならない)。
+フィールド幅に負の数が指定された場合は、 \(aq\-\(aq フラグと正の数のフィールド幅として扱われる。
+フィールド幅が小さかったり指定がなかったりしても、フィールドが切り詰められる ことはない。もし変換結果がフィールド幅よりも広かった場合、
+フィールドは変換結果が入る幅に広げられる。
+.SS 精度
+オプションである精度は、ピリオド (\(aq.\(aq) とそれに続く10進数という 形式で指定する (10進数はオプション) 。
+10進数の文字列の代わりに "*" や "*m$" (m は 10 進整数)を書くこともできる。 "*" と "*m$" はそれぞれ、次の引き数と m
+番目の引き数を精度として 使うことを指定する (これらの引き数は \fIint\fP 型でなければならない)。 精度として \(aq.\(aq
+だけが指定されたり、精度が負の数だった場合、 精度はゼロとみなされる。 \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP
+変換では、表示される最小の桁数を指定する。 \fBa\fP, \fBA\fP, \fBe\fP, \fBE\fP, \fBf\fP, \fBF\fP
+変換では、小数点以下に表示される数字の桁数を指定する。 \fBg\fP と \fBG\fP 変換では、有効数字の最大桁数を指定する。 \fBs\fP と \fBS\fP
+変換では、文字列から出力される最大文字数を指定する。
+.SS 長さ修飾子
+「整数変換」とは、 \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP 変換のことである。
+.TP 
+\fBhh\fP
+整数変換に対応する引き数が \fIsigned char\fP か \fIunsigned char\fP で、 \fBn\fP 変換に対応する引き数が \fIsigned
+char\fP へのポインタであることを示す。
+.TP 
+\fBh\fP
+整数変換に対応する引き数が \fIshort int\fP か \fIunsigned short int\fP で、 \fBn\fP 変換に対応する引き数が
+\fIshort int\fP へのポインタであることを示す。
+.TP 
+\fBl\fP
+各変換に対応する引き数が、 整数変換では \fIlong int\fPか \fIunsigned long int\fP、 \fBn\fP 変換では \fIlong
+long int\fP へのポインタ、 \fBc\fP 変換では \fIwint_t\fP、 \fBs\fP 変換では \fIwchar_t\fP へのポインタであることを示す。
+.TP 
+\fBll\fP (エルエル)
+整数変換に対応する引き数が \fIlong long int\fP か \fIunsigned long long int\fP で、 \fBn\fP
+変換に対応する引き数が \fIlong int\fP へのポインタであることを示す。
+.TP 
+\fBL\fP
+\fBa\fP, \fBA\fP, \fBe\fP, \fBE\fP, \fBf\fP, \fBF\fP, \fBg\fP, \fBG\fP 変換に対応する引き数が \fIlong double\fP
+であることを示す。 (C99 では %LF を使うことを認めているが、SUSv2 では認められていない。)
+.TP 
+\fBq\fP
+("quad"。 4.4BSD と Linux libc5 のみ有効。使ってはならない。)  \fBll\fP と同じ意味である。
+.TP 
+\fBj\fP
+整数変換に対応する引き数が \fIintmax_t\fP か \fIuintmax_t\fP であることを示す。
+.TP 
+\fBz\fP
+整数変換に対応する引き数が \fIsize_t\fP か \fIssize_t\fP であることを示す。 (Linux libc5 では、これを指定するのに
+\fBZ\fP を用いる。使ってはならない。)
+.TP 
+\fBt\fP
+整数変換に対応する引き数が \fIptrdiff_t\fP であることを示す。
+.PP
+SUSv2 で長さ修飾子として使用できるのは、 \fBh\fP (\fBhd\fP, \fBhi\fP, \fBho\fP, \fBhx\fP, \fBhX\fP, \fBhn\fP),
+\fBl\fP (\fBld\fP, \fBli\fP, \fBlo\fP, \fBlx\fP, \fBlX\fP, \fBln\fP, \fBlc\fP, \fBls\fP), \fBL\fP (\fBLe\fP,
+\fBLE\fP, \fBLf\fP, \fBLg\fP, \fBLG\fP)  だけである。
+.SS 変換指定子
+適用される変換の型を指定する文字。 変換指定子とその意味は以下の通りである。
+.TP 
+\fBd\fP, \fBi\fP
+\fIint\fP 引き数を符号付き 10 進表記に変換する。 精度指定があれば、精度で指定した桁数は必ず出力される。変換後の値が
+指定された桁数に足りない場合は、左側が 0 で埋められる。 デフォルトの精度は 1 である。 0 を表示しようとした時に、明示的に精度として 0
+が指定されていると、 出力は空文字列となる。
+.TP 
+\fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP
+\fIunsigned int\fP 引き数を、 符号なし8進数 (\fBo\fP), 符号なし10進数 (\fBu\fP), 符号なし16進数 (\fBx\fP と
+\fBX\fP)  に変換する。 \fBx\fP 変換では \fBabcdef\fP が使用され、 \fBX\fP 変換では \fBABCDEF\fP が使用される。
+精度指定があれば、精度で指定した桁数は必ず出力される。変換後の値が 指定された桁数に足りない場合は、左側が 0 で埋められる。
+.TP 
+\fBe\fP, \fBE\fP
+\fIdouble\fP 引き数を丸めて [\-]d\fB\&.\fPddd\fBe\fP\(+-dd の形に変換する。
+小数点の前には一桁の数字があり、小数点以下の桁数は精度で指定された桁数
+になる。精度は指定されなかった場合 6 とみなされる。 精度が 0 の場合には、
+小数点以下は表示されない。\fBE\fP 変換では、指数を表現するときに (\fBe\fP で
+はなく) \fBE\fP が使われる。指数部分は少なくとも 2桁表示される。つまり、
+指数の値が 0 の場合には、00 と表示される。
+.TP 
+\fBf\fP, \fBF\fP
+\fIdouble\fP 引き数を丸めて [\-]ddd\fB\&.\fPddd の形の10進表現に変換する。 小数点の後の桁数は、精度で指定された値となる。
+精度が指定されていない場合には 6 として扱われる。 精度として明示的に 0 が指定されたときには、小数点以下は表示されない。
+小数点を表示する際には、小数点の前に少なくとも一桁は数字が表示される。
+
+(SUSv2 では、\fBF\fP は規定されておらず、無限や NaN に関する文字列表現を
+行ってもよいことになっている。
+ C99 標準では、\fBf\fP 変換では、無限は "[\-]inf" か "[\-]infinity" と表示し、
+NaN は文字列の先頭に `nan' をつけて表示するように規定されている。
+\fBF\fP 変換の場合は "[\-]INF", "[\-]INFINITY", "NAN*" と表示される。)
+.TP 
+\fBg\fP, \fBG\fP
+\fIdouble\fP 引き数を \fBf\fP か \fBe\fP (\fBG\fP 変換の場合は \fBF\fP か \fBE\fP)  の形式に変換する。
+精度は表示する桁数を指定する。 精度が指定されない場合は、6桁とみなされる。 精度が 0 の場合は、1桁とみなされる。 変換される値の指数が、 \-4
+より小さいか、精度以上の場合に、 \fBe\fP 形式が使用される。 変換された結果の小数部分の末尾の 0 は削除される。小数点が表示されるのは、
+小数点以下に数字が少なくとも一つある場合にだけである。
+.TP 
+\fBa\fP, \fBA\fP
+(C99 にはあるが SUSv2 にはない) \fBa\fP 変換では、 \fIdouble\fP 引き数を
+(abcdef の文字を使って) [\-]\fB0x\fPh\fB\&.\fPhhhh\fBp\fP\(+- 形式の
+16 進表記に変換する。
+\fBA\fP 変換では、前置文字列 \fB0X\fP, 文字 ABCDEF, 指数文字 \fBP\fP を用いる。
+小数点の前には 1 桁の 16 進数が置かれ、小数点の後ろの桁数は 精度で指定
+された値となる。デフォルトの精度は、その値が 2 進数で正確に表現できる
+場合には、その値を正確に表現できる桁数となる。それ以外の場合は、
+\fIdouble\fP 型の値を区別するのに十分な大きさとなる。 小数点の前の数字は、
+正規化されていない数の場合はいくつになるか分からない。 正規化された数の
+場合は、 0 以外の値になるが、いくつになるかは分からない。
+.TP 
+\fBc\fP
+\fBl\fP 修飾子がなければ、 \fIint\fP 引き数を \fIunsigned char\fP に変換して、その結果に対応する文字を出力する。 \fBl\fP
+修飾子があれば、 \fIwint_t\fP (ワイド文字) 引き数を、 \fBwcrtomb\fP(3)
+関数を初期シフト状態で呼び出してマルチバイト文字列に変換し、 変換されたマルチバイト文字列を出力する。
+.TP 
+\fBs\fP
+\fBl\fP 修飾子がない場合、 引き数は \fIconst char *\fP 型で文字型の配列へのポインタ (文字列へのポインタ) であることが
+期待されている。配列中の文字は、終端の NULL バイト (\(aq\e0\(aq)  が出てくるまで出力される (終端文字は出力されない)。
+精度が指定されていると、指定された字数以上は出力されない。 精度が指定された場合には、終端バイトが存在する必要はない。
+精度が指定されていなかったり、精度の値が配列の大きさより大きい場合には、 配列は終端の NULL バイトを含んでいなければならない。
+
+\fBl\fP 修飾子が指定されている場合、 引き数は \fIconst wchar_t *\fP 型でワイド文字の配列へのポインタであることが期待されている。
+配列中のワイド文字は (1文字毎に \fBwcrtomb\fP(3)  を呼び出して) マルチバイト文字に変換される (最初のワイド文字の変換の前に
+\fBwcrtomb\fP()  のシフト状態を初期状態に戻してから変換は行われる)。 マルチバイト文字への変換は、文字列を終端する NULL ワイド文字が
+出てくるまで行われ、終端 NULL ワイド文字も含めて変換される。 結果のマルチバイト文字列は、終端の NULL バイトが出てくるまで 出力される
+(終端の NULL バイトは出力されない)。 精度が指定された場合、指定されたバイト数以上には出力されない。
+但し、マルチバイト文字の一部分だけが出力されることはない。 精度は「バイト」数を指定するものであり、「ワイド文字」数や
+「画面での位置」を指定するものではないことに注意。 精度が指定されていて、さらに出力が配列の末尾に達する前に出力バイト数が
+精度の値を超える場合だけは、配列は NULL ワイド文字で終端されていなくてもよい。 それ以外の場合は、必ず配列は NULL
+ワイド文字で終端されていなければならない。
+.TP 
+\fBC\fP
+(C99 にはないが SUSv2 にはある)  \fBlc\fP と同じ。使ってはならない。
+.TP 
+\fBS\fP
+(C99 にはないが SUSv2 にはある)  \fBls\fP と同じ。使ってはならない。
+.TP 
+\fBp\fP
+\fIvoid *\fP ポインタ引き数を (\fB%#x\fP や \fB%#lx\fP のような) 16 進数で出力する。
+.TP 
+\fBn\fP
+これまでに出力された文字数を \fIint *\fP (または類似の型) のポインタ引き数が指す整数に保存する。 引き数の変換は行われない。
+.TP 
+\fBm\fP
+(glibc での拡張)  \fIstrerror(errno)\fP の出力を表示する。引き数は必要ない。
+.TP 
+\fB%\fP
+\(aq%\(aq 文字を出力する。変換される引き数は無い。 変換指定全体を書くと "%%" となる。
+.SH 準拠
+\fBfprintf\fP(), \fBprintf\fP(), \fBsprintf\fP(), \fBvprintf\fP(), \fBvfprintf\fP(),
+\fBvsprintf\fP()  関数は、C89 と C99 に準拠している。 \fBsnprintf\fP()  と \fBvsnprintf\fP()  は C99
+に準拠している。
+.PP
+\fBsnprintf\fP()  の返り値を見ると、 SUSv2 と C99 標準は互いに矛盾している。 SUSv2 では、 \fBsnprintf\fP()
+が \fIsize\fP=0 で呼び出された場合、 1 未満の値を何か返り値とするように規定している。 一方 C99 では、このような場合 \fIstr\fP を
+NULL とし、返り値として (通常通り) 出力バッファが十分な大きさが あった場合に出力されるであろう文字数を返す。
+.PP
+Linux libc4 では、 5 つの C 標準のフラグ、 長さ修飾子 \fBh\fP, \fBl\fP, \fBL\fP、変換 \fBc\fP, \fBd\fP, \fBe\fP,
+\fBE\fP, \fBf\fP, \fBF\fP, \fBg\fP, \fBG\fP, \fBi\fP, \fBn\fP, \fBo\fP, \fBp\fP, \fBs\fP, \fBu\fP, \fBx\fP, \fBX\fP
+が使える。 但し \fBF\fP は \fBf\fP と同義である。 また、 \fBD\fP, \fBO\fP, and \fBU\fP を \fBld\fP, \fBlo\fP, and
+\fBlu\fP と同じものとして使える (これはまずい仕様で、 後に \fB%D\fP の対応が打ち切られた時に深刻なバグを
+引き起こした)。ロケール依存の小数点、1000 区切り、 NaN と無限、 "%m$" と "*m$" は使えない。
+.PP
+Linux libc5 では、 5 つの C 標準のフラグと \(aq フラグ、ロケール、 "%m$" と "*m$" が使える。 また、長さ修飾子
+\fBh\fP, \fBl\fP, \fBL\fP, \fBZ\fP, iand \fBq\fP が使えるが、 \fBL\fP と \fBq\fP は両方とも \fIlong double\fP と
+\fIlong long int\fP に対応している (これはバグである)。 現在では変換 \fBF\fP, \fBD\fP, \fBO\fP, \fBU\fP
+は認識されないが、変換文字 \fBm\fP が追加された。これは \fIstrerror(errno)\fP を出力するものである。
+.PP
+glibc 2.0 では、変換文字 \fBC\fP と \fBS\fP が追加された。
+.PP
+glibc 2.1 では、長さ修飾子 \fBhh\fP, \fBj\fP, \fBt\fP, \fBz\fP と変換文字 \fBa\fP, \fBA\fP が追加された。
+.PP
+glibc 2.2 では、 C99 で規定された意味での変換文字 \fBF\fP と フラグ文字 \fBI\fP が追加された。
+.SH 注意
+テキストを \fIbuf\fP に追加するのに、軽率にも次のようなコードを使っているプログラムがある。
+
+    sprintf(buf, "%s some further text", buf);
+
+.\" http://sourceware.org/bugzilla/show_bug.cgi?id=7075
+しかしながら、標準規格では、 \fBsprintf\fP(), \fBsnprintf\fP(), \fBvsprintf\fP(), \fBvsnprintf\fP()
+の呼び出しにおいて、コピー元とコピー先のバッファが重なっていた場合の 結果は不定である、と明記されている。 使用する \fBgcc\fP(1)
+のバージョンや指定したコンパイラのオプション次第では、 上記のような呼び出しで、期待した結果が得られ「ない」ことがある。
+
+.\" .SH HISTORY
+.\" UNIX V7 defines the three routines
+.\" .BR printf (),
+.\" .BR fprintf (),
+.\" .BR sprintf (),
+.\" and has the flag \-, the width or precision *, the length modifier l,
+.\" and the conversions doxfegcsu, and also D,O,U,X as synonyms for ld,lo,lu,lx.
+.\" This is still true for 2.9.1BSD, but 2.10BSD has the flags
+.\" #, + and <space> and no longer mentions D,O,U,X.
+.\" 2.11BSD has
+.\" .BR vprintf (),
+.\" .BR vfprintf (),
+.\" .BR vsprintf (),
+.\" and warns not to use D,O,U,X.
+.\" 4.3BSD Reno has the flag 0, the length modifiers h and L,
+.\" and the conversions n, p, E, G, X (with current meaning)
+.\" and deprecates D,O,U.
+.\" 4.4BSD introduces the functions
+.\" .BR snprintf ()
+.\" and
+.\" .BR vsnprintf (),
+.\" and the length modifier q.
+.\" FreeBSD also has functions
+.\" .BR asprintf ()
+.\" and
+.\" .BR vasprintf (),
+.\" that allocate a buffer large enough for
+.\" .BR sprintf ().
+.\" In glibc there are functions
+.\" .BR dprintf ()
+.\" and
+.\" .BR vdprintf ()
+.\" that print to a file descriptor instead of a stream.
+glibc の \fBsnprintf\fP()  と \fBvsnprintf\fP()  の実装は、バージョン 2.1 以降は C99 標準に準拠しており、
+上記の通りの動作をする。 glibc 2.0.6 までは、出力が切り詰められた場合は \-1 を返す。
+.SH バグ
+\fBsprintf\fP()  と \fBvsprintf\fP()  は勝手に十分に長い文字列領域があると仮定するので、呼び出し側は
+実際の領域からあふれないように注意しなければならない。 しかし、これを保証することが不可能な場合が多い。
+生成される文字列の長さはロケール依存であり、予測が難しいことに注意。 代わりに \fBsnprintf\fP()  と \fBvsnprintf\fP()
+(または \fBasprintf\fP(3)  と \fBvasprintf\fP(3))  を使うこと。
+.PP
+Linux libc4.[45] には \fBsnprintf\fP()  はないが、 libbsd が提供されており、 その中には \fBsprintf\fP()
+と等価な (つまり \fIsize\fP 引き数を無視する)  \fBsnprintf\fP()  がある。 したがって、初期の libc4 で
+\fBsnprintf\fP()  を使うと、深刻なセキュリティ問題を引き起こすことがある。
+.PP
+.\" .PP
+.\" Some floating-point conversions under early libc4
+.\" caused memory leaks.
+\fBprintf(\fP\fIfoo\fP\fB);\fP のようなコードはしばしばバグを引き起こす。 なぜなら \fIfoo\fP に %
+文字が含まれてるかもしれないからである。 \fIfoo\fP が信頼できないユーザー入力から作られている場合には、 その中に \fB%n\fP
+が含まれていることがあり、 \fBprintf\fP()  呼び出し時にメモリへの書き込みが起こり、 セキュリティーホールを作ることになるかもしれない。
+.SH 例
+\fIPi\fP を 5 桁で出力する。
+.in +4n
+.nf
+
+#include <math.h>
+#include <stdio.h>
+fprintf(stdout, "pi = %.5f\en", 4 * atan(1.0));
+.fi
+.in
+.PP
+日付と時間を "Sunday, July 3, 10:02" の形式で出力する。 (\fIweekday\fP と \fImonth\fP
+は文字列へのポインタである)
+.in +4n
+.nf
+
+#include <stdio.h>
+fprintf(stdout, "%s, %s %d, %.2d:%.2d\en",
+       weekday, month, day, hour, min);
+.fi
+.in
+.PP
+日 \- 月 \- 年 の順序で表示を行う国も多い。 従って、国際版では書式で指定された順番で 引き数を表示できなければならない。
+.in +4n
+.nf
+
+#include <stdio.h>
+fprintf(stdout, format,
+       weekday, month, day, hour, min);
+
+.fi
+.in
+\fIformat\fP はロケールに依存しており、引き数の順番を変えることもできる。 \fIformat\fP が
+.in +4n
+.nf
+
+"%1$s, %3$d. %2$s, %4$d:%5$.2d\en"
+
+.fi
+.in
+であれば、 "Sonntag, 3. Juli, 10:02" という結果になる。
+.PP
+十分に大きな文字列領域を確保して、そこにメッセージを格納するには (glibc 2.0 と glibc 2.1 の両方で正しく動作するコード):
+.PP
+If truncation occurs in glibc versions prior to 2.0.6, this is treated as an
+error instead of being handled gracefully.
+.nf
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+char *
+make_message(const char *fmt, ...)
+{
+    int n;
+    int size = 100;     /* Guess we need no more than 100 bytes */
+    char *p, *np;
+    va_list ap;
+
+    if ((p = malloc(size)) == NULL)
+        return NULL;
+
+    while (1) {
+
+        /* Try to print in the allocated space */
+
+        va_start(ap, fmt);
+        n = vsnprintf(p, size, fmt, ap);
+        va_end(ap);
+
+        /* Check error code */
+
+        if (n < 0)
+            return NULL;
+
+        /* If that worked, return the string */
+
+        if (n < size)
+            return p;
+
+        /* Else try again with more space */
+
+        size = n + 1;       /* Precisely what is needed */
+
+
+        if ((np = realloc (p, size)) == NULL) {
+            free(p);
+            return NULL;
+        } else {
+            p = np;
+        }
+    }
+}
+.fi
+.SH 関連項目
+\fBprintf\fP(1), \fBasprintf\fP(3), \fBdprintf\fP(3), \fBscanf\fP(3), \fBsetlocale\fP(3),
+\fBwcrtomb\fP(3), \fBwprintf\fP(3), \fBlocale\fP(5)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index a155ca5..5236bfb 100644 (file)
@@ -62,6 +62,6 @@ SVr4 のコールに似ている (しかし POSIX.1\-2001 ではない)。
 .SH 関連項目
 \fBgprof\fP(1), \fBsetitimer\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f384ef2..cac28a8 100644 (file)
@@ -54,6 +54,6 @@ Linux 独自のファイル \fI/proc/[number]/cmdline\fP でも同様の情報
 .SH 関連項目
 \fBproc\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/psignal.3 b/manual/LDP_man-pages/draft/man3/psignal.3
new file mode 100644 (file)
index 0000000..6748452
--- /dev/null
@@ -0,0 +1,95 @@
+.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" References consulted:
+.\"     Linux libc source code
+.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
+.\"     386BSD man pages
+.\" Modified Sat Jul 24 18:45:17 1993 by Rik Faith (faith@cs.unc.edu)
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH PSIGNAL 3 2010\-10\-06 GNU "Linux Programmer's Manual"
+.SH 名前
+psignal, psiginfo \- シグナルメッセージを表示
+.SH 書式
+.nf
+\fB#include <signal.h>\fP
+.sp
+\fBvoid psignal(int \fP\fIsig\fP\fB, const char *\fP\fIs\fP\fB);\fP
+\fBvoid psiginfo(const siginfo_t *\fP\fIpinfo\fP\fB, const char *\fP\fIs\fP\fB);\fP
+.sp
+\fBextern const char *const \fP\fIsys_siglist\fP\fB[];\fP
+.fi
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBpsignal\fP(): _SVID_SOURCE || _BSD_SOURCE
+.br
+\fBpsiginfo\fP(): _XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+.br
+\fIsys_siglist\fP: _BSD_SOURCE
+.SH 説明
+\fBpsignal\fP() 関数は、文字列 \fIs\fP、コロン、スペース、
+シグナル番号 \fIsig\fP を説明する文字列、終端の改行から
+構成されるメッセージを \fIstderr\fP に表示する。
+文字列 \fIs\fP が NULL か空の場合、コロンとスペースは省略される。
+\fIsig\fP が不正ならば、表示される メッセージは未知のシグナルを示す。
+
+The \fBpsiginfo\fP()  function is like \fBpsignal\fP(), except that it displays
+information about the signal described by \fIpinfo\fP, which should point to a
+valid \fIsiginfo_t\fP structure.  As well as the signal description,
+\fBpsiginfo\fP()  displays information about the origin of the signal, and
+other information relevant to the signal (e.g., the relevant memory address
+for hardware\-generated signals, the child process ID for \fBSIGCHLD\fP, and the
+user ID and process ID of the sender, for signals set using \fBkill\fP(2)  or
+\fBsigqueue\fP(3)).
+
+配列 \fIsys_siglist\fP はシグナルを説明する文字列を保持しており、 配列へのアクセスにはシグナル番号を添え字として用いる事ができる。
+.SH 返り値
+関数 \fBpsignal\fP() と \fBpsiginfo\fP() は、値を返さない。
+.SH バージョン
+\fBpsiginfo\fP() 関数は glibc バージョン 2.10 で追加された。
+.SH 準拠
+POSIX.1\-2008, 4.3BSD.
+.SH バグ
+バージョン 2.12 までの glibc では \fBpsiginfo\fP() には以下のバグがあった。
+.IP * 3
+.\" FIXME http://sourceware.org/bugzilla/show_bug.cgi?id=12107
+.\" Reportedly now fixed; check glibc 2.13
+In some circumstances, a trailing newline is not printed.
+.IP *
+.\" FIXME http://sourceware.org/bugzilla/show_bug.cgi?id=12108
+.\" Reportedly now fixed; check glibc 2.13
+Additional details are not displayed for real\-time signals.
+.SH 関連項目
+\fBsigaction\fP(2), \fBperror\fP(3), \fBstrsignal\fP(3), \fBsignal\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5198789..30714b7 100644 (file)
@@ -291,6 +291,6 @@ main(int argc, char *argv[])
 \fBpthread_attr_setstackaddr\fP(3), \fBpthread_attr_setstacksize\fP(3),
 \fBpthread_create\fP(3), \fBpthread_getattr_np\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8ec1e07..8672b06 100644 (file)
@@ -100,6 +100,6 @@ CPU 集合の操作や取得を行う際に利用できるマクロ群の説明
 \fBsched_setaffinity\fP(2), \fBpthread_attr_init\fP(3),
 \fBpthread_setaffinity_np\fP(3), \fBcpuset\fP(7), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f3adabd..5b96ea1 100644 (file)
@@ -91,6 +91,6 @@ detached 状態で作成されたスレッドのスレッド ID を指定して
 \fBpthread_attr_init\fP(3), \fBpthread_create\fP(3), \fBpthread_detach\fP(3),
 \fBpthread_join\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e45b22c..f002f6e 100644 (file)
@@ -127,6 +127,6 @@ POSIX.1 で求められている通りの動作で、
 \fBpthread_attr_setstack\fP(3), \fBpthread_attr_setstacksize\fP(3),
 \fBpthread_create\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e157e4a..c9fc35b 100644 (file)
@@ -108,6 +108,6 @@ scheduling 属性に \fBPTHREAD_EXPLICIT_SCHED\fP が設定されると、この
 \fBpthread_create\fP(3), \fBpthread_setschedparam\fP(3),
 \fBpthread_setschedprio\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 3403e9a..e59786b 100644 (file)
@@ -94,6 +94,6 @@ Linux でサポートされているスレッドのスケジューリングポ
 \fBpthread_attr_setschedpolicy\fP(3), \fBpthread_create\fP(3),
 \fBpthread_setschedparam\fP(3), \fBpthread_setschedprio\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b15e644..47f8e99 100644 (file)
@@ -84,6 +84,6 @@ POSIX.1\-2001.
 \fBpthread_create\fP(3), \fBpthread_setschedparam\fP(3),
 \fBpthread_setschedprio\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 07cf716..6bee94f 100644 (file)
@@ -105,6 +105,6 @@ POSIX.1\-2001 では、 contention scope 属性のデフォルト値は
 \fBpthread_attr_setinheritsched\fP(3), \fBpthread_attr_setschedparam\fP(3),
 \fBpthread_attr_setschedpolicy\fP(3), \fBpthread_create\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c2e288a..8598898 100644 (file)
@@ -126,6 +126,6 @@ guard size の値は無視される。
 \fBpthread_attr_setguardsize\fP(3), \fBpthread_attr_setstackaddr\fP(3),
 \fBpthread_attr_setstacksize\fP(3), \fBpthread_create\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7fc0d4e..54e60f1 100644 (file)
@@ -86,6 +86,6 @@ POSIX.1\-2008 では、これらの関数の規定は削除されている。
 \fBpthread_attr_init\fP(3), \fBpthread_attr_setstack\fP(3),
 \fBpthread_attr_setstacksize\fP(3), \fBpthread_create\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7a49936..a8e95ce 100644 (file)
@@ -93,6 +93,6 @@ POSIX.1\-2001 では、割り当てらたスタックの大きさは
 \fBgetrlimit\fP(2), \fBpthread_attr_init\fP(3), \fBpthread_attr_setguardsize\fP(3),
 \fBpthread_attr_setstack\fP(3), \fBpthread_create\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index eef8e4c..1c695eb 100644 (file)
@@ -197,6 +197,6 @@ main(void)
 \fBpthread_join\fP(3), \fBpthread_key_create\fP(3), \fBpthread_setcancelstate\fP(3),
 \fBpthread_setcanceltype\fP(3), \fBpthread_testcancel\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 45223aa..7199f62 100644 (file)
@@ -262,6 +262,6 @@ main(int argc, char *argv[])
 \fBpthread_cancel\fP(3), \fBpthread_cleanup_push_defer_np\fP(3),
 \fBpthread_setcancelstate\fP(3), \fBpthread_testcancel\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 15c2a5a..35fc793 100644 (file)
@@ -101,6 +101,6 @@ pthread_cleanup_pop(execute);
 \fBpthread_cancel\fP(3), \fBpthread_cleanup_push\fP(3),
 \fBpthread_setcancelstate\fP(3), \fBpthread_testcancel\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 369ad98..363fc78 100644 (file)
@@ -321,6 +321,6 @@ main(int argc, char *argv[])
 \fBpthread_getattr_np\fP(3), \fBpthread_join\fP(3), \fBpthread_self\fP(3),
 \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 474c397..ee135a0 100644 (file)
@@ -86,6 +86,6 @@ detached 属性は、スレッドが終了した際のシステムの動作を
 \fBpthread_attr_setdetachstate\fP(3), \fBpthread_cancel\fP(3),
 \fBpthread_create\fP(3), \fBpthread_exit\fP(3), \fBpthread_join\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b01a105..5787e5a 100644 (file)
@@ -56,6 +56,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBpthread_create\fP(3), \fBpthread_self\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5308c74..173a54b 100644 (file)
@@ -92,6 +92,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBpthread_create\fP(3), \fBpthread_join\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 94893a6..1a0c0fc 100644 (file)
@@ -342,6 +342,6 @@ main(int argc, char *argv[])
 \fBpthread_attr_getstackaddr\fP(3), \fBpthread_attr_getstacksize\fP(3),
 \fBpthread_attr_init\fP(3), \fBpthread_create\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index db67947..d00ef73 100644 (file)
@@ -165,6 +165,6 @@ main(int argc, char *argv[])
 \fBclock_gettime\fP(2), \fBclock_settime\fP(2), \fBtimer_create\fP(2),
 \fBclock_getcpuclockid\fP(3), \fBpthread_self\fP(3), \fBpthreads\fP(7), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 069447a..c2d20dc 100644 (file)
@@ -102,6 +102,6 @@ pthreads には、 \fIwaitpid(\-1,\ &status,\ 0)\fP、つまり
 \fBpthread_cancel\fP(3), \fBpthread_create\fP(3), \fBpthread_detach\fP(3),
 \fBpthread_exit\fP(3), \fBpthread_tryjoin_np\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c80daa5..d217be1 100644 (file)
@@ -69,6 +69,6 @@ POSIX.1\-2001.
 \fBkill\fP(2), \fBsigaction\fP(2), \fBsigpending\fP(2), \fBpthread_self\fP(3),
 \fBpthread_sigmask\fP(3), \fBraise\fP(3), \fBpthreads\fP(7), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ba86387..e4794c4 100644 (file)
@@ -65,6 +65,6 @@ NPTL スレッド実装では、 \fBpthread_kill_other_threads_np\fP() は存在
 \fBexecve\fP(2), \fBpthread_cancel\fP(3), \fBpthread_setcancelstate\fP(3),
 \fBpthread_setcanceltype\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 217cade..fb37490 100644 (file)
@@ -71,6 +71,6 @@ pthreads 関数以外でスレッド ID を利用しようとした場合、
 .SH 関連項目
 \fBpthread_create\fP(3), \fBpthread_equal\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 065a97d..afc5c5f 100644 (file)
@@ -178,6 +178,6 @@ main(int argc, char *argv[])
 \fBpthread_attr_setaffinity_np\fP(3), \fBpthread_self\fP(3), \fBsched_getcpu\fP(3),
 \fBcpuset\fP(7), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 22dd666..8baf428 100644 (file)
@@ -142,6 +142,6 @@ NULL 以外の値を指定するようにすべきである。
 \fBpthread_cancel\fP(3), \fBpthread_cleanup_push\fP(3), \fBpthread_testcancel\fP(3),
 \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b20acc6..5acaa38 100644 (file)
@@ -43,7 +43,7 @@ pthread_setconcurrency, pthread_getconcurrency \- 並列処理レベルの設定
 \fBpthread_setconcurrency\fP() 関数は、アプリケーションが希望する
 並列処理レベル (concurrency level) をスレッド実装に通知する。
 希望する並列処理レベルは \fInew_level\fP で指定する。
-スレッド実装はこの情報を参考情報として利用する。
+スレッド実装はこの情報をヒントとしてのみ利用する。
 POSIX.1 では、 \fBpthread_setconcurrency\fP() の呼び出した結果、
 どのような並列度になるべきかは規定されていない。
 
@@ -92,6 +92,6 @@ LinuxThreads と NPTL のどちらも 1:1 スレッド実装であり、
 .SH 関連項目
 \fBpthread_attr_setscope\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/pthread_setname_np.3 b/manual/LDP_man-pages/draft/man3/pthread_setname_np.3
new file mode 100644 (file)
index 0000000..b000418
--- /dev/null
@@ -0,0 +1,176 @@
+.\" Copyright (C) 2012 Chandan Apsangi <chandan.jc@gmail.com>
+.\" and Copyright (C) 2013 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH PTHREAD_SETNAME_NP 3 2013\-04\-02 Linux "Linux Programmer's Manual"
+.SH 名前
+pthread_setname_np, pthread_getname_np \- スレッド名のの設定/取得を行う
+.SH 書式
+.nf
+\fB#define _GNU_SOURCE\fP             /* feature_test_macros(7) 参照 */
+\fB#include <pthread.h>\fP
+\fBint pthread_setname_np(pthread_t \fP\fIthread\fP\fB, const char *\fP\fIname\fP\fB);\fP
+\fBint pthread_getname_np(pthread_t \fP\fIthread\fP\fB,\fP
+\fB                       const char *\fP\fIname\fP\fB, size_t \fP\fIlen\fP\fB);\fP
+.fi
+.sp
+\fI\-pthread\fP を付けてコンパイルとリンクを行う。
+.SH 説明
+By default, all the threads created using \fBpthread_create\fP()  inherit the
+program name.  The \fBpthread_setname_np\fP()  function can be used to set a
+unique name for a thread, which can be useful for debugging multithreaded
+applications.  The thread name is a meaningful C language string, whose
+length is restricted to 16 characters, including the terminating null byte.
+The \fIthread\fP argument specifies the thread whose name is to be changed;
+\fIname\fP specifies the new name.
+
+The \fBpthread_getname_np\fP()  function can be used to retrieve the name of
+the thread.  The \fIthread\fP argument specifies the thread whose name is to be
+retrieved.  The buffer \fIname\fP is used to return the thread name; \fIlen\fP
+specifies the number of bytes available in \fIname\fP.  The buffer specified by
+\fIname\fP should be at least 16 characters in length.  The returned thread
+name in the output buffer will be null terminated.
+.SH 返り値
+成功すると、これらの関数は 0 を返す。
+エラーの場合、0 以外のエラー番号を返す。
+.SH エラー
+\fBpthread_setname_np\fP() は以下のエラーで失敗する場合がある。
+.TP 
+\fBERANGE\fP
+The length of the string specified pointed to by \fIname\fP exceeds the allowed
+limit.
+.PP
+\fBpthread_getname_np\fP() は以下のエラーで失敗する場合がある。
+.TP 
+\fBERANGE\fP
+The buffer specified by \fIname\fP and \fIlen\fP is too small to hold the thread
+name.
+.PP
+If either of these functions fails to open \fI/proc/self/task/[tid]/comm\fP,
+then the call may fail with one of the errors described in \fBopen\fP(2).
+.SH バージョン
+これらの関数は glibc バージョン 2.12 で初めて登場した。
+.SH 準拠
+これらの関数は非標準の GNU による拡張である。
+.SH 注意
+\fBpthread_setname_np\fP()  internally writes to the thread specific comm file
+under \fI/proc\fP filesystem: \fI/proc/self/task/[tid]/comm\fP.
+\fBpthread_getname_np\fP()  retrieves it from the same location.
+.SH 例
+.PP
+以下のプログラムは、 \fBpthread_setname_np\fP() と \fBpthread_getname_np\fP()
+の使用例を示している。
+
+以下のシェルセッションは、このプログラムの実行例である。
+.in +4n
+.nf
+
+$\fB ./a.out\fP
+Created a thread. Default name is: a.out
+The thread name after setting it is THREADFOO.
+\fB^Z\fP                           # Suspend the program
+[1]+  Stopped           ./a.out
+$ \fBps H \-C a.out \-o 'pid tid cmd comm'\fP
+  PID   TID CMD                         COMMAND
+ 5990  5990 ./a.out                     a.out
+ 5990  5991 ./a.out                     THREADFOO
+$ \fBcat /proc/5990/task/5990/comm\fP
+a.out
+$ \fBcat /proc/5990/task/5991/comm\fP
+THREADFOO
+.fi
+.in
+.SS プログラムのソース
+\&
+.nf
+#define _GNU_SOURCE
+#include <pthread.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <stdlib.h>
+
+#define NAMELEN 16
+
+#define errExitEN(en, msg) \e
+            do { errno = en; perror(msg); exit(EXIT_FAILURE); \e
+        } while (0)
+
+static void *
+threadfunc(void *parm)
+{
+    sleep(5);          // allow main program to set the thread name
+    return NULL;
+}
+
+int
+main(int argc, char **argv)
+{
+    pthread_t thread;
+    int rc;
+    char thread_name[NAMELEN];
+
+    rc = pthread_create(&thread, NULL, threadfunc, NULL);
+    if (rc != 0)
+        errExitEN(rc, "pthread_create");
+
+    rc = pthread_getname_np(thread, thread_name, NAMELEN);
+    if (rc != 0)
+        errExitEN(rc, "pthread_getname_np");
+
+    printf("Created a thread. Default name is: %s\en", thread_name);
+    rc = pthread_setname_np(thread, (argc > 1) ? argv[1] : "THREADFOO");
+    if (rc != 0)
+        errExitEN(rc, "pthread_setname_np");
+
+    sleep(2);
+
+    rc = pthread_getname_np(thread, thread_name,
+                            (argc > 2) ? atoi(argv[1]) : NAMELEN);
+    if (rc != 0)
+        errExitEN(rc, "pthread_getname_np");
+    printf("The thread name after setting it is %s.\en", thread_name);
+
+    rc = pthread_join(thread, NULL);
+    if (rc != 0)
+        errExitEN(rc, "pthread_join");
+
+    printf("Done\en");
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+.ad l
+.nh
+\fBprctl\fP(2), \fBpthread_create\fP(3), \fBpthreads\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2f9d894..1ea8f24 100644 (file)
@@ -398,6 +398,6 @@ main(int argc, char *argv[])
 \fBpthread_create\fP(3), \fBpthread_self\fP(3), \fBpthread_setschedprio\fP(3),
 \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ddbde05..f14803a 100644 (file)
@@ -86,6 +86,6 @@ POSIX.1\-2001.
 \fBpthread_create\fP(3), \fBpthread_self\fP(3), \fBpthread_setschedparam\fP(3),
 \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a8659e0..9e35e8d 100644 (file)
@@ -133,6 +133,6 @@ main(int argc, char *argv[])
 \fBsigaction\fP(2), \fBsigpending\fP(2), \fBsigprocmask\fP(2), \fBpthread_create\fP(3),
 \fBpthread_kill\fP(3), \fBsigsetops\fP(3), \fBpthreads\fP(7), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 021703d..3d5c51b 100644 (file)
@@ -79,6 +79,6 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 \fBrt_tgsigqueueinfo\fP(2), \fBsigaction\fP(2), \fBpthread_sigmask\fP(3),
 \fBsigqueue\fP(3), \fBsigwait\fP(3), \fBpthreads\fP(7), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 88dc5f4..c164a9c 100644 (file)
@@ -63,6 +63,6 @@ POSIX.1\-2001.
 \fBpthread_cancel\fP(3), \fBpthread_cleanup_push\fP(3),
 \fBpthread_setcancelstate\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 78c73eb..4a13646 100644 (file)
@@ -112,6 +112,6 @@ struct timespec {
 .SH 関連項目
 \fBclock_gettime\fP(2), \fBpthread_exit\fP(3), \fBpthread_join\fP(3), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c69350e..c46e98a 100644 (file)
@@ -60,6 +60,6 @@ Linux では、この関数は \fBsched_yield\fP(2) を呼び出す形で実装
 .SH 関連項目
 \fBsched_setscheduler\fP(2), \fBsched_yield\fP(2), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4165a33..9919e3e 100644 (file)
@@ -62,6 +62,6 @@ NULL で終端された文字列の形で \fIbuf\fP で指定されたバッフ
 \fBgrantpt\fP(3), \fBposix_openpt\fP(3), \fBttyname\fP(3), \fBunlockpt\fP(3), \fBpts\fP(4),
 \fBpty\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6d788c3..10cb04b 100644 (file)
@@ -88,6 +88,6 @@ SUSv2 ではプロトタイプから \fIconst\fP が取り除かれており、
 .SH 関連項目
 \fBclearenv\fP(3), \fBgetenv\fP(3), \fBsetenv\fP(3), \fBunsetenv\fP(3), \fBenviron\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 81db8b6..00d5728 100644 (file)
@@ -41,6 +41,6 @@ struct group {
 .SH 関連項目
 \fBfgetgrent\fP(3), \fBgetgrent\fP(3), \fBgroup\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index 27471a2..794b094 100644 (file)
@@ -79,6 +79,6 @@ SVr4.
 \fBendpwent\fP(3), \fBfgetpwent\fP(3), \fBgetpw\fP(3), \fBgetpwent\fP(3),
 \fBgetpwnam\fP(3), \fBgetpwuid\fP(3), \fBsetpwent\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index dbfd5d9..a780ec6 100644 (file)
@@ -77,6 +77,6 @@ C89, C99.
 \fBfseek\fP(3), \fBfwrite\fP(3), \fBgets\fP(3), \fBputwchar\fP(3), \fBscanf\fP(3),
 \fBunlocked_stdio\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 42ff489..c4b01ac 100644 (file)
@@ -45,6 +45,6 @@ C99.
 .SH 関連項目
 \fBfputwc\fP(3), \fBunlocked_stdio\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9f85870..9e08cf7 100644 (file)
@@ -62,6 +62,6 @@ SVr4.  多くの一般的な UNIX には実装されていないが、SunOS に
 .SH 関連項目
 \fBecvt\fP(3), \fBecvt_r\fP(3), \fBgcvt\fP(3), \fBsprintf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 78ac717..5a229e6 100644 (file)
@@ -125,6 +125,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBsort\fP(1), \fBalphasort\fP(3), \fBstrcmp\fP(3), \fBversionsort\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9912810..117d6d5 100644 (file)
@@ -346,6 +346,6 @@ while (head.cqh_first != (void *)&head)
 .SH 準拠
 POSIX.1\-2001 にはない。 BSD 系に存在する。 queue 関数は 4.4BSD で初めて登場した。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index abe984e..47bdab4 100644 (file)
@@ -72,6 +72,6 @@ glibc バージョン 2.3.3 以降では、カーネルが \fBtgkill\fP(2) シ
 \fBgetpid\fP(2), \fBkill\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBpthread_kill\fP(3),
 \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6363014..b173cd4 100644 (file)
@@ -156,6 +156,6 @@ main(int argc, char *argv[])
 .SH 関連項目
 \fBdrand48\fP(3), \fBrandom\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a89acdf..4a29a5d 100644 (file)
@@ -105,6 +105,6 @@ Publishing Company, 1981 の第 3 章 (乱数) を見よ。ここでは、 た
 .SH 関連項目
 \fBdrand48\fP(3), \fBrand\fP(3), \fBrandom_r\fP(3), \fBsrand\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6df881c..0512f67 100644 (file)
@@ -90,6 +90,6 @@ _SVID_SOURCE || _BSD_SOURCE
 .SH 関連項目
 \fBdrand48\fP(3), \fBrand\fP(3), \fBrandom\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4e6022e..4eb0251 100644 (file)
@@ -166,6 +166,6 @@ POSIX.1\-2001 にはない。 BSD 系、Solaris や他の多くのシステム
 \fBrlogin\fP(1), \fBrsh\fP(1), \fBintro\fP(2), \fBrexec\fP(3), \fBrexecd\fP(8),
 \fBrlogind\fP(8), \fBrshd\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4bfbef5..ecfd1ac 100644 (file)
@@ -61,6 +61,6 @@ re_comp, re_exec \- BSD の正規表現関数
 .SH 関連項目
 \fBregcomp\fP(3), \fBregex\fP(7), GNU regex manual
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 10246ce..61b2fba 100644 (file)
@@ -38,7 +38,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH READDIR 3 2012\-07\-07 "" "Linux Programmer's Manual"
+.TH READDIR 3 2013\-03\-24 "" "Linux Programmer's Manual"
 .SH 名前
 readdir, readdir_r \- ディレクトリを読み込む
 .SH 書式
@@ -71,7 +71,7 @@ Linux では \fIdirent\fP 構造体は以下のように定義されている。
 .nf
 struct dirent {
     ino_t          d_ino;       /* inode 番号 */
-    off_t          d_off;       /* 次の dirent へのオフセット */
+    off_t          d_off;       /* オフセットではない; 注意を参照 */
     unsigned short d_reclen;    /* このレコードの長さ */
     unsigned char  d_type;      /* ファイル種別。全ファイルシステム */
                                    でサポートされているわけではない */
@@ -112,6 +112,14 @@ SVr4, 4.3BSD, POSIX.1\-2001.
 \fB_DIRENT_HAVE_D_RECLEN\fP, \fB_DIRENT_HAVE_D_OFF\fP, \fB_DIRENT_HAVE_D_TYPE\fP
 が定義されているかをテストすればよい。
 
+.\" https://lwn.net/Articles/544298/
+The value returned in \fId_off\fP is the same as would be returned by calling
+\fBtelldir\fP(3)  at the current position in the directory stream.  Be aware
+that despite its type and name, the \fId_off\fP field is seldom any kind of
+directory offset on modern file systems.  Applications should treat this
+field as an opaque value, making no assumptions about its contents; see also
+\fBtelldir\fP(3).
+
 \fId_type\fP フィールドは、Linux 以外では、 主に BSD 系のシステムにだけ存在する。 このフィールドを使うと、
 その後の動作がファイルの種別により決まる場合に、 \fBlstat\fP(2)  を呼び出すコストを避けることができる。 機能検査マクロ
 \fB_BSD_SOURCE\fP が定義された場合、glibc は \fId_type\fP で返される値として以下のマクロ定数を定義する。
@@ -170,6 +178,6 @@ entryp = malloc(len);
 \fBoffsetof\fP(3), \fBopendir\fP(3), \fBrewinddir\fP(3), \fBscandir\fP(3),
 \fBseekdir\fP(3), \fBtelldir\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5470c85..109bd08 100644 (file)
@@ -155,6 +155,6 @@ libc4 と libc5 の実装はバッファ・オーバーフローの可能性を
 \fBreadlink\fP(2), \fBcanonicalize_file_name\fP(3), \fBgetcwd\fP(3), \fBpathconf\fP(3),
 \fBsysconf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6c9caaa..18e3e0d 100644 (file)
@@ -150,6 +150,6 @@ recno アクセスメソッドのファイルに関連づけられる メタデ
 Heidi Stettner, Joseph Kalash, Antonin Guttman, Nadene Lynn, Memorandum
 No. UCB/ERL M82/32, May 1982.
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 012f3dc..2c07ad1 100644 (file)
@@ -186,6 +186,6 @@ POSIX.1\-2001.
 .br
 glibc マニュアルのセクション \fIRegular Expression Matching\fP
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index be9589a..ce18d6c 100644 (file)
@@ -142,6 +142,6 @@ _SVID_SOURCE || _BSD_SOURCE
 .SH 関連項目
 \fBdiv\fP(3), \fBfmod\fP(3), \fBremquo\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 433bc98..0e52aca 100644 (file)
@@ -1,7 +1,7 @@
 .\" This file is derived from unlink.2, which has the following copyright:
 .\"
 .\" This manpage is Copyright (C) 1992 Drew Eckhardt;
-.\"                               1993 Ian Jackson.
+.\"             and Copyright (C) 1993 Ian Jackson.
 .\"
 .\" Edited into remove.3 shape by:
 .\" Graeme W. Wilford (G.Wilford@ee.surrey.ac.uk) on 13th July 1994
@@ -68,6 +68,6 @@ NFS プロトコルに内在する問題により、まだ使用中のファイ
 \fBrm\fP(1), \fBunlink\fP(1), \fBlink\fP(2), \fBmknod\fP(2), \fBopen\fP(2), \fBrename\fP(2),
 \fBrmdir\fP(2), \fBunlink\fP(2), \fBmkfifo\fP(3), \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 47f1243..57d64dd 100644 (file)
@@ -86,6 +86,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBfmod\fP(3), \fBlogb\fP(3), \fBremainder\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/resolver.3 b/manual/LDP_man-pages/draft/man3/resolver.3
new file mode 100644 (file)
index 0000000..179b4f9
--- /dev/null
@@ -0,0 +1,189 @@
+.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" References consulted:
+.\"     Linux libc source code
+.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
+.\"     386BSD man pages
+.\" Modified 1993-07-25 by Rik Faith (faith@cs.unc.edu)
+.\" Modified 2004-10-31 by aeb
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH RESOLVER 3 2013\-03\-05 GNU "Linux Programmer's Manual"
+.SH 名前
+res_init, res_query, res_search, res_querydomain, res_mkquery, res_send,
+dn_comp, dn_expand \- レゾルバ・ルーチン
+.SH 書式
+.nf
+\fB#include <netinet/in.h>\fP
+\fB#include <arpa/nameser.h>\fP
+\fB#include <resolv.h>\fP
+\fBextern struct state _res;\fP
+.sp
+\fBint res_init(void);\fP
+.sp
+\fBint res_query(const char *\fP\fIdname\fP\fB, int \fP\fIclass\fP\fB, int \fP\fItype\fP\fB,\fP
+.RS
+\fBunsigned char *\fP\fIanswer\fP\fB, int \fP\fIanslen\fP\fB);\fP
+.RE
+.sp
+\fBint res_search(const char *\fP\fIdname\fP\fB, int \fP\fIclass\fP\fB, int \fP\fItype\fP\fB,\fP
+.RS
+\fBunsigned char *\fP\fIanswer\fP\fB, int \fP\fIanslen\fP\fB);\fP
+.RE
+.sp
+\fBint res_querydomain(const char *\fP\fIname\fP\fB, const char *\fP\fIdomain\fP\fB,\fP
+.RS
+\fBint \fP\fIclass\fP\fB, int \fP\fItype\fP\fB, unsigned char *\fP\fIanswer\fP\fB,\fP
+\fBint \fP\fIanslen\fP\fB);\fP
+.RE
+.sp
+\fBint res_mkquery(int \fP\fIop\fP\fB, const char *\fP\fIdname\fP\fB, int \fP\fIclass\fP\fB,\fP
+.RS
+\fBint \fP\fItype\fP\fB, char *\fP\fIdata\fP\fB, int \fP\fIdatalen\fP\fB, struct rrec *\fP\fInewrr\fP\fB,\fP
+\fBchar *\fP\fIbuf\fP\fB, int \fP\fIbuflen\fP\fB);\fP
+.RE
+.sp
+\fBint res_send(const char *\fP\fImsg\fP\fB, int \fP\fImsglen\fP\fB, char *\fP\fIanswer\fP\fB,\fP
+.RS
+\fBint \fP\fIanslen\fP\fB);\fP
+.RE
+.sp
+\fBint dn_comp(unsigned char *\fP\fIexp_dn\fP\fB, unsigned char *\fP\fIcomp_dn\fP\fB,\fP
+.RS
+\fBint \fP\fIlength\fP\fB, unsigned char **\fP\fIdnptrs\fP\fB, unsigned char **\fP\fIlastdnptr\fP\fB);\fP
+.RE
+.sp
+\fBint dn_expand(unsigned char *\fP\fImsg\fP\fB, unsigned char *\fP\fIeomorig\fP\fB,\fP
+.RS
+\fBunsigned char *\fP\fIcomp_dn\fP\fB, char *\fP\fIexp_dn\fP\fB,\fP
+\fBint \fP\fIlength\fP\fB);\fP
+.RE
+.fi
+.sp
+\fI\-lresolv\fP でリンクする。
+.SH 説明
+これらの関数はインターネットのドメインネームサーバーに問い合わせ、 その応答を解釈する。
+.PP
+\fBres_init\fP()  関数は、デフォルトのドメイン名、検索順、ネームサーバー アドレスを得るために設定ファイル
+(\fBresolv.conf\fP(5) 参照) を読む。 もしサーバーが示されていなければローカルホストを試す。
+ドメインが示されていなければローカルホストに付けられたドメインを用いる。 環境変数 \fBLOCALDOMAIN\fP でオーバーライドできる。
+\fBres_init\fP()  は、後述する関数のどれかが最初に呼び出された時、その関数 から実行される。
+.PP
+\fBres_query\fP()  関数は、指定された \fItype\fP と \fIclass\fP の 完全修飾ドメイン名 (FQDN) \fIname\fP
+を、ネームサーバーへ問い合わせる。 応答は、呼び出した側によって用意される長さ \fIanslen\fP の \fIanswer\fP バッファーに残される。
+.PP
+\fBres_search\fP()  関数は、問い合わせを行い \fBres_query\fP()  同様その応答を 待つが、さらにデフォルトを実装しており
+\fBRES_DEFNAMES\fP と \fBRES_DNSRCH\fP によって規定される検索ルールを適用する。 (下記 \fI_res\fP
+オプションの説明を参照)
+.PP
+\fBres_querydomain\fP()  関数は \fIname\fP と \fIdomain\fP の結合に \fBres_query\fP()
+を用いて問い合わせを行う。
+.PP
+次の関数は、 \fBres_query\fP()  で使われる下位ルーチンである。
+.PP
+\fBres_mkquery\fP()  関数は、ドメイン名 \fIdname\fP の為に、長さ \fIbuflen\fP の \fIbuf\fP
+に問い合わせるメッセージを作成する。 問い合わせの型 \fIop\fP は通常 \fBQUERY\fP だが、
+\fI<arpa/nameser.h>\fP で定義された型のどれでも良い。 \fInewrr\fP は現在使用されていない。
+.PP
+\fBres_send\fP()  関数は、長さ \fImsglen\fP の \fImsg\fP に決められた書式 で問い合わせ、\fIanswer\fP に長さ
+\fIanslen\fP の回答を返す。 まだ呼び出されていなければ \fBres_init\fP()  を呼び出す。
+.PP
+\fBdn_comp\fP()  関数はドメイン名 \fIexp_dn\fP を圧縮して、長さ \fIlength\fP のバッファー \fIcomp_dn\fP に保存する。
+圧縮にはポインター配列 \fIdnptrs\fP を用いる。 これらのポインターは、現在のメッセージの中にある以前に圧縮された名前を指す。
+最初のポインターはメッセージの冒頭を指し、そのリストは NULL で終わる。 配列の範囲は \fIlastdnptr\fP で決められる。 \fIdnptr\fP
+が NULL ならばドメイン名は圧縮されない。 \fIlastdnptr\fP が NULL ならば、そのラベルのリストはアップデートされない。
+.PP
+\fBdn_expand\fP()  関数は、圧縮されたドメイン名 \fIcomp_dn\fP からサイズ が \fIlength\fP の \fIexp_dn\fP
+バッファーに正式なドメイン名を展開する。 その圧縮された名前は、問い合わせ、または応答メッセージに含まれていて、 \fImsg\fP
+がメッセージの冒頭を指す。
+.PP
+レゾルバ・ルーチンは、\fI<resolv.h>\fP に定義された \fI_res\fP 構造体に
+含まれている全体的な設定と状態の情報を使用する。 通常ユーザーに操作できる項目は \fI_res.options\fP だけである。
+この項目は以下のオプションのビット単位の論理和にできる。
+.TP 
+\fBRES_INIT\fP
+\fBres_init\fP()  が呼び出されていれば真。
+.TP 
+\fBRES_DEBUG\fP
+.\" See resolv/README.
+.\" Support for RES_DEBUG was made conditional in glibc 2.2.
+Print debugging messages.  This option is available only if glibc was built
+with debugging enabled, which is not the default.
+.TP 
+\fBRES_AAONLY\fP
+権威付けされた (authoritative) 回答のみ受け入れる。 \fBres_send\fP()
+は、最終的に権威付けされた回答を得られるか、エラーが返される まで続行する。 [現在実装されていない]
+.TP 
+\fBRES_USEVC\fP
+問い合わせに UDP データグラムではなく TCP 接続を用いる。
+.TP 
+\fBRES_PRIMARY\fP
+プライマリ・ドメインネームサーバーのみ問い合わせる。
+.TP 
+\fBRES_IGNTC\fP
+切り詰めエラー (truncation error) を無視する。TCP でリトライしない。 [現在実装されていない]
+.TP 
+\fBRES_RECURSE\fP
+再帰要求 (recursion desired) ビットを問い合わせに設定する。 再帰は \fBres_send\fP()
+ではなくドメインネームサーバーによって行われる。 [デフォルトで有効]
+.TP 
+\fBRES_DEFNAMES\fP
+設定されていれば、 \fBres_search\fP()  はデフォルトのドメイン名を一部分 のみからなる名前、すなわちドットを含まない名前に付け加える。
+[デフォルトで有効]
+.TP 
+\fBRES_STAYOPEN\fP
+問い合わせ中に TCP 接続を保つため \fBRES_USEVC\fP と共に用いられる。
+.TP 
+\fBRES_DNSRCH\fP
+設定されていれば、 \fBres_search\fP()  は現在のドメインおよび親ドメインの ホスト名を探す。このオプションは
+\fBgethostbyname\fP(3)  で用いられる。 [デフォルトで有効]
+.PP
+このリストは完全なものではない。
+\fBresolv.conf\fP(5) には他にいくつかのフラグが記載されている。
+.SH 返り値
+\fBres_init\fP()  関数は成功すれば 0 を、エラーが発生すれば \-1 を返す。
+.PP
+\fBres_query\fP(), \fBres_search\fP(), \fBres_querydomain\fP(), \fBres_mkquery\fP(),
+\fBres_send\fP()  関数は応答の長さを返す。 また、エラーが発生すれば \-1 を返す。
+.PP
+\fBdn_comp\fP()  と \fBdn_expand\fP()  関数は圧縮されたドメイン名の長さを返す。 また、エラーが発生すれば \-1 を返す。
+.SH ファイル
+.nf
+/etc/resolv.conf          レゾルバ設定ファイル
+/etc/host.conf            レゾルバ設定ファイル
+.fi
+.SH 準拠
+4.3BSD.
+.SH 関連項目
+\fBgethostbyname\fP(3), \fBresolv.conf\fP(5), \fBresolver\fP(5), \fBhostname\fP(7),
+\fBnamed\fP(8)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index d46d665..13c3244 100644 (file)
@@ -54,6 +54,6 @@ SVr4, 4.3BSD, POSIX.1\-2001.
 \fBclosedir\fP(3), \fBopendir\fP(3), \fBreaddir\fP(3), \fBscandir\fP(3), \fBseekdir\fP(3),
 \fBtelldir\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9e8ad87..6f6a08d 100644 (file)
@@ -99,6 +99,6 @@ rexec, rexec_af \- リモートコマンドへのストリームを返す
 .SH 関連項目
 \fBrcmd\fP(3), \fBrexecd\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 20b2775..6e02390 100644 (file)
@@ -104,6 +104,6 @@ SUSv2 と POSIX.1\-2001 にはオーバーフローに関する記述があり
 .SH 関連項目
 \fBceil\fP(3), \fBfloor\fP(3), \fBlrint\fP(3), \fBround\fP(3), \fBtrunc\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1757ec9..f629ae1 100644 (file)
@@ -85,6 +85,6 @@ IEEE\-754 規格の 32 ビットと 64 ビットの浮動小数では、 指数
 \fBceil\fP(3), \fBfloor\fP(3), \fBlround\fP(3), \fBnearbyint\fP(3), \fBrint\fP(3),
 \fBtrunc\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 98aa13d..c0bbe64 100644 (file)
@@ -682,6 +682,6 @@ rpcgen Programming Guide
 \fIRPC: Remote Procedure Call Protocol Specification\fP, RFC\ 1050, Sun
 Microsystems, Inc., USC\-ISI.
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ddb71bd..9809522 100644 (file)
@@ -101,6 +101,6 @@ main(int argc, char *argv[])
 \fBfgets\fP(3), \fBgetline\fP(3), \fBnl_langinfo\fP(3), \fBregcomp\fP(3),
 \fBsetlocale\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0b9a207..2df4efc 100644 (file)
@@ -106,6 +106,6 @@ main(void)
 .\" .BR rdate (1),
 \fBntpdate\fP(1), \fBinetd\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6e34740..247463c 100644 (file)
@@ -43,7 +43,7 @@ NETLINK_ROUTE);\fP
 \fBunsigned int RTA_SPACE(unsigned int \fP\fIlength\fP\fB);\fP
 .SH 説明
 全ての \fBrtnetlink\fP(7)  メッセージは \fBnetlink\fP(7)  メッセージヘッダと追加属性からなる。
-å±\9eæ\80§ã\81®æ\93\8dä½\9cã\81¯ã\80\81å¿\85ã\81\9aã\81\93ã\81\93ã\81«æ\8c\99ã\81\92ã\81\9fã\83\9eã\82¯ã\83­ã\82\92é\80\9aã\81\97て行うべきである。
+å±\9eæ\80§ã\81®æ\93\8dä½\9cã\81¯ã\80\81å¿\85ã\81\9aã\81\93ã\81\93ã\81«æ\8c\99ã\81\92ã\81\9fã\83\9eã\82¯ã\83­ã\81 ã\81\91ã\82\92使ã\81£て行うべきである。
 .PP
 \fBRTA_OK(\fP\fIrta\fP\fB, \fP\fIattrlen\fP\fB)\fP は \fIrta\fP が有効なルーティング属性へのポインタであれば真を返す。
 \fIattrlen\fP は属性バッファの実働時の長さ (running length) である。 真でなければ、例え \fIattrlen\fP
@@ -102,6 +102,6 @@ NETLINK_ROUTE);\fP
 .SH 関連項目
 \fBnetlink\fP(3), \fBnetlink\fP(7), \fBrtnetlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 89bccc8..50c2097 100644 (file)
@@ -29,7 +29,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH SCALB 3 2010\-09\-20 "" "Linux Programmer's Manual"
+.TH SCALB 3 2013\-03\-23 "" "Linux Programmer's Manual"
 .SH 名前
 scalb, scalbf, scalbl \- 浮動小数点数に整数である基数の累乗を掛ける (廃止予定)
 .SH 書式
@@ -37,9 +37,9 @@ scalb, scalbf, scalbl \- 浮動小数点数に整数である基数の累乗を
 .sp
 \fBdouble scalb(double \fP\fIx\fP\fB, double \fP\fIexp\fP\fB);\fP
 .br
-\fBfloat scalbf(float \fP\fIx\fP\fB, double \fP\fIexp\fP\fB);\fP
+\fBfloat scalbf(float \fP\fIx\fP\fB, float \fP\fIexp\fP\fB);\fP
 .br
-\fBlong double scalbl(long double \fP\fIx\fP\fB, double \fP\fIexp\fP\fB);\fP
+\fBlong double scalbl(long double \fP\fIx\fP\fB, long double \fP\fIexp\fP\fB);\fP
 .sp
 \fI\-lm\fP でリンクする。
 .sp
@@ -124,6 +124,6 @@ _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600
 .SH 関連項目
 \fBldexp\fP(3), \fBscalbln\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1c744ed..a84f198 100644 (file)
@@ -128,6 +128,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBldexp\fP(3), \fBscalb\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ce6a86e..c0c7c28 100644 (file)
@@ -136,6 +136,6 @@ main(void)
 \fBrewinddir\fP(3), \fBscandirat\fP(3), \fBseekdir\fP(3), \fBstrcmp\fP(3),
 \fBstrcoll\fP(3), \fBstrverscmp\fP(3), \fBtelldir\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 18561ae..d195697 100644 (file)
@@ -82,6 +82,6 @@ scandirat \- ディレクトリのファイルディスクリプタからの相
 .SH 関連項目
 \fBopenat\fP(2), \fBscandir\fP(3), \fBpath_resolution\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/scanf.3 b/manual/LDP_man-pages/draft/man3/scanf.3
new file mode 100644 (file)
index 0000000..5bdca13
--- /dev/null
@@ -0,0 +1,374 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\" %%%LICENSE_END
+.\"
+.\"     @(#)scanf.3    6.14 (Berkeley) 1/8/93
+.\"
+.\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith@cs.unc.edu
+.\" modified to resemble the GNU libio setup used in the Linux libc
+.\" used in versions 4.x (x>4) and 5   Helmut.Geyer@iwr.uni-heidelberg.de
+.\" Modified, aeb, 970121
+.\" 2005-07-14, mtk, added description of %n$ form; various text
+.\"    incorporated from the GNU C library documentation ((C) The
+.\"    Free Software Foundation); other parts substantially rewritten.
+.\"
+.\" 2008-06-23, mtk
+.\"     Add ERRORS section.
+.\"     Document the 'a' and 'm' modifiers for dynamic string allocation.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SCANF 3 2013\-01\-30 GNU "Linux Programmer's Manual"
+.SH 名前
+scanf, fscanf, sscanf, vscanf, vsscanf, vfscanf \- 書式付き入力変換
+.SH 書式
+.nf
+\fB#include <stdio.h>\fP
+
+\fBint scanf(const char *\fP\fIformat\fP\fB, ...);\fP
+\fBint fscanf(FILE *\fP\fIstream\fP\fB, const char *\fP\fIformat\fP\fB, ...);\fP
+\fBint sscanf(const char *\fP\fIstr\fP\fB, const char *\fP\fIformat\fP\fB, ...);\fP
+.sp
+\fB#include <stdarg.h>\fP
+
+\fBint vscanf(const char *\fP\fIformat\fP\fB, va_list \fP\fIap\fP\fB);\fP
+\fBint vsscanf(const char *\fP\fIstr\fP\fB, const char *\fP\fIformat\fP\fB, va_list \fP\fIap\fP\fB);\fP
+\fBint vfscanf(FILE *\fP\fIstream\fP\fB, const char *\fP\fIformat\fP\fB, va_list \fP\fIap\fP\fB);\fP
+.fi
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.ad l
+.sp
+\fBvscanf\fP(), \fBvsscanf\fP(), \fBvfscanf\fP():
+.RS 4
+_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L;
+.br
+or \fIcc \-std=c99\fP
+.ad
+.RE
+.SH 説明
+\fBscanf\fP()  関数グループは、以下に述べるように、 \fIformat\fP に従って入力を読み込むものである。 この書式には \fI「変換指定」
+(conversion specifications)\fP を含めることができ、変換指定があれば、その変換の結果は \fIformat\fP に続く
+\fIpointer\fP 引き数が指す場所に格納される。 それぞれの \fIpointer\fP 引き数の型は、対応する変換指定が返す値に
+適合していなければならない。
+
+\fIformat\fP 中の変換指定の個数が \fIpointer\fP 引き数の数より多かった場合の結果は未定義である。 \fIpointer\fP
+引き数の数が変換指定の個数よりも多かった場合、 余分な \fIpointer\fP 引き数の評価は行われるが、それ以外は行われず無視される。
+
+\fBscanf\fP()  関数は標準入力ストリーム \fIstdin\fP からの入力を読み込む。 \fBfscanf\fP()  はストリームポインタ
+\fIstream\fP からの入力を読み込む。 \fBsscanf\fP()  は文字列ポインタ \fIstr\fP で示された文字列からの入力を読み込む。
+.PP
+\fBvfscanf\fP()  関数は \fBvfprintf\fP(3)  と同様に、ストリームポインタ \fIstream\fP
+からの入力をポインタの可変長引き数リストを用いて読み込む (\fBstdarg\fP(3)  を参照)。 \fBvscanf\fP()
+関数は、可変長引き数のリストに基づき標準入力からの読み取りを行う。 \fBvsscanf\fP()  関数はそのリストに基づき文字列から読み取る。
+これらの関係は \fBvprintf\fP(3)  と \fBvsprintf\fP(3)  関数の関係と同様である。
+.PP
+\fIformat\fP 文字列は \fI「命令」 (directive)\fP の列で構成される。命令は入力文字の系列をどのように処理するかを指示する
+ものである。ある命令の処理が失敗すると、入力はそれ以上読み込まれず、 \fBscanf\fP()  は返る。「失敗」は \fI「入力の失敗」 (input
+failure)\fP と \fI「一致の失敗」 (matching failure)\fP のいずれかである。
+入力の失敗は入力文字が使用できなかったことを意味し、 一致の失敗は入力が不適切であったこと (下記参照) を意味する。
+
+命令は以下のいずれかである:
+.TP 
+\(bu
+ホワイトスペース (スペース、タブ、改行など; \fBisspace\fP(3)  参照) の列。
+この命令は、入力中の任意の個数のホワイトスペースに一致する。 (「何もなし」にも一致する)。
+.TP 
+\(bu
+通常文字 (つまり、ホワイトスペースと \(aq%\(aq 以外の文字)。 この文字は入力の次の文字に正確に一致しなければならない。
+.TP 
+\(bu
+変換指定。変換指定は \(aq%\(aq (パーセント) 文字で始まる。 入力された文字の系列はこの指定にもとづいて変換され、 変換結果は対応する
+\fIpointer\fP 引き数が指す場所に格納される。 入力の次の文字が変換指定と一致しない場合は、変換は失敗する \(emこれが \fI「一致の失敗」
+(matching failure)\fP である。
+.PP
+\fIformat\fP 中の各々の \fI「変換指定」\fP は文字 \(aq%\(aq か文字系列 "\fB%\fP\fIn\fP\fB$\fP" (違いについては後述)
+で始まり、以下の要素が続く。
+.TP 
+\(bu
+代入抑制文字 \(aq*\(aq (省略可能)。 \fBscanf\fP()  は変換指定に指示された通り入力を読み込むが、その入力は捨てられる。 対応する
+\fIpointer\fP 引き数は必要なく、 \fBscanf\fP()  が返す代入が成功した数にこの指定は含まれない。
+.TP 
+\(bu
+An optional \(aqm\(aq character.  This is used with string conversions
+(\fI%s\fP, \fI%c\fP, \fI%[\fP), and relieves the caller of the need to allocate a
+corresponding buffer to hold the input: instead, \fBscanf\fP()  allocates a
+buffer of sufficient size, and assigns the address of this buffer to the
+corresponding \fIpointer\fP argument, which should be a pointer to a \fIchar *\fP
+variable (this variable does not need to be initialized before the call).
+The caller should subsequently \fBfree\fP(3)  this buffer when it is no longer
+required.
+.TP 
+\(bu
+\fI「最大フィールド幅」\fP を指定する 10進数 (省略可能)。 この最大値に達するか、一致しない文字が見つかるか、のどちらかに
+なると、文字の読み込みを停止する。 ほとんどの変換では、先頭のホワイトスペース文字は捨てられ (例外については後述する)、
+捨てられたこれらの文字は最大フィールド幅の計算には含まれない。 文字列の入力変換では、入力の末尾を示す終端の NULL バイト
+(\(aq\e0\(aq)  も格納されるが、最大フィールド幅にはこの終端バイトは含まれない。
+.TP 
+\(bu
+\fI「型修飾子」 (type modifier characters)\fP (省略可能)。 例えば、型修飾子 \fBl\fP を \fB%d\fP
+などの整数変換と一緒に使うと、対応する \fIpointer\fP 引き数が \fIint\fP ではなく \fIlong int\fP を参照していることを指定できる。
+.TP 
+\(bu
+\fI「変換指定」\fP : 実行すべき入力変換の種類を指定する。
+.PP
+\fIformat\fP 中の変換指定は、\(aq%\(aq で始まるか、 "\fB%\fP\fIn\fP\fB$\fP" で始まるかの、いずれかの形式である。 これら
+2つの形式を同じ \fIformat\fP 文字列に混ぜることはできない。但し、"\fB%\fP\fIn\fP\fB$\fP" を 含む文字列に \fB%%\fP と \fB%*\fP
+を含めることはできる。 \fIformat\fP に \(aq%\(aq 指定が含まれている場合、各々の \(aq%\(aq 指定と 後続の
+\fIpointer\fP 引き数はその順番通りに対応する。 "\fB%\fP\fIn\fP\fB$\fP" 形式 (POSIX.1\-2001 では規定されているが、C99
+にはない)  では、 \fIn\fP は 10進数であり、変換後の入力を \fIformat\fP の後ろの \fIn\fP 番目の \fIpointer\fP
+引き数が参照する場所に格納することを指定する。
+.SS 変換
+変換指定には、以下の \fI「型修飾子」\fP を入れることができる。
+.TP 
+\fBh\fP
+変換が \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP, \fBn\fP のいずれかであり、次のポインタが (\fIint\fP ではなく)
+\fIshort int\fP か \fIunsigned short int\fP へのポインタであることを示す。
+.TP 
+\fBhh\fP
+\fBh\fP と同じだが、次のポインタが \fIsigned char\fP か \fIunsigned char\fP へのポインタであることを示す。
+.TP 
+\fBj\fP
+\fBh\fP と同じだが、次のポインタが \fIintmax_t\fP か \fIuintmax_t\fP へのポインタであることを示す。 この修飾子は C99
+で導入された。
+.TP 
+\fBl\fP
+.\" This use of l was introduced in Amendment 1 to ISO C90.
+変換が \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP, \fBn\fP か \fBn\fP のいずれかであり次のポインタが (\fIint\fP
+ではなく)  \fIlong int\fP か \fIunsigned long int\fP へのポインタであること、または、変換が \fBe\fP, \fBf\fP,
+\fBg\fP のうちのひとつであり次のポインタが (\fIfloat\fP ではなく)  \fIdouble\fP へのポインタであることのいずれかであることを示す。
+\fBl\fP 文字を二つ指定すると、 \fBL\fP と同じ意味となる。 \fB%c\fP や \fB%s\fP とともに使用すると、
+パラメータはそれぞれワイド文字やワイド文字列へのポインタであると みなされる。
+.TP 
+\fBL\fP
+.\" MTK, Jul 05: The following is no longer true for modern
+.\" ANSI C (i.e., C99):
+.\" (Note that long long is not an
+.\" ANSI C
+.\" type. Any program using this will not be portable to all
+.\" architectures).
+\fBe\fP, \fBf\fP, \fBg\fP 変換で、次のポインタが \fIlong double\fP へのポインタであることを示す。もしくは、 \fBd\fP, \fBi\fP,
+\fBo\fP, \fBu\fP, \fBx\fP 変換で、次のポインタが \fIlong long\fP へのポインタであることのいずれかであることを示す。
+.TP 
+\fBq\fP
+\fBL\fP と同一である。 この修飾子は ANSI C には存在しない。
+.TP 
+\fBt\fP
+\fBh\fP と同様だが、次のポインタが \fIptrdiff_t\fP へのポインタであることを示す。 この修飾子は C99 で導入された。
+.TP 
+\fBz\fP
+\fBh\fP と同様だが、次のポインタが \fIsize_t\fP へのポインタであることを示す。 この修飾子は C99 で導入された。
+.PP
+以下の \fI「変換指定子」\fP が利用可能である。
+.TP 
+\fB%\fP
+文字 \(aq%\(aq に対応する。 書式文字列の中の \fB%\&%\fP は単一の文字 \(aq%\(aq に対応する。 変換は行われず
+(但し、先頭のホワイトスペース文字は捨てられる)、 変数への代入は生じない。
+.TP 
+\fBd\fP
+符号つきの 10進の整数に対応する。 次のポインタは \fIint\fP へのポインタでなければならない。
+.TP 
+\fBD\fP
+\fIld\fP と同一である。これは以前の仕様との互換性だけのためにある。 (注意: これは libc4 の場合だけである。 libc5 や glibc
+では \fB%D\fP は暗黙のうちに無視され、古いプログラムにおいて謎に満ちた失敗の原因となる。)
+.TP 
+\fBi\fP
+符号つき整数に対応する。 次のポインタは \fIint\fP へのポインタでなければならない。 この整数は \fI0x\fP または \fI0X\fP で開始する場合には
+16 進数、 \fI0\fP で開始する場合には 8 進数、その他の場合には 10進数として読み込まれる。
+この変換で使用される文字は、これらの基数に対応しているものだけである。
+.TP 
+\fBo\fP
+符号なしの 8 進の整数に対応する。 次のポインタは \fIunsigned int\fP でなければならない。
+.TP 
+\fBu\fP
+符号なしの 10進の整数に対応する。 次のポインタは \fIunsigned int\fP へのポインタでなければならない。
+.TP 
+\fBx\fP
+符号なしの 16 進の整数に対応する。 次のポインタは \fIunsigned int\fP へのポインタでなければならない。
+.TP 
+\fBX\fP
+\fBx\fP と同一である。
+.TP 
+\fBf\fP
+符号つき浮動小数点実数に対応する。 次のポインタは \fIfloat\fP へのポインタでなければならない。
+.TP 
+\fBe\fP
+\fBf\fP と同一である。
+.TP 
+\fBg\fP
+\fBf\fP と同一である。
+.TP 
+\fBE\fP
+\fBf\fP と同一である。
+.TP 
+\fBa\fP
+(C99)  \fBf\fP と同一である。
+.TP 
+\fBs\fP
+ホワイトスペースではない文字で構成された文字列に対応する。 次のポインタは文字の配列へのポインタでなければならず、 その文字配列は、入力された文字列と
+(自動的に追加される) 終端の NULL バイト (\(aq\e0\(aq) を格納するのに十分な大きさでなければならない。
+文字列の入力は、ホワイトスペースが入力されるか、最大フィールド幅に 達するか、のどちらかが起こると停止される。
+.TP 
+\fBc\fP
+\fI「最大フィールド幅」\fP (デフォルトは 1) で指定された幅の文字の列に対応する。 次のポインタは \fIchar\fP
+へのポインタで、すべての文字を格納するのに十分な領域が なければならない (終端の NULL バイトは追加されない)。
+通常行われる先頭のホワイトスペースの読み飛ばしは行われない。 先頭のホワイトスペースを読み飛ばすためには、
+フォーマット文の中で明示的にスペースを使用すれば良い。
+.TP 
+\fB\&[\fP
+格納された文字列のうちから取り出された、 指定された文字の集合で構成される空ではない文字の列に対応する。 次のポインタは \fIchar\fP
+へのポインタでなければならず、 そこには文字列中のすべての文字と終端の NULL バイト を格納するための十分な領域がなければならない。
+通常行われる先頭のホワイトスペースの読み飛ばしは行われない。 この文字列は特別な集合の中の文字で構成されている。 この集合は 開き括弧 \fB[\fP
+と閉じ括弧 \fB]\fP の間の文字で定義される。 開き括弧のあとの最初の文字が曲アクセント記号 (\fB^\fP)
+の場合、集合はこれらの文字を含まないものとなる。 閉じ括弧を集合に含ませるためには、この文字を開き括弧または
+曲アクセント記号のあとの最初の文字にすればよい。 つまり、他の位置に閉じ括弧を置くと文字の集合が終る。 ハイフン \fB\-\fP もまた特殊文字である。
+二つの異なる文字の間に置かれた時、この文字は、 その間にある全ての文字を集合に加える。 ハイフン自体を含ませるためには、
+括弧が閉じる前の最後の一文字をハイフンにすればよい。 例えば、 \fB[^]0\-9\-]\fP は「閉じ括弧、0 〜 9、ハイフンの 3
+種類を除く全ての文字」の集合を意味する。 この文字列は 集合に含まれていない (曲アクセントの場合には含まれる) 文字の
+出現または確保された領域が使い切られた時に終了する。
+.TP 
+\fBp\fP
+(\fBprintf\fP(3)  の \fB%p\fP で印字されるような) ポインタ値に対応する。 次のポインタは \fIvoid\fP
+へのポインタへのポインタでなければならない。
+.TP 
+\fBn\fP
+どんな入力も必要としない。 そのかわりに、 入力からここまで消費された文字数が次のポインタで指定された場所に 格納される。 このポインタは \fIint\fP
+へのポインタでなければならない。 変換を抑制するのであれば \fB*\fP 代入抑制文字を使って抑制することができるのだが、
+この変換指定子は変換では「ない」。 C 言語の標準規格では「実行の完了時に返される代入の回数は \fB%n\fP 命令の実行では増加しない」となっているが、
+正誤表の内容はこれと矛盾するようである。おそらく、 \fB%n\fP 変換が返り値に与える影響についてはどのような仮定もしないのが 賢明であろう。
+.SH 返り値
+これらの関数は、一致と代入が成功した入力要素の個数を返す。 返される値は渡された変換の個数よりも少ないこともあり、 最初に一致の失敗があった場合には 0
+になることもある。
+
+最初の変換が成功する前に入力の最後に達して、一致の失敗が起こった場合には、 \fBEOF\fP が返される。また、 読み込みエラーが発生した場合にも
+\fBEOF\fP が返される。読み込みエラーの場合には、そのストリームの エラー指示子がセットされ (\fBferror\fP(3)  参照)、 \fIerrno\fP
+にエラーを示す値がセットされる。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+\fIstream\fP に対応するファイルディスクリプタが nonblocking となっており、 読み込み操作は停止 (block) することになる。
+.TP 
+\fBEBADF\fP
+\fIstream\fP に対応するファイルディスクリプタが無効であるが、 読み込み用にオープンされていない。
+.TP 
+\fBEILSEQ\fP
+入力されたバイト列が有効な文字を構成していない。
+.TP 
+\fBEINTR\fP
+読み込み操作がシグナルにより割り込まれた。 \fBsignal\fP(7)  参照。
+.TP 
+\fBEINVAL\fP
+引き数が十分でない。または \fIformat\fP が NULL である。
+.TP 
+\fBENOMEM\fP
+メモリ不足。
+.TP 
+\fBERANGE\fP
+整数変換の結果が、対応する整数型に格納できるサイズを越えてしまう。
+.SH 準拠
+\fBfscanf\fP(), \fBscanf\fP(), \fBsscanf\fP()  関数は C89, C99, POSIX.1\-2001 に準拠している。
+これらの標準では、エラー \fBERANGE\fP は規定されていない。
+.PP
+\fBq\fP 指定子は \fIlong long\fP の 4.4BSD での記述方法である。 一方、整数変換での \fBll\fP または \fBL\fP の使用は GNU
+での拡張である。
+.PP
+これらの関数の Linux 版は \fIGNU\fP \fIlibio\fP ライブラリーを元にしている。 より簡潔な説明には \fIGNU\fP \fIlibc
+(glibc\-1.08)\fP の \fIinfo\fP 文書に目を通すこと。
+.SH 注意
+The GNU C library supported the dynamic allocation conversion specifier (as
+a nonstandard extension) via the \fBa\fP character.  This feature seems to be
+present at least as far back as glibc 2.0.
+.PP
+この修飾子は \fIgcc \-std=c99\fP や \fIgcc \-D_ISOC99_SOURCE\fP でコンパイルしたプログラムでは
+(\fB_GNU_SOURCE\fP も同時に指定していない場合) 利用できない。この場合、 \fBa\fP は (上述の通り)
+浮動小数点数を示す変換指定子と解釈される。
+
+バージョン 2.7 以降では、glibc は \fBa\fP 修飾子と同じ目的で \fBm\fP 修飾子も提供している。 \fBm\fP 修飾子は以下の利点がある。
+.IP * 2
+\fB%c\fP 変換指定子にも適用できる (例えば \fB%3mc\fP)。
+.IP *
+浮動小数点変換指定子としての \fB%a\fP との紛らわしさが避けられる (また \fIgcc \-std=c99\fP などの影響も避けられる)。
+.IP *
+POSIX.1\-2008 標準で規定されている。
+.SH バグ
+全ての関数は、完全に C89 に準拠している。しかし 追加で \fBq\fP と \fBa\fP 指定子が提供されており、同様に \fBL\fP と \fBl\fP
+指定子の付加的な振る舞いもある。後者は、 C89 で定義された指定子の振る舞いを変更するものなので、 バグとみなされるかもしれない。
+.PP
+ANSI C で定義された型修飾子と変換指定子の組み合わせの中には 意味を
+なさないものがある (例えば、 \fB%Ld\fP)。 これらが指定された場合、
+Linux 上でははっきりと定義された振る舞いをするかもしれないが、
+他のアーキテクチャでも同様になっているとは限らない。
+それゆえに、ほとんどの場合、 ANSI C で定義されていない修飾子を使用した
+方が良い。すなわち、 \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP 変換や \fBll\fP
+と組み合わせる場合には、 \fBL\fP の代わりに \fBq\fP を使用した方が良い。
+.PP
+\fBq\fP の使用方法は 4.4BSD と同じではない。 4.4BSD では \fBq\fP は \fBL\fP と同等に浮動小数の変換に使用される。
+.SH 例
+To use the dynamic allocation conversion specifier, specify \fBm\fP as a length
+modifier (thus \fB%ms\fP or \fB%m[\fP\fIrange\fP\fB]\fP).  The caller must \fBfree\fP(3)
+the returned string, as in the following example:
+.in +4n
+.nf
+
+char *p;
+int n;
+
+errno = 0;
+n = scanf("%m[a\-z]", &p);
+if (n == 1) {
+    printf("read: %s\en", p);
+    free(p);
+} else if (errno != 0) {
+    perror("scanf");
+} else {
+    fprintf(stderr, "No matching characters\en");
+}
+.fi
+.in
+.PP
+上記の例にあるように、 \fBscanf\fP()  が文字列の読み込みに成功した場合にだけ、 \fBfree\fP(3)  を呼び出す必要がある。
+.SH 関連項目
+\fBgetc\fP(3), \fBprintf\fP(3)  \fBsetlocale\fP(3), \fBstrtod\fP(3), \fBstrtol\fP(3),
+\fBstrtoul\fP(3),
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index a518c5c..7bb6356 100644 (file)
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH SCHED_GETCPU 3 2010\-10\-31 Linux "Linux Programmer's Manual"
+.TH SCHED_GETCPU 3 2013\-04\-17 Linux "Linux Programmer's Manual"
 .SH 名前
 sched_getcpu \- 呼び出したスレッドが実行されている CPU を知る
 .SH 書式
 .nf
-.\" Really:_BSD_SOURCE || _SVID_SOURCE
-\fB#define _GNU_SOURCE\fP         /* feature_test_macros(7) 参照 */
 \fB#include <sched.h>\fP
 
 \fBint sched_getcpu(void);\fP
 .fi
+.sp
+.in -4n
+Feature Test Macro Requirements for glibc (see \fBfeature_test_macros\fP(7)):
+.in
+.sp
+\fBsched_getcpu\fP():
+.ad l
+.RS 4
+.PD 0
+.TP  4
+Since glibc 2.14:
+_GNU_SOURCE
+.TP  4
+Before glibc 2.14:
+_BSD_SOURCE || _SVID_SOURCE
+    /* _GNU_SOURCE also suffices */
+.PD
+.RE
+.ad b
 .SH 説明
 \fBsched_getcpu\fP()  は、呼び出したスレッドが現在実行されている CPU の番号を返す。
 .SH 返り値
@@ -73,6 +90,6 @@ cpu = (s == \-1) ? s : c;
 .SH 関連項目
 \fBgetcpu\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 36b3340..7f2655c 100644 (file)
 .\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
 .\"     386BSD man pages
 .\" Modified Sat Jul 24 18:25:21 1993 by Rik Faith (faith@cs.unc.edu)
+.\"
 .\"*******************************************************************
 .\"
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH SEEKDIR 3 2009\-03\-11 "" "Linux Programmer's Manual"
+.TH SEEKDIR 3 2013\-03\-24 "" "Linux Programmer's Manual"
 .SH 名前
 seekdir \- 次の readdir() 呼び出しのために、ディレクトリストリーム中の位置を 設定する
 .SH 書式
 .nf
 \fB#include <dirent.h>\fP
 .sp
-\fBvoid seekdir(DIR *\fP\fIdirp\fP\fB, long \fP\fIoffset\fP\fB);\fP
+\fBvoid seekdir(DIR *\fP\fIdirp\fP\fB, long \fP\fIloc\fP\fB);\fP
 .fi
 .sp
 .in -4n
@@ -49,18 +50,20 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 \fBseekdir\fP(): _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE
 .SH 説明
 \fBseekdir\fP()  関数は、次の \fBreaddir\fP(3)  呼び出しの開始位置である、 ディレクトリストリームの中での位置を設定する。
-\fBseekdir\fP()  は \fBtelldir\fP(3)  によって返される \fIoffset\fP とともに使用されるべきである。
+\fIloc\fP 引き数には、それ以前の \fBtelldir\fP(3) の呼び出しで返された値を渡すべきである。
 .SH 返り値
 \fBseekdir\fP()  関数は、値を返さない。
 .SH 準拠
 4.3BSD, POSIX.1\-2001.
 .SH 注意
-バージョン 2.1.1 以前の glibc では、 \fIoffset\fP 引き数の型は \fIoff_t\fP であった。 POSIX.1\-2001 では
-\fIlong\fP と規定されており、glibc 2.1.2 以降では \fIlong\fP になっている。
+In glibc up to version 2.1.1, the type of the \fIloc\fP argument was \fIoff_t\fP.
+POSIX.1\-2001 specifies \fIlong\fP, and this is the type used since glibc
+2.1.2.  See \fBtelldir\fP(3)  for information on why you should be careful in
+making any assumptions about the value in this argument.
 .SH 関連項目
 \fBlseek\fP(2), \fBclosedir\fP(3), \fBopendir\fP(3), \fBreaddir\fP(3), \fBrewinddir\fP(3),
 \fBscandir\fP(3), \fBtelldir\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4de01fa..432ce7f 100644 (file)
@@ -56,6 +56,6 @@ POSIX.1\-2001.
 \fBsem_getvalue\fP(3), \fBsem_open\fP(3), \fBsem_post\fP(3), \fBsem_unlink\fP(3),
 \fBsem_wait\fP(3), \fBsem_overview\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 380f27f..9d66aee 100644 (file)
@@ -62,6 +62,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBsem_init\fP(3), \fBsem_post\fP(3), \fBsem_wait\fP(3), \fBsem_overview\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4fcc331..2e8530b 100644 (file)
@@ -58,6 +58,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBsem_post\fP(3), \fBsem_wait\fP(3), \fBsem_overview\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 17cf167..5e5b689 100644 (file)
@@ -72,6 +72,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBsem_destroy\fP(3), \fBsem_post\fP(3), \fBsem_wait\fP(3), \fBsem_overview\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 24bdb9e..a3a4a46 100644 (file)
@@ -100,6 +100,6 @@ POSIX.1\-2001.
 \fBsem_close\fP(3), \fBsem_getvalue\fP(3), \fBsem_post\fP(3), \fBsem_unlink\fP(3),
 \fBsem_wait\fP(3), \fBsem_overview\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2f2bee8..3659f83 100644 (file)
@@ -62,6 +62,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBsem_getvalue\fP(3), \fBsem_wait\fP(3), \fBsem_overview\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ccd8379..c8c8807 100644 (file)
@@ -60,6 +60,6 @@ POSIX.1\-2001.
 \fBsem_getvalue\fP(3), \fBsem_open\fP(3), \fBsem_post\fP(3), \fBsem_wait\fP(3),
 \fBsem_overview\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8378a4f..6fc01ff 100644 (file)
@@ -207,6 +207,6 @@ main(int argc, char *argv[])
 \fBclock_gettime\fP(2), \fBsem_getvalue\fP(3), \fBsem_post\fP(3), \fBsem_overview\fP(7),
 \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5a69d1e..b83aaac 100644 (file)
@@ -119,6 +119,6 @@ main(void)
 .\" newaliases, postalias
 \fBgetgrent\fP(3), \fBgetpwent\fP(3), \fBgetspent\fP(3), \fBaliases\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index 451f91a..7043a35 100644 (file)
@@ -143,6 +143,6 @@ main(void)
 \fBfclose\fP(3), \fBfflush\fP(3), \fBfopen\fP(3), \fBfread\fP(3), \fBmalloc\fP(3),
 \fBprintf\fP(3), \fBputs\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a1d882c..913b842 100644 (file)
@@ -94,6 +94,6 @@ POSIX.1\-2001 では 「\fIname\fP に \(aq=\(aq 文字が含まれる場合、
 .SH 関連項目
 \fBclearenv\fP(3), \fBgetenv\fP(3), \fBputenv\fP(3), \fBenviron\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 3d64970..b6cc669 100644 (file)
@@ -77,6 +77,6 @@ System V の振る舞いに従うが、 \fB_BSD_SOURCE\fP 機能検査マクロ
 .SH 関連項目
 \fBlongjmp\fP(3), \fBsiglongjmp\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 310b7df..a1ecffb 100644 (file)
@@ -117,6 +117,6 @@ Linux (というか glibc) は互換性のあるロケールとして \fB"C"\fP
 \fBnl_langinfo\fP(3), \fBrpmatch\fP(3), \fBstrcoll\fP(3), \fBstrftime\fP(3),
 \fBcharsets\fP(7), \fBlocale\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 976cbf2..a92fb78 100644 (file)
@@ -60,6 +60,6 @@ POSIX.1\-2001.  POSIX.1\-2001 での説明には欠陥があることに注意
 .SH 関連項目
 \fBcloselog\fP(3), \fBopenlog\fP(3), \fBsyslog\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0afce76..5597c62 100644 (file)
@@ -1,7 +1,7 @@
 .\"  Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de)
 .\"
 .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
-.\"  Distributed under GPL
+.\" Distributed under GPL
 .\" %%%LICENSE_END
 .\"
 .\"  based on glibc infopages
@@ -74,6 +74,6 @@ BSD の実装では \fBsetnetgrent\fP()  は void を返す。
 .SH 関連項目
 \fBsethostent\fP(3), \fBsetprotoent\fP(3), \fBsetservent\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 79bb143..2148351 100644 (file)
@@ -157,6 +157,6 @@ Linux 2.4 における POSIX 共有メモリ・オブジェクトの実装は 
 \fBclose\fP(2), \fBfchmod\fP(2), \fBfchown\fP(2), \fBfcntl\fP(2), \fBfstat\fP(2),
 \fBftruncate\fP(2), \fBmmap\fP(2), \fBopen\fP(2), \fBumask\fP(2), \fBshm_overview\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 083eb14..626947a 100644 (file)
@@ -76,6 +76,6 @@ _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTEND
 .SH 関連項目
 \fBsignal\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index bc4d933..85173ca 100644 (file)
@@ -53,6 +53,6 @@ C99, POSIX.1\-2001.  この関数は IEC 559 で定義されている (また IE
 .SH 関連項目
 \fBcopysign\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 53217e8..db09a6e 100644 (file)
@@ -50,6 +50,6 @@ scalb(x, (double) \-ilogb(x))
 .SH 関連項目
 \fBilogb\fP(3), \fBscalb\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 71fd4d3..186d630 100644 (file)
@@ -71,6 +71,6 @@ BSD 版を使う。 それ以外の場合には、System V 版を使用する。
 \fBkill\fP(2), \fBsigaction\fP(2), \fBsigprocmask\fP(2), \fBsigsuspend\fP(2),
 \fBsigblock\fP(3), \fBsigvec\fP(3), \fBfeature_test_macros\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 30abcef..d0c371f 100644 (file)
@@ -108,6 +108,6 @@ uinfo.si_value = val;      /* argument supplied to sigqueue() */
 \fBkill\fP(2), \fBrt_sigqueueinfo\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2),
 \fBpthread_sigqueue\fP(3), \fBsigwait\fP(3), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 70abeff..c6b2f9b 100644 (file)
@@ -132,6 +132,6 @@ glibc 2.5 以降で修正されている。
 \fBkill\fP(2), \fBpause\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBsigprocmask\fP(2),
 \fBraise\fP(3), \fBsigpause\fP(3), \fBsigvec\fP(3), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 3ddfe1a..c276b7c 100644 (file)
@@ -109,6 +109,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBsigaction\fP(2), \fBsigpending\fP(2), \fBsigprocmask\fP(2), \fBsigsuspend\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 77b2271..f08c68e 100644 (file)
@@ -136,6 +136,6 @@ BSD と System V のどちらのシステムでも シグナルを待つため
 \fBkill\fP(2), \fBpause\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBsigprocmask\fP(2),
 \fBraise\fP(3), \fBsigpause\fP(3), \fBsigset\fP(3), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0408275..7cbfbd6 100644 (file)
@@ -72,6 +72,6 @@ POSIX.1\-2001.
 \fBsigaction\fP(2), \fBsignalfd\fP(2), \fBsigpending\fP(2), \fBsigsuspend\fP(2),
 \fBsigwaitinfo\fP(2), \fBsigsetops\fP(3), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 024987a..eacf09e 100644 (file)
@@ -94,6 +94,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 \fBacos\fP(3), \fBasin\fP(3), \fBatan\fP(3), \fBatan2\fP(3), \fBcos\fP(3), \fBcsin\fP(3),
 \fBsincos\fP(3), \fBtan\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 3c96938..55b75bc 100644 (file)
@@ -59,6 +59,6 @@ sincos, sincosf, sincosl \- 正弦と余弦を同時に計算する
 .SH 関連項目
 \fBcos\fP(3), \fBsin\fP(3), \fBtan\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a14b83d..91d0a68 100644 (file)
@@ -100,6 +100,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 .SH 関連項目
 \fBacosh\fP(3), \fBasinh\fP(3), \fBatanh\fP(3), \fBcosh\fP(3), \fBcsinh\fP(3), \fBtanh\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c161e38..e0906d1 100644 (file)
@@ -52,6 +52,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBalarm\fP(2), \fBnanosleep\fP(2), \fBsignal\fP(2), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 09f5b2e..43bd619 100644 (file)
@@ -107,6 +107,6 @@ glibc 2.4 より前のバージョンでは、 \fBsockatmark\fP()  は動作し
 .SH 関連項目
 \fBfcntl\fP(2), \fBrecv\fP(2), \fBsend\fP(2), \fBtcp\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7a021c9..b068f0e 100644 (file)
@@ -89,6 +89,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 .SH 関連項目
 \fBcbrt\fP(3), \fBcsqrt\fP(3), \fBhypot\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 85ceb13..3ce3c74 100644 (file)
@@ -137,6 +137,6 @@ Linux カーネルには、このライブラリコールをサポートする
 .SH 関連項目
 \fBstatfs\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/stdarg.3 b/manual/LDP_man-pages/draft/man3/stdarg.3
new file mode 100644 (file)
index 0000000..3c9f219
--- /dev/null
@@ -0,0 +1,210 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" the American National Standards Committee X3, on Information
+.\" Processing Systems.
+.\"
+.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\" %%%LICENSE_END
+.\"
+.\"    @(#)stdarg.3    6.8 (Berkeley) 6/29/91
+.\"
+.\" Converted for Linux, Mon Nov 29 15:11:11 1993, faith@cs.unc.edu
+.\" Additions, 2001-10-14, aeb
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH STDARG 3 2013\-03\-15 "" "Linux Programmer's Manual"
+.SH 名前
+stdarg, va_start, va_arg, va_end, va_copy \- 個数・型が可変な引数リスト
+.SH 書式
+\fB#include <stdarg.h>\fP
+.sp
+\fBvoid va_start(va_list \fP\fIap\fP\fB, \fP\fIlast\fP\fB);\fP
+.br
+\fItype\fP\fB va_arg(va_list \fP\fIap\fP\fB, \fP\fItype\fP\fB);\fP
+.br
+\fBvoid va_end(va_list \fP\fIap\fP\fB);\fP
+.br
+\fBvoid va_copy(va_list \fP\fIdest\fP\fB, va_list \fP\fIsrc\fP\fB);\fP
+.SH 説明
+関数は呼び出しに際して、個数や型が可変な引数をとることができる。 インクルードファイル \fI<stdarg.h>\fP では
+\fIva_list\fP 型が宣言されており、3 つのマクロが定義されている。これらを用いると、
+呼び出された関数側では個数や型を知らない引き数のリストを、順に一 つづつ読み込むことができる。
+.PP
+呼び出される関数では、 \fIva_list\fP 型のオブジェクトが宣言されていなければならない。このオブジェクトが \fBva_start\fP(),
+\fBva_arg\fP(), \fBva_end\fP()  の各マクロによって扱われる。
+.SS va_start()
+\fBva_start\fP()  マクロは最初に呼び出さなければならない。これは \fIap\fP を初期化し、 \fBva_arg\fP()  と
+\fBva_end\fP()  で用いることができるようにする。
+.PP
+引き数 \fIlast\fP は引き数リストのうち、可変な部分の直前に置かれる引き数の名前であ る。つまり呼び出された関数が型を知っている最後の引き数である。
+.PP
+この引き数はレジスタ変数や関数、配列として 宣言してはならない。この引き数のアドレスが \fBva_start\fP()
+マクロで用いられるかもしれないからである。
+.SS va_arg()
+\fBva_arg\fP()  マクロは、呼び出し時に指定された引き数のうち、 次の位置にあるものを指定した型 \fItype\fP の値として取得する。 引き数
+\fIap\fP は \fIva_list\fP \fIap\fP で、 \fBva_start\fP()  によって初期化されている必要がある。 \fBva_arg\fP()
+を呼び出すごとに \fIap\fP は変更され、次回の呼び出しの際に、さらに次の引き数を返すようになる。 引き数 \fItype\fP は型の名前である。
+\fItype\fP の前に * を付ければ、オブジェクトへの型付きポインタが得られる。
+.PP
+\fBva_start\fP()  マクロの直後に \fBva_arg\fP()  を最初に実行すると、 \fIlast\fP
+の次の引き数が返る。続けて実行すると、残りの引き数がそれぞれ返る。
+.PP
+次の引き数がなかったり、 \fItype\fP が次の引き数の実際の型と互換でない場合 (デフォルトの引き数変換で扱 えなかった場合)
+には、予測できないエラーが起こる。
+.PP
+\fIap\fP が \fBva_arg(\fP\fIap\fP\fB,\fP\fItype\fP\fB)\fP の形で関数に渡されると、 \fIap\fP
+の値は関数から返って来た後は不定となる。
+.SS va_end()
+\fBva_start\fP()  が実行される毎に、同じ関数内で対応する \fBva_end\fP()  が実行されなければならない。
+\fBva_end(\fP\fIap\fP\fB)\fP が呼び出された後、変数 \fIap\fP の値は不定となる。 \fBva_start\fP()  と \fBva_end\fP()
+の組を何回も並べて使うことも可能である。 \fBva_end\fP()  はマクロかもしれないし関数かもしれない。
+.SS va_copy()
+The \fBva_copy\fP()  macro copies the (previously initialized) variable
+argument list \fIsrc\fP to \fIdest\fP.  The behavior is as if \fBva_start\fP()  were
+applied to \fIdest\fP with the same \fIlast\fP argument, followed by the same
+number of \fBva_arg\fP()  invocations that was used to reach the current state
+of \fIsrc\fP.
+
+.\" Proposal from clive@demon.net, 1997-02-28
+すぐ分かる \fIva_list\fP の実装は、variadic な関数のスタックフレームのポインタである。 このような場合(ほとんどはそうである)、
+単に以下のようにすればいいように思える。
+.in +4n
+.nf
+
+va_list aq = ap;
+
+.fi
+.in
+残念ながら、(長さ 1の)ポインタの配列として扱うシステムもある。 そのような場合、以下のようにする必要がある。
+.in +4n
+.nf
+
+va_list aq;
+*aq = *ap;
+
+.fi
+.in
+最後に、引き数をレジスタで渡すシステムの場合、 \fBva_start\fP()  でメモリを割り当て、引き数を格納し、
+次の引き数がどれかを指し示すようにする必要がある。 そして \fBva_arg\fP()  でリストを順番にたどり、 \fBva_end\fP()
+で割り当てたメモリを開放する。 このような状況に対応するため、C99 では \fBva_copy\fP()  マクロを追加し、
+前述のような割り当ては以下のように置き換えられるようにした。
+.in +4n
+.nf
+
+va_list aq;
+va_copy(aq, ap);
+\&...
+va_end(aq);
+
+.fi
+.in
+\fBva_copy\fP()  が実行されるごとに、 対応する \fBva_end\fP()  を同じ関数内で実行しなければならない。 この名前はまだ draft
+proposal なので、 \fBva_copy\fP()  の代わりに \fB__va_copy\fP を用いるシステムもある。
+.SH 準拠
+\fBva_start\fP(), \fBva_arg\fP(), \fBva_end\fP()  マクロは C89 準拠である。 \fBva_copy\fP()  は C99
+で定義されている。
+.SH 注意
+これらのマクロは、以前から用いられてきた同等のマクロ群と 互換では\fIない\fP。過去のものと互換なバージョンは、 インクルードファイル
+\fI<varargs.h>\fP に存在する。
+.PP
+歴史的なセットアップは以下のとおりである。
+.in +4n
+.nf
+
+#include <varargs.h>
+
+void
+foo(va_alist)
+    va_dcl
+{
+    va_list ap;
+
+    va_start(ap);
+    while (...) {
+        ...
+        x = va_arg(ap, type);
+        ...
+    }
+    va_end(ap);
+}
+
+.fi
+.in
+\fIva_start\fP マクロに \(aq}\(aq を含み、 \fIva_end\fP マクロに対応する \(aq{\(aq を含むシステムもあるので、
+この二つのマクロは同じ関数になければならない。
+.SH バグ
+\fBvarargs\fP マクロとは異なり、 \fBstdarg\fP マクロでは固定引き数なしで関数を指定することが許されていない。 これは
+\fBvarargs\fP ベースのコードを \fBstdarg\fP のコードに書き換えるときに、面倒な作業のもとになる。 また、すべての引き数を
+\fIva_list\fP として可変個指定したいような場合 (\fBvfprintf\fP(3)  など) にも障害となる。
+.SH 例
+関数 \fIfoo\fP は書式文字からなる文字列を受け入れ、その書式文字に対応する型で可変個の 引き数を読み込み、印字する。
+.nf
+
+#include <stdio.h>
+#include <stdarg.h>
+
+void
+foo(char *fmt, ...)
+{
+    va_list ap;
+    int d;
+    char c, *s;
+
+    va_start(ap, fmt);
+    while (*fmt)
+        switch (*fmt++) {
+        case \(aqs\(aq:              /* string */
+            s = va_arg(ap, char *);
+            printf("string %s\en", s);
+            break;
+        case \(aqd\(aq:              /* int */
+            d = va_arg(ap, int);
+            printf("int %d\en", d);
+            break;
+        case \(aqc\(aq:              /* char */
+            /* need a cast here since va_arg only
+               takes fully promoted types */
+            c = (char) va_arg(ap, int);
+            printf("char %c\en", c);
+            break;
+        }
+    va_end(ap);
+}
+.fi
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index b11d41e..b55a4ef 100644 (file)
@@ -71,6 +71,6 @@ stdin, stdout, stderr \- 標準入出力ストリーム
 .SH 関連項目
 \fBcsh\fP(1), \fBsh\fP(1), \fBopen\fP(2), \fBfopen\fP(3), \fBstdio\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ded71fc..0408d53 100644 (file)
@@ -167,6 +167,6 @@ vsscanf     書式付き入力変換
 \fBclose\fP(2), \fBopen\fP(2), \fBread\fP(2), \fBwrite\fP(2), \fBstdout\fP(3),
 \fBunlocked_stdio\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9e7dbc1..571b3fd 100644 (file)
@@ -98,6 +98,6 @@ Solaris では、 \fIFILE\fP 構造体の内部へポータブルなかたちで
 .SH 関連項目
 \fBflockfile\fP(3), \fBfpurge\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 3611ce3..2e238c4 100644 (file)
@@ -93,6 +93,6 @@ main(void)
 \fBbcopy\fP(3), \fBmemccpy\fP(3), \fBmemcpy\fP(3), \fBmemmove\fP(3), \fBstpncpy\fP(3),
 \fBstrcpy\fP(3), \fBstring\fP(3), \fBwcpcpy\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2e6ba8a..d8930a5 100644 (file)
@@ -60,6 +60,6 @@ NULL バイト (\(aq\e0\(aq) 文字が埋められる。 長さ \fIstrlen(src)\f
 .SH 関連項目
 \fBstrncpy\fP(3), \fBwcpncpy\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 503ee9b..69c073b 100644 (file)
@@ -58,6 +58,6 @@ strcasecmp, strncasecmp \- 二つの文字列を大文字小文字を区別せ
 \fBbcmp\fP(3), \fBmemcmp\fP(3), \fBstrcmp\fP(3), \fBstrcoll\fP(3), \fBstring\fP(3),
 \fBstrncmp\fP(3), \fBwcscasecmp\fP(3), \fBwcsncasecmp\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/strcat.3 b/manual/LDP_man-pages/draft/man3/strcat.3
new file mode 100644 (file)
index 0000000..7877ce5
--- /dev/null
@@ -0,0 +1,115 @@
+.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" References consulted:
+.\"     Linux libc source code
+.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
+.\"     386BSD man pages
+.\" Modified Sat Jul 24 18:11:47 1993 by Rik Faith (faith@cs.unc.edu)
+.\" 2007-06-15, Marc Boyer <marc.boyer@enseeiht.fr> + mtk
+.\"     Improve discussion of strncat().
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH STRCAT 3 2012\-07\-19 GNU "Linux Programmer's Manual"
+.SH 名前
+strcat, strncat \- 二つの文字列を連結する
+.SH 書式
+.nf
+\fB#include <string.h>\fP
+.sp
+\fBchar *strcat(char *\fP\fIdest\fP\fB, const char *\fP\fIsrc\fP\fB);\fP
+.sp
+\fBchar *strncat(char *\fP\fIdest\fP\fB, const char *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP
+.fi
+.SH 説明
+The \fBstrcat\fP()  function appends the \fIsrc\fP string to the \fIdest\fP string,
+overwriting the terminating null byte (\(aq\e0\(aq) at the end of \fIdest\fP,
+and then adds a terminating null byte.  The strings may not overlap, and the
+\fIdest\fP string must have enough space for the result.  If \fIdest\fP is not
+large enough, program behavior is unpredictable; \fIbuffer overruns are a
+favorite avenue for attacking secure programs\fP.
+.PP
+\fBstrncat\fP()  も同様だが、以下の点が異なる。
+.IP * 3
+\fIsrc\fP のうち最大 \fIn\fP バイトが使用される。
+.IP *
+\fIsrc\fP が \fIn\fP バイト以上の場合、
+\fIsrc\fP は NULL 終端されている必要はない。
+.PP
+\fBstrcat\fP()  と同じく、\fIdest\fP に格納される結果の文字列は常に NULL 終端される。
+.PP
+\fIsrc\fP が \fIn\fP バイト以上の場合、 \fBstrncat\fP() は \fIdest\fP に \fIn+1\fP
+バイトを書き込む (\fIsrc\fP からの \fIn\fP バイトと終端の NULL バイトである)。
+したがって、\fIdest\fP の大きさは最低でも \fIstrlen(dest)+n+1\fP でなければ
+ならない。
+
+\fBstrncat\fP()  の簡単な実装は以下のような感じであろう:
+.in +4n
+.nf
+
+char*
+strncat(char *dest, const char *src, size_t n)
+{
+    size_t dest_len = strlen(dest);
+    size_t i;
+
+    for (i = 0 ; i < n && src[i] != \(aq\e0\(aq ; i++)
+        dest[dest_len + i] = src[i];
+    dest[dest_len + i] = \(aq\e0\(aq;
+
+    return dest;
+}
+.fi
+.in
+.SH 返り値
+\fBstrcat\fP()  関数と \fBstrncat\fP()  関数は、結果としてできる文字列 \fIdest\fP へのポインタを返す。
+.SH 準拠
+SVr4, 4.3BSD, C89, C99.
+.SH 注意
+Some systems (the BSDs, Solaris, and others) provide the following function:
+
+    size_t strlcat(char *dest, const char *src, size_t size);
+
+.\" https://lwn.net/Articles/506530/
+This function appends the null\-terminated string \fIsrc\fP to the string
+\fIdest\fP, copying at most \fIsize\-strlen(dest)\-1\fP from \fIsrc\fP, and adds a null
+terminator to the result, \fIunless\fP \fIsize\fP is less than \fIstrlen(dest)\fP.
+This function fixes the buffer overrun problem of \fBstrcat\fP(), but the
+caller must still handle the possibility of data loss if \fIsize\fP is too
+small.  The function returns the length of the string \fBstrlcat\fP()  tried to
+create; if the return value is greater than or equal to \fIsize\fP, data loss
+occurred.  If data loss matters, the caller \fImust\fP either check the
+arguments before the call, or test the function return value.  \fBstrlcat\fP()
+is not present in glibc and is not standardized by POSIX, but is available
+on Linux via the \fIlibbsd\fP library.
+.SH 関連項目
+\fBbcopy\fP(3), \fBmemccpy\fP(3), \fBmemcpy\fP(3), \fBstrcpy\fP(3), \fBstring\fP(3),
+\fBstrncpy\fP(3), \fBwcscat\fP(3), \fBwcsncat\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 884d2ee..44a1e81 100644 (file)
@@ -78,6 +78,6 @@ NULL でなく、\fIs\fP の末尾のヌルバイトへのポインタを返す
 \fBstrpbrk\fP(3), \fBstrsep\fP(3), \fBstrspn\fP(3), \fBstrstr\fP(3), \fBstrtok\fP(3),
 \fBwcschr\fP(3), \fBwcsrchr\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 473ada9..ff72049 100644 (file)
@@ -61,6 +61,6 @@ SVr4, 4.3BSD, C89, C99.
 \fBbcmp\fP(3), \fBmemcmp\fP(3), \fBstrcasecmp\fP(3), \fBstrcoll\fP(3), \fBstring\fP(3),
 \fBstrncasecmp\fP(3), \fBstrverscmp\fP(3), \fBwcscmp\fP(3), \fBwcsncmp\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 377a245..eaf58f0 100644 (file)
@@ -56,6 +56,6 @@ SVr4, 4.3BSD, C89, C99.
 \fBbcmp\fP(3), \fBmemcmp\fP(3), \fBsetlocale\fP(3), \fBstrcasecmp\fP(3), \fBstrcmp\fP(3),
 \fBstring\fP(3), \fBstrxfrm\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/strcpy.3 b/manual/LDP_man-pages/draft/man3/strcpy.3
new file mode 100644 (file)
index 0000000..f2e5205
--- /dev/null
@@ -0,0 +1,142 @@
+.\" Copyright (C) 1993 David Metcalfe (david@prism.demon.co.uk)
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" References consulted:
+.\"     Linux libc source code
+.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
+.\"     386BSD man pages
+.\" Modified Sat Jul 24 18:06:49 1993 by Rik Faith (faith@cs.unc.edu)
+.\" Modified Fri Aug 25 23:17:51 1995 by Andries Brouwer (aeb@cwi.nl)
+.\" Modified Wed Dec 18 00:47:18 1996 by Andries Brouwer (aeb@cwi.nl)
+.\" 2007-06-15, Marc Boyer <marc.boyer@enseeiht.fr> + mtk
+.\"     Improve discussion of strncpy().
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH STRCPY 3 2012\-07\-19 GNU "Linux Programmer's Manual"
+.SH 名前
+strcpy, strncpy \- 文字列をコピーする
+.SH 書式
+.nf
+\fB#include <string.h>\fP
+.sp
+\fBchar *strcpy(char *\fP\fIdest\fP\fB, const char *\fP\fIsrc\fP\fB);\fP
+.sp
+\fBchar *strncpy(char *\fP\fIdest\fP\fB, const char *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP
+.fi
+.SH 説明
+The \fBstrcpy\fP()  function copies the string pointed to by \fIsrc\fP, including
+the terminating null byte (\(aq\e0\(aq), to the buffer pointed to by
+\fIdest\fP.  The strings may not overlap, and the destination string \fIdest\fP
+must be large enough to receive the copy.  \fIBeware of buffer overruns!\fP
+(See BUGS.)
+.PP
+\fBstrncpy\fP()  関数も同様だが、 \fIsrc\fP のうち最大でも \fIn\fP バイトしかコピーされない点が異なる。 \fB警告\fP: \fIsrc\fP
+の最初の \fIn\fP バイトの中にヌルバイトがない場合、 \fIdest\fP に格納される文字列はヌルで終端されないことになる。
+.PP
+If the length of \fIsrc\fP is less than \fIn\fP, \fBstrncpy\fP()  writes additional
+null bytes to \fIdest\fP to ensure that a total of \fIn\fP bytes are written.
+.PP
+\fBstrncpy\fP()  の簡単な実装は以下のような感じであろう:
+.in +4n
+.nf
+
+char *
+strncpy(char *dest, const char *src, size_t n)
+{
+    size_t i;
+
+    for (i = 0; i < n && src[i] != \(aq\e0\(aq; i++)
+        dest[i] = src[i];
+    for ( ; i < n; i++)
+        dest[i] = \(aq\e0\(aq;
+
+    return dest;
+}
+.fi
+.in
+.SH 返り値
+\fBstrcpy\fP()  関数と \fBstrncpy\fP()  関数は 受け側の文字列\fIdest\fPへのポインタを返す。
+.SH 準拠
+SVr4, 4.3BSD, C89, C99.
+.SH 注意
+\fBstrncpy\fP()  は効率的でなく間違いを起こしやすいと考えるプログラマもいるだろう。 プログラマが \fIdest\fP の大きさが \fIsrc\fP
+の長さよりも 大きいことを知っている (つまり、そのことをチェックするコードを 書いている) 場合は、 \fBstrcpy()\fP を使うことができる。
+
+One valid (and intended) use of \fBstrncpy\fP()  is to copy a C string to a
+fixed\-length buffer while ensuring both that the buffer is not overflowed
+and that unused bytes in the target buffer are zeroed out (perhaps to
+prevent information leaks if the buffer is to be written to media or
+transmitted to another process via an interprocess communication technique).
+
+If there is no terminating null byte in the first \fIn\fP bytes of \fIsrc\fP,
+\fBstrncpy\fP()  produces an unterminated string in \fIdest\fP.  You can force
+termination using something like the following:
+.in +4n
+.nf
+
+strncpy(buf, str, n);
+if (n > 0)
+    buf[n \- 1]= \(aq\e0\(aq;
+.fi
+.in
+.PP
+(Of course, the above technique ignores the fact that information contained
+in \fIsrc\fP is lost in the copying to \fIdest\fP.)
+
+Some systems (the BSDs, Solaris, and others) provide the following function:
+
+    size_t strlcpy(char *dest, const char *src, size_t size);
+
+.\" http://static.usenix.org/event/usenix99/full_papers/millert/millert_html/index.html
+.\"     "strlcpy and strlcat - consistent, safe, string copy and concatenation"
+.\"     1999 USENIX Annual Technical Conference
+.\" https://lwn.net/Articles/506530/
+This function is similar to \fBstrncpy\fP(), but it copies at most \fIsize\-1\fP
+bytes to \fIdest\fP, always adds a terminating null byte, and does not pad the
+target with (further) null bytes.  This function fixes some of the problems
+of \fBstrcpy\fP()  and \fBstrncpy\fP(), but the caller must still handle the
+possibility of data loss if \fIsize\fP is too small.  The return value of the
+function is the length of \fIsrc\fP, which allows truncation to be easily
+detected: if the return value is greater than or equal to \fIsize\fP,
+truncation occurred.  If loss of data matters, the caller \fImust\fP either
+check the arguments before the call, or test the function return value.
+\fBstrlcpy\fP()  is not present in glibc and is not standardized by POSIX, but
+is available on Linux via the \fIlibbsd\fP library.
+.SH バグ
+\fBstrcpy\fP()  の受け側の文字列が十分な大きさでない場合、何が起こるかわからない。
+固定長文字列を溢れさせるのは、マシンの制御を掌中に収めるために クラッカーが好んで使うテクニックである。
+プログラムでデータをバッファに読み込んだりコピーしたりする場合には、 必ずまず最初に十分な大きさがあるかどうかをチェックする必要がある。
+プログラマがオーバーフローが不可能だと示せる場合には このチェックは不要かもしれないが、十分注意すること。
+長い間には、不可能だったことが可能になるような方法でプログラムが 変更されることもあるからだ。
+.SH 関連項目
+\fBbcopy\fP(3), \fBmemccpy\fP(3), \fBmemcpy\fP(3), \fBmemmove\fP(3), \fBstpcpy\fP(3),
+\fBstpncpy\fP(3), \fBstrdup\fP(3), \fBstring\fP(3), \fBwcscpy\fP(3), \fBwcsncpy\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index edae3d7..e2970ef 100644 (file)
@@ -79,7 +79,7 @@ _GNU_SOURCE
 \fBstrdup\fP()  関数は、文字列 \fIs\fPの複製である 新しい文字列へのポインタを返す。 新しい文字列のためのメモリは \fBmalloc\fP(3)
 で得ている。 そして、 \fBfree\fP(3)  で解放することができる。
 
-\fBstrndup\fP() é\96¢æ\95°ã\81¯å\90\8cæ§\98ã\81§ã\81\82ã\82\8bã\81\8cã\80\81æ\9c\80大ã\81§ \fIn\fP ã\83\90ã\82¤ã\83\88ã\81 ã\81\91ã\82\92è¤\87製ã\81\99ã\82\8bã\80\82
+\fBstrndup\fP() 関数は同様であるが、最大で \fIn\fP バイトを複製する。
 \fIs\fP が \fIn\fP よりも長い場合、\fIn\fP バイトだけが複製され、
 終端の NULL バイト (\(aq\e0\(aq)) が追加される。
 
@@ -101,6 +101,6 @@ POSIX.1\-2008 準拠である。 \fBstrdupa\fP(), \fBstrndupa\fP()  は GNU 拡
 \fBalloca\fP(3), \fBcalloc\fP(3), \fBfree\fP(3), \fBmalloc\fP(3), \fBrealloc\fP(3),
 \fBstring\fP(3), \fBwcsdup\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index bd7ccc6..0a32cc7 100644 (file)
@@ -133,6 +133,6 @@ NULL 以外になることが求められている。
 .SH 関連項目
 \fBerr\fP(3), \fBerrno\fP(3), \fBerror\fP(3), \fBperror\fP(3), \fBstrsignal\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2df39ec..27d729c 100644 (file)
@@ -120,6 +120,6 @@ strfmon(buf, sizeof(buf), "[%^=*#6n] [%=*#6i]",
 .SH 関連項目
 \fBsetlocale\fP(3), \fBsprintf\fP(3), \fBlocale\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1f2af84..e18e054 100644 (file)
@@ -53,6 +53,6 @@ strfry \- 文字列をランダムに並べ変える
 .SH 関連項目
 \fBmemfrob\fP(3), \fBstring\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index da22e9a..5ae5c38 100644 (file)
@@ -346,6 +346,6 @@ main(int argc, char *argv[])
 \fBdate\fP(1), \fBtime\fP(2), \fBctime\fP(3), \fBsetlocale\fP(3), \fBsprintf\fP(3),
 \fBstrptime\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index cb4279e..af94f4b 100644 (file)
@@ -100,6 +100,6 @@ strrchr, strsep, strspn, strstr, strtok, strxfrm, index, rindex \- 文字列を
 \fBstrncmp\fP(3), \fBstrncpy\fP(3), \fBstrpbrk\fP(3), \fBstrrchr\fP(3), \fBstrsep\fP(3),
 \fBstrspn\fP(3), \fBstrstr\fP(3), \fBstrtok\fP(3), \fBstrxfrm\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 965538b..9202b5c 100644 (file)
@@ -50,6 +50,6 @@ SVr4, 4.3BSD, C89, C99.
 .SH 関連項目
 \fBstring\fP(3), \fBstrnlen\fP(3), \fBwcslen\fP(3), \fBwcsnlen\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 89a3e3b..8d26899 100644 (file)
@@ -56,6 +56,6 @@ POSIX.1\-2008.
 .SH 関連項目
 \fBstrlen\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ef34025..7527163 100644 (file)
@@ -54,6 +54,6 @@ SVr4, 4.3BSD, C89, C99.
 \fBindex\fP(3), \fBmemchr\fP(3), \fBrindex\fP(3), \fBstrchr\fP(3), \fBstring\fP(3),
 \fBstrsep\fP(3), \fBstrspn\fP(3), \fBstrstr\fP(3), \fBstrtok\fP(3), \fBwcspbrk\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 742f252..e59299a 100644 (file)
@@ -296,6 +296,6 @@ main(void)
 .SH 関連項目
 \fBtime\fP(2), \fBgetdate\fP(3), \fBscanf\fP(3), \fBsetlocale\fP(3), \fBstrftime\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index db623af..b41bcc5 100644 (file)
@@ -74,6 +74,6 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 \fBindex\fP(3), \fBmemchr\fP(3), \fBrindex\fP(3), \fBstrchr\fP(3), \fBstring\fP(3),
 \fBstrpbrk\fP(3), \fBstrspn\fP(3), \fBstrstr\fP(3), \fBstrtok\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 805f2c2..decb6dd 100644 (file)
@@ -75,6 +75,6 @@ POSIX.1\-2008.  Solaris と BSD 系にも存在する。
 .SH 関連項目
 \fBpsignal\fP(3), \fBstrerror\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 552cfd1..bd81479 100644 (file)
@@ -64,6 +64,6 @@ SVr4, 4.3BSD, C89, C99.
 \fBstrpbrk\fP(3), \fBstrsep\fP(3), \fBstrstr\fP(3), \fBstrtok\fP(3), \fBwcscspn\fP(3),
 \fBwcsspn\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index baf9fc0..f69cfb0 100644 (file)
@@ -67,6 +67,6 @@ Linux libc の初期のバージョン(4.5.26 まで)は \fBstrstr\fP()  関数
 \fBstring\fP(3), \fBstrpbrk\fP(3), \fBstrsep\fP(3), \fBstrspn\fP(3), \fBstrtok\fP(3),
 \fBwcsstr\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5120b25..e456cdf 100644 (file)
@@ -122,6 +122,6 @@ C89 では \fBstrtod\fP()  が、C99 では残りの 2 つの関数が記述さ
 .SH 関連項目
 \fBatof\fP(3), \fBatoi\fP(3), \fBatol\fP(3), \fBstrtol\fP(3), \fBstrtoul\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e1e0b38..b1fa002 100644 (file)
@@ -49,6 +49,6 @@ C99, POSIX.1\-2001.
 .SH 関連項目
 \fBimaxabs\fP(3), \fBimaxdiv\fP(3), \fBstrtol\fP(3), \fBstrtoul\fP(3), \fBwcstoimax\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 78c3380..7dafe2e 100644 (file)
@@ -164,6 +164,6 @@ main(int argc, char *argv[])
 \fBindex\fP(3), \fBmemchr\fP(3), \fBrindex\fP(3), \fBstrchr\fP(3), \fBstring\fP(3),
 \fBstrpbrk\fP(3), \fBstrsep\fP(3), \fBstrspn\fP(3), \fBstrstr\fP(3), \fBwcstok\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/strtol.3 b/manual/LDP_man-pages/draft/man3/strtol.3
new file mode 100644 (file)
index 0000000..2314780
--- /dev/null
@@ -0,0 +1,192 @@
+.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" References consulted:
+.\"     Linux libc source code
+.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
+.\"     386BSD man pages
+.\" Modified Sun Jul 25 10:53:39 1993 by Rik Faith (faith@cs.unc.edu)
+.\" Added correction due to nsd@bbc.com (Nick Duffek) - aeb, 950610
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH STRTOL 3 2013\-02\-10 GNU "Linux Programmer's Manual"
+.SH 名前
+strtol, strtoll, strtoq \- 文字列を long int に変換する
+.SH 書式
+.nf
+\fB#include <stdlib.h>\fP
+.sp
+\fBlong int strtol(const char *\fP\fInptr\fP\fB, char **\fP\fIendptr\fP\fB, int \fP\fIbase\fP\fB);\fP
+.sp
+\fBlong long int strtoll(const char *\fP\fInptr\fP\fB, char **\fP\fIendptr\fP\fB, int \fP\fIbase\fP\fB);\fP
+.fi
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+.ad l
+\fBstrtoll\fP():
+.RS 4
+XOPEN_SOURCE\ >=\ 600 || _BSD_SOURCE || _SVID_SOURCE || _ISOC99_SOURCE
+|| _POSIX_C_SOURCE\ >=\ 200112L;
+.br
+または \fIcc\ \-std=c99\fP
+.RE
+.ad
+.SH 説明
+\fBstrtol\fP()  関数は、 \fInptr\fP の文字列の最初の部分を、 \fIbase\fP を基数として long int に変換する。 この
+\fIbase\fP は 2 から 36 までの値 あるいは特別な意味を持つ値 0 でなければならない。
+.PP
+文字列の先頭には、任意の数の空白があってもよく (空白は \fBisspace\fP(3) で判定される)、また数字の直前には \(aq+\(aq か
+\(aq\-\(aq の 符号があってもよい。 \fIbase\fP が 0 または 16 の場合には、文字列の先頭に "0x" を置くことが
+でき、その場合には文字列は 16進数として扱われる。 これ以外の文字列で \fIbase\fP が 0 の場合は、 文字列が \(aq0\(aq
+で始まるときは 8進数として、 それ以外のときは 10進数として扱われる。
+.PP
+数字を表す文字列は \fIlong int\fP に変換されるが、基数に対して 有効でない数字が現れた時点で変換は終了する。(11進数以上では
+\(aqA\(aq は 大文字・小文字に関わらず 10 を表し、 \(aqB\(aq は 11 を表現し、 以下同様に、 \(aqZ\(aq は 35
+を表す。)
+.PP
+\fIendptr\fP がヌル値 (NULL) でない場合は、最初に現れた不正な文字が \fBstrtol\fP()  によって \fI*endptr\fP
+に保存されている。 文字列に有効な数字がひとつもなければ、 \fBstrtol\fP()  は \fInptr\fP の元の値を \fI*endptr\fP に代入する
+(そして 0 を返す)。 特に、\fI*nptr\fP が \(aq\e0\(aq 以外で、返された \fI**endptr\fP が \(aq\e0\(aq
+ならば、文字列全体が有効だったことになる。
+.PP
+\fBstrtoll\fP()  関数は \fBstrtol\fP()  と同様だが、long long int 型の値を返す。
+.SH 返り値
+アンダーフローもオーバーフローも起きなかった場合、 \fBstrtol\fP()  関数は 変換された値を返す。オーバーフローした場合には
+\fBLONG_MAX\fP が返り、 アンダーフローした場合には \fBLONG_MIN\fP が返る。オーバーフロー、 アンダーフローのいずれの場合にも
+大域変数 \fIerrno\fP には \fBERANGE\fP が設定される。 \fBstrtoll\fP()  も同様であるが、 \fBLONG_MIN\fP と
+\fBLONG_MAX\fP の代わりに \fBLLONG_MIN\fP と \fBLLONG_MAX\fP が返される。
+.SH エラー
+.TP 
+\fBEINVAL\fP
+(C99 にはない) 指定された \fIbase\fP がサポートされていない値である。
+.TP 
+\fBERANGE\fP
+結果の値が範囲外である。
+.LP
+実装によっては、変換が行われなかった場合 (数字がなく、0 を返した場合)、 \fIerrno\fP に \fBEINVAL\fP が設定される場合がある。
+.SH 準拠
+\fBstrtol\fP()  は SVr4, 4.3BSD, C89, C99 と POSIX.1\-2001 に準拠している。 \fBstrtoll\fP()
+は C99 と POSIX.1\-2001 に準拠している。
+.SH 注意
+\fBstrtol ()\fP からは成功、失敗どちらの場合でも 0, \fBLONG_MAX\fP, \fBLONG_MIN\fP (\fBstrtoll\fP()  では
+\fBLLONG_MAX\fP, \fBLLONG_MIN\fP)  が返る可能性があるので、 プログラムは関数を呼び出す前に \fIerrno\fP を 0
+に設定し、呼び出し後に \fIerrno\fP が 0 以外の値かどうかを確認しエラーが発生したかどうかを判断する 必要がある。
+
+According to POSIX.1\-2001, in locales other than the "C" and "POSIX", these
+functions may accept other, implementation\-defined numeric strings.
+.LP
+BSD には、
+.sp
+.in +4n
+.nf
+\fBquad_t strtoq(const char *\fP\fInptr\fP\fB, char **\fP\fIendptr\fP\fB, int \fP\fIbase\fP\fB);\fP
+.sp
+.in
+.fi
+という完全に同様の定義を持つ関数がある。 使用中のアーキテクチャのワード長次第であるが、この関数は \fBstrtoll\fP()  か
+\fBstrtol\fP()  と等価となることもある。
+.SH 例
+以下のプログラムは \fBstrtol\fP()  の使用例である。 最初のコマンドライン引き数には \fBstrtol\fP()
+が数字として解釈する文字列を指定する。 (省略可能な) 二番目の引き数には 変換に使用される基数を指定する (この引き数は \fBatoi\fP(3)
+を使って数値に変換される。 \fBatoi\fP(3)  は \fBstrtol\fP()  よりも簡単なインタフェースを持つ関数で、
+その中ではエラーチェックは行われない)。 このプログラムの実行例をいくつか以下に示す:
+.in +4n
+.nf
+
+$\fB ./a.out 123\fP
+strtol() returned 123
+$\fB ./a.out \(aq    123\(aq\fP
+strtol() returned 123
+$\fB ./a.out 123abc\fP
+strtol() returned 123
+Further characters after number: abc
+$\fB ./a.out 123abc 55\fP
+strtol: Invalid argument
+$\fB ./a.out \(aq\(aq\fP
+No digits were found
+$\fB ./a.out 4000000000\fP
+strtol: Numerical result out of range
+.fi
+.in
+.SS プログラムのソース
+\&
+.nf
+#include <stdlib.h>
+#include <limits.h>
+#include <stdio.h>
+#include <errno.h>
+
+int
+main(int argc, char *argv[])
+{
+    int base;
+    char *endptr, *str;
+    long val;
+
+    if (argc < 2) {
+        fprintf(stderr, "Usage: %s str [base]\en", argv[0]);
+        exit(EXIT_FAILURE);
+    }
+
+    str = argv[1];
+    base = (argc > 2) ? atoi(argv[2]) : 10;
+
+    errno = 0;    /* To distinguish success/failure after call */
+    val = strtol(str, &endptr, base);
+
+    /* Check for various possible errors */
+
+    if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
+            || (errno != 0 && val == 0)) {
+        perror("strtol");
+        exit(EXIT_FAILURE);
+    }
+
+    if (endptr == str) {
+        fprintf(stderr, "No digits were found\en");
+        exit(EXIT_FAILURE);
+    }
+
+    /* If we got here, strtol() successfully parsed a number */
+
+    printf("strtol() returned %ld\en", val);
+
+    if (*endptr != \(aq\e0\(aq)        /* Not necessarily an error... */
+        printf("Further characters after number: %s\en", endptr);
+
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBatof\fP(3), \fBatoi\fP(3), \fBatol\fP(3), \fBstrtod\fP(3), \fBstrtoul\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2c86abf..218d701 100644 (file)
@@ -122,6 +122,6 @@ BSD には、
 .SH 関連項目
 \fBatof\fP(3), \fBatoi\fP(3), \fBatol\fP(3), \fBstrtod\fP(3), \fBstrtol\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6d382c5..5f9df8d 100644 (file)
@@ -46,7 +46,7 @@ strverscmp \- 2つのバージョン文字列を比較する
 \fBversionsort\fP(3)  を使って実装されているが、この中で \fBstrverscmp\fP()  が使用されている。
 
 このように \fBstrverscmp\fP()  の役目は2つの文字列を比較して「正しい」順序を探すことである。 これに対して \fBstrcmp\fP(3)
\81¯è¾\9eæ\9b¸é \86ã\81§æ¯\94è¼\83ã\81\97ã\81\9fçµ\90æ\9e\9cã\82\92è¿\94ã\81\99ã\81 ã\81\91ã\81§ã\81\82ã\82\8b。 関数 \fBstrverscmp\fP()  はロケールのカテゴリである \fBLC_COLLATE\fP を使用しない。
\81¯è¾\9eæ\9b¸é \86ã\81 ã\81\91ã\81§æ¯\94è¼\83ã\81\97ã\81\9fçµ\90æ\9e\9cã\82\92è¿\94ã\81\99。 関数 \fBstrverscmp\fP()  はロケールのカテゴリである \fBLC_COLLATE\fP を使用しない。
 このことから、この関数が主にアスキー文字から成る文字列を 想定していることが分かる。
 
 この関数の動作は以下の通りである。 両方の文字列が等しい場合、0 を返す。 それ以外の場合、その直前までは両方の文字列が等しく、
@@ -65,6 +65,6 @@ strverscmp \- 2つのバージョン文字列を比較する
 .SH 関連項目
 \fBrename\fP(1), \fBstrcasecmp\fP(3), \fBstrcmp\fP(3), \fBstrcoll\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 50c4eff..e644b38 100644 (file)
@@ -61,6 +61,6 @@ SVr4, 4.3BSD, C89, C99.
 \fBbcmp\fP(3), \fBmemcmp\fP(3), \fBsetlocale\fP(3), \fBstrcasecmp\fP(3), \fBstrcmp\fP(3),
 \fBstrcoll\fP(3), \fBstring\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5d780c7..686303c 100644 (file)
@@ -56,6 +56,6 @@ SVr4, 4.3BSD, POSIX.1\-2001.
 .SH 関連項目
 \fBbstring\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ba287e8..cde3091 100644 (file)
@@ -208,6 +208,6 @@ POSIX.1\-2001.
 \fBbc\fP(1), \fBexpr\fP(1), \fBgetconf\fP(1), \fBlocale\fP(1), \fBfpathconf\fP(3),
 \fBpathconf\fP(3), \fBposixoptions\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 00c25a8..2561f99 100644 (file)
@@ -223,6 +223,6 @@ UNIX の多くのバージョンで使用可能である。
 .SH 関連項目
 \fBlogger\fP(1), \fBsetlogmask\fP(3), \fBsyslog.conf\fP(5), \fBsyslogd\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a74661b..4a6a7d0 100644 (file)
@@ -94,6 +94,6 @@ POSIX.1\-2001 ではシェルが提供されているという標準に準拠し
 .SH 関連項目
 \fBsh\fP(1), \fBsignal\fP(2), \fBwait\fP(2), \fBexec\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f2beb2c..892dcea 100644 (file)
@@ -62,6 +62,6 @@ sysv_signal \- System V 方式のシグナル処理
 .SH 関連項目
 \fBsigaction\fP(2), \fBsignal\fP(2), \fBbsd_signal\fP(3), \fBsignal\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index fcf73be..911472f 100644 (file)
@@ -111,6 +111,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 \fBacos\fP(3), \fBasin\fP(3), \fBatan\fP(3), \fBatan2\fP(3), \fBcos\fP(3), \fBctan\fP(3),
 \fBsin\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index bbbf35b..e6b4534 100644 (file)
@@ -91,6 +91,6 @@ C99, POSIX.1\-2001.  \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠
 .SH 関連項目
 \fBacosh\fP(3), \fBasinh\fP(3), \fBatanh\fP(3), \fBcosh\fP(3), \fBctanh\fP(3), \fBsinh\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index cb60880..9bca606 100644 (file)
@@ -80,6 +80,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBsetpgid\fP(2), \fBsetsid\fP(2), \fBcredentials\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5fe8c71..e8062c5 100644 (file)
@@ -58,6 +58,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBgetsid\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5e8b282..867b38f 100644 (file)
@@ -32,7 +32,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH TELLDIR 3 2009\-03\-11 "" "Linux Programmer's Manual"
+.TH TELLDIR 3 2013\-03\-24 "" "Linux Programmer's Manual"
 .SH 名前
 telldir \- ディレクトリストリーム中の現在位置を返す
 .SH 書式
@@ -61,10 +61,19 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 .SH 注意
 バージョン 2.1.1 以前の glibc では、 \fBtelldir\fP()9 の返り値の型は \fIoff_t\fP であった。 POSIX.1\-2001
 では \fIlong\fP と規定されており、glibc 2.1.2 以降では \fIlong\fP になっている。
+
+.\" https://lwn.net/Articles/544298/
+In early file systems, the value returned by \fBtelldir\fP()  was a simple file
+offset within a directory.  Modern file systems use tree or hash structures,
+rather than flat tables, to represent directories.  On such file systems,
+the value returned by \fBtelldir\fP()  (and used internally by \fBreaddir\fP(3))
+is a "cookie" that is used by the implementation to derive a position within
+a directory.  Application programs should treat this strictly as an opaque
+value, making \fIno\fP assumptions about its contents.
 .SH 関連項目
 \fBclosedir\fP(3), \fBopendir\fP(3), \fBreaddir\fP(3), \fBrewinddir\fP(3),
 \fBscandir\fP(3), \fBseekdir\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7922440..8a33736 100644 (file)
@@ -98,6 +98,6 @@ SUSv2 では \fBTMPDIR\fP に付いて言及されていない。 glibc は、
 .SH 関連項目
 \fBmkstemp\fP(3), \fBmktemp\fP(3), \fBtmpfile\fP(3), \fBtmpnam\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c05a033..08fb966 100644 (file)
@@ -614,6 +614,6 @@ DU, Tru64 は \fIduration\fP ミリ秒のブレークを送信する。 FreeBSD,
 .SH 関連項目
 \fBstty\fP(1), \fBconsole_ioctl\fP(4), \fBtty_ioctl\fP(4), \fBsetserial\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 40ffb21..9657489 100644 (file)
@@ -123,6 +123,6 @@ glibc バージョン 2.3.3 以前では、 引き数に +0 や \-0 を渡すと
 .SH 関連項目
 \fBgamma\fP(3), \fBlgamma\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2bbbbb0..3dc1f74 100644 (file)
@@ -81,6 +81,6 @@ time_t my_timegm (struct tm *tm)
 .SH 関連項目
 \fBgmtime\fP(3), \fBlocaltime\fP(3), \fBmktime\fP(3), \fBtzset\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index fd94eee..05c72a3 100644 (file)
@@ -100,6 +100,6 @@ POSIX.1\-2001 にはない。 ほとんどの BSD 由来のシステムには存
 .SH 関連項目
 \fBgettimeofday\fP(2), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 344e5ac..d4785ff 100644 (file)
@@ -80,6 +80,6 @@ POSIX.1\-2001 では、 ストリームをオープンできなかった場合
 .SH 関連項目
 \fBexit\fP(3), \fBmkstemp\fP(3), \fBmktemp\fP(3), \fBtempnam\fP(3), \fBtmpnam\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0c4a984..11f32ed 100644 (file)
@@ -88,6 +88,6 @@ tmpnam_r(char *s)
 .SH 関連項目
 \fBmkstemp\fP(3), \fBmktemp\fP(3), \fBtempnam\fP(3), \fBtmpfile\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2429a7c..e5bb1ac 100644 (file)
@@ -57,6 +57,6 @@ SVr4, BSD, POSIX.1\-2001.  POSIX.1\-2008 は \fBtoascii\fP()  を廃止予定と
 .SH 関連項目
 \fBisascii\fP(3), \fBtolower\fP(3), \fBtoupper\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index fcb3b40..5c0adee 100644 (file)
@@ -58,6 +58,6 @@ C89, C99, 4.3BSD.
 .SH 関連項目
 \fBisalpha\fP(3), \fBsetlocale\fP(3), \fBtowlower\fP(3), \fBtowupper\fP(3), \fBlocale\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f295811..9a7a4dd 100644 (file)
@@ -41,6 +41,6 @@ C99.
 .SH 関連項目
 \fBtowlower\fP(3), \fBtowupper\fP(3), \fBwctrans\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8464330..5c8ffab 100644 (file)
@@ -43,6 +43,6 @@ case)・ タイトル文字 (title case) という 3 つの "case" が含まれ
 .SH 関連項目
 \fBiswlower\fP(3), \fBtowctrans\fP(3), \fBtowupper\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4858226..eb7b50c 100644 (file)
@@ -43,6 +43,6 @@ case)・ タイトル文字 (title case) という 3 つの "case" が含まれ
 .SH 関連項目
 \fBiswupper\fP(3), \fBtowctrans\fP(3), \fBtowlower\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index d9187d3..c144de9 100644 (file)
@@ -75,6 +75,6 @@ C99, POSIX.1\-2001.
 \fBceil\fP(3), \fBfloor\fP(3), \fBlrint\fP(3), \fBnearbyint\fP(3), \fBrint\fP(3),
 \fBround\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/tsearch.3 b/manual/LDP_man-pages/draft/man3/tsearch.3
new file mode 100644 (file)
index 0000000..fb46f90
--- /dev/null
@@ -0,0 +1,192 @@
+.\" Copyright 1995 by Jim Van Zandt <jrv@vanzandt.mv.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH TSEARCH 3 2012\-08\-03 GNU "Linux Programmer's Manual"
+.SH 名前
+tsearch, tfind, tdelete, twalk, tdestroy \- 二分木 (binary tree) の操作
+.SH 書式
+.nf
+\fB#include <search.h>\fP
+.sp
+\fBvoid *tsearch(const void *\fP\fIkey\fP\fB, void **\fP\fIrootp\fP\fB,\fP
+\fB                int (*\fP\fIcompar\fP\fB)(const void *, const void *));\fP
+.sp
+\fBvoid *tfind(const void *\fP\fIkey\fP\fB, const void **\fP\fIrootp\fP\fB,\fP
+\fB                int (*\fP\fIcompar\fP\fB)(const void *, const void *));\fP
+.sp
+\fBvoid *tdelete(const void *\fP\fIkey\fP\fB, void **\fP\fIrootp\fP\fB,\fP
+\fB                int (*\fP\fIcompar\fP\fB)(const void *, const void *));\fP
+.sp
+\fBvoid twalk(const void *\fP\fIroot\fP\fB, void (*\fP\fIaction\fP\fB)(const void *\fP\fInodep\fP\fB,\fP
+\fB                                   const VISIT \fP\fIwhich\fP\fB,\fP
+\fB                                   const int \fP\fIdepth\fP\fB));\fP
+.sp
+\fB#define _GNU_SOURCE\fP         /* feature_test_macros(7) 参照 */
+.br
+\fB#include <search.h>\fP
+.sp
+\fBvoid tdestroy(void *\fP\fIroot\fP\fB, void (*\fP\fIfree_node\fP\fB)(void *\fP\fInodep\fP\fB));\fP
+.fi
+.SH 説明
+\fBtsearch\fP(), \fBtfind\fP(), \fBtwalk\fP(), \fBtdelete\fP()  は 二分木を操作する関数である。 これらの関数は
+Knuth (6.2.2) Algorithm T に基づいている。 木構造における各ノードの最初のフィールドは、対応するデータ・
+アイテムへのポインタである。 (参照先のデータは、呼び出しプログラムで用意する。)  \fIcompar\fP は比較ルーチンへのポインタである。
+比較ルーチンは、アイテムへのポインタ 2 つを引数に持つ。 比較ルーチンの返り値は、1 つ目のアイテムが 2 つ目のアイテムよりも
+「小さい、等しい、大きい」によって、 「負、0、正」の整数値でなければならない。
+.PP
+\fBtsearch\fP()  は、木構造からアイテムを検索する関数である。 \fIkey\fP は、検索するアイテムへのポインタである。 \fIrootp\fP
+は木構造の根へのポインタへのポインタである。 木構造がノードを含まない場合、\fIrootp\fP の参照している変数は NULL
+に設定されていなければならない。 木構造にアイテムが見つかった場合、 \fBtsearch\fP()  はそのアイテムへのポインタを返す。
+見つからなかった場合は、アイテムを木構造に追加し、 追加したアイテムへのポインタを返す。
+.PP
+\fBtfind\fP()  は、 \fBtsearch\fP()  に似ているが、 アイテムが見つからなかった場合 NULL を返す点が異なる。
+.PP
+\fBtdelete\fP()  は木構造からアイテムを削除する。 引数は \fBtsearch\fP()  と同じである。
+.PP
+\fBtwalk\fP()  performs depth\-first, left\-to\-right traversal of a binary tree.
+\fIroot\fP points to the starting node for the traversal.  If that node is not
+the root, then only part of the tree will be visited.  \fBtwalk\fP()  calls the
+user function \fIaction\fP each time a node is visited (that is, three times
+for an internal node, and once for a leaf).  \fIaction\fP, in turn, takes three
+arguments.  The first argument is a pointer to the node being visited.  The
+structure of the node is unspecified, but it is possible to cast the pointer
+to a pointer\-to\-pointer\-to\-element in order to access the element stored
+within the node.  The application must not modify the structure pointed to
+by this argument.  The second argument is an integer which takes one of the
+values \fBpreorder\fP, \fBpostorder\fP, or \fBendorder\fP depending on whether this
+is the first, second, or third visit to the internal node, or the value
+\fBleaf\fP if this is the single visit to a leaf node.  (These symbols are
+defined in \fI<search.h>\fP.)  The third argument is the depth of the
+node; the root node has depth zero.
+.PP
+(より一般的には、\fBpreorder\fP, \fBpostorder\fP, \fBendorder\fP は \fBpreorder\fP, \fBinorder\fP,
+\fBpostorder\fP として知られている: それぞれ、子要素を辿る前・最初の子要素を辿った後かつ 2 番目の子要素を辿る前・
+子要素を辿った後ということを表している。 よって \fBpost\%order\fP という名前を選ぶのは少し紛らわしい。)
+.PP
+\fBtdestroy\fP()  は \fIroot\fP が指す木構造全体を削除し、 \fBtsearch\fP()  関数で確保されたリソースを全て解放する。
+木構造の各ノードについて、関数 \fIfree_node\fP が呼び出される。 データへのポインタがこの関数の引数として渡される。
+そのような動作が必要でなければ、 \fIfree_node\fP は何もしない関数へのポインタでなければならない。
+.SH 返り値
+\fBtsearch\fP()  は、木構造に見つかったアイテムか、 新しく追加したアイテムへのポインタを返す。
+メモリの不足のためアイテムを追加できなかった場合は NULL を返す。 \fBtfind\fP()  は、アイテムへのポインタを返す。
+一致するアイテムが見つからない場合は NULL を返す。 検索条件に一致する要素が複数ある場合、返される値は不定である。
+.PP
+\fBtdelete\fP()  は削除したアイテムの親へのポインタを返す。 アイテムが見つからなかった場合は NULL を返す。
+.PP
+\fIrootp\fP が NULL の場合、 \fBtsearch\fP(), \fBtfind\fP(), \fBtdelete\fP()  は NULL を返す。
+.SH 準拠
+SVr4, POSIX.1\-2001.  関数 \fBtdestroy\fP()  は GNU の拡張である。
+.SH 注意
+\fBtwalk\fP()  は根へのポインタを引数にとるが、 ほかの関数は根へのポインタへのポインタである。
+.PP
+\fBtdelete\fP()  は、削除したノードの使用していたメモリを解放するが、 ノードに対応するデータのメモリは、ユーザが解放しなければならない。
+.PP
+下のプログラム例は、ユーザ関数が "endorder" か "leaf" を引数にして 呼び出されて以降は、 \fBtwalk\fP()
+がそのノードを参照しないことを前提としている。 これは GNU ライブラリの実装では機能するが、System V のマニュアルには存在しない。
+.SH 例
+以下のプログラムは 12 個の乱数を二分木に挿入した後、 挿入した数を順番に出力する (挿入の際、重複した乱数は 1 つにまとめられる)。
+.sp
+.nf
+#define _GNU_SOURCE     /* Expose declaration of tdestroy() */
+#include <search.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+
+void *root = NULL;
+
+void *
+xmalloc(unsigned n)
+{
+    void *p;
+    p = malloc(n);
+    if (p)
+        return p;
+    fprintf(stderr, "insufficient memory\en");
+    exit(EXIT_FAILURE);
+}
+
+int
+compare(const void *pa, const void *pb)
+{
+    if (*(int *) pa < *(int *) pb)
+        return \-1;
+    if (*(int *) pa > *(int *) pb)
+        return 1;
+    return 0;
+}
+
+void
+action(const void *nodep, const VISIT which, const int depth)
+{
+    int *datap;
+
+    switch (which) {
+    case preorder:
+        break;
+    case postorder:
+        datap = *(int **) nodep;
+        printf("%6d\en", *datap);
+        break;
+    case endorder:
+        break;
+    case leaf:
+        datap = *(int **) nodep;
+        printf("%6d\en", *datap);
+        break;
+    }
+}
+
+int
+main(void)
+{
+    int i, *ptr;
+    void *val;
+
+    srand(time(NULL));
+    for (i = 0; i < 12; i++) {
+        ptr = xmalloc(sizeof(int));
+        *ptr = rand() & 0xff;
+        val = tsearch((void *) ptr, &root, compare);
+        if (val == NULL)
+            exit(EXIT_FAILURE);
+        else if ((*(int **) val) != ptr)
+            free(ptr);
+    }
+    twalk(root, action);
+    tdestroy(root, free);
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBbsearch\fP(3), \fBhsearch\fP(3), \fBlsearch\fP(3)  \fBqsort\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index d631c5f..d344d3e 100644 (file)
@@ -63,6 +63,6 @@ ttyname, ttyname_r \- 端末名を返す
 .SH 関連項目
 \fBfstat\fP(2), \fBctermid\fP(3), \fBisatty\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9a35407..eb5d864 100644 (file)
@@ -100,6 +100,6 @@ Minix には \fIfttyslot\fP(\fIfd\fP)  もある。
 .SH 関連項目
 \fBgetttyent\fP(3), \fBttyname\fP(3), \fButmp\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c9eb545..d675479 100644 (file)
@@ -171,6 +171,6 @@ SVr4, POSIX.1\-2001, 4.3BSD.
 \fBdate\fP(1), \fBgettimeofday\fP(2), \fBtime\fP(2), \fBctime\fP(3), \fBgetenv\fP(3),
 \fBtzfile\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 38d2d4f..9d5f9d8 100644 (file)
@@ -26,7 +26,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH UALARM 3 2010\-09\-20 "" "Linux Programmer's Manual"
+.TH UALARM 3 2013\-04\-18 "" "Linux Programmer's Manual"
 .SH 名前
 ualarm \- 指定したマイクロ秒後にシグナルを送る予定をする
 .SH 書式
@@ -79,6 +79,11 @@ SIGALRM シグナルが送られる。
 POSIX.1\-2008 では、 \fBualarm\fP()  の仕様が削除されている。 4.3BSD, SUSv2, POSIX
 はエラーを定義していない。
 .SH 注意
+.\" This case is not documented in HP-US, Solar, FreeBSD, NetBSD, or OpenBSD!
+POSIX.1\-2001 does not specify what happens if the \fIusecs\fP argument is 0.
+On Linux (and probably most other systems), the effect is to cancel any
+pending alarm.
+
 \fIuseconds_t\fP 型は [0,1000000] の範囲の整数を保持できる符号なし整数型である。 もともとの BSD での実装や、バージョン
 2.1 より前の glibc では、 \fBualarm\fP()  の引き数の型は \fIunsigned int\fP であった。 プログラム中に明示的に
 \fIuseconds_t\fP と書かない方が、移植性が高くなる。
@@ -94,6 +99,6 @@ POSIX.1\-2008 では、 \fBualarm\fP()  の仕様が削除されている。 4.3
 \fBalarm\fP(2), \fBgetitimer\fP(2), \fBnanosleep\fP(2), \fBselect\fP(2),
 \fBsetitimer\fP(2), \fBusleep\fP(3), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e013b75..aab846e 100644 (file)
@@ -65,6 +65,6 @@ SVr4, POSIX.1\-2001.  POSIX.1\-2008 は \fBulimit\fP()  を廃止予定として
 .SH 関連項目
 \fBbash\fP(1), \fBgetrlimit\fP(2), \fBsetrlimit\fP(2), \fBsysconf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ec60b72..9082c3d 100644 (file)
@@ -89,6 +89,6 @@ none \- ドキュメントがないライブラリ関数
 \fByp_master\fP(3), \fByp_match\fP(3), \fByp_next\fP(3), \fByp_order\fP(3),
 \fBypprot_err\fP(3), \fByp_unbind\fP(3), \fByp_update\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1a8f235..c49daf0 100644 (file)
@@ -51,6 +51,6 @@ C99.
 .SH 関連項目
 \fBfgetwc\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 92b7b58..65c2b17 100644 (file)
@@ -117,6 +117,6 @@ _GNU_SOURCE
 .SH 関連項目
 \fBflockfile\fP(3), \fBstdio\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f04a7fc..8688b80 100644 (file)
@@ -38,6 +38,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBgrantpt\fP(3), \fBposix_openpt\fP(3), \fBptsname\fP(3), \fBpts\fP(4), \fBpty\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 071739f..79c5839 100644 (file)
@@ -71,6 +71,6 @@ glibc2 の下ではどちらの関数も利用可能である。 libc5 の下で
 .SH 関連項目
 \fBgetutxent\fP(3), \fBwtmp\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7f601ac..3d26aa3 100644 (file)
@@ -108,6 +108,6 @@ glibc 2.12 より前: _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&
 \fBalarm\fP(2), \fBgetitimer\fP(2), \fBnanosleep\fP(2), \fBselect\fP(2),
 \fBsetitimer\fP(2), \fBsleep\fP(3), \fBualarm\fP(3), \fBtime\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 39c7579..794aa00 100644 (file)
@@ -58,6 +58,6 @@ POSIX.1\-2008.
 .SH 関連項目
 \fBstrcpy\fP(3), \fBwcscpy\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0b5d857..1de3e96 100644 (file)
@@ -61,6 +61,6 @@ POSIX.1\-2008.
 .SH 関連項目
 \fBstpncpy\fP(3), \fBwcsncpy\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0985bfd..da58a05 100644 (file)
@@ -59,6 +59,6 @@ C99.
 .SH 関連項目
 \fBwcsrtombs\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index d024ecc..fc51a12 100644 (file)
@@ -61,6 +61,6 @@ POSIX.1\-2008.  この関数は POSIX.1\-2001 では規定されていないが
 .SH 関連項目
 \fBstrcasecmp\fP(3), \fBwcscmp\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5e998e7..d24feb6 100644 (file)
@@ -42,6 +42,6 @@ C99.
 .SH 関連項目
 \fBstrcat\fP(3), \fBwcpcpy\fP(3), \fBwcscpy\fP(3), \fBwcsncat\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 833b574..f924063 100644 (file)
@@ -38,6 +38,6 @@ C99.
 .SH 関連項目
 \fBstrchr\fP(3), \fBwcspbrk\fP(3), \fBwcsrchr\fP(3), \fBwcsstr\fP(3), \fBwmemchr\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 578ea46..b8ded42 100644 (file)
@@ -39,6 +39,6 @@ C99.
 .SH 関連項目
 \fBstrcmp\fP(3), \fBwcscasecmp\fP(3), \fBwmemcmp\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 19a9502..81813f1 100644 (file)
@@ -41,6 +41,6 @@ C99.
 .SH 関連項目
 \fBstrcpy\fP(3), \fBwcpcpy\fP(3), \fBwcscat\fP(3), \fBwcsdup\fP(3), \fBwmemcpy\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c391c4a..dc9999d 100644 (file)
@@ -41,6 +41,6 @@ C99.
 .SH 関連項目
 \fBstrcspn\fP(3), \fBwcspbrk\fP(3), \fBwcsspn\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4907e07..9ba685f 100644 (file)
@@ -62,6 +62,6 @@ POSIX.1\-2008.  この関数は POSIX.1\-2001 では規定されていないが
 .SH 関連項目
 \fBstrdup\fP(3), \fBwcscpy\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1ecf750..c63230e 100644 (file)
@@ -38,6 +38,6 @@ C99.
 .SH 関連項目
 \fBstrlen\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index eb391b6..429a8c7 100644 (file)
@@ -62,6 +62,6 @@ POSIX.1\-2008.  この関数は POSIX.1\-2001 では規定されていないが
 .SH 関連項目
 \fBstrncasecmp\fP(3), \fBwcsncmp\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8471479..c87ae97 100644 (file)
@@ -42,6 +42,6 @@ C99.
 .SH 関連項目
 \fBstrncat\fP(3), \fBwcscat\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 482132e..27ab2c5 100644 (file)
@@ -41,6 +41,6 @@ C99.
 .SH 関連項目
 \fBstrncmp\fP(3), \fBwcsncasecmp\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b8f92a7..8c4e625 100644 (file)
@@ -44,6 +44,6 @@ C99.
 .SH 関連項目
 \fBstrncpy\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8c9dc03..2b00fc0 100644 (file)
@@ -61,6 +61,6 @@ POSIX.1\-2008.
 .SH 関連項目
 \fBstrnlen\fP(3), \fBwcslen\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 15c42a7..f26653e 100644 (file)
@@ -70,7 +70,7 @@ _GNU_SOURCE
 \fIdest\fP が NULL ならば \fIlen\fP は無視されて前述のように変換が行わ
 れるが、変換されたバイトデータはメモリに書き出されない点と、出力先の長 さの制限がない点が異なる。
 .PP
-上記のいずれの場合も、\fIps\fP が NULL ポインタならば、wcsnrtombs 関数
+上記のいずれの場合も、\fIps\fP が NULL ポインタならば、\fBwcsnrtombs\fP() 関数
 だけが知っている静的な匿名の状態がシフト状態の代わりに用いられる。
 .PP
 プログラマは少なくとも \fIlen\fP バイトの領域を \fIdest\fP に確保しな ければならない。
@@ -86,6 +86,6 @@ POSIX.1\-2008.
 .SH 関連項目
 \fBiconv\fP(3), \fBwcsrtombs\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f132d7b..4c67820 100644 (file)
@@ -38,6 +38,6 @@ C99.
 .SH 関連項目
 \fBstrpbrk\fP(3), \fBwcschr\fP(3), \fBwcscspn\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 591d157..a959f1b 100644 (file)
@@ -38,6 +38,6 @@ C99.
 .SH 関連項目
 \fBstrrchr\fP(3), \fBwcschr\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0ea0129..8157650 100644 (file)
@@ -48,7 +48,7 @@ wcsrtombs \- ワイド文字文字列をマルチバイト文字列に変換す
 \fIdest\fP が NULL ならば \fIlen\fP は無視されて前述のように変換が行わ
 れるが、変換されたバイトデータはメモリに書き出されない点と、出力先の長 さの制限がない点が異なる。
 .PP
-上記のいずれの場合も、\fIps\fP が NULL ポインタならば、wcsnrtombs 関数
+上記のいずれの場合も、\fIps\fP が NULL ポインタならば、\fBwcsrtombs\fP() 関数
 だけが知っている静的な匿名の状態がシフト状態の代わりに用いられる。
 .PP
 プログラマは少なくとも \fIlen\fP バイトの領域を \fIdest\fP に確保しな ければならない。
@@ -64,6 +64,6 @@ C99.
 .SH 関連項目
 \fBiconv\fP(3), \fBwcsnrtombs\fP(3), \fBwcstombs\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 078173e..3fe2956 100644 (file)
@@ -41,6 +41,6 @@ C99.
 .SH 関連項目
 \fBstrspn\fP(3), \fBwcscspn\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index eb412b0..af631c0 100644 (file)
@@ -41,6 +41,6 @@ C99.
 .SH 関連項目
 \fBstrstr\fP(3), \fBwcschr\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2244b95..9e395bb 100644 (file)
@@ -49,6 +49,6 @@ C99.
 \fBimaxabs\fP(3), \fBimaxdiv\fP(3), \fBstrtoimax\fP(3), \fBstrtoumax\fP(3),
 \fBwcstol\fP(3), \fBwcstoul\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4ba9ec7..31fdb46 100644 (file)
@@ -61,6 +61,6 @@ for (token = wcstok(wcs, " \et\en", &state);
 .SH 関連項目
 \fBstrtok\fP(3), \fBwcschr\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f8c233a..f201cce 100644 (file)
@@ -59,6 +59,6 @@ C99.
 .SH 関連項目
 \fBmbstowcs\fP(3), \fBwcsrtombs\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5782450..2d00f67 100644 (file)
@@ -40,6 +40,6 @@ POSIX.1\-2001.
 .SH 関連項目
 \fBiswprint\fP(3), \fBwcwidth\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index fd8cb86..a6a39e2 100644 (file)
@@ -45,6 +45,6 @@ C99.
 .SH 関連項目
 \fBbtowc\fP(3), \fBwcrtomb\fP(3), \fBwctomb\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1192e00..115fa22 100644 (file)
@@ -53,6 +53,6 @@ C99.
 .SH 関連項目
 \fBMB_CUR_MAX\fP(3), \fBwcrtomb\fP(3), \fBwcstombs\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6cb2c39..c235dd5 100644 (file)
@@ -47,6 +47,6 @@ C99.
 .SH 関連項目
 \fBtowctrans\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 50a5c78..ad22f8c 100644 (file)
@@ -58,6 +58,6 @@ C99.
 .SH 関連項目
 \fBiswctype\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c8b019f..7eab330 100644 (file)
@@ -45,6 +45,6 @@ glibc 2.2.5 以前では以下のプロトタイプ宣言が使用されてい
 .SH 関連項目
 \fBiswprint\fP(3), \fBwcswidth\fP(3), \fBfeature_test_macros\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 809a150..0b829a3 100644 (file)
@@ -38,6 +38,6 @@ C99.
 .SH 関連項目
 \fBmemchr\fP(3), \fBwcschr\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5f5ae65..d78267e 100644 (file)
@@ -39,6 +39,6 @@ C99.
 .SH 関連項目
 \fBmemcmp\fP(3), \fBwcscmp\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1c004fc..b97d041 100644 (file)
@@ -41,6 +41,6 @@ C99.
 .SH 関連項目
 \fBmemcpy\fP(3), \fBwcscpy\fP(3), \fBwmemmove\fP(3), \fBwmempcpy\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1f4eb98..3cd56f8 100644 (file)
@@ -39,6 +39,6 @@ C99.
 .SH 関連項目
 \fBmemmove\fP(3), \fBwmemcpy\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9c8fa62..f322c13 100644 (file)
@@ -37,6 +37,6 @@ C99.
 .SH 関連項目
 \fBmemset\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 667a546..f8af572 100644 (file)
@@ -138,6 +138,6 @@ main(int argc, char **argv)
 .SH 関連項目
 \fBfnmatch\fP(3), \fBglob\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 956306e..4de11b6 100644 (file)
@@ -124,6 +124,6 @@ C99.
 .\" .BR wscanf (3)
 \fBfprintf\fP(3), \fBfputwc\fP(3), \fBfwide\fP(3), \fBprintf\fP(3), \fBsnprintf\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 12f9bf5..727926d 100644 (file)
@@ -47,6 +47,6 @@ xencrypt, xdecrypt, passwd2des \- RFS パスワード暗号化
 .SH 関連項目
 \fBcbc_crypt\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a594e74..16fbced 100644 (file)
@@ -323,6 +323,6 @@ eXternal Data Representation: Sun Technical Notes
 Inc., USC\-ISI.
 .RE
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8f015a9..32fb80c 100644 (file)
@@ -155,6 +155,6 @@ glibc バージョン 2.3.2 以前では、 領域エラーが発生した場合
 .SH 関連項目
 \fBj0\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7c45646..07773ba 100644 (file)
@@ -57,6 +57,6 @@ Alt キーを示す]。 (b) 現在割り当てられているコンソールを
 \fBcharsets\fP(7), \fBagetty\fP(8), \fBinit\fP(8), \fBmapscrn\fP(8), \fBmingetty\fP(8),
 \fBresizecons\fP(8), \fBsetfont\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1409179..cd11820 100644 (file)
@@ -512,6 +512,6 @@ Linux "プライベートモード" シーケンスは ECMA\-48 のプライベ
 .SH 関連項目
 \fBconsole\fP(4), \fBconsole_ioctl\fP(4), \fBcharsets\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9d0e684..adfb1c8 100644 (file)
@@ -469,6 +469,6 @@ POSIX 機能を使いなさい。
 
 \fI/usr/include/linux/kd.h\fP, \fI/usr/include/linux/vt.h\fP
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ab7ce2e..7b13a0c 100644 (file)
@@ -92,6 +92,6 @@ dsp56k_binary\fP へのポインタでなければならない。 構造体の
 DSP56000/DSP56001 Digital Signal
 Processor User's Manual
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6546c0b..c4f1178 100644 (file)
@@ -186,6 +186,6 @@ Apple II や Macintosh コンピュータで使用されている、 GCR (group
 \fBchown\fP(1), \fBfloppycontrol\fP(1), \fBgetfdprm\fP(1), \fBmknod\fP(1),
 \fBsuperformat\fP(1), \fBmount\fP(8), \fBsetfdprm\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index adcfc9f..c637035 100644 (file)
@@ -52,6 +52,6 @@ full \- いつも full であるデバイス
 .SH 関連項目
 \fBmknod\fP(1), \fBnull\fP(4), \fBzero\fP(4)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 278f2a9..4e33f96 100644 (file)
@@ -83,6 +83,6 @@ chown root:disk /dev/hd*
 .SH 関連項目
 \fBchown\fP(1), \fBmknod\fP(1), \fBsd\fP(4)  \fBmount\fP(8),
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 98f8f8f..d5ca6a4 100644 (file)
@@ -256,6 +256,6 @@ loader)  によって初期化 (例えば、ロード) される RAM ディス
 
 Linux カーネルソースの \fIinitrd.txt\fP、 LILO のドキュメント、LOADLIN のドキュメント、SYSLINUX のドキュメント
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index bc9c744..7a0a76a 100644 (file)
@@ -41,6 +41,6 @@ intro \- スペシャルファイルに関する序文
 .SH 関連項目
 \fBstandards\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6720d65..06e81fd 100644 (file)
@@ -93,6 +93,6 @@ LP_PERRORP    エラー信号、ローがアクティブ
 .SH 関連項目
 \fBchmod\fP(1), \fBchown\fP(1), \fBmknod\fP(1), \fBlpcntl\fP(8), \fBtunelp\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ce1187b..b280dda 100644 (file)
@@ -77,6 +77,6 @@ chown root:mem /dev/port
 .SH 関連項目
 \fBchown\fP(1), \fBmknod\fP(1), \fBioperm\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 57fdd0b..98ce864 100644 (file)
@@ -126,6 +126,6 @@ byte        d7      d6      d5      d4      d3      d2      d1      d0
 .SH 関連項目
 \fBttyS\fP(4), \fBgpm\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index afed0ef..8aa6923 100644 (file)
@@ -55,6 +55,6 @@ chown root:root /dev/null /dev/zero
 .SH 関連項目
 \fBchown\fP(1), \fBmknod\fP(1), \fBfull\fP(4)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 53228d0..ef96d41 100644 (file)
@@ -49,6 +49,6 @@ ptmx, pts \- 擬似端末のマスタとスレーブ
 .SH 関連項目
 \fBgetpt\fP(3), \fBgrantpt\fP(3), \fBptsname\fP(3), \fBunlockpt\fP(3), \fBpty\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a2dc583..1e07d83 100644 (file)
@@ -47,6 +47,6 @@ chown root:disk /dev/ram
 .SH 関連項目
 \fBchown\fP(1), \fBmknod\fP(1), \fBmount\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man4/random.4 b/manual/LDP_man-pages/draft/man4/random.4
new file mode 100644 (file)
index 0000000..d650c52
--- /dev/null
@@ -0,0 +1,202 @@
+.\" Copyright (c) 1997 John S. Kallal (kallal@voicenet.com)
+.\"
+.\" %%%LICENSE_START(GPLv2+_DOC_ONEPARA)
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\" %%%LICENSE_END
+.\"
+.\" Some changes by tytso and aeb.
+.\"
+.\" 2004-12-16, John V. Belmonte/mtk, Updated init and quit scripts
+.\" 2004-04-08, AEB, Improved description of read from /dev/urandom
+.\" 2008-06-20, George Spelvin <linux@horizon.com>,
+.\"             Matt Mackall <mpm@selenic.com>
+.\"     Add a Usage subsection that recommends most users to use
+.\"     /dev/urandom, and emphasizes parsimonious usage of /dev/random.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH RANDOM 4 2013\-03\-15 Linux "Linux Programmer's Manual"
+.SH 名前
+random, urandom \- カーネル乱数ソースデバイス
+.SH 書式
+#include <linux/random.h>
+.sp
+\fBint ioctl(\fP\fIfd\fP\fB, RND\fP\fIrequest\fP\fB, \fP\fIparam\fP\fB);\fP
+.SH 説明
+(Linux 1.3.30 から提供されている) \fI/dev/random\fP 、 \fI/dev/urandom\fP キャラクタスペシャルファイルは
+カーネル乱数ジェネレータへのインタフェースを提供する。 \fI/dev/random\fP ファイルはメジャーデバイス番号 1 マイナーデバイス番号 8
+である。 \fI/dev/urandom\fP はメジャーデバイス番号 1 マイナーデバイス番号 9 である。
+.LP
+乱数ジェネレータはデバイスドライバやその他の源からの環境ノイズを エントロピー・プールへ集める。
+また、ジェネレータはエントロピー・プール内のノイズのビット数の推定値を 保持する。 このエントロピー・プールから乱数が生成される。
+.LP
+読み込みが行われると、 \fI/dev/random\fP デバイスはエントロピー・プールのノイズビットの数の推定値のうち、 ランダムバイトのみを返す。
+\fI/dev/random\fP はワンタイムパッド (one\-time pad) や鍵の生成のような
+非常に高い品質を持った無作為性が必要になる用途に向いているだろう。 エントロピー・プールが空の時は、\fI/dev/random\fP からの読み出しは、
+更なる環境ノイズが得られるまで、ブロックされる。
+.LP
+\fI/dev/urandom\fP デバイスから読み出しでは、 エントロピーがより高くなるのを待つためのブロックは行われない。
+その結果、もしエントロピー・プールに十分なエントロピーが存在しない場合、 返り値はこのドライバで使われているアルゴリズムに基づく暗号攻撃に対して、
+論理的には弱くなることになる。 この攻撃をどのように行うかという事については、現在研究論文などの
+形で入手できる資料はない、しかし、そのような攻撃は論理的に存在可能である。 もし、この事が心配なら、(\fI/dev/urandom\fP ではなく)
+\fI/dev/random\fP を利用すればいい。
+.LP
+Writing to \fI/dev/random\fP or \fI/dev/urandom\fP will update the entropy pool
+with the data written, but this will not result in a higher entropy count.
+This means that it will impact the contents read from both files, but it
+will not make reads from \fI/dev/random\fP faster.
+.SS 使い方
+\fI/dev/random\fP と \fI/dev/urandom\fP のどちらを使うべきか迷った場合、たいていは \fI/dev/urandom\fP
+の方を使いたいと思っているはずだろう。 一般に、長期に渡って使われる GPG/SSL/SSH のキー以外の全てのものに \fI/dev/urandom\fP
+を使用すべきである。
+
+下記で推奨しているように再起動の前後で乱数種ファイルが保存される場合 (全ての主な Linux のディストリビューションは少なくとも 2000 年以降は
+乱数種を保存するようになっている)、起動シーケンスにおいて乱数種が 再ロードされた直後から、その出力はローカルのルートアクセスができない
+攻撃者に対して暗号的に安全なものとなり、ネットワーク暗号化のセッションキー として使うには完全に最適なものとなる。 \fI/dev/random\fP
+からの読み出しは停止 (block) する可能性があるので、ユーザは普通 このファイルを非停止 (nonblocking) モードで開こうとし
+(もしくはタイムアウトを指定して読み出しを実行し)、希望するレベルの エントロピーはすぐには利用できない場合には、何らかの通知を行うことだろう。
+
+カーネルの乱数ジェネレータは、暗号疑似乱数ジェネレータ (Cryptographic pseudo\-random number generator;
+CPRNG) の種として使用できる 高品質な乱数種の材料を少し生成するために設計されている。 これは速度ではなく安全性を重視して設計されており、
+ランダムなデータを大量に生成するのには全くもって適していない。 ユーザは \fI/dev/urandom\fP (と \fI/dev/random\fP)
+から読み出す乱数種の材料の量をできるだけ節約すべきである。 このデバイスから不必要に大量のデータを読み出すと、このデバイスを使う
+他のユーザにマイナスの影響を与えてしまうだろう。
+
+暗号鍵を生成するのに必要な乱数種の材料の量は、鍵の実効サイズと同じである。 例えば、3072 ビットの RSA および Diffie\-Hellman
+の秘密鍵の実効サイズは 128 ビット (この秘密鍵を破るには 2^128 回の操作が必要ということ) であり、 そのため鍵生成器が
+\fI/dev/random\fP から読み出す必要がある乱数種の材料の量は 128 ビット (16 バイト) だけである。
+
+CPRNG アルゴリズムの欠陥に対する保護として、この最小値に対していくらかの 安全上のマージンを取るのはもっともだが、現在利用可能な暗号プリミティブで
+256 ビットより多くの安全な乱数を必要とするようなものはない。 起動する度に、もしくは乱数種を変更する妥当な間隔 (1 分より短くなることはない)
+の度に、カーネルの乱数プールから 256 ビット (32 バイト) よりたくさん読み出す
+ような場合には、そのプログラムの暗号処理がうまく実装されて「いない」可能性が あると考えるべきであろう。
+.SS Configuration
+システムにあらかじめ作成された \fI/dev/random\fP と \fI/dev/urandom\fP が存在しないなら、次のようなコマンドで作成できる。
+
+.nf
+    mknod \-m 644 /dev/random c 1 8
+    mknod \-m 644 /dev/urandom c 1 9
+    chown root:root /dev/random /dev/urandom
+.fi
+
+オペレータの操作なしに Linux システムが起動した直後は、 エントロピー・プールは意外性の乏しい均一な状態にあるだろう。
+これにより、エントロピー・プールの実際のノイズ量は評価値より少なくなる。 この効果を打ち消すために、シャットダウンから (次の) 起動時まで持ち越した
+エントロピー・プールの情報が助けになる。 エントロピー・プールを持ち越すためには、 Linux システムの起動時に実行される適切なスクリプトに、
+以下の行を追加すればよい:
+
+.nf
+    echo "Initializing random number generator..."
+    random_seed=/var/run/random\-seed
+    # 乱数種を今回のスタートアップから次回のスタートアップまで持ち越す。
+    # ロードを行い、その後、全てのエントロピー・プールを保存する。
+    if [ \-f $random_seed ]; then
+        cat $random_seed >/dev/urandom
+    else
+        touch $random_seed
+    fi
+    chmod 600 $random_seed
+    poolfile=/proc/sys/kernel/random/poolsize
+    [ \-r $poolfile ] && bytes=\`cat $poolfile\` || bytes=512
+    dd if=/dev/urandom of=$random_seed count=1 bs=$bytes
+.fi
+
+また、Linux システムのシャットダウン時に実行される適切なスクリプトに、 以下の行を追加すればよい:
+
+.nf
+    # 乱数種を今回のシャットダウンから次回のスタートアップまで持ち越す。
+    # 全てのエントロピー・プールを保存する。
+    echo "Saving random seed..."
+    random_seed=/var/run/random\-seed
+    touch $random_seed
+    chmod 600 $random_seed
+    poolfile=/proc/sys/kernel/random/poolsize
+    [ \-r $poolfile ] && bytes=\`cat $poolfile\` || bytes=512
+    dd if=/dev/urandom of=$random_seed count=1 bs=$bytes
+.fi
+.SS "/proc インタフェース"
+ディレクトリ \fI/proc/sys/kernel/random\fP にあるファイル (2.3.16 から存在する) は、 \fI/dev/random\fP
+デバイスへのその他のインタフェースを提供する。
+.LP
+読み込み専用のファイル \fIentropy_avail\fP は使用可能なエントロピーを表す。 通常、これは 4096 (ビット)
+になり、エントロピー・プールが満杯の状態である。
+.LP
+ファイル \fIpoolsize\fP はエントロピー・プールのサイズを表す。 このファイルの意味はカーネルバージョンにより異なる。
+.RS
+.TP  12
+Linux 2.4:
+このファイルはエントロピー・プールのサイズを「バイト」単位で規定する。 通常、このファイルの値は 512 になるが、書き込み可能であり、
+アルゴリズムで利用可能な任意の値に変更できる。 選択可能な値は 32, 64, 128, 256, 512, 1024, 2048 である。
+.TP 
+Linux 2.6:
+このファイルは読み出し専用であり、 エントロピー・プールのサイズを「ビット」単位で規定する。 値は 4096 である。
+.RE
+.LP
+ファイル \fIread_wakeup_threshold\fP は \fI/dev/random\fP
+からのエントロピーを待って休止しているプロセスを起こすのに必要な エントロピーのビット数を保持している。 デフォルトは 64 である。 ファイル
+\fIwrite_wakeup_threshold\fP はエントロピーのビット数を保持しており、この値以下になったら \fI/dev/random\fP
+への書き込みアクセスのために \fBselect\fP(2)  または \fBpoll\fP(2)  を実行するプロセスを起こす。
+この値はファイルに書き込みを行うことによって変更できる。
+.LP
+読み込み専用のファイル \fIuuid\fP と \fIboot_id\fP は 6fd5a44b\-35f4\-4ad4\-a9b9\-6b9be13e1fe9 のような
+ランダムな文字列を保持している。 前者は読み込みの度に新たに生成され、 後者は 1 度だけ生成される。
+.SS "ioctl(2) インタフェース"
+The following \fBioctl\fP(2)  requests are defined on file descriptors
+connected to either \fI/dev/random\fP or \fI/dev/urandom\fP.  All requests
+performed will interact with the input entropy pool impacting both
+\fI/dev/random\fP and \fI/dev/urandom\fP.  The \fBCAP_SYS_ADMIN\fP capability is
+required for all requests except \fBRNDGETENTCNT\fP.
+.TP 
+\fBRNDGETENTCNT\fP
+Retrieve the entropy count of the input pool, the contents will be the same
+as the \fIentropy_avail\fP file under proc.  The result will be stored in the
+int pointed to by the argument.
+.TP 
+\fBRNDADDTOENTCNT\fP
+Increment or decrement the entropy count of the input pool by the value
+pointed to by the argument.
+.TP 
+\fBRNDGETPOOL\fP
+Removed in Linux 2.6.9.
+.TP 
+\fBRNDADDENTROPY\fP
+Add some additional entropy to the input pool, incrementing the entropy
+count.  This differs from writing to \fI/dev/random\fP or \fI/dev/urandom\fP,
+which only adds some data but does not increment the entropy count.  The
+following structure is used:
+.IP
+.nf
+    struct rand_pool_info {
+        int    entropy_count;
+        int    buf_size;
+        __u32  buf[0];
+    };
+.fi
+.IP
+Here \fIentropy_count\fP is the value added to (or subtracted from) the entropy
+count, and \fIbuf\fP is the buffer of size \fIbuf_size\fP which gets added to the
+entropy pool.
+.TP 
+\fBRNDZAPENTCNT\fP, \fBRNDCLEARPOOL\fP
+Zero the entropy count of all pools and add some system data (such as wall
+clock) to the pools.
+.SH ファイル
+/dev/random
+.br
+.\" .SH AUTHOR
+.\" The kernel's random number generator was written by
+.\" Theodore Ts'o (tytso@athena.mit.edu).
+/dev/urandom
+.SH 関連項目
+\fBmknod\fP(1)
+.br
+RFC\ 1750, "Randomness Recommendations for Security"
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 75f441b..2e1b6fa 100644 (file)
@@ -194,6 +194,6 @@ RTC の中にはアラームフィールドに 「ワイルドカード」の値
 
 Linux カーネルソース内の \fIDocumentation/rtc.txt\fP
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 37d8081..1b601e8 100644 (file)
@@ -98,6 +98,6 @@ SCSI の \fBioctl\fP(2) 操作も同様にサポートされる。 \fBioctl\fP(2
 .\".BR scsi (4)
 /dev/sd[a\-h][0\-8]: 個々のブロックパーティション
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 63cfe6a..bb14084 100644 (file)
@@ -18,7 +18,7 @@
 .\" GNU General Public License for more details.
 .\"
 .\" You should have received a copy of the GNU General Public
-.\" License along with this manual; if not, see
+.\" License along with this manual;if not, see
 .\" <http://www.gnu.org/licenses/>.
 .\" %%%LICENSE_END
 .\"
@@ -312,6 +312,6 @@ RLMT モード \fICheckLocalPort\fP と \fICheckLinkState\fP は、1
 .SH 関連項目
 \fBinsmod\fP(8), \fBifconfig\fP(8), \fBmodprobe\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 87486b6..b373a07 100644 (file)
@@ -560,6 +560,6 @@ SENSE コードが自動的にテキストに変換されて、 いくつかの
 Linux カーネルソースの \fIdrivers/scsi/README.st\fP や \fIDocumentation/scsi/st.txt\fP
 (カーネル 2.6 以降) の各ファイルには、 ドライバに関するより新しい情報や、 その設定可能な範囲に関する内容が含まれている。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f0a7f1e..5a275b6 100644 (file)
@@ -55,6 +55,6 @@ root.tty となっている。 プロセスの制御端末が存在する場合
 \fBchown\fP(1), \fBmknod\fP(1), \fBioctl\fP(2), \fBtermios\fP(3), \fBconsole\fP(4),
 \fBtty_ioctl\fP(4), \fBttyS\fP(4), \fBagetty\fP(8), \fBmingetty\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index cf78695..c06e2e5 100644 (file)
@@ -53,6 +53,6 @@ chown root:tty /dev/ttyS[0\-3]
 \fBchown\fP(1), \fBmknod\fP(1), \fBtty\fP(4), \fBagetty\fP(8), \fBmingetty\fP(8),
 \fBsetserial\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c0bb89f..106055c 100644 (file)
@@ -2,7 +2,7 @@
 .\" and Andries Brouwer <aeb@cwi.nl>.
 .\"
 .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
-.\" Distributed under GPL.
+.\" Distributed under GPL
 .\" %%%LICENSE_END
 .\"
 .\"*******************************************************************
@@ -326,6 +326,6 @@ main(void)
 .\" TIOCGSERIAL, TIOCSSERIAL (see above)
 \fBioctl\fP(2), \fBtermios\fP(3), \fBconsole_ioctl\fP(4), \fBpty\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 581f641..afe6bd4 100644 (file)
@@ -133,6 +133,6 @@ main(void)
 .SH 関連項目
 \fBconsole\fP(4), \fBtty\fP(4), \fBttyS\fP(4), \fBgpm\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index db6c0d6..6e1abf7 100644 (file)
@@ -87,6 +87,6 @@ wavelan カードを検出する時にどこのベースアドレスをサーチ
 \fBwavelan_cs\fP(4), \fBifconfig\fP(8), \fBinsmod\fP(8), \fBiwconfig\fP(8),
 \fBiwpriv\fP(8), \fBiwspy\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f68e47f..de1fa67 100644 (file)
@@ -141,6 +141,6 @@ struct acct_v3 {
 .SH 関連項目
 \fBlastcomm\fP(1), \fBacct\fP(2), \fBaccton\fP(8), \fBsa\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ae31acc..b528516 100644 (file)
@@ -93,6 +93,6 @@ POSIX.2.
 \fBlocale\fP(1), \fBlocaledef\fP(1), \fBlocaleconv\fP(3), \fBsetlocale\fP(3),
 \fBlocale\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man5/core.5 b/manual/LDP_man-pages/draft/man5/core.5
new file mode 100644 (file)
index 0000000..8986c68
--- /dev/null
@@ -0,0 +1,304 @@
+.\" Copyright (c) 2006, 2008 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH CORE 5 2013\-02\-25 Linux "Linux Programmer's Manual"
+.SH 名前
+core \- コアダンプファイル
+.SH 説明
+ある種のシグナルを受けた場合のデフォルトのアクションは、 プロセスを終了し (terminate)、 \fIコアダンプファイル (core dump
+file)\fP を生成することである。コアダンプファイルは、ディスク上に生成される 終了時のプロセスのメモリイメージを内容とするファイルである。
+このイメージをデバッガ (例えば \fBgdb\fP(1))  に読み込んで、 プログラムが終了した時点のプログラムの状態を検査することができる。
+どのシグナルを受けたときにプロセスがコアダンプを生成するかのリストは \fBsignal\fP(7)  に書かれている。
+
+プロセスはソフト・リソース制限 \fBRLIMIT_CORE\fP を設定することで、「コアダンプ」シグナルを受信した際に生成される
+コアダンプファイルのサイズに上限を課すことができる。詳細は \fBgetrlimit\fP(2)  を参照。
+
+コアダンプファイルが生成されない状況がいくつかある:
+.IP * 3
+プロセスがコアファイルを書き込む許可を持たない場合 (デフォルトでは、コアファイルは \fIcore\fP
+という名前で、カレント・ワーキング・ディレクトリに生成される。 命名規則の詳細は下記を参照)。
+コアファイルを生成しようとしたディレクトリが書き込み可能でない場合、 もしくは同じ名前のファイルが存在し、そのファイルが書き込み可能でも
+通常のファイルでもない場合 (例えば、ディレクトリやシンボリックリンク)、 コアファイルの生成は失敗する。
+.IP *
+コアダンプに使おうとしたのと同じ名前の (書き込み可能な、通常の) ファイルが すでに存在し、そのファイルに対するハードリンクが 2個以上ある場合。
+.IP *
+コアダンプファイルを生成しようとしたファイルシステムがフルであるか、 inode が全て使用されているか、読み込み専用でマウントされている場合。
+または、そのユーザのディスク使用量がそのファイルシステムの クオータ (quota) に達している。
+.IP *
+コアダンプファイルを生成しようとしたディレクトリが存在しない場合。
+.IP *
+プロセス毎のリソース制限 \fBRLIMIT_CORE\fP (コアファイルのサイズ) か \fBRLIMIT_FSIZE\fP (ファイルサイズ) が 0
+に設定されている場合。 \fBgetrlimit\fP(2)  やシェルの \fIulimit\fP コマンドのドキュメント (\fBcsh\fP(1)  の
+\fIlimit\fP)  を参照。
+.IP *
+プロセスが実行したバイナリファイルの読み出し許可が有効になっていない場合。
+.IP *
+.\" FIXME . Perhaps relocate discussion of /proc/sys/fs/suid_dumpable
+.\" and PR_SET_DUMPABLE to this page?
+プロセスが実行している set\-user\-ID (set\-group\-ID) プログラムの所有者の ユーザ (グループ) が、プロセスの実 UID (実
+GID) と異なる場合 (但し、 \fBprctl\fP(2)  \fBPR_SET_DUMPABLE\fP 操作の説明と、 \fBproc\fP(5)  の
+\fI/proc/sys/fs/suid_dumpable\fP ファイルの説明も参照のこと)。
+.IP *
+.\" commit 046d662f481830e652ac34cd112249adde16452a
+(Since Linux 3.7)  The kernel was configured without the \fBCONFIG_COREDUMP\fP
+option.
+.PP
+In addition, a core dump may exclude part of the address space of the
+process if the \fBmadvise\fP(2)  \fBMADV_DONTDUMP\fP flag was employed.
+.SS コアダンプファイルの名前
+デフォルトでは、コアダンプファイルの名前は \fIcore\fP となるが、コアダンプファイルの名前を決めるのに使われるテンプレートを
+\fI/proc/sys/kernel/core_pattern\fP ファイルに定義することで、ファイル名を変更することができる
+(\fI/proc/sys/kernel/core_pattern\fP は Linux 2.6 および 2.4.21 以降で利用できる)。 テンプレートには
+% 指示子 (specifier) を入れることができる。 これはコアファイルが生成される際に、以下の値に置き換えられる。
+.PP
+.RS 4
+.PD 0
+.TP  4
+%%
+1 つの % 文字
+.TP 
+%p
+ダンプされたプロセスのプロセスID (PID)
+.TP 
+%u
+ダンプされたプロセスの実ユーザ ID (real UID)
+.TP 
+%g
+ダンプされたプロセスの実グループ ID (real GID)
+.TP 
+%s
+ダンプを引き起こしたシグナルの番号
+.TP 
+%t
+ダンプ時刻、紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC))  からの秒数。
+.TP 
+%h
+ホスト名 (\fBuname\fP(2) で返される \fInodename\fP と同じ)
+.TP 
+%e
+実行ファイル名 (パス名のプレフィックスは含まれない)
+.TP 
+%E
+実行ファイルのパス名。スラッシュ (\(aq/\(aq) は感嘆符 (\(aq!\(aq) に置き換えられる。
+.TP 
+%c
+クラッシュしたプロセスのコアファイルのサイズに関するソフトリソース上限 (Linux 2.6.24 以降)
+.PD
+.RE
+.PP
+テンプレートの末尾に 1 個だけ % がある場合、 その % はコアファイル名には含められない。また、上で列挙されて いない %
+と文字の組み合わせがあった場合も同様である。 テンプレートにおける他の文字は、 コアファイル名としてそのまま使われる。 テンプレートには
+\(aq/\(aq 文字を入れることができ、 ディレクトリ名の区切り文字と解釈される。 結果として生成されるコアファイル名の最大サイズは 128
+バイトである (2.6.19 より前のカーネルでは 64 バイト)。 このファイルのデフォルト値は "core" である。 以前のものとの互換性のため、
+\fI/proc/sys/kernel/core_pattern\fP に "%p" が含まれず、 かつ
+\fI/proc/sys/kernel/core_uses_pid\fP (下記参照) が 0 でない場合は、.PID がコアファイル名に追加される。
+
+バージョン 2.4 以降の Linux では コアダンプファイルの名前を制御する原始的な方法も提供されている。
+\fI/proc/sys/kernel/core_uses_pid\fP ファイルに値 0 が書かれている場合、コアダンプファイルは単純に \fIcore\fP
+という名前になる。このファイルに 0 以外の値が書かれている場合、 コアダンプファイルは \fIcore.PID\fP
+という形式の名前になり、ファイル名にプロセス ID が含まれる。
+
+.\" 9520628e8ceb69fa9a4aee6b57f22675d9e1b709
+Since Linux 3.6, if \fI/proc/sys/fs/suid_dumpable\fP is set to 2 ("suidsafe"),
+the pattern must be either an absolute pathname (starting with a leading
+\(aq/\(aq character) or a pipe, as defined below.
+.SS コアダンプのプログラムへのパイプ
+カーネル 2.6.19 以降では、Linux は \fI/proc/sys/kernel/core_pattern\fP
+ファイルの別の構文をサポートしている。 このファイルの最初の文字がパイプ記号 (\fB|\fP) であれば、
+その行の残りの部分は実行するプログラムとして解釈される。 コアダンプは、ディスク上のファイルに書き込まれるのではなく、
+プログラムの標準入力として渡される。 以下の点に注意すること。
+.IP * 3
+プログラムは絶対パス名 (もしくはルートディレクトリ \fI/\fP からの 相対パス名) で指定されなければならない。 また、'|'
+文字の直後から始めなければならない。
+.IP *
+プログラムを実行するために生成されるプロセスは、 ユーザ、グループとも \fIroot\fP として実行される。
+.IP *
+コマンドライン引き数をプログラムに与えることができ (Linux 2.6.24 以降)、 引き数はホワイトスペースで区切る (1行の最大長は 128
+バイトが上限である)。
+.IP *
+コマンドライン引き数には、上記のリストにある % 指示子を含めることができる。 例えば、ダンプされるプロセスの PID を渡すには、 引き数に
+\fI%p\fP を指定する。
+.SS どのマッピングをコアダンプに書き込むかを制御する
+カーネル 2.6.23 以降では、Linux 固有のファイル \fI/proc/PID/coredump_filter\fP を使って、対応するプロセス ID
+を持つプロセスに対してコアダンプが行われる 際に、どのメモリセグメントをコアダンプファイルに書き込むかを制御できる。
+
+このファイルの値はメモリマッピング種別 (\fBmmap\fP(2)  参照) のビットマスクである。
+マスク内のあるビットがセットされると、そのビットに対応する種別の メモリマッピングがダンプされる。セットされていないものはダンプされない。
+このファイルの各ビットは以下の意味を持つ。
+.PP
+.PD 0
+.RS 4
+.TP 
+bit 0
+無名のプライベートマッピング (anonymous private mappings) をダンプする。
+.TP 
+bit 1
+無名の共有マッピング (anonymous shared mappings) をダンプする。
+.TP 
+bit 2
+ファイルと関連付けられたプライベートマッピング (file\-backed private mappings) をダンプする。
+.TP 
+bit 3
+.\" file-backed shared mappings of course also update the underlying
+.\" mapped file.
+ファイルと関連付けられた共有マッピング (file\-backed shared mappings) をダンプする。
+.TP 
+bit 4 (Linux 2.6.24 以降)
+ELF ヘッダをダンプする。
+.TP 
+bit 5 (Linux 2.6.28 以降)
+プライベートなヒュージページ (private huge page) をダンプする。
+.TP 
+bit 6 (Linux 2.6.28 以降)
+共有されたヒュージページ (shared huge page) をダンプする。
+.RE
+.PD
+.PP
+デフォルトでは、ビット 0, 1, 4, 5 がセットされる。 (ビット 4 がセットされるのは、カーネルが設定オプション
+\fBCONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS\fP を有効にして作成された場合である)。 このファイルの値は 16
+進形式で表示される (したがって、デフォルト値は 33 と表示される)。
+
+\fIcoredump_filter\fP の値に関わらず、フレームバッファなどの memory\-mapped I/O に関する
+ページは決してダンプされず、仮想 DSO ページは常にダンプされる。
+
+\fBfork\fP(2)  で作成される子プロセスは親プロセスの \fIcoredump_filter\fP の値を継承する。 \fBexecve\fP(2)
+の前後で \fIcoredump_filter\fP の値は保持される。
+
+例のように、プログラムを実行する前に親シェルの \fIcoredump_filter\fP を設定しておくと役立つことがある。
+
+.in +4n
+.nf
+$\fB echo 0x7 > /proc/self/coredump_filter\fP
+$\fB ./some_program\fP
+.fi
+.in
+.PP
+このファイルが提供されるのは、カーネルが設定オプション \fBCONFIG_ELF_CORE\fP を有効にして作成された場合だけである。
+.SH 注意
+\fBgdb\fP(1)  の \fIgcore\fP コマンドを使用すると、実行中のプロセスのコアダンプを取得できる。
+
+.\" Always including the PID in the name of the core file made
+.\" sense for LinuxThreads, where each thread had a unique PID,
+.\" but doesn't seem to serve any purpose with NPTL, where all the
+.\" threads in a process share the same PID (as POSIX.1 requires).
+.\" Probably the behavior is maintained so that applications using
+.\" LinuxThreads continue appending the PID (the kernel has no easy
+.\" way of telling which threading implementation the user-space
+.\" application is using). -- mtk, April 2006
+マルチスレッドプロセス (より正確には、 \fBclone\fP(2)  の \fBCLONE_VM\fP で生成された別プロセスとメモリを共有しているプロセス)
+がコアダンプを生成する場合、 コアファイル名にプロセス ID が必ず付加される。 ただし、
+\fI/proc/sys/kernel/core_pattern\fP の %p 指定によりコアファイル名のどこか他の場所にプロセス ID が
+すでに含まれている場合は、プロセス ID が末尾に付加されない。 (この機能がまず役に立つのは LinuxThreads 実装を利用している場合である。
+LinuxThreads 実装では、プロセス内の個々のスレッドは異なるプロセス ID を持つ。)
+.SH 例
+以下のプログラムは \fI/proc/sys/kernel/core_pattern\fP ファイルのパイプ構文の使用例を示している。
+以下のシェルのセッションはこのプログラムの使用例を示すものである (コンパイルして \fIcore_pattern_pipe_test\fP
+という名前の実行ファイルを作成している)。
+.PP
+.in +4n
+.nf
+$\fB cc \-o core_pattern_pipe_test core_pattern_pipe_test.c\fP
+$\fB su\fP
+Password:
+#\fB echo "|$PWD/core_pattern_pipe_test %p UID=%u GID=%g sig=%s" > \e\fP
+\fB/proc/sys/kernel/core_pattern\fP
+#\fB exit\fP
+$\fB sleep 100\fP
+\fB^\e\fP                     # type control\-backslash
+Quit (core dumped)
+$\fB cat core.info\fP
+argc=5
+argc[0]=</home/mtk/core_pattern_pipe_test>
+argc[1]=<20575>
+argc[2]=<UID=1000>
+argc[3]=<GID=100>
+argc[4]=<sig=3>
+Total bytes in core dump: 282624
+.fi
+.in
+.SS プログラムのソース
+\&
+.nf
+/* core_pattern_pipe_test.c */
+
+#define _GNU_SOURCE
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define BUF_SIZE 1024
+
+int
+main(int argc, char *argv[])
+{
+    int tot, j;
+    ssize_t nread;
+    char buf[BUF_SIZE];
+    FILE *fp;
+    char cwd[PATH_MAX];
+
+    /* Change our current working directory to that of the
+       crashing process */
+
+    snprintf(cwd, PATH_MAX, "/proc/%s/cwd", argv[1]);
+    chdir(cwd);
+
+    /* Write output to file "core.info" in that directory */
+
+    fp = fopen("core.info", "w+");
+    if (fp == NULL)
+        exit(EXIT_FAILURE);
+
+    /* Display command\-line arguments given to core_pattern
+       pipe program */
+
+    fprintf(fp, "argc=%d\en", argc);
+    for (j = 0; j < argc; j++)
+        fprintf(fp, "argc[%d]=<%s>\en", j, argv[j]);
+
+    /* Count bytes in standard input (the core dump) */
+
+    tot = 0;
+    while ((nread = read(STDIN_FILENO, buf, BUF_SIZE)) > 0)
+        tot += nread;
+    fprintf(fp, "Total bytes in core dump: %d\en", tot);
+
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBbash\fP(1), \fBgdb\fP(1), \fBgetrlimit\fP(2), \fBmmap\fP(2), \fBprctl\fP(2),
+\fBsigaction\fP(2), \fBelf\fP(5), \fBproc\fP(5), \fBpthreads\fP(7), \fBsignal\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2869da9..3d32086 100644 (file)
@@ -232,6 +232,6 @@ ISO 6429 端末で使われる \fBLEFTCODE\fP と \fBRIGHTCODE\fP のデフォ
 .SH 関連項目
 \fBdircolors\fP(1), \fBls\fP(1), \fBstty\fP(1), \fBxterm\fP(1)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 78cc5eb..2a72811 100644 (file)
@@ -37,7 +37,7 @@
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH ELF 5 2010\-06\-19 Linux "Linux Programmer's Manual"
+.TH ELF 5 2013\-04\-17 Linux "Linux Programmer's Manual"
 .SH 名前
 elf \- 実行可能リンクフォーマット (ELF) ファイルのフォーマット
 .SH 書式
@@ -189,7 +189,7 @@ typedef struct {
 .PD 0
 \fBEI_VERSION\fP
 .\" .Bl -tag -width "EV_CURRENT" -compact
-ELF 仕様のバージョン番号:
+The seventh byte is the version number of the ELF specification:
 .RS 12
 .TP  14
 \fBEV_NONE\fP
@@ -203,8 +203,10 @@ ELF 仕様のバージョン番号:
 .TP 
 \fBEI_OSABI\fP
 .\" .Bl -tag -width "ELFOSABI_STANDALONE" -compact
-このバイトはオブジェクトのターゲットとなる オペレーティングシステムと ABI を示す。 他の ELF 構造体のフィールドには、
-プラットフォーム固有の意味を持つフラグや値を持つものもある; これらのフィールドの解釈は、このバイトの値によって決定される。 例えば:
+The eighth byte identifies the operating system and ABI to which the object
+is targeted.  Some fields in other ELF structures have flags and values that
+have platform\-specific meanings; the interpretation of those fields is
+determined by the value of this byte.  E.g.:
 .RS 12
 .TP  20
 .PD 0
@@ -275,9 +277,11 @@ ARM アーキテクチャ ABI.
 .RE
 .TP 
 \fBEI_ABIVERSION\fP
-このバイトはオブジェクトがターゲットとしている ABI のバージョンを示す。 このフィールドは互換性のない ABI
-のバージョンを区別するために使われる。 このバージョン番号の解釈は、 \fBEI_OSABI\fP フィールドで識別される ABI に依存する。
-この仕様に準拠するアプリケーションは、値 0 を使う。
+The ninth byte identifies the version of the ABI to which the object is
+targeted.  This field is used to distinguish among incompatible versions of
+an ABI.  The interpretation of this version number is dependent on the ABI
+identified by the \fBEI_OSABI\fP field.  Applications conforming to this
+specification use the value 0.
 .TP 
 \fBEI_PAD\fP
 .\" As reported by Yuri Kozlov and confirmed by Mike Frysinger, EI_BRAND is
@@ -1358,6 +1362,6 @@ AMD64 ABI Draft, \fISystem V Application Binary Interface AMD64 Architecture
 Processor Supplement\fP.
 .PP
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9b363da..75e37a1 100644 (file)
@@ -151,6 +151,6 @@ Manager が使っている。
 .SH 関連項目
 \fBproc\fP(5), \fBfsck\fP(8), \fBmkfs\fP(8), \fBmount\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a2bfe2b..8dd027e 100644 (file)
@@ -40,6 +40,6 @@ University FTP サーバーデーモン (wuftpd) と Professional FTP デーモ
 .SH 関連項目
 \fBpasswd\fP(5), \fBproftpd\fP(8), \fBwuftpd\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index 7e6a49d..4d5f621 100644 (file)
@@ -60,6 +60,6 @@ group_name:password:GID:user_list
 .SH 関連項目
 \fBlogin\fP(1), \fBnewgrp\fP(1), \fBgetgrent\fP(3), \fBgetgrnam\fP(3), \fBpasswd\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
index cbba973..62d8d15 100644 (file)
@@ -117,6 +117,6 @@ syslog 機能を通じた警告を発しない。 このオプションを \fIwa
 .SH 関連項目
 \fBgethostbyname\fP(3), \fBhostname\fP(7), \fBnamed\fP(8), \fBresolv+\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 748b153..9383f36 100644 (file)
@@ -93,6 +93,6 @@ Information Control Center (NIC) によって 管理される公式ホストデ
 .\" for the Debian GNU/Linux system.
 Internet RFC\ 952
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1459c5e..7270fd6 100644 (file)
@@ -47,6 +47,6 @@ netgroup を指定することもでき、その場合は @ 記号を前につ
 .SH 関連項目
 \fBrhosts\fP(5), \fBrlogind\fP(8), \fBrshd\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e814123..6b7791d 100644 (file)
@@ -40,6 +40,6 @@ intro \- ファイルフォーマットの紹介
 .SH 関連項目
 \fBstandards\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1640951..fa84e37 100644 (file)
@@ -41,6 +41,6 @@ issue \- ログイン前に表示されるメッセージとシステム情報
 .SH 関連項目
 \fBmotd\fP(5), \fBagetty\fP(8), \fBmingetty\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c1e14b6..03ad3d3 100644 (file)
@@ -325,6 +325,6 @@ POSIX.2, ISO/IEC 14652.
 \fBlocale\fP(1), \fBlocaledef\fP(1)  \fBlocaleconv\fP(3), \fBsetlocale\fP(3),
 \fBcharmap\fP(5),
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 17e94f7..8e3e74f 100644 (file)
@@ -42,6 +42,6 @@ motd \- 今日のお知らせ(message of the day)
 .SH 関連項目
 \fBlogin\fP(1), \fBissue\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f171cf6..3d1c1de 100644 (file)
@@ -72,6 +72,6 @@ DARPA ネットワークとその分かりやすい名前を記載したファ
 \fBgetnetbyaddr\fP(3), \fBgetnetbyname\fP(3), \fBgetnetent\fP(3), \fBnetstat\fP(8),
 \fBroute\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 697ff2a..91b2fce 100644 (file)
@@ -41,6 +41,6 @@ nologin \- 非特権ユーザのログインを禁止する
 .SH 関連項目
 \fBlogin\fP(1), \fBshutdown\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man5/nscd.conf.5 b/manual/LDP_man-pages/draft/man5/nscd.conf.5
new file mode 100644 (file)
index 0000000..0531908
--- /dev/null
@@ -0,0 +1,145 @@
+.\" Copyright (c) 1999, 2000 SuSE GmbH Nuernberg, Germany
+.\" Author: Thorsten Kukuk <kukuk@suse.de>
+.\"
+.\" %%%LICENSE_START(GPLv2+_SW_3_PARA)
+.\" This program is free software; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of the
+.\" License, or (at your option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+.\" General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH NSCD.CONF 5 2013\-02\-12 GNU "Linux Programmer's Manual"
+.SH 名前
+/etc/nscd.conf \- ネームサービスキャッシュデーモンの設定ファイル
+.SH 説明
+\fBnscd\fP(8)  は起動時にファイル \fI/etc/nscd.conf\fP を読み込む。
+各行には「属性・値」または「属性・サービス・値」を指定する。 フィールドはスペース文字またはタブ文字で区切られる。 \(aq#\(aq (ナンバー記号)
+はコメントの始まりを表す。 この記号から行末までは nscd によって解釈されない。
+
+指定可能なサービスは \fIpasswd\fP, \fIgroup\fP, \fIhosts\fP, \fIservices\fP, \fInetgroup\fP である。
+
+\fBlogfile\fP \fIdebug\-file\-name\fP
+.RS
+デバッグ情報が書き込まれるファイルの名前を指定する。
+.RE
+
+\fBdebug\-level\fP \fIvalue\fP
+.RS
+希望するデバッグレベルを設定する。デフォルトは 0。
+.RE
+
+\fBthreads\fP \fInumber\fP
+.RS
+スレッドをいくつ起動してリクエストを待つのかを指定する。 少なくとも 5 つのスレッドが常に作成される。
+.RE
+
+\fBmax\-threads\fP \fInumber\fP
+.RS
+スレッドの最大数を指定する。デフォルトは 32。
+.RE
+
+\fBserver\-user\fP \fIuser\fP
+.RS
+このオプションが設定されると、 nscd は root ではなく、この user として実行される。 (\-S パラメータにより)
+各ユーザー毎に別々のキャッシュが使われる場合、 このオプションは無視される。
+.RE
+
+\fBstat\-user\fP \fIuser\fP
+.RS
+統計情報の参照を許可するユーザを指定する。
+.RE
+
+\fBreload\-count\fP unlimited | \fInumber\fP
+.RS
+キャッシュされたエントリが使用されなかったときに、 削除される前に何回リロードされるかを設定する。デフォルトは 5。
+.RE
+
+\fBparanoia\fP \fI<yes|no>\fP
+.RS
+パラノイアモードを有効にする。 パラノイアモードでは nscd を定期的に再起動する。デフォルトは無効。
+.RE
+
+\fBrestart\-interval\fP \fItime\fP
+.RS
+パラノイアモードが有効で定期的に再起動する場合の、 再起動間隔を \fItime\fP 秒に設定する。デフォルトは 3600。
+.RE
+
+\fBenable\-cache\fP \fIservice\fP \fI<yes|no>\fP
+.RS
+指定した \fIservice\fP のキャッシュを有効または無効にする。デフォルトは無効。
+.RE
+
+\fBpositive\-time\-to\-live\fP \fIservice\fP \fIvalue\fP
+.RS
+指定した \fIservice\fP のキャッシュにあるポジティブエントリ (成功した問い合わせ) の TTL (time\-to\-live) を設定する。
+\fIvalue\fP の単位は秒である。 値を大きくすると、ヒット率が高くなり平均応答時間を短くできるが、 キャッシュのコヒーレンス (coherence,
+キャッシュが実際のデータと一致していること) に問題が生じる。
+.RE
+
+\fBnegative\-time\-to\-live\fP \fIservice\fP \fIvalue\fP
+.RS
+指定した \fIservice\fP のキャッシュにあるネガティブエントリ (失敗した問い合わせ) の TTL (time\-to\-live) を設定する。
+\fIvalue\fP の単位は秒である。 システムデータベースにない UID (ユーザーID) で所有されるファイル (たとえば root で tar
+を展開した Linux カーネルのソース) が少ないと、 顕著な性能の向上が見られる。
+キャッシュのコヒーレンス問題を少なくするために小さな値にすべきである。
+.RE
+
+\fBsuggested\-size\fP \fIservice\fP \fIvalue\fP
+.RS
+内部ハッシュテーブルの大きさを指定する。 効率を最適にするために \fIvalue\fP は素数にしておくべきである。デフォルトは 211 である。
+.RE
+
+\fBcheck\-files\fP \fIservice\fP \fI<yes|no>\fP
+.RS
+指定した \fIservice\fP に関連するファイルの変更のチェックを有効または無効にする。 ファイルは \fI/etc/passwd\fP,
+\fI/etc/group\fP, \fI/etc/hosts\fP である。デフォルトは有効。
+.RE
+
+\fBpersistent\fP \fIservice\fP \fI<yes|no>\fP
+.RS
+サーバの再起動の前後で \fIservice\fP のキャッシュ内容を保持する。 \fBparanoia\fP
+モードが有効の場合に便利である。デフォルトは保持しない。
+.RE
+
+\fBshared\fP \fIservice\fP \fI<yes|no>\fP
+.RS
+\fIservice\fP の nscd データベースのメモリ・マッピングをクライアント間で共有する。
+これにより、検索を実行する度にソケット経由でデーモンに問い合わせを 行わずに、直接データベースを検索できるようになる。デフォルトは共有しない。
+.RE
+
+\fBmax\-db\-size\fP \fIservice\fP \fIbytes\fP
+.RS
+The maximum allowable size, in bytes, of the database files for the
+\fIservice\fP.  The default is 33554432.
+.RE
+
+\fBauto\-propagate\fP \fIservice\fP \fI<yes|no>\fP
+.RS
+When set to \fIno\fP for \fIpasswd\fP or \fIgroup\fP service, then the \fI.byname\fP
+requests are not added to \fIpasswd.byuid\fP or \fIgroup.bygid\fP cache.  This can
+help with tables containing multiple records for the same ID.  The default
+is yes.  This option is valid only for services \fIpasswd\fP and \fIgroup\fP.
+.RE
+.SH 関連項目
+.\" .SH AUTHOR
+.\" .B nscd
+.\" was written by Thorsten Kukuk and Ulrich Drepper.
+\fBnscd\fP(8)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man5/nsswitch.conf.5 b/manual/LDP_man-pages/draft/man5/nsswitch.conf.5
new file mode 100644 (file)
index 0000000..36a500f
--- /dev/null
@@ -0,0 +1,283 @@
+.\" Copyright (c) 1998, 1999 Thorsten Kukuk (kukuk@vt.uni-paderborn.de)
+.\" Copyright (c) 2011, Mark R. Bannister <cambridge@users.sourceforge.net>
+.\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH NSSWITCH.CONF 5 2013\-02\-12 Linux "Linux Programmer's Manual"
+.SH 名前
+nsswitch.conf \- ネームサービススイッチの設定ファイル
+.SH 説明
+ネームサービススイッチ (Name Service Switch; NSS) の設定ファイル
+\fI/etc/nsswitch.conf\fP は、 GNU C ライブラリが
+いろいろなカテゴリの名前サービス情報を、どの情報源から
+どの順序で取得するかを判断するのに使用される
+(情報の各カテゴリはデータベース名で識別される)。
+.LP
+設定ファイルは通常の ASCII テキストで、列はスペースかタブ文字で
+区切られる。最初の列はデータベース名を示す。
+残りの列は、情報を問い合わせる情報源の順序と、
+検索結果に対して実行するアクションを規定する。
+.LP
+GNU C ライブラリでは以下のデータベースを扱うことができる。
+.TP  12
+\fBaliases\fP
+メールのエイリアス。 \fBgetaliasent\fP(3) や関連する関数が使用する。
+.TP 
+\fBethers\fP
+イーサーネット番号。
+.TP 
+\fBgroup\fP
+ユーザーのグループ。 \fBgetgrent\fP(3) や関連する関数が使用する。
+.TP 
+\fBhosts\fP
+ホスト名とホスト番号。 \fBgethostbyname\fP(3) や関連する関数が使用する。
+.TP 
+\fBinitgroups\fP
+Supplementary group access list, used by \fBgetgrouplist\fP(3)  function.
+.TP 
+\fBnetgroup\fP
+ネットワークワイドに用いられるホストやユーザーのリスト。アクセス制限に利用
+される。 glibc 2.1 より前の C ライブラリは、 NIS による netgroup のみを
+サポートしていた。
+.TP 
+\fBnetworks\fP
+ネットワーク名と番号。 \fBgetnetent\fP(3) と関連する関数が使用する。
+.TP 
+\fBpasswd\fP
+ユーザーパスワード。 \fBgetpwent\fP(3) や関連する関数が使用する。
+.TP 
+\fBprotocols\fP
+ネットワークプロトコル。 \fBgetprotoent\fP(3) や関連する関数が使用する。
+.TP 
+\fBpublickey\fP
+NIS+ と NFS によって用いられる secure_rpc の公開鍵と秘密鍵。
+.TP 
+\fBrpc\fP
+リモート手続き呼び出し (remote procedure call) の名前と番号。
+\fBgetrpcbyname\fP(3) と関連する関数が使用する。
+.TP 
+\fBservices\fP
+ネットワークサービス。 \fBgetservent\fP(3) や関連する関数が使用する。
+.TP 
+\fBshadow\fP
+シャドウユーザーパスワード。 \fBgetspnam\fP(3) や関連する関数が使用する。
+.LP
+以下は \fI/etc/nsswitch.conf\fP ファイルの例である。
+.LP
+.RS 4
+.PD 0
+.TP  16
+passwd:
+compat
+.TP 
+group:
+compat
+.TP 
+shadow:
+compat
+.sp 1n
+.TP 
+hosts:
+dns [!UNAVAIL=return] files
+.TP 
+networks:
+nis [NOTFOUND=return] files
+.TP 
+ethers:
+nis [NOTFOUND=return] files
+.TP 
+protocols:
+nis [NOTFOUND=return] files
+.TP 
+rpc:
+nis [NOTFOUND=return] files
+.TP 
+services:
+nis [NOTFOUND=return] files
+.PD
+.RE
+.LP
+最初の列はデータベース名である。
+残りの列で以下を指定する。
+.IP * 3
+1 個以上のサービス指定 (例: "files", "db", "nis")。この行に記載された
+サービスの順序で、結果が得られるまで、指定されたサービスに対する
+問い合わせが順番に行われる。
+.IP *
+特定の結果が直前のサービスで得られた場合に実行されるアクション
+(例: "[NOTFOUND=return]")。アクションは省略可能である。
+.LP
+利用しているシステムでどのサービス指定が利用できるかは、共有ライブラリ
+があるかどうかに依存しており、そのためサービス指定は拡張できるように
+なっている。\fI/lib/libnss_SERVICE.so.\fP\fBX\fP という名前のライブラリが
+\fISERVICE\fP という名前のサービスを提供する。標準のインストールを行った
+場合、"files", "db", "nis", "nisplus" が利用できる。
+データベース \fBhosts\fP の場合には、追加で "dns" も指定できる。
+データベース \fBpasswd\fP, \fBgroup\fP, \fBshadow\fP の場合には、追加で
+"compat" (下記の \fB互換モード\fP を参照)。バージョン番号 \fBX\fP は、
+glibc 2.0 の場合は 1、glibc 2.1 の場合は 2 で、それ以降も同様である。
+追加のライブラリがインストールされているシステムでは、"hesiod",
+"ldap", "winbind", "wins" などの追加のサービスが利用できる。
+.LP
+サービス指定の次にアクションを指定することもできる。アクションを
+使うと、直前のデータ源から結果が得られた後の動作を変更できる。
+アクション指定は、一般的には以下の形式となる。
+.LP
+.RS 4
+[\fISTATUS\fP=\fIACTION\fP]
+.br
+[!\fISTATUS\fP=\fIACTION\fP]
+.RE
+.LP
+STATUS と ACTION はそれぞれ以下の値を取る。
+.LP
+.RS 4
+\fISTATUS\fP => \fBsuccess\fP | \fBnotfound\fP | \fBunavail\fP | \fBtryagain\fP
+.br
+\fIACTION\fP => \fBreturn\fP | \fBcontinue\fP
+.RE
+.LP
+! はテスト結果を反転させる。
+つまり、指定された以外の全ての結果にマッチする。
+キーワードの大文字、小文字は無視される。
+.LP
+\fISTATUS\fP は、直前のサービス指定で呼び出しされた検索処理の結果に
+対して照合が行われる。 \fISTATUS\fP には以下のいずれかを指定できる。
+.RS 4
+.TP  12
+\fBsuccess\fP
+エラーは発生せず、要求されたエントリが返された。
+この場合のデフォルトのアクションは "return" である。
+.TP 
+\fBnotfound\fP
+検索は成功したが、要求されたエントリが見つからなかった。
+この場合のデフォルトのアクションは "continue" である。
+.TP 
+\fBunavail\fP
+サービスが永続的に利用できない。
+必要なファイルを読み込むことができない、
+ネットワークサービスの場合には、サーバが利用できないとか、
+サーバが問い合わせを許可していない、などが考えられる。
+この場合のデフォルトのアクションは "continue" である。
+.TP 
+\fBtryagain\fP
+サービスが一時的に利用できない。
+ファイルがロックされている、サーバがこれ以上接続を受け付けることができない、
+などが考えられる。デフォル トのアクションは "continue" である。
+.RE
+.LP
+\fIACTION\fP には以下のいずれかを指定できる。
+.RS 4
+.TP  12
+\fBreturn\fP
+Return a result now.  Do not call any further lookup functions.  However,
+for compatibility reasons, if this is the selected action for the \fBgroup\fP
+database and the \fBnotfound\fP status, and the configuration file does not
+contain the \fBinitgroups\fP line, the next lookup function is always called,
+without affecting the search result.
+.TP 
+\fBcontinue\fP
+次の検索処理を呼び出す。
+.RE
+.SS "互換モード (compat)"
+NSS "compat" サービスは "files" と似ているが、システムにアクセスできる
+ユーザやネットグループ (netgroup) のメンバの指定に \fI/etc/passwd\fP で
+特別なエントリを追加で使うことができる点が異なる。
+このモードでは、以下のエントリを使うことができる。
+.RS 4
+.TP  12
+\fB+\fP\fIuser\fP
+NIS パスワードマップの指定された \fIuser\fP を含める。
+.TP 
+\fB+@\fP\fInetgroup\fP
+指定された \fInetgroup\fP の全ユーザを含める。
+.TP 
+\fB\-\fP\fIuser\fP
+NIS パスワードマップの指定された \fIuser\fP を除外する。
+.TP 
+\fB\-@\fP\fInetgroup\fP
+指定された \fInetgroup\fP の全ユーザを除外する。
+.TP 
+\fB+\fP
+NIS パスワードマップのユーザのうち、
+それまでに除外されていない全てのユーザを含める。
+.RE
+.LP
+デフォルトでは、データ源は "nis" だが、
+擬似データベース \fBpasswd_compat\fP, \fBgroup_compat\fP, \fBshadow_compat\fP
+ではデータ源として "nisplus" を指定することもできる。
+.SH ファイル
+\fISERVICE\fP という名前のサービスは \fIlibnss_SERVICE.so.\fP\fBX\fP という
+名前の共有オブジェクトライブラリで実装されている。
+これは \fI/lib\fP に置かれる。
+.RS 4
+.TP  25
+.PD 0
+\fI/etc/nsswitch.conf\fP
+NSS の設定ファイル。
+.TP 
+\fI/lib/libnss_compat.so.\fP\fBX\fP
+"compat" ソースを実装したもの。
+.TP 
+\fI/lib/libnss_db.so.\fP\fBX\fP
+"db" ソースを実装したもの。
+.TP 
+\fI/lib/libnss_dns.so.\fP\fBX\fP
+"dns" ソースを実装したもの。
+.TP 
+\fI/lib/libnss_files.so.\fP\fBX\fP
+"files" ソースを実装したもの。
+.TP 
+\fI/lib/libnss_hesiod.so.\fP\fBX\fP
+"hesoid" ソースを実装したもの。
+.TP 
+\fI/lib/libnss_nis.so.\fP\fBX\fP
+"nis" ソースを実装したもの。
+.TP 
+\fI/lib/libnss_nisplus.so.\fP\fBX\fP
+"nisplus" ソースを実装したもの。
+.PD
+.RE
+.SH 注意
+\fInsswitch.conf\fP を利用するプロセスは、ファイルは一度しか読み込まない。
+その後で nsswitch.conf が書き換えられても、そのプロセスは古い設定のままで
+動作を継続する。
+.LP
+伝統的には、サービス情報の情報源は一つだけであり、
+その設定ファイルの形式も一つであった (例えば \fI/etc/passwd\fP)。
+一方で、 Network Information Service (NIS) や Domain Name Service
+(DNS) などの他の名前サービスが一般的になるに連れて、C ライブラリに埋め
+込まれた固定順序ではなく、検索順序を柔軟に指定する方法が必要になった。
+ネームサービススイッチ機構は、この問題に対するよりきれいな解決方法と
+なっている。ネームサービススイッチ機構は、 Sun Microsystems が
+Solaris 2 の C ライブラリで使った機構が基になっている。
+.SH 関連項目
+\fBgetent\fP(1), \fBnss\fP(5)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index c3d5c26..1c4a8f6 100644 (file)
@@ -133,6 +133,6 @@ gcos 欄は $IDENT カード用の情報を 隠しておくための場所なん
 \fBlogin\fP(1), \fBpasswd\fP(1), \fBsu\fP(1), \fBgetpwent\fP(3), \fBgetpwnam\fP(3),
 \fBcrypt\fP(3), \fBgroup\fP(5), \fBshadow\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。
+This page is part of release 3.51 of the Linux \fIman\-pages\fP project.  A
+description of the project, and information about reporting bugs, can be
+found at http://www.kernel.org/doc/man\-pages/.
diff --git a/manual/LDP_man-pages/draft/man5/proc.5 b/manual/LDP_man-pages/draft/man5/proc.5
new file mode 100644 (file)
index 0000000..96e30bd
--- /dev/null
@@ -0,0 +1,2389 @@
+.\" Copyright (C) 1994, 1995 by Daniel Quinlan (quinlan@yggdrasil.com)
+.\" and Copyright (C) 2002-2008 Michael Kerrisk <mtk.manpages@gmail.com>
+.\" with networking additions from Alan Cox (A.Cox@swansea.ac.uk)
+.\" and scsi additions from Michael Neuffer (neuffer@mail.uni-mainz.de)
+.\" and sysctl additions from Andries Brouwer (aeb@cwi.nl)
+.\" and System V IPC (as well as various other) additions from
+.\" Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
+.\"
+.\" Modified 1995-05-17 by faith@cs.unc.edu
+.\" Minor changes by aeb and Marty Leisner (leisner@sdsp.mc.xerox.com).
+.\" Modified 1996-04-13, 1996-07-22 by aeb@cwi.nl
+.\" Modified 2001-12-16 by rwhron@earthlink.net
+.\" Modified 2002-07-13 by jbelton@shaw.ca
+.\" Modified 2002-07-22, 2003-05-27, 2004-04-06, 2004-05-25
+.\"    by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" 2004-11-17, mtk -- updated notes on /proc/loadavg
+.\" 2004-12-01, mtk, rtsig-max and rtsig-nr went away in 2.6.8
+.\" 2004-12-14, mtk, updated 'statm', and fixed error in order of list
+.\" 2005-05-12, mtk, updated 'stat'
+.\" 2005-07-13, mtk, added /proc/sys/fs/mqueue/*
+.\" 2005-09-16, mtk, Added /proc/sys/fs/suid_dumpable
+.\" 2005-09-19, mtk, added /proc/zoneinfo
+.\" 2005-03-01, mtk, moved /proc/sys/fs/mqueue/* material to mq_overview.7.
+.\" 2008-06-05, mtk, Added /proc/[pid]/oom_score, /proc/[pid]/oom_adj,
+.\"     /proc/[pid]/limits, /proc/[pid]/mountinfo, /proc/[pid]/mountstats,
+.\"     and /proc/[pid]/fdinfo/*.
+.\" 2008-06-19, mtk, Documented /proc/[pid]/status.
+.\" 2008-07-15, mtk, added /proc/config.gz
+.\"
+.\" FIXME 2.6.13 seems to have /proc/vmcore implemented
+.\" in the source code, but there is no option available under
+.\" 'make xconfig'; eventually this should be fixed, and then info
+.\" from the patch-2.6.13 and change log could be used to write an
+.\" entry in this man page.
+.\" Needs CONFIG_VMCORE
+.\"
+.\" FIXME cross check against Documentation/filesystems/proc.txt
+.\" to see what information could be imported from that file
+.\" into this file.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH PROC 5 2013\-04\-17 Linux "Linux Programmer's Manual"
+.SH 名前
+proc \- プロセスの情報を含む擬似ファイルシステム
+.SH 説明
+\fIproc\fP ファイルシステムは擬似的なファイルシステムであり、 カーネル内のデータへのインターフェースとして使用される。 一般的には
+\fI/proc\fP にマウントされる。 大部分のファイルは読み出し専用 (read\-only) であるが、 いくつかのファイルは書き込み可能であり、
+そのファイルに書き込めばカーネルの内部変数を変更できる。
+.LP
+以下は \fI/proc\fP 階層の簡単なあらましである。
+.PD 1
+.TP 
+\fI/proc/[pid]\fP
+.\" FIXME Describe /proc/[pid]/attr and
+.\"       /proc/[pid]/task/[tid]/attr
+.\"      This is a directory
+.\"       Added in ???
+.\"      CONFIG_SECURITY
+.\"
+実行中のプロセスについてのサブディレクトリ。 サブディレクトリ名は (そのプロセスの) プロセス ID である。
+各サブディレクトリは、以下の擬似ファイルとディレクトリを含む。
+.TP 
+\fI/proc/[number]/auxv\fP (カーネル 2.6.0\-test7 以降)
+実行時にプロセスに渡された ELF インタプリタ情報が格納されている。 個々のエントリは、\fIunsigned long\fP 型の ID 1 個に
+\fIunsigned long\fP 型の値 1 個が続くフォーマットである。 最後のエントリには 0 が 2 個入っている。
+.TP 
+\fI/proc/[pid]/cgroup\fP (Linux 2.6.24 以降)
+.\"      Info in Documentation/cgroups/cgroups.txt
+このファイルは、プロセスやタスクが所属するコントロールグループを示す。
+cgroup の各階層についてエントリーが 1 つあり、
+各エントリーは以下の形式のコロン区切りのフィールドで構成される。
+.nf
+
+\f(CW    5:cpuacct,cpu,cpuset:/daemons\fP
+.fi
+.IP
+コロン区切りの各フィールドは、左から右の順で、以下の意味を持つ。
+.RS 11
+.IP 1. 3
+階層 ID 番号
+.IP 2.
+その階層に関連付けたサブシステムの集合
+.IP 3.
+プロセスが所属する階層内のコントロールグループ
+.RE
+.IP
+.\"
+.\" FIXME Describe /proc/[pid]/clear_refs
+.\"       Added in 2.6.22
+.\"       "Clears page referenced bits shown in smaps output"
+.\"       write-only
+.\"       CONFIG_PROC_PAGE_MONITOR
+このファイルが存在するのは、カーネルのコンフィギュレーション・オプショ
+ン \fBCONFIG_CGROUPS\fP を有効にした場合だけである。
+.TP 
+\fI/proc/[pid]/cmdline\fP
+.\" In 2.3.26, this also used to be true if the process was swapped out.
+プロセスの完全なコマンド行を保持する。ただし、そのプロセスがゾンビプロセス
+の場合は、このファイルは空となる。つまり、このファイルを読み出しても一文字
+も返らない。このファイルではコマンドライン引き数が、
+NULL バイト (\(aq\e0\(aq) で区切られた文字列として書かれており、
+最後の文字列の後に NULL バイトが一つ置かれる。
+.TP 
+\fI/proc/[pid]/coredump_filter\fP (kernel 2.6.23 以降)
+\fBcore\fP(5)  参照。
+.TP 
+\fI/proc/[pid]/cpuset\fP (kernel 2.6.12 以降)
+.\" and/proc/[pid]/task/[tid]/cpuset
+\fBcpuset\fP(7)  参照。
+.TP 
+\fI/proc/[pid]/cwd\fP
+プロセスのカレントワーキングディレクトリへのシンボリックリンク。 例えば、プロセス 20 のカレントワーキングディレクトリを見つけるためには、
+次のようにすればよい。
+
+.in +4n
+.nf
+$\fB cd /proc/20/cwd; /bin/pwd\fP
+.fi
+.in
+
+\fIpwd\fP コマンドはシェルの内部コマンドのことがよくあり、
+うまく動作しないかもしれない。
+\fBbash\fP(1) では \fIpwd\ \-P\fP を使ってもよい。
+
+.\" The following was still true as at kernel 2.6.13
+マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、 このシンボリックリンクの内容は参照できない (スレッドの終了は通常
+\fBpthread_exit\fP(3)  を呼び出しにより行われる)。
+.TP 
+\fI/proc/[pid]/environ\fP
+このファイルはプロセスの環境変数を含んでいる。 各エントリは NULL バイト (\(aq\e0\(aq) で区切られていて、 末尾に NULL
+バイトがあるかもしれない。 したがって、プロセス 1 の環境変数を表示するためには 次のようにすればよい。
+.in +4n
+.nf
+
+$\fB strings /proc/1/environ\fP
+.fi
+.in
+.TP 
+\fI/proc/[pid]/exe\fP
+.\" The following was still true as at kernel 2.6.13
+Linux 2.2 以降では、このファイルはシンボリックリンクで、 実行可能コマンドの実際のパス名を格納している。
+このシンボリックリンクは通常のように辿ることができる; これをオープンすると実行可能ファイルがオープンされる。 (コマンドラインで)
+\fI/proc/[pid]/exe\fP と入力すると、プロセス番号 [pid] で実行されている 実行可能ファイルをもう一つ実行することができる。
+マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、 このシンボリックリンクの内容は参照できない (スレッドの終了は通常
+\fBpthread_exit\fP(3)  を呼び出しにより行われる)。
+
+Linux 2.0 以前では、 \fI/proc/[pid]/exe\fP は実行されたバイナリへのポインタで、シンボリックリンクのように見える。 Linux
+2.0 以前では、このファイルに対して \fBreadlink\fP(2)  を実行すると、次のフォーマットの文字列が返る。
+
+    [デバイス番号]:iノード番号
+
+たとえば、[0301]:1502 はメジャーデバイス番号 03 (IDE, MFM などのドライブ)  マイナーデバイス番号 01
+(最初のドライブの最初のパーティション) の デバイス上の iノード番号 1502 である。
+
+\fI\-inum\fP オプションをつけて \fBfind\fP(1) を使うと、
+このファイルの所在を探すことができる。
+.TP 
+\fI/proc/[pid]/fd\fP
+プロセスがオープンしたファイル各々に対するエントリを含むサブディレクトリ。 ファイルディスクリプタがファイル名で、
+実際のファイルへのシンボリックリンクになっている。 したがって 0 は標準入力、1 は標準出力、2 は標準エラー出力、などとなる。
+
+.\" The following was still true as at kernel 2.6.13
+マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、 このディレクトリの内容は参照できない (スレッドの終了は通常
+\fBpthread_exit\fP(3)  を呼び出しにより行われる)。
+
+コマンドライン引き数としてファイル名を受け取るが、引き数が 渡されなかった場合
+に標準入力から入力を受け取らないようなプログラムや、 コマンドライン引き数とし
+て書き込みファイルを受け取るが、引き数が 渡されなかった場合に標準出力に出力を
+行わないようなプログラムであっても、 \fI/proc/[pid]/fd\fP を使うことで標準入力や
+標準出力を使用できるようになる。 例えば、 \fI\-i\fP を入力ファイルを指定するフラ
+グ、 \fI\-o\fP を出力ファイルを指定するフラグと仮定すると、
+.in +4n
+.nf
+
+$\fB foobar \-i /proc/self/fd/0 \-o /proc/self/fd/1 ...\fP
+.fi
+.in
+
+.\" The following is not true in my tests (MTK):
+.\" Note that this will not work for
+.\" programs that seek on their files, as the files in the fd directory
+.\" are not seekable.
+を実行することにより、フィルタとして動作させることができる。
+
+\fI/proc/self/fd/N\fP は、ある種の UNIX や UNIX 風のシステムにある \fI/dev/fd/N\fP
+とだいたい同じである。 事実 Linux のたいていの MAKEDEV スクリプトは、
+\fI/dev/fd\fP を \fI/proc/self/fd\fP へのシンボリックリンクにしている。
+
+ほとんどのシステムでは、シンボリックリンク \fI/dev/stdin\fP, \fI/dev/stdout\fP, \fI/dev/stderr\fP
+が提供されており、それぞれ \fI/proc/self/fd\fP 内のファイル \fI0\fP, \fI1\fP, \fI2\fP にリンクされている。
+したがって、上述のサンプルコマンドは次のようにも書くことができる。
+.in +4n
+.nf
+
+$\fB foobar \-i /dev/stdin \-o /dev/stdout ...\fP
+.fi
+.in
+.\" FIXME Describe /proc/[pid]/loginuid
+.\"       Added in 2.6.11; updating requires CAP_AUDIT_CONTROL
+.\"       CONFIG_AUDITSYSCALL
+.TP 
+\fI/proc/[pid]/fdinfo/\fP (kernel 2.6.22 以降)
+このサブディレクトリには、そのプロセスがオープンしているファイル毎の エントリが入っており、ファイルディスクリプタがファイル名となっている。
+各ファイルの内容を読み出すことで、対応するファイルディスクリプタに関する 情報を得ることができる。以下に例を示す。
+.in +4n
+.nf
+
+$\fB cat /proc/12015/fdinfo/4\fP
+pos:    1000
+flags:  01002002
+.fi
+.in
+
+\fIpos\fP フィールドは 10 進数で、現在のファイルオフセットを示す。 \fIflags\fP フィールドは 8 進数で、
+ファイルのアクセスモードとファイル状態フラグを示す (\fBopen\fP(2)  参照)。
+
+.\" FIXME document /proc/[pid]/io
+.\" .TP
+.\" .IR /proc/[pid]/io " (since kernel 2.6.20)"
+このディレクトリのファイルは、プロセスの所有者だけが読み出すことができる。
+.TP 
+\fI/proc/[pid]/limits\fP (kernel 2.6.24 以降)
+.\" commit 3036e7b490bf7878c6dae952eec5fb87b1106589
+This file displays the soft limit, hard limit, and units of measurement for
+each of the process's resource limits (see \fBgetrlimit\fP(2)).  Up to and
+including Linux 2.6.35, this file is protected to allow reading only by the
+real UID of the process.  Since Linux 2.6.36, this file is readable by all
+users on the system.
+.TP 
+\fI/proc/[pid]/map_files/\fP (since kernel 3.3)
+.\" commit 640708a2cff7f81e246243b0073c66e6ece7e53e
+This subdirectory contains entries corresponding to memory\-mapped files (see
+\fBmmap\fP(2)).  Entries are named by memory region start and end address pair
+(expressed as hexadecimal numbers), and are symbolic links to the mapped
+files themselves.  Here is an example, with the output wrapped and
+reformatted to fit on an 80\-column display:
+.in +4n
+.nf
+
+$\fB ls \-l /proc/self/map_files/\fP
+lr\-\-\-\-\-\-\-\-. 1 root root 64 Apr 16 21:31
+            3252e00000\-3252e20000 \-> /usr/lib64/ld\-2.15.so
+\&...
+.fi
+.in
+
+Although these entries are present for memory regions that were mapped with
+the \fBMAP_FILE\fP flag, the way anonymous shared memory (regions created with
+the \fBMAP_ANON | MAP_SHARED\fP flags)  is implemented in Linux means that such
+regions also appear on this directory.  Here is an example where the target
+file is the deleted \fI/dev/zero\fP one:
+.in +4n
+.nf
+
+
+lrw\-\-\-\-\-\-\-. 1 root root 64 Apr 16 21:33
+            7fc075d2f000\-7fc075e6f000 \-> /dev/zero (deleted)
+.fi
+.in
+
+This directory appears only if the \fBCONFIG_CHECKPOINT_RESTORE\fP kernel
+configuration option is enabled.
+.TP 
+\fI/proc/[pid]/maps\fP
+A file containing the currently mapped memory regions and their access
+permissions.  See \fBmmap\fP(2)  for some further information about memory
+mappings.
+
+The format of the file is:
+
+.in -7n
+.nf
+\fIaddress           perms offset  dev   inode       pathname\fP
+00400000\-00452000 r\-xp 00000000 08:02 173521      /usr/bin/dbus\-daemon
+00651000\-00652000 r\-\-p 00051000 08:02 173521      /usr/bin/dbus\-daemon
+00652000\-00655000 rw\-p 00052000 08:02 173521      /usr/bin/dbus\-daemon
+00e03000\-00e24000 rw\-p 00000000 00:00 0           [heap]
+00e24000\-011f7000 rw\-p 00000000 00:00 0           [heap]
+\&...
+35b1800000\-35b1820000 r\-xp 00000000 08:02 135522  /usr/lib64/ld\-2.15.so
+35b1a1f000\-35b1a20000 r\-\-p 0001f000 08:02 135522  /usr/lib64/ld\-2.15.so
+35b1a20000\-35b1a21000 rw\-p 00020000 08:02 135522  /usr/lib64/ld\-2.15.so
+35b1a21000\-35b1a22000 rw\-p 00000000 00:00 0
+35b1c00000\-35b1dac000 r\-xp 00000000 08:02 135870  /usr/lib64/libc\-2.15.so
+35b1dac000\-35b1fac000 \-\-\-p 001ac000 08:02 135870  /usr/lib64/libc\-2.15.so
+35b1fac000\-35b1fb0000 r\-\-p 001ac000 08:02 135870  /usr/lib64/libc\-2.15.so
+35b1fb0000\-35b1fb2000 rw\-p 001b0000 08:02 135870  /usr/lib64/libc\-2.15.so
+\&...
+f2c6ff8c000\-7f2c7078c000 rw\-p 00000000 00:00 0    [stack:986]
+\&...
+7fffb2c0d000\-7fffb2c2e000 rw\-p 00000000 00:00 0   [stack]
+7fffb2d48000\-7fffb2d49000 r\-xp 00000000 00:00 0   [vdso]
+.fi
+.in
+
+The \fIaddress\fP field is the address space in the process that the mapping
+occupies.  The \fIperms\fP field is a set of permissions:
+
+.nf
+.in +5
+r = read
+w = write
+x = execute
+s = shared
+p = private (copy on write)
+.fi
+.in
+
+The \fIoffset\fP field is the offset into the file/whatever; \fIdev\fP is the
+device (major:minor); \fIinode\fP is the inode on that device.  0 indicates
+that no inode is associated with the memory region, as would be the case
+with BSS (uninitialized data).
+
+The \fIpathname\fP field will usually be the file that is backing the mapping.
+For ELF files, you can easily coordinate with the \fIoffset\fP field by looking
+at the Offset field in the ELF program headers (\fIreadelf\ \-l\fP).
+
+There are additional helpful pseudo\-paths:
+.RS 12
+.TP 
+\fI[stack]\fP
+The initial process's (also known as the main thread's) stack.
+.TP 
+\fI[stack:<tid>]\fP (since Linux 3.4)
+.\" commit b76437579d1344b612cf1851ae610c636cec7db0
+A thread's stack (where the \fI<tid>\fP is a thread ID).  It
+corresponds to the \fI/proc/[pid]/task/[tid]/\fP path.
+.TP 
+\fI[vdso]\fP
+The virtual dynamically linked shared object.
+.TP 
+\fI[heap]\fP
+The process's heap.
+.in
+.fi
+.RE
+.IP
+If the \fIpathname\fP field is blank, this is an anonymous mapping as obtained
+via the \fBmmap\fP(2)  function.  There is no easy way to coordinate this back
+to a process's source, short of running it through \fBgdb\fP(1), \fBstrace\fP(1),
+or similar.
+
+Linux 2.0 ではパス名を書いたフィールドがない。
+.TP 
+\fI/proc/[pid]/mem\fP
+このファイルは、 \fBopen\fP(2), \fBread\fP(2), \fBlseek\fP(2)
+を通して、プロセスのメモリのページにアクセスするために使われる。
+.TP 
+\fI/proc/[pid]/mountinfo\fP (Linux 2.6.26 以降)
+.\" This info adapted from Documentation/filesystems/proc.txt
+このファイルには、マウントポイントについての情報が入っている。 以下のような形式の行から構成される。
+.nf
+
+\f(CW36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 \- ext3 /dev/root rw,errors=continue
+(1)(2)(3)   (4)   (5)      (6)      (7)   (8) (9)   (10)         (11)\fP
+.fi
+.IP
+括弧付きの数字は、以下の説明のためのものである。
+.RS 7
+.TP  5
+(1)
+マウント ID: マウントの一意な識別子 (\fBumount\fP(2)  の後は再利用されるかもしれない)。
+.TP 
+(2)
+parent ID: 親マウントの ID (マウントツリーの最上位の場合は自分自身の ID となる)。
+.TP 
+(3)
+major:minor: ファイルシステム上のファイルの \fIst_dev\fP の値 (\fBstat\fP(2)  参照)。
+.TP 
+(4)
+ルート: そのファイルシステム内のマウントのルート。
+.TP 
+(5)
+マウントポイント: マウントポイントのそのプロセスのルートからの相対パス。
+.TP 
+(6)
+マウントオプション: 各マウントのオプション。
+.TP 
+(7)
+オプションフィールド: "tag[:value]" 形式のフィールドが 0 個以上並ぶ。
+.TP 
+(8)
+セパレータ: オプションフィールドの終わりを示す。
+.TP 
+(9)
+ファイルシステム種別: ファイルシステムの名前。 "type[.subtype]" という形式となる。
+.TP 
+(10)
+マウント元: ファイルシステム固有の情報。ない場合は "none" となる。
+.TP 
+(11)
+super options: スーパーブロック単位のオプション。
+.RE
+.IP
+解釈する側は認識できないオプションフィールドは全て無視すべきである。 現在のところ、オプションフィールドとしては以下のようなものがある。
+.RS 12
+.TP  18
+shared:X
+マウントはピアグループ (peer group) X で共有されている。
+.TP 
+master:X
+マウントはピアグループ (peer group) X のスレーブである。
+.TP 
+propagate_from:X
+マウントはスレーブであり、ピアグループ X (*) から mount propagation を受信する。
+.TP 
+unbindable
+マウントは unbind できない。
+.RE
+.IP
+(*) X は、プロセスの root で直近の dominant peer group である。 X がマウントの直接のマスターである場合や、 同じ
+root に dominant peer group がない場合は、 "master:X" フィールドだけが存在し、
+"propagate_from:X" フィールドは存在しない。
+
+mount propagation の詳細については、 Linux カーネルソースツリー内の
+\fIDocumentation/filesystems/sharedsubtree.txt\fP を参照。
+.TP 
+\fI/proc/[pid]/mounts\fP (Linux 2.4.19 以降)
+そのプロセスのマウント名前空間に現在マウントされている 全ファイルシステムのリスト。 このファイルのフォーマットは \fBfstab\fP(5)
+に載っている。 カーネル 2.6.15 以降では、このファイルを監視することができる (pollable)。
+このファイルを読み出し用にオープンした後で、このファイルに変更があると (つまりファイルシステムのマウントやアンマウントがあると)、
+\fBselect\fP(2)  ではそのファイルディスクリプタは読み出し可能となり、 \fBpoll\fP(2)  と \fBepoll_wait\fP(2)
+ではそのファイルはエラー状態として通知される。
+.TP 
+\fI/proc/[pid]/mountstats\fP (Linux 2.6.17 以降)
+このファイルを通じて、そのプロセスの名前空間内のマウントポイントに関する 各種情報 (統計、設定情報) を参照できる。
+ファイルの各行は以下のフォーマットである。
+.nf
+
+device /dev/sda7 mounted on /home with fstype ext3 [statistics]
+(       1      )            ( 2 )             (3 ) (4)
+.fi
+.IP
+各行のフィールドは以下の通りである。
+.RS 7
+.TP  5
+(1)
+マウントされているデバイス名 (対応するデバイスがない場合は "nodevice" となる)。
+.TP 
+(2)
+マウントポイントのファイルシステムツリーにおけるパス名。
+.TP 
+(3)
+ファイルシステム種別。
+.TP 
+(4)
+追加の統計や設定情報。 現在のところ (Linux 2.6.26 時点では)、 このフィールドで情報が提供されているのは NFS
+ファイルシステムだけである。
+.RE
+.IP
+このファイルはプロセスの所有者だけが読み出すことができる。
+.TP 
+\fI/proc/[pid]/ns/\fP (Linux 3.0 以降)
+.\" See commit 6b4e306aa3dc94a0545eb9279475b1ab6209a31f
+このサブディレクトリには、名前空間毎に 1 エントリが置かれる。
+各エントリは \fBsetns\fP(2) による操作をサポートしている。
+名前空間に関する情報は \fBclone\fP(2) を参照。
+.TP 
+\fI/proc/[pid]/ns/ipc\fP (Linux 3.0 以降)
+このファイルをファイルシステムのどこか他の場所に bind mount することで (\fBmount\fP(2)
+参照)、現在この名前空間にいる全てのプロセスが終了したとしても、 \fIpid\fP で指定されたプロセスの IPC 名前空間は有効な状態で保たれる。
+
+このファイルをオープンすると、 \fIpid\fP で指定されたプロセスの IPC
+名前空間のファイルハンドルが返される。このファイルディスクリプタがオープンされている限り、この名前空間にいる全てのプロセスが終了したとしても、この
+IPC 名前空間は有効なままとなる。このファイルディスクリプタは \fBsetns\fP(2) に渡すことができる。
+.TP 
+\fI/proc/[pid]/ns/net\fP (Linux 3.0 以降)
+このファイルをファイルシステムのどこか他の場所に bind mount することで (\fBmount\fP(2)
+参照)、現在この名前空間にいる全てのプロセスが終了したとしても、 \fIpid\fP で指定されたプロセスのネットワーク名前空間は有効な状態で保たれる。
+
+このファイルをオープンすると、 \fIpid\fP
+で指定されたプロセスのネットワーク名前空間のファイルハンドルが返される。このファイルディスクリプタがオープンされている限り、この名前空間にいる全てのプロセスが終了したとしても、このネットワーク名前空間は有効なままとなる。このファイルディスクリプタは
+\fBsetns\fP(2) に渡すことができる。
+.TP 
+\fI/proc/[pid]/ns/uts\fP (Linux 3.0 以降)
+このファイルをファイルシステムのどこか他の場所に bind mount することで (\fBmount\fP(2)
+参照)、現在この名前空間にいる全てのプロセスが終了したとしても、 \fIpid\fP で指定されたプロセスの UTS 名前空間は有効な状態で保たれる。
+
+このファイルをオープンすると、 \fIpid\fP で指定されたプロセスの UTS
+名前空間のファイルハンドルが返される。このファイルディスクリプタがオープンされている限り、この名前空間にいる全てのプロセスが終了したとしても、この
+UTS 名前空間は有効なままとなる。このファイルディスクリプタは \fBsetns\fP(2) に渡すことができる。
+.TP 
+\fI/proc/[pid]/numa_maps\fP (Linux 2.6.14 以降)
+\fBnuma\fP(7)  を参照。
+.TP 
+\fI/proc/[pid]/oom_adj\fP (Linux 2.6.11 以降)
+このファイルは、メモリ不足 (OOM) の状況下でどのプロセスを殺すべきかを選択す
+るのに使用されるスコアを調整するのに使用される。カーネルは、プロセスの
+\fIoom_score\fP 値のビットシフト操作に、この値を使用する。この値として有効な値
+は \-16 から +15 までと、特別な意味を持つ \-17 である。 \-17 はそのプロセス
+に対する OOM\-killing を完全に無効にすることを意味する。正の値ほど、そのプロ
+セスが OOM\-killer により殺される可能性が高くなり、負の値ほど可能性が低くなる。
+.IP
+このファイルのデフォルト値は 0 である。 新しいプロセスは親プロセスの \fIoom_adj\fP の設定を継承する。
+このファイルを変更するためには、プロセスは特権 (\fBCAP_SYS_RESOURCE\fP) を持っていなければならない。
+.IP
+Since Linux 2.6.36, use of this file is deprecated in favor of
+\fI/proc/[pid]/oom_score_adj\fP.
+.TP 
+\fI/proc/[pid]/oom_score\fP (Linux 2.6.11 以降)
+.\" See mm/oom_kill.c::badness() in the 2.6.25 sources
+.\" See mm/oom_kill.c::badness() in the 2.6.25 sources
+このファイルは、OOM\-killer のプロセス選択用として、カーネルが このプロセス
+に対して与えた現在のスコアを表示する。 高いスコアは、そのプロセスが
+OOM\-killer により選択される 可能性が高いことを意味する。 このスコアの基本は
+そのプロセスが使用しているメモリ量であり、 以下の要因により加算 (+) 減算 (\-)
+が行われる。
+.RS
+.IP * 2
+そのプロセスが多くの子プロセスを \fBfork\fP(2)  を使って作成しているか (+)。
+.IP *
+そのプロセスが長時間実行されて来たか、
+もしくは 多くの CPU 時間を使用しているか (\-)。
+.IP *
+そのプロセスが低い nice 値 (> 0) を持っているか (+)。
+.IP *
+.\" More precisely, if it has CAP_SYS_ADMIN or CAP_SYS_RESOURCE
+そのプロセスが特権を持っているか (\-)。
+.IP *
+.\" More precisely, if it has CAP_SYS_RAWIO
+そのプロセスが direct hardware access を行っているか (\-)。
+.RE
+.IP
+\fIoom_score\fP は、そのプロセスの \fIoom_score_adj\fP や \fIoom_adj\fP 設定で規定される調整にも影響を与える。
+.TP 
+\fI/proc/[pid]/oom_score_adj\fP (Linux 2.6.36 以降)
+.\" Text taken from 3.7 Documentation/filesystems/proc.txt
+This file can be used to adjust the badness heuristic used to select which
+process gets killed in out\-of\-memory conditions.
+
+The badness heuristic assigns a value to each candidate task ranging from 0
+(never kill) to 1000 (always kill) to determine which process is targeted.
+The units are roughly a proportion along that range of allowed memory the
+process may allocate from, based on an estimation of its current memory and
+swap use.  For example, if a task is using all allowed memory, its badness
+score will be 1000.  If it is using half of its allowed memory, its score
+will be 500.
+
+There is an additional factor included in the badness score: root processes
+are given 3% extra memory over other tasks.
+
+The amount of "allowed" memory depends on the context in which the
+OOM\-killer was called.  If it is due to the memory assigned to the
+allocating task's cpuset being exhausted, the allowed memory represents the
+set of mems assigned to that cpuset (see \fBcpuset\fP(7)).  If it is due to a
+mempolicy's node(s) being exhausted, the allowed memory represents the set
+of mempolicy nodes.  If it is due to a memory limit (or swap limit) being
+reached, the allowed memory is that configured limit.  Finally, if it is due
+to the entire system being out of memory, the allowed memory represents all
+allocatable resources.
+
+The value of \fIoom_score_adj\fP is added to the badness score before it is
+used to determine which task to kill.  Acceptable values range from \-1000
+(OOM_SCORE_ADJ_MIN) to +1000 (OOM_SCORE_ADJ_MAX).  This allows user space to
+control the preference for OOM\-killing, ranging from always preferring a
+certain task or completely disabling it from OOM\-killing.  The lowest
+possible value, \-1000, is equivalent to disabling OOM\-killing entirely for
+that task, since it will always report a badness score of 0.
+
+Consequently, it is very simple for user space to define the amount of
+memory to consider for each task.  Setting a \fIoom_score_adj\fP value of +500,
+for example, is roughly equivalent to allowing the remainder of tasks
+sharing the same system, cpuset, mempolicy, or memory controller resources
+to use at least 50% more memory.  A value of \-500, on the other hand, would
+be roughly equivalent to discounting 50% of the task's allowed memory from
+being considered as scoring against the task.
+
+For backward compatibility with previous kernels, \fI/proc/[pid]/oom_adj\fP can
+still be used to tune the badness score.  Its value is scaled linearly with
+\fIoom_score_adj\fP.
+
+.\" FIXME Describe /proc/[pid]/pagemap
+.\"       Added in 2.6.25
+.\"       CONFIG_PROC_PAGE_MONITOR
+Writing to \fI/proc/[pid]/oom_score_adj\fP or \fI/proc/[pid]/oom_adj\fP will
+change the other with its scaled value.
+.TP 
+\fI/proc/[pid]/root\fP
+UNIX と Linux では、 ファイルシステムのルート (/) をプロセスごとに別々に
+できる。これはシステムコール \fBchroot\fP(2) によって設定する。 このファイルは
+プロセスのルートディレクトリを指すシンボリックリンクで、 exe や fd/* など
+と同じような動作をする。
+
+.\" The following was still true as at kernel 2.6.13
+.\" FIXME Describe /proc/[pid]/seccomp
+.\"       Added in 2.6.12
+.\" FIXME Describe /proc/[pid]/sessionid
+.\"       Added in 2.6.25; read-only; only readable by real UID
+.\"       CONFIG_AUDITSYSCALL
+.\" FIXME Describe /proc/[pid]/sched
+.\"       Added in 2.6.23
+.\"       CONFIG_SCHED_DEBUG, and additional fields if CONFIG_SCHEDSTATS
+.\"       Displays various scheduling parameters
+.\"       This file can be written, to reset stats
+.\" FIXME Describe /proc/[pid]/schedstats and
+.\"       /proc/[pid]/task/[tid]/schedstats
+.\"       Added in 2.6.9
+.\"       CONFIG_SCHEDSTATS
+マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、 このシンボリックリンクの内容は参照できない (スレッドの終了は通常
+\fBpthread_exit\fP(3)  を呼び出しにより行われる)。
+.TP 
+\fI/proc/[pid]/smaps\fP (Linux 2.6.14 以降)
+.\"       CONFIG_PROC_PAGE_MONITOR
+このファイルは、そのプロセスの各マッピングのメモリ消費量を表示する。 マッピングのそれぞれについて、以下のような内容が表示される。
+.in +4n
+.nf
+
+08048000\-080bc000 r\-xp 00000000 03:02 13130      /bin/bash
+Size:               464 kB
+Rss:                424 kB
+Shared_Clean:       424 kB
+Shared_Dirty:         0 kB
+Private_Clean:        0 kB
+Private_Dirty:        0 kB
+
+.fi
+.in
+最初の行には、 \fI/proc/[pid]/maps\fP で表示されるマッピングと同じ情報が表示される。 残りの行には、マッピングのサイズ、現在 RAM
+上に存在するマッピングの量、 マッピング内の共有ページのうちクリーンなページ数、ダーティなページ数、
+マッピング内のプライベートページのうちクリーンなページ数、 ダーティなページ数、を示す。
+
+このファイルが存在するのは、カーネルのコンフィギュレーション・オプション \fBCONFIG_MMU\fP を有効にした場合だけである。
+.TP 
+\fI/proc/[pid]/stat\fP
+プロセスの状態についての情報。 これは \fBps\fP(1)  で使われ、 \fI/usr/src/linux/fs/proc/array.c\fP
+で定義されている。
+
+各フィールドを順番に、 \fBscanf\fP(3)  のフォーマット指定子付きで以下に示す。
+.RS
+.TP  12
+\fIpid\fP %d
+(1) プロセス ID。
+.TP 
+\fIcomm\fP %s
+(2) 括弧でくくられた実行形式のファイル名。実行形式がスワップアウトされているかどうかによらず、見ることができる。
+.TP 
+\fIstate\fP %c
+(3) "RSDZTW" のどれか 1 文字。 R は実行中 (running)、 S は割り込み可能な休眠状態 (sleeping in an
+interruptible wait)、 D は割り込み不可能なディスクスリープの待機状態 (waiting in uninterruptible
+disk sleep)、 Z はゾンビ状態 (zombie)、 T はトレースされている (traced) か (シグナルにより) 停止している状態
+(stopped)、 W はページング中 (paging) を表している。
+.TP 
+\fIppid\fP %d
+(4) 親プロセスの PID。
+.TP 
+\fIpgrp\fP %d
+(5) プロセスのプロセスグループ ID。
+.TP 
+\fIsession\fP %d
+(6) プロセスのセッション ID。
+.TP 
+\fItty_nr\fP %d
+(7) プロセスの制御端末 (マイナー・デバイス番号はビット 31〜20 と 7〜0 にまたがって格納され、 メジャー・デバイス番号はビット 15〜8
+に格納される)。
+.TP 
+\fItpgid\fP %d
+.\" This field and following, up to and including wchan added 0.99.1
+(8) プロセスの制御端末のフォアグランド・プロセス・グループの ID。
+.TP 
+\fIflags\fP %u (Linux 2.6.22 より前は %lu)
+(9) プロセスのカーネルフラグワード。 ビットの意味は、 \fI<linux/sched.h>\fP で定義されている PF_*
+を参照すること。 詳細はカーネルのバージョンに依存する。
+.TP 
+\fIminflt\fP %lu
+(10) プロセスが引き起こしたマイナーフォールト (minor fault、ディスクから メモリページへのロードを必要としないフォールト) の回数。
+.TP 
+.\" field 11
+\fIcminflt\fP %lu
+(11) (そのプロセスが終了を待っている) 子プロセスが引き起こしたマイナーフォールトの回数。
+.TP 
+\fImajflt\fP %lu
+(12) プロセスが引き起こしたメジャーフォールト (major fault、ディスクからメモリページへのロードを必要とするフォールト) の回数。
+.TP 
+\fIcmajflt\fP %lu
+(13) (そのプロセスが終了を待っている) 子プロセスが引き起こしたメジャーフォールトの回数。
+.TP 
+\fIutime\fP %lu
+(14) このプロセスがユーザーモードでスケジューリングされた時間の合計。 clock tick 単位で計測される
+(\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。 この値にはゲスト時間 \fIguest_time\fP (仮想 CPU
+の実行に消費された時間)
+も含まれる。これは、ゲスト時間のフィールドを認識しないアプリケーションにおいて、ゲスト時間分を計算に入れ損ねないようにするためである。
+.TP 
+\fIstime\fP %lu
+(15) プロセスのカーネルモードでの実行時間 (単位 jiffies)。 このプロセスがカーネルモードでスケジューリングされた時間の合計。 clock
+tick 単位で計測される (\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。
+.TP 
+\fIcutime\fP %ld
+(16) このプロセスの子プロセスで、終了待ち (waited\-for) のプロセスが、 ユーザモードでスケジューリングされた時間の合計。 clock
+tick 単位で計測される (\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。 (\fBtimes\fP(2)  も参照すること。)
+この値にはゲスト時間 \fIcguest_time\fP (仮想 CPU を実行するのに消費した時間、下記参照) も含まれる。
+.TP 
+\fIcstime\fP %ld
+(17) このプロセスの子プロセスで、終了待ち (waited\-for) のプロセスが、カーネルモードでスケジューリングされた時間の合計。 clock
+tick 単位で計測される (\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。
+.TP 
+\fIpriority\fP %ld
+(18) (Linux 2.6 の場合の説明) リアルタイム・スケジューリングポリシー (下記の
+\fIpolicy ;\fP \fBsched_setscheduler\fP(2) 参照) で動作しているプロセスでは、 この
+値はスケジューリング優先度を反転した値 (スケジューリング優先度を マイナスにし
+た値) となる。値は \-2 から \-100 までの範囲の数値で、 それぞれリアルタイム優先
+度の 1 から 9 に対応する。 リアルタイム以外のスケジューリングポリシーで動作し
+ているプロセスでは、 この値はカーネル内で管理されている nice 値そのもの
+(\fBsetpriority\fP(2)) となる。 カーネルは nice 値を 0 (高) から 39 (低) の範囲
+の値として保持しており、 それぞれユーザに見える nice 値の \-20 から 19 に対応
+する。
+
+.\" And back in kernel 1.2 days things were different again.
+Linux 2.6 より前では、このプロセスに割り当てられたスケジューリング 重みを変換した値が表示されていた。
+.TP 
+\fInice\fP %ld
+.\" Back in kernel 1.2 days things were different.
+.\" .TP
+.\" \fIcounter\fP %ld
+.\" The current maximum size in jiffies of the process's next timeslice,
+.\" or what is currently left of its current timeslice, if it is the
+.\" currently running process.
+.\" .TP
+.\" \fItimeout\fP %u
+.\" The time in jiffies of the process's next timeout.
+.\" timeout was removed sometime around 2.1/2.2
+(19) nice 値 (\fBsetpriority\fP(2) 参照)。 19 (最低優先) から \-20 (最高優先)
+の範囲の値である。
+.TP 
+\fInum_threads\fP %ld
+(20) このプロセスのスレッド数 (Linux 2.6 以降)。 カーネル 2.6 より前では、このフィールドは削除されたフィールドの 場所埋めとして
+0 にハードコードされていた。
+.TP 
+.\" field 21
+\fIitrealvalue\fP %ld
+(21) インターバルタイマによって、次に \fBSIGALRM\fP がプロセスへ送られるまでの時間 (単位 jiffies)。 カーネル 2.6.17
+以降では、このフィールドはメンテナンスされなくなり、 0 にハードコードされている。
+.TP 
+\fIstarttime\fP %llu (Linux 2.6 より前は %lu)
+(22) The time the process started after system boot.  In kernels before
+Linux 2.6, this value was expressed in jiffies.  Since Linux 2.6, the value
+is expressed in clock ticks (divide by \fIsysconf(_SC_CLK_TCK)\fP).
+.TP 
+\fIvsize\fP %lu
+(23) 仮想メモリのサイズ。単位はバイト。
+.TP 
+\fIrss\fP %ld
+(24) Resident Set Size。プロセスが持っている実メモリ上のページ数。
+これはちょうどテキスト、データ、スタック空間に使われているページ数である。 デマンドロードされていないページや
+スワップアウトされたページの数は含んでいない。
+.TP 
+\fIrsslim\fP %lu
+(25) このプロセスの rss の現在のソフト・リミット (バイト単位)。 \fBgetrlimit\fP(2) の \fBRLIMIT_RSS\fP
+の説明を参照。
+.TP 
+\fIstartcode\fP %lu
+(26) プログラムテキストが実行可能であるような領域の先頭アドレス。
+.TP 
+\fIendcode\fP %lu
+(27) プログラムテキストが実行可能であるような領域の末尾アドレス。
+.TP 
+\fIstartstack\fP %lu
+(28) スタックの開始アドレス (すなわち、スタックの底)。
+.TP 
+\fIkstkesp\fP %lu
+(29) 現在の ESP (スタックポインタ) の値。 プロセスのカーネルスタックページにある。
+.TP 
+\fIkstkeip\fP %lu
+(30) 現在の EIP (インストラクションポインタ) の値。
+.TP 
+.\" field 31
+\fIsignal\fP %lu
+(31) 処理待ちのシグナルのビットマップ。 10
+進数で表示される。このフィールドは廃止予定である。リアルタイム・シグナルに関する情報は表示されないからである。代わりに
+\fI/proc/[pid]/status\fP を使うこと。
+.TP 
+\fIblocked\fP %lu
+(32) ブロックされた (blocked) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。
+リアルタイム・シグナルに関する情報は表示されないからである。 代わりに \fI/proc/[pid]/status\fP を使うこと。
+.TP 
+\fIsigignore\fP %lu
+(33) 無視された (ignored) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。
+リアルタイム・シグナルに関する情報は表示されないからである。 代わりに \fI/proc/[pid]/status\fP を使うこと。
+.TP 
+\fIsigcatch\fP %lu
+(34) 捕捉された (caught) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。
+リアルタイム・シグナルに関する情報は表示されないからである。 代わりに \fI/proc/[pid]/status\fP を使うこと。
+.TP 
+\fIwchan\fP %lu
+(35) プロセスが待っている「チャネル」。これはシステムコールのアドレスであり、
+文字名が必要ならば (アドレスとシステムコール名との) 対応表から見つけられる
+(もし \fI/etc/psdatabase\fP [訳注: このファイル名はパッケージによる] を更新
+しているならば、 \fIps \-l\fP して WCHAN フィールドを見よ)。
+.TP 
+\fInswap\fP %lu
+.\" nswap was added in 2.0
+(36) スワップされたページ数 (メンテナンスされていない)。
+.TP 
+\fIcnswap\fP %lu
+.\" cnswap was added in 2.0
+(37) 子プロセスの \fInswap\fP の累計 (メンテナンスされていない)。
+.TP 
+\fIexit_signal\fP %d (Linux 2.1.22 以降)
+(38) プロセスが死んだときに親プロセスに送られるシグナル。
+.TP 
+\fIprocessor\fP %d (Linux 2.2.8 以降)
+(39) このプロセスを最後に実行した CPU の番号。
+.TP 
+\fIrt_priority\fP %u (Linux 2.5.19 以降; Linux 2.6.22 より前は %lu)
+(40) リアルタイム・スケジューリングの優先度。 リアルタイム・ポリシーの元でスケジューリングされるプロセスでは 1 から 99 の範囲の値となり、
+リアルタイム以外のスケジューリングポリシーのプロセスでは 0 となる (\fBsched_setscheduler\fP(2)  参照)。
+.TP 
+.\" field 41
+\fIpolicy\fP %u (Linux 2.5.19 以降; Linux 2.6.22 より前は %lu)
+(41) スケジューリング・ポリシー (\fBsched_setscheduler\fP(2)  参照)。 値は、 \fIlinux/sched.h\fP の
+SCHED_* 定数を使ってデコードすればよい。
+.TP 
+\fIdelayacct_blkio_ticks\fP %llu (Linux 2.6.18 以降)
+(42) (clock tick (100分の1秒) 単位での) ブロック I/O の総遅延量。
+.TP 
+\fIguest_time\fP %lu (Linux 2.6.24 以降)
+(43) プロセスのゲスト時間 (ゲスト OS の仮想 CPU を実行するのに消費された時間)。 clock tick 単位で計測される
+(\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。
+.TP 
+\fIcguest_time\fP %ld (Linux 2.6.24 以降)
+(44) プロセスの子プロセスのゲスト時間。 clock tick 単位で計測される (\fIsysconf(_SC_CLK_TCK)\fP
+で割った値が表示される)。
+.RE
+.TP 
+\fI/proc/[pid]/statm\fP
+(ページ単位で計測した) メモリ使用量についての情報を提供する。 各列は以下の通りである。
+.in +4n
+.nf
+
+.\" (not including libs; broken, includes data segment)
+.\" (including libs; broken, includes library text)
+size       プログラムサイズの総計
+           (\fI/proc/[pid]/status\fP の VmSize と同じ)
+resident   実メモリ上に存在するページ
+           (\fI/proc/[pid]/status\fP の VmRSS と同じ)
+share      共有ページ (ファイルと関連付けられているページ)
+text       テキスト (コード)
+lib        ライブラリ (Linux 2.6 では未使用)
+data       データ + スタック
+dt         ダーティページ (Linux 2.6 では未使用)
+.fi
+.in
+.TP 
+\fI/proc/[pid]/status\fP
+\fI/proc/[pid]/stat\fP と \fI/proc/[pid]/statm\fP にある多くの情報を、人間が解析しやすい形式で提供する。
+以下に例を示す。
+.in +4n
+.nf
+
+$\fB cat /proc/$$/status\fP
+Name:   bash
+State:  S (sleeping)
+Tgid:   3515
+Pid:    3515
+PPid:   3452
+TracerPid:      0
+Uid:    1000    1000    1000    1000
+Gid:    100     100     100     100
+FDSize: 256
+Groups: 16 33 100
+VmPeak:     9136 kB
+VmSize:     7896 kB
+VmLck:         0 kB
+VmHWM:      7572 kB
+VmRSS:      6316 kB
+VmData:     5224 kB
+VmStk:        88 kB
+VmExe:       572 kB
+VmLib:      1708 kB
+VmPTE:        20 kB
+Threads:        1
+SigQ:   0/3067
+SigPnd: 0000000000000000
+ShdPnd: 0000000000000000
+SigBlk: 0000000000010000
+SigIgn: 0000000000384004
+SigCgt: 000000004b813efb
+CapInh: 0000000000000000
+CapPrm: 0000000000000000
+CapEff: 0000000000000000
+CapBnd: ffffffffffffffff
+Cpus_allowed:   00000001
+Cpus_allowed_list:      0
+Mems_allowed:   1
+Mems_allowed_list:      0
+voluntary_ctxt_switches:        150
+nonvoluntary_ctxt_switches:     545
+.fi
+.in
+.IP
+フィールドの詳細は以下の通りである。
+.RS
+.IP * 2
+\fIName\fP: このプロセスにより実行されたコマンド。
+.IP *
+\fIState\fP: プロセスの現在の状態。 "R (running; 実行中)", "S (sleeping; 休眠状態)", "D (disk
+sleep; ディスク待ちの休眠状態)", "T (stopped; 停止状態)", "T (tracing stop; トレースによる停止)", "Z
+(zombie; ゾンビ状態)", "X (dead; 死亡)" のいずれかである。
+.IP *
+\fITgid\fP: スレッドグループ ID (すなわち、プロセス ID)。
+.IP *
+\fIPid\fP: スレッド ID (\fBgettid\fP(2)  参照)。
+.IP *
+\fIPPid\fP: 親プロセスの PID。
+.IP *
+\fITracerPid\fP: このプロセスをトレースしているプロセスの PID (トレースされていない場合は 0)。
+.IP *
+\fIUid\fP, \fIGid\fP: 実 UID/GID、実効 UID/GID、保存 set\-UID/GID、ファイルシステム UID/GID。
+.IP *
+\fIFDSize\fP: 現在割り当てられているファイルディスクリプタのスロット数。
+.IP *
+\fIGroups\fP: 補助グループのリスト。
+.IP *
+\fIVmPeak\fP: 仮想メモリサイズのピーク値。
+.IP *
+\fIVmSize\fP: 仮想メモリサイズ。
+.IP *
+\fIVmLck\fP: ロックされているメモリサイズ (\fBmlock\fP(3) 参照)。
+.IP *
+\fIVmHWM\fP: 実メモリ上に存在するページサイズ (resident set size)  のピーク値 ("high water mark")。
+.IP *
+\fIVmRSS\fP: 実メモリ上に存在するページサイズ。
+.IP *
+\fIVmData\fP, \fIVmStk\fP, \fIVmExe\fP: データ、スタック、テキストセグメントのサイズ。
+.IP *
+\fIVmLib\fP: 共有ライブラリ・コードのサイズ。
+.IP *
+\fIVmPTE\fP: ページ・テーブル・エントリのサイズ (Linux 2.6.10 以降)。
+.IP *
+\fIThreads\fP: このスレッドが属するプロセスのスレッド数。
+.IP *
+\fISigQ\fP: このフィールドにはスラッシュで区切られた 2 つの数字が入っている。この数字はこのプロセスの実ユーザ ID
+宛にキューイングされたシグナルに関するものである。一つ目の数字は、この実ユーザ ID
+宛に現在キューイングされているシグナル数である。二つ目の数字は、このプロセス宛にキューイングされたシグナル数に関するリソース上限値である
+(\fBgetrlimit\fP(2) の \fBRLIMIT_SIGPENDING\fP の説明を参照)。
+.IP *
+\fISigPnd\fP, \fIShdPnd\fP: スレッド宛およびプロセス全体宛の処理待ちシグナルの数 (\fBpthreads\fP(7),
+\fBsignal\fP(7)  参照)。
+.IP *
+\fISigBlk\fP, \fISigIgn\fP, \fISigCgt\fP: ブロックされるシグナル、無視されるシグナル、捕捉待ちのシグナルを 示すマスク値
+(\fBsignal\fP(7))。
+.IP *
+\fICapInh\fP, \fICapPrm\fP, \fICapEff\fP: 継承可能 (inheritable)、許可 (permitted)、実効
+(effective)  の各ケーパビリティセットで有効になっているケーパビリティのマスク値 (\fBcapabilities\fP(7)  参照)。
+.IP *
+\fICapBnd\fP: ケーパビリティ・バウンディングセット (カーネル 2.6.26 以降、 \fBcapabilities\fP(7)  参照)。
+.IP *
+\fICpus_allowed\fP: このプロセスが実行を許可されている CPU のマスク値 (Linux 2.6.24 以降、 \fBcpuset\fP(7)
+参照)。
+.IP *
+\fICpus_allowed_list\fP: 前項と同じだが、「リスト形式」での表示 (Linux 2.6.26 以降、 \fBcpuset\fP(7)
+参照)。
+.IP *
+\fIMems_allowed\fP: このプロセスが使用できるメモリノードのマスク値 (Linux 2.6.24 以降、 \fBcpuset\fP(7)
+参照)。
+.IP *
+\fIMems_allowed_list\fP: 前項と同じだが、「リスト形式」での表示 (Linux 2.6.26 以降、 \fBcpuset\fP(7)
+参照)。
+.IP *
+\fIvoluntary_context_switches\fP, \fInonvoluntary_context_switches\fP:
+自発的/非自発的なコンテキストスイッチの回数 (Linux 2.6.23 以降)。
+.RE
+.TP 
+\fI/proc/[pid]/task\fP (Linux 2.6.0\-test6 以降)
+このディレクトリには、そのプロセスのスレッド情報を含む サブディレクトリが 1 スレッドにつき 1 つ置かれる。
+各サブディレクトリの名前はスレッドのスレッド ID (\fI[tid]\fP)  を示す数字である \fB(\fPgettid\fB(2)\fP を参照)。
+これらの各サブディレクトリには、 \fI/proc/[pid]\fP ディレクトリ以下と同じ名前と内容のファイル群がある。
+すべてのスレッドで共有される属性の場合、 \fItask/[tid]\fP サブディレクトリ以下の各ファイルの内容は 親ディレクトリ
+\fI/proc/[pid]\fP の対応するファイルと同じになることだろう (例えば、マルチスレッド・プロセスではファイル
+\fItask/[tid]/cwd\fP はいずれも親ディレクトリ内の \fI/proc/[pid]/cwd\fP
+と同じ値を持つことになる。なぜなら、一つのプロセスに属すすべての スレッドは作業ディレクトリを共有するからである)。 スレッド毎に独立な属性の場合、
+\fItask/[tid]\fP サブディレクトリ以下の各ファイルは異なる値を持つことがある (例えば、ファイル \fItask/[tid]/status\fP
+はスレッド毎に異なる値を持つ可能性がある)。
+
+.\" The following was still true as at kernel 2.6.13
+マルチスレッドプロセスでは、メインスレッドがすでに終了している場合、 \fI/proc/[pid]/task\fP ディレクトリの内容は参照できない
+(スレッドの終了は通常 \fBpthread_exit\fP(3)  を呼び出しにより行われる)。
+.TP 
+\fI/proc/apm\fP
+Advanced Power Management のバージョンとバッテリ情報。 カーネルのコンパイル時に \fBCONFIG_APM\fP
+を定義したときに存在する。
+.TP 
+\fI/proc/bus\fP
+インストールされている各バス用にサブディレクトリがある。
+.TP 
+\fI/proc/bus/pccard\fP
+PCMCIA デバイスの情報が書かれるサブディレクトリ。 カーネルのコンパイル時に \fBCONFIG_PCMCIA\fP を定義したときに存在する。
+.TP 
+\fI/proc/bus/pccard/drivers\fP
+.TP 
+\fI/proc/bus/pci\fP
+いくつかのサブディレクトリがあり、 PCI バス・インストールされているデバイス・ デバイスドライバの情報が書かれた仮想ファイルがある。
+これらのファイルのうちいくつかは ASCII フォーマットではない。
+.TP 
+\fI/proc/bus/pci/devices\fP
+PCI デバイスの情報。 \fBlspci\fP(8)  や \fBsetpci\fP(8)  でアクセスすることができる。
+.TP 
+\fI/proc/cmdline\fP
+ブート時に Linux カーネルに渡された引き数。 引き数の受け渡しは、たいてい \fBlilo\fP(8)  や \fBgrub\fP(8)
+といったブートマネージャを使って行われる。
+.TP 
+\fI/proc/config.gz\fP (Linux 2.6 以降)
+このファイルでは、現在実行中のカーネルの構築時に使用された 設定オプションを参照できる。 書式は、 (\fImake xconfig\fP, \fImake
+config\fP などを使って) カーネルの設定を変更した際に生成される \fI.config\fP ファイルのものと同じである。
+ファイルの内容は圧縮されており、 \fBzcat\fP(1), \fBzgrep\fP(1)  などを使うと、表示や検索ができる。 ファイルが変更されていない限り、
+\fI/proc/config.gz\fP の内容は次のコマンドで得られる内容と同じである。
+.in +4n
+.nf
+
+cat /lib/modules/$(uname \-r)/build/.config
+.fi
+.in
+.IP
+\fI/proc/config.gz\fP が提供されるのは、カーネルの設定で \fBCONFIG_IKCONFIG_PROC\fP
+が有効になっている場合のみである。
+.TP 
+\fI/proc/cpuinfo\fP
+このファイルは、CPU およびシステムアーキテクチャに依存する項目を 集めたもので、リストの内容はサポートされているアーキテクチャ毎に異なる。 2
+つだけ共通の項目がある。 \fIprocessor\fP はプロセッサ番号で、 \fIbogomips\fP はカーネルの初期化時に計算されるシステム定数である。
+SMP マシンでは各 CPU についての情報が書かれている。 \fBlscpu\fP(1) コマンドはこのファイルから情報を収集する。
+.TP 
+\fI/proc/devices\fP
+メジャーデバイス番号とデバイスグループのテキスト形式のリスト。 MAKEDEV スクリプトはこのファイルを使って、
+カーネルとの整合性を保つことができる。
+.TP 
+\fI/proc/diskstats\fP (Linux 2.5.69 以降)
+このファイルには各ディスクデバイスのディスク I/O 統計情報が書かれている。 更に詳しい情報は、Linux カーネルソースファイル
+\fIDocumentation/iostats.txt\fP を参照すること。
+.TP 
+\fI/proc/dma\fP
+登録されている \fIISA\fP DMA (direct memory access) チャネルのリスト。
+.TP 
+\fI/proc/driver\fP
+空のサブディレクトリ。
+.TP 
+\fI/proc/execdomains\fP
+実行ドメインのリスト (ABI パーソナリティ)。
+.TP 
+\fI/proc/fb\fP
+カーネルのコンパイル時に \fBCONFIG_FB\fP が定義されている場合、フレームバッファの情報が書かれる。
+.TP 
+\fI/proc/filesystems\fP
+カーネルが対応しているファイルシステムのテキスト形式のリスト。 カーネルに組み込まれてコンパイルされたファイルシステムと、
+カーネルモジュールが現在ロードされているファイルシステムが列挙される (\fBfilesystems\fP(5)  参照)。 ファイルシステムに
+"nodev" という印が付いている場合、 そのファイルシステムがマウントするためのブロックデバイスを 必要としないことを意味する (例えば、
+仮想ファイルシステム、ネットワークファイルシステムなど)。
+
+ちなみに、マウント時にファイルシステムが指定されず、 どうやってもファイルシステムの種類を判定できなかった際に、 このファイルを \fBmount\fP(8)
+が使用するかもしれない。 その場合、このファイルに含まれるファイルシステムが試される (ただし、"nodev" の印がついたものは除く)。
+.TP 
+\fI/proc/fs\fP
+空のサブディレクトリ。
+.TP 
+\fI/proc/ide\fP
+このディレクトリは IDE バスをもつシステムに存在する。 各 IDE チャネルとそれに取り付けられている各デバイスごとにディレクトリがあり、
+以下のファイルが含まれている。
+
+.in +4n
+.nf
+cache              バッファサイズ (KB)
+capacity           セクタ数
+driver             ドライバのバージョン
+geometry           物理ジオメトリと論理ジオメトリ
+identify           16 進数表記
+media              メディアのタイプ
+model              製造者のモデル番号
+settings           ドライブの設定
+smart_thresholds   16 進数表記
+smart_values       16 進数表記
+.fi
+.in
+
+\fBhdparm\fP(8)  ユーティリティは、分かりやすい形式で この情報にアクセスするための手段を提供する。
+.TP 
+\fI/proc/interrupts\fP
+IO デバイス毎の CPU 別の割り込み回数の記録に使われる。 Linux 2.6.24 以降、少なくとも i386 と x86_64
+アーキテクチャでは、 (デバイスと関連がない) システム内部の割り込みについても記録される。 システム内部の割り込みには、NMI
+(nonmaskable interrupt), LOC (local timer interrupt) や、SMP システムでは TLB (TLB
+flush interrupt), RES (rescheduling interrupt), CAL (remote function call
+interrupt)  などがある。 簡単に読むことのできるフォーマットで、ASCII で表記されている。
+.TP 
+\fI/proc/iomem\fP
+Linux 2.4 における I/O メモリマップ。
+.TP 
+\fI/proc/ioports\fP
+現在登録され使われている I/O ポート領域のリスト。
+.TP 
+\fI/proc/kallsyms\fP (Linux 2.5.71 以降)
+カーネルの外部シンボル定義を保持する。 \fBmodules\fP(X)  関係のツールがローダブルモジュールを動的にリンクしたり バインド (bind)
+するのに使われる。 Linux 2.5.47 以前では、微妙に異なる書式の似たようなファイルが \fIksyms\fP という名前であった。
+.TP 
+\fI/proc/kcore\fP
+このファイルはシステムの物理メモリを表現しており、 ELF コアファイル形式 (core file format) で保持されている。
+この擬似ファイルと strip されていないカーネルのバイナリ (\fI/usr/src/linux/vmlinux\fP)  [訳注:
+パッケージに依存する]) があれば、 GDB はカーネル内の任意のデータ構造の現在の状態を調べられる。
+
+このファイルの大きさは物理メモリ (RAM) のサイズに 4KB を加えた値である。
+.TP 
+\fI/proc/kmsg\fP
+このファイルは \fBsyslog\fP(2)  システムコールでカーネルメッセージを読み出す代りに使える。
+プロセスがこのファイルを読むためにはスーパーユーザー権限が必要であり、 ファイルを読み出すのは 1 つのプロセスのみに限るべきである。
+カーネルメッセージを記録するために、 \fBsyslog\fP(2)  システムコールの機能を使う syslog プロセスが稼働している場合、
+このファイルを読み出すべきではない。
+
+このファイルの中の情報は \fBdmesg\fP(1)  によって表示される。
+.TP 
+\fI/proc/ksyms\fP (Linux 1.1.23\-2.5.47)
+\fI/proc/kallsyms\fP を参照。
+.TP 
+\fI/proc/loadavg\fP
+このファイルの最初の 3 つのフィールドはロードアベレージの数値で、 1, 5, 15 分
+あたりの実行キュー内 (state R) または ディスク I/O 待ち (state D) のジョブ数
+を与える。 これは \fBuptime\fP(1) などのプログラムによって得られる値と同じである。
+4 番目のフィールドはスラッシュ (/) で区切られた 2 つの数値から構成される。
+この数値のうち最初のものは、現在実行可能なカーネルスケジュールエンティティ
+(プロセス、スレッド) の数である。スラッシュの後の数値は、現在システム上に
+存在するカーネルスケジュールエンティティの数である。 5 番目のフィールドは
+システム上に最も最近生成されたプロセスの PID である。
+.TP 
+\fI/proc/locks\fP
+このファイルは現在のファイルロック (\fBflock\fP(2) と \fBfcntl\fP(2))  とリース (\fBfcntl\fP(2))  を表示する。
+.TP 
+\fI/proc/malloc\fP (Linux 2.2 以前のみ)
+.\" It looks like this only ever did something back in 1.0 days
+コンパイルのときに \fBCONFIGDEBUGMALLOC\fP が定義されているときのみ、このファイルは存在する。
+.TP 
+\fI/proc/meminfo\fP
+This file reports statistics about memory usage on the system.  It is used
+by \fBfree\fP(1)  to report the amount of free and used memory (both physical
+and swap)  on the system as well as the shared memory and buffers used by
+the kernel.  Each line of the file consists of a parameter name, followed by
+a colon, the value of the parameter, and an option unit of measurement
+(e.g., "kB").  The list below describes the parameter names and the format
+specifier required to read the field value.  Except as noted below, all of
+the fields have been present since at least Linux 2.6.0.  Some fileds are
+displayed only if the kernel was configured with various options; those
+dependencies are noted in the list.
+.RS
+.TP 
+\fIMemTotal\fP %lu
+Total usable RAM (i.e. physical RAM minus a few reserved bits and the kernel
+binary code).
+.TP 
+\fIMemFree\fP %lu
+The sum of \fILowFree\fP+\fIHighFree\fP.
+.TP 
+\fIBuffers\fP %lu
+Relatively temporary storage for raw disk blocks that shouldn't get
+tremendously large (20MB or so).
+.TP 
+\fICached\fP %lu
+In\-memory cache for files read from the disk (the page cache).  Doesn't
+include \fISwapCached\fP.
+.TP 
+\fISwapCached\fP %lu
+Memory that once was swapped out, is swapped back in but still also is in
+the swap file.  (If memory pressure is high, these pages don't need to be
+swapped out again because they are already in the swap file.  This saves
+I/O.)
+.TP 
+\fIActive\fP %lu
+Memory that has been used more recently and usually not reclaimed unless
+absolutely necessary.
+.TP 
+\fIInactive\fP %lu
+Memory which has been less recently used.  It is more eligible to be
+reclaimed for other purposes.
+.TP 
+\fIActive(anon)\fP %lu (Linux 2.6.28 以降)
+[To be documented.]
+.TP 
+\fIInactive(anon)\fP %lu (Linux 2.6.28 以降)
+[To be documented.]
+.TP 
+\fIActive(file)\fP %lu (Linux 2.6.28 以降)
+[To be documented.]
+.TP 
+\fIInactive(file)\fP %lu (Linux 2.6.28 以降)
+[To be documented.]
+.TP 
+\fIUnevictable\fP %lu (Linux 2.6.28 以降)
+(From Linux 2.6.28 to 2.6.30, \fBCONFIG_UNEVICTABLE_LRU\fP was required.)  [To
+be documented.]
+.TP 
+\fIMlocked\fP %lu (Linux 2.6.28 以降)
+(From Linux 2.6.28 to 2.6.30, \fBCONFIG_UNEVICTABLE_LRU\fP was required.)  [To
+be documented.]
+.TP 
+\fIHighTotal\fP %lu
+(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)  Total amount
+of highmem.  Highmem is all memory above ~860MB of physical memory.  Highmem
+areas are for use by user\-space programs, or for the page cache.  The kernel
+must use tricks to access this memory, making it slower to access than
+lowmem.
+.TP 
+\fIHighFree\fP %lu
+(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)  Amount of free
+highmem.
+.TP 
+\fILowTotal\fP %lu
+(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)  Total amount
+of lowmem.  Lowmem is memory which can be used for everything that highmem
+can be used for, but it is also available for the kernel's use for its own
+data structures.  Among many other things, it is where everything from
+\fISlab\fP is allocated.  Bad things happen when you're out of lowmem.
+.TP 
+\fILowFree\fP %lu
+(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)  Amount of free
+lowmem.
+.TP 
+\fIMmapCopy\fP %lu (Linux 2.6.29 以降)
+(\fBCONFIG_MMU\fP is required.)  [To be documented.]
+.TP 
+\fISwapTotal\fP %lu
+Total amount of swap space available.
+.TP 
+\fISwapFree\fP %lu
+Amount of swap space that is currently unused.
+.TP 
+\fIDirty\fP %lu
+Memory which is waiting to get written back to the disk.
+.TP 
+\fIWriteback\fP %lu
+Memory which is actively being written back to the disk.
+.TP 
+\fIAnonPages\fP %lu (Linux 2.6.18 以降)
+Non\-file backed pages mapped into user\-space page tables.
+.TP 
+\fIMapped\fP %lu
+Files which have been mmaped, such as libraries.
+.TP 
+\fIShmem\fP %lu (Linux 2.6.32 以降)
+[To be documented.]
+.TP 
+\fISlab\fP %lu
+In\-kernel data structures cache.
+.TP 
+\fISReclaimable\fP %lu (Linux 2.6.19 以降)
+Part of \fISlab\fP, that might be reclaimed, such as caches.
+.TP 
+\fISUnreclaim\fP %lu (Linux 2.6.19 以降)
+Part of \fISlab\fP, that cannot be reclaimed on memory pressure.
+.TP 
+\fIKernelStack\fP %lu (Linux 2.6.32 以降)
+Amount of memory allocated to kernel stacks.
+.TP 
+\fIPageTables\fP %lu (Linux 2.6.18 以降)
+Amount of memory dedicated to the lowest level of page tables.
+.TP 
+\fIQuicklists\fP %lu (Linux 2.6.27 以降)
+(\fBCONFIG_QUICKLIST\fP is required.)  [To be documented.]
+.TP 
+\fINFS_Unstable\fP %lu (Linux 2.6.18 以降)
+NFS pages sent to the server, but not yet committed to stable storage.
+.TP 
+\fIBounce\fP %lu (Linux 2.6.18 以降)
+Memory used for block device "bounce buffers".
+.TP 
+\fIWritebackTmp\fP %lu (Linux 2.6.26 以降)
+Memory used by FUSE for temporary writeback buffers.
+.TP 
+\fICommitLimit\fP %lu (Linux 2.6.10 以降)
+Based on the overcommit ratio ('vm.overcommit_ratio'), this is the total
+amount of memory currently available to be allocated on the system.  This
+limit is adhered to only if strict overcommit accounting is enabled (mode 2
+in \fI/proc/sys/vm/overcommit_ratio\fP).  The \fICommitLimit\fP is calculated
+using the following formula:
+
+    CommitLimit = (overcommit_ratio * Physical RAM) + Swap
+
+For example, on a system with 1GB of physical RAM and 7GB of swap with a
+\fIovercommit_ratio\fP of 30, this formula yields a \fICommitLimit\fP of 7.3GB.
+For more details, see the memory overcommit documentation in the kernel
+source file \fIDocumentation/vm/overcommit\-accounting\fP.
+.TP 
+\fICommitted_AS\fP %lu
+The amount of memory presently allocated on the system.  The committed
+memory is a sum of all of the memory which has been allocated by processes,
+even if it has not been "used" by them as of yet.  A process which allocates
+1GB of memory (using \fBmalloc\fP(3)  or similar), but touches only 300MB of
+that memory will show up as using only 300MB of memory even if it has the
+address space allocated for the entire 1GB.  This 1GB is memory which has
+been "committed" to by the VM and can be used at any time by the allocating
+application.  With strict overcommit enabled on the system (mode 2
+\fI/proc/sys/vm/overcommit_memory\fP), allocations which would exceed the
+\fICommitLimit\fP (detailed above) will not be permitted.  This is useful if
+one needs to guarantee that processes will not fail due to lack of memory
+once that memory has been successfully allocated.
+.TP 
+\fIVmallocTotal\fP %lu
+Total size of vmalloc memory area.
+.TP 
+\fIVmallocUsed\fP %lu
+Amount of vmalloc area which is used.
+.TP 
+\fIVmallocChunk\fP %lu
+Largest contiguous block of vmalloc area which is free.
+.TP 
+\fIHardwareCorrupted\fP %lu (Linux 2.6.32 以降)
+(\fBCONFIG_MEMORY_FAILURE\fP is required.)  [To be documented.]
+.TP 
+\fIAnonHugePages\fP %lu (Linux 2.6.38 以降)
+(\fBCONFIG_TRANSPARENT_HUGEPAGE\fP is required.)  Non\-file backed huge pages
+mapped into user\-space page tables.
+.TP 
+\fIHugePages_Total\fP %lu
+(\fBCONFIG_HUGETLB_PAGE\fP is required.)  The size of the pool of huge pages.
+.TP 
+\fIHugePages_Free\fP %lu
+(\fBCONFIG_HUGETLB_PAGE\fP is required.)  The number of huge pages in the pool
+that are not yet allocated.
+.TP 
+\fIHugePages_Rsvd\fP %lu (Linux 2.6.17 以降)
+(\fBCONFIG_HUGETLB_PAGE\fP is required.)  This is the number of huge pages for
+which a commitment to allocate from the pool has been made, but no
+allocation has yet been made.  These reserved huge pages guarantee that an
+application will be able to allocate a huge page from the pool of huge pages
+at fault time.
+.TP 
+\fIHugePages_Surp\fP %lu (Linux 2.6.24 以降)
+(\fBCONFIG_HUGETLB_PAGE\fP is required.)  This is the number of huge pages in
+the pool above the value in \fI/proc/sys/vm/nr_hugepages\fP.  The maximum
+number of surplus huge pages is controlled by
+\fI/proc/sys/vm/nr_overcommit_hugepages\fP.
+.TP 
+\fIHugepagesize\fP %lu
+(\fBCONFIG_HUGETLB_PAGE\fP is required.)  The size of huge pages.
+.RE
+.TP 
+\fI/proc/modules\fP
+現在システムにロードされているモジュールのテキスト形式のリスト。 \fBlsmod\fP(8)  も参照。
+.TP 
+\fI/proc/mounts\fP
+カーネル 2.4.19 より前では、このファイルは現在システムにマウントされている 全てのファイルシステムのリストであった。 Linux 2.4.19
+でプロセス単位のマウント名前空間が導入されたことに伴い、 このファイルは \fI/proc/self/mounts\fP へのリンクとなった。
+\fI/proc/self/mounts\fP はそのプロセス自身のマウント名前空間のマウントポイントのリストである。 このファイルのフォーマットは
+\fBfstab\fP(5)  に記述されている。
+.TP 
+\fI/proc/mtrr\fP
+Memory Type Range Registers。 詳細は、Linux カーネルソースファイル \fIDocumentation/mtrr.txt\fP
+を参照すること。
+.TP 
+\fI/proc/net\fP
+さまざまなネットワークについての擬似ファイルで、 それぞれがネットワーク層の各種の状態を与える。 これらのファイルの内容は ASCII 形式なので、
+\fBcat\fP(1)  で読み出せる。 とはいえ基本コマンドの \fBnetstat\fP(8)  はこれらのファイルの内容のよりすっきりとした表示を提供する。
+.TP 
+\fI/proc/net/arp\fP
+アドレス解決に使われるカーネルの ARP テーブルの ASCII 可読なダンプを保持している。 動的結合されたものと固定 (preprogrammed)
+の両方の APP エントリを見ることができる。フォーマットは以下のとおり:
+
+.nf
+.in 8n
+\f(CWIP address     HW type   Flags     HW address          Mask   Device
+192.168.0.50   0x1       0x2       00:50:BF:25:68:F3   *      eth0
+192.168.0.250  0x1       0xc       00:00:00:00:00:00   *      eth0\fP
+.fi
+.in
+
+ここで IP address はマシンの IPv4 アドレス、 HW type はそのアドレスの RFC\ 826 で定められているハードウェアの形式、
+Flags は ARP 構造体 (\fI/usr/include/linux/if_arp.h\fP 内で定義されている) の内部フラグ、 HW
+address はその IP アドレスにマップされているデータリンク層のアドレス (もしわかっていれば) である。
+.TP 
+\fI/proc/net/dev\fP
+擬似ファイル dev はネットワークデバイスの状態情報を含んでいる。 これは送受信したパケット数、エラーとコリジョン (collision) の回数、
+その他の基本的な統計を与える。 これらは \fBifconfig\fP(8)  がデバイスの状態を報告するのに使われる。 フォーマットは以下のとおり:
+
+.nf
+.in 1n
+\f(CWInter\-|   Receive                                                |  Transmit
+ face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
+    lo: 2776770   11307    0    0    0     0          0         0  2776770   11307    0    0    0     0       0          0
+  eth0: 1215645    2751    0    0    0     0          0         0  1782404    4324    0    0    0   427       0          0
+  ppp0: 1622270    5552    1    0    0     0          0         0   354130    5669    0    0    0     0       0          0
+  tap0:    7714      81    0    0    0     0          0         0     7714      81    0    0    0     0       0          0\fP
+.in
+.fi
+.\" .TP
+.\" .I /proc/net/ipx
+.\" No information.
+.\" .TP
+.\" .I /proc/net/ipx_route
+.\" No information.
+.TP 
+\fI/proc/net/dev_mcast\fP
+\fI/usr/src/linux/net/core/dev_mcast.c\fP で定義されており、以下の形式である。
+.nf
+.in +5
+indx interface_name  dmi_u dmi_g dmi_address
+2    eth0            1     0     01005e000001
+3    eth1            1     0     01005e000001
+4    eth2            1     0     01005e000001
+.in
+.fi
+.TP 
+\fI/proc/net/igmp\fP
+Internet Group Management Protocol (インターネットグループ管理プロトコル)。
+\fI/usr/src/linux/net/core/igmp.c\fP で定義されている。
+.TP 
+\fI/proc/net/rarp\fP
+このファイルは \fIarp\fP と同じフォーマットで 逆アドレス解決サービス (reverse address lookup services)
+\fBrarp\fP(8)  に提供するために使われる現在の逆マップデータベースの内容を含んでいる。 RARP
+がカーネルコンフィグレーションに設定されていなければ、 このファイルは存在しない。
+.TP 
+\fI/proc/net/raw\fP
+.\" .TP
+.\" .I /proc/net/route
+.\" No information, but looks similar to
+.\" .BR route (8).
+RAW ソケットテーブルのダンプを保持している。 ほとんどの情報はデバッグ以外では
+使われない。 \&"sl" の値はソケットのカーネルハッシュスロット、
+\&"local_address" はローカルアドレスとプロトコル番号のペア
+[訳者追加: "rem_address" はリモートアドレスとプロトコル番号のペア]。
+\&"st" はソケットの内部状態。 \&"tx_queue" と "rx_queue" はカーネルメモリを
+消費している 送信/受信データキューのサイズ。 \&"tr" と "tm\->when" と
+"rexmits" フィールドは RAW では使われていない。
+\&"uid" フィールドはソケット生成者の実効 UID を保持している。
+.TP 
+\fI/proc/net/snmp\fP
+このファイルは SNMP エージェントが必要とする IP, ICMP, TCP, UDP 管理情報を ASCII データとして保持している。
+.TP 
+\fI/proc/net/tcp\fP
+TCP ソケットテーブルのダンプを保持している。 大部分の情報はデバッグ以外には
+使われない。 sl はソケットのカーネルハッシュスロットの値、 \&"local_address"
+はローカルアドレスとポート番号のペアである。 (ソケットが接続している場合は)
+\&"rem_address" はリモートアドレスとポート番号の対である。 \&"st" はソケット
+の内部状態である。 \&"tx_queue" と "rx_queue" はカーネルメモリを消費している
+送信/受信データキューのサイズ。 \&"tr" と "tm\->when" と "rexmits"
+フィールドはソケット状態のカーネル 内部情報を保持しているが、
+これらはデバッグのときにしか役に立たない。 \&"uid" フィールドはソケット
+生成者の実効 UID を保持している。
+.TP 
+\fI/proc/net/udp\fP
+UDP ソケットテーブルのダンプを保持している。 大部分の情報はデバッグ以外には
+使われない。 sl はソケットのカーネルハッシュスロットの値、 "local_address"
+はローカルアドレスとポート番号のペアである。 (ソケットが接続している場合は)
+"rem_address" はリモートアドレスとポート番号のペアである。 "st" はソケットの
+内部状態である。 "tx_queue" と "rx_queue" はカーネルメモリを消費している
+送信/受信データキューのサイズ。 "tr" と "tm\->when" と "rexmits"
+フィールドは UDP では使われていない。 "uid" フィールドはソケット生成者の
+実効 UID を保持している。 フォーマットは以下のとおり:
+
+.nf
+.in 1n
+\f(CWsl  local_address rem_address   st tx_queue rx_queue tr rexmits  tm\->when uid
+ 1: 01642C89:0201 0C642C89:03FF 01 00000000:00000001 01:000071BA 00000000 0
+ 1: 00000000:0801 00000000:0000 0A 00000000:00000000 00:00000000 6F000100 0
+ 1: 00000000:0201 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0\fP
+.in
+.fi
+.TP 
+\fI/proc/net/unix\fP
+UNIX ドメインソケットのリスト。 フォーマットは以下のとおり:
+.nf
+.sp .5
+\f(CWNum RefCount Protocol Flags    Type St Path
+ 0: 00000002 00000000 00000000 0001 03
+ 1: 00000001 00000000 00010000 0001 01 /dev/printer\fP
+.sp .5
+.fi
+
+ここで、Num はカーネルのテーブルスロット数、 RefCount はソケットを使用して
+いるユーザー数、 Protocol はいまのところいつも 0 で、Flags はソケットの状態
+を保持している カーネル内部のフラグである。 Type はいまのところいつも 1
+(UNIX ドメインのデータグラムソケットは、現在のカーネルではサポートされていない
+[訳注: 2.0.34 ではサポートされているようだ])。
+St はソケットの内部状態で、Path は(もしあれば) ソケットのパス名である。
+.TP 
+\fI/proc/partitions\fP
+各パーティションのメジャー番号とマイナー番号が書かれている。 さらに、ブロック数とパーティション名も書かれている。
+.TP 
+\fI/proc/pci\fP
+カーネルの初期化時に見つかったすべての PCI デバイスのリストと その設定。
+
+.\" FIXME /proc/sched_debug
+.\" .TP
+.\" .IR /proc/sched_debug " (since Linux 2.6.23)"
+.\" See also /proc/[pid]/sched
+このファイルは非推奨であり、新しい PCI 用の \fI/proc\fP インターフェイス (\fI/proc/bus/pci\fP)  を使うこと。
+このファイルは Linux 2.2 でオプションになった (カーネルのコンパイル時に \fBCONFIG_PCI_OLD_PROC\fP
+をセットすると利用可能であった)。 Linux 2.4 で再びオプションなしで有効に戻った。 さらに、Linux 2.6 で非推奨となり
+(\fBCONFIG_PCI_LEGACY_PROC\fP をセットするとまだ利用可能であった)、 最終的に Linux 2.6.17
+以降で完全に削除された。
+.TP 
+\fI/proc/profile\fP (Linux 2.4 以降)
+This file is present only if the kernel was booted with the \fIprofile=1\fP
+command\-line option.  It exposes kernel profiling information in a binary
+format for use by \fBreadprofile\fP(1).  Writing (e.g., an empty string) to
+this file resets the profiling counters; on some architectures, writing a
+binary integer "profiling multiplier" of size \fIsizeof(int)\fP sets the
+profiling interrupt frequency.
+.TP 
+\fI/proc/scsi\fP
+\fIscsi\fP 中間レベル擬似ファイルといくつかの SCSI 低レベルドライバの ディレクトリを含むディレクトリ。 これらのファイルは ASCII
+で表現されているので \fBcat\fP(1)  で読める。
+
+いくつかのファイルは書き込み可能で、サブシステムの設定を変更したり、 特定の機能をオン/オフすることができる。
+.TP 
+\fI/proc/scsi/scsi\fP
+カーネルが知っているすべての SCSI デバイスのリスト。 このリストは起動時に (コンソールで) 見られるものとほぼ同じである。 scsi
+は現在のところ \fIadd\-single\-device\fP コマンドのみをサポートしている。 これによりルート (root)
+は既知のデバイスリストへ活線挿抜 (hotplugged)  デバイスを加えることができる。
+
+次のコマンドを実行すると、
+.in +4n
+.nf
+
+echo \(aqscsi add\-single\-device 1 0 5 0\(aq > /proc/scsi/scsi
+
+.fi
+.in
+ホストアダプタ scsi1 は SCSI チャネル 0 で ID 5 LUN 0 のデバイスを探す。 もしこのアドレスに既知のデバイスがあるか、
+不正なアドレスであったならばエラーが返る。
+.TP 
+\fI/proc/scsi/[drivername]\fP
+いまのところ \fI[drivername]\fP は NCR53c7xx, aha152x, aha1542, aha1740, aic7xxx,
+buslogic, eata_dma, eata_pio, fdomain, in2000, pas16, qlogic, scsi_debug,
+seagate, t128, u15\-24f, ultrastore, wd7000 のどれかである。 少なくとも 1 つの SCSI
+ホストバスアダプタ (HBA) に ドライバが割り当てられていると、そのドライバに対応したディレクトリが現れる。 それぞれのディレクトリには、
+登録されたホストアダプタに対応してファイルが作られる。 このファイルの名前は、システムの初期化の際に ホストアダプタに割り当てられた番号になる。
+
+これらのファイルを読めばドライバとホストアダプタの設定や 統計などを見ることができる。
+
+これらのファイルへの書き込みはホストアダプタごとに異なる動作を引き起こす。 たとえば \fIlatency\fP と \fInolatency\fP
+コマンドを用いると、 ルート (root、スーパーユーザー) は eata_dma ドライバの隠し測定コードの オン/オフを切り替えることができる。
+また \fI lockup\fP と \fIunlock\fP コマンドを用いると、ルートは scsi_debug ドライバがシミュレートするバスロックアップ
+(bus lockup) を 制御することができる。
+.TP 
+\fI/proc/self\fP
+このディレクトリはプロセスに (プロセス自身の)  \fI/proc\fP ファイルシステムへのアクセスを参照させる。 これは \fI/proc\fP 内の
+(このプロセスの) プロセス ID が名前となっている ディレクトリと全く同一である。
+.TP 
+\fI/proc/slabinfo\fP
+Linux 2.6.16 以降では、 カーネル設定オプション \fBCONFIG_SLAB\fP が有効の場合にのみ、このファイルは存在する。
+カーネルキャッシュの情報。 \fI/proc/slabinfo\fP のフィールドは以下のとおり。
+.in +4n
+.nf
+
+cache\-name
+num\-active\-objs
+total\-objs
+object\-size
+num\-active\-slabs
+total\-slabs
+num\-pages\-per\-slab
+.fi
+.in
+
+詳細は \fBslabinfo\fP(5)  を参照すること。
+.TP 
+\fI/proc/stat\fP
+カーネル/システムの統計。 アーキテクチャによって異なる。 共通エントリには以下のものが含まれる。
+.RS
+.TP 
+\fIcpu  3357 0 4313 1362393\fP
+.\" 1024 on Alpha and ia64
+The amount of time, measured in units of USER_HZ (1/100ths of a second on
+most architectures, use \fIsysconf(_SC_CLK_TCK)\fP to obtain the right value),
+that the system spent in various states:
+.RS
+.TP 
+\fIuser\fP
+(1) Time spent in user mode.
+.TP 
+\fInice\fP
+(2) Time spent in user mode with low priority (nice).
+.TP 
+\fIsystem\fP
+(3) Time spent in system mode.
+.TP 
+\fIidle\fP
+.\" FIXME Actually, the following info about the /proc/stat 'cpu' field
+.\"       does not seem to be quite right (at least in 2.6.12 or 3.6):
+.\"       the idle time in /proc/uptime does not quite match this value
+(4) Time spent in the idle task.  This value should be USER_HZ times the
+second entry in the \fI/proc/uptime\fP pseudo\-file.
+.TP 
+\fIiowait\fP (Linux 2.5.41 以降)
+(5) Time waiting for I/O to complete.
+.TP 
+\fIirq\fP (Linux 2.6.0\-test4 以降)
+(6) Time servicing interrupts.
+.TP 
+\fIsoftirq\fP (Linux 2.6.0\-test4 以降)
+(7) Time servicing softirqs.
+.TP 
+\fIsteal\fP (Linux 2.6.11 以降)
+(8) 盗まれた時間 (stolen time)。仮想化環境での動作時に他のオペレーティングシステムにより消費された時間である。
+.TP 
+\fIguest\fP (Linux 2.6.24 以降)
+.\" See Changelog entry for 5e84cfde51cf303d368fcb48f22059f37b3872de
+(9) Linux カーネルの制御下のゲストオペレーティングシステムの仮想 CPU の 実行に消費された時間。
+.TP 
+\fIguest_nice\fP (Linux 2.6.33 以降)
+.\" commit ce0e7b28fb75cb003cfc8d0238613aaf1c55e797
+(10) nice が適用されたゲスト (Linux カーネルの制御下のゲストオペレーティングシステムの仮想 CPU) の 実行に消費された時間。
+.RE
+.TP 
+\fIpage 5741 1808\fP
+システムが (ディスクから) ページイン/ページアウトしたページ数。
+.TP 
+\fIswap 1 0\fP
+スワップイン/スワップアウトされたページ数。
+.TP 
+.\" FIXME The following is not the full picture for the 'intr' of
+.\"       /proc/stat on 2.6:
+\fIintr 1462898\fP
+この行はシステム起動時以降に処理された割り込みの回数を示す。 最初の欄は処理された割り込み全ての合計であり、それ以降の欄は
+個々の割り込みについての合計数である。
+.TP 
+\fIdisk_io: (2,0):(31,30,5764,1,2) (3,0):\fP...
+(メジャー番号, ディスクインデックス番号):(情報なし (noinfo), 読み込み回数, 読み込みブロック数, 書き出し回数, 書き出しブロック数)
+.br
+(Linux 2.4 のみ)
+.TP 
+\fIctxt 115315\fP
+コンテクスト・スイッチの延べ回数。
+.TP 
+\fIbtime 769041601\fP
+起動時刻、紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC)) からの秒数。
+.TP 
+\fIprocesses 86031\fP
+システム起動時からの延べフォーク (fork) 数。
+.TP 
+\fIprocs_running 6\fP
+実行中状態のプロセス数 (Linux 2.5.45 以降)。
+.TP 
+\fIprocs_blocked 2\fP
+I/O 完了待ちで停止 (blocked) しているプロセス数 (Linux 2.5.45 以降)。
+.RE
+.TP 
+\fI/proc/swaps\fP
+使用中のスワップ領域。 \fBswapon\fP(8)  も参照すること。
+.TP 
+\fI/proc/sys\fP
+このディレクトリ (1.3.57 以降に存在) はカーネル変数に対応するいくつかの
+ファイルとサブディレクトリを含む。 これらの変数は読み出し可能である。
+また場合によっては \fI/proc\fP ファイルシステムや、 (非推奨の) システムコール
+\fBsysctl\fP(2) を用いて書き換えることもできる。
+.TP 
+\fI/proc/sys/abi\fP (Linux 2.4.10 以降)
+.\" On some systems, it is not present.
+このディレクトリにはアプリケーションのバイナリ情報が入ったファイルが置かれる。 更に詳しい情報は、 Linux カーネルソースファイル
+\fIDocumentation/sysctl/abi.txt\fP を参照すること。
+.TP 
+\fI/proc/sys/debug\fP
+このディレクトリは空の場合もある。
+.TP 
+\fI/proc/sys/dev\fP
+このディレクトリにはデバイス特有の情報 (たとえば \fIdev/cdrom/info\fP)  が含まれる。
+このディレクトリが空になっているシステムもある。
+.TP 
+\fI/proc/sys/fs\fP
+このディレクトリには、ファイルシステムに関連するカーネル変数用の
+ディレクトリとサブディレクトリが含まれる。
+.TP 
+\fI/proc/sys/fs/binfmt_misc\fP
+このディレクトリ以下のファイルについてのドキュメントは、 Linux カーネルソースの \fIDocumentation/binfmt_misc.txt\fP
+にある。
+.TP 
+\fI/proc/sys/fs/dentry\-state\fP (Linux 2.2 以降)
+このファイルには、ディレクトリキャッシュ (dcache) の状態に関する情報が 入っている。ファイルには、 \fInr_dentry\fP,
+\fInr_unused\fP, \fIage_limit\fP (秒単位の age), \fIwant_pages\fP (システムがリクエストしたページ数),
+ダミーの 2 つの値、 という 6 つの数字が書かれている。
+.RS
+.IP * 2
+\fInr_dentry\fP は割り当てられた dentry (dcache エントリ) の数である。 このフィールドは Linux 2.2
+では使用されない。
+.IP *
+\fInr_unused\fP は未使用の dentry 数である。
+.IP *
+.\" looks like this is unused in kernels 2.2 to 2.6
+\fIage_limit\fP は、メモリが不足している場合に次に dcache entry を再要求できるように なるまでの残り時間 (秒数) である。
+.IP *
+.\" looks like this is unused in kernels 2.2 to 2.6
+\fIwant_pages\fP は、カーネルが shrink_dcache_pages() を呼び出したが dcache がまだ縮小されていない場合に、0
+以外の値となる。
+.RE
+.TP 
+\fI/proc/sys/fs/dir\-notify\-enable\fP
+このファイルは \fBfcntl\fP(2)  に記述されている \fIdnotify\fP インターフェースをシステム全体で無効にしたり有効にしたりする。
+このファイルに値 0 が書かれている場合はインターフェースが無効になり、 値 1 の場合は有効になる。
+.TP 
+\fI/proc/sys/fs/dquot\-max\fP
+このファイルにはキャッシュされるディスク quota エントリの最大数が書かれている。 (2.4 系の)
+システムの中には、このファイルが存在しないものもある。 キャッシュされるディスク quota エントリの空きが非常に少なく、
+とても多くのシステムユーザーが同時に存在する場合、 この制限を上げるといいかもしれない。
+.TP 
+\fI/proc/sys/fs/dquot\-nr\fP
+このファイルには割り当てられているディスク quota のエントリ数と、 空いているディスク quota のエントリ数が書かれている。
+.TP 
+\fI/proc/sys/fs/epoll\fP (Linux 2.6.28 以降)
+このディレクトリには、ファイル \fImax_user_watches\fP がある。 これらは、 \fIepoll\fP
+インタフェースが消費するカーネルメモリ量を制限するのに使用できる。 詳細は \fBepoll\fP(7)  を参照。
+.TP 
+\fI/proc/sys/fs/file\-max\fP
+This file defines a system\-wide limit on the number of open files for all
+processes.  (See also \fBsetrlimit\fP(2), which can be used by a process to set
+the per\-process limit, \fBRLIMIT_NOFILE\fP, on the number of files it may
+open.)  If you get lots of error messages in the kernel log about running
+out of file handles (look for "VFS: file\-max limit <number>
+reached"), try increasing this value:
+.br
+
+.br
+.nf
+\f(CW    echo 100000 > /proc/sys/fs/file\-max\fP
+.fi
+
+\fIfile\-max\fP に書かれている値は、カーネル定数 \fBNR_OPEN\fP に制限される。
+
+\fI/proc/sys/fs/file\-max\fP を増やした場合は、 \fI/proc/sys/fs/inode\-max\fP を新しい
+\fI/proc/sys/fs/file\-max\fP の値の 3\-4 倍に増やしておくこと。 こうしないと inode を使い果たしてしまうだろう。
+
+特権プロセス (\fBCAP_SYS_ADMIN\fP) は \fIfile\-max\fP 上限を上書きできる。
+.TP 
+\fI/proc/sys/fs/file\-nr\fP
+This (read\-only) file contains three numbers: the number of allocated file
+handles (i.e., the number of files presently opened); the number of free
+file handles; and the maximum number of file handles (i.e., the same value
+as \fI/proc/sys/fs/file\-max\fP).  If the number of allocated file handles is
+close to the maximum, you should consider increasing the maximum.  Before
+Linux 2.6, the kernel allocated file handles dynamically, but it didn't free
+them again.  Instead the free file handles were kept in a list for
+reallocation; the "free file handles" value indicates the size of that
+list.  A large number of free file handles indicates that there was a past
+peak in the usage of open file handles.  Since Linux 2.6, the kernel does
+deallocate freed file handles, and the "free file handles" value is always
+zero.
+.TP 
+\fI/proc/sys/fs/inode\-max\fP
+このファイルには、メモリ内 inode の最大値が書かれている。 (2.4 系の) システムによっては、このファイルが存在しないかもしれない。 この値は
+\fIfile\-max\fP の値の 3\-4 倍にすべきである。 これは \fIstdin\fP, \fIstdout\fP, ネットワークソケットを扱うにも inode
+が必要なためである。 日常的に inode を使い果たしている場合は、この値を増やす必要がある。
+.TP 
+\fI/proc/sys/fs/inode\-nr\fP
+このファイルには、 \fIinode\-state\fP の最初の 2 つの値が書かれている。
+.TP 
+\fI/proc/sys/fs/inode\-state\fP
+このファイルには 7 個の値が書かれている: \fInr_inodes,\fP \fInr_free_inodes\fP, \fIpreshrink\fP と 4
+つのダミーの値である。 \fInr_inodes\fP はシステムが確保する inode の数である。 Linux は 1 度に 1 ページ分いっぱいに
+nr_inode を確保するので、この値が \fIinode\-max\fP より幾分大きくなることもある。 \fInr_free_inodes\fP は空いている
+inode の数を表す。 \fInr_inodes\fP > \fIinode\-max\fP の場合、 \fIpreshrink\fP は 0 以外の値になる。
+この場合システムは inode をさらに確保するのではなく、 inode リストを切り詰める必要がある。
+.TP 
+\fI/proc/sys/fs/inotify\fP (Linux 2.6.13 以降)
+このディレクトリには、ファイル \fImax_queued_events\fP, \fImax_user_instances\fP, and
+\fImax_user_watches\fP がある。これらは、 \fIinotify\fP インタフェースが消費するカーネルメモリ量を制限するのに利用できる。
+詳細は \fBinotify\fP(7)  を参照。
+.TP 
+\fI/proc/sys/fs/lease\-break\-time\fP
+このファイルは、ファイルを保持しているプロセスに対して カーネルがシグナルを送り、
+他のプロセスがそのファイルをオープンするのを待っていることを通知してから、 そのプロセスに対してカーネルがファイルのリース (lease, 貸し出し)
+(\fBfcntl\fP(2)  を参照) を許す猶予期間を指定する。 リースホルダ (lease holder: ファイルの貸し出しを受けているプロセス)
+が 猶予期間中にリースを削除するか階級を低くしない場合、 カーネルはファイルのリースを強制的に止める。
+.TP 
+\fI/proc/sys/fs/leases\-enable\fP
+このファイルはシステム全体でのファイルリース (\fBfcntl\fP(2)  を参照) を有効または無効にする。 ファイルに値 0
+が書き込まれている場合、リースは無効である。 0 以外の場合にはリースは有効である。
+.TP 
+\fI/proc/sys/fs/mqueue\fP (Linux 2.6.6 以降)
+このディレクトリにはファイル \fImsg_max\fP, \fImsgsize_max\fP, and \fIqueues_max\fP がある。これらは POSIX
+メッセージキューで使用されるリソースの 制御を行う。 詳細は \fBmq_overview\fP(7)  を参照。
+.TP 
+\fI/proc/sys/fs/overflowgid\fP と \fI/proc/sys/fs/overflowuid\fP
+これらのファイルにより、ユーザーは固定 UID と固定 GID の値を変更できる。 デフォルトは 65534 である。 Linux の UID と
+GID は 32 ビットであるが、 16 ビットの UID と GID しかサポートしないファイルシステムもある。
+このようなファイルシステムが書き込みを許可してマウントされた場合、 65535 を超える UID と GID は、
+ディスクに書き込まれる前にオーバーフロー値に変換される。
+.TP 
+\fI/proc/sys/fs/pipe\-max\-size\fP (Linux 2.6.35 以降)
+このファイルの値により、 \fBfcntl\fP(2) の \fBF_SETPIPE_SZ\fP
+操作で増やすことができるパイプ容量の上限値が定義される。この上限は非特権プロセスにのみ適用される。このファイルのデフォルト値は 1,048,576
+である。このファイルに設定した値は切り上げられて、実装側で利用するのに都合のよい値に変更される場合がある。切り上げられた値を確認するには、値を設定した後でこのファイルの内容を表示すればよい。このファイルに設定できる最小値はシステムのページサイズである。
+.TP 
+\fI/proc/sys/fs/protected_hardlinks\fP (Linux 3.6 以降)
+.\" commit 800179c9b8a1e796e441674776d11cd4c05d61d7
+When the value in this file is 0, no restrictions are placed on the creation
+of hard links (i.e., this is the historical behaviour before Linux 3.6).
+When the value in this file is 1, a hard link can be created to a target
+file only if one of the following conditions is true:
+.RS
+.IP * 3
+The caller has the \fBCAP_FOWNER\fP capability.
+.IP *
+The file system UID of the process creating the link matches the owner (UID)
+of the target file (as described in \fBcredentials\fP(7), a process's file
+system UID is normally the same as its effective UID).
+.IP *
+All of the following conditions are true:
+.RS 4
+.IP \(bu 3
+the target is a regular file;
+.IP \(bu
+the target file does not have its set\-user\-ID permission bit enabled;
+.IP \(bu
+the target file does not have both its set\-group\-ID and group\-executable
+permission bits enabled; and
+.IP \(bu
+the caller has permission to read and write the target file (either via the
+file's permissions mask or because it has suitable capabilities).
+.RE
+.RE
+.IP
+The default value in this file is 0.  Setting the value to 1 prevents a
+longstanding class of security issues caused by hard\-link\-based
+time\-of\-check, time\-of\-use races, most commonly seen in world\-writable
+directories such as \fI/tmp\fP.  The common method of exploiting this flaw is
+to cross privilege boundaries when following a given hard link (i.e., a root
+process follows a hard link created by another user).  Additionally, on
+systems without separated partitions, this stops unauthorized users from
+"pinning" vulnerable set\-user\-ID and set\-group\-ID files against being
+upgraded by the administrator, or linking to special files.
+.TP 
+\fI/proc/sys/fs/protected_symlinks\fP (Linux 3.6 以降)
+.\" commit 800179c9b8a1e796e441674776d11cd4c05d61d7
+When the value in this file is 0, no restrictions are placed on following
+symbolic links (i.e., this is the historical behaviour before Linux 3.6).
+When the value in this file is 1, symbolic links are followed only in the
+following circumstances:
+.RS
+.IP * 3
+the file system UID of the process following the link matches the owner
+(UID) of the symbolic link (as described in \fBcredentials\fP(7), a process's
+file system UID is normally the same as its effective UID);
+.IP *
+the link is not in a sticky world\-writable directory; or
+.IP *
+the symbolic link and and its parent directory have the same owner (UID)
+.RE
+.IP
+A system call that fails to follow a symbolic link because of the above
+restrictions returns the error \fBEACCES\fP in \fIerrno\fP.
+.IP
+The default value in this file is 0.  Setting the value to 1 avoids a
+longstanding class of security issues based on time\-of\-check, time\-of\-use
+races when accessing symbolic links.
+.TP 
+\fI/proc/sys/fs/suid_dumpable\fP (Linux 2.6.13 以降)
+.\" The following is based on text from Documentation/sysctl/kernel.txt
+このファイルの値により、set\-user\-ID されたバイナリや、 保護がかかった (protected) バイナリ / tainted な
+(汚染された; ライセンスがカーネルと適合しない) バイナリに対して、コアダンプファイルを 生成するかどうかが決定される。 以下の
+3つの値を指定することができる:
+.RS
+.TP 
+\fI0\ (default)\fP
+この値を指定すると、以前と同じ (Linux 2.6.13 より前の) 動作をする。 (\fBseteuid\fP(2), \fBsetgid\fP(2)
+などを呼び出すことや、set\-user\-ID や set\-group\-ID されたプログラムを 実行することで) 資格情報 (credentials)
+が変更されているプロセスや、 プロセスの実行バイナリの読み出し許可がないプロセスに対して、 コアダンプを生成しない。
+.TP 
+\fI1\ ("debug")\fP
+すべてのプロセスで、可能であればコアダンプを行う。 コアダンプファイルの所有者は、ダンプを行うプロセスのファイルシステム UID
+となり、セキュリティ上の考慮は行われない。 この値は、システムデバッグの場面だけを想定して設けられている。 ptrace のチェックも行われない。
+.TP 
+\fI2\ ("suidsafe")\fP
+通常はダンプされないようなバイナリ (上記の "0" 参照) を root だけが読み出し可能な形でダンプする。
+この場合、ユーザはそのコアダンプファイルを削除することはできるが、 読むことはできない。 セキュリティ上の理由から、このモードのコアダンプでは、
+既存のダンプファイルや他のファイルを上書きすることはない。 このモードは、管理者が通常の環境で問題を解析しようとする際に 適している。
+.IP
+.\" 9520628e8ceb69fa9a4aee6b57f22675d9e1b709
+.\" 54b501992dd2a839e94e76aa392c392b55080ce8
+Additionally, since Linux 3.6, \fI/proc/sys/kernel/core_pattern\fP must either
+be an absolute pathname or a pipe command, as detailed in \fBcore\fP(5).
+Warnings will be written to the kernel log if \fIcore_pattern\fP does not
+follow these rules, and no core dump will be produced.
+.RE
+.TP 
+このファイルはスーパブロックの値を制御する。
+この値はカーネルがマウントできるファイルシステムの最大値になる。 現在、 \fIsuper\-max\fP で許可されているファイルシステム数以上に
+マウントする必要がある場合は、この値を増加させるだけでよい。
+.TP 
+\fI/proc/sys/fs/super\-nr\fP
+このファイルには現在マウントされているファイルシステム数が書かれている。
+.TP 
+\fI/proc/sys/kernel\fP
+このディレクトリには、以下で説明する様々なカーネルパラメータを 制御するためのファイルが配置されている。
+.TP 
+\fI/proc/sys/kernel/acct\fP
+このファイルには 3 つの値が含まれている: \fIhighwater\fP, \fIlowwater\fP, \fIfrequency\fP である。
+BSD\-style process accounting が有効になっている場合、 これら 3 つの値が動作を制御する。
+ログファイルのあるファイルシステムの空き領域が \fIlowwater\fP パーセント以下になった場合は、ログ記録を一時停止する。 空き領域が
+\fIhighwater\fP パーセント以上になった場合に、ログ記録を再開する。 \fIfrequency\fP はカーネルが空き領域のチェックをする頻度である
+(単位は秒)。 デフォルトの値は、4, 2, 30 である。 つまり、空き領域が 2% 以下になるとログ記録を一時停止し、 空き領域が 4%
+以上となったときに再開する。 空き領域についての情報は 30 秒間有効である点に注意すること。
+.TP 
+\fI/proc/sys/kernel/cap_last_cap\fP (since Linux 3.2)
+See \fBcapabilities\fP(7).
+.TP 
+\fI/proc/sys/kernel/cap\-bound\fP (Linux 2.2 to 2.6.24 以降)
+\fI/proc/sys/kernel/cap\-bound\fP このファイルにはカーネルの \fIcapability bounding set\fP (符号付き
+10 進数表現) の値が書かれている。 \fBexecve\fP(2)  中は、このセットとプロセスに許可されている権限の AND がとられる。 Linux
+2.6.25 以降では、システム全体のケーパビリティバウンディングセットは なくなり、スレッド単位のバウンディングセットに置き換えられた。
+\fBcapabilities\fP(7)  を参照。
+.TP 
+\fI/proc/sys/kernel/core_pattern\fP
+\fBcore\fP(5)  参照。
+.TP 
+\fI/proc/sys/kernel/core_uses_pid\fP
+\fBcore\fP(5)  参照。
+.TP 
+\fI/proc/sys/kernel/ctrl\-alt\-del\fP
+このファイルはキーボードの Ctrl\-Alt\-Del の扱いを制御する。 このファイルにある値が 0 の場合、 Ctrl\-Alt\-Del が捕捉されると
+\fBinit\fP(8)  プログラムに送られて、正しく再起動される。 値が 0 より大きい場合、Vulcan Nerve Pinch (tm)
+に反応して、 Linux はダーティバッファを同期させることなく、すぐに再起動を行う。 注意: プログラム (dosemu など) に "raw"
+モードのキーボードがある場合、 ctrl\-alt\-del はカーネルの tty レイヤーに到達する前に プログラムに遮断され、
+プログラムに送られてどのように扱うかが決められる。
+.TP 
+\fI/proc/sys/kernel/dmesg_restrict\fP (Linux 2.6.37 以降)
+.\" commit 620f6e8e855d6d447688a5f67a4e176944a084e8
+The value in this file determines who can see kernel syslog contents.  A
+value of 0 in this file imposes no restrictions.  If the value is 1, only
+privileged users can read the kernel syslog.  (See \fBsyslog\fP(2)  for more
+details.)  Since Linux 3.4, only users with the \fBCAP_SYS_ADMIN\fP capability
+may change the value in this file.
+.TP 
+\fI/proc/sys/kernel/domainname\fP と \fI/proc/sys/kernel/hostname\fP
+これらのファイルは、コマンド \fBdomainname\fP(1), \fBhostname\fP(1)  と全く同じ方法で、 マシンの NIS/YP
+ドメイン名とホスト名の設定に使える。 すなわち
+
+.in +4n
+.nf
+#\fB echo \(aqdarkstar\(aq > /proc/sys/kernel/hostname\fP
+#\fB echo \(aqmydomain\(aq > /proc/sys/kernel/domainname\fP
+.fi
+.in
+
+は、以下と同じ効果がある。
+
+.in +4n
+.nf
+#\fB hostname \(aqdarkstar\(aq\fP
+#\fB domainname \(aqmydomain\(aq\fP
+.fi
+.in
+
+注意: 典型的な darkstar.frop.org という名前には、 ホスト名 "darkstar" と DNS (Internet Domain
+Name Server)  ドメイン名 "frop.org" が含まれているが、DNS ドメイン名と NIS (Network Information
+Service) または YP (Yellow Pages) のドメイン名を混同してはならない。 一般にこれら 2 つのドメイン名は異なる。
+詳細な議論は、 \fBhostname\fP(1)  の man ページを参照すること。
+.TP 
+\fI/proc/sys/kernel/hotplug\fP
+このファイルはホットプラグ・ポリシー・エージェントのパスが書かれている。 このファイルのデフォルト値は \fI/sbin/hotplug\fP である。
+.TP 
+\fI/proc/sys/kernel/htab\-reclaim\fP
+(PowerPC のみ) このファイルを 0 以外の値に設定すると、 PowerPC htab (カーネルソースファイル
+\fIDocumentation/powerpc/ppc_htab.txt\fP 参照) を、システムがアイドルループになるたびに切り詰める。
+.TP 
+\fI/proc/sys/kernel/kptr_restrict\fP (Linux 2.6.38 以降)
+.\" 455cd5ab305c90ffc422dd2e0fb634730942b257
+.\" commit 411f05f123cbd7f8aa1edcae86970755a6e2a9d9
+.\" commit 620f6e8e855d6d447688a5f67a4e176944a084e8
+The value in this file determines whether kernel addresses are exposed via
+\fI/proc\fP files and other interfaces.  A value of 0 in this file imposes no
+restrictions.  If the value is 1, kernel pointers printed using the \fI%pK\fP
+format specifier will be replaced with zeros unless the user has the
+\fBCAP_SYSLOG\fP capability.  If the value is 2, kernel pointers printed using
+the \fI%pK\fP format specifier will be replaced with zeros regardless of the
+user's capabilities.  The initial default value for this file was 1, but the
+default was changed to 0 in Linux 2.6.39.  Since Linux 3.4, only users with
+the \fBCAP_SYS_ADMIN\fP capability can change the value in this file.
+.TP 
+\fI/proc/sys/kernel/l2cr\fP
+(PowerPC のみ) このファイルには G3 プロセッサボードの L2 キャッシュを制御するフラグが含まれる。 0 の場合、キャッシュは無効になる。
+0 以外の場合は有効になる。
+.TP 
+\fI/proc/sys/kernel/modprobe\fP
+このファイルには、カーネルモジュールローダへのパスが含まれる。 デフォルトの値は \fI/sbin/modprobe\fP
+である。このファイルは、\fBCONFIG_MODULES\fP オプション (Linux 2.6.26 以前では \fBCONFIG_KMOD\fP)
+を有効にしてカーネルが作成されている場合にのみ存在する。 このファイルについては、Linux カーネルソースファイル
+\fIDocumentation/kmod.txt\fP (カーネル 2.4 以前のみに存在) に記述されている。
+.TP 
+\fI/proc/sys/kernel/modules_disabled\fP (Linux 2.6.31 以降)
+.\" 3d43321b7015387cfebbe26436d0e9d299162ea1
+.\" From Documentation/sysctl/kernel.txt
+A toggle value indicating if modules are allowed to be loaded in an
+otherwise modular kernel.  This toggle defaults to off (0), but can be set
+true (1).  Once true, modules can be neither loaded nor unloaded, and the
+toggle cannot be set back to false.  The file is present only if the kernel
+is built with the \fBCONFIG_MODULES\fP option enabled.
+.TP 
+\fI/proc/sys/kernel/msgmax\fP
+このファイルは、System V メッセージキューに書き込まれる 1 つのメッセージの 最大バイト数を、システム全体で制限する。
+.TP 
+\fI/proc/sys/kernel/msgmni\fP (since Linux 2.4)
+This file defines the system\-wide limit on the number of message queue
+identifiers.
+.TP 
+\fI/proc/sys/kernel/msgmnb\fP
+このファイルは、 \fImsg_qbytes\fP の設定を初期化するシステム全体のパラメータで
+ある。 \fImsg_qbytes\fP は以降で作成されるメッセージキューで使われる。
+\fImsg_qbytes\fP 設定では、メッセージキューに書き込まれる最大バイト数を指定する。
+.TP 
+\fI/proc/sys/kernel/ostype\fP と \fI/proc/sys/kernel/osrelease\fP
+これらのファイルは文字列 \fI/proc/version\fP の各部分を与える。
+.TP 
+\fI/proc/sys/kernel/overflowgid\fP と \fI/proc/sys/kernel/overflowuid\fP
+これらのファイルは \fI/proc/sys/fs/overflowgid\fP と \fI/proc/sys/fs/overflowuid\fP
+を複製したものである。
+.TP 
+\fI/proc/sys/kernel/panic\fP
+このファイルはカーネル変数 \fIpanic_timeout\fP への読み出しと書き込みのアクセスを与える。 この値が 0 ならば、パニック時にカーネルは
+(無限) ループに入る。 0 でなければ、その秒数だけ待ってから自動的に再起動する。 ソフトウェア watchdog ドライバを使っている場合、
+推奨される設定は 60 である。
+.TP 
+\fI/proc/sys/kernel/panic_on_oops\fP (Linux 2.5.68 以降)
+このファイルは、oops や BUG が起こった場合のカーネルの動作を制御する。 ファイルに 0 が書かれている場合、システムは操作を続行しようとする。
+1 が書かれている場合、システムは (klogd が oops 出力を記録する時間を与えるために) 数秒間遅延した後、 panic を起こす。
+\fI/proc/sys/kernel/panic\fP ファイルも 0 でない場合、マシンは再起動される。
+.TP 
+\fI/proc/sys/kernel/pid_max\fP (Linux 2.5.34 以降)
+.\" Prior to 2.6.10, pid_max could also be raised above 32768 on 32-bit
+.\" platforms, but this broke /proc/[pid]
+.\" See http://marc.theaimsgroup.com/?l=linux-kernel&m=109513010926152&w=2
+このファイルは、PID をいくつで終了にするかを指定する (すなわち、このファイルの値は最大 PID より 1 大きい)。 このファイルのデフォルト値は
+32768 であり、 その場合には以前のカーネルと同じ PID の範囲になる。 32ビットのプラットフォームでは、 \fIpid_max\fP の最大値は
+32768 である。 64ビットのプラットフォームでは、 2^22 (\fBPID_MAX_LIMIT\fP, 約 4,000,000)
+までの任意の値を設定できる。
+.TP 
+\fI/proc/sys/kernel/powersave\-nap\fP (PowerPC のみ)
+このファイルにはフラグが書かれている。 フラグが設定されると、Linux\-PPC は 省電力の "nap" モードを使う。
+設定されない場合は、"doze" モードが使われる。
+.TP 
+\fI/proc/sys/kernel/printk\fP
+このファイルにある 4 つの値は、 \fIconsole_loglevel\fP, \fIdefault_message_loglevel\fP,
+\fIminimum_console_loglevel\fP, \fIdefault_console_loglevel\fP である。
+これらの値はエラーメッセージを表示したり記録したりする \fIprintk()\fP の動作に影響する。 各 loglevel の情報については、
+\fBsyslog\fP(2)  を参照すること。 優先度が \fIconsole_loglevel\fP 以上のメッセージは、コンソールに表示される。
+優先度が明示されていないメッセージは、優先度が \fIdefault_message_level\fP のときに表示される。
+\fIminimum_console_loglevel\fP は \fIconsole_loglevel\fP に設定できる最小 (最高) の値である。
+\fIdefault_console_loglevel\fP は \fIconsole_loglevel\fP のデフォルトの値である。
+.TP 
+\fI/proc/sys/kernel/pty\fP (Linux 2.6.4 以降)
+このディレクトリは、UNIX 98 疑似端末 (\fBpts\fP(4) を参照) の数に関連する
+2 つのファイルを含む。
+.TP 
+\fI/proc/sys/kernel/pty/max\fP
+このファイルは疑似端末の最大数を定義する。
+.TP 
+\fI/proc/sys/kernel/pty/nr\fP
+この読み出し専用のファイルは、現在いくつの疑似端末が使われているかを表す。
+.TP 
+\fI/proc/sys/kernel/random\fP
+このディレクトリは、ファイル \fI/dev/random\fP の操作を制御する様々なパラメータが書かれている。 詳細は \fBrandom\fP(4)
+を参照。
+.TP 
+\fI/proc/sys/kernel/real\-root\-dev\fP
+このファイルは Linux カーネルソースファイル \fIDocumentation/initrd.txt\fP に記述されている。
+.TP 
+\fI/proc/sys/kernel/reboot\-cmd\fP (Sparc のみ) 
+このファイルは SPARC ROM/Flash ブートローダに引き数を渡す方法を 提供しているように思われる。
+再起動後に何をするかを指定しているのだろうか?
+.TP 
+\fI/proc/sys/kernel/rtsig\-max\fP
+(2.6.7 までのカーネルにのみ存在する。 \fBsetrlimit\fP(2)  を参照すること)  このファイルはシステムで発行される POSIX
+real\-time (queued) signal の 最大数を調整するのに使用される。
+.TP 
+\fI/proc/sys/kernel/rtsig\-nr\fP
+(2.6.7 までのカーネルにのみ存在する)  このファイルは現在キューに入っている POSIX real\-time signal の数を表す。
+.TP 
+\fI/proc/sys/kernel/sched_rr_timeslice_ms\fP (since Linux 3.9)
+See \fBsched_rr_get_interval\fP(2).
+.TP 
+\fI/proc/sys/kernel/sem\fP (Linux 2.4 以降)
+このファイルには System V IPC セマフォを制限する 4 つの値が書かれている。 これらのフィールドは次の順番に並んでいる:
+.RS
+.IP SEMMSL 8
+セマフォ集合ごとのセマフォ数の最大値。
+.IP SEMMNS 8
+システム全体での、全てのセマフォ集合におけるセマフォ数の制限。
+.IP SEMOPM 8
+\fBsemop\fP(2)  コールに指定されるオペレーション数の最大値。
+.IP SEMMNI 8
+システム全体でのセマフォ識別子の最大値。
+.RE
+.TP 
+\fI/proc/sys/kernel/sg\-big\-buff\fP
+このファイルは、汎用 SCSI デバイス (sg) のバッファサイズの最大値を表す。 今はこれを変更することはできないが、 コンパイル時に
+\fIinclude/scsi/sg.h\fP を編集して \fBSG_BIG_BUFF\fP の値を変えれば変更できる。
+ただし、この値を変更する理由はないだろう。
+.TP 
+\fI/proc/sys/kernel/shm_rmid_forced\fP (since Linux 3.1)
+.\" commit b34a6b1da371ed8af1221459a18c67970f7e3d53
+.\" See also Documentation/sysctl/kernel.txt
+If this file is set to 1, all System V shared memory segments will be marked
+for destruction as soon as the number of attached processes falls to zero;
+in other words, it is no longer possible to create shared memory segments
+that exist independently of any attached process.
+.IP
+The effect is as though a \fBshmctl\fP(2)  \fBIPC_RMID\fP is performed on all
+existing segments as well as all segments created in the future (until this
+file is reset to 0).  Note that existing segments that are attached to no
+process will be immediately destroyed when this file is set to 1.  Setting
+this option will also destroy segments that were created, but never
+attached, upon termination of the process that created the segment with
+\fBshmget\fP(2).
+.IP
+Setting this file to 1 provides a way of ensuring that all System V shared
+memory segments are counted against the resource usage and resource limits
+(see the description of \fBRLIMIT_AS\fP in \fBgetrlimit\fP(2))  of at least one
+process.
+.IP
+Because setting this file to 1 produces behavior that is nonstandard and
+could also break existing applications, the default value in this file is
+0.  Only set this file to 1 if you have a good understanding of the
+semantics of the applications using System V shared memory on your system.
+.TP 
+\fI/proc/sys/kernel/shmall\fP
+このファイルには System V 共有メモリの総ページ数の システム全体での制限が書かれている。
+.TP 
+\fI/proc/sys/kernel/shmmax\fP
+このファイルを通じて、(System V IPC) 共有メモリセグメントを作成するときの 最大サイズの実行時上限 (run\-time limit)
+を取得または設定できる。 現在は 1GB までの共有メモリセグメントが カーネルでサポートされている。 この値のデフォルトは \fBSHMMAX\fP
+である。
+.TP 
+\fI/proc/sys/kernel/shmmni\fP (since Linux 2.4)
+このファイルは、システム全体で作成可能な System V 共有メモリセグメント数を指定する。
+.TP 
+\fI/proc/sys/kernel/sysrq\fP
+このファイルは、SysRq キーにより起動が許可されている関数群を制御する ものである。デフォルトでは、ファイルの内容は 1 であり、
+これは起こり得る全ての SysRq リクエストが許可されることを意味する (古いバージョンのカーネルでは、SysRq はデフォルトでは無効になっており、
+実行時に明示的に有効にする必要があったが、今はそうではない)。 このファイルで指定可能な値は以下の通り。
+
+   0 \- sysrq を完全に無効にする
+   1 \- sysrq の全ての関数を有効にする
+  >1 \- 許可する sysrq 関数のビットマスク。内訳は以下の通り。
+          2 \- コンソールのログ・レベルの制御を有効にする
+          4 \- キーボードの制御を有効にする (SAK, unraw)
+          8 \- プロセスなどのデバッグ・ダンプを有効にする
+         16 \- sync コマンドを有効にする
+         32 \- 読み出し専用での再マウントを有効にする
+         64 \- プロセスへのシグナル発行を有効にする (term, kill, oom\-kill)
+        128 \- リブート/電源オフを許可する
+        256 \- 全てのリアルタイム・タスクの nice 値の変更を許可する
+
+カーネル設定オプション \fBCONFIG_MAGIC_SYSRQ\fP が有効な場合のみ、このファイルは存在する。 詳細は、Linux
+カーネルソースファイル \fIDocumentation/sysrq.txt\fP を参照のこと。
+.TP 
+\fI/proc/sys/kernel/version\fP
+このファイルには、以下のような文字列が書かれている:
+
+    #5 Wed Feb 25 21:49:24 MET 1998
+
+\&"#5" はこのソースで構築された 5 番目のカーネルであることを意味する。 その後にある日付はカーネルが構築された時刻を表す。
+.TP 
+\fI/proc/sys/kernel/threads\-max\fP (Linux 2.3.11 以降)
+このファイルは、システム全体で作成可能なスレッド数 (タスク数) の上限を指定する。
+.TP 
+\fI/proc/sys/kernel/zero\-paged\fP (PowerPC のみ) 
+このファイルはフラグを含む。 (0 以外の値で) 有効された場合、Linux\-PPC はアイドルループで pre\-zero page
+を行うので、get_free_pages の速度が向上する可能性がある。
+.TP 
+\fI/proc/sys/net\fP
+このディレクトリにはネットワーク関係の情報が入っている。 このディレクトリにあるファイルのいくつかについては、 \fBtcp\fP(7)  や
+\fBip\fP(7)  に説明がある。
+.TP 
+\fI/proc/sys/net/core/somaxconn\fP
+このファイルは \fBlisten\fP(2)  の \fIbacklog\fP 引き数の上限値を規定する。 詳細は \fBlisten\fP(2)
+のマニュアルページを参照。
+.TP 
+\fI/proc/sys/proc\fP
+このディレクトリは空の場合もある。
+.TP 
+\fI/proc/sys/sunrpc\fP
+このディレクトリはネットワークファイルシステム (NFS) への Sun remote procedure call (遠隔手続き呼び出し)
+をサポートする。 これが存在しないシステムもある。
+.TP 
+\fI/proc/sys/vm\fP
+このディレクトリにはメモリ管理の調整、バッファやキャッシュ管理のための ファイルがある。
+.TP 
+\fI/proc/sys/vm/drop_caches\fP (Linux 2.6.16 以降)
+このファイルに書き込みを行うことで、クリーンなキャッシュ、dentry、 inode をメモリ上から外し、そのメモリを解放する。
+
+ページキャッシュを解放するには、 \fIecho 1 > /proc/sys/vm/drop_caches\fP とする。 dentry、inode
+を解放するには、 \fIecho 2 > /proc/sys/vm/drop_caches\fP とする。ページキャッシュ、dentry、inode
+を解放するには、 \fIecho 3 > /proc/sys/vm/drop_caches\fP とする。
+
+この操作は非破壊的な操作で、ダーティな (dirty) オブジェクトは 解放されないので、この操作を行う際は最初に \fBsync\fP(8)
+を実行しておくべきである。
+.TP 
+\fI/proc/sys/vm/legacy_va_layout\fP (Linux 2.6.9 以降)
+.\" The following is from Documentation/filesystems/proc.txt
+0 以外の場合、新しい 32ビットメモリマッピング配置が無効になり、 カーネルは全てのプロセスに対して従来の (カーネル 2.4 の) 配置方法を
+使用する。
+.TP 
+\fI/proc/sys/vm/memory_failure_early_kill\fP (Linux 2.6.32 以降)
+.\" The following is based on the text in Documentation/sysctl/vm.txt
+このファイルは、カーネルが処理できない訂正不能なメモリエラー (通常はメモリモジュールでの 2 ビットエラー)
+がバックグラウンドでハードウェアにより検出された際に、プロセスをどのように kill するかを制御する。
+(ページの有効なコピーがディスク上にも存在するなど)
+いくつかの場面では、カーネルはアプリケーションに影響を与えずに透過的に故障を処理する。しかし、データの最新のコピーが他にはない場合には、データ破壊が波及するのを防ぐため、カーネルはプロセスを
+kill する。
+
+このファイルは以下のいずれかの値を持つ。
+.RS
+.IP 1: 4
+データ破壊が検出されるとすぐに、故障が検出され復元できないページ (corrupted\-and\-not\-reloadable page)
+をマップしている全てのプロセスを kill する。この機能は、(カーネル内部で割り当てられたデータやスワップのキャッシュなど)
+少数のいくつかのタイプのページではサポートされていないが、大半のユーザページではこの機能は働く。
+.IP 0: 4
+データ破壊が検出されたページの全てのプロセスからの unmap のみを行い、そのページにアクセスしようとしたプロセスのみを kill する。
+.RE
+.IP
+この kill は \fIsi_code\fP に \fBBUS_MCEERR_AO\fP を設定した \fBSIGBUS\fP
+シグナルを使って行われる。プロセス側では必要であればこのシグナルを処理することができる。詳細は \fBsigaction\fP(2) を参照。
+
+この機能は、高度なマシンチェック機構を持ったアーキテクチャ/プラットフォームにおいてのみ有効であり、ハードウェア機能にも依存している。
+
+アプリケーションは \fBprctl\fP(2) の \fBPR_MCE_KILL\fP 操作を使って個別に
+\fImemory_failure_early_kill\fP の設定を上書きすることができる。
+.IP
+カーネルの設定で \fBCONFIG_MEMORY_FAILURE\fP が有効になっている場合にのみ
+存在する。
+.TP 
+\fI/proc/sys/vm/memory_failure_recovery\fP (Linux 2.6.32 以降)
+.\" The following is based on the text in Documentation/sysctl/vm.txt
+メモリ故障回復 (memory failure recovery) を有効にする
+ (プラットフォームがサポートしている場合)
+.RS
+.IP 1: 4
+回復を試みる。
+.IP 0: 4
+メモリ故障時には常に panic を起こす。
+.RE
+.IP
+カーネルの設定で \fBCONFIG_MEMORY_FAILURE\fP が有効になっている場合にのみ
+存在する。
+.TP 
+\fI/proc/sys/vm/oom_dump_tasks\fP (Linux 2.6.25 以降)
+.\" The following is from Documentation/sysctl/vm.txt
+カーネルが OOM\-killing を実行する際に、システム全体のタスク・ダンプ (カーネルスレッドを除く) を生成するかを制御する。
+ダンプには、タスク (スレッド、プロセス) 毎に以下の情報が出力される: スレッド ID、実ユーザ ID、スレッドグループ ID (プロセス ID)、
+仮想メモリサイズ、Resident Set Size (実メモリ上に存在するページサイズ)、 タスクがスケジューリングされた CPU、 oom_adj
+スコア (\fI/proc/[pid]/oom_adj\fP の説明を参照)、コマンド名。 このダンプ情報は、なぜ OOM\-killer
+が起動されたかを知り、 その原因となったならず者のタスクを特定するのに役に立つ。
+
+このファイルの内容が値 0 の場合、ダンプ情報の出力は行われない。 タスクが何千もある非常に巨大なシステムでは、
+各々のタスクについてメモリ状態をダンプするのは適切でないかもしれない。 そのようなシステムでは、ダンプ情報が必要でもないときに メモリ不足 (OOM)
+の状況で性能面の不利益が起こらないようにすべきだろう。
+
+このファイルの内容が 0 以外の場合、 OOM\-killer が実際にメモリを占有したタスクを kill する度に ダンプ情報が出力される。
+
+デフォルト値は 0 である。
+.TP 
+\fI/proc/sys/vm/oom_kill_allocating_task\fP (Linux 2.6.24 以降)
+.\" The following is from Documentation/sysctl/vm.txt
+このファイルは、メモリ不足 (OOM) の状況が起こった際に、 メモリ不足のきっかけとなったタスクを kill するかどうかを制御する。
+
+このファイルが 0 に設定された場合、 OOM\-killer はタスクリスト全体をスキャンし、経験則に基づき kill するタスクを選択する。
+通常は、kill した場合に多くのメモリが解放できる、 ならず者のメモリ占有タスクが選択される。
+
+このファイルが 0 以外に設定された場合、 OOM\-killer はメモリ不足の状況が発生するきっかけとなったタスクを 単純に kill
+するだけである。 これにより、たいていは重い処理となるタスクリストのスキャンを回避できる。
+
+\fI/proc/sys/vm/panic_on_oom\fP が 0 以外の場合、
+\fI/proc/sys/vm/oom_kill_allocating_task\fP にどのような値が入っていたとしても、
+\fI/proc/sys/vm/panic_on_oom\fP の方が優先される。
+
+デフォルト値は 0 である。
+.TP 
+\fI/proc/sys/vm/overcommit_memory\fP
+このファイルにはカーネル仮想メモリのアカウントモードが書かれている。 値は以下の通り:
+.RS
+.IP
+0: 発見的なオーバーコミット (heuristic overcommit) (これがデフォルトである)
+.br
+1: 常にオーバーコミットし、チェックしない。
+.br
+2: 常にチェックし、オーバーコミットしない。
+.RE
+.IP
+モード 0 では、 \fBMAP_NORESERVE\fP を設定して呼び出された \fBmmap\fP(2)  はチェックされない。
+またデフォルトのチェックはとても脆弱で、 プロセスを "OOM\-kill" してしまうリスクを引き起こす。 Linux 2.4 では 0
+以外の値はモード 1 を意味する。 (Linux 2.6 以降で利用可能な) モード 2 では、 システム上の仮想アドレス空間の合計が (SS +
+RAM*(r/100)) に制限されている。 ここで、SS はスワップ空間のサイズ、 RAM は物理メモリのサイズ、r はファイル
+\fI/proc/sys/vm/overcommit_ratio\fP の内容である。
+.TP 
+\fI/proc/sys/vm/overcommit_ratio\fP
+\fI/proc/sys/vm/overcommit_memory\fP の説明を参照すること。
+.TP 
+\fI/proc/sys/vm/panic_on_oom\fP (Linux 2.6.18 以降)
+.\" The following is adapted from Documentation/sysctl/vm.txt
+このファイルは、メモリ不足時にカーネルパニックを 起こすか起こさないかを制御する。
+
+このファイルに値 0 を設定すると、 カーネルの OOM\-killer がならず者のプロセスを kill する。 普通は、OOM\-killer
+がならず者のプロセスを kill することができ、 システムは何とか動き続けることができる。
+
+このファイルに値 1 を設定すると、 メモリ不足の状況が発生すると、カーネルは普通はパニックする。 しかしながら、プロセスが メモリポリシー
+(\fBmbind\fP(2)  の \fBMPOL_BIND\fP)  や cpusets (\fBcpuset\fP(7))
+を使って特定のノードへのメモリ割り当てを制限していて、 それらのノードでメモリ枯渇状態に至った場合は、 一つのプロセスが OOM\-killer により
+kill されるだけかもしれない。 この場合には、カーネルパニックは発生しない。 なぜなら、他のノードのメモリには空きがあるかもしれず、
+したがって、システム全体としてはメモリ不足の状況にまだ達していないかも しれないからである。
+
+このファイルに値 2 を設定すると、 メモリ不足の状況が発生するとカーネルは常にパニックを起こす。
+
+デフォルト値は 0 である。 1 と 2 はクラスタリングのフェイルオーバー用である。 フェイルオーバーの方針に応じてどちらかの値を選択すること。
+.TP 
+\fI/proc/sys/vm/swappiness\fP
+.\" The following is from Documentation/sysctl/vm.txt
+このファイルの値により、カーネルがどの程度激しくメモリページの スワップを行う
+かが制御される。 大きな値ほどスワップが激しくなり、小さい値ほど激しくなくなる。
+デフォルト値は 60 である。
+.TP 
+\fI/proc/sysrq\-trigger\fP (Linux 2.4.21 以降)
+このファイルに文字 character を書き込むと、 キーボードから ALT\-SysRq\-<character> を入力した場合と
+同じ SysRq 関数が起動される (\fI/proc/sys/kernel/sysrq\fP の説明を参照)。 通常、このファイルへ書き込みができるのは
+\fIroot\fP だけである。詳細については、Linux カーネルソースファイルの \fIDocumentation/sysrq.txt\fP を参照のこと。
+.TP 
+\fI/proc/sysvipc\fP
+疑似ファイル \fImsg\fP, \fIsem\fP, \fIshm\fP を含むサブディレクトリ。 これらのファイルは、現在システム上に存在する System V
+プロセス間通信 (Interprocess Communication, IPC) オブジェクト (それぞれ: メッセージキュー、セマフォ、共有メモリ)
+のリストであり、 \fBipcs\fP(1)  で取得できる情報と同じものを提供する。 これらのファイルにはヘッダがあり、理解しやすいように (1 行につき
+1 個の IPC オブジェクトの形式で) フォーマットされている。 \fBsvipc\fP(7)
+にはこれらのファイルから分かる情報の詳細な背景が書かれている。
+.TP 
+\fI/proc/tty\fP
+疑似ファイルを含むサブディレクトリ。 tty ドライバとライン設定 (line discipline) の書かれた サブディレクトリも含まれる。
+.TP 
+\fI/proc/uptime\fP
+このファイルは システム起動時から経過した時間 (秒) と アイドル (idle) しているプロセスが消費した時間 (秒) の 2 つの数を含む。
+.TP 
+\fI/proc/version\fP
+現在稼働しているカーネルのバージョン識別子である文字列。 これには \fI/proc/sys/ostype\fP,
+\fI/proc/sys/osrelease\fP, \fI/proc/sys/version\fP の内容が含まれる。 たとえばこのように:
+.nf
+.in -2
+\f(CWLinux version 1.0.9 (quinlan@phaze) #1 Sat May 14 01:51:54 EDT 1994\fP
+.in +2
+.fi
+.\" FIXME Document /proc/timer_list
+.\" .TP
+.\" .IR /proc/timer_list " (since Linux 2.6.21)"
+.\" See the 2.6.21 Change log
+.\" FIXME Document /proc/timer_stats
+.\" .TP
+.\" .IR /proc/timer_stats " (since Linux 2.6.21)"
+.\" See the 2.6.21 Change log
+.TP 
+\fI/proc/vmstat\fP (Linux 2.6 以降)
+このファイルは仮想メモリの様々な統計情報を表示する。
+.TP 
+\fI/proc/zoneinfo\fP (Linux 2.6.13 以降)
+.\" FIXME more should be said about /proc/zoneinfo
+このファイルはメモリのゾーン (memory zone) に関する情報を表示する。 仮想メモリの振舞いを分析するのに役立つ。
+.SH 注意
+ほとんどの文字列 (たとえば環境変数やコマンド行) は内部表現のままなので、
+各フィールドは NULL バイト (\(aq\e0\(aq) で区切られている。だから、
+\fIod \-c\fP や \fItr "\e000" "\en"\fP を使えば、それらはより読みやすくなる。
+また \fIecho \`cat <file>\`\fP でもよい。
+
+.\" .SH ACKNOWLEDGEMENTS
+.\" The material on /proc/sys/fs and /proc/sys/kernel is closely based on
+.\" kernel source documentation files written by Rik van Riel.
+このマニュアルは不完全であり、たぶん不正確で、しばしば更新される必要がある。
+.SH 関連項目
+\fBcat\fP(1), \fBdmesg\fP(1), \fBfind\fP(1), \fBfree\fP(1), \fBps\fP(1), \fBtr\fP(1),
+\fBuptime\fP(1), \fBchroot\fP(2), \fBmmap\fP(2), \fBreadlink\fP(2), \fBsyslog\fP(2),
+\fBslabinfo\fP(5), \fBhier\fP(7), \fBtime\fP(7), \fBarp\fP(8), \fBhdparm\fP(8),
+\fBifconfig\fP(8), \fBinit\fP(8), \fBlsmod\fP(8), \fBlspci\fP(8), \fBmount\fP(8),
+\fBnetstat\fP(8), \fBprocinfo\fP(8), \fBroute\fP(8), \fBsysctl\fP(8)
+
+Linux カーネルのソースファイル: \fIDocumentation/filesystems/proc.txt\fP,
+\fIDocumentation/sysctl/vm.txt\fP
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index dcfebe4..9311f89 100644 (file)
@@ -74,6 +74,6 @@ Numbers Authority) によって指定される。
 .UR http://www.iana.org\:/assignments\:/protocol\-numbers
 .UE
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man5/resolv.conf.5 b/manual/LDP_man-pages/draft/man5/resolv.conf.5
new file mode 100644 (file)
index 0000000..5725938
--- /dev/null
@@ -0,0 +1,197 @@
+.\" Copyright (c) 1986 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" %%%LICENSE_START(PERMISSIVE_MISC)
+.\" Redistribution and use in source and binary forms are permitted
+.\" provided that the above copyright notice and this paragraph are
+.\" duplicated in all such forms and that any documentation,
+.\" advertising materials, and other materials related to such
+.\" distribution and use acknowledge that the software was developed
+.\" by the University of California, Berkeley.  The name of the
+.\" University may not be used to endorse or promote products derived
+.\" from this software without specific prior written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\" %%%LICENSE_END
+.\"
+.\"    @(#)resolver.5  5.9 (Berkeley) 12/14/89
+.\"    $Id: resolver.5,v 8.6 1999/05/21 00:01:02 vixie Exp $
+.\"
+.\" Added ndots remark by Bernhard R. Link - debian bug #182886
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH RESOLV.CONF 5 2013\-03\-05 "" "Linux Programmer's Manual"
+.UC 4
+.SH 名前
+resolv.conf \- レゾルバ設定ファイル
+.SH 書式
+\fB/etc/resolv.conf\fP
+.SH 説明
+\fIresolver\fP は、インターネットのドメインネームシステム (DNS) へのアクセスを提供する C ライブラリのルーチン群である。
+レゾルバ設定ファイルには、レゾルバルーチンがプロセスによって最初に 起動されたときに読み込まれる情報が格納されている。
+このファイルは人間に可読なように設計されている。 キーワードと値のリストが含まれ、いろいろなタイプのレゾルバ情報を提供する。
+.LP
+このファイルが存在しない場合、問い合わせはローカルマシン上の
+ネームサーバに対してのみ行われる。ドメイン名はホスト名から決定され、
+ドメインの検索パスはドメイン名から作成される。
+.LP
+この状態を変更するための設定オプションには、以下のようなものがある。
+.TP 
+\fBnameserver\fP ネームサーバの IP アドレス
+Internet address of a name server that the resolver should query, either an
+IPv4 address (in dot notation), or an IPv6 address in colon (and possibly
+dot) notation as per RFC 2373.  Up to \fBMAXNS\fP (currently 3, see
+\fI<resolv.h>\fP) name servers may be listed, one per keyword.  If
+there are multiple servers, the resolver library queries them in the order
+listed.  If no \fBnameserver\fP entries are present, the default is to use the
+name server on the local machine.  (The algorithm used is to try a name
+server, and if the query times out, try the next, until out of name servers,
+then repeat trying all the name servers until a maximum number of retries
+are made.)
+.TP 
+\fBdomain\fP ローカルドメイン名
+このドメインにある名前の問い合わせのほとんどに、 このローカルドメインにおける短い名前を使用することができる。 \fBdomain\fP
+エントリがない場合、ドメイン名は \fBgethostname\fP(2)  で返されるローカルホスト名から決定され、 最初の \(aq.\(aq
+以降の全ての部分がドメイン名とされる。 このホスト名にもドメイン部を含んでいない場合、ルートドメインが仮定される。
+.TP 
+\fBsearch\fP ホスト名ルックアップのための検索リスト
+.\" When having a resolv.conv with a line
+.\"  search subdomain.domain.tld domain.tld
+.\" and doing a hostlookup, for example by
+.\"  ping host.anothersubdomain
+.\" it sends dns-requests for
+.\"  host.anothersubdomain.
+.\"  host.anothersubdomain.subdomain.domain.tld.
+.\"  host.anothersubdomain.domain.tld.
+.\" thus not only causing unnecessary traffic for the root-dns-servers
+.\" but broadcasting information to the outside and making man-in-the-middle
+.\" attacks possible.
+検索リストは通常ローカルドメイン名から決定される。 デフォルトでは、検索リストはローカルドメイン名のみである。 これを変更するには、\fIsearch\fP
+キーワードの後に 希望するドメイン検索パスをスペースまたはタブで区切ってリストすればよい。 ドットの数が \fIndots\fP (デフォルトでは 1)
+より少ないレゾルバの問い合わせは、 一致するものが見つかるまで検索パスの各要素を順に使って試す。 複数のサブドメインを持つ環境では、 第三者による攻撃
+(man\-in\-the\-middle attack) と ルート DNS サーバへの不必要なトラフィックを避けるために、 以下の \fBoptions
+ndots:\fP\fIn\fP を読んでほしい。 このプロセスは遅く、リストされたドメインがローカルのものでない場合、
+多大なネットワークトラフィックを発生させることに注意すること。 さらに、これらのドメインのいずれかひとつにでも適切なサーバがない場合、
+問い合わせがタイムアウトになる点にも注意すること。
+.IP
+現状では、検索リストは 6 ドメイン・計 256 文字に制限されている。
+.TP 
+\fBsortlist\fP
+このオプションを使うと、 \fBgethostbyname\fP(3)  で返されるアドレスをソートさせることができる。 sortlist は IP
+アドレスとネットマスクのペアで指定される。 ネットマスクは省略可能であり、 デフォルトではネットに対するデフォルトのネットマスクである。 IP
+アドレスとオプションのネットマスクのペアはスラッシュで区切る。 最大 10 組のペアを指定できる。 以下に例を示す。
+
+.in +4n
+sortlist 130.155.160.0/255.255.240.0 130.155.0.0
+.in
+.br
+.TP 
+\fBoptions\fP
+options により、レゾルバの内部変数を変更することができる。 書式は以下の通りである。
+.RS
+.IP
+\fBoptions\fP \fIoption\fP \fI...\fP
+.LP
+ここで \fIoption\fP は次のうちのいずれかである。
+.TP 
+\fBdebug\fP
+.\" Since glibc 2.2?
+sets \fBRES_DEBUG\fP in \fI_res.options\fP (effective only if glibc was built with
+debug support; see \fBresolver\fP(3)).
+.TP 
+\fBndots:\fP\fIn\fP
+.\" Since glibc 2.2
+「\fI最初の完全な名前での問い合わせ\fPが実行される前に、 \fBres_query\fP(3)  (\fBresolver\fP(3)  を参照)
+に与えられる名前に含まれているべきドットの数の閾値」を設定する。 \fIn\fP のデフォルトは 1 である。
+これは、名前にドットがある場合、\fIsearch list\fP の要素が付加される前に、
+その名前が完全な名前として最初に試されるということを意味している。 このオプションの値の上限は 15 であり、黙ってこの値まで切り詰められる。
+.TP 
+\fBtimeout:\fP\fIn\fP
+.\" Since glibc 2.2
+「レゾルバが他のネームサーバで問い合わせをリトライする前に、 リモートネームサーバからの応答を待つ時間」を設定する。 単位は秒で、デフォルトは
+\fBRES_TIMEOUT\fP である (現状では 5 秒、\fI<resolv.h>\fP を参照)。 このオプションの値の上限は 30
+であり、黙ってこの値まで切り詰められる。
+.TP 
+\fBattempts:\fP\fIn\fP
+「レゾルバが諦めて呼び出し元のアプリケーションにエラーを返すまでに、 ネームサーバに問い合わせを行う回数」を設定する。 デフォルトは
+\fBRES_DFLRETRY\fP 回である (現状では 2 回、\fI<resolv.h>\fP を参照)。 このオプションの値の上限は 5
+であり、黙ってこの値まで切り詰められる。
+.TP 
+\fBrotate\fP
+.\" Since glibc 2.2
+\fI_res.options\fP に RES_ROTATE を設定する。リストされているネームサーバから選ぶときに、ラウンドロビン
+(round\-robin)
+選択を行わせる。リストされている全てのサーバで問い合わせの負荷を分散する効果があり、最初にリストされたサーバに全てのクライアントが毎回最初に問い合わせを行うわけではなくなる。
+.TP 
+\fBno\-check\-names\fP
+.\" since glibc 2.2
+\fI_res.options\fP に \fBRES_NOCHECKNAME\fP を設定する。 入ってくるホスト名とメールアドレスに、 アンダースコア
+(_)・ASCII 以外の文字・制御文字といった 不正な文字が含まれていないかを調べる 最近の BIND のチェックを無効にする。
+.TP 
+\fBinet6\fP
+.\" Since glibc 2.2
+\fI_res.options\fP に \fBRES_USE_INET6\fP を設定する。このオプションが設定されると、 \fBgethostbyname\fP(3)
+関数の内部で A レコードの問い合わせを行う前に AAAA レコードの問い合わせを行うようになる。 また、AAAA レコードは見つからないが A
+レコードセットが存在する場合に、 IPv4 の応答を IPv6「トンネル形式」にマップするようになる。
+.TP 
+\fBip6\-bytestring\fP (glibc 2.3.4 以降)
+\fI_res.options\fP に \fBRES_USE_BSTRING\fP を設定する。このオプションが設定されると、IPv6 アドレスの逆引きで
+RFC\ 2673 で規定された bit\-label 形式が使用されるようになる。 このオプションが設定されない場合、nibble 形式が使用される。
+.TP 
+\fBip6\-dotint\fP/\fBno\-ip6\-dotint\fP (glibc 2.3.4 以降)
+\fI_res.options\fP への \fBRES_NOIP6DOTINT\fP のセット/クリアを行う。 このオプションがクリアされると
+(\fBip6\-dotint\fP)、 IPv6 アドレスの逆引きが (非推奨の)  \fIip6.int\fP ゾーンで行われるようになり、
+このオプションがセットされると (\fBno\-ip6\-dotint\fP)、 IPv6 アドレスの逆引きがデフォルトの \fIip6.arpa\fP
+ゾーンで行われるようになる。 このオプションはデフォルトでセットされる。
+.TP 
+\fBedns0\fP (glibc 2.6 以降)
+\fI_res.options\fP に \fBRES_USE_EDNSO\fP をセットする。これにより、RFC\ 2671 で規定されている DNS
+拡張のサポートが有効になる。
+.TP 
+\fBsingle\-request\fP (glibc 2.10 以降)
+\fI_res.options\fP に \fBRES_SNGLKUP\fP をセットする。
+glibc バージョン 2.9 以降では、 glibc はデフォルトでは
+IPv4 と IPv6 の検索を並行して実行する。
+アプライアンス DNS サーバの中には、このような問い合わせを
+適切に処理できず、検索要求がタイムアウトになってしまう。
+このオプションをセットすると、このデフォルトの動作が無効になり、
+glibc は IPv6 と IPv4 の検索を順番に実行するようになる
+(名前解決処理が若干遅くなるというデメリットがある)。
+.TP 
+\fBsingle\-request\-reopen\fP (glibc 2.9 以降)
+The resolver uses the same socket for the A and AAAA requests.  Some
+hardware mistakenly sends back only one reply.  When that happens the client
+system will sit and wait for the second reply.  Turning this option on
+changes this behavior so that if two requests from the same port are not
+handled correctly it will close the socket and open a new one before sending
+the second request.
+.RE
+.LP
+\fIdomain\fP と \fIsearch\fP キーワードは、互いに排他的である。 これらのキーワードが 2 つ以上記述されている場合、
+最後に記述されているものが有効になる。
+.LP
+システムの \fIresolv.conf\fP ファイルにある \fIsearch\fP キーワードは、 スペースで区切った検索ドメインのリストを 環境変数
+\fBLOCALDOMAIN\fP に設定することにより、各プロセス毎に上書きすることができる。
+.LP
+システムの \fIresolv.conf\fP ファイルにある \fIoptions\fP キーワードは、 上の \fBoptions\fP セクションで説明したように、
+スペースで区切ったレゾルバオプションのリストを 環境変数 \fBRES_OPTIONS\fP に設定することにより、各プロセス毎に修正することができる。
+.LP
+キーワードと値は同じ行に書かなければならない。 また、(\fBnameserver\fP のような) キーワードが行の先頭になければならない。
+値はキーワードの後にスペースで区切って続ける。
+
+セミコロン (;) かハッシュ文字 (#) で始まる行はコメントとして扱われる。
+.SH ファイル
+\fI/etc/resolv.conf\fP, \fI<resolv.h>\fP
+.SH 関連項目
+\fBgethostbyname\fP(3), \fBresolver\fP(3), \fBhostname\fP(7), \fBnamed\fP(8)
+.br
+BIND のネームサーバオペレーションガイド
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 049cb19..4db1dd1 100644 (file)
@@ -76,6 +76,6 @@ RPC プログラム番号データベース
 .SH 関連項目
 \fBgetrpcent\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e57270b..ea03be0 100644 (file)
@@ -40,6 +40,6 @@ suite を使用している場合は、 \fBlogin.defs\fP(5)  を参照するこ
 .SH 関連項目
 \fBlogin\fP(1), \fBlogin.defs\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 55bbaf7..fcd8c50 100644 (file)
@@ -155,6 +155,6 @@ telnet          23/tcp
 
 ポート番号の割り当てを定めている RFC (最新版は RFC\ 1700、別名 STD0002)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 93a5131..eca08b8 100644 (file)
@@ -54,6 +54,6 @@ shells \- ログインシェルとして有効なファイルのパス名
 .SH 関連項目
 \fBchsh\fP(1), \fBgetusershell\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 16f3f01..203dad6 100644 (file)
@@ -106,6 +106,6 @@ echo "\fIcache_name limit batchcount\fP" > /proc/slabinfo
 Linux 2.6.16 以降では、 \fI/proc/slabinfo\fP ファイルは、カーネル設定オプション \fBCONFIG_SLAB\fP
 を有効にした場合のみ存在する。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9e63e6f..4f05d4b 100644 (file)
@@ -442,6 +442,6 @@ x   垂直線 (|)
 .SH 関連項目
 \fBncurses\fP(3), \fBtermcap\fP(3), \fBterminfo\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e43bd3c..3c743e4 100644 (file)
@@ -58,6 +58,6 @@ vt320 ttys0
 .SH 関連項目
 \fBtermcap\fP(5), \fBterminfo\fP(5), \fBagetty\fP(8), \fBmingetty\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e7a5619..dbd741a 100644 (file)
@@ -110,6 +110,6 @@ UTC/local インジケータはそれぞれ 1 バイトの値として格納さ
 
 glibc ソースコードの \fItimezone/tzfile.h\fP
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8e3e49d..4db4213 100644 (file)
@@ -228,6 +228,6 @@ utmp 構造体は libc5 から libc6 で変更された。そのため昔の lib
 \fBgetutent\fP(3), \fBgetutmp\fP(3), \fBlogin\fP(3), \fBlogout\fP(3), \fBlogwtmp\fP(3),
 \fBupdwtmp\fP(3), \fBinit\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 30055ce..bd0ef92 100644 (file)
@@ -37,6 +37,6 @@ intro \- ゲームプログラムの紹介
 .SS 著者と著作権
 著者と著作権に関しては各マニュアルページのソースのヘッダを参照すること。 これらはページごとに異なる可能性があることに注意してほしい。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9e2eccb..2d3df2a 100644 (file)
@@ -418,6 +418,6 @@ main(int argc, char *argv[])
 .UR http://www.squid\-cache.org\:/~adrian\:/Reprint\-Pulavarty\-OLS2003.pdf
 .UE
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b6c95dc..491d0ee 100644 (file)
@@ -142,6 +142,6 @@ _
 \fBascii\fP(7)
 
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man7/arp.7 b/manual/LDP_man-pages/draft/man7/arp.7
new file mode 100644 (file)
index 0000000..0a81a3a
--- /dev/null
@@ -0,0 +1,206 @@
+.\" t
+.\" This man page is Copyright (C) 1999 Matthew Wilcox <willy@bofh.ai>.
+.\" %%%LICENSE_START(VERBATIM_ONE_PARA)
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" %%%LICENSE_END
+.\"
+.\" Modified June 1999 Andi Kleen
+.\" $Id: arp.7,v 1.10 2000/04/27 19:31:38 ak Exp $
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH ARP 7 2008\-11\-25 Linux "Linux Programmer's Manual"
+.SH 名前
+arp \- Linux ARP カーネルモジュール
+.SH 説明
+このカーネルプロトコルモジュールは、 RFC\ 826 で定義されている Address Resolution Protocol を
+実装したものである。 ARP は、ダイレクトに接続されたネットワーク上で、 第 2 層のハードウェアアドレスをIPv4 プロトコルアドレスに
+変換するために用いられる。ユーザーは設定の場合を除いて 通常直接このモジュールに関ることはない。
+これはカーネル内部の他のプロトコルにサービスを提供するものである。
+
+ユーザープロセスは、 \fBpacket\fP(7)  ソケットを用いれば ARP パケットを受信することができる。 ARP
+キャッシュをユーザー空間で管理することもできる。 これには \fBnetlink\fP(7)  を用いる。 ARP テーブルも制御可能で、これには任意の
+\fBAF_INET\fP ソケットに \fBioctl\fP(2)  を用いる。
+
+ARP モジュールはハードウェアアドレスからプロトコルアドレスへの マッピングのキャッシュを管理する。キャッシュの大きさには制限が
+あるので、古いエントリや利用されないエントリはガベージコレクト される。 permanent (保存) マークがつけられたエントリは、
+決してガベージコレクタによって消去されない。 ioctl を用いればキャッシュを直接操作することもできる。 また後述の \fI/proc\fP
+インタフェースによりキャッシュの振る舞いを調整できる。
+
+存在しているマッピングに対して、 正のフィードバックが一定時間ない (後述の \fI/proc\fP インタフェースを見よ) と、 近傍キャッシュエントリ
+(neighbor cache entry) は 古くなった (stale) とみなされる。 正のフィードバックは高位のレイヤーからも取得できる
+(例えば TCP ACK が成功した場合など)。 他のプロトコルは、 \fBsendmsg\fP(2)  に \fBMSG_CONFIRM\fP
+フラグを用いることによって、 フォワードプログレス (forward progress) をシグナルできる。 フォワードプログレスがなければ、 ARP
+は再びプローブを試みる。 まずローカルな arp デーモンに問合わせを行い、 更新された MAC アドレスを取得しようとする。 このリクエストに
+\fBapp_solicit\fP 回失敗すると、古い MAC アドレスがわかっている場合は、 unicast のプローブが
+\fBucaset_solicit\fP 回送られる。これにも失敗すると、新しい ARP リクエスト をネットワークにブロードキャストする。
+リクエストは、データが送信キューにある場合のみ送られる。
+
+Linux は、あるアドレスへのリクエストを受信・フォワードし、 受信したインターフェースで代理 arp が有効になっている場合には、
+自動的にそのアドレスを nonpermanent な代理 arp エントリに追加する。 そのターゲットに reject route があった場合には、
+代理 arp エントリは一切追加されない。
+.SS ioctl
+すべての \fBAF_INET\fP ソケットでは、 3 つの ioctl が使用できる。 これらは \fIstruct arpreq\fP
+へのポインタを引数に取る。
+
+.in +4n
+.nf
+struct arpreq {
+    struct sockaddr arp_pa;      /* protocol address */
+    struct sockaddr arp_ha;      /* hardware address */
+    int             arp_flags;   /* flags */
+    struct sockaddr arp_netmask; /* netmask of protocol address */
+    char            arp_dev[16];
+};
+.fi
+.in
+
+\fBSIOCSARP\fP, \fBSIOCDARP\fP, \fBSIOCGARP\fP は、それぞれ ARP マッピングを設定・削除・取得する。 ARP
+マップの設定と削除は特権が必要な操作であり、 \fBCAP_NET_ADMIN\fP 権限を持つプロセスか、実行ユーザー ID が 0 のプロセス
+でなければ実行できない。
+
+\fIarp_pa\fP は \fBAF_INET\fP アドレスでなければならず、 \fIarp_ha\fP は \fIarp_dev\fP
+で設定されたデバイスと同じタイプでなければならない。 \fIarp_dev\fP はデバイスの名前を示す、ゼロで終端された文字列である。
+.RS
+.TS
+tab(:) allbox;
+c s
+l l.
+\fIarp_flags\fP
+フラグ:意味
+ATF_COM:参照完了
+ATF_PERM:エントリを peramanent にする
+ATF_PUBL:エントリを publish する
+ATF_USETRAILERS:trailer が必要
+ATF_NETMASK:netmask を用いる
+ATF_DONTPUB:回答しない
+.TE
+.RE
+.PP
+\fBATF_NETMASK\fP フラグがセットされているときには、 \fIarp_netmask\fP が有効でなければならない。 Linux 2.2
+は代理ネットワーク ARP エントリをサポートしていないので、 これは 0xffffffff にセットしておくか、あるいは 現存の代理 arp
+エントリを削除したい場合には 0 にしておく必要がある。 \fBATF_USETRAILERS\fP は obsolete なので、用いるべきでない。
+.SS "/proc インタフェース"
+ARP では、グローバルなパラメータやインターフェースごとのパラメータを \fI/proc\fP インタフェースを通して設定することができる。
+これらのインタフェースには、 \fIproc/sys/net/ipv4/neigh/*/*\fP ファイルの読み書きによりアクセスできる。
+システムにあるそれぞれのインターフェースには、 それぞれ対応するディレクトリが \fI/proc/sys/net/ipv4/neigh/\fP 以下にある。
+"default" ディレクトリに対して設定をすると、 それ以降生成されるデバイス全てに対してその設定が用いられる。 特に指定がなければ、時間に関る
+sysctl の単位は秒である。
+.TP 
+\fIanycast_delay\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+IPv6 の近傍要請メッセージ (neighbor soliciation message)  に応答するまでの最大遅延時間 (jiffy 単位)。
+anycast のサポートはまだ実装されていない。 デフォルトは 1 秒。
+.TP 
+\fIapp_solicit\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+ユーザー空間の ARP デーモンに netlink を用いて探索させる最大回数。 これを越えるとマルチキャストによる探索に移行する
+(\fImcast_solicit\fP を見よ)。
+.TP 
+\fIbase_reachable_time\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+近傍のホストがみつかると、そのエントリは \fIbase_reachable_time\fP/2 から 3*\fIbase_reachable_time\fP/2
+の間のランダムな値の時間、有効であるとみなされる。 エントリの有効性は、高位のプロトコルからポジティブなフィードバックを
+受け取ると延長される。デフォルトは 30 秒。 このファイルは現在は非推奨であり、代わりに \fIbase_reachable_time_ms\fP
+を使うこと。
+.TP 
+\fIbase_reachable_time_ms\fP (Linux 2.6.12 以降)
+\fIbase_reachable_time\fP と同じだが、時間をミリ秒単位で測る。 デフォルトは 30000 ミリ秒である。
+.TP 
+\fIdelay_first_probe_time\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+近傍ホストのエントリが古くなったと判断された後に 最初に探索を行うまでの遅延時間。デフォルトは 5 秒。
+.TP 
+\fIgc_interval\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+ガベージ・コレクタを近傍ホストエントリに対して実行させる頻度。 デフォルトは 30 秒。
+.TP 
+\fIgc_stale_time\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+古くなった近傍ホストエントリに対してチェックを行う頻度。 近傍ホストエントリが古くなったとみなされると、そのエントリに
+データを送る前には再度解決が行われる。 デフォルトは 60 秒。
+.TP 
+\fIgc_thresh1\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+ARP キャッシュに保存するエントリ数の最小値。 この数より少ないエントリしかキャッシュになければ、 ガベージ・コレクタは実行されない。 デフォルトは
+128。
+.TP 
+\fIgc_thresh2\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+ARP キャッシュに保存されるエントリ数のソフトな最大値。 キャッシュのエントリがこの数を 5 秒間越えつづけると、 ガベージ・コレクタが実行される。
+デフォルトは 512。
+.TP 
+\fIgc_thresh3\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+ARP キャッシュに保存されるエントリ数のハードな最大値。 キャッシュのエントリがこの数を越えると、 ガベージ・コレクタはただちに実行される。
+デフォルトは 1024。
+.TP 
+\fIlocktime\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+ARP エントリをキャッシュに保存する時間の最小値 (jiffy 単位)。 可能性のあるマッピングが一つ以上ある (たいていはネットワーク設定のミス)
+場合に、 ARP キャッシュのスラッシングが起きることを防ぐ。 デフォルトは 1 秒。
+.TP 
+\fImcast_solicit\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+エントリを unreachable マークする前に、 アドレスをマルチキャスト/ブロードキャストで解決しようとする 試行回数の最大値。 デフォルトは
+3。
+.TP 
+\fIproxy_delay\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+既知の代理 ARP アドレスに対して ARP リクエストを受信した場合に、 応答前に最大 \fIproxy_delay\fP jiffy
+まで遅延する。これは場合によって生じる ネットワーク・フラッディング (network flooding) を避けるために用いる。 デフォルトは 0.8
+秒。
+.TP 
+\fIproxy_qlen\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+代理 ARP アドレスに対してキューイングできる最大のパケット数。 デフォルトは 64。
+.TP 
+\fIretrans_time\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+リクエストを再度送るまでの遅延時間 (jiffy 単位)。 デフォルトは 1 秒。 このファイルは現在は非推奨であり、代わりに
+\fIretrans_time_ms\fP を使うこと。
+.TP 
+\fIretrans_time_ms\fP (Linux 2.6.12 以降)
+リクエストを再度送るまでの遅延時間 (ミリ秒単位)。 デフォルトは 1000 ミリ秒。
+.TP 
+\fIucast_solicit\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+ARP デーモンへの問い合わせを行う前に行う unicast 探索の最大試行数 (\fIapp_solicit\fP を見よ)。デフォルトは 3。
+.TP 
+\fIunres_qlen\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+解決されていないアドレスに対して、 他のネットワーク層からキューイングできる最大パケット数。 デフォルトは 3。
+.SH バージョン
+Linux 2.0 で、 \fIstruct arpreq\fP に \fIarp_dev\fP メンバーが含まれるように変更があった。また同時に ioctl
+番号も変更された。古い ioctl は Linux 2.2 で用いることができなくなった。
+
+ネットワークに対する代理 arp エントリ (netmask が 0xffffffff でない)  は、 Linux 2.2
+で用いることができなくなった。 これはカーネルによって設定される、別のインターフェースにおける 到達可能なすべてのホストに対する自動代理 arp
+によって置き換えられた (そのインターフェースでフォワーディングと代理 arp が有効になっている場合)。
+
+\fIneigh/*\fP の各インタフェースは Linux 2.2 以前には存在しない。
+.SH バグ
+いくつかのタイマー設定は jiffy で指定されるが、 jiffy はアーキテクチャやカーネルのバージョンに依存する。 \fBtime\fP(7)
+を参照のこと。
+
+ユーザー空間からポジティブなフィードバックを送る方法が存在しない。 つまり接続指向 (connection\-oriented)
+のプロトコルをユーザー空間で 実装すると、余計な ARP トラフィックの原因となる。 なぜなら ndisc は定期的に MAC
+アドレスを再探索するからである。 同様の問題はいくつかのカーネルプロトコル (NFS over UDP など) にも存在する。
+
+この man ページでは IPv4 特有の機能と IPv4・IPv6 で共有される機能とがごっちゃになっている。
+.SH 関連項目
+\fBcapabilities\fP(7), \fBip\fP(7)
+.PP
+RFC\ 826 for a description of ARP.  RFC\ 2461 for a description of IPv6
+neighbor discovery and the base algorithms used.  Linux 2.2+ IPv4 ARP uses
+the IPv6 algorithms when applicable.
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index f7e283c..46a5f8c 100644 (file)
@@ -192,6 +192,6 @@ ASCII 規格は米国規格協会
 \fBiso_8859\-4\fP(7), \fBiso_8859\-5\fP(7), \fBiso_8859\-6\fP(7), \fBiso_8859\-7\fP(7),
 \fBiso_8859\-8\fP(7), \fBiso_8859\-9\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a32adb0..8ae4abc 100644 (file)
@@ -126,6 +126,6 @@ Linux で \fI/etc/init.d\fP)  に配置される。これらのスクリプト
 .SH 関連項目
 \fBinittab\fP(5), \fBbootparam\fP(7), \fBinit\fP(8), \fBrunlevel\fP(8), \fBshutdown\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man7/bootparam.7 b/manual/LDP_man-pages/draft/man7/bootparam.7
new file mode 100644 (file)
index 0000000..f731459
--- /dev/null
@@ -0,0 +1,890 @@
+.\" Copyright (c) 1995,1997 Paul Gortmaker and Andries Brouwer
+.\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
+.\"
+.\" This man page written 950814 by aeb, based on Paul Gortmaker's HOWTO
+.\" (dated v1.0.1, 15/08/95).
+.\" Major update, aeb, 970114.
+.\" FIXME ? The use of quotes on this page is inconsistent with the
+.\" rest of man-pages.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH BOOTPARAM 7 2013\-03\-15 Linux "Linux Programmer's Manual"
+.SH 名前
+bootparam \- Linux カーネル起動時パラメータの解説
+.SH 説明
+Linux カーネルは起動するときに「コマンドラインオプション」あるいは 「起動時パラメータ」を受け付ける。 これは一般に、
+カーネルには決定できないハードウェアのパラメータをカーネルに渡したい場合や、
+カーネルが検出するであろう値を意図的に無効にしたり変更したりする場合に用いる。
+
+カーネルが BIOS から直接起動されるとき (たとえば 'cp zImage /dev/fd0' でフロッピーにコピーしたカーネルから起動するなど)
+は、 パラメータを指定する機会はない。 ゆえに、この起動時パラメータ機能を利用するためには、 \fILILO\fP や \fIloadlin\fP
+のようにパラメータを指定できるソフトウェアを使用しなければならない。 いくつかのパラメータについては、 \fIrdev\fP
+を使ってカーネルイメージそのものを修正することもできる。 詳細は \fBrdev\fP(8)  を参照のこと。
+
+Werner Almesberger による LILO (LInux LOader) プログラムは最も広く使用されている。 LILO
+はいろいろなカーネルを選択してブートさせることができ、 設定情報をテキストファイルに保持する (\fBlilo\fP(8)  と
+\fBlilo.conf\fP(5)  を参照)。 LILO は DOS, OS/2, Linux, FreeBSD などを起動でき、 非常に柔軟である。
+
+ほかには \fIloadLin\fP もよく使われている Linux ローダである。 これは DOS のプログラムで、DOS プロンプトから
+(起動時引数とともに) Linux カーネルを起動できる (いくつかの特定のリソースが利用可能でなければならない)。 loadlin は DOS から
+Linux を起動させたい人にあっている。
+
+また loadlin は、DOS のドライバである状態に 設定しなければならないハードウェアを 使っている場合にも非常に便利である。 よくある例は
+「SoundBlaster 互換」のサウンドカードで、 これらの中には DOS のドライバを使って いくつか秘密のレジスタをいじってやらないと、 本当の
+SB 互換モードにはならないようなものがある。 まずハードウェアについてきたドライバを組み込んで DOS を起動し、 その後 loadlin を使用して
+Linux カーネルを読み込めば、 リブートによってカードの設定がリセットされるのを防げるわけだ。
+.SS 引数リスト
+カーネルのコマンドラインはスペースで区切られた文字列 (\fI起動時引数: boot arguments\fP)
+のリストから成っている。ほとんどの起動時引数は次の書式に従う。
+.IP
+name[=value_1][,value_2]...[,value_10]
+.LP
+ここで 'name' は、それに対応する値がカーネルのどの部分に渡されるものなのかを 識別するための、他と重ならないキーワードである。 書式中の 10
+という制限は実際に存在する。 現在のコードは、キーワードひとつあたり、コンマで区切られたパラメータを 10 個までしか取り扱うことができない。
+(しかし、事情が非常に複雑な場合には、同じキーワードを再度利用して 10 個以上のパラメータを与えることができるかもしれない。
+対象となるハードウェアの設定関数がそれをサポートしていれば、だが。)
+
+カーネルコマンドラインの扱いはほとんど linux/init/main.c が行なっている。 初めに、カーネルは \&'root=',
+\&'nfsroot=', 'nfsaddrs=', 'ro', 'rw', 'debug', 'init' といった特別な引数があるかをチェックする。
+これらの意味については後述する。
+
+カーネルは次に設定関数のリスト (配列 bootsetups に含まれている) をスキャンし、 指定された引数文字列 (例えば 'foo') が
+特定のデバイスやカーネルの一部に対する設定関数 ('foo_setup()') に関連付けられているかを調べる。 例えばカーネルに
+foo=3,4,5,6 のようなパラメータを与えたとすると、 カーネルは配列 bootsetups を調べて、 'foo' が登録されているか調べる。
+登録されていたら、'foo' に対応する設定関数 ('foo_setup()') をコールし、 カーネルコマンドラインに与えられた引数である 3, 4,
+5, 6 を設定関数に渡す。
+
+\&'foo=bar' という形式の引数のうち、 上記のように設定関数に受け入れられなかったものは、 環境変数と解釈されて設定される。
+(あまり役に立たない?) 例としては、'TERM=VT100' がある。
+
+カーネルによって処理されず、環境変数としても解釈されなかった 残りの引数は、プロセス 1 に渡されることになる。 通常このプロセス 1 は
+\fIinit\fP プログラムである。 プロセス 1 に渡される引数で最も良く使われるのは、 \&'single' というキーワードである。
+これを指定すると init はシングルユーザモードでコンピュータを起動し、 通常使われるデーモンは一切起動しない。 システムにインストールされている
+init が どんな引数を受け付けるかは、 マニュアルページで調べること。
+.SS 一般的な、デバイス固有ではない起動時引き数
+.TP 
+\&\fB'init=...'\fP
+カーネルが実行する初期コマンドを設定する。 この指定がなされなかったり、指定したコマンドが見つからなかった場合には、 カーネルは
+\fI/sbin/init\fP, \fI/etc/init\fP, \fI/bin/init\fP, \fI/bin/sh\fP の順で実行を試み、すべてに失敗したら
+panic を起こす。
+.TP 
+\&\fB'nfsaddrs=...'\fP
+nfs のブートアドレスを指定した文字列に設定する。 このブートアドレスはネットワークブートの場合に用いられる。
+.TP 
+\&\fB'nfsroot=...'\fP
+nfs ルートの名前を設定する。 この文字列の先頭が '/'、','、数字のいずれでもでないときは、 \&'/tftpboot/' が先頭に付加される。
+この名前はネットワークブートの場合に用いられる。
+.TP 
+\&\fB'no387'\fP
+(カーネルのコンパイル時に \fBCONFIG_BUGi386\fP が指定されたときのみ有効。)  一部の i387 コプロセッサチップには、 32
+ビットプロテクトモードでの使用時に生じるバグがある。 例えば初期の ULSI\-387 チップは、 浮動小数点演算を行なうと確実にロックアップしてしまう。
+この起動時引数 'no387' を指定すると、 Linux はコプロセッサがあってもそれを無視するようになる。
+なおもちろん、カーネルコンパイル時に浮動小数点演算をエミュレートする (kernel math emulation) 指定をしなければならない!
+.TP 
+\&\fB'no\-hlt'\fP
+(カーネルのコンパイル時に \fBCONFIG_BUGi386\fP が指定されたときのみ有効。)  初期の i486DX\-100 チップの一部では
+\&'hlt' 命令に問題があって、 この命令を使うとオペレーティングモードに正しく戻って来ない。 \&'no\-hlt' を指定すれば、Linux
+はアイドリング時に CPU を停止 (halt) するかわりに無限ループを実行するようになる。 これによって、そのようなバグのあるチップでも Linux
+を使用できる。
+.TP 
+\&\fB'root=...'\fP
+起動時にルートファイルシステムとして使われるデバイスをカーネルに指定する。 デフォルトはコンパイル時に決定され、
+通常はカーネルを構築したシステムのルートデバイスになる。 この値を無効にして、 例えば 2
+番目のフロッピーディスクドライブをルートデバイスに指定する場合は、 \&'root=/dev/fd1' とする。 (ルートデバイスは
+\fBrdev\fP(8)  を用いても設定できる。)
+
+ルートデバイスの指定にはシンボル形式と数値形式を用いることができる。 シンボル形式の場合は /dev/XXYN という書式で指定する。 XX
+にはデバイスタイプを指定する。 Y にはドライブレターもしくはドライブ番号、 N には (フロッピーディスクを除く) ディスクの パーティション番号を
+10 進数の数値で指定する。 (ST\-506 互換ハードディスクではデバイスタイプが 'hd' で Y の範囲は 'a' から 'd'、 SCSI
+ディスクは 'sd' で Y は 'a' から 'e'、 Atari ACSI ディスクは 'ad' で Y は 'a' から 'e'、 Syquest
+EZ135 パラレルポートリムーバブルディスクは 'ez' で Y は 'a' のみ、 XT ディスクは 'xt' で Y は 'a' か 'b'、
+フロッピーディスクは 'fd' で Y にはドライブ番号を指定する。 fd0 は DOS の 'A:'、fd1 は 'B:' に対応している。
+パーティションは存在しないので N は指定しない。)  最新のカーネルでは、他にも次のような多くのデバイスタイプを指定できる (ほとんどは CD\-ROM
+だが): nfs, ram, scd, mcd, cdu535, aztcd, cm206cd, gscd, sbpcd, sonycd, bpcd。
+(nfs はネットワークブートに、ram は RAM ディスクを使用する場合に用いる。)
+
+なお、これらはファイルシステム上でのデバイスの指定方法とは全く関係ない。 \&'/dev/' を用いるのは単に慣習に過ぎない。
+
+扱いにくいし移植性も良くないが、 上記のデバイスを major/minor 番号の数値で指定してもよい。 (例えば /dev/sda3 は major
+番号 8、minor 番号 3 なので、 \&'root=0x803' と記述できる。)
+.TP 
+\&\fB'rootfstype=...'\fP
+The 'rootfstype' option tells the kernel to mount the root filesystem as if
+it where of the type specified.  This can be useful (for example) to mount
+an ext3 filesystem as ext2 and then remove the journal in the root
+filesystem, in fact reverting its format from ext3 to ext2 without the need
+to boot the box from alternate media.
+.TP 
+\&\fB'ro'\fP と \fB'rw'\fP
+\&'ro' オプションは、ルートファイルシステムを 「読み出し専用」でマウントするようカーネルに指示し、 fsck
+プログラムがファイルシステムの矛盾を検査できるようにする。 ファイルシステムが「読み書き可能」として再マウントされる (つまり 'mount \-w \-n
+\-o remount /') までの間は、 いかなるプロセスもこのファイルシステム上のファイルに書き込むことはできない。 (\fBmount\fP(8)
+も参照せよ。)
+
+rw オプションはルートファイルシステムを 「読み書き可能」でマウントするようカーネルに指示する。 こちらがデフォルトである。
+
+省略時の指定を「読み出し専用」と 「読み書き可能」とのどちらにするかは、 \fBrdev\fP(8)  によっても設定できる。
+.TP 
+\&\fB'reserve=...'\fP
+デバイスの自動検出から I/O ポートを保護するために用いる。 コマンドの形式は以下の通り。
+.IP
+\fBreserve=\fP\fIiobase,extent[,iobase,extent]...\fP
+.sp
+機種によっては、 デバイスドライバによるデバイスの自動検出を、 特定の範囲に対しては禁止しなければならないことがある。
+ハードウェアが検出動作によって深刻な問題を引き起こす場合や、 誤認識される可能性がある場合、
+また単にカーネルにハードウェアを初期化させたくない場合などがありうるだろう。
+
+この起動時引数 reserve は、自動検出の対象外とする I/O ポートの範囲を指定する。 デバイスドライバは、
+他の起動時引数によって明示的に指定されない限り、 予約された範囲に対して自動検出動作を行わない。
+
+例えばブート時のコマンドラインに
+.IP
+reserve=0x300,32 blah=0x300
+.IP
+と指定すると、'blah' を除くすべてのデバイスドライバは 0x300 から 0x31f の範囲を自動検出の対象外とする。
+.TP 
+\&\fB'mem=...'\fP
+搭載されているメモリの量を返す BIOS コールは PC の仕様で定義されているが、これは最大 64MB までしか返すことができない。 Linux
+は搭載メモリの量を調べるために、 起動時にこの BIOS コールを使用する。 もし 64MB 以上の RAM を搭載している場合は、
+この起動時引数を用いて 実際のメモリ容量を Linux に知らせることができる。 値は 10 進数または 16 進数 (先頭に 0x を付加)
+の数値で指定し、 1024 倍を表す 'k' または 1048576 倍を表す 'M' を末尾に付加できる。 以下は Linus による 'mem='
+パラメータの解説である。
+
+.in +0.5i
+カーネルは 'mem=xx' パラメータとして どんな値を指定してもそれをそのまま受け入れる。 だからそれが嘘だとわかったら、
+遅かれ早かれひどいクラッシュをするだろう。 パラメータはアクセスしうる最も高位の RAM アドレスを指示する。 だから例えば
+\&'mem=0x1000000' っていうのは 16MB のメモリがある、という意味になる。 96MB のマシンなら 'mem=0x6000000' だ。
+
+\fB注意\fP: マシンによってはメモリの最上位の領域を BIOS のキャッシュやら何やらの ために使っていることがあるから、 実際には 96MB
+をフルにアドレスすることはできないかもしれない。 逆の場合もある。 いくつかのチップセットでは、 BIOS
+領域に入っている物理メモリを最上位のメモリのさらに上にマップする。 よって最上位のメモリはたとえば 96MB + 384kB
+なんて値になるかもしれない。 linux に実際より多いメモリを教えてしまったとしたら、 まずいことが起きるだろう。
+すぐにではないかもしれないけど、ゆくゆくは確実にね。
+.in
+
+また、起動時引数に 'mem=nopentium' を指定すると、 pentium とそれ以降の CPU を使った IA32
+システム用に設定されたカーネルで 4MB のページテーブルを無効にすることができる。
+.TP 
+\&\fB'panic=N'\fP
+デフォルトでは、カーネルはパニックの後リブートしない。 このオプションを用いて (N を 0 より大きな値とすれば)  N
+秒後にリブートするようになる。 この値は、起動後に "echo N > /proc/sys/kernel/panic"
+として設定することもできる。
+.TP 
+\&\fB'reboot=[warm|cold][,[bios|hard]]'\fP
+(カーネルコンパイル時に \fBCONFIG_BUGi386\fP が指定されたときのみ有効。)  カーネルバージョン 2.0.22 から、
+リブートのデフォルトはコールドブートになった。 以前のデフォルトであるウォームブートをするには \&'reboot=warm'
+と指定しなければならない。 (ある種のハードウェアをリセットするにはコールドブートが必要になるが、
+ディスクキャッシュにある書き込んでいないデータは破壊される。 ウォームブートでは、より素早くリブートできる。)  デフォルトではリブートは 'hard'
+で行われる。 すなわちリセットラインに low を出力するようキーボードコントローラに要求して、 リブートを行う。
+しかし一部のマザーボードではこれができない。 \&'reboot=bios' オプションを指定すると、 代わりに BIOS を経由するようになる。
+.TP 
+\&\fB'nosmp'\fP と \fB'maxcpus=N'\fP
+(カーネルのコンパイル時に __SMP__ が指定されたときのみ有効。)  コマンドラインオプションに 'nosmp' または 'maxcpus=0'
+を指定すると、 SMP (Symmetric Multi Processing) を完全に無効にする。 \&'maxcpus=N' オプションは、
+SMP モードで有効にする CPU の最大数を N に制限する。
+.SS カーネル開発者用の起動時引数
+.TP 
+\&\fB'debug'\fP
+カーネルが出力するメッセージはカーネルログデーモン klogd に渡され、 ディスクに記録できるようになる。 プライオリティが
+\fIconsole_loglevel\fP のメッセージはコンソールにも表示される。
+(これらのレベルについては、\fI<linux/kernel.h>\fP を参照。)  デフォルトではこの変数は、
+デバッグメッセージよりも重要なあらゆるメッセージを記録するよう設定されている (デバッグメッセージは含まない)。 この起動時引数を指定すると、
+カーネルはプライオリティが DEBUG のメッセージも出力するようになる。 \fIconsole_loglevel\fP も klogd
+にオプションを渡せば実行時に設定できる。 \fBklogd\fP(8)  を見よ。
+.TP 
+\&\fB'profile=N'\fP
+カーネルがどこで CPU サイクルを消費しているか調べたい場合には、 カーネルのプロファイリング機能を有効にすればこれを実現できる。
+カーネルプロファイリングは、変数 \fIprof_shift\fP を 0 以外の値にセットすると有効になる。 この値はコンパイル時に
+\fBCONFIG_PROFILE\fP で指定するか、 この 'prifile=N' オプションで指定できる。 \fIprof_shift\fP の値は N
+が指定されれば N となり、N が指定されなかった場合は \fBCONFIG_PROFILE_SHIFT\fP の値が用いられる。
+どちらも指定されなければデフォルト値の 2 が用いられる。 この変数が重要なのは、 カーネルプロファイリングの粒度を決定するところにある。
+すなわち、各クロックの割込みごとに、システムがカーネルコードを実行していれば、 以下のようにカウンタの値がインクリメントされる。
+.IP
+profile[address >> prof_shift]++;
+.sp
+生のプロファイリング情報は、 \fI/proc/profile\fP から見ることができるが、readprofile.c
+のような情報を加工するツールを使ったほうが良いだろう。 \fI/proc/profile\fP に任意のデータを書込むと、 カウンタはリセットされる。
+.TP 
+\&\fB'swap=N1,N2,N3,N4,N5,N6,N7,N8'\fP
+カーネルのスワップアルゴリズムをコントロールする 次の 8 つのパラメータをセットする。 max_page_age, page_advance,
+page_decline, page_initial_age, age_cluster_fract, age_cluster_min,
+pageout_weight, bufferout_weight.  これはカーネルをチューンする人のためのオプションである。
+.TP 
+\&\fB'buff=N1,N2,N3,N4,N5,N6'\fP
+カーネルのバッファメモリ管理をコントロールする 次の 6 つのパラメータをセットする。 max_buff_age, buff_advance,
+buff_decline, buff_initial_age, bufferout_weight, buffermem_grace.
+これはカーネルをチューンする人のためのオプションである。
+.SS "RAM ディスク関連の起動時引数"
+(カーネルのコンパイル時に \fBCONFIG_BLK_DEV_RAM\fP オプションが指定されたときのみ有効。)  一般的には、Linux で RAM
+ディスクを使用するのはあまり良い考えではない。 システムに任せておけばもっと効率的にメモリを使用する。 しかしブート時
+(またはブートフロッピーの作成中) には、 フロッピーの内容を RAM ディスクにロードすると便利かもしれない。
+メインディスクがアクセス可能になる前に、 (ファイルシステムやハードウェアに関する)
+モジュールをいくつかロードしなければならないシステムもあるだろう。
+
+Linux のバージョン 1.3.48 において、 RAM ディスクの取り扱いが根底から変化した。 それ以前までは、メモリは静的に割り当てられ、
+\&'ramdisk=N' パラメータでそのサイズを指定していた。 (この値はカーネルのコンパイル時や \fBrdev\fP(8)  によっても変更できた。)
+現在は RAM ディスクはバッファキャッシュを使用しており、 動的に成長する。 さらに多くの情報 (たとえば \fBrdev\fP(8)  が新しい RAM
+ディスクの設定とどのように関係するか) については、 \fI/usr/src/linux/Documentation/ramdisk.txt\fP を参照。
+
+4 つのパラメータがある。論理値をとるものが 2 つ、整数値をとるものが 2 つ。
+.TP 
+\&\fB'load_ramdisk=N'\fP
+N=1 なら RAM ディスクをロードする。N=0 ならロードしない (デフォルト)。
+.TP 
+\&\fB'prompt_ramdisk=N'\fP
+N=1 ならフロッピー挿入を促すプロンプトを出す (デフォルト)。 N=0 ならプロンプトを出さない。
+(従って、このパラメータを指定する必要はまず無いであろう。)
+.TP 
+\&\fB'ramdisk_size=N'\fP もしくは (古い形式の) \fB'ramdisk=N'\fP
+ラムディスクの最大サイズを N kB (キロバイト) にセットする。 省略時は 4096 (4 MB)。
+.TP 
+\&\fB'ramdisk_start=N'\fP
+開始ブロック番号 (フロッピー先頭からのオフセットで指定した RAM ディスクの開始点)  を N にセットする。 これはカーネルイメージのあとに
+RAM ディスクイメージを置く場合に必要となる。
+.TP 
+\&\fB'noinitrd'\fP
+(カーネルのコンパイル時に \fBCONFIG_BLK_DEV_RAM\fP と \fBCONFIG_BLK_DEV_INITRD\fP
+が指定されているときのみ有効。)  最近は initrd を使用するようにカーネルをコンパイルできる。 このオプションが指定されると、
+ブートプロセスはカーネルと RAM ディスクをロードし、 カーネルは initrd を「普通の」 RAM ディスクに変換し、 この RAM
+ディスクがルートデバイスとして「読み書き可能」でマウントされる。 次に /linuxrc が実行される。
+その後「真の」ルートファイルシステムがマウントされ、 initrd ファイルシステムは /initrd に移される。 最後に通常のブートシーケンス
+(具体的には /sbin/init の呼び出し) が実行される。
+
+initrd に関する詳細な解説は \fI/usr/src/linux/Documentation/initrd.txt\fP を参照。
+
+\&'noinitrd' オプションを用いると、 カーネルは (initrd 動作を行うようにコンパイルされている場合でも)
+上記の動作を行なわず、代わりに initrd のデータを \fI/dev/initrd\fP に残す。 (このデバイスは一度しか使えない。
+データは、そのデータを使った最後のプロセスが \fI/dev/initrd\fP をクローズするとすぐに解放される。)
+.SS "SCSI デバイス用の起動時引数"
+この節における用語:
+
+\fIiobase\fP \-\- SCSI ホストアダプタが占有する I/O ポートの先頭アドレス。 16 進表記で指定し、通常 0x200 から 0x3ff
+の範囲に位置する。
+
+\fIirq\fP \-\- カードが利用するハードウェア割り込み。有効な値はカードに よって異なるが、通常は 5, 7, 9, 10, 11, 12, 15
+である。 これ以外の値は通常、IDE ハードディスク、フロッピー、 シリアルポートといった一般的な周辺機器によって使用される。
+
+\fIscsi\-id\fP \-\- SCSI バス上のホストアダプタが自分自身を識別するために使用する ID 番号。
+この値を変更できるホストアダプタもごく希に存在するが、 ほとんどはアダプタ内部で固定されている。 よく使われるデフォルト値は 7
+であるが、Seagate もしくは Future Domain 製の TMC\-950 ボードでは 6 が使われる。
+
+\fIparity\fP \-\- SCSI ホストアダプタが取り付けられたデバイスとの通信に際して パリティ値を必要とするかどうか。 1
+を指定するとパリティチェックが有効になり、 0 でパリティチェックが無効になる。 しかし、すべてのデバイスがこの起動時引数によるパリティの選択を
+サポートするわけではない。
+.TP 
+\&\fB'max_scsi_luns=...'\fP
+SCSI デバイスは複数の「サブデバイス」を自分自身の内部に持つことができる。 最もよくある例として、一時に 1 枚以上のディスクを扱うことができる
+(チェンジャー機能付の) SCSI CD\-ROM がある。 それぞれの CD はそのデバイスの 「論理ユニット番号 (LUN)」によって特定される。
+しかしほとんどのデバイス (例えばハードディスクやテープドライブ) は、 LUN 番号 0 が割り当てられた、ただひとつのデバイスからなる。
+
+設計が不十分な SCSI デバイスでは 0 以外の LUN 番号への自動検出を 扱えないことがある。 したがって、コンパイル時に
+\fBCONFIG_SCSI_MULTI_LUN\fP オプションが指定されていないと、 最近のカーネルではデフォルトでは LUN 番号 0 のみを検出する。
+
+起動時に調べる LUN 番号を指定する場合、起動時引数として \&'max_scsi_luns=n' を指定する。n は 1 から 8 の間で指定する。
+n=1 以上の値を使用しないようにすれば、 このようないかれた機械にひどい目にあわされずにすむだろう。
+.TP 
+\fBSCSI テープドライブの設定\fP
+SCSI テープドライバの起動時設定の一部は以下のようにして行なうことができる。
+.IP
+\fBst=\fP\fIbuf_size[,write_threshold[,max_bufs]]\fP
+.sp
+最初の 2 つの数字は kB 単位で指定する。 \fIbuf_size\fP のデフォルトは 32kB である。上限は 16384kB まで指定できる。
+\fIwrite_threshold\fP はデータ書き出しの閾値で、 バッファのデータのサイズがこの値を越えるとデータはテープに書き出される。
+デフォルト値は 30kB である。 バッファ数の最大値 (\fImax_bufs\fP)  は検出されたドライブの数によって変化するが、デフォルトは 2
+である。 使用例を以下に示す。
+.IP
+st=32,30,2
+.IP
+詳細は Linux カーネルソース内の \fIDocumentation/scsi/st.txt\fP (古いカーネルの場合は
+\fIdrivers/scsi/README.st\fP) に書かれている。
+.TP 
+\fBAdaptec aha151x, aha152x, aic6260, aic6360, SB16\-SCSI の設定\fP
+aha に続く番号はカードを表し、 aic に続く番号はカードに搭載されている実際のチップを表す (Soundblaster\-16 SCSI
+も後者に含まれる)。
+
+SCSI ホストの検出コードは、 インストールされている BIOS を探す。 見つからないと、カードは検出できない。
+この場合は以下のように起動時引数を指定することになる。
+.IP
+\fBaha152x=\fP\fIiobase[,irq[,scsi\-id[,reconnect[,parity]]]]\fP
+.IP
+もしドライバのコンパイル時にデバッグオプションを指定していた場合は、 6 番目の値でデバッグレベルを指定できる。
+
+すべてのパラメータは、このセクションの最初で説明した通りである。 \fIreconnect\fP に 0
+以外の値を指定すると、デバイスを切断したり接続したりできる。 以下に例を示す。
+.IP
+aha152x=0x340,11,7,1
+.IP
+パラメータは必ず上記の順番どおりに指定されなければならない。 例えば、パリティ (parity) を設定したい場合には、 iobase, irq,
+scsi\-id, reconnect も同時に指定する必要がある。
+.TP 
+\fBAdaptec aha154x の設定\fP
+aha1542 シリーズのカードは i82077 フロッピーディスクコントローラをボードに搭載している。 一方 aha1540
+シリーズのカードは搭載していない。 これらは共にバスマスタカードであり、 他のデバイスとバスを共有する際に、
+どのくらい「フェアに」振る舞うかを指定するパラメータがある。 起動時引数は以下のようにして指定する。
+.IP
+\fBaha1542=\fP\fIiobase[,buson,busoff[,dmaspeed]]\fP
+.IP
+有効な iobase の値は次の通り。 0x130, 0x134, 0x230, 0x234, 0x330, 0x334。
+クローンカードの中には他の値を指定できるものもある。
+
+\fIbuson\fP, \fIbusoff\fP 値はカードがISA バスを占有する時間をマイクロ秒単位で指定する。 省略時はそれぞれ 11us on と 4us
+off になっているので、 他のカード (例えば ISA LANCE イーサネットカード) も ISA バスにアクセスできる。
+
+\fIdmaspeed\fP 値は DMA (Direct Memory Access) 転送速度を MB/s 単位で設定する。 省略時は 5MB/s
+である。新しいリビジョンのカードでは、 この値を使ったソフトウェアによる設定ができる。 古いカードはジャンパ設定を必要とする。
+マザーボードが対応していれば最大 10MB/s まで指定可能である。 5MB/s 以上の値を使う場合は注意して実験してからにすること。
+.TP 
+\fBAdaptec aha274x, aha284x, aic7xxx の設定\fP
+これらのボードは以下の形式で指定する。
+.IP
+\fBaic7xxx=\fP\fIextended,no_reset\fP
+.IP
+\fIextended\fP 値が 0 以外の時は、大容量ディスク用の拡張変換が有効になる。 \fIno_reset\fP 値を 0
+以外の値にすると、ホストアダプタの検出時に、 ドライバによる SCSI バスの初期化を行わない。
+.TP 
+\fBAdvanSys SCSI ホストアダプタの設定 ('advansys=')\fP
+AdvanSys ドライバはカードの検出先として 4 つの I/O アドレスを受け付ける。 EISA や PCI
+カードではこれらを指定しても全く効果が無い。 ISA 及び VLB カードの検出に対してのみ用いられる。
+さらに、デバッグオプション付きでドライバがコンパイルされている場合、 デバッグ情報の出力レベルとして 0xdeb[0\-f] パラメータを追加できる。
+0\-f によりデバッグメッセージの情報のレベルを 16 段階で指定する。
+.TP 
+\fBAM53C974\fP
+.IP
+\fBAM53C974=\fP\fIhost\-scsi\-id,target\-scsi\-id,max\-rate,max\-offset\fP
+.TP 
+\fBBusLogic SCSI ホストアダプタの設定 ('BusLogic=')\fP
+.IP
+\fBBusLogic=\fP\fIN1,N2,N3,N4,N5,S1,S2,...\fP
+.IP
+Buslogic のコマンドラインパラメータに関する詳細な議論は \fI/usr/src/linux/drivers/scsi/BusLogic.c\fP
+(著者がいま見ているカーネルでは 4350\-4497 行目) を参照すること。 以下はこれを非常におおざっぱに要約したものである。
+
+パラメータ N1 から N5 までは整数である。 パラメータ S1 以降は文字列である。 N1 はホストアダプタが存在する I/O アドレス。 N2
+はタグキューイングをサポートするデバイスに対して使用するキューの深さ。 N3 はバス安定時間 (BST) を秒単位で指定する。
+これはホストアダプタのハードリセットにより SCSI バスをリセットしてから SCSI コマンドの発行を開始するまでの待ち時間である。 N4
+はローカルオプション (ひとつのホストアダプタ用)。 N5 はグローバルオプション (すべてのホストアダプタ用)。
+
+文字列オプションは以下の動作を制御する: タグキューイング (TQ:Default, TQ:Enable, TQ:Disable,
+TQ:<Per\-Target\-Spec>)、 エラー復帰 (ER:Default, ER:HardReset,
+ER:BusDeviceReset, ER:None, ER:<Per\-Target\-Spec>)、 ホストアダプタの検出
+(NoProbe, NoProbeISA, NoSortPCI)。
+.TP 
+\fBEATA/DMA の設定\fP
+検出対象にする I/O ポートのデフォルトのリストは以下のようにして変更できる。
+.IP
+\fBeata=\fP\fIiobase,iobase,...\fP\fB.\fP
+.TP 
+\fBFuture Domain TMC\-16x0 の設定\fP
+.IP
+\fBfdomain=\fP\fIiobase,irq[,adapter_id]\fP
+.TP 
+\fBGreat Valley Products (GVP) SCSI コントローラの設定\fP
+.IP
+\fBgvp11=\fP\fIdma_transfer_bitmask\fP
+.TP 
+\fBFuture Domain 製 TMC\-8xx, TMC\-950 の設定\fP
+.IP
+\fBtmc8xx=\fP\fImem_base,irq\fP
+.IP
+\fImem_base\fP にはカードが使用するメモリマップ I/O の領域を指定する。
+通常は次の値のどれかである: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000。
+.TP 
+\fBIN2000 の設定\fP
+.IP
+\fBin2000=\fP\fIS\fP
+.IP
+S はコンマ区切りの文字列で、各項目は keyword[:value] 形式で指定する。 指定できるキーワードは以下の通り。 ioport:addr,
+noreset, nosync:x, period:ns, disconnect:x, debug:x, proc:x。
+これらのパラメータの機能については \fI/usr/src/linux/drivers/scsi/in2000.c\fP を参照。
+.TP 
+\fBNCR5380 および NCR53C400 の設定\fP
+この起動時引数は以下の書式で指定する。
+.IP
+\fBncr5380=\fP\fIiobase,irq,dma\fP
+.IP
+または
+.IP
+\fBncr53c400=\fP\fIiobase,irq\fP
+.IP
+カードが IRQ を使用しない場合は、 255 (0xff) を指定すれば無効にできる。 IRQ に 254 を指定すると自動検出する。 詳細は
+Linux カーネルソース内の \fIDocumentation/scsi/g_NCR5380.txt\fP (古いカーネルの場合は
+\fIdrivers/scsi/README.g_NCR5380\fP)  に書かれている。
+.TP 
+\fBNCR53C8xx の設定\fP
+.IP
+\fBncr53c8xx=\fP\fIS\fP
+.IP
+S はコンマ区切りの文字列で、各項目は keyword[:value] 形式で指定する。 指定できるキーワードは以下の通り。 mpar
+(master_parity), spar (scsi_parity), disc (disconnection), specf
+(special_features), ultra (ultra_scsi), fsn (force_sync_nego), tags
+(default_tags), sync (default_sync), verb (verbose), debug (debug), burst
+(burst_max)。 これらのオプションの機能については
+\fI/usr/src/linux/drivers/scsi/README.ncr53c8xx\fP を参照すること。
+.TP 
+\fBNCR53c406a の設定\fP
+.IP
+\fBncr53c406a=\fP\fIiobase[,irq[,fastpio]]\fP
+.IP
+割り込み無しで動作するモードには irq に 0 を指定する。 高速 PIO モードは fastpio に 1 を指定し、低速モードは 0 を指定する。
+.TP 
+\fBPro Audio Spectrum の設定\fP
+PAS16 は NC5380 SCSI チップを使用しており、 最近のモデルはジャンパレスの設定をサポートしている。 起動時引数の書式は以下の通り。
+.IP
+\fBpas16=\fP\fIiobase,irq\fP
+.IP
+唯一の違いとして、 IRQ に 255 を指定すれば割り込みを使用しないようドライバに指示できる (パフォーマンスは低下する)。 通常 iobase は
+0x388 である。
+.TP 
+\fBSeagate 製 ST\-0x の設定\fP
+カードが起動時に認識されない場合は以下のような指定が必要になるだろう。
+.IP
+\fBst0x=\fP\fImem_base,irq\fP
+.IP
+\fImem_base\fP にはカードが使用するメモリマップ I/O の領域を指定する。
+通常は次の値のどれかである: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000。
+.TP 
+\fBTrantor 製 T128 の設定\fP
+このカードも NCR5380 チップを利用しており、 以下のオプションを受け付ける。
+.IP
+\fBt128=\fP\fImem_base,irq\fP
+.IP
+有効な \fImem_base\fP の値は次の通りである: 0xcc000, 0xc8000, 0xdc000, 0xd8000。
+.TP 
+\fBUltraStor 製 14F/34F の設定\fP
+検出対象にする I/O ポートのデフォルトのリストは以下のようにして変更できる。
+.IP
+\fBeata=\fP\fIiobase,iobase,...\fP\fB.\fP
+.TP 
+\fBWD7000 の設定\fP
+.IP
+\fBwd7000=\fP\fIirq,dma,iobase\fP
+.TP 
+\fBCommodore Amiga 製 A2091/590 SCSI コントローラの設定\fP
+.IP
+\fBwd33c93=\fP\fIS\fP
+.IP
+S はコンマ区切りの文字列で、各項目は keyword[:value] 形式で指定する。 認識されるオプションは以下の通り。
+nosync:bitmask, nodma:x, period:ns, disconnect:x, debug:x, clock:x, next。
+詳細は \fI/usr/src/linux/drivers/scsi/wd33c93.c\fP を参照せよ。
+.SS ハードディスク
+.TP 
+\fBIDE Disk/CD\-ROM ドライバのパラメータ\fP
+IDE ドライバは、 ディスクのジオメトリ指定からバグのあるコントローラチップのサポートまで、 数多くのパラメータを受け付ける。 ドライブを特定するには
+\&'hdX=' を使う。 ここで X には 'a' から 'h' の文字を指定する。
+
+あるドライブに特有なものではないオプションは、hd= を前に付けて指定する。 ドライブ特有でないオプションに対してドライブ指定 ('hdX=')
+を前置しても問題はない。 そのオプションは期待通りそのドライブに適用される。
+
+\&'hd=' は、(a, ..., h) のシーケンスにおいて、 まだ指定されていない次のドライブを指すためにも使える。 これ以降では簡単のために
+\&'hd=' を使って説明する。 さらに詳しい情報を得るには、Linux カーネルソース内の \fIDocumentation/ide.txt\fP
+(古いカーネルの場合は \fIdrivers/block/README.ide\fP) を参照のこと。
+.TP 
+\&\fB'hd=cyls,heads,sects[,wpcom[,irq]]' オプション\fP
+これらのオプションはディスクの物理的なジオメトリを指定するために使う。 最初の 3 つの値以降は省略できる。 シリンダ (cyls)、ヘッド
+(heads)、セクタ (sects) の各値は fdisk で用いられるものと同じである。 書き込み補正 (wpcom) 値は IDE
+ディスクでは無視される。 IRQ 値には、そのドライブが接続されているインターフェースが用いる IRQ を指定する
+(本来の意味では「ドライブに特有」のパラメータではない)。
+.TP 
+\&\fB'hd=serialize' オプション\fP
+デュアル IDE インターフェースである CMD\-640 チップには設計上の問題があって、 セカンダリインターフェース上のドライブと
+プライマリインターフェース上のドライブを 同時に使用するとデータが破壊されることがある。 このオプションを使用すると、
+ドライバは両方のインターフェースが 同時に使用されることが絶対にないようにする。
+.TP 
+\&\fB'hd=dtc2278' オプション\fP
+このオプションは、DTC\-2278D IDE インターフェースが使われている ことをドライバに伝える。 するとドライバは、DTC 特有の機能 (2
+番目のインターフェースと高速転送モード)  を使用可能にするよう試みる。
+.TP 
+\&\fB'hd=noprobe' オプション\fP
+このドライブの自動検出をしない。 例えば
+.IP
+hdb=noprobe hdb=1166,7,17
+.IP
+とすると自動検出が無効になる。 しかしドライブのジオメトリを指定しているので、 このドライブは正しいブロックデバイスとして登録され、使用可能になる。
+.TP 
+\&\fB'hd=nowerr' オプション\fP
+ドライブによっては、書き込みエラー (\fBWRERR_STAT\fP)  ビットがクリアできなくなることがある。 このオプションを指定すると、
+このような壊れたデバイスに対する回避機能が有効になる。
+.TP 
+\&\fB'hd=cdrom' オプション\fP
+このオプションは、通常の IDE ハードディスクの代わりに、 ATAPI 互換の CDROM が続されていることを IDE ドライバに伝える。
+CD\-ROM はたいてい自動的に認識されるが、 うまく行かない場合に試してみると良い。
+.TP 
+\fBスタンダード ST\-506 ディスクドライバのオプション ('hd=')\fP
+スタンダードディスクドライバは IDE ドライバと同様のジオメトリ指定を引数にとることができる。 ただし受け付ける値はちょうど 3 つ (C/H/S)
+に限られる。 それ以上の値やそれ以下の値を指定すると、ドライバは黙ってその指定を無視する。 また引数として受け入れられるのは 'hd='
+の形式だけである。 つまり 'hda=' のような指定はここでは正しくない。 書式は次の通り。
+.IP
+hd=cyls,heads,sects
+.IP
+2 台のディスクが接続されてい場合は、 2 番目のディスクに対しても上記のジオメトリが設定される。
+.TP 
+\fBXT ディスクドライバのオプション ('xd=')\fP
+これらの古い 8 bit カード (125kB/s の転送速度しかない!)  を使わなければならない不幸な人のためのオプションである。
+カードが認識されない場合は以下の書式で起動時引数を指定する必要があるだろう。
+.IP
+xd=type,irq,iobase,dma_chan
+.IP
+.\" 1.1.50, 1.3.81, 1.3.99, 2.0.34, 2.1.67, 2.1.78, 2.1.127
+type 値にはカードのメーカーを指定し、これは自動検知より優先される。 指定すべき type の値については、使っているカーネルのソースファイル
+\fIdrivers/block/xd.c\fP を調べてほしい。type はリスト \fIxd_sigs\fP
+のインデックスで、歴史と共に追加されたり削除されたりしてきた。 リストの途中での追加・削除も行われたので、 その場合はすべての type
+番号が変更された。 今日 (Linux 2.5.0) における type は、 0=generic; 1=DTC 5150cx; 2,3=DTC
+5150x; 4,5=Western Digital; 6,7,8=Seagate; 9=Omti; 10=XEBEC である。 ここではいくつかの
+type に同じ指定が与えられているが、 それらは等価である。
+
+xd_setup() 関数は引数をチェックせず、 4 つの値がすべて指定されることを想定している。 引数を省略してはならない。 例として、BIOS
+が無効にされた (あるいは削除された)  WD1002 コントローラの場合を示す (パラメータには XT
+コントローラの「デフォルト」の値を使っている)。
+.IP
+xd=2,5,0x320,3
+.TP 
+\fBSyquest 製 EZ* リムーバブルディスク\fP
+.IP
+\fBez=\fP\fIiobase[,irq[,rep[,nybble]]]\fP
+.SS "IBM MCA バス上のデバイス"
+\fI/usr/src/linux/Documentation/mca.txt\fP も参照。
+.TP 
+\fBPS/2 ESDI ハードディスク\fP
+起動時に所望のジオメトリを指定できる。
+.IP
+\fBed=\fP\fIcyls,heads,sectors.\fP
+.IP
+ThinkPad\-720 を使用する場合は以下のオプションを追加すること。
+.IP
+\fBtp720=1\fP
+.TP 
+\fBIBM Microchannel SCSI サブシステムの設定\fP
+.IP
+\fBibmmcascsi=\fP\fIN\fP
+.IP
+N はサブシステムの \fIpun\fP (SCSI ID) を表す。
+.TP 
+\fBAztech インターフェース\fP
+このタイプのカードの構文は以下の通り。
+.IP
+aztcd=iobase[,magic_number]
+.IP
+magic_number に 0x79 をセットすると、 ドライバはファームウェアのバージョンが分からない場合でも、 とにかく実行を試みる。
+その他の値はすべて無視される。
+.TP 
+\fBパラレルポート CD\-ROM ドライブ\fP
+構文は以下の通り。
+.IP
+pcd.driveN=port,pro,uni,mod,slv,dly
+.br
+pcd.nice=nice
+.IP
+ここで 'port' はベースアドレス、'pro' はプロトコル番号、'uni' はユニットセレクタ (チェインデバイス用)、'mod' はモード
+(あるいは自動的に最適のものを選ばせるには \-1)、'slv' はスレーブにしたい場合に 1、'dly'
+はポートアクセスを遅くしたい場合に小さな整数を与える。'nice' パラメータは、 ドライバのアイドル CPU 時間の使い方を制御する。
+ただし速度はある程度低下する。
+.TP 
+\fBSony 製 CDU\-31A と CDU\-33A のインターフェース\fP
+この CD\-ROM インターフェースは、 Pro Audio Spectrum サウンドカードの一部や
+ソニーが供給するインターフェースカードで使われている。 構文は以下の通り。
+.IP
+cdu31a=iobase,[irq[,is_pas_card]]
+.IP
+IRQ に 0 を指定すると、 ハードウェア割り込みがサポートされていないことをドライバに伝える (PAS カードにはそのようなものがある)。
+使用するカードが割り込みをサポートしているなら、 ドライバによる CPU の負荷を減らすためにも割り込みを使用すべきである。
+
+\fIis_pas_card\fP には、Pro Audio Spectrum カードを使用しているときには 'PAS' を指定し、
+そうでないときにはなにも指定しない。
+.TP 
+\fBSony 製 CDU\-535 インターフェース\fP
+この CD\-ROM インターフェースの構文は以下の通り。
+.IP
+sonycd535=iobase[,irq]
+.IP
+IRQ の値だけを指定したい場合には、 iobase 値を 0 とすれば単なる穴埋めと解釈される。
+.TP 
+\fBGoldStar インターフェース\fP
+この CD\-ROM インターフェースの構文は以下の通り。
+.IP
+gscd=iobase
+.TP 
+\fBISP16 CD\-ROM インターフェース\fP
+構文は以下の通り。
+.IP
+isp16=[iobase[,irq[,dma[,type]]]]
+.IP
+(整数値 3 つと文字列 1 つ。) type に 'noisp16' を指定すると、 インターフェースの設定は行なわれない。 type にはこの他にも
+\&'Sanyo', 'Sony', 'Panasonic', 'Mitsumi' が指定できる。
+.TP 
+\fBMitsumi 標準インターフェース\fP
+この CD\-ROM インターフェースの構文は以下の通り。
+.IP
+mcd=iobase,[irq[,wait_value]]
+.IP
+\fIwait_value\fP はドライブに問題がある場合に、 ドライバ内部のタイムアウトの指定に用いる。 コンパイル時の #define
+によって実装されるかされないかが決まる。 Mitsumi FX400 は IDE/ATAPI CD\-ROM プレイヤーであり、 この mcd
+ドライバは使用しない。
+.TP 
+\fBMitsumi XA/マルチセッションインターフェース\fP
+これは上記と同じハードウェアだが、拡張機能がある。 構文は以下の通り。
+.IP
+mcdx=iobase[,irq]
+.TP 
+\fBOptics ストレージインターフェース\fP
+このタイプのカードの構文は以下の通り。
+.IP
+optcd=iobase
+.TP 
+\fBPhillips CM206 インターフェース\fP
+このタイプのカードの構文は以下の通り。
+.IP
+cm206=[iobase][,irq]
+.IP
+ドライバは IRQ 値として 3 から 11 まで、 I/O ポートアドレスの値として 0x300 から 0x370 を想定している。
+いずれか一方、あるいは両方を指定できる。順番も問わない。 \&'cm206=auto' とすることにより自動検出もできる。
+.TP 
+\fBSanyo インターフェース\fP
+このタイプのカードの構文は以下の通り。
+.IP
+sjcd=iobase[,irq[,dma_channel]]
+.TP 
+\fBSoundBlaster Pro インターフェース\fP
+このタイプのカードの構文は以下の通り。
+.IP
+sbpcd=iobase,type
+.IP
+type 値には 'SoundBlaster', 'LaserMate', 'SPEA' のうちひとつを指定できる (大文字小文字が区別される)。
+iobase は CD\-ROM インターフェースの値である。 カードのサウンド部の値と間違えないこと。
+.SS イーサネットデバイス
+ドライバが異なると用いるパラメータも異なるが、 すべてのドライバは、少なくとも割り込み番号 (irq)、 I/O ポートのベースアドレス
+(iobase)、名前 (name) を持つ。 最も一般的な形式は以下の通り。
+.IP
+ether=irq,iobase[,param_1[,...param_8]],name
+.IP
+最初の数字でない値は名前として使用される。 param_n の値はカード (ドライバ) ごとに異なる意味を持つ。
+よくある目的は、共有メモリアドレスの指定、インターフェースの選択、 DMA チャネルなどである。
+
+このパラメータの最もよくある利用法は、 2 番目の Ethernet カードを強制的に検出させる場合である (デフォルトでは 1 枚しか検出しない)。
+これは簡単で、次のようにすればよい。
+.IP
+ether=0,0,eth1
+.IP
+この例で IRQ と I/O ベースアドレスに 0 を指定しているのは、 ドライバに自動検出をするよう伝えているのである。
+
+Ethernet\-HOWTO では、複数のカードを使うやり方や、 カードやドライバに特有の param_n 値の意味について、
+ずっと詳細に解説されている。 興味を持った読者は、この文書にあたり、 自分のカードに関して書かれているセクションを参照すると良い。
+.SS フロッピーディスクドライバ
+フロッピードライバのオプションは多数あり、 Linux カーネルソース内の \fIDocumentation/floppy.txt\fP
+(古いカーネルの場合は \fIdrivers/block/README.fd\fP)  にすべて記載されている。
+以下の情報はこのファイルからとったものである。
+.TP 
+\fBfloppy=mask,allowed_drive_mask\fP
+使ってよいドライブにかけるビットマスクを設定する。 デフォルトでは、 ユニット 0 と 1 のフロッピーコントローラだけが許可されている。
+これは、標準でないハードウェア (例えば ASUS の PCIマザーボードなど)  でユニット 2 や 3 にアクセスすると、
+キーボードがおかしくなってしまうからである。 cmos オプション (後述) の導入によって、 このオプションはあまり使われなくなった。
+.TP 
+\fBfloppy=all_drives\fP
+許可するドライブを示すビットマスクを、「すべてのドライブ」にする。 1 つのフロッピーコントローラに 2 台以上のドライブを接続する場合に用いる。
+.TP 
+\fBfloppy=asus_pci\fP
+ユニット 0 と 1 のみを許可するようビットマスクを設定する。 (デフォルト)。
+.TP 
+\fBfloppy=daring\fP
+正しく振る舞うフロッピーコントローラを使っていることをドライバに伝える。 このオプションを使うと動作はより効率的かつスムースになるが、
+コントローラによっては動作に失敗することがある。 これを指定するとある種の動作が高速になる。
+.TP 
+\fBfloppy=0,daring\fP
+注意して扱わなければならない フロッピーコントローラであることをドライバに伝える。
+.TP 
+\fBfloppy=one_fdc\fP
+フロッピーコントローラがひとつしかないことをドライバに伝える (デフォルト)。
+.TP 
+\fBfloppy=two_fdc\fP または \fBfloppy=address,two_fdc\fP
+フロッピーコントローラがふたつあることをドライバに伝える。 2 番目のコントローラの I/O アドレスは address で指定する。 address
+が指定されない場合は 0x370 が使われる。
+.TP 
+\fBfloppy=thinkpad\fP
+Thinkpad を使っていることをフロッピードライバに伝える。
+Thinkpad はディスク取出の検出信号を反転して使っている。
+.TP 
+\fBfloppy=0,thinkpad\fP
+Thinkpad を使っていないことをドライバに伝える。
+.TP 
+\fBfloppy=drive,type,cmos\fP
+ドライブの cmos タイプを type に設定する。 さらにビットマスクを変更し、このドライブの使用を許可する。
+この指定が便利なのは、フロッピードライブが 2 台以上ある場合 (物理 cmos に記述できるのは 2 台まで) や、 BIOS が標準的でない
+CMOS タイプを使っている場合である。 最初の 2 台のドライブの CMOS に 0 を指定する (デフォルト) と、
+フロッピードライバはこれらのドライブの物理 cmos を参照する。
+.TP 
+\fBfloppy=unexpected_interrupts\fP
+予期しない割り込みを受けた時に警告メッセージを表示する (デフォルト)。
+.TP 
+\fBfloppy=no_unexpected_interrupts\fP または \fBfloppy=L40SX\fP
+予期しない割り込みを受けた時でも警告メッセージを表示しない。 これは IBM L40SX ラップトップコンピュータを
+特定のビデオモードで使用する時に必要となる。 (ビデオとフロッピーとの間で何らかの相互作用があるようだ。
+予期しない割り込みは性能だけに影響し、無視しても安全である。)
+.SS サウンドドライバ
+サウンドドライバも起動時引数を受け付け、 コンパイル時に指定された値を変更できる。 これはやや面倒なため、あまりお薦めできない。 詳細は、Linux
+カーネルソース内の \fIDocumentation/sound/oss/README.OSS\fP (古いカーネルの場合は
+\fIdrivers/sound/Readme.linux\fP)  に記載されている。 引数の形式は以下の通り。
+.IP
+sound=device1[,device2[,device3...[,device10]]]
+.IP
+各 deviceN はそれぞれ 0xTaaaId という形式で指定する。 各バイトの意味は以下の通り。
+
+T \- デバイスのタイプ: 1=FM, 2=SB, 3=PAS, 4=GUS, 5=MPU401, 6=SB16, 7=SB16\-MPU401
+
+aaa \- I/O ポートアドレス (16進値)
+
+I \- 割り込み番号 (16 進値。例: 10=a, 11=b, ...)
+
+d \- DMA チャネル
+
+上記の通り、かなり扱いにくい形式となっており、 コンパイル時に自分にあった値を指定する方が良いだろう。 なお起動時引数として 'sound=0'
+を指定すると、 サウンドドライバを完全に無効にする。
+.SS "ISDN ドライバ"
+.TP 
+\fBICN ISDN ドライバ\fP
+構文は以下の通り。
+.IP
+icn=iobase,membase,icn_id1,icn_id2
+.IP
+icn_id1,icn_id2 はカードを識別するための 2 つの文字列である。 カーネルメッセージで用いられる。
+.TP 
+\fBPCBIT ISDN ドライバ\fP
+構文は以下の通り。
+.IP
+pcbit=membase1,irq1[,membase2,irq2]
+.IP
+membaseN は N 番目のカードの共有メモリのベースアドレスであり、 irqN は N 番目のカードの割り込み設定である。 無指定時には IRQ
+= 5, membase = 0xD0000 となる。
+.TP 
+\fBTeles ISDN ドライバ\fP
+構文は以下の通り。
+.IP
+teles=iobase,irq,membase,protocol,teles_id
+.IP
+iobase はカードの I/O ポートアドレス、 membase はカードの共有メモリのベースアドレス、 そして irq
+はカードが使用する割り込みチャネルである。 teles_id はアスキー文字列による識別文字列である (他と重ならないようにする)。
+.SS シリアルポートドライバ
+.TP 
+\fBRISCom/8 マルチポートシリアルドライバ ('riscom8=')\fP
+構文は以下の通り。
+.IP
+riscom=iobase1[,iobase2[,iobase3[,iobase4]]]
+.IP
+詳細は \fI/usr/src/linux/Documentation/riscom8.txt\fP を参照のこと。
+.TP 
+\fBDigiBoard ドライバ ('digi=')\fP
+このオプションを使う場合は、6 個のパラメータをきっちり指定しなければならない。
+構文は以下の通り。
+.IP
+digi=status,type,altpin,numports,iobase,membase
+.IP
+パラメータは整数値か文字列で与える。 文字列で指定する場合は、 iobase と membase は 16 進値でなければならない。
+整数値で指定する場合はパラメータの個数は少なくても良く、順に: status このカードの動作を指定する (Enable(1) または
+Disable(0)), type カードのタイプ (PC/Xi(0), PC/Xe(1), PC/Xeve(2), PC/Xem(3)),
+altpin ピン配置を反転させる (Enable(1) or Disable(0)), numports カードのポート番号, iobase
+このカードの I/O ポート (文字列指定の場合は 16 進表記), membase メモリウィンドウのベースアドレス (文字列指定の場合は 16
+進表記)。 したがって以下のふたつの起動時引数は同じ意味を持つ。
+.IP
+digi=E,PC/Xi,D,16,200,D0000
+.br
+digi=1,0,0,16,0x200,851968
+.IP
+詳細は \fI/usr/src/linux/Documentation/digiboard.txt\fP を参照。
+.TP 
+\fBBaycom シリアル・パラレル ラジオモデム\fP
+構文は以下の通り。
+.IP
+baycom=iobase,irq,modem
+.IP
+ちょうど 3 つのパラメータを与える。 複数のカードがある場合は、'baycom=' コマンドも複数記述する。 modem パラメータは文字列で、
+ser12, ser12*, par96, par96* の中からひとつを選ぶ。 * をつけるとソフトウェア DCD を使用する。 モデムの種類に応じて
+ser12 か par96 かを選択する。 詳細は Linux カーネルソース内の
+\fIDocumentation/networking/baycom.txt\fP (古いカーネルの場合は
+\fIdrivers/net/README.baycom\fP)  を参照。
+.TP 
+\fBサウンドカードラジオモデムドライバ\fP
+構文は以下の通り。
+.IP
+soundmodem=iobase,irq,dma[,dma2[,serio[,pario]]],0,mode
+.IP
+最後のパラメータを除くすべてのパラメータは整数である。 ダミーの 0 があるのは、設定プログラムのバグのせいである。 mode
+パラメータは文字列で、hw:modem という書式で指定する。 hw は sbc, wss, wssfdx のうちひとつ、 modem は
+afsk1200, fsk9600 のどちらかを選択して記述する。
+.SS ラインプリンタドライバ
+.TP 
+\&\fB'lp='\fP
+構文は以下の通り。
+.IP
+lp=0
+.br
+lp=auto
+.br
+lp=reset
+.br
+lp=port[,port...]
+.IP
+プリンタドライバには、どのポートを使うか、 どのポートを使ってはいけないかを伝えることができる。 後者は、
+利用可能なあらゆるパラレルポートをプリンタドライバが要求しないようにして、 他のドライバ (PLIP や PPA など) から
+それらを使えるようにしたい場合に便利である。
+
+引数の書式は、複数のポート名である。 例えば lp=none,parport0 とすると、 最初のパラレルポートを lp1 として使い、 lp0
+は無効にする。プリンタードライバを完全に無効にするには lp=0 とすればよい。
+.TP 
+\fBWDT500/501 ドライバ\fP
+構文は以下の通り。
+.IP
+wdt=io,irq
+.SS マウスドライバ
+.TP 
+\&\fB'bmouse=irq'\fP
+バスマウスドライバはパラメータをひとつだけとり、 ハードウェア IRQ を指定できる。
+.TP 
+\&\fB'msmouse=irq'\fP
+msmouse ドライバでもこの事情はまったく同じである。
+.TP 
+\fBATARI マウスの設定\fP
+.IP
+atamouse=threshold[,y\-threshold]
+.IP
+パラメータがひとつだけ与えられた場合には、 x\-threshold と y\-threshold を両方に用いられる。 ふたつ与えられた場合は、最初の値が
+x\-threshold として用いられ、 2 番目の値が y\-threshold として用いられる。 値は 1 から 20 までの数値で指定する。
+デフォルトは 2。
+.SS ビデオ機器
+.TP 
+\&\fB'no\-scroll'\fP
+.\" .SH AUTHORS
+.\" Linus Torvalds (and many others)
+このオプションは、コンソールドライバに、 ハードウェアスクロールを用いないよう伝える (ここで言うハードウェアスクロールとは、
+ビデオメモリ上のデータを移動させることによって スクリーン表示領域をスクロールさせることを指す)。 特定の点字マシンではこの指定が必要となる。
+.SH 関連項目
+\fBlilo.conf\fP(5), \fBklogd\fP(8), \fBlilo\fP(8), \fBmount\fP(8), \fBrdev\fP(8)
+
+このマニュアルページの大部分は Paul Gortmaker による Boot Parameter HOWTO (version 1.0.1)
+を基にしている。 この (あるいは最新の) HOWTO をあたれば、 さらに多くの情報が入手できるだろう。 最新の情報源は
+\fI/usr/src/linux/Documentation/kernel\-parameters.txt\fP である。
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man7/capabilities.7 b/manual/LDP_man-pages/draft/man7/capabilities.7
new file mode 100644 (file)
index 0000000..e694c14
--- /dev/null
@@ -0,0 +1,710 @@
+.\" Copyright (c) 2002 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" 6 Aug 2002 - Initial Creation
+.\" Modified 2003-05-23, Michael Kerrisk, <mtk.manpages@gmail.com>
+.\" Modified 2004-05-27, Michael Kerrisk, <mtk.manpages@gmail.com>
+.\" 2004-12-08, mtk Added O_NOATIME for CAP_FOWNER
+.\" 2005-08-16, mtk, Added CAP_AUDIT_CONTROL and CAP_AUDIT_WRITE
+.\" 2008-07-15, Serge Hallyn <serue@us.bbm.com>
+.\"     Document file capabilities, per-process capability
+.\"     bounding set, changed semantics for CAP_SETPCAP,
+.\"     and other changes in 2.6.2[45].
+.\"     Add CAP_MAC_ADMIN, CAP_MAC_OVERRIDE, CAP_SETFCAP.
+.\" 2008-07-15, mtk
+.\"     Add text describing circumstances in which CAP_SETPCAP
+.\"     (theoretically) permits a thread to change the
+.\"     capability sets of another thread.
+.\"     Add section describing rules for programmatically
+.\"     adjusting thread capability sets.
+.\"     Describe rationale for capability bounding set.
+.\"     Document "securebits" flags.
+.\"     Add text noting that if we set the effective flag for one file
+.\"     capability, then we must also set the effective flag for all
+.\"     other capabilities where the permitted or inheritable bit is set.
+.\" 2011-09-07, mtk/Serge hallyn: Add CAP_SYSLOG
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH CAPABILITIES 7 2013\-04\-17 Linux "Linux Programmer's Manual"
+.SH 名前
+capabilities \- Linux のケーパビリティ (capability) の概要
+.SH 説明
+権限のチェックを行う観点から見ると、伝統的な UNIX の実装では プロセスは二つのカテゴリに分類できる: \fI特権\fP プロセス (実効ユーザID が
+0 のプロセス。ユーザID 0 は スーパーユーザや root と呼ばれる) と \fI非特権\fP プロセス (実効ユーザID が 0 以外のプロセス)
+である。 非特権プロセスでは、プロセスの資格情報 (通常は、実効UID 、実効GID と追加のグループリスト) に基づく権限チェックが行われるのに対し、
+特権プロセスでは全てのカーネルの権限チェックがバイパスされる。
+
+.\"
+バージョン 2.2 以降の Linux では、 これまでスーパーユーザに結び付けられてきた権限を、 いくつかのグループに分割している。これらのグループは
+\fIケーパビリティ\fP(capability)  と呼ばれ、グループ毎に独立に有効、無効を設定できる。 ケーパビリティはスレッド単位の属性である。
+.SS ケーパビリティのリスト
+以下のリストは、 Linux で実装されているケーパビリティと 各ケーパビリティが許可する操作と動作をまとめたものである。
+.TP 
+\fBCAP_AUDIT_CONTROL\fP (Linux 2.6.11 以降)
+カーネル監査 (audit) の有効無効の切り替え、 監査のフィルタルールの変更、 監査の状況やフィルタルールの取得ができる。
+.TP 
+\fBCAP_AUDIT_WRITE\fP (Linux 2.6.11 以降)
+カーネル監査のログにレコードを書き込む。
+.TP 
+\fBCAP_BLOCK_SUSPEND\fP (Linux 3.5 以降)
+Employ features that can block system suspend (\fBepoll\fP(7)  \fBEPOLLWAKEUP\fP,
+\fI/proc/sys/wake_lock\fP).
+.TP 
+\fBCAP_CHOWN\fP
+ファイルの UID とGID を任意に変更する (\fBchown\fP(2)  参照)。
+.TP 
+\fBCAP_DAC_OVERRIDE\fP
+ファイルの読み出し、書き込み、実行の権限チェックをバイパスする (DAC は "discretionary access control
+(任意のアクセス制御)" の略である)。
+.TP 
+\fBCAP_DAC_READ_SEARCH\fP
+ファイルの読み出し権限のチェックとディレクトリの読み出しと実行 の権限チェックをバイパスする。
+.TP 
+\fBCAP_FOWNER\fP
+.PD 0
+.RS
+.IP * 2
+通常、プロセスのファイルシステム UID がファイルの UID に一致することが 要求される操作 (例えば \fBchmod\fP(2),
+\fButime\fP(2))  における権限チェックをバイパスする。 但し、 \fBCAP_DAC_OVERRIDE\fP か
+\fBCAP_DAC_READ_SEARCH\fP によりチェックが行われる操作は除く。
+.IP *
+任意のファイルに対して拡張ファイル属性を設定する (\fBchattr\fP(1)  参照)。
+.IP *
+任意のファイルに対してアクセス制御リスト (ACL) を設定する。
+.IP *
+ファイルの削除の際にディレクトリのスティッキービットを無視する。
+.IP *
+\fBopen\fP(2)  や \fBfcntl\fP(2)  で任意のファイルに対して \fBO_NOATIME\fP を指定する。
+.RE
+.PD
+.TP 
+\fBCAP_FSETID\fP
+ファイルが変更されたときに set\-user\-ID とset\-group\-ID の許可ビットをクリア しない。呼び出し元プロセスのファイルシステム
+GID と追加の GID のいずれとも GID が一致しないファイルに対して set\-group\-ID ビットを設定する。
+.TP 
+\fBCAP_IPC_LOCK\fP
+.\" FIXME As at Linux 3.2, there are some strange uses of this capability
+.\" in other places; they probably should be replaced with something else.
+メモリーのロック (\fBmlock\fP(2), \fBmlockall\fP(2), \fBmmap\fP(2), \fBshmctl\fP(2))  を行う。
+.TP 
+\fBCAP_IPC_OWNER\fP
+System V IPC オブジェクトに対する操作に関して権限チェックをバイパスする。
+.TP 
+\fBCAP_KILL\fP
+.\" FIXME CAP_KILL also has an effect for threads + setting child
+.\"       termination signal to other than SIGCHLD: without this
+.\"       capability, the termination signal reverts to SIGCHLD
+.\"       if the child does an exec().  What is the rationale
+.\"       for this?
+シグナルを送信する際に権限チェックをバイパスする (\fBkill\fP(2)  参照)。これには \fBioctl\fP(2)  の \fBKDSIGACCEPT\fP
+操作の使用も含まれる。
+.TP 
+\fBCAP_LEASE\fP (Linux 2.4 以降)
+任意のファイルに対して ファイルリースを設定する (\fBfcntl\fP(2)  参照)。
+.TP 
+\fBCAP_LINUX_IMMUTABLE\fP
+.\" These attributes are now available on ext2, ext3, Reiserfs, XFS, JFS
+拡張ファイル属性 \fBFS_APPEND_FL\fP と \fBFS_IMMUTABLE_FL\fP を設定する (\fBchattr\fP(1)  参照)。
+.TP 
+\fBCAP_MAC_ADMIN\fP (Linux 2.6.25 以降)
+強制アクセス制御 (MAC) を上書きする。 Smack Linux Security Module (LSM) 用に実装されている。
+.TP 
+\fBCAP_MAC_OVERRIDE\fP (Linux 2.6.25 以降)
+MAC の設定や状態を変更する。 Smack LSM 用に実装されている。
+.TP 
+\fBCAP_MKNOD\fP (Linux 2.4 以降)
+(Linux 2.4 以降)  \fBmknod\fP(2)  を使用してスペシャルファイルを作成する。
+.TP 
+\fBCAP_NET_ADMIN\fP
+各種のネットワーク関係の操作を実行する:
+.PD 0
+.RS
+.IP * 2
+インターフェースの設定
+.IP *
+IP のファイアウォール、マスカレード、アカウンティング
+.IP *
+ルーティングテーブルの変更
+.IP *
+透過的プロキシでの任意のアドレスの割り当て (bind)
+.IP *
+サービス種別 (type\-of\-service; TOS) のセット
+.IP *
+ドライバの統計情報のクリア
+.IP *
+promiscuous モードをセットする
+.IP *
+マルチキャストを有効にする
+.IP *
+\fBsetsockopt\fP(2) を使って以下のソケットオプションを設定する:
+\fBSO_DEBUG\fP, \fBSO_MARK\fP,
+\fBSO_PRIORITY\fP (優先度を 0 から 6 以外に設定する場合),
+\fBSO_RCVBUFFORCE\fP, and \fBSO_SNDBUFFORCE\fP
+.RE
+.PD
+.TP 
+\fBCAP_NET_BIND_SERVICE\fP
+インターネットドメインの特権ポート (ポート番号が 1024 番未満)  をバインドできる。
+.TP 
+\fBCAP_NET_BROADCAST\fP
+(未使用) ソケットのブロードキャストと、マルチキャストの待ち受けを行う。
+.TP 
+\fBCAP_NET_RAW\fP
+.PD 0
+.RS
+.IP * 2
+RAW ソケットと PACKET ソケットを使用する。
+.IP *
+透過的プロキシでの任意のアドレスの割り当て (bind)
+.RE
+.PD
+.\" Also various IP options and setsockopt(SO_BINDTODEVICE)
+.TP 
+\fBCAP_SETGID\fP
+プロセスの GID と追加の GID リストに対する任意の操作を行う。 UNIX ドメインソケット経由でソケットの資格情報 (credential)
+を渡す際に 偽の GID を渡すことができる。
+.TP 
+\fBCAP_SETFCAP\fP (Linux 2.6.24 以降)
+ファイルケーパビリティを設定する。
+.TP 
+\fBCAP_SETPCAP\fP
+ファイルケーパビリティがサポートされていない場合: 呼び出し元が許可されているケーパビリティセットに含まれる任意のケーパビリティを、
+他のプロセスに付与したり、削除したりできる。 (カーネルがファイルケーパビリティをサポートしている場合、 \fBCAP_SETPCAP\fP
+はこの役割を持たない。 なぜなら、ファイルケーパビリティをサポートしているカーネルでは \fBCAP_SETPCAP\fP は全く別の意味を持つからである。)
+
+ファイルケーパビリティがサポートされている場合: 呼び出し元スレッドのバウンディングセットの任意のケーパビリティを
+自身の継承可能ケーパビリティセットに追加できる。 (\fBprctl\fP(2)  \fBPR_CAPBSET_DROP\fP を使って)
+バウンディングセットからケーパビリティを削除できる。 \fIsecurebits\fP フラグを変更できる。
+.TP 
+\fBCAP_SETUID\fP
+.\" FIXME CAP_SETUID also an effect in exec(); document this.
+プロセスの UID に対する任意の操作 (\fBsetuid\fP(2), \fBsetreuid\fP(2), \fBsetresuid\fP(2),
+\fBsetfsuid\fP(2))  を行う。 UNIX ドメインソケット経由でソケットの資格情報 (credential) を渡す際に 偽の UID
+を渡すことができる。
+.TP 
+\fBCAP_SYS_ADMIN\fP
+.PD 0
+.RS
+.IP * 2
+以下のシステム管理用の操作を実行する: \fBquotactl\fP(2), \fBmount\fP(2), \fBumount\fP(2), \fBswapon\fP(2),
+\fBswapoff\fP(2), \fBsethostname\fP(2), \fBsetdomainname\fP(2).
+.IP *
+特権が必要な \fBsyslog\fP(2) の操作を実行する
+(Linux 2.6.37 以降では、このような操作を許可するには
+\fBCAP_SYSLOG\fP を使うべきである)
+.IP *
+\fBVM86_REQUEST_IRQ\fP \fBvm86\fP(2) コマンドを実行する。
+.IP *
+任意の System V IPC オブジェクトに対する \fBIPC_SET\fP と \fBIPC_RMID\fP 操作を実行する。
+.IP *
+拡張属性 \fItrusted\fP と \fIsecurity\fP に対する操作を実行する (\fBattr\fP(5)  参照)。
+.IP *
+\fBlookup_dcookie\fP(2)  を呼び出す。
+.IP *
+\fBioprio_set\fP(2)  を使って I/O スケジューリングクラス \fBIOPRIO_CLASS_RT\fP,
+\fBIOPRIO_CLASS_IDLE\fP を割り当てる (\fBIOPRIO_CLASS_IDLE\fP は Linux 2.6.25
+より前のバージョンのみ)。
+.IP *
+ソケットの資格情報 (credential) を渡す際に偽の UID を渡す。
+.IP *
+ファイルをオープンするシステムコール (例えば \fBaccept\fP(2), \fBexecve\fP(2), \fBopen\fP(2), \fBpipe\fP(2))
+でシステム全体でオープンできるファイル数の上限 \fI/proc/sys/fs/file\-max\fP を超過する。
+.IP *
+\fBclone\fP(2) と \fBunshare\fP(2) で新しい名前空間を作成する \fBCLONE_*\fP
+フラグを利用する。
+.IP *
+\fBperf_event_open\fP(2) を呼び出す。
+.IP *
+特権が必要な \fIperf\fP イベントの情報にアクセスする。
+.IP *
+\fBsetns\fP(2) を呼び出す。
+.IP *
+\fBfanotify_init\fP(2) を呼び出す。
+.IP *
+\fBkeyctl\fP(2)  の \fBKEYCTL_CHOWN\fP と \fBKEYCTL_SETPERM\fP 操作を実行する。
+.IP *
+\fBmadvise\fP(2)  の \fBMADV_HWPOISON\fP 操作を実行する。
+.IP *
+\fBTIOCSTI\fP \fBioctl\fP(2) を使って、
+呼び出し元の制御端末以外の端末の入力キューに文字を挿入する。
+.IP *
+廃止予定の \fBnfsservctl\fP(2) システムコールを使用する。
+.IP *
+廃止予定の \fBbdflush\fP(2) システムコールを使用する。
+.IP *
+特権が必要なブロックデバイスに対する各種の \fBioctl\fP(2) 操作を
+実行する。
+.IP *
+特権が必要なファイルシステムに対する各種の \fBioctl\fP(2) 操作を
+実行する。
+.IP *
+多くのデバイスドライバに対する管理命令を実行する。
+.RE
+.PD
+.TP 
+\fBCAP_SYS_BOOT\fP
+\fBreboot\fP(2)  と \fBkexec_load\fP(2)  を呼び出す。
+.TP 
+\fBCAP_SYS_CHROOT\fP
+\fBchroot\fP(2).  を呼び出す。
+.TP 
+\fBCAP_SYS_MODULE\fP
+カーネルモジュールのロード、アンロードを行う (\fBinit_module\fP(2)  と \fBdelete_module\fP(2)  を参照のこと)。
+バージョン 2.6.25 より前のカーネルで、 システム全体のケーパビリティバウンディングセット (capability bounding set)
+からケーパビリティを外す。
+.TP 
+\fBCAP_SYS_NICE\fP
+.PD 0
+.RS
+.IP * 2
+プロセスの nice 値の引き上げ (\fBnice\fP(2), \fBsetpriority\fP(2))  や、任意のプロセスの nice 値の変更を行う。
+.IP *
+呼び出し元プロセスに対するリアルタイムスケジューリングポリシーと、 任意のプロセスに対するスケジューリングポリシーと優先度を設定する
+(\fBsched_setscheduler\fP(2), \fBsched_setparam\fP(2))。
+.IP *
+任意のプロセスに対する CPU affinity を設定できる (\fBsched_setaffinity\fP(2))。
+.IP *
+任意のプロセスに対して I/O スケジューリングクラスと優先度を設定できる (\fBioprio_set\fP(2))。
+.IP *
+.\" FIXME CAP_SYS_NICE also has the following effect for
+.\" migrate_pages(2):
+.\"     do_migrate_pages(mm, &old, &new,
+.\"         capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE);
+\fBmigrate_pages\fP(2)  を任意のプロセスに適用し、プロセスを任意のノードに移動する。
+.IP *
+\fBmove_pages\fP(2)  を任意のプロセスに対して行う。
+.IP *
+\fBmbind\fP(2)  と \fBmove_pages\fP(2)  で \fBMPOL_MF_MOVE_ALL\fP フラグを使用する。
+.RE
+.PD
+.TP 
+\fBCAP_SYS_PACCT\fP
+\fBacct\fP(2)  を呼び出す。
+.TP 
+\fBCAP_SYS_PTRACE\fP
+Trace arbitrary processes using \fBptrace\fP(2); apply \fBget_robust_list\fP(2)
+to arbitrary processes; inspect processes using \fBkcmp\fP(2).
+.TP 
+\fBCAP_SYS_RAWIO\fP
+.PD 0
+.RS
+.IP * 2
+I/O ポート操作を実行する (\fBiopl\fP(2)、 \fBioperm\fP(2))。
+.IP *
+access \fI/proc/kcore\fP;
+.IP *
+\fBFIBMAP\fP \fBioctl\fP(2) 操作を使用する。
+.IP *
+open devices for accessing x86 model\-specific registers (MSRs, see
+\fBmsr\fP(4))
+.IP *
+update \fI/proc/sys/vm/mmap_min_addr\fP;
+.IP *
+create memory mappings at addresses below the value specified by
+\fI/proc/sys/vm/mmap_min_addr\fP;
+.IP *
+map files in \fI/proc/bus/pci\fP;
+.IP *
+open \fI/dev/mem\fP and \fI/dev/kmem\fP;
+.IP *
+perform various SCSI device commands;
+.IP *
+perform certain operations on \fBhpsa\fP(4)  and \fBcciss\fP(4)  devices;
+.IP *
+perform a range of device\-specific operations on other devices.
+.RE
+.PD
+.TP 
+\fBCAP_SYS_RESOURCE\fP
+.PD 0
+.RS
+.IP * 2
+ext2 ファイルシステム上の予約されている領域を使用する。
+.IP *
+ext3 のジャーナル機能を制御する \fBioctl\fP(2)  を使用する。
+.IP *
+ディスク quota の上限を上書きする。
+.IP *
+リソース上限を増やす (\fBsetrlimit\fP(2))。
+.IP *
+\fBRLIMIT_NPROC\fP リソース制限を上書きする。
+.IP *
+コンソール割り当てにおいてコンソールの最大数を上書きする。
+.IP *
+キーマップの最大数を上書きする。
+.IP *
+リアルタイムクロックから秒間 64 回を越える回数の割り当てが許可する。
+.IP *
+メッセージキューに関する上限 \fImsg_qbytes\fP を
+\fI/proc/sys/kernel/msgmnb\fP に指定されている上限よりも大きく設定する
+(\fBmsgop\fP(2) と \fBmsgctl\fP(2) 参照)。
+.IP *
+\fBF_SETPIPE_SZ\fP \fBfcntl\fP(2) を使ってパイプの容量を設定する際に
+上限 \fI/proc/sys/fs/pipe\-size\-max\fP を上書きする。
+.IP *
+\fI/proc/sys/fs/pipe\-max\-size\fP に指定されている上限を超えてパイプの容量
+を増やすのに \fBF_SETPIPE_SZ\fP を使用する。
+.IP *
+POSIX メッセージキューを作成する際に、
+上限 \fI/proc/sys/fs/mqueue/queues_max\fP を上書きする
+(\fBmq_overview\fP(7) 参照)。
+.IP *
+employ \fBprctl\fP(2)  \fBPR_SET_MM\fP operation;
+.IP *
+set \fI/proc/PID/oom_score_adj\fP to a value lower than the value last set by a
+process with \fBCAP_SYS_RESOURCE\fP.
+.RE
+.PD
+.TP 
+\fBCAP_SYS_TIME\fP
+システムクロックを変更する (\fBsettimeofday\fP(2), \fBstime\fP(2), \fBadjtimex\fP(2))。 リアルタイム
+(ハードウェア) クロックを変更する。
+.TP 
+\fBCAP_SYS_TTY_CONFIG\fP
+\fBvhangup\fP(2) を使用する。
+特権が必要な仮想端末に関する各種の \fBioctl\fP(2) 操作を利用できる。
+.TP 
+\fBCAP_SYSLOG\fP (Linux 2.6.37 以降)
+.IP * 3
+特権が必要な \fBsyslog\fP(2) 操作を実行できる。
+どの操作が特権が必要かについての情報は \fBsyslog\fP(2) を参照。
+.IP *
+View kernel addresses exposed via \fI/proc\fP and other interfaces when
+\fI/proc/sys/kernel/kptr_restrict\fP has the value 1.  (See the discussion of
+the \fIkptr_restrict\fP in \fBproc\fP(5).)
+.TP 
+\fBCAP_WAKE_ALARM\fP (Linux 3.0 以降)
+.\"
+システムを起こすトリガーを有効にする (タイマー \fBCLOCK_REALTIME_ALARM\fP
+や \fBCLOCK_BOOTTIME_ALARM\fP を設定する)。
+.SS 過去と現在の実装
+完全な形のケーパビリティを実装するには、以下の要件を満たす必要がある:
+.IP 1. 3
+全ての特権操作について、カーネルはそのスレッドの実効ケーパビリティセットに 必要なケーパビリティがあるかを確認する。
+.IP 2.
+カーネルで、あるスレッドのケーパビリティセットを変更したり、 取得したりできるシステムコールが提供される。
+.IP 3.
+ファイルシステムが、実行可能ファイルにケーパビリティを付与でき、ファイル 実行時にそのケーパビリティをプロセスが取得できるような機能をサポートする。
+.PP
+.\"
+カーネル 2.6.24 より前では、最初の 2つの要件のみが満たされている。 カーネル 2.6.24 以降では、3つの要件すべてが満たされている。
+.SS スレッドケーパビリティセット
+各スレッドは以下の 3種類のケーパビリティセットを持つ。各々のケーパビリティセットは 上記のケーパビリティの組み合わせである
+(全てのケーパビリティが無効でもよい)。
+.TP 
+\fI許可 (permitted)\fP:
+そのスレッドが持つことになっている実効ケーパビリティの 限定的なスーパーセットである。 これは、実効ケーパビリティセットに \fBCAP_SETPCAP\fP
+ケーパビリティを持っていないスレッドが継承可能ケーパビリティセットに 追加可能なケーパビリティの限定的なスーパーセットでもある。
+
+許可ケーパビリティセットから削除してしまったケーパビリティは、 (set\-user\-ID\-root プログラムか、
+そのケーパビリティをファイルケーパビリティで許可しているプログラムを \fBexecve\fP(2)  しない限りは) もう一度獲得することはできない。
+.TP 
+\fI継承可能 (inheritable)\fP:
+\fBexecve\fP(2)  を前後で保持されるケーパビリティセットである。 この仕組みを使うことで、あるプロセスが \fBexecve\fP(2)
+を行う際に新しいプログラムの許可ケーパビリティセットとして 割り当てるケーパビリティを指定することができる。
+.TP 
+\fI実効 (effective)\fP:
+カーネルがスレッドの権限 (permission) をチェックするときに 使用するケーパビリティセットである。
+.PP
+\fBfork\fP(2)  で作成される子プロセスは、親のケーパビリティセットのコピーを継承する。 \fBexecve\fP(2)
+中のケーパビリティの扱いについては下記を参照のこと。
+.PP
+\fBcapset\fP(2)  を使うと、プロセスは自分自身のケーパビリティセット を操作することができる (下記参照)。
+.PP
+.\" commit 73efc0394e148d0e15583e13712637831f926720
+.\"
+Since Linux 3.2, the file \fI/proc/sys/kernel/cap_last_cap\fP exposes the
+numerical value of the highest capability supported by the running kernel;
+this can be used to determine the highest bit that may be set in a
+capability set.
+.SS ファイルケーパビリティ
+カーネル 2.6.24 以降では、 \fBsetcap\fP(8)  を使って実行ファイルにケーパビリティセットを対応付けることができる。
+ファイルケーパビリティセットは \fIsecurity.capability\fP という名前の拡張属性に保存される (\fBsetxattr\fP(2)
+参照)。この拡張属性への書き込みには \fBCAP_SETFCAP\fP ケーパビリティが必要である。
+ファイルケーパビリティセットとスレッドのケーパビリティセットの両方が 考慮され、 \fBexecve\fP(2)
+後のスレッドのケーパビリティセットが決定される。
+
+3 つのファイルケーパビリティセットが定義されている。
+.TP 
+\fI許可 (Permitted)\fP (以前の\fI強制 (Forced)\fP):
+スレッドの継承可能ケーパビリティに関わらず、そのスレッドに自動的に 認められるケーパビリティ。
+.TP 
+\fI継承可能 (Inheritable)\fP (以前の \fI許容 (Allowed)\fP):
+このセットと、スレッドの継承可能ケーパビリティセットとの 論理積 (AND) がとられ、 \fBexecve\fP(2)
+の後にそのスレッドの許可ケーパビリティセットで有効となる 継承可能ケーパビリティが決定される。
+.TP 
+\fI実効 (effective)\fP:
+これは集合ではなく、1 ビットの情報である。 このビットがセットされていると、 \fBexecve\fP(2)
+実行中に、そのスレッドの新しい許可ケーパビリティが全て 実効ケーパビリティ集合においてもセットされる。 このビットがセットされていない場合、
+\fBexecve\fP(2)  後には新しい許可ケーパビリティのどれも新しい実効ケーパビリティ集合 にセットされない。
+
+.\"
+ファイルの実効ケーパビリティビットを有効にするというのは、 \fBexecve\fP(2)
+実行時に、ファイルの許可ケーパビリティと継承ケーパビリティに対応するものが スレッドの許可ケーパビリティセットとしてセットされるが、
+これが実効ケーパビリティセットにもセットされるということである (ケーパビリティの変換ルールは下記参照)。
+したがって、ファイルにケーパビリティを割り当てる際 (\fBsetcap\fP(8), \fBcap_set_file\fP(3),
+\fBcap_set_fd\fP(3))、 いずれかのケーパビリティに対して実効フラグを有効と指定する場合、
+許可フラグや継承可能フラグを有効にした他の全てのケーパビリティ についても実効フラグを有効と指定しなければならない。
+.SS "execve() 中のケーパビリティの変換"
+.PP
+\fBexecve\fP(2)  実行時に、カーネルはプロセスの新しいケーパビリティを次の アルゴリズムを用いて計算する:
+.in +4n
+.nf
+
+P'(permitted) = (P(inheritable) & F(inheritable)) |
+                (F(permitted) & cap_bset)
+
+P'(effective) = F(effective) ? P'(permitted) : 0
+
+P'(inheritable) = P(inheritable)    [つまり、変更されない]
+
+.fi
+.in
+各変数の意味は以下の通り:
+.RS 4
+.IP P 10
+\fBexecve\fP(2)  前のスレッドのケーパビリティセットの値
+.IP P'
+\fBexecve\fP(2)  後のスレッドのケーパビリティセットの値
+.IP F
+ファイルケーパビリティセットの値
+.IP cap_bset
+ケーパビリティバウンディングセットの値 (下記参照)
+.RE
+.\"
+.SS ケーパビリティと、ルートによるプログラムの実行
+\fBexecve\fP(2)  時に、ケーパビリティセットを使って、全ての権限を持った \fIroot\fP を実現するには、以下のようにする。
+.IP 1. 3
+set\-user\-ID\-root プログラムが実行される場合、 またはプロセスの実ユーザ ID が 0 (root) の場合、
+ファイルの継承可能セットと許可セットを全て 1 (全てのケーパビリティが有効) に定義する。
+.IP 2.
+set\-user\-ID\-root プログラムが実行される場合、 ファイルの実効ケーパビリティビットを 1 (enabled) に定義する。
+.PP
+.\" If a process with real UID 0, and nonzero effective UID does an
+.\" exec(), then it gets all capabilities in its
+.\" permitted set, and no effective capabilities
+上記のルールにケーパビリティ変換を適用した結果をまとめると、 プロセスが set\-user\-ID\-root プログラムを \fBexecve\fP(2)
+する場合、または実効 UID が 0 のプロセスがプログラムを \fBexecve\fP(2)  する場合、許可と実効のケーパビリティセットの全ケーパビリティ
+(正確には、ケーパビリティバウンディングセットによるマスクで除外されるもの 以外の全てのケーパビリティ) を取得するということである。
+これにより、伝統的な UNIX システムと同じ振る舞いができるようになっている。
+.SS ケーパビリティ・バウンディングセット
+ケーパビリティ・バウンディングセット (capability bounding set) は、 \fBexecve\fP(2)
+時に獲得できるケーパビリティを制限するために使われる セキュリティ機構である。 バウンディングセットは以下のように使用される。
+.IP * 2
+\fBexecve\fP(2)  実行時に、ケーパビリティ・バウンディングセットと ファイルの許可ケーパビリティセットの論理和 (AND) を取ったものが、
+そのスレッドの許可ケーパビリティセットに割り当てられる。 つまり、ケーパビリティ・バウンディングセットは、
+実行ファイルが認めている許可ケーパビリティに対して 制限を課す働きをする。
+.IP *
+(Linux 2.6.25 以降)  ケーパビリティ・バウンディングセットは、スレッドが \fBcapset\fP(2)
+により自身の継承可能セットに追加可能なケーパビリティの母集団を 制限する役割を持つ。
+スレッドに許可されたケーパビリティであっても、バウンディングセットに 含まれていなければ、スレッドはそのケーパビリティは自身の継承可能セットに
+追加できず、その結果、継承可能セットにそのケーパビリティを含むファイルを \fBexecve\fP(2)
+する場合、そのケーパビリティを許可セットに持ち続けることができない、 ということである。
+.PP
+バウンディングセットがマスクを行うのは、継承可能ケーパビリティではなく、 ファイルの許可ケーパビリティのマスクを行う点に注意すること。
+あるスレッドの継承可能セットにそのスレッドのバウンディングセットに 存在しないケーパビリティが含まれている場合、そのスレッドは、
+継承可能セットに含まれるケーパビリティを持つファイルを実行することにより、 許可セットに含まれるケーパビリティも獲得できるということである。
+.PP
+カーネルのバージョンにより、ケーパビリティ・バウンディングセットは システム共通の属性の場合と、プロセス単位の属性の場合がある。
+.PP
+\fBLinux 2.6.25 より前のケーパビリティ・バウンディングセット\fP
+.PP
+2.6.25 より前のカーネルでは、ケーパビリティ・バウンディングセットは システム共通の属性で、システム上の全てのスレッドに適用される。
+バウンディングセットは \fI/proc/sys/kernel/cap\-bound\fP ファイル経由で参照できる。
+(間違えやすいが、このビットマスク形式のパラメータは、 \fI/proc/sys/kernel/cap\-bound\fP では符号付きの十進数で表現される。)
+
+\fBinit\fP プロセスだけがケーパビリティ・バウンディングセットで ケーパビリティをセットすることができる。 それ以外では、スーパーユーザ
+(より正確には、 \fBCAP_SYS_MODULE\fP ケーパビリティを持ったプログラム) が、
+ケーパビリティ・バウンディングセットのケーパビリティのクリアが できるだけである。
+
+通常のシステムでは、ケーパビリティ・バウンディングセットは、 \fBCAP_SETPCAP\fP が無効になっている。 この制限を取り去るには
+(取り去るのは危険!)、 \fIinclude/linux/capability.h\fP 内の \fBCAP_INIT_EFF_SET\fP
+の定義を修正し、カーネルを再構築する必要がある。
+
+.\"
+システム共通のケーパビリティ・バウンディングセット機能は、 カーネル 2.2.11 以降で Linux に追加された。
+.PP
+\fBLinux 2.6.25 以降のケーパビリティ・バウンディングセット\fP
+.PP
+Linux 2.6.25 以降では、 「ケーパビリティ・バウンディングセット」はスレッド単位の属性である
+(システム共通のケーパビリティ・バウンディングセットはもはや存在しない)。
+
+バウンディングセットは \fBfork\fP(2)  時にはスレッドの親プロセスから継承され、 \fBexecve\fP(2)  の前後では保持される。
+
+スレッドが \fBCAP_SETPCAP\fP ケーパビリティを持っている場合、そのスレッドは \fBprctl\fP(2)  の
+\fBPR_CAPBSET_DROP\fP 操作を使って自身のケーパビリティ・バウンディングセットから ケーパビリティを削除することができる。
+いったんケーパビリティをバウンディングセットから削除してしまうと、 スレッドはそのケーパビリティを再度セットすることはできない。 \fBprctl\fP(2)
+の \fBPR_CAPBSET_READ\fP 操作を使うことで、スレッドがあるケーパビリティが自身のバウンディングセット
+に含まれているかを知ることができる。
+
+バウンディングセットからのケーパビリティの削除がサポートされるのは、
+カーネルのコンパイル時にファイルケーパビリティが有効になっている場合
+だけである。Linux 2.6.33 より前のカーネルでは、ファイルケーパビリティは
+設定オプション CONFIG_SECURITY_FILE_CAPABILITIES で切り替えられる追加の
+機能であった。Linux 2.6.33 以降では、この設定オプションは削除され、
+ファイルケーパビリティは常にカーネルに組込まれるようになった。
+ファイルケーパビリティがカーネルにコンパイル時に組み込まれている場合、
+(全てのプロセスの先祖である) \fIinit\fP プロセスはバウンディングセットで
+全てのケーパビリティが セットされた状態で開始する。ファイルケーパビリティ
+が有効になっていない場合には、 \fIinit\fP はバウンディングセットで
+\fBCAP_SETPCAP\fP 以外の全てのケーパビリティがセットされた状態で開始する。
+このようになっているのは、 \fBCAP_SETPCAP\fP ケーパビリティがファイルケー
+パビリティがサポートされていない場合には 違った意味を持つからである。
+
+.\"
+.\"
+バウンディングセットからケーパビリティを削除しても、 スレッドの継承可能セットからはそのケーパビリティは削除されない。
+しかしながら、バウンディングセットからの削除により、 この先そのケーパビリティをスレッドの継承可能セットに追加すること はできなくなる。
+.SS "ユーザ ID 変更のケーパビリティへの影響"
+ユーザ ID が 0 と 0 以外の間で変化する際の振る舞いを従来と同じにするため、 スレッドの実 UID、実効 UID、保存
+set\-user\-ID、ファイルシステム UID が (\fBsetuid\fP(2), \fBsetresuid\fP(2)  などを使って)
+変更された際に、カーネルはそのスレッドのケーパビリティセットに 以下の変更を行う:
+.IP 1. 3
+UID の変更前には実 UID、実効 UID、保存 set\-user\-ID のうち 少なくとも一つが 0 で、変更後に実 UID、実効 UID、保存
+set\-user\-ID が すべて 0 以外の値になった場合、許可と実効のケーパビリティセットの 全ケーパビリティをクリアする。
+.IP 2.
+実効 UID が 0 から 0 以外に変更された場合、 実効ケーパビリティセットの全ケーパビリティをクリアする。
+.IP 3.
+実効 UID が 0 以外から 0 に変更された場合、 許可ケーパビリティセットの内容を実効ケーパビリティセットにコピーする。
+.IP 4.
+ファイルシステム UID が 0 から 0 以外に変更された場合 (\fBsetfsuid\fP(2)
+参照)、実効ケーパビリティセットの以下のケーパビリティがクリアされる: \fBCAP_CHOWN\fP, \fBCAP_DAC_OVERRIDE\fP,
+\fBCAP_DAC_READ_SEARCH\fP, \fBCAP_FOWNER\fP, \fBCAP_FSETID\fP, \fBCAP_LINUX_IMMUTABLE\fP
+(Linux 2.2.30 以降), \fBCAP_MAC_OVERRIDE\fP, \fBCAP_MKNOD\fP (Linux 2.2.30 以降)。
+ファイルシステム UID が 0 以外から 0 に変更された場合、 上記のケーパビリティのうち許可ケーパビリティセットで有効になっているものが
+実効ケーパビリティセットで有効にされる。
+.PP
+.\"
+各種 UID のうち少なくとも一つが 0 であるスレッドが、 その UID の全てが 0 以外になったときに許可ケーパビリティセットが
+クリアされないようにしたい場合には、 \fBprctl\fP(2)  の \fBPR_SET_KEEPCAPS\fP 操作を使えばよい。
+.SS プログラムでケーパビリティセットを調整する
+各スレッドは、 \fBcapget\fP(2)  や \fBcapset\fP(2)  を使って、自身のケーパビリティセットを取得したり変更したりできる。
+ただし、これを行うには、 \fIlibcap\fP パッケージで提供されている \fBcap_get_proc\fP(3)  や
+\fBcap_set_proc\fP(3)  を使うのが望ましい。 スレッドのケーパビリティセットの変更には以下のルールが適用される。
+.IP 1. 3
+呼び出し側が \fBCAP_SETPCAP\fP ケーパビリティを持っていない場合、新しい継承可能セットは、 既存の継承可能セットと許可セットの積集合
+(AND) の部分集合で なければならない。
+.IP 2.
+(Linux 2.6.25 以降)  新しい継承可能セットは、既存の継承可能セットとケーパビリティ・ バウンディングセットの積集合 (AND)
+の部分集合でなければならない。
+.IP 3.
+新しい許可セットは、既存の許可セットの部分集合でなければならない (つまり、そのスレッドが現在持っていない許可ケーパビリティを
+獲得することはできない)。
+.IP 4.
+新しい実効ケーパビリティセットは新しい許可ケーパビリティセットの 部分集合になっていなければならない。
+.SS "securebits フラグ: ケーパビリティだけの環境を構築する"
+.\" For some background:
+.\"       see http://lwn.net/Articles/280279/ and
+.\"       http://article.gmane.org/gmane.linux.kernel.lsm/5476/
+カーネル 2.6.26 以降で、 ファイルケーパビリティが有効になったカーネルでは、 スレッド単位の \fIsecurebits\fP
+フラグが実装されており、このフラグを使うと UID 0 (\fIroot\fP)  に対するケーパビリティの特別扱いを無効することができる。
+以下のようなフラグがある。
+.TP 
+\fBSECBIT_KEEP_CAPS\fP
+このフラグをセットされている場合、UID が 0 のスレッドの UID が 0 以外の値に
+切り替わる際に、そのスレッドはケーパビリティを維持することができる。 このフラグがセットされていない場合には、UID が 0 から 0 以外の値に
+切り替わると、そのスレッドは全てのケーパビリティを失う。 このフラグは \fBexecve\fP(2)  時には全てクリアされる (このフラグは、以前の
+\fBprctl\fP(2)  の \fBPR_SET_KEEPCAPS\fP 操作と同じ機能を提供するものである)。
+.TP 
+\fBSECBIT_NO_SETUID_FIXUP\fP
+このフラグをセットすると、スレッドの実効 UID とファイルシステム UID が 0 と 0 以外の間で切り替わった場合に、
+カーネルはケーパビリティセットの調整を行わなくなる (「ユーザ ID 変更のケーパビリティへの影響」の節を参照)。
+.TP 
+\fBSECBIT_NOROOT\fP
+このビットがセットされている場合、 set\-user\-ID\-root プログラムの実行時や、 実効 UID か 実 UID が 0 のプロセスが
+\fBexecve\fP(2)  を呼び出した時に、カーネルはケーパビリティを許可しない (「ケーパビリティと、ルートによるプログラムの実行」の節を参照)。
+.PP
+上記の "base" フラグの各々には対応する "locked" フラグが存在する。 いずれの "locked"
+フラグも一度セットされると戻すことはできず、 それ以降は対応する "base" フラグを変更することができなくなる。 "locked" フラグは
+\fBSECBIT_KEEP_CAPS_LOCKED\fP, \fBSECBIT_NO_SETUID_FIXUP_LOCKED\fP,
+\fBSECBIT_NOROOT_LOCKED\fP という名前である。
+.PP
+\fIsecurebits\fP フラグは、 \fBprctl\fP(2)  の操作 \fBPR_SET_SECUREBITS\fP や
+\fBPR_GET_SECUREBITS\fP を使うことで変更したり取得したりできる。 フラグを変更するには \fBCAP_SETPCAP\fP
+ケーパビリティが必要である。
+
+\fIsecurebits\fP フラグは子プロセスに継承される。 \fBexecve\fP(2) においては、
+\fBSECBIT_KEEP_CAPS\fP が常にクリアされる以外は、全てのフラグが保持される。
+
+アプリケーションは、以下の呼び出しを行うことにより、 自分自身および子孫となるプロセス全てに対して、
+必要なファイルケーパビリティを持ったプログラムを実行しない限り、 対応するケーパビリティを獲得できないような状況に閉じこめることができる。
+.in +4n
+.nf
+
+prctl(PR_SET_SECUREBITS,
+        SECBIT_KEEP_CAPS_LOCKED |
+        SECBIT_NO_SETUID_FIXUP |
+        SECBIT_NO_SETUID_FIXUP_LOCKED |
+        SECBIT_NOROOT |
+        SECBIT_NOROOT_LOCKED);
+.fi
+.in
+.SH 準拠
+.PP
+ケーパビリティに関する標準はないが、 Linux のケーパビリティは廃案になった POSIX.1e 草案に基づいて実装されている。
+.UR http://wt.xpilot.org\:/publications\:/posix.1e/
+.UE
+を参照。
+.SH 注意
+カーネル 2.5.27 以降、ケーパビリティは選択式のカーネルコンポーネント となっており、カーネル設定オプション
+CONFIG_SECURITY_CAPABILITIES により有効/無効を切り替えることができる。
+
+.\" 7b9a7ec565505699f503b4fcf61500dceb36e744
+The \fI/proc/PID/task/TID/status\fP file can be used to view the capability
+sets of a thread.  The \fI/proc/PID/status\fP file shows the capability sets of
+a process's main thread.  Before Linux 3.8, nonexistent capabilities were
+shown as being enabled (1) in these sets.  Since Linux 3.8, all non\-existent
+capabilities (above \fBCAP_LAST_CAP\fP)  are shown as disabled (0).
+
+\fIlibcap\fP パッケージは、ケーパビリティを設定・取得するための ルーチン群を提供している。これらのインタフェースは、 \fBcapset\fP(2)
+と \fBcapget\fP(2)  が提供するインターフェースと比べて、より使いやすく、変更される可能性が少ない。 このパッケージでは、
+\fBsetcap\fP(8), \fBgetcap\fP(8)  というプログラムも提供されている。 パッケージは以下で入手できる。
+.br
+.UR http://www.kernel.org\:/pub\:/linux\:/libs\:/security\:/linux\-privs
+.UE .
+
+バージョン 2.6.24 より前、およびファイルケーパビリティが 有効になっていない2.6.24 以降のカーネルでは、 \fBCAP_SETPCAP\fP
+ケーパビリティを持ったスレッドは自分以外のスレッドの ケーパビリティを操作できる。 しかしながら、これは理論的に可能というだけである。
+以下のいずれかの場合においても、どのスレッドも \fBCAP_SETPCAP\fP ケーパビリティを持つことはないからである。
+.IP * 2
+2.6.25 より前の実装では、システム共通のケーパビリティ・バウンディングセット \fI/proc/sys/kernel/cap\-bound\fP
+ではこのケーパビリティは常に無効になっており、 ソースを変更してカーネルを再コンパイルしない限り、 これを変更することはできない。
+.IP *
+現在の実装ではファイルケーパビリティが無効になっている場合、 プロセス毎のバウンディングセットからこのケーパビリティを抜いて \fBinit\fP
+は開始され、 システム上で生成される他の全てのプロセスでこのバウンディングセットが 継承される。
+.SH 関連項目
+\fBcapget\fP(2), \fBprctl\fP(2), \fBsetfsuid\fP(2), \fBcap_clear\fP(3),
+\fBcap_copy_ext\fP(3), \fBcap_from_text\fP(3), \fBcap_get_file\fP(3),
+\fBcap_get_proc\fP(3), \fBcap_init\fP(3), \fBcapgetp\fP(3), \fBcapsetp\fP(3),
+\fBlibcap\fP(3), \fBcredentials\fP(7), \fBpthreads\fP(7), \fBgetcap\fP(8), \fBsetcap\fP(8)
+.PP
+Linux カーネルソース内の \fIinclude/linux/capability.h\fP
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index c4e850d..0e6a853 100644 (file)
@@ -1,5 +1,5 @@
 .\" Copyright (c) 1996 Eric S. Raymond <esr@thyrsus.com>
-.\"                and Andries Brouwer <aeb@cwi.nl>
+.\" and Copyright (c) Andries Brouwer <aeb@cwi.nl>
 .\"
 .\" %%%LICENSE_START(GPLv2+_DOC_ONEPARA)
 .\" This is free documentation; you can redistribute it and/or
@@ -351,6 +351,6 @@ ESC ) xx, ESC * xx, ESC + xx はそれぞれ ESC \- xx, ESC . xx, ESC / xx と
 \fBconsole\fP(4), \fBconsole_codes\fP(4), \fBconsole_ioctl\fP(4), \fBascii\fP(7),
 \fBiso_8859\-1\fP(7), \fBunicode\fP(7), \fButf\-8\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5edab4e..5d9c33a 100644 (file)
@@ -56,6 +56,6 @@ main(void)
 \fBclog2\fP(3), \fBconj\fP(3), \fBcpow\fP(3), \fBcproj\fP(3), \fBcreal\fP(3), \fBcsin\fP(3),
 \fBcsinh\fP(3), \fBcsqrt\fP(3), \fBctan\fP(3), \fBctanh\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 73aafbd..9b610f7 100644 (file)
@@ -177,6 +177,6 @@ CP\ 1251 は Windows キリル文字としても知られている。
 .SH 関連項目
 \fBascii\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index d00eea8..d607182 100644 (file)
@@ -149,6 +149,6 @@ POSIX のスレッド仕様では、これらの識別子がプロセス内の
 \fBeuidaccess\fP(3), \fBinitgroups\fP(3), \fBtcgetpgrp\fP(3), \fBtcsetpgrp\fP(3),
 \fBcapabilities\fP(7), \fBpath_resolution\fP(7), \fBunix\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e98e122..92976ad 100644 (file)
@@ -170,6 +170,6 @@ raw ソケットモードは Linux 独特のもので、もう一方の実装で
 .SH 関連項目
 \fBrecvmsg\fP(2), \fBsendmsg\fP(2), \fBcapabilities\fP(7), \fBsocket\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7bb8015..a61251e 100644 (file)
@@ -138,6 +138,6 @@ environ \- ユーザ環境
 \fBclearenv\fP(3), \fBexec\fP(3), \fBgetenv\fP(3), \fBputenv\fP(3), \fBsetenv\fP(3),
 \fBunsetenv\fP(3), \fBlocale\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index bebca99..2fe6d01 100644 (file)
@@ -308,6 +308,6 @@ file handle" とも 呼ばれ、オープンされたファイルのカーネル
 .SH 関連項目
 \fBepoll_create\fP(2), \fBepoll_create1\fP(2), \fBepoll_ctl\fP(2), \fBepoll_wait\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 704b28f..50acc1f 100644 (file)
@@ -120,7 +120,7 @@ ISO 標準の C。 \fBgcc\fP(1)  を \fI\-std=c99\fP や \fI\-ansi\fP などの
 .IP \(bu
 値が 2 以上の場合、 POSIX.2\-1992 関連の定義も追加で公開される。
 .IP \(bu
-.\" 199506L functionality is only available since glibc 2.1
+.\" 199506L functionality is available only since glibc 2.1
 値が 199309 以上の場合、 POSIX.1b (リアルタイム拡張) 関連の定義が追加で公開される。
 .IP \(bu
 値が 199506 以上の場合、 POSIX.1c (スレッド) 関連の定義が追加で公開される。
@@ -401,6 +401,6 @@ main(int argc, char *argv[])
 
 \fI/usr/include/features.h\fP
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index f781d5c..8fdefec 100644 (file)
@@ -45,6 +45,6 @@ FIFO 特殊ファイルは \fBmkfifo\fP(3)  で作成することができ、 \f
 \fBmkfifo\fP(1), \fBopen\fP(2), \fBpipe\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2),
 \fBsocketpair\fP(2), \fBmkfifo\fP(3), \fBpipe\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index ab2b164..902f29e 100644 (file)
@@ -85,6 +85,6 @@ of the Ottawa Linux Symposium 2002), futex の使用例ライブラリ, futex\-*
 .UR ftp://ftp.kernel.org\:/pub\:/linux\:/kernel\:/people\:/rusty/
 .UE .
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index b88238f..bee7f56 100644 (file)
@@ -150,6 +150,6 @@ locale) の \fBLC_COLLATE\fP カテゴリで定義されている照合順序が
 .SH 関連項目
 \fBsh\fP(1), \fBfnmatch\fP(3), \fBglob\fP(3), \fBlocale\fP(7), \fBregex\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index cf9c3da..53363b8 100644 (file)
@@ -383,6 +383,6 @@ The Filesystem Hierarchy Standard, Version 2.2
 
 The Filesystem Hierarchy Standard
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 922292d..660e4bb 100644 (file)
@@ -90,6 +90,6 @@ EDU で、これは一つしか要素がないからである。
 .\" 4.2BSD.
 \fBgethostbyname\fP(3), \fBresolver\fP(5), \fBmailaddr\fP(7), \fBnamed\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9552060..feadb27 100644 (file)
@@ -141,6 +141,6 @@ inode として出力される。
 .PP
 \fBRFC\ 792\fP: ICMP プロトコルの説明
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 57c6e82..acbb16b 100644 (file)
@@ -223,8 +223,7 @@ struct inotify_event {
 作成可能な監視対象の数の実 UID 単位の上限を指定する。
 .SH バージョン
 inotify は 2.6.13 の Linux カーネルに組込まれた。 これに必要なライブラリのインターフェースは、 glibc のバージョン 2.4
-に追加された (\fBIN_DONT_FOLLOW\fP, \fBIN_MASK_ADD\fP, \fBIN_ONLYDIR\fP だけはバージョン 2.5
-で追加された)。
+に追加された (\fBIN_DONT_FOLLOW\fP, \fBIN_MASK_ADD\fP, \fBIN_ONLYDIR\fP はバージョン 2.5 で追加された)。
 .SH 準拠
 inotify API は Linux 独自のものである。
 .SH 注意
@@ -280,6 +279,6 @@ inotify API では影響が受けるファイルをファイル名で特定す
 
 Linux カーネルソース内の \fIDocumentation/filesystems/inotify.txt\fP
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2048afd..e4c5617 100644 (file)
@@ -42,6 +42,6 @@ intro \- 概要、慣習やその他の説明
 .SH 関連項目
 \fBstandards\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man7/ip.7 b/manual/LDP_man-pages/draft/man7/ip.7
new file mode 100644 (file)
index 0000000..507f45b
--- /dev/null
@@ -0,0 +1,769 @@
+.\" t
+.\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
+.\"
+.\" %%%LICENSE_START(VERBATIM_ONE_PARA)
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" %%%LICENSE_END
+.\"
+.\" $Id: ip.7,v 1.19 2000/12/20 18:10:31 ak Exp $
+.\"
+.\" FIXME: The following socket options are yet to be documented
+.\"    IP_XFRM_POLICY (2.5.48)
+.\"        Needs CAP_NET_ADMIN
+.\"    IP_IPSEC_POLICY (2.5.47)
+.\"        Needs CAP_NET_ADMIN
+.\"    IP_PASSSEC (2.6.17)
+.\"        Boolean
+.\"        commit 2c7946a7bf45ae86736ab3b43d0085e43947945c
+.\"        Author: Catherine Zhang <cxzhang@watson.ibm.com>
+.\"    IP_MINTTL (2.6.34)
+.\"        commit d218d11133d888f9745802146a50255a4781d37a
+.\"        Author: Stephen Hemminger <shemminger@vyatta.com>
+.\"    MCAST_JOIN_GROUP (2.4.22 / 2.6)
+.\"    MCAST_BLOCK_SOURCE (2.4.22 / 2.6)
+.\"    MCAST_UNBLOCK_SOURCE (2.4.22 / 2.6)
+.\"    MCAST_LEAVE_GROUP (2.4.22 / 2.6)
+.\"    MCAST_JOIN_SOURCE_GROUP (2.4.22 / 2.6)
+.\"    MCAST_LEAVE_SOURCE_GROUP (2.4.22 / 2.6)
+.\"    MCAST_MSFILTER (2.4.22 / 2.6)
+.\"    IP_UNICAST_IF (3.4)
+.\"        commit 76e21053b5bf33a07c76f99d27a74238310e3c71
+.\"        Author: Erich E. Hoover <ehoover@mines.edu>
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH IP 7 2013\-04\-16 Linux "Linux Programmer's Manual"
+.SH 名前
+ip \- Linux IPv4 プロトコルの実装
+.SH 書式
+\fB#include <sys/socket.h>\fP
+.br
+.\" .B #include <net/netinet.h> -- does not exist anymore
+.\" .B #include <linux/errqueue.h> -- never include <linux/foo.h>
+\fB#include <netinet/in.h>\fP
+.br
+\fB#include <netinet/ip.h> \fP/* 上記のスーパーセット */
+.sp
+\fItcp_socket\fP\fB = socket(AF_INET, SOCK_STREAM, 0);\fP
+.br
+\fIudp_socket\fP\fB = socket(AF_INET, SOCK_DGRAM, 0);\fP
+.br
+\fIraw_socket\fP\fB = socket(AF_INET, SOCK_RAW, \fP\fIprotocol\fP\fB);\fP
+.SH 説明
+.\" FIXME has someone verified that 2.1 is really 1812 compliant?
+Linux は RFC\ 791 と RFC\ 1122 で記述されている Internet Protocol, version 4 を実装している。
+\fBip\fP には RFC\ 1112 に準拠した level 2 マルチキャストの実装が含まれている。 またパケットフィルタ機能を含む IP
+ルーターも実装されている。
+.PP
+プログラミング・インターフェースは BSD ソケットと互換である。 ソケットに関するより詳細な情報は \fBsocket\fP(7)  を参照のこと。
+.PP
+IP ソケットは、 \fBsocket\fP(2) 関数を \fBsocket(AF_INET, \fP\fIsocket_type\fP\fB, \fP
+\fIprotocol\fP\fB)\fP のように呼び出すことで生成される。指定できるソケットタイプは
+3 つあり、 \fBtcp\fP(7) ソケットをオープンする場合 \fBSOCK_STREAM\fP、 \fBudp\fP(7)
+ソケットをオープンする場合 \fBSOCK_DGRAM\fP、 IP プロトコルに直接アクセスする
+ために \fBraw\fP(7) ソケットをオープンする場合には \fBSOCK_RAW\fP である。
+\fIprotocol\fP は送受信される IP ヘッダに書かれる IP プロトコルである。
+指定できる値は、 TCP ソケットには 0 か \fBIPPROTO_TCP\fP、 UDP ソケットには
+0 か \fBIPPROTO_UDP\fP に限られる。 \fBSOCK_RAW\fP に対しては、 RFC\ 1700 で定義
+されている有効な IANA IP プロトコルを、 割り当てられている番号で指定する
+ことができる。
+.PP
+When a process wants to receive new incoming packets or connections, it
+should bind a socket to a local interface address using \fBbind\fP(2).  In this
+case, only one IP socket may be bound to any given local (address, port)
+pair.  When \fBINADDR_ANY\fP is specified in the bind call, the socket will be
+bound to \fIall\fP local interfaces.  When \fBlisten\fP(2)  is called on an
+unbound socket, the socket is automatically bound to a random free port with
+the local address set to \fBINADDR_ANY\fP.  When \fBconnect\fP(2)  is called on an
+unbound socket, the socket is automatically bound to a random free port or
+to a usable shared port with the local address set to \fBINADDR_ANY\fP.
+
+\fBSO_REUSEADDR\fP フラグがセットされていない場合には、 バインドされていた TCP ローカルソケットアドレスは
+クローズされた後しばらくの間使えなくなる。 \fBSO_REUSEADDR\fP フラグを使うと TCP の信頼性を低下させるので、
+使うときには注意が必要である。
+.SS アドレスのフォーマット
+IP ソケットアドレスは、 IP インターフェースアドレスと 16ビットのポート番号の組み合わせで定義される。 IP
+プロトコルそのものはポート番号を扱わない。 ポート番号は、 \fBudp\fP(7)  や \fBtcp\fP(7)  といった、上位のプロトコルで実装される。
+raw ソケットでは、 \fIsin_port\fP が IP プロトコルにセットされる。
+.PP
+.in +4n
+.nf
+struct sockaddr_in {
+    sa_family_t    sin_family; /* address family: AF_INET */
+    in_port_t      sin_port;   /* port in network byte order */
+    struct in_addr sin_addr;   /* internet address */
+};
+
+/* Internet address. */
+struct in_addr {
+    uint32_t       s_addr;     /* address in network byte order */
+};
+.fi
+.in
+.PP
+\fIsin_familiy\fP には常に \fBAF_INET\fP をセットする。これは必須である。 Linux 2.2 では、このセットを忘れると
+ほとんどのネットワーク関数は \fBEINVAL\fP を返すようになっている。 \fIsin_port\fP
+にはポート番号をネットワークバイトオーダーで指定する。 1024 未満のポート番号は \fI特権ポート (privileged ports)\fP と呼ばれる
+(\fI予約ポート (reserved ports)\fP とも時々呼ばれる)。 特権プロセス (\fBCAP_NET_BIND_SERVICE\fP
+ケーパビリティを持つプロセス) 以外のプロセスは、これらのポートには \fBbind\fP(2)  できない。 IPv4
+プロトコルそのものにはポートに関する概念がない。ポートが実装されるのは、 \fBtcp\fP(7)  や \fBudp\fP(7)
+といった、上位のプロトコルにおいてのみである。
+.PP
+\fIsin_addr\fP は IP ホストアドレスである。 \fIstruct in_addr\fP の \fIs_addr\fP
+メンバには、ホストのインターフェースアドレスを ネットワークバイトオーダーで
+指定する。 \fIin_addr\fP は、\fBINADDR_*\fP の一つ (例えば \fBINADDR_ANY\fP) を代入する、
+ライブラリ関数 \fBinet_aton\fP(3), \fBinet_addr\fP(3), \fBinet_makeaddr\fP(3) を用いる、
+あるいは名前解決機構 (name resolver) を直接用いる、のどれかで設定すべきである。
+(\fBgethostbyname\fP(3) を見よ)。
+
+.\" Leave a loophole for XTP @)
+IPv4 アドレスには、ユニキャストアドレス、 ブロードキャストアドレス、マルチキャストアドレスがある。
+ユニキャストアドレスは、あるホストの一つのアドレスを指定する。 ブロードキャストアドレスは、あるネットワーク上の全てのホストを指定する。
+マルチキャストアドレスは、マルチキャストグループに所属する 全てのホストを指定する。ブロードキャストアドレスへのデータグラムは、
+\fBSO_BROADCAST\fP ソケットフラグがセットされていないと送信・受信できない。
+現在の実装では、接続指向のソケットにはユニキャストアドレスしか使えない。
+
+アドレスとポートは常にネットワークバイトオーダーで格納されることに注意せよ。 具体的には、ポートを指定する数値には \fBhtons\fP(3)
+を呼び出す必要がある。 標準ライブラリにあるアドレス/ポート操作関数は すべてネットワークバイトオーダーで動作する。
+
+特別なアドレスがいくつか存在する: \fBINADDR_LOOPBACK\fP(127.0.0.1)  は loopback
+デバイスを通して常にローカルなホストを参照する。 \fBINADDR_ANY\fP(0.0.0.0)  は任意のアドレスを意味し、バインド用である。
+\fBINADDR_BROADCAST\fP(255.255.255.255)  は任意のホストを意味し、歴史的理由から、バインドの際には
+\fBINADDR_ANY\fP と同じ効果になる。
+.SS ソケットオプション
+.\" or SOL_IP on Linux
+IP にはプロトコル固有のソケットオプションがいくつか存在し、 \fBsetsockopt\fP(2)  で設定が、 \fBgetsockopt\fP(2)
+で取得ができる。 IP のソケットオプションレベルは \fBIPPROTO_IP\fP である。 ブール整数値のフラグでは、 0
+は偽、それ以外は真を意味する。
+.TP 
+\fBIP_ADD_MEMBERSHIP\fP (Linux 1.2 以降)
+マルチキャストグループに参加する。 引き数は \fIip_mreqn\fP 構造体である。
+.sp
+.in +4n
+.nf
+struct ip_mreqn {
+    struct in_addr imr_multiaddr; /* IP multicast group
+                                     address */
+    struct in_addr imr_address;   /* IP address of local
+                                     interface */
+    int            imr_ifindex;   /* interface index */
+};
+.fi
+.in
+.sp
+.\" (i.e., within the 224.0.0.0-239.255.255.255 range)
+\fIimr_multiaddr\fP には、アプリケーションが参加または撤退したい マルチキャストグループのアドレスが入る。
+指定するアドレスは有効なマルチキャストアドレスでなければならない (さもなければ \fBsetsockopt\fP(2)  がエラー \fBEINVAL\fP
+で失敗する)。 \fIimr_address\fP はシステムがマルチキャストグループに参加する際に用いる ローカルなインターフェースのアドレスである。
+これが \fBINADDR_ANY\fP であった場合には、適切なインターフェースがシステムによって選択される。 \fIimr_ifindex\fP は
+\fIimr_multiaddr\fP グループに参加/撤退するインターフェースの interface index である。
+どのインターフェースでもよい場合は 0 にする。
+.IP
+.\"
+\fIip_mreqn\fP 構造体は Linux 2.2 以降でのみ利用可能である。互換性のため、
+古い \fIip_mreq\fP 構造体 (Linux 1.2 以降で存在する) もまだサポートされている。
+\fIip_mreqn\fP との違いは、 \fIimr_ifindex\fP フィールドを含まないことだけである。
+\fBsetsockopt\fP(2) でのみ使える。
+.TP 
+\fBIP_ADD_SOURCE_MEMBERSHIP\fP (Linux 2.4.22 以降 / 2.5.68 以降)
+Join a multicast group and allow receiving data only from a specified
+source.  Argument is an \fIip_mreq_source\fP structure.
+.sp
+.in +4n
+.nf
+struct ip_mreq_source {
+    struct in_addr imr_multiaddr;  /* IP multicast group
+                                      address */
+    struct in_addr imr_interface;  /* IP address of local
+                                      interface */
+    struct in_addr imr_sourceaddr; /* IP address of
+                                      multicast source */
+};
+.fi
+.in
+.sp
+The \fIip_mreq_source\fP structure is similar to \fIip_mreqn\fP described under
+\fBIP_ADD_MEMBERSIP\fP.  The \fIimr_multiaddr\fP field contains the address of the
+multicast group the application wants to join or leave.  The
+\fIimr_interface\fP field is the address of the local interface with which the
+system should join the multicast group.  Finally, the \fIimr_sourceaddr\fP
+field contains the address of the source the application wants to receive
+data from.
+.IP
+This option can be used multiple times to allow receiving data from more
+than one source.
+.TP 
+\fBIP_BLOCK_SOURCE\fP (since Linux 2.4.22 以降 / 2.5.68 以降)
+Stop receiving multicast data from a specific source in a given group.  This
+is valid only after the application has subscribed to the multicast group
+using either \fBIP_ADD_MEMBERSHIP\fP or \fBIP_ADD_SOURCE_MEMBERSHIP\fP.
+.IP
+Argument is an \fIip_mreq_source\fP structure as described under
+\fBIP_ADD_SOURCE_MEMBERSHIP\fP.
+.TP 
+\fBIP_DROP_MEMBERSHIP\fP (Linux 1.2 以降)
+マルチキャストグループから抜ける。引き数は \fBIP_ADD_MEMBERSHIP\fP と同様に \fIip_mreqn\fP または \fIip_mreq\fP
+構造体である。
+.TP 
+\fBIP_DROP_SOURCE_MEMBERSHIP\fP (since Linux 2.4.22 / 2.5.68)
+Leave a source\-specific group\(emthat is, stop receiving data from a given
+multicast group that come from a given source.  If the application has
+subscribed to multiple sources within the same group, data from the
+remaining sources will still be delivered.  To stop receiving data from all
+sources at once, use \fBIP_LEAVE_GROUP\fP.
+.IP
+Argument is an \fIip_mreq_source\fP structure as described under
+\fBIP_ADD_SOURCE_MEMBERSHIP\fP.
+.TP 
+\fBIP_FREEBIND\fP (Linux 2.4 以降)
+.\" Precisely: 2.4.0-test10
+このブール値のオプションを有効にすると、ローカルではない IP アドレスや存在
+しない IP アドレスをバインドできるようになる。これを使うと、対応するネット
+ワークインターフェイスがなかったり、アプリケーションがソケットをバインドしようと
+する時点で特定の動的 IP アドレスが有効になっていなかったりしても、ソケットを
+接続待ち状態 (listening) にできるようになる。
+このオプションは、下記に説明がある \fIip_nonlocal_bind\fP \fI/proc\fP インターフェイス
+のソケット単位の設定である。
+.TP 
+\fBIP_HDRINCL\fP (Linux 2.0 以降)
+有効になっていると、ユーザは IP ヘッダをユーザーデータの前に与える。 \fBSOCK_RAW\fP ソケットでのみ有効である。詳細は \fBraw\fP(7)
+を見よ。このフラグが有効になっていると、 \fBIP_OPTIONS\fP, \fBIP_TTL\fP, \fBIP_TOS\fP は無視される。
+.TP 
+\fBIP_MSFILTER\fP (since Linux 2.4.22 / 2.5.68)
+This option provides access to the advanced full\-state filtering API.
+Argument is an \fIip_msfilter\fP structure.
+.sp
+.in +4n
+.nf
+struct ip_msfilter {
+    struct in_addr imsf_multiaddr; /* IP multicast group
+                                      address */
+    struct in_addr imsf_interface; /* IP address of local
+                                      interface */
+    uint32_t       imsf_fmode;     /* Filter\-mode */
+
+    uint32_t       imsf_numsrc;    /* Number of sources in
+                                      the following array */
+    struct in_addr imsf_slist[1];  /* Array of source
+                                      addresses */
+};
+.fi
+.in
+.sp
+There are two macros, \fBMCAST_INCLUDE\fP and \fBMCAST_EXCLUDE\fP, which can be
+used to specify the filtering mode.  Additionally, the
+\fBIP_MSFILTER_SIZE\fP(n)  macro exists to determine how much memory is needed
+to store \fIip_msfilter\fP structure with \fIn\fP sources in the source list.
+.IP
+For the full description of multicast source filtering refer to RFC 3376.
+.TP 
+\fBIP_MTU\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.124
+ソケットの、既知の path MTU を取得する。 ソケットが接続している場合のみ有効である。 \fBgetsockopt\fP(2)  でのみ使える。
+.TP 
+\fBIP_MTU_DISCOVER\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.124
+ソケットの Path MTU Discovery の設定をセット・取得する。
+有効になっていると、Linux は \fBSOCK_STREAM\fP ソケットに対して
+RFC\ 1191 で定義されている Path MTU Discovery を行う。
+\fBSOCK_STREAM\fP でないソケットについては、 \fBIP_PMTUDISC_DO\fP をセットすると、
+全ての送信パケットでフラグメント不許可フラグ (don't\-fragment flag) が必ず
+セットされるようになる。 \fBSOCK_STREAM\fP でないソケットでは、
+パケットを MTU のサイズの塊に分割したり、必要に応じて再送したりするのは、
+ユーザが責任を持って行う必要がある。
+既知の Path MTU よりも大きなデータグラムの送信が要求されると、
+カーネルは (\fBEMSGSIZE\fP で) 送信を拒否する。
+\fBIP_PMTUDISC_WANT\fP の場合は、 Path MTU に基づいて必要であればデータグラム
+の分割が行われ、それ以外の場合はフラグメント不許可フラグがセットされる。
+
+システム全体のデフォルトは \fBIP_PMTUDISC_WANT\fP と \fBIP_PMTUDISC_DONT\fP の
+どちらかに設定することができる。設定の変更は、
+\fI/proc/sys/net/ipv4/ip_no_pmtu_disc\fP ファイルに、0 (\fBIP_PMTUDISC_WANT\fP) か
+0 以外 (\fBIP_PMTUDISC_DONT\fP) を書き込むことで行う。
+.TS
+tab(:);
+c l
+l l.
+Path MTU discovery 値:意味
+IP_PMTUDISC_WANT:ルートごとの設定を用いる。
+IP_PMTUDISC_DONT:Path MTU Discovery を行わない。
+IP_PMTUDISC_DO:常に Path MTU Discovery を行う。
+IP_PMTUDISC_PROBE:DFビットをセットするが、Path MTU を無視する。
+.TE
+
+path MTU discovery が有効になっていると、カーネルは宛先ホストごとに 自動的に
+path MTU を処理する。特定の相手に \fBconnect\fP(2) で接続した場合には、
+\fBIP_MTU\fP ソケットオプションを用いれば、既知の path MTU の取得に便利である
+(たとえば \fBEMSGSIZE\fP エラーが起きた後など)。 path MTU は時間とともに変化する
+かもしれない。 宛先がたくさんあるコネクションレスなソケットでは、 与えられた
+宛先に対する新しい MTU にも、 エラーキューを用いてアクセスすることができる
+(\fBIP_RECVERR\fP を見よ)。 MTU 更新が到着するごとに、新たなエラーがキューイング
+される。
+
+MTU discovery の進行中には、データグラムソケットからの初期パケットは 到着しないかもしれない。 UDP を用いるアプリケーションでは、
+このことを気にかけておき、 パケットの再送アルゴリズムにこの分を除外させるべきである。
+
+.\" FIXME this is an ugly hack
+接続していないソケットに対して path MTU discovery プロセスを立ち上げるには、 大きなデータグラムサイズ (最大 64K
+ヘッダバイト長) からはじめて、 path MTU が更新されるまでサイズを縮めていくことも可能である。
+
+path MTU の値をまず見積もってみるには、宛先アドレスに \fBconnect\fP(2)  を使ってデータグラムソケットを接続し、
+\fBgetsockopt\fP(2)  を \fBIP_MTU\fP オプションとともに呼び、 MTU を取得することである。
+
+\fBIP_PMTUDISC_PROBE\fP (Linux 2.6.22 以降で利用可能) を設定することで、 \fBSOCK_DGRAM\fP や
+\fBSOCK_RAW\fP のソケットで RFC 4821 の MTU 探索を実装することが可能である。 また、この機能は、 \fBtracepath\fP(8)
+のような診断ツールで特に有用である。これらのツールでは、 観測された Path MTU よりも大きな探索パケットを意図的に 送信しようとする。
+.TP 
+\fBIP_MULTICAST_ALL\fP (since Linux 2.6.31)
+This option can be used to modify the delivery policy of multicast messages
+to sockets bound to the wildcard \fBINADDR_ANY\fP address.  The argument is a
+boolean integer (defaults to 1).  If set to 1, the socket will receive
+messages from all the groups that have been joined globally on the whole
+system.  Otherwise, it will deliver messages only from the groups that have
+been explicitly joined (for example via the \fBIP_ADD_MEMBERSHIP\fP option) on
+this particular socket.
+.TP 
+\fBIP_MULTICAST_IF\fP (Linux 1.2 以降)
+ローカルデバイスをマルチキャストソケットとして設定する。引き数は \fBIP_ADD_MEMBERSHIP\fP と同様に \fIip_mreqn\fP または
+\fIip_mreq\fP 構造体である。
+.IP
+不正なソケットオプションが渡されると、 \fBENOPROTOOPT\fP が返される。
+.TP 
+\fBIP_MULTICAST_LOOP\fP (Linux 1.2 以降)
+マルチキャストパケットをローカルなソケットにループバックするかどうかを 定めるブール値の整数引き数を設定・取得する。
+.TP 
+\fBIP_MULTICAST_TTL\fP (Linux 1.2 以降)
+このソケットから発信されるマルチキャストパケットの time\-to\-live 値を設定・取得する。 マルチキャストパケットに対しては、できるだけ小さな
+TTL に設定することがとても重要である。デフォルトは 1 で、 ユーザープログラムが明示的に要求しない限り
+マルチキャストパケットはローカルなネットワークから出ないことになる。 引き数に整数を取る。
+.TP 
+\fBIP_NODEFRAG\fP (Linux 2.6.36 以降)
+有効 (引き数が 0 以外の場合) になっていると、netfilter 層での出力パケットの
+再構築 (reassembly) が行われなくなる。このオプションは \fBSOCK_RAW\fP ソケット
+においてのみ有効である。引き数は整数である。
+.TP 
+\fBIP_OPTIONS\fP (Linux 2.0 以降)
+.\" Precisely: 1.3.30
+このソケットから送られるパケット全てに付随する IP オプションを 設定・取得する。オプションを保存しているメモリバッファへのポインタと
+オプションの長さとを引き数に取る。 \fBsetsockopt\fP(2)  を呼び出すと、ソケットに関連づけられる IP オプションを設定できる。 IPv4
+におけるオプションのサイズの最大値は 40 バイトである。 用いることのできるオプションについては RFC\ 791 を見よ。
+\fBSOCK_STREAM\fP ソケットに対する初期接続要求パケットに IP オプションが含まれていると、
+ルーティングヘッダを付けて戻されてくる初期パケットの IP オプションに同じオプションがセットされる。接続が確立された後、
+やってきたパケットのオプションを変更することはできない。 デフォルトでは。外部から受信したパケットの全ての source routing オプション
+の処理は無効となっており、 \fI/proc\fP インタフェースの \fIaccept_source_route\fP
+を使うとこれを有効にできる。これを無効にしていても timestamps など の他のオプションの処理は行われる。データグラムソケットでは、 IP
+オプションはローカルユーザーしか設定できない。 \fBgetsockopt\fP(2)  を \fBIP_OPTIONS\fP
+をつけて呼ぶと、現在送信に用いられている IP オプションを 引き数に与えたバッファに取得できる。
+.TP 
+\fBIP_PKTINFO\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.68
+\fBIP_PKTINFO\fP 補助メッセージを渡す。これには到着パケットに関する情報を提供する \fIpktinfo\fP 構造体が含まれている。
+データグラム指向のソケットでしか動作しない。 引き数は \fBIP_PKTINFO\fP メッセージを通過させるかどうかをソケットに知らせるフラグである。
+メッセージ自身は \fBrecvmsg\fP(2)  または \fBsendmsg\fP(2)  を用いたパケットの制御メッセージとしてのみ送受信できる。
+.IP
+.in +4n
+.nf
+struct in_pktinfo {
+    unsigned int   ipi_ifindex;  /* Interface index */
+    struct in_addr ipi_spec_dst; /* Local address */
+    struct in_addr ipi_addr;     /* Header Destination
+                                    address */
+};
+.fi
+.in
+.IP
+.\" FIXME elaborate on that.
+.\" This field is grossly misnamed
+\fIipi_ifindex\fP はパケットが受信されたインターフェースの、他と重ならないインデックスである。 \fIipi_spec_dst\fP
+はパケットのローカルアドレスである。 \fIipi_addr\fP はパケットヘッダにある宛先アドレスである。 \fBIP_PKTINFO\fP が
+\fBsendmsg\fP(2)  に渡されて、かつ \fIipi_spec_dst\fP が 0 以外の場合、 \fIipi_spec_dst\fP
+はルーティングテーブルを検索する際にローカルな送信元アドレスとして使用され、 IP source route オプションを設定するのにも使用される。
+\fIipi_ifindex\fP が 0 以外の場合、このインデックスによって指定されるインターフェースの プライマリローカルアドレスで
+\fIipi_spec_dst\fP を上書きし、ルーティングテーブルを検索する。
+.TP 
+\fBIP_RECVERR\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.15
+.\" or SOL_IP on Linux
+エラーメッセージの受け渡しに、信頼性の高い拡張された方法を有効にする。 データグラムソケットに対して有効になっていると、
+発生したエラーは全てソケットごとのエラーキューに保存される。 ユーザーはソケット操作からエラーを受け取ったとき、 \fBrecvmsg\fP(2)  を
+\fBMSG_ERRQUEUE\fP フラグとともに呼べばそのエラーを取得できる。 そのエラーを記述する \fIsock_extended_err\fP
+構造体が、タイプ \fBIP_RECVERR\fP・ レベル \fBIPPROTO_IP\fP の補助メッセージとして渡される。
+これは接続志向でないソケットで信頼性の高いエラー処理を行いたい場合に 有用である。エラーキューの受信データフラグメントには エラーパケットが含まれる。
+.IP
+\fBIP_RECVERR\fP 制御メッセージには \fIsock_extended_err\fP 構造体が含まれる:
+.IP
+.in +4n
+.ne 18
+.nf
+#define SO_EE_ORIGIN_NONE    0
+#define SO_EE_ORIGIN_LOCAL   1
+#define SO_EE_ORIGIN_ICMP    2
+#define SO_EE_ORIGIN_ICMP6   3
+
+struct sock_extended_err {
+    uint32_t ee_errno;   /* error number */
+    uint8_t  ee_origin;  /* where the error originated */
+    uint8_t  ee_type;    /* type */
+    uint8_t  ee_code;    /* code */
+    uint8_t  ee_pad;
+    uint32_t ee_info;    /* additional information */
+    uint32_t ee_data;    /* other data */
+    /* More data may follow */
+};
+
+struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err *);
+.fi
+.in
+.IP
+\fIee_errno\fP にはキューに入っているエラーの \fIerrno\fP 番号が入る。 \fIee_origin\fP
+にはエラーが発生した場所を示すコードが入る。 その他のフィールドはプロトコル依存である。 \fBSO_EE_OFFENDER\fP
+マクロは与えられた補助メッセージへのポインタから エラーの発生したネットワークオブジェクトのアドレスへのポインタを返す。 アドレスが不明な場合、
+\fIsockaddr\fP 構造体の \fIsa_family\fP フィールドは \fBAF_UNSPEC\fP となり、その他のフィールド値は不定である。
+.IP
+.\" FIXME . Is it a good idea to document that? It is a dubious feature.
+.\" On
+.\" .B SOCK_STREAM
+.\" sockets,
+.\" .B IP_RECVERR
+.\" has slightly different semantics. Instead of
+.\" saving the errors for the next timeout, it passes all incoming
+.\" errors immediately to the user.
+.\" This might be useful for very short-lived TCP connections which
+.\" need fast error handling. Use this option with care:
+.\" it makes TCP unreliable
+.\" by not allowing it to recover properly from routing
+.\" shifts and other normal
+.\" conditions and breaks the protocol specification.
+IP は以下のような \fIsock_extended_err\fP 構造体を用いる: \fIee_origin\fP は、エラー
+が ICMP パケットとして受信された場合には \fBSO_EE_ORIGIN_ICMP\fP にセットされ、
+ローカルで起こった場合には \fBSO_EE_ORIGIN_LOCAL\fP にセットされる。 不明な値は
+無視される。 \fIee_type\fP と \fIee_code\fP は ICMP ヘッダの type フィールドと
+code フィールドの値にセットされる。 \fIee_info\fP には \fBEMSGSIZE\fP エラーに対す
+る discover された MTU が入る。 メッセージにはエラーを引き起こしたノードの
+\fIsockaddr_in\fP 構造体も含まれる。 これには \fBSO_EE_OFFENDER\fP マクロを使ってア
+クセスできる。 ソースが不明の場合、 \fBSO_EE_OFFENDER\fP アドレスの
+\fIsin_family\fP フィールドは \fBAF_UNSPEC\fP となる。 エラーがネットワークで起きた
+場合には、 ソケットで有効になっていたすべての IP オプション (\fBIP_OPTIONS\fP,
+\fBIP_TTL\fP など) とエラーパケットに含まれていたすべての IP オプションとが、 制
+御メッセージとして渡される。 エラーを起こしたパケットのペイロード (payload)
+は 普通のペイロードとして返される。 TCP にはエラーキューがないことに注意して
+ほしい。 \fBMSG_ERRQUEUE\fP は \fBSOCK_STREAM\fP ソケットに対しては使えない。 TCP
+では \fBIP_RECVERR\fP だけが有効だが、ソケット関数から返されるエラーは
+\fBSO_ERROR\fP だけになる。
+.IP
+raw ソケットに対して \fBIP_RECVERR\fP を指定すると、受信したすべての ICMP エラーをアプリケーションに
+渡すようになる。指定しないと、 接続済みのソケットに対するエラーだけを報告する。
+.IP
+このオプションはブール値のフラグを設定・取得する。 \fBIP_RECVERR\fP はデフォルトではオフになっている。
+.TP 
+\fBIP_RECVOPTS\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.15
+到着した全ての IP オプションを \fBIP_OPTION\fP コントロールメッセージに入れてユーザーに渡す。
+ルーティングヘッダとその他のオプションとは、 ローカルホストに対してはあらかじめ記入されている。 \fBSOCK_STREAM\fP
+ソケットではサポートされていない。
+.TP 
+\fBIP_RECVORIGDSTADDR\fP (Linux 2.6.29 以降)
+.\" commit e8b2dfe9b4501ed0047459b2756ba26e5a940a69
+このブール値のオプションがセットされると、
+\fBrecvmsg\fP(2) で \fBIP_ORIGDSTADDR\fP 補助メッセージが有効になる。
+カーネルはデータグラムを受信した元の宛先アドレスをこの補助メッセージで返す。
+この補助メッセージには \fIstruct sockaddr_in\fP が格納される。
+.TP 
+\fBIP_RECVTOS\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.68
+有効になっていると、 \fBIP_TOS\fP 補助メッセージが到着パケットとともに渡される。 これにはパケットヘッダの Service/Precedence
+フィールドのタイプを指定するバイトデータが含まれている。 ブール整数値のフラグをとる。
+.TP 
+\fBIP_RECVTTL\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.68
+このフラグがセットされていると、 \fBIP_TTL\fP コントロールメッセージが受信パケットの time\-to\-live
+フィールドのバイトデータとともに渡される。 \fBSOCK_STREAM\fP ソケットではサポートされていない。
+.TP 
+\fBIP_RETOPTS\fP
+.\" Precisely: 2.1.15
+\fBIP_RETOPTS\fP (Linux 2.2 以降)  \fBIP_RECVOPTS\fP と等価だが、未処理の生のオプションを、 この hop
+では記入されない timestamp レコードと route レコードとともに返す。
+.TP 
+\fBIP_ROUTER_ALERT\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.68
+フォワードすべきパケットを IP Router Alert オプションをつけて このソケットに渡す。 raw
+ソケットに対してのみ有効である。これはたとえばユーザー空間の RSVP デーモンに対して便利である。タップされたパケットは
+カーネルによってはフォワードされないので、これらを再送するのは ユーザーの責任となる。ソケットのバインドは無視され、
+このようなパケットはプロトコルによってのみフィルタリングされる。 整数値のフラグを取る。
+.TP 
+\fBIP_TOS\fP (Linux 1.0 以降)
+.\" FIXME elaborate on this
+.\" Needs CAP_NET_ADMIN
+.\" Boolean
+.\" Since Linux 2.6.27
+.\" Author: KOVACS Krisztian <hidden@sch.bme.hu>
+.\" http://lwn.net/Articles/252545/
+このソケットから送信されるすべての IP パケットに適用される Type\-Of\-Service (TOS) フィールドを設定・取得する。
+これはネットワーク上でのパケットの優先度を決めるために用いられる。 TOS はバイトデータである。標準の TOS フラグがいくつか定義されている。
+\fBIPTOS_LOWDELAY\fP はインタラクティブなトラフィックの遅延を最小にする。 \fBIPTOS_THROUGHPUT\fP
+はスループットを最大にする。 \fBIPTOS_RELIABILITY\fP は信頼性を最高にする。 \fBIPTOS_MINCOST\fP
+は転送速度が遅くてもかまわないとき、「データを詰め込む」のに用いられる。 これらのうち、 1 つまでだけを設定できる。
+他のビットは無効で、クリアされる。 Linux はデフォルトでは \fBIPTOS_LOWDELAY\fP データグラムを最初に送信する。
+しかし、正確な振る舞いはキュー処理の設定に依存する。 高い優先度にするにはスーパーユーザー権限 (\fBCAP_NET_ADMIN\fP ケーパビリティ)
+が必要となるかもしれない。 優先度は (\fBSOL_SOCKET\fP, \fBSO_PRIORITY\fP)  ソケットオプションを用いれば、
+プロトコルに依存しない形でも設定できる (\fBsocket\fP(7)  を見よ)。
+.TP 
+\fBIP_TRANSPARENT\fP (Linux 2.6.24 以降)
+.\" commit f5715aea4564f233767ea1d944b2637a5fd7cd2e
+.\"     This patch introduces the IP_TRANSPARENT socket option: enabling that
+.\"     will make the IPv4 routing omit the non-local source address check on
+.\"     output. Setting IP_TRANSPARENT requires NET_ADMIN capability.
+.\" http://lwn.net/Articles/252545/
+このブール値のオプションを有効にすると、
+このソケットで透過プロキシ (transparent proxy) ができるようになる。
+このソケットオプションを使うと、呼び出したアプリケーションは、
+ローカルではない IP アドレスをバインドして、ローカルの端点として自分以外の
+アドレス (foreign address) を持つクライアントやサーバの両方として
+動作できるようになる。
+\fB注意\fP: この機能が動作するためには、自分以外のアドレス宛のパケットが
+透過プロキシが動作するマシン (TProxy box) 経由で転送されるように、
+ルーティングが設定される必要がある。
+このソケットオプションを有効にするには、スーパーユーザ特権
+(\fBCAP_NET_ADMIN\fP ケーパビリティ) が必要である。
+.IP
+iptables の TPROXY ターゲットで透過プロキシリダイレクション
+(TProxy redirection) を行うには、リダイレクトされるソケットに対して
+このオプションを設定する必要がある。
+.TP 
+\fBIP_TTL\fP (Linux 1.0 以降)
+time\-to\-live フィールドの値を設定または取得する。 この値はこのソケットから送信されるすべてのパケットに用いられる。
+.TP 
+\fBIP_UNBLOCK_SOURCE\fP (since Linux 2.4.22 / 2.5.68)
+Unblock previously blocked multicast source.  Returns \fBEADDRNOTAVAIL\fP when
+given source is not being blocked.
+.IP
+Argument is an \fIip_mreq_source\fP structure as described under
+\fBIP_ADD_SOURCE_MEMBERSHIP\fP.
+.SS "/proc インタフェース"
+.\" FIXME As at 2.6.12, 14 Jun 2005, the following are undocumented:
+.\"    ip_queue_maxlen
+.\"    ip_conntrack_max
+.\"
+IP プロトコルでは、いくつかのグローバルパラメータを設定するための \fI/proc\fP ファイル群が用意されている。 これらのパラメータには、
+\fI/proc/sys/net/ipv4/\fP ディレクトリ内のファイルの読み書きでアクセスできる。 \fIBoolean\fP
+と書かれたインタフェースは整数値をとり、 0 以外の値 ("true") は対応するオプションが有効、 0 値 ("false")
+は無効、であることを意味する。
+.TP 
+\fIip_always_defrag\fP (Boolean; Linux 2.2.13 以降)
+[2.2.13 で新規登場。以前のバージョンのカーネルでは、この機能は コンパイル時に \fBCONFIG_IP_ALWAYS_DEFRAG\fP
+オプションによって制御されていた; このファイルは 2.4.x 以降では存在しない]
+
+このブール値のフラグが有効になっている (0 以外になっている) と、 到着したフラグメント (IP パケットの一部で、
+発信元と発信先の間のどこかのホストで、そのパケットが 大きすぎると判断され、分割された場合に生じる)  は、たとえフォワードされる場合であっても
+処理前に再構築 (デフラグメント) される。
+
+ファイアウォールがローカル側のネットワークに唯一のリンクを持っている 場合や、透過プロクシの場合に限って有効にすべきである。
+通常のルーターやホストでは決して使用することのないように。 さもないとフラグメントが別のリンクを経由して伝わる場合に、
+通信のフラグメント化ができなくなってしまう。 またフラグメント再構築処理はメモリと CPU 時間のコストが非常に大きい。
+
+.\"
+これはマスカレードや透過プロクシが設定されると、 不思議な仕組みによって自動的に有効になる。
+.TP 
+\fIip_autoconfig\fP (Linux 2.2 以降 2.6.17 まで)
+.\" Precisely: since 2.1.68
+.\" FIXME document ip_autoconfig
+.\"
+まだ記述していない。
+.TP 
+\fIip_default_ttl\fP (integer; default: 64; Linux 2.2 以降)
+.\" Precisely: 2.1.15
+.\"
+送出されるパケットの time\-to\-live 値のデフォルトをセットする。 これは \fBIP_TTL\fP
+オプションを用いれば、パケットごとに変えることもできる。
+.TP 
+\fIip_dynaddr\fP (Boolean; default: disabled; Linux 2.0.31 以降)
+.\"
+動的ソケットアドレスと、インターフェースアドレスが変更された際の マスカレードエントリの再書き込みを有効にする。 ダイアルアップインターフェースで、
+IP アドレスが変更される場合に便利である。
+.TP 
+\fIip_forward\fP (Boolean; default: disabled; Linux 1.2 以降)
+.\"
+IP forwarding を有効にするかどうかのブール値フラグ。 IP forwarding するかどうかはインターフェースごとにも設定できる。
+.TP 
+\fIip_local_port_range\fP (Linux 2.2 以降)
+.\" Precisely: since 2.1.68
+.\"
+ソケットに割り当てられているデフォルトのローカルポートの範囲を定める 二つの整数を与える。割り当ては 1 番目の番号から始まり、 2
+番目の番号で終わる。 これらはマスカレードで用いられているポートと重なってはならない (その場合も取り扱われるが)。
+ファイアウォールのパケットフィルターが「利用中のローカルポート」 について何らかの仮定をしている場合には、
+番号を勝手に決めてしまうと問題が起きるかもしれない。 1 番目の番号は少なくとも 1024 より大きくすべきである。
+良く使われるポートとの衝突を避けたり、ファイアウォールの問題を 回避したければ、 4096 よりも大きくするほうが良いだろう。
+.TP 
+\fIip_no_pmtu_disc\fP (Boolean; default: disabled; Linux 2.2 以降)
+.\" Precisely: 2.1.15
+.\"
+.\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
+有効になっていると、デフォルトで TCP ソケットに対する Path MTU Discoverty を行わない。 Path MTU Discovery
+は、 正しく設定されていない (ICMP パケットを全てドロップする) ファイアウォールや、 (point\-to\-point リンクで双方の MTU
+が一致していない場合など)  正しく設定されていないインターフェースが経路上に存在すると失敗してしまう。 Path MTU Discovery
+をグローバルに無効にするよりは、 壊れているルータを直すほうが良い。 Path MTU Discovery を無効にするとネットワークのコストが
+大きくなってしまうからである。
+.TP 
+\fIip_nonlocal_bind\fP (Boolean; default: disabled; Linux 2.4 以降)
+.\" Precisely: patch-2.4.0-test10
+.\"
+.\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
+セットされていれば、プロセスが自分以外の IP アドレスを \fBbind\fP(2)
+できるようになる。これはかなり便利だが、うまく動かないアプリケーションもある。
+.TP 
+\fIip6frag_time\fP (integer; default: 30)
+.\"
+.\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
+IPv6 フラグメントをメモリに保持しておく時間 (秒単位)。
+.TP 
+\fIip6frag_secret_interval\fP (integer; default: 600)
+IPv6 フラグメントの hash secret の生成間隔 (hash secret の寿命)  (秒単位)。
+.TP 
+\fIipfrag_high_thresh\fP (integer), \fIipfrag_low_thresh\fP (integer)
+キューイングされている IP フラグメントの量が \fIipfrag_high_thresh\fP に達すると、キューの内容は
+\fIipfrag_low_thresh\fP にまで切り捨てられる。それぞれの大きさを バイト単位で表す整数値が入っている。
+.TP 
+\fIneigh/*\fP
+.\" FIXME Document the conf/*/* interfaces
+.\" FIXME Document the route/* interfaces
+.\" FIXME document them all
+\fBarp\fP(7)  を見よ。
+.SS ioctl
+.\" 2006-04-02, mtk
+.\" commented out the following because ipchains is obsolete
+.\" .PP
+.\" The ioctls to configure firewalling are documented in
+.\" .BR ipfw (4)
+.\" from the
+.\" .B ipchains
+.\" package.
+\fBsocket\fP(7)  に記述されている ioctl は、すべて \fBip\fP にも適用される。
+.PP
+.\" FIXME Add a discussion of multicasting
+ジェネリックデバイスのパラメータを設定する ioctl については \fBnetdevice\fP(7)  に記述されている。
+.SH エラー
+.\" FIXME document all errors.
+.\"     We should really fix the kernels to give more uniform
+.\"     error returns (ENOMEM vs ENOBUFS, EPERM vs EACCES etc.)
+.TP 
+\fBEACCES\fP
+必要な権限のないユーザーが操作を実行しようとした。 以下のような場合が考えられる: \fBSO_BROADCAST\fP
+フラグを設定していない状態でブロードキャストアドレスに パケットを送ろうとした。 \fIprohibit\fP なルートを通してパケットを送ろうとした。
+スーパーユーザー権限 (\fBCAP_NET_ADMIN\fP ケーパビリティ) なしでファイアウォールの設定を変更しようとした。 スーパーユーザー権限
+(\fBCAP_NET_BIND_SERVICE\fP ケーパビリティ) なしで特権ポートにバインドしようとした。
+.TP 
+\fBEADDRINUSE\fP
+既に使用されているアドレスにバインドしようとした。
+.TP 
+\fBEADDRNOTAVAIL\fP
+存在しないインターフェースが要求された。または 要求されたソースアドレスがローカルでない。
+.TP 
+\fBEAGAIN\fP
+非ブロッキングソケットに対してブロックする操作を行った。
+.TP 
+\fBEALREADY\fP
+非ブロッキングソケットに対する接続操作が既に実行中である。
+.TP 
+\fBECONNABORTED\fP
+\fBaccept\fP(2)  の途中で接続がクローズされた。
+.TP 
+\fBEHOSTUNREACH\fP
+宛先アドレスにマッチする有効なエントリがルーティングテーブルに 存在しない。このエラーはリモートルータからの、 あるいはローカルルーティングテーブルへの
+ICMP メッセージによって引き起こされることがある。
+.TP 
+\fBEINVAL\fP
+不正な引き数が渡された。送信操作において、 \fIblackhole\fP ルートに送信しようとするとこのエラーが起こることがある。
+.TP 
+\fBEISCONN\fP
+接続済みのソケットに対して \fBconnect\fP(2)  が呼ばれた。
+.TP 
+\fBEMSGSIZE\fP
+データグラムが path MTU よりも大きく、フラグメント化もできない。
+.TP 
+\fBENOBUFS\fP, \fBENOMEM\fP
+空きメモリが足りない。 このエラーは、メモリアロケーションがソケットバッファの 大きさによって制限されていることを意味しているのが通常であるが、
+100% そうだというわけではない。
+.TP 
+\fBENOENT\fP
+パケットが到着していないソケットに対して \fBSIOCGSTAMP\fP が呼ばれた。
+.TP 
+\fBENOPKG\fP
+カーネルサブシステムが設定されていない。
+.TP 
+\fBENOPROTOOPT\fP と \fBEOPNOTSUPP\fP
+無効なソケットオプションが渡された。
+.TP 
+\fBENOTCONN\fP
+接続されていないソケットに対して、 接続状態でしか定義されていない操作を行おうとした。
+.TP 
+\fBEPERM\fP
+高い優先度を設定したり、設定を変更したり、要求されたプロセスや プロセスグループにシグナルを送ったりするのに必要な権限を、 ユーザーが持っていない。
+.TP 
+\fBEPIPE\fP
+接続が接続相手によって、予期しないやり方でクローズまたはシャットダウンされた。
+.TP 
+\fBESOCKTNOSUPPORT\fP
+ソケットが未設定であるか、知らないソケットタイプが要求された。
+.PP
+他のエラーが上層のプロトコルによって生じるかもしれない。 \fBtcp\fP(7), \fBraw\fP(7), \fBudp\fP(7), \fBsocket\fP(7)
+などを参照のこと。
+.SH 注意
+.\" IP_PASSSEC is Linux-specific
+.\" IP_XFRM_POLICY is Linux-specific
+.\" IP_IPSEC_POLICY is a nonstandard extension, also present on some BSDs
+\fBIP_FREEBIND\fP, \fBIP_MSFILTER\fP, \fBIP_MTU\fP, \fBIP_MTU_DISCOVER\fP,
+\fBIP_RECVORIGDSTADDR\fP,
+\fBIP_PKTINFO\fP, \fBIP_RECVERR\fP, \fBIP_ROUTER_ALERT\fP, and \fBIP_TRANSPARENT\fP
+は Linux 固有である。
+
+\fBSO_BROADCAST\fP オプションの利用には、くれぐれも注意すること。
+これは Linux では特権操作ではない。
+不注意なブロードキャストを行うと、ネットワークは簡単に過負荷状態になる。
+新しいアプリケーションプロトコルには、ブロードキャストではなく
+マルチキャストグループを用いるほうがよい。 ブロードキャストは推奨されない。
+.PP
+他の BSD のソケット実装では、 \fBIP_RCVDSTADDR\fP と \fBIP_RECVIF\fP といったソケットオプションがサポートされており、
+宛先アドレスや受信データグラムのインターフェースが取得できるように なっていることもある。 Linux で同じことをやらせるには、より一般的な
+\fBIP_PKTINFO\fP が使える。
+.PP
+いくつかの BSD のソケット実装では \fBIP_RECVTTL\fP オプションも提供されているが、タイプ \fBIP_RECVTTL\fP
+の補助メッセージは受信パケットとともに渡される。 これは Linux で使われている \fBIP_TTL\fP オプションとは異なる動作である。
+.PP
+\fBSOL_IP\fP ソケットオプションレベルは移植性がない。 BSD ベースのプロトコルスタックでは \fBIPPROTO_IP\fP
+レベルが使用されている。
+.SS 移植性
+Linux 2.0 との互換性のために、 obsolete な \fBsocket(AF_INET, SOCK_PACKET,
+\fP\fIprotocol\fP\fB)\fP という書式でも \fBpacket\fP(7)  をオープンできるようになっているが、これはお勧めできない。今後は
+\fBsocket(AF_PACKET, SOCK_RAW, \fP\fIprotocol\fP\fB)\fP
+を代わりに用いるべきである。主な違いは、ジェネリックなリンク層用の \fIsockaddr_ll\fP アドレス構造体が、古い \fBsockaddr_pkt\fP
+に変わって用いられるようになったことである。
+.SH バグ
+エラーの値がまったく首尾一貫していない。
+.PP
+IP 固有のインターフェースオプションを指定するための ioctl と ARP テーブルのことが記述されていない。
+.PP
+glibc のバージョンによっては \fIin_pktinfo\fP の定義を忘れているものがある。 現時点でのとりあえずの対策としては、この man
+ページにある定義をプログラム中に コピーすることである。
+.PP
+.\" .SH AUTHORS
+.\" This man page was written by Andi Kleen.
+\fBrecvmsg\fP(2)  で \fImsg_name\fP に \fBMSG_ERRQUEUE\fP
+を指定して、受信パケットに入っていた宛先アドレスを取得する方法は 2.2 カーネルの一部でうまく動かない。
+.SH 関連項目
+\fBrecvmsg\fP(2), \fBsendmsg\fP(2), \fBbyteorder\fP(3), \fBipfw\fP(4),
+\fBcapabilities\fP(7), \fBicmp\fP(7), \fBipv6\fP(7), \fBnetlink\fP(7), \fBraw\fP(7),
+\fBsocket\fP(7), \fBtcp\fP(7), \fBudp\fP(7)
+.PP
+.\" FIXME autobind INADDR REUSEADDR
+RFC\ 791 for the original IP specification.  RFC\ 1122 for the IPv4 host
+requirements.  RFC\ 1812 for the IPv4 router requirements.
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man7/ipv6.7 b/manual/LDP_man-pages/draft/man7/ipv6.7
new file mode 100644 (file)
index 0000000..844b901
--- /dev/null
@@ -0,0 +1,280 @@
+.\" This man page is Copyright (C) 2000 Andi Kleen <ak@muc.de>.
+.\"
+.\" %%%LICENSE_START(VERBATIM_ONE_PARA)
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" %%%LICENSE_END
+.\"
+.\" $Id: ipv6.7,v 1.3 2000/12/20 18:10:31 ak Exp $
+.\"
+.\" The following socket options are undocumented
+.\"    All of the folloing are from:
+.\"        commit 333fad5364d6b457c8d837f7d05802d2aaf8a961
+.\"        Author: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
+.\"        Support several new sockopt / ancillary data in Advanced API (RFC3542).
+.\"            IPV6_2292PKTINFO (2.6.14)
+.\"                Formerly IPV6_PKTINFO
+.\"            IPV6_2292HOPOPTS (2.6.14)
+.\"                Formerly IPV6_HOPOPTS, which is documented
+.\"            IPV6_2292DSTOPTS (2.6.14)
+.\"                Formerly IPV6_DSTOPTS, which is documented
+.\"            IPV6_2292RTHDR (2.6.14)
+.\"                Formerly IPV6_RTHDR, which is documented
+.\"            IPV6_2292PKTOPTIONS (2.6.14)
+.\"                Formerly IPV6_PKTOPTIONS
+.\"            IPV6_2292HOPLIMIT (2.6.14)
+.\"                Formerly IPV6_HOPLIMIT, which is documented
+.\"
+.\"            IPV6_RECVHOPLIMIT (2.6.14)
+.\"            IPV6_RECVHOPOPTS (2.6.14)
+.\"            IPV6_RTHDRDSTOPTS (2.6.14)
+.\"            IPV6_RECVRTHDR (2.6.14)
+.\"            IPV6_RECVDSTOPTS (2.6.14)
+.\"
+.\"    IPV6_RECVPATHMTU (2.6.35, flag value added in 2.6.14)
+.\"        commit 793b14731686595a741d9f47726ad8b9a235385a
+.\"        Author: Brian Haley <brian.haley@hp.com>
+.\"    IPV6_PATHMTU (2.6.35, flag value added in 2.6.14)
+.\"        commit 793b14731686595a741d9f47726ad8b9a235385a
+.\"        Author: Brian Haley <brian.haley@hp.com>
+.\"    IPV6_DONTFRAG (2.6.35, flag value added in 2.6.14)
+.\"        commit 793b14731686595a741d9f47726ad8b9a235385a
+.\"        Author: Brian Haley <brian.haley@hp.com>
+.\"        commit 4b340ae20d0e2366792abe70f46629e576adaf5e
+.\"        Author: Brian Haley <brian.haley@hp.com>
+.\"
+.\"    IPV6_RECVTCLASS (2.6.14)
+.\"        commit 41a1f8ea4fbfcdc4232f023732584aae2220de31
+.\"        Author: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
+.\"            Based on patch from David L Stevens <dlstevens@us.ibm.com>
+.\"
+.\"    IPV6_CHECKSUM (2.2)
+.\"    IPV6_NEXTHOP (2.2)
+.\"    IPV6_JOIN_ANYCAST (2.4.21 / 2.6)
+.\"    IPV6_LEAVE_ANYCAST (2.4.21 / 2.6)
+.\"    IPV6_FLOWLABEL_MGR (2.2.7 / 2.4)
+.\"    IPV6_FLOWINFO_SEND (2.2.7 / 2.4)
+.\"    IPV6_IPSEC_POLICY (2.6)
+.\"    IPV6_XFRM_POLICY (2.6)
+.\"    IPV6_TCLASS (2.6)
+.\"
+.\"    IPV6_ADDR_PREFERENCES (2.6.26)
+.\"        commit 7cbca67c073263c179f605bdbbdc565ab29d801d
+.\"        Author: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
+.\"    IPV6_MINHOPCOUNT (2.6.35)
+.\"        commit e802af9cabb011f09b9c19a82faef3dd315f27eb
+.\"        Author: Stephen Hemminger <shemminger@vyatta.com>
+.\"    IPV6_ORIGDSTADDR (2.6.37)
+.\"        Actually a CMSG rather than a sockopt?
+.\"        In header file, we have IPV6_RECVORIGDSTADDR == IPV6_ORIGDSTADDR
+.\"        commit 6c46862280c5f55eda7750391bc65cd7e08c7535
+.\"        Author: Balazs Scheidler <bazsi@balabit.hu>
+.\"    IPV6_RECVORIGDSTADDR (2.6.37)
+.\"        commit 6c46862280c5f55eda7750391bc65cd7e08c7535
+.\"        Author: Balazs Scheidler <bazsi@balabit.hu>
+.\"            Support for IPV6_RECVORIGDSTADDR sockopt for UDP sockets
+.\"            were contributed by Harry Mason.
+.\"    IPV6_TRANSPARENT (2.6.37)
+.\"        commit 6c46862280c5f55eda7750391bc65cd7e08c7535
+.\"        Author: Balazs Scheidler <bazsi@balabit.hu>
+.\"    IPV6_UNICAST_IF (3.4)
+.\"        commit c4062dfc425e94290ac427a98d6b4721dd2bc91f
+.\"        Author: Erich E. Hoover <ehoover@mines.edu>
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH IPV6 7 2012\-12\-16 Linux "Linux Programmer's Manual"
+.SH 名前
+ipv6 \- Linux IPv6 プロトコルの実装
+.SH 書式
+\fB#include <sys/socket.h>\fP
+.br
+\fB#include <netinet/in.h>\fP
+.sp
+\fItcp6_socket\fP\fB = socket(AF_INET6, SOCK_STREAM, 0);\fP
+.br
+\fIraw6_socket\fP\fB = socket(AF_INET6, SOCK_RAW, \fP\fIprotocol\fP\fB);\fP
+.br
+\fIudp6_socket\fP\fB = socket(AF_INET6, SOCK_DGRAM, \fP\fIprotocol\fP\fB);\fP
+.SH 説明
+Linux 2.2 では、Internet Protocol, version 6 を オプションとして実装している。 この man
+ページでは、Linux カーネルと glibc 2.1 での実装に基づいて、 IPv6 の基本的な API を解説する。 インターフェースは BSD
+ソケットインターフェースをもとにしている。 \fBsocket\fP(7)  を参照。
+.PP
+IPv6 API は、 IPv4 API (\fBip\fP(7)  参照) とほぼ互換になることを目指している。 この man
+ページでは相違点のみを解説する。
+.PP
+\fBAF_INET6\fP ソケットを何らかのプロセスにバインドするには、 ローカルアドレスを \fIin6_addr\fP 型の変数
+\fIin6addr_any\fP からコピーしてくる必要がある。 static な初期値 \fBIN6ADDR_ANY_INIT\fP
+も用いることができ、これは定数式に展開される。 これらの両者はネットワークバイトオーダーである。
+.PP
+IPv6 のループバックアドレス (::1) は global 変数 \fIin6addr_loopback\fP から取得できる。初期化には
+\fBIN6ADDR_LOOPBACK_INIT\fP を用いるべきである。
+.PP
+v4\-mapped\-on\-v6 アドレス型を用いることで、 IPv4 接続も v6 API で扱うことができる。 こうすれば、プログラムは v6 の
+API をサポートするだけで、 両方のプロトコルをサポートできる。 v4\-mapped\-on\-v6 アドレス型は C ライブラリ内部のアドレスを
+扱う関数によって透過的に処理される。
+.PP
+IPv4 と IPv6 はローカルポート空間を共有する。 IPv4 の接続 (またはパケット) を IPv6 ソケットが取得すると、 発信元アドレスが
+v6 にマップされ、その接続 (パケット) も v6 にマップされる。
+.SS アドレスのフォーマット
+.in +4n
+.nf
+struct sockaddr_in6 {
+    sa_family_t     sin6_family;   /* AF_INET6 */
+    in_port_t       sin6_port;     /* port number */
+    uint32_t        sin6_flowinfo; /* IPv6 flow information */
+    struct in6_addr sin6_addr;     /* IPv6 address */
+    uint32_t        sin6_scope_id; /* Scope ID (new in 2.4) */
+};
+
+struct in6_addr {
+    unsigned char   s6_addr[16];   /* IPv6 address */
+};
+.fi
+.in
+.sp
+\fIsin6_family\fP は常に \fBAF_INET6\fP に設定される。
+\fIsin6_port\fP はプロトコルポートである (\fBip\fP(7) の \fIsin_port\fP を参照)。
+\fIsin6_flowinfo\fP は IPv6 のフロー指定子 (flow identifier) である。
+\fIsin6_addr\fP は 128 ビットの IPv6 アドレスである。 \fIsin6_scope_id\fP は
+アドレスのスコープに依存した ID である (これは Linux 2.4 で導入された)。
+Linux の場合は、これはリンクローカルアドレスでのみサポートされている。
+この場合 \fIsin6_scope_id\fP にはインターフェースのインデックスが含まれる
+ことになる (\fBnetdevice\fP(7) を参照)。
+.PP
+IPv6 は何種類かのアドレスタイプをサポートしている。 単一のホストをアドレスするための unicast、 ホストのグループをアドレスするための
+multicast、 ホストのグループ中で最も近くにいるものをアドレスするための anycast (これは Linux では実装されていない)、
+IPv4 ホストをアドレスするための IPv4\-on\-IPv6。 他にも予約済みのアドレスタイプがある。
+.PP
+IPv6 でのアドレス表記は 4 桁の 16 進数 8 個からなり、 \(aq:\(aq は区切り文字はで、"::" は 0 ビットの文字列を表す。
+特殊なアドレスとして、ループバックを表す ::1、 IPv4\-mapped\-on\-IPv6 を表す ::FFFF::<IPv4
+アドレス> がある。
+.PP
+IPv6 のポート空間は IPv4 と共有されている。
+.SS ソケットオプション
+IPv6 はプロトコル固有のソケットオプションをいくつかサポートしている。 これらは \fBsetsockopt\fP(2)  で設定でき、
+\fBgetsockopt\fP(2)  で取得できる。 IPv6 のソケットオプションレベルは \fBIPPROTO_IPV6\fP である。
+ブール整数のフラグは、0 が偽であり、それ以外は真である。
+.TP 
+\fBIPV6_ADDRFORM\fP
+\fBAF_INET6\fP ソケットを別のアドレスファミリーのソケットに変える。 現在は \fBAF_INET\fP
+のみが変更先のアドレスファミリーとしてサポートされている。 これが許可されるのは、IPv6 が接続され、 v4\-mapped\-on\-v6
+アドレスにバインドされた場合に限られる。 引き数は \fBAF_INET\fP が入っている整数へのポインタである。 v4\-mapped ソケットを、IPv6
+API を扱えないプログラムに対して ファイルディスクリプターとして渡す場合に便利。
+.TP 
+\fBIPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP\fP
+multicast グループのメンバーを制御する。 引き数は \fIstruct ipv6_mreq\fP 構造体へのポインタ。
+.TP 
+\fBIPV6_MTU\fP
+\fBgetsockopt\fP(): ソケットの、既知の path MTU を取得する。ソケットが接続している場合のみ有効である。整数を返す。
+
+\fBsetsockopt\fP(): そのソケットに対して用いる MTU の値を設定する。 MTU の大きさは、 そのデバイスの MTU または (Path
+MTU Discovery が可能なら) その経路の MTU の大きさ以下でなければならない。 引き数は整数へのポインタ。
+.TP 
+\fBIPV6_MTU_DISCOVER\fP
+そのソケットでの Path MTU Discovery を制御する。 詳細は \fBip\fP(7)  の \fBIP_MTU_DISCOVER\fP を参照。
+.TP 
+\fBIPV6_MULTICAST_HOPS\fP
+そのソケットでの multicast の hop 数の上限値を設定する。 引き数は整数へのポインタである。 \-1
+を指定すると経路のデフォルトを用いることを意味する。 それ以外の場合は 0 から 255 の範囲を指定する。
+.TP 
+\fBIPV6_MULTICAST_IF\fP
+そのソケットでの、送信 multicast パケットに用いるデバイスを設定する。 これは \fBSOCK_DGRAM\fP および \fBSOCK_RAW\fP
+各ソケットでのみ許される。 引き数はインターフェースのインデックスの整数値 (\fBnetdevice\fP(7)  を参照) へのポインタである。
+.TP 
+\fBIPV6_MULTICAST_LOOP\fP
+ソケットが、自分自身の送信した multicast パケットを監視するかどうかを制御する。 引き数はブール値へのポインタ。
+.TP 
+\fBIPV6_RECVPKTINFO\fP (since Linux 2.6.14)
+Set delivery of the \fBIPV6_PKTINFO\fP control message on incoming datagrams.
+Such control messages contain a \fIstruct in6_pktinfo\fP, as per RFC 3542.
+Only allowed for \fBSOCK_DGRAM\fP or \fBSOCK_RAW\fP sockets.  Argument is a
+pointer to a boolean value in an integer.
+.TP 
+.nh
+\fBIPV6_RTHDR, IPV6_AUTHHDR, IPV6_DSTOPTS, IPV6_HOPOPTS, IPV6_FLOWINFO,
+IPV6_HOPLIMIT\fP
+.hy
+受信パケットのデータグラムに拡張ヘッダが含まれている場合の、 制御メッセージの配送を設定する。 \fBIPV6_RTHDR\fP: routing
+ヘッダを配送するかどうか。 \fBIPV6_AUTHHDR\fP: authentication ヘッダを配送するかどうか。 \fBIPV6_DSTOPTS\fP:
+destination オプションを配送するかどうか。 \fBIPV6_HOPOPTS\fP: hop オプションを配送するかどうか。
+\fBIPV6_FLOWINFO\fP: flow ID を含む整数を配送するかどうか。 \fBIPV6_HOPLIMIT\fP: パケットの hop
+カウントを含む整数を配送するかどうか。 制御メッセージはソケットオプションのものと同じタイプを持つ。 これらのすべてのヘッダオプションは、
+適切な制御メッセージを \fBsendmsg\fP(2)  の制御バッファーに書きこめば、 送信パケットにでも設定できる。 \fBSOCK_DGRAM\fP
+ソケットまたは \fBSOCK_RAW\fP ソケットでのみ許される。引き数はブール値へのポインタ。
+.TP 
+\fBIPV6_RECVERR\fP
+非同期エラー (asynchronous error) オプションの受信を制御する。 詳細は \fBip\fP(7)  の \fBIP_RECVERR\fP
+を参照。 引き数はブール値へのポインタ。
+.TP 
+\fBIPV6_ROUTER_ALERT\fP
+このソケットで、router alert hop\-by\-hop オプションの付いた転送パケットを 通すかどうかを制御する。 \fBSOCK_RAW\fP
+ソケットでのみ許可される。 tap されたパケットはカーネルによっては転送されない。そうしたパケットを 再度送信するのはユーザーの責任である。
+引き数は整数 (integer) へのポインタ。 正の整数は傍受を行う router alert オプション値を示す。 オプション値がこの整数である
+router alert オプションの付いたパケットは ソケットに配送される。負の整数を指定すると、このソケットへの router alert
+オプションの付いたパケットの配送が行われない。
+.TP 
+\fBIPV6_UNICAST_HOPS\fP
+そのソケットでの unicast の hop 数の上限値を設定する。 引き数は整数へのポインタである。 \-1
+を指定すると経路のデフォルトを用いることを意味する。 それ以外の場合は 0 から 255 の範囲を指定する。
+.TP 
+\fBIPV6_V6ONLY\fP (Linux 2.4.21 以降および 2.6 以降)
+.\" See RFC 3493
+このフラグを真 (0 以外) に設定すると、そのソケットは IPv6 パケットだけを 送受信するように制限される。 この場合、IPv4
+アプリケーションと IPv6 アプリケーションが同時に 一つのポートをバインドできる。
+
+このフラグを偽 (0) に設定すると、そのソケットはパケットの送受信に IPv6 アドレスと IPv4\-mapped IPv6
+アドレスの両方を使用できる。
+
+引き数はブール値の入った整数へのポインタである。
+
+.\" FLOWLABEL_MGR, FLOWINFO_SEND
+このフラグのデフォルト値はファイル \fI/proc/sys/net/ipv6/bindv6only\fP の内容により定義される。
+このファイルのデフォルト値は 0 (偽) である。
+.SH エラー
+.\" FIXME document all errors.
+.TP 
+\fBENODEV\fP
+ユーザがリンクローカルの IPv6 アドレスを \fBbind\fP(2) しようとしたが、
+指定された \fIsockaddr_in6\fP 構造体の \fIsin6_scope_id\fP が
+有効なインターフェースのインデックスでなかった。
+.SH バージョン
+IPv6 API を libc5 ベースで Linux 向けに実装した、以前の \fIlibinet6\fP についてはここでは記述していない。
+おそらく細かいところには相違点があるだろう。
+.PP
+Linux 2.4 では 64 ビットのホストに対して \fIsockaddr_in6\fP のバイナリ互換性が保たれていない。 \fIin6_addr\fP
+のアラインメントが変更され、また \fIsin6_scope_id\fP フィールドが新たに追加されたからである。
+カーネルインターフェースの互換性は保たれているが、 \fIsockaddr_in6\fP や \fIin6_addr\fP
+を他の構造体に含んでいるようなプログラムでは 保たれないかもしれない。 これは i386 のような 32 ビットのホストでは問題にならない。
+.PP
+\fIsin6_flowinfo\fP フィールドは Linux 2.4 で登場した。 これが渡されたアドレス長に含まれていると、
+カーネルに透過的に渡され、読まれる。 より長いアドレスバッファを渡し、 そして送信アドレスの長さをチェックするようなプログラムは
+うまく動かないかもしれない。
+.SH 注意
+\fIsockaddr_in6\fP 構造体はジェネリックな \fIsockaddr\fP よりも大きい。 すべてのアドレスタイプが \fIstruct
+sockaddr\fP の中に安全に納められると仮定しているプログラムは、代わりに \fIstruct sockaddr_storage\fP
+を用いるように変更する必要がある。
+.SH バグ
+IPv6 拡張 API は、現在まだ RFC\ 2292 を完全には実装していない。 2.2
+カーネルは受信オプションをほぼ完全にサポートサポートしているが、 glibc2.1 には IPv6 オプションを生成するマクロが存在していない。
+.PP
+EH および AH ヘッダ での IPSec のサポートは存在しない。
+.PP
+フローラベル管理はまだ完全でなく、ここにも記述されていない。
+.PP
+この man ページはまだ完成していない。
+.SH 関連項目
+\fBcmsg\fP(3), \fBip\fP(7)
+.PP
+RFC\ 2553: IPv6 BASIC API; Linux はこの RFC に準拠するようにしている。 RFC\ 2460: IPv6
+specification.
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man7/iso_8859-1.7 b/manual/LDP_man-pages/draft/man7/iso_8859-1.7
new file mode 100644 (file)
index 0000000..c1b120c
--- /dev/null
@@ -0,0 +1,183 @@
+.\" t
+.\" Copyright 1993-1995 Daniel Quinlan (quinlan@yggdrasil.com)
+.\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
+.\"
+.\" Slightly rearranged, aeb, 950713
+.\" Updated, dpo, 990531
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH ISO_8859\-1 7 2012\-08\-14 Linux "Linux Programmer's Manual"
+.nh
+.SH 名前
+iso_8859\-1 \- ISO 8859\-1 文字集合の 8進数、10進数、16進数による符号化
+.SH 説明
+ISO 8859 規格は ASCII 文字集合 (ISO 6460IRV としても知られている) の
+いくつかの 8 ビット拡張を含んでいる。特に重要なのは ISO 8859\-1、
+"ラテン・アルファベット No. 1" で、広く実装され、既に ASCII に代わって
+事実上の標準になっているようにみえる。
+.P
+ISO 8859\-1 は以下の言語をサポートしている: アフリカーンス語、バスク語、
+カタロニア語、デンマーク語、オランダ語、英語、フェロー語、フィンランド語、
+フランス語、ガリシア語、ドイツ語、アイスランド語、アイルランド語、イタリア語、
+ノルウェー語、ポルトガル語、スコットランド語、スペイン語、スウェーデン語。
+.P
+ISO 8859\-1 の文字は ISO 10646 (Unicode) の最初の 256 文字であることに
+注意してほしい。
+.SS "ISO 8859 アルファベット"
+完全な ISO 8859 アルファベットは以下のものを含んでいる:
+.TS
+l l.
+ISO 8859\-1    西ヨーロッパの言語 (Latin\-1)
+ISO 8859\-2    中央および東ヨーロッパの言語 (Latin\-2)
+ISO 8859\-3    東南ヨーロッパやその他の言語 (Latin\-3)
+ISO 8859\-4    スカンジナビア/バルト語派の言語 (Latin\-4)
+ISO 8859\-5    ラテン/キリル文字
+ISO 8859\-6    ラテン/アラビア語
+ISO 8859\-7    ラテン/ギリシャ語
+ISO 8859\-8    ラテン/ヘブライ語
+ISO 8859\-9    トルコ語修正を行なった Latin\-1 (Latin\-5)
+ISO 8859\-10   ラップ/ノルディック/エスキモーの言語 (Latin\-6)
+ISO 8859\-11   ラテン/タイ語
+ISO 8859\-13   バルト諸国の言語 (Latin\-7)
+ISO 8859\-14   ケルト語 (Latin\-8)
+ISO 8859\-15   西ヨーロッパの言語 (Latin\-9)
+ISO 8859\-16   ルーマニア語 (Latin\-10)
+.TE
+.SS "ISO 8859\-1 文字"
+以下の表は ISO 8859\-1 (Latin\-1) の表示可能な文字のうち
+\fBascii\fP(7) マニュアルページに載っていないものを示している。
+4列目は ISO 8859\-1 用に設定された環境でのみ正しく表示できるだろう。
+.TS
+l2 l2 l2 c2 lp-1.
+Oct    Dec     Hex     Char    Description
+_
+240    160     A0      \       NO\-BREAK SPACE
+241    161     A1      ¡      INVERTED EXCLAMATION MARK
+242    162     A2      ¢      CENT SIGN
+243    163     A3      £      POUND SIGN
+244    164     A4      ¤      CURRENCY SIGN
+245    165     A5      ¥      YEN SIGN
+246    166     A6      ¦      BROKEN BAR
+247    167     A7      §      SECTION SIGN
+250    168     A8      ¨      DIAERESIS
+251    169     A9      ©      COPYRIGHT SIGN
+252    170     AA      ª      FEMININE ORDINAL INDICATOR
+253    171     AB      «      LEFT\-POINTING DOUBLE ANGLE QUOTATION MARK
+254    172     AC      ¬      NOT SIGN
+255    173     AD      ­      SOFT HYPHEN (改行時のハイフン) [1]
+256    174     AE      ®      REGISTERED SIGN
+257    175     AF      ¯      MACRON
+260    176     B0      °      DEGREE SIGN
+261    177     B1      ±      PLUS\-MINUS SIGN
+262    178     B2      ²      SUPERSCRIPT TWO
+263    179     B3      ³      SUPERSCRIPT THREE
+264    180     B4      ´      ACUTE ACCENT
+265    181     B5      µ      MICRO SIGN
+266    182     B6      ¶      PILCROW SIGN
+267    183     B7      ·      MIDDLE DOT
+270    184     B8      ¸      CEDILLA
+271    185     B9      ¹      SUPERSCRIPT ONE
+272    186     BA      º      MASCULINE ORDINAL INDICATOR
+273    187     BB      »      RIGHT\-POINTING DOUBLE ANGLE QUOTATION MARK
+274    188     BC      ¼      VULGAR FRACTION ONE QUARTER
+275    189     BD      ½      VULGAR FRACTION ONE HALF
+276    190     BE      ¾      VULGAR FRACTION THREE QUARTERS
+277    191     BF      ¿      INVERTED QUESTION MARK
+300    192     C0      À      LATIN CAPITAL LETTER A WITH GRAVE
+301    193     C1      Á      LATIN CAPITAL LETTER A WITH ACUTE
+302    194     C2      Â      LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+303    195     C3      Ã      LATIN CAPITAL LETTER A WITH TILDE
+304    196     C4      Ä      LATIN CAPITAL LETTER A WITH DIAERESIS
+305    197     C5      Å      LATIN CAPITAL LETTER A WITH RING ABOVE
+306    198     C6      Æ      LATIN CAPITAL LETTER AE
+307    199     C7      Ç      LATIN CAPITAL LETTER C WITH CEDILLA
+310    200     C8      È      LATIN CAPITAL LETTER E WITH GRAVE
+311    201     C9      É      LATIN CAPITAL LETTER E WITH ACUTE
+312    202     CA      Ê      LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+313    203     CB      Ë      LATIN CAPITAL LETTER E WITH DIAERESIS
+314    204     CC      Ì      LATIN CAPITAL LETTER I WITH GRAVE
+315    205     CD      Í      LATIN CAPITAL LETTER I WITH ACUTE
+316    206     CE      Î      LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+317    207     CF      Ï      LATIN CAPITAL LETTER I WITH DIAERESIS
+320    208     D0      Ð      LATIN CAPITAL LETTER ETH
+321    209     D1      Ñ      LATIN CAPITAL LETTER N WITH TILDE
+322    210     D2      Ò      LATIN CAPITAL LETTER O WITH GRAVE
+323    211     D3      Ó      LATIN CAPITAL LETTER O WITH ACUTE
+324    212     D4      Ô      LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+325    213     D5      Õ      LATIN CAPITAL LETTER O WITH TILDE
+326    214     D6      Ö      LATIN CAPITAL LETTER O WITH DIAERESIS
+327    215     D7      ×      MULTIPLICATION SIGN
+330    216     D8      Ø      LATIN CAPITAL LETTER O WITH STROKE
+331    217     D9      Ù      LATIN CAPITAL LETTER U WITH GRAVE
+332    218     DA      Ú      LATIN CAPITAL LETTER U WITH ACUTE
+333    219     DB      Û      LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+334    220     DC      Ü      LATIN CAPITAL LETTER U WITH DIAERESIS
+335    221     DD      Ý      LATIN CAPITAL LETTER Y WITH ACUTE
+336    222     DE      Þ      LATIN CAPITAL LETTER THORN
+337    223     DF      ß      LATIN SMALL LETTER SHARP S
+340    224     E0      à      LATIN SMALL LETTER A WITH GRAVE
+341    225     E1      á      LATIN SMALL LETTER A WITH ACUTE
+342    226     E2      â      LATIN SMALL LETTER A WITH CIRCUMFLEX
+343    227     E3      ã      LATIN SMALL LETTER A WITH TILDE
+344    228     E4      ä      LATIN SMALL LETTER A WITH DIAERESIS
+345    229     E5      å      LATIN SMALL LETTER A WITH RING ABOVE
+346    230     E6      æ      LATIN SMALL LETTER AE
+347    231     E7      ç      LATIN SMALL LETTER C WITH CEDILLA
+350    232     E8      è      LATIN SMALL LETTER E WITH GRAVE
+351    233     E9      é      LATIN SMALL LETTER E WITH ACUTE
+352    234     EA      ê      LATIN SMALL LETTER E WITH CIRCUMFLEX
+353    235     EB      ë      LATIN SMALL LETTER E WITH DIAERESIS
+354    236     EC      ì      LATIN SMALL LETTER I WITH GRAVE
+355    237     ED      í      LATIN SMALL LETTER I WITH ACUTE
+356    238     EE      î      LATIN SMALL LETTER I WITH CIRCUMFLEX
+357    239     EF      ï      LATIN SMALL LETTER I WITH DIAERESIS
+360    240     F0      ð      LATIN SMALL LETTER ETH
+361    241     F1      ñ      LATIN SMALL LETTER N WITH TILDE
+362    242     F2      ò      LATIN SMALL LETTER O WITH GRAVE
+363    243     F3      ó      LATIN SMALL LETTER O WITH ACUTE
+364    244     F4      ô      LATIN SMALL LETTER O WITH CIRCUMFLEX
+365    245     F5      õ      LATIN SMALL LETTER O WITH TILDE
+366    246     F6      ö      LATIN SMALL LETTER O WITH DIAERESIS
+367    247     F7      ÷      DIVISION SIGN
+370    248     F8      ø      LATIN SMALL LETTER O WITH STROKE
+371    249     F9      ù      LATIN SMALL LETTER U WITH GRAVE
+372    250     FA      ú      LATIN SMALL LETTER U WITH ACUTE
+373    251     FB      û      LATIN SMALL LETTER U WITH CIRCUMFLEX
+374    252     FC      ü      LATIN SMALL LETTER U WITH DIAERESIS
+375    253     FD      ý      LATIN SMALL LETTER Y WITH ACUTE
+376    254     FE      þ      LATIN SMALL LETTER THORN
+377    255     FF      ÿ      LATIN SMALL LETTER Y WITH DIAERESIS
+.TE
+.IP [1] 4
+See \fBgroff_char\fP(7)  (soft hyphen) and the standard ISO 8859\-1 ("shy",
+paragraph 6.3.3)  or the equivalent version from your national
+standardization body.
+.SH 関連項目
+\fBascii\fP(7), \fBiso_8859\-15\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 985c533..ccf33ae 100644 (file)
@@ -167,6 +167,6 @@ ISO 8859\-10 は Latin\-6 としても知られている。
 .SH 関連項目
 \fBascii\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 765d1be..5c5c303 100644 (file)
@@ -161,6 +161,6 @@ ISO 8859\-11 は TIS (タイ工業規格) 620\-2253 (一般には TIS\-620 と
 .SH 関連項目
 \fBascii\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 5a1400f..9058f15 100644 (file)
@@ -166,6 +166,6 @@ ISO 8859\-13 は Latin\-7 としても知られている。
 .SH 関連項目
 \fBascii\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7da8bf3..5fed600 100644 (file)
@@ -164,6 +164,6 @@ ISO 8859\-14 は Latin\-8 としても知られている。
 .SH 関連項目
 \fBascii\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2343d82..e529d49 100644 (file)
@@ -175,6 +175,6 @@ _
 .SH 関連項目
 \fBascii\fP(7), \fBiso_8859\-1\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7f02123..ef00c52 100644 (file)
@@ -177,6 +177,6 @@ _
 .UR http://bucovina.chem.tue.nl\:/fonturi\:/index\-en.html
 .UE .
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0990425..395ab07 100644 (file)
@@ -179,6 +179,6 @@ _
 .UR http://sizif.mf.uni\-lj.si\:/linux\:/cee\:/iso8859\-2.html
 .UE .
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7f08899..4b9e7b0 100644 (file)
@@ -160,6 +160,6 @@ ISO 8859\-3 は Latin\-3 としても知られている。
 .SH 関連項目
 \fBascii\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7f1d93c..ba9a024 100644 (file)
@@ -162,6 +162,6 @@ _
 .SH 関連項目
 \fBascii\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index c00ca3d..b17efab 100644 (file)
@@ -68,7 +68,11 @@ _
 243    163     A3      Ѓ      CYRILLIC CAPITAL LETTER GJE
 244    164     A4      Є      CYRILLIC CAPITAL LETTER UKRAINIAN IE
 245    165     A5      Ѕ      CYRILLIC CAPITAL LETTER DZE
-246    166     A6      І      CYRILLIC CAPITAL LETTER BYELORUSSIAN\-UKRAINIAN I
+246    166     A6      І      T{
+CYRILLIC CAPITAL LETTER
+.br
+BYELORUSSIAN\-UKRAINIAN I
+T}
 247    167     A7      Ї      CYRILLIC CAPITAL LETTER YI (Ukrainian)
 250    168     A8      Ј      CYRILLIC CAPITAL LETTER JE
 251    169     A9      Љ      CYRILLIC CAPITAL LETTER LJE
@@ -162,6 +166,6 @@ _
 .SH 関連項目
 \fBascii\fP(7), \fBkoi8\-r\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9f19f1e..98fd14b 100644 (file)
@@ -120,6 +120,6 @@ ISO 8859\-6 では、関連する多くの言語 (ウルドゥー語ヤペルシ
 .SH 関連項目
 \fBascii\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index d0d3c69..58b48c7 100644 (file)
@@ -94,7 +94,11 @@ _
 275    189     BD      ½      VULGAR FRACTION ONE HALF
 276    190     BE      Ύ      GREEK CAPITAL LETTER UPSILON WITH TONOS
 277    191     BF      Ώ      GREEK CAPITAL LETTER OMEGA WITH TONOS
-300    192     C0      ΐ      GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+300    192     C0      ΐ      T{
+GREEK SMALL LETTER IOTA WITH
+.br
+DIALYTIKA AND TONOS
+T}
 301    193     C1      Α      GREEK CAPITAL LETTER ALPHA
 302    194     C2      Β      GREEK CAPITAL LETTER BETA
 303    195     C3      Γ      GREEK CAPITAL LETTER GAMMA
@@ -125,7 +129,10 @@ _
 335    221     DD      έ      GREEK SMALL LETTER EPSILON WITH TONOS
 336    222     DE      ή      GREEK SMALL LETTER ETA WITH TONOS
 337    223     DF      ί      GREEK SMALL LETTER IOTA WITH TONOS
-340    224     E0      ΰ      GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+340    224     E0      ΰ      T{
+GREEK SMALL LETTER UPSILON WITH
+DIALYTIKA AND TONOS
+T}
 341    225     E1      α      GREEK SMALL LETTER ALPHA
 342    226     E2      β      GREEK SMALL LETTER BETA
 343    227     E3      γ      GREEK SMALL LETTER GAMMA
@@ -162,6 +169,6 @@ ISO 8859\-7 は以前は ELOT\-928 や ECMA\-118:1986 とも呼ばれていた
 .SH 関連項目
 \fBascii\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e8b55b7..37257b8 100644 (file)
@@ -132,6 +132,6 @@ ISO 8859\-8 は ISO\-IR\-138 としても知られている。
 .SH 関連項目
 \fBascii\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 3c07ef3..946c025 100644 (file)
@@ -163,6 +163,6 @@ _
 .SH 関連項目
 \fBascii\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index e899085..0e45ee5 100644 (file)
@@ -118,8 +118,16 @@ _
 271    185     B9      ╧     BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
 272    186     BA      ╨     BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
 273    187     BB      ╩     BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-274    188     BC      ╪     BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-275    189     BD      ╫     BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+274    188     BC      ╪     T{
+BOX DRAWINGS VERTICAL SINGLE
+.br
+AND HORIZONTAL DOUBLE
+T}
+275    189     BD      ╫     T{
+BOX DRAWINGS VERTICAL DOUBLE
+.br
+AND HORIZONTAL SINGLE
+T}
 276    190     BE      ╬     BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
 277    191     BF      ©      COPYRIGHT SIGN
 300    192     C0      ю      CYRILLIC SMALL LETTER YU
@@ -194,6 +202,6 @@ RFC\ 1489,
 .UR http://koi8.pp.ru/
 .UE
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 790e424..313e246 100644 (file)
@@ -101,13 +101,21 @@ _
 263    179     B3      Ё      CYRILLIC CAPITAL LETTER IO
 264    180     B4      Є      CYRILLIC CAPITAL LETTER UKRAINIAN IE
 265    181     B5      ╣     BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-266    182     B6      І      CYRILLIC CAPITAL LETTER BYELORUSSIAN\-UKRAINIAN I
+266    182     B6      І      T{
+CYRILLIC CAPITAL LETTER
+.br
+BYELORUSSIAN\-UKRAINIAN I
+T}
 267    183     B7      Ї      CYRILLIC CAPITAL LETTER YI (Ukrainian)
 270    184     B8      ╦     BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
 271    185     B9      ╧     BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
 272    186     BA      ╨     BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
 273    187     BB      ╩     BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-274    188     BC      ╪     BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+274    188     BC      ╪     T{
+BOX DRAWINGS VERTICAL SINGLE
+.br
+AND HORIZONTAL DOUBLE
+T}
 275    189     BD      Ґ      CYRILLIC CAPITAL LETTER GHE WITH UPTURN
 276    190     BE      ╬     BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
 277    191     BF      ©      COPYRIGHT SIGN
@@ -182,6 +190,6 @@ A4, A6, A7, AD, B4, B6, B7, BD である。
 .SH 関連項目
 \fBascii\fP(7), \fBkoi8\-r\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 62f6757..b727b35 100644 (file)
@@ -83,6 +83,6 @@ Linux libc の活動の元々の動機とは裏腹に、glibc 2.0 がリリー
 .SH 関連項目
 \fBsyscalls\fP(2), \fBfeature_test_macros\fP(7), \fBman\-pages\fP(7), \fBstandards\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index fa1f11e..2b3c655 100644 (file)
@@ -154,6 +154,6 @@ GNU gettext 関数ファミリーは LI18NUX2000 で規定されている。
 \fBngettext\fP(3), \fBnl_langinfo\fP(3), \fBrpmatch\fP(3), \fBsetlocale\fP(3),
 \fBstrcoll\fP(3), \fBstrfmon\fP(3), \fBstrftime\fP(3), \fBstrxfrm\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index fe99d98..d0201ac 100644 (file)
@@ -100,6 +100,6 @@ mailaddr \- メール・アドレスの説明
 
 RFC\ 2822 (Internet Message Format)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man7/man-pages.7 b/manual/LDP_man-pages/draft/man7/man-pages.7
new file mode 100644 (file)
index 0000000..f1e4ed7
--- /dev/null
@@ -0,0 +1,403 @@
+.\" (C) Copyright 1992-1999 Rickard E. Faith and David A. Wheeler
+.\" (faith@cs.unc.edu and dwheeler@ida.org)
+.\" and (C) Copyright 2007 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" 2007-05-30 created by mtk, using text from old man.7 plus
+.\" rewrites and additional text.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MAN\-PAGES 7 2013\-02\-24 Linux "Linux Programmer's Manual"
+.SH 名前
+man\-pages \- Linux の man ページを書く際の決まり事
+.SH 書式
+\fBman\fP [\fIsection\fP] \fItitle\fP
+.SH 説明
+This page describes the conventions that should be employed when writing man
+pages for the Linux \fIman\-pages\fP project, which documents the user\-space API
+provided by the Linux kernel and the GNU C library.  The project thus
+provides most of the pages in Section 2, as well as many of the pages that
+appear in Sections 3, 4, 5, and 7 of the man pages on a Linux system.  The
+conventions described on this page may also be useful for authors writing
+man pages for other projects.
+.SS マニュアルページのセクション
+.PP
+マニュアルのセクションは、習慣的に以下のような定義が用いられている:
+.TP  10
+\fB1 コマンド (プログラム)\fP
+シェルの中からユーザが実行できるコマンド。
+.TP 
+\fB2 システムコール\fP
+カーネルが処理しなければならない関数。
+.TP 
+\fB3 ライブラリコール\fP
+\fIlibc\fP の関数の大部分。
+.TP 
+\fB4 スペシャルファイル (デバイス)\fP
+\fI/dev\fP 以下にあるファイル。
+.TP 
+\fB5 ファイルのフォーマットと規約\fP
+\fI/etc/passwd\fP などの人が読めるファイルのフォーマット。
+.TP 
+\fB6 ゲーム\fP
+.TP 
+\fB7 概要、約束事、その他\fP
+様々な事柄の概要、慣習、プロトコル、文字集合の規格、その他雑多なこと。
+.TP 
+\fB8 システム管理コマンド\fP
+.\" .TP
+.\" .B 9 Kernel routines
+.\" This is an obsolete manual section.
+.\" Once it was thought a good idea to document the Linux kernel here,
+.\" but in fact very little has been documented, and the documentation
+.\" that exists is outdated already.
+.\" There are better sources of
+.\" information for kernel developers.
+\fBmount\fP(8)  のような root のみが実行可能なコマンド。
+.SS マクロパッケージ
+新しいマニュアルページは \fBman\fP(7)  で説明されている \fBgroff an.tmac\fP パッケージを使って記述すべきである。
+この方針は一貫性の確保が主な理由である。既存の Linux のマニュアルページ の圧倒的多数がこれらのマクロを使って記述されている。
+.SS ソースファイルの配置に関する決まり事
+マニュアルページのソースコードの 1行の長さは 可能な限り 75文字を越えないようにしてほしい。 こうすることで、パッチをメール本文に載せて送る場合に、
+メールクライアントによる行折り返しを回避することができる。
+
+新しい文は行頭から開始する。 これにより、パッチの内容を確認しやすくなる。 パッチは文単位であることが多いからである。
+.SS タイトル行
+man ページの最初の行は \fBTH\fP コマンドにすべきである。
+.RS
+.sp
+\fB\&.TH\fP \fItitle section date source manual\fP
+.sp
+.RE
+個々の説明:
+.RS
+.TP  10
+\fItitle\fP
+man ページのタイトル。全部大文字で記載する (例: \fIMAN\-PAGES\fP)。
+.TP 
+\fIsection\fP
+man ページが属するセクション番号 (例: \fI7\fP)。
+.TP 
+\fIdate\fP
+最新のリビジョンの日付\(emman ページに変更を加えたときには 必ずこれを変更すること。 これが最も一般的なバージョン管理方法である。 日付は
+YYYY\-MM\-DD の形式で記載すべきである。
+.TP 
+\fIsource\fP
+コマンド、関数、システムコールの出自。
+
+数少ないセクション 1 と 8 のページの場合、おそらく単に \fIGNU\fP とだけ書くことが多いだろう。
+
+システムコールの場合、単に \fILinux\fP とだけ書く。 (以前の慣習では、マニュアルページを記載した/内容を確認したカーネルの
+バージョン番号を記載していた。しかし、バージョン番号が実際の内容と 一致していることはなく、そのためバージョン番号がないよりも
+おそらく悪い形になっていた。 今後は、バージョン番号を含めるのは避けること。)
+
+glibc のライブラリコールや その他の一般的な GNU ライブラリのライブラリコールの場合、 単に \fIGNU C Library\fP, \fIGNU\fP
+と書くか、空の文字列を使う。
+
+セクション 4 のページでは \fILinux\fP を使う。
+
+よくわからない場合は、 \fILinux\fP とか \fIGNU\fP と書いておく。
+.TP 
+\fImanual\fP
+マニュアルのタイトル (例: \fIman\-pages\fP パッケージのセクション 2 および 3 のページの場合には、 \fILinux
+Programmer's Manual\fP を使うこと)。
+.RE
+.SS マニュアルページのセクション
+昔から使われてきたセクション名を以下のリストに示す。 これらを使うと良いだろう。 一般的に、マニュアルページは、少なくとも \fB色つき\fP
+のセクションを持つのが望ましい。 新しくマニュアルページを作成する際には、だいたい以下のリストに示した 順序でセクションを配置するようにしてもらいたい。
+.in +0.5i
+.nf
+
+.\" May 07: Few current man pages have an ERROR HANDLING section,,,
+.\" ERROR HANDLING,
+.\" May 07: Almost no current man pages have a USAGE section,,,
+.\" USAGE,
+.\" DIAGNOSTICS,
+.\" May 07: Almost no current man pages have a SECURITY section,,,
+.\" SECURITY,
+.\" AUTHORS sections are discouraged
+.\" AUTHORS             [Discouraged]
+\fB名前\fP
+\fB書式\fP
+設定               [通常はセクション 4 のみ]
+\fB説明\fP
+オプション         [通常はセクション 1, 8 のみ]
+終了ステータス     [通常はセクション 1, 8 のみ]
+返り値             [通常はセクション 2, 3 のみ]
+エラー             [たいていはセクション 2, 3 のみ]
+環境変数
+ファイル
+バージョン         [通常はセクション 2, 3 のみ]
+準拠
+注意/備考
+バグ
+例
+\fB関連項目\fP
+
+.fi
+.in
+「伝統的に使われてきた見出しが使える場合には、それを使ってほしい。」 この種の一貫性を保つことで、情報を理解しやすくなるからである。
+どうしても必要な場合には、理解しやすくなるように独自の見出しを 作ってもよい (特にセクション 4 や 5 のページではこうした方が
+わかりやすくなる)。ただし、そうする前に、伝統的な見出しを使い、 そのセクション内にサブセクション (\fI.SS\fP) を設けることで
+対応できないか考えてほしい。
+
+以下のリストでは、上記のセクションのそれぞれの内容について 詳しく説明する。
+.TP  14
+\fB名前 (NAME)\fP
+The name of this manual page.  See \fBman\fP(7)  for important details of the
+line(s) that should follow the \fB.SH NAME\fP command.  All words in this line
+(including the word immediately following the "\e\-") should be in lowercase,
+except where English or technical terminological convention dictates
+otherwise.
+.TP 
+\fB書式 (SYNOPSIS)\fP
+コマンドや関数のインターフェースを簡潔に記述する。 コマンドに対しては、コマンドや引き数 (オプション) の文法を書く。
+そのまま書くテキストにはボールド体を用い、置き換える引き数には イタリック体を用いる。省略可能なオプションはブラケット ([]) で囲い、 選択肢は縦棒
+(|) で区切り、繰り返しには省略符号 (...) を書く。 関数に対しては、必要なデータ宣言や \fB#include\fP 指定を書き、関数宣言を続ける。
+
+.\" FIXME . Say something here about compiler options
+ヘッダファイルから関数 (や変数) の定義を得るために 機能検査マクロ (feature test macro) を定義しなければならない場合、 書式
+(SYNOPSIS) に必要な機能検査マクロを記載すべきである。 機能検査マクロについては \fBfeature_test_macros\fP(7)
+で説明されている。
+.TP 
+\fBCONFIGURATION\fP
+デバイスの設定詳細。 通常、このセクションは 4 章のマニュアルページでのみ登場する。
+.TP 
+\fB説明 (DESCRIPTION)\fP
+.\" If there is some kind of input grammar or complex set of subcommands,
+.\" consider describing them in a separate
+.\" .B USAGE
+.\" section (and just place an overview in the
+.\" .B DESCRIPTION
+.\" section).
+プログラム・関数・フォーマットの動作・目的を説明する。 ファイルや標準入力をどのように処理し、標準出力や標準エラー出力を
+どのように生成するかといったことについて述べる。 内部動作や実装の詳細については省略する (ただしそれが動作の理解にどうしても必要なら別)。
+通常の場合について記述する。 プログラムのコマンドライン・オプションの説明には、 \fBオプション\fP のセクションを用いる。
+.TP 
+\fBオプション (OPTIONS)\fP
+.\" .TP
+.\" .B USAGE
+.\" describes the grammar of any sublanguage this implements.
+プログラムが受け付けるコマンドライン・オプションと、 その場合プログラムの振舞いがどう変わるかを説明する。 このセクションはセクション 1 と 8
+のマニュアルページにだけ登場すべきである。
+.TP 
+\fB終了ステータス (EXIT STATUS)\fP
+プログラムの終了ステータスの値と、それらの値に対応する状況を列挙する。 このセクションはセクション 1 と 8
+のマニュアルページにだけ登場すべきである。
+.TP 
+\fB返り値 (RETURN VALUE)\fP
+セクション 2 と 3 のページの場合、このセクションに ライブラリルーチンが呼び出し元に返す値のリストを記載する。
+それらの値が返された場合の状態に対する説明も書く。
+.TP 
+\fBエラー (ERRORS)\fP
+セクション 2 と 3 のマニュアルページでは、 エラーが発生した場合に \fIerrno\fP に設定される可能性がある値のリストを記載する。
+リストには、エラーの値とエラーの原因についての情報を書く。 「エラーリストはアルファベット順にすべきである。」
+.TP 
+\fB環境変数 (ENVIRONMENT)\fP
+プログラムや関数に影響する環境変数をリストし、それらの効果を書く。
+.TP 
+\fBファイル (FILES)\fP
+.\" May 07: Almost no current man pages have a DIAGNOSTICS section;
+.\"         "RETURN VALUE" or "EXIT STATUS" is preferred.
+.\" .TP
+.\" .B DIAGNOSTICS
+.\" gives an overview of the most common error messages and how to
+.\" cope with them.
+.\" You don't need to explain system error messages
+.\" or fatal signals that can appear during execution of any program
+.\" unless they're special in some way to the program.
+.\"
+.\" May 07: Almost no current man pages have a SECURITY section.
+.\".TP
+.\".B SECURITY
+.\"discusses security issues and implications.
+.\"Warn about configurations or environments that should be avoided,
+.\"commands that may have security implications, and so on, especially
+.\"if they aren't obvious.
+.\"Discussing security in a separate section isn't necessary;
+.\"if it's easier to understand, place security information in the
+.\"other sections (such as the
+.\" .B DESCRIPTION
+.\" or
+.\" .B USAGE
+.\" section).
+.\" However, please include security information somewhere!
+プログラムや関数が用いるファイルを列記する。 例えば、設定ファイル、起動ファイル、プログラムが直接操作するファイルなどである。
+これらのファイルのファイル名はフルパスで記載し、 ディレクトリの部分はユーザーの好みに合わせて インストール処理で変更できるようにする。
+多くのプログラムではデフォルトのインストール先は \fI/usr/local\fP である。したがってベースとなるマニュアルページでも
+\fI/usr/local\fP が使われていることが多いだろう。
+.TP 
+\fBバージョン (VERSIONS)\fP
+システムコールやライブラリ関数が登場したり、動作の重要な変更が行われた、 Linux カーネルや glibc のバージョンについての簡潔な概要。
+一般に、全ての新しいインターフェイスは、マニュアルページに 「バージョン」の節を設けるべきである。
+残念なことに、多くの既存のマニュアルページにこの情報は含まれていない (これらのページが書かれた時点ではそのようなポリシーはなかったからである)。
+これを改善するパッチは歓迎されるが、 新しいコードを書くプログラマの観点からすれば、 おそらくこの情報が重要になるのは、 Linux 2.4
+以降で追加されたカーネルインターフェイス (カーネル 2.2 からの変更) と glibc バージョン 2.1 以降で追加されたライブラリ関数
+(glibc 2.0 からの変更)  についてのみであろう。
+
+\fBsyscalls\fP(2)  マニュアルページにも、いろいろなシステムコールが初めて登場した カーネルバージョンについての情報が書かれている。
+.TP 
+\fB準拠 (CONFORMING TO)\fP
+そのマニュアルページで説明している関数やコマンドに関連する 標準規格や慣習について記載する。 セクション 2 や 3 のページでは、このセクションで
+システムコールや関数が準拠する POSIX.1 のバージョンと、 C99 で規定されているかに触れるべきである。 (SUS, SUSv2, XPG
+などの他の標準規格や、SVr4 や 4.xBSD の実装標準に ついては、説明しているコールがこれらの規格で規定されており POSIX.1
+の現行バージョンで規定されていない場合以外は、 あまり深く気にする必要はない。)  (\fBstandards\fP(7)  参照。)
+
+そのコールがどの標準にも基づいていないが、 他のシステムで広く存在する場合は、その旨を記載すること。 そのコールが Linux
+固有の場合は、その旨を記載すること。
+
+(そうなっているページが多いが) このセクションの内容が標準のリスト だけの場合、リストの最後にピリオド (\(aq.\(aq) を置くこと。
+.TP 
+\fB注意 (NOTES)\fP
+その他の注意点を書く。 セクション 2 と 3 のマニュアルページでは、 \fILinux での注意 (Linux Notes)\fP や \fIglibc
+での注意 (Glibc Notes)\fP という名前のサブセクション (\fBSS\fP) を設けると便利なこともある。
+.TP 
+\fBバグ (BUGS)\fP
+制限・知られている欠陥や不便な点、その他不思議な動作などを書く。
+.TP 
+\fB例 (EXAMPLE)\fP
+この関数・ファイル・コマンドをどのように使うかを示した ひとつまたは複数の例を記述する。 サンプルプログラムを書く際の詳細は
+以下の「サンプルプログラム」の節を参照のこと。
+.TP 
+\fB著者 (AUTHORS)\fP
+文書またはプログラムの著者を列記する。 \fB著者セクションは極力使用しないこと。\fP 一般的には、著者のリストを各ページに撒き散らさない方がよい
+(時間がたつと、作者のリストは膨大になる可能性がある)。 マニュアルページを新規に書いたり、大幅に修正を行った場合には、
+ソースファイルにコメントとして著作権表示を追加すること。 あなたがデバイスドライバの作者で、バグを報告するためのアドレスを
+載せたい場合は、「バグ」セクションの後ろにこのセクションを配置すること。
+.TP 
+\fB関連項目 (SEE ALSO)\fP
+関連するマニュアルページを、コンマ区切りのリストで、 セクション番号順に、セクション内ではアルファベット順で記載する。 可能なら関連する他の文書も書く。
+慣習では、このセクションは最後に置く。 リストの末尾にピリオドを置かないこと。
+.IP
+Where the SEE ALSO list contains many long manual page names, to improve the
+visual result of the output, it may be useful to employ the \fI.ad l\fP (don't
+right justify)  and \fI.nh\fP (don't hyphenate)  directives.  Hyphenation of
+individual page names can be prevented by preceding words with the string
+"\e%".
+.SS フォントの慣習
+.PP
+関数に対しては、引き数には常にイタリック体を用いる。 「たとえ書式 (SYNOPSIS) セクションであっても、このルールに従う」
+関数の他の部分はボールドを指定する:
+.PP
+\fB int myfunction(int \fP\fIargc\fP\fB, char **\fP\fIargv\fP\fB);\fP
+.PP
+引き数名といった変数名はイタリック体を指定すべきである。
+.PP
+ファイル名 (パス名、または \fI/usr/include\fP ディレクトリ内のファイルへの参照) は常にイタリック体にする (例:
+\fI<stdio.h>\fP)。 ただし、書式 (SYNOPSIS) セクションは例外で、 インクルードファイルはボールドにする (例:
+\fB#include <stdio.h>\fP)。 \fI/usr/include\fP 以下の標準のインクルードファイルを参照する際は、 通常の
+C 言語と同様に山括弧でヘッダファイルを囲ぬで指定する (例: \fI<stdio.h>\fP)。
+.PP
+通常、大文字で表現する特殊マクロはボールドで表す (例えば \fBMAXINT\fP)。 例外として NULL はボールドにしない。
+.PP
+エラーコードのリストを列挙する時には、コードはボールドで表す (このリストには通常 \fB\&.TP\fP マクロを用いる)。
+.PP
+完全なコマンドは、長い場合には、例に示すように 字下げした行にコマンドだけを記載すべきである。
+.in +4n
+.nf
+
+man 7 man\-pages
+
+.fi
+.in
+コマンドが短い場合は、 \fIman 7 man\-pages\fP のようにイタリック体で文中に埋め込んで記載してもよい。
+この場合、コマンド内の適切な位置に、改行できないスペース ("\e\ ")  を使うとよいかもしれない。 コマンドオプションも \fI\-l\fP
+のようにイタリック体で記載すべきである。
+.PP
+式は、専用の字下げした行に記載しない場合、イタリック体を指定すること。 繰り返しになるが、式を通常の文中に埋め込む場合にも、
+改行できないスペースを使うとよいだろう。
+.PP
+そのマニュアルページの説明対象への参照は、ボールドで名前を記載する。 対象が関数 (つまり、セクション 2 や 3 のページ) の場合、
+名前の後ろにローマンフォント (通常のフォント) で丸括弧の対を続ける。 例えば、 \fBfcntl\fP(2)  のマニュアルページでは、説明対象への参照は
+\fBfcntl\fP()  のように記載する。 マニュアルページのソースファイルには次のように記載するのが望ましい:
+.nf
+
+    .BR fcntl ()
+
+.fi
+("\efB...\efP()" よりも、この形式を使うこと。 これにより、マニュアルページのソースファイルを解釈するツールを 書くのが簡単になる。)
+.PP
+別のマニュアルページへの参照は、ボールドで名前を記載し、 それに続けてセクション番号を「必ず」書く。セクション番号は ローマンフォント
+(通常のフォント) で書き、スペースは入れない (例: \fBintro\fP(2))。 マニュアルページのソースファイルには次のように記載するのが望ましい:
+.nf
+
+    .BR intro (2)
+
+.fi
+(相互参照にセクション番号を含めておくと、 \fBman2html\fP といったツールがページ間のハイパーリンクを適切に生成できる。)
+.SS "綴り (spelling)"
+リリース 2.59 からだが、 \fIman\-pages\fP はアメリカ英語の綴りの慣習に従っている。 新しいページやパッチは全てこの慣習に従って下さい。
+.SS Capitalization
+In subsection ("SS") headings capitalize the first word in heading, but
+otherwise use lower case, except where English usage (e.g., proper nouns) or
+programming language requirements (e.g., identifier names) dictate
+otherwise.
+.SS サンプルプログラムとシェルのセッション
+マニュアルページには、システムコールやライブラリ関数の使い方を示す サンプルプログラムを含めることができる。 その際には、以下の点に留意すべきである。
+.TP  3
+*
+サンプルプログラムは C で記載すること。
+.TP 
+*
+サンプルプログラムは、 インタフェースについて文章で簡単に説明できる以上のことを示す場合にだけ
+必要かつ有用である。インタフェースを呼び出す以外に何もしないサンプル プログラムは普通はほとんど役に立たない。
+.TP 
+*
+サンプルプログラムはかなり短めにすること (100行未満が望ましく、50行未満が理想的である)。
+.TP 
+*
+サンプルプログラムでは、システムコールやライブラリ関数を呼び出した後で エラーチェックを行うこと。
+.TP 
+*
+サンプルプログラムは完結していて、 \fIcc\ \-Wall\fP でコンパイルした際に警告なしでコンパイルできること。
+.TP 
+*
+可能かつ適切な場合には、サンプルプログラムで 入力により動作を変化させるなどの実験を行うとよい
+(理想的には、コマンドライン引き数や、プログラムが読み込む入力データ 経由で、動作を変化させるのがよい)。
+.TP 
+*
+サンプルプログラムは、K&R (Kernighan and Ritchie) スタイルで書き、 字下げはスペース 4文字で行う。 (ソースコードで
+TAB 文字を使うのは避けること。)
+.PP
+サンプルプログラムがどんな風になっていればよいかの例については、 \fBwait\fP(2)  と \fBpipe\fP(2)  を参照すること。
+
+プログラムの使い方や他のシステムの特徴を示すためにシェルのセッション例 を含める場合、ユーザの入力文をボールドにして、システムが生成する
+出力と区別できるようにすること。
+.SS 構造体の定義、シェルのセッションログなどの字下げ
+構造体の定義やシェルのセッションログなどを本文中に記載する際は、 スペース 4個分の字下げを行う (つまり、ブロックを \fI.in\ +4n\fP と
+\&\fI.in\fP で囲む)。
+.SH 例
+\fIman\-pages\fP パッケージに含まれるマニュアルページの体裁の標準的な例については、 \fBpipe\fP(2)  と \fBfcntl\fP(2)
+を参照すること。
+.SH 関連項目
+\fBman\fP(1), \fBman2html\fP(1), \fBgroff\fP(7), \fBgroff_man\fP(7), \fBman\fP(7),
+\fBmdoc\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 62d9445..0a86664 100644 (file)
@@ -332,6 +332,6 @@ Sun のマクロである \fBTX\fP は定義されていない。
 \fBwhatis\fP(1), \fBgroff_man\fP(7), \fBgroff_www\fP(7), \fBman\-pages\fP(7), \fBmdoc\fP(7),
 \fBmdoc.samples\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 35d1e00..80236b0 100644 (file)
@@ -141,6 +141,6 @@ POSIX.1\-2001 ではこれらの関数がエラーを返すことを 要求し
 
 \fIinfo libc\fP
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8e2f69c..7c9c8a0 100644 (file)
@@ -402,6 +402,6 @@ UR マクロ (URI/URL ハイパーテキスト参照の開始), UE マクロ (
 .Sh この文書について
 この man ページは Linux
 .Em man-pages
-プロジェクトのリリース 3.50 の
+プロジェクトのリリース 3.51 の
 一部である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man7/mdoc.samples.7 b/manual/LDP_man-pages/draft/man7/mdoc.samples.7
new file mode 100644 (file)
index 0000000..f004a2a
--- /dev/null
@@ -0,0 +1,2800 @@
+.\" Copyright (c) 1990, 1993
+.\"    The Regents of the University of California.  All rights reserved.
+.\"
+.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\" %%%LICENSE_END
+.\"
+.\"     @(#)mdoc.samples.7     8.2 (Berkeley) 12/30/93
+.\"    $Id: mdoc.samples.7,v 1.17 1998/12/03 03:38:45 jkoshy Exp $
+.\"
+.\" This tutorial sampler invokes every macro in the package several
+.\" times and is guaranteed to give a worst case performance
+.\" for an already extremely slow package.
+.\"
+.\" String \*(Pu was not defined, probably means punctuation
+.ds Pu [ .,:;()[]?! ]
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.Dd December 30, 1993
+.Os
+.Dt MDOC.SAMPLES 7
+.Sh 名前
+.Nm mdoc.samples
+.Nd  
+.Nm \-mdoc
+を使って
+.Bx
+マニュアルを書くためのチュートリアルサンプル
+.Sh 書式
+.Nm man mdoc.samples
+.Sh 説明
+.Xr troff 1
+用の
+.Em コンテントベース
+でかつ
+.Em 領域ベース
+なフォーマットパッケージである
+.Nm \-mdoc
+マクロパッケージを使って
+.Bx
+マニュアルを書くためのチュートリアルサンプルです。
+前身である
+.Xr \-man 7
+パッケージはフォントの操作や他の写植方法の
+詳細は個々の作者に任せたページレイアウトベースのものでした。
+.Nm \-mdoc
+では、ページレイアウトマクロは
+タイトル、セクションのヘッダ、ディスプレイ、リストのマクロからなる
+.Em "ページ構造領域"
+を形成しています。これらの項目は整形された
+ページでのテキストの物理的な位置に影響を持ちます。
+ページ構造領域に加え、さらにマニュアル領域および一般テキスト領域
+の 2 つの領域があります。
+一般テキスト領域はテキストの一部をクォートしたり、
+強調するといったような作業を実行するマクロとして定義されています。
+マニュアル領域はコマンドやルーチン、それに
+.Bx
+の関連ファイルを記述するための日常使用されるインフォーマルな言葉の
+サブセットであるマクロとして定義されています。
+マニュアル領域のマクロはコマンド名、コマンド行の引数とオプション、
+関数名、関数のパラメータ、パス名、変数名、他のマニュアルページへの
+クロスリファレンスなどを扱います。
+これらの領域の項目は作者とマニュアルページの将来のユーザの両者に
+とって価値のあるものです。
+マニュアル間で一貫性を高めることによって将来のドキュメントツールへの
+移行が容易になることが望まれます。
+.Pp
+マニュアルのエントリは、実際の長さに関わらず、
+また男女の区別をするような意図なしで、
+.Ux
+のマニュアルページを通して、
+単純に man ページとして参照されています。
+.Sh さあ、始めよう
+通常チュートリアルドキュメントは、そこに示された題材をすぐに使いたい時
+に読むものですので、このドキュメントのユーザはせっかちな人だと仮定して
+います。このドキュメントの残りの部分で説明されている題材は以下のような
+構成になっています。
+.Bl -enum -offset indent
+.It 
+.Tn "TROFF に特有な表現"
+.Bl -tag -width flag -compact -offset indent
+.It "マクロの使用方法"
+.It "引数に空白文字を指定する"
+.It 行末の空白文字 (警告)
+.It 特殊文字のエスケープ
+.El
+.It 
+.Tn "MAN ページの分析"
+.Bl -tag -width flag -compact -offset indent
+.It "マニュアルページのテンプレート"
+.El
+.It 
+.Tn "タイトルマクロ"
+.It 
+.Tn "マニュアルと一般テキスト領域の紹介"
+.Bl -tag -width flag -compact -offset indent
+.It "この名前には何が...?"
+.It "一般的な構文"
+.El
+.It 
+.Tn "マニュアル領域"
+.Bl -tag -width flag -compact -offset indent
+.It アドレス
+.It "作者名"
+.It 引数
+.It "コンフィギュレーション宣言 (セクション 4 のみ)"
+.It "コマンド修飾子"
+.It "定義済みの変数"
+.It "errno  (セクション 2 のみ)"
+.It "環境変数"
+.It "関数の引数"
+.It "関数の宣言"
+.It フラグ
+.It "関数 (ライブラリルーチン)"
+.It "関数の型"
+.\" .It "Header File (including source code)" .
+.It "対話的なコマンド"
+.It 名前
+.It オプション
+.It パス名
+.It 変数
+.It 相互参照
+.El
+.It 
+.Tn "一般テキスト領域"
+.Bl -tag -width flag -compact -offset indent
+.It "AT&T マクロ"
+.It "BSD マクロ"
+.It "FreeBSD マクロ"
+.It "UNIX マクロ"
+.It "囲い/クォートマクロ"
+.Bl -tag -width flag -compact -offset indent
+.It "カギ括弧 <> によるクォート/囲い"
+.It "角括弧 [] によるクォート/囲い"
+.It "二重引用符マクロ/囲い"
+.It "括弧 () によるクォート/囲い"
+.It "一重引用符によるクォート/囲い"
+.It "プレフィックスマクロ"
+.El
+.It "no\-op もしくは通常テキストマクロ"
+.It "空白なしマクロ"
+.It "セクションの相互参照"
+.It "相互参照と引用"
+.It "返り値 (セクション 2, 3 のみ)"
+.It "商標名 (頭字語とタイプ名)"
+.It "拡張引数"
+.El
+.It 
+.Tn "ページ構造領域"
+.Bl -tag -width flag -compact -offset indent
+.It "セクションヘッダ"
+.It "段落と行スペース"
+.It "キープ"
+.It "ディスプレイ"
+.It "フォントモード (強調、リテラル、およびシンボリック)"
+.It "リストと列"
+.El
+.It 
+.Tn "定義済みの文字列"
+.It 
+.Tn "診断"
+.It 
+.Tn "GROFF、TROFF、NROFF を使用したフォーマッティング"
+.It 
+.Tn "バグ"
+.El
+.ne 7
+.Sh TROFF に特有な表現
+.Nm \-mdoc
+パッケージは man ページを記述するプロセスを簡単にすること
+を目的としています。
+.Nm \-mdoc
+を使うために
+.Xr troff 1
+の
+ゴタゴタした詳細を学ぶ必要がないのが理想ですが、いくつか片付けるべき
+避けられない制限事項があります。また、このパッケージは高速で
+.Em ない
+ということも予め警告しておきます。
+.Ss マクロの使用方法
+.Xr troff 1
+のように、マクロは
+.Ql \&.
+(ドット文字) を行頭に置き、
+それに続けて 2 文字からなるマクロの名称を指定することによって呼び出され
+ます。引数はマクロの後にスペースで区切って指定することができます。
+行頭にドット文字を指定することによって
+.Xr troff 1
+にそれに続く 2 文
+字をマクロ名として解釈するよう指示しています。マクロを起動せずに、ある
+文脈の行の先頭に
+.Ql \&.
+(ドット文字) を置くためには、
+.Ql \&.
+(ドット) の前にエスケープシーケンス
+.Ql \e&
+を指定します。
+.Ql \e&
+は文字通りスペース幅が 0 として解釈され、出力には現れません。
+.Pp
+一般的に
+.Xr troff 1
+マクロは引数を 9 つまで取ることができ、
+それ以上指定された引数は無視されます。
+.Nm \-mdoc
+でのほとんどのマクロは 9 つの引数を取ることができ、
+限られた場合にのみ引数は次の行に続けて指定することができます
+(
+.Sx 拡張引数
+セクションを参照)。
+いくつかのマクロは引用符に囲まれた引数を扱うことができます
+(下の
+.Sx 引数に空白文字を指定する
+セクションを参照)。
+.Pp
+.Nm \-mdoc
+での一般テキスト領域とマニュアル領域のほとんどのマクロは特別であり、
+その引数のリストは呼び出し可能なマクロ名として
+.Em 解析
+されます。
+これは一般テキスト領域またはマニュアル領域のマクロ名に一致し、
+呼び出し可能であると判断された引数リストの中の引数は、
+実行されるか、それが処理される時に呼び出されることを意味しています。
+この場合、引数はマクロ名にも関わらず、
+.Ql \&.
+(ドット) で前置されません。
+このようにしてたくさんのマクロを入れ子にすることができます。
+例えばオプションマクロ
+.Ql \&.Op
+はフラグマクロ
+.Ql \&Fl
+と
+引数マクロ
+.Ql \&Ar
+を
+.Em 呼び出して
+、
+オプションのフラグを引数とともに指定することができます。
+.Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent
+.It Op Fl s Ar bytes
+は
+.Li \&.Op \&Fl s \&Ar bytes
+によって生成される
+.El
+.Pp
+2 文字からなる文字列をマクロ名として解釈されないようにするには、
+その文字列の前にエスケープシーケンス
+.Ql \e&
+を指定します。
+.Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent
+.It Op \&Fl s \&Ar bytes
+は
+.Li \&.Op \e&Fl s \e&Ar bytes
+によって生成される
+.El
+.Pp
+ここで文字列
+.Ql \&Fl
+と
+.Ql \&Ar
+はマクロとして解釈されていませ
+ん。本ドキュメントと関連のクイックリファレンスマニュアル
+.Xr mdoc 7
+を通して、引数リストが呼び出し可能な引数として解析されるマクロは「解析
+される」、引数リストから呼び出されることができるマクロは「呼び出し可能」
+と表現します。
+.Nm \-mdoc
+のほとんどすべてのマクロは解析されるのです
+から、これは技術的には
+.Em 不謹慎な
+ことですが、常にマクロを「呼び出
+し可能である」とか「他のマクロを呼び出すことができる」と表現するのは面
+倒なことであるため、「解析される」という用語が使われています。
+.Ss 引数に空白文字を指定する
+ひとつ以上の空白文字を含む文字列をひとつの引数として指定したい場合がよ
+くあります。これは 9 個を越える引数を指定できないという制限に対処したり、
+引数のリストにある特有な配置をおこなうことが必要なマクロに引数を指定す
+るような場合に必要となることがあります。
+たとえば、関数マクロ
+.Ql \&.Fn
+では最初の引数は関数名であり、残りの
+引数が関数のパラメータであることが必要です。
+.Tn "ANSI C"
+の括弧で
+囲まれたパラメータリストにおける関数のパラメータの宣言の規定により、
+各パラメータは最低でも 2 語の文字列となります。
+たとえば
+.Fa int foo
+のようになります。
+.Pp
+空白を含む引数を指定するには 2 通りの方法があります。
+.Em 実装上の注意 :
+解析の前に個々の引数を再割り当てすることによって、
+引用符の間に空白を含めて渡すのが最も便利な方法なのですが、
+.Tn AT&T
+の
+.Xr troff
+のすべてのマクロを実装するには処理速度およ
+びメモリ使用量の点でかなり高価な方法となります。
+.Xr groff
+では高価な処理にはなりませんが、移植性のため、この方法は
+空白を含めることが最も必要である以下のマクロだけに限っています。
+.Pp
+.Bl -tag -width 4n -offset indent -compact
+.It Li \&Cd
+コンフィギュレーション宣言 (セクション 4 の
+.Sx SYNOPSIS )
+.It Li \&Bl
+リスト開始 (幅指定用)
+.It Li \&Em
+テキスト強調
+.It Li \&Fn
+関数 (セクション 2 と 4)
+.It Li \&It
+リストの項目
+.It Li \&Li
+リテラルテキスト
+.It Li \&Sy
+シンボリックテキスト
+.It Li \&%B
+書籍のタイトル
+.It Li \&%J
+定期刊行物のタイトル
+.It Li \&%O
+参照の追加的な注釈
+.It Li \&%R
+報告書のタイトル (参照の中で)
+.It Li \&%T
+書籍や定期刊行物の中の記事のタイトル
+.El
+.Pp
+空白を含む文字列を渡すのに、固定空白、すなわち詰め込まれない
+空白文字
+.Ql \e\ 
+を使う方法があります。
+すなわち、空白の前にエスケープ文字
+.Ql \e
+を指定する方法です。
+この方法はどのマクロでも使うことができますが、1 行を越える長さの
+テキストの調整の邪魔になるという副作用があります。
+.Xr Troff
+では
+固定空白は他の印刷可能文字と同様に扱われ、通常期待されるように、
+そこで文字列を空白や改行で分けることを行なわなくなります。
+この方法は文字列が行の境界をまたがないであろう場合に有用です。
+例えば、
+.Bl -tag -width "fetch(char *str)" -offset indent
+.It Fn fetch char\ *str
+は
+.Ql \&.Fn fetch char\e *str
+によって生成される
+.It Fn fetch "char *str"
+は
+.Ql \&.Fn fetch "\*qchar *str\*q"
+でも生成される
+.El
+.Pp
+もし
+.Ql \e
+や引用符が省かれると、
+.Ql \&.Fn
+は引数を 3 つ取り、
+その結果は以下のようになります。
+.Pp
+.Dl Fn fetch char *str
+.Pp
+パラメータのリストが改行の境界をまたぐ場合に何がおこるかについては、
+.Sx バグ
+のセクションを参照してください。
+.Ss 行末の空白文字
+.Xr Troff
+は行末に空白文字があると混乱してしまうことがあります。
+<空白> <行末> の文字シーケンスからすべての
+空白文字を取り除くのは良い予防策です。
+どうしても行末に空白文字をおく必要性が出てきた場合は、
+詰め込まれない空白とエスケープ文字
+.Ql \e&
+を
+使用することによって対応できます。
+例えば、
+.Ql string\e\ \e&
+のようにします。
+.Ss 特殊文字のエスケープ
+改行
+.Ql \en
+のような特殊文字は
+.Ql \e
+を
+.Ql \ee
+で置き換える
+(すなわち
+.Ql \een
+とする) ことによって、
+バックスラッシュを残して扱うことができます。
+.Sh MAN ページの分析
+man ページの本文はファイル
+.Pa /usr/share/misc/mdoc.template
+の基本テンプレートを使って容易に作り上げることができます。
+.Pa /usr/share/examples/mdoc
+にはいくつかのサンプルの man ページが収められています。
+.Pp
+.Ss マニュアルページのテンプレート
+.Bd -literal -offset indent
+\&.\e" 以下の項目はすべての man ページで必要な項目です。
+\&.Dd 月 日, 年
+\&.Os オペレーティングシステム [バージョン/リリース]
+\&.Dt ドキュメントタイトル [セクション番号] [ボリューム]
+\&.Sh NAME
+\&.Nm 名前
+\&.Nd 名前の 1 行での説明
+\&.Sh SYNOPSIS
+\&.Sh DESCRIPTION
+\&.\e" 以下の項目については、必要に応じてコメントをはずして
+\&.\e" 使用してください。
+\&.\e" この次の項目はセクション 2, 3, 9 でのみ必要な、関数の
+\&.\e" 戻り値です。
+\&.\e" .Sh RETURN VALUE
+\&.\e" 次の項目はセクション 1, 6, 7, 8, 9 でのみ必要なものです。
+\&.\e" .Sh ENVIRONMENT
+\&.\e" .Sh FILES
+\&.\e" .Sh EXAMPLES
+\&.\e" 次の項目はセクション 1, 6, 7, 8, 9 でのみ必要なものです。
+\&.\e"     ((シェルへの) コマンドの戻り値と
+\&.\e"    fprintf/stderr の型の診断です。)
+\&.\e" .Sh DIAGNOSTICS
+\&.\e" 次の項目はセクション 2, 3, 9 でのみ必要な、
+\&.\e" エラーハンドリングとシグナルハンドリングです。
+\&.\e" .Sh ERRORS
+\&.\e" .Sh SEE ALSO
+\&.\e" .Sh CONFORMING TO
+\&.\e" .Sh HISTORY
+\&.\e" .Sh AUTHORS
+\&.\e" .Sh BUGS
+.Ed
+.Pp
+このテンプレートにおける最初の項目はマクロ
+.Pq Li \&.Dd , \&.Os , \&.Dt
+であり、それぞれドキュメントの日付、
+man ページもしくは題材となっているソースの開発や変更のベースとなった
+オペレーティングシステム、
+.Pq Em 大文字で
+man ページタイトルをそのページが属するマニュアルの
+セクション番号とともに指定したもの、となっています。
+これらのマクロはそのページを識別するものであり、
+後述の
+.Sx タイトルマクロ
+で議論されています。
+.Pp
+テンプレート中の残りの項目はセクションのヘッダ
+.Pq Li \&.Sh
+であり、
+それらのうち
+.Sx NAME
+と
+.Sx SYNOPSIS
+と
+.Sx DESCRIPTION
+は必須項目です。
+これらのヘッダについては
+.Sx マニュアル領域
+を説明した後、
+.Sx ページ構造領域
+で議論されます。
+いくつかのコンテントマクロはページレイアウトマクロの説明に
+使われていますので、ページレイアウトマクロの前にコンテントマクロについて
+読むことを推奨します。
+.Sh タイトルマクロ
+タイトルマクロはページ構造領域の最初の部分ですが、man ページを
+前日に書き始めたいという人のために、最初に分けて記述されます。
+3 つのヘッダマクロでドキュメントか man ページのタイトル、
+オペレーティングシステム、および原著の日付を指定します。
+これらのマクロはドキュメントの最初に一度だけ呼び出されるもので、
+ヘッダとフッタを構成するためだけに使用されます。
+.Bl -tag -width 6n
+.It Li \&.Dt ドキュメントタイトル セクション番号 [ボリューム]
+.\" .Cl
+.\" USD        UNIX User's Supplementary Documents
+.\" .Cl
+.\" PS1        UNIX Programmer's Supplementary Documents
+ドキュメントタイトルは man ページの主題であり、troff の制限により
+.Tn 大文字
+でなければいけません。
+セクション番号は 1,\ ...,\ 8 となり、これが指定されると
+ボリュームタイトルを省略してもかまいません。
+では、次のセクション番号と解説について後述します:
+ボリュームタイトルには任意のものか次のいずれかを指定します。
+.Pp
+.Bl -column SMM -offset indent -compact
+.It Li "AMD    UNIX Ancestral Manual Documents"
+.It Li "SMM    UNIX System Manager's Manual"
+.It Li "URM    UNIX Reference Manual"
+.It Li "PRM    UNIX Programmer's Manual"
+.El
+.Pp
+.\" .Cl
+.\" MMI        UNIX Manual Master Index
+.\" .Cl
+.\" CON        UNIX Contributed Software Manual
+.\" .Cl
+.\" LOC        UNIX Local Manual
+デフォルトのボリュームラベルは
+セクション 1, 6, 7 では
+.Li URM
+、
+セクション 8 では
+.Li SMM
+、
+セクション 2, 3, 4, 5 では
+.Li PRM
+となっています。
+.It Li \&.Os オペレーティングシステム リリース番号
+オペレーティングシステムの名称には一般的な頭字語 (略称)
+を使わなければなりません。
+例えば、
+.Tn BSD
+や
+.Tn FreeBSD
+や
+.Tn ATT
+といったものです。
+リリース番号は、例えば4.3, 4.3+Tahoe, V.3, V.4 というような各システム
+での標準のリリースの命名法を使用します。
+認識されない引数はページのフッタ中に記述された通りに表示されます。
+以下にフッタの典型的な例を示します。
+.Pp
+.Dl \&.Os 4.3BSD
+.Pp
+や
+.Dl \&.Os FreeBSD 2.2
+.Pp
+やローカルで生成されたセット
+.Pp
+.Dl \&.Os CS Department
+.Pp
+Berkeley でのデフォルトである、引数なしの
+.Ql \&.Os
+はサイト固有の
+ファイル
+.Pa /usr/share/tmac/mdoc/doc-common
+において
+.Tn BSD
+として定義されています。
+これは実際には
+.Tn LOCAL
+として定義すべきです。
+.Ql \&.Os
+マクロがない場合は、ページの左下角は見にくくなるであろうことに
+注意してください。
+.It Li \&.Dd 月 日, 年
+日付は次のようにフォーマルな形式で記述しなければなりません。
+.Pp
+.ne 5
+.Dl January 25, 1989
+.El
+.Sh マニュアルと一般テキスト領域の紹介
+.Ss この名前には何が...?
+マニュアル領域のマクロ名はコマンドやサブルーチン、それに関連ファイルを
+説明するために使われている日常のインフォーマルな言葉から取られています。
+この言葉と少し違うバリエーションのものが man ページを書く上での
+3 つの異なった面を記述するのに使われます。
+最初のものは
+.Nm \-mdoc
+マクロ使用方法の説明です。
+2 番目のものは
+.Nm \-mdoc
+マクロを用いた
+.Ux
+コマンドの記述です。
+3 番目はコマンドを通常の言葉の感覚でユーザに示したものです。
+これはすなわち、man ページのテキスト中でのコマンドの議論となります。
+.Pp
+最初のケースでは、
+.Xr troff 1
+マクロはそれ自身、
+一種のコマンドとなっています。
+troff コマンドは一般的に以下のような形式をとります。
+.Bd -filled -offset indent
+\&.Va argument1 argument2 ... argument9
+.Ed
+.Pp
+.Ql \&.Va
+はマクロコマンドもしくは要求を示しており、
+それに続くものはすべて引数として処理されます。
+2 番目のケースでは、コンテントマクロを使用する
+.Ux
+コマンドの記述がもう少し含まれます。
+典型的な
+.Sx SYNOPSIS
+コマンド行はこのように表示されます。
+.Bd -filled -offset indent
+.Nm filter
+.Op Fl flag
+.Ar infile outfile
+.Ed
+.Pp
+ここで
+.Nm filter
+はコマンド名であり、
+角括弧で囲まれた文字列
+.Fl flag
+は
+.Em フラグ
+引数で、
+これは角括弧で囲むことによってオプションであることを示しています。
+.Nm \-mdoc
+の用語では
+.Ar infile
+と
+.Ar outfile
+は
+.Em 引数
+と称されています。
+上の例のフォーマットを行なったマクロは以下のものです。
+.Bd -literal -offset indent
+\&.Nm filter
+\&.Op \&Fl flag
+\&.Ar infile outfile
+.Ed
+.Pp
+3 番目のケースでは、コマンドの説明や構文に上記の例の両方が使われ、
+さらに細かい記述が追加されるでしょう。
+上の例での引数
+.Ar infile
+と
+.Ar outfile
+は
+.Em オペランド
+もしくは
+.Em ファイル引数
+として参照されます。
+コマンド行の引数のリストはかなり長くなる場合もあります。
+.Bl -tag -width make -offset indent
+.It Nm make
+.Op Fl eiknqrstv
+.Op Fl D Ar variable
+.Op Fl d Ar flags
+.Op Fl f Ar makefile
+.Bk -words
+.Op Fl I Ar directory
+.Ek
+.Op Fl j Ar max_jobs
+.Op Ar variable=value
+.Bk -words
+.Op Ar target ...
+.Ek
+.El
+.Pp
+ここではコマンド
+.Nm make
+について記述しており、
+.Ar makefile
+をフラグ
+.Fl f
+の引数としています。またオプションの
+ファイルオペランド
+.Ar target
+についても議論しています。
+言葉での説明では、こういった詳細な記述が混乱を防いでくれますが、
+.Nm \-mdoc
+パッケージにはフラグ
+.Em への
+引数のための
+マクロがありません。その代わりに
+.Ar target
+のような
+オペランドやファイル引数に使われる引数マクロ
+.Ql \&Ar
+が
+.Ar variable
+のようなフラグへの引数にも使われます。
+この make コマンド行は以下の指定により生成されています。
+.Bd -literal -offset indent
+\&.Nm make
+\&.Op Fl eiknqrstv
+\&.Op Fl D Ar variable
+\&.Op Fl d Ar flags
+\&.Op Fl f Ar makefile
+\&.Op Fl I Ar directory
+\&.Op Fl j Ar max_jobs
+\&.Op Ar variable=value
+\&.Bk -words
+\&.Op Ar target ...
+\&.Ek
+.Ed
+.Pp
+マクロ
+.Ql \&.Bk
+と
+.Ql \&.Ek
+は
+.Sx キープ
+セクションにおいて解説されています。
+.Ss 一般的な構文
+マニュアル領域と一般テキスト領域のマクロはいくつかの小さな違い
+があるものの、同様な構文を使用しています。
+.Ql \&.Ar ,
+.Ql \&.Fl ,
+.Ql \&.Nm ,
+.Ql \&.Pa
+は引数なしで呼び出された時のみ異なります。
+.Ql \&.Fn
+と
+.Ql \&.Xr
+は引数のリストの順番が異なります。
+マクロ
+.Ql \&.Op
+と
+.Ql \&.Fn
+には入れ子の制限があります。
+すべてのコンテントマクロが句読点を認識し、正しく扱うには、
+各々の句読点文字が先行する空白で分離されている必要があります。
+以下のように指定されている場合、
+.Pp
+.Dl \&.Li sptr, ptr),
+.Pp
+結果は以下のようになります。
+.Pp
+.Dl Li sptr, ptr),
+.Pp
+ここでは句読点は認識されずすべての出力はリテラルなフォントで行なわれて
+います。句読点が空白文字で区切られている場合、
+.Pp
+.Dl \&.Li "sptr , ptr ) ,"
+.Pp
+結果は以下のようになります。
+.Pp
+.Dl Li sptr , ptr ) ,
+.Pp
+今度は句読点が認識され、出力はデフォルトのフォントで行なわれ
+リテラルフォントの文字列と区別されています。
+.Pp
+.Ql \e&
+でエスケープすることによって句読点文字の特別な意味を
+取り除くことができます。
+.Xr troff
+はマクロ言語としての限界から、
+数学、論理学、もしくは以下の引用符の集合のメンバを含んだ文字列を
+表現するのは困難です。
+.Bd -literal -offset indent-two
+\&{+,\-,/,*,\&%,<,>,<=,>=,=,==,&,`,',"}
+.Ed
+.Pp
+.Xr troff
+が文字によって示唆されている操作もしくは評価を実際に
+行なっていることが、その問題の原因となっています。
+.Ql \e&
+でこれらをエスケープすることによって、
+これらの文字が予期せずに評価されることを防止することができます。
+最初のコンテントマクロは、以下の
+.Ql \&.Ad
+において、
+その典型的な構文が示されています。
+.Sh マニュアル領域
+.Ss アドレスマクロ
+アドレスマクロは addr1[,addr2[,addr3]] の形式からなる
+アドレスを識別します。
+.Pp
+.Dl 使い方: .Ad address ... \*(Pu
+.Bl -tag -width "\&.Ad f1 , f2 , f3 :" -compact -offset 14n
+.It Li \&.Ad addr1
+.Ad addr1
+.It Li \&.Ad addr1\ .
+.Ad addr1 .
+.It Li \&.Ad addr1\ , file2
+.Ad addr1 , file2
+.It Li \&.Ad f1\ , f2\ , f3\ :
+.Ad f1 , f2 , f3 :
+.It Li \&.Ad addr\ )\ )\ ,
+.Ad addr ) ),
+.El
+.Pp
+.Ql \&.Ad
+を引数なしで呼び出すのはエラーです。
+.Ql \&.Ad
+は他のマクロから呼び出し可能で解析されます。
+.Ss 作者名
+.Ql \&.An
+マクロは文書化されている項目の作者の名前、もしくは実際の
+マニュアルページの作者の名前を指定するために使われます。
+名前の情報の後のすべての引数は句読点として扱われます。
+.Pp
+.Dl 使い方: .An author_name \*(Pu
+.Bl -tag -width "\&.An Joe Author ) ) ," -compact -offset 14n
+.It Li \&.An Joe\ Author
+.An Joe Author
+.It Li \&.An Joe\ Author\ ,
+.An Joe\ Author ,
+.It Li \&.An Joe\ Author\ \&Aq\ nobody@FreeBSD.ORG
+.An Joe Author Aq nobody@FreeBSD.ORG
+.It Li \&.An Joe\ Author\ )\ )\ ,
+.An Joe Author ) ),
+.El
+.Pp
+.Ql \&.An
+マクロは解析され、呼び出し可能です。
+.Ql \&.An
+を引数なしで呼び出すのはエラーです。
+.Ss 引数マクロ
+引数マクロ
+.Ql \&.Ar
+はコマンド行の引数を参照する際に
+使用することができます。
+.Pp
+.Dl 使い方: .Ar argument ... \*(Pu
+.Bl -tag -width "\&.Ar file1 file2" -compact -offset 15n
+.It Li \&.Ar
+.Ar
+.It Li \&.Ar file1
+.Ar file1
+.It Li \&.Ar file1\ .
+.Ar file1 .
+.It Li \&.Ar file1 file2
+.Ar file1 file2
+.It Li \&.Ar f1 f2 f3\ :
+.Ar f1 f2 f3 :
+.It Li \&.Ar file\ )\ )\ ,
+.Ar file ) ),
+.El
+.Pp
+.Ql \&.Ar
+が引数なしで呼び出されると、
+.Ql \&.Ar
+として扱われます。
+.Ql \&.Ar
+マクロは解析され、呼び出し可能です。
+.Ss コンフィギュレーション宣言 (セクション 4 のみ)
+.Ql \&.Cd
+マクロはセクション 4 のマニュアルにおいて、
+デバイスインタフェースの
+.Xr config 8
+による宣言の説明に使われます。
+このマクロは引用符 (二重引用符のみ) で囲まれた引数を取ることができます。
+.Pp
+.Bl -tag -width "device le0 at scode?" -offset indent
+.It Cd "device le0 at scode?"
+は
+.Ql ".Cd device le0 at scode?"
+によって生成されます。
+.El
+.Ss コマンド修飾子
+コマンド修飾子は
+.Ql \&.Cm
+マクロがすべての引数の前にダッシュ文字を
+付けないことを除いて、
+.Ql \&.Fl
+(フラグ) コマンドと同じです。
+伝統的にフラグはダッシュ文字に引き続いて指定されますが、
+いくつかのコマンドやコマンドのサブセットはこの方法を使っていません。
+コマンド修飾子はエディタコマンドのような対話的なコマンドでも
+指定されることがあります。
+.Sx フラグ
+のセクションを参照してください。
+.Ss 定義済みの変数
+インクルードファイルにおいて定義されている変数は
+.Ql \&.Dv
+マクロによって指定します。
+.Pp
+.Dl 使い方: .Dv defined_variable ... \*(Pu
+.Bl -tag -width "\&.Dv MAXHOSTNAMELEN" -compact -offset 14n
+.It Li ".Dv MAXHOSTNAMELEN"
+.Dv MAXHOSTNAMELEN
+.It Li ".Dv TIOCGPGRP )"
+.Dv TIOCGPGRP )
+.El
+.Pp
+.Ql \&.Dv
+を引数なしで呼び出すのはエラーです。
+.Ql \&.Dv
+は解析され、呼び出し可能です。
+.Ss errno (セクション 2 のみ)
+エラーマクロ
+.Ql \&.Er
+はセクション 2 のライブラリルーチンにおける
+エラーの戻り値を指定します。
+下記の 2 番目の例では
+.Ql \&.Er
+は一般テキスト領域マクロである
+.Ql \&.Bq
+(これはセクション 2 のマニュアルページで使われています)
+と共に使われています。
+.Pp
+.Dl 使い方: .Er ERRNOTYPE ... \*(Pu
+.Bl -tag -width "\&.Bq Er ENOTDIR" -compact -offset 14n
+.It Li \&.Er ENOENT
+.Er ENOENT
+.It Li \&.Er ENOENT\ )\ ;
+.Er ENOENT ) ;
+.It Li \&.Bq \&Er ENOTDIR
+.Bq Er ENOTDIR
+.El
+.Pp
+.Ql \&.Er
+を引数なしで呼び出すのはエラーです。
+.Ql \&.Er
+は解析され、呼び出し可能です。
+.Ss 環境変数
+.Ql \&.Ev
+マクロは環境変数を指定します。
+.Pp
+.Dl 使い方: .Ev argument ... \*(Pu
+.Bl -tag -width "\&.Ev PRINTER ) ) ," -compact -offset 14n
+.It Li \&.Ev DISPLAY
+.Ev DISPLAY
+.It Li \&.Ev PATH\ .
+.Ev PATH .
+.It Li \&.Ev PRINTER\ )\ )\ ,
+.Ev PRINTER ) ),
+.El
+.Pp
+.Ql \&.Ev
+を引数なしで呼び出すのはエラーです。
+.Ql \&.Ev
+は解析され、呼び出し可能です。
+.Ss 関数の引数
+.Ql \&.Fa
+マクロは関数の引数 (パラメータ) を
+マニュアルの
+.Sx SYNOPSIS
+のセクション外、
+もしくは
+.Sx SYNOPSIS
+のセクション内で参照する場合に使われます。
+パラメータのリストが
+.Ql \&.Fn
+マクロでは長すぎる場合は、
+囲って使うマクロ
+.Ql \&.Fo
+と
+.Ql \&.Fc
+を使わなければなりません。
+.Ql \&.Fa
+は構造体のメンバを参照する場合にも使われます。
+.Pp
+.Dl 使い方: .Fa function_argument ... \*(Pu
+.Bl -tag -width "\&.Fa d_namlen\ )\ )\ ," -compact -offset 14n
+.It Li \&.Fa d_namlen\ )\ )\ ,
+.Fa d_namlen ) ),
+.It Li \&.Fa iov_len
+.Fa iov_len
+.El
+.Pp
+.Ql \&.Fa
+を引数なしで呼び出すのはエラーです。
+.Ql \&.Fa
+は解析され、呼び出し可能です。
+.Ss 関数の宣言
+.Ql \&.Fd
+マクロは
+.Sx SYNOPSIS
+セクションにおいて、
+セクション 2 または 3 の関数の説明で使われます。
+.Ql \&.Fd
+マクロから他のマクロを呼び出すことはなく、
+他のマクロから呼び出すこともできません。
+.Pp
+.Dl 使い方: .Fd include_file (or defined variable)
+.Pp
+.Sx SYNOPSIS
+セクションにおいて、関数がすでに示されていて改行が
+入っていない場合、
+.Ql \&.Fd
+によって改行が挿入されます。これによって
+前の関数呼び出しと次の関数の宣言の間に最適な行間が設定されます。
+.Ss フラグ
+.Ql \&.Fl
+マクロはコマンド行のフラグを扱います。
+フラグの前にはダッシュ
+.Ql \-
+が挿入されます。
+対話的なコマンドのフラグでは、ダッシュがフラグの前には挿入されませんが、
+.Ql \&.Cm
+(コマンド修飾子) マクロは、ダッシュを付けないことを除き、
+同じ働きをします。
+.Pp
+.Dl 使い方: .Fl argument ... \*(Pu
+.Bl -tag -width "\&.Fl \-s \-t \-v" -compact -offset 14n
+.It Li \&.Fl
+.Fl
+.It Li \&.Fl cfv
+.Fl cfv
+.It Li \&.Fl cfv\ .
+.Fl cfv .
+.It Li \&.Fl s v t
+.Fl s v t
+.It Li \&.Fl -\ ,
+.Fl - ,
+.It Li \&.Fl xyz\ )\ ,
+.Fl xyz ) ,
+.El
+.Pp
+引数なしで
+.Ql \&.Fl
+マクロを指定すると、
+標準入力/標準出力を意味するダッシュとなります。
+ひとつのダッシュに
+.Ql \&.Fl
+マクロを使用すると、
+2 つダッシュとなることに注意して下さい。
+.Ql \&.Fl
+マクロは解析され、呼び出し可能です。
+.Ss 関数 (ライブラリルーチン)
+.Ql \&.Fn
+マクロは ANSI C の記法を規範としています。
+.Bd -literal
+使い方: .Fn [type] function [[type] parameters ... \*(Pu]
+.Ed
+.Bl -tag -width "\&.Fn _int align_ _const * char *sptrsxx" -compact
+.It Li "\&.Fn getchar"
+.Fn getchar
+.It Li "\&.Fn strlen ) ,"
+.Fn strlen ) ,
+.It Li \&.Fn "\*qint align\*q" "\*qconst * char *sptrs\*q" ,
+.Fn "int align" "const * char *sptrs" ,
+.El
+.Pp
+.Ql \&.Fn
+を引数を指定せずに呼び出すのはエラーです。
+.Ql \&.Fn
+マクロは解析され、呼び出し可能です。
+他のマクロの呼び出しは
+.Ql \&.Fn
+の呼び出しの終了を意味することに
+注意して下さい (閉じ括弧がその点で挿入されます)。
+.Pp
+9 個以上のパラメータをとる関数 (これは滅多にないことですが) では、
+.Ql \&.Fo
+マクロ (関数オープン) と
+.Ql \&.Fc
+マクロ
+(関数クローズ) を
+.Ql \&.Fa
+(関数引数) と共に使って、
+この制限を回避することができます。
+以下にその例を示します。
+.Bd -literal -offset indent
+\&.Fo "int res_mkquery"
+\&.Fa "int op"
+\&.Fa "char *dname"
+\&.Fa "int class"
+\&.Fa "int type"
+\&.Fa "char *data"
+\&.Fa "int datalen"
+\&.Fa "struct rrec *newrr"
+\&.Fa "char *buf"
+\&.Fa "int buflen"
+\&.Fc
+.Ed
+.Pp
+これは以下のような結果になります。
+.Bd -filled -offset indent
+.Fo "int res_mkquery"
+.Fa "int op"
+.Fa "char *dname"
+.Fa "int class"
+.Fa "int type"
+.Fa "char *data"
+.Fa "int datalen"
+.Fa "struct rrec *newrr"
+.Fa "char *buf"
+.Fa "int buflen"
+.Fc
+.Ed
+.Pp
+.Ql \&.Fo
+と
+.Ql \&.Fc
+マクロは解析され、呼び出し可能です。
+.Sx SYNOPSIS
+セクションでは、関数は常に行の先頭から開始されます。
+.Sx SYNOPSIS
+セクションにおいて、複数の関数が示されており、
+関数の型が示されない場合、改行が挿入され、現在の関数名とその前の関数名
+の間に最適な改行量が設定されます。現在、
+.Ql \&.Fn
+は troff の行の長さ
+に対して、語の境界をチェックしておらず、予期しない場所で改行が挿入され
+てしまうことがあります。これは近い将来修正されるでしょう。
+.Ss 関数の型
+このマクロは
+.Sx SYNOPSIS
+セクションで使うものです。
+man ページ中の他の場所でも問題なく使うことができますが、
+セクション 2 と 3 の
+.Sx SYNOPSIS
+セクションでカーネルの通常の形式で
+関数の型を示すことがこのマクロの目的です (このマクロは関数名が次の行に
+置かれるように改行を挿入します)。
+.Pp
+.Dl 使い方: .Ft type ... \*(Pu
+.Bl -tag -width "\&.Ft struct stat" -offset 14n -compact
+.It Li \&.Ft struct stat
+.Ft struct stat
+.El
+.Pp
+.Ql \&.Ft
+は他のマクロからは呼び出せません。
+.Ss 対話的なコマンド
+.Ql \&.Ic
+マクロは対話的なコマンド、もしくは内部コマンドを指定します。
+.Pp
+.Dl 使い方: .Ic argument ... \*(Pu
+.Bl -tag -width "\&.Ic setenv , unsetenvxx" -compact -offset 14n
+.It Li \&.Ic :wq
+.Ic :wq
+.It Li \&.Ic do while {...}
+.Ic do while {...}
+.It Li \&.Ic setenv\ , unsetenv
+.Ic setenv , unsetenv
+.El
+.Pp
+.Ql \&.Ic
+を引数なしで呼び出すのはエラーです。
+.Ql \&.Ic
+マクロは解析され、呼び出し可能です。
+.Ss 名前マクロ
+.Ql \&.Nm
+マクロは文書のタイトルやサブジェクト名を指定するために
+使われます。このマクロは最初に呼び出された時の引数を覚えておくという
+特性を持っており、それは常にそのページのサブジェクト名であるべきです。
+引数なしで呼び出されると
+.Ql \&.Nm
+は作者の作業を少なくするためだけの
+目的で、最初の名称を出力します。注意: セクション 2 または 3 のドキュメント
+の関数名は
+.Sx NAME
+セクションにおいて
+.Ql \&.Nm
+で指定され、
+.Sx SYNOPSIS
+セクションや残りのセクションでは
+.Ql \&.Fn
+で指定され
+ます。
+.Xr csh 1
+での
+.Ql while
+コマンドのキーワードのような対話的
+なコマンドでは
+.Ql \&.Ic
+マクロを使うべきです。
+.Ql \&.Ic
+は
+ほとんど
+.Ql \&.Nm
+と同一ですが、それが最初に使われたときの引数を
+記憶することはできません。
+.Pp
+.Dl 使い方: .Nm argument ... \*(Pu
+.Bl -tag -width "\&.Nm mdoc.sample" -compact -offset 14n
+.It Li \&.Nm mdoc.sample
+.Nm mdoc.sample
+.It Li \&.Nm \e-mdoc
+.Nm \-mdoc .
+.It Li \&.Nm foo\ )\ )\ ,
+.Nm foo ) ),
+.It Li \&.Nm
+.Nm
+.El
+.Pp
+.Ql \&.Nm
+マクロは解析され、呼び出し可能です。
+.Ss オプション
+.Ql \&.Op
+マクロはコマンド行の残りのすべての引数をオプションである
+ことを示す角括弧で囲み、末尾の句読点は角括弧の外に置きます。
+.Ql \&.Oc
+マクロと
+.Ql \&.Oo
+マクロは複数行に渡って使うことが
+できます。
+.Pp
+.Dl 使い方: .Op options ... \*(Pu
+.Bl -tag -width "\&.Op Fl c Ar objfil Op Ar corfil ," -compact -offset indent
+.It Li \&.Op
+.Op
+.It Li ".Op Fl k"
+.Op Fl k
+.It Li ".Op Fl k ) ."
+.Op Fl k ) .
+.It Li ".Op Fl k Ar kookfile"
+.Op Fl k Ar kookfile
+.It Li ".Op Fl k Ar kookfile ,"
+.Op Fl k Ar kookfile ,
+.It Li ".Op Ar objfil Op Ar corfil"
+.Op Ar objfil Op Ar corfil
+.It Li ".Op Fl c Ar objfil Op Ar corfil ,"
+.Op Fl c Ar objfil Op Ar corfil ,
+.It Li \&.Op word1 word2
+.Op word1 word2
+.El
+.Pp
+.Ql \&.Oc
+マクロと
+.Ql \&.Oo
+マクロ:
+.Bd -literal -offset indent
+\&.Oo
+\&.Op \&Fl k \&Ar kilobytes
+\&.Op \&Fl i \&Ar interval
+\&.Op \&Fl c \&Ar count
+\&.Oc
+.Ed
+.Pp
+生成結果:
+.Oo
+.Op Fl k Ar kilobytes
+.Op Fl i Ar interval
+.Op Fl c Ar count
+.Oc
+.Pp
+.Ql \&.Op
+と
+.Ql \&.Oc
+と
+.Ql \&.Oo
+マクロは
+解析され、呼び出し可能です。
+.Ss パス名
+.Ql \&.Pa
+マクロはパス名もしくはファイル名をフォーマットします。
+.Pp
+.Dl 使い方: .Pa pathname \*(Pu
+.Bl -tag -width "\&.Pa /tmp/fooXXXXX ) ." -compact -offset 14n
+.It Li \&.Pa /usr/share
+.Pa /usr/share
+.It Li \&.Pa /tmp/fooXXXXX\ )\ .
+.Pa /tmp/fooXXXXX ) .
+.El
+.Pp
+.Ql \&.Pa
+マクロは解析され、呼び出し可能です。
+.Ss 変数
+一般的な変数への参照です。
+.Pp
+.Dl 使い方: .Va variable ... \*(Pu
+.Bl -tag -width "\&.Va char s ] ) ) ," -compact -offset 14n
+.It Li \&.Va count
+.Va count
+.It Li \&.Va settimer ,
+.Va settimer ,
+.It Li \&.Va int\ *prt\ )\ :
+.Va int\ *prt ) :
+.It Li \&.Va char\ s\ ]\ )\ )\ ,
+.Va char\ s ] )),
+.El
+.Pp
+.Ql \&.Va
+を引数なしで呼び出すのはエラーです。
+.Ql \&.Va
+マクロは解析され、呼び出し可能です。
+.Ss マニュアルページの相互参照
+.Ql \&.Xr
+マクロは最初の引数にマニュアルページの名称を取り、
+もしあれば次の引数にセクションのページ数か句読点を取ります。
+すべての残りの引数は句読点と見なされます。
+.Pp
+.Dl 使い方: .Xr man_page [1,...,8] \*(Pu
+.Bl -tag -width "\&.Xr mdoc 7 ) ) ," -compact -offset 14n
+.It Li \&.Xr mdoc
+.Xr mdoc
+.It Li \&.Xr mdoc\ ,
+.Xr mdoc ,
+.It Li \&.Xr mdoc 7
+.Xr mdoc 7
+.It Li \&.Xr mdoc 7\ )\ )\ ,
+.Xr mdoc 7 ) ),
+.El
+.Pp
+.Ql \&.Xr
+マクロは解析され、呼び出し可能です。
+.Ql \&.Xr
+を引数なしで呼び出すのはエラーです。
+.Sh 一般テキスト領域
+.Ss AT&T マクロ
+.Bd -literal -offset indent -compact
+使い方: .At [v6 | v7 | 32v | V.1 | V.4] ... \*(Pu
+.Ed
+.Bl -tag -width "\&.At v6 ) ," -compact -offset 14n
+.It Li .At
+.At
+.It Li ".At v6 ."
+.At v6 .
+.El
+.Pp
+.Ql \&.At
+マクロは解析
+.Em されず
+、呼び出し
+.Em 不可
+です。
+最大 2 つまでの引数を取ることができます。
+.Ss BSD マクロ
+.Dl 使い方: .Bx [Version/release] ... \*(Pu
+.Bl -tag -width "\&.Bx 4.3 ) ," -compact -offset 14n
+.It Li .Bx
+.Bx
+.It Li ".Bx 4.3 ."
+.Bx 4.3 .
+.El
+.Pp
+.Ql \&.Bx
+マクロは解析され、呼び出し可能です。
+.Ss FreeBSD マクロ
+.Bd -literal -offset indent -compact
+使い方: .Fx Version.release ... \*(Pu
+.Ed
+.Bl -tag -width "\&.Fx 2.2 ) ," -compact -offset 14n
+.It Li ".Fx 2.2 ."
+.Fx 2.2 .
+.El
+.Pp
+.Ql \&.Fx
+マクロは解析
+.Em されず
+、呼び出し
+.Em 不可
+です。
+最大 2 つまでの引数を取ることができます。
+.Ss UNIX マクロ
+.Dl 使い方: .Ux ... \*(Pu
+.Bl -tag -width "\&.Ux 4.3 ) ," -compact -offset 14n
+.It Li .Ux
+.Ux
+.El
+.Pp
+.Ql \&.Ux
+マクロは解析され、呼び出し可能です。
+.Ss 囲い/クォートマクロ
+囲いの概念はクォートと似たものです。
+1 つ以上の文字列が引用符や括弧のような文字のペアで囲まれている
+オブジェクトを指します。
+クォートと囲いという用語はこの文書を通して同じ意味で使われます。
+ほとんどの 1 行の囲いマクロはクォート (quote) のヒントとするために、
+小文字の
+.Ql q
+で終了しますが、いくつかの例外があります。
+各々の囲いマクロに対し、開始マクロと終了マクロのペアもあり、
+それぞれ小文字の
+.Ql o
+と
+.Ql c
+で終了します。
+これらは 1 行以上のテキストに渡って使うことができますが、
+入れ子にする場合に制限があります。
+その中では 1 行形式のクォートマクロのみ使用することができます。
+.Pp
+.ne 5
+.Bd -filled -offset indent
+.Bl -column "quote " "close " "open " "Enclose Stringx(in XX) " XXstringXX
+.Em "クォート      終了  開始  機能  結果"
+\&.Aq  .Ac     .Ao     カギ括弧による囲い     <文字列>
+\&.Bq  .Bc     .Bo     角括弧による囲い        [文字列]
+\&.Dq  .Dc     .Do     二重引用符 ``文字列''
+       .Ec     .Eo     囲い文字列 (XXによる)   XX文字列XX
+\&.Pq  .Pc     .Po     括弧による囲い   (文字列)
+\&.Ql                  クォートされたリテラル       `st' or 文字列
+\&.Qq  .Qc     .Qo     まっすぐな二重引用符  "文字列"
+\&.Sq  .Sc     .So     一重引用符 `文字列'
+.El
+.Ed
+.Pp
+下記の不正なマクロを除き、すべてのクォートマクロは解析され、呼び出し
+可能です。句読点がひとつずつ置かれていて、スペースで区切られていれば、
+すべてのクォートマクロは句読点を適切に扱います。クォートマクロは開く
+句読点、閉じる句読点(訳注: 句読点には括弧なども含みます) を調べ、
+それが囲む文字列より前か後かを決めます。これによって、ある程度の入れ子
+が可能になっています。
+.Bl -tag -width xxx,xxxx
+.It Li \&.Ec , \&.Eo
+これらのマクロは各々開始および終了の文字列を最初の引数に取ります。
+.It Li \&.Ql
+リテラルをクォートするマクロは
+.Xr troff
+では
+.Xr nroff
+と異なっ
+た処理を行ないます。
+.Xr nroff
+でフォーマットされた場合、クォート指定
+されたリテラルは常にクォートされます。
+.Xr troff
+でフォーマットされた
+場合は、アイテムの幅が固定幅文字 3 つ分より狭い場合にのみクォートされま
+す。これはリテラル (固定幅) のフォントの変更があまり気づかれないもので
+あるため、短い文字列を良く見えるようにするためです。
+.It Li \&.Pf
+プレフィックスマクロは呼び出し可能ではありませんが、解析されます。
+.Bl -tag -width (namexx -offset indent
+.It Li ".Pf ( Fa name2"
+は
+.Pf ( Fa name2
+となります。
+.El
+.Pp
+.Ql \&.Ns
+(空白なし) マクロはサフィックス機能と同様の作用があります。
+.El
+.Pp
+.ne 4
+クォートの例:
+.Bl -tag -width "\&.Aq Pa ctype.h ) ,xxxxxxxx" -compact -offset indent
+.It Li \&.Aq
+.Aq
+.It Li \&.Aq \&Ar ctype.h\ )\ ,
+.Aq Ar ctype.h ) ,
+.It Li \&.Bq
+.Bq
+.It Li \&.Bq \&Em Greek \&, French \&.
+.Bq Em Greek , French .
+.It Li \&.Dq
+.Dq
+.It Li ".Dq string abc ."
+.Dq string abc .
+.It Li ".Dq \'^[A-Z]\'"
+.Dq \'^[A-Z]\'
+.It Li "\&.Ql man mdoc"
+.Ql man mdoc
+.It Li \&.Qq
+.Qq
+.It Li "\&.Qq string ) ,"
+.Qq string ) ,
+.It Li "\&.Qq string Ns ),"
+.Qq string Ns ),
+.It Li \&.Sq
+.Sq
+.It Li "\&.Sq string"
+.Sq string
+.El
+.Pp
+囲いマクロの入れ子についての良い例については、
+オプションマクロ
+.Ql \&.Op
+を参照してください。
+このマクロは上でリストされているような囲いマクロと同じベースの上に
+作られています。
+拡張引数リストマクロ
+.Ql \&.Xo
+と
+.Ql \&.Xc
+もまた同じルーチンを
+ベースに作られており、
+.Nm \-mdoc
+マクロの使い方の非常に良い例と
+なっています。
+.Ss no\-op もしくは通常テキストマクロ
+.Ql \&.No
+マクロはマクロコマンド行において、コンテントマクロの構文
+形式に従うが、フォーマットされては
+.Em ならない
+単語をハックする
+ものです。
+.Ss 空白なしマクロ
+.Ql \&.Ns
+マクロはマクロ間での不要な空白を除去します。
+これはフラグと引数の間に空白を含まない古いスタイルの引数リストを使う
+場合に便利です。
+.Bl -tag -width "\&.Op Fl I Ns Ar directoryxx" -offset indent
+.It Li ".Op Fl I Ns Ar directory"
+は
+.Op Fl I Ns Ar directory
+という結果になります。
+.El
+.Pp
+注:
+.Ql \&.Ns
+マクロは他のマクロ名が続かなければ、
+スペースを除去したあとに
+.Ql \&.No
+マクロを常に起動します。
+.Ql \&.Ns
+マクロは解析され、呼び出し可能です。
+.Ss セクションの相互参照
+.Ql \&.Sx
+マクロは同一文書内でのセクションのヘッダへの参照を
+指定します。これは解析され、呼び出し可能です。
+.Pp
+.Bl -tag -width "Li \&.Sx FILES" -offset 14n
+.It Li \&.Sx FILES
+.Sx FILES
+.El
+.Ss 相互参照と引用
+以下のマクロは多少なりとも参考文献を扱えるようにと意図したものです。
+これらのマクロは、せいぜい参照スタイルの参考文献のサブセットを手動で
+作成しやすくする程度です。
+.Pp
+.Bl -tag -width 6n -offset indent -compact
+.It Li .Rs
+参考文献の開始。
+改行を挿入してから、参考文献の終了マクロが読み込まれるまで
+参考文献の情報を収集する。
+.It Li .Re
+参考文献の終了。参考文献が表示される。
+.It Li .%A
+参考文献の作者名。1 回の呼び出しにつき、作者名をひとつ指定する。
+.It Li .%B
+書籍のタイトル。
+.It Li .\&%C
+都市/場所。
+.It Li .\&%D
+日付。
+.It Li .%J
+定期刊行物の名称。
+.It Li .%N
+発行番号。
+.It Li .%O
+追加の情報。
+.It Li .%P
+ページ番号。
+.It Li .%R
+報告書の名称。
+.It Li .%T
+記事のタイトル。
+.It Li .%V
+巻数。
+.El
+.Pp
+.Ql %
+で始まるマクロは呼び出し不可能ですが、
+呼び出し側に戻る商標名マクロだけは解析されます。
+(現時点では予期できないことです。)
+商標名のみ解析されるのは
+.Xr troff Ns / Ns Xr ditroff
+の出力を
+きれいにするためです。
+.Ss 返り値
+.Ql \&.Rv
+マクロは
+.Sx RETURN VALUE
+のセクション
+で使うテキストを生成します。
+.Pp
+.Dl 使い方: .Rv [-std function]
+.Pp
+.Ql \&.Rv -std atexit
+は以下のテキストを生成します。
+.Pp
+.\" fake section 3 to avoid error message from Rv
+.\".ds cH 3
+.ds section 3
+.\" and back to 7 again
+.\".ds cH 7
+.Rv -std atexit
+.ds section 7
+.Pp
+.Fl std
+オプションはセクション 2 と 3 のマニュアルページでのみ有効です。
+.Ss 商標名 (頭文字とタイプ名)
+商標名マクロは一般的に長さが 2 文字を越えるすべてが大文字の単語用に
+使われる小さな大文字のマクロです。
+.Pp
+.Dl 使い方: .Tn symbol ... \*(Pu
+.Bl -tag -width "\&.Tn ASCII" -compact -offset 14n
+.It Li \&.Tn DEC
+.Tn DEC
+.It Li \&.Tn ASCII
+.Tn ASCII
+.El
+.Pp
+.Ql \&.Tn
+マクロは解析され、他のマクロから呼び出し可能です。
+.Ss 拡張引数
+.Ql \&.Xo
+と
+.Ql \&.Xc
+マクロでマクロの境界における引数リストを
+拡張することができます。引数リストは
+.Ql \&.Op
+のようなすべての引数
+が 1 行中に指定されていることを前提としているマクロの中では行に渡って
+拡張することができません。
+.Pp
+以下に空白モードマクロをスペーシングをオフにするために
+使った
+.Ql \&.Xo
+での例を示します。
+.Bd -literal -offset indent
+\&.Sm off
+\&.It Xo Sy I Ar operation
+\&.No \een Ar count No \een
+\&.Xc
+\&.Sm on
+.Ed
+.Pp
+これは以下のような結果になります。
+.Bd -filled -offset indent
+.Bl -tag -width flag -compact
+.Sm off
+.It Xo Sy I Ar operation
+.No \en Ar count No \en
+.Xc
+.Sm on
+.El
+.Ed
+.Pp
+例をもうひとつ:
+.Bd -literal -offset indent
+\&.Sm off
+\&.It Cm S No \&/ Ar old_pattern Xo
+\&.No \&/ Ar new_pattern
+\&.No \&/ Op Cm g
+\&.Xc
+\&.Sm on
+.Ed
+.Pp
+これは以下のような結果になります。
+.Bd -filled -offset indent
+.Bl -tag -width flag -compact
+.Sm off
+.It Cm S No \&/ Ar old_pattern Xo
+.No \&/ Ar new_pattern
+.No \&/ Op Cm g
+.Xc
+.Sm on
+.El
+.Ed
+.Pp
+囲いマクロを使った
+.Ql \&.Xo
+の他の例:
+変数の値をテストして下さい。
+.Bd -literal -offset indent
+\&.It Xo
+\&.Ic .ifndef
+\&.Oo \e&! Oc Ns Ar variable
+\&.Op Ar operator variable ...
+\&.Xc
+.Ed
+.Pp
+これは以下のような結果になります。
+.Bd -filled -offset indent
+.Bl -tag -width flag -compact
+.It Xo
+.Ic .ifndef
+.Oo \&! Oc Ns Ar variable
+.Op Ar operator variable ...
+.Xc
+.El
+.Ed
+.Pp
+上のすべての例では
+.Ql \&.It
+(リスト項目) マクロの
+引数リストに
+.Ql \&.Xo
+マクロを使用しています。
+拡張マクロが使われることはあまりありません。使われるとすれば、リスト
+項目の引数リストを拡張する場合です。残念なことに、これが拡張マクロが
+最も懲り性であるところでもあります。最初の 2 つの例では、スペーシングは
+オフになっています。3 番目では、ある箇所にはスペーシングを入れることが
+望ましいのですが、出力全体に入れたいわけではありません。そのような状況
+でこれらのマクロが適切に動作するためには、
+.Ql \&.Xo
+と
+.Ql \&.Xc
+マクロが 3 番目の例にあるように指定されていることを確認してください。
+.Ql \&.Xo
+マクロが置かれた
+.Ql \&.It
+の引数リストに他のものが
+置かれると、スペーシングがどうなるかは予測不可能です。
+この場合、
+.Ql \&.Ns
+(空白なしマクロ) は行中の最初もしくは最後の
+マクロに指定してはいけません。現在
+.Bx
+でリリースされている 900 の
+マニュアルページ (実際のページでは約 1500 ページ) のうち 15 の
+マニュアルページでのみしか
+.Ql \&.Xo
+が使われていません。
+.Sh ページ構造のドメイン
+.Ss セクションヘッダ
+以下にリストされている、最初の 3 つのセクションヘッダマクロ
+.Ql \&.Sh
+はすべての man ページで必須のものです。
+残りのセクションヘッダはマニュアルページの作者の裁量において、
+推奨されているものです。
+.Ql \&.Sh
+マクロは 9 つまでの引数を取ることができます。
+これは解析されますが、呼び出し不可能です。
+.Bl -tag -width "\&.Sh SYNOPSIS"
+.It \&.Sh 名前
+.Sx 名前
+(NAME) マクロは必須のものです。
+これが指定されていないと、ヘッダとフッタ、それにデフォルトの
+ページレイアウトが設定されず、結果はかなり好ましくないものになるでしょう。
+.Sx NAME
+セクションは最低 3 つの項目からなります。
+最初のものは名称マクロ
+.Ql \&.Nm
+であり、man ページのサブジェクトと
+なります。2 番目のものは名称説明マクロ
+.Ql \&.Nd
+であり、
+サブジェクト名を 3 つめの項目、すなわちその名称の説明と分離します。
+説明に割り当てられるスペースは小さいものですので、
+できるだけ簡潔で分かりやすいものでなければなりません。
+.It \&.Sh 書式
+.Sx 書式
+(SYNOPSIS) セクションはその man ページのサブジェクト
+となっている項目の典型的な使用法を説明します。
+必須のマクロは
+.Ql ".Nm" ,
+.Ql ".Cd" ,
+.Ql ".Fn"
+のいずれかです。
+(他には
+.Ql ".Fo" ,
+.Ql ".Fc" ,
+.Ql ".Fd" ,
+.Ql ".Ft"
+の
+マクロも必要な場合があります。)
+関数名マクロ
+.Ql ".Fn"
+はセクション 2 と 3 のマニュアルページに
+おいて必須のもので、コマンドと一般名称マクロ
+.Ql \&.Nm
+は
+セクション 1, 5, 6, 7, 8 で必須の項目です。
+セクション 4 のマニュアルでは
+.Ql ".Nm"
+か
+.Ql ".Fd"
+、もしくは
+コンフィギュレーションデバイス使用法マクロ
+.Ql ".Cd"
+が必要です。
+その他のいくつかのマクロが下に示すような書式行を生成するために必要な
+ことがあります。
+.El
+.Pp
+.Bd -filled -offset indent
+.Nm cat
+.Op Fl benstuv
+.Op Fl
+.Ar
+.Ed
+.Pp
+以下のマクロが使われています。
+.Pp
+.Dl \&.Nm cat
+.Dl \&.Op \&Fl benstuv
+.Dl \&.Op \&Fl
+.Dl \&.Ar
+.Pp
+.Sy 注 :
+マクロ
+.Ql \&.Op ,
+.Ql \&.Fl ,
+.Ql \&.Ar
+は
+パイプの文字
+.Ql \*(Ba
+を認識し、下記のようなコマンド行
+.Pp
+.Dl ".Op Fl a | Fl b"
+.Pp
+はうまくいきません。
+.Xr troff
+は通常 \*(Ba を特別のオペレータとして
+解釈します。この他で \*(Ba が使える場合については
+.Sx 定義済みの文字列
+セクションを参照して下さい。
+.Bl -tag
+.It \&.Sh 説明
+.Sx 説明
+(DESCRIPTION) セクションでの最初のテキストは、
+ほとんどの場合ではそのコマンド、関数もしくはファイルについての短い
+段落で、オプションの構文リストとそれぞれの説明がそれに続きます。
+そのようなリストを作成するには
+リスト開始マクロ
+.Ql \&.Bl
+、リスト項目マクロ
+.Ql \&.It
+、
+リスト終了マクロ
+.Ql \&.El
+を使います
+(後述の
+.Sx リストと列
+セクションを参照)。
+.El
+.Pp
+以下の
+.Ql \&.Sh
+のセクションヘッダはマニュアルページの好ましい
+レイアウトの一部であり、一貫性を保つために適切に使われなければ
+なりません。これらは使われる順番にリストされています。
+.Bl -tag -width SYNOPSIS
+.It \&.Sh 環境変数
+.Sx 環境変数
+(ENVIRONMENT) セクションは関連する環境変数を明らかにし、
+それらの振舞いや使用方法を示します。
+.It \&.Sh 例
+使用例、実行例を作成するには様々な方法があります。
+詳細については、下の
+.Sx 例
+のセクションを参照してください。
+.It \&.Sh ファイル
+man ページのサブジェクトによって使用されるか生成されるファイルで、
+.Sx ファイル
+のセクション中でマクロ
+.Ql \&.Pa
+によってリスト
+されます。
+.It \&.Sh 関連項目
+.Sx 関連項目
+(SEE ALSO) セクションには、その man ページの題材に
+関する資料への参照と他の関連する man ページへのクロスリファレンスが
+記載されます。クロスリファレンスは
+.Ql \&.Xr
+マクロによって指定
+されます。
+.Sx 関連項目
+セクションでのクロスリファレンスは
+セクション番号順に並べ、セクション中ではカンマで区切って
+アルファベット順に並べなければなりません。以下に例を示します。
+.Pp
+.Xr ls 1 ,
+.Xr ps 1 ,
+.Xr group 5 ,
+.Xr passwd 5 .
+.Pp
+ここで参考スタイルである
+.Xr refer 1
+は適応されていません。
+.It \&.Sh 準拠
+コマンドやライブラリ関数やファイルが、
+.St -p1003.2
+や
+.St -ansiC
+のような特定の実装によるものであれば、ここで記述します。
+コマンドがどの規格にも基づいていなければ、その歴史は
+.Sx 歴史
+(HISTORY)のセクションで説明されなければなりません。
+.It \&.Sh 歴史
+特定の規格に基づいていないコマンドは、
+このセクションでその歴史の概要が説明されるべきです。
+.It \&.Sh 作者
+クレジットが必要であれば、ここで入れます。
+.It \&.Sh 診断
+コマンドからの診断はこのセクションに入れます。
+.It \&.Sh エラー
+特定のエラーハンドリング、特にライブラリ関数
+(man ページのセクション 2, 3, 9) でのエラーハンドリングは、ここで説明します。
+.Ql \&.Er
+マクロが errno を記述するために使われます。
+.It \&.Sh バグ
+あきらかな問題はここで記述します...
+.El
+.Pp
+ユーザ指定の
+.Ql \&.Sh
+セクションを追加することができます。
+たとえば、このセクションは以下のように設定されています。
+.Bd -literal -offset 14n
+\&.Sh ページ構造領域
+.Ed
+.Ss 段落と行スペース
+.Bl -tag -width 6n
+.It \&.Pp
+.Ql \&.Pp
+段落コマンドは必要な場合に行スペースを指定するために使われます。
+このマクロは、
+.Ql \&.Sh
+マクロや
+.Ql \&.Ss
+マクロの後や、
+.Ql \&.Bl
+マクロの前では必要ありません。
+(
+.Ql \&.Bl
+マクロは -compact フラグが指定されていなければ、
+縦方向の距離を宣言します)。
+.El
+.\" This worked with version one, need to redo for version three
+.\" .Pp
+.\" .Ds I
+.\" .Cw (ax+bx+c) \ is\ produced\ by\ \&
+.\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx\ (
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Va ax
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Sy \+
+.\" .Cx
+.\" .Cl Cx \&(\&
+.\" .Va ax
+.\" .Cx +
+.\" .Va by
+.\" .Cx +
+.\" .Va c )
+.\" .Cx \t
+.\" .Em is produced by
+.\" .Cx \t
+.\" .Li \&.Va by
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Sy \+
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Va c )
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx
+.\" .Cx
+.\" .Cw
+.\" .De
+.\" .Pp
+.\" This example shows the same equation in a different format.
+.\" The spaces
+.\" around the
+.\" .Li \&+
+.\" signs were forced with
+.\" .Li \e :
+.\" .Pp
+.\" .Ds I
+.\" .Cw (ax\ +\ bx\ +\ c) \ is\ produced\ by\ \&
+.\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx\ (
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Va a
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Sy x
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx \e\ +\e\ \e&
+.\" .Cx
+.\" .Cl Cx \&(\&
+.\" .Va a
+.\" .Sy x
+.\" .Cx \ +\ \&
+.\" .Va b
+.\" .Sy y
+.\" .Cx \ +\ \&
+.\" .Va c )
+.\" .Cx \t
+.\" .Em is produced by
+.\" .Cl Cx \t\t
+.\" .Li \&.Va b
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Sy y
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx \e\ +\e\ \e&
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Va c )
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx
+.\" .Cx
+.\" .Cw
+.\" .De
+.\" .Pp
+.\" The incantation below was
+.\" lifted from the
+.\" .Xr adb 1
+.\" manual page:
+.\" .Pp
+.\" .Ds I
+.\" .Cw \&[?/]m_b1_e1_f1[?/]\& is\ produced\ by
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx Op Sy ?/
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Nm m
+.\" .Cx
+.\" .Cl Cx Op Sy ?/
+.\" .Nm m
+.\" .Ad \ b1 e1 f1
+.\" .Op Sy ?/
+.\" .Cx \t
+.\" .Em is produced by
+.\" .Cx \t
+.\" .Li \&.Ar \e\ b1 e1 f1
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Op Sy ?/
+.\" .Cx
+.\" .Cl Cx \t\t
+.\" .Li \&.Cx
+.\" .Cx
+.\" .Cw
+.\" .De
+.\" .Pp
+.Ss キープ
+現在実装されているキープは単語に対するものだけです。
+それらは
+.Ql \&.Bk
+(キープ開始) マクロと
+.Ql \&.Ek
+(キープ終了)
+マクロです。
+.Ql \&.Bk
+に指定できるオプションは
+.Fl words
+のみで
+あり、これはオプションの途中で改行が入らないようにするのに便利です。
+コマンド行の引数を生成する例 (
+.Sx この名前には何が...?
+セクションを
+参照) において、キープは
+.Xr nroff
+がフラグと引数を別の行に分けない
+ように使われています。 (実際には、オプションマクロがこの目的で使われて
+いましたが、オプションが行中にわたって散らばってしまうと一般的に見栄え
+が悪くなるという理由により
+.Xr troff
+で右揃えのマージンを強制的に
+行なう (宗教的な) 決定がなされてから、オプションマクロをこの目的で
+使わないようになりました。キープマクロについてはもっと機能を向上する
+作業が必要であり、
+.Fl line
+オプションを追加していく必要があります。)
+.Ss 例やディスプレイ
+ディスプレイには 5 つのタイプがあります。
+即席 1 行インデントディスプレイ
+.Ql \&.D1
+、
+即席 1 行リテラルディスプレイ
+.Ql \&.Dl
+、それに
+ディスプレイ開始マクロ
+.Ql \&.Bd
+と
+ディスプレイ終了マクロ
+.Ql \&.Ed
+を使用する
+リテラルブロック、フィルブロックおよび凸凹ブロックです。
+.Pp
+.Bl -tag -width \&.Dlxx
+.It Li \&.D1
+(D-いち) インデントされたテキストを 1 行表示します。
+このマクロは解析されますが、呼び出し不可能です。
+.Pp
+.Dl Fl ldghfstru
+.Pp
+これは次の指定で生成されます:
+.Li \&.Dl Fl ldghfstru
+.It Li \&.Dl
+(D-エル) インデントされた
+.Em リテラル
+テキストを 1 行表示します。
+.Ql \&.Dl
+マクロの例は本ファイルの中に渡って使われています。
+これによって 1 行のテキストのインデント (表示) が可能になります。
+このマクロは解析され、他のマクロを認識することができますが、
+デフォルトのフォントは固定幅 (リテラル) にセットされています。
+しかしながら、呼び出しは不可能です。
+.Pp
+.Dl % ls -ldg /usr/local/bin
+.Pp
+これは次の指定で生成されます:
+.Li \&.Dl % ls -ldg /usr/local/bin .
+.It Li \&.Bd
+ディスプレイ開始です。
+.Ql \&.Bd
+によるディスプレイは
+.Ql \&.Ed
+マクロによって
+終了しなければなりません。
+ディスプレイはディスプレイ内およびリスト内で入れ子にすることができます。
+.Ql \&.Bd
+は以下の書式をとります。
+.Pp
+.Dl ".Bd ディスプレイタイプ [-offset オフセット値] [-compact]"
+.Pp
+ディスプレイタイプは以下の 4 つのタイプの内の 1 つでなければならず、
+インデント
+.Ql \&.Bd
+のオフセット値を指定することができます。
+.El
+.Pp
+.Bl -tag -width "file file_name  " -compact
+.It Fl ragged
+テキストのブロックをタイプされた通りに表示します。
+右マージン (と左マージン) のエッジは左に不揃いに寄せられます。
+.It Fl filled
+フィル (フォーマット) されたブロックを表示します。
+テキストのブロックがフォーマットされます
+(エッジは左非揃えではなく、フィルされます)。
+.It Fl literal
+リテラルなブロックを表示します。ソースコードや、単純にタブもしくは
+スペースで整えられたテキストで便利です。
+.It Fl file Ar ファイル名
+.Fl file
+フラグに続く名称のファイルが読み込まれ、表示されます。表示
+はリテラルなモードで行われ、タブは定幅文字 8 つ分に固定されますが、
+ファイル中のすべての
+.Xr troff/ Ns Nm \-mdoc
+コマンドは解釈されます。
+.It Fl offset Ar string
+.Fl offset
+が以下の文字列のいずれかとともに指定されていると、
+その文字列は次のテキストのブロックのインデントのレベルを示すものとして
+解釈されます。
+.Pp
+.Bl -tag -width indent-two -compact
+.It Ar left
+ブロックを現在の左マージンに揃えます。
+これは
+.Ql \&.Bd
+のデフォルトのモードです。
+.It Ar center
+ブロックを中央揃えにします。残念ながら現時点では、
+単にブロックの左側を仮想的な中央マージンに揃えるだけです。
+.It Ar indent
+デフォルトのインデント値もしくはタブの分だけインデントします。
+デフォルトのインデント値はディスプレイ
+.Ql \&.D1
+でも使われ、
+これら 2 つのタイプのディスプレイを使った場合、
+行が揃うことが保証されています。
+このインデントは通常 6n か約 2/3 インチ (定幅文字 6 つ分) です。
+.It Ar indent-two
+デフォルトのインデント値の 2 倍分インデントします。
+.It Ar right
+これはブロックをページの右端から約 2 インチ離して
+.Em 左
+揃えします。このマクロはちゃんと動作する必要があるのですが、
+.Xr troff
+ではまったくちゃんと動作してくれていません。
+.El
+.It .Ed
+ディスプレイ終了。
+.El
+.Ss フォントモード
+マニュアルページのテキストの見栄えを変更するマクロは 5 つあります。
+.Bl -tag -width \&.Emxx
+.It \&.Em
+テキストは
+.Ql \&.Em
+マクロで強調することができます。
+強調の場合、通常イタリック体のフォントが使われます。
+.Pp
+.Dl 使い方: .Em argument ... \*(Pu
+.Bl -tag -width "\&.Em vide infra ) ) ," -compact -offset 14n
+.It Li ".Em does not"
+.Em does not
+.It Li ".Em exceed 1024 ."
+.Em exceed 1024 .
+.It Li ".Em vide infra ) ) ,"
+.Em vide infra ) ),
+.El
+.Pp
+.Ql \&.Em
+マクロは解析され、呼び出し可能です。
+.Ql \&.Em
+を引数なしで呼び出すのはエラーです。
+.It \&.Li
+リテラルマクロ
+.Ql \&.Li
+は特殊文字や変数定数、その他タイプされた
+通りに表示する必要があるものに使用することができます。
+.Pp
+.Dl 使い方: .Li argument ... \*(Pu
+.Bl -tag -width "\&.Li cntrl-D ) ," -compact -offset 14n
+.It Li \&.Li \een
+.Li \en
+.It Li \&.Li M1 M2 M3\ ;
+.Li M1 M2 M3 ;
+.It Li \&.Li cntrl-D\ )\ ,
+.Li cntrl-D ) ,
+.It Li \&.Li 1024\ ...
+.Li 1024 ...
+.El
+.Pp
+.Ql \&.Li
+マクロは解析され、呼び出し可能です。
+.It \&.Sy
+シンボリック体強調マクロはシンボリックの意味でも
+伝統的な英語の使いかたにおいても、
+通常はボールドマクロとなっています。
+.Pp
+.Dl 使い方: .Sy symbol ... \*(Pu
+.Bl -tag -width "\&.Sy Important Noticex" -compact -offset 14n
+.It Li \&.Sy Important Notice
+.Sy Important Notice
+.Pp
+.Ql \&.Sy
+マクロは解析され、呼び出し可能です。
+.Ql \&.Sy
+の引数は引用符で囲むことができます。
+.El
+.It Li \&.Bf
+フォントモード開始。
+フォントモード
+.Ql \&.Bf
+は
+.Ql \&.Ef
+マクロで
+終了しなければなりません。
+フォントモードは他のフォントモードと入れ子にすることができます。
+.Ql \&.Bf
+は次の構文を取ります。
+.Pp
+.Dl ".Bf font-mode"
+.Pp
+font-mode は以下の 3 つのタイプのうちのいずれかでなければなりません。
+.Pp
+.Bl -tag -width "file file_name  " -compact
+.It Sy \&Em | Fl emphasis
+強調モード。
+.Ql \&.Em
+マクロがテキストブロック全体に使われているのと同様です。
+.It Sy \&Li | Fl literal
+リテラルモード。
+.Ql \&.Li
+マクロがテキストブロック全体に使われているのと同様です。
+.It Sy \&Sy | Fl symbolic
+シンボリックモード。
+.Ql \&.Sy
+マクロがテキストブロック全体に使われているのと同様です。
+.El
+.It .Ef
+フォントモードの終了。
+.El
+.Ss タグ付きリストと列
+リスト開始マクロ
+.Ql ".Bl"
+で開始されるリストにはいくつかのタイプが
+あります。リスト中の項目は項目マクロ
+.Ql ".It"
+で指定され、各リスト
+は
+.Ql ".El"
+マクロで終了しなければなりません。リストはリスト自身や
+ディスプレイの中で入れ子にすることができます。列はリストの中で使うこと
+ができますが、リストが列の中で使えるかどうかは検証されていません。
+.Pp
+さらに、タグの幅、リストのオフセット、コンパクトさ(項目間の空白行が
+許されているかどうか) のような、いくつかのリストの属性を指定することが
+できます。本ドキュメントのほとんどはタグ
+.Pq Fl tag
+スタイルリストで
+フォーマットされています。各種リストタイプは、調子を変えるために
+オーバーハング
+.Pq Fl ohang
+でリストしました。
+このリストのタイプは
+.Tn TeX
+のユーザに非常に人気のあるものですが、
+tag リストで構成されたページを何ページも読んだ後には幾分変に見える
+でしょう。以下のリストタイプを
+.Ql ".Bl"
+で使うことができます。
+.Pp
+.Bl -ohang -compact
+.It Fl bullet
+.It Fl item
+.It Fl enum
+これら 3 つは最も単純なリストのタイプです。
+一旦
+.Ql ".Bl"
+マクロが与えられると、リスト中の項目は
+単に
+.Ql ".It"
+マクロによってのみ構成される行で指定されます。
+例として、簡単な列挙リストのソーステキストは、このようになります。
+.Bd -literal -offset indent-two
+\&.Bl -enum -compact
+\&.It
+\&ひとつめはここ。
+\&.It
+\&そしてふたつめ。
+\&.It
+\&最後にみっつめはここ。
+\&.El
+.Ed
+.El
+.Pp
+これらの結果は以下のようになります。
+.Pp
+.Bl -enum -offset indent-two -compact
+.It 
+ひとつめはここ。
+.It 
+そしてふたつめ。
+.It 
+最後にみっつめはここ。
+.El
+.Pp
+簡単な bullet リスト構成の例を示します。
+.Bd -literal -offset indent-two
+\&.Bl -bullet -compact
+\&.It
+\&ひとつめの bullet。
+\&.It
+\&これはふたつめの bullet。
+\&.El
+.Ed
+.Pp
+これは以下のような結果になります。
+.Bl -bullet -offset indent-two -compact
+.It 
+ひとつめの bullet。
+.It 
+これはふたつめの bullet。
+.El
+.Pp
+.Bl -ohang -compact
+.It Fl tag
+.It Fl diag
+.It Fl hang
+.It Fl ohang
+.It Fl inset
+これらのリストタイプは
+.Ql \&.It
+マクロによって指定されている引数
+からラベルを生成します。
+そして、
+.Em inset
+では、次のテキストへそのラベルを挿入します。
+.Em hang
+では、次のテキストをラベルの位置へインデントします。
+.Em ohang
+(オーバーハング) では、次のテキストをラベルの位置に
+ぶら下げ、インデントしません。
+.Em tag
+では、タグつきテキストの形式にします。ちなみに上のリストは
+.Ql \&Fl ohang
+リストタイプで構成されています。
+.Ql \&.It
+マクロは inset, hang, tag のリストタイプでのみ解析され、
+呼び出し不可能です。以下に inset ラベルの例を示します。
+.El
+.Bl -inset -offset indent
+.It Em Tag
+tag リスト (tag 段落とも呼ばれる) は、
+Berkely マニュアルで使われているリストのうち最も一般的なタイプです。
+.It Em Diag
+診断リストはセクション 4 の診断リストを生成するもので、
+呼び出し可能なマクロが無視されることを除き、inset リストと似ています。
+.It Em Hang
+hang ラベルは好みの問題です。
+.It Em Ohang
+ohang ラベルはスペースに制限がある時に便利です。
+.It Em Inset
+inset ラベルは段落のブロックを制御するのに便利で、
+.Nm \-mdoc
+マニュアルを他の形式に変換する時に役立ちます。
+.El
+.Pp
+上の例を生成したソーステキストはこうなっています。
+.Bd -literal -offset indent
+\&.Bl -inset -offset indent
+\&.It Em Tag
+\&tag リスト (tag 段落とも呼ばれる) は、
+\&Berkely マニュアルで使われているリストのうち最も一般的なタイプです。
+\&.It Em Diag
+\&診断リストはセクション 4 の診断リストを生成するもので、
+\&呼び出し可能なマクロが無視されることを除き、inset リストと似ています。
+\&.It Em Hang
+\&hang ラベルは好みの問題です。
+\&.It Em Ohang
+\&ohang ラベルはスペースに制限がある時に便利です。
+\&.It Em Inset
+\&inset ラベルは段落のブロックを制御するのに便利で、
+\&.Nm \-mdoc
+\&マニュアルを他の形式に変換する時に役立ちます。
+\&.El
+.Ed
+.Pp
+以下は 2 つの項目を持つ hang リストです。
+.Bl -hang -offset indent
+.It Em Hanged
+ラベルがラベルの幅より小さいときには、
+ラベルは tag リストと同じようになります。
+.It Em 長い hang リストラベル
+は、tag 段落のラベルとは異なり、
+段落の中に埋め込まれます。
+.El
+.Pp
+これを生成している元のテキストは以下の通りです。
+.Bd -literal -offset indent
+\&.Bl -hang -offset indent
+\&.It Em Hanged
+\&ラベルがラベルの幅より小さいときには、
+\&ラベルは tag リストと同じようになります。
+\&.It Em 長い hang リストラベル
+\&は、tag 段落のラベルとは異なり、
+\&段落の中に埋め込まれます。
+\&.El
+.Ed
+.Pp
+タグ幅を制御するためのオプションの幅指定を使ったタグつきリストは
+以下の通りです。
+.Pp
+.Bl -tag -width PAGEIN -compact -offset indent
+.It SL
+プロセスが sleep している時間 (ブロックされた秒数)
+.It PAGEIN
+そのプロセスによるコアにロードされていないページへの参照による
+ディスク
+.Tn I/O
+の回数
+.It UID
+プロセスの所有者の数字表記によるユーザID
+.It PPID
+親プロセスの数字表記によるID、プロセスの優先度
+(割り込み不可のウエイトであるときには非正値)
+.El
+.Pp
+The raw text:
+.Bd -literal -offset indent
+\&.Bl -tag -width "PAGEIN" -compact -offset indent
+\&.It SL
+\&プロセスが sleep している時間 (ブロックされた秒数)
+\&.It PAGEIN
+\&そのプロセスによるコアにロードされていないページへの参照によるディスク
+\&.Tn I/O
+\&の回数
+\&.It UID
+\&プロセスの所有者の数字表記によるユーザID
+\&.It PPID
+\&親プロセスの数字表記によるID、プロセスの優先度
+\&(割り込み不可のウエイトであるときには非正値)
+\&.El
+.Ed
+.Pp
+幅指定として以下のものを使うことができます。
+.Bl -tag -width Ar -offset indent
+.It Fl width Ar \&Fl
+そのフラグでのデフォルトの幅を指定します。すべての呼び出し可能なマクロ
+は各々デフォルトの幅の値を持っています。現在、
+.Ql \&.Fl
+の値は定幅
+文字 10 個分、もしくは約 5/6 インチとなっています。
+.It Fl width Ar 24n
+定幅文字 24 個分の幅、もしくは約 2 インチの幅をセットします。
+これが正しく動作するには
+.Ql n
+が必ず必要となります。
+.It Fl width Ar ENAMETOOLONG
+指定された文字列の固定長に幅をセットします。
+.It Fl width Ar "\*qint mkfifo\*q"
+これも、指定された文字列の固定長に幅をセットします。
+.El
+.Pp
+タグつきリストタイプで幅が指定されていないと、
+.Ql \&.It
+が最初に
+起動された時に適した幅を決定することが試みられます。
+.Ql ".It"
+の
+最初の引数が呼び出し可能なマクロであれば、そのマクロのデフォルトの幅が
+そのマクロ名が幅として指定されたように使用されます。しかしながら、その
+リスト中に他の項目が別の呼び出し可能なマクロ名で与えられていると、
+新しく入れ子となったリストとして処理されます。
+.Sh 定義済みの文字列
+以下の文字列はあらかじめ定義されているものであり、troff の文字列解釈
+シーケンス
+.Ql \&\e*(xx
+もしくは
+.Ql \&\e*x
+を前に伴って使われます。
+ここで、
+.Em xx
+もしくは
+.Em x
+は定義されている文字列の名称です。
+解釈シーケンスはテキストのどこでも使うことができます。
+.Pp
+.Bl -column "String " "Nroff " "Troff " -offset indent
+.It Sy "文字列      Nroff   Troff"
+.It Li <= Ta \&<\&= Ta \*(<=
+.It Li >= Ta \&>\&= Ta \*(>=
+.It Li Rq Ta '' Ta \*(Rq
+.It Li Lq Ta `` Ta \*(Lq
+.It Li ua Ta ^ Ta \*(ua
+.It Li aa Ta ' Ta \*(aa
+.It Li ga Ta \` Ta \*(ga
+.\" .It Li "sL" Ta ` Ta \*(sL
+.\" .It Li "sR" Ta ' Ta \*(sR
+.It Li q Ta \(dq Ta \*q
+.It Li Pi Ta pi Ta \*(Pi
+.It Li Ne Ta != Ta \*(Ne
+.It Li Le Ta <= Ta \*(Le
+.It Li Ge Ta >= Ta \*(Ge
+.It Li Lt Ta < Ta \*(Gt
+.It Li Gt Ta > Ta \*(Lt
+.It Li Pm Ta +- Ta \*(Pm
+.It Li If Ta infinity Ta \*(If
+.It Li Na Ta \fINaN\fP Ta \*(Na
+.It Li Ba Ta \&| Ta \*(Ba
+.El
+.Pp
+.Sy 注 :
+.Ql q
+の名称がつけられている文字列は、
+1 文字であるため
+.Ql \e*q
+と書かなければなりません。
+.Sh 診断
+.Nm \-mdoc
+は限られたデバッグ機能しか持っていませんが、
+引数名と内部レジスタやマクロ名との衝突のような
+潜在的なエラーを検出するのに役立ちます。 (A って何?)
+レジスタは
+.Xr troff
+での演算用記憶クラスであり、
+1 文字か 2 文字の名称がついています。
+.Xr troff
+と
+.Xr ditroff
+での
+.Nm \-mdoc
+のすべての内部レジスタは
+.Ql \&Ar
+のように2 文字からなる <大文字><小文字> の形式か、
+.Ql \&aR
+のように <小文字><大文字> の形式か、
+.Ql \&C\&1
+のように <大文字もしくは小文字><数字>
+の形式を取ります。
+さらに混乱することに、
+.Xr troff
+はそれ自身の内部レジスタを持ち、
+それらすべては小文字 2 文字か、ドットに文字もしくはメタ文字が続く形式を取ります。
+紹介例の 1 つに、エスケープシーケンス
+.Ql \e&
+でマクロ名を
+解釈させない方法がありました。これは内部レジスタ名にも有効です。
+.Pp
+.\" Every callable macro name has a corresponding register
+.\" of the same name (<upper_case><lower_case>).
+.\" There are also specific registers which have
+.\" been used for stacks and arrays and are listed in the
+.\" .Sx Appendix .
+.\" .Bd -ragged -offset 4n
+.\" [A-Z][a-z] registers corresponding to macro names (example ``Ar'')
+.\" [a-z][A-Z] registers corresponding to macro names (example ``aR'')
+.\" C[0-9]             argument types (example C1)
+.\" O[0-9]             offset stack (displays)
+.\" h[0-9]             horizontal spacing stack (lists)
+.\" o[0-9]             offset (stack) (lists)
+.\" t[0-9]             tag stack (lists)
+.\" v[0-9]             vertical spacing stack (lists)
+.\" w[0-9]             width tag/label stack
+.\" .Ed
+.\" .Pp
+エスケープされていないレジスタ名が引数リストに指定されると、
+予期できない振舞いとなります。
+一般的には、テキストのかなり大きな部分が出力されるべきところに
+出力されないとか、リストのタグのような小さな文字列が消えてしまうとか、
+引数リストの中の引数のタイプが間違って解釈されるとかいうことが、起こり得ます。
+きっとあなたのお母さんは、あなたにこんな面倒なことを覚えるようにとは
+考えていないでしょう。
+そこで、与えられた引数が有効か無効かを判断する方法があります。
+
+そんなときには、
+.Ql \&.Db
+(デバッグ) マクロによってほとんどのマクロ
+の引数リストがどう解釈されるかを表示することができます。
+.Ql \&.Pp
+(段落) マクロのようなマクロはデバッグ情報を含んでいません。呼び出し可能
+なマクロはすべてデバッグ情報を含んでおり、疑いがある場合はいつでも
+.Ql \&.Db
+マクロをオンにすることを強くお勧めします。
+.Pp
+.Dl 使い方: \&.Db [on | off]
+.Pp
+以下の例では、問題が故意に発生するようにされた部分の上と下で
+デバッグマクロが指定されています
+(フラグ引数
+.Ql \&aC
+は正しく動作するためには
+.Ql \e&aC
+でなければなりません)。
+.Bd -literal -offset indent
+\&.Db on
+\&.Op Fl aC Ar file )
+\&.Db off
+.Ed
+.Pp
+この結果の出力は以下の通りです。
+.Bd -literal -offset indent
+DEBUGGING ON
+DEBUG(argv) MACRO: `.Op'  Line #: 2
+       Argc: 1  Argv: `Fl'  Length: 2
+       Space: `'  Class: Executable
+       Argc: 2  Argv: `aC'  Length: 2
+       Space: `'  Class: Executable
+       Argc: 3  Argv: `Ar'  Length: 2
+       Space: `'  Class: Executable
+       Argc: 4  Argv: `file'  Length: 4
+       Space: ` '  Class: String
+       Argc: 5  Argv: `)'  Length: 1
+       Space: ` '  Class: Closing Punctuation or suffix
+       MACRO REQUEST: .Op Fl aC Ar file )
+DEBUGGING OFF
+.Ed
+.Pp
+この情報の最初の行では呼び出されているマクロの名称が出力されています。
+ここでは
+.Ql \&.Op
+とそれが現れた行番号が表示されています。
+複数のファイルが処理されている場合
+(特にテキストが他のファイルからインクルードされている場合)、
+行番号は正しくないでしょう。
+ファイルが 1 つだけの場合には正しい行番号が出力されます。
+2 番目の行では引数の個数と引数
+.Pq Ql \&Fl
+とその長さが
+出力されています。引数の長さが 2 文字であれば、
+その引数が実行可能
+(ゼロでない値を含むすべてのレジスタは実行可能なように見えます)
+かどうかテストされます。
+3 番目の行ではそのクラスで指定されているスペースとクラスタイプが
+出力されています。
+ここでの問題は引数 aC が実行不可能でなければならないことです。
+クラスの 4 つのタイプは文字列、実行可能、閉じる句読点、開く句読点です。
+最後の行では引数リスト全体が読み込まれた通りに表示されています。
+次の例では問題の原因となっている
+.Ql \&aC
+がエスケープされています。
+.Bd -literal -offset indent
+\&.Db on
+\&.Em An escaped \e&aC
+\&.Db off
+.Ed
+.Bd -literal -offset indent
+DEBUGGING ON
+DEBUG(fargv) MACRO: `.Em'  Line #: 2
+       Argc: 1  Argv: `An'  Length: 2
+       Space: ` '  Class: String
+       Argc: 2  Argv: `escaped'  Length: 7
+       Space: ` '  Class: String
+       Argc: 3  Argv: `aC'  Length: 2
+       Space: ` '  Class: String
+       MACRO REQUEST: .Em An escaped &aC
+DEBUGGING OFF
+.Ed
+.Pp
+.Ql \e&
+シーケンスは長さが 0 となるために
+引数
+.Ql \e&aC
+は先の例と同様に長さ 2 と表示されています。
+しかし、
+.Ql \e&aC
+という名称のレジスタが見つからず、
+タイプは文字列と判断されています。
+.Pp
+この他の診断は使用方法を報告するものであり、
+それ自身が説明を含んでいます。
+.Sh GROFF, TROFF, NROFF
+.Nm \-mdoc
+パッケージは
+.Xr groff
+との互換モードは
+必要ではありません。
+.Pp
+このパッケージでは改ページと、
+.Xr nroff
+で改ページ時に通常挿入
+されるヘッダとフッタは禁止されており、マニュアルをオンラインで効率良く
+見ることができるようになっています。現在の所、
+.Fl T Ns Ar ascii
+が
+指定された
+.Xr groff
+はページ内容の無いファイル末の残りの部分まで
+出力します。改ページを禁止することによって
+.Xr nroff
+による出力は
+ハードコピーには適さないものとなっています。サイト依存のスタイル
+ファイル
+.Pa /usr/src/share/tmac/doc-nroff
+において 0 にセットする
+ことができる
+.Ql \&cR
+の名称を持つレジスタが古いスタイルの振る舞い
+を実現するために用意されています。
+.Sh ファイル
+.Bl -tag -width /usr/share/man0/template.doc -compact
+.It Pa /usr/share/tmac/doc.tmac
+マニュアルマクロパッケージ
+.It Pa /usr/share/misc/mdoc.template
+man ページを書くためのテンプレート
+.It Pa /usr/share/examples/mdoc/*
+man ページのいくつかの例
+.El
+.Sh バグ
+フラグ引き数のダッシュが意図せずハイフンにより折り返しになるバグは
+まだ修正されておらず、
+.Sx DESCRIPTION
+セクションでときどき
+意図しない動作 (ハイフンでの改行) が起こることがある。
+.Pp
+あらかじめ定義されている文字列は文書において宣言されていません。
+.Pp
+セクション 3f はヘッダルーチンには追加されていません。
+.Pp
+.Ql \&.Nm
+フォントは
+.Sx 名前
+セクションにおいて
+変更されるべきです。
+.Pp
+.Ql \&.Fn
+は分割されるのを防止するために、行の長さが短すぎないか
+どうかをチェックする必要があります。ときどき、最後の括弧が分割される
+ことがあり、行がフィルモードであるときには全くおかしな結果になること
+があります。
+.Pp
+nroff 使用時に、(最初のヘッダとフッタ以外の) 改ページ時のヘッダと
+フッタの挿入を行わないようにするのに使用される命令によって、
+ときどき見るに耐えない部分的な行詰め (や空行) がページの末尾に
+発生する場合がある。
+.Pp
+.\" Note what happens if the parameter list overlaps a newline
+.\" boundary.
+.\" to make sure a line boundary is crossed:
+.\" .Bd -literal
+.\" \&.Fn struct\e\ dictionarytable\e\ *dictionarylookup struct\e\ dictionarytable\e\ *tab[]
+.\" .Ed
+.\" .Pp
+.\" produces, nudge nudge,
+.\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] ,
+.\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] ,
+.\" nudge
+.\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] .
+.\" .Pp
+.\" If double quotes are used, for example:
+.\" .Bd -literal
+.\" \&.Fn \*qstruct dictionarytable *dictionarylookup\*q \*qchar *h\*q \*qstruct dictionarytable *tab[]\*q
+.\" .Ed
+.\" .Pp
+.\" produces, nudge nudge,
+.\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" ,
+.\" nudge
+.\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" ,
+.\" nudge
+.\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" .
+.\" .Pp
+.\" Not a pretty sight...
+.\" In a paragraph, a long parameter containing unpaddable spaces as
+.\" in the former example will cause
+.\" .Xr troff
+.\" to break the line and spread
+.\" the remaining words out.
+.\" The latter example will adjust nicely to
+.\" justified margins, but may break in between an argument and its
+.\" declaration.
+.\" In
+.\" .Xr nroff
+.\" the right margin adjustment is normally ragged and the problem is
+.\" not as severe.
+リストマクロとディスプレイマクロはキープを行いませんが、
+これはキープを行うべきです。
+.Sh 関連項目
+.Xr man 1 ,
+.Xr troff 1 ,
+.Xr groff_mdoc 7 ,
+.Xr mdoc 7
+.Sh この文書について
+この man ページは Linux
+.Em man-pages
+プロジェクトのリリース 3.51 の
+一部である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man-pages/ に書かれている。
index 730d399..14fb0b4 100644 (file)
@@ -53,10 +53,12 @@ descriptor)\fP (\fImqd_t\fP)  を返す。これ以降のコールでは、オ
 これらの記述子は、親プロセスの対応する記述子と同じオープンメッセージキュー 記述を参照している。親プロセスと子プロセスの対応する記述子は、フラグ
 (\fImq_flags\fP)  を共有する。なぜなら、フラグはオープンメッセージキュー記述に 関連付けられているからである。
 
-各メッセージにはそれぞれ \fI優先度 (priority)\fP があり、メッセージの受信プロセスへの配送は常に 優先度の高いメッセージから順に行われる。
-メッセージの優先度は 0 (低優先) から \fIsysconf(_SC_MQ_PRIO_MAX)\ \-\ 1\fP (高優先) の値を持つ。 Linux
-では、 \fIsysconf(_SC_MQ_PRIO_MAX)\fP は 32768 を返すが、 POSIX.1\-2001 で要求されているのは 0 から
-31 までの優先度を 実装することだけであり、実装によってはこの範囲の優先度しか 対応していない。
+Each message has an associated \fIpriority\fP, and messages are always
+delivered to the receiving process highest priority first.  Message
+priorities range from 0 (low) to \fIsysconf(_SC_MQ_PRIO_MAX)\ \-\ 1\fP (high).
+On Linux, \fIsysconf(_SC_MQ_PRIO_MAX)\fP returns 32768, but POSIX.1\-2001
+requires only that an implementation support at least priorities in the
+range 0 to 31; some implementations provide only this range.
 .PP
 この節の残りでは、POSIX メッセージキューの Linux の実装の詳細 について説明する。
 .SS ライブラリインタフェースとシステムコール
@@ -173,6 +175,6 @@ System V メッセージキュー (\fBmsgget\fP(2), \fBmsgsnd\fP(2), \fBmsgrcv\f
 \fBmq_close\fP(3), \fBmq_getattr\fP(3), \fBmq_notify\fP(3), \fBmq_open\fP(3),
 \fBmq_receive\fP(3), \fBmq_send\fP(3), \fBmq_unlink\fP(3), \fBepoll\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 35f2898..7d87458 100644 (file)
@@ -249,6 +249,6 @@ glibc 2.1 では \fI<net/if.h>\fP に \fIifr_newname\fP マクロがない。
 .SH 関連項目
 \fBproc\fP(5), \fBcapabilities\fP(7), \fBip\fP(7), \fBrtnetlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man7/netlink.7 b/manual/LDP_man-pages/draft/man7/netlink.7
new file mode 100644 (file)
index 0000000..7cb0040
--- /dev/null
@@ -0,0 +1,357 @@
+.\" t
+.\" This man page is Copyright (c) 1998 by Andi Kleen.
+.\"
+.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
+.\" Subject to the GPL.
+.\" %%%LICENSE_END
+.\"
+.\" Based on the original comments from Alexey Kuznetsov
+.\" Modified 2005-12-27 by Hasso Tepper <hasso@estpak.ee>
+.\" $Id: netlink.7,v 1.8 2000/06/22 13:23:00 ak Exp $
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH NETLINK 7 2013\-03\-15 Linux "Linux Programmer's Manual"
+.SH 名前
+netlink \- カーネルとユーザー空間の通信 (AF_NETLINK)
+.SH 書式
+.nf
+\fB#include <asm/types.h>\fP
+\fB#include <sys/socket.h>\fP
+\fB#include <linux/netlink.h>\fP
+
+\fBnetlink_socket = socket(AF_NETLINK, \fP\fIsocket_type\fP\fB, \fP\fInetlink_family\fP\fB);\fP
+.fi
+.SH 説明
+netlink はカーネルモジュールとユーザー空間のプロセス間で 情報をやりとりするために用いられる。 netlink は、ユーザープロセスに対しては
+標準的なソケットベースのインターフェースを、 カーネルモジュールにはカーネルの内部 API を提供する。 カーネル内部のインターフェースについてはこの
+man ページでは記述しない。 また、netlink キャラクタデバイスを用いた obsolete な netlink
+インターフェースもあるが、これもこの文書では解説しない。 これは過去互換性のためだけに用意されている。
+
+netlink はデータグラム指向のサービスである。 \fIsocket_type\fP には \fBSOCK_RAW\fP と \fBSOCK_DGRAM\fP
+の両方とも指定可能である。 しかし netlink プロトコルはデータグラムと raw ソケットの区別をしない。
+
+\fInetlink_family\fP は、通信するカーネルモジュールや netlink グループの選択に用いる。 現在割り当てられている netlink
+ファミリーは以下の通り。
+.TP 
+\fBNETLINK_ROUTE\fP
+ルーティングとリンクの更新を受信する。 (IPv4 と IPv6 両方の) ルーティングテーブル・ IP アドレス・リンクパラメータ・近傍設定
+(neighbor setup)・ キューイングルール (queueing dicipline)・トラフィッククラス・
+パケットのクラス分類の修正に用いることができるだろう (\fBrtnetlink\fP(7)  を見よ)。
+.TP 
+\fBNETLINK_W1\fP
+単線 (1\-wire) のサブシステムからのメッセージ。
+.TP 
+\fBNETLINK_USERSOCK\fP
+ユーザーモードソケットプロトコルのために予約されている。
+.TP 
+\fBNETLINK_FIREWALL\fP
+IPv4 パケットを netfilter からユーザー空間へ転送する。 \fIip_queue\fP カーネルモジュールで使用される。
+.TP 
+\fBNETLINK_INET_DIAG\fP
+.\" FIXME More details on NETLINK_INET_DIAG needed.
+INET ソケットをモニタリングする。
+.TP 
+\fBNETLINK_NFLOG\fP
+Netfilter/iptables ULOG.
+.TP 
+\fBNETLINK_XFRM\fP
+.\" FIXME More details on NETLINK_XFRM needed.
+IPsec.
+.TP 
+\fBNETLINK_SELINUX\fP
+SELinux のイベント通知。
+.TP 
+\fBNETLINK_ISCSI\fP
+.\" FIXME More details on NETLINK_ISCSI needed.
+Open\-iSCSI.
+.TP 
+\fBNETLINK_AUDIT\fP
+.\" FIXME More details on NETLINK_AUDIT needed.
+監査 (audit) を行う。
+.TP 
+\fBNETLINK_FIB_LOOKUP\fP
+.\" FIXME More details on NETLINK_FIB_LOOKUP needed.
+ユーザー空間から FIB ルックアップにアクセスする。
+.TP 
+\fBNETLINK_CONNECTOR\fP
+カーネルコネクタ。より詳しい情報は Linux カーネルソースの \fIDocumentation/connector/*\fP を参照すること。
+.TP 
+\fBNETLINK_NETFILTER\fP
+.\" FIXME More details on NETLINK_NETFILTER needed.
+netfilter サブシステム。
+.TP 
+\fBNETLINK_IP6_FW\fP
+IPv6 パケットを netfilter からユーザー空間へ転送する。 \fIip6_queue\fP カーネルモジュールで使用される。
+.TP 
+\fBNETLINK_DNRTMSG\fP
+DECnet ルーティングメッセージ。
+.TP 
+\fBNETLINK_KOBJECT_UEVENT\fP
+.\" FIXME More details on NETLINK_KOBJECT_UEVENT needed.
+ユーザー空間へのカーネルメッセージ
+.TP 
+\fBNETLINK_GENERIC\fP
+netlink を簡単に使用するための一般的な netlink ファミリー。
+.PP
+netlink メッセージはバイトストリームからなり、 一つ以上の \fInlmsghdr\fP ヘッダと、それに対応するペイロード (payload)
+が含まれる。 バイトストリームには、標準の \fBNLMSG_*\fP マクロによってのみアクセスすべきである。 より詳しい情報は \fBnetlink\fP(3)
+を見よ。
+
+マルチパートメッセージ (一つ以上の \fInlmsghdr\fP ヘッダと、それに対応するペイロードが 一つバイトストリームに含まれる) においては、
+先頭のヘッダ・後続のヘッダには \fBNLM_F_MULTI\fP フラグがセットされる。ただし最後のヘッダだけは例外で、 \fBNLMSG_DONE\fP
+タイプとなる。
+
+それぞれの \fBnlmsghdr\fP の後にはペイロードが続く。
+
+.in +4n
+.nf
+struct nlmsghdr {
+    __u32 nlmsg_len;    /* ヘッダを含むメッセージの長さ */
+    __u16 nlmsg_type;   /* メッセージの内容のタイプ */
+    __u16 nlmsg_flags;  /* 追加フラグ */
+    __u32 nlmsg_seq;    /* シーケンス番号 */
+    __u32 nlmsg_pid;    /* 送信者のポート ID */
+};
+.fi
+.in
+
+\fInlmsg_type\fP は標準のメッセージタイプのどれか一つである: \fBNLMSG_NOOP\fP メッセージは無視される。
+\fBNLMSG_ERROR\fP メッセージはエラーを示し、ペイロードには \fInlmsgerr\fP 構造体が入る。 \fBNLMSG_DONE\fP
+メッセージはマルチパートメッセージの終了を伝える。
+
+.in +4n
+.nf
+struct nlmsgerr {
+    int error;        /* 負または 0 の errno は応答を表す */
+    struct nlmsghdr msg;  /* エラーを起こしたメッセージのヘッダ */
+};
+.fi
+.in
+
+ある netlink ファミリーで指定できるメッセージタイプは、 通常もっと多い。これらに関しては適切な man ページを見てほしい。 たとえば
+\fBNETLINK_ROUTE\fP に関しては \fBrtnetlink\fP(7)  に書いてある。
+.TS
+tab(:);
+l s
+lB l.
+\fInlmsg_flags\fP の標準フラグビット
+_
+NLM_F_REQUEST:要求メッセージ全てでセットされなければならない。
+NLM_F_MULTI:T{
+このメッセージはマルチパートメッセージの一部である。
+マルチパートメッセージは \fBNLMSG_DONE\fP で終端する。
+T}
+NLM_F_ACK:成功した場合の応答を要求する。
+NLM_F_ECHO:この要求をエコーする。
+.TE
+.ad
+.sp 1
+.\" No right adjustment for text blocks in tables
+.na
+.TS
+tab(:);
+l s
+lB l.
+GET 要求における追加フラグビット
+_
+NLM_F_ROOT:単一のエントリではなくテーブル全体を返す。
+NLM_F_MATCH:T{
+メッセージの内容で渡された基準 (criteria) にマッチする全てのエントリを返す。
+まだ実装されていない。
+T}
+.\" FIXME NLM_F_ATOMIC is not used any more?
+NLM_F_ATOMIC:テーブルのアトミックなスナップショットを返す。
+NLM_F_DUMP:T{
+便利なマクロ。(NLM_F_ROOT|NLM_F_MATCH) と同じ。
+T}
+.TE
+.ad
+.sp 1
+\fBNLM_F_ATOMIC\fP を使う場合は、 \fBCAP_NET_ADMIN\fP 権限を持つか実効ユーザー ID が 0
+でなければならない点に注意すること。
+.na
+.TS
+tab(:);
+l s
+lB l.
+NEW 要求における追加フラグビット
+_
+NLM_F_REPLACE:現存のオブジェクトを置換する。
+NLM_F_EXCL:すでにオブジェクトがあったら置換しない。
+NLM_F_CREATE:まだオブジェクトがなければ作成する。
+NLM_F_APPEND:オブジェクトリストの最後に追加する。
+.TE
+.ad
+.sp 1
+\fInlmsg_seq\fP と \fInlmsg_pid\fP はメッセージの追跡に使用される。 \fInlmsg_pid\fP はメッセージの送信元を表す。
+メッセージが netlink ソケットで送信されている場合、 \fInlmsg_pid\fP とプロセスの PID は 1:1
+の関係ではない点に注意すること。 より詳しい情報は、 「\fBアドレスのフォーマット\fP」 のセクションを参照すること。
+
+.\" FIXME Explain more about nlmsg_seq and nlmsg_pid.
+\fInlmsg_seq\fP と \fInlmsg_pid\fP は netlink のコアには見えない (opaque)。
+
+netlink は信頼性の高いプロトコルではない。 netlink はメッセージを行き先に届けるために最善を尽くすが、
+メモリが足りなかったりエラーが起こったりすると メッセージを取りこぼすこともある。 信頼性の高い転送を行いたいときは、
+送信者は受信者に応答を要求することもできる。 これには \fBNLM_F_ACK\fP フラグをセットする。 応答は \fBNLMSG_ERROR\fP
+パケットのエラーフィールドを 0 にしたものになる。 アプリケーションは自分自身のメッセージを受けたときには、 応答を生成しなければならない。
+カーネルは失敗したパケットに対して、 \fBNLMSG_ERROR\fP メッセージを送ろうとする。 ユーザープロセスはこの慣習にも従う必要がある。
+
+しかし、どのような場合でもカーネルからユーザーへの 信頼性の高い転送は不可能である。 ソケットバッファが満杯の場合、カーネルは netlink
+メッセージを送信できない。 メッセージは取りこぼされて、カーネルとユーザー空間プロセスは、 カーネルの状態についての同じビューを持つことができなくなる。
+これが起こったこと (\fBrecvmsg\fP(2)  によって \fBENOBUFS\fP エラーが返される) を検知して再び同期させるのは、
+アプリケーションの責任である。
+.SS アドレスのフォーマット
+\fIsockaddr_nl\fP 構造体はユーザー空間やカーネル空間で netlink クライアントを記述する。 \fIsockaddr_nl\fP
+はユニキャスト (単一の接続先にだけ送られる) にもできるし、 netlink マルチキャストグループ (\fInl_groups\fP が 0 でない場合)
+にも送ることができる。
+
+.in +4n
+.nf
+struct sockaddr_nl {
+    sa_family_t     nl_family;  /* AF_NETLINK */
+    unsigned short  nl_pad;     /* 0 である */
+    pid_t           nl_pid;     /* ポート ID */
+    __u32           nl_groups;  /* マルチキャストグループマスク */
+};
+.fi
+.in
+
+\fInl_pid\fP は netlink ソケットのユニキャストアドレスである。 行き先がカーネルの場合は、常に 0 である。
+ユーザー空間プロセスの場合、通常は \fInl_pid\fP は行き先のソケットを所有しているプロセスの PID である。 ただし、 \fInl_pid\fP
+はプロセスではなく netlink ソケットを同定する。 プロセスが複数の netlink ソケットを所有する場合、 \fInl_pid\fP
+は最大でも一つのソケットのプロセス ID としか等しくならない。 \fInl_pid\fP を netlink ソケットに割り当てる方法は 2 つある。
+アプリケーションが \fBbind\fP(2)  を呼ぶ前に \fInl_pid\fP を設定する場合、 \fInl_pid\fP
+が一意であることを確認するのはアプリケーションの責任となる。 アプリケーションが \fInl_pid\fP を 0
+に設定した場合、カーネルがこの値を割り当てる。 カーネルはプロセスが最初にオープンした netlink ソケットに対してプロセス ID を割り当て、
+それ以降にプロセスが作成した全ての netlink ソケットにも一意な \fInl_pid\fP を割り当てる。
+
+.\" commit d629b836d151d43332492651dd841d32e57ebe3b
+\fInl_groups\fP is a bit mask with every bit representing a netlink group
+number.  Each netlink family has a set of 32 multicast groups.  When
+\fBbind\fP(2)  is called on the socket, the \fInl_groups\fP field in the
+\fIsockaddr_nl\fP should be set to a bit mask of the groups which it wishes to
+listen to.  The default value for this field is zero which means that no
+multicasts will be received.  A socket may multicast messages to any of the
+multicast groups by setting \fInl_groups\fP to a bit mask of the groups it
+wishes to send to when it calls \fBsendmsg\fP(2)  or does a \fBconnect\fP(2).
+Only processes with an effective UID of 0 or the \fBCAP_NET_ADMIN\fP capability
+may send or listen to a netlink multicast group.  Since Linux 2.6.13,
+messages can't be broadcast to multiple groups.  Any replies to a message
+received for a multicast group should be sent back to the sending PID and
+the multicast group.  Some Linux kernel subsystems may additionally allow
+other users to send and/or receive messages.  As at Linux 3.0, the
+\fBNETLINK_KOBJECT_UEVENT\fP, \fBNETLINK_GENERIC\fP, \fBNETLINK_ROUTE\fP, and
+\fBNETLINK_SELINUX\fP groups allow other users to receive messages.  No groups
+allow other users to send messages.
+.SH バージョン
+netlink へのソケットインターフェースは Linux 2.2 の新機能である。
+
+Linux 2.0 は、もっと原始的なデバイスベースの netlink インターフェースを サポートしていた (これも互換性のために今でも使用できる)。
+古いインターフェースに関してはここでは記述しない。
+
+NETLINK_SELINUX は Linux 2.6.4 で登場した。
+
+NETLINK_AUDIT は Linux 2.6.6 で登場した。
+
+NETLINK_KOBJECT_UEVENT は Linux 2.6.10 で登場した。
+
+NETLINK_W1, NETLINK_FIB_LOOKUP は Linux 2.6.13 で登場した。
+
+NETLINK_INET_DIAG, NETLINK_CONNECTOR, NETLINK_NETFILTER は Linux 2.6.14
+で登場した。
+
+NETLINK_GENERIC, NETLINK_ISCSI は Linux 2.6.15 で登場した。
+.SH 注意
+低レベルのカーネルインターフェースより、 \fIlibnetlink\fP または \fIlibnl\fP を通して netlink
+を利用するほうが良いことが多い。
+.SH バグ
+この man ページは完成していない。
+.SH 例
+以下の例では、 \fBRTMGRP_LINK\fP (ネットワークインターフェースの create/delete/up/down イベント) と
+\fBRTMGRP_IPV4_IFADDR\fP (IPv4 アドレスの add/delete イベント) マルチキャストグループを listen する
+\fBNETLINK_ROUTE\fP netlink を作成している。
+
+.in +4n
+.nf
+struct sockaddr_nl sa;
+
+memset(&sa, 0, sizeof(sa));
+sa.nl_family = AF_NETLINK;
+sa.nl_groups = RTMGRP_LINK | RTMGRP_IPV4_IFADDR;
+
+fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
+bind(fd, (struct sockaddr *) &sa, sizeof(sa));
+.fi
+.in
+
+次の例では、netlink メッセージをカーネル (pid 0) に送る方法を示している。 応答を追跡する際の信頼性を高めるために、アプリケーションが
+メッセージのシーケンス番号を正しく処理しなければならない点に注意すること。
+
+.in +4n
+.nf
+struct nlmsghdr *nh;    /* 送信する nlmsghdr とペイロード */
+struct sockaddr_nl sa;
+struct iovec iov = { nh, nh\->nlmsg_len };
+struct msghdr msg;
+
+msg = { &sa, sizeof(sa), &iov, 1, NULL, 0, 0 };
+memset(&sa, 0, sizeof(sa));
+sa.nl_family = AF_NETLINK;
+nh\->nlmsg_pid = 0;
+nh\->nlmsg_seq = ++sequence_number;
+/* NLM_F_ACK を設定することで、カーネルに応答を要求する */
+nh\->nlmsg_flags |= NLM_F_ACK;
+
+sendmsg(fd, &msg, 0);
+.fi
+.in
+
+最後は、netlink メッセージの読み込みの例である。
+
+.in +4n
+.nf
+int len;
+char buf[4096];
+struct iovec iov = { buf, sizeof(buf) };
+struct sockaddr_nl sa;
+struct msghdr msg;
+struct nlmsghdr *nh;
+
+msg = { &sa, sizeof(sa), &iov, 1, NULL, 0, 0 };
+len = recvmsg(fd, &msg, 0);
+
+for (nh = (struct nlmsghdr *) buf; NLMSG_OK (nh, len);
+     nh = NLMSG_NEXT (nh, len)) {
+    /* マルチパートメッセージの終わり */
+    if (nh\->nlmsg_type == NLMSG_DONE)
+        return;
+
+    if (nh\->nlmsg_type == NLMSG_ERROR)
+        /* 何らかのエラー処理を行う */
+    ...
+
+    /* ペイロードの解析を続ける */
+    ...
+}
+.fi
+.in
+.SH 関連項目
+\fBcmsg\fP(3), \fBnetlink\fP(3), \fBcapabilities\fP(7), \fBrtnetlink\fP(7)
+
+.UR ftp://ftp.inr.ac.ru\:/ip\-routing\:/iproute2*
+information about
+libnetlink
+.UE
+
+.UR http://people.suug.ch\:/~tgr\:/libnl/
+information about libnl
+.UE
+
+RFC 3549 "Linux Netlink as an IP Services Protocol"
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 9d9ee07..3d7df84 100644 (file)
@@ -68,6 +68,6 @@ operator \- C 言語の演算子の優先順位と評価の順序
 .fi
 .\"
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2103fd4..96e3c0a 100644 (file)
@@ -251,6 +251,6 @@ IEEE 802.2/803.3 の LLC の扱い方は、バグと考えても良いだろう
 
 物理層のプロトコルに関する記述は \fI<linux/if_ether.h>\fP インクルードファイルにある。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 7b8909b..5cafbbb 100644 (file)
@@ -134,7 +134,7 @@ Linux では、スーパーユーザ権限が複数のケーパビリティに
 が 0 の場合、そのプロセスはこれらのケーパビリティを持つ)。
 
 \fBCAP_DAC_OVERRIDE\fP ケーパビリティは全ての許可チェックを上書きする。 実際には、対象となるファイルの 3 つの実行許可ビットのうちの
-å°\91ã\81ªã\81\8fã\81¨ã\82\82 1 ã\81¤ã\81\8c設å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8cã\81°ã\80\81å®\9fè¡\8cã\82\92許å\8f¯ã\81\99ã\82\8bã\81 ã\81\91ã\81§ã\81\82る。
+å°\91ã\81ªã\81\8fã\81¨ã\82\82 1 ã\81¤ã\81\8c設å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81®ã\81¿ã\80\81å®\9fè¡\8cã\82\92許å\8f¯ã\81\99る。
 
 .\" FIXME say something about immutable files
 .\" FIXME say something about ACLs
@@ -142,6 +142,6 @@ Linux では、スーパーユーザ権限が複数のケーパビリティに
 .SH 関連項目
 \fBreadlink\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7), \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 1fed66f..7b049cb 100644 (file)
@@ -110,6 +110,6 @@ POSIX.1\-2001 では、パイプは一方向の通信だけに対応していれ
 \fBdup\fP(2), \fBfcntl\fP(2), \fBopen\fP(2), \fBpipe\fP(2), \fBpoll\fP(2), \fBselect\fP(2),
 \fBsocketpair\fP(2), \fBstat\fP(2), \fBmkfifo\fP(3), \fBepoll\fP(7), \fBfifo\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index db27cff..b740b9b 100644 (file)
@@ -89,7 +89,7 @@ POSIX 省略形の名前・オプション・オプションを調べるため
 .SS "\-\-\- \- POSIX_CHOWN_RESTRICTED"
 .\" What about lchown() ?
 このオプションが有効な場合 (POSIX.1\-2001 では常に有効)、 root だけがファイル所有者の変更を許され、 root
-以外はファイルのグループを 自分が所属するグループの 1 つに設定することだけができる。 関数 \fIchown\fP(), \fIfchown\fP()
+以外はファイルのグループを 自分が所属するグループのいずれか 1 つにだけ設定することができる。 関数 \fIchown\fP(), \fIfchown\fP()
 に影響する。
 .SS "CS \- _POSIX_CLOCK_SELECTION \- _SC_CLOCK_SELECTION"
 このオプションは \fB_POSIX_TIMERS\fP オプションを暗黙の内に指定する。 以下の関数が存在する。
@@ -724,6 +724,6 @@ POSIX トレーシング (tracing) が使用可能である。 以下の関数
 .SH 関連項目
 \fBsysconf\fP(3), \fBstandards\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index debe7b0..c7bdc8a 100644 (file)
@@ -764,6 +764,6 @@ pthreads の各種マニュアルページ、例えば: \fBpthread_attr_init\fP(
 \fBpthread_setspecific\fP(3), \fBpthread_sigmask\fP(3), \fBpthread_sigqueue\fP(3),
 and \fBpthread_testcancel\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 889e7b2..3951317 100644 (file)
@@ -85,6 +85,6 @@ BSD \fBioctl\fP(2)  の \fBTIOCSTOP\fP, \fBTIOCSTART\fP, \fBTIOCUCNTL\fP, \fBTIO
 \fBselect\fP(2), \fBsetsid\fP(2), \fBforkpty\fP(3), \fBopenpty\fP(3), \fBtermios\fP(3),
 \fBpts\fP(4), \fBtty\fP(4), \fBtty_ioctl\fP(4)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index d494ad6..4bba4a8 100644 (file)
@@ -163,6 +163,6 @@ raw ソケットへの送信では、 IP プロトコルを \fIsin_port\fP か
 Path MTU discovery に関しては \fBRFC\ 1191\fP を参照。 IP プロトコルに関しては \fBRFC\ 791\fP
 とインクルードファイル \fI<linux/ip.h>\fP を参照。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 802ae3e..4071517 100644 (file)
@@ -198,6 +198,6 @@ case を意味する」 という上記の定義が正しい解釈であると
 .PP
 POSIX.2, section 2.8 (Regular Expression Notation).
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man7/rtnetlink.7 b/manual/LDP_man-pages/draft/man7/rtnetlink.7
new file mode 100644 (file)
index 0000000..ca10ff4
--- /dev/null
@@ -0,0 +1,378 @@
+.\" t
+.\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
+.\"
+.\" %%%LICENSE_START(VERBATIM_ONE_PARA)
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" %%%LICENSE_END
+.\"
+.\" Based on the original comments from Alexey Kuznetsov, written with
+.\" help from Matthew Wilcox.
+.\" $Id: rtnetlink.7,v 1.8 2000/01/22 01:55:04 freitag Exp $
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH RTNETLINK 7 2013\-03\-05 Linux "Linux Programmer's Manual"
+.SH 名前
+rtnetlink \- Linux IPv4 ルーティングソケット
+.SH 書式
+\fB#include <asm/types.h>\fP
+.br
+\fB#include <linux/netlink.h>\fP
+.br
+\fB#include <linux/rtnetlink.h>\fP
+.br
+\fB#include <sys/socket.h>\fP
+.sp
+\fBrtnetlink_socket = socket(AF_NETLINK, int \fP\fIsocket_type\fP\fB,
+NETLINK_ROUTE);\fP
+.SH 説明
+.\" FIXME ? all these macros could be moved to rtnetlink(3)
+\fBrtnetlink\fP はカーネルのルーティングテーブルを読んだり変更したり するためのものである。これはカーネルが内部のサブシステムと
+通信するためにも用いられているが、それはここでは記述しない。 この man ページではユーザー空間のプログラムとの通信に関してのみ述べる。
+ネットワーク経路・IP アドレス・リンクパラメータ・ 近傍設定 (neighbor setup)・キューイングルール (queueing
+dicipline)・ トラフィッククラス・パケットのクラス分類などが、すべて \fBNETLINK_ROUTE\fP ソケットを通して制御できる。
+\fBrtnetlink\fP は netlink メッセージをベースにしている。詳細は \fBnetlink\fP(7)  を見ること。
+.SS ルーティング属性
+rtnetlink メッセージには、初期ヘッダの後に付加的な属性を 持つものがある。
+
+.in +4n
+.nf
+struct rtattr {
+    unsigned short rta_len;    /* Length of option */
+    unsigned short rta_type;   /* Type of option */
+    /* Data follows */
+};
+.fi
+.in
+
+これらの属性の操作は、 RTA_* マクロか libnetlink のみを使って行うべきである。 \fBrtnetlink\fP(3)  を見よ。
+.SS メッセージ
+rtnetlink は (標準的な netlink メッセージに加えて)  以下のメッセージタイプから構成される。
+.TP 
+\fBRTM_NEWLINK\fP, \fBRTM_DELLINK\fP, \fBRTM_GETLINK\fP
+指定したネットワークインターフェースの情報を、生成・削除・取得する。 これらのメッセージは \fIifinfomsg\fP 構造体と、それに続いていくつかの
+\fIrtattr\fP 構造体を伴う。
+
+.nf
+struct ifinfomsg {
+    unsigned char  ifi_family; /* AF_UNSPEC */
+    unsigned short ifi_type;   /* Device type */
+    int            ifi_index;  /* Interface index */
+    unsigned int   ifi_flags;  /* Device flags  */
+    unsigned int   ifi_change; /* change mask */
+};
+.fi
+
+.\" FIXME ifi_type
+\fIifi_flags\fP contains the device flags, see \fBnetdevice\fP(7); \fIifi_index\fP is
+the unique interface index (since Linux 3.7, it is possible to feed a
+nonzero value with the \fBRTM_NEWLINK\fP message, thus creating a link with the
+given \fIifindex\fP); \fIifi_change\fP is reserved for future use and should be
+always set to 0xFFFFFFFF.
+.na
+.TS
+tab(:);
+c s s
+l l l.
+ルーティング属性
+rta_type:値の型:説明
+_
+IFLA_UNSPEC:\-:指定されていない。
+IFLA_ADDRESS:hardware address:インターフェース L2 アドレス
+IFLA_BROADCAST:hardware address:L2 ブロードキャストアドレス
+IFLA_IFNAME:asciiz string:デバイス名
+IFLA_MTU:unsigned int:デバイスの MTU
+IFLA_LINK:int:リンクタイプ
+IFLA_QDISC:asciiz string:キューイングのルール
+IFLA_STATS:T{
+下記参照
+T}:インターフェースの統計
+.TE
+.ad
+.sp
+The value type for \fBIFLA_STATS\fP is \fIstruct rtnl_link_stats\fP (\fIstruct
+net_device_stats\fP in Linux 2.4 and earlier).
+.TP 
+\fBRTM_NEWADDR\fP, \fBRTM_DELADDR\fP, \fBRTM_GETADDR\fP
+インターフェースの IP アドレスの情報を追加・削除・取得する。 Linux 2.2 では、一つのインターフェースに複数の IP アドレスを
+保持させることができ、これは 2.0 の別名デバイスの概念を置き換える。 Linux 2.2 では、これらのメッセージは IPv4 と IPv6
+の両方のアドレスをサポートしている。 これらは \fIifaddrmsg\fP 構造体を伴う。そのあとに \fIrtattr\fP
+ルーティング属性が続くこともある。
+
+.nf
+struct ifaddrmsg {
+    unsigned char ifa_family;    /* Address type */
+    unsigned char ifa_prefixlen; /* Prefixlength of address */
+    unsigned char ifa_flags;     /* Address flags */
+    unsigned char ifa_scope;     /* Address scope */
+    int           ifa_index;     /* Interface index */
+};
+.fi
+
+\fIifa_family\fP はアドレスファミリーのタイプである (現在は \fBAF_INET\fP または \fBAF_INET6\fP)。
+\fIifa_prefixlen\fP はアドレスのアドレスマスクの長さである (IPv4 のように、 そのファミリーで定義されている場合)。
+\fIifa_scope\fP はアドレスのスコープである。 \fIifa_index\fP はアドレスが関連づけられているインターフェースの index である。
+\fIifa_flags\fP はフラグワードで、 二つめのアドレス (古い別名インターフェース) の場合は \fBIFA_F_SECONDARY\fP
+に、永続的なアドレスの場合は \fBIFA_F_PERMANENT\fP に適用される。ユーザーによってセットされるフラグと、 undocumented
+なフラグがある。
+.TS
+tab(:);
+c s s
+l l l.
+属性
+rta_type:値の型:説明
+_
+IFA_UNSPEC:\-:指定されていない
+IFA_ADDRESS:raw protocol address:インターフェースアドレス
+IFA_LOCAL:raw protocol address:ローカルアドレス
+IFA_LABEL:asciiz string:インターフェースの名前
+IFA_BROADCAST:raw protocol address:ブロードキャストアドレス
+IFA_ANYCAST:raw protocol address:anycast アドレス
+IFA_CACHEINFO:struct ifa_cacheinfo:アドレス情報
+.TE
+.\" FIXME struct ifa_cacheinfo
+.TP 
+\fBRTM_NEWROUTE\fP, \fBRTM_DELROUTE\fP, \fBRTM_GETROUTE\fP
+ネットワーク経路の情報を生成・削除・取得する。 これらのメッセージは \fIrtmsg\fP 構造体を伴う。そのあとにいくつかの \fIrtattr\fP
+構造体を続けることもできる。 \fBRTM_GETROUTE\fP で \fIrtm_dst_len\fP と \fIrtm_src_len\fP に 0
+をセットすると、 指定されたルーティングテーブルの全てのエントリを所得する。 \fIrtm_table\fP と \fIrtm_protocol\fP
+以外の他のフィールドに 0 を入れると、ワイルドカードを意味する。
+
+.nf
+struct rtmsg {
+    unsigned char rtm_family;   /* Address family of route */
+    unsigned char rtm_dst_len;  /* Length of destination */
+    unsigned char rtm_src_len;  /* Length of source */
+    unsigned char rtm_tos;      /* TOS filter */
+
+    unsigned char rtm_table;    /* Routing table ID */
+    unsigned char rtm_protocol; /* Routing protocol; see below */
+    unsigned char rtm_scope;    /* See below */
+    unsigned char rtm_type;     /* See below */
+
+    unsigned int  rtm_flags;
+};
+.fi
+.na
+.TS
+tab(:);
+l l.
+rtm_type:経路のタイプ
+_
+RTN_UNSPEC:未知の経路
+RTN_UNICAST:ゲートウェイまたはダイレクトな経路
+RTN_LOCAL:ローカルインターフェースの経路
+RTN_BROADCAST:T{
+ローカルなブロードキャスト経路 (ブロードキャストとして送信される)
+T}
+RTN_ANYCAST:T{
+ローカルなブロードキャスト経路 (ユニキャストとして送信される)
+T}
+RTN_MULTICAST:マルチキャスト経路
+RTN_BLACKHOLE:パケットを捨てる経路
+RTN_UNREACHABLE:到達できない行き先
+RTN_PROHIBIT:パケットを拒否する経路
+RTN_THROW:経路探索を別のテーブルで継続
+RTN_NAT:ネットワークアドレスの変換ルール
+RTN_XRESOLVE:T{
+外部レゾルバを参照 (実装されていない)
+T}
+.TE
+.ad
+.na
+.TS
+tab(:);
+l l.
+rtm_protocol:経路の情報源
+_
+RTPROT_UNSPEC:不明
+RTPROT_REDIRECT:T{
+ICMP リダイレクトによる (現在は用いられない)
+T}
+RTPROT_KERNEL:カーネルによる
+RTPROT_BOOT:ブート時
+RTPROT_STATIC:管理者による
+.TE
+.ad
+
+\fBRTPROT_STATIC\fP よりも大きな値はカーネルによって解釈されない。これは 単なるユーザーへの情報である。これらは経路情報の情報源を
+タグ付けしたり、複数のルーティングデーモンからの情報を 区別するために用いることができる。 既に割り当てられているルーティングデーモンの識別子については
+\fI<linux/rtnetlink.h>\fP を見よ。
+
+\fIrtm_scope\fP は行き先への距離である。
+.na
+.TS
+tab(:);
+l l.
+RT_SCOPE_UNIVERSE:グローバルな経路
+RT_SCOPE_SITE:T{
+ローカルな自律システムにおける内部経路
+T}
+RT_SCOPE_LINK:このリンク上の経路
+RT_SCOPE_HOST:ローカルホスト上の経路
+RT_SCOPE_NOWHERE:行き先が存在しない
+.TE
+.ad
+
+ユーザーは \fBRT_SCOPE_UNIVERSE\fP と \fBRT_SCOPE_SITE\fP の間の値を用いることができる。
+
+\fIrtm_flags\fP は以下の意味を持つ:
+.na
+.TS
+tab(:);
+l l.
+RTM_F_NOTIFY:T{
+経路が変更されると、 rtnetlink を通してユーザーに通知が行く。
+T}
+RTM_F_CLONED:経路は他の経路によって複製された。
+RTM_F_EQUALIZE:マルチパスイコライザ (まだ実装されていない)
+.TE
+.ad
+
+\fIrtm_table\fP ではルーティングテーブルを指定する。
+.TS
+tab(:);
+l l.
+RT_TABLE_UNSPEC:指定されていないルーティングテーブル
+RT_TABLE_DEFAULT:デフォルトのテーブル
+RT_TABLE_MAIN:メインのテーブル
+RT_TABLE_LOCAL:ローカルテーブル
+.TE
+
+.\" Keep table on same page
+ユーザーは \fBRT_TABLE_UNSPEC\fP と \fBRT_TABLE_DEFAULT\fP.  の間の任意の値を用いることができる。
+.bp +1
+.TS
+tab(:);
+c s s
+l l l.
+属性
+rta_type:値の型:説明
+_
+RTA_UNSPEC:\-:無視される
+RTA_DST:protocol address:経路の行き先アドレス
+RTA_SRC:protocol address:経路の発信元アドレス
+RTA_IIF:int:入力インターフェースの index
+RTA_OIF:int:出力インターフェースの index
+RTA_GATEWAY:protocol address:経路のゲートウェイ
+RTA_PRIORITY:int:経路の優先度
+RTA_PREFSRC::
+RTA_METRICS:int:経路のメトリック
+RTA_MULTIPATH::
+RTA_PROTOINFO::
+RTA_FLOW::
+RTA_CACHEINFO::
+.TE
+
+\fB(これらの値を埋めること!)\fP
+.TP 
+\fBRTM_NEWNEIGH\fP, \fBRTM_DELNEIGH\fP, \fBRTM_GETNEIGH\fP
+近傍テーブル (neighbor table) のエントリ (例えば ARP エントリ) の情報を追加・削除・取得する。 このメッセージは
+\fIndmsg\fP 構造体を伴う。
+
+.nf
+struct ndmsg {
+    unsigned char ndm_family;
+    int           ndm_ifindex;  /* Interface index */
+    __u16         ndm_state;    /* State */
+    __u8          ndm_flags;    /* Flags */
+    __u8          ndm_type;
+};
+
+struct nda_cacheinfo {
+    __u32         ndm_confirmed;
+    __u32         ndm_used;
+    __u32         ndm_updated;
+    __u32         ndm_refcnt;
+};
+.fi
+
+\fIndm_state\fP は以下の状態のビットマスクである:
+.TS
+tab(:);
+l l.
+NUD_INCOMPLETE:現在レゾルブ中のキャッシュエントリ
+NUD_REACHABLE:動作確認済みのキャッシュエントリ
+NUD_STALE:期限切れのキャッシュエントリ
+NUD_DELAY:タイマ待ちのキャッシュエントリ
+NUD_PROBE:再確認中のキャッシュエントリ
+NUD_FAILED:不正なキャッシュエントリ
+NUD_NOARP:行き先キャッシュのないデバイス
+NUD_PERMANENT:静的なエントリ
+.TE
+
+有効な \fIndm_flags\fP は以下の通り:
+.TS
+tab(:);
+l l.
+NTF_PROXY:プロクシ arp エントリ
+NTF_ROUTER:IPv6 ルータ
+.TE
+
+.\" FIXME
+.\" document the members of the struct better
+\fIrtattr\fP 構造体は、 \fIrta_type\fP フィールドに応じてそれぞれ以下の意味を持つ:
+.TS
+tab(:);
+l l.
+NDA_UNSPEC:未知のタイプ
+NDA_DST:近傍キャッシュネットワーク層の行き先アドレス
+NDA_LLADDR:近傍キャッシュリンク層のアドレス
+NDA_CACHEINFO:キャッシュの統計
+.TE
+
+\fIrta_type\fP フィールドが \fBNDA_CACHEINFO\fP の場合には、 \fIstruct nda_cacheinfo\fP ヘッダが続く。
+.TP 
+\fBRTM_NEWRULE\fP, \fBRTM_DELRULE\fP, \fBRTM_GETRULE\fP
+ルーティングルールを追加・削除・取得する。 \fIstruct rtmsg\fP を伴う。
+.TP 
+\fBRTM_NEWQDISC\fP, \fBRTM_DELQDISC\fP, \fBRTM_GETQDISC\fP
+キューイングルールを追加・削除・取得する。 このメッセージは \fIstruct tcmsg\fP を伴い、またそのあとに属性がいくつか続くこともある。
+
+.nf
+struct tcmsg {
+    unsigned char    tcm_family;
+    int              tcm_ifindex;   /* interface index */
+    __u32            tcm_handle;    /* Qdisc handle */
+    __u32            tcm_parent;    /* Parent qdisc */
+    __u32            tcm_info;
+};
+.fi
+.TS
+tab(:);
+c s s
+l2 l2 l.
+属性
+rta_type:値の型:説明
+_
+TCA_UNSPEC:\-:指定されていない
+TCA_KIND:asciiz string:キューイングルールの名前
+TCA_OPTIONS:byte sequence:Qdisc 特有のオプションが続く
+TCA_STATS:struct tc_stats:Qdisc の統計
+TCA_XSTATS:qdisc specific:モジュール特有の統計
+TCA_RATE:struct tc_estimator:レート制限
+.TE
+
+さらに、 qdisc モジュール特有の様々な属性を指定できる。 詳細な情報は適切なインクルードファイルを見よ。
+.TP 
+\fBRTM_NEWTCLASS\fP, \fBRTM_DELTCLASS\fP, \fBRTM_GETTCLASS\fP
+トラフィッククラスを追加・削除・取得する。 これらのメッセージは、上述の \fIstruct tcmsg\fP を伴う。
+.TP 
+\fBRTM_NEWTFILTER\fP, \fBRTM_DELTFILTER\fP, \fBRTM_GETTFILTER\fP
+トラフィックフィルターの情報を追加・削除・取得する。 これらのメッセージは、上述の \fIstruct tcmsg\fP を伴う。
+.SH バージョン
+\fBrtnetlink\fP は Linux 2.2 の新機能である。
+.SH バグ
+このマニュアルは完全ではない。
+.SH 関連項目
+\fBcmsg\fP(3), \fBrtnetlink\fP(3), \fBip\fP(7), \fBnetlink\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0ab2c4e..43c5510 100644 (file)
@@ -102,6 +102,6 @@ System V よりも 簡単で、うまく設計されたインタフェースを
 \fBsem_open\fP(3), \fBsem_post\fP(3), \fBsem_unlink\fP(3), \fBsem_wait\fP(3),
 \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 66f4896..b7633b4 100644 (file)
@@ -90,6 +90,6 @@ System V 共有メモリ (\fBshmget\fP(2), \fBshmop\fP(2)  など) は古い共
 \fBmprotect\fP(2), \fBmunmap\fP(2), \fBshmget\fP(2), \fBshmop\fP(2), \fBshm_open\fP(3),
 \fBshm_unlink\fP(3), \fBsem_overview\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 15b0443..4b13568 100644 (file)
@@ -571,6 +571,6 @@ POSIX.1 (注記した内容以外)。
 \fBsigvec\fP(3), \fBsigwait\fP(3), \fBstrsignal\fP(3), \fBsysv_signal\fP(3), \fBcore\fP(5),
 \fBproc\fP(5), \fBpthreads\fP(7), \fBsigevent\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man7/socket.7 b/manual/LDP_man-pages/draft/man7/socket.7
new file mode 100644 (file)
index 0000000..cadf76b
--- /dev/null
@@ -0,0 +1,467 @@
+.\" t
+.\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
+.\" and copyright (c) 1999 Matthew Wilcox.
+.\"
+.\" %%%LICENSE_START(VERBATIM_ONE_PARA)
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" %%%LICENSE_END
+.\"
+.\" 2002-10-30, Michael Kerrisk, <mtk.manpages@gmail.com>
+.\"    Added description of SO_ACCEPTCONN
+.\" 2004-05-20, aeb, added SO_RCVTIMEO/SO_SNDTIMEO text.
+.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on capability requirements
+.\"    A few small grammar fixes
+.\" 2010-06-13 Jan Engelhardt <jengelh@medozas.de>
+.\"    Documented SO_DOMAIN and SO_PROTOCOL.
+.\" FIXME
+.\" The following are not yet documented:
+.\"    SO_PEERNAME (2.4?)
+.\"            get only
+.\"            Seems to do something similar to getpeernam(), but then
+.\"            why is it necessary / how does it differ?
+.\"    SO_TIMESTAMPNS (2.6.22)
+.\"            Documentation/networking/timestamping.txt
+.\"            commit 92f37fd2ee805aa77925c1e64fd56088b46094fc
+.\"            Author: Eric Dumazet <dada1@cosmosbay.com>
+.\"    SO_TIMESTAMPING (2.6.30)
+.\"            Documentation/networking/timestamping.txt
+.\"            commit cb9eff097831007afb30d64373f29d99825d0068
+.\"            Author: Patrick Ohly <patrick.ohly@intel.com>
+.\"    SO_RXQ_OVFL (2.6.33)
+.\"            commit 3b885787ea4112eaa80945999ea0901bf742707f
+.\"            Author: Neil Horman <nhorman@tuxdriver.com>
+.\"    SO_WIFI_STATUS (3.3)
+.\"            commit 6e3e939f3b1bf8534b32ad09ff199d88800835a0
+.\"            Author: Johannes Berg <johannes.berg@intel.com>
+.\"            Also: SCM_WIFI_STATUS
+.\"    SO_PEEK_OFF (3.4)
+.\"            commit ef64a54f6e558155b4f149bb10666b9e914b6c54
+.\"            Author: Pavel Emelyanov <xemul@parallels.com>
+.\"    SO_NOFCS (3.4)
+.\"            commit 3bdc0eba0b8b47797f4a76e377dd8360f317450f
+.\"            Author: Ben Greear <greearb@candelatech.com>
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SOCKET 7 2013\-03\-15 Linux "Linux Programmer's Manual"
+.SH 名前
+socket \- Linux のソケットインターフェース
+.SH 書式
+\fB#include <sys/socket.h>\fP
+.sp
+\fIsockfd\fP\fB = socket(int \fP\fIsocket_family\fP\fB, int \fP\fIsocket_type\fP\fB, int
+\fP\fIprotocol\fP\fB);\fP
+.SH 説明
+このマニュアルページは Linux ネットワークのソケット層に対する ユーザインターフェースを記述するものである。 BSD
+互換ソケットは、ユーザプロセスとカーネル内部の ネットワークプロトコルスタック群との間に、 統一的なインターフェースを提供するものである。
+プロトコルモジュールは \fIプロトコルファミリー (protocol familiy)\fP (例: \fBAF_INET\fP, \fBAF_IPX\fP,
+\fBAF_PACKET\fP)  と \fIソケットタイプ (socket types)\fP (例: \fBSOCK_STREAM\fP,
+\fBSOCK_DGRAM\fP)  に分類できる。 これらに関するより詳しい情報は \fBsocket\fP(2)  を参照のこと。
+.SS ソケット層の関数群
+これらの関数はユーザプロセスがパケットを送受信したり、その他のソケット操作を 行ったりするために用いられる。詳細はそれぞれのマニュアルページを
+見てほしい。
+
+\fBsocket\fP(2)  はソケットを生成する。 \fBconnect\fP(2)  はソケットをリモートのソケットアドレスに接続する。
+\fBbind\fP(2)  はソケットをローカルのソケットアドレスにバインドする。 \fBlisten\fP(2)
+はソケットに新しい接続が来たら受信するように伝え、 \fBaccept\fP(2)  は外部からやってきた接続に対して新しいソケットを得るために用いられる。
+\fBsocketpair\fP(2)  は互いに接続された二つの名前無しソケット (anonymous socket) を返す (\fBAF_UNIX\fP
+のような、いくつかのローカルなファミリーでしか実装されていない)。
+.PP
+\fBsend\fP(2), \fBsendto\fP(2), \fBsendmsg\fP(2)  はソケットを通してデータを送信し、 \fBrecv\fP(2)
+\fBrecvfrom\fP(2), \fBrecvmsg\fP(2)  はソケットからデータを受信する。 \fBpoll\fP(2)  と \fBselect\fP(2)
+はデータの到着を待ったり、データ送信の準備ができるまで待ったりする。 さらに、 \fBwrite\fP(2), \fBwritev\fP(2),
+\fBsendfile\fP(2), \fBread\fP(2), \fBreadv\fP(2)  のような標準的な I/O 操作もデータの読み書きに用いることができる。
+.PP
+\fBgetsockbyname\fP(2)  はローカルのソケットアドレスを返し、 \fBgetpeername\fP(2)
+はリモートのソケットアドレスを返す。 \fBgetsockopt\fP(2)  と \fBsetsockopt\fP(2)
+はソケット層のオプションやプロトコルオプションの取得・設定に用いられる。 他のいくつかのオプションの取得・設定には \fBioctl\fP(2)
+を使うことができる。
+.PP
+\fBclose\fP(2)  はソケットをクローズする。 \fBshutdown\fP(2)  は全二重なソケット接続を部分的にクローズする。
+.PP
+シーク動作や、 0 以外の位置に対する \fBpread\fP(2)  や \fBpwrite\fP(2)  はソケットではサポートされていない。
+.PP
+非ブロッキングな I/O をソケットで行うことは可能で、 \fBfcntl\fP(2)  を使ってソケットのファイルディスクリプタに
+\fBO_NONBLOCK\fP フラグをセットすれば良い。 こうするとブロックされる操作は、 (通常)  \fBEAGAIN\fP エラーで戻ることになる
+(後で処理が再試行されることが期待されている)。 \fBconnect\fP(2)  では \fBEINPROGRESS\fP エラーが返される。
+この場合、ユーザはさまざまなイベントを \fBpoll\fP(2)  や \fBselect\fP(2)  を使って待つことができる。
+.TS
+tab(:) allbox;
+c s s
+l l l.
+I/O イベント
+イベント:poll フラグ:内容
+Read:POLLIN:T{
+新しいデータが到着した。
+T}
+Read:POLLIN:T{
+(接続志向のソケットで)
+接続の設定が終了した。
+T}
+Read:POLLHUP:T{
+接続先で切断要求が生成された。
+T}
+Read:POLLHUP:T{
+接続が壊れた (接続志向のプロトコルのみ)。
+この場合、ソケットに書き込みが行われると
+\fBSIGPIPE\fP
+も送信される。
+T}
+Write:POLLOUT:T{
+ソケットには新しいデータを書き込むのに充分なバッファ領域がある。
+T}
+Read/Write:T{
+POLLIN|
+.br
+POLLOUT
+T}:T{
+外部向けの
+\fBconnect\fP(2)
+が終了した。
+T}
+Read/Write:POLLERR:非同期的 (asynchronous) なエラーが起こった。
+Read/Write:POLLHUP:接続先が片方向を切断した。
+Exception:POLLPRI:T{
+緊急データ (urgent data) が到着した。この場合は
+\fBSIGURG\fP
+が送信される。
+T}
+.\" FIXME . The following is not true currently:
+.\" It is no I/O event when the connection
+.\" is broken from the local end using
+.\" .BR shutdown (2)
+.\" or
+.\" .BR close (2).
+.TE
+.PP
+\fBpoll\fP(2)  や \fBselect\fP(2)  を使う代わりに、カーネルからアプリケーションに イベントを通知させるのに \fBSIGIO\fP
+シグナルを使う方法もある。 この方法を使うには、 \fBfcntl\fP(2)  を用いてソケットのファイルディスクリプタに \fBO_ASYNC\fP
+フラグをセットし、 \fBSIGIO\fP に対する有効なシグナルハンドラを \fBsigaction\fP(2)  によって設定しておく必要がある。 後述の
+\fIシグナル\fP に関する議論も参考にすること。
+.SS "Socket address structures"
+Each socket domain has its own format for socket addresses, with a
+domain\-specific address structure.  Each of these structures begins with an
+integer "family" field (typed as \fIsa_family_t\fP)  that indicates the type of
+the address structure.  This allows the various system calls (e.g.,
+\fBconnect\fP(2), \fBbind\fP(2), \fBaccept\fP(2), \fBgetsockname\fP(2),
+\fBgetpeername\fP(2)), which are generic to all socket domains, to determine
+the domain of a particular socket address.
+
+To allow any type of socket address to be passed to interfaces in the
+sockets API, the type \fIstruct sockaddr\fP is defined.  The purpose of this
+type is purely to allow casting of domain\-specific socket address types to a
+"generic" type, so as to avoid compiler warnings about type mismatches in
+calls to the sockets API.
+
+In addition, the sockets API provides the data type \fIstruct
+sockaddr_storage\fP.  This type is suitable to accommodate all supported
+domain\-specific socket address structures; it is large enough and is aligned
+properly.  (In particular, it is large enough to hold IPv6 socket
+addresses.)  The structure includes the following field, which can be used
+to identify the type of socket address actually stored in the structure:
+
+.in +4n
+.nf
+    sa_family_t ss_family;
+.fi
+.in
+
+The \fIsockaddr_storage\fP structure is useful in programs that must handle
+socket addresses in a generic way (e.g., programs that must deal with both
+IPv4 and IPv6 socket addresses).
+.SS ソケットオプション
+.\" FIXME
+.\" In the list below, the text used to describe argument types
+.\" for each socket option should be more consistent
+.\"
+.\" SO_ACCEPTCONN is in POSIX.1-2001, and its origin is explained in
+.\" W R Stevens, UNPv1
+これらのソケットオプションは、 \fBsetsockopt\fP(2)  を用いれば設定でき、 \fBgetsockopt\fP(2)  を用いれば取得できる。
+但し、どのソケットの場合も ソケットレベルには \fBSOL_SOCKET\fP を指定すること。
+.TP 
+\fBSO_ACCEPTCONN\fP
+このソケットが \fBlisten\fP(2)  によって接続待ち受け状態に設定されているかどうかを示す値を返す。 値 0 は listen
+状態のソケットでないことを、 値 1 は listen 状態のソケットであることを示す。このソケットオプションは読み込み専用である。
+.TP 
+\fBSO_BINDTODEVICE\fP
+このソケットを、引き数で渡したインターフェース名で指定される
+(\(lqeth0\(rq のような) 特定のデバイスにバインドする。
+名前が空文字列だったり、オプションの長さ (optlen) が 0 の場合には、
+ソケットのバインドが削除される。渡すオプションは、インターフェース名が
+入ったヌル文字で終端された可変長の文字列である。
+文字列の最大のサイズは \fBIFNAMSIX\fP である。
+ソケットがインターフェースにバインドされると、その特定のインターフェース
+から受信されたパケットだけを処理する。
+このオプションはいくつかのソケットタイプ、
+特に \fBAF_INET\fP に対してのみ動作する点に注意すること。
+パケットソケットではサポートされていない (通常の \fBbind\fP(2) を使うこと)。
+
+Before Linux 3.8, this socket option could be set, but could not retrieved
+with \fBgetsockopt\fP(2).  Since Linux 3.8, it is readable.  The \fIoptlen\fP
+argument should contain the buffer size available to receive the device name
+and is recommended to be \fBIFNAMSZ\fP bytes.  The real device name length is
+reported back in the \fIoptlen\fP argument.
+.TP 
+\fBSO_BROADCAST\fP
+ブロードキャストフラグを設定・取得する。有効になっていると、データグラ
+ムソケットはブロードキャストアドレスにパケットを送信できるようになる。
+ストリーム指向のソケットには何の効果もない。
+.TP 
+\fBSO_BSDCOMPAT\fP
+BSD のバグに対して互換性を取るための機能を有効にする。 この機能は Linux 2.0 と 2.2 の UDP
+プロトコルモジュールで使用されている。 有効になっていると、 UDP ソケットで受信された ICMP エラーは ユーザプログラムに渡されない。
+これ以降のバージョンのカーネルでは、このオプションのサポートは 段階的に廃止されてきた。 Linux 2.4 ではこのオプションは黙って無視され、
+Linux 2.6 ではプログラムがこのオプションを使用すると (printk() を使って)  カーネルの警告メッセージが出力される。 Linux
+2.0 では、このオプションを指定すると、 raw ソケットにおいても BSD のバグ (ランダムヘッダ変更、 ブロードキャストフラグのスキップ)
+に対する互換機能が有効になっていた。 しかし、こちらは Linux 2.2 で削除された。
+.TP 
+\fBSO_DEBUG\fP
+ソケットのデバッグ機能を有効にする。 \fBCAP_NET_ADMIN\fP 権限を持つプロセスか、実効ユーザ ID が 0 のプロセスでしか 利用できない。
+.TP 
+\fBSO_DOMAIN\fP (Linux 2.6.32 以降)
+ソケットドメインを整数で取得する。 \fBAF_INET6\fP のような値が返される。
+詳細は \fBsocket\fP(2) を参照。このソケットオプションは読み込み専用である。
+.TP 
+\fBSO_ERROR\fP
+保留になっていたソケットエラーを取得してクリアする。
+このソケットオプションは読み込み専用である。整数値をとる。
+.TP 
+\fBSO_DONTROUTE\fP
+ゲートウェイを経由せず、直接接続されているホストにのみ送信する。 \fBsend\fP(2)  操作で \fBMSG_DONTROUTE\fP
+フラグをセットした場合も同じ効果が得られる。 ブール整数のフラグを取る。
+.TP 
+\fBSO_KEEPALIVE\fP
+接続志向のソケットに対する keep\-alive メッセージの送信を有効にする。 ブール値の整数フラグをとる。
+.TP 
+\fBSO_LINGER\fP
+\fBSO_LINGER\fP オプションを取得・設定する。引き数には \fIlinger\fP 構造体を取る。
+.sp
+.in +4n
+.nf
+struct linger {
+    int l_onoff;    /* linger active */
+    int l_linger;   /* how many seconds to linger for */
+};
+.fi
+.in
+.IP
+有効になっていると、 \fBclose\fP(2)  や \fBshutdown\fP(2)
+は、そのソケットにキューイングされたメッセージがすべて送信完了するか、 linger (居残り) タイムアウトになるまで返らない。無効になっていると、
+これらのコールはただちに戻り、クローズ動作はバックグラウンドで行われる。 ソケットのクローズを \fBexit\fP(2)
+の一部として行った場合には、残っているソケットの クローズ動作は必ずバックグラウンドに送られる。
+.TP 
+\fBSO_MARK\fP (Linux 2.6.25 以降)
+.\" commit 4a19ec5800fc3bb64e2d87c4d9fdd9e636086fe0
+.\" and    914a9ab386a288d0f22252fc268ecbc048cdcbd5
+Set the mark for each packet sent through this socket (similar to the
+netfilter MARK target but socket\-based).  Changing the mark can be used for
+mark\-based routing without netfilter or for packet filtering.  Setting this
+option requires the \fBCAP_NET_ADMIN\fP capability.
+.TP 
+\fBSO_OOBINLINE\fP
+.\" don't document it because it can do too much harm.
+.\".B SO_NO_CHECK
+このオプションを有効にすると、帯域外データ (out\-of\-band data) は 受信データストリーム中に置かれる。有効にしなければ、
+帯域外データは受信時に \fBMSG_OOB\fP フラグがセットされている場合に限って渡される。
+.TP 
+\fBSO_PASSCRED\fP
+.\" FIXME Document SO_PASSSEC, added in 2.6.18; there is some info
+.\" in the 2.6.18 ChangeLog
+\fBSCM_CREDENTIALS\fP 制御メッセージの受信を有効/無効にする。詳細は \fBunix\fP(7)  を参照のこと。
+.TP 
+\fBSO_PEERCRED\fP
+このソケットに接続してきた外部プロセスの信任状 (credential) を返す。このソケットオプションが利用できるのは、接続された
+\fBAF_UNIX\fP ストリームソケット間、および \fBsocketpair\fP(2) を使って作成された \fBAF_UNIX\fP
+のストリームソケットとデータグラムソケットのペアだけである。 \fBunix\fP(7)  を参照のこと。 \fBconnect\fP(2) や
+\fBsocketpair\fP(2) が呼ばれた時に有効であった信任状が返される。引き数は \fIucred\fP
+構造体である。このソケットオプションは読み込み専用である。
+.TP 
+\fBSO_PRIORITY\fP
+プロトコルで定義された優先度を、このソケットから 送信される全てのパケットにセットする。 Linux はネットワークキュー内部の
+整列にこの値を用いる。高い優先度を持っているパケットは先に処理される。 ただしそのデバイスのキュー処理のやり方に依存する。 \fBip\fP(7)
+では、外向けパケットの IP type\-of\-service (TOS) フィールドにもこの値が設定される。 0 から 6 以外の優先度をセットするには
+\fBCAP_NET_ADMIN\fP ケーパビリティが必要である。
+.TP 
+\fBSO_PROTOCOL\fP (Linux 2.6.32 以降)
+ソケットのプロトコルを整数で取得する。 \fBIPPROTO_SCTP\fP のような値が返される。
+詳細は \fBsocket\fP(2) を参照。このソケットオプションは読み込み専用である。
+.TP 
+\fBSO_RCVBUF\fP
+.\" Most (all?) other implementations do not do this -- MTK, Dec 05
+.\" The following thread on LMKL is quite informative:
+.\" getsockopt/setsockopt with SO_RCVBUF and SO_SNDBUF "non-standard" behaviour
+.\" 17 July 2012
+.\" http://thread.gmane.org/gmane.linux.kernel/1328935
+ソケットの受信バッファの最大サイズを設定・取得する (バイト単位)。 \fBsetsockopt\fP(2)  を使って値が設定されたときに
+(管理オーバヘッド用の領域を確保するために)  カーネルはこの値を 2倍し、 \fBgetsockopt\fP(2)  はこの 2倍された値を返す。
+デフォルトの値は \fI/proc/sys/net/core/rmem_default\fP ファイルで設定され、許容される最大の値は
+\fI/proc/sys/net/core/rmem_max\fP ファイルで設定される。 このオプションの最小値は (2倍した値で) 256 である。
+.TP 
+\fBSO_RCVBUFFORCE\fP (Linux 2.6.14 以降)
+このソケットオプションを使うと、特権プロセス (\fBCAP_NET_ADMIN\fP を持つプロセス) は \fBSO_RCVBUF\fP
+と同じことを実行できる。 ただし、上限 \fIrmem_max\fP を上書きすることができる。
+.TP 
+\fBSO_RCVLOWAT\fP と \fBSO_SNDLOWAT\fP
+.\" See http://marc.theaimsgroup.com/?l=linux-kernel&m=111049368106984&w=2
+.\" Tested on kernel 2.6.14 -- mtk, 30 Nov 05
+バッファ中に溜めることのできるデータの最小値を指定する。 このサイズを越えると、ソケット層はそのデータをプロトコルに渡し
+(\fBSO_SNDLOWAT\fP)、 受信時にはユーザに渡す (\fBSO_RCVLOWAT\fP)。 これら二つの値は 1 に初期化される。
+\fBSO_SNDLOWAT\fP は Linux では変更できない (\fBsetsockopt\fP(2)  は \fBENOPROTOOPT\fP
+エラーで失敗する)。 \fBSO_RCVLOWAT\fP は Linux 2.4 以降でのみ変更可能である。 現状、Linux ではシステムコール
+\fBselect\fP(2)  と \fBpoll\fP(2)  は \fBSO_RCVLOWAT\fP の設定を考慮に入れずに動作し、
+データが1バイト利用可能になっただけでも、 ソケットは読み出し可能とのマークをつける。 一方、それに続けて行うソケットからの read は
+\fBSO_RCVLOWAT\fP バイトのデータが利用可能になるまで停止してしまう。
+.TP 
+\fBSO_RCVTIMEO\fP と \fBSO_SNDTIMEO\fP
+.\" Not implemented in 2.0.
+.\" Implemented in 2.1.11 for getsockopt: always return a zero struct.
+.\" Implemented in 2.3.41 for setsockopt, and actually used.
+.\" in fact to EAGAIN
+送信・受信のタイムアウトを指定する。これを越えるとエラーを報告する。 引き数は \fIstruct timeval\fP である。
+入出力関数がタイムアウト時間の間ブロックされ、かつデータの送信または 受信が行われていた場合は、転送されたデータ量が関数の返り値となる。
+何もデータが転送されずにタイムアウトに達した場合は、 \-1 を返し、 \fIerrno\fP に \fBEAGAIN\fP か \fBEWOULDBLOCK\fP か
+\fBEINPROGRESS\fP (\fBconnect\fP(2) の場合) が設定され、 あたかもソケットに非ブロッキングが指定されたように見える。
+タイムアウト値に (デフォルト値である) 0 に設定すると、 操作は決してタイムアウトしなくなる。 タイムアウトが影響を及ぼすのは、 ソケット I/O
+を実行するシステムコールだけ (例えば \fBread\fP(2), \fBrecvmsg\fP(2), \fBsend\fP(2), \fBsendmsg\fP(2))
+である。 \fBselect\fP(2), \fBpoll\fP(2), \fBepoll_wait\fP(2)  などにはタイムアウトは影響を及ぼさない。
+.TP 
+\fBSO_REUSEADDR\fP
+\fBbind\fP(2)  コールに与えられたアドレスが正しいかを判断するルールで、 ローカルアドレスの再利用を可能にする。 つまり \fBAF_INET\fP
+ソケットなら、そのアドレスにバインドされたアクティブな listen 状態のソケットが存在しない限り、バインドが行える。 listen
+状態のソケットがアドレス \fBINADDR_ANY\fP で特定のポートにバインドされている場合には、
+このポートに対しては、どんなローカルアドレスでもバインドできない。 引き数はブール整数のフラグである。
+.TP 
+\fBSO_SNDBUF\fP
+.\" Most (all?) other implementations do not do this -- MTK, Dec 05
+.\" See also the comment to SO_RCVBUF (17 Jul 2012 LKML mail)
+ソケットの送信バッファの最大サイズを設定・取得する (バイト単位)。 \fBsetsockopt\fP(2)  を使って値が設定されたときに
+(管理オーバヘッド用の領域を確保するために)  カーネルはこの値を 2倍し、 \fBgetsockopt\fP(2)  はこの 2倍された値を返す。
+デフォルトの値は \fI/proc/sys/net/core/wmem_default\fP ファイルで設定され、許容される最大の値は
+\fI/proc/sys/net/core/wmem_max\fP ファイルで設定される。 このオプションの最小値は (2倍した値で) 2048 である。
+.TP 
+\fBSO_SNDBUFFORCE\fP (Linux 2.6.14 以降)
+このソケットオプションを使うと、特権プロセス (\fBCAP_NET_ADMIN\fP を持つプロセス) は \fBSO_SNDBUF\fP
+と同じことを実行できる。 ただし、上限 \fIwmem_max\fP を上書きすることができる。
+.TP 
+\fBSO_TIMESTAMP\fP
+\fBSO_TIMESTAMP\fP 制御メッセージの受信を有効/無効にする。 タイムスタンプ制御メッセージはレベル \fBSOL_SOCKET\fP で送信され、
+\fIcmsg_data\fP フィールドはこのシステムコールでユーザに渡した 最後のパケットの受信時刻を示す \fIstruct timeval\fP である。
+制御メッセージの詳細については \fBcmsg\fP(3)  を参照。
+.TP 
+\fBSO_TYPE\fP
+ソケットのタイプを整数で取得する (例: \fBSOCK_STREAM\fP)。
+このソケットオプションは読み出し専用である。
+.SS シグナル
+(ローカルもしくはリモート側で) 切断された 接続指向 (connection\-oriented) のソケットに対して
+書き込みを行うと、その書き込みを行ったプロセスに \fBSIGPIPE\fP が送られ、 \fBEPIPE\fP が返される。 write 呼び出しに
+\fBMSG_NOSIGNAL\fP フラグを指定していた場合はシグナルは送られない。
+.PP
+\fBFIOSETOWN\fP \fBfcntl\fP(2)  や \fBSIOCSPGRP\fP \fBioctl\fP(2)
+をプロセスまたはプロセスグループに指定しておくと、 I/O イベントが起きたときに \fBSIGIO\fP が送られる。 \fBpoll\fP(2)  や
+\fBselect\fP(2)  をシグナルハンドラ内で用いれば、どのソケットでイベントが起こったかを 知ることができる。 (Linux 2.2 における)
+別の方法としては、 \fBF_SETSIG\fP \fBfcntl\fP(2)  を用いてリアルタイムシグナルを設定するやり方もある。
+リアルタイムシグナルのハンドラは、 \fIsiginfo_t\fP の \fIsi_fd\fP フィールドにファイルディスクリプタが入った状態で呼び出される。
+詳細は \fBfcntl\fP(2)  を参照のこと。
+.PP
+.\" .SS Ancillary messages
+状況によっては (例えば複数のプロセスが一つのソケットにアクセスしているなど)、 \fBSIGIO\fP
+の原因となった状態は、プロセスがそのシグナルへの対応を行ったときには 消えてしまっているかもしれない。
+この場合は、プロセスは再び待つようにすべきである。 Linux は同じシグナルを後で再送するからである。
+.SS "/proc インタフェース"
+core のソケットのネットワーキングパラメータには、 \fI/proc/sys/net/core/\fP ディレクトリ内のファイルを通してアクセスできる。
+.TP 
+\fIrmem_default\fP
+ソケットの受信バッファサイズのデフォルト値 (バイト単位)。
+.TP 
+\fIrmem_max\fP
+\fBSO_RCVBUF\fP ソケットオプションを用いてユーザが設定できる ソケットの受信バッファサイズの最大値 (バイト単位)。
+.TP 
+\fIwmem_default\fP
+ソケットの送信バッファサイズのデフォルト値 (バイト単位)。
+.TP 
+\fIwmem_max\fP
+\fBSO_SNDBUF\fP ソケットオプションを用いてユーザが設定できる ソケットの送信バッファサイズの最大値 (バイト単位)。
+.TP 
+\fImessage_cost\fP と \fImessage_burst\fP
+トークン・バケット・フィルターを設定する。 これは外部のネットワークイベントによって引き起こされた 負荷限界の警告メッセージに用いられる。
+.TP 
+\fInetdev_max_backlog\fP
+グローバルな入力キューにおける最大のパケット数。
+.TP 
+\fIoptmem_max\fP
+.\" netdev_fastroute is not documented because it is experimental
+ソケットあたりの、補助データ (ancillary data) とユーザ制御データ (iovecs のようなもの) との和の最大長。
+.SS ioctl
+以下に示す操作には \fBioctl\fP(2)  を用いてアクセスできる。
+
+.in +4n
+.nf
+\fIerror\fP\fB = ioctl(\fP\fIip_socket\fP\fB, \fP\fIioctl_type\fP\fB, \fP\fI&value_result\fP\fB);\fP
+.fi
+.in
+.TP 
+\fBSIOCGSTAMP\fP
+.\"
+最後にユーザに渡されたパケットの受信タイムスタンプを \fIstruct timeval\fP に入れて返す。 これは round trip
+時間を正確に測りたいときに便利である。 \fIstruct timeval\fP の説明は \fBsetitimer\fP(2)  を見てほしい。 この ioctl
+は、ソケットオプション \fBSO_TIMESTAMP\fP がソケットにセットされていない場合にのみ使用すべきである。 さもなければ、この ioctl は
+\fBSO_TIMESTAMP\fP がセットされていなかった間に受信した最後のパケットの時刻を返すか、 そのようなパケットを受信していない場合には失敗する
+(つまり、 \fBioctl\fP(2)  は \-1 を返し、 \fIerrno\fP に \fBENOENT\fP をセットする)。
+.TP 
+\fBSIOCSPGRP\fP
+非同期 I/O 操作の終了時や緊急データの受信時に \fBSIGIO\fP や \fBSIGURG\fP シグナル群を送るプロセスやプロセスグループを設定する。
+引き数は \fIpid_t\fP へのポインタである。 引き数が正だと、そのプロセスにシグナルが送られる。負だと、 引き数の絶対値を ID
+に持つプロセスグループにシグナルが送られる。 シグナル受信先には、自分自身のプロセス / 自分の所属するプロセスグループ しか指定できない。但し、
+\fBCAP_KILL\fP ケーパビリティを持っている場合、及び実効ユーザ ID が 0 のプロセスの場合は この限りではない。
+.TP 
+\fBFIOASYNC\fP
+\fBO_ASYNC\fP フラグを変更し、ソケットの非同期 (asynchronous) I/O モードを 有効/無効にする。非同期 I/O モードでは、
+新しい I/O イベントが起きたときに、 \fBSIGIO\fP シグナルや \fBF_SETSIG\fP で設定されたシグナル・セットが発行される。
+.IP
+.\"
+引き数はブール整数のフラグである。 (この操作は \fBfcntl\fP(2)  を使って \fBO_ASYNC\fP フラグをセットするのと同じ意味である。)
+.TP 
+\fBSIOCGPGRP\fP
+\fBSIGIO\fP や \fBSIGURG\fP を受信したカレントプロセス・プロセスグループを取得する。 ない場合は 0 が返る。
+.PP
+有効な \fBfcntl\fP(2)  操作:
+.TP 
+\fBFIOGETOWN\fP
+\fBSIOCGPGRP\fP \fBioctl\fP(2)  と同じ。
+.TP 
+\fBFIOSETOWN\fP
+\fBSIOCSPGRP\fP \fBioctl\fP(2)  と同じ。
+.SH バージョン
+\fBSO_BINDTODEVICE\fP は Linux 2.0.30 で導入された。 \fBSO_PASSCRED\fP は Linux 2.2 で登場した。
+\fI/proc\fP インタフェースは Linux 2.2 で導入された。 \fBSO_RCVTIMEO\fP と \fBSO_SNDTIMEO\fP は Linux
+2.3.41 以降でサポートされている。 それ以前は、タイムアウトはプロトコル固有の固定の設定値で、 読み書きをすることはできなかった。
+.SH 注意
+Linux は、送受信バッファの半分を内部のカーネル構造体で用いると仮定している。 したがって、対応する \fI/proc\fP
+ファイルはネットワーク回線上での大きさの 2 倍になる。
+
+Linux では、 \fBSO_REUSEADDR\fP オプションでポートの再利用が許可されるのは、 そのポートに対して \fBbind\fP(2)
+を前に実行したプログラムとそのポートを再利用 しようとするプログラムの両方で \fBSO_REUSEADDR\fP がセットされた場合のみである。 この動作は
+(FreeBSD などの) いくつかの実装とは異なる。これらでは、 後でポートを再利用しようとするプログラムで \fBSO_REUSEADDR\fP
+オプションをセットするだけでよい。 たいていはこの違いは見えない。なぜなら、例えばサーバプログラムは
+常にこのオプションをセットするように設計されるからである。
+.SH バグ
+.\" FIXME Document SO_ATTACH_FILTER and SO_DETACH_FILTER
+.\" .SH AUTHORS
+.\" This man page was written by Andi Kleen.
+\fBCONFIG_FILTER\fP ソケットオプションである \fBSO_ATTACH_FILTER\fP と \fBSO_DETACH_FILTER\fP
+について記載されていない。これらは libpcap ライブラリを通して 用いる方が良い。
+.SH 関連項目
+\fBgetsockopt\fP(2), \fBconnect\fP(2), \fBsetsockopt\fP(2), \fBsocket\fP(2),
+\fBcapabilities\fP(7), \fBddp\fP(7), \fBip\fP(7), \fBpacket\fP(7), \fBtcp\fP(7), \fBudp\fP(7),
+\fBunix\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2754da4..43b04ef 100644 (file)
@@ -194,6 +194,6 @@ POSIX.1\-2008 にも準拠していると考えてよい。
 .SH 関連項目
 \fBfeature_test_macros\fP(7), \fBlibc\fP(7), \fBposixoptions\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index bfd8ba7..9006afc 100644 (file)
@@ -281,6 +281,6 @@ Suffix      File type
 .SH 関連項目
 \fBfile\fP(1), \fBmake\fP(1)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man7/svipc.7 b/manual/LDP_man-pages/draft/man7/svipc.7
new file mode 100644 (file)
index 0000000..3ccad95
--- /dev/null
@@ -0,0 +1,264 @@
+.\" Copyright 1993 Giorgio Ciucci (giorgio@crcc.it)
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" FIXME There is now duplication of some of the information
+.\" below in semctl.2, msgctl.2, and shmctl.2 -- MTK, Nov 04
+.\"
+.\" FIXME Ultimately, there should probably be
+.\" svmq_overview(7), svshm_overview(7), and sem_overview(7)
+.\" that provide an overview of each System V IPC mechanism.
+.\" In that case:
+.\"   * Those files should add a discussion of the /proc/sysvipc
+.\"     interfaces.
+.\"   * Documentation of the various /proc interfaces should move into
+.\"     those files (from proc(5)), and references in the various *.2
+.\"     pages that refer to the /proc files should be adjusted.
+.\"   * The only part that uniquely belongs in svipc(7) is perphaps
+.\"     the discussion of ipc_perm.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SVIPC 7 2013\-02\-12 Linux "Linux Programmer's Manual"
+.SH 名前
+svipc \- System V プロセス間通信機構
+.SH 書式
+.nf
+\fB#include <sys/msg.h>\fP
+\fB#include <sys/sem.h>\fP
+\fB#include <sys/shm.h>\fP
+.fi
+.SH 説明
+このマニュアルページは System V プロセス間通信 (interprocess communication; IPC) 機構の Linux に
+おける実装を説明する。 このプロセス間通信機構には、 メッセージキュー (message queue)、セマフォー集合 (semaphore set)、
+共有メモリセグメント (shared memory segment) などがある。以下で \fI資源 (resource)\fP
+という用語を使用した場合にはこれらの機構のどれかを意味する。
+.SS 資源へのアクセス許可
+システムのそれぞれの資源は、IPC への操作を許可するかどうかを決定する ための情報を共通の構造体 \fIstruct ipc_perm\fP
+に格納して使用する。 \fIipc_perm\fP 構造体には以下のメンバーが定義されている:
+.in +4n
+.nf
+
+struct ipc_perm {
+    uid_t          cuid;   /* 作成者のユーザーID */
+    gid_t          cgid;   /* 作成者のグループID */
+    uid_t          uid;    /* 所有者のユーザーID */
+    gid_t          gid;    /* 所有者のグループID */
+    unsigned short mode;   /* 読み書きの許可 */
+};
+.fi
+.in
+.PP
+\fIipc_perm\fP 構造体の \fImode\fP メンバーは以下の 9 ビットで、プロセスの IPC システムコール
+による資源へのアクセス許可を定義する。 許可は以下のように解釈される:
+.sp
+.nf
+    0400    ユーザーによる読み込み。
+    0200    ユーザーによる書き込み。
+.sp .5
+    0040    グループによる読み込み。
+    0020    グループによる書き込み。
+.sp .5
+    0004    他人による読み込み。
+    0002    他人による書き込み。
+.fi
+.PP
+システムはビット 0100, 0010, 0001 (実行ビット) は使用しない。 さらに、セマフォーの場合には "書き込み(write)" は実際には
+"変更(alter)" を意味する。
+.PP
+同じヘッダーファイルには以下のシンボルの定義が含まれている:
+.TP  14
+\fBIPC_CREAT\fP
+キー(key)が存在しない場合には新たなエントリを作成する。
+.TP 
+\fBIPC_EXCL\fP
+キー(key)が存在する場合には失敗する。
+.TP 
+\fBIPC_NOWAIT\fP
+要求が待たされる場合にはエラーになる。
+.TP 
+\fBIPC_PRIVATE\fP
+プライベートキー。
+.TP 
+\fBIPC_RMID\fP
+資源を削除する。
+.TP 
+\fBIPC_SET\fP
+資源にオプションを設定する。
+.TP 
+\fBIPC_STAT\fP
+資源のオプションを取得する。
+.PP
+\fBIPC_PRIVATE\fP は \fIkey_t\fP 型である。その他の全てのシンボルはフラグフィールドとして \fIint\fP 変数に OR
+演算で格納することができる。
+.SS メッセージキュー
+メッセージキューは正の整数 (\fImsqid\fP)  によって識別され、 \fI<sys/msg.h>\fP に定義されている構造体
+\fIstruct msqid_ds\fP に結びつけられている。 この構造体は以下のメンバーを含んでいる:
+.in +4n
+.nf
+
+struct msqid_ds {
+    struct ipc_perm msg_perm;
+    msgqnum_t       msg_qnum;    /* キューにあるメッセージの数 */
+    msglen_t        msg_qbytes;  /* キューの最大バイト数 */
+    pid_t           msg_lspid;   /* 最後に msgsnd(2) をした PID */
+    pid_t           msg_lrpid;   /* 最後に msgrcv(2) をした PID */
+    time_t          msg_stime;   /* 最後に msgsnd(2) をした時間 */
+    time_t          msg_rtime;   /* 最後に msgrcv(2) をした時間 */
+    time_t          msg_ctime;   /* 最後に変更された時間 */
+};
+.fi
+.in
+.TP  11
+\fImsg_perm\fP
+メッセージキューへのアクセス許可を指定する \fIipc_perm\fP 構造体。
+.TP 
+\fImsg_qnum\fP
+現在、このメッセージキューにあるメッセージの数。
+.TP 
+\fImsg_qbytes\fP
+メッセージキューに入れることができるメッセージの最大バイト数。
+.TP 
+\fImsg_lspid\fP
+最後に \fBmsgsnd\fP(2)  システムコールを行なったプロセスの ID。
+.TP 
+\fImsg_lrpid\fP
+最後に \fBmsgrcv\fP(2)  システムコールを行なったプロセスの ID。
+.TP 
+\fImsg_stime\fP
+最後に \fBmsgsnd\fP(2)  システムコールを行なった時間。
+.TP 
+\fImsg_rtime\fP
+最後に \fBmsgrcv\fP(2)  を行なった時間。
+.TP 
+\fImsg_ctime\fP
+最後に \fImsqid_ds\fP 構造体のメンバーが変更された時間。
+.SS セマフォー集合
+セマフォー集合は正の整数 (\fIsemid\fP)  によって識別され、 \fI<sys/sem.h>\fP に定義されている構造体
+\fIstruct semid_ds\fP に結びつけられている。 この構造体は以下のメンバーを含んでいる:
+.in +4n
+.nf
+
+struct semid_ds {
+    struct ipc_perm sem_perm;
+    time_t          sem_otime;   /* 最後に操作した時間 */
+    time_t          sem_ctime;   /* 最後に変更した時間 */
+    unsigned long   sem_nsems;   /* 集合の中にあるセマフォー数 */
+};
+.fi
+.in
+.TP  11
+\fIsem_perm\fP
+セマフォー集合へのアクセス許可を指定する \fIipc_perm\fP 構造体。
+.TP 
+\fIsem_otime\fP
+最後に \fBsemop\fP(2)  システムコールを行なった時間。
+.TP 
+\fIsem_ctime\fP
+最後に \fBsemctl\fP(2)  を行なって上記の構造体のメンバーを変更するか、セマフォー集合に属する セマフォーを変更した時間。
+.TP 
+\fIsem_nsems\fP
+セマフォー集合の中にあるセマフォーの数。 集合の中にあるそれぞれのセマフォーは負でない整数によって参照され、 \fB0\fP から
+\fIsem_nsems\-1\fP までの番号を持つ。
+.PP
+セマフォーは \fIstruct sem\fP 型のデータ構造体であり、以下のメンバーを含んでいる:
+.in +4n
+.nf
+
+.\"    unsigned short semncnt; /* nr awaiting semval to increase */
+.\"    unsigned short semzcnt; /* nr awaiting semval = 0 */
+struct sem {
+    int semval;  /* セマフォーの値 */
+    int sempid;  /* 最後に操作したプロセス ID */
+};
+.fi
+.in
+.TP  11
+\fIsemval\fP
+セマフォー値: 負でない整数。
+.TP 
+\fIsempid\fP
+.\".TP
+.\".I semncnt
+.\"Number of processes suspended awaiting for
+.\".I semval
+.\"to increase.
+.\".TP
+.\".I semznt
+.\"Number of processes suspended awaiting for
+.\".I semval
+.\"to become zero.
+このセマフォーを最後に操作したプロセスの ID。
+.SS 共有メモリセグメント
+共有メモリセグメントは正の整数 (\fIshmid\fP)  によって識別され、 \fI<sys/shm.h>\fP に定義されている
+\fIstruct shmid_ds\fP 構造体に結びつけられている。 この構造体は以下のメンバーを含んでいる:
+.in +4n
+.nf
+
+struct shmid_ds {
+    struct ipc_perm shm_perm;
+    size_t          shm_segsz;   /* セグメントのサイズ */
+    pid_t           shm_cpid;    /* 作成者のプロセス ID */
+    pid_t           shm_lpid;    /* 最後に操作したプロセス ID */
+    shmatt_t        shm_nattch;  /* 現在、付加している数 */
+    time_t          shm_atime;   /* 最後に付加した時間 */
+    time_t          shm_dtime;   /* 最後に分離した時間 */
+    time_t          shm_ctime;   /* 最後に変更した時間 */
+};
+.fi
+.in
+.TP  11
+\fIshm_perm\fP
+共有メモリセグメントへのアクセス許可を指定した \fIipc_perm\fP 構造体。
+.TP 
+\fIshm_segsz\fP
+共有メモリセグメントのバイト数。
+.TP 
+\fIshm_cpid\fP
+共有メモリセグメントを作成したプロセスの ID。
+.TP 
+\fIshm_lpid\fP
+最後に \fBshmat\fP(2)  または \fBshmdt\fP(2)  システムコールを実行したプロセスの ID。
+.TP 
+\fIshm_nattch\fP
+この共有メモリセグメントをメモリに付加 (attach) しているプロセスの数。
+.TP 
+\fIshm_atime\fP
+最後に \fBshmat\fP(2)  システムコールを行なった時間。
+.TP 
+\fIshm_dtime\fP
+最後に \fBshmdt\fP(2)  システムコールを行なった時間。
+.TP 
+\fIshm_ctime\fP
+最後に \fBshmctl\fP(2)  システムコールを行なって、 \fIshmid_ds\fP 構造体を変更した時間。
+.SH 関連項目
+\fBipcmk\fP(1), \fBipcrm\fP(1), \fBipcs\fP(1), \fBipc\fP(2), \fBmsgctl\fP(2), \fBmsgget\fP(2),
+\fBmsgrcv\fP(2), \fBmsgsnd\fP(2), \fBsemctl\fP(2), \fBsemget\fP(2), \fBsemop\fP(2),
+\fBshmat\fP(2), \fBshmctl\fP(2), \fBshmdt\fP(2), \fBshmget\fP(2), \fBftok\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index ba9e9f1..9cc763a 100644 (file)
@@ -285,7 +285,7 @@ TCP keep\-alive プローブの最大回数。 この回数だけ試しても接
 \fItcp_keepalive_time\fP (integer; default: 7200; Linux 2.2 以降)
 .\" Since 2.1.43
 接続がアイドル状態になってから、keep\-alive プローブを送信するまでの時間を秒単位で指定する。 \fBSO_KEEPALIVE\fP
\82½ã\82±ã\83\83ã\83\88ã\82ªã\83\97ã\82·ã\83§ã\83³ã\81\8cæ\9c\89å\8a¹ã\81«ã\81ªã\81£ã\81¦ã\81\84ã\81ªã\81\84ã\81¨ keep\-alive ã\81¯é\80\81ã\82\89ã\82\8cã\81ªã\81\84。 デフォルト値は 7200 秒 (2 時間)。 keep\-alive
\82½ã\82±ã\83\83ã\83\88ã\82ªã\83\97ã\82·ã\83§ã\83³ã\81\8cæ\9c\89å\8a¹ã\81«ã\81ªã\81£ã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81®ã\81¿ keep\-alive ã\81¯é\80\81ä¿¡ã\81\95ã\82\8cã\82\8b。 デフォルト値は 7200 秒 (2 時間)。 keep\-alive
 が有効になっている場合、 さらにおよそ 11 分 (75 秒間隔の 9 プローブ分)  経過するとアイドル状態の接続は終了させられる。
 
 .\"
@@ -721,6 +721,6 @@ RFC\ 2581: TCP 輻輳制御アルゴリズム。
 .br
 RFC\ 2018 と RFC\ 2883: SACK とその拡張。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 6bfa9ea..459fd1c 100644 (file)
@@ -47,6 +47,6 @@ termio \- System V 端末ドライバインタフェース
 \fBreset\fP(1), \fBsetterm\fP(1), \fBstty\fP(1), \fBtermios\fP(3), \fBtty\fP(4),
 \fBtty_ioctl\fP(4)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man7/time.7 b/manual/LDP_man-pages/draft/man7/time.7
new file mode 100644 (file)
index 0000000..07a3ffc
--- /dev/null
@@ -0,0 +1,119 @@
+.\" Copyright (c) 2006 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" 2008-06-24, mtk: added some details about where jiffies come into
+.\"     play; added section on high-resolution timers.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH TIME 7 2012\-10\-28 Linux "Linux Programmer's Manual"
+.SH 名前
+time \- 時間とタイマの概要
+.SH 説明
+.SS "実時間 (real time) とプロセス時間"
+\fI実時間\fPは、特定の時点から計った時間と定義される。 特定の時点とは、過去の標準的な時点 (下記の紀元 (Epoch) とカレンダ時刻の説明を参照)
+や、 プロセスの一生における何らかの時点 (例えば、開始時) である (\fI経過時間\fP)。
+
+\fIプロセス時間\fPは、プロセスによって使われた総 CPU 時間と定義される。 多くの場合、\fIユーザ\fP時間と\fIシステム\fP時間に分けられる。 ユーザ
+CPU 時間は、コードをユーザモードで実行するのに使った時間である。 システム CPU 時間は、そのプロセスのために
+カーネルがシステムモードで実行するのに使った時間である (例えば、システムコールを実行するのに使った時間)。 \fBtime\fP(1)
+コマンドはプログラムの実行に費された総 CPU 時間を計るのに使用される。 プログラムは、自身が費した総 CPU 時間を \fBtimes\fP(2),
+\fBgetrusage\fP(2), \fBclock\fP(3)  を使って計ることができる。
+.SS ハードウェアクロック
+多くのコンピュータが (電池で駆動される) ハードウェアクロックを持っている。 カーネルは起動時にソフトウェアクロックを初期化するために
+ハードウェアクロックを読み込む。 より詳しい情報は、 \fBrtc\fP(4)  と \fBhwclock\fP(8)  を参照すること。
+.SS "ソフトウェアクロック, HZ, Jiffy"
+.\" semtimedop(), mq_timedwait(), io_getevents(), poll() are the same
+.\" futexes and thus sem_timedwait() seem to use high-res timers.
+タイムアウトを設定したり (例えば \fBselect\fP(2), \fBsigtimedwait\fP(2))、 CPU 時間を計測したり (例えば
+\fBgetrusage\fP(2))\fBする様々なシステムコールの精度は\fP \fIソフトウェアクロック\fP の分解能 (resolution) に制限される。
+ソフトウェアクロックとは、カーネルが管理する \fIjiffy\fP 単位で時間を計測するクロックのことである。 jiffy の大きさはカーネル定数
+\fIHZ\fP の値で決定される。
+
+\fIHZ\fP の値はカーネルのバージョンとハードウェアプラットフォームで異なる。 i386 の場合は以下の通りである: 2.4.x
+とそれより前のカーネルでは、HZ は 100 であったので、 jiffy の値は 0.01 秒になっていた。 2.6.0 以降では、HZ は 1000
+に増やされたので、jiffy の値は 0.001 秒である。 カーネル 2.6.13 以降では、HZ の値はカーネル設定パラメータになり、 100,
+250 (デフォルト), 1000 という値にできる。 それぞれ jiffy の値は 0.01, 0.004, 0.001 秒になる。 カーネル
+2.6.20 以降では、300 も利用できるようになっている。 300 は一般的な映像フレームレートの公倍数である (PAL, 25HZ; NTSC,
+30HZ)。
+
+.\" glibc gets this info with a little help from the ELF loader;
+.\" see glibc elf/dl-support.c and kernel fs/binfmt_elf.c.
+.\"
+\fBtimes\fP(2)  システムコールは特殊なケースであり、 このシステムコールはカーネル定数 \fIUSER_HZ\fP
+で定義された粒度で時間を報告する。 ユーザ空間のアプリケーションは \fIsysconf(_SC_CLK_TCK)\fP
+を使ってこの定数の値を知ることができる。
+.SS 高精度タイマ
+Linux 2.6.21 より前では、タイマやスリープ関連のシステムコールの精度も jiffy のサイズにより制限されていた。
+
+Linux 2.6.21 以降では、Linux は高精度タイマ (high\-resolution timers; HRTs)  をサポートしており、
+\fBCONFIG_HIGH_RES_TIMERS\fP で制御できる。 高精度タイマをサポートしているシステムでは、タイマとスリープ関連のシステムコール
+の精度はもはや jiffy に制約されることはなく、 ハードウェアが許す限りの精度となる (最近のハードウェアではマイクロ秒単位の精度が一般的である)。
+高精度タイマがサポートされているかは、 \fBclock_getres\fP(2)  を呼び出して分解能を確認するか、 \fI/proc/timer_list\fP
+内の "resolution" エントリを参照するかで判断できる。
+
+高精度タイマはすべてのハードウェアアーキテクチャでサポートされている 訳ではない (対応しているアーキテクチャは x86, arm, powerpc
+である)。
+.SS 紀元
+UNIX システムは時刻を 紀元 (1970\-01\-01 00:00:00 +0000 (UTC)) からの秒数で表現する。
+
+プログラムは \fIカレンダ時刻\fP を \fBgettimeofday\fP(2)  を使って計ることができる。 この関数は紀元からの経過時間を
+(秒とマイクロ秒で) 返す。 \fBtime\fP(2)  は同様の情報を提供するが、最も近い秒の精度しかない。 システム時刻は
+\fBsettimeofday\fP(2)  で変更できる。
+.SS 要素別の時刻
+ライブラリ関数の中には \fItm\fP 型の構造体を使うものがある。 この構造体は\fI要素別の時刻\fPを表し、 時刻の値を別々の要素
+(年・月・日・時・分・秒など) に分けて格納する。 この構造体は \fBctime\fP(3)  に記述されており、カレンダ時刻を要素別の時刻に変換する
+関数についても記述されている。 要素別の時刻を表示可能な文字列に変換する関数については、 \fBctime\fP(3), \fBstrftime\fP(3),
+\fBstrptime\fP(3)  に記述されている。
+.SS タイマのスリープと設定
+様々なシステムコールと関数により、指定された一定の時間、 プログラムはスリープ (実行を停止) することが可能である。 \fBnanosleep\fP(2),
+\fBclock_nanosleep\fP(2), \fBsleep\fP(3)  を参照すること。
+
+様々なシステムコールにより、プロセスは将来のある時点で 有効期間が終了するタイマを設定できる。 またオプションとして繰り返し間隔が指定できるものもある。
+\fBalarm\fP(2), \fBgetitimer\fP(2), \fBtimerfd_create\fP(2), \fBtimer_create\fP(2)
+を参照すること。
+.SS "Timer slack"
+Since Linux 2.6.28, it is possible to control the "timer slack" value for a
+thread.  The timer slack is the length of time by which the kernel may delay
+the wake\-up of certain system calls that block with a timeout.  Permitting
+this delay allows the kernel to coalesce wake\-up events, thus possibly
+reducing the number of system wake\-ups and saving power.  For more details,
+see the description of \fBPR_SET_TIMERSLACK\fP in \fBprctl\fP(2).
+.SH 関連項目
+.ad l
+.nh
+\fBdate\fP(1), \fBtime\fP(1), \fBadjtimex\fP(2), \fBalarm\fP(2), \fBclock_gettime\fP(2),
+\fBclock_nanosleep\fP(2), \fBgetitimer\fP(2), \fBgetrlimit\fP(2), \fBgetrusage\fP(2),
+\fBgettimeofday\fP(2), \fBnanosleep\fP(2), \fBstat\fP(2), \fBtime\fP(2),
+\fBtimer_create\fP(2), \fBtimerfd_create\fP(2), \fBtimes\fP(2), \fButime\fP(2),
+\fBadjtime\fP(3), \fBclock\fP(3), \fBclock_getcpuclockid\fP(3), \fBctime\fP(3),
+\fBpthread_getcpuclockid\fP(3), \fBsleep\fP(3), \fBstrftime\fP(3), \fBstrptime\fP(3),
+\fBtimeradd\fP(3), \fBusleep\fP(3), \fBrtc\fP(4), \fBhwclock\fP(8)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8fda424..9af80c4 100644 (file)
@@ -151,6 +151,6 @@ RFC\ 1122 : ホストの必要条件
 .br
 RFC\ 1191 : path MTU discovery の記述
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 8843cdd..cda8c13 100644 (file)
@@ -117,6 +117,6 @@ RFC\ 3828 for the Lightweight User Datagram Protocol (UDP\-Lite).
 
 Linux カーネルソース内の \fIDocumentation/networking/udplite.txt\fP
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 0a2583d..e0f3d89 100644 (file)
@@ -240,6 +240,6 @@ GUI アプリケーション (HTML ビューア・ワードプロセッサ) で
 .SH 関連項目
 \fBsetlocale\fP(3), \fBcharsets\fP(7), \fButf\-8\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 4b498d6..2a3e660 100644 (file)
@@ -45,7 +45,7 @@ a     アト(atto)    10^\-18 = 0.000000000000000001
 f      フェムト(femto)     10^\-15 = 0.000000000000001
 p      ピコ(pico)    10^\-12 = 0.000000000001
 n      ナノ(nano)    10^\-9  = 0.000000001
-u      マイクロ(micro)     10^\-6  = 0.000001
+\(mc   マイクロ(micro)     10^\-6  = 0.000001
 m      ミリ(milli)   10^\-3  = 0.001
 c      センチ(centi)        10^\-2  = 0.01
 d      デシ(deci)    10^\-1  = 0.1
@@ -115,6 +115,6 @@ hda: 120064896 sectors (61473 MB) w/2048KiB Cache
 
 MB はメガバイトで、KiB はキビバイトである。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2992993..e624b9c 100644 (file)
@@ -272,6 +272,6 @@ UNIX ドメインのストリーム・ソケットでは、 帯域外データ
 \fBrecvmsg\fP(2), \fBsendmsg\fP(2), \fBsocket\fP(2), \fBsocketpair\fP(2), \fBcmsg\fP(3),
 \fBcapabilities\fP(7), \fBcredentials\fP(7), \fBsocket\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man7/uri.7 b/manual/LDP_man-pages/draft/man7/uri.7
new file mode 100644 (file)
index 0000000..5203384
--- /dev/null
@@ -0,0 +1,497 @@
+.\" (C) Copyright 1999-2000 David A. Wheeler (dwheeler@dwheeler.com)
+.\"
+.\" %%%LICENSE_START(VERBATIM)
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
+.\"
+.\" Fragments of this document are directly derived from IETF standards.
+.\" For those fragments which are directly derived from such standards,
+.\" the following notice applies, which is the standard copyright and
+.\" rights announcement of The Internet Society:
+.\"
+.\" Copyright (C) The Internet Society (1998).  All Rights Reserved.
+.\" This document and translations of it may be copied and furnished to
+.\" others, and derivative works that comment on or otherwise explain it
+.\" or assist in its implementation may be prepared, copied, published
+.\" and distributed, in whole or in part, without restriction of any
+.\" kind, provided that the above copyright notice and this paragraph are
+.\" included on all such copies and derivative works.  However, this
+.\" document itself may not be modified in any way, such as by removing
+.\" the copyright notice or references to the Internet Society or other
+.\" Internet organizations, except as needed for the purpose of
+.\" developing Internet standards in which case the procedures for
+.\" copyrights defined in the Internet Standards process must be
+.\" followed, or as required to translate it into languages other than English.
+.\"
+.\" Modified Fri Jul 25 23:00:00 1999 by David A. Wheeler (dwheeler@dwheeler.com)
+.\" Modified Fri Aug 21 23:00:00 1999 by David A. Wheeler (dwheeler@dwheeler.com)
+.\" Modified Tue Mar 14 2000 by David A. Wheeler (dwheeler@dwheeler.com)
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH URI 7 2012\-08\-05 Linux "Linux Programmer's Manual"
+.SH 名前
+uri, url, urn \- uniform resource identifier (URI), URL と URN も含む.
+.SH 書式
+.nf
+.HP 0.2i
+URI = [ absoluteURI | relativeURI ] [ "#" fragment ]
+.HP
+absoluteURI = scheme ":" ( hierarchical_part | opaque_part )
+.HP
+relativeURI = ( net_path | absolute_path | relative_path ) [ "?" query ]
+.HP
+scheme = "http" | "ftp" | "gopher" | "mailto" | "news" | "telnet" |
+         "file" | "man" | "info" | "whatis" | "ldap" | "wais" | \&...
+.HP
+hierarchical_part = ( net_path | absolute_path ) [ "?" query ]
+.HP
+net_path = "//" authority [ absolute_path ]
+.HP
+absolute_path = "/"  path_segments
+.HP
+relative_path = relative_segment [ absolute_path ]
+.fi
+.SH 説明
+.PP
+Uniform Resource Identifier (URI)  は抽象的・物理的なリソース (web ページなど)
+を識別するための短い文字列である。 Uniform Resource Locator (URL) は URI の一種で、
+リソースの名前などの属性でではなく、 そのリソースに対応するアクセスメカニズムを通してリソースを指定する (つまりネットワーク上の「場所
+(location)」を指定する)。 Uniform Resource Name (URN) は URI の一種で、
+これは対象のリソースが廃棄されたり利用できなくなった場合にも、 グローバルに他と重なることなく永続しなければならない。
+.PP
+URI は、 web ブラウザなどのツールで ハイパーテキストリンクのリンク先を指定する時の標準的な方法である。 文字列
+"http://www.kernelnotes.org" は URL である (従って URI でもある)。多くの人々は、 URL という言葉をほぼ
+URI の 同義語として使っている (しかし技術的には URL は URI のサブセットである)。
+.PP
+URI は絶対的にも相対的にも指定できる。 絶対的な指定は、リソースをコンテクストに依存しないかたちで参照する。
+相対的な指定は、リソースを現在のコンテクストからの差異によって記述する。 相対パス参照では、 "." および ".." だけのパス部分 (path
+segment)  は特別な意味を持ち、 それぞれ「現在の階層レベル」および「現在の階層の一つ上のレベル」 として扱われる (UNIX
+風のシステムと同様)。 コロン文字を含むパス部分は相対 URI パスの先頭に用いることはできない (つまり "this:that"
+はダメ)。スキーム名と区別できないからである。 このような場合には ./ を前置すること (つまり "./this:that" とする)。 MS\-DOS
+の子孫 (Microsoft Windows など) は、 デバイス名のコロンを URI では垂直バー ("|") に置き換える。 したがって "C:"
+は "C|" となる。
+.PP
+フラグメント指定子 (fragment identifier) は、(もし含まれていれば)  リソース中の名前付けされた特定の部分 (フラグメント)
+を参照する。 \(aq#\(aq 指定子以降の文字列がフラグメントを指定する。 \(aq#\(aq で始まる URI
+は現在のリソース中のフラグメントを参照する。
+.SS 使い方
+URI のスキームには色々な種類があり、 それぞれ固有のルールや意味が追加されている。 しかしできるだけ統一したものにしようという努力もなされている。
+例えば、多くの URL スキームは「機関 (authority)」に対して以下の書式 (ここでは \fIip_server\fP と呼ぶことにする)
+を許している (角括弧内部は省略可能)。
+.HP
+\fIip_server = \fP[\fIuser\fP [ : \fIpassword\fP ] @ ] \fIhost\fP [ : \fIport\fP]
+.PP
+このフォーマットには、ユーザ名、ユーザ名+パスワードを指定できる。 ポート番号を追加することも可能である。 \fIhost\fP
+はホストコンピュータの名前で、 DNS で定義される名前か IP アドレス (ピリオドで区切られた数字) で指定する。したがって URI
+<http://fred:fredpassword@xyz.com:8080/> は、ホスト xyz.com に fred として
+(パスワードを使って)  ポート 8080 を使ってログインする。 パスワードは可能なら URI には含めないほうが良いだろう。
+パスワードを直書きすると様々なセキュリティ上のリスクが生じるからである。 URL にユーザ名だけを与え、パスワードを与えない場合は、
+リモートサーバはパスワードを要求してくる。 URL を解釈したプログラムが、ユーザにこの入力を促すことになろう。
+.PP
+以下に、 UNIX 風のシステムで非常に良く用いられており、 多くのツールが理解するスキームを示す。 URI
+を使うツールの多くでは、内部スキームや特殊なスキームも 使えることが多い。そのようなスキームに関してはツールのドキュメントを見ること。
+.PP
+\fBhttp \- Web (HTTP) サーバ\fP
+.PP
+http://\fIip_server\fP/\fIpath\fP
+.br
+http://\fIip_server\fP/\fIpath\fP?\fIquery\fP
+.PP
+これは web (HTTP) サーバにアクセスするための URL である。 デフォルトのポートは 80。パスがディレクトリを参照しているときは、
+返される情報は web サーバが選択する。通常は、 "index.html" や "index.htm" のようなファイルがあれば、その内容が返される。
+なければ、カレントディレクトリのリストが (適切なリンクとともに) 生成されて 返される。例としては <http://lwn.net>
+など。
+.PP
+問い合わせ (query) を、古い "isindex" フォーマットによって送ることもできる。 このフォーマットは単語またはフレーズからなり、等号
+(=) は含まない。 より長い "GET" フォーマットでも問い合わせは行える。 このフォーマットには、一つ以上の問い合わせエントリが
+\fIkey\fP=\fIvalue\fP という形式で含まれる。それぞれのエントリはアンパサンド (&) で区切られる。 \fIkey\fP
+は複数個指定することもできる。しかしそれに意味があるかどうかは web サーバとアプリケーションプログラムが決める。 HTML/XML/SGML と
+GET 問い合わせ形式の間には、不幸な関係がある。 一つ以上のキーの含まれる URI が SGML/XML 文書 (HTML もそう)
+に埋めこまれる際には、アンパサンド (&) は &amp; と書かなければならない。 全ての問い合わせがこの形式を使うわけではない。
+フォームが長くなると URI に入れるには長すぎるから、 別の通信メカニズム (POST と呼ばれる) が用いられる。 POST では URI
+にはデータは含まれない。 より詳しい情報は、
+.UR http://www.w3.org\:/CGIE
+.UE
+にある Common
+Gateway Interface の仕様書を見よ。
+.PP
+\fBftp \- ファイル転送プロトコル (FTP)\fP
+.PP
+ftp://\fIip_server\fP/\fIpath\fP
+.PP
+これはファイル転送プロトコル (FTP) を通してファイルにアクセスするための URL である。デフォルトの (制御用) ポートは 21 である。
+ユーザ名がない場合には、ユーザ名 anonymous が与えられる。 そしてその場合には、クライアントの多くは要求した人の
+インターネットメールアドレスをパスワードとして与える。 例としては
+<ftp://ftp.is.co.za/rfc/rfc1808.txt> など。
+.PP
+\fBgofer \- Gofer サーバ\fP
+.PP
+gopher://\fIip_server\fP/\fIgophertype selector\fP
+.br
+gopher://\fIip_server\fP/\fIgophertype selector\fP%09\fIsearch\fP
+.br
+gopher://\fIip_server\fP/\fIgophertype selector\fP%09\fIsearch\fP%09\fIgopher+_string\fP
+.br
+.PP
+デフォルトの gopher ポートは 70 である。 \fIgophertype\fP は 1 文字からなるフィールドで、 URL が参照している
+Gopher のリソースタイプを示す。 パス全体が空であってもよく、その場合は区切りの "/" も省略できる。 このとき gophertype
+のデフォルトは "1" になる。
+.PP
+\fIselector\fP は Gopher セレクタ文字列である。Gopher プロトコルでは、 Gopher セレクタ文字列はオクテット文字からなり、
+16進数の 09 (US\-ASCII の HT または tab)、 0A (US\-ASCII の LF 文字)、 0D (US\-ASCII の CR
+文字) 以外ならどんなオクテットも指定できる。
+.PP
+\fBmailto \- 電子メールアドレス\fP
+.PP
+mailto:\fIemail\-address\fP
+.PP
+これは電子メールアドレスで、通常 \fIname\fP@\fIhostname\fP という形式をとる。電子メールアドレスの正しいフォーマットに関する
+より詳しい情報は \fBmailaddr\fP(7)  を見よ。 % 文字はすべて %25 と書き直さなければならないことに注意。 例としては
+<mailto:dwheeler@dwheeler.com> など。
+.PP
+\fBnews \- ニュースグループ・ニュースメッセージ\fP
+.PP
+news:\fInewsgroup\-name\fP
+.br
+news:\fImessage\-id\fP
+.PP
+\fInewsgroup\-name\fP はピリオドで区切られた階層的な名前である。例えば "comp.infosystems.www.misc" など。
+<newsgroup\-name> が "*" (つまり <news:*>) の場合には、
+「参照できる全てのニュースグループ」の意味になる。 例としては <news:comp.lang.ada> など。
+.PP
+A \fImessage\-id\fP corresponds to the Message\-ID of
+.UR http://www.ietf.org\:/rfc\:/rfc1036.txt
+IETF RFC\ 1036,
+.UE
+without the
+enclosing "<" and ">"; it takes the form
+\fIunique\fP@\fIfull_domain_name\fP.  A message identifier may be distinguished
+from a news group name by the presence of the "@" character.
+.PP
+\fBtelnet \- telnet ログイン\fP
+.PP
+telnet://\fIip_server\fP/
+.PP
+Telnet URL スキームは対話的なテキストサービスに Telnet プロトコルを 通してアクセスするために用いられる。最後の "/"
+文字は省略してよい。 例としては <telnet://melvyl.ucop.edu/> など。
+.PP
+\fBfile \- 通常のファイル\fP
+.PP
+file://\fIip_server\fP/\fIpath_segments\fP
+.br
+file:\fIpath_segments\fP
+.PP
+これはローカルに直接アクセスできるファイルを示す。 特殊なケースとして、 \fIhost\fP には "localhost"
+という文字列を用いたり、空文字にしてもよい。 これは「URI が解釈されたマシン」とみなされる。 path
+がディレクトリの場合は、ビューアはディレクトリの内容を リンクを張ったかたちで表示するとよいだろう。
+しかし現在は、まだ全てのビューアがこの動作をするわけではない。 KDE は生成ファイル (generated file) を URL
+<file:/cgi\-bin> の形式でサポートしている。 与えられたファイルが見付からなかった場合は、
+ファイル名をグロブによって展開すると良いかもしれない (\fBglob\fP(7)  および \fBglob\fP(3)  を見よ)。
+.PP
+二つめの書式 (例えば <file:/etc/passwd>) もローカルファイルを参照する
+正しいフォーマットである。しかし古い標準ではこの書式を許していなかったので、 これを URI として認識しないプログラムも存在する。
+より汎用的な文法は、サーバ名に空文字を用いるもの、 つまり <file:///etc/passwd> のようなものである。
+この形式も指す内容は同じであり、パターンマッチやより古いプログラムでも URI として認識されやすい。
+もし意図するところが「現在の場所からスタート」なら、 スキームは一切用いるべきではない。 <../test.txt>
+のような、スキームに依存しない相対リンクを用いること。 このスキームの例としては <file:///etc/passwd> など。
+.PP
+\fBman \- man ページ文書\fP
+.PP
+man:\fIcommand\-name\fP
+.br
+man:\fIcommand\-name\fP(\fIsection\fP)
+.PP
+これはローカルのオンラインマニュアル (man) リファレスページを参照する。 command\-name には括弧とセクション番号を追加してもよい。
+セクション番号の意味について詳しく知りたい場合は \fBman\fP(7)  をみよ。この URI スキームは UNIX 風のシステム (Linux など)
+に特有のものであり、現在はまだ IETF による登録はされていない。 例としては <man:ls(1)> など。
+.PP
+\fBinfo \- info ページ文書\fP
+.PP
+info:\fIvirtual\-filename\fP
+.br
+info:\fIvirtual\-filename\fP#\fInodename\fP
+.br
+info:(\fIvirtual\-filename\fP)
+.br
+info:(\fIvirtual\-filename\fP)\fInodename\fP
+.PP
+このスキームは、オンラインの info リファレンスページ (texinfo ファイルから生成される) を参照する。 info ページは GNU
+ツールなどのプログラムで用いられている文書フォーマットである。 この URI スキームは UNIX 風のシステム (Linux など)
+に特有のものであり、現在はまだ IETF による登録はされていない。 この文書の執筆時において、 GNOME と KDE はそれぞれ異なる文法の URI
+を用いており、お互い相手の文法を受け入れない。 最初の 2 つの書式は GNOME の書式である。ノード名 (nodename)
+のスペースはすべてアンダースコアに変換される。 3 つめと 4 つめは KDE の書式である。ノード名のスペースは そのままスペースで書かれる (URI
+の標準では禁止されているのだが)。 将来は多くのツールがこれらの書式すべてを理解するようになり、
+ノード名のアンダースコア、スペースを両方とも理解できるように なることを期待したい。 GNOME でも KDE でも、
+ノード名が省略された場合は、ノード名として "Top" が用いられる。 GNOME 書式の例としては <info:gcc> や
+<info:gcc#G++_and_GCC> など、 KDE 書式の例としては <info:(gcc)> や
+<info:(gcc)G++ and GCC> など。
+.PP
+\fBwhatis \- 文書検索\fP
+.PP
+whatis:\fIstring\fP
+.PP
+このスキームは、コマンドに関する短い (1 行の) 説明を集めた データベースを検索し、 string を含む文字列をリストして返す。
+単語が完全にマッチした結果だけが返される。 \fBwhatis\fP(1)  を見よ。 この URI スキームは UNIX 風のシステム (Linux など)
+に特有のものであり、現在はまだ IETF による登録はされていない。
+.PP
+\fBghelp \- GNOME ヘルプ文書\fP
+.PP
+ghelp:\fIname\-of\-application\fP
+.PP
+与えられた application に対応する GNOME help をロードする。 この書式を用いた文書はまだあまり多くない。
+.PP
+\fBldap \- 軽量ディレクトリアクセスプロトコル\fP
+.PP
+ldap://\fIhostport\fP
+.br
+ldap://\fIhostport\fP/
+.br
+ldap://\fIhostport\fP/\fIdn\fP
+.br
+ldap://\fIhostport\fP/\fIdn\fP?\fIattributes\fP
+.br
+ldap://\fIhostport\fP/\fIdn\fP?\fIattributes\fP?\fIscope\fP
+.br
+ldap://\fIhostport\fP/\fIdn\fP?\fIattributes\fP?\fIscope\fP?\fIfilter\fP
+.br
+ldap://\fIhostport\fP/\fIdn\fP?\fIattributes\fP?\fIscope\fP?\fIfilter\fP?\fIextensions\fP
+.PP
+This scheme supports queries to the Lightweight Directory Access Protocol
+(LDAP), a protocol for querying a set of servers for hierarchically
+organized information (such as people and computing resources).  See
+.UR http://www.ietf.org\:/rfc\:/rfc2255.txt
+RFC\ 2255
+.UE
+for more
+information on the LDAP URL scheme.  The components of this URL are:
+.IP hostport 12
+クエリーを行う LDAP サーバ。ホスト名を書く。続けてコロンとポート番号を 追加することもできる。 LDAP のデフォルトのポートは TCP ポート
+389 である。 省略されると、どの LDAP サーバを用いるかはクライアントが決定する。
+.IP dn
+the LDAP Distinguished Name, which identifies the base object of the LDAP
+search (see
+.UR http://www.ietf.org\:/rfc\:/rfc2253.txt
+RFC\ 2253
+.UE
+section 3).
+.IP attributes
+コンマ区切りの、返される属性 (attribute) のリスト。 RFC\ 2251 の section 4.1.5
+を見よ。省略されると全ての属性が返される。
+.IP scope
+検索のスコープを指定する。 "base" (base オブジェクト検索), "one" (1 レベル検索), "sub" (サブツリー検索)
+のいずれかを指定する。 省略すると "base" が仮定される。
+.IP filter
+specifies the search filter (subset of entries to return).  If omitted, all
+entries should be returned.  See
+.UR http://www.ietf.org\:/rfc\:/rfc2254.txt
+RFC\ 2254
+.UE
+section 4.
+.IP extensions
+コンマで区切られた type=value ペアのリスト。 ここで =value の部分は、それを要求しないオプションに対しては 省略できる。
+\(aq!\(aq が前置された extension は critical (サポートしていなければならない) であり、 そうでなければ
+critical ではない (省略できる)。
+.PP
+LDAP のクエリーは、例とともに説明するのが最も簡単である。 次の例は、 ldap.itd.umich.edu に、 U.S. にある
+University of Michigan の情報を尋ねる例である。
+.PP
+.nf
+ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US
+.fi
+.PP
+郵便用の住所属性だけを取得する場合は、 次のようにリクエストする:
+.PP
+.nf
+ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US?postalAddress
+.fi
+.PP
+host.com のポート 6666 に、 University of Michigan にいる common name (cn) が "Babs
+Jenson" の人の情報を尋ねる場合は、 次のようにリクエストする:
+.PP
+.nf
+ldap://host.com:6666/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen)
+.fi
+.PP
+\fBwais \- 広域情報サービス\fP
+.PP
+wais://\fIhostport\fP/\fIdatabase\fP
+.br
+wais://\fIhostport\fP/\fIdatabase\fP?\fIsearch\fP
+.br
+wais://\fIhostport\fP/\fIdatabase\fP/\fIwtype\fP/\fIwpath\fP
+.PP
+This scheme designates a WAIS database, search, or document (see
+.UR http://www.ietf.org\:/rfc\:/rfc1625.txt
+IETF RFC\ 1625
+.UE
+for more
+information on WAIS).  Hostport is the hostname, optionally followed by a
+colon and port number (the default port number is 210).
+.PP
+最初の書式は WAIS のデータベースに対する検索の指定である。 二つめの書式は特定の WAIS データベース \fIdatabase\fP
+に対する検索の指定である。 三つめの書式は WAIS データベースにある特定の文書を取出す指定である。 \fIwtype\fP は WAIS
+のオブジェクト形式指定であり、 \fIwpath\fP は WAIS document\-id である。
+.PP
+\fBその他のスキーム\fP
+.PP
+他にも多くの URI スキームが存在する。 URI を受付けるほとんどのツールは、内部 URI のセットをサポートする (例えば Mozilla
+は内部情報用の about: というスキームを受付けるし、 GNOME ヘルプブラウザはいろいろな出発点用に toc: というスキームを持っている)。
+定義されたスキームはたくさんあるが、現時点で広く用いられてはいない (例えば prospero とか)。 nntp: スキームは news:
+スキームが好んで用いられるようになったので 使わないほうが良い。 URN は urn: スキームによって、階層的な名前空間 (例えば
+urn:ietf:... は IETF 文書を示す)  としてサポートされるべきであるが、現時点では URN はあまり用いられていない。
+全てのツールが全てのスキームをサポートしているわけではない。
+.SS 文字エンコード
+.PP
+URI では、色々な状況下で入力できるように、文字の種類を制限している。
+.PP
+以下の文字は予約されている。すなわち、これらの文字は URI に登場することがあるが、それらの利用法 (解釈のされ方) は
+予約された目的に制限されている (衝突するデータは URI にする前にエスケープしなければならない)。
+.IP
+   ; / ? : @ & = + $ ,
+.PP
+未予約文字 (unreserved character) は URI に使ってよい。 これには英字の大文字と小文字、10 進の数字、および
+以下の句読文字・記号が含まれる
+.IP
+ \- _ . ! ~ * ' ( )
+.PP
+他の文字はすべてエスケープしなければならない。 エスケープされたオクテットは 3 文字からなる: 先頭にパーセント文字
+"%"、それに続けてオクテットコードを表す 2 文字の 16 進数字である (16 進数の英字は大文字小文字どちらでも良い)。 例えば空白文字は
+"%20" のようにエスケープしなければならず、 タブ文字は "%09"、 "&" は "%26" となる。 パーセント文字 "%"
+は常にエスケープを示す予約された目的に用いられるので、 "%" 自身を表すには "%25" とエスケープしなければならない。
+クエリーのテキストでは、スペース文字をプラス記号 (+) でエスケープすることも 一般に良く行われる。この慣例は関連 RFC
+で実際に定義されているわけではない (代わりに %20 を推奨している) が、クエリーテキストを受付ける
+ツールは、この書式への対応を用意しておくべきであろう。 URI は、常に「エスケープされた」かたちで表示される。
+.PP
+未予約文字もエスケープすることができ、これによって URI の意味するところが変わるわけではない。 しかしURI
+にその非エスケープ文字が現れることが許されないような 特殊な場合を除いて、これは避けるべきである。 例えば、 HTTP URL の path において
+"%7e" が "~" の代わりに用いられることがあるが、 この二つは HTTP URL としては等価である。
+.PP
+US ASCII キャラクタセット以外の文字を URI として扱う場合、 HTML 4.1 規格 (section B.2) 及び IETF RFC\ 2718 (section 2.2.5) は 以下の手法を用いるよう推奨している。
+.IP 1. 4
+キャラクタ列を UTF\-8 (IETF RFC\ 2279, \fButf\-8\fP(7)  参照) に変換し、
+.IP 2.
+URI エスケープ機構を用いる。 つまり、安全でないオクテットを %HH でエンコードする。
+.SS "URI を書くには"
+URI を書く時には、ダブルクォートの内部に書く (例: "http://www.kernelnotes.org") か、 angle ブラケットで囲む
+(例: <http://lwn.net>) か、 一行に URI だけを書くかする。 ダブルクォートを使う人に警告: \fB絶対に\fP句読点
+(文末のピリオドやリスト区切りのコンマ) を URI の内部に移動してはならない。 代わりに angle ブラケットを使うか、
+外にある文字をクォーテーションマークの内部に 決して含めないような引用方式に切替えること。 後者の方式は "Hart's Rules" や
+"Oxford Dictionary for Writers and Editors" によれば 「新しい (new) 引用方式」あるいは「論理的
+(logical) な引用方式」 と呼ばれており、 イギリス人や世界中のハッカー達はこちらの慣習を好んでいる (より詳しい情報は Hacker
+Writing Style の Jargon File のセクション
+.UR http://www.fwi.uva.nl\:/~mes\:/jargon\:/h\:/HackerWritingStyle.html
+.UE
+を見よ)。 古い文書では、 "URL:" という文字列を URI の直前に挿入することを
+勧めているものもあるが、しかしこの形式はまったく流行しなかった。
+.PP
+URI の書式は曖昧さを排除するように設計されている。 しかし URI が広まるにつれ、昔ながらのメディア (TV、ラジオ、新聞、 看板などなど) は
+URI 参照を省略したかたち、すなわち 機関部とパス部だけでリソースを指定することが多くなっている (例:
+<www.w3.org/Addressing>)。 このような参照はマシンというよりは人間向けのもので、
+コンテキストベースの推測によって URI の補完が可能であることを あてにしているのである (例えば "www" ではじまるホスト名なら
+"http://" がつくだろうし、 "ftp" ではじまるホスト名なら "ftp://" がつくだろう)。
+多くのクライアントの実装では、この種の参照を推測によって解決する。 このような推測は時代とともに変わりうる。
+特に新しいスキームが導入されるとそうである。 URI の省略形では相対 URL パスの区別が付けられないので、 省略形 URI 参照は相対 URI
+の利用できるところでは使えない。 つまり定義済みのベース (ダイアログボックスなど)  がない場合に限って利用できる。
+文書内部でのハイパーテキストリンクには省略形 URI を使ってはならない。 上述の標準フォーマットを使うこと。
+.SH 準拠
+.PP
+.UR http://www.ietf.org\:/rfc\:/rfc2396.txt
+(IETF RFC\ 2396)
+.UE ,
+.UR http://www.w3.org\:/TR\:/REC\-html40
+(HTML 4.0)
+.UE .
+.SH 注意
+Linux システムで URI を受付けるツール (例えば web ブラウザなど) は、 上にあげた全てのスキームを (直接または間接に)
+扱えるべきである。 man: や info: も含めて、である。 スキームの処理に他のプログラムを実行するのは良いことだし、
+実はすすんでそうすべきである。
+.PP
+技術的には、フラグメントは URI の一部ではない。
+.PP
+URI (URL も含む) をデータフォーマットに埋めこむ方法に関する情報は、 そのフォーマットのドキュメントを見よ。 HTML は <A
+HREF="\fIuri\fP">\fItext\fP</A> を用いる。 texinfo は @uref{\fIuri\fP}
+という書式を用いる。 man と mdoc は、最近追加された UR マクロを使う。 あるいは URI をそのままテキストに埋めこむ (ビューアが
+:// を URI の一部と解釈できなければならない)。
+.PP
+デスクトップ環境である GNOME と KDE は、 それぞれ受付ける URI が (特にそれぞれのヘルプブラウザにおいて)  異なっている。 man
+ページをリストするには、 GNOME では <toc:man> を用い、 KDE では <man:(index)>
+を用いる。 また info ページをリストするには、 GNOME では <toc:info> を用い、 KDE では
+<info:(dir)> を用いる (本 man ページの著者は KDE のアプローチのほうが好みである。
+しかしより標準的な書式の方が更に良いが)。 一般に KDE は生成ファイル (generated file) のプレフィックスとして
+<file:/cgi\-bin/> を用いる。 KDE は HTML の文書を
+<file:/cgi\-bin/helpindex> 経由でアクセスするのが好みなようである。 GNOME は文書の保管・検索に
+ghelp スキームを用いる方法を取っているようだ。 どちらのブラウザも、現時点では file: によるディレクトリ参照を扱えない。
+したがってディレクトリ全体をブラウズ可能な URI で参照することが難しい。 先に述べたように、これら二つの環境では info: スキームの
+扱いが異なっている (おそらく最も重要な差異であろう)。 GNOME と KDE が共通 URI フォーマットに収斂することが望ましい。 この man
+ページが、将来はその収斂した結果を記述できることを望む。 この作業への助力を喚起したい。
+.SS セキュリティ
+.PP
+URI そのものはセキュリティの脅威を引き起こすものではない。 ある時点ではリソースの場所を与えていた URL が、
+ずっとそうでありつづけるという保証は一般にはない。 またある URL が、将来には別のリソースを示さないとも限らない。
+このような保証は、その名前空間とリソースとを管理している個人に 帰するものに過ぎない。
+.PP
+無害に見える操作 (リソースに関連づけられたエンティティの取得など)  によって、実際にはリモートにダメージを与える動作を引き起こすような URL
+を記述することも場合によっては可能である。 危険な URL の典型的なものは、そのネットワークプロトコルに
+予約されているポート番号とは異なるポートを指定しているものである。 URL の内容には命令が含まれていて、 そのプロトコルにしたがって解釈されたとき、
+予期されない動作を引起こすのである。 例をあげると、 gopher の URL によって、意図しないメッセージや なりすましメッセージなどが SMTP
+サーバ経由で送信されるようなことがあった。
+.PP
+そのプロトコルのデフォルト以外のポート番号を指定している URL を用いるときには注意すべきである。 特にその番号が予約空間の内部にある場合には。
+.PP
+URI に、そのプロトコルに対するデリミタがエスケープされたかたちで入っている 場合も注意が必要である (例えば telnet プロトコルに対する CR
+文字や LF 文字など)。 なぜならこれらは転送前にエスケープが外されないからである。
+これはプロトコルに反しており、予期しない、おそらくは害になるような リモート動作を引起こす結果となりかねない。
+.PP
+秘密にしておくべきパスワードを含んだ URI を使うのが 賢くないのは明らかである。特に、パスワードを URI の "userinfo"
+の部分に使うのは絶対に避けるべきである。 ただしその "password" のパラメータを意図的に公開したい場合は別であるが。
+.SH バグ
+.PP
+文書は様々な場所に置かれうる。したがって現時点では、 任意のフォーマットで書かれた一般のオンライン文書に対する良い URI スキームが 存在しない。
+<file:///usr/doc/ZZZ> 形式の参照は使えない。なぜなら
+ディストリビューションやローカルへのインストールの際の条件によって、 ファイルは異なるディレクトリに置かれることがあるからである (/usr/doc か
+/usr/local/doc か /usr/share かその他の場所か、などなど)。 また、ディレクトリ ZZZ
+は通常バージョンが変わると異なったものになる (ファイル名のグロブによってある程度克服できるだろうが)。 最後にもう一つ、文書をインターネットから
+(ローカルのファイルシステムに ファイルをロードするのではなく) 動的にロードする人々は、 なかなか file: スキームを使ってくれない。
+将来には新たな URI スキーム (例えば "userdoc:" のような) が追加され、 より詳しい文書へのクロスリファレンスが、
+その文書の正確な場所をプログラムが知らなくても可能になるかもしれない。 あるいは、ファイルシステム規格の将来の版で
+ファイルの場所の指定をより厳密にして、 file: スキームによる文書の位置指定が可能になるかもしれない。
+.PP
+プログラムやファイルフォーマットの多くでは、 URI を使ったリンクを取り込んだり実装したりする方法がない。
+.PP
+.\" .SH AUTHOR
+.\" David A. Wheeler (dwheeler@dwheeler.com) wrote this man page.
+プログラムの多くは、これらの URI フォーマットをすべては扱えない。 ユーザの環境 (テキストかグラフィックか、
+デスクトップ環境、ローカルユーザの好み、 現在実行されているツール) などを自動的に検知して、 任意の URI をロードし、その URI
+に適したツールを起動するような 標準的な仕組みがあるといいのだろうが。
+.SH 関連項目
+\fBlynx\fP(1), \fBman2html\fP(1), \fBmailaddr\fP(7), \fButf\-8\fP(7)
+
+.UR http://www.ietf.org\:/rfc\:/rfc2255.txt
+IETF RFC\ 2255
+.UE
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index d930867..3621bbc 100644 (file)
@@ -204,6 +204,6 @@ ISO/IEC 10646\-1:2000, Unicode 3.1, RFC\ 3629, Plan 9.
 .SH 関連項目
 \fBnl_langinfo\fP(3), \fBsetlocale\fP(3), \fBcharsets\fP(7), \fBunicode\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index cd95c4e..04475d2 100644 (file)
@@ -81,6 +81,6 @@ X.25.\(rq The URL is
 .UR ftp://ftp.pspt.fi\:/pub\:/ham\:/linux\:/ax25\:/x25doc.tgz
 .UE .
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a5f8b5f..e092896 100644 (file)
@@ -44,6 +44,6 @@ intro \- 管理コマンドと特権コマンドの説明
 .SS 著者と著作権
 著者と著作権に関しては各マニュアルページのソースのヘッダを参照すること。 これらはページごとに異なる可能性があることに注意してほしい。
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man8/ld.so.8 b/manual/LDP_man-pages/draft/man8/ld.so.8
new file mode 100644 (file)
index 0000000..dd0172d
--- /dev/null
@@ -0,0 +1,283 @@
+.\" %%%LICENSE_START(PUBLIC_DOMAIN)
+.\" This is in the public domain
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH LD.SO 8 2013\-02\-10 GNU "Linux Programmer's Manual"
+.SH 名前
+ld.so, ld\-linux.so* \- 動的なリンカ/ローダ
+.SH 書式
+動的リンカは、動的にリンクされたプログラムやライブラリの実行によって 間接的に実行することができる (ELF
+の場合、動的リンカにコマンドラインオプションを渡すことはできず、 プログラムの \fB.interp\fP セクションに入っている動的リンカが実行される)。
+また以下のように直接実行することもできる
+.P
+\fI/lib/ld\-linux.so.*\fP [OPTIONS] [PROGRAM [ARGUMENTS]]
+.SH 説明
+プログラム \fBld.so\fP と \fBld\-linux.so*\fP はプログラムに必要な共有ライブラリを見つけてロードし、
+プログラムの実行を準備してから起動させる。
+.LP
+Linux のバイナリは、コンパイルの時に \fBld\fP(1)  に対して \fB\-static\fP オプションが指定されていない限り、動的リンク
+(実行時リンク) が必要となる。
+.LP
+プログラム \fBld.so\fP は a.out バイナリを扱う。 これはずっと昔に使われていたフォーマットである。 \fBld\-linux.so*\fP
+(libc5 では \fI/lib/ld\-linux.so.1\fP, glibc2 では \fI/lib/ld\-linux.so.2\fP)  は ELF
+バイナリを扱う。 このフォーマットは多くの人が最近何年も使っている。 それ以外の点では両方とも同じように動作し、 同じサポートファイルとプログラム
+\fBldd\fP(1), \fBldconfig\fP(8), \fI/etc/ld.so.conf\fP を使用する。
+.LP
+When resolving library dependencies, the dynamic linker first inspects each
+dependency string to see if it contains a slash (this can occur if a library
+pathname containing slashes was specified at link time).  If a slash is
+found, then the dependency string is interpreted as a (relative or absolute)
+pathname, and the library is loaded using that pathname.
+.LP
+If a library dependency does not contain a slash, then it is searched for in
+the following order:
+.IP o 3
+(ELF のみ)  バイナリの動的セクション属性 DT_RPATH が存在し、 DT_RUNPATH 属性が存在しない場合は、 DT_RPATH
+で指定されたディレクトリを使用する。 DT_RPATH の使用は推奨されない。
+.IP o
+環境変数 \fBLD_LIBRARY_PATH\fP を用いる。 ただし実行ファイルが set\-user\-ID/set\-group\-ID バイナリの場合、
+これは無視される。
+.IP o
+(ELF のみ)  バイナリの動的セクション属性 DT_RUNPATH が存在すれば、 DT_RUNPATH で指定されたディレクトリを使用する。
+.IP o
+キャッシュファイル \fI/etc/ld.so.cache\fP を探す。このファイルは、 (ld.so.conf で追加指定されたものも含めた)
+ライブラリ検索パスから見つかったライブラリファイルの情報を集めたものである。ただし、バイナリがリンカオプション \fB\-z nodeflib\fP
+でリンクされている場合は、デフォルトのライブラリパスにある ライブラリはスキップされる。ハードウェア機能ディレクトリ (下記参照)
+にインストールされたライブラリは、他のライブラリよりも優先される。
+.IP o
+デフォルトパスである \fI/lib\fP、 次いで \fI/usr/lib\fP を用いる。 バイナリがリンカオプション \fB\-z nodeflib\fP
+でリンクされている場合、このステップはスキップされる。
+.SS "$ORIGIN と rpath"
+.PP
+.\" ld.so also understands $LIB, with the same meaning as $ORIGIN/lib,
+.\" it appears.
+.\"
+.\" There is also $PLATFORM.  This is a kind of wildcard
+.\" of directories related to AT_PLATFORM.  To get an idea of the
+.\" places that $PLATFORM would match, look at the output of the
+.\" following:
+.\"
+.\" mkdir /tmp/d
+.\" LD_LIBRARY_PATH=/tmp/d strace -e open /bin/date 2>&1 | grep /tmp/d
+.\"
+.\" ld.so lets names be abbreviated, so $O will work for $ORIGIN;
+.\" Don't do this!!
+\fBld.so\fP では、rpath 指定 (DT_RPATH や DT_RUNPATH) 中に \fI$ORIGIN\fP という文字列
+(\fI${ORIGIN}\fP も等価) を使うことができる。 \fI$ORIGIN\fP はアプリケーションの実行ファイルが入っているディレクトリを表す。
+これを使って \fIsomedir/app\fP に置かれたアプリケーションを \fIgcc \-Wl,\-rpath,'$ORIGIN/../lib'\fP
+でコンパイルすると、 \fIsomedir\fP がディレクトリ階層のどこにあっても、アプリケーションは \fIsomedir/lib\fP
+にある対応する共有ライブラリを見つけることができる。 この機能を使うと、 特別なディレクトリではなく任意のディレクトリにインストールしても
+"ややこしい設定なしで" 独自の共有ライブラリを使えるアプリケーションを作成することができる。
+.SH オプション
+.TP 
+\fB\-\-list\fP
+全ての依存関係とその解決法をリストする。
+.TP 
+\fB\-\-verify\fP
+プログラムが動的にリンクされているかと、 動的リンカがそのプログラムを扱えるかを検証する。
+.TP 
+\fB\-\-library\-path PATH\fP
+\fBLD_LIBRARY_PATH\fP 環境変数の設定ではなく、
+指定した PATH を使用する (下記参照)。
+.TP 
+\fB\-\-inhibit\-rpath LIST\fP
+LIST にあるオブジェクト名の RPATH と RUNPATH の情報を無視する。 \fBld.so\fP が set\-user\-ID か
+set\-group\-ID されている場合、 このオプションは無視される。
+.TP 
+\fB\-\-audit LIST\fP
+LIST で指定された名前のオブジェクトを監査者として使用する。
+.SH ハードウェア機能
+いくつかのライブラリは、(すべての CPU に存在するわけではない)ハードウェア固有
+の命令を使ってコンパイルされている。そのようなライブラリは、
+\fI/usr/lib/sse2/\fP のような、必要なハードウェア機能 (hardware capability) を規
+定する名前のディレクトリにインストールすべきである。
+動的リンカは、マシンのハードウェアに基づいてこれらのディレクトリを確認し、
+指定されたライブラリに最も適したバージョンを選択する。
+ハードウェア機能ディレクトリはつなげることができ、
+複数の CPU 機能を組み合わることができる。
+対応しているハードウェア機能名のリストは CPU に依存する。
+現在のところ、以下の名前が認識される。
+.TP 
+\fBAlpha\fP
+ev4, ev5, ev56, ev6, ev67
+.TP 
+\fBMIPS\fP
+loongson2e, loongson2f, octeon, octeon2
+.TP 
+\fBPowerPC\fP
+4xxmac, altivec, arch_2_05, arch_2_06, booke, cellbe, dfp, efpdouble,
+efpsingle, fpu, ic_snoop, mmu, notb, pa6t, power4, power5, power5+, power6x,
+ppc32, ppc601, ppc64, smt, spe, ucache, vsx
+.TP 
+\fBSPARC\fP
+flush, muldiv, stbar, swap, ultra3, v9, v9v, v9v2
+.TP 
+\fBs390\fP
+dfp, eimm, esan3, etf3enh, g5, highgprs, hpage, ldisp, msa, stfle, z900,
+z990, z9\-109, z10, zarch
+.TP 
+\fBx86 (32\-bit のみ)\fP
+acpi, apic, clflush, cmov, cx8, dts, fxsr, ht, i386, i486, i586, i686, mca,
+mmx, mtrr, pat, pbe, pge, pn, pse36, sep, ss, sse, sse2, tm
+.SH 環境変数
+4 つの重要な環境変数がある。
+.TP 
+\fBLD_BIND_NOW\fP
+(libc5; glibc 2.1.1 以降)  空文字列でない場合、 動的リンカはプログラムの開始時に全てのシンボルを解決する。
+空文字列の場合、解決しなければならない関数呼び出しが 最初に参照された時点で解決する。 デバッガを使っているときに役立つ。
+.TP 
+\fBLD_LIBRARY_PATH\fP
+コロン区切りのディレクトリのリスト。実行時に ELF ライブラリを検索するディレクトリを指定する。 \fBPATH\fP 環境変数と同じように指定する。
+set\-user\-ID/set\-group\-ID されたプログラムでは無視される。
+.TP 
+\fBLD_PRELOAD\fP
+A list of additional, user\-specified, ELF shared libraries to be loaded
+before all others.  The items of the list can be separated by spaces or
+colons.  This can be used to selectively override functions in other shared
+libraries.  The libraries are searched for using the rules given under
+DESCRIPTION.  For set\-user\-ID/set\-group\-ID ELF binaries, preload pathnames
+containing slashes are ignored, and libraries in the standard search
+directories are loaded only if the set\-user\-ID permission bit is enabled on
+the library file.
+.TP 
+\fBLD_TRACE_LOADED_OBJECTS\fP
+(ELF のみ)  空文字列でない場合、 プログラムを普通に実行するのではなく、 \fBldd\fP(1)
+を実行したときのように動的ライブラリの依存関係をリスト表示させる。
+.LP
+そして、それほど知られていない環境変数もある。 多くは廃れてしまったものか内部でのみ使用される環境変数である。
+.TP 
+\fBLD_AOUT_LIBRARY_PATH\fP
+(libc5)  a.out バイナリにのみ使われる環境変数で、 \fBLD_LIBRARY_PATH\fP と同じ役割をする。 ld\-linux.so.1
+の古いバージョンでは \fBLD_ELF_LIBRARY_PATH\fP もサポートしていた。
+.TP 
+\fBLD_AOUT_PRELOAD\fP
+(libc5)  a.out バイナリにのみ使われる環境変数で、 \fBLD_PRELOAD\fP と同じ役割をする。 ld\-linux.so.1
+の古いバージョンでは \fBLD_ELF_PRELOAD\fP もサポートしていた。
+.TP 
+\fBLD_AUDIT\fP
+(glibc 2.4 以降)  他のオブジェクトよりも前に、別のリンカ名前空間 (そのプロセスで行われる 通常のシンボル結合 (symbol
+bindigns) には関与しない名前空間) で ロードされる、ユーザ指定の ELF 共有オブジェクトのコロン区切りのリスト。
+これらのライブラリを使って、動的リンカの動作を監査することができる。 set\-user\-ID/set\-group\-ID されたバイナリでは、
+\fBLD_AUDIT\fP は無視される。
+
+動的リンカは、いわゆる監査チェックポイント (auditing checkpoints)  において、監査 (audit)
+ライブラリの適切な関数を呼び出すことで、 監査ライブラリへの通知を行う。監査チェックポイントの例としては、
+新たなライブラリのロード、シンボルの解決、別の共有オブジェクト からのシンボルの呼び出し、などがある。 詳細は \fBrtld\-audit\fP(7)
+を参照してほしい。 audit インタフェースは、Solaris で提供されているものと 大部分は互換性がある。Solaris の audit
+インタフェースについては、 \fILinker and Libraries Guide\fP の \fIRuntime Linker Auditing
+Interface\fP の章に説明がある。
+.TP 
+\fBLD_BIND_NOT\fP
+(glibc 2.1.95 以降)  シンボルを解決した後、GOT (global offset table) と PLT (procedure
+linkage table) を更新しない。
+.TP 
+\fBLD_DEBUG\fP
+(glibc 2.1 以降)  動的リンカの詳細なデバッグ情報を出力する。 \fBall\fP に設定した場合、全ての動的リンカが持つデバッグ情報を表示する。
+\fBhelp\fP に設定した場合、この環境変数で指定されるカテゴリのヘルプ情報を表示する。 glibc 2.3.4 以降、
+set\-user\-ID/set\-group\-ID されたバイナリでは \fBLD_DEBUG\fP は無視される。
+.TP 
+\fBLD_DEBUG_OUTPUT\fP
+(glibc 2.1 以降)  \fBLD_DEBUG\fP の出力を書き込むファイル。 デフォルトは標準出力である。
+set\-user\-ID/set\-group\-ID されたバイナリでは、 \fBLD_DEBUG_OUTPUT\fP は無視される。
+.TP 
+\fBLD_DYNAMIC_WEAK\fP
+(glibc 2.1.19 以降)  上書きされる弱いシンボル (昔の glibc の挙動を逆にする)。 セキュリティ上の理由から、glibc
+2.3.4 以降、 set\-user\-ID/set\-group\-ID されたバイナリでは \fBLD_DYNAMIC_WEAK\fP は無視される。
+.TP 
+\fBLD_HWCAP_MASK\fP
+(glibc 2.1 以降)  ハードウェア機能のマスク。
+.TP 
+\fBLD_KEEPDIR\fP
+(a.out のみ)(libc5)  ロードする a.out ライブラリの名前において、ディレクトリを無視しない。 このオプションは用いるべきではない。
+.TP 
+\fBLD_NOWARN\fP
+(a.out のみ)(libc5)  a.out ライブラリにおけるマイナーバージョン番号の非互換に 対する警告メッセージを抑制する。
+.TP 
+\fBLD_ORIGIN_PATH\fP
+.\" Only used if $ORIGIN can't be determined by normal means
+.\" (from the origin path saved at load time, or from /proc/self/exe)?
+(glibc 2.1 以降)  バイナリへのパス (set\-user\-ID されていないプログラムについて)。 セキュリティ上の理由から、glibc
+2.3.4 以降、 set\-user\-ID/set\-group\-ID されたバイナリでは \fBLD_ORIGIN_PATH\fP は無視される。
+.TP 
+\fBLD_POINTER_GUARD\fP
+(glibc 2.4 以降)  0 に設定すると、ポインタ保護 (pointer guarding) が無効になる。
+それ以外の値の場合はポインタ保護が有効になる。 デフォルトはポインタ保護有効である。
+ポインタ保護はセキュリティ機構の一つで、書き込み可能なプログラムメモリ に格納されたコードへのポインタをほぼランダム化することで、
+攻撃者がバッファオーバーランやスタック破壊 (stack\-smashing) 攻撃の際に ポインタを乗っ取ることを困難にするものである。
+.TP 
+\fBLD_PROFILE\fP
+(glibc 2.1 以降)  プロファイルを行う共有オブジェクト。 パス名か共有オブジェクト名 (soname) で指定される。 プロフィールの出力は
+"\fI$LD_PROFILE_OUTPUT\fP/\fI$LD_PROFILE\fP.profile" という名前の ファイルに書き込まれる。
+.TP 
+\fBLD_PROFILE_OUTPUT\fP
+(glibc 2.1 以降)  \fBLD_PROFILE\fP の出力が書き込まれるディレクトリ。
+この変数が定義されていないか、空の文字列が定義されている場合、 デフォルト値は \fI/var/tmp\fP となる。
+set\-user\-ID/set\-group\-ID されたプログラムでは、 LD_PROFILE_OUTPUT は無視される。 出力ファイルは常に
+\fI/var/profile\fP が使用される。
+.TP 
+\fBLD_SHOW_AUXV\fP
+.\" FIXME
+.\" Document LD_TRACE_PRELINKING (e.g.: LD_TRACE_PRELINKING=libx1.so ./prog)
+.\" Since glibc 2.3
+.\" Also enables DL_DEBUG_PRELINK
+(glibc 2.1 以降)  カーネルから渡される補助的な (パラメータの) 配列を表示する。 セキュリティ上の理由から、glibc 2.3.4
+以降、 set\-user\-ID/set\-group\-ID されたバイナリでは \fBLD_SHOW_AUXV\fP は無視される。
+.TP 
+\fBLD_USE_LOAD_BIAS\fP
+.\" http://sources.redhat.com/ml/libc-hacker/2003-11/msg00127.html
+.\" Subject: [PATCH] Support LD_USE_LOAD_BIAS
+.\" Jakub Jelinek
+デフォルトでは (つまり、この変数が定義されていない場合)、 実行ファイルと prelink された共有オブジェクトでは、それらが依存する
+ライブラリのベースアドレスが尊重される一方、 (prelink されていない) position\-independent executables
+(PIEs) と 他の共有オブジェクトでは依存するライブラリのベースアドレスは 尊重されない。 \fBLD_USE_LOAD_BIAS\fP
+に値が定義された場合、実行ファイルと PIE のどちらでも ベースアドレスが尊重される。 \fBLD_USE_LOAD_BIAS\fP が値 0
+で定義された場合、実行ファイルと PIE のどちらでも ベースアドレスは尊重されない。 set\-user\-ID や set\-group\-ID
+されたプログラムでは、 この変数は無視される。
+.TP 
+\fBLD_VERBOSE\fP
+(glibc 2.1 以降) 空文字列でない場合に、\fBLD_TRACE_LOADED_OBJECTS\fP
+変数が設定されていれば、プログラムのシンボルバージョン情報を出力する。
+.TP 
+\fBLD_WARN\fP
+(ELF のみ)(glibc 2.1.3 以降)  空文字列でない場合、解決されていないシンボルがあれば警告を出す。
+.TP 
+\fBLDD_ARGV0\fP
+(libc5)  \fBldd\fP(1)  の引き数がない場合に、 \fIargv\fP[0] として使われる値。
+.SH ファイル
+.PD 0
+.TP 
+\fI/lib/ld.so\fP
+a.out の動的リンカ/ローダ
+.TP 
+\fI/lib/ld\-linux.so.\fP{\fI1\fP,\fI2\fP}
+ELF の動的リンカ/ローダ
+.TP 
+\fI/etc/ld.so.cache\fP
+ライブラリを検索するディレクトリを集めたリストと、 共有ライブラリの候補の整列リストを含むファイル。
+.TP 
+\fI/etc/ld.so.preload\fP
+プログラムの前にロードすべき ELF 共有ライブラリを スペースで区切ったリストが書かれているファイル。
+.TP 
+\fBlib*.so*\fP
+共有ライブラリ
+.PD
+.SH 注意
+\fBld.so\fP の機能は libc のバージョン 4.4.3 以上を用いてコンパイルされた 実行ファイルで使用可能である。 ELF の機能は
+Linux 1.1.52 以降と libc5 以降で使用可能である。
+.SH 関連項目
+.\" .SH AUTHORS
+.\" ld.so: David Engel, Eric Youngdale, Peter MacDonald, Hongjiu Lu, Linus
+.\"  Torvalds, Lars Wirzenius and Mitch D'Souza
+.\" ld-linux.so: Roland McGrath, Ulrich Drepper and others.
+.\"
+.\" In the above, (libc5) stands for David Engel's ld.so/ld-linux.so.
+\fBldd\fP(1), \fBsln\fP(1), \fBgetauxval\fP(3), \fBrtld\-audit\fP(7), \fBldconfig\fP(8)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index b0bee08..73d52be 100644 (file)
@@ -101,6 +101,6 @@ C ライブラリを参考にする。
 .SH 関連項目
 \fBldd\fP(1), \fBld.so\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 2c8daf4..ee8a590 100644 (file)
@@ -59,6 +59,6 @@ nscd は \fBpasswd\fP(5), \fBgroup\fP(5), \fBhosts\fP(5)  データベースへ
 .\" was written by Thorsten Kukuk and Ulrich Drepper.
 \fBnscd.conf\fP(5), \fBnsswitch.conf\fP(5)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index a524268..ad0e2b2 100644 (file)
@@ -55,6 +55,6 @@ Linux では、 \fBsync\fP は (まだ書き込まれていない) ダーティ
 .SH 関連項目
 \fBsync\fP(2), \fBhalt\fP(8), \fBreboot\fP(8), \fBupdate\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
index 170415a..7794711 100644 (file)
@@ -41,6 +41,6 @@ Posix 互換の \fIawk\fP プログラム (デフォルトは \fBawk\fP)。
 .\" @(#)tzselect.8     1.3
 \fBtzfile\fP(5), \fBzdump\fP(8), \fBzic\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man8/zdump.8 b/manual/LDP_man-pages/draft/man8/zdump.8
new file mode 100644 (file)
index 0000000..6655a5c
--- /dev/null
@@ -0,0 +1,43 @@
+.\" %%%LICENSE_START(PUBLIC_DOMAIN)
+.\" This page is in the public domain
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH ZDUMP 8 2013\-02\-12 "" "Linux System Administration"
+.SH 名前
+zdump \- タイムゾーンをダンプする
+.SH 書式
+\fBzdump\fP [ \fB\-\-version\fP ] [ \fB\-\-help\fP ] [ \fB\-v\fP ] [ \fB\-c\fP
+[\fIloyear\fP\fB,\fP]\fIhiyear\fP ] [ \fIzonename\fP ... ]
+.SH 説明
+\fIzdump\fP は コマンドラインで指定した \fIzonename\fP それぞれにおける現在時刻を表示する。
+.PP
+以下のオプションを指定できる:
+.TP 
+\fB\-\-version\fP
+バージョン情報を出力し、終了する。
+.TP 
+\fB\-\-help\fP
+簡潔な使用方法を表示して、終了する
+.TP 
+\fB\-v\fP
+コマンドラインで与えられた \fIzonename\fP それぞれに対して、指定可能な最低位の時刻値 (time value)、
+最低位の時刻値の一日後の時刻、 見付かった時間不連続の一秒前と丁度その時刻、 最高位時刻値の一日前の時刻、 指定可能な最高位の時刻値、を表示する。
+それぞれの行の末尾には、 与えられている時刻がサマータイム (Daylight Saving Time) なら \fBisdst=1\fP が、そうでなければ
+\fBisdst=0\fP が付加される。
+.TP 
+\fB\-c \fP[\fIloyear\fP\fB,\fP]\fIhiyear\fP
+Cut off the verbose output near the start of the given year(s).  The output
+still includes the lowest possible time value and one day after it, and the
+highest possible time value preceded by the time value one day before it.
+.SH 関連項目
+.\" @(#)zdump.8        7.3
+\fBtzfile\fP(5), \fBzic\fP(8)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index 78367db..1ebd305 100644 (file)
@@ -262,6 +262,6 @@ Leap        1974    Dec     31      23:59:60        +       S
 .\" @(#)zic.8  7.19
 \fBtzfile\fP(5), \fBzdump\fP(8)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。