From 5c761b4871fcc0ec374108a830c68f672fa28326 Mon Sep 17 00:00:00 2001 From: Akihiro Motoki Date: Sat, 13 Mar 2021 01:33:03 +0900 Subject: [PATCH] LDP: Update draft pages based on LDP 5.10 release --- manual/LDP_man-pages/draft/man1/getent.1 | 146 - manual/LDP_man-pages/draft/man1/iconv.1 | 37 +- manual/LDP_man-pages/draft/man1/intro.1 | 189 -- manual/LDP_man-pages/draft/man1/ldd.1 | 95 - manual/LDP_man-pages/draft/man1/locale.1 | 45 +- manual/LDP_man-pages/draft/man1/memusage.1 | 72 +- manual/LDP_man-pages/draft/man1/memusagestat.1 | 13 +- manual/LDP_man-pages/draft/man1/mtrace.1 | 13 +- manual/LDP_man-pages/draft/man1/pldd.1 | 84 - manual/LDP_man-pages/draft/man1/sprof.1 | 125 +- manual/LDP_man-pages/draft/man1/time.1 | 109 +- manual/LDP_man-pages/draft/man2/_exit.2 | 101 - manual/LDP_man-pages/draft/man2/_syscall.2 | 38 +- manual/LDP_man-pages/draft/man2/accept.2 | 110 +- manual/LDP_man-pages/draft/man2/access.2 | 118 +- manual/LDP_man-pages/draft/man2/acct.2 | 38 +- manual/LDP_man-pages/draft/man2/add_key.2 | 98 - manual/LDP_man-pages/draft/man2/adjtimex.2 | 282 -- manual/LDP_man-pages/draft/man2/alarm.2 | 22 +- manual/LDP_man-pages/draft/man2/alloc_hugepages.2 | 49 +- manual/LDP_man-pages/draft/man2/arch_prctl.2 | 106 - manual/LDP_man-pages/draft/man2/bdflush.2 | 15 +- manual/LDP_man-pages/draft/man2/bind.2 | 75 +- manual/LDP_man-pages/draft/man2/brk.2 | 129 - manual/LDP_man-pages/draft/man2/cacheflush.2 | 79 - manual/LDP_man-pages/draft/man2/capget.2 | 152 - manual/LDP_man-pages/draft/man2/chdir.2 | 33 +- manual/LDP_man-pages/draft/man2/chmod.2 | 101 +- manual/LDP_man-pages/draft/man2/chown.2 | 121 +- manual/LDP_man-pages/draft/man2/chroot.2 | 77 +- manual/LDP_man-pages/draft/man2/clock_getres.2 | 202 -- manual/LDP_man-pages/draft/man2/clock_nanosleep.2 | 160 - manual/LDP_man-pages/draft/man2/clone.2 | 673 ----- manual/LDP_man-pages/draft/man2/close.2 | 115 - manual/LDP_man-pages/draft/man2/connect.2 | 207 -- manual/LDP_man-pages/draft/man2/create_module.2 | 26 +- manual/LDP_man-pages/draft/man2/delete_module.2 | 40 +- manual/LDP_man-pages/draft/man2/dup.2 | 194 -- manual/LDP_man-pages/draft/man2/epoll_create.2 | 30 +- manual/LDP_man-pages/draft/man2/epoll_ctl.2 | 183 -- manual/LDP_man-pages/draft/man2/epoll_wait.2 | 166 -- manual/LDP_man-pages/draft/man2/eventfd.2 | 92 +- manual/LDP_man-pages/draft/man2/execve.2 | 497 ---- manual/LDP_man-pages/draft/man2/execveat.2 | 32 +- manual/LDP_man-pages/draft/man2/exit_group.2 | 15 +- manual/LDP_man-pages/draft/man2/fallocate.2 | 218 -- manual/LDP_man-pages/draft/man2/fanotify_init.2 | 166 -- manual/LDP_man-pages/draft/man2/fanotify_mark.2 | 195 -- manual/LDP_man-pages/draft/man2/fcntl.2 | 953 ------ manual/LDP_man-pages/draft/man2/flock.2 | 72 +- manual/LDP_man-pages/draft/man2/fork.2 | 184 -- manual/LDP_man-pages/draft/man2/fsync.2 | 129 - manual/LDP_man-pages/draft/man2/futex.2 | 223 -- manual/LDP_man-pages/draft/man2/futimesat.2 | 27 +- manual/LDP_man-pages/draft/man2/get_kernel_syms.2 | 25 +- manual/LDP_man-pages/draft/man2/get_mempolicy.2 | 125 - manual/LDP_man-pages/draft/man2/getcpu.2 | 34 +- manual/LDP_man-pages/draft/man2/getdents.2 | 250 -- manual/LDP_man-pages/draft/man2/getdomainname.2 | 45 +- manual/LDP_man-pages/draft/man2/getgid.2 | 19 +- manual/LDP_man-pages/draft/man2/getgroups.2 | 131 - manual/LDP_man-pages/draft/man2/gethostname.2 | 126 - manual/LDP_man-pages/draft/man2/getitimer.2 | 152 - manual/LDP_man-pages/draft/man2/getpagesize.2 | 101 - manual/LDP_man-pages/draft/man2/getpeername.2 | 24 +- manual/LDP_man-pages/draft/man2/getpid.2 | 99 - manual/LDP_man-pages/draft/man2/getpriority.2 | 153 - manual/LDP_man-pages/draft/man2/getresuid.2 | 11 +- manual/LDP_man-pages/draft/man2/getrlimit.2 | 477 --- manual/LDP_man-pages/draft/man2/getrusage.2 | 50 +- manual/LDP_man-pages/draft/man2/getsid.2 | 85 - manual/LDP_man-pages/draft/man2/getsockname.2 | 22 +- manual/LDP_man-pages/draft/man2/getsockopt.2 | 47 +- manual/LDP_man-pages/draft/man2/gettid.2 | 30 +- manual/LDP_man-pages/draft/man2/gettimeofday.2 | 198 -- manual/LDP_man-pages/draft/man2/getuid.2 | 21 +- manual/LDP_man-pages/draft/man2/getxattr.2 | 108 - manual/LDP_man-pages/draft/man2/idle.2 | 7 +- manual/LDP_man-pages/draft/man2/init_module.2 | 62 +- .../LDP_man-pages/draft/man2/inotify_add_watch.2 | 43 +- manual/LDP_man-pages/draft/man2/inotify_init.2 | 27 +- manual/LDP_man-pages/draft/man2/inotify_rm_watch.2 | 11 +- manual/LDP_man-pages/draft/man2/intro.2 | 35 +- manual/LDP_man-pages/draft/man2/io_cancel.2 | 18 +- manual/LDP_man-pages/draft/man2/io_destroy.2 | 18 +- manual/LDP_man-pages/draft/man2/io_getevents.2 | 92 - manual/LDP_man-pages/draft/man2/io_setup.2 | 24 +- manual/LDP_man-pages/draft/man2/io_submit.2 | 89 - manual/LDP_man-pages/draft/man2/ioctl.2 | 111 - manual/LDP_man-pages/draft/man2/ioperm.2 | 26 +- manual/LDP_man-pages/draft/man2/iopl.2 | 92 - manual/LDP_man-pages/draft/man2/ioprio_set.2 | 122 +- manual/LDP_man-pages/draft/man2/ipc.2 | 64 - manual/LDP_man-pages/draft/man2/kcmp.2 | 135 - manual/LDP_man-pages/draft/man2/keyctl.2 | 139 - manual/LDP_man-pages/draft/man2/kill.2 | 145 - manual/LDP_man-pages/draft/man2/link.2 | 99 +- manual/LDP_man-pages/draft/man2/listen.2 | 41 +- manual/LDP_man-pages/draft/man2/listxattr.2 | 121 - manual/LDP_man-pages/draft/man2/llseek.2 | 84 - manual/LDP_man-pages/draft/man2/lookup_dcookie.2 | 18 +- manual/LDP_man-pages/draft/man2/lseek.2 | 196 -- manual/LDP_man-pages/draft/man2/madvise.2 | 249 -- manual/LDP_man-pages/draft/man2/mbind.2 | 225 -- manual/LDP_man-pages/draft/man2/memfd_create.2 | 331 --- manual/LDP_man-pages/draft/man2/migrate_pages.2 | 40 +- manual/LDP_man-pages/draft/man2/mincore.2 | 33 +- manual/LDP_man-pages/draft/man2/mkdir.2 | 60 +- manual/LDP_man-pages/draft/man2/mknod.2 | 82 +- manual/LDP_man-pages/draft/man2/mlock.2 | 209 -- manual/LDP_man-pages/draft/man2/mmap.2 | 455 --- manual/LDP_man-pages/draft/man2/mmap2.2 | 17 +- manual/LDP_man-pages/draft/man2/modify_ldt.2 | 111 - manual/LDP_man-pages/draft/man2/mount.2 | 335 --- manual/LDP_man-pages/draft/man2/move_pages.2 | 78 +- manual/LDP_man-pages/draft/man2/mprotect.2 | 198 -- manual/LDP_man-pages/draft/man2/mq_getsetattr.2 | 16 +- manual/LDP_man-pages/draft/man2/mremap.2 | 136 - manual/LDP_man-pages/draft/man2/msgctl.2 | 222 -- manual/LDP_man-pages/draft/man2/msgget.2 | 139 - manual/LDP_man-pages/draft/man2/msgop.2 | 303 -- manual/LDP_man-pages/draft/man2/msync.2 | 99 - manual/LDP_man-pages/draft/man2/nanosleep.2 | 68 +- manual/LDP_man-pages/draft/man2/nfsservctl.2 | 71 - manual/LDP_man-pages/draft/man2/nice.2 | 88 - manual/LDP_man-pages/draft/man2/open.2 | 789 ----- .../LDP_man-pages/draft/man2/open_by_handle_at.2 | 147 +- manual/LDP_man-pages/draft/man2/outb.2 | 67 +- manual/LDP_man-pages/draft/man2/pause.2 | 10 +- manual/LDP_man-pages/draft/man2/pciconfig_read.2 | 18 +- manual/LDP_man-pages/draft/man2/perfmonctl.2 | 25 +- manual/LDP_man-pages/draft/man2/personality.2 | 73 - manual/LDP_man-pages/draft/man2/pipe.2 | 187 -- manual/LDP_man-pages/draft/man2/pivot_root.2 | 106 - manual/LDP_man-pages/draft/man2/poll.2 | 254 -- manual/LDP_man-pages/draft/man2/posix_fadvise.2 | 107 +- manual/LDP_man-pages/draft/man2/prctl.2 | 621 ---- manual/LDP_man-pages/draft/man2/pread.2 | 37 +- manual/LDP_man-pages/draft/man2/process_vm_readv.2 | 99 +- manual/LDP_man-pages/draft/man2/query_module.2 | 32 +- manual/LDP_man-pages/draft/man2/read.2 | 158 - manual/LDP_man-pages/draft/man2/readahead.2 | 24 +- manual/LDP_man-pages/draft/man2/readdir.2 | 35 +- manual/LDP_man-pages/draft/man2/readlink.2 | 252 -- manual/LDP_man-pages/draft/man2/readv.2 | 205 -- manual/LDP_man-pages/draft/man2/reboot.2 | 150 - manual/LDP_man-pages/draft/man2/recv.2 | 347 --- manual/LDP_man-pages/draft/man2/recvmmsg.2 | 90 +- manual/LDP_man-pages/draft/man2/remap_file_pages.2 | 46 +- manual/LDP_man-pages/draft/man2/removexattr.2 | 34 +- manual/LDP_man-pages/draft/man2/rename.2 | 174 +- manual/LDP_man-pages/draft/man2/request_key.2 | 112 - manual/LDP_man-pages/draft/man2/restart_syscall.2 | 16 +- manual/LDP_man-pages/draft/man2/rmdir.2 | 22 +- .../draft/man2/sched_get_priority_max.2 | 31 +- .../draft/man2/sched_rr_get_interval.2 | 23 +- .../LDP_man-pages/draft/man2/sched_setaffinity.2 | 151 - manual/LDP_man-pages/draft/man2/sched_setattr.2 | 104 +- manual/LDP_man-pages/draft/man2/sched_setparam.2 | 53 +- .../LDP_man-pages/draft/man2/sched_setscheduler.2 | 49 +- manual/LDP_man-pages/draft/man2/sched_yield.2 | 20 +- manual/LDP_man-pages/draft/man2/select.2 | 379 --- manual/LDP_man-pages/draft/man2/select_tut.2 | 615 ---- manual/LDP_man-pages/draft/man2/semctl.2 | 298 -- manual/LDP_man-pages/draft/man2/semget.2 | 178 -- manual/LDP_man-pages/draft/man2/semop.2 | 125 +- manual/LDP_man-pages/draft/man2/send.2 | 111 +- manual/LDP_man-pages/draft/man2/sendfile.2 | 140 - manual/LDP_man-pages/draft/man2/sendmmsg.2 | 58 +- manual/LDP_man-pages/draft/man2/set_mempolicy.2 | 156 - manual/LDP_man-pages/draft/man2/set_thread_area.2 | 65 - manual/LDP_man-pages/draft/man2/set_tid_address.2 | 23 +- manual/LDP_man-pages/draft/man2/seteuid.2 | 113 - manual/LDP_man-pages/draft/man2/setfsgid.2 | 50 +- manual/LDP_man-pages/draft/man2/setfsuid.2 | 103 - manual/LDP_man-pages/draft/man2/setgid.2 | 35 +- manual/LDP_man-pages/draft/man2/setns.2 | 213 -- manual/LDP_man-pages/draft/man2/setpgid.2 | 111 +- manual/LDP_man-pages/draft/man2/setresuid.2 | 49 +- manual/LDP_man-pages/draft/man2/setreuid.2 | 82 +- manual/LDP_man-pages/draft/man2/setsid.2 | 88 - manual/LDP_man-pages/draft/man2/setuid.2 | 46 +- manual/LDP_man-pages/draft/man2/setup.2 | 7 +- manual/LDP_man-pages/draft/man2/setxattr.2 | 114 - manual/LDP_man-pages/draft/man2/sgetmask.2 | 23 +- manual/LDP_man-pages/draft/man2/shmctl.2 | 277 -- manual/LDP_man-pages/draft/man2/shmget.2 | 234 -- manual/LDP_man-pages/draft/man2/shmop.2 | 187 -- manual/LDP_man-pages/draft/man2/shutdown.2 | 27 +- manual/LDP_man-pages/draft/man2/sigaction.2 | 535 ---- manual/LDP_man-pages/draft/man2/sigaltstack.2 | 179 -- manual/LDP_man-pages/draft/man2/signal.2 | 97 +- manual/LDP_man-pages/draft/man2/signalfd.2 | 276 -- manual/LDP_man-pages/draft/man2/sigpending.2 | 47 +- manual/LDP_man-pages/draft/man2/sigprocmask.2 | 108 - manual/LDP_man-pages/draft/man2/sigreturn.2 | 89 - manual/LDP_man-pages/draft/man2/sigsuspend.2 | 89 - manual/LDP_man-pages/draft/man2/sigwaitinfo.2 | 72 +- manual/LDP_man-pages/draft/man2/socket.2 | 283 -- manual/LDP_man-pages/draft/man2/socketcall.2 | 62 - manual/LDP_man-pages/draft/man2/socketpair.2 | 111 - manual/LDP_man-pages/draft/man2/splice.2 | 164 - manual/LDP_man-pages/draft/man2/spu_create.2 | 53 +- manual/LDP_man-pages/draft/man2/spu_run.2 | 33 +- manual/LDP_man-pages/draft/man2/stat.2 | 620 ---- manual/LDP_man-pages/draft/man2/statfs.2 | 247 -- manual/LDP_man-pages/draft/man2/stime.2 | 28 +- manual/LDP_man-pages/draft/man2/swapon.2 | 29 +- manual/LDP_man-pages/draft/man2/symlink.2 | 64 +- manual/LDP_man-pages/draft/man2/sync.2 | 119 - manual/LDP_man-pages/draft/man2/sync_file_range.2 | 27 +- manual/LDP_man-pages/draft/man2/syscall.2 | 204 -- manual/LDP_man-pages/draft/man2/syscalls.2 | 409 ++- manual/LDP_man-pages/draft/man2/sysctl.2 | 64 +- manual/LDP_man-pages/draft/man2/sysfs.2 | 27 +- manual/LDP_man-pages/draft/man2/sysinfo.2 | 96 - manual/LDP_man-pages/draft/man2/syslog.2 | 40 +- manual/LDP_man-pages/draft/man2/tee.2 | 41 +- manual/LDP_man-pages/draft/man2/time.2 | 79 - manual/LDP_man-pages/draft/man2/timer_delete.2 | 20 +- manual/LDP_man-pages/draft/man2/timerfd_create.2 | 387 --- manual/LDP_man-pages/draft/man2/times.2 | 60 +- manual/LDP_man-pages/draft/man2/tkill.2 | 69 +- manual/LDP_man-pages/draft/man2/truncate.2 | 72 +- manual/LDP_man-pages/draft/man2/umask.2 | 100 - manual/LDP_man-pages/draft/man2/umount.2 | 50 +- manual/LDP_man-pages/draft/man2/uname.2 | 45 +- manual/LDP_man-pages/draft/man2/unimplemented.2 | 11 +- manual/LDP_man-pages/draft/man2/unlink.2 | 61 +- manual/LDP_man-pages/draft/man2/unshare.2 | 304 -- manual/LDP_man-pages/draft/man2/uselib.2 | 59 +- manual/LDP_man-pages/draft/man2/ustat.2 | 19 +- manual/LDP_man-pages/draft/man2/utime.2 | 49 +- manual/LDP_man-pages/draft/man2/utimensat.2 | 132 +- manual/LDP_man-pages/draft/man2/vfork.2 | 180 -- manual/LDP_man-pages/draft/man2/vhangup.2 | 30 +- manual/LDP_man-pages/draft/man2/vm86.2 | 11 +- manual/LDP_man-pages/draft/man2/vmsplice.2 | 68 +- manual/LDP_man-pages/draft/man2/wait.2 | 401 --- manual/LDP_man-pages/draft/man2/wait4.2 | 136 - manual/LDP_man-pages/draft/man2/write.2 | 184 -- manual/LDP_man-pages/draft/man3/CPU_SET.3 | 106 +- manual/LDP_man-pages/draft/man3/INFINITY.3 | 29 +- manual/LDP_man-pages/draft/man3/MB_CUR_MAX.3 | 15 +- manual/LDP_man-pages/draft/man3/MB_LEN_MAX.3 | 22 +- manual/LDP_man-pages/draft/man3/__setfpucw.3 | 26 +- manual/LDP_man-pages/draft/man3/a64l.3 | 83 - manual/LDP_man-pages/draft/man3/abort.3 | 77 - manual/LDP_man-pages/draft/man3/abs.3 | 106 - manual/LDP_man-pages/draft/man3/acos.3 | 105 - manual/LDP_man-pages/draft/man3/acosh.3 | 113 - manual/LDP_man-pages/draft/man3/addseverity.3 | 57 - manual/LDP_man-pages/draft/man3/adjtime.3 | 105 - manual/LDP_man-pages/draft/man3/aio_cancel.3 | 32 +- manual/LDP_man-pages/draft/man3/aio_error.3 | 84 - manual/LDP_man-pages/draft/man3/aio_fsync.3 | 28 +- manual/LDP_man-pages/draft/man3/aio_init.3 | 20 +- manual/LDP_man-pages/draft/man3/aio_read.3 | 46 +- manual/LDP_man-pages/draft/man3/aio_return.3 | 83 - manual/LDP_man-pages/draft/man3/aio_suspend.3 | 39 +- manual/LDP_man-pages/draft/man3/aio_write.3 | 48 +- manual/LDP_man-pages/draft/man3/alloca.3 | 120 - manual/LDP_man-pages/draft/man3/argz_add.3 | 116 - manual/LDP_man-pages/draft/man3/asin.3 | 108 - manual/LDP_man-pages/draft/man3/asinh.3 | 112 - manual/LDP_man-pages/draft/man3/asprintf.3 | 64 - manual/LDP_man-pages/draft/man3/assert.3 | 72 - manual/LDP_man-pages/draft/man3/assert_perror.3 | 68 - manual/LDP_man-pages/draft/man3/atan.3 | 106 - manual/LDP_man-pages/draft/man3/atan2.3 | 131 - manual/LDP_man-pages/draft/man3/atanh.3 | 126 - manual/LDP_man-pages/draft/man3/atexit.3 | 129 - manual/LDP_man-pages/draft/man3/atof.3 | 73 - manual/LDP_man-pages/draft/man3/atoi.3 | 105 - manual/LDP_man-pages/draft/man3/backtrace.3 | 176 -- manual/LDP_man-pages/draft/man3/basename.3 | 131 - manual/LDP_man-pages/draft/man3/bcmp.3 | 69 - manual/LDP_man-pages/draft/man3/bcopy.3 | 70 - manual/LDP_man-pages/draft/man3/bindresvport.3 | 96 - manual/LDP_man-pages/draft/man3/bsd_signal.3 | 76 - manual/LDP_man-pages/draft/man3/bsearch.3 | 119 - manual/LDP_man-pages/draft/man3/bstring.3 | 37 +- manual/LDP_man-pages/draft/man3/btowc.3 | 53 - manual/LDP_man-pages/draft/man3/btree.3 | 32 +- manual/LDP_man-pages/draft/man3/byteorder.3 | 36 +- manual/LDP_man-pages/draft/man3/bzero.3 | 69 - manual/LDP_man-pages/draft/man3/cabs.3 | 44 - manual/LDP_man-pages/draft/man3/cacos.3 | 82 - manual/LDP_man-pages/draft/man3/cacosh.3 | 80 - .../draft/man3/canonicalize_file_name.3 | 70 - manual/LDP_man-pages/draft/man3/carg.3 | 65 - manual/LDP_man-pages/draft/man3/casin.3 | 48 - manual/LDP_man-pages/draft/man3/casinh.3 | 48 - manual/LDP_man-pages/draft/man3/catan.3 | 82 - manual/LDP_man-pages/draft/man3/catanh.3 | 80 - manual/LDP_man-pages/draft/man3/catgets.3 | 74 - manual/LDP_man-pages/draft/man3/catopen.3 | 129 - manual/LDP_man-pages/draft/man3/cbrt.3 | 101 - manual/LDP_man-pages/draft/man3/ccos.3 | 46 - manual/LDP_man-pages/draft/man3/ccosh.3 | 17 +- manual/LDP_man-pages/draft/man3/ceil.3 | 104 - manual/LDP_man-pages/draft/man3/cexp.3 | 48 - manual/LDP_man-pages/draft/man3/cexp2.3 | 15 +- manual/LDP_man-pages/draft/man3/cfree.3 | 97 - manual/LDP_man-pages/draft/man3/cimag.3 | 53 - manual/LDP_man-pages/draft/man3/clearenv.3 | 84 - manual/LDP_man-pages/draft/man3/clock.3 | 82 - .../LDP_man-pages/draft/man3/clock_getcpuclockid.3 | 139 - manual/LDP_man-pages/draft/man3/clog.3 | 51 - manual/LDP_man-pages/draft/man3/clog10.3 | 48 - manual/LDP_man-pages/draft/man3/clog2.3 | 17 +- manual/LDP_man-pages/draft/man3/closedir.3 | 75 - manual/LDP_man-pages/draft/man3/cmsg.3 | 160 - manual/LDP_man-pages/draft/man3/confstr.3 | 117 - manual/LDP_man-pages/draft/man3/conj.3 | 51 - manual/LDP_man-pages/draft/man3/copysign.3 | 99 - manual/LDP_man-pages/draft/man3/cos.3 | 110 - manual/LDP_man-pages/draft/man3/cosh.3 | 115 - manual/LDP_man-pages/draft/man3/cpow.3 | 44 - manual/LDP_man-pages/draft/man3/cproj.3 | 50 - manual/LDP_man-pages/draft/man3/creal.3 | 53 - manual/LDP_man-pages/draft/man3/crypt.3 | 202 -- manual/LDP_man-pages/draft/man3/csin.3 | 46 - manual/LDP_man-pages/draft/man3/csinh.3 | 46 - manual/LDP_man-pages/draft/man3/csqrt.3 | 44 - manual/LDP_man-pages/draft/man3/ctan.3 | 46 - manual/LDP_man-pages/draft/man3/ctanh.3 | 46 - manual/LDP_man-pages/draft/man3/ctermid.3 | 76 - manual/LDP_man-pages/draft/man3/ctime.3 | 230 -- manual/LDP_man-pages/draft/man3/daemon.3 | 90 - manual/LDP_man-pages/draft/man3/dbopen.3 | 29 +- manual/LDP_man-pages/draft/man3/des_crypt.3 | 94 - manual/LDP_man-pages/draft/man3/difftime.3 | 76 - manual/LDP_man-pages/draft/man3/dirfd.3 | 98 - manual/LDP_man-pages/draft/man3/div.3 | 108 - manual/LDP_man-pages/draft/man3/dl_iterate_phdr.3 | 157 - manual/LDP_man-pages/draft/man3/dlopen.3 | 335 --- manual/LDP_man-pages/draft/man3/drand48.3 | 147 - manual/LDP_man-pages/draft/man3/drand48_r.3 | 111 - manual/LDP_man-pages/draft/man3/duplocale.3 | 47 +- manual/LDP_man-pages/draft/man3/dysize.3 | 67 - manual/LDP_man-pages/draft/man3/ecvt.3 | 108 - manual/LDP_man-pages/draft/man3/ecvt_r.3 | 86 - manual/LDP_man-pages/draft/man3/encrypt.3 | 143 - manual/LDP_man-pages/draft/man3/end.3 | 23 +- manual/LDP_man-pages/draft/man3/endian.3 | 60 +- manual/LDP_man-pages/draft/man3/envz_add.3 | 102 - manual/LDP_man-pages/draft/man3/erf.3 | 123 - manual/LDP_man-pages/draft/man3/erfc.3 | 116 - manual/LDP_man-pages/draft/man3/err.3 | 137 - manual/LDP_man-pages/draft/man3/errno.3 | 500 ---- manual/LDP_man-pages/draft/man3/error.3 | 93 - manual/LDP_man-pages/draft/man3/ether_aton.3 | 27 +- manual/LDP_man-pages/draft/man3/euidaccess.3 | 89 - manual/LDP_man-pages/draft/man3/exec.3 | 151 - manual/LDP_man-pages/draft/man3/exit.3 | 110 - manual/LDP_man-pages/draft/man3/exp.3 | 109 - manual/LDP_man-pages/draft/man3/exp10.3 | 86 - manual/LDP_man-pages/draft/man3/exp2.3 | 94 - manual/LDP_man-pages/draft/man3/expm1.3 | 140 - manual/LDP_man-pages/draft/man3/fabs.3 | 99 - manual/LDP_man-pages/draft/man3/fclose.3 | 97 - manual/LDP_man-pages/draft/man3/fcloseall.3 | 63 - manual/LDP_man-pages/draft/man3/fdim.3 | 83 - manual/LDP_man-pages/draft/man3/fenv.3 | 103 +- manual/LDP_man-pages/draft/man3/ferror.3 | 104 - manual/LDP_man-pages/draft/man3/fexecve.3 | 115 - manual/LDP_man-pages/draft/man3/fflush.3 | 106 - manual/LDP_man-pages/draft/man3/ffs.3 | 105 - manual/LDP_man-pages/draft/man3/fgetc.3 | 87 - manual/LDP_man-pages/draft/man3/fgetgrent.3 | 91 - manual/LDP_man-pages/draft/man3/fgetpwent.3 | 100 - manual/LDP_man-pages/draft/man3/fgetwc.3 | 70 - manual/LDP_man-pages/draft/man3/fgetws.3 | 62 - manual/LDP_man-pages/draft/man3/finite.3 | 124 - manual/LDP_man-pages/draft/man3/flockfile.3 | 101 - manual/LDP_man-pages/draft/man3/floor.3 | 100 - manual/LDP_man-pages/draft/man3/fma.3 | 118 - manual/LDP_man-pages/draft/man3/fmax.3 | 70 - manual/LDP_man-pages/draft/man3/fmemopen.3 | 231 -- manual/LDP_man-pages/draft/man3/fmin.3 | 70 - manual/LDP_man-pages/draft/man3/fmod.3 | 114 - manual/LDP_man-pages/draft/man3/fmtmsg.3 | 105 +- manual/LDP_man-pages/draft/man3/fnmatch.3 | 86 - manual/LDP_man-pages/draft/man3/fopen.3 | 222 -- manual/LDP_man-pages/draft/man3/fopencookie.3 | 98 +- manual/LDP_man-pages/draft/man3/fpathconf.3 | 124 - manual/LDP_man-pages/draft/man3/fpclassify.3 | 121 - manual/LDP_man-pages/draft/man3/fpurge.3 | 74 - manual/LDP_man-pages/draft/man3/fputwc.3 | 69 - manual/LDP_man-pages/draft/man3/fputws.3 | 54 - manual/LDP_man-pages/draft/man3/fread.3 | 95 - manual/LDP_man-pages/draft/man3/frexp.3 | 130 - manual/LDP_man-pages/draft/man3/fseek.3 | 113 - manual/LDP_man-pages/draft/man3/fseeko.3 | 86 - manual/LDP_man-pages/draft/man3/ftime.3 | 90 - manual/LDP_man-pages/draft/man3/ftok.3 | 82 - manual/LDP_man-pages/draft/man3/fts.3 | 371 --- manual/LDP_man-pages/draft/man3/ftw.3 | 276 -- manual/LDP_man-pages/draft/man3/futimes.3 | 88 - manual/LDP_man-pages/draft/man3/fwide.3 | 23 +- manual/LDP_man-pages/draft/man3/gamma.3 | 90 - manual/LDP_man-pages/draft/man3/gcvt.3 | 91 - manual/LDP_man-pages/draft/man3/get_nprocs_conf.3 | 91 - manual/LDP_man-pages/draft/man3/getaddrinfo.3 | 138 +- manual/LDP_man-pages/draft/man3/getaddrinfo_a.3 | 120 +- manual/LDP_man-pages/draft/man3/getauxval.3 | 175 -- manual/LDP_man-pages/draft/man3/getcontext.3 | 115 - manual/LDP_man-pages/draft/man3/getcwd.3 | 167 -- manual/LDP_man-pages/draft/man3/getdate.3 | 241 -- manual/LDP_man-pages/draft/man3/getdirentries.3 | 69 - manual/LDP_man-pages/draft/man3/getdtablesize.3 | 89 - manual/LDP_man-pages/draft/man3/getenv.3 | 109 - manual/LDP_man-pages/draft/man3/getfsent.3 | 106 - manual/LDP_man-pages/draft/man3/getgrent.3 | 154 - manual/LDP_man-pages/draft/man3/getgrent_r.3 | 164 - manual/LDP_man-pages/draft/man3/getgrnam.3 | 186 -- manual/LDP_man-pages/draft/man3/getgrouplist.3 | 162 - manual/LDP_man-pages/draft/man3/gethostbyname.3 | 291 -- manual/LDP_man-pages/draft/man3/gethostid.3 | 103 - manual/LDP_man-pages/draft/man3/getifaddrs.3 | 61 +- manual/LDP_man-pages/draft/man3/getipnodebyname.3 | 21 +- manual/LDP_man-pages/draft/man3/getline.3 | 133 - manual/LDP_man-pages/draft/man3/getloadavg.3 | 77 - manual/LDP_man-pages/draft/man3/getlogin.3 | 151 - manual/LDP_man-pages/draft/man3/getmntent.3 | 143 - manual/LDP_man-pages/draft/man3/getnameinfo.3 | 145 +- manual/LDP_man-pages/draft/man3/getnetent.3 | 119 - manual/LDP_man-pages/draft/man3/getnetent_r.3 | 55 +- manual/LDP_man-pages/draft/man3/getopt.3 | 130 +- manual/LDP_man-pages/draft/man3/getpass.3 | 38 +- manual/LDP_man-pages/draft/man3/getprotoent.3 | 111 - manual/LDP_man-pages/draft/man3/getprotoent_r.3 | 69 +- manual/LDP_man-pages/draft/man3/getpt.3 | 54 - manual/LDP_man-pages/draft/man3/getpw.3 | 111 - manual/LDP_man-pages/draft/man3/getpwent.3 | 141 - manual/LDP_man-pages/draft/man3/getpwent_r.3 | 161 - manual/LDP_man-pages/draft/man3/getpwnam.3 | 249 -- manual/LDP_man-pages/draft/man3/getrpcent.3 | 90 - manual/LDP_man-pages/draft/man3/getrpcent_r.3 | 115 - manual/LDP_man-pages/draft/man3/getrpcport.3 | 39 - manual/LDP_man-pages/draft/man3/gets.3 | 85 - manual/LDP_man-pages/draft/man3/getservent.3 | 121 - manual/LDP_man-pages/draft/man3/getservent_r.3 | 68 +- manual/LDP_man-pages/draft/man3/getspnam.3 | 190 -- manual/LDP_man-pages/draft/man3/getsubopt.3 | 192 -- manual/LDP_man-pages/draft/man3/getttyent.3 | 80 - manual/LDP_man-pages/draft/man3/getumask.3 | 21 +- manual/LDP_man-pages/draft/man3/getusershell.3 | 120 - manual/LDP_man-pages/draft/man3/getutent.3 | 229 -- manual/LDP_man-pages/draft/man3/getutmp.3 | 75 - manual/LDP_man-pages/draft/man3/getw.3 | 88 - manual/LDP_man-pages/draft/man3/getwchar.3 | 57 - manual/LDP_man-pages/draft/man3/glob.3 | 207 -- .../draft/man3/gnu_get_libc_version.3 | 85 - manual/LDP_man-pages/draft/man3/grantpt.3 | 59 - manual/LDP_man-pages/draft/man3/group_member.3 | 15 +- manual/LDP_man-pages/draft/man3/gsignal.3 | 75 - manual/LDP_man-pages/draft/man3/hash.3 | 24 +- manual/LDP_man-pages/draft/man3/hsearch.3 | 223 -- manual/LDP_man-pages/draft/man3/hypot.3 | 131 - manual/LDP_man-pages/draft/man3/iconv.3 | 126 - manual/LDP_man-pages/draft/man3/iconv_close.3 | 48 - manual/LDP_man-pages/draft/man3/iconv_open.3 | 77 - manual/LDP_man-pages/draft/man3/if_nameindex.3 | 127 - manual/LDP_man-pages/draft/man3/if_nametoindex.3 | 78 - manual/LDP_man-pages/draft/man3/ilogb.3 | 129 - manual/LDP_man-pages/draft/man3/index.3 | 74 - manual/LDP_man-pages/draft/man3/inet.3 | 97 +- manual/LDP_man-pages/draft/man3/inet_net_pton.3 | 80 +- manual/LDP_man-pages/draft/man3/inet_ntop.3 | 29 +- manual/LDP_man-pages/draft/man3/inet_pton.3 | 40 +- manual/LDP_man-pages/draft/man3/initgroups.3 | 86 - manual/LDP_man-pages/draft/man3/insque.3 | 232 -- manual/LDP_man-pages/draft/man3/intro.3 | 14 +- manual/LDP_man-pages/draft/man3/isalpha.3 | 102 +- manual/LDP_man-pages/draft/man3/isatty.3 | 68 - manual/LDP_man-pages/draft/man3/isfdtype.3 | 18 +- manual/LDP_man-pages/draft/man3/isgreater.3 | 108 - manual/LDP_man-pages/draft/man3/iswalnum.3 | 71 - manual/LDP_man-pages/draft/man3/iswalpha.3 | 72 - manual/LDP_man-pages/draft/man3/iswblank.3 | 76 - manual/LDP_man-pages/draft/man3/iswcntrl.3 | 58 - manual/LDP_man-pages/draft/man3/iswctype.3 | 57 - manual/LDP_man-pages/draft/man3/iswdigit.3 | 66 - manual/LDP_man-pages/draft/man3/iswgraph.3 | 64 - manual/LDP_man-pages/draft/man3/iswlower.3 | 71 - manual/LDP_man-pages/draft/man3/iswprint.3 | 53 - manual/LDP_man-pages/draft/man3/iswpunct.3 | 65 - manual/LDP_man-pages/draft/man3/iswspace.3 | 62 - manual/LDP_man-pages/draft/man3/iswupper.3 | 71 - manual/LDP_man-pages/draft/man3/iswxdigit.3 | 64 - manual/LDP_man-pages/draft/man3/j0.3 | 128 - manual/LDP_man-pages/draft/man3/key_setsecret.3 | 63 - manual/LDP_man-pages/draft/man3/ldexp.3 | 113 - manual/LDP_man-pages/draft/man3/lgamma.3 | 71 +- manual/LDP_man-pages/draft/man3/lio_listio.3 | 47 +- manual/LDP_man-pages/draft/man3/localeconv.3 | 69 - manual/LDP_man-pages/draft/man3/lockf.3 | 124 - manual/LDP_man-pages/draft/man3/log.3 | 113 - manual/LDP_man-pages/draft/man3/log10.3 | 94 - manual/LDP_man-pages/draft/man3/log1p.3 | 131 - manual/LDP_man-pages/draft/man3/log2.3 | 96 - manual/LDP_man-pages/draft/man3/logb.3 | 121 - manual/LDP_man-pages/draft/man3/login.3 | 85 - manual/LDP_man-pages/draft/man3/lrint.3 | 113 - manual/LDP_man-pages/draft/man3/lround.3 | 115 - manual/LDP_man-pages/draft/man3/lsearch.3 | 71 - manual/LDP_man-pages/draft/man3/lseek64.3 | 133 - manual/LDP_man-pages/draft/man3/makecontext.3 | 181 -- manual/LDP_man-pages/draft/man3/makedev.3 | 78 - manual/LDP_man-pages/draft/man3/mallinfo.3 | 240 -- manual/LDP_man-pages/draft/man3/malloc.3 | 156 - manual/LDP_man-pages/draft/man3/malloc_get_state.3 | 79 - manual/LDP_man-pages/draft/man3/malloc_hook.3 | 59 +- manual/LDP_man-pages/draft/man3/malloc_info.3 | 233 -- manual/LDP_man-pages/draft/man3/malloc_stats.3 | 60 - manual/LDP_man-pages/draft/man3/malloc_trim.3 | 67 - .../LDP_man-pages/draft/man3/malloc_usable_size.3 | 59 - manual/LDP_man-pages/draft/man3/matherr.3 | 129 +- manual/LDP_man-pages/draft/man3/mblen.3 | 67 - manual/LDP_man-pages/draft/man3/mbrlen.3 | 65 - manual/LDP_man-pages/draft/man3/mbrtowc.3 | 84 - manual/LDP_man-pages/draft/man3/mbsinit.3 | 77 - manual/LDP_man-pages/draft/man3/mbsnrtowcs.3 | 95 - manual/LDP_man-pages/draft/man3/mbsrtowcs.3 | 75 - manual/LDP_man-pages/draft/man3/mbstowcs.3 | 176 -- manual/LDP_man-pages/draft/man3/mbtowc.3 | 70 - manual/LDP_man-pages/draft/man3/memccpy.3 | 86 - manual/LDP_man-pages/draft/man3/memchr.3 | 112 - manual/LDP_man-pages/draft/man3/memcmp.3 | 79 - manual/LDP_man-pages/draft/man3/memcpy.3 | 66 - manual/LDP_man-pages/draft/man3/memfrob.3 | 70 - manual/LDP_man-pages/draft/man3/memmem.3 | 87 - manual/LDP_man-pages/draft/man3/memmove.3 | 68 - manual/LDP_man-pages/draft/man3/mempcpy.3 | 70 - manual/LDP_man-pages/draft/man3/memset.3 | 64 - manual/LDP_man-pages/draft/man3/mkdtemp.3 | 93 - manual/LDP_man-pages/draft/man3/mkfifo.3 | 51 +- manual/LDP_man-pages/draft/man3/mkstemp.3 | 168 -- manual/LDP_man-pages/draft/man3/mktemp.3 | 107 - manual/LDP_man-pages/draft/man3/modf.3 | 96 - manual/LDP_man-pages/draft/man3/mpool.3 | 25 +- manual/LDP_man-pages/draft/man3/mq_close.3 | 70 - manual/LDP_man-pages/draft/man3/mq_getattr.3 | 174 -- manual/LDP_man-pages/draft/man3/mq_notify.3 | 60 +- manual/LDP_man-pages/draft/man3/mq_open.3 | 151 - manual/LDP_man-pages/draft/man3/mq_receive.3 | 128 - manual/LDP_man-pages/draft/man3/mq_send.3 | 131 - manual/LDP_man-pages/draft/man3/mq_unlink.3 | 72 - manual/LDP_man-pages/draft/man3/nan.3 | 71 - manual/LDP_man-pages/draft/man3/netlink.3 | 14 +- manual/LDP_man-pages/draft/man3/nextafter.3 | 127 - manual/LDP_man-pages/draft/man3/nl_langinfo.3 | 124 - manual/LDP_man-pages/draft/man3/offsetof.3 | 32 +- manual/LDP_man-pages/draft/man3/on_exit.3 | 79 - manual/LDP_man-pages/draft/man3/opendir.3 | 125 - manual/LDP_man-pages/draft/man3/openpty.3 | 112 - manual/LDP_man-pages/draft/man3/perror.3 | 104 - manual/LDP_man-pages/draft/man3/popen.3 | 138 - manual/LDP_man-pages/draft/man3/posix_fallocate.3 | 103 - manual/LDP_man-pages/draft/man3/posix_memalign.3 | 193 -- manual/LDP_man-pages/draft/man3/posix_openpt.3 | 104 - manual/LDP_man-pages/draft/man3/pow.3 | 198 -- manual/LDP_man-pages/draft/man3/pow10.3 | 65 - manual/LDP_man-pages/draft/man3/printf.3 | 575 ---- manual/LDP_man-pages/draft/man3/profil.3 | 78 - .../draft/man3/program_invocation_name.3 | 13 +- manual/LDP_man-pages/draft/man3/psignal.3 | 97 - .../LDP_man-pages/draft/man3/pthread_attr_init.3 | 301 -- .../draft/man3/pthread_attr_setaffinity_np.3 | 30 +- .../draft/man3/pthread_attr_setdetachstate.3 | 105 - .../draft/man3/pthread_attr_setguardsize.3 | 141 - .../draft/man3/pthread_attr_setinheritsched.3 | 122 - .../draft/man3/pthread_attr_setschedparam.3 | 114 - .../draft/man3/pthread_attr_setschedpolicy.3 | 102 - .../draft/man3/pthread_attr_setscope.3 | 123 - .../draft/man3/pthread_attr_setstack.3 | 139 - .../draft/man3/pthread_attr_setstackaddr.3 | 100 - .../draft/man3/pthread_attr_setstacksize.3 | 107 - manual/LDP_man-pages/draft/man3/pthread_cancel.3 | 43 +- .../draft/man3/pthread_cleanup_push.3 | 72 +- .../draft/man3/pthread_cleanup_push_defer_np.3 | 41 +- manual/LDP_man-pages/draft/man3/pthread_create.3 | 334 --- manual/LDP_man-pages/draft/man3/pthread_detach.3 | 96 - manual/LDP_man-pages/draft/man3/pthread_equal.3 | 69 - manual/LDP_man-pages/draft/man3/pthread_exit.3 | 105 - .../LDP_man-pages/draft/man3/pthread_getattr_np.3 | 68 +- .../draft/man3/pthread_getcpuclockid.3 | 179 -- manual/LDP_man-pages/draft/man3/pthread_join.3 | 112 - manual/LDP_man-pages/draft/man3/pthread_kill.3 | 93 - .../draft/man3/pthread_kill_other_threads_np.3 | 78 - .../draft/man3/pthread_rwlockattr_setkind_np.3 | 65 +- manual/LDP_man-pages/draft/man3/pthread_self.3 | 84 - .../draft/man3/pthread_setaffinity_np.3 | 191 -- .../draft/man3/pthread_setcancelstate.3 | 149 - .../draft/man3/pthread_setconcurrency.3 | 105 - .../LDP_man-pages/draft/man3/pthread_setname_np.3 | 49 +- .../draft/man3/pthread_setschedparam.3 | 74 +- .../draft/man3/pthread_setschedprio.3 | 97 - manual/LDP_man-pages/draft/man3/pthread_sigmask.3 | 157 - manual/LDP_man-pages/draft/man3/pthread_sigqueue.3 | 93 - .../LDP_man-pages/draft/man3/pthread_testcancel.3 | 76 - .../LDP_man-pages/draft/man3/pthread_tryjoin_np.3 | 125 - manual/LDP_man-pages/draft/man3/pthread_yield.3 | 73 - manual/LDP_man-pages/draft/man3/ptsname.3 | 78 - manual/LDP_man-pages/draft/man3/putenv.3 | 109 - manual/LDP_man-pages/draft/man3/putgrent.3 | 52 - manual/LDP_man-pages/draft/man3/putpwent.3 | 90 - manual/LDP_man-pages/draft/man3/puts.3 | 88 - manual/LDP_man-pages/draft/man3/putwchar.3 | 57 - manual/LDP_man-pages/draft/man3/qecvt.3 | 91 - manual/LDP_man-pages/draft/man3/qsort.3 | 138 - manual/LDP_man-pages/draft/man3/raise.3 | 85 - manual/LDP_man-pages/draft/man3/rand.3 | 168 -- manual/LDP_man-pages/draft/man3/random.3 | 130 - manual/LDP_man-pages/draft/man3/random_r.3 | 104 - manual/LDP_man-pages/draft/man3/rcmd.3 | 177 -- manual/LDP_man-pages/draft/man3/re_comp.3 | 75 - manual/LDP_man-pages/draft/man3/readdir.3 | 198 -- manual/LDP_man-pages/draft/man3/realpath.3 | 54 +- manual/LDP_man-pages/draft/man3/recno.3 | 15 +- manual/LDP_man-pages/draft/man3/regex.3 | 196 -- manual/LDP_man-pages/draft/man3/remainder.3 | 155 - manual/LDP_man-pages/draft/man3/remove.3 | 87 - manual/LDP_man-pages/draft/man3/remquo.3 | 101 - manual/LDP_man-pages/draft/man3/resolver.3 | 197 -- manual/LDP_man-pages/draft/man3/rewinddir.3 | 68 - manual/LDP_man-pages/draft/man3/rexec.3 | 66 +- manual/LDP_man-pages/draft/man3/rint.3 | 124 - manual/LDP_man-pages/draft/man3/round.3 | 102 - manual/LDP_man-pages/draft/man3/rpc.3 | 695 ----- manual/LDP_man-pages/draft/man3/rpmatch.3 | 110 - manual/LDP_man-pages/draft/man3/rtime.3 | 56 +- manual/LDP_man-pages/draft/man3/rtnetlink.3 | 80 +- manual/LDP_man-pages/draft/man3/scalb.3 | 86 +- manual/LDP_man-pages/draft/man3/scalbln.3 | 143 - manual/LDP_man-pages/draft/man3/scandir.3 | 228 -- manual/LDP_man-pages/draft/man3/scanf.3 | 175 +- manual/LDP_man-pages/draft/man3/sched_getcpu.3 | 43 +- manual/LDP_man-pages/draft/man3/seekdir.3 | 79 - manual/LDP_man-pages/draft/man3/sem_close.3 | 65 - manual/LDP_man-pages/draft/man3/sem_destroy.3 | 74 - manual/LDP_man-pages/draft/man3/sem_getvalue.3 | 70 - manual/LDP_man-pages/draft/man3/sem_init.3 | 84 - manual/LDP_man-pages/draft/man3/sem_open.3 | 110 - manual/LDP_man-pages/draft/man3/sem_post.3 | 74 - manual/LDP_man-pages/draft/man3/sem_unlink.3 | 72 - manual/LDP_man-pages/draft/man3/sem_wait.3 | 72 +- manual/LDP_man-pages/draft/man3/setaliasent.3 | 130 - manual/LDP_man-pages/draft/man3/setbuf.3 | 166 -- manual/LDP_man-pages/draft/man3/setenv.3 | 108 - manual/LDP_man-pages/draft/man3/setjmp.3 | 93 - manual/LDP_man-pages/draft/man3/setlocale.3 | 53 +- manual/LDP_man-pages/draft/man3/setlogmask.3 | 71 - manual/LDP_man-pages/draft/man3/setnetgrent.3 | 84 - manual/LDP_man-pages/draft/man3/shm_open.3 | 168 -- manual/LDP_man-pages/draft/man3/siginterrupt.3 | 90 - manual/LDP_man-pages/draft/man3/signbit.3 | 68 - manual/LDP_man-pages/draft/man3/significand.3 | 61 - manual/LDP_man-pages/draft/man3/sigpause.3 | 89 - manual/LDP_man-pages/draft/man3/sigqueue.3 | 123 - manual/LDP_man-pages/draft/man3/sigset.3 | 74 +- manual/LDP_man-pages/draft/man3/sigsetops.3 | 129 - manual/LDP_man-pages/draft/man3/sigvec.3 | 102 +- manual/LDP_man-pages/draft/man3/sigwait.3 | 84 - manual/LDP_man-pages/draft/man3/sin.3 | 112 - manual/LDP_man-pages/draft/man3/sincos.3 | 75 - manual/LDP_man-pages/draft/man3/sinh.3 | 114 - manual/LDP_man-pages/draft/man3/sleep.3 | 63 - manual/LDP_man-pages/draft/man3/sockatmark.3 | 120 - manual/LDP_man-pages/draft/man3/sqrt.3 | 103 - manual/LDP_man-pages/draft/man3/statvfs.3 | 152 - manual/LDP_man-pages/draft/man3/stdarg.3 | 217 -- manual/LDP_man-pages/draft/man3/stdin.3 | 20 +- manual/LDP_man-pages/draft/man3/stdio.3 | 185 -- manual/LDP_man-pages/draft/man3/stdio_ext.3 | 182 -- manual/LDP_man-pages/draft/man3/stpcpy.3 | 104 - manual/LDP_man-pages/draft/man3/stpncpy.3 | 75 - manual/LDP_man-pages/draft/man3/strcasecmp.3 | 74 - manual/LDP_man-pages/draft/man3/strcat.3 | 124 - manual/LDP_man-pages/draft/man3/strchr.3 | 95 - manual/LDP_man-pages/draft/man3/strcmp.3 | 76 - manual/LDP_man-pages/draft/man3/strcoll.3 | 67 - manual/LDP_man-pages/draft/man3/strcpy.3 | 146 - manual/LDP_man-pages/draft/man3/strdup.3 | 115 - manual/LDP_man-pages/draft/man3/strerror.3 | 167 -- manual/LDP_man-pages/draft/man3/strfmon.3 | 129 - manual/LDP_man-pages/draft/man3/strfry.3 | 62 - manual/LDP_man-pages/draft/man3/strftime.3 | 369 --- manual/LDP_man-pages/draft/man3/string.3 | 18 +- manual/LDP_man-pages/draft/man3/strlen.3 | 64 - manual/LDP_man-pages/draft/man3/strnlen.3 | 70 - manual/LDP_man-pages/draft/man3/strpbrk.3 | 69 - manual/LDP_man-pages/draft/man3/strptime.3 | 103 +- manual/LDP_man-pages/draft/man3/strsep.3 | 90 - manual/LDP_man-pages/draft/man3/strsignal.3 | 88 - manual/LDP_man-pages/draft/man3/strspn.3 | 79 - manual/LDP_man-pages/draft/man3/strstr.3 | 95 - manual/LDP_man-pages/draft/man3/strtod.3 | 149 - manual/LDP_man-pages/draft/man3/strtoimax.3 | 64 - manual/LDP_man-pages/draft/man3/strtok.3 | 199 -- manual/LDP_man-pages/draft/man3/strtol.3 | 207 -- manual/LDP_man-pages/draft/man3/strtoul.3 | 140 - manual/LDP_man-pages/draft/man3/strverscmp.3 | 77 - manual/LDP_man-pages/draft/man3/strxfrm.3 | 73 - manual/LDP_man-pages/draft/man3/swab.3 | 71 - manual/LDP_man-pages/draft/man3/sysconf.3 | 83 +- manual/LDP_man-pages/draft/man3/syslog.3 | 240 -- manual/LDP_man-pages/draft/man3/system.3 | 131 - manual/LDP_man-pages/draft/man3/sysv_signal.3 | 28 +- manual/LDP_man-pages/draft/man3/tan.3 | 127 - manual/LDP_man-pages/draft/man3/tanh.3 | 106 - manual/LDP_man-pages/draft/man3/tcgetpgrp.3 | 32 +- manual/LDP_man-pages/draft/man3/tcgetsid.3 | 72 - manual/LDP_man-pages/draft/man3/telldir.3 | 88 - manual/LDP_man-pages/draft/man3/tempnam.3 | 51 +- manual/LDP_man-pages/draft/man3/termios.3 | 244 +- manual/LDP_man-pages/draft/man3/tgamma.3 | 135 - manual/LDP_man-pages/draft/man3/timegm.3 | 93 - manual/LDP_man-pages/draft/man3/timeradd.3 | 49 +- manual/LDP_man-pages/draft/man3/tmpfile.3 | 93 - manual/LDP_man-pages/draft/man3/tmpnam.3 | 109 - manual/LDP_man-pages/draft/man3/toascii.3 | 71 - manual/LDP_man-pages/draft/man3/toupper.3 | 113 - manual/LDP_man-pages/draft/man3/towctrans.3 | 64 - manual/LDP_man-pages/draft/man3/towlower.3 | 87 - manual/LDP_man-pages/draft/man3/towupper.3 | 87 - manual/LDP_man-pages/draft/man3/trunc.3 | 91 - manual/LDP_man-pages/draft/man3/tsearch.3 | 195 -- manual/LDP_man-pages/draft/man3/ttyname.3 | 82 - manual/LDP_man-pages/draft/man3/ttyslot.3 | 114 - manual/LDP_man-pages/draft/man3/tzset.3 | 181 -- manual/LDP_man-pages/draft/man3/ualarm.3 | 114 - manual/LDP_man-pages/draft/man3/ulimit.3 | 75 - manual/LDP_man-pages/draft/man3/undocumented.3 | 58 +- manual/LDP_man-pages/draft/man3/ungetwc.3 | 65 - manual/LDP_man-pages/draft/man3/unlocked_stdio.3 | 128 - manual/LDP_man-pages/draft/man3/unlockpt.3 | 52 - manual/LDP_man-pages/draft/man3/updwtmp.3 | 82 - manual/LDP_man-pages/draft/man3/uselocale.3 | 29 +- manual/LDP_man-pages/draft/man3/usleep.3 | 126 - manual/LDP_man-pages/draft/man3/wcpcpy.3 | 70 - manual/LDP_man-pages/draft/man3/wcpncpy.3 | 73 - manual/LDP_man-pages/draft/man3/wcrtomb.3 | 68 - manual/LDP_man-pages/draft/man3/wcscasecmp.3 | 74 - manual/LDP_man-pages/draft/man3/wcscat.3 | 54 - manual/LDP_man-pages/draft/man3/wcschr.3 | 50 - manual/LDP_man-pages/draft/man3/wcscmp.3 | 51 - manual/LDP_man-pages/draft/man3/wcscpy.3 | 53 - manual/LDP_man-pages/draft/man3/wcscspn.3 | 53 - manual/LDP_man-pages/draft/man3/wcsdup.3 | 75 - manual/LDP_man-pages/draft/man3/wcslen.3 | 50 - manual/LDP_man-pages/draft/man3/wcsncasecmp.3 | 75 - manual/LDP_man-pages/draft/man3/wcsncat.3 | 54 - manual/LDP_man-pages/draft/man3/wcsncmp.3 | 53 - manual/LDP_man-pages/draft/man3/wcsncpy.3 | 56 - manual/LDP_man-pages/draft/man3/wcsnlen.3 | 72 - manual/LDP_man-pages/draft/man3/wcsnrtombs.3 | 31 +- manual/LDP_man-pages/draft/man3/wcspbrk.3 | 50 - manual/LDP_man-pages/draft/man3/wcsrchr.3 | 50 - manual/LDP_man-pages/draft/man3/wcsrtombs.3 | 73 - manual/LDP_man-pages/draft/man3/wcsspn.3 | 53 - manual/LDP_man-pages/draft/man3/wcsstr.3 | 53 - manual/LDP_man-pages/draft/man3/wcstoimax.3 | 64 - manual/LDP_man-pages/draft/man3/wcstok.3 | 74 - manual/LDP_man-pages/draft/man3/wcstombs.3 | 69 - manual/LDP_man-pages/draft/man3/wcswidth.3 | 53 - manual/LDP_man-pages/draft/man3/wctob.3 | 54 - manual/LDP_man-pages/draft/man3/wctomb.3 | 68 - manual/LDP_man-pages/draft/man3/wctrans.3 | 60 - manual/LDP_man-pages/draft/man3/wctype.3 | 71 - manual/LDP_man-pages/draft/man3/wcwidth.3 | 60 - manual/LDP_man-pages/draft/man3/wmemchr.3 | 50 - manual/LDP_man-pages/draft/man3/wmemcmp.3 | 51 - manual/LDP_man-pages/draft/man3/wmemcpy.3 | 53 - manual/LDP_man-pages/draft/man3/wmemmove.3 | 51 - manual/LDP_man-pages/draft/man3/wmemset.3 | 49 - manual/LDP_man-pages/draft/man3/wordexp.3 | 149 - manual/LDP_man-pages/draft/man3/wprintf.3 | 133 - manual/LDP_man-pages/draft/man3/xcrypt.3 | 58 - manual/LDP_man-pages/draft/man3/xdr.3 | 334 --- manual/LDP_man-pages/draft/man3/y0.3 | 166 -- manual/LDP_man-pages/draft/man4/console_codes.4 | 183 +- manual/LDP_man-pages/draft/man4/cpuid.4 | 40 +- manual/LDP_man-pages/draft/man4/dsp56k.4 | 34 +- manual/LDP_man-pages/draft/man4/fd.4 | 142 +- manual/LDP_man-pages/draft/man4/full.4 | 61 - manual/LDP_man-pages/draft/man4/hd.4 | 94 - manual/LDP_man-pages/draft/man4/initrd.4 | 115 +- manual/LDP_man-pages/draft/man4/intro.4 | 9 +- manual/LDP_man-pages/draft/man4/lp.4 | 47 +- manual/LDP_man-pages/draft/man4/mem.4 | 93 - manual/LDP_man-pages/draft/man4/mouse.4 | 23 +- manual/LDP_man-pages/draft/man4/msr.4 | 18 +- manual/LDP_man-pages/draft/man4/null.4 | 66 - manual/LDP_man-pages/draft/man4/pts.4 | 60 - manual/LDP_man-pages/draft/man4/ram.4 | 18 +- manual/LDP_man-pages/draft/man4/random.4 | 214 -- manual/LDP_man-pages/draft/man4/rtc.4 | 67 +- manual/LDP_man-pages/draft/man4/sd.4 | 109 - manual/LDP_man-pages/draft/man4/sk98lin.4 | 323 -- manual/LDP_man-pages/draft/man4/st.4 | 168 +- manual/LDP_man-pages/draft/man4/tty.4 | 25 +- manual/LDP_man-pages/draft/man4/ttyS.4 | 21 +- manual/LDP_man-pages/draft/man4/vcs.4 | 153 - manual/LDP_man-pages/draft/man4/wavelan.4 | 100 - manual/LDP_man-pages/draft/man5/acct.5 | 33 +- manual/LDP_man-pages/draft/man5/charmap.5 | 102 - manual/LDP_man-pages/draft/man5/core.5 | 325 -- manual/LDP_man-pages/draft/man5/dir_colors.5 | 78 +- manual/LDP_man-pages/draft/man5/elf.5 | 1376 --------- manual/LDP_man-pages/draft/man5/filesystems.5 | 166 -- manual/LDP_man-pages/draft/man5/ftpusers.5 | 27 +- manual/LDP_man-pages/draft/man5/gai.conf.5 | 28 +- manual/LDP_man-pages/draft/man5/group.5 | 29 +- manual/LDP_man-pages/draft/man5/host.conf.5 | 130 - manual/LDP_man-pages/draft/man5/hosts.5 | 43 +- manual/LDP_man-pages/draft/man5/hosts.equiv.5 | 57 - manual/LDP_man-pages/draft/man5/intro.5 | 49 - manual/LDP_man-pages/draft/man5/issue.5 | 14 +- manual/LDP_man-pages/draft/man5/locale.5 | 772 ----- manual/LDP_man-pages/draft/man5/motd.5 | 9 +- manual/LDP_man-pages/draft/man5/networks.5 | 22 +- manual/LDP_man-pages/draft/man5/nologin.5 | 52 - manual/LDP_man-pages/draft/man5/nscd.conf.5 | 52 +- manual/LDP_man-pages/draft/man5/nss.5 | 22 +- manual/LDP_man-pages/draft/man5/nsswitch.conf.5 | 291 -- manual/LDP_man-pages/draft/man5/passwd.5 | 25 +- manual/LDP_man-pages/draft/man5/proc.5 | 3124 -------------------- manual/LDP_man-pages/draft/man5/protocols.5 | 19 +- manual/LDP_man-pages/draft/man5/repertoiremap.5 | 66 - manual/LDP_man-pages/draft/man5/resolv.conf.5 | 213 -- manual/LDP_man-pages/draft/man5/rpc.5 | 36 +- manual/LDP_man-pages/draft/man5/securetty.5 | 49 - manual/LDP_man-pages/draft/man5/services.5 | 45 +- manual/LDP_man-pages/draft/man5/shells.5 | 66 - manual/LDP_man-pages/draft/man5/slabinfo.5 | 115 - manual/LDP_man-pages/draft/man5/termcap.5 | 625 ++-- manual/LDP_man-pages/draft/man5/ttytype.5 | 22 +- manual/LDP_man-pages/draft/man5/tzfile.5 | 122 - manual/LDP_man-pages/draft/man5/utmp.5 | 80 +- manual/LDP_man-pages/draft/man6/intro.6 | 8 +- manual/LDP_man-pages/draft/man7/aio.7 | 87 +- manual/LDP_man-pages/draft/man7/armscii-8.7 | 12 +- manual/LDP_man-pages/draft/man7/arp.7 | 36 +- manual/LDP_man-pages/draft/man7/ascii.7 | 36 +- manual/LDP_man-pages/draft/man7/boot.7 | 137 - manual/LDP_man-pages/draft/man7/bootparam.7 | 1082 ++----- manual/LDP_man-pages/draft/man7/capabilities.7 | 757 ----- manual/LDP_man-pages/draft/man7/charsets.7 | 164 +- manual/LDP_man-pages/draft/man7/complex.7 | 17 +- manual/LDP_man-pages/draft/man7/cp1251.7 | 16 +- manual/LDP_man-pages/draft/man7/cp1252.7 | 16 +- manual/LDP_man-pages/draft/man7/credentials.7 | 178 -- manual/LDP_man-pages/draft/man7/ddp.7 | 24 +- manual/LDP_man-pages/draft/man7/environ.7 | 95 +- manual/LDP_man-pages/draft/man7/epoll.7 | 336 --- manual/LDP_man-pages/draft/man7/fanotify.7 | 528 ---- .../LDP_man-pages/draft/man7/feature_test_macros.7 | 484 --- manual/LDP_man-pages/draft/man7/fifo.7 | 56 - manual/LDP_man-pages/draft/man7/futex.7 | 96 - manual/LDP_man-pages/draft/man7/glob.7 | 82 +- manual/LDP_man-pages/draft/man7/hier.7 | 400 --- manual/LDP_man-pages/draft/man7/hostname.7 | 100 - manual/LDP_man-pages/draft/man7/icmp.7 | 27 +- manual/LDP_man-pages/draft/man7/inotify.7 | 182 +- manual/LDP_man-pages/draft/man7/intro.7 | 7 +- manual/LDP_man-pages/draft/man7/ip.7 | 783 ----- manual/LDP_man-pages/draft/man7/ipv6.7 | 82 +- manual/LDP_man-pages/draft/man7/iso_8859-1.7 | 14 +- manual/LDP_man-pages/draft/man7/iso_8859-10.7 | 12 +- manual/LDP_man-pages/draft/man7/iso_8859-11.7 | 12 +- manual/LDP_man-pages/draft/man7/iso_8859-13.7 | 12 +- manual/LDP_man-pages/draft/man7/iso_8859-14.7 | 12 +- manual/LDP_man-pages/draft/man7/iso_8859-15.7 | 14 +- manual/LDP_man-pages/draft/man7/iso_8859-16.7 | 12 +- manual/LDP_man-pages/draft/man7/iso_8859-2.7 | 12 +- manual/LDP_man-pages/draft/man7/iso_8859-3.7 | 12 +- manual/LDP_man-pages/draft/man7/iso_8859-4.7 | 12 +- manual/LDP_man-pages/draft/man7/iso_8859-5.7 | 15 +- manual/LDP_man-pages/draft/man7/iso_8859-6.7 | 12 +- manual/LDP_man-pages/draft/man7/iso_8859-7.7 | 12 +- manual/LDP_man-pages/draft/man7/iso_8859-8.7 | 12 +- manual/LDP_man-pages/draft/man7/iso_8859-9.7 | 12 +- manual/LDP_man-pages/draft/man7/koi8-r.7 | 15 +- manual/LDP_man-pages/draft/man7/koi8-u.7 | 15 +- manual/LDP_man-pages/draft/man7/libc.7 | 48 +- manual/LDP_man-pages/draft/man7/locale.7 | 131 +- manual/LDP_man-pages/draft/man7/mailaddr.7 | 111 - manual/LDP_man-pages/draft/man7/man-pages.7 | 686 ----- manual/LDP_man-pages/draft/man7/man.7 | 167 +- manual/LDP_man-pages/draft/man7/math_error.7 | 80 +- manual/LDP_man-pages/draft/man7/mq_overview.7 | 93 +- manual/LDP_man-pages/draft/man7/namespaces.7 | 249 -- manual/LDP_man-pages/draft/man7/netdevice.7 | 63 +- manual/LDP_man-pages/draft/man7/netlink.7 | 367 --- manual/LDP_man-pages/draft/man7/numa.7 | 17 +- manual/LDP_man-pages/draft/man7/operator.7 | 80 - manual/LDP_man-pages/draft/man7/packet.7 | 385 --- manual/LDP_man-pages/draft/man7/path_resolution.7 | 116 +- manual/LDP_man-pages/draft/man7/pid_namespaces.7 | 183 -- manual/LDP_man-pages/draft/man7/pipe.7 | 122 - manual/LDP_man-pages/draft/man7/posixoptions.7 | 737 ----- manual/LDP_man-pages/draft/man7/pthreads.7 | 231 +- manual/LDP_man-pages/draft/man7/pty.7 | 94 - manual/LDP_man-pages/draft/man7/raw.7 | 109 +- manual/LDP_man-pages/draft/man7/regex.7 | 109 +- manual/LDP_man-pages/draft/man7/rtnetlink.7 | 373 --- manual/LDP_man-pages/draft/man7/sched.7 | 420 --- manual/LDP_man-pages/draft/man7/sem_overview.7 | 24 +- manual/LDP_man-pages/draft/man7/shm_overview.7 | 21 +- manual/LDP_man-pages/draft/man7/sigevent.7 | 48 +- manual/LDP_man-pages/draft/man7/signal.7 | 606 ---- manual/LDP_man-pages/draft/man7/socket.7 | 539 ---- manual/LDP_man-pages/draft/man7/standards.7 | 214 -- manual/LDP_man-pages/draft/man7/suffixes.7 | 19 +- manual/LDP_man-pages/draft/man7/symlink.7 | 241 -- manual/LDP_man-pages/draft/man7/tcp.7 | 367 ++- manual/LDP_man-pages/draft/man7/termio.7 | 57 - manual/LDP_man-pages/draft/man7/time.7 | 53 +- manual/LDP_man-pages/draft/man7/udp.7 | 44 +- manual/LDP_man-pages/draft/man7/udplite.7 | 47 +- manual/LDP_man-pages/draft/man7/unicode.7 | 56 +- manual/LDP_man-pages/draft/man7/units.7 | 59 +- manual/LDP_man-pages/draft/man7/unix.7 | 371 --- manual/LDP_man-pages/draft/man7/uri.7 | 68 +- manual/LDP_man-pages/draft/man7/user_namespaces.7 | 687 ----- manual/LDP_man-pages/draft/man7/utf-8.7 | 22 +- manual/LDP_man-pages/draft/man7/vdso.7 | 178 +- manual/LDP_man-pages/draft/man7/x25.7 | 15 +- manual/LDP_man-pages/draft/man8/iconvconfig.8 | 24 +- manual/LDP_man-pages/draft/man8/intro.8 | 12 +- manual/LDP_man-pages/draft/man8/ld.so.8 | 330 --- manual/LDP_man-pages/draft/man8/ldconfig.8 | 113 - manual/LDP_man-pages/draft/man8/nscd.8 | 31 +- manual/LDP_man-pages/draft/man8/sln.8 | 15 +- manual/LDP_man-pages/draft/man8/tzselect.8 | 12 +- manual/LDP_man-pages/draft/man8/zdump.8 | 48 - manual/LDP_man-pages/draft/man8/zic.8 | 274 -- 940 files changed, 9910 insertions(+), 101079 deletions(-) delete mode 100644 manual/LDP_man-pages/draft/man1/getent.1 delete mode 100644 manual/LDP_man-pages/draft/man1/intro.1 delete mode 100644 manual/LDP_man-pages/draft/man1/ldd.1 delete mode 100644 manual/LDP_man-pages/draft/man1/pldd.1 delete mode 100644 manual/LDP_man-pages/draft/man2/_exit.2 delete mode 100644 manual/LDP_man-pages/draft/man2/add_key.2 delete mode 100644 manual/LDP_man-pages/draft/man2/adjtimex.2 delete mode 100644 manual/LDP_man-pages/draft/man2/arch_prctl.2 delete mode 100644 manual/LDP_man-pages/draft/man2/brk.2 delete mode 100644 manual/LDP_man-pages/draft/man2/cacheflush.2 delete mode 100644 manual/LDP_man-pages/draft/man2/capget.2 delete mode 100644 manual/LDP_man-pages/draft/man2/clock_getres.2 delete mode 100644 manual/LDP_man-pages/draft/man2/clock_nanosleep.2 delete mode 100644 manual/LDP_man-pages/draft/man2/clone.2 delete mode 100644 manual/LDP_man-pages/draft/man2/close.2 delete mode 100644 manual/LDP_man-pages/draft/man2/connect.2 delete mode 100644 manual/LDP_man-pages/draft/man2/dup.2 delete mode 100644 manual/LDP_man-pages/draft/man2/epoll_ctl.2 delete mode 100644 manual/LDP_man-pages/draft/man2/epoll_wait.2 delete mode 100644 manual/LDP_man-pages/draft/man2/execve.2 delete mode 100644 manual/LDP_man-pages/draft/man2/fallocate.2 delete mode 100644 manual/LDP_man-pages/draft/man2/fanotify_init.2 delete mode 100644 manual/LDP_man-pages/draft/man2/fanotify_mark.2 delete mode 100644 manual/LDP_man-pages/draft/man2/fcntl.2 delete mode 100644 manual/LDP_man-pages/draft/man2/fork.2 delete mode 100644 manual/LDP_man-pages/draft/man2/fsync.2 delete mode 100644 manual/LDP_man-pages/draft/man2/futex.2 delete mode 100644 manual/LDP_man-pages/draft/man2/get_mempolicy.2 delete mode 100644 manual/LDP_man-pages/draft/man2/getdents.2 delete mode 100644 manual/LDP_man-pages/draft/man2/getgroups.2 delete mode 100644 manual/LDP_man-pages/draft/man2/gethostname.2 delete mode 100644 manual/LDP_man-pages/draft/man2/getitimer.2 delete mode 100644 manual/LDP_man-pages/draft/man2/getpagesize.2 delete mode 100644 manual/LDP_man-pages/draft/man2/getpid.2 delete mode 100644 manual/LDP_man-pages/draft/man2/getpriority.2 delete mode 100644 manual/LDP_man-pages/draft/man2/getrlimit.2 delete mode 100644 manual/LDP_man-pages/draft/man2/getsid.2 delete mode 100644 manual/LDP_man-pages/draft/man2/gettimeofday.2 delete mode 100644 manual/LDP_man-pages/draft/man2/getxattr.2 delete mode 100644 manual/LDP_man-pages/draft/man2/io_getevents.2 delete mode 100644 manual/LDP_man-pages/draft/man2/io_submit.2 delete mode 100644 manual/LDP_man-pages/draft/man2/ioctl.2 delete mode 100644 manual/LDP_man-pages/draft/man2/iopl.2 delete mode 100644 manual/LDP_man-pages/draft/man2/ipc.2 delete mode 100644 manual/LDP_man-pages/draft/man2/kcmp.2 delete mode 100644 manual/LDP_man-pages/draft/man2/keyctl.2 delete mode 100644 manual/LDP_man-pages/draft/man2/kill.2 delete mode 100644 manual/LDP_man-pages/draft/man2/listxattr.2 delete mode 100644 manual/LDP_man-pages/draft/man2/llseek.2 delete mode 100644 manual/LDP_man-pages/draft/man2/lseek.2 delete mode 100644 manual/LDP_man-pages/draft/man2/madvise.2 delete mode 100644 manual/LDP_man-pages/draft/man2/mbind.2 delete mode 100644 manual/LDP_man-pages/draft/man2/memfd_create.2 delete mode 100644 manual/LDP_man-pages/draft/man2/mlock.2 delete mode 100644 manual/LDP_man-pages/draft/man2/mmap.2 delete mode 100644 manual/LDP_man-pages/draft/man2/modify_ldt.2 delete mode 100644 manual/LDP_man-pages/draft/man2/mount.2 delete mode 100644 manual/LDP_man-pages/draft/man2/mprotect.2 delete mode 100644 manual/LDP_man-pages/draft/man2/mremap.2 delete mode 100644 manual/LDP_man-pages/draft/man2/msgctl.2 delete mode 100644 manual/LDP_man-pages/draft/man2/msgget.2 delete mode 100644 manual/LDP_man-pages/draft/man2/msgop.2 delete mode 100644 manual/LDP_man-pages/draft/man2/msync.2 delete mode 100644 manual/LDP_man-pages/draft/man2/nfsservctl.2 delete mode 100644 manual/LDP_man-pages/draft/man2/nice.2 delete mode 100644 manual/LDP_man-pages/draft/man2/open.2 delete mode 100644 manual/LDP_man-pages/draft/man2/personality.2 delete mode 100644 manual/LDP_man-pages/draft/man2/pipe.2 delete mode 100644 manual/LDP_man-pages/draft/man2/pivot_root.2 delete mode 100644 manual/LDP_man-pages/draft/man2/poll.2 delete mode 100644 manual/LDP_man-pages/draft/man2/prctl.2 delete mode 100644 manual/LDP_man-pages/draft/man2/read.2 delete mode 100644 manual/LDP_man-pages/draft/man2/readlink.2 delete mode 100644 manual/LDP_man-pages/draft/man2/readv.2 delete mode 100644 manual/LDP_man-pages/draft/man2/reboot.2 delete mode 100644 manual/LDP_man-pages/draft/man2/recv.2 delete mode 100644 manual/LDP_man-pages/draft/man2/request_key.2 delete mode 100644 manual/LDP_man-pages/draft/man2/sched_setaffinity.2 delete mode 100644 manual/LDP_man-pages/draft/man2/select.2 delete mode 100644 manual/LDP_man-pages/draft/man2/select_tut.2 delete mode 100644 manual/LDP_man-pages/draft/man2/semctl.2 delete mode 100644 manual/LDP_man-pages/draft/man2/semget.2 delete mode 100644 manual/LDP_man-pages/draft/man2/sendfile.2 delete mode 100644 manual/LDP_man-pages/draft/man2/set_mempolicy.2 delete mode 100644 manual/LDP_man-pages/draft/man2/set_thread_area.2 delete mode 100644 manual/LDP_man-pages/draft/man2/seteuid.2 delete mode 100644 manual/LDP_man-pages/draft/man2/setfsuid.2 delete mode 100644 manual/LDP_man-pages/draft/man2/setns.2 delete mode 100644 manual/LDP_man-pages/draft/man2/setsid.2 delete mode 100644 manual/LDP_man-pages/draft/man2/setxattr.2 delete mode 100644 manual/LDP_man-pages/draft/man2/shmctl.2 delete mode 100644 manual/LDP_man-pages/draft/man2/shmget.2 delete mode 100644 manual/LDP_man-pages/draft/man2/shmop.2 delete mode 100644 manual/LDP_man-pages/draft/man2/sigaction.2 delete mode 100644 manual/LDP_man-pages/draft/man2/sigaltstack.2 delete mode 100644 manual/LDP_man-pages/draft/man2/signalfd.2 delete mode 100644 manual/LDP_man-pages/draft/man2/sigprocmask.2 delete mode 100644 manual/LDP_man-pages/draft/man2/sigreturn.2 delete mode 100644 manual/LDP_man-pages/draft/man2/sigsuspend.2 delete mode 100644 manual/LDP_man-pages/draft/man2/socket.2 delete mode 100644 manual/LDP_man-pages/draft/man2/socketcall.2 delete mode 100644 manual/LDP_man-pages/draft/man2/socketpair.2 delete mode 100644 manual/LDP_man-pages/draft/man2/splice.2 delete mode 100644 manual/LDP_man-pages/draft/man2/stat.2 delete mode 100644 manual/LDP_man-pages/draft/man2/statfs.2 delete mode 100644 manual/LDP_man-pages/draft/man2/sync.2 delete mode 100644 manual/LDP_man-pages/draft/man2/syscall.2 delete mode 100644 manual/LDP_man-pages/draft/man2/sysinfo.2 delete mode 100644 manual/LDP_man-pages/draft/man2/time.2 delete mode 100644 manual/LDP_man-pages/draft/man2/timerfd_create.2 delete mode 100644 manual/LDP_man-pages/draft/man2/umask.2 delete mode 100644 manual/LDP_man-pages/draft/man2/unshare.2 delete mode 100644 manual/LDP_man-pages/draft/man2/vfork.2 delete mode 100644 manual/LDP_man-pages/draft/man2/wait.2 delete mode 100644 manual/LDP_man-pages/draft/man2/wait4.2 delete mode 100644 manual/LDP_man-pages/draft/man2/write.2 delete mode 100644 manual/LDP_man-pages/draft/man3/a64l.3 delete mode 100644 manual/LDP_man-pages/draft/man3/abort.3 delete mode 100644 manual/LDP_man-pages/draft/man3/abs.3 delete mode 100644 manual/LDP_man-pages/draft/man3/acos.3 delete mode 100644 manual/LDP_man-pages/draft/man3/acosh.3 delete mode 100644 manual/LDP_man-pages/draft/man3/addseverity.3 delete mode 100644 manual/LDP_man-pages/draft/man3/adjtime.3 delete mode 100644 manual/LDP_man-pages/draft/man3/aio_error.3 delete mode 100644 manual/LDP_man-pages/draft/man3/aio_return.3 delete mode 100644 manual/LDP_man-pages/draft/man3/alloca.3 delete mode 100644 manual/LDP_man-pages/draft/man3/argz_add.3 delete mode 100644 manual/LDP_man-pages/draft/man3/asin.3 delete mode 100644 manual/LDP_man-pages/draft/man3/asinh.3 delete mode 100644 manual/LDP_man-pages/draft/man3/asprintf.3 delete mode 100644 manual/LDP_man-pages/draft/man3/assert.3 delete mode 100644 manual/LDP_man-pages/draft/man3/assert_perror.3 delete mode 100644 manual/LDP_man-pages/draft/man3/atan.3 delete mode 100644 manual/LDP_man-pages/draft/man3/atan2.3 delete mode 100644 manual/LDP_man-pages/draft/man3/atanh.3 delete mode 100644 manual/LDP_man-pages/draft/man3/atexit.3 delete mode 100644 manual/LDP_man-pages/draft/man3/atof.3 delete mode 100644 manual/LDP_man-pages/draft/man3/atoi.3 delete mode 100644 manual/LDP_man-pages/draft/man3/backtrace.3 delete mode 100644 manual/LDP_man-pages/draft/man3/basename.3 delete mode 100644 manual/LDP_man-pages/draft/man3/bcmp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/bcopy.3 delete mode 100644 manual/LDP_man-pages/draft/man3/bindresvport.3 delete mode 100644 manual/LDP_man-pages/draft/man3/bsd_signal.3 delete mode 100644 manual/LDP_man-pages/draft/man3/bsearch.3 delete mode 100644 manual/LDP_man-pages/draft/man3/btowc.3 delete mode 100644 manual/LDP_man-pages/draft/man3/bzero.3 delete mode 100644 manual/LDP_man-pages/draft/man3/cabs.3 delete mode 100644 manual/LDP_man-pages/draft/man3/cacos.3 delete mode 100644 manual/LDP_man-pages/draft/man3/cacosh.3 delete mode 100644 manual/LDP_man-pages/draft/man3/canonicalize_file_name.3 delete mode 100644 manual/LDP_man-pages/draft/man3/carg.3 delete mode 100644 manual/LDP_man-pages/draft/man3/casin.3 delete mode 100644 manual/LDP_man-pages/draft/man3/casinh.3 delete mode 100644 manual/LDP_man-pages/draft/man3/catan.3 delete mode 100644 manual/LDP_man-pages/draft/man3/catanh.3 delete mode 100644 manual/LDP_man-pages/draft/man3/catgets.3 delete mode 100644 manual/LDP_man-pages/draft/man3/catopen.3 delete mode 100644 manual/LDP_man-pages/draft/man3/cbrt.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ccos.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ceil.3 delete mode 100644 manual/LDP_man-pages/draft/man3/cexp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/cfree.3 delete mode 100644 manual/LDP_man-pages/draft/man3/cimag.3 delete mode 100644 manual/LDP_man-pages/draft/man3/clearenv.3 delete mode 100644 manual/LDP_man-pages/draft/man3/clock.3 delete mode 100644 manual/LDP_man-pages/draft/man3/clock_getcpuclockid.3 delete mode 100644 manual/LDP_man-pages/draft/man3/clog.3 delete mode 100644 manual/LDP_man-pages/draft/man3/clog10.3 delete mode 100644 manual/LDP_man-pages/draft/man3/closedir.3 delete mode 100644 manual/LDP_man-pages/draft/man3/cmsg.3 delete mode 100644 manual/LDP_man-pages/draft/man3/confstr.3 delete mode 100644 manual/LDP_man-pages/draft/man3/conj.3 delete mode 100644 manual/LDP_man-pages/draft/man3/copysign.3 delete mode 100644 manual/LDP_man-pages/draft/man3/cos.3 delete mode 100644 manual/LDP_man-pages/draft/man3/cosh.3 delete mode 100644 manual/LDP_man-pages/draft/man3/cpow.3 delete mode 100644 manual/LDP_man-pages/draft/man3/cproj.3 delete mode 100644 manual/LDP_man-pages/draft/man3/creal.3 delete mode 100644 manual/LDP_man-pages/draft/man3/crypt.3 delete mode 100644 manual/LDP_man-pages/draft/man3/csin.3 delete mode 100644 manual/LDP_man-pages/draft/man3/csinh.3 delete mode 100644 manual/LDP_man-pages/draft/man3/csqrt.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ctan.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ctanh.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ctermid.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ctime.3 delete mode 100644 manual/LDP_man-pages/draft/man3/daemon.3 delete mode 100644 manual/LDP_man-pages/draft/man3/des_crypt.3 delete mode 100644 manual/LDP_man-pages/draft/man3/difftime.3 delete mode 100644 manual/LDP_man-pages/draft/man3/dirfd.3 delete mode 100644 manual/LDP_man-pages/draft/man3/div.3 delete mode 100644 manual/LDP_man-pages/draft/man3/dl_iterate_phdr.3 delete mode 100644 manual/LDP_man-pages/draft/man3/dlopen.3 delete mode 100644 manual/LDP_man-pages/draft/man3/drand48.3 delete mode 100644 manual/LDP_man-pages/draft/man3/drand48_r.3 delete mode 100644 manual/LDP_man-pages/draft/man3/dysize.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ecvt.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ecvt_r.3 delete mode 100644 manual/LDP_man-pages/draft/man3/encrypt.3 delete mode 100644 manual/LDP_man-pages/draft/man3/envz_add.3 delete mode 100644 manual/LDP_man-pages/draft/man3/erf.3 delete mode 100644 manual/LDP_man-pages/draft/man3/erfc.3 delete mode 100644 manual/LDP_man-pages/draft/man3/err.3 delete mode 100644 manual/LDP_man-pages/draft/man3/errno.3 delete mode 100644 manual/LDP_man-pages/draft/man3/error.3 delete mode 100644 manual/LDP_man-pages/draft/man3/euidaccess.3 delete mode 100644 manual/LDP_man-pages/draft/man3/exec.3 delete mode 100644 manual/LDP_man-pages/draft/man3/exit.3 delete mode 100644 manual/LDP_man-pages/draft/man3/exp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/exp10.3 delete mode 100644 manual/LDP_man-pages/draft/man3/exp2.3 delete mode 100644 manual/LDP_man-pages/draft/man3/expm1.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fabs.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fclose.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fcloseall.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fdim.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ferror.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fexecve.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fflush.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ffs.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fgetc.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fgetgrent.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fgetpwent.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fgetwc.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fgetws.3 delete mode 100644 manual/LDP_man-pages/draft/man3/finite.3 delete mode 100644 manual/LDP_man-pages/draft/man3/flockfile.3 delete mode 100644 manual/LDP_man-pages/draft/man3/floor.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fma.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fmax.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fmemopen.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fmin.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fmod.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fnmatch.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fopen.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fpathconf.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fpclassify.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fpurge.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fputwc.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fputws.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fread.3 delete mode 100644 manual/LDP_man-pages/draft/man3/frexp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fseek.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fseeko.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ftime.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ftok.3 delete mode 100644 manual/LDP_man-pages/draft/man3/fts.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ftw.3 delete mode 100644 manual/LDP_man-pages/draft/man3/futimes.3 delete mode 100644 manual/LDP_man-pages/draft/man3/gamma.3 delete mode 100644 manual/LDP_man-pages/draft/man3/gcvt.3 delete mode 100644 manual/LDP_man-pages/draft/man3/get_nprocs_conf.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getauxval.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getcontext.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getcwd.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getdate.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getdirentries.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getdtablesize.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getenv.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getfsent.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getgrent.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getgrent_r.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getgrnam.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getgrouplist.3 delete mode 100644 manual/LDP_man-pages/draft/man3/gethostbyname.3 delete mode 100644 manual/LDP_man-pages/draft/man3/gethostid.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getline.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getloadavg.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getlogin.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getmntent.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getnetent.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getprotoent.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getpt.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getpw.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getpwent.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getpwent_r.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getpwnam.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getrpcent.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getrpcent_r.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getrpcport.3 delete mode 100644 manual/LDP_man-pages/draft/man3/gets.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getservent.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getspnam.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getsubopt.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getttyent.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getusershell.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getutent.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getutmp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getw.3 delete mode 100644 manual/LDP_man-pages/draft/man3/getwchar.3 delete mode 100644 manual/LDP_man-pages/draft/man3/glob.3 delete mode 100644 manual/LDP_man-pages/draft/man3/gnu_get_libc_version.3 delete mode 100644 manual/LDP_man-pages/draft/man3/grantpt.3 delete mode 100644 manual/LDP_man-pages/draft/man3/gsignal.3 delete mode 100644 manual/LDP_man-pages/draft/man3/hsearch.3 delete mode 100644 manual/LDP_man-pages/draft/man3/hypot.3 delete mode 100644 manual/LDP_man-pages/draft/man3/iconv.3 delete mode 100644 manual/LDP_man-pages/draft/man3/iconv_close.3 delete mode 100644 manual/LDP_man-pages/draft/man3/iconv_open.3 delete mode 100644 manual/LDP_man-pages/draft/man3/if_nameindex.3 delete mode 100644 manual/LDP_man-pages/draft/man3/if_nametoindex.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ilogb.3 delete mode 100644 manual/LDP_man-pages/draft/man3/index.3 delete mode 100644 manual/LDP_man-pages/draft/man3/initgroups.3 delete mode 100644 manual/LDP_man-pages/draft/man3/insque.3 delete mode 100644 manual/LDP_man-pages/draft/man3/isatty.3 delete mode 100644 manual/LDP_man-pages/draft/man3/isgreater.3 delete mode 100644 manual/LDP_man-pages/draft/man3/iswalnum.3 delete mode 100644 manual/LDP_man-pages/draft/man3/iswalpha.3 delete mode 100644 manual/LDP_man-pages/draft/man3/iswblank.3 delete mode 100644 manual/LDP_man-pages/draft/man3/iswcntrl.3 delete mode 100644 manual/LDP_man-pages/draft/man3/iswctype.3 delete mode 100644 manual/LDP_man-pages/draft/man3/iswdigit.3 delete mode 100644 manual/LDP_man-pages/draft/man3/iswgraph.3 delete mode 100644 manual/LDP_man-pages/draft/man3/iswlower.3 delete mode 100644 manual/LDP_man-pages/draft/man3/iswprint.3 delete mode 100644 manual/LDP_man-pages/draft/man3/iswpunct.3 delete mode 100644 manual/LDP_man-pages/draft/man3/iswspace.3 delete mode 100644 manual/LDP_man-pages/draft/man3/iswupper.3 delete mode 100644 manual/LDP_man-pages/draft/man3/iswxdigit.3 delete mode 100644 manual/LDP_man-pages/draft/man3/j0.3 delete mode 100644 manual/LDP_man-pages/draft/man3/key_setsecret.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ldexp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/localeconv.3 delete mode 100644 manual/LDP_man-pages/draft/man3/lockf.3 delete mode 100644 manual/LDP_man-pages/draft/man3/log.3 delete mode 100644 manual/LDP_man-pages/draft/man3/log10.3 delete mode 100644 manual/LDP_man-pages/draft/man3/log1p.3 delete mode 100644 manual/LDP_man-pages/draft/man3/log2.3 delete mode 100644 manual/LDP_man-pages/draft/man3/logb.3 delete mode 100644 manual/LDP_man-pages/draft/man3/login.3 delete mode 100644 manual/LDP_man-pages/draft/man3/lrint.3 delete mode 100644 manual/LDP_man-pages/draft/man3/lround.3 delete mode 100644 manual/LDP_man-pages/draft/man3/lsearch.3 delete mode 100644 manual/LDP_man-pages/draft/man3/lseek64.3 delete mode 100644 manual/LDP_man-pages/draft/man3/makecontext.3 delete mode 100644 manual/LDP_man-pages/draft/man3/makedev.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mallinfo.3 delete mode 100644 manual/LDP_man-pages/draft/man3/malloc.3 delete mode 100644 manual/LDP_man-pages/draft/man3/malloc_get_state.3 delete mode 100644 manual/LDP_man-pages/draft/man3/malloc_info.3 delete mode 100644 manual/LDP_man-pages/draft/man3/malloc_stats.3 delete mode 100644 manual/LDP_man-pages/draft/man3/malloc_trim.3 delete mode 100644 manual/LDP_man-pages/draft/man3/malloc_usable_size.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mblen.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mbrlen.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mbrtowc.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mbsinit.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mbsnrtowcs.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mbsrtowcs.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mbstowcs.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mbtowc.3 delete mode 100644 manual/LDP_man-pages/draft/man3/memccpy.3 delete mode 100644 manual/LDP_man-pages/draft/man3/memchr.3 delete mode 100644 manual/LDP_man-pages/draft/man3/memcmp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/memcpy.3 delete mode 100644 manual/LDP_man-pages/draft/man3/memfrob.3 delete mode 100644 manual/LDP_man-pages/draft/man3/memmem.3 delete mode 100644 manual/LDP_man-pages/draft/man3/memmove.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mempcpy.3 delete mode 100644 manual/LDP_man-pages/draft/man3/memset.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mkdtemp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mkstemp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mktemp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/modf.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mq_close.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mq_getattr.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mq_open.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mq_receive.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mq_send.3 delete mode 100644 manual/LDP_man-pages/draft/man3/mq_unlink.3 delete mode 100644 manual/LDP_man-pages/draft/man3/nan.3 delete mode 100644 manual/LDP_man-pages/draft/man3/nextafter.3 delete mode 100644 manual/LDP_man-pages/draft/man3/nl_langinfo.3 delete mode 100644 manual/LDP_man-pages/draft/man3/on_exit.3 delete mode 100644 manual/LDP_man-pages/draft/man3/opendir.3 delete mode 100644 manual/LDP_man-pages/draft/man3/openpty.3 delete mode 100644 manual/LDP_man-pages/draft/man3/perror.3 delete mode 100644 manual/LDP_man-pages/draft/man3/popen.3 delete mode 100644 manual/LDP_man-pages/draft/man3/posix_fallocate.3 delete mode 100644 manual/LDP_man-pages/draft/man3/posix_memalign.3 delete mode 100644 manual/LDP_man-pages/draft/man3/posix_openpt.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pow.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pow10.3 delete mode 100644 manual/LDP_man-pages/draft/man3/printf.3 delete mode 100644 manual/LDP_man-pages/draft/man3/profil.3 delete mode 100644 manual/LDP_man-pages/draft/man3/psignal.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_attr_init.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_attr_setdetachstate.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_attr_setguardsize.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_attr_setinheritsched.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_attr_setschedparam.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_attr_setschedpolicy.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_attr_setscope.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_attr_setstack.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_attr_setstackaddr.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_attr_setstacksize.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_create.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_detach.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_equal.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_exit.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_getcpuclockid.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_join.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_kill.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_kill_other_threads_np.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_self.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_setaffinity_np.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_setcancelstate.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_setconcurrency.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_setschedprio.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_sigmask.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_sigqueue.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_testcancel.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_tryjoin_np.3 delete mode 100644 manual/LDP_man-pages/draft/man3/pthread_yield.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ptsname.3 delete mode 100644 manual/LDP_man-pages/draft/man3/putenv.3 delete mode 100644 manual/LDP_man-pages/draft/man3/putgrent.3 delete mode 100644 manual/LDP_man-pages/draft/man3/putpwent.3 delete mode 100644 manual/LDP_man-pages/draft/man3/puts.3 delete mode 100644 manual/LDP_man-pages/draft/man3/putwchar.3 delete mode 100644 manual/LDP_man-pages/draft/man3/qecvt.3 delete mode 100644 manual/LDP_man-pages/draft/man3/qsort.3 delete mode 100644 manual/LDP_man-pages/draft/man3/raise.3 delete mode 100644 manual/LDP_man-pages/draft/man3/rand.3 delete mode 100644 manual/LDP_man-pages/draft/man3/random.3 delete mode 100644 manual/LDP_man-pages/draft/man3/random_r.3 delete mode 100644 manual/LDP_man-pages/draft/man3/rcmd.3 delete mode 100644 manual/LDP_man-pages/draft/man3/re_comp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/readdir.3 delete mode 100644 manual/LDP_man-pages/draft/man3/regex.3 delete mode 100644 manual/LDP_man-pages/draft/man3/remainder.3 delete mode 100644 manual/LDP_man-pages/draft/man3/remove.3 delete mode 100644 manual/LDP_man-pages/draft/man3/remquo.3 delete mode 100644 manual/LDP_man-pages/draft/man3/resolver.3 delete mode 100644 manual/LDP_man-pages/draft/man3/rewinddir.3 delete mode 100644 manual/LDP_man-pages/draft/man3/rint.3 delete mode 100644 manual/LDP_man-pages/draft/man3/round.3 delete mode 100644 manual/LDP_man-pages/draft/man3/rpc.3 delete mode 100644 manual/LDP_man-pages/draft/man3/rpmatch.3 delete mode 100644 manual/LDP_man-pages/draft/man3/scalbln.3 delete mode 100644 manual/LDP_man-pages/draft/man3/scandir.3 delete mode 100644 manual/LDP_man-pages/draft/man3/seekdir.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sem_close.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sem_destroy.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sem_getvalue.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sem_init.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sem_open.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sem_post.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sem_unlink.3 delete mode 100644 manual/LDP_man-pages/draft/man3/setaliasent.3 delete mode 100644 manual/LDP_man-pages/draft/man3/setbuf.3 delete mode 100644 manual/LDP_man-pages/draft/man3/setenv.3 delete mode 100644 manual/LDP_man-pages/draft/man3/setjmp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/setlogmask.3 delete mode 100644 manual/LDP_man-pages/draft/man3/setnetgrent.3 delete mode 100644 manual/LDP_man-pages/draft/man3/shm_open.3 delete mode 100644 manual/LDP_man-pages/draft/man3/siginterrupt.3 delete mode 100644 manual/LDP_man-pages/draft/man3/signbit.3 delete mode 100644 manual/LDP_man-pages/draft/man3/significand.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sigpause.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sigqueue.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sigsetops.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sigwait.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sin.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sincos.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sinh.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sleep.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sockatmark.3 delete mode 100644 manual/LDP_man-pages/draft/man3/sqrt.3 delete mode 100644 manual/LDP_man-pages/draft/man3/statvfs.3 delete mode 100644 manual/LDP_man-pages/draft/man3/stdarg.3 delete mode 100644 manual/LDP_man-pages/draft/man3/stdio.3 delete mode 100644 manual/LDP_man-pages/draft/man3/stdio_ext.3 delete mode 100644 manual/LDP_man-pages/draft/man3/stpcpy.3 delete mode 100644 manual/LDP_man-pages/draft/man3/stpncpy.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strcasecmp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strcat.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strchr.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strcmp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strcoll.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strcpy.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strdup.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strerror.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strfmon.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strfry.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strftime.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strlen.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strnlen.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strpbrk.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strsep.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strsignal.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strspn.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strstr.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strtod.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strtoimax.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strtok.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strtol.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strtoul.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strverscmp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/strxfrm.3 delete mode 100644 manual/LDP_man-pages/draft/man3/swab.3 delete mode 100644 manual/LDP_man-pages/draft/man3/syslog.3 delete mode 100644 manual/LDP_man-pages/draft/man3/system.3 delete mode 100644 manual/LDP_man-pages/draft/man3/tan.3 delete mode 100644 manual/LDP_man-pages/draft/man3/tanh.3 delete mode 100644 manual/LDP_man-pages/draft/man3/tcgetsid.3 delete mode 100644 manual/LDP_man-pages/draft/man3/telldir.3 delete mode 100644 manual/LDP_man-pages/draft/man3/tgamma.3 delete mode 100644 manual/LDP_man-pages/draft/man3/timegm.3 delete mode 100644 manual/LDP_man-pages/draft/man3/tmpfile.3 delete mode 100644 manual/LDP_man-pages/draft/man3/tmpnam.3 delete mode 100644 manual/LDP_man-pages/draft/man3/toascii.3 delete mode 100644 manual/LDP_man-pages/draft/man3/toupper.3 delete mode 100644 manual/LDP_man-pages/draft/man3/towctrans.3 delete mode 100644 manual/LDP_man-pages/draft/man3/towlower.3 delete mode 100644 manual/LDP_man-pages/draft/man3/towupper.3 delete mode 100644 manual/LDP_man-pages/draft/man3/trunc.3 delete mode 100644 manual/LDP_man-pages/draft/man3/tsearch.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ttyname.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ttyslot.3 delete mode 100644 manual/LDP_man-pages/draft/man3/tzset.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ualarm.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ulimit.3 delete mode 100644 manual/LDP_man-pages/draft/man3/ungetwc.3 delete mode 100644 manual/LDP_man-pages/draft/man3/unlocked_stdio.3 delete mode 100644 manual/LDP_man-pages/draft/man3/unlockpt.3 delete mode 100644 manual/LDP_man-pages/draft/man3/updwtmp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/usleep.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcpcpy.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcpncpy.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcrtomb.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcscasecmp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcscat.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcschr.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcscmp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcscpy.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcscspn.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcsdup.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcslen.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcsncasecmp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcsncat.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcsncmp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcsncpy.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcsnlen.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcspbrk.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcsrchr.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcsrtombs.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcsspn.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcsstr.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcstoimax.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcstok.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcstombs.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcswidth.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wctob.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wctomb.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wctrans.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wctype.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wcwidth.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wmemchr.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wmemcmp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wmemcpy.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wmemmove.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wmemset.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wordexp.3 delete mode 100644 manual/LDP_man-pages/draft/man3/wprintf.3 delete mode 100644 manual/LDP_man-pages/draft/man3/xcrypt.3 delete mode 100644 manual/LDP_man-pages/draft/man3/xdr.3 delete mode 100644 manual/LDP_man-pages/draft/man3/y0.3 delete mode 100644 manual/LDP_man-pages/draft/man4/full.4 delete mode 100644 manual/LDP_man-pages/draft/man4/hd.4 delete mode 100644 manual/LDP_man-pages/draft/man4/mem.4 delete mode 100644 manual/LDP_man-pages/draft/man4/null.4 delete mode 100644 manual/LDP_man-pages/draft/man4/pts.4 delete mode 100644 manual/LDP_man-pages/draft/man4/random.4 delete mode 100644 manual/LDP_man-pages/draft/man4/sd.4 delete mode 100644 manual/LDP_man-pages/draft/man4/sk98lin.4 delete mode 100644 manual/LDP_man-pages/draft/man4/vcs.4 delete mode 100644 manual/LDP_man-pages/draft/man4/wavelan.4 delete mode 100644 manual/LDP_man-pages/draft/man5/charmap.5 delete mode 100644 manual/LDP_man-pages/draft/man5/core.5 delete mode 100644 manual/LDP_man-pages/draft/man5/elf.5 delete mode 100644 manual/LDP_man-pages/draft/man5/filesystems.5 delete mode 100644 manual/LDP_man-pages/draft/man5/host.conf.5 delete mode 100644 manual/LDP_man-pages/draft/man5/hosts.equiv.5 delete mode 100644 manual/LDP_man-pages/draft/man5/intro.5 delete mode 100644 manual/LDP_man-pages/draft/man5/locale.5 delete mode 100644 manual/LDP_man-pages/draft/man5/nologin.5 delete mode 100644 manual/LDP_man-pages/draft/man5/nsswitch.conf.5 delete mode 100644 manual/LDP_man-pages/draft/man5/proc.5 delete mode 100644 manual/LDP_man-pages/draft/man5/repertoiremap.5 delete mode 100644 manual/LDP_man-pages/draft/man5/resolv.conf.5 delete mode 100644 manual/LDP_man-pages/draft/man5/securetty.5 delete mode 100644 manual/LDP_man-pages/draft/man5/shells.5 delete mode 100644 manual/LDP_man-pages/draft/man5/slabinfo.5 delete mode 100644 manual/LDP_man-pages/draft/man5/tzfile.5 delete mode 100644 manual/LDP_man-pages/draft/man7/boot.7 delete mode 100644 manual/LDP_man-pages/draft/man7/capabilities.7 delete mode 100644 manual/LDP_man-pages/draft/man7/credentials.7 delete mode 100644 manual/LDP_man-pages/draft/man7/epoll.7 delete mode 100644 manual/LDP_man-pages/draft/man7/fanotify.7 delete mode 100644 manual/LDP_man-pages/draft/man7/feature_test_macros.7 delete mode 100644 manual/LDP_man-pages/draft/man7/fifo.7 delete mode 100644 manual/LDP_man-pages/draft/man7/futex.7 delete mode 100644 manual/LDP_man-pages/draft/man7/hier.7 delete mode 100644 manual/LDP_man-pages/draft/man7/hostname.7 delete mode 100644 manual/LDP_man-pages/draft/man7/ip.7 delete mode 100644 manual/LDP_man-pages/draft/man7/mailaddr.7 delete mode 100644 manual/LDP_man-pages/draft/man7/man-pages.7 delete mode 100644 manual/LDP_man-pages/draft/man7/namespaces.7 delete mode 100644 manual/LDP_man-pages/draft/man7/netlink.7 delete mode 100644 manual/LDP_man-pages/draft/man7/operator.7 delete mode 100644 manual/LDP_man-pages/draft/man7/packet.7 delete mode 100644 manual/LDP_man-pages/draft/man7/pid_namespaces.7 delete mode 100644 manual/LDP_man-pages/draft/man7/pipe.7 delete mode 100644 manual/LDP_man-pages/draft/man7/posixoptions.7 delete mode 100644 manual/LDP_man-pages/draft/man7/pty.7 delete mode 100644 manual/LDP_man-pages/draft/man7/rtnetlink.7 delete mode 100644 manual/LDP_man-pages/draft/man7/sched.7 delete mode 100644 manual/LDP_man-pages/draft/man7/signal.7 delete mode 100644 manual/LDP_man-pages/draft/man7/socket.7 delete mode 100644 manual/LDP_man-pages/draft/man7/standards.7 delete mode 100644 manual/LDP_man-pages/draft/man7/symlink.7 delete mode 100644 manual/LDP_man-pages/draft/man7/termio.7 delete mode 100644 manual/LDP_man-pages/draft/man7/unix.7 delete mode 100644 manual/LDP_man-pages/draft/man7/user_namespaces.7 delete mode 100644 manual/LDP_man-pages/draft/man8/ld.so.8 delete mode 100644 manual/LDP_man-pages/draft/man8/ldconfig.8 delete mode 100644 manual/LDP_man-pages/draft/man8/zdump.8 delete mode 100644 manual/LDP_man-pages/draft/man8/zic.8 diff --git a/manual/LDP_man-pages/draft/man1/getent.1 b/manual/LDP_man-pages/draft/man1/getent.1 deleted file mode 100644 index c15bf3c0..00000000 --- a/manual/LDP_man-pages/draft/man1/getent.1 +++ /dev/null @@ -1,146 +0,0 @@ -.\" Copyright (c) 2011, Mark R. Bannister -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.TH GETENT 1 2013\-03\-15 Linux "User Commands" -.SH 名前 -getent \- 名前サービス切り替えライブラリからエントリーを取得する -.SH 書式 -\fBgetent\fP \fIdatabase\fP [\fIkey\fP ...] -.SH 説明 -\fBgetent\fP コマンドは、 名前サービス切り替えライブラリでサポートされているデータベースのエントリーを表示する。 -名前サービス切り替えライブラリの設定は \fI/etc/nsswitch.conf\fP で行う。 一つ以上の \fIkey\fP 引き数が指定されると、 -指定されたキーにマッチするエントリーだけが表示される。 \fIkey\fP が指定されなかった場合、 すべてのエントリーが表示される (データベースで列挙 -(enumeration) がサポートされていない場合を除く)。 -.LP -\fIdatabase\fP には GNU C ライブラリでサポートされているデータベースのいずれかを指定できる。 以下にそのリストを示す。 -.RS 3 -.TP 10 -\fBahosts\fP -\fIkey\fP が指定されなかった場合、 \fBsethostent\fP(3), \fBgethostent\fP(3), \fBendhostent\fP(3) -を使用して hosts データベースを列挙する。 これは \fBhosts\fP を使うのと全く同じである。 \fIkey\fP 引き数が一つ以上指定された場合は、 -それぞれの \fIkey\fP についてアドレスファミリー \fBAF_UNSPEC\fP で \fBgetaddrinfo\fP(3) を呼び出し、 -返された各々のソケットアドレス構造体を列挙する。 -.TP -\fBahostsv4\fP -\fBahosts\fP を同じだが、 アドレスファミリーとして \fBAF_INET\fP を使用する。 -.TP -\fBahostsv6\fP -\fBahosts\fP を同じだが、 アドレスファミリーとして \fBAF_INET6\fP を使用する。 この場合の \fBgetaddrinfo\fP(3) -の呼び出しでは \fBAI_V4MAPPED\fP も指定される。 -.TP -\fBaliases\fP -\fIkey\fP が指定されなかった場合、 \fBsetaliasent\fP(3), \fBgetaliasent\fP(3), \fBendaliasent\fP(3) -を使用して aliases データベースを列挙する。 \fIkey\fP 引き数が一つ以上指定された場合は、 それぞれの \fIkey\fP -について\fBgetaliasbyname\fP(3) を呼び出し、 結果を表示する。 -.TP -\fBethers\fP -\fIkey\fP 引き数が一つ以上指定された場合、 結果が得られるまで、 それぞれの \fIkey\fP について \fBether_aton\fP(3) と -\fBether_hostton\fP(3) を順に呼び出し、 結果を表示する。 \fBethers\fP では列挙はサポートされていない。 したがって、 -\fIkey\fP は指定しなければならない。 -.TP -\fBgroup\fP -\fIkey\fP が指定されなかった場合、 \fBsetgrent\fP(3), \fBgetgrent\fP(3), \fBendgrent\fP(3) を使用して -group データベースを列挙する。 \fIkey\fP 引き数が一つ以上指定された場合は、 それぞれの \fIkey\fP について、 数値であれば -\fBgetgrgid\fP(3) を、 数値以外であれば \fBgetgrnam\fP(3) を呼び出し、 結果を表示する。 -.TP -\fBgshadow\fP -\fIkey\fP が指定されなかった場合、 \fBsetsgent\fP(3), \fBgetsgent\fP(3), \fBendsgent\fP(3) を使用して -gshadow データベースを列挙する。 \fIkey\fP 引き数が一つ以上指定された場合は、 それぞれの \fIkey\fP について -\fBgetsgnam\fP(3) を呼び出し、 結果を表示する。 -.TP -\fBhosts\fP -\fIkey\fP が指定されなかった場合、 \fBsethostent\fP(3), \fBgethostent\fP(3), \fBendhostent\fP(3) -を使用して hosts データベースを列挙する。 \fIkey\fP 引き数が一つ以上指定された場合は、 それぞれの \fIkey\fP について -\fBgethostbyaddr\fP(3) か \fBgethostbyname2\fP(3) を呼び出し、 結果を表示する。 -\fBgethostbyaddr\fP(3) か \fBgethostbyname2\fP(3) のどちらを呼び出すかは、\fBinet_pton\fP(3) -の呼び出しで、 \fIkey\fP が IPv6 や IPv4 アドレスか、 そうでないか、 判定され、その結果によって決まる。 -.TP -\fBinitgroups\fP -\fIkey\fP 引き数が一つ以上指定された場合、 結果が得られるまで、 それぞれの \fIkey\fP について \fBgetgrouplist\fP(3) -を呼び出し、 結果を表示する。 \fBinitgroups\fP では列挙はサポートされていない。 したがって、 \fIkey\fP は指定しなければならない。 -.TP -\fBnetgroup\fP -1 個の \fIkey\fP を指定すると、 その \fIkey\fP を \fBsetnetgrent\fP(3) に渡し、 \fBgetnetgrent\fP(3) -を使って結果の 3 つ組の文字列 (\fIhostname\fP, \fIusername\fP, \fIdomainname\fP) を表示する。 代わりに、 3 個の -\fIkey\fP を指定することもできる。 3 個の \fIkey\fP は \fIhostname\fP, \fIusername\fP, \fIdomainname\fP -と解釈され、 \fBinnetgr\fP(3) を使って対応する netgroup があるか照合される。 \fBnetgroup\fP -では列挙はサポートされていない。 したがって、 1 個か 3 個のいずれかの \fIkey\fP を指定しなければならない。 -.TP -\fBnetworks\fP -\fIkey\fP が指定されなかった場合、 \fBsetnetent\fP(3), \fBgetnetent\fP(3), \fBendnetent\fP(3) を使用して -networks データベースを列挙する。 \fIkey\fP 引き数が一つ以上指定された場合は、 それぞれの \fIkey\fP について、 数値であれば -\fBgetnetbyaddr\fP(3) を、 数値以外であれば \fBgetnetbyname\fP(3) を呼び出し、 結果を表示する。 -.TP -\fBpasswd\fP -\fIkey\fP が指定されなかった場合、 \fBsetpwent\fP(3), \fBgetpwent\fP(3), \fBendpwent\fP(3) を使用して -passwd データベースを列挙する。 \fIkey\fP 引き数が一つ以上指定された場合は、 それぞれの \fIkey\fP について、 数値であれば -\fBgetpwgid\fP(3) を、 数値以外であれば \fBgetpwnam\fP(3) を呼び出し、 結果を表示する。 -.TP -\fBprotocols\fP -\fIkey\fP が指定されなかった場合、 \fBsetprotoent\fP(3), \fBgetprotoent\fP(3), \fBendprotoent\fP(3) -を使用して protocols データベースを列挙する。 \fIkey\fP 引き数が一つ以上指定された場合は、 それぞれの \fIkey\fP について、 -数値であれば \fBgetprotobynumber\fP(3) を、 数値以外であれば \fBgetprotobyname\fP(3) を呼び出し、 -結果を表示する。 -.TP -\fBrpc\fP -\fIkey\fP が指定されなかった場合、 \fBsetrpcent\fP(3), \fBgetrpcent\fP(3), \fBendrpcent\fP(3) を使用して -rpc データベースを列挙する。 \fIkey\fP 引き数が一つ以上指定された場合は、 それぞれの \fIkey\fP について、 数値であれば -\fBgetrpcbynumber\fP(3) を、 数値以外であれば \fBgetrpcbyname\fP(3) を呼び出し、 結果を表示する。 -.TP -\fBservices\fP -\fIkey\fP が指定されなかった場合、 \fBsetservent\fP(3), \fBgetservent\fP(3), \fBendservent\fP(3) -を使用して services データベースを列挙する。 \fIkey\fP 引き数が一つ以上指定された場合は、 それぞれの \fIkey\fP について、 -数値であれば \fBgetservbynumber\fP(3) を、 数値以外であれば \fBgetservbyname\fP(3) を呼び出し、 結果を表示する。 -.TP -\fBshadow\fP -\fIkey\fP が指定されなかった場合、 \fBsetspent\fP(3), \fBgetspent\fP(3), \fBendspent\fP(3) を使用して -shadow データベースを列挙する。 \fIkey\fP 引き数が一つ以上指定された場合は、 それぞれの \fIkey\fP について -\fBgetspnam\fP(3) を呼び出し、 結果を表示する。 -.RE -.SH 終了ステータス -\fBgetent\fP は以下のいずれかの終了ステータスを返す。 -.RS 3 -.TP 10 -\fB0\fP -コマンドが正常に完了した。 -.TP -\fB1\fP -引き数が不足しているか、 知らない \fIdatabase\fP が指定された。 -.TP -\fB2\fP -指定された \fIkey\fP が \fIdatabase\fP で見つからなかった。 -.TP -\fB3\fP -この \fIdatabase\fP では列挙はサポートされていない。 -.RE -.SH 関連項目 -\fBnsswitch.conf\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man1/iconv.1 b/manual/LDP_man-pages/draft/man1/iconv.1 index 1b286fe8..0aefbedd 100644 --- a/manual/LDP_man-pages/draft/man1/iconv.1 +++ b/manual/LDP_man-pages/draft/man1/iconv.1 @@ -1,5 +1,3 @@ -'\" t -*- coding: UTF-8 -*- -.\" .\" Copyright (C) 2014 Marko Myllynen .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -28,7 +26,7 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH ICONV 1 2014\-07\-08 GNU "Linux User Manual" +.TH ICONV 1 2020\-06\-09 GNU "Linux User Manual" .SH 名前 iconv \- テキストをある文字符号化から別の文字符号化に変換する .SH 書式 @@ -43,14 +41,14 @@ iconv \- テキストをある文字符号化から別の文字符号化に変 が指定されなかった場合、 デフォルトは現在のロケールの文字符号化から取得される。 .SH オプション .TP -\fB\-f\fP\fI from\-encoding\fP\fB, \-\-from\-code=\fP\fIfrom\-encoding\fP +\fB\-f\fP\fI from\-encoding\fP, \fB\-\-from\-code=\fP\fIfrom\-encoding\fP 文字入力に \fIfrom\-encoding\fP を使用する。 .TP -\fB\-t\fP\fI to\-encoding\fP\fB, \-\-to\-code=\fP\fIto\-encoding\fP +\fB\-t\fP\fI to\-encoding\fP, \fB\-\-to\-code=\fP\fIto\-encoding\fP 文字出力に \fIto\-encoding\fP を使用する。 - +.IP \fIto\-encoding\fP の後ろに文字列 \fB//IGNORE\fP が付いていた場合、 変換できなかった文字は破棄され、 変換後にエラーが表示される。 - +.IP \fIto\-encoding\fP の後ろに文字列 \fB//TRANSLIT\fP が付いていた場合、 変換される文字の書き直し (transliterate) が必要で可能な場合、書き直しが行われる。 変換先の文字集合で文字が表現できない場合、 変換先の文字集合の文字に近似されることを意味する (1 文字の場合も複数文字の場合もある)。 変換先の文字集合外の文字で、書き直しもできない文字は、 出力では疑問符 (?) に置き換えられる。 @@ -61,7 +59,7 @@ iconv \- テキストをある文字符号化から別の文字符号化に変 \fB\-c\fP 変換できない文字があった場合に、 変換を終了するのではなく、 その文字を黙って破棄する。 .TP -\fB\-o\fP\fI outputfile\fP\fB, \-\-output=\fP\fIoutputfile\fP +\fB\-o\fP\fI outputfile\fP, \fB\-\-output=\fP\fIoutputfile\fP 出力に \fIoutputfile\fP を使用する。 .TP \fB\-s\fP, \fB\-\-silent\fP @@ -79,7 +77,7 @@ iconv \- テキストをある文字符号化から別の文字符号化に変 \fB\-V\fP, \fB\-\-version\fP \fBiconv\fP のバージョン番号、 ライセンス、 保証免責を表示する。 .SH 終了ステータス -成功すると 0 で、 エラーの場合 0 以外。 +Zero on success, nonzero on errors. .SH 環境変数 内部では、 \fBiconv\fP プログラムは \fBiconv\fP(3) 関数を使用する。 \fBiconv\fP(3) 関数は順に \fIgconv\fP モジュール (動的にロードされる共有ライブラリ) を使って、 変換元、変換先の文字集合を取り扱う。 \fBiconv\fP(3) を呼び出す前に、 \fBiconv\fP @@ -110,27 +108,26 @@ iconv \- テキストをある文字符号化から別の文字符号化に変 通常のデフォルトの gconv モジュールのシステム設定キャッシュ。 .SH 準拠 POSIX.1\-2001. -.SH 例 +.SH EXAMPLES テキストを ISO 8859\-15 文字符号化から UTF\-8 に変換する。 - +.PP .in +4n -.nf +.EX $ \fBiconv \-f ISO\-8859\-15 \-t UTF\-8 < input.txt > output.txt\fP -.fi +.EE .in .PP 以下の例は UTF\-8 から ASCII への変換を行い、 可能であれば書き直し (transliterate) を行う。 - +.PP .in +4n -.nf +.EX $ \fBecho abc ß α € àḃç | iconv \-f UTF\-8 \-t ASCII//TRANSLIT\fP abc ss ? EUR abc -.fi +.EE .in .SH 関連項目 -\fBlocale\fP(1), \fBiconv\fP(3), \fBnl_langinfo\fP(3), \fBcharsets\fP(7), +\fBlocale\fP(1), \fBuconv\fP(1), \fBiconv\fP(3), \fBnl_langinfo\fP(3), \fBcharsets\fP(7), \fBiconvconfig\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man1/intro.1 b/manual/LDP_man-pages/draft/man1/intro.1 deleted file mode 100644 index ba9ea4db..00000000 --- a/manual/LDP_man-pages/draft/man1/intro.1 +++ /dev/null @@ -1,189 +0,0 @@ -.\" Copyright (c) 2002 Andries Brouwer -.\" -.\" %%%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-10-23 mtk Added intro paragraph about section, plus a paragraph -.\" about exit status values. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI, all rights reserved. -.\" Translated Mon Mar 5 2003 by Akihiro MOTOKI -.\" -.TH INTRO 1 2007\-11\-15 Linux "Linux User's Manual" -.SH 名前 -intro \- ユーザーコマンドの紹介 -.SH 説明 -マニュアルの 1 章は、ユーザーコマンドやツールの説明について説明している。 例えば、ファイル操作ツール、シェル、コンパイラ、ウェブブラウザ、 -ファイルやイメージのビューアやエディタ、などである。 - -すべてのコマンドは終了時にステータス値を返す。 この値を検査することで (例えば、ほとんどのシェルでは変数 \fI$?\fP -に最後に実行したコマンドのステータスが保持される)、 そのコマンドが成功して完了したかどうかを知ることができる。 伝統的に、終了ステータス 0 -は成功を示すのに使われ、非 0 の値は そのコマンドが成功しなかったことを示す (終了ステータスの詳細は \fBwait\fP(2) に書かれている)。 非 -0 の終了ステータスは 1 から 255 の範囲の値をとることができ、 いくつかのコマンドではコマンドが失敗した理由を示すために 複数の非 0 -のステータス値が使用されている。 -.SH 注意 -Linux は UNIX の一種であり、大雑把にいえば、 UNIX 上のユーザーコマンドはすべて Linux 上でも全く同じ動作をする (FreeBSD -や他のの多くの UNIX 風のシステムでも同様である)。 -.LP -Linux には GUI (グラフィカルユーザーインターフェース) が用意されており、 -何かをポイントしたり、クリックしたり、ドラッグしたりでき、うまくいけば 最初にたくさんの文書を読まなくても目的の作業ができてしまうこともある。 伝統的な -UNIX 環境は CLI (コマンドラインインターフェース) であり、 コマンドを打ち込んで、コンピュータに何をすべきか教えてやる。 CLI は GUI -よりも速く強力だが、どのコマンドが何をするのか知っている必要 がある。CLI を使い始めるために必要最小限のコマンドを以下に述べる。 -.SS ログイン -作業を開始するためには、ます最初にログインしなければならないだろう。 すなわち、ユーザー名とパスワードを入力しなければならない。詳しくは -\fBlogin\fP(1) を参照のこと。 \fIlogin\fP プログラムは (コマンドインタープリターである) \fIシェル (shell)\fP -を起動する。グラフィカルログインの場合は、メニューやアイコンがある スクリーンが表示され、マウスをクリックするとウィンドウが開いて -シェルが起動されることだろう。詳しくは \fBxterm\fP(1) を参照のこと。 -.SS シェル -コマンドは、コマンドインタープリターである \fIシェル\fP に対して入力する。 \fIシェル\fP -は、組み込みコマンドではなく普通のプログラムであり、好みのものに変更する ことができる。各人にはそれぞれ好みのシェルがある。標準のシェルは \fIsh\fP -と呼ばれる。 \fBash\fP(1), \fBbash\fP(1), \fBcsh\fP(1), \fBzsh\fP(1), \fBchsh\fP(1) を参照のこと。 -.LP -セッションの例を以下に示す。 - -.RS -.nf -\fBknuth login: \fP\fIaeb\fP -\fBPassword: \fP\fI********\fP -\fB% \fP\fIdate\fP -Tue Aug 6 23:50:44 CEST 2002 -\fB% \fP\fIcal\fP - August 2002 -Su Mo Tu We Th Fr Sa - 1 2 3 - 4 5 6 7 8 9 10 -11 12 13 14 15 16 17 -18 19 20 21 22 23 24 -25 26 27 28 29 30 31 - -\fB% \fP\fIls\fP -bin tel -\fB% \fP\fIls \-l\fP -total 2 -drwxrwxr\-x 2 aeb 1024 Aug 6 23:51 bin -\-rw\-rw\-r\-\- 1 aeb 37 Aug 6 23:52 tel -\fB% \fP\fIcat tel\fP -maja 0501\-1136285 -peter 0136\-7399214 -\fB% \fP\fIcp tel tel2\fP -\fB% \fP\fIls \-l\fP -total 3 -drwxr\-xr\-x 2 aeb 1024 Aug 6 23:51 bin -\-rw\-r\-\-r\-\- 1 aeb 37 Aug 6 23:52 tel -\-rw\-r\-\-r\-\- 1 aeb 37 Aug 6 23:53 tel2 -\fB% \fP\fImv tel tel1\fP -\fB% \fP\fIls \-l\fP -total 3 -drwxr\-xr\-x 2 aeb 1024 Aug 6 23:51 bin -\-rw\-r\-\-r\-\- 1 aeb 37 Aug 6 23:52 tel1 -\-rw\-r\-\-r\-\- 1 aeb 37 Aug 6 23:53 tel2 -\fB% \fP\fIdiff tel1 tel2\fP -\fB% \fP\fIrm tel1\fP -\fB% \fP\fIgrep maja tel2\fP -maja 0501\-1136285 -\fB% \fP -.fi -.RE -ここで Control\-D を打つとセッションが終了する。 ここで、 \fB% \fP はコマンドプロンプトである。コマンドプロンプトはシェル独特のやり方で、 -シェルが次のコマンドを受け付けられる状態になっていることを示している。 プロンプトは、柔軟にカスタマイズ -することができ、ユーザー名、マシン名、カレントディレクトリ、時刻などを プロンプトに含めることができる。 PS1="What next, master? -" と設定すると、 プロンプトはそのように変更されるだろう。 -.LP -例にあるように、 \fIdate\fP という日付と時刻を表示するコマンドや、 \fIcal\fP というカレンダを表示するコマンドもある。 -.LP -\fIls\fP コマンドはカレントディレクトリの内容をリスト表示する、つまり ディレクトリ内にどんなファイルがあるかを教えてくれる。 \fI\-l\fP -オプションをつけて実行すると、詳細表示が行われ、 ファイルの所有者、サイズ、日付などが表示される。 上の例では、"tel" ファイルは、サイズが 37 -バイトで、所有者は aeb で、 所有者は読み書きができ、他の人は読み出しだけができることが分かる。 ファイルの所有者と権限 (permission) -は、それぞれ \fIchown\fP コマンドと \fIchmod\fP コマンドで変更できる。 -.LP -\fIcat\fP コマンドはファイルの内容を表示する。 (コマンド名は "concatenate and print" (連結して印字する) -に由来している。 引数として与えられた全てのファイルの内容が連結され、「標準出力」 に送られる。上の例では、標準出力は端末のスクリーンである。) -.LP -\fIcp\fP コマンドはファイルのコピーを行う (その名前は "copy" に由来する)。 一方、 \fImv\fP コマンドは単純にファイル名の変更を行う -(その名前は "move" に由来する)。 -.LP -\fIdiff\fP コマンドは 2 つのファイルの違いを表示する。 上の例では、二つのファイルに違いがないので、何も出力されていない。 -.LP -\fIrm\fP コマンドはファイルを削除する。ファイルはなくなってしまうので 注意して使用すること! ゴミ箱に相当するものはなく、 -削除はそのファイルが完全に失われることを意味する。 -.LP -\fIgrep\fP コマンドは、指定された文字列を一つ以上のファイルから探す (コマンド名は "g/re/p" に由来している)。 上の例では、Maja -の電話番号が見つかっている。 -.SS パス名とカレントディレクトリ -ファイルはファイル階層という大きな木の中にある。それぞれのファイルには \fIパス名 (pathname)\fP があり、パス名は (/ と呼ばれる) -木の根からの経路を示すものである。 上の例では、完全なパス名は /home/aeb/tel のようになる。 -いつも完全なパス名を使うのは不便なので、カレントディレクトリにある ファイル名は、ファイル名の最後の部分だけに省略することができる。 -したがって、カレントディレクトリが "/home/aeb" の時は、 "/home/aeb/tel" を "tel" に省略して書くことができる。 -.LP -\fIpwd\fP コマンドはカレントディレクトリを表示する。 -.LP -\fIcd\fP コマンドはカレントディレクトリを変更する。 "cd /"、"pwd"、"cd"、"pwd" と順に実行してみるとよい。 -.SS ディレクトリ -\fImkdir\fP コマンドはディレクトリを新規に作成する。 -.LP -\fIrmdir\fP コマンドは空であればディレクトリを削除し、 空でなければエラーメッセージを表示する。 -.LP -\fIfind\fP コマンドは、指定された名前やその他の属性を持つファイルを探す (書式はかなり変わっている)。例えば、"find . \-name tel" -を実行すると、 "tel" という名前のファイルの検索をカレントディレクトリから開始する。 (カレントディレクトリは "." で表す)。"find / -\-name tel" としても 同じことを行うが、検索は木の根 (/) から開始される。 数 GB のディスクに対して検索をかけると時間がかかるので、 -そのようなときは \fBlocate\fP(1) を使った方がいいかもしれない。 -.SS ディスクとファイルシステム -\fImount\fP コマンドは、(フロッピーや CDROM などの) ディスク上のファイルシステムを 大きなファイルシステム階層に接続する。逆に -\fIumount\fP コマンドは切り離しを行う。 \fIdf\fP コマンドを実行すると、ディスクの未使用量がどの程度かを表示する。 -.SS プロセス -UNIX システムでは、多くのユーザープロセスとシステムプロセスが同時に実行される。 対話的に実行できるプロセスは \fIforeground\fP -で実行されており、そうでないものは \fIbackground\fP で実行されている。 コマンド \fIps\fP -により、どのプロセスが実行されているかやプロセスが持っている番号 (プロセス番号) を表示できる。 コマンド \fIkill\fP -を使うことで、プロセスを取り除くことができる。 オプションなしで実行されると、「いなくなって下さい」というやさしい要求 を行う。"kill \-9" -に続けてプロセス番号を指定すると、指定したプロセスを 直ちに削除する。 foreground プロセスは多くの場合 Control\-C -をタイプすることで 殺すことができる。 -.SS 情報の探し方 -非常にたくさんのコマンドがあり、 それぞれのコマンドにはたくさんのオプションがある。 伝統的には、コマンドの説明は (このドキュメントもそうだが) -\fIman ページ\fP に書かれている。例えば "man kill" コマンドを実行すると、"kill" コマンドの -使い方に関する説明が表示される。(同様に "man man" は "man" コマンドに ついての説明を表示する。) \fIman\fP -プログラムはテキストを \fIpager\fP に渡して表示を行う。 \fIpager\fP として \fIless\fP が使われることが多い。 -次のページに進むにはスペースキーを、終了するには q を押す。 -.LP -ドキュメントでは、他の man ページへの参照は \fBman\fP(1) のように名前とセクション番号で示すのが一般的である。 man -ページは簡潔に書かれており、詳細を忘れたときに素早く情報を見つける ことができる。例や説明とともに入門向けの記載もあるので、初めての人にとっても -役に立つものである。 -.LP -多くの GNU/FSF ソフトウェアには info ファイルが付属している。 "info info" とタイプすると、"info" -プログラムの使い方の紹介が表示される。 -.LP -.\" -.\" Actual examples? Separate section for each of cat, cp, ...? -.\" gzip, bzip2, tar, rpm -特集記事については HOWTO で扱われることが多い。 \fI/usr/share/doc/howto/en\fP を見るといいだろう。 HTML -ファイルがあった場合はブラウザを使って表示すればよい。 -.SH 関連項目 -\fBstandards\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index fe17484e..00000000 --- a/manual/LDP_man-pages/draft/man1/ldd.1 +++ /dev/null @@ -1,95 +0,0 @@ -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated Sat May 23 1998 by NAKANO Takeo -.\" Updated & Modified Wed Jan 6 1999 by NAKANO Takeo -.\" Updated & Modified Wed Jan 16 21:05:41 JST 2002 -.\" by Yuichi SATO -.\" Updated 2013-05-04, Akihiro MOTOKI -.\" -.TH LDD 1 2014\-10\-02 "" "Linux Programmer's Manual" -.SH 名前 -ldd \- 共有ライブラリへの依存関係を表示する -.SH 書式 -\fBldd\fP [\fIoption\fP]... \fIfile\fP... -.SH 説明 -\fBldd\fP はコマンドラインで指定したプログラムや共有ライブラリについて、 それぞれで必要とされる共有ライブラリを表示する。 -.SS セキュリティ -.\" 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. -通常の場合、 \fBldd\fP は標準の動的リンカー (\fBld.so\fP(8) 参照) を \fBLD_TRACE_LOADED_OBJECTS\fP 環境変数に -1 をセットして起動する。 \fBLD_TRACE_LOADED_OBJECTS\fP に 1 -をセットすると、リンカーはライブラリの依存関係を表示する。但し、状況次第では、依存関係の情報を得るのにプログラムを直接実行するバージョンの \fBldd\fP -が存在する。したがって、信頼できない実行ファイルに対しては「決して」 \fBldd\fP -を使っては「ならない」。任意のコードを実行することにつながるからである。信頼できない実行ファイルを扱う、より安全な別の方法としては次のようにするとよい。 - - $ 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 NOTES -.\" The standard version of -.\" .B ldd -.\" comes with glibc2. -.\" Libc5 came with an older version, still present -.\" on some systems. -.\" The long options are not supported by the libc5 version. -.\" On the other hand, the glibc2 version does not support -.\" .B \-V -.\" and only has the equivalent -.\" .BR \-\-version . -.\" .LP -.\" The libc5 version of this program will use the name of a library given -.\" on the command line as-is when it contains a \(aq/\(aq; otherwise it -.\" searches for the library in the standard locations. -.\" To run it -.\" on a shared library in the current directory, prefix the name with "./". -使用法を表示する。 -.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 関連項目 -\fBsprof\fP(1), \fBpldd\fP(1), \fBld.so\fP(8), \fBldconfig\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man1/locale.1 b/manual/LDP_man-pages/draft/man1/locale.1 index 3d52f810..813da02a 100644 --- a/manual/LDP_man-pages/draft/man1/locale.1 +++ b/manual/LDP_man-pages/draft/man1/locale.1 @@ -27,22 +27,25 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH LOCALE 1 2014\-05\-28 Linux "Linux User Manual" +.TH LOCALE 1 2020\-06\-09 Linux "Linux User Manual" .SH 名前 locale \- ロケール固有の情報を取得する .SH 書式 .nf \fBlocale\fP [\fIoption\fP] -\fBlocale\fP [\fIoption\fP] \-a -\fBlocale\fP [\fIoption\fP] \-m +\fBlocale\fP [\fIoption\fP] \fB\-a\fP +\fBlocale\fP [\fIoption\fP] \fB\-m\fP \fBlocale\fP [\fIoption\fP] \fIname\fP... .fi .SH 説明 \fBlocale\fP コマンドは、 現在のロケールもしくはすべてのロケールに関する情報を、 標準出力に表示する。 - -引き数なしで呼び出された場合、 \fBlocale\fP は現在のロケール設定を各ロケールカテゴリー毎 (\fBlocale\fP(5) 参照) に表示する。 -ロケールを制御する環境変数の設定 (\fBlocale\fP(&)) に基づいて行われる。 - +.PP +When invoked without arguments, \fBlocale\fP displays the current locale +settings for each locale category (see \fBlocale\fP(5)), based on the settings +of the environment variables that control the locale (see \fBlocale\fP(7)). +Values for variables set in the environment are printed without double +quotes, implied values are printed with double quotes. +.PP オプション \fB\-a\fP か \fB\-m\fP のどちらか (もしくは同等の長い形式のオプション) が指定された場合、 動作は以下のようになる。 .TP \fB\-a\fP, \fB\-\-all\-locales\fP @@ -50,7 +53,8 @@ locale \- ロケール固有の情報を取得する メタデータも出力される。 .TP \fB\-m\fP, \fB\-\-charmaps\fP -利用可能な charmap (文字集合記述ファイル) の一覧を表示する。 +Display the available charmaps (character set description files). To +display the current character set for the locale, use \fBlocale \-c charmap\fP. .PP \fBlocale\fP コマンドには引き数として渡すことができる (複数指定可)。 これらの引き数は、 ロケールのキーワード名 (例えば \fIdate_fmt\fP, \fIctype\-class\-names\fP, \fIyesexpr\fP, \fIdecimal_point\fP) @@ -64,14 +68,14 @@ locale \- ロケール固有の情報を取得する .TP \fB\-c\fP, \fB\-\-category\-name\fP カテゴリー名が引き数に指定された場合、 そのカテゴリーのキーワード値のリストの前に、 ロケールカテゴリー名を独立した行で表示する。 - +.IP キーワード名が引き数に指定された場合、 キーワード値の前にこのキーワードのロケールカテゴリーを独立した行で表示する。 - +.IP 複数の名前引き数が指定された場合に、このオプションを使うと可読性があがる。 \fB\-k\fP オプションと組み合わせて使用できる。 .TP \fB\-k\fP, \fB\-\-keyword\-name\fP キーワード値を表示する際に、 次の形式でそのキーワードの名前も合わせて表示する。 - +.IP \fIkeyword\fP="\fIvalue\fP" .PP \fBlocale\fP コマンドでは以下のオプションも使用できる。 @@ -96,8 +100,8 @@ locale \- ロケール固有の情報を取得する ロケール定義ファイルの通常のデフォルトパス .SH 準拠 POSIX.1\-2001, POSIX.1\-2008. -.SH 例 -.nf +.SH EXAMPLES +.EX $ \fBlocale\fP LANG=en_US.UTF\-8 LC_CTYPE="en_US.UTF\-8" @@ -137,22 +141,21 @@ tel_dom_fmt="(%a) %l" int_select="11" int_prefix="1" telephone\-codeset="UTF\-8" -.fi - +.EE +.PP 以下の例では、 \fI./wrk\fP ディレクトリにある独自のロケールを \fBlocaledef\fP(1) ユーティリティを使って \fI$HOME/.locale\fP でコンパイルし、 \fBdate\fP(1) コマンドでその結果をテストし、 それからシェルの設定ファイルで環境変数 \fBLOCPATH\fP と \fBLANG\fP を設定し、 それ以降のユーザーセッションで独自のロケールを利用できるようにしている。 - -.nf +.PP +.EX $ \fBmkdir \-p $HOME/.locale\fP $ \fBI18NPATH=./wrk/ localedef \-f UTF\-8 \-i fi_SE $HOME/.locale/fi_SE.UTF\-8\fP $ \fBLOCPATH=$HOME/.locale LC_ALL=fi_SE.UTF\-8 date\fP $ \fBecho "export LOCPATH=\e$HOME/.locale" >> $HOME/.bashrc\fP $ \fBecho "export LANG=fi_SE.UTF\-8" >> $HOME/.bashrc\fP -.fi +.EE .SH 関連項目 \fBlocaledef\fP(1), \fBcharmap\fP(5), \fBlocale\fP(5), \fBlocale\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man1/memusage.1 b/manual/LDP_man-pages/draft/man1/memusage.1 index 9f5c8614..f16f73be 100644 --- a/manual/LDP_man-pages/draft/man1/memusage.1 +++ b/manual/LDP_man-pages/draft/man1/memusage.1 @@ -26,7 +26,7 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH MEMUSAGE 1 2014\-09\-06 GNU "Linux user manual" +.TH MEMUSAGE 1 2020\-11\-01 GNU "Linux user manual" .SH 名前 memusage \- プログラムのメモリー使用量のプロファイルを行う .SH 書式 @@ -65,8 +65,7 @@ memusage \- プログラムのメモリー使用量のプロファイルを行 \fBrealloc\fP(3) と \fBmremap\fP(2) の場合には、 フィールド "nomove" でブロックアドレスを変更した再割り当て数を、 フィールド "dec" でブロックサイズが減少した再割り当て数が追加で表示される。 \fBrealloc\fP(3) の場合、 フィールド "free" でブロックの解放が行われた再割り当て (サイズが 0 の再割り当て) の数も追加で表示される。 - - +.PP \fBmemusage\fP が出力するテーブルの "realloc/total memory" (再割り当てメモリー/全メモリー) には、 \fBrealloc\fP(3) を使ってメモリーブロックをその前よりも小さいサイズに再割り当てされた場合は含まれない。 このため、 ("free" 以外の) すべての「総メモリー」のセルは "free/total memory" セルよりも大きくなることがある。 @@ -94,7 +93,7 @@ PNG 画像を生成し、 \fIfile\fP に格納する。 スタックポインター値の時間ベースのサンプリング (\fBSIGPROF\fP) を無効にする。 .TP \fB\-m\fP,\ \fB\-\-mmap\fP -\fBmmap\fP(2), \fBmremap\fP(2), \fBmmap\fP(2) も追跡対象とする。 +Also trace \fBmmap\fP(2), \fBmremap\fP(2), and \fBmunmap\fP(2). .TP \fB\-?\fP,\ \fB\-\-help\fP ヘルプを表示し、終了する。 @@ -123,13 +122,18 @@ X 軸の目盛として (関数呼び出し数ではなく) 時間を使用す グラフの高さを \fIsize\fP ピクセルにする。 .SH 終了ステータス 終了ステータスはプロファイルしたプログラムの終了ステータスと同じになる。 -.SH 例 +.SH バグ +バグ報告については +.UR http://www.gnu.org/software/libc/bugs.html +.UE +を参照のこと。 +.SH EXAMPLES 以下の簡単なプログラムは、 ピークに達するまで繰り返しメモリーブロックの再割り当てを行い、 その後ブロックサイズが 0 になるまで繰り返し順に小さなブロックに再割り当てを行う。 このプログラムをコンパイルして以下のコマンドを実行すると、 このプログラムのメモリー使用量がファイル \fImemusage.png\fP に出力される。 - +.PP .in +4n -.nf +.EX $ \fBmemusage \-\-data=memusage.dat ./a.out\fP \&... Memory usage summary: heap total: 45200, heap peak: 6440, stack peak: 224 @@ -151,10 +155,10 @@ Histogram for block sizes: 5840\-5855 2 4% ================================= 6432\-6447 1 2% ================ $ \fBmemusagestat memusage.dat memusage.png\fP -.fi +.EE .in .SS プログラムのソース -.nf +.EX #include #include @@ -163,37 +167,35 @@ $ \fBmemusagestat memusage.dat memusage.png\fP int main(int argc, char *argv[]) { - int i, j; - int *p; + int i, j; + size_t size; + int *p; - printf("malloc: %zd\en", sizeof(int) * 100); - p = malloc(sizeof(int) * 100); + size = sizeof(*p) * 100; + printf("malloc: %zu\en", size); + p = malloc(size); - for (i = 0; i < CYCLES; i++) { - if (i < CYCLES / 2) - j = i; - else - j\-\-; + for (i = 0; i < CYCLES; i++) { + if (i < CYCLES / 2) + j = i; + else + j\-\-; - printf("realloc: %zd\en", sizeof(int) * (j * 50 + 110)); - p = realloc(p, sizeof(int) * (j * 50 + 100)); + size = sizeof(*p) * (j * 50 + 110); + printf("realloc: %zu\en", size); + p = realloc(p, size); - printf("realloc: %zd\en", sizeof(int) * ((j+1) * 150 + 110)); - p = realloc(p, sizeof(int) * ((j + 1) * 150 + 110)); - } + size = sizeof(*p) * ((j + 1) * 150 + 110); + printf("realloc: %zu\en", size); + p = realloc(p, size); + } - free(p); - exit(EXIT_SUCCESS); + free(p); + exit(EXIT_SUCCESS); } -.fi -.SH バグ -バグ報告については -.UR http://www.gnu.org/software/libc/bugs.html -.UE -を参照のこと。 +.EE .SH 関連項目 -\fBmemusagestat\fP(1), \fBmtrace\fP(1) \fBld.so\fP(8) +\fBmemusagestat\fP(1), \fBmtrace\fP(1), \fBld.so\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man1/memusagestat.1 b/manual/LDP_man-pages/draft/man1/memusagestat.1 index 47c1b6be..028fb70c 100644 --- a/manual/LDP_man-pages/draft/man1/memusagestat.1 +++ b/manual/LDP_man-pages/draft/man1/memusagestat.1 @@ -25,7 +25,7 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH MEMUSAGESTAT 1 2014\-09\-06 GNU "Linux programmer's manual" +.TH MEMUSAGESTAT 1 2020\-06\-09 GNU "Linux programmer's manual" .SH 名前 memusagestat \- メモリーのプロファイリングデータからグラフを出力する .SH 書式 @@ -33,7 +33,7 @@ memusagestat \- メモリーのプロファイリングデータからグラフ .SH 説明 \fBmemusagestat\fP は、 ファイル \fIdatafile\fP に格納されたメモリーのプロファイリングデータをグラフとして表現した PNG ファイルを作成する。 \fIdatafile\fP は \fBmemusage\fP(1) の \fI\-d\fP (\fI\-\-data\fP) オプションで生成される。 - +.PP グラフの赤色の線はヒープ使用量 (割り当てられたメモリー) を示し、 緑色の線はスタック使用量を示す。 X 軸はメモリー処理関数の呼び出し数 (\fI\-t\fP オプションが指定された場合は時間) である。 .SH オプション @@ -64,16 +64,15 @@ X 軸の目盛として (関数呼び出し数ではなく) 時間を使用す .TP \fB\-V\fP,\ \fB\-\-version\fP バージョン情報を表示して終了する。 -.SH 例 -\fBmemusage\fP(1) を参照。 .SH バグ バグ報告については .UR http://www.gnu.org/software/libc/bugs.html .UE を参照のこと。 +.SH EXAMPLES +\fBmemusage\fP(1) を参照。 .SH 関連項目 \fBmemusage\fP(1), \fBmtrace\fP(1) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man1/mtrace.1 b/manual/LDP_man-pages/draft/man1/mtrace.1 index 990aa0bf..ad1bc0fe 100644 --- a/manual/LDP_man-pages/draft/man1/mtrace.1 +++ b/manual/LDP_man-pages/draft/man1/mtrace.1 @@ -25,7 +25,7 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH MTRACE 1 2014\-09\-01 GNU "Linux user manual" +.TH MTRACE 1 2017\-09\-15 GNU "Linux user manual" .SH 名前 mtrace \- malloc のトレースログを解釈する .SH 書式 @@ -34,7 +34,7 @@ mtrace \- malloc のトレースログを解釈する \fBmtrace\fP は \fBmtrace\fP(3) の出力内容が入ったファイル \fImtracedata\fP のトレースログを解釈し人間が読みやすい出力に変換する Perl スクリプトである。 \fIbinary\fP が渡されると、 \fBmtrace\fP の出力に問題箇所にソースファイル名と行番号も出力される (\fIbinary\fP はデバッグ情報付きでコンパイルされているものとする)。 - +.PP \fBmtrace\fP(3) 関数と \fBmtrace\fP スクリプトの使用方法の詳細は \fBmtrace\fP(3) を参照。 .SH オプション .TP @@ -44,10 +44,11 @@ mtrace \- malloc のトレースログを解釈する \fB\-\-version\fP バージョン情報を表示して終了する。 .SH バグ -バグ報告の方法については を参照。 +For bug reporting instructions, please see: +.UR http://www.gnu.org/software/libc/bugs.html +.UE . .SH 関連項目 \fBmemusage\fP(1), \fBmtrace\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man1/pldd.1 b/manual/LDP_man-pages/draft/man1/pldd.1 deleted file mode 100644 index 04775c42..00000000 --- a/manual/LDP_man-pages/draft/man1/pldd.1 +++ /dev/null @@ -1,84 +0,0 @@ -.\" Copyright (C) 2014 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 PLDD 1 2014\-09\-27 GNU "Linux User Manual" -.SH 名前 -pldd \- プロセスにリンクされている動的共有オブジェクトを表示する -.SH 書式 -.nf -\fBpldd \fP\fIPID\fP -\fBpldd\fP OPTION -.fi -.SH 説明 -\fBpldd\fP コマンドは、 指定されたプロセス ID のプロセスにリンクされている動的共有オブジェクトのリストを表示する。 このリストには -\fBdlopen\fP(3) を使って動的にロードされたライブラリーも含まれる。 -.SH オプション -.TP -\fB\-?\fP, \fB\-\-help\fP -プログラムのヘルプメッセージを表示する。 -.TP -\fB\-\-usage\fP -簡潔な使用方法を表示する。 -.TP -\fB\-V\fP, \fB\-\-version\fP -プログラムのバージョンを表示する。 -.SH バージョン -\fBpldd\fP は glibc 2.15 以降で利用可能である。 -.SH 準拠 -.\" There are man pages on Solaris and HP-UX. -\fBpldd\fP コマンドは POSIX.1 では規定されていない。 他のいくつかのシステムにも同様のコマンドがある。 -.SH 終了ステータス -成功すると \fBpldd\fP はステータス 0 を返す。 指定されたプロセスが存在しない場合、 -ユーザーが自身の動的共有オブジェクトのリストにアクセスする許可を持っていない場合、 もしくはコマンドライン引き数が指定されていない場合、 \fBpldd\fP -はステータス 1 で終了する。 無効なオプションが指定された場合、 ステータス 64 で終了する。 -.SH 例 -.nf -$ \fBecho $$\fP # シェルの PID を表示する -1143 -$ \fBpldd $$\fP # このシェルにリンクされている動的共有オブジェクトを表示 -1143: /usr/bin/bash -linux\-vdso.so.1 -/lib64/libtinfo.so.5 -/lib64/libdl.so.2 -/lib64/libc.so.6 -/lib64/ld\-linux\-x86\-64.so.2 -/lib64/libnss_files.so.2 -.fi -.SH 注意 -コマンド - - lsof \-p PID - -は、 プロセスにリンクされた動的共有オブジェクトも出力する。 -.SH 関連項目 -\fBldd\fP(1), \fBlsof\fP(1), \fBdlopen\fP(3), \fBld.so\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man1/sprof.1 b/manual/LDP_man-pages/draft/man1/sprof.1 index 1083ac1b..be6cad84 100644 --- a/manual/LDP_man-pages/draft/man1/sprof.1 +++ b/manual/LDP_man-pages/draft/man1/sprof.1 @@ -27,7 +27,7 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH SPROF 1 2014\-06\-24 Linux "Linux User Manual" +.TH SPROF 1 2020\-11\-01 Linux "Linux User Manual" .SH 名前 sprof \- 共有オブジェクトのプロファイルデータを読み出して表示する .SH 書式 @@ -35,10 +35,13 @@ sprof \- 共有オブジェクトのプロファイルデータを読み出し \fBsprof\fP [\fIoption\fP]... \fIshared\-object\-path\fP [\fIprofile\-data\-path\fP] .fi .SH 説明 -\fBsprof\fP コマンドは、 最初のコマンドライン引き数で指定された共有オブジェクトのプロファイルの概要を表示する。 2 番目のコマンドライン引き数 -(省略可能) で指定された生成済みのプロファイルデータを使って、 プロファイルの概要が生成される。 プロファイルデータのパス名が省略された場合、 -\fBsprof\fP は、 共有オブジェクトの soname を使ってパス名を元に、 カレントディレクトリに -\fI.profile\fP という名前のファイルを探して、 プロファイルデータを特定しようとする。 +The \fBsprof\fP command displays a profiling summary for the shared object +(shared library) specified as its first command\-line argument. The +profiling summary is created using previously generated profiling data in +the (optional) second command\-line argument. If the profiling data pathname +is omitted, then \fBsprof\fP will attempt to deduce it using the soname of the +shared object, looking for a file with the name \fI.profile\fP +in the current directory. .SH オプション 以下のコマンドラインオプションは生成されるプロファイリング出力を指定する。 .TP @@ -65,12 +68,13 @@ sprof \- 共有オブジェクトのプロファイルデータを読み出し プログラムのバージョンを表示し終了する。 .SH 準拠 \fBsprof\fP コマンドは GNU 拡張であり、 POSIX.1 には存在しない。 -.SH 例 -以下は \fBsprof\fP の使用例を示したものである。 この例では、メインプログラムで共有ライブラリ内の 2 つの関数を呼び出している。 最初に、 -メインプログラムのコードは以下の通りである。 - +.SH EXAMPLES +The following example demonstrates the use of \fBsprof\fP. The example +consists of a main program that calls two functions in a shared object. +First, the code of the main program: +.PP .in +4n -.nf +.EX $ \fBcat prog.c\fP #include @@ -84,126 +88,122 @@ main(int argc, char *argv[]) x2(); exit(EXIT_SUCCESS); } -.fi +.EE .in .PP -関数 \fIx1()\fP と \fIx2()\fP は以下のソースファイルで定義されており、 このファイルから共有ライブラリが構成される。 - +The functions \fIx1\fP() and \fIx2\fP() are defined in the following source file +that is used to construct the shared object: +.PP .in +4n -.nf +.EX $ \fBcat libdemo.c\fP #include void consumeCpu1(int lim) { - int j; - - for (j = 0; j < lim; j++) + for (int j = 0; j < lim; j++) getppid(); } void x1(void) { - int j; - - for (j = 0; j < 100; j++) + for (int j = 0; j < 100; j++) consumeCpu1(200000); } void consumeCpu2(int lim) { - int j; - - for (j = 0; j < lim; j++) + for (int j = 0; j < lim; j++) getppid(); } void x2(void) { - int j; - - for (j = 0; j < 1000; j++) + for (int j = 0; j < 1000; j++) consumeCpu2(10000); } -.fi +.EE .in .PP -ここで、 実際の名前は \fIlibdemo.so.1.0.1\fP で soname は \fIlibdemo.so.1\fP で共有ライブラリを構成する。 - +Now we construct the shared object with the real name \fIlibdemo.so.1.0.1\fP, +and the soname \fIlibdemo.so.1\fP: +.PP .in +4n -.nf +.EX $ \fBcc \-g \-fPIC \-shared \-Wl,\-soname,libdemo.so.1 \e\fP \fB\-o libdemo.so.1.0.1 libdemo.c\fP -.fi +.EE .in .PP 次に、 ライブラリ soname とライブラリのリンカー名へのシンボリックリンクを作成する。 - +.PP .in +4n -.nf +.EX $ \fBln \-sf libdemo.so.1.0.1 libdemo.so.1\fP $ \fBln \-sf libdemo.so.1 libdemo.so\fP -.fi +.EE .in .PP -続けて、 共有ライブラリとリンクしてメインプログラムをコンパイルし、 プログラムが依存する共有ライブラリの一覧を表示する。 - +Next, we compile the main program, linking it against the shared object, and +then list the dynamic dependencies of the program: +.PP .in +4n -.nf +.EX $ \fBcc \-g \-o prog prog.c \-L. \-ldemo\fP $ \fBldd prog\fP linux\-vdso.so.1 => (0x00007fff86d66000) libdemo.so.1 => not found libc.so.6 => /lib64/libc.so.6 (0x00007fd4dc138000) /lib64/ld\-linux\-x86\-64.so.2 (0x00007fd4dc51f000) -.fi +.EE .in .PP -共有ライブラリのプロファイル情報を取得するために、 環境変数 \fBLD_PROFILE\fP にこのライブラリの soname を設定する。 - +In order to get profiling information for the shared object, we define the +environment variable \fBLD_PROFILE\fP with the soname of the library: +.PP .in +4n -.nf +.EX $ \fBexport LD_PROFILE=libdemo.so.1\fP -.fi +.EE .in .PP 環境変数 \fBLD_PROFILE_OUTPUT\fP にプロファイル情報を出力するディレクトリのパス名を設定し、 このディレクトリが存在しない場合は作成する。 - +.PP .in +4n -.nf +.EX $ \fBexport LD_PROFILE_OUTPUT=$(pwd)/prof_data\fP $ \fBmkdir \-p $LD_PROFILE_OUTPUT\fP -.fi +.EE .in .PP \fBLD_PROFILE\fP を設定すると、 プロファイルの出力は出力ファイルがすでに存在する場合は「追記」されるので、 既存のプロファイルデータが存在しないようにしておく。 - +.PP .in +4n -.nf +.EX $ \fBrm \-f $LD_PROFILE_OUTPUT/$LD_PROFILE.profile\fP -.fi +.EE .in .PP 次にプログラムを実行し、 プロファイリング出力を生成させる。 プロファイリング出力は \fBLD_PROFILE_OUTPUT\fP で指定されたディレクトリにファイルが書き込まれる。 - +.PP .in +4n -.nf +.EX $ \fBLD_LIBRARY_PATH=. ./prog\fP $ \fBls prof_data\fP libdemo.so.1.profile -.fi +.EE .in .PP \fBsprof \-p\fP オプションを使って、 呼び出し回数と tick 数が含まれる flat プロファイルを生成する。 - +.PP .in +4n -.nf +.EX $ \fBsprof \-p libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile\fP Flat profile: @@ -214,13 +214,13 @@ Each sample counts as 0.01 seconds. 40.00 0.10 0.04 1000 40.00 consumeCpu2 0.00 0.10 0.00 1 0.00 x1 0.00 0.10 0.00 1 0.00 x2 -.fi +.EE .in .PP \fBsprof \-q\fP オプションを使うと、 コールグラフが生成される。 - +.PP .in +4n -.nf +.EX $ \fBsprof \-q libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile\fP index % time self children called name @@ -239,26 +239,25 @@ index % time self children called name [3] 0.0 0.00 0.00 1 x2 [3] 0.00 0.00 1000/1000 consumeCpu2 [2] \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -.fi +.EE .in .PP 上記や以下の例で、 "" の文字列は、 識別子がプロファイルされたオブジェクトの外部にあることを表している (この例では "" になっているのは \fImain()\fP 内のオブジェクトである)。 .PP \fBsprof \-c\fP オプションを使うと、 呼び出しの組とその発生回数のリストが生成される。 - +.PP .in +4n -.nf +.EX $ \fBsprof \-c libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile\fP x1 1 x1 consumeCpu1 100 x2 1 x2 consumeCpu2 1000 -.fi +.EE .in .SH 関連項目 \fBgprof\fP(1), \fBldd\fP(1), \fBld.so\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man1/time.1 b/manual/LDP_man-pages/draft/man1/time.1 index 481612fa..bc7eb1b1 100644 --- a/manual/LDP_man-pages/draft/man1/time.1 +++ b/manual/LDP_man-pages/draft/man1/time.1 @@ -16,77 +16,81 @@ .\" all rights reserved. .\" Translated 2008-11-20, Akihiro MOTOKI , LDP v3.13 .\" -.TH TIME 1 2008\-11\-14 "" "Linux User's Manual" +.TH TIME 1 2019\-03\-06 "" "Linux User's Manual" .SH 名前 time \- コマンドの時間計測やリソース使用量を表示する .SH 書式 -\fBtime [\fP\fIoptions\fP\fB] \fP\fIcommand\fP\fB [\fP\fIarguments...\fP\fB] \fP +\fBtime \fP[\fIoptions\fP]\fI command \fP[\fIarguments...\fP] .SH 説明 \fBtime\fP コマンドは、指定されたプログラム \fIcommand\fP を渡された引き数で実行する。 \fIcommand\fP が終了すると、 \fBtime\fP はこのプログラムの実行時間の統計情報についてのメッセージを 標準エラー出力に出力する。 表示される統計情報は以下の三つから構成される: (i) 起動から終了までに経過した実時間 (real time)、 (ii) ユーザー CPU 時間 (\fBtimes\fP(2) が返す \fIstruct tms\fP の \fItms_utime\fP と \fItms_cutime\fP の値の合計)、 (iii) システム CPU 時間 (\fBtimes\fP(2) が返す \fIstruct tms\fP の \fItms_stime\fP と \fItms_cstime\fP の値の合計)。 - -(\fBbash\fP(1) などの) いくつかのシェルには、ここで説明するコマンドよりも 機能が少ない、組み込みの \fBtime\fP コマンドが存在する。 -組み込みではない実際のコマンドを使用するためには、 (\fI/usr/bin/time\fP のような) コマンドのパス名を指定する必要があるかもしれない。 +.PP +Note: some shells (e.g., \fBbash\fP(1)) have a built\-in \fBtime\fP command that +provides similar information on the usage of time and possibly other +resources. To access the real command, you may need to specify its pathname +(something like \fI/usr/bin/time\fP). .SH オプション .TP \fB\-p\fP POSIX ロケールの場合、伝統的なフォーマットである .IP .in +4n +.EX "real %f\enuser %f\ensys %f\en" +.EE .in .IP が使用される (各数字は秒単位)。 %f の出力での小数点以下の桁数は規定されていないが、 クロックティック (clock tick) の精度を表すのに十分な桁数となり、 少なくとも一桁は存在する。 .SH 終了ステータス -\fIcommand\fP が起動された場合は、 \fIcommand\fP の終了ステータスが終了ステータスとなる。 \fIcommand\fP -が見つからなかった場合は終了ステータスは 127 で、 \fIcommand\fP が見つかったが起動できなかった場合は 126 となる。 -これ以外で何かエラーがあった場合は、終了ステータスは 0 以外の前記以外の値 (1\-125) の何かになる。 +If \fIcommand\fP was invoked, the exit status is that of \fIcommand\fP. +Otherwise, it is 127 if \fIcommand\fP could not be found, 126 if it could be +found but could not be invoked, and some other nonzero value (1\(en125) if +something else went wrong. .SH 環境変数 -環境変数 \fBLANG\fP, \fBLC_ALL\fP, \fBLC_CTYPE\fP, \fBLC_MESSAGES\fP, \fBLC_NUMERIC\fP, -\fBNLSPATH\fP, \fBPATH\fP が使用される。 \fBPATH\fP は \fIcommand\fP -を探すのに使われる。それ以外は出力文字や書式に使用される。 +The variables \fBLANG\fP, \fBLC_ALL\fP, \fBLC_CTYPE\fP, \fBLC_MESSAGES\fP, +\fBLC_NUMERIC\fP, and \fBNLSPATH\fP are used for the text and formatting of the +output. \fBPATH\fP is used to search for \fIcommand\fP. The remaining ones for +the text and formatting of the output. .SH "GNU バージョン" 以下は GNU 1.7 バージョンの \fBtime\fP の説明である。コマンド名とは裏腹に、GNU バージョンでは 有益な情報がたくさん出力される。使用時間だけでなく、 (取得できる場合には) メモリーや I/O、IPC 呼び出しなどの他のリソース に関する情報も出力される。 出力はフォーマット文字列を使って整形され、 フォーマット文字列は \-f オプションか環境変数 \fBTIME\fP で指定できる。 -.LP +.PP デフォルトのフォーマット文字列は以下の通り。 .PP .in +4n +.EX %Uuser %Ssystem %Eelapsed %PCPU (%Xtext+%Ddata %Mmax)k -.br %Iinputs+%Ooutputs (%Fmajor+%Rminor)pagefaults %Wswaps -.br +.EE .in -.LP -\-p オプションが指定された場合には、 +.PP +When the \fI\-p\fP option is given, the (portable) output format is used: .PP .in +4n +.EX real %e -.br user %U -.br sys %S -.br +.EE .in -.PP -という (他と互換性のある) 出力フォーマットが使用される。 +.\" .SS フォーマット文字列 フォーマットはよくある printf 形式で解釈される。 通常の文字はそのままコピーされ、 タブ、改行 (newline)、バックスラッシュはそれぞれ \et, \en, \e\e で エスケープされる。 パーセント記号は %% で表現され、それ以外の % は変換を示す。 末尾には必ず改行文字 (newline) が追加される。 変換は以下の通りである。 \fBtcsh\fP(1) で使用される変換は全てサポートされている。 -.LP +.PP \fBTime\fP .TP \fB%E\fP 経過した実時間 ([hours:]minutes:seconds の形式)。 .TP \fB%e\fP -(tcsh にはない) 経過した実時間 (秒単位)。 +(Not in \fBtcsh\fP(1).) Elapsed real time (in seconds). .TP \fB%S\fP そのプロセスがカーネルモードで消費した CPU 時間の合計 (秒単位)。 @@ -96,14 +100,14 @@ sys %S .TP \fB%P\fP このジョブが獲得した CPU の割り合い (パーセンテージ)。 (%U + %S) / %E で計算される。 -.LP +.PP \fBMemory\fP .TP \fB%M\fP プロセス生存中のそのプロセスの resident set size の最大値。 キロバイト単位。 .TP \fB%t\fP -(tcsh にはない) そのプロセスの resident set size の平均値。 キロバイト単位。 +(Not in \fBtcsh\fP(1).) Average resident set size of the process, in Kbytes. .TP \fB%K\fP そのプロセスのメモリー使用量の合計 (データ+スタック+テキスト) の平均値。 キロバイト単位。 @@ -112,13 +116,15 @@ sys %S そのプロセスの非共有データ領域の平均サイズ。 キロバイト単位。 .TP \fB%p\fP -(tcsh にはない) そのプロセスの非共有スタック空間の平均サイズ。 キロバイト単位。 +(Not in \fBtcsh\fP(1).) Average size of the process's unshared stack space, in +Kbytes. .TP \fB%X\fP そのプロセスの共有テキスト空間の平均サイズ。 キロバイト単位。 .TP \fB%Z\fP -(tcsh にはない) システムのページサイズ (バイト単位)。 この値はシステム毎に決まる定数だが、システムにより異なる。 +(Not in \fBtcsh\fP(1).) System's page size, in bytes. This is a per\-system +constant, but varies between systems. .TP \fB%F\fP プロセスの動作中に発生したメジャーページフォルトの回数。 これは、ディスクからページを読み込む必要があったページフォルトに 関するものである。 @@ -135,7 +141,7 @@ sys %S .TP \fB%w\fP wait の回数、つまりそのプログラムが自発的にコンテキストスイッチされた回数。 例えば、I/O 操作の完了を待っている間などが該当する。 -.LP +.PP \fBI/O\fP .TP \fB%I\fP @@ -154,19 +160,20 @@ wait の回数、つまりそのプログラムが自発的にコンテキスト そのプロセスに配送されたシグナル数。 .TP \fB%C\fP -(tcsh にはない) time の対象となったコマンド名とコマンドライン引き数。 +(Not in \fBtcsh\fP(1).) Name and command\-line arguments of the command being +timed. .TP \fB%x\fP -(tcsh にはない) コマンドの終了ステータス。 +(Not in \fBtcsh\fP(1).) Exit status of the command. .SS "GNU オプション" .TP -\fB\-f \fP\fIFORMAT\fP\fB, \-\-format=\fP\fIFORMAT\fP +\fB\-f \fP\fIformat\fP\fB, \-\-format=\fP\fIformat\fP 出力フォーマットを指定する。 環境変数 \fBTIME\fP で指定されたフォーマットよりも優先される。 .TP \fB\-p, \-\-portability\fP 他の time と互換性のある出力フォーマットを使用する。 .TP -\fB\-o \fP\fIFILE\fP\fB, \-\-output=\fP\fIFILE\fP +\fB\-o \fP\fIfile\fP\fB, \-\-output=\fP\fIfile\fP 結果を \fIstderr\fP に送らず、指定されたファイルに書き込む。 ファイルは上書きされる。 .TP \fB\-a, \-\-append\fP @@ -174,6 +181,11 @@ wait の回数、つまりそのプログラムが自発的にコンテキスト .TP \fB\-v, \-\-verbose\fP 非常に詳しい出力で、入手できる全ての情報を出力する。 +.TP +\fB\-q, \-\-quiet\fP +.\" +Don't report abnormal program termination (where \fIcommand\fP is terminated by +a signal) or nonzero exit status. .SS "GNU 標準オプション" .TP \fB\-\-help\fP @@ -187,24 +199,24 @@ wait の回数、つまりそのプログラムが自発的にコンテキスト .SH バグ 全てのリソースが UNIX の全てのバージョンで計測されているわけではないので、 いくつかの値が 0 と報告される可能性がある。 現在の出力項目のほとんどは 4.2BSD や 4.3BSD で取得可能なデータに 基づいて選択されている。 -.LP +.PP GNU time バージョン 1.7 はまだローカライズされていない。 そのため、POSIX の要件を実装していないことになる。 -.LP +.PP \fBTIME\fP という環境変数は名前の選択がまずい。 \fBautoconf\fP(1) や \fBmake\fP(1) のようなシステムでは、使用するコマンドを上書きするのにそのコマンドの 名前の環境変数を使うのが珍しくない。 MORE や TIME のような名前を (プログラムのパス名の指定ではなく) プログラムへのオプションを指定するのに使うと、 面倒なことを引き起こす可能性が高い。 -.LP +.PP \-o が追記ではなく上書きになっているのは残念なことだ (つまり \-a オプションがデフォルトになっているべきだろうということだ)。 -.LP -GNU \fBtime\fP に対する提案やバグレポートは -.br -\fIbug\-utils@prep.ai.mit.edu\fP -.br -までメールを送ってほしい。 その場合には \fBtime\fP や OS、使用している C コンパイラの バージョンを記載してほしい。 \fBtime\fP -のバージョンは -.br -\fItime \-\-version\fP -.br +.PP +Mail suggestions and bug reports for GNU \fBtime\fP to \fIbug\-time@gnu.org\fP. +Please include the version of \fBtime\fP, which you can get by running +.PP +.in +4n +.EX +time \-\-version +.EE +.in +.PP .\" .SH AUTHORS .\" .TP .\" .IP "David Keppel" @@ -218,8 +230,7 @@ GNU \fBtime\fP に対する提案やバグレポートは .\" Helped with portability で取得できる。 .SH 関連項目 -\fBtcsh\fP(1), \fBtimes\fP(2), \fBwait3\fP(2) +\fBbash\fP(1), \fBtcsh\fP(1), \fBtimes\fP(2), \fBwait3\fP(2) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/_exit.2 b/manual/LDP_man-pages/draft/man2/_exit.2 deleted file mode 100644 index 957d86bf..00000000 --- a/manual/LDP_man-pages/draft/man2/_exit.2 +++ /dev/null @@ -1,101 +0,0 @@ -.\" 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 Wed Jul 21 23:02:38 1993 by Rik Faith -.\" Modified 2001-11-17, aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 KUNIMOTO Yasuhiro, all rights reserved. -.\" Translated Jun 27, 1997 by KUNIMOTO Yasuhiro (hiro@kthree.co.jp) -.\" Modified Jun 28, 1997 by Yoshiki Sugiura (yox@in.aix.or.jp) -.\" Modified Jul 6, 1997 by Yoshiki Sugiura (yox@in.aix.or.jp) -.\" Updated & Modified Sun Dec 9 20:02:10 JST 2001 -.\" by Yuichi SATO -.\" Updated Sat Sep 3 04:26:00 JST 2005 -.\" by Akihiro MOTOKI -.\" -.TH _EXIT 2 2015\-01\-22 Linux "Linux Programmer's Manual" -.SH 名前 -_exit, _Exit \- 呼び出し元のプロセスを終了させる -.SH 書式 -\fB#include \fP -.sp -\fBvoid _exit(int \fP\fIstatus\fP\fB);\fP -.sp -\fB#include \fP -.sp -\fBvoid _Exit(int \fP\fIstatus\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fB_Exit\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -または \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fB_exit\fP() は、それを呼んだプロセスを「直ちに」終了させる。 その際、このプロセスが所有しているディスクリプター (descriptor) -で、 オープンされているものは全てクローズされる。 また、このプロセスが所有する子プロセスは全て、プロセス番号 1、 つまり \fIinit\fP -プロセスによって継承され、このプロセスの親プロセスに対して \fBSIGCHLD\fP シグナルが送出される。 -.LP -\fIstatus\fP の値は、このプロセスの終了状態としてその親プロセスに対して返され、 \fBwait\fP(2) -系関数を利用することによって取得することができる。 -.LP -関数 \fB_Exit\fP() は \fB_exit\fP() と等価である。 -.SH 返り値 -これらの関数は値を返さない。 -.SH 準拠 -SVr4, POSIX.1\-2001, 4.3BSD. 関数 \fB_Exit\fP() は C99 で導入された。 -.SH 注意 -exit の効果、終了状態の受渡し、ゾンビプロセス、シグナル送出などに -ついての議論は、 \fBexit\fP(3) を参照すること。 -.LP -関数 \fB_exit\fP() は \fBexit\fP(3) に似ているが、ANSI C の \fBatexit\fP(3) や \fBon_exit\fP(3) -によって登録されたいかなる関数も呼び出さない。 標準 I/O バッファーのフラッシュや、 \fBtmpfile\fP(3) -で作成されたテンポラリファイルの削除を行うかどうかは、実装に依存する。 一方で、 \fB_exit\fP() -はオープンされているファイルディスクリプターをクローズしないため、 未決定になっている出力がフラッシュされるのを待つのに不確定な遅れが発生する。 -この遅れを発生させたくなければ、 \fB_exit\fP() の前に \fBtcflush\fP(3) のような関数を呼び出せばよい。 \fB_exit\fP() -が呼び出されたときに、 未決定になっている全ての I/O がキャンセルされるのか、 またどの I/O がキャンセルされるのかは実装に依存する。 -.SS "C ライブラリとカーネル ABI の違い" -バージョン 2.3 より前の glibc では、 \fB_exit\fP() のラッパー関数は同じ名前のカーネルシステムコールを起動していた。 glibc -2.3 以降では、プロセス内の全てのスレッドを終了するために、 ラッパー関数は \fBexit_group\fP(2) を起動する。 -.SH 関連項目 -\fBexecve\fP(2), \fBexit_group\fP(2), \fBfork\fP(2), \fBkill\fP(2), \fBwait\fP(2), -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/_syscall.2 b/manual/LDP_man-pages/draft/man2/_syscall.2 index 53cadbb2..e92c2d7a 100644 --- a/manual/LDP_man-pages/draft/man2/_syscall.2 +++ b/manual/LDP_man-pages/draft/man2/_syscall.2 @@ -45,22 +45,24 @@ .\" all rights reserved. .\" Translated 2008-02-11, Akihiro MOTOKI .\" -.TH _SYSCALL 2 2007\-12\-19 Linux "Linux Programmer's Manual" +.TH _SYSCALL 2 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 _syscall \- ライブラリのサポートなしでシステムコールを起動する (昔の方法) .SH 書式 \fB#include \fP - +.PP A _syscall macro - +.PP desired system call .SH 説明 システムコールに関してそのプロトタイプを知ることが重要である。 引き数の個数、それらの型、返り値の型を知る必要がある。 実際の使用にあたっては、システムコールをシステムに呼び出しやすくするために、 7 個のマクロが用意されている。これらのマクロは以下の形である。 -.sp -.RS +.PP +.in +4n +.EX _syscall\fIX\fP(\fItype\fP,\fIname\fP,\fItype1\fP,\fIarg1\fP,\fItype2\fP,\fIarg2\fP,...) -.RE +.EE +.in .PP ここで .IP @@ -84,16 +86,16 @@ _syscall\fIX\fP(\fItype\fP,\fIname\fP,\fItype1\fP,\fIarg1\fP,\fItype2\fP,\fIarg2 カーネル 2.6.18 あたりから、_syscall マクロ群はユーザー空間に対して提供される ヘッダーファイルから削除された。代わりに \fBsyscall\fP(2) を使用すること。 (いくつかのアーキテクチャー、特に ia64、では、これまで _syscall マクロが 提供されたことはない。このようなアーキテクチャーでは、常に \fBsyscall\fP(2) が必要であった。) - +.PP _syscall() マクロはプロトタイプを「生成しない」。 ユーザーはプロトタイプを自分で書かなければならないかもしれない。 とりわけ C++ ユーザーの場合はそうであろう。 - +.PP システムコールは、正のエラーコードのみ、または負のエラーコードのみを返すように 定められている訳ではない。そのシステムコールがどのようなエラーコードを返すかを 確認するには、そのソースコードを読む必要がある。たいていの場合は、標準のエラー コードを負にしたものである (例えば \-\fIEPERM\fP)。 _syscall() マクロは、そのシステムコールの返り値 \fIr\fP が負でない場合、その値 をそのまま返す。一方、\fIr\fP が負の場合には、変数 \fIerrno\fP に \-\fIr\fP を設定し、\-1 を返す。 エラーコードについては \fBerrno\fP(3) を参照。 - +.PP .\" The preferred way to invoke system calls that glibc does not know .\" about yet is via .\" .BR syscall (2). @@ -107,8 +109,8 @@ _syscall() マクロは、そのシステムコールの返り値 \fIr\fP が負 .\" システムコールを定義する際、引き数の型は値渡し (by\-value) か、 (構造体のように集合的なデータの場合は) ポインター渡し (by\-pointer) でなければならない。 -.SH 例 -.nf +.SH EXAMPLES +.EX #include #include #include @@ -117,9 +119,6 @@ _syscall() マクロは、そのシステムコールの返り値 \fIr\fP が負 _syscall1(int, sysinfo, struct sysinfo *, info); -/* Note: nroff のソースファイルから直接コピーする際には、 -printf 文内の余分なバックスラッシュを忘れずに削除するように。 */ - int main(void) { @@ -140,9 +139,9 @@ main(void) s_info.procs); exit(EXIT_SUCCESS); } -.fi +.EE .SS 出力例 -.nf +.EX code error = 0 uptime = 502034s Load: 1 min 13376 / 5 min 5504 / 15 min 1152 @@ -150,10 +149,9 @@ RAM: total 15343616 / free 827392 / shared 8237056 Memory in buffers = 5066752 Swap: total 27881472 / free 24698880 Number of processes = 40 -.fi +.EE .SH 関連項目 \fBintro\fP(2), \fBsyscall\fP(2), \fBerrno\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/accept.2 b/manual/LDP_man-pages/draft/man2/accept.2 index 39fa9e65..a2b305cb 100644 --- a/manual/LDP_man-pages/draft/man2/accept.2 +++ b/manual/LDP_man-pages/draft/man2/accept.2 @@ -56,19 +56,19 @@ .\" Updated & Modified 2008-12-24, Akihiro MOTOKI, LDP v3.15 .\" Updated 2008-04-13, Akihiro MOTOKI, LDP v3.20 .\" -.TH ACCEPT 2 2010\-09\-10 Linux "Linux Programmer's Manual" +.TH ACCEPT 2 2020\-04\-11 Linux "Linux Programmer's Manual" .SH 名前 accept, accept4 \- ソケットへの接続を受ける .SH 書式 .nf \fB#include \fP /* 「注意」参照 */ \fB#include \fP - +.PP \fBint accept(int \fP\fIsockfd\fP\fB, struct sockaddr *\fP\fIaddr\fP\fB, socklen_t *\fP\fIaddrlen\fP\fB);\fP \fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ \fB#include \fP - +.PP \fBint accept4(int \fP\fIsockfd\fP\fB, struct sockaddr *\fP\fIaddr\fP\fB,\fP \fB socklen_t *\fP\fIaddrlen\fP\fB, int \fP\fIflags\fP\fB);\fP .fi @@ -80,15 +80,15 @@ accept, accept4 \- ソケットへの接続を受ける .PP 引き数 \fIsockfd\fP は、 \fBsocket\fP(2) によって生成され、 \fBbind\fP(2) によってローカルアドレスにバインドされ、 \fBlisten\fP(2) を経て接続を待っているソケットである。 - +.PP \fIaddr\fP 引き数は \fIsockaddr\fP 構造体へのポインターである。 この構造体には接続相手のソケットのアドレスが入っている。 \fIaddr\fP 引き数で返されるアドレスの正確なフォーマットは、 ソケットのアドレス種別によって変わる (\fBsocket\fP(2) およびそれぞれのプロトコルの man ページを参照)。 \fIaddr\fP が NULL の場合、 \fIaddr\fP には何も入らない。この場合、 \fIaddrlen\fP は使用されず、この引き数は NULL にしておくべきである。 - +.PP \fIaddrlen\fP 引き数は入出力両用の引き数である。呼び出し時には、呼び出し元が \fIaddr\fP が指す構造体のサイズ (バイト単位) で初期化しておかなければならない。 返ってくる時には、接続相手のアドレスの実際の大きさが格納される。 - +.PP 渡されたバッファーが小さ過ぎた場合は、返されるアドレスの末尾が切り詰められる。 この場合には、 \fIaddrlen\fP には、呼び出し時に指定された値よりも大きな値が格納される。 .PP @@ -96,30 +96,28 @@ man ページを参照)。 \fIaddr\fP が NULL の場合、 \fIaddr\fP には何 (block) する。 ソケットが非停止になっていて、 待ち状態の接続要求がキューに無いときは、 \fBaccept\fP() はエラー \fBEAGAIN\fP か \fBEWOULDBLOCK\fP で失敗する。 .PP -ソケットへの接続到着を知るには、 \fBselect\fP(2) または \fBpoll\fP(2) を用いればよい。 -新しい接続要求が来るとソケットは読み込み可能になるので、 そうしたら \fBaccept\fP() を呼んでその接続に対するソケットを取得すればよい。 -あるいはソケットに設定を行い、何らかのアクションがあったときに \fBSIGIO\fP を配送 (deliver) させるようにすることもできる。詳細は -\fBsocket\fP(7) を参照のこと。 +In order to be notified of incoming connections on a socket, you can use +\fBselect\fP(2), \fBpoll\fP(2), or \fBepoll\fP(7). A readable event will be +delivered when a new connection is attempted and you may then call +\fBaccept\fP() to get a socket for that connection. Alternatively, you can +set the socket to deliver \fBSIGIO\fP when activity occurs on a socket; see +\fBsocket\fP(7) for details. .PP -明示的な接続確認 (confirmation) を必要とするようなプロトコル (DECNet など) では、 \fBaccept\fP() -は単に次の接続要求をキューから取り出すだけであり、 接続確認は行わないことに注意せよ。接続確認は、 新しいファイルディスクリプターに対する -通常の読み取り/書き込みによってなされ、接続拒否 (rejection) は新しいソケットをクローズすることによってなされる。 現在のところ、 -Linux 上でこれらのセマンティクスを持つのは DECNet だけである。 - \fIflags\fP が 0 の場合、 \fBaccept4\fP() は \fBaccept\fP() と同じである。 \fIflags\fP に以下の値をビット毎の論理和 (OR) で指定することで、 異なる動作をさせることができる。 .TP 16 \fBSOCK_NONBLOCK\fP -新しく生成されるオープンファイル記述 (open file description) の \fBO_NONBLOCK\fP -ファイルステータスフラグをセットする。 このフラグを使うことで、 \fBO_NONBLOCK\fP をセットするために \fBfcntl\fP(2) -を追加で呼び出す必要がなくなる。 +Set the \fBO_NONBLOCK\fP file status flag on the open file description (see +\fBopen\fP(2)) referred to by the new file descriptor. Using this flag saves +extra calls to \fBfcntl\fP(2) to achieve the same result. .TP \fBSOCK_CLOEXEC\fP 新しいファイルディスクリプターに対して close\-on\-exec (\fBFD_CLOEXEC\fP) フラグをセットする。 このフラグが役に立つ理由については、 \fBopen\fP(2) の \fBO_CLOEXEC\fP フラグの説明を参照のこと。 .SH 返り値 -成功した場合、これらのシステムコールは 受け付けたソケットのディスクリプターである非負の整数値を返す。 エラーが発生した場合は \-1 を返し、 -\fIerrno\fP を適切に設定する。 +On success, these system calls return a file descriptor for the accepted +socket (a nonnegative integer). On error, \-1 is returned, \fIerrno\fP is set +appropriately, and \fIaddrlen\fP is left unchanged. .SS エラー処理 Linux の \fBaccept\fP() (と \fBaccept4\fP()) は、新しいソケットにおける、発生済みのネットワークエラーを \fBaccept\fP() からのエラーコードとして渡す。 この振舞いは BSD ソケットの実装とは異なる。 信頼性の高い動作を行うためには、 @@ -131,11 +129,13 @@ Linux の \fBaccept\fP() (と \fBaccept4\fP()) は、新しいソケットに .TP \fBEAGAIN\fP または \fBEWOULDBLOCK\fP .\" Actually EAGAIN on Linux -ソケットが非停止になっていて、 かつ受付け対象の接続が存在しない。 POSIX.1\-2001 は、この場合にどちらのエラーを返すことも認めており、 -これら 2 つの定数が同じ値を持つことも求めていない。 したがって、移植性が必要なアプリケーションでは、両方の可能性を 確認すべきである。 +The socket is marked nonblocking and no connections are present to be +accepted. POSIX.1\-2001 and POSIX.1\-2008 allow either error to be returned +for this case, and do not require these constants to have the same value, so +a portable application should check for both possibilities. .TP \fBEBADF\fP -ディスクリプターが不正。 +\fIsockfd\fP is not an open file descriptor. .TP \fBECONNABORTED\fP 接続が中止された。 @@ -153,16 +153,17 @@ Linux の \fBaccept\fP() (と \fBaccept4\fP()) は、新しいソケットに (\fBaccept4\fP()) \fIflags\fP に不正な値が指定されている。 .TP \fBEMFILE\fP -1プロセスがオープンできるファイルディスクリプター数の上限に達した。 +The per\-process limit on the number of open file descriptors has been +reached. .TP \fBENFILE\fP -オープンされたファイルの総数がシステム全体の上限に達していた。 +The system\-wide limit on the total number of open files has been reached. .TP \fBENOBUFS\fP, \fBENOMEM\fP メモリーが足りない。 多くの場合は、システムメモリーが足りないわけではなく、 ソケットバッファーの大きさによるメモリー割り当ての制限である。 .TP \fBENOTSOCK\fP -ディスクリプターはソケットではなくファイルを参照している。 +The file descriptor \fIsockfd\fP does not refer to a socket. .TP \fBEOPNOTSUPP\fP 参照しているソケットの型が \fBSOCK_STREAM\fP でない。 @@ -188,10 +189,11 @@ Linux の \fBaccept\fP() (と \fBaccept4\fP()) は、新しいソケットに .\" EAGAIN, EBADF, ECONNABORTED, EINTR, EINVAL, EMFILE, .\" ENFILE, ENOBUFS, ENOMEM, ENOTSOCK, EOPNOTSUPP, EPROTO, EWOULDBLOCK. .\" In addition, SUSv2 documents EFAULT and ENOSR. -\fBaccept\fP(): POSIX.1\-2001, SVr4, 4.4BSD, (\fBaccept\fP() は 4.2BSD で初めて実装された). - +\fBaccept\fP(): POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.4BSD (\fBaccept\fP() first +appeared in 4.2BSD). +.PP \fBaccept4\fP() は非標準の Linux による拡張である。 -.LP +.PP .\" Some testing seems to show that Tru64 5.1 and HP-UX 11 also .\" do not inherit file status flags -- MTK Jun 05 Linux では、 \fBaccept\fP() が返す新しいソケットは listen を行っているソケットの ファイル状態フラグ @@ -202,34 +204,34 @@ Linux では、 \fBaccept\fP() が返す新しいソケットは listen を行 POSIX.1\-2001 では \fI\fP のインクルードは必須とされておらず、 Linux ではこのヘッダーファイルは必要ではない。 しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダーファイルが 必要であり、移植性が必要なアプリケーションではこのファイルを インクルードするのが賢明であろう。 - -\fBSIGIO\fP が届けられた後や、 \fBselect\fP(2) または \fBpoll\fP(2) が読み込み可能イベントを返した後に、 -必ずしも待機中の接続があるとは限らない。 なぜならその接続は、 \fBaccept\fP() が呼ばれる前に、非同期的なネットワークエラーや -他のスレッドから呼ばれた (別の) accept によって 削除されているかもしれないからである。 この場合、その \fBaccept\fP() -呼び出しは停止 (block) し、次の接続の到着を待ちつづける。 \fBaccept\fP() に停止を行わせないようにするには、引き数に渡すソケット -\fIsockfd\fP に \fBO_NONBLOCK\fP フラグをセットしておく必要がある (\fBsocket\fP(7) を見よ)。 +.PP +There may not always be a connection waiting after a \fBSIGIO\fP is delivered +or \fBselect\fP(2), \fBpoll\fP(2), or \fBepoll\fP(7) return a readability event +because the connection might have been removed by an asynchronous network +error or another thread before \fBaccept\fP() is called. If this happens, +then the call will block waiting for the next connection to arrive. To +ensure that \fBaccept\fP() never blocks, the passed socket \fIsockfd\fP needs to +have the \fBO_NONBLOCK\fP flag set (see \fBsocket\fP(7)). +.PP +.\" +For certain protocols which require an explicit confirmation, such as +DECnet, \fBaccept\fP() can be thought of as merely dequeuing the next +connection request and not implying confirmation. Confirmation can be +implied by a normal read or write on the new file descriptor, and rejection +can be implied by closing the new socket. Currently, only DECnet has these +semantics on Linux. .SS "socklen_t 型" -\fBaccept\fP() の第 3 引き数は、もともと \fIint *\fP と宣言されていた (libc4 や libc5, 4.x BSD, SunOS -4, SGI など多くのシステムではそうなっている)。 POSIX.1g draft 標準は、 これを \fIsize_t *\fP -に変更しようとし、SunOS 5 ではそう宣言されている。 後に POSIX drafts には \fIsocklen_t *\fP が含まれるようになり、 -Single UNIX Specification や glibc2 ではこのように宣言されるようになった。 Linus Torvald -の発言を引用する: - -.\" .I fails: only italicizes a single line -「まともなライブラリを作りたければ、 "socklen_t" のサイズは int と同じにしなきゃならない。 さもないと BSD -ソケット層を破壊することになっちゃう。 POSIX は最初こいつを size_t にしたんで、 ぼくは彼らに文句をがなりたてた -(多分そういう人は他にもいたと思う。多くはなかったようだけど)。 こいつを size_t にするのは完全にいかれてる。 例えば 64 -ビットアーキテクチャーでは、 size_t が "int" と同じサイズだなんてことはほとんどないからね。 このサイズは "int" と -同じでなきゃ『ダメ』なんだ。 BSD ソケットインターフェースっていうのはそういうものなんだから。 まあともかく POSIX の人たちも、 -"socklen_t" を作るという解決策をなんとかひねり出した。 そもそも最初から放っておけば良かったんだが、 いじっちゃった以上、 -名前付きの型を持たせなきゃならない、と思ったみたいだね。 なんでかはわかんないけど (きっと最初にやっちまった馬鹿な間違いで顔をつぶしたくなかったから、 -こっそり名前を付け替えて自分たちの大失敗をごまかそうとしたんだろう)。」 -.SH 例 +.\" such as Linux libc4 and libc5, SunOS 4, SGI +.\" SunOS 5 has 'size_t *' +In the original BSD sockets implementation (and on other older systems) the +third argument of \fBaccept\fP() was declared as an \fIint\ *\fP. A POSIX.1g +draft standard wanted to change it into a \fIsize_t\ *\fPC; later POSIX +standards and glibc 2.x have \fIsocklen_t\ * \fP. +.SH EXAMPLES \fBbind\fP(2) 参照。 .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/access.2 b/manual/LDP_man-pages/draft/man2/access.2 index dd1c17fb..de890378 100644 --- a/manual/LDP_man-pages/draft/man2/access.2 +++ b/manual/LDP_man-pages/draft/man2/access.2 @@ -58,66 +58,80 @@ .\" Updated 2012-04-30, Akihiro MOTOKI .\" Updated 2013-05-01, Akihiro MOTOKI .\" -.TH ACCESS 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH ACCESS 2 2020\-12\-21 Linux "Linux Programmer's Manual" .SH 名前 -access, faccessat \- ユーザーのファイルへのアクセス権をチェックする +access, faccessat, faccessat2 \- check user's permissions for a file .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint access(const char *\fP\fIpathname\fP\fB, int \fP\fImode\fP\fB);\fP \fB#include \fP/* AT_* 定数の定義 */ \fB#include \fP -.sp +.PP \fBint faccessat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, int \fP\fImode\fP\fB, int \fP\fIflags\fP\fB);\fP + /* But see C library/kernel differences, below */ + +\fBint faccessat2(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, int \fP\fImode\fP\fB, int \fP\fIflags\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBfaccessat\fP(): .PD 0 .ad l .RS 4 .TP 4 glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L +_POSIX_C_SOURCE\ >=\ 200809L .TP glibc 2.10 より前: _ATFILE_SOURCE .RE .ad .PD -.fi .SH 説明 \fBaccess\fP() は、呼び出し元プロセスがファイル \fIpathname\fP にアクセスできるかどうかをチェックする。 \fIpathname\fP がシンボリックリンクの場合、シンボリックリンクは展開される。 - +.PP .\" F_OK is defined as 0 on every system that I know of. \fImode\fP はチェックを行うアクセス権を指定するもので、その値は \fBF_OK\fP、 もしくは \fBR_OK\fP, \fBW_OK\fP, \fBX_OK\fP の 1個以上のビット単位の論理和から構成されるマスクである。 \fBF_OK\fP はファイルが存在するかどうかのみを検査する。 \fBR_OK\fP, \fBW_OK\fP, \fBX_OK\fP は、ファイルが存在して、それぞれ読み込み、書き込み、実行の許可があるか を検査する。 - -チェックは、実際に操作が行われる際に使用される実効 (effective) ID でなく、 呼び出し元プロセスの \fI実 (real)\fP UID と -\fI実 (real)\fP GID を使って行われる。 これにより、set\-user\-ID プログラムで、プログラムを起動するユーザーの権限を -簡単に決定することができる。 - +.PP +The check is done using the calling process's \fIreal\fP UID and GID, rather +than the effective IDs as is done when actually attempting an operation +(e.g., \fBopen\fP(2)) on the file. Similarly, for the root user, the check +uses the set of permitted capabilities rather than the set of effective +capabilities; and for non\-root users, the check uses an empty set of +capabilities. +.PP +This allows set\-user\-ID programs and capability\-endowed programs to easily +determine the invoking user's authority. In other words, \fBaccess\fP() does +not answer the "can I read/write/execute this file?" question. It answers a +slightly different question: "(assuming I'm a setuid binary) can \fIthe user +who invoked me\fP read/write/execute this file?", which gives set\-user\-ID +programs the possibility to prevent malicious users from causing them to +read files which users shouldn't be able to read. +.PP 呼び出し元プロセスが特権プロセス (つまり、プロセスの実 UID が 0) の場合、 通常のファイルに対する \fBX_OK\fP のチェックは、そのファイルの所有者、グループ、他人のいずれかの 実行許可が有効になっていれば成功する。 .SS faccessat() -\fBfaccessat\fP() システムコールは \fBaccess\fP() と全く同様に動作するが、以下で説明する点が異なる。 - +\fBfaccessat\fP() operates in exactly the same way as \fBaccess\fP(), except for +the differences described here. +.PP \fIpathname\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fIdirfd\fP が参照するディレクトリに対する相対パスと解釈される (\fBaccess\fP() に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。 - +.PP \fIpathname\fP で指定されたパス名が相対パスで、 \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBaccess\fP() と同様に) \fIpathname\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 - +.PP \fIpathname\fP で指定されたパス名が絶対パスの場合、 \fIdirfd\fP は無視される。 - +.PP \fIflags\fP は以下に示す値の 0 個以上の OR (論理和) をとって作成される。 .TP \fBAT_EACCESS\fP @@ -127,7 +141,16 @@ ID を使用する。 \fBAT_SYMLINK_NOFOLLOW\fP \fIpathname\fP がシンボリックリンクの場合、リンクの展開を行わない。代わりに、リンク自身の情報を返す。 .PP +.\" \fBfaccessat\fP() の必要性についての説明については \fBopenat\fP(2) を参照。 +.SS faccessat2() +The description of \fBfaccessat\fP() given above corresponds to POSIX.1 and to +the implementation provided by glibc. However, the glibc implementation was +an imperfect emulation (see BUGS) that papered over the fact that the raw +Linux \fBfaccessat\fP() system call does not have a \fIflags\fP argument. To +allow for a proper implementation, Linux 5.8 added the \fBfaccessat2\fP() +system call, which supports the \fIflags\fP argument and allows a correct +implementation of the \fBfaccessat\fP() wrapper function. .SH 返り値 成功した場合 (要求した全てについて許可が得られたか、 \fImode\fP が \fBF_OK\fP でファイルが存在した場合)、ゼロが返される。 エラーの場合 (\fImode\fP の少なくとも一つのビットで要求した許可がなかった場合、 \fImode\fP が \fBF_OK\fP @@ -184,21 +207,24 @@ I/O エラーが発生した。 .SH バージョン \fBfaccessat\fP() はバージョン 2.6.16 で Linux に追加された。 ライブラリによるサポートは glibc バージョン 2.4 で追加された。 +.PP +\fBfaccessat2\fP() was added to Linux in version 5.8. .SH 準拠 \fBaccess\fP(): SVr4, 4.3BSD, POSIX.1\-2001, POSIX.1\-2008. - +.PP \fBfaccessat\fP(): POSIX.1\-2008. -.SH 注意 .PP +\fBfaccessat2\fP(): Linux\-specific. +.SH 注意 \fB警告\fP: あるユーザーが、例えば \fBopen\fP(2) によるアクセスが可能かどうかを、 (実際に行う前に) これらのシステムコールを使ってチェックするのは、セキュリティホールの原因になる。なぜならチェックをしてから 実際にファイルのオープン操作をする間の短い間隔を悪用できるからである。 \fBこの理由があるので、このシステムコールを使うのは避けるべきである。\fP (ここで説明した例の場合には、より安全な方法としては、 そのプロセスの実効ユーザー ID を実ユーザー ID に一時的に切り替えてから \fBopen\fP(2) を呼び出す方法がある。) .PP -\fBaccess\fP() は常にシンボリックリンクの展開を行う。 -シンボリックリンクのアクセス許可を確認する必要がある場合は、 -\fBAT_SYMLINK_NOFOLLOW\fP フラグ付きで \fBfaccessat\fP(2) を使うこと。 +\fBaccess\fP() always dereferences symbolic links. If you need to check the +permissions on a symbolic link, use \fBfaccessat\fP() with the flag +\fBAT_SYMLINK_NOFOLLOW\fP. .PP \fImode\fP で指定されたアクセス種別のいずれか一つでも拒否されると、 たとえ \fImode\fP で指定された他のアクセス種別が許可されたとしても、 これらのシステムコールはエラーを返す。 @@ -208,9 +234,10 @@ POSIX.1\-2001 では、 呼び出し元プロセスが適切な特権を持っ たとえファイルの実行許可ビットが全くセットされていなくても \fBX_OK\fP のチェックとして成功を返す実装が認められている。 Linux はこのようにはなっていない。 .PP -\fIpathname\fP のプレフィックスを構成するディレクトリの全てに対して 検索アクセス (すなわち、実行アクセス) が許可された場合にのみ、 -ファイルはアクセス可能となる。 いずれかのディレクトリがアクセス不可の場合、 ファイル自身のアクセス許可に関わらず、 \fBaccess\fP() -は失敗する。 +A file is accessible only if the permissions on each of the directories in +the path prefix of \fIpathname\fP grant search (i.e., execute) access. If any +directory is inaccessible, then the \fBaccess\fP() call fails, regardless of +the permissions on the file itself. .PP アクセスビットのみがチェックされ、ファイルの種類や内容はチェックされない。 従って、ディレクトリが書き込み可能となった場合は、ディレクトリに ファイルを作成することが可能なことを意味するのであり、ディレクトリに ファイルとして書き込むことができるわけではない。 同様に DOS @@ -221,32 +248,41 @@ POSIX.1\-2001 では、 呼び出し元プロセスが適切な特権を持っ これらのシステムコールは、 UID マッピングを使用した NFSv2 ファイルシステムでは正常に機能しないかもしれない。なぜならば UID のマッピングはサーバーで 行なわれ、権利のチェックをするクライアントには見えないからである。 (NFS バージョン 3 以降ではサーバー側でチェックが実行される。) 同様の問題は FUSE マウントでも起こり得る。 -.SS "C ライブラリとカーネル ABI の違い" -生の \fBfaccessat\fP() システムコールは、最初の 3 つの引き数だけを取る。フラグ \fBAT_EACCESS\fP と -\fBAT_SYMLINK_NOFOLLOW\fP は実際には \fBfaccessat\fP() の glibc -のラッパー関数内で実装されている。これらのフラグのいずれかが指定された場合、ラッパー関数は \fBfstatat\fP(2) -を使ってアクセス許可の判定を行う。 +.SS "C library/kernel differences" +.\" +The raw \fBfaccessat\fP() system call takes only the first three arguments. +The \fBAT_EACCESS\fP and \fBAT_SYMLINK_NOFOLLOW\fP flags are actually implemented +within the glibc wrapper function for \fBfaccessat\fP(). If either of these +flags is specified, then the wrapper function employs \fBfstatat\fP(2) to +determine access permissions, but see BUGS. .SS "glibc での注意" \fBfaccessat\fP() が利用できない古いカーネルでは、(フラグ \fBAT_EACCESS\fP と \fBAT_SYMLINK_NOFOLLOW\fP が指定されていない場合) glibc ラッパー関数は \fBaccess\fP() を使用するモードにフォールバックする。 \fIpathname\fP が相対パスの場合、 glibc は \fIdirfd\fP 引き数に対応する \fI/proc/self/fd\fP のシンボリックリンクに基づいてパス名を構成する。 .SH バグ +Because the Linux kernel's \fBfaccessat\fP() system call does not support a +\fIflags\fP argument, the glibc \fBfaccessat\fP() wrapper function provided in +glibc 2.32 and earlier emulates the required functionality using a +combination of the \fBfaccessat\fP() system call and \fBfstatat\fP(2). However, +this emulation does not take ACLs into account. Starting with glibc 2.33, +the wrapper function avoids this bug by making use of the \fBfaccessat2\fP() +system call where it is provided by the underlying kernel. +.PP .\" This behavior appears to have been an implementation accident. バージョン 2.4 (とそれ以前) のカーネルには、スーパーユーザーでの \fBX_OK\fP のチェックの扱いに奇妙な点がある。 ディレクトリ以外のファイルで (ユーザー、グループ、他人の) 全てのカテゴリーについて 実行許可がない場合、 \fBaccess\fP() のチェックで \-1 が返るのは \fImode\fP に \fBX_OK\fP だけが指定されたときだけであり \fImode\fP に \fBR_OK\fP や \fBW_OK\fP が一緒に指定された場合には \fBaccess\fP() は 0 を返す。 (バージョン 2.6.3 以前の) 初期の 2.6 系のカーネルも 2.4 系のカーネルと同様の動作をする。 - -2.6.20 より前のカーネルでは、 これらのシステムコールはファイルが存在するファイルシステムを \fBmount\fP(2) する際に指定された -\fBMS_NOEXEC\fP フラグの効果を無視していた。 カーネル 2.6.20 以降では、 \fBMS_NOEXEC\fP -フラグは考慮されるようになっている。 +.PP +In kernels before 2.6.20, these calls ignored the effect of the \fBMS_NOEXEC\fP +flag if it was used to \fBmount\fP(2) the underlying filesystem. Since kernel +2.6.20, the \fBMS_NOEXEC\fP flag is honored. .SH 関連項目 \fBchmod\fP(2), \fBchown\fP(2), \fBopen\fP(2), \fBsetgid\fP(2), \fBsetuid\fP(2), \fBstat\fP(2), \fBeuidaccess\fP(3), \fBcredentials\fP(7), \fBpath_resolution\fP(7), \fBsymlink\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/acct.2 b/manual/LDP_man-pages/draft/man2/acct.2 index 2f278fcb..7828b813 100644 --- a/manual/LDP_man-pages/draft/man2/acct.2 +++ b/manual/LDP_man-pages/draft/man2/acct.2 @@ -43,23 +43,32 @@ .\" Updated and Modified 2004-12-28, Yuichi SATO .\" Updated 2008-08-04, Akihiro MOTOKI .\" -.TH ACCT 2 2008\-06\-16 Linux "Linux Programmer's Manual" +.TH ACCT 2 2016\-03\-15 Linux "Linux Programmer's Manual" .SH 名前 acct \- プロセスアカウントのオンとオフを切り換える .SH 書式 .ad l .nf \fB#include \fP -.sp +.PP \fBint acct(const char *\fP\fIfilename\fP\fB);\fP .fi .ad b -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBacct\fP(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500) +.RE +.PP +\fBacct\fP(): +.nf +.\" commit 266865c0e7b79d4196e2cc393693463f03c90bd8 + Since glibc 2.21: + _DEFAULT_SOURCE + In glibc 2.19 and 2.20: + _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500) + Up to and including glibc 2.19: + _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500) +.fi .SH 説明 \fBacct\fP() システムコールは、プロセスアカウントの有効・無効を切り替える。 既存のファイルの名前を引き数に指定して呼び出されたら、 アカウント (account) が有効になり、 終了したプロセスの記録が \fIfilename\fP に追記される。 NULL @@ -89,10 +98,10 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 \fIfilename\fP が長すぎる。 .TP \fBENFILE\fP -オープンされたファイルの総数がシステム制限に達した。 +The system\-wide limit on the total number of open files has been reached. .TP \fBENOENT\fP -指定されたファイルが存在しない。 +The specified file does not exist. .TP \fBENOMEM\fP メモリー不足。 @@ -105,8 +114,8 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 \fIfilename\fP の中でディレクトリして扱われている要素が、 実際はディレクトリでない。 .TP \fBEPERM\fP -呼び出したプロセスにはプロセスアカウントを有効にするのに十分な特権がない。 Linux では \fBCAP_SYS_PACCT\fP ケーパビリティ -(capability) が必要である。 +The calling process has insufficient privilege to enable process +accounting. On Linux, the \fBCAP_SYS_PACCT\fP capability is required. .TP \fBEROFS\fP 読み込みだけのファイルシステム上のファイルを \fIfilename\fP が参照している。 @@ -122,11 +131,10 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 SVr4, 4.3BSD (POSIX ではない)。 .SH 注意 システムがクラッシュした時に実行中だったプログラムのアカウントは生成されない。 特に、終了しないプログラムがアカウントされることはない。 - +.PP アカウント用ファイルに書き込まれるレコードの構造体については \fBacct\fP(5) に説明がある。 .SH 関連項目 \fBacct\fP(5) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/add_key.2 b/manual/LDP_man-pages/draft/man2/add_key.2 deleted file mode 100644 index 17a68904..00000000 --- a/manual/LDP_man-pages/draft/man2/add_key.2 +++ /dev/null @@ -1,98 +0,0 @@ -.\" Copyright (C) 2006 Red Hat, Inc. All Rights Reserved. -.\" Written by David Howells (dhowells@redhat.com) -.\" -.\" %%%LICENSE_START(GPLv2+_SW_ONEPARA) -.\" 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. -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.TH ADD_KEY 2 2010\-02\-25 Linux "Linux Key Management Calls" -.SH 名前 -add_key \- カーネルの鍵管理機能に鍵を追加する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBkey_serial_t add_key(const char *\fP\fItype\fP\fB, const char *\fP\fIdescription\fP\fB,\fP -\fB const void *\fP\fIpayload\fP\fB, size_t \fP\fIplen\fP\fB,\fP -\fB key_serial_t \fP\fIkeyring\fP\fB);\fP -.fi -.SH 説明 -\fBadd_key\fP() は、 指定した \fItype\fP と \fIdescription\fP を持つ鍵の作成、更新を行うようにカーネルに指示し、 長さ -\fIplen\fP の \fIpayload\fP で鍵を生成し、 指定された \fIkeyring\fP にその鍵を追加し、 鍵リングのシリアル番号を返す。 -.P -鍵タイプによっては、 フォーマットが違っていたり、その他にも無効なものがあると、 指定したデータが拒否される場合もある。 -.P -対象の \fIkeyring\fP に指定された \fItype\fP と \fIdescription\fP に合致する鍵がすでに含まれる場合、 -鍵タイプがサポートしていれば、 新しい鍵が作成されるのではなく、 その鍵が更新される。 鍵タイプがサポートしていない場合、 新しい鍵が作成され、 -鍵リングの現在の鍵のリンクはこの鍵で置き換えられる。 -.P -対象の \fIkeyring\fP のシリアル番号には、 呼び出し元が書き込み許可を持つ有効な鍵リングのシリアル番号か、 以下の特別な鍵リング ID -を指定する。 -.TP -\fBKEY_SPEC_THREAD_KEYRING\fP -この値は呼び出し元スレッド固有の鍵リングを指定する。 -.TP -\fBKEY_SPEC_PROCESS_KEYRING\fP -この値は呼び出し元プロセス固有の鍵リングを指定する。 -.TP -\fBKEY_SPEC_SESSION_KEYRING\fP -この値は呼び出し元セッション固有の鍵リングを指定する。 -.TP -\fBKEY_SPEC_USER_KEYRING\fP -この値は呼び出し元の UID 固有の鍵リングを指定する。 -.TP -\fBKEY_SPEC_USER_SESSION_KEYRING\fP -この値は呼び出し元の UID のセッションの鍵リングを指定する。 -.SH 鍵タイプ -コアの鍵管理コードには様々な鍵タイプがあり、 この関数でこれらを指定することができる。 -.TP -\fB\*(lquser\*(rq\fP -ユーザー定義の鍵タイプの鍵には、 任意のデータの blob を入れることができ、 \fIdescription\fP には任意の有効な文字列を指定できるが、 -鍵が対象とするサービスを表す文字列とコロンをプレフィックスに指定するのが推奨される方法である (例えば \*(lq\fBafs:mykey\fP\*(rq)。 -このタイプの鍵には \fIpayload\fP に空文字列つまり NULL を指定する。 -.TP -\fB\*(lqkeyring\*(rq\fP -鍵リングは、 任意のタイプの他の鍵の列へのリンクを保持できる特別な鍵タイプである。 このインターフェースを使って鍵リングを作成する場合、 -\fIpayload\fP には NULL を、 \fIplen\fP には 0 を指定しなければならない。 -.SH 返り値 -成功すると \fBadd_key\fP() は、作成または更新した鍵のシリアル番号を返す。 エラーの場合、値 \-1 が返され \fIerrno\fP -にエラーを示す値が設定される。 -.SH エラー -.TP -\fBENOKEY\fP -鍵リングが存在しない。 -.TP -\fBEKEYEXPIRED\fP -鍵リングが期限切れである。 -.TP -\fBEKEYREVOKED\fP -鍵リングが廃止されている。 -.TP -\fBEINVAL\fP -ペイロードデータが無効である。 -.TP -\fBENOMEM\fP -鍵を作成するのに十分なメモリーがない。 -.TP -\fBEDQUOT\fP -この鍵を作成するか、鍵を鍵リングに追加すると、 このユーザーの鍵リングのクォータを超過してしまう。 -.TP -\fBEACCES\fP -そのユーザーは指定された鍵リングを変更できない。 -.SH LINKING -これは Linux のシステムコールだが、 \fIlibc\fP には存在せず、 代わりに \fIlibkeyutils\fP に存在する。 リンクする際には、 -リンカーに \fB\-lkeyutils\fP を指定する必要がある。 -.SH 関連項目 -\fBkeyctl\fP(1), \fBkeyctl\fP(2), \fBrequest_key\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/adjtimex.2 b/manual/LDP_man-pages/draft/man2/adjtimex.2 deleted file mode 100644 index 04730562..00000000 --- a/manual/LDP_man-pages/draft/man2/adjtimex.2 +++ /dev/null @@ -1,282 +0,0 @@ -.\" Copyright (c) 1995 Michael Chastain (mec@shell.portal.com), 15 April 1995. -.\" and Copyright (C) 2014 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified 1997-01-31 by Eric S. Raymond -.\" Modified 1997-07-30 by Paul Slootman -.\" Modified 2004-05-27 by Michael Kerrisk -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-12-17, HANATAKA Shinya -.\" Updated and Modified 2001-06-12,Yuichi SATO -.\" Updated and Modified 2004-12-28, Yuichi SATO -.\" Updated 2006-07-16, Akihiro MOTOKI , LDP v2.34 -.\" -.TH ADJTIMEX 2 2014\-12\-31 Linux "Linux Programmer's Manual" -.SH 名前 -adjtimex \- カーネルの時計を調整する -.SH 書式 -.nf -\fB#define _BSD_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP - -\fBint adjtimex(struct timex *\fP\fIbuf\fP\fB);\fP -.fi -.SH 説明 -Linux は David L. Mill の時計調節アルゴリズムを使用している (RFC\ 5905 を参照)。 システムコール -\fBadjtimex\fP() はこのアルゴリズムの調節のパラメーターを読み取ったり、設定したりする。 この関数は \fItimex\fP -構造体へのポインターを受け取り、その値でカーネルのパラメーターを更新して、 同じ構造体に現在のカーネルの値を返す。 この構造体は以下のように宣言される: -.PP -.in +4n -.nf -struct timex { - int modes; /* モードの選択 */ - long offset; /* 時刻オフセット; STA_NANO ステータスフラグが - 設定されるとナノ秒で、それ以外はマイクロ秒 */ - long freq; /* 周波数オフセット。 単位は 2^\-16 ppm - (parts per million)。 「注意」を参照 */ - long maxerror; /* 最大エラー (マイクロ秒) */ - long esterror; /* 推定エラー (マイクロ秒) */ - int status; /* クロックコマンド/ステータス */ - long constant; /* PLL (phase\-locked loop) 時刻定数 */ - long precision; /* クロック精度 (マイクロ秒、読み出し専用) */ - long tolerance; /* クロック周波数耐性 (ppm、読み出し専用) */ - struct timeval time; - /* 現在時刻 (読み出し専用、 ADJ_SETOFFSET の - 場合以外); リターン時は time.tv_usec は - STA_NANO ステータスフラグが設定されると - ナノ秒で、それ以外はマイクロ秒 */ - long tick; /* クロック tick 間のマイクロ秒 */ - long ppsfreq; /* PPS (pulse per second) 周波数 (単位は - 2^\-16 ppm、「注意」を参照、読み出し専用) */ - long jitter; /* PPS ジッター (読み出し専用); STA_NANO - ステータスフラグが設定されるとナノ秒、 - それ以外はマイクロ秒 */ - int shift; /* PPS interval duration (秒、読み出し専用) */ - long stabil; /* PPS 安定性 (2^\-16 ppm、「注意」を参照、 - 読み出し専用) */ - long jitcnt; /* PPS ジッター上限超過 (読み出し専用) */ - long calcnt; /* PPS 校正間隔 (読み出し専用) */ - long errcnt; /* PPS 校正エラー (読み出し専用) */ - long stbcnt; /* PPS 安定性上限超過 (読み出し専用) */ - int tai; /* TAI オフセット、直前の ADJ_TAI 命令で設定 - したもの (秒、読み出し専用、 - Linux 2.6.26 以降) */ - /* これ以降のパディングバイトは将来の拡張用である */ -}; -.fi -.in -.PP -\fImodes\fP フィールドは (必要に応じて) どのパラメーターを設定するか決定する。 以下のビット値の 0 個以上の ビット \fIOR\fP -からなるビットマスクである。 -.TP -\fBADJ_OFFSET\fP -\fIbuf.offset\fP を時刻オフセットを設定する。 -.TP -\fBADJ_FREQUENCY\fP -\fIbuf.freq\fP を周波数オフセットを設定する。 -.TP -\fBADJ_MAXERROR\fP -\fIbuf.maxerror\fP を最大時刻エラーを設定する。 -.TP -\fBADJ_ESTERROR\fP -\fIbuf.esterror\fP を推定時刻エラー (estimated time error) を設定する。 -.TP -\fBADJ_STATUS\fP -\fIbuf.status\fP をクロックステータスを設定する。 -.TP -\fBADJ_TIMECONST\fP -\fIbuf.constant\fP を PLL の時刻定数を設定する。 (下記の) \fBSTA_NANO\fP ステータスフラグがクリアされた場合、 -カーネルはこの値に 4 を足す。 -.TP -\fBADJ_SETOFFSET\fP (Linux 2.6.29 以降) -.\" commit 094aa1881fdc1b8889b442eb3511b31f3ec2b762 -.\" Author: Richard Cochran -\fIbuf.time\fP を現在時刻に加算する。 \fIbuf.status\fP に \fBADJ_NANO\fP フラグが指定された場合、 -\fIbuf.time.tv_usec\fP はナノ秒として解釈される。 そうでない場合はマイクロ秒として解釈される。 -.TP -\fBADJ_MICRO\fP (Linux 2.6.36 以降) -.\" commit eea83d896e318bda54be2d2770d2c5d6668d11db -.\" Author: Roman Zippel -マイクロ秒単位の精度を選択する。 -.TP -\fBADJ_NANO\fP (Linux 2.6.36 以降) -.\" commit eea83d896e318bda54be2d2770d2c5d6668d11db -.\" Author: Roman Zippel -ナノ秒単位の精度を選択する。 \fBADJ_MICRO\fP と \fBADJ_NANO\fP の一方のみを指定すること。 -.TP -\fBADJ_TAI\fP (Linux 2.6.26 以降) -.\" commit 153b5d054ac2d98ea0d86504884326b6777f683d -\fIbuf\->constant\fP を TAI (Atomic International Time) オフセットを設定する。 - -\fBADJ_TAI\fP は \fBADJ_TIMECONST\fP と組み合わせて使わないこと。 \fBADJ_TIMECONST\fP も -\fIbuf\->constant\fP フィールド利用するからである。 - -TAI の詳細な説明および TAI と UTC の違いについては -.UR http://www.bipm.org/en/bipm/tai/tai.html -\fIBIPM\fP -.UE -を参照。 -.TP -\fBADJ_TICK\fP -\fIbuf.tick\fP を tick 値に設定する。 -.PP -.\" In general, the other bits are ignored, but ADJ_OFFSET_SINGLESHOT 0x8001 -.\" ORed with ADJ_NANO (0x2000) gives 0xa0001 == ADJ_OFFSET_SS_READ!! -上記の代わりに、 \fImodes\fP に以下の値 (複数ビットのマスク) のいずれかを指定することもできる。 この場合は他のビットは \fImodes\fP -に指定すべきではない。 -.TP -\fBADJ_OFFSET_SINGLESHOT\fP -.\" In user space, ADJ_OFFSET_SINGLESHOT is 0x8001 -.\" In kernel space it is 0x0001, and must be ANDed with ADJ_ADJTIME (0x8000) -古い形式の \fBadjtime\fP(): 時刻を \fIbuf.offset\fP で指定された値で (徐々に) 調整する。 \fIbuf.offset\fP -はマイクロ秒単位の調整値である。 -.TP -\fBADJ_OFFSET_SS_READ\fP (Linux 2.6.28 以降で機能する) -.\" In user space, ADJ_OFFSET_SS_READ is 0xa001 -.\" In kernel space there is ADJ_OFFSET_READONLY (0x2000) anded with -.\" ADJ_ADJTIME (0x8000) and ADJ_OFFSET_SINGLESHOT (0x0001) to give 0xa001) -.\" commit 52bfb36050c8529d9031d2c2513b281a360922ec -.\" commit 916c7a855174e3b53d182b97a26b2e27a29726a1 -\fBADJ_OFFSET_SINGLESHOT\fP 操作を行った後でまだ残っている調整すべき時刻量を (\fIbuf.offset\fP で) 返す。 -この機能は Linux 2.6.24 で追加されたが、 Linux 2.6.28 までは正常に動作しなかった。 -.PP -通常のユーザーは \fImodes\fP の値は 0 か \fBADJ_OFFSET_SS_READ\fP のいずれかに制限されている。 -スーパーユーザーのみが全てのパラメーターを設定できる。 - -\fIbuf.status\fP フィールドはビットマスクで、 このフィールドを使って NTP 実装に関連するステータスビットの設定や取得を行うことができる。 -マスクのビットのいくつかは読み書き両用で、 他のビットは読み出し専用である。 -.TP -\fBSTA_PLL\fP -Phase Locked Loop (PLL) の更新を有効にする (読み書き両用)。 \fBADJ_OFFSET\fP 経由で設定できる。 -.TP -\fBSTA_PPSFREQ\fP -PPS freq discipline を有効にする (読み書き両用) -.TP -\fBSTA_PPSTIME\fP -PPS time discipline を有効にする (読み書き両用) -.TP -\fBSTA_FLL\fP -Frequency Locked Loop (FLL) モードを選択する (読み書き両用) -.TP -\fBSTA_INS\fP -閏秒を挿入する (読み書き両用) -.TP -\fBSTA_DEL\fP -閏秒を削除する (読み書き両用) -.TP -\fBSTA_UNSYNC\fP -クロックを非同期状態にする (読み書き両用) -.TP -\fBSTA_FREQHOLD\fP -周波数を保持する (読み書き両用) -.TP -\fBSTA_PPSSIGNAL\fP -PPS 信号が存在する (読み出し専用) -.TP -\fBSTA_PPSJITTER\fP -PPS 信号のジッターが超過している (読み出し専用) -.TP -\fBSTA_PPSWANDER\fP -PPS 信号の wander が超過している (読み出し専用) -.TP -\fBSTA_PPSERROR\fP -PPS 信号の校正エラー (読み出し専用) -.TP -\fBSTA_CLOCKERR\fP -クロックハードウェア障害 (読み出し専用) -.TP -\fBSTA_NANO\fP (Linux 2.6.26 以降) -.\" commit eea83d896e318bda54be2d2770d2c5d6668d11db -.\" Author: Roman Zippel -精度 (0 = マイクロ秒、 1 = ナノ秒; 読み出し専用)。 \fBADJ_NANO\fP でセットし、 \fBADJ_MICRO\fP でクリアする。 -.TP -\fBSTA_MODE\fP (Linux 2.6.26 以降) -.\" commit eea83d896e318bda54be2d2770d2c5d6668d11db -.\" Author: Roman Zippel -モード (0 = Phase Locked Loop, 1 = Frequency Locked Loop; 読み出し専用) -.TP -\fBSTA_CLK\fP (Linux 2.6.26 以降) -.\" commit eea83d896e318bda54be2d2770d2c5d6668d11db -.\" Author: Roman Zippel -.\" FIXME It would be helpful to have some explanation of what -.\" "Clock source" is. -クロック源 (0 = A, 1 = B; 読み出し専用) -.PP -\fIstatus\fP の読み出し専用ビットを設定しようとした場合は黙って無視される。 -.SH 返り値 -成功した場合、 \fBadjtimex\fP() は クロックの状態、つまり、以下のいずれかの値を返す。 -.TP 12 -\fBTIME_OK\fP -クロックが同期している。 -.TP -\fBTIME_INS\fP -閏秒を挿入した。 -.TP -\fBTIME_DEL\fP -閏秒を削除した。 -.TP -\fBTIME_OOP\fP -閏秒が処理中である。 -.TP -\fBTIME_WAIT\fP -閏秒が発生した。 -.TP -\fBTIME_ERROR\fP -クロックが同期していない。 シンボル名 \fBTIME_BAD\fP は \fBTIME_ERROR\fP の同義語であり、 過去互換性のために提供されている。 -.PP -失敗した場合は \fBadjtimex\fP() は \-1 を返し、 \fIerrno\fP が設定される。 -.SH エラー -.TP -\fBEFAULT\fP -\fIbuf\fP が書き込み可能なメモリーを指していない。 -.TP -\fBEINVAL\fP -\fIbuf.offset\fP へ \-131071 〜 +131071 の範囲以外の値を設定しようとしたか、 \fIbuf.status\fP -に上記以外の値を設定しようとしたか、 \fIbuf.tick\fP に 900000/\fBHZ\fP 〜 1100000/\fBHZ\fP -の範囲以外の値を設定しようとした。 ここで \fBHZ\fP はシステムのタイマー割り込みの周期である。 -.TP -\fBEPERM\fP -\fIbuf.modes\fP が 0 でも \fBADJ_OFFSET_SS_READ\fP でもなく、かつ呼び出し元が十分な特権を持っていない。 Linux -では \fBCAP_SYS_TIME\fP ケーパビリティが必要である。 -.SH 注意 -構造体 \fItimex\fP では、 \fIfreq\fP, \fIppsfreq\fP, \fIstabil\fP は小数部が 16 ビットの ppm (parts per -million) である。 つまり、 これらのフィールドの値 1 は 2^\-16 ppm で、 2^16=65536 が 1 ppm である。 入力 -(\fIfreq\fP の場合) でも出力でもこの通りである。 -.SH 準拠 -\fBadjtimex\fP() は Linux 特有であり、 移植を意図したプログラムで使用すべきではない。 システムクロックを調整する方法で、 -移植性があるが自由度は劣る方法については \fBadjtime\fP(3) を参照のこと。 -.SH 関連項目 -\fBsettimeofday\fP(2), \fBadjtime\fP(3), \fBcapabilities\fP(7), \fBtime\fP(7), -\fBadjtimex\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/alarm.2 b/manual/LDP_man-pages/draft/man2/alarm.2 index 2ab6cb22..8c027f2a 100644 --- a/manual/LDP_man-pages/draft/man2/alarm.2 +++ b/manual/LDP_man-pages/draft/man2/alarm.2 @@ -39,39 +39,39 @@ .\" by HANATAKA Shinya .\" Updated 2013-07-22, Akihiro MOTOKI .\" -.TH ALARM 2 2014\-02\-23 Linux "Linux Programmer's Manual" +.TH ALARM 2 2017\-05\-03 Linux "Linux Programmer's Manual" .SH 名前 alarm \- シグナル配送のためのアラームクロックを設定する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBunsigned int alarm(unsigned int \fP\fIseconds\fP\fB);\fP .fi .SH 説明 \fBalarm\fP() は \fBSIGALRM\fP シグナルを \fIseconds\fP 秒後に呼び出したプロセスに配送するように手配する。 - +.PP \fIseconds\fP がゼロならば、処理待ち (pending) のアラームはすべてキャンセルされる。 - +.PP 今までに設定されていた \fBalarm\fP() は中断される。 .SH 返り値 \fBalarm\fP() は以前に予定されていたアラームの配送までの残り時間を返す。以前に アラームが予定されていなければゼロを返す。 .SH 準拠 -SVr4, POSIX.1\-2001, 4.3BSD. +POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.3BSD. .SH 注意 \fBalarm\fP() と \fBsetitimer\fP(2) は同じタイマーを共有している; 片方を呼び出すことはもう一方の 使用に影響を与える。 - +.PP \fBalarm\fP() で作成されたアラームは \fBexecve\fP(2) の前後で保持され、 \fBfork\fP(2) で作成された子プロセスには継承されない。 .PP \fBsleep\fP(3) は \fBSIGALRM\fP を利用して実装されているかもしれない。 \fBalarm\fP() と \fBsleep\fP(3) を混ぜて使用してはならない。 - +.PP スケジューリング(scheduling)の遅延により、プロセスの実行に不定量の 遅延が起きる可能性がある。 .SH 関連項目 \fBgettimeofday\fP(2), \fBpause\fP(2), \fBselect\fP(2), \fBsetitimer\fP(2), -\fBsigaction\fP(2), \fBsignal\fP(2), \fBsleep\fP(3), \fBtime\fP(7) +\fBsigaction\fP(2), \fBsignal\fP(2), \fBtimer_create\fP(2), \fBtimerfd_create\fP(2), +\fBsleep\fP(3), \fBtime\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/alloc_hugepages.2 b/manual/LDP_man-pages/draft/man2/alloc_hugepages.2 index cb4a0be6..5a1a632f 100644 --- a/manual/LDP_man-pages/draft/man2/alloc_hugepages.2 +++ b/manual/LDP_man-pages/draft/man2/alloc_hugepages.2 @@ -33,7 +33,7 @@ .\" Translated 2004-06-06, Yuichi SATO .\" Updated 2007-06-11, Akihiro MOTOKI , LDP v2.54 .\" -.TH ALLOC_HUGEPAGES 2 2007\-05\-31 Linux "Linux Programmer's Manual" +.TH ALLOC_HUGEPAGES 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 alloc_hugepages, free_hugepages \- 大きなサイズのページの割り当てと解放を行う .SH 書式 @@ -42,7 +42,7 @@ alloc_hugepages, free_hugepages \- 大きなサイズのページの割り当て .\" unsigned long len, int prot, int flag); \fBvoid *alloc_hugepages(int \fP\fIkey\fP\fB, void *\fP\fIaddr\fP\fB, size_t \fP\fIlen\fP\fB,\fP \fB int \fP\fIprot\fP\fB, int \fP\fIflag\fP\fB);\fP -.sp +.PP .\" asmlinkage int sys_free_hugepages(unsigned long addr); \fBint free_hugepages(void *\fP\fIaddr\fP\fB);\fP .fi @@ -51,25 +51,26 @@ alloc_hugepages, free_hugepages \- 大きなサイズのページの割り当て で導入され、2.5.54 で再び削除された。 これらのシステムコールは i386 と ia64 のみで (かつ \fBCONFIG_HUGETLB_PAGE\fP を指定してビルドされた場合に) 存在する。 Linux 2.4.20 では syscall 番号が存在するが、 呼び出すとエラー \fBENOSYS\fP で失敗する。 -.LP -i386 では、メモリー管理ハードウェアは通常のページ (4 KiB) と 大きなサイズのページ (以下、ヒュージページ; 2MiB または 4 -MiB) を 扱うことができる。 同様に、ia64 もいくつかのサイズのヒュージページを扱うことができる。 -これらのシステムコールは、ヒュージページをプロセスのメモリーにマップしたり、 再び解放したりする。 -ヒュージページはメモリー内にロックされ、スワップされない。 -.LP +.PP +On i386 the memory management hardware knows about ordinary pages (4\ KiB) +and huge pages (2 or 4\ MiB). Similarly ia64 knows about huge pages of +several sizes. These system calls serve to map huge pages into the +process's memory or to free them again. Huge pages are locked into memory, +and are not swapped. +.PP \fIkey\fP 引き数は識別子である。 0 の場合、ページは非公開になり、子プロセスに継承されない。 正の場合、ページは同じ \fIkey\fP を使う他のアプリケーションと共有され、子プロセスに継承される。 -.LP +.PP \fBfree_hugepages\fP() の \fIaddr\fP 引き数は、どのページを解放するかを指定する: \fIaddr\fP は \fBalloc_hugepages\fP() の呼び出しの返り値である (全てのユーザーがメモリーを解放したときに、 そのメモリーは初めて実際に解放される)。 \fBalloc_hugepages\fP() の \fIaddr\fP 引き数はヒントであり、カーネルはそれに従うかもしれないし、 従わないかもしれない。 アドレスは正しく配置されなければならない。 -.LP +.PP \fIlen\fP 引き数は要求されたセグメントの長さである。 これはヒュージページのサイズの倍数にしなければならない。 -.LP +.PP \fIprot\fP 引き数はセグメントのメモリー保護を指定する。 これは \fBPROT_READ\fP, \fBPROT_WRITE\fP, \fBPROT_EXEC\fP のいずれかである。 -.LP +.PP \fIkey\fP が正でない限り、 \fIflag\fP 引き数は無視される。 \fIkey\fP が正で、かつ \fIflag\fP が \fBIPC_CREAT\fP であり、かつ指定された \fIkey\fP で (セグメントが) 何も存在しない場合、 新しいヒュージページセグメントが作成される。 \fIflag\fP が設定されておらず、かつ指定された \fIkey\fP のセグメントが存在しない場合、 \fBENOENT\fP が返される。 @@ -81,24 +82,26 @@ MiB) を 扱うことができる。 同様に、ia64 もいくつかのサイ \fBENOSYS\fP このシステムコールはカーネルでサポートされていない。 .SH ファイル -\fI/proc/sys/vm/nr_hugepages\fP 設定された hugetlb ページの数。 このファイルは読み書きできる。 -.LP -\fI/proc/meminfo\fP 設定された hugetlb ページの数と、 3 つの変数 HugePages_Total, -HugePages_Free, Hugepagesize の サイズについての情報を提供する。 +.TP +\fI/proc/sys/vm/nr_hugepages\fP +Number of configured hugetlb pages. This can be read and written. +.TP +\fI/proc/meminfo\fP +Gives info on the number of configured hugetlb pages and on their size in +the three variables HugePages_Total, HugePages_Free, Hugepagesize. .SH 準拠 このシステムコールは Intel プロセッサ上の Linux に固有のものであり、 移植性が必要なプログラムで使うべきでない。 .SH 注意 これらのシステムコールはなくなった。 これらは Linux 2.5.36 から 2.5.54 にのみ存在する。 代わりに今は hugetlbfs ファイルシステムを使うことができる。 (CPU がサポートしている場合) ヒュージページを持つメモリーは、 \fBmmap\fP(2) を使ってこの仮想ファイルシステムでファイルをマップすることで取得できる。 -.LP -ヒュージページの最大数は、 \fBhugepages=\fP 起動パラメーターを使って指定できる。 - +.PP +.\".PP .\" requires CONFIG_HUGETLB_PAGE (under "Processor type and features") .\" and CONFIG_HUGETLBFS (under "Filesystems"). -.\" mount -t hugetlbfs hugetlbfs /huge +.\" mount \-t hugetlbfs hugetlbfs /huge .\" SHM_HUGETLB +ヒュージページの最大数は、 \fBhugepages=\fP 起動パラメーターを使って指定できる。 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/arch_prctl.2 b/manual/LDP_man-pages/draft/man2/arch_prctl.2 deleted file mode 100644 index 80c5dd0e..00000000 --- a/manual/LDP_man-pages/draft/man2/arch_prctl.2 +++ /dev/null @@ -1,106 +0,0 @@ -.\" Copyright (C) 2003 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated 2004-06-08, Yuichi SATO -.\" Updated 2005-11-19, Akihiro MOTOKI -.\" Updated 2008-02-10, Akihiro MOTOKI , LDP v2.77 -.\" -.TH ARCH_PRCTL 2 2007\-12\-26 Linux "Linux Programmer's Manual" -.SH 名前 -arch_prctl \- アーキテクチャー固有のスレッド状態を設定する -.SH 書式 -.nf -\fB#include \fP -.br -\fB#include \fP -.sp -\fBint arch_prctl(int \fP\fIcode\fP\fB, unsigned long *\fP\fIaddr\fP\fB);\fP -.fi -.SH 説明 -\fBarch_prctl\fP() 関数はアーキテクチャー固有のプロセス状態またはスレッド状態を設定する。 \fIcode\fP は副機能を選択し、引き数 -\fIaddr\fP を副機能に渡す。 \fIaddr\fP は、"set" 操作では \fIunsigned long\fP として、"get" 操作では -\fIunsigned long\ *\fP として解釈される。 -.LP -x86\-64 の副機能は以下の通り: -.TP -\fBARCH_SET_FS\fP -\fIFS\fP レジスターの 64 ビットベースを \fIaddr\fP に設定する。 -.TP -\fBARCH_GET_FS\fP -現在のスレッドの \fIFS\fP レジスターの 64 ビットベース値を、 \fIaddr\fP が指す \fIunsigned long\fP の領域に格納する。 -.TP -\fBARCH_SET_GS\fP -\fIGS\fP レジスターの 64 ビットベースを \fIaddr\fP に設定する。 -.TP -\fBARCH_GET_GS\fP -現在のスレッドの \fIGS\fP レジスターの 64 ビットベース値を、 \fIaddr\fP が指す \fIunsigned long\fP の領域に格納する。 -.SH 返り値 -成功すると、 \fBarch_prctl\fP() は 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP をエラーを示す値に設定する。 -.SH エラー -.TP -\fBEFAULT\fP -\fIaddr\fP がアンマップされたアドレスを指しているか、プロセスのアドレス空間の外にある。 -.TP -\fBEINVAL\fP -\fIcode\fP が有効なサブコマンドでない。 -.TP -\fBEPERM\fP -.\" .SH AUTHOR -.\" Man page written by Andi Kleen. -\fIaddr\fP がプロセスのアドレス空間の外にある。 -.SH 準拠 -\fBarch_prctl\fP() は Linux/x86\-64 拡張であり、移植性を意図したプログラムでは使うべきでない。 -.SH 注意 -\fBarch_prctl\fP() は現在のところ Linux/x86\-64 上の 64 ビットプログラムでのみサポートされている。 - -新しい 32 ビットセグメントセレクタがロードされた場合、 64 ビットベースは変更される。 - -\fBARCH_SET_GS\fP が無効にされているカーネルもある。 - -64 ビットセグメントベースのコンテキストスイッチは、やや高価である。 LDT を \fBmodify_ldt\fP(2) -で設定してセグメントセレクタを使うか、 (カーネル 2.5 以降の) \fBset_thread_area\fP(2) システムコールを使うことにより、 -32 ビットベースを設定するという高速な代替手段もある。 4GB より大きなベースを設定したい場合にのみ、 \fBarch_prctl\fP() -が必要である。 アドレス空間の最初の 2GB にあるメモリーは、 \fBmmap\fP(2) に \fBMAP_32BIT\fP -フラグを指定して割り当てることができる。 - -バージョン 2.7 時点では、glibc には \fBarch_prctl\fP() のプロトタイプがない。 -今のところユーザーは自分自身で宣言する必要がある。 これは将来の glibc のバージョンで修正されるかもしれない。 - -\fIFS\fP はスレッドライブラリで既に使われているかもしれない。 -.SH 関連項目 -\fBmmap\fP(2), \fBmodify_ldt\fP(2), \fBprctl\fP(2), \fBset_thread_area\fP(2) - -AMD X86\-64 Programmer's manual -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/bdflush.2 b/manual/LDP_man-pages/draft/man2/bdflush.2 index a46376eb..a31181ea 100644 --- a/manual/LDP_man-pages/draft/man2/bdflush.2 +++ b/manual/LDP_man-pages/draft/man2/bdflush.2 @@ -37,13 +37,13 @@ .\" Updated & Modified Thu Feb 3 03:15:15 JST 2005 .\" by Yuichi SATO .\" -.TH BDFLUSH 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH BDFLUSH 2 2016\-10\-08 Linux "Linux Programmer's Manual" .SH 名前 bdflush \- バッファーダーティーフラッシュデーモンを起動、フラッシュ、調整する .SH 書式 .nf \fB#include \fP - +.PP \fBint bdflush(int \fP\fIfunc\fP\fB, long *\fP\fIaddress\fP\fB);\fP \fBint bdflush(int \fP\fIfunc\fP\fB, long \fP\fIdata\fP\fB);\fP .fi @@ -52,7 +52,7 @@ bdflush \- バッファーダーティーフラッシュデーモンを起動、 \fI注意\fP: Linux 2.6 以降では、このシステムコールは非推奨であり、何も行わない。 将来のカーネルのリリースで完全になくなる可能性が高い。現在は、\fBbdflush\fP() が 実行していた処理はカーネルの \fIpdflush\fP スレッドによって行われている。 - +.PP \fBbdflush\fP() はバッファーダーティーフラッシュ (buffer\-dirty\-flush) デーモン (daemon) を起動、フラッシュ (flush)、調整 (tune) する。 (\fBCAP_SYS_ADMIN\fP ケーパビリティ (capability) を持つ) 特権プロセスのみが \fBbdflush\fP() を呼び出すことができる。 @@ -84,11 +84,12 @@ bdflush \- バッファーダーティーフラッシュデーモンを起動、 .TP \fBEPERM\fP 呼び出し元に \fBCAP_SYS_ADMIN\fP ケーパビリティがない。 +.SH バージョン +Since version 2.23, glibc no longer supports this obsolete system call. .SH 準拠 \fBbdflush\fP() は Linux 特有であり移植を意図したプログラムで使用すべきではない。 .SH 関連項目 -\fBfsync\fP(2), \fBsync\fP(2), \fBsync\fP(1) +\fBsync\fP(1), \fBfsync\fP(2), \fBsync\fP(2) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/bind.2 b/manual/LDP_man-pages/draft/man2/bind.2 index e15129d9..aee580b3 100644 --- a/manual/LDP_man-pages/draft/man2/bind.2 +++ b/manual/LDP_man-pages/draft/man2/bind.2 @@ -1,4 +1,5 @@ .\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu) +.\" and Copyright 2005-2007, Michael Kerrisk .\" Portions extracted from /usr/include/sys/socket.h, which does not have .\" any authorship information in it. It is probably available under the GPL. .\" @@ -82,14 +83,14 @@ .\" Updated 2007-06-13, Akihiro MOTOKI , LDP v2.55 .\" Updated 2008-02-10, Akihiro MOTOKI , LDP v2.77 .\" -.TH BIND 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH BIND 2 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 bind \- ソケットに名前をつける .SH 書式 .nf \fB#include \fP /* 「注意」参照 */ \fB#include \fP -.sp +.PP \fBint bind(int \fP\fIsockfd\fP\fB, const struct sockaddr *\fP\fIaddr\fP\fB,\fP \fB socklen_t \fP\fIaddrlen\fP\fB);\fP .fi @@ -101,26 +102,27 @@ bind \- ソケットに名前をつける .PP \fBSOCK_STREAM\fP ソケットが接続を受け付けられるようにするには (\fBaccept\fP(2) を参照)、通常その前に \fBbind\fP() を使用してローカルアドレスを割り当てる必要がある。 - -名前付けのルールはアドレスファミリーごとに異なっている。詳細な情報は 第 7 章の各マニュアルを参照すること。 \fBAF_INET\fP は -\fBip\fP(7) を、 \fBAF_INET6\fP は \fBipv6\fP(7) を、 \fBAF_UNIX\fP は \fBunix\fP(7) を、 -\fBAF_APPLETALK\fP は \fBddp\fP(7) を、 \fBAF_PACKET\fP は \fBpacket\fP(7) を、 \fBAF_X25\fP は -\fBx25\fP(7) を、 \fBAF_NETLINK\fP は \fBnetlink\fP(7) を参照。 - +.PP +The rules used in name binding vary between address families. Consult the +manual entries in Section 7 for detailed information. For \fBAF_INET\fP, see +\fBip\fP(7); for \fBAF_INET6\fP, see \fBipv6\fP(7); for \fBAF_UNIX\fP, see \fBunix\fP(7); +for \fBAF_APPLETALK\fP, see \fBddp\fP(7); for \fBAF_PACKET\fP, see \fBpacket\fP(7); for +\fBAF_X25\fP, see \fBx25\fP(7); and for \fBAF_NETLINK\fP, see \fBnetlink\fP(7). +.PP \fIaddr\fP 引き数に実際にどのような構造体が渡されるかは、 アドレスファミリーに依存する。 \fIsockaddr\fP 構造体は以下のような感じで定義されている: +.PP .in +4n -.nf - +.EX struct sockaddr { sa_family_t sa_family; char sa_data[14]; } - -.fi +.EE .in -この構造体は、 \fIaddr\fP に渡される構造体へのポインターをキャストし、 コンパイラの警告メッセージを抑えるためだけに存在する。 -下記の「例」を参照。 +.PP +The only purpose of this structure is to cast the structure pointer passed +in \fIaddr\fP in order to avoid compiler warnings. See EXAMPLES below. .SH 返り値 成功した場合にはゼロが返される。エラー時には \-1 が返され、 \fIerrno\fP が適切に設定される。 .SH エラー @@ -137,9 +139,8 @@ struct sockaddr { を割り当てようとした際に、 一時ポートとして使用する範囲のすべてのポート番号が使用中であった。 \fBip\fP(7) の \fI/proc/sys/net/ipv4/ip_local_port_range\fP の説明を参照。 .TP -.TP \fBEBADF\fP -\fIsockfd\fP が不正なディスクリプターである。 +\fIsockfd\fP が有効なファイルディスクリプターでない。 .TP \fBEINVAL\fP .\" This may change in the future: see @@ -150,7 +151,7 @@ struct sockaddr { \fIaddrlen\fP が間違っているか、 \fIaddr\fP がこのソケットのドメインで有効なアドレスではない。 .TP \fBENOTSOCK\fP -\fIsockfd\fP がファイルに対するディスクリプターで、ソケットに対するものではない。 +The file descriptor \fIsockfd\fP does not refer to a socket. .PP 以下のエラーは UNIXドメイン (\fBAF_UNIX\fP) のソケット特有である: .TP @@ -170,7 +171,7 @@ struct sockaddr { \fIaddr\fP が長過ぎる。 .TP \fBENOENT\fP -ファイルが存在しない。 +A component in the directory prefix of the socket pathname does not exist. .TP \fBENOMEM\fP カーネルに、利用可能なメモリーが十分にない。 @@ -189,26 +190,27 @@ struct sockaddr { .\" and .\" .B EISDIR .\" UNIX-domain error conditions. -SVr4, 4.4BSD, POSIX.1\-2001 (\fBbind\fP() は 4.2BSD で最初に現われた)。 +POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.4BSD (\fBbind\fP() first appeared in +4.2BSD). .SH 注意 -POSIX.1\-2001 では \fI\fP のインクルードは必須とされておらず、 Linux -ではこのヘッダーファイルは必要ではない。 しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダーファイルが -必要であり、移植性が必要なアプリケーションではこのファイルを インクルードするのが賢明であろう。 - -\fBbind\fP() の三番目の引き数は (4.x BSD や libc4, libc5 と同様に) 実際には \fIint\fP である。glibc -でも使われている現在の \fIsocklen_t\fP に関して、POSIX には少し混乱がある。 詳しくは \fBaccept\fP(2) を参照のこと。 +POSIX.1 does not require the inclusion of \fI\fP, and this +header file is not required on Linux. However, some historical (BSD) +implementations required this header file, and portable applications are +probably wise to include it. +.PP +For background on the \fIsocklen_t\fP type, see \fBaccept\fP(2). .SH バグ .\" FIXME Document transparent proxy options 透過的プロキシ (transparent proxy) オプションについて記述していない。 -.SH 例 +.SH EXAMPLES インターネットドメインソケットでの \fBbind\fP() の利用例が \fBgetaddrinfo\fP(3) に記載されている。 - +.PP .\" listen.7 refers to this example. .\" accept.7 refers to this example. .\" unix.7 refers to this example. 以下の例は、UNIX ドメイン (\fBAF_UNIX\fP) でストリームソケットを bind する方法を示したものである。 - -.nf +.PP +.EX #include #include #include @@ -232,14 +234,14 @@ main(int argc, char *argv[]) if (sfd == \-1) handle_error("socket"); - memset(&my_addr, 0, sizeof(struct sockaddr_un)); + memset(&my_addr, 0, sizeof(my_addr)); /* Clear structure */ my_addr.sun_family = AF_UNIX; strncpy(my_addr.sun_path, MY_SOCK_PATH, sizeof(my_addr.sun_path) \- 1); if (bind(sfd, (struct sockaddr *) &my_addr, - sizeof(struct sockaddr_un)) == \-1) + sizeof(my_addr)) == \-1) handle_error("bind"); if (listen(sfd, LISTEN_BACKLOG) == \-1) @@ -248,9 +250,9 @@ main(int argc, char *argv[]) /* Now we can accept incoming connections one at a time using accept(2) */ - peer_addr_size = sizeof(struct sockaddr_un); + peer_addr_size = sizeof(peer_addr); cfd = accept(sfd, (struct sockaddr *) &peer_addr, - &peer_addr_size) + &peer_addr_size); if (cfd == \-1) handle_error("accept"); @@ -259,12 +261,11 @@ main(int argc, char *argv[]) /* When no longer required, the socket pathname, MY_SOCK_PATH should be deleted using unlink(2) or remove(3) */ } -.fi +.EE .SH 関連項目 \fBaccept\fP(2), \fBconnect\fP(2), \fBgetsockname\fP(2), \fBlisten\fP(2), \fBsocket\fP(2), \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/brk.2 b/manual/LDP_man-pages/draft/man2/brk.2 deleted file mode 100644 index 6fb5e48c..00000000 --- a/manual/LDP_man-pages/draft/man2/brk.2 +++ /dev/null @@ -1,129 +0,0 @@ -.\" 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified Wed Jul 21 19:52:58 1993 by Rik Faith -.\" Modified Sun Aug 21 17:40:38 1994 by Rik Faith -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 TABATA Tomohira -.\" all rights reserved. -.\" Translated Wed Jun 26 19:12:54 JST 1996 -.\" by TABATA Tomohira -.\" Modified Sat Dec 13 23:43:56 JST 1997 -.\" by HANATAKA Shinya -.\" Updated & Modified Wed May 19 01:55:29 JST 2004 -.\" by Yuichi SATO , LDP v1.66 -.\" Updated & Modified Tue Jan 2 09:09:47 JST 2007 by Yuichi SATO, LDP v2.43 -.\" Updated 2008-08-04, Akihiro MOTOKI , LDP v3.05 -.\" -.TH BRK 2 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -brk, sbrk \- データセグメントのサイズの変更する -.SH 書式 -\fB#include \fP -.sp -\fBint brk(void *\fP\fIaddr\fP\fB);\fP -.sp -\fBvoid *sbrk(intptr_t \fP\fIincrement\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBbrk\fP(), \fBsbrk\fP(): -.ad l -.RS 4 -.PD 0 -.TP 4 -glibc 2.12 以降: -.nf -_BSD_SOURCE || _SVID_SOURCE || - (_XOPEN_SOURCE\ >=\ 500 || - _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) && - !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600) -.TP 4 -.fi -glibc 2.12 より前: _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || -_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.PD -.RE -.ad b -.SH 説明 -\fBbrk\fP() と \fBsbrk\fP() は \fIプログラムブレーク (program break)\fP の場所を変更する。 -プログラムブレークはプロセスのデータセグメント (data segment) の 末尾を示す (プログラムブレークは、初期化されていない -データセグメントの末尾の直後の場所となる)。 プログラムブレークを増やすということは、そのプロセスへの メモリーを割り当てる効果があり、 -プログラムブレークを減らすということは、メモリーを解放する ということである。 - -\fBbrk\fP() は、データセグメントの末尾を \fIaddr\fP で指定した値に設定する。 設定が行われるのは、指定した値が有効で、 -システムに十分なメモリーがあり、 プロセスのデータサイズの最大値を超えていない場合である (\fBsetrlimit\fP(2) を参照)。 - -\fBsbrk\fP() は、プログラムのデータ空間を \fIincrement\fP バイトだけ増やす。 \fIincrement\fP を 0 にして -\fBsbrk\fP() を呼び出すことで、プログラムの現在のブレーク (break) 場所を知ることができる。 -.SH 返り値 -成功した場合、 \fBbrk\fP() は 0 を返す。 エラーの場合には、\-1 を返し、 \fIerrno\fP に \fBENOMEM\fP を設定する。 - -成功した場合、 \fBsbrk\fP() は変更前のプログラムブレークを返す (プログラムブレークが増やされた場合、この値は -新しく割り当てられたメモリーの先頭を指すポインターとなる)。 エラーの場合には、 \fI(void\ *)\ \-1\fP を返し、 \fIerrno\fP に -\fBENOMEM\fP を設定する。 -.SH 準拠 -.\" -.\" .BR brk () -.\" and -.\" .BR sbrk () -.\" are not defined in the C Standard and are deliberately excluded from the -.\" POSIX.1-1990 standard (see paragraphs B.1.1.1.3 and B.8.3.3). -4.3BSD, SUSv1. SUSv2 では「過去の名残 (LEGACY)」と位置付けられており、 POSIX.1\-2001 で削除された。 -.SH 注意 -\fBbrk\fP() や \fBsbrk\fP() を使用するのは避けること。 \fBmalloc\fP(3) メモリー割り当てパッケージの方が、移植性が高く、 -使いやすいメモリー割り当て方法を提供している。 - -.\" One sees -.\" \fIint\fP (e.g., XPGv4, DU 4.0, HP-UX 11, FreeBSD 4.0, OpenBSD 3.2), -.\" \fIssize_t\fP (OSF1 2.0, Irix 5.3, 6.5), -.\" \fIptrdiff_t\fP (libc4, libc5, ulibc, glibc 2.0, 2.1), -.\" \fIintptr_t\fP (e.g., XPGv5, AIX, SunOS 5.8, 5.9, FreeBSD 4.7, NetBSD 1.6, -.\" Tru64 5.1, glibc2.2). -いろいろなシステムにおいて、 \fBsbrk\fP() の引き数に様々な型が使われている。 一般的なのは \fIint\fP, \fIssize_t\fP, -\fIptrdiff_t\fP, \fIintptr_t\fP である。 -.SS "C ライブラリとカーネル ABI の違い" -上で説明した \fBbrk\fP() の返り値についての動作は、 Linux の \fBbrk\fP() システムコールをラップする glibc -の関数によるものである。 (その他の多くの実装でも、 \fBbrk\fP() の返り値はこれと同じである。 この返り値は SUSv2 でも規定されている。) -しかし、実際の Linux システムコールは、成功した場合、 プログラムの新しいブレークを返す。 -失敗した場合、このシステムコールは現在のブレークを返す。 glibc ラッパー関数は同様の働きをし (すなわち、新しいブレークが \fIaddr\fP -より小さいかどうかをチェックし)、 上で説明した 0 と \-1 という返り値を返す。 - -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/cacheflush.2 b/manual/LDP_man-pages/draft/man2/cacheflush.2 deleted file mode 100644 index a32aa62a..00000000 --- a/manual/LDP_man-pages/draft/man2/cacheflush.2 +++ /dev/null @@ -1,79 +0,0 @@ -.\" Written by Ralf Baechle (ralf@waldorf-gmbh.de), -.\" Copyright (c) 1994, 1995 Waldorf GMBH -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Sat Feb 22 20:07:45 JST 1997 -.\" by HANATAKA Shinya -.\" Updated 2007-06-13, Akihiro MOTOKI , LDP v2.55 -.\" -.TH CACHEFLUSH 2 2007\-05\-26 Linux "Linux Programmer's Manual" -.SH 名前 -cacheflush \- 命令キャッシュやデータキャッシュの内容をフラッシュする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint cacheflush(char *\fP\fIaddr\fP\fB, int \fP\fInbytes\fP\fB, int \fP\fIcache\fP\fB);\fP -.fi -.SH 説明 -\fBcacheflush\fP() は \fIaddr\fP から \fI(addr+nbytes\-1)\fP の範囲のユーザーアドレスに対応する -指定されたキャッシュをフラッシュする。 \fIcache\fP には以下のいずれかを指定する: -.TP -\fBICACHE\fP -命令 (instruction) キャッシュをフラッシュする。 -.TP -\fBDCACHE\fP -変更があったキャッシュラインをメモリーに書き戻し、無効にする。 -.TP -\fBBCACHE\fP -\fB(ICACHE|DCACHE)\fP と同じ。 -.SH 返り値 -\fBcacheflush\fP() は成功した場合は 0 を、失敗した場合は \-1 を返す。エラーが検出された場合は \fIerrno\fP -にエラーが指示される。 -.SH エラー -.TP -\fBEFAULT\fP -\fIaddr\fP から \fI(addr+nbytes\-1)\fP の範囲のアドレスの全てまたは一部が アクセス可能ではない。 -.TP -\fBEINVAL\fP -\fIcache\fP パラメーターが \fBICACHE\fP, \fBDCACHE\fP, \fBBCACHE\fP のどれでもない。 -.SH 準拠 -.\" FIXME The cacheflush() system call was only on MIPS back in 1.2 days, -.\" but by now it is on a number of other architectures (but not i386). -.\" Investigate the details and update this page. -.\" Irix 6.5 appears to have a cacheflush() syscall -- mtk -この Linux 特有のシステムコールは MIPS ベースのシステムでのみ有効である。 移植を意図したプログラムで使用すべきではない。 -.SH バグ -現在の実装では、引き数 \fIaddr\fP と \fInbytes\fP は無視される。そのため、 常に全てのキャッシュがフラッシュされる。 -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 01a2383a..00000000 --- a/manual/LDP_man-pages/draft/man2/capget.2 +++ /dev/null @@ -1,152 +0,0 @@ -.\" written by Andrew Morgan -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" may be distributed as per GPL -.\" %%%LICENSE_END -.\" -.\" Modified by David A. Wheeler -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1999-12-26, HANATAKA Shinya -.\" Updated & Modified 2005-02-03, Yuichi SATO -.\" Updated & Modified 2006-01-31, Akihiro MOTOKI -.\" Updated & Modified 2006-07-23, Akihiro MOTOKI, LDP v2.36 -.\" Updated & Modified 2008-08-11, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2009-02-24, Akihiro MOTOKI, LDP v3.19 -.\" -.TH CAPGET 2 2013\-03\-11 Linux "Linux Programmer's Manual" -.SH 名前 -capget, capset \- スレッドのケーパビリティを設定/取得する -.SH 書式 -\fB#include \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 は、 \fBcapabilities\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(1) を除く全てのスレッドを対象として変更を行うことを、 \-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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/chdir.2 b/manual/LDP_man-pages/draft/man2/chdir.2 index dda07ca9..f2eb1a3a 100644 --- a/manual/LDP_man-pages/draft/man2/chdir.2 +++ b/manual/LDP_man-pages/draft/man2/chdir.2 @@ -44,27 +44,28 @@ .\" Updated 2006-08-12, Akihiro MOTOKI , LDP v2.39 .\" Updated 2007-09-04, Akihiro MOTOKI , LDP v2.64 .\" -.TH CHDIR 2 2010\-11\-25 Linux "Linux Programmer's Manual" +.TH CHDIR 2 2019\-08\-02 Linux "Linux Programmer's Manual" .SH 名前 chdir, fchdir \- 作業ディレクトリの変更 .SH 書式 \fB#include \fP -.sp +.PP \fBint chdir(const char *\fP\fIpath\fP\fB);\fP .br \fBint fchdir(int \fP\fIfd\fP\fB);\fP -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBfchdir\fP(): .PD 0 .ad l .RS 4 -_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.br -|| /* glibc 2.12 以降: */ _POSIX_C_SOURCE\ >=\ 200809L +.\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +_XOPEN_SOURCE\ >=\ 500 + || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L + || /* Glibc up to and including 2.19: */ _BSD_SOURCE .RE .ad .PD @@ -95,7 +96,7 @@ I/O エラーが発生した。 \fIpath\fP が長過ぎる。 .TP \fBENOENT\fP -ファイルが存在しない。 +The directory specified in \fIpath\fP does not exist. .TP \fBENOMEM\fP カーネルに十分なメモリーがない。 @@ -110,16 +111,18 @@ I/O エラーが発生した。 .TP \fBEBADF\fP \fIfd\fP が適切なファイルディスクリプターでない。 +.TP +\fBENOTDIR\fP +\fIfd\fP does not refer to a directory. .SH 準拠 -SVr4, 4.4BSD, POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.4BSD. .SH 注意 現在の作業ディレクトリは、相対パス名 (\(aq/\(aq) で始まっていないパス名) を 解釈する際の開始点である。 - +.PP \fBfork\fP(2) で作成された子プロセスは、親プロセスの現在の作業ディレクトリを 継承する。 \fBexecve\fP(2) の前後で、現在の作業ディレクトリは変更されない。 .SH 関連項目 \fBchroot\fP(2), \fBgetcwd\fP(3), \fBpath_resolution\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/chmod.2 b/manual/LDP_man-pages/draft/man2/chmod.2 index 88dc2177..78d978ab 100644 --- a/manual/LDP_man-pages/draft/man2/chmod.2 +++ b/manual/LDP_man-pages/draft/man2/chmod.2 @@ -43,44 +43,57 @@ .\" Updated & Modified 2004-12-29, Yuichi SATO .\" Updated 2008-08-09, Akihiro MOTOKI , LDP v3.05 .\" -.TH CHMOD 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH CHMOD 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 chmod, fchmod, fchmodat \- ファイルのモードを変更する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint chmod(const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB);\fP -.br \fBint fchmod(int \fP\fIfd\fP\fB, mode_t \fP\fImode\fP\fB);\fP -.sp + \fB#include \fP /* AT_* 定数の定義 */ \fB#include \fP -.sp +.PP \fBint fchmodat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB, int \fP\fIflags\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP .ad l .PD 0 \fBfchmod\fP(): .RS 4 -_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.br -|| /* glibc 2.12 以降: */ _POSIX_C_SOURCE\ >=\ 200809L +.\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) +Since glibc 2.24: + _POSIX_C_SOURCE\ >=\ 199309L +.PP +Glibc 2.19 to 2.23 + _POSIX_C_SOURCE +.PP +Glibc 2.16 to 2.19: + _BSD_SOURCE || _POSIX_C_SOURCE +.PP +Glibc 2.12 to 2.16: + _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || + _POSIX_C_SOURCE >= 200809L +.PP +.\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) +Glibc 2.11 and earlier: + _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 .RE .PD -.sp +.PP \fBfchmodat\fP(): .PD 0 .ad l .RS 4 .TP 4 glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L +_POSIX_C_SOURCE\ >=\ 200809L .TP glibc 2.10 より前: _ATFILE_SOURCE @@ -89,16 +102,19 @@ _ATFILE_SOURCE .PD .ad .SH 説明 -システムコール \fBchmod\fP() と \fBfchmod\fP() は、ファイルのアクセス許可 (permission) を変更する。 -システムコール間の違いは、ファイルの指定の仕方だけである。 +The \fBchmod\fP() and \fBfchmod\fP() system calls change a files mode bits. +(The file mode consists of the file permission bits plus the set\-user\-ID, +set\-group\-ID, and sticky bits.) These system calls differ only in how the +file is specified: .IP * 2 -\fBchmod\fP() は、 \fIpathname\fP で指定されたパス名を持つファイルの許可を変更する。 \fIpathname\fP -がシンボリックリンクの場合は、リンクの展開が行われる。 +\fBchmod\fP() changes the mode of the file specified whose pathname is given +in \fIpathname\fP, which is dereferenced if it is a symbolic link. .IP * -\fBfchmod\fP() は、オープンされたファイルディスクリプター \fIfd\fP により参照されるファイルの許可を変更する。 +\fBfchmod\fP() changes the mode of the file referred to by the open file +descriptor \fIfd\fP. .PP -新しいファイル許可は \fImode\fP で指定される。 \fImode\fP は、以下に示す値の 0 個以上の OR (論理和) をとって作成される -ビットマスクである。 +The new file mode is specified in \fImode\fP, which is a bit mask created by +ORing together zero or more of the following: .TP 18 \fBS_ISUID\fP (04000) set\-user\-ID (\fBexecve\fP(2) 時にプロセスの実効ユーザー ID にセットされる) @@ -141,17 +157,18 @@ set\-group\-ID (以下の場合に (\fBexecve\fP(2) 実行時にプロセスの .PP 呼び出したプロセスの実効 (effective) UID がファイルの所有者と一致するか、 そのプロセスが特権を持たなければならない (Linux では \fBCAP_FOWNER\fP ケーパビリティ (capability) を持たなければならない)。 - +.PP 呼び出したプロセスに特権がなく (Linux では \fBCAP_FSETID\fP ケーパビリティがなく)、かつファイルのグループ ID が プロセスの実効グループ ID または補助的なグループ ID にマッチしない場合、 \fBS_ISGID\fP ビットはオフにされるが、これによってエラーが返されることはない。 - -安全のための処置として、 ファイルシステムによっては、ファイルの書き込みを行う時に set\-user\-ID とset\-group\-ID -ビットと実行ビットが オフにされることがある。 (Linux では、書き込みプロセスが \fBCAP_FSETID\fP -ケーパビリティを持っていない場合に、これが起こる。) ファイルシステムの中には、スーパーユーザーだけが -特別の意味を持つスティッキービットを設定できるものがある。 スティッキービットとディレクトリに対する set\-user\-ID -(set\-group\-ID) ビットについては、 \fBstat\fP(2) を見よ。 - +.PP +As a security measure, depending on the filesystem, the set\-user\-ID and +set\-group\-ID execution bits may be turned off if a file is written. (On +Linux, this occurs if the writing process does not have the \fBCAP_FSETID\fP +capability.) On some filesystems, only the superuser can set the sticky +bit, which may have a special meaning. For the sticky bit, and for +set\-user\-ID and set\-group\-ID bits on directories, see \fBinode\fP(7). +.PP .\" .\" NFS ファイルシステム上では、パーミッションを制限すると、 既にオープンされているファイルに対してすぐに影響が及ぶ。 @@ -160,16 +177,16 @@ NFS ファイルシステム上では、パーミッションを制限すると 他のクライアントに情報が伝わるのが遅れるかもしれない。 .SS fchmodat() \fBfchmodat\fP() システムコールは \fBchmod\fP() と全く同様に動作するが、以下で説明する点が異なる。 - +.PP \fIpathname\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fIdirfd\fP が参照するディレクトリに対する相対パスと解釈される (\fBchmod\fP() に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。 - +.PP \fIpathname\fP で指定されたパス名が相対パスで、 \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBchmod\fP() と同様に) \fIpathname\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 - +.PP \fIpathname\fP で指定されたパス名が絶対パスの場合、 \fIdirfd\fP は無視される。 - +.PP \fIflags\fP には 0 か、以下のフラグを指定することができる。 .TP \fBAT_SYMLINK_NOFOLLOW\fP @@ -181,7 +198,7 @@ NFS ファイルシステム上では、パーミッションを制限すると 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 .SH エラー ファイルシステムによっては、下記の一覧にない他のエラーが返されることもある。 - +.PP \fBchmod\fP() のごく一般的なエラーを挙げる: .TP \fBEACCES\fP @@ -211,6 +228,9 @@ I/O エラーが発生した。 \fBEPERM\fP 実効 UID がファイルの所有者と一致せず、プロセスに特権がない (Linux では \fBCAP_FOWNER\fP ケーパビリティを持たない)。 .TP +\fBEPERM\fP +The file is marked immutable or append\-only. (See \fBioctl_iflags\fP(2).) +.TP \fBEROFS\fP ファイルが読み込み専用 (read only) のファイルシステム上にある。 .PP @@ -246,10 +266,10 @@ I/O エラーが発生した。 で利用できる。 .SH 準拠 \fBchmod\fP(), \fBfchmod\fP(): 4.4BSD, SVr4, POSIX.1\-2001i, POSIX.1\-2008. - +.PP \fBfchmodat\fP(): POSIX.1\-2008. .SH 注意 -.SS "C ライブラリとカーネル ABI の違い" +.SS "C library/kernel differences" GNU C ライブラリの \fBfchmodat\fP() ラッパー関数は、このページで説明している POSIX で規定されたインターフェースを実装している。このインターフェースは、内部で呼ばれる Linux のシステムコールとは異なる。システムコールは \fIflags\fP 引き数を\fI持たない\fP。 @@ -258,9 +278,8 @@ GNU C ライブラリの \fBfchmodat\fP() ラッパー関数は、このペー \fIpathname\fP が相対パスの場合、 glibc は \fIdirfd\fP 引き数に対応する \fI/proc/self/fd\fP のシンボリックリンクに基づいてパス名を構成する。 .SH 関連項目 -\fBchown\fP(2), \fBexecve\fP(2), \fBopen\fP(2), \fBstat\fP(2), \fBpath_resolution\fP(7), -\fBsymlink\fP(7) +\fBchmod\fP(1), \fBchown\fP(2), \fBexecve\fP(2), \fBopen\fP(2), \fBstat\fP(2), \fBinode\fP(7), +\fBpath_resolution\fP(7), \fBsymlink\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/chown.2 b/manual/LDP_man-pages/draft/man2/chown.2 index ed60fca2..da152688 100644 --- a/manual/LDP_man-pages/draft/man2/chown.2 +++ b/manual/LDP_man-pages/draft/man2/chown.2 @@ -33,7 +33,7 @@ .\" 2007-07-08, mtk, added an example program; updated SYNOPSIS .\" 2008-05-08, mtk, Describe rules governing ownership of new files .\" (bsdgroups versus sysvgroups, and the effect of the parent -.\" directory's set-group-ID permission bit). +.\" directory's set-group-ID mode bit). .\" .\"******************************************************************* .\" @@ -51,47 +51,45 @@ .\" Updated 2008-08-09, Akihiro MOTOKI , LDP v3.05 .\" Updated 2012-04-30, Akihiro MOTOKI .\" -.TH CHOWN 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH CHOWN 2 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 chown, fchown, lchown, fchownat \- ファイルの所有者を変更する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint chown(const char *\fP\fIpathname\fP\fB, uid_t \fP\fIowner\fP\fB, gid_t \fP\fIgroup\fP\fB);\fP -.br \fBint fchown(int \fP\fIfd\fP\fB, uid_t \fP\fIowner\fP\fB, gid_t \fP\fIgroup\fP\fB);\fP -.br \fBint lchown(const char *\fP\fIpathname\fP\fB, uid_t \fP\fIowner\fP\fB, gid_t \fP\fIgroup\fP\fB);\fP -.sp + \fB#include \fP/* AT_* 定数の定義 */ \fB#include \fP -.sp +.PP \fBint fchownat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB,\fP \fB uid_t \fP\fIowner\fP\fB, gid_t \fP\fIgroup\fP\fB, int \fP\fIflags\fP\fB);\fP .fi -.sp -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBfchown\fP(), \fBlchown\fP(): .PD 0 .ad l .RS 4 -_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.br -|| /* glibc 2.12 以降: */ _POSIX_C_SOURCE\ >=\ 200809L +.\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +/* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L + || _XOPEN_SOURCE\ >=\ 500 + || /* Glibc versions <= 2.19: */ _BSD_SOURCE .RE -.sp +.PP \fBfchownat\fP(): .PD 0 .ad l .RS 4 .TP 4 glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L +_POSIX_C_SOURCE\ >=\ 200809L .TP glibc 2.10 より前: _ATFILE_SOURCE @@ -112,29 +110,35 @@ _ATFILE_SOURCE 特権を持つプロセス (Linux では \fBCAP_CHOWN\fP ケーパビリティ (capability) を持つプロセス) だけが ファイルの所有者を変更できる。 ファイルの所有者は、その所有者が属しているグループのいずれかに ファイルのグループを変更することができる。 特権 (Linux では \fBCAP_CHOWN\fP) を持つプロセスは、任意のグループに変更できる。 - +.PP \fIowner\fP または \fIgroup\fP に \-1 が指定された場合、それらの ID は変更されない。 - +.PP .\" In Linux 2.0 kernels, superuser was like everyone else .\" In 2.2, up to 2.2.12, these bits were not cleared for superuser. .\" Since 2.2.13, superuser is once more like everyone else. -非特権ユーザーにより実行ファイルの所有者またはグループが 変更された場合は \fBS_ISUID\fP と \fBISGID\fP モードビットはクリアされる。 -POSIX はこの動作やルートが \fBchown\fP() を行なった場合については特に指定されていない。 Linux -における動作はカーネルのバージョンに依存する。 非グループ実行ファイル (\fBS_IXGRP\fP ビットが設定されていないファイル) の場合には -\fBS_ISGID\fP ビットは強制ロック (mandatory locking) を意味している。 そしてそれは \fBchown\fP() -ではクリアできない。 +When the owner or group of an executable file is changed by an unprivileged +user, the \fBS_ISUID\fP and \fBS_ISGID\fP mode bits are cleared. POSIX does not +specify whether this also should happen when root does the \fBchown\fP(); the +Linux behavior depends on the kernel version, and since Linux 2.2.13, root +is treated like other users. In case of a non\-group\-executable file (i.e., +one for which the \fBS_IXGRP\fP bit is not set) the \fBS_ISGID\fP bit indicates +mandatory locking, and is not cleared by a \fBchown\fP(). +.PP +.\" +When the owner or group of an executable file is changed (by any user), all +capability sets for the file are cleared. .SS fchownat() \fBfchownat\fP() システムコールは \fBchown\fP() と全く同様に動作するが、以下で説明する点が異なる。 - +.PP \fIpathname\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fIdirfd\fP が参照するディレクトリに対する相対パスと解釈される (\fBchown\fP() に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。 - +.PP \fIpathname\fP で指定されたパス名が相対パスで、 \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBchown\fP() と同様に) \fIpathname\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 - +.PP \fIpathname\fP で指定されたパス名が絶対パスの場合、 \fIdirfd\fP は無視される。 - +.PP \fIflags\fP 引き数は、以下に示す値の 0 個以上の OR (論理和) をとって作成される ビットマスクである。 .TP \fBAT_EMPTY_PATH\fP (Linux 2.6.39 以降) @@ -145,7 +149,6 @@ POSIX はこの動作やルートが \fBchown\fP() を行なった場合につ は、ディレクトリだけでなく、任意のタイプのファイルを参照することができる。 \fIdirfd\fP が \fBAT_FDCWD\fP の場合、この呼び出しはカレントワーキングディレクトリに対して操作を行う。このフラグは Linux 固有であり、その定義を得るには \fB_GNU_SOURCE\fP を定義すること。 - .TP \fBAT_SYMLINK_NOFOLLOW\fP \fIpathname\fP がシンボリックリンクの場合、リンクの展開を行わない。代わりに、\fBlchown\fP() @@ -156,7 +159,7 @@ POSIX はこの動作やルートが \fBchown\fP() を行なった場合につ 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 .SH エラー ファイルシステムによっては、下記の一覧にない他のエラーが返されることもある。 - +.PP \fBchown\fP() でごく一般的なエラーを以下に挙げる: .TP \fBEACCES\fP @@ -183,13 +186,16 @@ POSIX はこの動作やルートが \fBchown\fP() を行なった場合につ \fBEPERM\fP 呼び出したプロセスに所有者またはグループ (もしくはその両方) を変更するために 要求される許可 (上記を参照) がない。 .TP +\fBEPERM\fP +The file is marked immutable or append\-only. (See \fBioctl_iflags\fP(2).) +.TP \fBEROFS\fP ファイルが読み込み専用 (read only) のファイルシステム上にある。 .PP \fBfchown\fP() で一般的なエラーを以下に挙げる: .TP \fBEBADF\fP -ディスクリプターが有効でない。 +\fIfd\fP が有効なオープンされたディスクリプターでない。 .TP \fBEIO\fP i ノード (inode) を変更する際に低レベル I/O エラーが発生した。 @@ -219,7 +225,7 @@ i ノード (inode) を変更する際に低レベル I/O エラーが発生し .SH 準拠 \fBchown\fP(), \fBfchown\fP(), \fBlchown\fP(): 4.4BSD, SVr4, POSIX.1\-2001, POSIX.1\-2008. - +.PP .\" chown(): .\" SVr4 documents EINVAL, EINTR, ENOLINK and EMULTIHOP returns, but no .\" ENOMEM. POSIX.1 does not document ENOMEM or ELOOP error conditions. @@ -227,27 +233,33 @@ POSIX.1\-2008. .\" SVr4 documents additional EINVAL, EIO, EINTR, and ENOLINK .\" error conditions. 4.4BSD 版ではスーパーユーザーのみが使用できる (つまり、普通のユーザーはファイルを手放すことはできない)。 - +.PP \fBfchownat\fP(): POSIX.1\-2008. .SH 注意 .SS 新しいファイルの所有権 -(\fBopen\fP(2) や \fBmkdir\fP(2) などにより) 新しいファイルが作成されるとき、 -その所有者は呼び出したプロセスのファイルシステムユーザー ID と 同じに設定される。 そのファイルのグループはいくつかの要因により決定される。 -その要因としては、 ファイルシステムの種類、そのファイルシステムのマウント時に 使用されたオプション、親ディレクトリで set\-group\-ID -許可ビットが 有効になっているどうか、がある。 ファイルシステムが \fBmount\fP(8) オプションの \fI\-o\ grpid\fP (\fI\-o\ bsdgroups\fP も同義語) と \fI\-o\ nogrpid\fP (\fI\-o sysvgroups\fP も同義語) -に対応している場合、ルールは以下の通りとなる。 +When a new file is created (by, for example, \fBopen\fP(2) or \fBmkdir\fP(2)), +its owner is made the same as the filesystem user ID of the creating +process. The group of the file depends on a range of factors, including the +type of filesystem, the options used to mount the filesystem, and whether or +not the set\-group\-ID mode bit is enabled on the parent directory. If the +filesystem supports the \fB\-o\ grpid\fP (or, synonymously \fB\-o\ bsdgroups\fP) +and \fB\-o\ nogrpid\fP (or, synonymously \fB\-o\ sysvgroups\fP) \fBmount\fP(8) +options, then the rules are as follows: .IP * 2 -ファイルシステムが \fI\-o\ grpid\fP 付きでマウントされている場合、新しいファイルのグループは 親ディレクトリのグループと同じになる。 +If the filesystem is mounted with \fB\-o\ grpid\fP, then the group of a new file +is made the same as that of the parent directory. .IP * -ファイルシステムが \fI\-o\ nogrpid\fP 付きでマウントされており、親ディレクトリでは set\-group\-ID ビットが -無効になっている場合、新しいファイルのグループは プロセスのファイルシステム GID と同じになる。 +If the filesystem is mounted with \fB\-o\ nogrpid\fP and the set\-group\-ID bit is +disabled on the parent directory, then the group of a new file is made the +same as the process's filesystem GID. .IP * -ファイルシステムが \fI\-o\ nogrpid\fP 付きでマウントされており、親ディレクトリでは set\-group\-ID ビットが -有効になっている場合、新しいファイルのグループは 親ディレクトリのグループと同じになる。 +If the filesystem is mounted with \fB\-o\ nogrpid\fP and the set\-group\-ID bit is +enabled on the parent directory, then the group of a new file is made the +same as that of the parent directory. .PP -Linux 2.6.25 では、マウントオプション \fI\-o\ grpid\fP と \fI\-o\ nogrpid\fP に対応しているファイルシステムは -ext2, ext3, ext4, XFS である。 これらのマウントオプションに対応していないファイルシステムでは、 \fI\-o\ nogrpid\fP -に関するルールが適用される。 +As at Linux 4.12, the \fB\-o\ grpid\fP and \fB\-o\ nogrpid\fP mount options are +supported by ext2, ext3, ext4, and XFS. Filesystems that don't support +these mount options follow the \fB\-o\ nogrpid\fP rules. .SS "glibc での注意" \fBfchownat\fP() が利用できない古いカーネルでは、 glibc ラッパー関数は \fBchown\fP() を使用するモードにフォールバックする。 \fIpathname\fP が相対パスの場合、 glibc は \fIdirfd\fP 引き数に対応する \fI/proc/self/fd\fP @@ -264,18 +276,17 @@ ext2, ext3, ext4, XFS である。 これらのマウントオプションに対 が Linux 2.4 で追加された。 \fBchown\fP(), \fBfchown\fP(), and \fBlchown\fP() の glibc のラッパー関数は、 カーネルのバージョンによる違いを吸収している。 - +.PP Linux の 2.1.81 より前のバージョン (特に 2.1.46 以前) では、 \fBchown\fP() はシンボリックリンクを追跡しない。 Linux 2.1.81 以降では \fBchown\fP() はシンボリックリンクを追跡し、新たなシステムコール \fBlchown\fP() はシンボリックリンクを追跡しない。 Linux 2.1.86 以降ではこの新しいコール (古い \fBchown\fP() と全く同じ動作を行なう) は同じシステムコール番号を持ち \fBchown\fP() は新しく導入された番号を持つ。 -.SH 例 -.PP +.SH EXAMPLES 以下のプログラムは、 二つ目のコマンドライン引き数で指定された名前のファイルの所有者を、 一つ目のコマンドライン引き数で指定された値に変更する。 新しい所有者は、数字のユーザー ID かユーザー名のいずれかで指定できる (ユーザー名で指定した場合には、 \fBgetpwnam\fP(3) を使ってシステムのパスワードファイルの検索が行われ、 ユーザー ID への変換が行われる)。 .SS プログラムのソース -.nf +.EX #include #include #include @@ -312,10 +323,10 @@ main(int argc, char *argv[]) exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 -\fBchmod\fP(2), \fBflock\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7) +\fBchgrp\fP(1), \fBchown\fP(1), \fBchmod\fP(2), \fBflock\fP(2), \fBpath_resolution\fP(7), +\fBsymlink\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/chroot.2 b/manual/LDP_man-pages/draft/man2/chroot.2 index 2d5f1c86..0d44bbfd 100644 --- a/manual/LDP_man-pages/draft/man2/chroot.2 +++ b/manual/LDP_man-pages/draft/man2/chroot.2 @@ -47,18 +47,18 @@ .\" Updated & Modified Thu Dec 23 10:04:20 JST 2004 .\" by Yuichi SATO .\" -.TH CHROOT 2 2010\-09\-20 Linux "Linux Programmer's Manual" +.TH CHROOT 2 2020\-12\-21 Linux "Linux Programmer's Manual" .SH 名前 chroot \- ルートディレクトリを変更する .SH 書式 \fB#include \fP -.sp +.PP \fBint chroot(const char *\fP\fIpath\fP\fB);\fP -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBchroot\fP(): .ad l .RS 4 @@ -66,12 +66,11 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 .TP 4 glibc 2.2.2 以降: .nf -_BSD_SOURCE || - (_XOPEN_SOURCE\ >=\ 500 || - _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) && - !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600) -.TP 4 +_XOPEN_SOURCE && ! (_POSIX_C_SOURCE\ >=\ 200112L) + || /* Since glibc 2.20: */ _DEFAULT_SOURCE + || /* Glibc versions <= 2.19: */ _BSD_SOURCE .fi +.TP 4 glibc 2.2.2 より前: なし .PD .RE @@ -79,20 +78,39 @@ glibc 2.2.2 より前: なし .SH 説明 \fBchroot\fP() は、呼び出し元プロセスのルートディレクトリを \fIpath\fP で指定されたディレクトリに変更する。 このディレクトリ以下が \fI/\fP から始まるパス名として使われる。 このルートディレクトリは呼び出し元のプロセスの全ての子プロセスに受け継がれる。 - -特権プロセス (Linux では、 \fBCAP_SYS_CHROOT\fP ケーパビリティを持つプロセス) のみが \fBchroot\fP() -を呼び出すことができる。 - -このコールはパス名解決の過程で構成要素を変更するのみで、 その他には何も行わない。 - +.PP +Only a privileged process (Linux: one with the \fBCAP_SYS_CHROOT\fP capability +in its user namespace) may call \fBchroot\fP(). +.PP +This call changes an ingredient in the pathname resolution process and does +nothing else. In particular, it is not intended to be used for any kind of +security purpose, neither to fully sandbox a process nor to restrict +filesystem system calls. In the past, \fBchroot\fP() has been used by daemons +to restrict themselves prior to passing paths supplied by untrusted users to +system calls such as \fBopen\fP(2). However, if a folder is moved out of the +chroot directory, an attacker can exploit that to get out of the chroot +directory as well. The easiest way to do that is to \fBchdir\fP(2) to the +to\-be\-moved directory, wait for it to be moved out, then open a path like +\&../../../etc/passwd. +.PP +.\" This is how the "slightly trickier variation" works: +.\" https://github.com/QubesOS/qubes-secpack/blob/master/QSBs/qsb-014-2015.txt#L142 +A slightly trickier variation also works under some circumstances if +\fBchdir\fP(2) is not permitted. If a daemon allows a "chroot directory" to +be specified, that usually means that if you want to prevent remote users +from accessing files outside the chroot directory, you must ensure that +folders are never moved out of it. +.PP このコールは現在の作業ディレクトリ (working directory) を変更しない。 そのため、このコールの後に \(aq\fI.\fP\(aq が \(aq\fI/\fP\(aq を 根とするツリーの外になる場合がある。 特に、スーパーユーザーは以下のようにすることで "chroot jail" から逃げ出せてしまう。 -.nf - - mkdir foo; chroot foo; cd .. -.fi - +.PP +.in +4n +.EX +mkdir foo; chroot foo; cd .. +.EE +.in +.PP このコールはオープンファイルディスクリプターをクローズしないので、 このようなファイルディスクリプターは chroot ツリーの外にある ファイルにアクセスできる。 .SH 返り値 @@ -135,13 +153,14 @@ SVr4, 4.4BSD, SUSv2 (但し、SUSv2 では過去の名残とされている)。 .SH 注意 \fBfork\fP(2) で作成された子プロセスは、 親プロセスのルートディレクトリを継承する。 \fBexecve\fP(2) の場合も、ルートディレクトリは変更されない。 - -.\" FIXME . eventually say something about containers, -.\" virtual servers, etc.? +.PP +The magic symbolic link, \fI/proc/[pid]/root\fP, can be used to discover a +process's root directory; see \fBproc\fP(5) for details. +.PP FreeBSD にはより強力な \fBjail\fP() システムコールがある。 .SH 関連項目 -\fBchdir\fP(2), \fBpath_resolution\fP(7) +\fBchroot\fP(1), \fBchdir\fP(2), \fBpivot_root\fP(2), \fBpath_resolution\fP(7), +\fBswitch_root\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index edabb02b..00000000 --- a/manual/LDP_man-pages/draft/man2/clock_getres.2 +++ /dev/null @@ -1,202 +0,0 @@ -.\" 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 improvements -.\" 2003-08-24 aeb, large parts rewritten -.\" 2004-08-06 Christoph Lameter , SMP note -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004-2005 Yuichi SATO -.\" all rights reserved. -.\" Translated 2004-07-19, Yuichi SATO -.\" Updated & Modified 2005-01-10, Yuichi SATO -.\" Updated 2010-04-11, Akihiro MOTOKI -.\" Updated 2012-04-27, Akihiro MOTOKI -.\" Updated 2012-05-08, Akihiro MOTOKI -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH CLOCK_GETRES 2 2013\-12\-28 "" "Linux Programmer's Manual" -.SH 名前 -clock_getres, clock_gettime, clock_settime \- クロックと時間の関数 -.SH 書式 -\fB#include \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 -\fI\-lrt\fP とリンクする (バージョン 2.17 より前の glibc のみ) -.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\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 -高速だが精度が低い \fBCLOCK_REALTIME\fP。速度が非常に必要で、かつ高精度のタイムスタンプが不要な場合に使用するとよい。 -.TP -.TP -\fBCLOCK_MONOTONIC\fP -設定することができないクロックで、ある開始時点からの単調増加の時間で -表現されるクロック (開始時点がどの時点となるかは規定されていない)。 -この時計は、システム時間の不連続な変化 (例えば、システム管理者がシステ -ム時間を手動で変更した場合など) の影響を受けないが、 -\fBadjtime\fP(3) や NTP が行う段階的な調整の影響を受ける。 -.TP -\fBCLOCK_MONOTONIC_COARSE\fP (Linux 2.6.32 以降; Linux 特有) -.\" Added in commit da15cfdae03351c689736f8d142618592e3cebc3 -高速だが精度が低い \fBCLOCK_MONOTONIC\fP。速度が非常に必要で、かつ高精度のタイムスタンプが不要な場合に使用するとよい。 -.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 -\fBCLOCK_MONOTONIC\fP と同じだが、システムがサスペンドされている時間も含まれる点が異なる。 -これを使うと、アプリケーションはサスペンド状態も扱える "monotonic" なクロックを得ることができる。 しかも、 -\fBCLOCK_REALTIME\fP における複雑な処理を行う必要もなくなる。 \fBCLOCK_REALTIME\fP では、 -\fBsettimeofday\fP(2) を使って時刻を変更した場合、時刻に不連続な変化が発生するからだ。 -.TP -\fBCLOCK_PROCESS_CPUTIME_ID\fP (Linux 2.6.12 以降) -プロセス単位の CPU タイムクロック (そのプロセスの全スレッドで消費される CPU 時間を計測する)。 -.TP -\fBCLOCK_THREAD_CPUTIME_ID\fP (Linux 2.6.12 以降) -スレッド固有の 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 バージョン -これらのシステムコールは Linux 2.6 で初めて登場した。 -.SH 準拠 -SUSv2, POSIX.1\-2001. -.SH 可用性 -これらの関数が利用可能な POSIX システムでは、\fI\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 システムに関する歴史的な注意事項" -Linux が \fBCLOCK_PROCESS_CPUTIME_ID\fP と \fBCLOCK_THREAD_CPUTIME_ID\fP -クロックのカーネルによるサポートを追加する前は、 glibc はこれらのクロックは多くのプラットフォームで 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 カーネルとは異なり) オフセットを扱うためのコードを提供しない。 -通常はこれらのオフセットが小さいので、多くの場合でその影響は無視できる。 - -glibc 2.4 以降では、 このページで説明したシステムコールのラッパー関数は、 \fBCLOCK_PROCESS_CPUTIME_ID\fP と -\fBCLOCK_THREAD_CPUTIME_ID\fP のカーネル実装が利用できるシステム (すなわち Linux 2.6.12 以降) -ではカーネル実装を利用することで、 上述の問題を回避している。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 89550411..00000000 --- a/manual/LDP_man-pages/draft/man2/clock_nanosleep.2 +++ /dev/null @@ -1,160 +0,0 @@ -.\" Copyright (c) 2008, Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2008 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2008-08-21, Akihiro MOTOKI , LDP v3.04 -.\" -.TH CLOCK_NANOSLEEP 2 2014\-12\-31 Linux "Linux Programmer's Manual" -.SH 名前 -clock_nanosleep \- 指定したクロックでの高精度な実行停止 (sleep) -.SH 書式 -\fB#include \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 -\fI\-lrt\fP とリンクする (バージョン 2.17 より前の glibc のみ) -.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) を参照。 また、 \fBclock_getcpuclockid\fP(3) と -\fBpthread_getcpuclockid\fP(3) が返す CPU クロック ID は \fIclock_id\fP に渡すこともできる。 - -\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), \fBrestart_syscall\fP(2), -\fBtimer_create\fP(2), \fBsleep\fP(3), \fBusleep\fP(3), \fBtime\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 99bb3ad8..00000000 --- a/manual/LDP_man-pages/draft/man2/clone.2 +++ /dev/null @@ -1,673 +0,0 @@ -.\" Copyright (c) 1992 Drew Eckhardt , 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 -.\" Modified 24 Jul 1993 by Rik Faith -.\" Modified 21 Aug 1994 by Michael Chastain : -.\" New man page (copied from 'fork.2'). -.\" Modified 10 June 1995 by Andries Brouwer -.\" Modified 25 April 1998 by Xavier Leroy -.\" 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 ) -.\" various other minor tidy ups and clarifications. -.\" Modified 26 Jun 2001 by Michael Kerrisk -.\" Updated notes for 2.4.7+ behavior of CLONE_THREAD -.\" Modified 15 Oct 2002 by Michael Kerrisk -.\" 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 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001 HANATAKA Shinya -.\" and Copyright(c) 2002, 2005-2008 Akihiro MOTOKI -.\" Translated 2001-08-17, HANATAKA Shinya -.\" Modified 2002-09-24, Akihiro MOTOKI -.\" Modified 2005-02-02, Akihiro MOTOKI -.\" Updated 2005-04-17, Akihiro MOTOKI -.\" Updated 2005-09-10, Akihiro MOTOKI -.\" Updated 2006-03-05, Akihiro MOTOKI, LDP v2.25 -.\" Updated 2007-01-05, Akihiro MOTOKI, LDP v2.43 -.\" Updated 2007-05-01, Akihiro MOTOKI, LDP v2.46 -.\" Updated 2007-06-13, Akihiro MOTOKI, LDP v2.55 -.\" Updated 2008-08-04, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2008-11-09, Akihiro MOTOKI, LDP v3.10 -.\" Updated 2009-03-02, Akihiro MOTOKI, LDP v3.19 -.\" Updated 2010-04-11, Akihiro MOTOKI, LDP v3.24 -.\" Updated 2012-05-08, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH CLONE 2 2014\-09\-21 Linux "Linux Programmer's Manual" -.SH 名前 -clone, __clone2 \- 子プロセスを作成する -.SH 書式 -.nf -/* glibc ラッパー関数のプロトタイプ */ - -\fB#include \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 - -/* 素のシステムコールのプロトタイプ */ - -\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 -glibc ラッパー関数の機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBclone\fP(): -.ad l -.RS 4 -.PD 0 -.TP 4 -glibc 2.14 以降: -_GNU_SOURCE -.TP 4 -.\" See http://sources.redhat.com/bugzilla/show_bug.cgi?id=4749 -glibc 2.14 より前: -_BSD_SOURCE || _SVID_SOURCE - /* _GNU_SOURCE も定義される */ -.PD -.RE -.ad b -.SH 説明 -\fBclone\fP() は、 \fBfork\fP(2) と似た方法で新しいプロセスを作成する。 - -このページでは、 glibc の \fBclone\fP() ラッパー関数とその裏で呼ばれるシステムコールの両方について説明している。 -メインの説明はラッパー関数に関するものである。 素のシステムコールにおける差分はこのページの最後の方で説明する。 - -\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/ -IPC 名前空間は、独立の System\ V IPC オブジェクト空間 (\fBsvipc\fP(7) 参照) を提供する 。 (Linux 2.6.30 -以降では) 独立した POSIX メッセージキュー空間 (\fBmq_overview\fP(7) 参照) も提供される。 これらの IPC -機構に共通の特徴として、 IPC オブジェクトはファイルシステムのパス名とは違った仕組みで識別されるという点がある。 - -ある IPC 名前空間に作成されたオブジェクトは、 その名前空間のメンバーである他のすべてのプロセスからも見えるが、 違う IPC -名前空間のプロセスからは見えない。 - -IPC 名前空間が破棄される時 (すなわち、その名前空間のメンバーの最後のプロセスが終了する時)、 その名前空間の全ての IPC -オブジェクトは自動的に破棄される。 - -特権プロセス (\fBCAP_SYS_ADMIN\fP) だけが \fBCLONE_NEWIPC\fP を使用できる。 このフラグは -\fBCLONE_SYSVSEM\fP と組み合わせて指定することはできない。 - -IPC 名前空間の詳細は \fBnamespaces\fP(7) を参照。 -.TP -\fBCLONE_NEWNET\fP (Linux 2.6.24 以降) -(このフラグの実装は、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) に戻される (親プロセスのネットワーク名前空間に戻される訳ではない)。 -ネットワーク名前空間のさらなる情報は \fBnamespaces\fP(7) を参照。 - -特権プロセス (\fBCAP_SYS_ADMIN\fP) だけが \fBCLONE_NEWNET\fP を使用できる。 -.TP -\fBCLONE_NEWNS\fP (Linux 2.4.19 以降) -\fBCLONE_NEWNS\fP がセットされている場合、 clone で作成された子プロセスは新しいマウント名前空間で開始され、 -新しい名前空間は親プロセスの名前空間のコピーで初期化される。 \fBCLONE_NEWNS\fP がセットされていない場合、 -子プロセスは親プロセスと同じマウント名前空間となる。 - -マウント名前空間の詳細は \fBnamespaces\fP(7) を参照。 - -.\" See https://lwn.net/Articles/543273/ -特権プロセス (\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 -.\" and Kir Kolyshkin -.\" -.\" The primary kernel commit is 30e49c263e36341b60b735cbef5ca37912549264 -.\" Author: Pavel Emelyanov -\fBCLONE_NEWPID\fP が設定された場合、新しい PID 名前空間でプロセスを作成する。 このフラグが設定されていない場合、 -(\fBfork\fP(2) の場合と同様) 呼び出し元のプロセスと同じ PID 名前空間で プロセスが作成される。 -このフラグは、コンテナの実装での使用を意図して用意されたものである。 - -PID 名前空間の詳細は \fBnamespaces\fP(7) と \fBpid_namespaces\fP(7) を参照。 - -特権プロセス (\fBCAP_SYS_ADMIN\fP) だけが \fBCLONE_NEWPID\fP を使用できる。 このフラグは \fBCLONE_THREAD\fP -や \fBCLONE_PARENT\fP と組み合わせて指定することはできない。 -.TP -\fBCLONE_NEWUSER\fP -(このフラグが \fBclone\fP() で意味を持つようになったのは Linux 2.6.23 である。 現在の \fBclone\fP() -の動作が取り込まれたのは Linux 3.5 であり、 ユーザー名前空間が完全に機能するようにする最後の機能が取り込まれたのは Linux 3.8 -である。) - -\fBCLONE_NEWUSER\fP がセットされている場合、新しいユーザー名前空間でプロセスを作成する。 このフラグがセットされていない場合、 -(\fBfork\fP(2) の場合と同様に) 呼び出し元のプロセスと同じユーザー名前空間でプロセスが作成される。 - -ユーザー名前空間の詳細は \fBnamespaces\fP(7) と \fBuser_namespaces\fP(7) を参照。 - -.\" Before Linux 2.6.29, it appears that only CAP_SYS_ADMIN was needed -Linux 3.8 より前では、 \fBCLONE_NEWUSER\fP を使用するには、 呼び出し元は \fBCAP_SYS_ADMIN\fP, -\fBCAP_SETUID\fP, \fBCAP_SETGID\fP の 3 つのケーパリビティを持っている必要があった。 Linux 3.8 以降では、 -ユーザー名前空間を作成するのに特権は必要なくなった。 - -.\" commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71 -.\" https://lwn.net/Articles/543273/ -.\" The fix actually went into 3.9 and into 3.8.3. However, user namespaces -.\" were, for practical purposes, unusable in earlier 3.8.x because of the -.\" various filesystems that didn't support userns. -このフラグは \fBCLONE_THREAD\fP や \fBCLONE_PARENT\fP と組み合わせて指定することはできない。 セキュリティ上の理由から、 -\fBCLONE_NEWUSER\fP は \fBCLONE_FS\fP と組み合わせて指定することはできない。 - -ユーザー名前空間の詳細は \fBuser_namespaces\fP(7) を参照。 -.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 名前空間のプロセスには見えない。 - -特権プロセス (\fBCAP_SYS_ADMIN\fP) だけが \fBCLONE_NEWUTS\fP を使用できる。 - -UTS 名前空間の詳細は \fBnamespaces\fP(7) を参照。 -.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 セマフォの調整値 (\fIsemadj\fP) -(\fBsemop\fP(2) 参照) を共有する。 この場合、共有されたリストはこのリストを共有する全プロセスの \fIsemadj\fP 値を積算し、 -セマフォ調整はこのリストを共有している最後のプロセスが終了した際 (または \fBunshare\fP(2) を使ってリストの共有が中止された際) -に実行される。 このフラグがセットされていなければ、 子プロセスは独自のセマフォ \fIsemadj\fP リストを持つ (リストの初期値は空である)。 -.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 -も含まれていなければならない (Linux 2.6.0\-test6 以降では、 \fBCLONE_SIGHAND\fP を指定する場合 \fBCLONE_VM\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 "C ライブラリとカーネル ABI の違い" -素の \fBclone\fP システムコールは、より \fBfork\fP(2) に近いかたちになっており、 -子プロセスの実行が呼び出しが行われた場所から続けられる。 そのため、 \fBclone\fP() ラッパー関数の引き数 \fIfn\fP と \fIarg\fP -は省略される。 また、 引き数の順序も違っている。 x86 と他の多くのアーキテクチャーにおける、 素のシステムコールのインターフェースは、 -おおまかには次のようになっている。 -.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 -オプションを指定してはならない。 - -いくつかのアーキテクチャーでは、システムコールの引き数の順序は上記とは異なっている。 microblaze, ARM, ARM 64, PA\-RISC, -arc, Power PC, xtensa, MIPS アーキテクチャーでは、 4 番目と 5 番目の引き数の順番が逆である。 cris と s390 -アーキテクチャーでは、最初と 2 番目の引き数の順番が逆である。 -.SS "blackfin, m68k, sparc" -blackfin, m68k, sparc では引き数渡しの規約が上記の説明とは異なる。 詳細は、カーネル (と glibc) のソースを参照のこと。 -.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 -上記のプロトタイプは glibc ラッパー関数用のものである。 素のシステムコールのインターフェースには引き数 \fIfn\fP と \fIarg\fP がない。 -また、引き数の順序が変わり、 \fIflags\fP が最初の引き数で、 \fItls\fP が最後の引き数である。 -.PP -\fB__clone2\fP() は \fBclone\fP() と同じように動作するが、以下の点が異なる: \fIchild_stack_base\fP -は子プロセスのスタックエリアの最小のアドレスを指し、 \fIstack_size\fP は \fIchild_stack_base\fP -が指し示すスタックエリアの大きさを示す。 -.SS "Linux 2.4 以前" -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 -すでに実行中のプロセスが多すぎる。 \fBfork\fP(2) 参照。 -.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 -.\" commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71 -\fBCLONE_FS\fP と \fBCLONE_NEWNS\fP の両方が \fIflags\fP に指定された。 -.TP -\fBEINVAL\fP (Linux 3.9 以降) -\fBCLONE_NEWUSER\fP と \fBCLONE_FS\fP の両方が \fIflags\fP に指定された。 -.TP -\fBEINVAL\fP -\fBCLONE_NEWIPC\fP と \fBCLONE_SYSVSEM\fP の両方が \fIflags\fP に指定された。 -.TP -\fBEINVAL\fP -\fBCLONE_NEWPID\fP と \fBCLONE_NEWUSER\fP の一方 (もしくは両方) と、 \fBCLONE_THREAD\fP と -\fBCLONE_PARENT\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 が指定された。 -.TP -\fBEPERM\fP -\fBCLONE_NEWUSER\fP が \fIflags\fP に指定されたが、 呼び出し元の実効ユーザー ID もしくは実効グループ ID -が親名前空間にマッピングがない (\fBuser_namespaces\fP(7) 参照)。 -.TP -\fBEPERM\fP (Linux 3.9 以降) -.\" commit 3151527ee007b73a0ebd296010f1c0454a919c7d -.\" FIXME What is the rationale for this restriction? -\fBCLONE_NEWUSER\fP が \fIflags\fP に指定され、 呼び出し元が chroot された環境にいる (すなわち、呼び出し元の root -ディレクトリが呼び出し元が属するマウント名前空間の root ディレクトリに一致しない)。 -.TP -\fBEUSERS\fP (Linux 3.11 以降) -\fBCLONE_NEWUSER\fP が \fIflags\fP に指定されており、 この呼び出しによりネストされたユーザー名前空間数の上限を超えてしまう。 -\fBuser_namespaces\fP(7) を参照。 -.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 - - 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 例 -以下のプログラムは、 別の UTS 名前空間で動作する子プロセスを \fBclone\fP() を使って作成する例である。 子プロセスは、自分の UTS -名前空間においてホスト名を変更する。 それから、親プロセスと子プロセスの両方でシステムのホスト名を表示し、 親プロセスと子プロセスの UTS -名前空間でホスト名が異なることを確認する。 このプログラムの使用方法については \fBsetns\fP(2) を参照。 -.SS プログラムのソース -.nf -#define _GNU_SOURCE -#include -#include -#include -#include -#include -#include -#include - -#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \e - } while (0) - -static int /* clone された子プロセスの開始関数 */ -childFunc(void *arg) -{ - struct utsname uts; - - /* 子プロセスの UTS 名前空間でホスト名を変更する */ - - if (sethostname(arg, strlen(arg)) == \-1) - errExit("sethostname"); - - /* ホスト名を取得し表示する */ - - if (uname(&uts) == \-1) - errExit("uname"); - printf("uts.nodename in child: %s\en", uts.nodename); - - /* sleep を使ってしばらく名前空間をオープンされたままにする。 - これにより実験を行うことができる \-\- 例えば、 - 別のプロセスがこの名前空間に参加するなど。 */ - - sleep(200); - - return 0; /* 子プロセスを終了する */ -} - -#define STACK_SIZE (1024 * 1024) /* clone される子プロセスのスタックサイズ */ - -int -main(int argc, char *argv[]) -{ - char *stack; /* スタックバッファーの先頭 */ - char *stackTop; /* スタックバッファーの末尾 */ - pid_t pid; - struct utsname uts; - - if (argc < 2) { - fprintf(stderr, "Usage: %s \en", argv[0]); - exit(EXIT_SUCCESS); - } - - /* 子プロセス用のスタックを割り当てる */ - - stack = malloc(STACK_SIZE); - if (stack == NULL) - errExit("malloc"); - stackTop = stack + STACK_SIZE; /* スタックは下方向に伸びるものとする */ - - /* 自分専用の UTS 名前空間を持つ子プロセスを作成する; - 子プロセスは childFunc() の実行を開始する */ - - pid = clone(childFunc, stackTop, CLONE_NEWUTS | SIGCHLD, argv[1]); - if (pid == \-1) - errExit("clone"); - printf("clone() returned %ld\en", (long) pid); - - /* 親プロセスの実行はここに来る */ - - sleep(1); /* 子プロセスがホスト名を変更する時間を与える */ - - /* 親プロセスの UTS 名前空間でのホスト名を表示する; - これは子プロセスの UTS 名前空間でのホスト名とは異なる */ - - if (uname(&uts) == \-1) - errExit("uname"); - printf("uts.nodename in parent: %s\en", uts.nodename); - - if (waitpid(pid, NULL, 0) == \-1) /* 子プロセスを待つ */ - 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), \fBnamespaces\fP(7), -\fBpthreads\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/close.2 b/manual/LDP_man-pages/draft/man2/close.2 deleted file mode 100644 index c390bdee..00000000 --- a/manual/LDP_man-pages/draft/man2/close.2 +++ /dev/null @@ -1,115 +0,0 @@ -.\" 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 Wed Jul 21 22:40:25 1993 by Rik Faith -.\" Modified Sat Feb 18 15:27:48 1995 by Michael Haardt -.\" Modified Sun Apr 14 11:40:50 1996 by Andries Brouwer : -.\" corrected description of effect on locks (thanks to -.\" Tigran Aivazian ). -.\" Modified Fri Jan 31 16:21:46 1997 by Eric S. Raymond -.\" Modified 2000-07-22 by Nicolás Lichtmaier -.\" added note about close(2) not guaranteeing that data is safe on close. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Sat Jun 1 22:22:05 JST 1997 -.\" by HANATAKA Shinya -.\" Modified Mon Sep 23 20:42:13 JST 2000 -.\" by HANATAKA Shinya -.\" Updated & Modified Sat Apr 7 03:24:03 JST 2001 -.\" by Yuichi SATO -.\" Updated & Modified Mon Jan 14 12:41:36 JST 2002 by Yuichi SATO -.\" Updated & Modified Wed Dec 29 07:01:14 JST 2004 -.\" by Yuichi SATO -.\" Updated 2007-10-12, Akihiro MOTOKI, LDP v2.66 -.\" Updated 2008-02-10, Akihiro MOTOKI , LDP v2.77 -.\" -.TH CLOSE 2 2013\-12\-30 Linux "Linux Programmer's Manual" -.SH 名前 -close \- ファイルディスクリプターをクローズする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint close(int \fP\fIfd\fP\fB);\fP -.fi -.SH 説明 -\fBclose\fP() は、ファイルディスクリプターをクローズする。 そのディスクリプターは、どのファイルも参照していない状態になり、 -再利用が可能になる。 そのファイルディスクリプターに関連づけられたファイルに かけられたレコードロック (\fBfcntl\fP(2) 参照) -のうち、そのプロセスが保有しているものは、 (そのファイルディスクリプターがロック取得に利用されたか どうかによらず) すべて削除される。 -.PP -\fIfd\fP が、対応するオープンファイル記述 (open file description) (\fBopen\fP(2) 参照) -を参照する最後のファイルディスクリプターだった場合、 オープンファイル記述に関連するリソースが解放される。 そのディスクリプターが、 \fBunlink\fP -を使用して削除 (remove) されたファイルに対する最後の参照だった場合には、 そのファイルは削除 (delete) される。 -.SH 返り値 -\fBclose\fP() は成功した場合は 0 を返す。 エラーが発生した場合は \-1 を返して、 \fIerrno\fP を適切に設定する。 -.SH エラー -.TP -\fBEBADF\fP -\fIfd\fP が有効なオープンされたディスクリプターでない。 -.TP -\fBEINTR\fP -\fBclose\fP() コールがシグナルにより中断 (interrupt) された。 \fBsignal\fP(7) 参照。 -.TP -\fBEIO\fP -I/O エラーが発生した。 -.SH 準拠 -.\" SVr4 documents an additional ENOLINK error condition. -SVr4, 4.3BSD, POSIX.1\-2001. -.SH 注意 -\fBclose\fP() の返り値のチェックはよく省略されるが、 これは深刻なプログラミングエラーである。 前の \fBwrite\fP(2) -処理に関するエラーが最後の \fBclose\fP() のときになって初めて通知される場合がありうる。 ファイルクローズの際に返り値をチェックしないと、 -気付かないうちにデータを失ってしまうかもしれない。 これは特に NFS -やディスククォータを使用した場合に見られる。返り値は状態確認用にのみ利用すべき点に注意すること。特に、\fBEINTR\fP 後に \fBclose\fP() -を再度行うべきではない。なぜなら、これにより、別のスレッドが再利用したディスクリプターをクローズしてしまう可能性があるからだ。 -.PP -クローズに成功しても、データがディスクに保存されたかどうかは 保証されない (カーネルが書きこみを遅延させることがあるためである)。 -ストリームがクローズされるときにバッファーをフラッシュするかどうかは、 ファイルシステムによって異なる。 -データが物理的に保存されることを保証する必要がある場合には、 \fBfsync\fP(2) を使用すること (\fBfsync\fP(3) -を行った時点で、データの保存はディスクのハードウェアに依存する 問題となる)。 -.PP -.\" Date: Tue, 4 Sep 2007 13:57:35 +0200 -.\" From: Fredrik Noring -.\" One such race involves signals and ERESTARTSYS. If a file descriptor -.\" in use by a system call is closed and then reused by e.g. an -.\" independent open() in some unrelated thread, before the original system -.\" call has restarted after ERESTARTSYS, the original system call will -.\" later restart with the reused file descriptor. This is most likely a -.\" serious programming error. -同じプロセス内の他のスレッドのシステムコールが使用している可能性がある間に、 ファイルディスクリプターをクローズするのは、おそらく賢明ではないだろう。 -ファイルディスクリプターは再利用されるかもしれないので、 あいまいな競合条件となることがあり、意図しない副作用の原因となりうる。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/connect.2 b/manual/LDP_man-pages/draft/man2/connect.2 deleted file mode 100644 index 7b8901bb..00000000 --- a/manual/LDP_man-pages/draft/man2/connect.2 +++ /dev/null @@ -1,207 +0,0 @@ -.\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu) -.\" Portions extracted from /usr/include/sys/socket.h, which does not have -.\" any authorship information in it. It is probably available under the GPL. -.\" -.\" %%%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 -.\" -.\" -.\" Other portions are from the 6.9 (Berkeley) 3/10/91 man page: -.\" -.\" Copyright (c) 1983 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 -.\" -.\" Modified 1997-01-31 by Eric S. Raymond -.\" Modified 1998, 1999 by Andi Kleen -.\" Modified 2004-06-23 by Michael Kerrisk -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Yosiaki Yanagihara -.\" all rights reserved. -.\" Translated 1996-06-25, Yosiaki Yanagihara -.\" Updated & Modified 1997-11-06, HANATAKA Shinya -.\" Updated & Modified 1999-08-14, HANATAKA Shinya -.\" Updated & Modified 2000-01-13, Kentaro Shirakata -.\" Updated & Modified 2005-02-23, Akihiro MOTOKI -.\" Updated & Modified 2005-10-05, Akihiro MOTOKI -.\" -.TH CONNECT 2 2014\-09\-06 Linux "Linux Programmer's Manual" -.SH 名前 -connect \- ソケットの接続を行う -.SH 書式 -.nf -\fB#include \fP /* 「注意」参照 */ -.br -\fB#include \fP -.sp -\fBint connect(int \fP\fIsockfd\fP\fB, const struct sockaddr *\fP\fIaddr\fP\fB,\fP -\fB socklen_t \fP\fIaddrlen\fP\fB);\fP -.fi -.SH 説明 -\fBconnect\fP() システムコールは、ファイルディスクリプター \fIsockfd\fP が参照しているソケットを \fIaddr\fP -で指定されたアドレスに接続する。 \fIaddrlen\fP 引き数は \fIaddr\fP の大きさを示す。 \fIaddr\fP のアドレスのフォーマットはソケット -\fIsockfd\fP のアドレス空間により異なる。 さらなる詳細は \fBsocket\fP(2) を参照のこと。 - -ソケット \fIsockfd\fP が \fBSOCK_DGRAM\fP 型であれば、 \fIaddr\fP は、デフォルトのデータグラムの送信先のアドレスであり、 -データグラムを受信する唯一のアドレスを示すに過ぎない。 ソケットが \fBSOCK_STREAM\fP 型もしくは \fBSOCK_SEQPACKET\fP -型であれば、このシステムコールは \fIaddr\fP で指定されたアドレスに結び付けられたソケットに対する接続の 作成を試みる。 -.PP -一般的に、接続指向 (connection\-oriented) プロトコルでは一度だけ \fBconnect\fP() が成功する。 コネクションレス -(connectionless) プロトコルでは対応を変更するために何度も \fBconnect\fP() を使用できる。 非接続ソケットは -\fIsockaddr\fP の \fIsa_family\fP メンバに \fBAF_UNSPEC\fP を設定することで、接続アドレスの対応を解消することができる -(\fBAF_UNSPEC\fP はカーネル 2.2 以降の Linux でサポート)。 -.SH 返り値 -接続または対応づけに成功するとゼロを返す。 失敗すると \-1 を返し、 \fIerrno\fP に適切な値を設定する。 -.SH エラー -以下は一般的なソケットについてのエラーである。他にドメイン特有のエラー が発生する可能性がある。 -.TP -\fBEACCES\fP -UNIX ドメインソケットはパス名で識別される。 ソケットファイルへの書き込み許可がなかったか、パス名へ -到達するまでのディレクトリのいずれかに対する検索許可がなかった。 (\fBpath_resolution\fP(7) も参照のこと) -.TP -\fBEACCES\fP, \fBEPERM\fP -ソケットのブロードキャストフラグが有効になっていないのに ユーザーがブロードキャストへ接続を試みた。または、ローカルのファイアウォールの -規則により接続の要求が失敗した。 -.TP -\fBEADDRINUSE\fP -ローカルアドレスが既に使用されている。 -.TP -\fBEADDRNOTAVAIL\fP -(インターネットドメインソケットの場合) \fIsockfd\fP が参照するソケットがそれ以前にアドレスにバインドされておらず、 -そのソケットに一時ポートをバインドしようとした際に、 一時ポートとして使用する範囲のポート番号がすべて使用中であった。 \fBip\fP(7) の -\fI/proc/sys/net/ipv4/ip_local_port_range\fP の議論を参照のこと。 -.TP -\fBEAFNOSUPPORT\fP -渡されたアドレスの \fIsa_family\fP フィールドが正しいアドレスファミリーではない。 -.TP -\fBEAGAIN\fP -ルーティングキャッシュにエントリーが十分にない。 -.TP -\fBEALREADY\fP -ソケットが非停止 (nonblocking) に設定されており、 前の接続が完了していない。 -.TP -\fBEBADF\fP -ファイルディスクリプターがディスクリプターテーブルの 有効なインデックスではない。 -.TP -\fBECONNREFUSED\fP -リモートアドレスで接続を待っているプログラムがない。 -.TP -\fBEFAULT\fP -ソケット構造体のアドレスがユーザーのアドレス空間外にある。 -.TP -\fBEINPROGRESS\fP -ソケットが非停止 (nonblocking) に設定されていて、接続をすぐに 完了することができない。その場合、 \fBselect\fP(2) や -\fBpoll\fP(2) を使ってそのソケットが書き込み可能になるのを待つことで、 接続の完了を知ることができる。 \fBselect\fP(2) -で書き込み可能になった後に、 \fBgetsockopt\fP(2) を使って \fBSOL_SOCKET\fP レベルで \fBSO_ERROR\fP -オプションを読み出すこ とにより、 \fBconnect\fP() が成功したか、失敗したかを判断できる。 成功の場合 \fBSO_ERROR\fP が 0 -であり、 失敗の場合 \fBSO_ERROR\fP がここのリストにあるいずれかのエラーコードであり、 それにより失敗の原因が分かる。 -.TP -\fBEINTR\fP -.\" For TCP, the connection will complete asynchronously. -.\" See http://lkml.org/lkml/2005/7/12/254 -捕捉されたシグナルによりシステムコールが中断された。 \fBsignal\fP(7) 参照。 -.TP -\fBEISCONN\fP -ソケットは既に接続 (connect) されている。 -.TP -\fBENETUNREACH\fP -到達できないネットワークである。 -.TP -\fBENOTSOCK\fP -ファイルディスクリプターがソケットと関連付けられていない。 -.TP -\fBEPROTOTYPE\fP -ソケットタイプが要求された通信プロトコルではサポートされていない。 このエラーは、 例えば UNIX -ドメインデータグラムソケットをストリームソケットに接続しようとした場合などに起こり得る。 -.TP -\fBETIMEDOUT\fP -接続を試みている途中で時間切れ (timeout) になった。サーバーが混雑していて 新たな接続を受け入れられないのかもしれない。 IP ソケットでは、 -syncookie がサーバーで有効になっている場合、 タイムアウトが非常に長くなる場合があるので注意すること。 -.SH 準拠 -.\" SVr4 documents the additional -.\" general error codes -.\" .BR EADDRNOTAVAIL , -.\" .BR EINVAL , -.\" .BR EAFNOSUPPORT , -.\" .BR EALREADY , -.\" .BR EINTR , -.\" .BR EPROTOTYPE , -.\" and -.\" .BR ENOSR . -.\" It also -.\" documents many additional error conditions not described here. -SVr4, 4.4BSD, (\fBconnect\fP() 関数は 4.2BSD で最初に登場した), POSIX.1\-2001. -.SH 注意 -POSIX.1\-2001 では \fI\fP のインクルードは必須とされておらず、 Linux -ではこのヘッダーファイルは必要ではない。 しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダーファイルが -必要であり、移植性が必要なアプリケーションではこのファイルを インクルードするのが賢明であろう。 - -\fBconnect\fP() の三番目の引き数は 4.x BSD や libc4, libc5 と同様に実際には \fIint\fP である。 POSIX -では紆余曲折を経て現在の \fIsocklen_t\fP になっており、 glibc でも \fIsocklen_t\fP を使っている。 \fBaccept\fP(2) -も参照のこと。 - -\fBconnect\fP() が失敗した場合、そのソケットの状態は不定だと考えること。 -移植性を考慮したアプリケーションでは、そのソケットをクローズし、再接続用に新しいソケットを作成すべきである。 -.SH 例 -\fBconnect\fP() の利用例が \fBgetaddrinfo\fP(3) に記載されている。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index 6d0a5289..dd1f27ef 100644 --- a/manual/LDP_man-pages/draft/man2/create_module.2 +++ b/manual/LDP_man-pages/draft/man2/create_module.2 @@ -16,20 +16,21 @@ .\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. .\" Translated 2006-07-29, Akihiro MOTOKI .\" -.TH CREATE_MODULE 2 2014\-05\-10 Linux "Linux Programmer's Manual" +.TH CREATE_MODULE 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 create_module \- ローダーブルモジュールのエントリーを作成する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBcaddr_t create_module(const char *\fP\fIname\fP\fB, size_t \fP\fIsize\fP\fB);\fP .fi - -\fI注意\fP: この関数の宣言は glibc のヘッダーでは提供されていない。「注意」を参照。 +.PP +\fINote\fP: No declaration of this system call is provided in glibc headers; +see NOTES. .SH 説明 \fI注意\fP: このシステムコールが存在するのは、カーネル 2.6 より前の Linux だけである。 - +.PP \fBcreate_module\fP() は、ローダーブルモジュールのエントリーを作成し、そのモジュールの保持に必要な カーネルメモリーを予約しようとする。 このシステムコールを使うには特権が必要である。 .SH 返り値 @@ -59,13 +60,14 @@ create_module \- ローダーブルモジュールのエントリーを作成す .SH 準拠 \fBcreate_module\fP() は Linux 固有である。 .SH 注意 -\fBcreate_module\fP() システムコールは glibc ではサポートされていない。 glibc ヘッダーでは宣言は提供されていないが、 -歴史の紆余曲折を経て glibc はこのシステムコールに対する ABI を公開していない。 -したがって、このシステムコールを利用するには、自分のコードの中で手動でインターフェースを宣言すればよい。 \fBsyscall\fP(2) -を使ってシステムコールを起動できる。 +This obsolete system call is not supported by glibc. No declaration is +provided in glibc headers, but, through a quirk of history, glibc versions +before 2.23 did export an ABI for this system call. Therefore, in order to +employ this system call, it was sufficient to manually declare the interface +in your code; alternatively, you could invoke the system call using +\fBsyscall\fP(2). .SH 関連項目 \fBdelete_module\fP(2), \fBinit_module\fP(2), \fBquery_module\fP(2) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/delete_module.2 b/manual/LDP_man-pages/draft/man2/delete_module.2 index b9694b7a..1f2460f6 100644 --- a/manual/LDP_man-pages/draft/man2/delete_module.2 +++ b/manual/LDP_man-pages/draft/man2/delete_module.2 @@ -31,20 +31,21 @@ .\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. .\" Translated 2006-07-29, Akihiro MOTOKI .\" -.TH DELETE_MODULE 2 2014\-05\-10 Linux "Linux Programmer's Manual" +.TH DELETE_MODULE 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 delete_module \- カーネルモジュールをアンロードする .SH 書式 .nf \fBint delete_module(const char *\fP\fIname\fP\fB, int \fP\fIflags\fP\fB);\fP .fi - -\fI注意\fP: この関数の宣言は glibc のヘッダーでは提供されていない。「注意」を参照。 +.PP +\fINote\fP: No declaration of this system call is provided in glibc headers; +see NOTES. .SH 説明 \fBdelete_module\fP() システムコールは、 \fIname\fP で特定される未使用のロード可能なモジュールのエントリーを削除しようとする。 モジュールに \fIexit\fP 関数がある場合、 モジュールをアンロードする前にこの関数が実行される。 \fIflags\fP 引き数は、以下で説明するようにシステムコールの動作を変更するのに使用される。 このシステムコールには特権が必要である。 - +.PP モジュールの削除は以下のルールにしたがって行われる。 .IP 1. 4 このモジュールに依存している (このモジュールで定義されているシンボルを参照している) モジュールがロードされている場合、 この呼び出しは失敗する。 @@ -55,7 +56,7 @@ delete_module \- カーネルモジュールをアンロードする .\" O_NONBLOCK == KMOD_REMOVE_NOWAIT in kmod library モジュールの参照カウントが 0 でない場合、 その動作は \fIflags\fP にセットされたビットによって決まる。 通常の使用時は (「注意」参照)、 \fBO_NONBLOCK\fP は常に指定され、 \fBO_TRUNC\fP フラグが追加で指定されることがある。 - +.IP \fIflags\fP の組み合わせが持つ効果は以下のとおりである。 .RS 4 .TP @@ -78,8 +79,10 @@ delete_module \- カーネルモジュールをアンロードする .RE .RE .PP -\fBO_TRUNC\fP フラグには上記のルールに加えてもう一つの効果がある。 デフォルトでは、 モジュールに \fIinit\fP 関数があるが \fIexit\fP -関数がない場合、 そのモジュールを削除しようとすると失敗する。 しかし、 \fBO_TRUNC\fP が指定された場合、 この要件はスキップされる。 +The \fBO_TRUNC\fP flag has one further effect on the rules described above. By +default, if a module has an \fIinit\fP function but no \fIexit\fP function, then +an attempt to remove the module fails. However, if \fBO_TRUNC\fP was +specified, this requirement is bypassed. .PP \fBO_TRUNC\fP フラグの使用は危険である! カーネルが \fBCONFIG_MODULE_FORCE_UNLOAD\fP で作成されていない場合、 このフラグは黙って無視される (通常は \fBCONFIG_MODULE_FORCE_UNLOAD\fP は有効になっている)。 @@ -108,26 +111,27 @@ delete_module \- カーネルモジュールをアンロードする .SH 準拠 \fBdelete_module\fP() は Linux 固有である。 .SH 注意 -\fBdelete_module\fP() システムコールは glibc ではサポートされていない。 glibc ヘッダーでは宣言は提供されていないが、 -歴史の紆余曲折を経て glibc はこのシステムコールに対する ABI を公開していない。 -したがって、このシステムコールを利用するには、自分のコードの中で手動でインターフェースを宣言すればよい。 \fBsyscall\fP(2) -を使ってシステムコールを起動できる。 - +The \fBdelete_module\fP() system call is not supported by glibc. No +declaration is provided in glibc headers, but, through a quirk of history, +glibc versions before 2.23 did export an ABI for this system call. +Therefore, in order to employ this system call, it is (before glibc 2.23) +sufficient to manually declare the interface in your code; alternatively, +you can invoke the system call using \fBsyscall\fP(2). +.PP \fIflags\fP に \fBO_NONBLOCK\fP が指定されていない場合に起こる可能性がある割り込み不可のスリープは望ましくないと考えられている。 なぜなら、 スリープしているプロセスは kill できない状態 (unkillable state) のままになるからである。 Linux 3.7 時点では、 \fBO_NONBLOCK\fP の指定は省略可能だが、 将来のカーネルでは必須になるだろう。 .SS "Linux 2.4 以前" Linux 2.4 以前では、 このシステムコールの引き数は 1 つだけであった。 - +.PP \fB int delete_module(const char *\fP\fIname\fP\fB);\fP - +.PP \fIname\fP が NULL の場合、 auto\-clean のマークがついたすべての未使用のモジュールが削除される。 - +.PP Linux 2.4 以前の \fBdelete_module\fP() の動作のより詳細な違いは、 現在のところこのマニュアルページでは説明\fIしない\fP。 .SH 関連項目 \fBcreate_module\fP(2), \fBinit_module\fP(2), \fBquery_module\fP(2), \fBlsmod\fP(8), \fBmodprobe\fP(8), \fBrmmod\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/dup.2 b/manual/LDP_man-pages/draft/man2/dup.2 deleted file mode 100644 index 83d753df..00000000 --- a/manual/LDP_man-pages/draft/man2/dup.2 +++ /dev/null @@ -1,194 +0,0 @@ -.\" This manpage is Copyright (C) 1992 Drew Eckhardt; -.\" and Copyright (C) 1993 Michael Haardt, Ian Jackson. -.\" and Copyright (C) 2005, 2008 Michael Kerrisk -.\" and Copyright (C) 2014 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 1993-07-21, Rik Faith -.\" Modified 1994-08-21, Michael Chastain : -.\" Fixed typoes. -.\" Modified 1997-01-31, Eric S. Raymond -.\" Modified 2002-09-28, aeb -.\" 2009-01-12, mtk, reordered text in DESCRIPTION and added some -.\" details for dup2(). -.\" 2008-10-09, mtk: add description of dup3() -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Takeshi Ueno -.\" all rights reserved. -.\" Translated 1996-07-03, Takeshi Ueno -.\" Modified 1997-12-14, HANATAKA Shinya -.\" Modified 2003-01-16, Akihiro Motoki -.\" Updated & Modified 2004-05-19, Yuichi SATO -.\" Updated & Modified 2005-09-07, Akihiro MOTOKI -.\" Updated 2008-02-10, Akihiro MOTOKI , LDP v2.77 -.\" Updated 2008-11-09, Akihiro MOTOKI, LDP v3.13 -.\" -.TH DUP 2 2015\-01\-22 Linux "Linux Programmer's Manual" -.SH 名前 -dup, dup2, dup3 \- ファイルディスクリプターを複製する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint dup(int \fP\fIoldfd\fP\fB);\fP -\fBint dup2(int \fP\fIoldfd\fP\fB, int \fP\fInewfd\fP\fB);\fP -.sp -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP /* 定数 O_* の定義の取得 */ -\fB#include \fP -.sp -\fBint dup3(int \fP\fIoldfd\fP\fB, int \fP\fInewfd\fP\fB, int \fP\fIflags\fP\fB);\fP -.fi -.SH 説明 -\fBdup\fP() システムコールは、 ファイルディスクリプター \fIoldfd\fP のコピーを作成し、 最も小さい番号の未使用のディスクリプターを -新しいディスクリプターとして使用する。 - -成功が返された場合には、 古いファイルディスクリプターと新しいファイルディスクリプターは 互いに可換なものとして使うことができる。 -2つのファイルディスクリプターは同じファイル記述 (description) (\fBopen\fP(2) 参照) -を参照しており、したがってファイルオフセットやファイル状態フラグが 共有される。例えば、一方のディスクリプターに対して \fBlseek\fP(2) -を使ってファイルオフセットを変更した場合、もう一方のディスクリプターの オフセットも変化する。 - -.\" -2つのディスクリプターはファイルディスクリプターフラグ (close\-on\-exec flag) を共有しない。複製されたディスクリプターの -close\-on\-exec flag (\fBfcntl\fP(2) 参照) は off となる。 -.SS dup2() -\fBdup2\fP() システムコールは \fBdup\fP() と同じ処理を実行するが、 -番号が最も小さい未使用のファイルディスクリプターを使用する代わりに、 -\fInewfd\fP で指定されたディスクリプター番号を使用する。 -ディスクリプター \fInewfd\fP が以前にオープンされていた場合には、 -黙ってそのディスクリプターをクローズしてから再利用する。 - -ファイルディスクリプター \fInewfd\fP をクローズして再利用する処理は -\fIアトミック(不可分)に\fP実行される。これは重要な点である。 なぜなら、 -等価な機能を \fBclose\fP(2) と \fBdup\fP() を使って実装しようとすると、 -2 つの処理の間に \fInewfd\fP が再利用されてしまうという、 -競合状態にさらされることになるからだ。 -このような再利用が起こるのは、 -メインプログラムがファイルディスクリプターを割り当てる -シグナルハンドラーにより割り込まれたり、並行動作するスレッドが -ファイルディスクリプターを割り当てたりすることがあるからだ。 - -以下の点について注意すること: -.IP * 3 -\fIoldfd\fP が有効なファイルディスクリプターでない場合、その呼び出しは失敗し、 \fInewfd\fP はクローズされない。 -.IP * -.\" -\fIoldfd\fP が有効なファイルディスクリプターで、 \fInewfd\fP が \fIoldfd\fP と同じ値の場合、 \fBdup2\fP() は何もせず、 -\fInewfd\fP を返す。 -.SS dup3() -\fBdup3\fP() は \fBdup2\fP() と同じだが、以下の点が異なる。 -.IP * 3 -呼び出し元が、新しいファイルディスクリプターに対して close\-on\-exec フラグを強制的に設定することができる。 これを行うには、 -\fIflags\fP に \fBO_CLOEXEC\fP を指定する。 このフラグが役に立つ理由については、 \fBopen\fP(2) の \fBO_CLOEXEC\fP -フラグの説明を参照のこと。 -.IP * -.\" FIXME . To confirm with Al Viro that this was intended, and its rationale -\fIoldfd\fP が \fInewfd\fP と同じ場合、 \fBdup3\fP() は \fBEINVAL\fP エラーで失敗する。 -.SH 返り値 -成功すると、これらのシステムコールは新しいディスクリプターを返す。 エラーの場合、\-1 を返し、 \fIerrno\fP を適切に設定する。 -.SH エラー -.TP -\fBEBADF\fP -\fIoldfd\fP がオープンされたファイルディスクリプターではない。 -.TP -\fBEBADF\fP -\fInewfd\fP がファイルディスクリプターとして許可されている範囲ではない (\fBgetrlimit\fP(2) の \fBRLIMIT_NOFILE\fP -の議論を参照)。 -.TP -\fBEBUSY\fP -(Linux のみ) \fBopen\fP(2) や \fBdup\fP() との競合状態の場合に、 \fBdup2\fP() や \fBdup3\fP() -はこのエラーを返すかもしれない。 -.TP -\fBEINTR\fP -\fBdup2\fP() や \fBdup3\fP() の呼び出しがシグナルにより割り込まれた。 \fBsignal\fP(7) 参照。 -.TP -\fBEINVAL\fP -(\fBdup3\fP()) \fIflags\fP に無効な値が入っている。 -.TP -\fBEINVAL\fP -.\" FIXME . To confirm with Al Viro that this was intended, and its rationale -(\fBdup3\fP()) \fIoldfd\fP が \fInewfd\fP と同じであった。 -.TP -\fBEMFILE\fP -プロセスがすでにオープンできる最大数までファイルディスクリプター を開いていて、さらに新しいものを開こうとした (\fBgetrlimit\fP(2) -のリソース上限 \fBRLIMIT_NOFILE\fP を参照)。 -.SH バージョン -\fBdup3\fP() はバージョン 2.6.27 で Linux に追加された。 glibc によるサポートはバージョン 2.9 以降で利用できる。 -.SH 準拠 -\fBdup\fP(), \fBdup2\fP(): SVr4, 4.3BSD, POSIX.1\-2001. - -.\" SVr4 documents additional -.\" EINTR and ENOLINK error conditions. POSIX.1 adds EINTR. -.\" The EBUSY return is Linux-specific. -\fBdup3\fP() は Linux 固有である。 -.SH 注意 -\fInewfd\fP が範囲を超えた時に返されるエラーは、 \fBdup2\fP() と \fBfcntl(\fP..., \fBF_DUPFD\fP, ...\fB)\fP -では異っている。 \fBdup2\fP() が \fBF_DUPFD\fP と同じように \fBEINVAL\fP を返すシステムもある。 - -\fInewfd\fP がオープンされていた場合、 -\fBclose\fP(2) 時に報告されることになるエラーはすべて失われる。 -これが心配で、シングルスレッドかつシグナルハンドラーで -ファイルディスクリプターを割り当てるようなプログラムでない場合には、 -正しい方法は \fBdup2\fP() を呼び出す前に -\fInewfd\fP をクローズ「しない」ことである。 -なぜなら、上で説明した競合状況があるからである。 -代わりに、以下のようなコードが使用できることだろう。 - -.nf - /* あとで close() エラーをチェックするのに使用できる - ように 'newfd' の複製を取得する。 EBADF エラーは - 'newfd' がオープンされていないことを意味する。 */ - - tmpfd = dup(newfd); - if (tmpfd == \-1 && errno != EBADF) { - /* 予期しない dup() のエラーを処理する */ - } - - /* アトミックに 'oldfd' を 'newfd' に複製する */ - - if (dup2(oldfd, newfd) == \-1) { - /* dup2() のエラーを処理する */ - } - - /* ここでもともと 'newfd' で参照されていたファイルの - close() エラーをチェックする */ - - if (tmpfd != \-1) { - if (close(tmpfd) == \-1) { - /* close からのエラーを処理する */ - } - } -.fi -.SH 関連項目 -\fBclose\fP(2), \fBfcntl\fP(2), \fBopen\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/epoll_create.2 b/manual/LDP_man-pages/draft/man2/epoll_create.2 index 030c7ecd..a436d186 100644 --- a/manual/LDP_man-pages/draft/man2/epoll_create.2 +++ b/manual/LDP_man-pages/draft/man2/epoll_create.2 @@ -1,4 +1,5 @@ .\" Copyright (C) 2003 Davide Libenzi +.\" and Copyright 2008, 2009, 2012 Michael Kerrisk .\" Davide Libenzi .\" .\" %%%LICENSE_START(GPLv2+_SW_3_PARA) @@ -36,21 +37,20 @@ .\" Updated 2009-03-05 by Kentaro Shirakata .\" Updated 2012-04-30, Akihiro MOTOKI .\" -.TH EPOLL_CREATE 2 2012\-04\-15 Linux "Linux Programmer's Manual" +.TH EPOLL_CREATE 2 2020\-04\-11 Linux "Linux Programmer's Manual" .SH 名前 epoll_create, epoll_create1 \- epoll ファイルディスクリプターをオープンする .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint epoll_create(int \fP\fIsize\fP\fB);\fP \fBint epoll_create1(int \fP\fIflags\fP\fB);\fP .fi .SH 説明 -\fBepoll_create\fP()は \fBepoll\fP(7) インスタンスを作成する。 -Linux 2.6.8 以降では、\fIsize\fP 引き数は無視されるが、 0 より大きな値で -なければならない。下記の「注意」を参照。 - +\fBepoll_create\fP() creates a new \fBepoll\fP(7) instance. Since Linux 2.6.8, +the \fIsize\fP argument is ignored, but must be greater than zero; see NOTES. +.PP \fBepoll_create\fP() は、新しい epoll インスタンスを参照するファイルディスクリプターを返す。 このファイルディスクリプターは、その後の \fBepoll\fP インターフェースの呼び出しに使われる。 もう必要でなくなった場合は、 \fBepoll_create\fP() で返されたファイルディスクリプターは \fBclose\fP(2) を使ってクローズされるべきである。 ある @@ -65,8 +65,9 @@ epoll インスタンスを参照する全てのファイルディスクリプ 新しいファイルディスクリプターに対して close\-on\-exec (\fBFD_CLOEXEC\fP) フラグをセットする。 このフラグが役に立つ理由については、 \fBopen\fP(2) の \fBO_CLOEXEC\fP フラグの説明を参照のこと。 .SH 返り値 -成功すると、これらのシステムコールは 非負のファイルディスクリプターを返す。 エラーの場合、\-1 を返し、 \fIerrno\fP -にエラーを示す値を設定する。 +On success, these system calls return a file descriptor (a nonnegative +integer). On error, \-1 is returned, and \fIerrno\fP is set to indicate the +error. .SH エラー .TP \fBEINVAL\fP @@ -79,15 +80,19 @@ epoll インスタンスを参照する全てのファイルディスクリプ \fI/proc/sys/fs/epoll/max_user_instances\fP によって指定されている、epoll インスタンスのユーザー単位の制限に達した。 更なる詳細については \fBepoll\fP(7) を参照のこと。 .TP +\fBEMFILE\fP +The per\-process limit on the number of open file descriptors has been +reached. +.TP \fBENFILE\fP -オープンされたファイルの総数がシステム制限に達した。 +The system\-wide limit on the total number of open files has been reached. .TP \fBENOMEM\fP カーネルオブジェクトを作成するのに十分なメモリーがなかった。 .SH バージョン \fBepoll_create\fP() はカーネル 2.6 で追加された。 ライブラリによるサポートは glibc バージョン 2.3.2 以降で提供されている。 - +.PP .\" To be precise: kernel 2.5.44. .\" The interface should be finalized by Linux kernel 2.5.66. \fBepoll_create1\fP() はカーネル 2.6.27 で追加された。 @@ -109,6 +114,5 @@ epoll インスタンスを参照する全てのファイルディスクリプ .SH 関連項目 \fBclose\fP(2), \fBepoll_ctl\fP(2), \fBepoll_wait\fP(2), \fBepoll\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/epoll_ctl.2 b/manual/LDP_man-pages/draft/man2/epoll_ctl.2 deleted file mode 100644 index be4336c2..00000000 --- a/manual/LDP_man-pages/draft/man2/epoll_ctl.2 +++ /dev/null @@ -1,183 +0,0 @@ -.\" Copyright (C) 2003 Davide Libenzi -.\" Davide Libenzi -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004-2005 Yuichi SATO -.\" all rights reserved. -.\" Translated 2004-06-15, Yuichi SATO -.\" Updated & Modified 2004-12-29, Yuichi SATO -.\" Updated & Modified 2005-04-20, Yuichi SATO -.\" Updated & Modified 2005-09-06, Akihiro MOTOKI -.\" Updated 2006-07-19, Akihiro MOTOKI , LDP v2.36 -.\" Updated 2009-02-23, Akihiro MOTOKI , LDP v3.19 -.\" -.TH EPOLL_CTL 2 2014\-12\-31 Linux "Linux Programmer's Manual" -.SH 名前 -epoll_ctl \- epoll ディスクリプターのインターフェースを操作する -.SH 書式 -\fB#include \fP -.sp -\fBint epoll_ctl(int \fP\fIepfd\fP\fB, int \fP\fIop\fP\fB, int \fP\fIfd\fP\fB, struct -epoll_event *\fP\fIevent\fP\fB);\fP -.SH 説明 -このシステムコールは、ファイルディスクリプター \fIepfd\fP が参照する \fBepoll\fP(7) -インスタンスに対する操作を行う。 対象のファイルディスクリプター \fIfd\fP に対して、 -操作 \fIop\fP の実行が要求される。 - -\fIop\fP 引き数に指定できる有効な値は以下の通りである。 -.TP -\fBEPOLL_CTL_ADD\fP -対象のファイルディスクリプター \fIfd\fP をファイルディスクリプター \fIepfd\fP が参照する \fBepoll\fP インスタンスに登録し、イベント -\fIevent\fP を \fIfd\fP に結び付けられた内部ファイルに関連付ける。 -.TP -\fBEPOLL_CTL_MOD\fP -イベント \fIevent\fP を対象のファイルディスクリプター \fIfd\fP に関連付けるように変更する。 -.TP -\fBEPOLL_CTL_DEL\fP -対象のファイルディスクリプター \fIfd\fP を \fIepfd\fP が参照する \fBepoll\fP インスタンスから削除する。 \fIevent\fP -引き数は無視されるので、NULL にすることもできる (但し、下記の「バグ」を参照)。 -.PP -\fIevent\fP 引き数は、ファイルディスクリプター \fIfd\fP にリンクされたオブジェクトを表す。 \fIstruct epoll_event\fP -は以下のように定義される。 -.sp -.in +4n -.nf -typedef union epoll_data { - void *ptr; - int fd; - uint32_t u32; - uint64_t u64; -} epoll_data_t; - -struct epoll_event { - uint32_t events; /* epoll イベント */ - epoll_data_t data; /* ユーザーデータ変数 */ -}; -.fi -.in - -\fIevents\fP メンバは、以下のような使用可能なイベントタイプを使って構成された ビットセットである。 -.TP -\fBEPOLLIN\fP -関連付けられたファイルに対して、 \fBread\fP(2) 操作が可能である。 -.TP -\fBEPOLLOUT\fP -関連付けられたファイルに対して、 \fBwrite\fP(2) 操作が可能である。 -.TP -\fBEPOLLRDHUP"\fP(Linux\fB2.6.17\fP以降)" -ストリームソケットの他端が、コネクションの close 、 またはコネクションの書き込み側の shutdown を行った。 -(このフラグを使うと、エッジトリガーの監視を行う場合に、 通信のもう一端が閉じられたことを検知するコードを 非常に簡潔に書くことができる。) -.TP -\fBEPOLLPRI\fP -\fBread\fP(2) 操作が可能な緊急 (urgent) データがある。 -.TP -\fBEPOLLERR\fP -関連付けられたファイルディスクリプターにエラー条件が起こった。 \fBepoll_wait\fP(2) は常にこのイベントを待つので、 \fIevents\fP -に設定する必要はない。 -.TP -\fBEPOLLHUP\fP -関連付けられたファイルディスクリプターにハングアップが起こった。 \fBepoll_wait\fP(2) は常にこのイベントを待つので、 \fIevents\fP -に設定する必要はない。 -.TP -\fBEPOLLET\fP -関連付けられたファイルディスクリプターに エッジトリガー動作 (Edge Triggered behavior) を設定する。 \fBepoll\fP -のデフォルトの動作は、レベルトリガー (Level Triggered) である。 エッジトリガーとレベルトリガーによるイベント分配機構 (event -distribution architectures) についての詳細な情報は、 \fBepoll\fP(7) を参照すること。 -.TP -\fBEPOLLONESHOT\fP (Linux 2.6.2 以降) -関連付けられたファイルディスクリプターに 一撃動作 (One\-Shot behavior) を設定する。 これはイベントが -\fBepoll_wait\fP(2) によって引き出された後、 関連付けられたファイルディスクリプターが内部的に破棄され、 \fBepoll\fP -インターフェースによってイベントが報告されなくなることを意味する。 新しいイベントマスクでファイルディスクリプターを再度有効にするためには、 -\fBepoll_ctl\fP() に \fBEPOLL_CTL_MOD\fP を指定して呼び出さなければならない。 \fIop\fP -引き数に指定できる有効な値は、以下の通り: -.TP -\fBEPOLLWAKEUP\fP (Linux 3.5 以降) -.\" commit 4d7e30d98939a0340022ccd49325a3d70f7e0238 -\fBEPOLLONESHOT\fP と \fBEPOLLET\fP がクリアされており、 プロセスが \fBCAP_BLOCK_SUSPEND\fP -ケーパビリティを持っている場合、 イベントが処理待ちか処理中かにかかわらず、必ずシステムが "suspend" や "hibernate" -に入らないようにすること。 \fBepoll_wait\fP(2) の呼び出しが返った時点から、 同じ \fBepoll\fP(7) -ファイルディスクリプターに対して \fBepoll_wait\fP(2) が次に呼び出されるか、 そのファイルディスクリプターが閉じられるか、 -イベントファイルディスクリプターが \fBEPOLL_CTL_DEL\fP で削除されるか、 \fBEPOLL_CTL_MOD\fP -でイベントファイルディスクリプターの \fBEPOLLWAKEUP\fP がクリアされるか、 のいずれかになるまで、イベントは「処理中」であるとみなされる。 -「バグ」の節も参照のこと。 -.SH 返り値 -成功した場合、 \fBepoll_ctl\fP() は 0 を返す。 エラーが起こった場合、 \fBepoll_ctl\fP() は \-1 を返し、 -\fIerrno\fP を適切に設定する。 -.SH エラー -.TP -\fBEBADF\fP -\fIepfd\fP か \fIfd\fP が有効なファイルディスクリプターでない。 -.TP -\fBEEXIST\fP -\fIop\fP が \fBEPOLL_CTL_ADD\fP であり、かつ与えられたファイルディスクリプター \fIfd\fP がこの epoll -インスタンスに既に登録されている。 -.TP -\fBEINVAL\fP -\fIepfd\fP が \fBepoll\fP ファイルディスクリプターでない。 または \fIfd\fP が \fIepfd\fP と同一である。 または要求された操作 -\fIop\fP がこのインターフェースでサポートされていない。 -.TP -\fBENOENT\fP -\fIop\fP が \fBEPOLL_CTL_MOD\fP または \fBEPOLL_CTL_DEL\fP で、かつ \fIfd\fP がこの epoll -インスタンスに登録されていない。 -.TP -\fBENOMEM\fP -要求された \fIop\fP 制御操作を扱うのに十分なメモリーがない。 -.TP -\fBENOSPC\fP -epoll インスタンスに新しいファイルディスクリプターを登録 (\fBEPOLL_CTL_ADD\fP) しようとした際に、 -\fI/proc/sys/fs/epoll/max_user_watches\fP で決まる上限に達した。 詳細は \fBepoll\fP(7) を参照。 -.TP -\fBEPERM\fP -対象ファイル \fIfd\fP が \fBepoll\fP に対応していない。 このエラーは \fIfd\fP -が例えば通常ファイルやディレクトリを参照している場合にも起こり得る。 -.SH バージョン -.\" To be precise: kernel 2.5.44. -.\" The interface should be finalized by Linux kernel 2.5.66. -\fBepoll_ctl\fP() はカーネル 2.6 で追加された。 -.SH 準拠 -\fBepoll_ctl\fP() は Linux 独自である。 -ライブラリによるサポートは glibc バージョン 2.3.2 以降で提供されている。 -.SH 注意 -\fBepoll\fP インターフェースは、 \fBpoll\fP(2) に対応している全てのファイルディスクリプターに対応している。 -.SH バグ -Linux 2.6.9 より前では、 \fBEPOLL_CTL_DEL\fP 操作の際、引き数 \fIevent\fP に (たとえ無視される場合であっても) -NULL でないポインターを渡す必要があった。 カーネル 2.6.9 以降では、 \fBEPOLL_CTL_DEL\fP を使う際に \fIevent\fP に -NULL を指定できるようになっている。 2.6.9 より前のカーネルへの移植性が必要なアプリケーションでは、 \fIevent\fP に NULL -でないポインターを指定すべきである。 - -.\" commit a8159414d7e3af7233e7a5a82d1c5d85379bd75c (behavior change) -.\" https://lwn.net/Articles/520198/ -\fIflags\fP に \fBEPOLLWAKEUP\fP が指定されたが、呼び出し元が \fBCAP_BLOCK_SUSPEND\fP -ケーパビリティを持っていない場合、 \fBEPOLLWAKEUP\fP フラグは \fI黙って無視される\fP。 元の実装では \fIflags\fP -引き数に対する正当性チェックが実行されていないため、 この残念な動作は必要である。 また、 呼び出し元が \fBCAP_BLOCK_SUSPEND\fP -ケーパビリティを持っていなかった場合に呼び出しを失敗させるようにチェックを \fBEPOLLWAKEUP\fP に追加すると、 -少なくともひとつは動かなくなる既存のユーザー空間アプリケーションがあった。 そのアプリケーションはたまたま (しかも意味もなく) -このビットを指定していた。 したがって、信頼性が求められるアプリケーションでは、 \fBEPOLLWAKEUP\fP フラグを使おうする場合には -\fBCAP_BLOCK_SUSPEND\fP ケーパビリティを持っているかも確認するようにすべきである。 -.SH 関連項目 -\fBepoll_create\fP(2), \fBepoll_wait\fP(2), \fBpoll\fP(2), \fBepoll\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/epoll_wait.2 b/manual/LDP_man-pages/draft/man2/epoll_wait.2 deleted file mode 100644 index efec651e..00000000 --- a/manual/LDP_man-pages/draft/man2/epoll_wait.2 +++ /dev/null @@ -1,166 +0,0 @@ -.\" Copyright (C) 2003 Davide Libenzi -.\" Davide Libenzi -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" 2007-04-30: mtk, Added description of epoll_pwait() -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004-2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Wed Jun 16 03:05:40 JST 2004 -.\" by Yuichi SATO -.\" Updated & Modified Tue Apr 19 07:05:42 JST 2005 by Yuichi SATO -.\" Updated 2007-06-02, Akihiro MOTOKI , LDP v2.51 -.\" Updated 2009-02-23, Akihiro MOTOKI , LDP v3.18 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH EPOLL_WAIT 2 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -epoll_wait, epoll_pwait \- epoll ファイルディスクリプターの I/O イベントを待つ -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint epoll_wait(int \fP\fIepfd\fP\fB, struct epoll_event *\fP\fIevents\fP\fB,\fP -\fB int \fP\fImaxevents\fP\fB, int \fP\fItimeout\fP\fB);\fP -\fBint epoll_pwait(int \fP\fIepfd\fP\fB, struct epoll_event *\fP\fIevents\fP\fB,\fP -\fB int \fP\fImaxevents\fP\fB, int \fP\fItimeout\fP\fB,\fP -\fB const sigset_t *\fP\fIsigmask\fP\fB);\fP -.fi -.SH 説明 -\fBepoll_wait\fP() システムコールは、ファイルディスクリプター \fIepfd\fP で参照される -\fBepoll\fP(7) インスタンスに対するイベントを待つ。 \fIevents\fP が指すメモリー領域には、 -呼び出し側が利用可能なイベントが格納される。最大 \fImaxevents\fP 個のイベントが -\fBepoll_wait\fP() によって返される。 -\fImaxevents\fP 引き数は 0 より大きくなければならない。 - -\fItimeout\fP 引き数は \fBepoll_wait\fP() が停止する時間をミリ秒で指定する。 \fBepoll_wait\fP() -の呼び出しは以下のいずれかになるまで停止する。 -.IP * 3 -ファイルディスクリプターがイベントを配送した -.IP * -呼び出しがシグナルハンドラーにより割り込まれた -.IP * -タイムアウトが満了する -.PP -\fItimeout\fP 時間はシステムクロックの粒度に切り上げられ、カーネルのスケジューリング遅延により少しだけ長くなる可能性がある点に注意すること。 -\fItimeout\fP を \-1 に指定すると、 \fBepoll_wait\fP() は無限に停止する。 \fItimeout\fP を 0 に指定すると、 -\fBepoll_wait\fP() は利用可能なイベントがなくても、すぐに返る。 - -\fIstruct epoll_event\fP は以下のように定義される。 -.sp -.in +4n -.nf -typedef union epoll_data { - void *ptr; - int fd; - uint32_t u32; - uint64_t u64; -} epoll_data_t; - -struct epoll_event { - uint32_t events; /* epoll イベント */ - epoll_data_t data; /* ユーザーデータ変数 */ -}; -.fi -.in - -返される構造体の \fIdata\fP メンバには、ユーザーが \fBepoll_ctl\fP(2) (\fBEPOLL_CTL_ADD\fP, -\fBEPOLL_CTL_MOD\fP) で指定したデータが格納される。 一方、 \fIevents\fP -メンバには返された利用可能なイベントのビットフィールドが格納される。 -.SS epoll_pwait() -\fBepoll_wait\fP() と \fBepoll_pwait\fP() の関係は、 \fBselect\fP(2) と \fBpselect\fP(2) -の関係と同様である。 \fBpselect\fP(2) 同様、 \fBepoll_pwait\fP() -を使うと、アプリケーションは、ファイルディスクリプターが準備できた状態になるか、 シグナルが捕捉されるまで、安全に待つことができる。 - -以下の \fBepoll_pwait\fP() の呼び出しは、 -.nf - - ready = epoll_pwait(epfd, &events, maxevents, timeout, &sigmask); - -.fi -次の呼び出しを \fIatomic\fP に実行するのと等価である。 -.nf - - sigset_t origmask; - - sigprocmask(SIG_SETMASK, &sigmask, &origmask); - ready = epoll_wait(epfd, &events, maxevents, timeout); - sigprocmask(SIG_SETMASK, &origmask, NULL); -.fi -.PP -\fIsigmask\fP 引き数には NULL を指定してもよい。 その場合には、 \fBepoll_pwait\fP() は \fBepoll_wait\fP() -と等価となる。 -.SH 返り値 -成功した場合、 \fBepoll_wait\fP() は要求された I/O に対して準備ができているファイルディスクリプターの数を返す。 また要求された -\fItimeout\fP ミリ秒の間にファイルディスクリプターが準備できない場合は、0 を返す。 エラーが起こった場合、 \fBepoll_wait\fP() -は \-1 を返し、 \fIerrno\fP を適切に設定する。 -.SH エラー -.TP -\fBEBADF\fP -\fIepfd\fP が有効なファイルディスクリプターでない。 -.TP -\fBEFAULT\fP -\fIevents\fP で指されるメモリー領域に書き込み権限でアクセスできない。 -.TP -\fBEINTR\fP -(1) 要求されたどのイベントも発生せず、かつ (2) \fItimeout\fP -の期限が切れる前に、システムコールがシグナルハンドラーによって割り込まれた。 \fBsignal\fP(7) 参照。 -.TP -\fBEINVAL\fP -\fIepfd\fP が \fBepoll\fP ファイルディスクリプターでない。 または \fImaxevents\fP が 0 以下である。 -.SH バージョン -.\" To be precise: kernel 2.5.44. -.\" The interface should be finalized by Linux kernel 2.5.66. -\fBepoll_wait\fP() はカーネル 2.6 で追加された。 -ライブラリによるサポートは glibc バージョン 2.3.2 以降で提供されている。 - -\fBepoll_pwait\fP() はカーネル 2.6.19 で Linux に追加された。 -ライブラリによるサポートは glibc バージョン 2.6 以降で提供されている。 -.SH 準拠 -\fBepoll_wait\fP() は Linux 独自である。 -.SH 注意 -あるスレッドが \fBepoll_pwait\fP() を呼び出して停止されている間に、 -別のスレッドが wait 中の \fBepoll\fP インストールにファイルディスクリプターを -追加することがある。新しいファイルディスクリプターでイベントが発生すると、 -\fBepoll_wait\fP() の呼び出しによる停止が解除されることになる。 - -\fBepoll_wait\fP() で監視中の \fBepoll\fP -インスタンス内のファイルディスクリプターが別のスレッドによってクローズされた場合に何が起こるかの議論については、 \fBselect\fP(2) -を参照してほしい。 -.SH バグ -バージョン 2.6.37 より前のカーネルでは、おおよそ \fILONG_MAX / HZ\fP ミリ秒より大きい \fItimeout\fP 値は \-1 -(つまり無限大) として扱われる。したがって、例えば、\fIsizeof(long)\fP が 4 で、カーネルの \fIHZ\fP の値が 1000 -のシステムでは、 35.79 分よりも大きなタイムアウトは無限大として扱われるということである。 -.SS "C ライブラリとカーネル ABI の違い" -素の \fBepoll_pwait\fP() システムコールは 6 番目の引き数 \fIsize_t sigsetsize\fP を取る。 この引き数は -\fIsigmask\fP 引き数のバイト単位のサイズを指定する。 glibc の \fBepoll_pwait\fP() ラッパー関数は、この引き数に固定値 -(\fIsizeof(sigset_t)\fP と同じ) を指定する。 -.SH 関連項目 -\fBepoll_create\fP(2), \fBepoll_ctl\fP(2), \fBepoll\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/eventfd.2 b/manual/LDP_man-pages/draft/man2/eventfd.2 index f1ed4a4b..4da7b369 100644 --- a/manual/LDP_man-pages/draft/man2/eventfd.2 +++ b/manual/LDP_man-pages/draft/man2/eventfd.2 @@ -32,19 +32,22 @@ .\" Updated 2012-08-05, Akihiro MOTOKI .\" Updated 2013-03-26, Akihiro MOTOKI .\" -.TH EVENTFD 2 2014\-07\-08 Linux "Linux Programmer's Manual" +.TH EVENTFD 2 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 eventfd \- イベント通知用のファイルディスクリプターを生成する .SH 書式 \fB#include \fP -.sp +.PP \fBint eventfd(unsigned int \fP\fIinitval\fP\fB, int \fP\fIflags\fP\fB);\fP .SH 説明 \fBeventfd\fP() は "eventfd オブジェクト" を生成する。 eventfd オブジェクトはユーザー空間アプリケーションがイベント待ち受け/通知用の 仕組みとして使うことができる。また、カーネルがユーザー空間アプリケーションに イベントを通知するためにも使うことができる。 このオブジェクトには、unsigned の 64 ビット整数 (\fIuint64_t\fP) 型のカウンターが含まれており、このカウンターはカーネルにより管理される。 このカウンターは \fIinitval\fP 引き数で指定された値で初期化される。 - +.PP +As its return value, \fBeventfd\fP() returns a new file descriptor that can be +used to refer to the eventfd object. +.PP 以下の値のいくつかをビット単位の論理和 (OR) で指定することで、 \fBeventfd\fP() の振舞いを変更することができる。 .TP \fBEFD_CLOEXEC\fP (Linux 2.6.27 以降) @@ -52,21 +55,22 @@ eventfd \- イベント通知用のファイルディスクリプターを生成 このフラグが役に立つ理由については、 \fBopen\fP(2) の \fBO_CLOEXEC\fP フラグの説明を参照のこと。 .TP \fBEFD_NONBLOCK\fP (Linux 2.6.27 以降) -新しく生成されるオープンファイル記述 (open file description) の \fBO_NONBLOCK\fP -ファイルステータスフラグをセットする。 このフラグを使うことで、 \fBO_NONBLOCK\fP をセットするために \fBfcntl\fP(2) -を追加で呼び出す必要がなくなる。 +Set the \fBO_NONBLOCK\fP file status flag on the open file description (see +\fBopen\fP(2)) referred to by the new file descriptor. Using this flag saves +extra calls to \fBfcntl\fP(2) to achieve the same result. .TP \fBEFD_SEMAPHORE\fP (Linux 2.6.30 以降) 新しいファイルディスクリプターからの読み出しにおいて、セマフォ風の動作を行う。 下記参照。 .PP バージョン 2.6.26 以前の Linux では、 \fIflags\fP 引き数は未使用であり、0 を指定しなければならない。 - -\fBeventfd\fP() は eventfd オブジェクトを参照するのに使用できる新しいファイルディスクリプター -を返す。返されたファイルディスクリプターに対しては以下の操作を実行できる。 +.PP +The following operations can be performed on the file descriptor returned by +\fBeventfd\fP(): .TP \fBread\fP(2) -\fBread\fP(2) は成功すると、8 バイトの整数を返す。 渡されたバッファーの大きさが 8 バイト未満の場合、 \fBread\fP(2) はエラー -\fBEINVAL\fP で失敗する。 +Each successful \fBread\fP(2) returns an 8\-byte integer. A \fBread\fP(2) fails +with the error \fBEINVAL\fP if the size of the supplied buffer is less than 8 +bytes. .IP \fBread\fP(2) が返す値は、ホストバイトオーダ、つまり、そのホストマシンにおける整数の通常のバイトオーダである。 .IP @@ -92,8 +96,9 @@ eventfd \- イベント通知用のファイルディスクリプターを生成 \fBwrite\fP(2) は停止 (block) する、 もしくはファイルディスクリプターが非停止 (nonblocking) に設定されている場合はエラー \fBEAGAIN\fP で失敗する。 .IP -渡されたバッファーの大きさが 8 バイト未満の場合、もしくは 値 0xffffffffffffffff を書き込もうとした場合、 \fBwrite\fP(2) -はエラー \fBEINVAL\fP で失敗する。 +A \fBwrite\fP(2) fails with the error \fBEINVAL\fP if the size of the supplied +buffer is less than 8 bytes, or if an attempt is made to write the value +0xffffffffffffffff. .TP \fBpoll\fP(2), \fBselect\fP(2) (と同様の操作) 返されたファイルディスクリプターは、 \fBpoll\fP(2) (\fBepoll\fP(7) も同じ) や \fBselect\fP(2) @@ -132,7 +137,8 @@ eventfd ファイルディスクリプターは、これ以外のファイルデ \fIflags\fP にサポートされていない値が指定された。 .TP \fBEMFILE\fP -オープン済みのファイルディスクリプターの数がプロセスあたりの上限に 達していた。 +The per\-process limit on the number of open file descriptors has been +reached. .TP \fBENFILE\fP オープン済みのファイル総数がシステム全体の上限に達していた。 @@ -153,51 +159,67 @@ eventfd ファイルディスクリプターは、これ以外のファイルデ 2.8 以降で提供されている。 \fBeventfd2\fP() システムコール (「注意」参照) は カーネル 2.6.27 以降の Linux で利用可能である。 バージョン 2.9 以降では、glibc の \fBeventfd\fP() のラッパー関数は、カーネルが対応していれば \fBeventfd2\fP() システムコールを利用する。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute 値 +T{ +\fBeventfd\fP() +T} Thread safety MT\-Safe +.TE +.sp 1 .SH 準拠 \fBeventfd\fP() と \fBeventfd2\fP() は Linux 固有である。 .SH 注意 アプリケーションは、パイプをイベントを通知するためだけに使用している 全ての場面において、パイプの代わりに eventfd ファイルディスクリプターを 使用することができる。 eventfd ファイルディスクリプターを使う方が、パイプを使う場合に比べて カーネルでのオーバヘッドは比べるとずっと小さく、ファイルディスクリプターも 一つしか必要としない (パイプの場合は二つ必要である)。 - +.PP .\" or eventually syslets/threadlets カーネル内で使用すると、eventfd ファイルディスクリプターはカーネル空間からユーザー空間へのブリッジ機能を提供することができ、 例えば KAIO (kernel AIO) のような機能が、あるファイルディスクリプターに何らかの操作が完了したことを 通知することができる。 - +.PP eventfd ファイルディスクリプターの重要な点は、 eventfd ファイルディスクリプターが \fBselect\fP(2), \fBpoll\fP(2), \fBepoll\fP(7) を使って他のファイルディスクリプターと全く同様に監視できる点である。 このことは、アプリケーションは「従来の (traditional)」 ファイルの状態変化と eventfd インターフェースをサポートする他のカーネル機構の状態変化を同時に監視 できることを意味する (\fBeventfd\fP() インターフェースがない時には、これらのカーネル機構は \fBselect\fP(2), \fBpoll\fP(2), \fBepoll\fP(7) 経由で多重することはできなかった)。 -.SS "C ライブラリとカーネル ABI の違い" +.PP +.\" +The current value of an eventfd counter can be viewed via the entry for the +corresponding file descriptor in the process's \fI/proc/[pid]/fdinfo\fP +directory. See \fBproc\fP(5) for further details. +.SS "C library/kernel differences" 下層にある Linux システムコールは二種類あり、 \fBeventfd\fP() と、もっと新しい \fBeventfd2\fP() である。 \fBeventfd\fP() は \fIflags\fP 引き数を実装していない。 \fBeventfd2\fP() では上記の値の \fIflags\fP が実装されている。 glibc のラッパー関数は、 \fBeventfd2\fP() が利用可能であれば、これを使用する。 .SS "glibc の追加機能" GNU C ライブラリは、eventfd ファイルディスクリプターの読み出しと書き込みに を関する詳細のいくつか抽象化するために、一つの型と、二つの関数を追加で 定義している。 +.PP .in +4n -.nf - +.EX typedef uint64_t eventfd_t; int eventfd_read(int fd, eventfd_t *value); int eventfd_write(int fd, eventfd_t value); -.fi +.EE .in - +.PP これらの関数は、eventfd ファイルディスクリプターに対する読み出しと 書き込みの操作を実行し、正しいバイト数が転送された場合には 0 を返し、そうでない場合は \-1 を返す。 -.SH 例 -.PP +.SH EXAMPLES 以下のプログラムは eventfd ファイルディスクリプターを生成し、 その後 fork を実行して子プロセスを生成する。 親プロセスが少しの間 sleep する間に、子プロセスは プログラムのコマンドライン引き数で指定された整数(列)をそれぞれ eventfd ファイルディスクリプターに書き込む。 親プロセスは sleep を完了すると eventfd ファイルディスクリプターから 読み出しを行う。 - +.PP 以下に示すシェルセッションにこのプログラムの使い方を示す。 +.PP .in +4n -.nf - +.EX $\fB ./a.out 1 2 4 7 14\fP Child writing 1 to efd Child writing 2 to efd @@ -207,13 +229,14 @@ Child writing 14 to efd Child completed write loop Parent about to read Parent read 28 (0x1c) from efd -.fi +.EE .in .SS プログラムのソース \& -.nf +.EX #include #include +#include /* Definition of PRIu64 & PRIx64 */ #include #include #include /* Definition of uint64_t */ @@ -224,7 +247,7 @@ Parent read 28 (0x1c) from efd int main(int argc, char *argv[]) { - int efd, j; + int efd; uint64_t u; ssize_t s; @@ -239,7 +262,7 @@ main(int argc, char *argv[]) switch (fork()) { case 0: - for (j = 1; j < argc; j++) { + for (int j = 1; j < argc; j++) { printf("Child writing %s to efd\en", argv[j]); u = strtoull(argv[j], NULL, 0); /* strtoull() allows various bases */ @@ -258,19 +281,18 @@ main(int argc, char *argv[]) s = read(efd, &u, sizeof(uint64_t)); if (s != sizeof(uint64_t)) handle_error("read"); - printf("Parent read %llu (0x%llx) from efd\en", - (unsigned long long) u, (unsigned long long) u); + printf("Parent read %"PRIu64" (%#"PRIx64") from efd\en", u, u); exit(EXIT_SUCCESS); case \-1: handle_error("fork"); } } -.fi +.EE .SH 関連項目 \fBfutex\fP(2), \fBpipe\fP(2), \fBpoll\fP(2), \fBread\fP(2), \fBselect\fP(2), \fBsignalfd\fP(2), \fBtimerfd_create\fP(2), \fBwrite\fP(2), \fBepoll\fP(7), \fBsem_overview\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/execve.2 b/manual/LDP_man-pages/draft/man2/execve.2 deleted file mode 100644 index ce41835d..00000000 --- a/manual/LDP_man-pages/draft/man2/execve.2 +++ /dev/null @@ -1,497 +0,0 @@ -.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 -.\" and Copyright (c) 2006 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 -.\" Modified 1993-07-21 by Rik Faith -.\" Modified 1994-08-21 by Michael Chastain : -.\" Modified 1997-01-31 by Eric S. Raymond -.\" Modified 1999-11-12 by Urs Thuermann -.\" Modified 2004-06-23 by Michael Kerrisk -.\" 2006-09-04 Michael Kerrisk -.\" Added list of process attributes that are not preserved on exec(). -.\" 2007-09-14 Ollie Wild , mtk -.\" Add text describing limits on command-line arguments + environment -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 TABATA Tomohira -.\" all rights reserved. -.\" Translated 1996-07-04, TABATA Tomohira -.\" Updated 1997-12-14, HANATAKA Shinya -.\" Updated 2001-08-17, HANATAKA Shinya -.\" Updated 2005-02-05, Yuichi SATO -.\" Updated 2005-09-06, Akihiro MOTOKI -.\" Updated 2005-11-19, Akihiro MOTOKI -.\" Updated 2006-08-13, Akihiro MOTOKI, LDP v2.39 -.\" Updated 2007-01-09, Akihiro MOTOKI, LDP v2.43 -.\" Updated 2007-06-03, Akihiro MOTOKI, LDP v2.51 -.\" Updated 2007-10-12, Akihiro MOTOKI, LDP v2.66 -.\" Updated 2008-04-04, Akihiro MOTOKI, LDP v2.79 -.\" Updated 2008-11-05, Akihiro MOTOKI, LDP v3.12 -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-03-22, Akihiro MOTOKI, LDP v3.50 -.\" Updated 2013-07-22, Akihiro MOTOKI, LDP v3.52 -.\" -.TH EXECVE 2 2015\-01\-22 Linux "Linux Programmer's Manual" -.SH 名前 -execve \- プログラムを実行する -.SH 書式 -\fB#include \fP -.sp -\fBint execve(const char *\fP\fIfilename\fP\fB, char *const \fP\fIargv\fP\fB[], \fP -.br -\fB char *const \fP\fIenvp\fP\fB[]);\fP -.SH 説明 -\fBexecve\fP() は、\fIfilename\fP によって指定されたプログラムを実行する。 \fIfilename\fP は、バイナリ実行形式か、 -以下の形式の行で始まるスクリプトでなければならない。 - -.in +4n -.nf -\fB#!\fP \fIinterpreter \fP[optional\-arg] -.fi -.in - -後者の詳細は、後ろの「インタープリタースクリプト」の節を参照のこと。 - -\fIargv\fP は新しいプログラムに渡される引き数文字列の配列である。 -慣例では、引き数文字列の最初の要素には実行されたファイルに関連付けられた -ファイル名を含めることになっている。 -\fIenvp\fP は文字列の配列であり、伝統的に \fBkey=value\fP の形式をしており、 -新しいプログラムの環境変数として渡される。 -\fIargv\fP と \fIenvp\fP はいずれものヌルポインターで終わっている必要がある。 -引き数配列と環境変数は、呼び出されたプログラムの main 関数を -以下のように定義することによってアクセス可能になる。 - -.in +4n -.nf -int main(int argc, char *argv[], char *envp[]) -.fi -.in - -成功した場合、 \fBexecve\fP() は返らない。 そして、呼び出し元のプロセスの text, data, bss, スタックは、 -読み込まれたプログラムによって上書きされる。 - -元のプログラムが ptrace されている場合、 \fBexecve\fP() が成功した後に そのプログラムに \fBSIGTRAP\fP が送られる。 - -\fIfilename\fP で指定されたプログラムファイルに set\-user\-ID ビットが設定されており、 ファイルが存在するファイルシステムが -\fInosuid\fP (\fBmount\fP(2) の \fBMS_NOSUID\fP フラグ) でマウントされておらず、 呼び出したプロセスが ptrace -されていない場合、 呼び出したプロセスの実効 (effective) ユーザー ID は プログラムファイルの所有者 (owner) に変更される。 -同様に、プログラムファイルに set\-group\-ID ビットが設定されていた場合、 呼び出したプロセスの有効グループ ID は -プログラムファイルのグループに変更される。 - -プロセスの実効ユーザー ID は保存 (saved) set\-user\-ID にコピーされる。 同様に、実効グループ ID は保存 -set\-group\-ID にコピーされる。 このコピーは、set\-user\-ID / set\-group\-ID 許可ビットにより発生する 実効 ID -の変更後に行われる。 - -実行ファイルが動的リンクされた a.out 実行形式で、共有ライブラリの スタブを含むものだった場合、実行の開始時に Linux の -ダイナミックリンカー \fBld.so\fP(8) が呼び出され、必要な共有ライブラリをメモリーに読み込んでリンクを行う。 - -実行ファイルがダイナミックリンクされた ELF 実行形式だった場合、 -PT_INTERP セグメントに指定されたインタープリターが必要な 共有ライブラリ -(shared library) を読み込むのに使用される。 -通常、インタープリターは glibc をリンクしたバイナリでは -\fI/lib/ld\-linux.so.2\fP である。 - -以下に示す以外のすべてのプロセス属性は \fBexecve\fP() の前後で保持される。 -.IP * 3 -捕捉されたシグナルの処理方法 (disposition) は デフォルト動作にリセットされる (\fBsignal\fP(7))。 -.IP * -代替シグナルスタックはどれも保持されない (\fBsigaltstack\fP(2))。 -.IP * -メモリーマッピングは保持されない (\fBmmap\fP(2))。 -.IP * -付加された (attached) System\ V 共有メモリーセグメントは分離される (\fBshmat\fP(2))。 -.IP * -POSIX 共有メモリー領域はマッピングを解除される (\fBshm_open\fP(3))。 -.IP * -オープンされた POSIX メッセージキューディスクリプターはクローズされる (\fBmq_overview\fP(7))。 -.IP * -オープンされた POSIX 名前付きセマフォはいずれもクローズされる (\fBsem_overview\fP(7))。 -.IP * -POSIX タイマーは保持されない (\fBtimer_create\fP(2))。 -.IP * -オープンされたディレクトリストリームはいずれもクローズされる (\fBopendir\fP(3))。 -.IP * -メモリーロックは保持されない (\fBmlock\fP(2), \fBmlockall\fP(2))。 -.IP * -終了 (exit) ハンドラーは保持されない (\fBatexit\fP(3), \fBon_exit\fP(3))。 -.IP * -浮動小数点関連の環境はデフォルトにリセットされる (\fBfenv\fP(3) 参照)。 -.PP -上記のリストのプロセス属性はいずれも POSIX.1\-2001 で規定されている。 以下に示す Linux 固有のプロセス属性も \fBexecve\fP() -の前後で保持されない。 -.IP * 3 -set\-user\-ID か set\-group\-ID されたプログラムが実行されている場合、 \fBprctl\fP(2) の -\fBPR_SET_DUMPABLE\fP フラグはクリアされる。それ以外の場合、このフラグはセットされる。 -.IP * -\fBprctl\fP(2) の \fBPR_SET_KEEPCAPS\fP フラグはクリアされる。 -.IP * -(Linux 2.4.36 以降 / 2.6.23 以降) set\-user\-ID や set\-group\-ID されたプログラムが実行された場合、 -\fBprctl\fP(2) の \fBPR_SET_PDEATHSIG\fP フラグで設定された parent death シグナルはクリアされる。 -.IP * -プロセス名は新しい実行ファイルの名前にリセットされる。 プロセス名は \fBprctl\fP(2) の \fBPR_SET_NAME\fP で設定でき、 -\fIps\ \-o comm\fP で表示できる。 -.IP * -\fBSECBIT_KEEP_CAPS\fP の \fIsecurebits\fP フラグはクリアされる。 \fBcapabilities\fP(7) 参照。 -.IP * -終了シグナル (termination signal) は \fBSIGCHLD\fP にリセットされる (\fBclone\fP(2) 参照)。 -.PP -以下の点についても注意すること: -.IP * 3 -呼び出し元スレッド以外の全てのスレッドは \fBexecve\fP() 中に破棄される。 mutex、条件変数、その他の pthread -オブジェクトは保持されない。 -.IP * -\fIsetlocale(LC_ALL, "C")\fP 相当の処理がプログラム開始時に実行される。 -.IP * -POSIX.1\-2001 は、動作が無視かデフォルトに設定されている全てのシグナル の処理方法は変更せずそのままにする、と規定している。 -但し、POSIX.1\-2001 には一つ例外があり、 \fBSIGCHLD\fP が無視になっている場合、 -その処理方法を変更せずにそのままにするか、デフォルト動作にリセットするかは 実装依存となっている。 Linux では前者 (変更しない) となっている。 -.IP * -完了していない非同期 I/O 操作はキャンセルされる (\fBaio_read\fP(3), \fBaio_write\fP(3))。 -.IP * -\fBexecve\fP(2) 時のケーパビリティの扱いについては、 \fBcapabilities\fP(7) を参照。 -.IP * -.\" On Linux it appears that these file descriptors are -.\" always open after an execve(), and it looks like -.\" Solaris 8 and FreeBSD 6.1 are the same. -- mtk, 30 Apr 2007 -デフォルトでは、ファイルディスクリプターは \fBexecve\fP() を行った後でもオープンされたままである。 close\-on\-exec -の印が付いているファイルディスクリプターはクローズされる。 \fBfcntl\fP(2) の \fBFD_CLOEXEC\fP の説明を参照。 -(ファイルディスクリプターがクローズされると、このプロセスが ファイルディスクリプターに対応するファイルに対して獲得していた -レコードのロックが全て解放されることになる。) POSIX.1\-2001 では、 ファイルディスクリプター 0, 1, 2 が \fBexecve\fP() -成功後にどこかでクローズされ、かつ 実行されるファイルに set\-user_ID か set\-group_ID の許可ビットが -セットされていてプロセスが特権を獲得した場合、 システムは何らかのファイルをオープンする際に これらの番号のディスクリプターのどれかを使うことがある、 -とされている。 原則として、移植性が必要なプログラムでは、 特権の有無に関わらず、 \fBexecve\fP() の前後でこれら -3つのファイルディスクリプターがクローズされたままで あることを前提にすることはできない。 -.SS インタープリタースクリプト -インタープリタースクリプトとは、実行許可が有効になっていて、 最初の行が以下の形になっているテキストファイルのことである。 - -.in +4n -.nf -\fB#!\fP \fIinterpreter \fP[optional\-arg] -.fi -.in - -\fIinterpreter\fP は有効な実行ファイルのパス名でなければならず、 それ自身がスクリプトであってはならない。 \fBexecve\fP() の -\fIfilename\fP 引き数がインタープリタースクリプトを指定している場合、 \fIinterpreter\fP は以下の引き数で起動される。 - -.in +4n -.nf -\fIinterpreter\fP [optional\-arg] \fIfilename\fP arg... -.fi -.in - -\fIarg...\fP は、 \fBexecve\fP() の \fIargv\fP 引き数が指すワード列である。 \fIargv\fP[1] から始まる。 - -移植性を持たすには、 \fIoptional\-arg\fP は空か 1ワードだけにすべきである (つまり、ホワイトスペースを含めるべきではない)。 -下記の「注意」の節を参照。 -.SS 引き数と環境変数の合計サイズの上限 -ほとんどの UNIX の実装は、新しいプログラムに渡すことができる コマンドライン引き数 (\fIargv\fP) と環境変数 (\fIenvp\fP) -の文字列群の合計サイズに何らかの上限を設けている。 POSIX.1 は、 \fBARG_MAX\fP 定数を使ってこの上限を決める実装を認めている -(\fBARG_MAX\fP は \fI\fP で定義されるか、実行時に \fIsysconf(_SC_ARG_MAX)\fP -の呼び出しで入手できるかのいずれかである)。 - -カーネル 2.6.23 より前の Linux では、環境変数と引き数の文字列群を 格納するのに使用されるメモリーは 32 ページに制限されていた (32 -ページというのはカーネル定数 \fBMAX_ARG_PAGES\fP で定義される)。したがって、 ページサイズが 4 kB のアーキテクチャーでは、 -最大サイズは 128 kB ということになる。 - -.\" For some background on the changes to ARG_MAX in kernels 2.6.23 and -.\" 2.6.25, see: -.\" http://sourceware.org/bugzilla/show_bug.cgi?id=5786 -.\" http://bugzilla.kernel.org/show_bug.cgi?id=10095 -.\" http://thread.gmane.org/gmane.linux.kernel/646709/focus=648101, -.\" checked into 2.6.25 as commit a64e715fc74b1a7dcc5944f848acc38b2c4d4ee2. -.\" Ollie: That doesn't include the lists of pointers, though, -.\" so the actual usage is a bit higher (1 pointer per argument). -カーネル 2.6.23 以降では、ほとんどのアーキテクチャーにおいて、 \fBexecve\fP() が呼び出された時点で適用されているリソースのソフト上限 -\fBRLIMIT_STACK\fP に基づいたサイズ上限が使われる (メモリー管理ユニット (MMU) を持たないアーキテクチャーは上記の変更の -例外であり、これらのアーキテクチャーではカーネル 2.6.23 より前と 同じ上限がそのまま使用される)。 -これらのアーキテクチャーでは、合計サイズは許可されたスタックサイズの 1/4 に制限されている (1/4 -の上限を設けているのは、新しいプログラムが必ずある程度の スタック空間を持てることを保証するためである)。 Linux 2.6.25 -以降では、カーネルはこのサイズ上限に 32 ページの下限を 設けている。これにより、 \fBRLIMIT_STACK\fP -が非常に小さく設定された場合でも、アプリケーションが少なくとも Linux 2.6.23 以前で提供されていたのと同じ大きさの引き数と環境変数の空間 -と同じだけは確保できることが保証されている (この最低限の保証は Linux 2.6.23 と 2.6.24 では提供されていない)。 -また、各文字列の上限は 32 ページ (カーネル定数 \fBMAX_ARG_STRLEN\fP) で、文字列数の最大値は 0x7FFFFFFF である。 -.SH 返り値 -成功すると \fBexecve\fP() は返らない。エラーの場合は \-1 を返し、 \fIerrno\fP を適切に設定する。 -.SH エラー -.TP -\fBE2BIG\fP -環境変数 (\fIenvp\fP) と引き数リスト (\fIargv\fP) の合計バイト数が大き過ぎる。 -.TP -\fBEACCES\fP -\fIfilename\fP やスクリプトインタープリター名の構成要素に検索許可 (search permission) が与えられていない -(\fBpath_resolution\fP(7) も参照すること)。 -.TP -\fBEACCES\fP -ファイルもしくはスクリプトのインタープリターが通常ファイル (regular file) でない。 -.TP -\fBEACCES\fP -ファイルやスクリプトや ELF インタープリターに 実行許可 (execute permission) が与えられていない。 -.TP -\fBEACCES\fP -ファイルシステムが \fInoexec\fP でマウントされている。 -.TP -\fBEAGAIN\fP (Linux 3.1 以降) -.\" commit 72fa59970f8698023045ab0713d66f3f4f96945c -\fBset*uid\fP() のいずれかの呼び出しでプロセスの実 UID が変更されたとすると、呼び出し元の \fBRLIMIT_NPROC\fP リソース上限 -(\fBsetrlimit\fP(2) 参照) を超えてしまう、 現在もまだ超えている。 このエラーの詳細な説明については「注意」の節を参照。 -.TP -\fBEFAULT\fP -\fIfilename\fP または配列 \fIargv\fP か \fIenvp\fP のポインターの一つがアクセス可能なアドレス空間の外を指している。 -.TP -\fBEINVAL\fP -ELF 実行形式で複数の PT_INTERP セグメントが存在する。 (すなわち複数のインタープリターを指定した。) -.TP -\fBEIO\fP -I/O エラーが発生した。 -.TP -\fBEISDIR\fP -ELF インタープリターがディレクトリだった。 -.TP -\fBELIBBAD\fP -ELF インタープリターが理解できるフォーマットでなかった。 -.TP -\fBELOOP\fP -\fIfilename\fP やスクリプトや ELF のインタープリターを解決する際に遭遇した シンボリックリンクが多過ぎる。 -.TP -\fBEMFILE\fP -そのプロセスがオープンできるファイル数の上限まで既にオープンしている。 -.TP -\fBENAMETOOLONG\fP -\fIfilename\fP が長過ぎる。 -.TP -\fBENFILE\fP -オープンされたファイルの総数がシステム全体の上限に達していた。 -.TP -\fBENOENT\fP -ファイル \fIfilename\fP かスクリプトや ELF のインタープリターが存在しない。 -.TP -\fBENOEXEC\fP -実行ファイルが理解できない形式であるか、違うアーキテクチャーのものか、 その他のフォーマットエラーにより実行ができなかった。 -.TP -\fBENOMEM\fP -カーネルに十分なメモリーがない。 -.TP -\fBENOTDIR\fP -\fIfilename\fP やスクリプトや ELF のインタープリターの構成要素がディレクトリでない。 -.TP -\fBEPERM\fP -ファイルシステムが \fInosuid\fP でマウントされ、ユーザーがスーパーユーザーでなく、 ファイルに set\-user\-ID あるいは -set\-group\-ID ビットが設定されている。 -.TP -\fBEPERM\fP -プロセスがトレースされ、ユーザーがスーパーユーザーでなく、 ファイルに set\-user\-ID あるいは set\-group\-ID -ビットが設定されている。 -.TP -\fBETXTBSY\fP -実行ファイルを書き込み用にオープンしているプロセスがある。 -.SH 準拠 -.\" SVr4 documents additional error -.\" conditions EAGAIN, EINTR, ELIBACC, ENOLINK, EMULTIHOP; POSIX does not -.\" document ETXTBSY, EPERM, EFAULT, ELOOP, EIO, ENFILE, EMFILE, EINVAL, -.\" EISDIR or ELIBBAD error conditions. -SVr4, 4.3BSD, POSIX.1\-2001. POSIX.1\-2001 には #! 動作についての記述はないが、 他は互換性がある。 -.SH 注意 -set\-user\-id プロセスと set\-group\-ID プロセスは \fBptrace\fP(2) できない。 - -.\" e.g., EFAULT on Solaris 8 and FreeBSD 6.1; but -.\" HP-UX 11 is like Linux -- mtk, Apr 2007 -.\" Bug filed 30 Apr 2007: http://bugzilla.kernel.org/show_bug.cgi?id=8408 -.\" Bug rejected (because fix would constitute an ABI change). -.\" -ファイルシステムを \fInosuid\fP でマウントした場合に set\-user\-ID/set\-group\-ID の実行ファイルを -どの様に扱うかは、Linux カーネルのバージョンによって異なる: あるバージョンでは、すでに必要な権限を持っている場合を除いて、 その実行を拒否する -(そして \fBEPERM\fP を返す)。別のあるバージョンでは set\-user\-ID/set\-group\-ID ビットのみを無視し \fBexec\fP() -は成功する。 Linux では、 \fIargv\fP と \fIenvp\fP に NULL を指定することができる。 どちらに NULL を指定した場合も、 -これらの引き数にヌルポインター 1 個だけを含むリストへのポインターを指定したのと同じ効果を持つ。 \fB「この間違った機能を利用しないこと」\fP。 -これは非標準で、移植性もない。 他のほとんどの UNIX システムでは、これを行うとエラー (\fBEFAULT\fP) になる。 - -POSIX.1\-2001 は、 \fBsysconf\fP(3) が返す値はプロセスの生存中は変化しないべきだとしている。 しかしながら、Linux -2.6.23 以降では、リソース上限 \fBRLIMIT_STACK\fP が変化した場合、 コマンドライン引き数と環境変数を保持するための空間に対する上限が -変化したことを反映して、 \fB_SC_ARG_MAX\fP が返す値も変化する。 - -.\" -\fBexecve\fP() が失敗するほとんどの場合、 制御は元の実行可能イメージに戻り、 \fBexecve\fP() -の呼び出し元がエラーを処理することができる。 しかしながら、 (リソース枯渇が原因となった場合など、まれに) -呼び出し元に制御が戻る時点を過ぎてからエラーが発生する場合がある。 元の実行可能イメージはすでに破棄されているが、 -新しいイメージが完全には構築されていないという状況である。 このような場合、カーネルはそのプロセスをシグナル \fBSIGKILL\fP で停止 (kill) -する。 -.SS インタープリタースクリプト -インタープリタースクリプトの 1行目に許されている文字数は、 最大 127 文字である。 - -.\" e.g., Solaris 8 -.\" e.g., FreeBSD before 6.0, but not FreeBSD 6.0 onward -インタープリタースクリプトの \fIoptional\-arg\fP 引き数の解釈方法は実装により異なる。 Linux では、インタープリター名 -\fIinterpreter\fP に続く文字列全体がインタープリターに 1個の引き数として渡される。 しかし、動作が異なるシステムもある。 -あるシステムでは、 \fIoptional\-arg\fP のうち最初のホワイトスペースまでが 引き数として渡される。 また、別のシステムでは -インタープリタースクリプトは複数の引き数を持つことができ、 \fIoptional\-arg\fP 内のホワイトスペースが引き数の区切りとなる。 - -.\" -.\" .SH BUGS -.\" Some Linux versions have failed to check permissions on ELF -.\" interpreters. This is a security hole, because it allows users to -.\" open any file, such as a rewinding tape device, for reading. Some -.\" Linux versions have also had other security holes in -.\" .BR execve () -.\" that could be exploited for denial of service by a suitably crafted -.\" ELF binary. There are no known problems with 2.0.34 or 2.2.15. -Linux はスクリプトの set\-user\-ID と set\-group\-ID ビットを無視する。 -.SS "execve() と EAGAIN" -\fBexecve\fP() を呼び出した際に (Linux 3.1 以降で) 起こり得る \fBEAGAIN\fP エラーの詳細な説明を以下で行う。 - -.\" commit 909cc4ae86f3380152a18e2a3c44523893ee11c4 -\fI直前の\fP \fBsetuid\fP(2), \fBsetreuid\fP(2), \fBsetresuid\fP(2) の呼び出しで、 そのプロセスの実ユーザー ID -が変更され、 その変更によりそのプロセスが \fBRLIMIT_NPROC\fP リソース上限を超過してしまった場合 (すなわち、新しい実ユーザー ID -に属するプロセス数が \fBRLIMIT_NPROC\fP リソース上限を超過した場合) に、 \fBEAGAIN\fP エラーが発生する。 Linux 2.6.0 -以上 3.0 以下では、これにより \fBset*uid\fP() の呼び出しが失敗していた。 (Linux 2.6 より前では、このリソース上限はユーザー -ID を変更したプロセスには適用されていなかった。) - -Linux 3.1 以降では、上で説明したシナリオでは \fBset*uid\fP() の呼び出しは失敗しない。 なぜなら、 -返されたステータスの確認を行わず「呼び出し元が特権を持っている場合には」呼び出しは必ず成功するとみなしているバグがあるアプリケーションでは、セキュリティホールにつながることが非常によくあるからだ。 -その代わり、 \fBset*uid\fP() の呼び出しによる実 UID の変更は成功するが、 カーネルは \fBPF_NPROC_EXCEEDED\fP -という名前の内部フラグをセットする。 このフラグは \fBRLIMIT_NPROC\fP リソース上限が超過したことを示す。 -\fBPF_NPROC_EXCEEDED\fP フラグがセットされていて、その後で \fBexecve\fP() が呼ばれた際にリソース上限がまだ超過していれば、 -その \fBexecve\fP() の呼び出しは \fBEAGAIN\fP エラーで失敗する。 このカーネルのロジックにより、 -特権デーモンでよく行われる処理フロー、 すなわち \fBfork\fP(2) + \fBset*uid\fP() + \fBexecve\fP() -に対して、前と変わらず \fBRLIMIT_NPROC\fP リソース上限を適用できることが保証される。 - -(\fBset*uid\fP() と \fBexecve\fP() の呼び出しの間に、この実 UID に属する他のプロセスが終了して) 次に \fBexecve\fP() -が呼び出された際にこのリソース上限が超過してなければ、 \fBexecve\fP() の呼び出しは成功し、カーネルは \fBPF_NPROC_EXCEEDED\fP -プロセスフラグをクリアする。 同じプロセスによって \fBfork\fP(2) の呼び出しが後で行われた場合にも、このフラグはクリアされる。 -.SS 歴史 -.\" -.\" .SH BUGS -.\" Some Linux versions have failed to check permissions on ELF -.\" interpreters. This is a security hole, because it allows users to -.\" open any file, such as a rewinding tape device, for reading. Some -.\" Linux versions have also had other security holes in -.\" .BR execve () -.\" that could be exploited for denial of service by a suitably crafted -.\" ELF binary. There are no known problems with 2.0.34 or 2.2.15. -UNIX\ V6 では \fBexec\fP() コールの引き数リストは 0 で終端され、 \fImain\fP の引き数リストは \-1 で終端されていた。 -そのため、 \fImain\fP の引き数リストは、その後の \fBexec\fP() コールには直接使用できなかった。 UNIX\ V7 以降では、ともに -NULL で終端される。 -.SH 例 -このプログラムは、以下の二つ目のプログラムから実行するためのものである。 コマンドライン引き数を 1行に 1個ずつ表示するだけのプログラムである。 - -.in +4n -.nf -/* myecho.c */ - -#include -#include - -int -main(int argc, char *argv[]) -{ - int j; - - for (j = 0; j < argc; j++) - printf("argv[%d]: %s\en", j, argv[j]); - - exit(EXIT_SUCCESS); -} -.fi -.in - -以下のプログラムは、コマンドライン引き数で指定した名前のプログラムを 実行するのに使う。 -.in +4n -.nf - -/* execve.c */ - -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - char *newargv[] = { NULL, "hello", "world", NULL }; - char *newenviron[] = { NULL }; - - if (argc != 2) { - fprintf(stderr, "Usage: %s \en", argv[0]); - exit(EXIT_FAILURE); - } - - newargv[0] = argv[1]; - - execve(argv[1], newargv, newenviron); - perror("execve"); /* execve() returns only on error */ - exit(EXIT_FAILURE); -} -.fi -.in - -二つ目のプログラムを使って一つ目のプログラムを実行するには 以下のようにする。 - -.in +4n -.nf -$\fB cc myecho.c \-o myecho\fP -$\fB cc execve.c \-o execve\fP -$\fB ./execve ./myecho\fP -argv[0]: ./myecho -argv[1]: hello -argv[2]: world -.fi -.in - -さらに、これらのプログラムを使って、スクリプトインタープリターの例を示す。 このために、「インタープリター」として先ほど作成したプログラム -\fImyecho\fP を使うスクリプトを作成する。 - -.in +4n -.nf -$\fB cat > script\fP -\fB#!./myecho script\-arg\fP -\fB^D\fP -$\fB chmod +x script\fP -.fi -.in - -作成しておいたプログラムを使ってスクリプトを実行する。 - -.in +4n -.nf -$\fB ./execve ./script\fP -argv[0]: ./myecho -argv[1]: script\-arg -argv[2]: ./script -argv[3]: hello -argv[4]: world -.fi -.in -.SH 関連項目 -\fBchmod\fP(2), \fBexecveat\fP(2), \fBfork\fP(2), \fBptrace\fP(2), \fBexecl\fP(3), -\fBfexecve\fP(3), \fBgetopt\fP(3), \fBcredentials\fP(7), \fBenviron\fP(7), -\fBpath_resolution\fP(7), \fBld.so\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/execveat.2 b/manual/LDP_man-pages/draft/man2/execveat.2 index eb5c7cb7..f5adaeea 100644 --- a/manual/LDP_man-pages/draft/man2/execveat.2 +++ b/manual/LDP_man-pages/draft/man2/execveat.2 @@ -28,12 +28,12 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH EXECVEAT 2 2015\-01\-22 Linux "Linux Programmer's Manual" +.TH EXECVEAT 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 execveat \- ディレクトリファイルディスクリプターからの相対パスで指定されるプログラムを実行する .SH 書式 \fB#include \fP -.sp +.PP \fBint execveat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB,\fP .br \fB char *const \fP\fIargv\fP\fB[], char *const \fP\fIenvp\fP\fB[],\fP @@ -43,19 +43,19 @@ execveat \- ディレクトリファイルディスクリプターからの相 .\" commit 51f39a1f0cea1cacf8c787f652f26dfee9611874 \fBexecveat\fP() システムコールは \fIdirfd\fP と \fIpathname\fP の組み合わせで参照されるプログラムを実行する。 \fBexecve\fP(2) と全く同様に動作するが、 以下で説明する点が異なる。 - +.PP \fIpathname\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fIdirfd\fP が参照するディレクトリに対する相対パスと解釈される (\fBexecve\fP(2) に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。 - +.PP \fIpathname\fP で指定されたパス名が相対パスで、 \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBexecve\fP(2) と同様に) \fIpathname\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 - +.PP \fIpathname\fP で指定されたパス名が絶対パスの場合、 \fIdirfd\fP は無視される。 - +.PP \fIpathname\fP が空文字列で、 \fBAT_EMPTY_PATH\fP フラグが指定されている場合、 ファイルディスクリプター \fIdirfd\fP は実行するファイルを指定する (すなわち \fIdirfd\fP はディレクトリではなく実行ファイルを参照する)。 - +.PP \fIflags\fP 引き数は、以下に示す値の 0 個以上を指定できるビットマスクである。 .TP \fBAT_EMPTY_PATH\fP @@ -95,21 +95,22 @@ execveat \- ディレクトリファイルディスクリプターからの相 .SH 注意 \fBopenat\fP(2) で説明されている理由に加え、 \fBexecveat\fP() システムコールは、 \fBfexecve\fP(3) を \fI/proc\fP ファイルシステムがマウントされていないシステムで実装するためにも必要である。 - +.PP スクリプトファイルを実行するように要求された際、 スクリプトインタープリターに渡される \fIargv[0]\fP は、 \fI/dev/fd/N\fP 形式または \fI/dev/fd/N/P\fP 形式の文字列である。 ここで \fIN\fP は \fIdirfd\fP 引き数で渡されたファイルディスクリプター数である。 最初の形式の文字列となるのは、 \fBAT_EMPTY_PATH\fP が使用された場合である。 2 番目の形式の文字列になるのは、 スクリプトが \fIdirfd\fP と \fIpathname\fP の両方を使って指定された場合である。 このとき \fIP\fP は \fIpathname\fP に指定された値である。 - -\fBfexecve\fP(3) で説明されているのと同じ理由で、 \fBexecveat\fP(2) を使う際の理にかなった方法は \fIdirfd\fP に -close\-on\-exec フラグをセットすることである (ただし「バグ」を参照のこと)。 +.PP +For the same reasons described in \fBfexecve\fP(3), the natural idiom when +using \fBexecveat\fP() is to set the close\-on\-exec flag on \fIdirfd\fP. (But see +BUGS.) .SH バグ 上記で説明したエラー \fBENOENT\fP は、 以下の形式の呼び出しに渡すファイルディスクリプターで close\-on\-exec フラグをセットできないことを意味している。 - +.PP execveat(fd, "", argv, envp, AT_EMPTY_PATH); - +.PP .\" For an example, see Michael Kerrisk's 2015-01-10 reply in this LKML .\" thread (http://thread.gmane.org/gmane.linux.kernel/1836105/focus=20229): .\" @@ -122,6 +123,5 @@ close\-on\-exec フラグをセットすることである (ただし「バグ .SH 関連項目 \fBexecve\fP(2), \fBopenat\fP(2), \fBfexecve\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/exit_group.2 b/manual/LDP_man-pages/draft/man2/exit_group.2 index 6523e574..1db30dfe 100644 --- a/manual/LDP_man-pages/draft/man2/exit_group.2 +++ b/manual/LDP_man-pages/draft/man2/exit_group.2 @@ -39,12 +39,13 @@ exit_group \- プロセス中の全てのスレッドを exit させる .SH 書式 .nf \fB#include \fP -.sp +.PP \fBvoid exit_group(int \fP\fIstatus\fP\fB);\fP .fi .SH 説明 -このシステムコールは、基本的に \fBexit\fP(2) と等しいが、 呼び出し元のスレッドだけでなく、呼び出し元のプロセスのスレッドグループに -ある全てのスレッドを終了させる点が異なる。 +This system call is equivalent to \fB_exit\fP(2) except that it terminates not +only the calling thread, but all threads in the calling process's thread +group. .SH 返り値 このシステムコールは値を返さない。 .SH バージョン @@ -52,10 +53,10 @@ exit_group \- プロセス中の全てのスレッドを exit させる .SH 準拠 このシステムコールは Linux 固有である。 .SH 注意 -glibc 2.3 以降では、 \fBexit\fP(2) のラッパー関数が呼び出された際に、 このシステムコールが起動される。 +Since glibc 2.3, this is the system call invoked when the \fB_exit\fP(2) +wrapper function is called. .SH 関連項目 \fBexit\fP(2) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 9ed8cb3a..00000000 --- a/manual/LDP_man-pages/draft/man2/fallocate.2 +++ /dev/null @@ -1,218 +0,0 @@ -.\" Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved -.\" Written by Dave Chinner -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2007 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2007-10-16, Akihiro MOTOKI , LDP v2.66 -.\" Updated 2008-10-13, Akihiro MOTOKI , LDP v3.11 -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-05-07, Akihiro MOTOKI -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH FALLOCATE 2 2015\-01\-22 Linux "Linux Programmer's Manual" -.SH 名前 -fallocate \- ファイル空間の操作 -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \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) -で報告される) ファイルサイズが変更される。 \fIoffset\fP と \fIlen\fP で指定される範囲のサブ領域で、 -呼び出し前にデータを保持していなかった場合、そのサブ領域は 0 で初期化される。 このデフォルトの動作は、 ライブラリ関数 -\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 ファイル空間の割り当て解除 -\fBFALLOC_FL_PUNCH_HOLE\fP フラグ (Linux 2.6.38 以降で利用可能) を \fImode\fP に指定すると、 -\fIoffset\fP で始まる \fIlen\fP バイトの領域の空間を解放する (ホールを作成する)。 指定された範囲のうち、 -部分的に使用しているファイルシステムブロックは 0 で埋められ、 全体を使用しているファイルシステムブロックはそのファイルから削除される。 -呼び出しが成功すると、 これ以降のこの範囲からの読み出しでは 0 を返す。 - -\fBFALLOC_FL_PUNCH_HOLE\fP フラグは \fBFALLOC_FL_KEEP_SIZE\fP と論理和 (OR) をとって \fImode\fP -に指定しなければならない。 つまり、 ファイル末尾の punch off を行った場合でも、 (\fBstat\fP(2) で報告される) -ファイルサイズが変化しない。 - -すべてのファイルシステムで \fBFALLOC_FL_PUNCH_HOLE\fP がサポートされているわけではない。 -ファイルシステムがこの操作をサポートしていない場合は、 エラーが返る。 この操作は少なくとも以下のファイルシステムでサポートされている。 -.IP * 3 -XFS (Linux 2.6.38 以降) -.IP * -.\" commit a4bb6b64e39abc0e41ca077725f2a72c868e7622 -ext4 (Linux 3.0 以降) -.IP * -Btrfs (Linux 3.7 以降) -.IP * -.\" commit 83e4fa9c16e4af7122e31be3eca5d57881d236fe -tmpfs (Linux 3.5 以降) -.SS ファイル空間の一部削除 -.\" commit 00f5e61998dd17f5375d9dfc01331f104b83f841 -\fBFALLOC_FL_COLLAPSE_RANGE\fP フラグ (Linux 3.15 以降で利用可能) を \fImode\fP に指定すると、 -指定したバイト範囲をファイルから削除する。 その際、ホールを残さない。 削除されるバイト範囲は \fIoffset\fP から始まる \fIlen\fP -バイトの範囲である。 操作が完了すると、 ファイルの \fIoffset+len\fP の位置から始まる内容が \fIoffset\fP の位置に見えるようになり、 -ファイルのサイズは \fIlen\fP バイトだけ小さくなる。 - -効率的に動作する実装にするため、ファイルシステムはこの操作の粒度に制限を設けることがある。 通常は \fIoffset\fP と \fIlen\fP -はファイルシステムの論理ブロックサイズの倍数でなければならない。 論理ブロックサイズはファイルシステムの種類や設定により様々である。 -ファイルシステムにこのような要求条件がある場合、 その要求条件が満たされていなければ、 \fBfallocate\fP はエラー \fBEINVAL\fP -で失敗する。 - -\fIoffset\fP と \fIlen\fP で指定された範囲がファイルの末尾かそれより先まで達している場合、 エラーが返される。 -代わりに、ファイルの切り詰めを行う \fBftruncate\fP(2) を使用すること。 - -\fBFALLOC_FL_COLLAPSE_RANGE\fP と他のフラグを同時に \fImode\fP に指定することはできない。 - -.\" commit 9eb79482a97152930b113b51dff530aba9e28c8e -.\" commit e1d8fb88a64c1f8094b9f6c3b6d2d9e6719c970d -Linux 3.15 時点では \fBFALLOC_FL_COLLAPSE_RANGE\fP は ext4 (エクステントベースのファイル) と XFS -でサポートされている。 -.SS ファイル空間のゼロ埋め -.\" commit 409332b65d3ed8cfa7a8030f1e9d52f372219642 -\fBFALLOC_FL_ZERO_RANGE\fP フラグ (Linux 3.14 以降で利用可能) を \fImode\fP に指定すると、 \fIoffset\fP -で始まる \fIlen\fP バイト範囲の空間をゼロ埋めする。 -指定された範囲の中では、ブロックは、そのファイル内のホールが広がる領域にあらかじめ割り当てられたものである。 呼び出しが成功すると、 -これ以降のこの範囲からの読み出しでは 0 を返す。 - -ゼロ埋めは、ファイルシステム内部では、指定された範囲を書き込みを伴わないエクステントに変換する方法をできるだけ使って行われる。 -この方法は、指定された範囲について物理的にゼロ埋めしたデータがデバイスに書き込まれるのではないことを意味する -(例外は指定された範囲の端の部分的に使用しているブロックである)。 (これ以外で) I/O が必要なのはメタデータの更新だけである。 - -\fBFALLOC_FL_KEEP_SIZE\fP フラグが \fImode\fP に追加で指定された場合、 このシステムコールの動作は似ているが、 -\fIoffset\fP+\fIlen\fP がファイルサイズよりも大きい場合であってもファイルサイズは変更されない点が異なる。 この動作は -\fBFALLOC_FL_KEEP_SIZE\fP を指定してスペースを前もって割り当てた場合と同じである。 - -すべてのファイルシステムで \fBFALLOC_FL_ZERO_RANGE\fP がサポートされているわけではない。 -ファイルシステムがこの操作をサポートしていない場合は、 エラーが返る。 この操作は少なくとも以下のファイルシステムでサポートされている。 -.IP * 3 -.\" commit 376ba313147b4172f3e8cf620b9fb591f3e8cdfa -XFS (Linux 3.14 以降) -.IP * -.\" commit b8a8684502a0fc852afa0056c6bb2a9273f6fcc0 -ext4 のエクステントベースのファイル (Linux 3.14 以降) -.SH 返り値 -成功の場合、 \fBfallocate\fP() は 0 を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 -.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 -\fBEINVAL\fP -\fImode\fP が \fBFALLOC_FL_COLLAPSE_RANGE\fP で、 \fIoffset\fP と \fIlen\fP -で指定された範囲がファイルの末尾かそれより先まで達している。 -.TP -\fBEINVAL\fP -\fImode\fP が \fBFALLOC_FL_COLLAPSE_RANGE\fP だが、 \fIoffset\fP か \fIlen\fP -のいずれかがファイルシステムのブロックサイズの倍数ではない。 -.TP -\fBEINVAL\fP -\fImode\fP に \fBFALLOC_FL_COLLAPSE_RANGE\fP と他のフラグの両方が指定されている。 -\fBFALLOC_FL_COLLAPSE_RANGE\fP と他のフラグを一緒に使うことができない。 -.TP -\fBEINVAL\fP -.\" There was a inconsistency in 3.15-rc1, that should be resolved so that all -.\" filesystems use this error for this case. (Tytso says ex4 will change.) -.\" http://thread.gmane.org/gmane.comp.file-systems.xfs.general/60485/focus=5521 -.\" From: Michael Kerrisk (man-pages -.\" Subject: Re: [PATCH v5 10/10] manpage: update FALLOC_FL_COLLAPSE_RANGE flag in fallocate -.\" Newsgroups: gmane.linux.man, gmane.linux.file-systems -.\" Date: 2014-04-17 13:40:05 GMT -\fImode\fP が \fBFALLOC_FL_COLLAPSE_RANGE\fP か \fBFALLOC_FL_ZERO_RANGE\fP だが、 \fIfd\fP -が参照しているファイルが通常のファイルではない。 -.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 -\fIfd\fP が参照するファイルに変更不可 (immutable) の属性が付いている (\fBchattr\fP(1) 参照)。 -.TP -\fBEPERM\fP -\fImode\fP に \fBFALLOC_FL_PUNCH_HOLE\fP か \fBFALLOC_FL_COLLAPSE_RANGE\fP が指定されたが、 -\fIfd\fP が参照するファイルに追加のみ (append\-only) の属性が付いている (\fBchattr\fP(1) 参照)。 -.TP -\fBEPERM\fP -操作が file seal により禁止されている。 \fBfcntl\fP(2) 参照。 -.TP -\fBESPIPE\fP -\fIfd\fP がパイプか FIFO を参照している。 -.TP -\fBETXTBSY\fP -\fImode\fP に \fBFALLOC_FL_COLLAPSE_RANGE\fP が指定されたが、 \fIfd\fP が参照するファイルは現在実行中である。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/fanotify_init.2 b/manual/LDP_man-pages/draft/man2/fanotify_init.2 deleted file mode 100644 index 01ba1a68..00000000 --- a/manual/LDP_man-pages/draft/man2/fanotify_init.2 +++ /dev/null @@ -1,166 +0,0 @@ -.\" Copyright (C) 2013, Heinrich Schuchardt -.\" -.\" %%%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 FANOTIFY_INIT 2 2014\-10\-02 Linux "Linux Programmer's Manual" -.SH 名前 -fanotify_init \- fanotify グループを作成し、初期化する -.SH 書式 -\fB#include \fP -.br -\fB#include \fP -.sp -\fBint fanotify_init(unsigned int \fP\fIflags\fP\fB, unsigned int -\fP\fIevent_f_flags\fP\fB);\fP -.SH 説明 -fanotify API の概要については \fBfanotify\fP(7) を参照。 -.PP -\fBfanotify_init\fP() は新しい fanotify グループを初期化し、 -このグループに関連付けられたイベントキューに対するファイルディスクリプターを返す。 -.PP -このファイルディスクリプターは、 \fBfanotify_mark\fP(2) の呼び出しで fanotify イベントが作成されるファイル、 ディレクトリ、 -マウントを指定するのに使用できる。 \fBfanotify_mark\fP(2) で指定したファイル、 これらのイベントは、 -このファイルディスクリプターからの読み出しで受信する。 いくつかのイベントは、 ファイルがアクセスされたことを示す単なる情報である。 -他のいくつかのイベントは、 別のアプリケーションがファイルやディレクトリにアクセスする許可を与えるかを判定するのに使用される。 -ファイルシステムオブジェクトへのアクセス許可イベントについては、 承認結果をこのファイルディスクリプターに書き込む。 -.PP -複数のプログラムが同時に fanotify インターフェースを使って同じファイルを同時に監視することができる。 -.PP -現在の実装では、 ユーザーあたりの fanotify グループ数は 128 に制限されている。 この制限は上書きすることができない。 -.PP -\fBfanotify_init\fP() を呼び出すには \fBCAP_SYS_ADMIN\fP ケーパビリティーが必要である。 この制約は将来のバージョンの -API で緩和される可能性がある。 そのため、 以下に示すケーパビリティーチェックのいくつかが実装されている。 -.PP -\fIflags\fP 引き数は、 イベントを待つアプリケーションの通知クラスを定義する複数ビットのフィールドである。 これに加えて、 -このファイルディスクリプターの動作を示す 1 ビットのフィールドがある。 -.PP -アクセス許可イベントを監視しているプログラムが複数いる場合、 通知クラスを使って監視するプログラムのイベント受信順序が管理される。 -.PP -以下の通知クラスのいずれか一つだけを \fIflags\fP に指定できる。 -.TP -\fBFAN_CLASS_PRE_CONTENT\fP -この値は、 ファイルがアクセスされたことを通知するイベントと、 ファイルへのアクセスするかの許可の判断を求めるイベントを受信することを示す。 -これはイベント受信者がファイルが最終的なデータを格納する前にそのファイルにアクセスする必要がある場合に使用される。 -この通知クラスは例えば階層型ストレージ管理などで使用される。 -.TP -\fBFAN_CLASS_CONTENT\fP -この値は、 ファイルがアクセスされたことを通知するイベントと、 ファイルへのアクセスするかの許可の判断を求めるイベントを受信することを示す。 -これはイベント受信者がファイルに最終的なデータが格納された際にそのファイルにアクセスする必要がある場合に使用される。 -この通知クラスは例えばウイルス検知プログラムなどで使用される。 -.TP -\fBFAN_CLASS_NOTIF\fP -これはデフォルト値である。 この値を指定する必要はない。 この値は、 ファイルがアクセスされたことを通知するイベントの受信だけを行うことを意味する。 -ファイルがアクセスする前にアクセス許可の判定を行うことはできない。 -.PP -異なる通知クラスの受信者は \fBFAN_CLASS_PRE_CONTENT\fP, \fBFAN_CLASS_CONTENT\fP, -\fBFAN_CLASS_NOTIF\fP の順序でイベントを受信する。 同じ通知クラスの受信者での通知順序は不定である。 -.PP -\fIflags\fP には以下のビットを追加でセットすることができる。 -.TP -\fBFAN_CLOEXEC\fP -close\-on\-exec フラグ (\fBFD_CLOEXEC\fP) を新しいファイルディスクリプターにセットする。 \fBopen\fP(2) の -\fBO_CLOEXEC\fP フラグの説明を参照。 -.TP -\fBFAN_NONBLOCK\fP -ノンブロッキングフラグ (\fBO_NONBLOCK\fP) をそのファイルディスクリプターで有効にする。 -このファイルディスクリプターからの読み出しは停止しない。 その代わり、 読みだし可能なデータが何もない場合、 \fBread\fP(2) はエラー -\fBEAGAIN\fP で失敗する。 -.TP -\fBFAN_UNLIMITED_QUEUE\fP -そのイベントキューの 16384 イベントの上限を削除する。 このフラグを使用するには \fBCAP_SYS_ADMIN\fP ケーパビリティーが必要である。 -.TP -\fBFAN_UNLIMITED_MARKS\fP -8192 マークの上限を削除する。 このフラグを使用するには \fBCAP_SYS_ADMIN\fP ケーパビリティーが必要である。 -.PP -\fIevent_f_flags\fP 引き数は fanotify イベントが作成されるオープンファイル記述にセットされるファイル状態フラグを定義する。 -これらのフラグの詳細については \fBopen\fP(2) の \fIflags\fP 値の説明を参照のこと。 \fIevent_f_flags\fP -にはアクセスモードのビットを複数入れることができる。 このフィールドには以下の値も指定することができる。 -.TP -\fBO_RDONLY\fP -読み出しアクセスのみを許可する。 -.TP -\fBO_WRONLY\fP -書き込みアクセスのみを許可する。 -.TP -\fBO_RDWR\fP -読み出しと書き込みの両方を許可する。 -.PP -他のビットも \fIevent_f_flags\fP もセットすることができる。 役立つであろう値は以下である。 -.TP -\fBO_LARGEFILE\fP -2 GB を超えるファイルのサポートを有効にする。 このフラグのセットに失敗すると、 32 ビットシステムで fanotify -グループが監視するラージファイルをオープンしようとした際に \fBEOVERFLOW\fP エラーとなる。 -.TP -\fBO_CLOEXEC\fP -このファイルディスクリプターで close\-on\-exec フラグを有効にする。 このフラグが役立つ理由については \fBopen\fP(2) の -\fBO_CLOEXEC\fP フラグの説明を参照。 -.PP -\fBO_APPEND\fP, \fBO_DSYNC\fP, \fBO_NOATIME\fP, \fBO_NONBLOCK\fP, \fBO_SYNC\fP も指定することができる。 -\fIevent_f_flags\fP にこれ以外のフラグを指定すると、 エラー \fBEINVAL\fP が起こる (ただし、バグを参照)。 -.SH 返り値 -成功すると \fBfanotify_init\fP() は新しいファイルディスクリプターを返す。 エラーの場合、 \-1 を返し、 \fIerrno\fP -にエラーを示す値を設定する。 -.SH エラー -.TP -\fBEINVAL\fP -\fIflags\fP か \fIevent_f_flags\fP に無効な値が渡された。 \fBFAN_ALL_INIT_FLAGS\fP で \fIflags\fP -に指定できる全ビットが定義されている。 -.TP -\fBEMFILE\fP -このユーザーの fanotify グループ数が 128 を超過した。 -.TP -\fBENOMEM\fP -通知グループへのメモリー割り当てが失敗した。 -.TP -\fBENOSYS\fP -このカーネルは \fBfanotify_init\fP() を実装していない。 fanotify API が利用できるのは、 カーネルが -\fBCONFIG_FANOTIFY\fP を有効にして作成されている場合だけである。 -.TP -\fBEPERM\fP -呼び出し元が \fBCAP_SYS_ADMIN\fP ケーパビリティーを持っていないので、操作が許可されない。 -.SH バージョン -\fBfanotify_init\fP() は Linux カーネルのバージョン 2.6.36 で導入され、 バージョン 2.6.37 で有効になった。 -.SH 準拠 -このシステムコールは Linux 独自である。 -.SH バグ -Linux 3.17 時点では、 以下のバグが存在する。 -.IP * 3 -.\" FIXME . Patch proposed: https://lkml.org/lkml/2014/9/24/967 -\fBO_CLOEXEC\fP が \fIevent_f_flags\fP に指定された場合、 無視される。 -.PP -バージョン 3.14 より前の Linux カーネルには以下のバグが存在する。 -.IP * 3 -.\" Fixed by commit 48149e9d3a7e924010a0daab30a6197b7d7b6580 -\fIevent_f_flags\fP 引き数に無効なフラグがないかのチェックが行われない。 \fBFMODE_EXEC\fP -などの内部での使用のみが意図されたフラグを指定することができ、 その場合 fanotify -ファイルディスクリプターからの読み出し時に返されるファイルディスクリプターにそのフラグがセットされる。 -.SH 関連項目 -\fBfanotify_mark\fP(2), \fBfanotify\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/fanotify_mark.2 b/manual/LDP_man-pages/draft/man2/fanotify_mark.2 deleted file mode 100644 index 3e7b7e82..00000000 --- a/manual/LDP_man-pages/draft/man2/fanotify_mark.2 +++ /dev/null @@ -1,195 +0,0 @@ -.\" Copyright (C) 2013, Heinrich Schuchardt -.\" -.\" %%%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 FANOTIFY_MARK 2 2014\-10\-02 Linux "Linux Programmer's Manual" -.SH 名前 -fanotify_mark \- ファイルシステムオブジェクトへの fanotify マークの追加、削除、変更 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint fanotify_mark(int \fP\fIfanotify_fd\fP\fB, unsigned int \fP\fIflags\fP\fB,\fP -\fB uint64_t \fP\fImask\fP\fB, int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB);\fP -.fi -.SH 説明 -fanotify API の概要については \fBfanotify\fP(7) を参照。 -.PP -\fBfanotify_mark\fP(2) はファイルシステムオブジェクトに対する fanotify マークの追加、削除、変更を行う。 -呼び出し元はマークを付けるファイルシステムオブジェクトに対する読み出し許可を持っていなければならない。 -.PP -\fIfanotify_fd\fP 引き数は \fBfanotify_init\fP(2) で返されたファイルディスクリプターである。 -.PP -\fIflags\fP は実行する操作内容を示すビットマスクである。 以下の値のいずれか一つだけを指定しなければならない。 -.TP -\fBFAN_MARK_ADD\fP -\fImask\fP のイベントを mark マスク (もしくは ignore マスク) に追加する。 \fImask\fP は空であってはいけない。 -空の場合はエラー \fBEINVAL\fP が発生する。 -.TP -\fBFAN_MARK_REMOVE\fP -引き数 \fImask\fP のイベントを mark マスク (もしくは ignore マスク) から削除する。 \fImask\fP は空であってはいけない。 -空の場合はエラー \fBEINVAL\fPが発生する。 -.TP -\fBFAN_MARK_FLUSH\fP -fanotify グループから全てのマウント mark か全てのマウント以外の mark を削除する。 \fIflag\fP に -\fBFAN_MARK_MOUNT\fP が含まれる場合、 マウントに対する全ての mark がそのグループから削除される。 含まれない場合は、 -ディレクトリとファイルに対する全ての mark が削除される。 \fBFAN_MARK_MOUNT\fP 以外のフラグを \fBFAN_MARK_FLUSH\fP -と組み合わせて使うことはできない。 \fImask\fP は無視される。 -.PP -上記のどの値も指定されなかった場合、 または 2 つ以上の値が指定された場合、 呼び出しはエラー \fBEINVAL\fP で失敗する。 -.PP -これに加えて、 \fIflags\fP に以下の値を 0 個以上ビット単位の論理和 (OR) で指定できる。 -.TP -\fBFAN_MARK_DONT_FOLLOW\fP -\fIpathname\fP がシンボリックリンクの場合、 リンクが参照するファイルではなく、 リンク自身にマークを付ける (デフォルトでは -\fBfanotify_mark\fP() は \fIpathname\fP がシンボリックリンクの場合シンボリックリンクの展開を行う)。 -.TP -\fBFAN_MARK_ONLYDIR\fP -マークが付けられたファイルシステムオブジェクトがディレクトリでない場合、 エラー \fBENOTDIR\fP が発生する。 -.TP -\fBFAN_MARK_MOUNT\fP -\fIpathname\fP で指定されたマウントポイントにマークを付ける。 \fIpathname\fP がマウントポイント自身ではない場合、 -\fIpathname\fP を含むマウントポイントがマークされる。 マウントポイントに含まれる全てのディレクトリ、 サブディレクトリ、 -その中のファイルが監視される。 -.TP -\fBFAN_MARK_IGNORED_MASK\fP -\fImask\fP のイベントの ignore マスクへの追加、もしくは削除を行う。 -.TP -\fBFAN_MARK_IGNORED_SURV_MODIFY\fP -ignore マスクは変更イベントが発生しても残り続ける。 このフラグがセットされていない場合、 -無視するファイルやディレクトリに対して変更イベントが発生した際に ignore マスクはクリアされる。 -.PP -\fImask\fP はどのイベントに対して通知を受けるか (もしくはどのイベントを無視するか) を定義する。 以下の値から構成されるビットマスクである。 -.TP -\fBFAN_ACCESS\fP -ファイルやディレクトリへのアクセス (読み出し) があった際にイベントを作成する (「バグ」も参照)。 -.TP -\fBFAN_MODIFY\fP -ファイルが変更された (書き込み) 際にイベントを作成する。 -.TP -\fBFAN_CLOSE_WRITE\fP -書き込み可能ファイルがクローズされた際にイベントを作成する。 -.TP -\fBFAN_CLOSE_NOWRITE\fP -読み出し専用のファイルやディレクトリがクローズされた際にイベントを作成する。 -.TP -\fBFAN_OPEN\fP -ファイルやディレクトリがオープンされた際にイベントを作成する。 -.TP -\fBFAN_OPEN_PERM\fP -ファイルやディレクトリをオープンするアクセス許可が要求された際にイベントを作成する。 fanotify ファイルディスクリプターが -\fBFAN_CLASS_PRE_CONTENT\fP か \fBFAN_CLASS_CONTENT\fP を指定されて作成されている必要がある。 -.TP -\fBFAN_ACCESS_PERM\fP -ファイルやディレクトリを読み出すアクセス許可が要求された際にイベントを作成する。 fanotify ファイルディスクリプターが -\fBFAN_CLASS_PRE_CONTENT\fP か \fBFAN_CLASS_CONTENT\fP を指定されて作成されている必要がある。 -.TP -\fBFAN_ONDIR\fP -ディレクトリに対するイベントを作成する。 例えば \fBopendir\fP(3)、 \fBreaddir\fP(3) (ただし「バグ」も参照)、 -\fBclosedir\fP(3) が呼び出された場合。 このフラグが指定されなかった場合、 ファイルに対するイベントだけが作成される。 -.TP -\fBFAN_EVENT_ON_CHILD\fP -マークされたディレクトリの直下のエントリーに対してイベントを作成する。 このフラグはマウントにマークを付ける際には効果はない。 -マークされたディレクトリのサブディレクトリのエントリーに対してはイベントが作成されない点に注意すること。 ディレクトリツリー全体を監視するには、 -関連するマウントにマークを付ける必要がある。 -.PP -以下の組み合わせ値が定義されている。 -.TP -\fBFAN_CLOSE\fP -ファイルがクローズされた (\fBFAN_CLOSE_WRITE\fP|\fBFAN_CLOSE_NOWRITE\fP)。 -.PP -マークを付けるファイルシステムオブジェクトは、 ファイルディスクリプター \fIdirfd\fP と \fIpathname\fP -で指定されたパス名から決定される。 -.IP * 3 -\fIpathname\fP が NULL の場合、 \fIdirfd\fP でマークを付けるファイルシステムオブジェクトが定義される。 -.IP * -\fIpathname\fP が NULL で、 \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 -カレントワーキングディレクトリがマークされる。 -.IP * -\fIpathname\fP が絶対パスの場合、 そのパス名によりマークを付けるファイルシステムオブジェクトが定義され、 \fIdirfd\fP は無視される。 -.IP * -\fIpathname\fP が相対パスで、 \fIdirfd\fP が \fBAT_FDCWD\fP でない場合、 マークを付けるファイルシステムオブジェクトは -\fIdirfd\fP が参照するディレクトリに対する相対パス \fIpathname\fP を解釈して決定される。 -.IP * -\fIpathname\fP が相対パスで、 \fIdirfd\fP が \fBAT_FDCWD\fP の場合、 -マークを付けるファイルシステムオブジェクトはカレントワーキングディレクトリに対する相対パス \fIpathname\fP を解釈して決定される。 -.SH 返り値 -成功すると \fBfanotify_mark\fP() は 0 を返す。 エラーの場合、 \-1 を返し、 \fIerrno\fP にエラーの原因を示す値を設定する。 -.SH エラー -.TP -\fBEBADF\fP -無効なファイルディスクリプターが \fIfanotify_fd\fP で渡された。 -.TP -\fBEINVAL\fP -無効な値が \fIflags\fP か \fImask\fP に指定されたか、 \fIfanotify_fd\fP が fanotify -ファイルディスクリプターでなかった。 -.TP -\fBEINVAL\fP -fanotify ファイルディスクリプターが \fBFAN_CLASS_NOTIF\fP でオープンされたが、 アクセス許可イベント -(\fBFAN_OPEN_PERM\fP か \fBFAN_ACCESS_PERM\fP) のフラグがマスクに含まれている。 -.TP -\fBENOENT\fP -\fIdirfd\fP と \fIpathname\fP で指定されたファイルシステムオブジェクトが存在しない。 -このエラーはマークされていないオブジェクトからマークを削除しようとした場合にも発生する。 -.TP -\fBENOMEM\fP -必要なメモリーを割り当てできなかった。 -.TP -\fBENOSPC\fP -マークの数が 8192 の上限を超過し、 \fBfanotify_init\fP(2) で fanotify ファイルディスクリプターが作成された際に -\fBFAN_UNLIMITED_MARKS\fP フラグが指定されていなかった。 -.TP -\fBENOSYS\fP -このカーネルでは \fBfanotify_mark\fP() が実装されていない。 fanotify API が利用できるのは、 カーネルで -\fBCONFIG_FANOTIFY\fP が有効になっている場合だけである。 -.TP -\fBENOTDIR\fP -\fIflags\fP に \fBFAN_MARK_ONLYDIR\fP が含まれているが、 \fIdirfd\fP と \fIpathname\fP -がディレクトリを指定していない。 -.SH バージョン -\fBfanotify_mark\fP() は Linux カーネルのバージョン 2.6.36 で導入され、 バージョン 2.6.37 で有効になった。 -.SH 準拠 -このシステムコールは Linux 独自である。 -.SH バグ -バージョン 3.16 より前の Linux カーネルでは以下のバグが存在した。 -.IP * 3 -.\" Fixed by commit 0a8dd2db579f7a0ac7033d6b857c3d5dbaa77563 -\fIflags\fP に \fBFAN_MARK_FLUSH\fP が指定されている場合、 たとえそのオブジェクトが使用されない場合であっても、 -\fIdirfd\fP と \fIpathname\fP には有効なファイルシステムオブジェクトを指定しなければならない。 -.IP * -.\" Fixed by commit d4c7cf6cffb1bc711a833b5e304ba5bcfe76398b -\fBreaddir\fP(2) は \fBFAN_ACCESS\fP イベントを生成しない。 -.IP * -.\" Fixed by commit cc299a98eb13a9853675a9cbb90b30b4011e1406 -\fBfanotify_mark\fP(2) が \fBFAN_MARK_FLUSH\fP 付きで呼び出された場合、 \fIflags\fP -の値が無効かはチェックされない。 -.SH 関連項目 -\fBfanotify_init\fP(2), \fBfanotify\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/fcntl.2 b/manual/LDP_man-pages/draft/man2/fcntl.2 deleted file mode 100644 index 812495d3..00000000 --- a/manual/LDP_man-pages/draft/man2/fcntl.2 +++ /dev/null @@ -1,953 +0,0 @@ -'\" t -.\" This manpage is Copyright (C) 1992 Drew Eckhardt; -.\" and Copyright (C) 1993 Michael Haardt, Ian Jackson; -.\" and Copyright (C) 1998 Jamie Lokier; -.\" and Copyright (C) 2002-2010, 2014 Michael Kerrisk; -.\" and Copyright (C) 2014 Jeff Layton -.\" and Copyright (C) 2014 David Herrmann -.\" -.\" %%%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 1995-09-26 by Andries Brouwer -.\" and again on 960413 and 980804 and 981223. -.\" Modified 1998-12-11 by Jamie Lokier -.\" Applied correction by Christian Ehrhardt - aeb, 990712 -.\" Modified 2002-04-23 by Michael Kerrisk -.\" Added note on F_SETFL and O_DIRECT -.\" Complete rewrite + expansion of material on file locking -.\" Incorporated description of F_NOTIFY, drawing on -.\" Stephen Rothwell's notes in Documentation/dnotify.txt. -.\" Added description of F_SETLEASE and F_GETLEASE -.\" Corrected and polished, aeb, 020527. -.\" Modified 2004-03-03 by Michael Kerrisk -.\" Modified description of file leases: fixed some errors of detail -.\" Replaced the term "lease contestant" by "lease breaker" -.\" Modified, 27 May 2004, Michael Kerrisk -.\" Added notes on capability requirements -.\" Modified 2004-12-08, added O_NOATIME after note from Martin Pool -.\" 2004-12-10, mtk, noted F_GETOWN bug after suggestion from aeb. -.\" 2005-04-08 Jamie Lokier , mtk -.\" Described behavior of F_SETOWN/F_SETSIG in -.\" multithreaded processes, and generally cleaned -.\" up the discussion of F_SETOWN. -.\" 2005-05-20, Johannes Nicolai , -.\" mtk: Noted F_SETOWN bug for socket file descriptor in Linux 2.4 -.\" and earlier. Added text on permissions required to send signal. -.\" 2009-09-30, Michael Kerrisk -.\" Note obsolete F_SETOWN behavior with threads. -.\" Document F_SETOWN_EX and F_GETOWN_EX -.\" 2010-06-17, Michael Kerrisk -.\" Document F_SETPIPE_SZ and F_GETPIPE_SZ. -.\" 2014-07-08, David Herrmann -.\" Document F_ADD_SEALS and F_GET_SEALS -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Takeshi Ueno -.\" and Copyright (c) 2005, 2006, 2008 Akihiro MOTOKI -.\" Translated 1996-07-03, Takeshi Ueno -.\" Modified 1998-09-10, HANATAKA Shinya -.\" Modified 1999-08-14, HANATAKA Shinya -.\" Updated & Modified 2001-04-03, Yuichi SATO -.\" Updated & Modified 2005-03-15, Akihiro MOTOKI -.\" Updated & Modified 2005-04-22, Akihiro MOTOKI -.\" Updated & Modified 2005-10-14, Akihiro MOTOKI -.\" Updated & Modified 2005-11-19, Akihiro MOTOKI, LDP v2.14 -.\" Updated 2006-04-16, Akihiro MOTOKI, LDP v2.29 -.\" Updated 2008-02-11, Akihiro MOTOKI, LDP v2.77 -.\" Updated 2008-09-19, Akihiro MOTOKI, LDP v3.09 -.\" Updated 2010-04-23, Akihiro MOTOKI, LDP v3.24 -.\" Updated 2012-05-08, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH FCNTL 2 2015\-01\-22 Linux "Linux Programmer's Manual" -.SH 名前 -fcntl \- ファイルディスクリプターの操作を行う -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -.sp -\fBint fcntl(int \fP\fIfd\fP\fB, int \fP\fIcmd\fP\fB, ... /* \fP\fIarg\fP\fB */ );\fP -.fi -.SH 説明 -\fBfcntl\fP() は、オープンされたファイルディスクリプター \fIfd\fP に関して下記の操作を行う。操作は \fIcmd\fP によって決まる: - -\fBfcntl\fP() はオプションとして第三引き数をとることができる。 第三引き数が必要 -かどうかは \fIcmd\fP により決まる。必要な引き数の型は \fIcmd\fP 名の後ろの括弧内で -指定されている (ほとんどの場合、必要な型は \fIint\fP であり、この引き数を表すの -に \fIarg\fP という名前を使っている)。引き数が必要ない場合には \fIvoid\fP が指定さ -れている。 - -下記のいくつかの操作は特定のバージョンの Linux カーネルでのみサポートされている。 -ホストカーネルが特定の操作をサポートしているかを確認する推奨の方法は、 \fBfcntl\fP() を所望の \fIcmd\fP 値で呼び出し、 \fBEINVAL\fP -で失敗するかを検査することである。 \fBEINVAL\fP が返った場合、カーネルがこの値を認識していないことを示す。 -.SS ファイルディスクリプターの複製 -.TP -\fBF_DUPFD\fP (\fIint\fP) -利用可能なファイルディスクリプターのうち、 \fIarg\fP 以上で最小のものを探し、 \fIfd\fP のコピーとする。これは別の形の \fBdup2\fP(2) -である。 \fBdup2\fP(2) では指定されたディスクリプターが使われる点が違う。 -.IP -成功すると、新しいディスクリプターが返される。 -.IP -詳細は \fBdup\fP(2) を参照のこと。 -.TP -\fBF_DUPFD_CLOEXEC\fP (\fIint\fP; Linux 2.6.24 以降) -\fBF_DUPFD\fP と同様だが、それに加えて複製されたディスクリプターに対して close\-on\-exec フラグをセットする。 -このフラグを指定することで、プログラムは \fBFD_CLOEXEC\fP フラグをセットするために \fBfcntl\fP() の \fBF_SETFD\fP -操作を追加で行う必要がなくなる。 このフラグがなぜ有用かについては、 \fBopen\fP(2) の \fBO_CLOEXEC\fP の説明を参照のこと。 -.SS ファイルディスクリプターフラグ -以下のコマンドを使って、ファイルディスクリプターに関連するフラグ を操作することができる。 現在のところ、定義されているフラグは一つだけである: -\fBFD_CLOEXEC\fP (close\-on\-exec フラグ)。 \fBFD_CLOEXEC\fP ビットが 0 なら、ファイルディスクリプターは -\fBexecve\fP(2) を行ってもオープンされたままだが、そうでない場合はクローズされる。 -.TP -\fBF_GETFD\fP (\fIvoid\fP) -ファイルディスクリプターフラグを読み出す。 \fIarg\fP は無視される。 -.TP -\fBF_SETFD\fP (\fIint\fP) -ファイルディスクリプターフラグに \fIarg\fP で指定した値を設定する。 -.PP -マルチスレッドプログラムでは、 \fBfcntl\fP() の \fBF_SETFD\fP を使って close\-on\-exec フラグを設定するのと同時に、 -別のスレッドで \fBexecve\fP(2) と \fBfork\fP(2) を実行することは、競合条件次第では、 -そのファイルディスクリプターが子プロセスで実行されるプログラムに意図せず見えてしまうという危険性がある。 詳細とこの問題への対処法については -\fBopen\fP(2) の \fBO_CLOEXEC\fP フラグの議論を参照のこと。 -.SS ファイル状態フラグ -.\" or -.\" .BR creat (2), -オープンファイル記述 (open file description) には、 ファイル記述毎に設定される状態フラグがいくつかある。これらのフラグは -\fBopen\fP(2) によって初期化され、 \fBfcntl\fP(2) により変更することもできる。これらは、 (\fBdup\fP(2), -\fBfcntl\fP(F_DUPFD), \fBfork\fP(2) などで) 複製されたファイルディスクリプター同士は 同じオープンファイル記述を参照する。 -そのため、 同じファイル状態フラグが共有される。 - -ファイル状態フラグとその意味は \fBopen\fP(2) で説明されている。 -.TP -\fBF_GETFL\fP (\fIvoid\fP) -ファイルのアクセスモードとファイル状態フラグを取得する。 -\fIarg\fP は無視される。 -.TP -\fBF_SETFL\fP (\fIint\fP) -ファイル状態フラグに \fIarg\fP で指定された値を設定する。 \fIarg\fP のうち、ファイルのアクセスモード (\fBO_RDONLY\fP, -\fBO_WRONLY\fP, \fBO_RDWR\fP) とファイル作成フラグ (すなわち \fBO_CREAT\fP, \fBO_EXCL\fP, -\fBO_NOCTTY\fP, \fBO_TRUNC\fP) に関するビットは無視される。 Linux では、このコマンドで変更できるのは -\fBO_APPEND\fP, \fBO_ASYNC\fP, \fBO_DIRECT\fP, \fBO_NOATIME\fP, \fBO_NONBLOCK\fP -フラグだけである。フラグ \fBO_DSYNC\fP, \fBO_SYNC\fP を変更することはできない。下記の「バグ」を参照。 -.SS アドバイザリーレコードロック -Linux は昔からある (「プロセスに関連付けられる」) UNIX のレコードロックを実装している。 このレコードロックは POSIX -で標準化されている。 Linux 固有のより良い動作を行うロックについては、下記のオープンファイル記述ロックの議論を参照のこと。 - -\fBF_SETLK\fP, \fBF_SETLKW\fP, \fBF_GETLK\fP は、レコードロックの獲得/解放/テストのために使用する -(レコードロックは、バイト範囲ロック、ファイルセグメントロック、ファイル領域ロックとも呼ばれる)。 三番目の引き数 \fIlock\fP -は、以下に示すフィールドを含む構造体へのポインターである (フィールドの順序は関係なく、構造体に他のフィールドがあってもよい)。 -.in +4n -.nf -.sp -struct flock { - ... - short l_type; /* Type of lock: F_RDLCK, - F_WRLCK, F_UNLCK */ - short l_whence; /* How to interpret l_start: - SEEK_SET, SEEK_CUR, SEEK_END */ - off_t l_start; /* Starting offset for lock */ - off_t l_len; /* Number of bytes to lock */ - pid_t l_pid; /* PID of process blocking our lock - (set by F_GETLK and F_OFD_GETLK) */ - ... -}; -.fi -.in -.P -この構造体の \fIl_whence\fP, \fIl_start\fP, \fIl_len\fP フィールドで、ロックを行いたいバイト範囲を指定する。 -ファイルの末尾より後ろのバイトをロックすることはできるが、 ファイルの先頭より前のバイトをロックすることはできない。 - -\fIl_start\fP はロックを行う領域の開始オフセットである。 その意味は \fIl_whence\fP により異なる: \fIl_whence\fP が -\fBSEEK_SET\fP の場合はファイルの先頭からのオフセット、 \fIl_whence\fP が \fBSEEK_CUR\fP -の場合は現在のファイルオフセットからのオフセット、 \fIl_whence\fP が \fBSEEK_END\fP -の場合はファイルの末尾からのオフセットと解釈される。 後ろの2つの場合には、 ファイルの先頭より前にならない範囲で、 \fIl_start\fP -に負の値を指定することができる。 - -\fIl_len\fP はロックしたいバイト数を示す。 \fIl_len\fP が正の場合、ロックされるバイト範囲は \fIl_start\fP 以上 -\fIl_start\fP+\fIl_len\fP\-1 以下となる。 \fIl_len\fP に 0 を指定した場合は特別な意味を持つ: \fIl_whence\fP and -\fIl_start\fP で指定される位置からファイルの末尾までの全てのバイトをロックする -(ファイルがどんなに大きくなったとしてもファイルの末尾までロックする)。 - -POSIX.1\-2001 では、負の値の \fIl_len\fP をサポートする実装を認めている (必須ではない)。 \fIl_len\fP -が負の場合、ロックされるバイト範囲は \fIl_start\fP+\fIl_len\fP 以上 \fIl_start\fP\-1 以下となる。 この動作はカーネル -2.4.21 以降および 2.5.49 以降の Linux で サポートされている。 - -\fIl_type\fP フィールドは、ファイルに対して読み出しロック (\fBF_RDLCK\fP) と書き込みロック (\fBF_WRLCK\fP) のどちらを -設定するかを指定する。 ファイルのある領域に対して、読み出しロック (共有ロック) を保持できる プロセス数に制限はないが、書き込みロック -(排他ロック) を保持できる のは一つのプロセスだけである。排他ロックを設定すると、(共有ロックか 排他ロックにかかわらず) -他のロックは何も設定できない。 一つのプロセスは、ファイルのある領域に対して一種類のロックしか保持できない。 -新規のロックがロックが設定されている領域に対して適用されると、既存のロック は新規のロックの種別に変換される -(新規のロックで指定されたバイト範囲が既存ロックの範囲と一致する場合以外では、 変換の過程で既存のロックの分割、縮小、結合が行われることがある)。 -.TP -\fBF_SETLK\fP (\fIstruct flock *\fP) -(\fIl_type\fP が \fBF_RDLCK\fP か \fBF_WRLCK\fP の場合は) ロックの獲得を、 (\fBF_UNLCK\fP の場合は) -ロックの解放を、 \fIflock\fP 構造体のフィールド \fIl_whence\fP, \fIl_start\fP, \fIl_len\fP -で指定された範囲のバイトに対して行う。 指定されたロックが他のプロセスが設定しているロックと衝突する場合は、 \-1 を返し、 \fIerrno\fP に -\fBEACCES\fP か \fBEAGAIN\fP を設定する。 (この場合に返されるエラーは実装により異なる。 そのため、 POSIX -では移植性が必要なアプリケーションでは、 これらの両方のエラーをチェックすることが必要としている。) -.TP -\fBF_SETLKW\fP (\fIstruct flock *\fP) -\fBF_SETLK\fP と同様だが、こちらではそのファイルに対して衝突するロックが 適用されていた場合に、そのロックが解放されるのを待つ点が異なる。 -待っている間にシグナルを受けた場合は、システムコールは中断され、 (シグナルハンドラーが戻った直後に) 返り値 \-1 を返す (また \fIerrno\fP -に \fBEINTR\fP が設定される; \fBsignal\fP(7) 参照)。 -.TP -\fBF_GETLK\fP (\fIstruct flock *\fP) -このコールの呼び出し時には、 \fIlock\fP にはそのファイルに適用しようとするロックに関する情報が入っている。 ロックを適用できる場合には、 -\fBfcntl\fP() は実際にはロックを行わず、 構造体 \fIlock\fP の \fIl_type\fP フィールドに \fBF_UNLCK\fP を返し、 -他のフィールドは変更しない。 - -違う種別のロックが (一つもしくは複数) 適用されていてロックを適用できないような場合には、 \fBfcntl\fP() は、 -原因となったロックの一つについての詳細を、 \fIlock\fP のフィールド \fIl_type\fP, \fIl_whence\fP, \fIl_start\fP, -\fIl_len\fP で返す。 衝突するロックが昔からある (プロセスに関連付けられる) レコードロックの場合、 \fIl_pid\fP -フィールドにロックを保持しているプロセスの PID が設定される。 衝突するロックがオープンファイル記述ロックの場合、 \fIl_pid\fP に \-1 -が設定される。 呼び出し元がその内容を参照した時点では、 返された情報はすでに古いものとなっている可能性がある点に注意すること。 -.P -読み出しロックを適用するには、 \fIfd\fP は読み出し用にオープンされていなければならない。 書き込みロックを適用するには、 \fIfd\fP -は書き込み用にオープンされていなければならない。 読み書き両方のロックを適用するには、読み書き両用で ファイルをオープンしなければならない。 - -\fBF_SETLKW\fP でロックを適用する際、 カーネルは\fIデッドロック\fPの検出を行う。 2 つ以上のプロセスが、 -他のプロセスが保持するロックにより互いにブロックされるようなロック要求を行っているかを検査する。 例えば、 プロセス A があるファイルのバイト 100 -に対して書き込みロックを保持していて、 プロセス B がバイト 200 に対して書き込みロックを保持しているとする。 各プロセスが -\fBF_SETLKW\fP を使って他のプロセスによるすでにロックされているバイトをロックしようとすると、 デッドロック検出がない場合、 -両方のプロセスが無限に停止することになる。 カーネルはこのようなデッドロックを検出すると、 停止していたロック要求の一つをエラー \fBEDEADLK\fP -ですぐに失敗させる。 このエラーを受け取ったアプリケーションは、 必要なロックを再度獲得しようとする前に、 -他のアプリケーションが実行できるように自分が保持するロックのいくつかを解放する必要がある。 3 -つ以上のプロセスが関連する循環するデッドロックも検出される。 ただし、 カーネルのデッドロック検出アルゴリズムには制限がある点に注意すること。 -「バグ」を参照。 - -ろコードロックは \fBF_UNLCK\fP で明示的に削除されるだけでなく、 そのプロセスが終了した際には自動的に解放される。 -.P -レコードのロックは \fBfork\fP(2) で作成された子プロセスには継承されないが、 \fBexecve\fP(2) の前後では保存される。 -.P -\fBstdio\fP(3) ではバッファーリングが行われるので、 stdio 関連の関数ではレコードのロックの使用は回避される; 代わりに -\fBread\fP(2) や \fBwrite\fP(2) を使用すること。 - -上記で説明したレコードロックはプロセスと関連付けられる (以下で説明するオープンファイル記述ロックと異なる点である)。 そのため、 -残念ながら以下のようなことが起こる。 -.IP * 3 -.\" (Additional file descriptors referring to the same file -.\" may have been obtained by calls to -.\" .BR open "(2), " dup "(2), " dup2 "(2), or " fcntl ().) -プロセスがロックが適用されているファイルを参照しているファイルディスクリプターの「いずれか」をクローズした場合、 -そのファイルに対するそのプロセスのすべてのロックが解放される。 この動作はまずい。 あるプロセスが \fI/etc/passwd\fP や -\fI/etc/mtab\fP といったファイルにロックを適用しているときに、 あるライブラリ関数が何かの理由で同じファイルを open, read, -close すると、そのファイルへのロックが失われることになる。 -.IP * -1 つのプロセス内のスレッドはロックを共有する。 言い換えると、 マルチスレッドのプログラムで、 レコードロックを使って、 複数のスレッドが同時に 1 -つのファイルの同じ領域にアクセスしないようにすることはできないということだ。 -.PP -オープンファイル記述ロックを使うとこれらの問題が解決できる。 -.SS "オープンファイル記述ロック (非 POSIX)" -オープンファイル記述ロックはバイト範囲に対するアドバイザリーロックで、 ほとんどの点で上述の昔からあるレコードロックと等価である。 このロック種別は -Linux 固有であり、 Linux 3.15 以降で利用できる。 オープンファイル記述の説明は \fBopen\fP(2) を参照。 - -2 つのロック種別の主な違いは、 昔からあるレコードロックはプロセスに関連付けられるのに対して、 -オープンファイル記述ロックはロックが獲得されるオープンファイル記述に関連付けられる点である。 この動作は \fBflock\fP(2) -で獲得されるロックによく似ている。 結果として (昔からあるアドバイザリーレコードロックと違い)、 オープンファイル記述ロックは \fBfork\fP(2) -(や \fBCLONE_FILES\fP 付きの \fBclone\fP(2)) の前後で継承され、 ファイルのクローズ時に解放されるのではなく、 -オープンファイル記述の最後のクローズ時にのみ自動的に解放される。 -.PP -オープンファイル記述ロックは常に昔からあるレコードロックと競合する。 たとえ、 -ロックが同じプロセスによって同じファイルディスクリプターに対して行われたとしてもである。 - -同じオープンファイル記述経由 (同じファイルディスクリプター経由や \fBfork\fP(2), \fBdup\fP(2), \fBfcntl\fP(2) -\fBF_DUPFD\fP などで作成されたファイルディスクリプターの複製経由) で適用されたオープンファイル記述ロックは常に互換性がある。 つまり、 -すでにロックされている領域に対して新しいロックが適用された場合、 既存のロックは新しいロック種別に変換される。 (上記で説明した通り、 -このような変換の結果、 既存のロックの分割、 縮小、 結合が行われることがある。) - -一方、 異なるオープンファイル記述経由で獲得されると、 オープンファイル記述ロックは互いに競合する。 したがって、 -マルチスレッドプログラムのスレッドは、 各スレッドがそれぞれ自分で \fBopen\fP(2) を実行し、 -得られたファイルディスクリプター経由でロックを適用することで、 -オープンファイル記述ロックを使って一つのファイル領域えのアクセスを同期させることができる。 -.PP -昔からあるレコードロックの場合と同様、 \fBfcntl\fP() の第 3 引き数 \fIlock\fP は \fIflock\fP 構造体へのポインターである。 -昔からあるレコードロックと違い、 下記で説明するコマンドを使う際には、 この構造体のフィールド \fIl_pid\fP に 0 を設定しなければならない。 - -オープンファイル記述ロックで使用できるコマンドは、 昔からあるロックのコマンドと同じである。 -.TP -\fBF_OFD_SETLK\fP (\fIstruct flock *\fP) -(\fIl_type\fP が \fBF_RDLCK\fP か \fBF_WRLCK\fP の場合は) オープンファイル記述のロックの獲得を、 (\fBF_UNLCK\fP -の場合は) オープンファイル記述のロックの解放を、 \fIflock\fP 構造体のフィールド \fIl_whence\fP, \fIl_start\fP, -\fIl_len\fP で指定された範囲のバイトに対して行う。 指定されたロックが他のプロセスが設定しているロックと衝突する場合は、 \-1 を返し、 -\fIerrno\fP に \fBEAGAIN\fP を設定する。 -.TP -\fBF_OFD_SETLKW\fP (\fIstruct flock *\fP) -\fBF_OFD_SETLK\fP と同様だが、こちらではそのファイルに対して衝突するロックが -適用されていた場合に、そのロックが解放されるのを待つ点が異なる。 待っている間にシグナルを受けた場合は、システムコールは中断され、 -(シグナルハンドラーが戻った直後に) 返り値 \-1 を返す (また \fIerrno\fP に \fBEINTR\fP が設定される; \fBsignal\fP(7) -参照)。 -.TP -\fBF_OFD_GETLK\fP (\fIstruct flock *\fP) -このコールの呼び出し時には、 \fIlock\fP にはそのファイルに適用しようとするロックに関する情報が入っている。 ロックを適用できる場合には、 -\fBfcntl\fP() は実際にはロックを行わず、 構造体 \fIlock\fP の \fIl_type\fP フィールドで \fBF_UNLCK\fP を返し、 -他のフィールドは変更しない。 違う種別のロックが (一つもしくは複数) 適用されていてロックを適用できないような場合には、 -原因となったロックの一つについての詳細が \fIlock\fP で返される。 詳細は上記の \fBF_GETLK\fP を参照。 -.PP -.\" commit 57b65325fe34ec4c917bc4e555144b4a94d9e1f7 -.\" -現在の実装では、 オープンファイル記述ロクではデッドロックの検出は行われない。 (これがプロセスと関連付けられるレコードロックとは異なる点である。 -プロセスと関連付けられるレコードロックではカーネルはデッドロックの検出を行う。) -.SS "強制ロック (mandatory locking)" -\fI警告\fP: Linux の強制ロックの実装は信頼性に欠けるものである。 下記の「バグ」の節を参照のこと。 - -デフォルトでは、 昔からある (プロセスに関連付けられる) レコードロックも、 オープンファイル記述のろコードロックも、 アドバイザリーロックである。 -アドバイザリーロックに強制力はなく、協調して動作するプロセス間でのみ有効である。 - -両方のタイプのロックも強制ロックにすることもできる。 強制ロックは全てのプロセスに対して効果がある。 -あるプロセスが互換性のない強制ロックが適用されたファイル領域に対して (\fBread\fP(2) や \fBwrite\fP(2) により) -互換性のないアクセスを実行しようとした場合、 アクセスの結果は そのファイルのオープンファイル記述で \fBO_NONBLOCK\fP -フラグが有効になっているかにより決まる。 \fBO_NONBLOCK\fP フラグが有効になっていないときは、ロックが削除されるか、 -ロックがアクセスと互換性のあるモードに変換されるまで、 システムコールは停止 (block) される。 \fBO_NONBLOCK\fP -フラグが有効になっているときは、システムコールはエラー \fBEAGAIN\fP で失敗する。 - -強制ロックを使用するためには、ロック対象のファイルが含まれるファイルシステム -と、ロック対象のファイル自身の両方について、強制ロックが有効になっていなけれ ばならない。ファイルシステムについて強制ロックを有効にするには、 -\fBmount\fP(8) に "\-o mand" オプションを渡すか、 \fBmount\fP(2) に \fBMS_MANDLOCK\fP -フラグを指定する。ファイルについて強制ロックを有効にするには、 そのファイルのグループ実行許可 (group execute permission) -を無効とし、 かつ set\-group\-ID 許可ビットを有効にする (\fBchmod\fP(1) と \fBchmod\fP(2) を参照)。 - -強制ロックは POSIX では規定されていない。 他のいくつかのシステムでも強制ロックはサポートされているが、 -強制ロックをどのようにして有効にするかの詳細はシステムより異なる。 -.SS シグナルの管理 -\fBF_GETOWN\fP, \fBF_SETOWN\fP, \fBF_GETOWN_EX\fP, \fBF_SETOWN_EX\fP, \fBF_GETSIG\fP, -\fBF_SETSIG\fP は、I/O が利用可能になったことを示すシグナルを管理するために使用される。 -.TP -\fBF_GETOWN\fP (\fIvoid\fP) -ファイルディスクリプター \fIfd\fP のイベントに対するシグナル \fBSIGIO\fP および \fBSIGURG\fP を受けているプロセスのプロセスID -かプロセスグループを (関数の結果として) 返す。 プロセスID は正の値として返される。 プロセスグループID は負の値として返される -(下記のバグの章を参照)。 \fIarg\fP は無視される。 -.TP -\fBF_SETOWN\fP (\fIint\fP) -ファイルディスクリプター \fIfd\fP のイベント発生を知らせるシグナル \fBSIGIO\fP や \fBSIGURG\fP を受けるプロセスの プロセス ID -またはプロセスグループID を \fIarg\fP で指定された ID に設定する。 プロセスID は正の値として指定し、 プロセスグループID -は負の値として指定する。 ほとんどの場合、呼び出し元プロセスは所有者として自分自身を指定する (つまり \fIarg\fP に \fBgetpid\fP(2) -を指定する)。 - -.\" From glibc.info: -\fBfcntl\fP() の \fBF_SETFL\fP コマンドを使用してファイルディスクリプターに \fBO_ASYNC\fP -状態フラグを設定した場合には、そのファイルディスクリプターへの 入出力が可能になる度に \fBSIGIO\fP シグナルが送られる。 \fBF_SETSIG\fP -は \fBSIGIO\fP 以外の別のシグナルの配送を受けられるように するのにも使うことができる。 許可 (permission) -のチェックで失敗した場合には、 シグナルは黙って捨てられる。 - -\fBF_SETOWN\fP により指定された所有者のプロセス (またはプロセスグループ) に シグナルを送る際には、 \fBkill\fP(2) -に書かれているのと同じ許可のチェックが行われる。 このとき、シグナルを送信するプロセスは \fBF_SETOWN\fP を使ったプロセスである -(但し、下記の「バグ」の章を参照のこと)。 - -.\" The following appears to be rubbish. It doesn't seem to -.\" be true according to the kernel source, and I can write -.\" a program that gets a terminal-generated SIGIO even though -.\" it is not the foreground process group of the terminal. -.\" -- MTK, 8 Apr 05 -.\" -.\" If the file descriptor -.\" .I fd -.\" refers to a terminal device, then SIGIO -.\" signals are sent to the foreground process group of the terminal. -ファイルディスクリプターがソケットを参照している場合は、 \fBF_SETOWN\fP を使用して、ソケットに帯域外 (out\-of\-band) -データが届いた時に \fBSIGURG\fP シグナルを配送する相手を選択することもできる (\fBSIGURG\fP が送られた場合には \fBselect\fP(2) -がソケットが「特別な状態」にあると報告することだろう)。 - -バージョン 2.6.11 以前の 2.6.x カーネルでは、以下に示す動作であった。 -.RS -.IP -.\" The relevant place in the (2.6) kernel source is the -.\" 'switch' in fs/fcntl.c::send_sigio_to_task() -- MTK, Apr 2005 -.\" send_sigurg()/send_sigurg_to_task() bypasses -.\" kill_fasync()/send_sigio()/send_sigio_to_task() -.\" to directly call send_group_sig_info() -.\" -- MTK, Apr 2005 (kernel 2.6.11) -スレッドグループをサポートしているスレッドライブラリ (例えば NPTL) を 使って動作しているマルチスレッドプロセスで \fBF_SETSIG\fP に -0 以外の値を指定した場合、 \fBF_SETOWN\fP に正の値を渡すと、その意味が違ってくる: プロセス全体を示すプロセスID -ではなく、プロセス内の特定の スレッドを示すスレッドID と解釈される。 したがって、 \fBF_SETSIG\fP -を使う場合には、きちんと結果を受け取るには、 \fBF_SETOWN\fP に渡す値を \fBgetpid\fP(2) ではなく \fBgettid\fP(2) -の返り値にする必要があるだろう。 (現状の Linux スレッド実装では、メインスレッドのスレッドID は そのスレッドのプロセスID -と同じである。つまり、 シグナルスレッドのプログラムではこの場合 \fBgettid\fP(2) と \fBgetpid\fP(2) -は全く同じように使うことができる。) ただし、注意すべき点として、この段落で述べたことは、 ソケットの帯域外データが届いたときに生成される -\fBSIGURG\fP シグナルにはあてはまらない。 このシグナルは常にプロセスかプロセスグループに送られ、 送信先は \fBF_SETOWN\fP -に渡された値にしたがって決められる。 -.RE -.IP -上記の動作は、Linux 2.6.12 で図らずも削除され、 元に戻されない予定である。 Linux 2.6.32 以降で、特定のスレッド宛にシグナル -\fBSIGIO\fP と \fBSIGURG\fP を送るには \fBF_SETOWN_EX\fP を使うこと。 -.TP -\fBF_GETOWN_EX\fP (struct f_owner_ex *) (Linux 2.6.32 以降) -直前の \fBF_SETOWN_EX\fP 操作で定義された現在のファイルディスクリプターの所有者設定 を返す。情報は \fIarg\fP -が指す構造体に格納されて返される。構造体は以下の通りである。 -.nf -.in +4n - -struct f_owner_ex { - int type; - pid_t pid; -}; - -.in -.fi -\fItype\fP フィールドは、 \fBF_OWNER_TID ,\fP \fBF_OWNER_PID ,\fP \fBF_OWNER_PGRP\fP -のいずれか一つの値となる。 \fIpid\fP フィールドは、スレッド ID、プロセス ID、プロセスグループ ID を 表す正の整数である。詳細は -\fBF_SETOWN_EX\fP を参照。 -.TP -\fBF_SETOWN_EX\fP (struct f_owner_ex *) (Linux 2.6.32 以降) -この操作は \fBF_SETOWN\fP と同様の処理を行う。 この操作を使うと、I/O が利用可能になったことを示すシグナルを、 -特定のスレッド、プロセス、プロセスグループに送ることができる ようになる。 呼び出し元は、 \fIarg\fP 経由でシグナルの配送先を指定する。 -\fIarg\fP は \fIf_owner_ex\fP 構造体へのポインターである。 \fItype\fP フィールドは以下のいずれかの値を取り、 この値により -\fIpid\fP がどのように解釈されるかが規定される。 -.RS -.TP -\fBF_OWNER_TID\fP -スレッド ID が \fIpid\fP で指定された値のスレッドにそのシグナルを送る (スレッド ID は \fBclone\fP(2) や -\fBgettid\fP(2) の呼び出しで返される値である)。 -.TP -\fBF_OWNER_PID\fP -ID が \fIpid\fP で指定された値のプロセスにそのシグナルを送る。 -.TP -\fBF_OWNER_PGRP\fP -ID が \fIpid\fP で指定された値のプロセスグループにそのシグナルを送る。 (\fBF_SETOWN\fP と異なり、プロセスグループ ID -には正の値を指定する点に注意すること。) -.RE -.TP -\fBF_GETSIG\fP (\fIvoid\fP) -入力や出力が可能になった場合に送るシグナルを (関数の結果として) 返す。 値ゼロは \fBSIGIO\fP を送ることを意味する。 (\fBSIGIO\fP -を含む) 他の値はいずれも、 \fBSIGIO\fP の代わりに送るシグナル番号を表す。 後者の場合、シグナルハンドラーを \fBSA_SIGINFO\fP -フラグ付きで設定すれば、ハンドラーで追加の情報を得ることができる。 \fIarg\fP は無視される。 -.TP -\fBF_SETSIG\fP (\fIint\fP) -.\" -.\" The following was true only up until 2.6.11: -.\" -.\" Additionally, passing a nonzero value to -.\" .B F_SETSIG -.\" changes the signal recipient from a whole process to a specific thread -.\" within a process. -.\" See the description of -.\" .B F_SETOWN -.\" for more details. -入力や出力が可能になった場合に送るシグナルを \fIarg\fP に指定された値に設定する。 値ゼロは \fBSIGIO\fP を送ることを意味する。 -(\fBSIGIO\fP を含む) 他の値はいずれも、 \fBSIGIO\fP の代わりに送るシグナル番号を表す。 後者の場合、シグナルハンドラーを -\fBSA_SIGINFO\fP フラグ付きで設定すれば、 ハンドラーで追加の情報を得ることができる。 - -\fBF_SETSIG\fP にゼロ以外の値を設定し、シグナルハンドラーに \fBSA_SIGINFO\fP フラグを設定すると、 (\fBsigaction\fP(2) -を参照) I/O イベントに関する追加の情報が \fIsiginfo_t\fP 構造体でシグナルハンドラーへ渡される。 \fIsi_code\fP -フィールドが示すシグナルの原因が \fBSI_SIGIO\fP である場合、 \fIsi_fd\fP -フィールドにはイベントに対応するファイルディスクリプターが入っている。 それ以外の場合は、どのファイルディスクリプターが利用可能かを示す情報は -ないので、どのファイルディスクリプターで I/O が可能かを判断するためには 通常の機構 (\fBselect\fP(2), \fBpoll\fP(2), -\fBO_NONBLOCK\fP を設定した \fBread\fP(2) など) を使用しなければならない。 - -リアルタイムシグナル (値が \fBSIGRTMIN\fP 以上) を選択している場合は、 同じシグナル番号を持つ複数の I/O -イベントがキューに入ることがある (キューに入れるかどうかは利用可能なメモリーに依存している)。 上記と同様、 \fBSA_SIGINFO\fP -が設定されている場合、シグナルハンドラーのための追加の情報が得られる。 - -.\" See fs/fcntl.c::send_sigio_to_task() (2.4/2.6) sources -- MTK, Apr 05 -以下の点に注意すること。 Linux では一つのプロセスに対してキューに入れられるリアルタイム シグナルの数に上限が設けられており -(\fBgetrlimit\fP(2) と \fBsignal\fP(7) を参照)、この上限に達するとカーネルは \fBSIGIO\fP シグナルを配送する。この -\fBSIGIO\fP シグナルは、指定されたスレッドではなくプロセス全体に送られる。 -.PP -これらの機構を使用することで、ほとんどの場合で \fBselect\fP(2) や \fBpoll\fP(2) を使用せずに完全な非同期 I/O -を実装することができる。 -.PP -\fBO_ASYNC\fP の使用方法は BSD と Linux に特有である。 POSIX.1 で規定されている \fBF_GETOWN\fP と -\fBF_SETOWN\fP の使用方法は、ソケットに対する \fBSIGURG\fP シグナルとの組み合わせだけである (POSIX は \fBSIGIO\fP -シグナルは規定していない)。 \fBF_GETOWN_EX\fP, \fBF_SETOWN_EX\fP, \fBF_GETSIG\fP, \fBF_SETSIG\fP は -Linux 固有である。POSIX には、同様のことを行うために、非同期 I/O と \fIaio_sigevent\fP 構造体がある。Linux -では、GNU C ライブラリ (Glibc) の一部として これらも利用可能である。 -.SS "リース (leases)" -(Linix 2.4 以降で利用可能) \fBF_SETLEASE\fP は、 \fIfd\fP -が参照するオープンファイル記述に対して新しいリースを設定するのに使用される。 \fBF_GETLEASE\fP は、 \fIfd\fP -が参照するオープンファイル記述に対して設定されている 現在のリースを取得するのに使用される。 ファイルのリースにより、 あるプロセス ("lease -breaker") がそのファイルディスクリプターが参照 しているファイルに対して \fBopen\fP(2) や \fBtruncate\fP(2) -を行おうとした際に、リースを保持しているプロセス ("lease holder") へ (シグナルの配送による) 通知が行われるという機構が提供される。 -.TP -\fBF_SETLEASE\fP (\fIint\fP) -\fIarg\fP の内容に基いてファイルのリースの設定、削除を行う。整数 \fIarg\fP には以下の値が指定できる: -.RS -.TP -\fBF_RDLCK\fP -.\" The following became true in kernel 2.6.10: -.\" See the man-pages-2.09 Changelog for further info. -読み出しリースを取得する。これにより、 そのファイルが書き込み用にオープンされたり、ファイルが切り詰められた場合に、 -呼び出し元のプロセスに通知が行われるようになる。 読み出しリースを設定できるのは、読み出し専用でオープンされている -ファイルディスクリプターに対してのみである。 -.TP -\fBF_WRLCK\fP -書き込みリースを取得する。これにより、 (読み出し用か書き込み用にかかわらず) そのファイルがオープンされたり、 -ファイルが切り詰められた場合に、呼び出し元のプロセスに通知が行われるようになる。 -書き込みリースは、そのファイルに対するオープンされたファイルディスクリプターが 他にない場合にのみ設定できる。 -.TP -\fBF_UNLCK\fP -そのファイルからリースを削除する。 -.RE -.P -リースはオープンファイル記述に対して関連付けられる (\fBopen\fP(2) 参照)。 つまり、 (\fBfork\fP(2) や \fBdup\fP(2) -などにより作成された) ファイルディスクリプターの複製は同じリースを参照し、 複製も含めたどのファイルディスクリプターを使ってもこのリースを変更したり -解放したりできる。 また、これらのファイルディスクリプターのいずれかに対して \fBF_UNLCK\fP -操作が明示的に実行された場合や、すべてのファイルディスクリプターが 閉じられた場合にも、リースは解放される。 -.P -リースの取得は通常のファイル (regular file) に対してのみ可能である。 非特権プロセスがリースを取得できるのは、UID (所有者) -がプロセスの ファイルシステム UID と一致するファイルに対してだけである。 \fBCAP_LEASE\fP -ケーパビリティを持つプロセスは任意のファイルに対してリースを取得できる。 -.TP -\fBF_GETLEASE\fP (\fIvoid\fP) -ファイルディスクリプター \fIfd\fP に対して設定されているリースの種別を取得する。 \fBF_RDLCK\fP, \fBF_WRLCK\fP, -\fBF_UNLCK\fP のいずれかが返される。 \fBF_RDLCK\fP, \fBF_WRLCK\fP -はそれぞれ、読み出しリース、書き込みリースが設定されていることを示し、 \fBF_UNLCK\fP はリースが何も設定されていないことを示す。 \fIarg\fP -は無視される。 -.PP -あるプロセス ("lease breaker") が \fBF_SETLEASE\fP で設定されたリースと矛 -盾するような \fBopen\fP(2) や \fBtruncate\fP(2) を実行した場合、 そのシステム -コールはカーネルによって停止され、 カーネルは lease holder にシグナル -(デフォルトでは \fBSIGIO\fP) を送って通知を行う。 lease holder はこのシグ -ナルを受信したときにはきちんと対応すべきである。 具体的には、別のプロセ -スがそのファイルにアクセスするための準備として 必要な後片付け (例えば、 -キャッシュされたバッファーのフラッシュ) を すべて行ってから、そのファイル -のリースの削除または格下げを行う。リースを削除をするには、 \fIarg\fP に -\fBF_UNLCK\fP を指定して \fBF_SETLEASE\fP を実行する。lease holder がファイル -に書き込みリースを保持していて、 lease breaker が読み出し用にそのファイ -ルをオープンしている場合、 lease holder が保持しているリースを読み出し -リースに格下げすれば 十分である。これをするには、 \fIarg\fP に \fBF_RDLCK\fP -を指定して \fBF_SETLEASE\fP を実行する。 - -If the lease holder fails to downgrade or remove the lease within the number -of seconds specified in \fI/proc/sys/fs/lease\-break\-time\fP, then the kernel -forcibly removes or downgrades the lease holder's lease. - -いったん lease break が開始されると、 lease holder が自発的にそのリース -の格下げか削除を行うか、lease break timer の満了後にカーネルが強制的に -リースの格下げか削除を行うまで、 \fBF_GETLEASE\fP は対象となるリースの型を -返す (リースの型は \fBF_RDLCK\fP か \fBF_UNLCK\fP のどちらであり、lease -breaker と互換性のある型となる)。 - -一度リースの削除か格下げが自発的もしくは強制的に行われると、 lease breaker がまだシステムコールを再開していない場合には、 カーネルが -lease breaker のシステムコールの続行を許可する。 - -lease breaker が実行した \fBopen\fP(2) や \fBtruncate\fP(2) が停止中にシグナルハンドラーにより中断された場合、 -そのシステムコールは \fBEINTR\fP エラーで失敗するが、上で述べた他の処理は そのまま行われる。 \fBopen\fP(2) や -\fBtruncate\fP(2) が停止中に lease breaker がシグナルにより kill された場合、 上で述べた他の処理はそのまま行われる。 -lease breaker が \fBopen\fP(2) を呼ぶ際に \fBO_NONBLOCK\fP フラグを指定した場合、そのシステムコールは -\fBEWOULDBLOCK\fP エラーで直ちに失敗するが、上で述べた他の処理はそのまま行われる。 - -lease holder への通知に使われるデフォルトのシグナルは \fBSIGIO\fP だが、 \fBfcntl\fP() の \fBF_SETSIG\fP -コマンドで変更することができる。 \fBF_SETSIG\fP コマンドが実行され (\fBSIGIO\fP を指定された場合も含む)、 \fBSA_SIGINFO\fP -フラグ付きでシグナルハンドラーが設定されている場合には、 ハンドラーの第二引き数として \fIsiginfo_t\fP 構造体が渡され、この引き数の -\fIsi_fd\fP フィールドには別のプロセスがアクセスしたリース設定済みファイルの ディスクリプターが入っている -(この機能は複数のファイルに対してリースを設定する場合に有用である)。 -.SS "ファイルやディレクトリの変更の通知 (dnotify)" -.TP -\fBF_NOTIFY\fP (\fIint\fP) -(Linux 2.4 以降) \fIfd\fP で参照されるディレクトリか、その中にあるファイルに変更があった場合に 通知を行う。どのイベントを通知するかは -\fIarg\fP で指定する。 \fIarg\fP はビットマスクで、以下のビットの 0個以上の論理和をとったものを指定する。 -.RS -.sp -.PD 0 -.TP 12 -\fBDN_ACCESS\fP -ファイルへのアクセスがあった (\fBread\fP(2), \fBpread\fP(2), \fBreadv\fP(2) や同様のシステムコール) -.TP -\fBDN_MODIFY\fP -ファイルの内容が変更された (\fBwrite\fP(2), \fBpwrite\fP(2), \fBwritev\fP(2), \fBtruncate\fP(2), -\fBftruncate\fP(2) や同様のシステムコール) -.TP -\fBDN_CREATE\fP -ファイルが作成された (\fBopen\fP(2), \fBcreat\fP(2), \fBmknod\fP(2), \fBmkdir\fP(2), " -"\fBlink\fP(2), \fBsymlink\fP(2), このディレクトリへの \fBrename\fP(2)) -.TP -\fBDN_DELETE\fP -ファイルが削除 (unlink) された (\fBunlink\fP(2), 別のディレクトリへの \fBrename\fP(2), \fBrmdir\fP(2)) -.TP -\fBDN_RENAME\fP -ディレクトリ内でのファイル名の変更があった (\fBrename\fP(2)) -.TP -\fBDN_ATTRIB\fP -ファイル属性が変更された (\fBchown\fP(2), \fBchmod\fP(2), \fButime\fP(2), \fButimensat\fP(2) -や同様のシステムコール) -.PD -.RE -.IP -(上記の定義を利用するには、\fIどの\fP ヘッダーファイルをインクルードするより前に、 -\fB_GNU_SOURCE\fP 機能検査マクロを定義しなければならない。) - -ディレクトリの変更通知は通常「一回限り (one\-shot)」であり、 アプリケーション側でその後さらに通知を受信したい場合は -再登録しなければならない。 \fIarg\fP に \fBDN_MULTISHOT\fP が含まれていた場合には、 -変更通知は明示的に解除されるまで有効状態が継続する。 - -.\" The following does seem a poor API-design choice... -\fBF_NOTIFY\fP 要求は積算されていく。つまり、 \fIarg\fP で指定されたイベントがすでにモニタされている イベント集合に加算される形になる。 -すべてのイベントの通知を無効にするには、 \fIarg\fP に 0 を指定して \fBF_NOTIFY\fP を呼び出す必要がある。 - -通知はシグナルの配送で行われる。 デフォルトのシグナルは \fBSIGIO\fP だが、 \fBfcntl\fP() の \fBF_SETSIG\fP -コマンドで変更することができる。 (\fBSIGIO\fP はキューイングされない標準のシグナルの一つである点に注意。 -リアルタイムシグナルを使うように変更すると、 複数の通知がそのプロセス宛のキューに入ることがあることを意味する。) 後者の場合には、 -(\fBSA_SIGINFO\fP フラグ付きでシグナルハンドラーが設定されている場合には) ハンドラーの第二引き数として \fIsiginfo_t\fP -構造体が渡され、この構造体の \fIsi_fd\fP フィールドには通知の行われたファイルディスクリプターが入っている -(この機能は複数のディレクトリに対して通知を設定する場合に有用である)。 - -特に \fBDN_MULTISHOT\fP を使う場合は、通知にはリアルタイムシグナルを使うべきである。 -それは、リアルタイムシグナルを使うことで、複数の通知をキューに入れる ことができるからである。 - -\fB注意:\fP 新しくアプリケーションを書く際には、(カーネル 2.6.13 以降で利用可能となった) \fIinotify\fP -インターフェースを使用すべきである。 \fIinotify\fP はファイルシステムイベントの通知を取得するための ずっと優れたインターフェースである。 -\fBinotify\fP(7) を参照。 -.SS パイプの容量の変更 -.TP -\fBF_SETPIPE_SZ\fP (\fIint\fP; Linux 2.6.35 以降) -\fIfd\fP が参照するパイプの容量を少なくとも \fIarg\fP バイトに変更する。 -非特権プロセスは、パイプの容量として、 -システムのページサイズと \fI/proc/sys/fs/pipe\-max\-size\fP で定義される -上限値 (\fBproc\fP(5) 参照) の間の任意の値を設定できる。 -パイプの容量をページサイズよりも小さな値に設定しようとした場合は、 -暗黙のうちにページサイズに切り上げられる。 -非特権プロセスがパイプの容量を \fI/proc/sys/fs/pipe\-max\-size\fP で定義 -された上限より大きな値に設定しようとした場合は、エラー \fBEPERM\fP が -発生する。特権プロセス (\fBCAP_SYS_RESOURCE\fP ケーパビリティを持つ -プロセス) はこの上限を上書きできる。 -パイプにバッファーを割り当てる場合、実装側の都合に応じて、 -カーネルは \fIarg\fP よりも大きな容量を割り当ててもよい。 -実際に設定された大きさが関数の返り値として返される。 -パイプの容量を現在データを格納するのに使用されているバッファーの -サイズよりも小さくしようとした場合は、エラー \fBEBUSY\fP が発生する。 -.TP -\fBF_GETPIPE_SZ\fP (\fIvoid\fP; Linux 2.6.35 以降) -.\" -\fIfd\fP が参照するパイプの容量を (関数の結果として) 返す。 -.SS "File Sealing" -file seal は指定されたファイルで許可される操作の集合を制限する。 ファイルに設定される seal 毎に対応する操作の集合が規定されており、 -それ以降のそのファイルに対する対応する操作は \fBEPERM\fP で失敗する。 このようなファイルは sealed (seal が適用されている) -と呼ばれる。 デフォルトの seal の集合は、適用されるファイルやファイルシステムに依存する。 file seal の概要、 その目的、 -サンプルコードについては \fBmemfd_create\fP(2) を参照。 - -現在のところ \fItmpfs\fP ファイルシステムだけが sealing をサポートしている。 他のファイルシステムでは、 seal に関連する -\fBfcntl\fP(2) の操作はすべて \fBEINVAL\fP を返す。 - -seal は inode の属性である。 したがって、 同じ inode を参照するすべてのオープンされたファイルディスクリプターは、 同じ seal -の集合を共有する。 さらに、 seal は削除することはできず、 追加のみ可能である。 -.TP -\fBF_ADD_SEALS\fP (\fIint\fP; Linux 3.17 以降) -ビットマスク引き数 \fIarg\fP で指定された seal を、 ファイルディスクリプター \fIfd\fP が参照する inode の seal -の集合に追加する。 一度追加した seal を削除することはできない。 この呼び出しが成功すると、 seal はただちにカーネルにより適用される。 -現在の seal の集合に \fBF_SEAL_SEAL\fP (下記参照) が含まれている場合、 この呼び出しは \fBEPERM\fP で拒否される。 -すでに設定されている seal を追加した場合、 \fBF_SEAL_SEAL\fP がまだ設定されていない場合は no\-op (何もしない) となる。 -seal を設定するには、 ファイルディスクリプター \fIfd\fP が書き込み可能でなければならない。 -.TP -\fBF_GET_SEALS\fP (\fIvoid\fP; Linux 3.17 以降) -(関数の結果として) \fIfd\fP が参照する inode の seal の現在の集合を返す。 seal が何も設定されていない場合、 0 が返される。 -ファイルが sealing をサポートしていない場合、 \-1 が返され、 \fIerrno\fP に \fBEINVAL\fP が設定される。 -.PP -以下の seal が利用できる。 -.TP -\fBF_SEAL_SEAL\fP -この seal が設定されると、 これ以降の \fBF_ADD_SEALS\fP を指定した \fBfcntl\fP(2) の呼び出しはすべて \fBEPERM\fP -で失敗する。 したがって、 この seal を設定すると seal の集合自身の変更を防止できる。 ファイルの最初の seal の集合に -\fBF_SEAL_SEAL\fP が含まれていた場合、 結果的に seal の集合が定数になりロックされることになる。 -.TP -\fBF_SEAL_SHRINK\fP -この seal が設定されると、 設定されたファイルのサイズを小さくできなくなる。 この seal は \fBopen\fP(2) の \fBO_TRUNC\fP -フラグに影響する。 \fBtruncate\fP(2) と \fBftruncate\fP(2) についても同様である。 -対象のファイルのサイズを小さくしようとした場合、 これらの呼び出しは \fBEPERM\fP で失敗する。 -ファイルサイズを増やすことはこの場合でも可能である。 -.TP -\fBF_SEAL_GROW\fP -この seal が設定されると、 設定されたファイルのサイズを増やせなくなる。 この seal はファイルの末尾を超えての \fBwrite\fP(2) や -\fBtruncate\fP(2), \fBftruncate\fP(2), \fBfallocate\fP(2) に影響する。 -対象のファイルのサイズを大きくしようとした場合、 これらの呼び出しは \fBEPERM\fP で失敗する。 ファイルサイズが変わらない場合、 -小さくなる場合は、 これらの呼び出しはそのまま動作する。 -.TP -\fBF_SEAL_WRITE\fP -.\" One or more other seals are typically used with F_SEAL_WRITE -.\" because, given a file with the F_SEAL_WRITE seal set, then, -.\" while it would no longer be possinle to (say) write zeros into -.\" the last 100 bytes of a file, it would still be possible -.\" to (say) shrink the file by 100 bytes using ftruncate(), and -.\" then increase the file size by 100 bytes, which would have -.\" the effect of replacing the last hundred bytes by zeros. -.\" -この seal が設定されていると、 ファイルの内容を変更できない。 ファイルのサイズを縮小したり伸張したりすることは可能で許可されている。 -したがって、 この seal は通常は他の seal のいずれかと組み合わせて使用される。 この seal は \fBwrite\fP(2) と -\fBfallocate\fP(2) (\fBFALLOC_FL_PUNCH_HOLE\fP フラグとの組み合わせの場合のみ) に影響する。 この seal -が設定されると、 これらの呼び出しは \fBEPERM\fP で失敗する。 また、 \fBmmap\fP(2) -による新しい書き込み可能な共有メモリーマッピングの作成も \fBEPERM\fP で失敗する。 - -\fBfcntl\fP(2) の \fBF_ADD_SEALS\fP で \fBF_SEAL_WRITE\fP を設定しようとした場合、 -書き込み可能な共有マッピングが存在すると \fBEBUSY\fP で失敗する。 このようなマッピングは、 この seal -を追加する前にアンマップしなければならない。 また、 ファイルに対して処理待ちの非同期 I/O 操作 (\fBio_submit\fP(2) がある場合、 -処理されていない書き込みは破棄される。 -.SH 返り値 -成功した場合の返り値は操作の種類により違う: -.TP 0.9i -\fBF_DUPFD\fP -新しいディスクリプターを返す。 -.TP -\fBF_GETFD\fP -ファイルディスクリプターフラグの値 -.TP -\fBF_GETFL\fP -ファイル状態フラグの値 -.TP -\fBF_GETLEASE\fP -ファイルディスクリプターに対して保持されているリースの種別を返す。 -.TP -\fBF_GETOWN\fP -ディスクリプターの所有者を返す。 -.TP -\fBF_GETSIG\fP -読み込みや書き出しが可能になった時に送られるシグナルの値、もしくは 伝統的な \fBSIGIO\fP 動作の場合にはゼロを返す。 -.TP -\fBF_GETPIPE_SZ\fP, \fBF_SETPIPE_SZ\fP -パイプの容量。 -.TP -\fBF_GET_SEALS\fP -\fIfd\fP が参照する inode に設定されている seal を示すビットマスク。 -.TP -他の全てのコマンド -0 を返す。 -.PP -エラーの時は \-1 が返され、 \fIerrno\fP に適切な値が設定される。 -.SH エラー -.TP -\fBEACCES\fP か \fBEAGAIN\fP -他のプロセスが保持しているロックによって操作が禁止されている。 -.TP -\fBEAGAIN\fP -そのファイルは他のプロセスによってメモリーマップされているため、 操作が禁止されている。 -.TP -\fBEBADF\fP -\fIfd\fP がオープンされたファイルディスクリプターではない。 -.TP -\fBEBADF\fP -\fIcmd\fP が \fBF_SETLK\fP または \fBF_SETLKW\fP だったが、対象のファイルディスクリプターのオープンモードが -必要となるロックの型にマッチしていない。 -.TP -\fBEBUSY\fP -\fIcmd\fP が \fBF_SETPIPE_SZ\fP で、 \fIarg\fP で指定されたパイプの新しい容量がパイプが、 -現在パイプにあるデータを格納するのに使用されているバッファー容量よりも小さい。 -.TP -\fBEBUSY\fP -\fIcmd\fP が \fBF_ADD_SEALS\fP で、 \fIarg\fP に \fBF_SEAL_WRITE\fP が含まれており、 \fIfd\fP -が参照するファイルに対する書き込み可能な共有マッピングが存在する。 -.TP -\fBEDEADLK\fP -指定された \fBF_SETLKW\fP コマンドを実行した場合にはデッドロックになることが検出された。 -.TP -\fBEFAULT\fP -\fIlock\fP が利用可能なアドレス空間の外部にある。 -.TP -\fBEINTR\fP -\fIcmd\fP が \fBF_SETLKW\fP か \fBF_OFD_SETLKW\fP で、 操作がシグナルにより割り込まれた。 \fBsignal\fP(7) -参照。 -.TP -\fBEINTR\fP -\fIcmd\fP が \fBF_GETLK\fP, \fBF_SETLK\fP, \fBF_OFD_GETLK\fP, \fBF_OFD_SETLK\fP で、 -操作がシグナルにより割り込まれた (\fBsignal\fP(7) 参照)。 \fBF_GETLK\fP と \fBF_SETLK\fP -の場合、ロックを確認したり取得したりする前にシグナルによって割り込まれた。 これはたいていリモートのファイルをロックする場合 (例えば NFS -上でロックする場合) に起こる。 しかしローカルでも起こる場合がある。 -.TP -\fBEINVAL\fP -カーネルが認識しない値が \fIcmd\fP で指定された。 -.TP -\fBEINVAL\fP -\fIcmd\fP が \fBF_ADD_SEALS\fP で、 \fIarg\fP に認識できない seal を示すビットが含まれている。 -.TP -\fBEINVAL\fP -\fIcmd\fP が \fBF_ADD_SEALS\fP か \fBF_GET_SEALS\fP で、 \fIfd\fP が参照している inode -が格納されているファイルシステムが sealing をサポートしていない。 -.TP -\fBEINVAL\fP -\fIcmd\fP が \fBF_DUPFD\fP で、 \fIarg\fP が負か、もしくは許される最大値よりも大きい (\fBgetrlimit\fP(2) の -\fBRLIMIT_NOFILE\fP の議論を参照)。 -.TP -\fBEINVAL\fP -\fIcmd\fP が \fBF_SETSIG\fP で、 \fIarg\fP が許可されたシグナル番号ではない。 -.TP -\fBEINVAL\fP -\fIcmd\fP が \fBF_OFD_SETLK\fP, \fBF_OFD_SETLKW\fP, \fBF_OFD_GETLK\fP のいずれかで、 \fIl_pid\fP に -0 が指定されなかった。 -.TP -\fBEMFILE\fP -\fIcmd\fP が \fBF_DUPFD\fPで、 プロセスがすでに最大数までファイルディスクリプターをオープンしている。 -.TP -\fBENOLCK\fP -オープンされているロックの数が多過ぎて、ロックテーブルがいっぱいである。 または remote locking protocol (例えば NFS -上のロック) が失敗した。 -.TP -\fBENOTDIR\fP -\fBF_NOTIFY\fP が \fIcmd\fP に指定されたが、 \fIfd\fP がディレクトリを参照していない。 -.TP -\fBEPERM\fP -追加専用属性が設定されたファイルの \fBO_APPEND\fP フラグをクリアしようと試みた。 -.TP -\fBEPERM\fP -\fIcmd\fP が \fBF_ADD_SEALS\fP だが、 \fIfd\fP が書き込み用にオープンされていないか、 ファイルの現在の seal の集合にすでに -\fBF_SEAL_SEAL\fP が含まれている。 -.SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001. POSIX.1\-2001 で規定されている操作は、 -\fBF_DUPFD\fP, \fBF_GETFD\fP, \fBF_SETFD\fP, \fBF_GETFL\fP, \fBF_SETFL\fP, -\fBF_GETLK\fP, \fBF_SETLK\fP, \fBF_SETLKW\fP だけである。 - -\fBF_GETOWN\fP と \fBF_SETOWN\fP は POSIX.1\-2001 で規定されている。 (これら定義するには、 -\fB_BSD_SOURCE\fP を定義するか、 \fB_XOPEN_SOURCE\fP を 500 以上の値で定義するか、 \fB_POSIX_C_SOURCE\fP -を 200809L 以上の値で定義するか、 のいずれが必要である。) - -\fBF_DUPFD_CLOEXEC\fP は POSIX.1\-2008 で規定されている。 -(これら定義するには、 -\fB_POSIX_C_SOURCE\fP を 200809L 以上の値で定義するか、 -\fB_XOPEN_SOURCE\fP を 700 以上の値で定義すること。) - -.\" .PP -.\" SVr4 documents additional EIO, ENOLINK and EOVERFLOW error conditions. -\fBF_GETOWN_EX\fP, \fBF_SETOWN_EX\fP, \fBF_SETPIPE_SZ\fP, \fBF_GETPIPE_SZ\fP, -\fBF_GETSIG\fP, -\fBF_SETSIG\fP, \fBF_NOTIFY\fP, \fBF_GETLEASE\fP, \fBF_SETLEASE\fP は Linux 固有である -(これらの定義を有効にするには \fB_GNU_SOURCE\fP マクロを定義すること)。 - -\fBF_OFD_SETLK\fP, \fBF_OFD_SETLKW\fP, \fBF_OFD_GETLK\fP は Linux 固有だが (これらの定義を得るには -\fB_GNU_SOURCE\fP を定義しなければならない)、 POSIX.1 の次のバージョンに含めようという活動が進められている。 - -.\" FIXME . Once glibc adds support, add a note about FTM requirements -\fBF_ADD_SEALS\fP と \fBF_GET_SEALS\fP は Linux 固有である。 -.SH 注意 -.\" -エラーの際の返り値が \fBdup2\fP(2) と \fBF_DUPFD\fP では異なっている。 -.SS ファイルロック -元々の Linux の \fBfcntl\fP() システムコールは (\fIflock\fP 構造体で) 大きな -ファイルオフセットを扱えるように設計されていなかった。 -その結果、Linux 2.4 で \fBfcntl64\fP() システムコールが追加された。 -この新しいシステムコールは、ファイルのロックに \fIflock64\fP という別の -構造体を利用し、これに対応するコマンドとして \fBF_GETLK64\fP, -\fBF_SETLK64\fP, \fBF_SETLKW64\fP を使用する。 -しかし、 glibc を使うアプリケーションではこれらの詳細を無視することが -できる。 glibc の \fBfcntl\fP のラッパー関数は新しいシステムコールが -利用できる場合はそれを利用するようになっているからである。 - -エラーの際の返り値が \fBdup2\fP(2) と \fBF_DUPFD\fP では異なっている。 -.SS レコードロック -カーネル 2.0 以降では、 \fBflock\fP(2) と \fBfcntl\fP() が設定するロック種別の間に相互作用はない。 - -.\" e.g., Solaris 8 documents this field in fcntl(2), and Irix 6.5 -.\" documents it in fcntl(5). mtk, May 2007 -.\" Also, FreeBSD documents it (Apr 2014). -システムによっては、 \fIstruct flock\fP に上記以外のフィールドがあるものもある (例えば \fIl_sysid\fP)。 -はっきりと言えることは、ロックを保持しているプロセスが別のマシンに存在 する場合には、 \fIl_pid\fP -だけはあまり役にたたないだろうということである。 - -元々の Linux の \fBfcntl\fP() システムコールは (\fIflock\fP 構造体で) 大きな -ファイルオフセットを扱えるように設計されていなかった。 -その結果、Linux 2.4 で \fBfcntl64\fP() システムコールが追加された。 -この新しいシステムコールは、ファイルのロックに \fIflock64\fP という別の -構造体を利用し、これに対応するコマンドとして \fBF_GETLK64\fP, -\fBF_SETLK64\fP, \fBF_SETLKW64\fP を使用する。 -しかし、 glibc を使うアプリケーションではこれらの詳細を無視することが -できる。 glibc の \fBfcntl\fP のラッパー関数は新しいシステムコールが -利用できる場合はそれを利用するようになっているからである。 -.SS "レコードロックと NFS" -.\" -.\" Neil Brown: With NFSv3 the failure mode is the reverse. If -.\" the server loses contact with a client then any lock stays in place -.\" indefinitely ("why can't I read my mail"... I remember it well). -.\" -.\" -.\" Jeff Layton: -.\" Note that this is not a firm timeout. The server runs a job -.\" periodically to clean out expired stateful objects, and it's likely -.\" that there is some time (maybe even up to another whole lease period) -.\" between when the timeout expires and the job actually runs. If the -.\" client gets a RENEW in there within that window, its lease will be -.\" renewed and its state preserved. -.\" -Linux 3.12 より前では、 NFSv4 クライアントが一定時間サーバーと通信がなかった場合 (90 秒間通信がない場合と定義されている)、 -クライアントが気付かずにロックを失い再獲得する場合がある。 (通信がなくなったみなす時間は NFSv4 leastime と呼ばれる。 Linux -NFS サーバーでは、 この値は \fI/proc/fs/nfsd/nfsv4leasetime\fP を見て決定される。 このファイルの値の単位は秒であり、 -このファイルのデフォルト値は 90 である。) この状況では潜在的にデータ破壊が起こる危険性がある。 -通信がなかった間に他のプロセスがロックを獲得しファイル入出力を行う場合があるからである。 - -.\" commit ef1820f9be27b6ad158f433ab38002ab8131db4d -.\" commit f6de7a39c181dfb8a2c534661a53c73afb3081cd -Linux 3.12 以降、 NFSv4 クライアントがサーバーと通信がなかった場合、 -ロックを持っていると「思っている」プロセスがそのファイルに入出力を行うと失敗する。 -そのプロセスがそのファイルをいったんクローズし再オープンするまでは入出力は失敗する。 カーネルパラメーター -\fInfs.recover_lost_locks\fP を 1 に設定すると、 Linux 3.12 より前の動作にすることができる。 この場合、 -サーバーとの通信が再確立された場合、 クライアントがは失われたロックを回復しようとする。 データ破壊が起こる危険性があるため、 -このパラメーターはデフォルトでは 0 (無効) になっている。 -.SH バグ -.SS F_SETFL -.\" FIXME . According to POSIX.1-2001, O_SYNC should also be modifiable -.\" via fcntl(2), but currently Linux does not permit this -.\" See http://bugzilla.kernel.org/show_bug.cgi?id=5994 -\fBF_SETFL\fP を使って、 フラグ \fBO_DSYNC\fP と \fBO_SYNC\fP -の状態を変更することはできない。これらのフラグの状態を変更しようとした場合には、黙って無視される。 -.SS F_GETOWN -.\" glibc source: sysdeps/unix/sysv/linux/i386/sysdep.h -.\" mtk, Dec 04: some limited testing on alpha and ia64 seems to -.\" indicate that ANY negative PGID value will cause F_GETOWN -.\" to misinterpret the return as an error. Some other architectures -.\" seem to have the same range check as i386. -いくつかのアーキテクチャー (特に i386) における Linux システムコールの慣習 -のため以下の制限が存在する。 -\fBF_GETOWN\fP が返す (負の) プロセスグループID が \-1 から \-4095 の範囲に入った場合、 -glibc はこの返り値をシステムコールでエラーが起こったと間違って解釈してしまう。 -つまり、 \fBfcntl\fP() の返り値は \-1 となり、 \fIerrno\fP には (正の) プロセスグループID -が設定されることになる。Linux 固有の \fBF_GETOWN_EX\fP ではこの問題を回避できる。 -glibc バージョン 2.11 以降では、glibc では \fBF_GETOWN_EX\fP を使って -\fBF_GETOWN\fP を実装することで、カーネルの \fBF_GETOWN\fP の問題を見えないようにしている。 -.SS F_SETOWN -.\" -Linux 2.4 以前では、非特権プロセスが \fBF_SETOWN\fP を使って、ソケットのファイルディスクリプターの所有者に 呼び出し元以外のプロセス -(やプロセスグループ) を指定すると 発生するバグがある。この場合、 呼び出し元が所有者として指定したプロセス (やプロセスグループ) に -シグナルを送る許可を持っていたとしても、 \fBfcntl\fP() が \-1 を返し \fIerrno\fP に \fBEPERM\fP を設定することがある。 -このエラーが返ったにもかかわらず、ファイルディスクリプターの所有者 は設定され、シグナルはその所有者に送られる。 -.SS デッドロックの検出 -.\" -\fBF_SETLKW\fP 要求を処理する際にカーネルが使用するデッドロック検出アルゴリズムは、 false negative になる場合 -(デッドロックを検出できず、 デッドロックになったプロセスは無限に停止する) も false positive になる場合 (デッドロックがない場合でも -\fBEDEADLK\fP エラーとなる) もある。 例えば、 カーネルは依存関係の検索を行うロックの深さを 10 ステップに限定しているが、 -このためこれよりも長い循環するデッドロックは検出されない。 また、 \fBclone\fP(2) の \fBCLONE_FILES\fP フラグを使って作成された -2 つ以上のプロセスが (カーネルにとって) 衝突するように見えるロックを適用した場合、 カーネルはデッドロックを誤って検出する。 -.SS "強制ロック (mandatory locking)" -.\" http://marc.info/?l=linux-kernel&m=119013491707153&w=2 -.\" -.\" Reconfirmed by Jeff Layton -.\" From: Jeff Layton redhat.com> -.\" Subject: Re: Status of fcntl() mandatory locking -.\" Newsgroups: gmane.linux.file-systems -.\" Date: 2014-04-28 10:07:57 GMT -.\" http://thread.gmane.org/gmane.linux.file-systems/84481/focus=84518 -Linux の強制ロックの実装は、 競合条件下で強制ロックが不完全になるような場合がある。 ロックと重なって実行された \fBwrite\fP(2) -の呼び出しは強制ロックが獲得された後にもデータを変更することができる。 ロックと重なって実行された \fBread\fP(2) -の呼び出しは強制ロックが獲得された後になって行われたデータの変更を 検出することができる。 同様の競合条件が強制ロックと \fBmmap\fP(2) -の間にも存在する。それゆえ、強制ロックに頼るのはお薦めできない。 -.SH 関連項目 -\fBdup2\fP(2), \fBflock\fP(2), \fBopen\fP(2), \fBsocket\fP(2), \fBlockf\fP(3), -\fBcapabilities\fP(7), \fBfeature_test_macros\fP(7) - -Linux カーネルソースの \fIDocumentation/filesystems/\fP ディレクトリ内の \fIlocks.txt\fP, -\fImandatory\-locking.txt\fP, \fIdnotify.txt\fP (以前のカーネルでは、これらのファイルは -\fIDocumentation/\fP ディレクトリ直下にあり、 \fImandatory\-locking.txt\fP は \fImandatory.txt\fP -という名前であった) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/flock.2 b/manual/LDP_man-pages/draft/man2/flock.2 index a93423ee..1c78dde9 100644 --- a/manual/LDP_man-pages/draft/man2/flock.2 +++ b/manual/LDP_man-pages/draft/man2/flock.2 @@ -47,12 +47,12 @@ .\" Modified 2005-02-26, Akihiro MOTOKI .\" Updated 2005-09-06, Akihiro MOTOKI .\" -.TH FLOCK 2 2014\-09\-21 Linux "Linux Programmer's Manual" +.TH FLOCK 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 flock \- オープンされたファイルに対するアドバイザリロックの適用、解除を行う .SH 書式 \fB#include \fP -.sp +.PP \fBint flock(int \fP\fIfd\fP\fB, int \fP\fIoperation\fP\fB);\fP .SH 説明 オープンされたファイルにアドバイザリロック (advisory lock) の適用 や解除を行う。 ファイルは \fIfd\fP で指定する。引き数 @@ -72,25 +72,28 @@ flock \- オープンされたファイルに対するアドバイザリロッ \fBflock\fP() を呼び出したときに、指定したロック種別と異なるロックが別プロセスによって 保持されていると、 \fBflock\fP() は停止 (block) されることがある。 非停止 (nonblocking) タイプの要求を行うためには、 上記の操作 (operation) に \fBLOCK_NB\fP を論理和の形で指定する。 - +.PP 一つのファイルに共有ロックと排他ロックを同時に設定することはできない。 - -\fBflock\fP() によって作られるロックは、 オープンファイル記述 (open file description) (\fBopen\fP(2) 参照) -と関連付けられる。 したがって、ファイルディスクリプターの複製 (\fBfork\fP(2) や \fBdup\fP(2) などにより作成される) -は同じロックを参照し、 これらのファイルディスクリプターのどれを使っても このロックを変更したり解放したりできる。 また、ロックの解放は、 -上記の複数のファイルディスクリプターのいずれかに対して 明示的に \fBLOCK_UN\fP 操作を指示した場合か、これらのファイルディスクリプターがすべて -閉じられた場合に行われる。 - -あるプロセスが \fBopen\fP(2) (もしくは同様の方法) を使って同じファイルに対して 複数のディスクリプターを取得した場合、 -\fBflock\fP() はこれら複数のディスクリプターを各々独立のものとして扱う。 -これらのファイルディスクリプターの一つを使ってファイルをロックしようと した際、そのロック要求は、呼び出し元のプロセスがそのファイルの別の -ディスクリプター経由ですでに設定しているロックによって拒否される場合がある。 - +.PP +Locks created by \fBflock\fP() are associated with an open file description +(see \fBopen\fP(2)). This means that duplicate file descriptors (created by, +for example, \fBfork\fP(2) or \fBdup\fP(2)) refer to the same lock, and this +lock may be modified or released using any of these file descriptors. +Furthermore, the lock is released either by an explicit \fBLOCK_UN\fP operation +on any of these duplicate file descriptors, or when all such file +descriptors have been closed. +.PP +If a process uses \fBopen\fP(2) (or similar) to obtain more than one file +descriptor for the same file, these file descriptors are treated +independently by \fBflock\fP(). An attempt to lock the file using one of these +file descriptors may be denied by a lock that the calling process has +already placed via another file descriptor. +.PP 一つのプロセスは、一つのファイルに対して (共有ロックと排他ロックのうち) いずれか一種類のロックしか設定できない。 既にロックされたファイルに対して \fBflock\fP() を呼び出すと、既存のロックを新しいロックモードに変更することになる。 - +.PP \fBflock\fP() により作成されたロックは \fBexecve\fP(2) の前後で保存される。 - +.PP 共有ロックも排他ロックも、ファイルがどのモードでオープンされたかに 関係なく適用することができる。 .SH 返り値 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 @@ -120,16 +123,6 @@ kernel 2.0 以降では、 \fBflock\fP() は、GNU C ライブラリでの \fBf \fBfcntl\fP(2) で適用されるロックの種別には相互作用がなくなり、 \fBflock\fP() がデッドロックを検出しなくなる。 (ただし、最近の BSD などいくつかのシステムでは、 \fBflock\fP() と \fBfcntl\fP(2) ロックが互いに影響することが「ある」という点に注意すること。) .PP -.\" commit 5eebde23223aeb0ad2d9e3be6590ff8bbfab0fc2 -バージョン 2.6.11 以前の Linux カーネルでは、 \fBflock\fP() は NFS 上のファイルのロックを行わない -(つまり、ロックの対象はローカルシステムに限定されていた)。 その代わり、十分に最近のバージョンの Linux とロックをサポートするサーバーであれば、 -\fBfcntl\fP(2) のバイト範囲ロックを使うことができた。 \fBfcntl\fP(2) のバイト範囲ロックは NFS 上で動作する。 Linux -2.6.12 以降では、NFS クライアントは、 ファイル全体に対するバイト範囲ロックでエミュレートすることで、 \fBflock\fP() -ロックをサポートしている。 これは、\fBfcntl\fP(2) と \fBflock\fP() ロックが NFS 上では互いに影響しあうことを意味する。 -Linux 2.6.37 以降では、 \fBflock\fP() ロック (と \fBfcntl\fP(2) のバイト範囲ロック) -をローカルシステムに対するものとして扱う互換性モードが、 カーネルでサポートされている。 \fBnfs\fP(5) の \fIlocal_lock\fP -オプションの議論を参照。 -.PP \fBflock\fP() アドバイザリロックだけを適用する。したがって、ファイルに適切なアクセス権を 付与していれば、プロセスは \fBflock\fP() の使用に無視して、ファイルへの入出力を行うことができる。 .PP @@ -143,13 +136,28 @@ Linux 2.6.37 以降では、 \fBflock\fP() ロック (と \fBfcntl\fP(2) のバ 既存のロックがまず削除され、それから新しい ロックが設定される。この 2つのステップの間に、他のプロセスからの処理待ちの ロック要求が認められるかもしれず、結果として変換は停止 (block) したり、 (\fBLOCK_NB\fP が指定された場合には) 失敗したりする。 (これは元々の BSD の動作であり、多くの他の実装でも起こる。) +.SS "NFS details" +In Linux kernels up to 2.6.11, \fBflock\fP() does not lock files over NFS +(i.e., the scope of locks was limited to the local system). Instead, one +could use \fBfcntl\fP(2) byte\-range locking, which does work over NFS, given a +sufficiently recent version of Linux and a server which supports locking. +.PP +Since Linux 2.6.12, NFS clients support \fBflock\fP() locks by emulating them +as \fBfcntl\fP(2) byte\-range locks on the entire file. This means that +\fBfcntl\fP(2) and \fBflock\fP() locks \fIdo\fP interact with one another over +NFS. It also means that in order to place an exclusive lock, the file must +be opened for writing. +.PP +.\" commit 5eebde23223aeb0ad2d9e3be6590ff8bbfab0fc2 +Since Linux 2.6.37, the kernel supports a compatibility mode that allows +\fBflock\fP() locks (and also \fBfcntl\fP(2) byte region locks) to be treated as +local; see the discussion of the \fIlocal_lock\fP option in \fBnfs\fP(5). .SH 関連項目 \fBflock\fP(1), \fBclose\fP(2), \fBdup\fP(2), \fBexecve\fP(2), \fBfcntl\fP(2), \fBfork\fP(2), -\fBopen\fP(2), \fBlockf\fP(3) - +\fBopen\fP(2), \fBlockf\fP(3), \fBlslocks\fP(8) +.PP Linux カーネルソース内の \fIDocumentation/filesystems/locks.txt\fP (以前のカーネルでは \fIDocumentation/locks.txt\fP) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index b118f75c..00000000 --- a/manual/LDP_man-pages/draft/man2/fork.2 +++ /dev/null @@ -1,184 +0,0 @@ -.\" Copyright (C) 2006 Michael Kerrisk -.\" 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 -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 TABATA Tomohira -.\" all rights reserved. -.\" Translated Thu Jun 27 20:35:06 JST 1996 -.\" by TABATA Tomohira -.\" Modified Sun Dec 14 00:43:22 JST 1997 -.\" by HANATAKA Shinya -.\" Modified Tue Jul 10 05:36:22 JST 2001 -.\" by Yuichi SATO , LDP v1.38 -.\" Updated & Modified Wed Dec 29 12:33:12 JST 2004 -.\" by Yuichi SATO , LDP v2.01 -.\" Updated & Modified Wed Jan 3 04:11:03 JST 2007 by Yuichi SATO, LDP v2.43 -.\" Updated 2008-08-04, Akihiro MOTOKI , LDP v3.05 -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" -.TH FORK 2 2014\-05\-28 Linux "Linux Programmer's Manual" -.SH 名前 -fork \- 子プロセスを生成する -.SH 書式 -\fB#include \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))。 (一方、子プロセスは親プロセスから -\fBfcntl\fP(2) オープンファイル記述ロックと \fBflock\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 * -timer slack value のデフォルト値には、親プロセスの現在の timer slack value が設定される。 \fBprctl\fP(2) -の \fBPR_SET_TIMERSLACK\fP の説明を参照。 -.IP * -\fBmadvise\fP(2) の \fBMADV_DONTFORK\fP フラグでマークされたメモリーマッピングは、 \fBfork\fP() -によって引き継がれない。 -.IP * -子プロセスの終了シグナルは常に \fBSIGCHLD\fP である (\fBclone\fP(2) を参照)。 -.IP * -\fBioperm\fP(2) で設定されるポートアクセス許可ビットは、子プロセスには継承されない。子プロセスでは、 \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 - -.\" NOTE! The following should match the description in pthread_create(3) -システムで設定されたスレッド数の上限に達していた。 このエラーの原因となる上限値はいくつかある。 実ユーザー ID -当たりのプロセス数とスレッド数の上限である、ソフトリソース上限 \fBRLIMIT_NPROC\fP に達していた (\fBsetrlimit\fP(2) -で設定できる)。 カーネルのシステム全体のプロセスとスレッドの上限数である \fI/proc/sys/kernel/threads\-max\fP が達していた -(\fBproc\fP(5) 参照)。 PID の最大値 \fI/proc/sys/kernel/pid_max\fP に達していた (\fBproc\fP(5) -参照)。 -.TP -\fBEAGAIN\fP -呼び出し元は、スケジューリングポリシー \fBSCHED_DEADLINE\fP で動作しており、かつ reset\-on\-fork -フラグがセットされていない。 \fBsched\fP(7) 参照。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/fsync.2 b/manual/LDP_man-pages/draft/man2/fsync.2 deleted file mode 100644 index a215d6b0..00000000 --- a/manual/LDP_man-pages/draft/man2/fsync.2 +++ /dev/null @@ -1,129 +0,0 @@ -.\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu) and -.\" and Copyright 2006 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 21 Aug 1994 by Michael Chastain : -.\" Removed note about old libc (pre-4.5.26) translating to 'sync'. -.\" Modified 15 Apr 1995 by Michael Chastain : -.\" Added `see also' section. -.\" Modified 13 Apr 1996 by Markus Kuhn -.\" Added remarks about fdatasync. -.\" Modified 31 Jan 1997 by Eric S. Raymond -.\" Modified 18 Apr 2001 by Andi Kleen -.\" Fix description to describe what it really does; add a few caveats. -.\" 2006-04-28, mtk, substantial rewrite of various parts. -.\" 2012-02-27 Various changes by Christoph Hellwig -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-22, HANATAKA Shinya -.\" Modified 2001-05-19, HANATAKA Shinya -.\" Updated 2005-09-06, Akihiro MOTOKI -.\" Updated 2006-07-30, Kentaro Shirakata -.\" Updated 2007-10-13, Akihiro MOTOKI , LDP v2.65 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH FSYNC 2 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -fsync \- メモリー上にあるファイルの内容をストレージデバイス上のものと同期させる -.SH 書式 -\fB#include \fP -.sp -\fBint fsync(int \fP\fIfd\fP\fB);\fP -.sp -\fBint fdatasync(int \fP\fIfd\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBfsync\fP(): _BSD_SOURCE || _XOPEN_SOURCE -.br -.\" _POSIX_C_SOURCE\ >=\ 200112L only since glibc 2.8 - || /* glibc 2.8 以降では: */ _POSIX_C_SOURCE\ >=\ 200112L -.br -\fBfdatasync\fP(): _POSIX_C_SOURCE\ >=\ 199309L || _XOPEN_SOURCE\ >=\ 500 -.SH 説明 -\fBfsync\fP() は、ファイルディスクリプター \fIfd\fP で参照されるファイルの、メモリー内で存在す -る修正されたデータ (つまり修正されたバッファーキャッシュページ) を、ディスクデ -バイス(またはその他の永続ストレージデバイス) に転送 (「フラッシュ」) し、これ -により、システムがクラッシュしたり、再起動された後も、変更された全ての情報が -取り出せるようになる。「フラッシュ」には、ライトスルー (write through) や -(存在する場合には) ディスクキャッシュのフラッシュも含まれる。この呼び出しは -転送が終わったとデバイスが報告するまでブロックする。またファイルに結びついた -メタデータ情報 (\fBstat\fP(2) 参照) もフラッシュする。 - -\fBfsync\fP() の呼び出しは、ファイルが存在しているディレクトリのエントリーがディスクへ 書き込まれたことを保証するわけではない。 -保証するためには明示的にそのディレクトリのファイルディスクリプターに対しても \fBfsync\fP() する必要がある。 - -\fBfdatasync\fP() は \fBfsync\fP() と同様であるが、メタデータの扱いが異なる。 \fBfdatasync\fP() -は、それ以降のデータ読み込みを正しく扱うためにそのメタデータが必要に ならない限り、変更されたメタデータをフラッシュしない。 例えば、 st_atime -や st_mtime (それぞれ最終アクセス時刻、最終修正時刻; \fBstat\fP(2) 参照) の変更はフラッシュを必要としない。 -なぜならこれらはそれ以降のデータ読み込みを正しく扱うために 必要ではないからである。 一方、ファイルサイズ (\fBftruncate\fP(2) では -\fIst_size\fP) の変更はメタデータのフラッシュが必要である。 - -\fBfdatasync\fP() の狙いは、全てのメタデータをディスクと同期する必要のない アプリケーションに対して、ディスクアクセスを減らすことである。 -.SH 返り値 -成功した場合、これらのシステムコールはゼロを返す。 エラーの場合、\-1 が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEBADF\fP -\fIfd\fP が有効なオープンされたディスクリプターでない。 -.TP -\fBEIO\fP -同期操作の間にエラーが発生した。 -.TP -\fBEROFS\fP, \fBEINVAL\fP -\fIfd\fP が同期操作をサポートしてない特殊なファイルを参照している。 -.SH 準拠 -4.3BSD, 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 them to 1. -\fBfdatasync\fP() が利用可能な POSIX システムでは、 \fB_POSIX_SYNCHRONIZED_IO\fP が -\fI\fP で 0 より大きな値に定義される (\fBsysconf\fP(3) 参照)。 -.SH 注意 -(Linux はそうではないが) いくつかの UNIX システムでは -\fIfd\fP が\fI書き込み可能な\fPファイルディスクリプターでなければならない。 - -Linux 2.2 以前では、 \fBfdatasync\fP() は \fBfsync\fP() と等価であり、性能面でのメリットはない。 - -古いカーネルやあまり使われていないファイルシステムの \fBfsync\fP() の実装では、 -ディスクキャッシュをフラッシュする方法が分からない場合がある。そのような場合 -には、安全に操作が行われることを保証するため、\fBhdparm\fP(8) や \fBsdparm\fP(8) を -使ってディスクキャッシュを無効にする必要がある。 -.SH 関連項目 -\fBbdflush\fP(2), \fBopen\fP(2), \fBsync\fP(2), \fBsync_file_range\fP(2), \fBhdparm\fP(8), -\fBmount\fP(8), \fBsync\fP(1) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 8ce02c00..00000000 --- a/manual/LDP_man-pages/draft/man2/futex.2 +++ /dev/null @@ -1,223 +0,0 @@ -.\" 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 -.\" 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 -.\" Date: Tue Jun 27 02:54:58 2006 -0700 -.\" -.\" commit e2970f2fb6950183a34e8545faa093eb49d186e1 -.\" Author: Ingo Molnar -.\" Date: Tue Jun 27 02:54:47 2006 -0700 -.\" -.\" See Documentation/pi-futex.txt -.\" -.\" FIXME . -.\" 2.6.25 adds FUTEX_WAKE_BITSET, FUTEX_WAIT_BITSET -.\" commit cd689985cf49f6ff5c8eddc48d98b9d581d9475d -.\" Author: Thomas Gleixner -.\" 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 -.\" Date: Fri Apr 3 13:40:49 2009 -0700 -.\" -.\" commit ba9c22f2c01cf5c88beed5a6b9e07d42e10bd358 -.\" Author: Darren Hart -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright(C) 2003 Suzuki Takashi -.\" all rights reserved. -.\" Translated Fri Oct 24 10:37:10 JST 2003 -.\" by Suzuki Takashi. -.\" Updated & Modified Sat Feb 5 14:28:53 JST 2005 -.\" by Yuichi SATO , LDP v2.01 -.\" Updated & Modified Wed Jan 3 04:51:22 JST 2007 by Yuichi SATO, LDP v2.43 -.\" Updated 2013-05-01, Akihiro MOTOKI , LDP v3.51 -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH FUTEX 2 2014\-05\-21 Linux "Linux Programmer's Manual" -.SH 名前 -futex \- 高速ユーザー空間ロック -.SH 書式 -.nf -.sp -\fB#include \fP -\fB#include \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 -\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 -.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 -エラーの場合、全ての操作で \-1 が返り、 \fIerrno\fP -がエラーの内容を示す値に設定される。成功時の返り値は操作によって異なり、以下のリストに書かれている通りである。 -.TP -\fBFUTEX_WAIT\fP -そのプロセスが \fBFUTEX_WAKE\fP により wake された場合 0 を返す。発生する可能性があるエラーについては「エラー」の節を参照。 -.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 で、\fIuaddr\fP が指す値が期待値 \fIval3\fP と異なる状況が検出された。 -(これは競合を示しているかもしれない。この場合は安全な \fBFUTEX_WAKE\fP を使うこと。) -.TP -\fBEFAULT\fP -ユーザー空間から \fItimeout\fP の情報を取得する際にエラーが発生した。 -.TP -\fBEINTR\fP -\fBFUTEX_WAIT\fP 操作がシグナル (\fBsignal\fP(7) 参照) もしくは偽の wakeup により中断された。 -.TP -\fBEINVAL\fP -無効な引き数。 -.TP -\fBENFILE\fP -オープンされているファイルの総数がシステムの制限に達した。 -.TP -\fBENOSYS\fP -\fIop\fP に無効な操作が指定された。 -.TP -\fBETIMEDOUT\fP -\fBFUTEX_WAIT\fP 操作でタイムアウトが発生した。 -.TP -\fBEWOULDBLOCK\fP -\fIop\fP が \fBFUTEX_WAIT\fP で、その呼び出しにおいて \fIuaddr\fP が指す値が期待値 \fIval\fP と異なっていた。 -.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 関連項目 -\fBrestart_syscall\fP(2), \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.kernel.org\:/pub\:/linux\:/kernel\:/people\:/rusty/ -.UE -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/futimesat.2 b/manual/LDP_man-pages/draft/man2/futimesat.2 index b7a4b02f..1da77662 100644 --- a/manual/LDP_man-pages/draft/man2/futimesat.2 +++ b/manual/LDP_man-pages/draft/man2/futimesat.2 @@ -33,35 +33,35 @@ .\" Translated 2006-09-30 by Yuichi SATO , LDP v2.39 .\" Updated 2012-05-29, Akihiro MOTOKI .\" -.TH FUTIMESAT 2 2012\-05\-10 Linux "Linux Programmer's Manual" +.TH FUTIMESAT 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 futimesat \- ディレクトリファイルディスクリプターに対する相対パスのファイルのタイムスタンプを変更する .SH 書式 .nf \fB#include /* AT_* 定数の定義 */\fP \fB#include \fP -.sp +.PP \fBint futimesat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB,\fP \fB const struct timeval \fP\fItimes\fP\fB[2]);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBfutimesat\fP(): _GNU_SOURCE .SH 説明 このシステムコールは廃止予定である。代わりに \fButimensat\fP を使用すること。 - +.PP \fBfutimesat\fP() システムコールは \fButimes\fP() と全く同様に動作するが、このマニュアルページで説明する点が異なる。 - +.PP \fIpathname\fP で渡されたパス名が相対パスの場合、 パス名はファイルディスクリプター \fIdirfd\fP が参照するディレクトリに対する相対パスと解釈される (相対パスの場合に \fButimes\fP(2) で行われるように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈されるわけではない)。 - +.PP \fIpathname\fP が相対パスで \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 \fIpathname\fP は (\fButimes\fP(2) 同様) 呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 - +.PP \fIpathname\fP が絶対パスの場合、 \fIdirfd\fP は無視される。 .SH 返り値 成功すると、 \fBfutimesat\fP() は 0 を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値をセットする。 @@ -80,7 +80,7 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 .SH 準拠 このシステムコールは非標準である。 POSIX.1 に提案された仕様に基づいて実装されたが、 その仕様は \fButimensat\fP(2) で置き換えれた。 - +.PP 同様のシステムコールが Solaris に存在する。 .SH 注意 .SS "glibc での注意" @@ -91,6 +91,5 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 \fBstat\fP(2), \fButimensat\fP(2), \fButimes\fP(2), \fBfutimes\fP(3), \fBpath_resolution\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 index 6b8611e4..39544731 100644 --- a/manual/LDP_man-pages/draft/man2/get_kernel_syms.2 +++ b/manual/LDP_man-pages/draft/man2/get_kernel_syms.2 @@ -18,28 +18,31 @@ .\" Updated 2013-05-01, Akihiro MOTOKI , LDP v3.51 .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH GET_KERNEL_SYMS 2 2012\-10\-18 Linux "Linux Programmer's Manual" +.TH GET_KERNEL_SYMS 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 get_kernel_syms \- 公開されているカーネルやモジュールのシンボルの取得 .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint get_kernel_syms(struct kernel_sym *\fP\fItable\fP\fB);\fP .fi +.PP +\fINote\fP: No declaration of this system call is provided in glibc headers; +see NOTES. .SH 説明 \fB注意\fP: このシステムコールが存在するのは、カーネル 2.6 より前の Linux だけである。 - +.PP \fBget_kernel_syms\fP() は、 \fItable\fP が NULL の場合、 問い合わせできるシンボルの数を返す。 NULL 以外の場合、以下の構造体の列 (table) に値を入れて返す。 .PP .in +4n -.nf +.EX struct kernel_sym { unsigned long value; char name[60]; }; -.fi +.EE .in .PP シンボルの中には、 \fB#\fP\fImodule\-name\fP という形式の、カーネルが空の名前を持っているマジックシンボル (magic symbol) @@ -59,6 +62,13 @@ struct kernel_sym { このシステムコールが存在するのはカーネル 2.4 までの Linux だけである。 Linux 2.6 では削除された。 .SH 準拠 \fBget_kernel_syms\fP() は Linux 固有である。 +.SH 注意 +This obsolete system call is not supported by glibc. No declaration is +provided in glibc headers, but, through a quirk of history, glibc versions +before 2.23 did export an ABI for this system call. Therefore, in order to +employ this system call, it was sufficient to manually declare the interface +in your code; alternatively, you could invoke the system call using +\fBsyscall\fP(2). .SH バグ \fItable\fP 用に確保したバッファーの大きさを伝える方法がない。 プログラムがシンボルテーブルの大きさを問い合わせた後に、カーネルに シンボルが追加されると、メモリーの内容が破壊されることになる。 @@ -71,6 +81,5 @@ struct kernel_sym { \fBcreate_module\fP(2), \fBdelete_module\fP(2), \fBinit_module\fP(2), \fBquery_module\fP(2) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/get_mempolicy.2 b/manual/LDP_man-pages/draft/man2/get_mempolicy.2 deleted file mode 100644 index 1c8e3c87..00000000 --- a/manual/LDP_man-pages/draft/man2/get_mempolicy.2 +++ /dev/null @@ -1,125 +0,0 @@ -.\" Copyright 2003,2004 Andi Kleen, SuSE Labs. -.\" and Copyright 2007 Lee Schermerhorn, Hewlett Packard -.\" -.\" %%%LICENSE_START(VERBATIM_PROF) -.\" 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. -.\" -.\" Formatted or processed versions of this manual, if unaccompanied by -.\" the source, must acknowledge the copyright and authors of this work. -.\" %%%LICENSE_END -.\" -.\" 2006-02-03, mtk, substantial wording changes and other improvements -.\" 2007-08-27, Lee Schermerhorn -.\" more precise specification of behavior. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2006-08-14, Akihiro MOTOKI , LDP v2.39 -.\" Updated 2008-02-13, Akihiro MOTOKI, LDP v2.77 -.\" Updated 2008-08-06, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2008-08-21, Akihiro MOTOKI, LDP v3.07 -.\" Updated 2008-11-19, Akihiro MOTOKI, LDP v3.13 -.\" -.TH GET_MEMPOLICY 2 2008\-08\-15 Linux "Linux Programmer's Manual" -.SH 名前 -get_mempolicy \- プロセスの NUMA メモリーのポリシーを取得する -.SH 書式 -\fB#include \fP -.nf -.sp -\fBint get_mempolicy(int *\fP\fImode\fP\fB, unsigned long *\fP\fInodemask\fP\fB,\fP -\fB unsigned long \fP\fImaxnode\fP\fB, unsigned long \fP\fIaddr\fP\fB,\fP -\fB unsigned long \fP\fIflags\fP\fB);\fP -.sp -\fI\-lnuma\fP でリンクする。 -.fi -.SH 説明 -\fBget_mempolicy\fP() は、呼び出し元プロセスもしくは指定されたメモリーアドレスの NUMA ポリシーを \fIflags\fP -の設定に従って取得する。 - -NUMA (非対称メモリーアクセス) マシンでは、CPU により メモリーコントローラーが異なり、距離も異なっている。 -メモリーポリシーは、どのノードからメモリーをそのプロセスに 割り当てるかを定めるものである。 - -\fIflags\fP に 0 が指定された場合、 (\fBset_mempolicy\fP(2) で設定された) -呼び出し元プロセスのデフォルトポリシーに関する情報を返す。 返されたポリシー [\fImode\fP と \fInodemask\fP] を -\fBset_mempolicy\fP(2) に渡すことで、そのプロセスのポリシーを \fBget_mempolicy\fP() -を呼び出した時点の状態に戻すことができる。 - -\fIflags\fP に \fBMPOL_F_MEMS_ALLOWED\fP (Linux 2.6.24 以降で利用可能) を指定すると、 \fImode\fP -引き数は無視され、 そのプロセスがその後の \fBmbind\fP(2) や \fBset_mempolicy\fP(2) で [\fIモードフラグ\fP -が指定されていない場合に ] 指定できるノード (メモリー) の集合が \fInodemask\fP に返される。 -\fBMPOL_F_MEMS_ALLOWED\fP を、 \fBMPOL_F_ADDR\fP や \fBMPOL_F_NODE\fP と同時に指定することはできない。 - -\fIflags\fP に \fBMPOL_F_ADDR\fP が指定された場合、 \fIaddr\fP -で指定されたメモリーアドレスに適用されているポリシーに関する情報を返す。 \fBmbind\fP(2) や \fBnuma\fP(3) -で説明されているヘルパー関数を使って、 \fIaddr\fP を含むメモリー領域に対するポリシーが設定されていた場合には、 -返されるポリシーはプロセスのデフォルトポリシーと違うことがある。 - -\fImode\fP 引き数が NULL でない場合、 \fBget_mempolicy\fP() は要求された NUMA ポリシーのモードと追加の -\fIモードフラグ\fP を \fImode\fP が指す場所に格納する。 \fInodemask\fP が NULL 以外の場合、そのポリシーに対応するノードマスクを -この引き数が指す場所に格納する。 \fImaxnode\fP には \fInodemask\fP に格納できるノード ID の数、つまり最大ノード ID に 1 -を足した値を指定する。 \fImaxnode\fP で指定された値は常に \fIsizeof(unsigned long)\fP の倍数に切り上げられる。 - -\fIflags\fP で \fBMPOL_F_NODE\fP と \fBMPOL_F_ADDR\fP の両方が指定された場合、 \fBget_mempolicy\fP() -はアドレス \fIaddr\fP が割り当てられているノードのノード ID を \fImode\fP が指す場所に入れて返す。 -指定されたアドレスにどのページもまだ割り当てられていない場合、 \fBget_mempolicy\fP() -は、あたかもそのプロセスがそのアドレスに対して読み込みアクセスを 実行したかのようにページの割り当てを行い、ページが割り当てられた ノードの ID -を返す。 - -.\" Note: code returns next interleave node via 'mode' argument -Lee Schermerhorn -\fIflags\fP で \fBMPOL_F_NODE\fP は指定されたが、 \fBMPOL_F_ADDR\fP は指定されていない場合で、かつ -そのプロセスの現在のポリシーが \fBMPOL_INTERLEAVE\fP の場合、 \fBget_mempolicy\fP() -は、そのプロセスに対して割り当てられたカーネルの内部ページで 次にインターリーブ用に使用されるノードのノード ID を、 NULL でない -\fImode\fP 引き数が指す場所に入れて返す。 読み込みアクセス用として \fBMAP_PRIVATE\fP フラグ付きで \fBmmap\fP(2) -したプロセスメモリー領域や、 任意のアクセス用として \fBMAP_SHARED\fP フラグ付きで \fBmmap\fP(2) -したメモリー領域の、メモリーマップされたファイルに対するページも 上記のプロセスに対して割り当てられたページに含まれる。 - -他のフラグは予約されている。 - -設定可能なポリシーの概要については \fBset_mempolicy\fP(2) を参照。 -.SH 返り値 -成功すると、 \fBget_mempolicy\fP() は 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 -.SH エラー -.TP -\fBEFAULT\fP -\fInodemask\fP と \fImaxnode\fP で指定されたメモリー領域の一部または全部が、 呼び出し元がアクセス可能なアドレス空間外を指している。 -.TP -\fBEINVAL\fP -\fImaxnode\fP で指定された値がシステムがサポートするノード ID の数よりも少ない。 または、 \fIflags\fP に -\fBMPOL_F_NODE\fP でも \fBMPOL_F_ADDR\fP でもない値が指定された。 または、 \fIflags\fP に \fBMPOL_F_ADDR\fP -が指定されており、 \fIaddr\fP が NULL である。 または、 \fIflags\fP に \fBMPOL_F_ADDR\fP がされておらず、 -\fIaddr\fP が NULL でない。 または、 \fIflags\fP に \fBMPOL_F_NODE\fP が指定されており、 \fBMPOL_F_ADDR\fP -が指定されておらず、 プロセスの現在のポリシーが \fBMPOL_INTERLEAVE\fP でない。 または、 \fIflags\fP に -\fBMPOL_F_MEMS_ALLOWED\fP が指定されており、さらに \fBMPOL_F_ADDR\fP か \fBMPOL_F_NODE\fP -のいずれかが指定されている。 (他にも \fBEINVAL\fP となる場合がある。) -.SH バージョン -\fBget_mempolicy\fP() システムコールはバージョン 2.6.7 で Linux カーネルに追加された。 -.SH 準拠 -このシステムコールは Linux 固有である。 -.SH 注意 -ライブラリによるサポートについては \fBnuma\fP(7) を参照。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/getcpu.2 b/manual/LDP_man-pages/draft/man2/getcpu.2 index 94808e42..827986c8 100644 --- a/manual/LDP_man-pages/draft/man2/getcpu.2 +++ b/manual/LDP_man-pages/draft/man2/getcpu.2 @@ -22,17 +22,15 @@ .\" Updated 2013-03-26, Akihiro MOTOKI .\" Updated 2013-05-04, Akihiro MOTOKI .\" -.TH GETCPU 2 2013\-04\-03 Linux "Linux Programmer's Manual" +.TH GETCPU 2 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 getcpu \- 呼び出し元スレッドが動作している CPU と NUMA ノードを判定する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint getcpu(unsigned *\fP\fIcpu\fP\fB, unsigned *\fP\fInode\fP\fB, struct getcpu_cache *\fP\fItcache\fP\fB);\fP .fi - -\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 .SH 説明 \fBgetcpu\fP() システムコールは、呼び出し元のスレッドやプロセスが 現在動作しているプロセッサやノードの情報を特定し、 @@ -41,10 +39,10 @@ getcpu \- 呼び出し元スレッドが動作している CPU と NUMA ノー ノード情報は NUMAノードを識別するための一意な小さな整数である。 \fIcpu\fP か \fInode\fP のいずれかが NULL であれば、 その引き数に対応する情報の書き込みは行われない。 - +.PP このシステムコールの 3 番目の引き数は現在は使われておらず、 Linux 2.6.23 以前への移植性が必要な場合以外は NULL を渡すべきである (「注意」を参照)。 - +.PP \fIcpu\fP に格納された情報が最新だと保証できるのは、システムコールが呼ばれ た時点だけである。\fBsched_setaffinity\fP(2) を使って CPU affinity が固定 されていない限り、カーネルはいつでも CPU を変更してもよい (スケジューラ @@ -61,18 +59,17 @@ getcpu \- 呼び出し元スレッドが動作している CPU と NUMA ノー \fBEFAULT\fP 引き数が呼び出したプロセスのアドレス空間外を指している。 .SH バージョン -\fBgetcpu\fP() はカーネル 2.6.19 で x86_64 と i386 向けに追加された. +\fBgetcpu\fP() was added in kernel 2.6.19 for x86\-64 and i386. Library +support was added in glibc 2.29 (Earlier glibc versions did not provide a +wrapper for this system call, necessitating the use of \fBsyscall\fP(2).) .SH 準拠 \fBgetcpu\fP() は Linux 固有である。 .SH 注意 -Linux はこのシステムコールを可能な限り早く実行しようとする。 -\fBgetcpu\fP() は、CPU 毎のデータに対する最適化や NUMA 環境での最適化を -プログラムが行えるようにすることを目的として実装されているからである。 - -glibc はこのシステムコールに対するラッパー関数を提供していない。 -\fBsyscall\fP(2) を使って呼び出すか、 -代わりに \fBsched_getcpu\fP(3) を使用すること。 - +Linux makes a best effort to make this call as fast as possible. (On some +architectures, this is done via an implementation in the \fBvdso\fP(7).) The +intention of \fBgetcpu\fP() is to allow programs to make optimizations with +per\-CPU data or for NUMA optimization. +.PP .\" commit 4307d1e5ada595c87f9a4d16db16ba5edb70dcb1 .\" Author: Ingo Molnar .\" Date: Wed Nov 7 18:37:48 2007 +0100 @@ -119,8 +116,7 @@ glibc はこのシステムコールに対するラッパー関数を提供し に問題になると考えられ、この引き数は今では無視されるようになっている。 .SH 関連項目 \fBmbind\fP(2), \fBsched_setaffinity\fP(2), \fBset_mempolicy\fP(2), -\fBsched_getcpu\fP(3), \fBcpuset\fP(7) +\fBsched_getcpu\fP(3), \fBcpuset\fP(7), \fBvdso\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/getdents.2 b/manual/LDP_man-pages/draft/man2/getdents.2 deleted file mode 100644 index 36eddce3..00000000 --- a/manual/LDP_man-pages/draft/man2/getdents.2 +++ /dev/null @@ -1,250 +0,0 @@ -.\" Copyright (C) 1995 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 June 1995 by Andries Brouwer -.\" Modified 22 July 1995 by Michael Chastain : -.\" Derived from 'readdir.2'. -.\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Sat Feb 22 20:15:56 JST 1997 -.\" by HANATAKA Shinya -.\" Updated Sun Oct 12 JST 2003 by Kentaro Shirakata -.\" Updated Wed Jul 30 JST 2008 by Kentaro Shirakata -.\" Updated 2009-02-12 by Kentaro Shirakata -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH GETDENTS 2 2012\-08\-03 Linux "Linux Programmer's Manual" -.SH 名前 -getdents \- ディレクトリエントリーを取得する -.SH 書式 -.nf -\fBint getdents(unsigned int \fP\fIfd\fP\fB, struct linux_dirent *\fP\fIdirp\fP\fB,\fP -\fB unsigned int \fP\fIcount\fP\fB);\fP -.fi - -\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 -.SH 説明 -これはあなたの関心を引くような関数ではない。 POSIX 準拠の C ライブラリインターフェースについては \fBreaddir\fP(3) を見ること。 -このページは、カーネルシステムコールの生のインターフェースについて 記載したものである。 -.PP -\fBgetdents\fP() システムコールは、オープン済みのファイルディスクリプター \fIfd\fP で参照されるディレクトリから -\fIlinux_dirent\fP 構造体をいくつか読み出し、 \fIdirp\fP が指しているバッファーに格納する。 \fIcount\fP -引き数はそのバッファーのサイズを示す。 -.PP -\fIlinux_dirent\fP 構造体は以下のように宣言されている: -.PP -.in +4n -.nf -struct linux_dirent { - unsigned long d_ino; /* Inode number */ - 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)) */ - /* - char pad; // Zero padding byte - char d_type; // File type (only since Linux - // 2.6.4); offset is (d_reclen \- 1) - */ - -} -.fi -.in -.PP -\fId_ino\fP は inode 番号である。 \fId_off\fP はディレクトリの先頭から次の \fIlinux_dirent\fP の先頭までの距離である。 -\fId_reclen\fP はこの \fIlinux_dirent\fP 全体のサイズである。 \fId_name\fP はヌル文字で終わるファイル名である。 - -\fId_type\fP は、構造体の最後のバイトであり、ファイルタイプを示す。 \fId_type\fP は以下の値の一つを取る -(\fI\fP で定義されている)。 -.TP 12 -\fBDT_BLK\fP -ブロックデバイスである。 -.TP -\fBDT_CHR\fP -キャラクターデバイスである。 -.TP -\fBDT_DIR\fP -ディレクトリである。 -.TP -\fBDT_FIFO\fP -名前付きパイプ (FIFO) である。 -.TP -\fBDT_LNK\fP -シンボリックリンクである。 -.TP -\fBDT_REG\fP -通常のファイルである。 -.TP -\fBDT_SOCK\fP -UNIX ドメインソケットである。 -.TP -\fBDT_UNKNOWN\fP -ファイルタイプが不明である。 -.PP -\fId_type\fP フィールドは Linux 2.6.4 から実装されている。 これは \fIlinux_dirent\fP -構造体のうち、以前はゼロで埋められていた空間に配置されている。 従って、2.6.3 以前のカーネルでは、このフィールドにアクセスしようとすると 常に値 -0 (\fBDT_UNKNOWN\fP) が返される。 -.PP -.\" kernel 2.6.27 -.\" The same sentence is in readdir.2 -現在のところ、 \fId_type\fP でファイルタイプを返す機能が完全にサポートされているのは、 いくつかのファイルシステムにおいてのみである -(Btrfs, ext2, ext3, ext4 はサポートしている)。 どのアプリケーションも、 \fBDT_UNKNOWN\fP -が返された際に適切に処理できなければならない。 -.SH 返り値 -成功した場合は、読み込んだバイト数が返される。 ディレクトリの終わりならば 0 が返される。 エラーの場合は \-1 を返され、 \fIerrno\fP -に適切な値が設定される。 -.SH エラー -.TP -\fBEBADF\fP -ファイルディスクリプター \fIfd\fP が不正である。 -.TP -\fBEFAULT\fP -引き数が呼び出したプロセスのアドレス空間外を指している。 -.TP -\fBEINVAL\fP -結果用のバッファーが小さすぎる。 -.TP -\fBENOENT\fP -そのようなディレクトリは存在しない。 -.TP -\fBENOTDIR\fP -ファイルディスクリプターがディレクトリを参照していない。 -.SH 準拠 -.\" SVr4 documents additional ENOLINK, EIO error conditions. -SVr4. -.SH 注意 -glibc はこのシステムコールに対するラッパー関数を提供していないので、 \fBsyscall\fP(2) を使って呼び出すこと。 -\fIlinux_dirent\fP 構造体は自分で定義する必要がある。しかし、たいていはこのシステムコールではなく \fBreaddir\fP(3) -を使うべき場面のことが多い。 - -このシステムコールは \fBreaddir\fP(2) を置き換えるものである。 - -元々の Linux の \fBgetdents\fP() システムコールは、大きなファイルシステムと -大きなファイルオフセットを扱うことができなかった。 -その結果、Linux 2.4 で \fBgetdents64\fP() が追加された。 -\fBgetdents64\fP() では、\fIlinux_dirent\fP 構造体のフィールド \fId_ino\fP と -\fId_off\fP でビット幅の大きなデータ型が使われている。 -.SH 例 -.\" FIXME The example program needs to be revised, since it uses the older -.\" getdents() system call and the structure with smaller field widths. -下記のプログラムは \fBgetdents\fP() の使用例を示したものである。 以下は、このプログラムを ext2 ディレクトリで実行した際に得られる -出力の例である。 - -.in +4n -.nf -$\fB ./a.out /testfs/\fP -\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- nread=120 \-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -inode# file type d_reclen d_off d_name - 2 directory 16 12 . - 2 directory 16 24 .. - 11 directory 24 44 lost+found - 12 regular 16 56 a - 228929 directory 16 68 sub - 16353 directory 16 80 sub2 - 130817 directory 16 4096 sub3 -.fi -.in -.SS プログラムのソース -\& -.nf -#define _GNU_SOURCE -#include /* Defines DT_* constants */ -#include -#include -#include -#include -#include -#include - -#define handle_error(msg) \e - do { perror(msg); exit(EXIT_FAILURE); } while (0) - -struct linux_dirent { - long d_ino; - off_t d_off; - unsigned short d_reclen; - char d_name[]; -}; - -#define BUF_SIZE 1024 - -int -main(int argc, char *argv[]) -{ - int fd, nread; - char buf[BUF_SIZE]; - struct linux_dirent *d; - int bpos; - char d_type; - - fd = open(argc > 1 ? argv[1] : ".", O_RDONLY | O_DIRECTORY); - if (fd == \-1) - handle_error("open"); - - for ( ; ; ) { - nread = syscall(SYS_getdents, fd, buf, BUF_SIZE); - if (nread == \-1) - handle_error("getdents"); - - if (nread == 0) - break; - - printf("\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- nread=%d \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\en", nread); - printf("inode# file type d_reclen d_off d_name\en"); - for (bpos = 0; bpos < nread;) { - d = (struct linux_dirent *) (buf + bpos); - printf("%8ld ", d\->d_ino); - d_type = *(buf + bpos + d\->d_reclen \- 1); - printf("%\-10s ", (d_type == DT_REG) ? "regular" : - (d_type == DT_DIR) ? "directory" : - (d_type == DT_FIFO) ? "FIFO" : - (d_type == DT_SOCK) ? "socket" : - (d_type == DT_LNK) ? "symlink" : - (d_type == DT_BLK) ? "block dev" : - (d_type == DT_CHR) ? "char dev" : "???"); - printf("%4d %10lld %s\en", d\->d_reclen, - (long long) d\->d_off, d\->d_name); - bpos += d\->d_reclen; - } - } - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBreaddir\fP(2), \fBreaddir\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/getdomainname.2 b/manual/LDP_man-pages/draft/man2/getdomainname.2 index dcc32e81..d1bae322 100644 --- a/manual/LDP_man-pages/draft/man2/getdomainname.2 +++ b/manual/LDP_man-pages/draft/man2/getdomainname.2 @@ -39,32 +39,40 @@ .\" Updated & Modified 2004-12-29, Yuichi SATO .\" Updated 2008-12-26, Akihiro MOTOKI , LDP v3.15 .\" -.TH GETDOMAINNAME 2 2012\-10\-25 Linux "Linux Programmer's Manual" +.TH GETDOMAINNAME 2 2019\-10\-10 Linux "Linux Programmer's Manual" .SH 名前 getdomainname, setdomainname \- NIS ドメイン名の取得・設定をする .SH 書式 \fB#include \fP -.sp +.PP \fBint getdomainname(char *\fP\fIname\fP\fB, size_t \fP\fIlen\fP\fB);\fP .br \fBint setdomainname(const char *\fP\fIname\fP\fB, size_t \fP\fIlen\fP\fB);\fP -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP .ad l \fBgetdomainname\fP(), \fBsetdomainname\fP(): -.RS 4 -_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500) -.RE +.nf +.\" commit 266865c0e7b79d4196e2cc393693463f03c90bd8 + Since glibc 2.21: + _DEFAULT_SOURCE + In glibc 2.19 and 2.20: + _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500) + Up to and including glibc 2.19: + _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500) +.fi .ad .SH 説明 -これらの関数は、ホストシステムの NIS ドメイン名を取得・変更するために使われる。 - +These functions are used to access or to change the NIS domain name of the +host system. More precisely, they operate on the NIS domain name associated +with the calling process's UTS namespace. +.PP \fBsetdomainname\fP() は、ドメイン名を、文字配列 \fIname\fP で指定された値に設定する。 引き数 \fIlen\fP には、 \fIname\fP のバイト数を指定する (そのため、 \fIname\fP では文字列終端のヌルバイトは必要ない)。 - +.PP \fBgetdomainname\fP() は、NULL 終端されたドメイン名を、 \fIlen\fP バイトの長さの文字配列 \fIname\fP に格納して返す。ヌル終端されたドメイン名が \fIlen\fP バイトより長い場合、 \fBgetdomainname\fP() は、(glibc では) 始めの \fIlen\fP バイトを返し、(libc では) エラーとなる。 @@ -80,8 +88,8 @@ _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500) \fIlen\fP が負であるか、長すぎる。 .TP \fBEPERM\fP -\fBsetdomainname\fP() において、呼び出した人に特権がない (Linux では \fBCAP_SYS_ADMIN\fP ケーパビリティ -(capability) がない)。 +The caller did not have the \fBCAP_SYS_ADMIN\fP capability in the user +namespace associated with its UTS namespace (see \fBnamespaces\fP(7)). .PP \fBgetdomainname\fP() は以下のエラーで失敗する可能性がある。 .TP @@ -92,13 +100,12 @@ libc での \fBgetdomainname\fP() において、 \fIname\fP が NULL である POSIX では、これら関数は定義されていない。 .SH 注意 Linux 1.0 以降では、ドメイン名の長さの上限は 終端のヌルバイトを含めて 64 バイトである。 もっと古いカーネルでは 8 バイトであった。 - +.PP (x86 を含む) Linux のほとんどのアーキテクチャーでは、 \fBgetdomainname\fP() というシステムコールは存在しない。 その代わり、glibc で \fBgetdomainname\fP() がライブラリ関数として実装されており、この関数は \fBuname\fP(2) の呼び出しで返された \fIdomainname\fP フィールドのコピーを返す。 .SH 関連項目 -\fBgethostname\fP(2), \fBsethostname\fP(2), \fBuname\fP(2) +\fBgethostname\fP(2), \fBsethostname\fP(2), \fBuname\fP(2), \fButs_namespaces\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/getgid.2 b/manual/LDP_man-pages/draft/man2/getgid.2 index a65f8d59..696902f6 100644 --- a/manual/LDP_man-pages/draft/man2/getgid.2 +++ b/manual/LDP_man-pages/draft/man2/getgid.2 @@ -34,25 +34,25 @@ .\" by SUTO, Mitsuaki .\" Updated 2012-04-30, Akihiro MOTOKI .\" -.TH GETGID 2 2010\-11\-22 Linux "Linux Programmer's Manual" +.TH GETGID 2 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 getgid, getegid \- グループ ID を得る .SH 書式 \fB#include \fP .br \fB#include \fP -.sp +.PP \fBgid_t getgid(void);\fP .br \fBgid_t getegid(void);\fP .SH 説明 \fBgetgid\fP() は呼び出し元のプロセスの実グループ ID を返す。 - +.PP \fBgetegid\fP() は呼び出し元のプロセスの実効グループ ID を返す。 .SH エラー これらの関数は常に成功する。 .SH 準拠 -POSIX.1\-2001, 4.3BSD. +POSIX.1\-2001, POSIX.1\-2008, 4.3BSD. .SH 注意 元々の Linux の \fBgetgid\fP() と \fBgetegid\fP() システムコールは 16 ビットのグループ ID だけに対応していた。 @@ -60,9 +60,14 @@ POSIX.1\-2001, 4.3BSD. \fBgetgid32\fP() と \fBgetegid32\fP() が追加された。 glibc の \fBgetgid\fP() と \fBgetegid\fP() のラッパー関数は カーネルバージョンによるこの違いを吸収している。 +.PP +On Alpha, instead of a pair of \fBgetgid\fP() and \fBgetegid\fP() system calls, +a single \fBgetxgid\fP() system call is provided, which returns a pair of real +and effective GIDs. The glibc \fBgetgid\fP() and \fBgetegid\fP() wrapper +functions transparently deal with this. See \fBsyscall\fP(2) for details +regarding register mapping. .SH 関連項目 \fBgetresgid\fP(2), \fBsetgid\fP(2), \fBsetregid\fP(2), \fBcredentials\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/getgroups.2 b/manual/LDP_man-pages/draft/man2/getgroups.2 deleted file mode 100644 index df99d994..00000000 --- a/manual/LDP_man-pages/draft/man2/getgroups.2 +++ /dev/null @@ -1,131 +0,0 @@ -.\" Copyright 1993 Rickard E. Faith (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 Thu Oct 31 12:04:29 1996 by Eric S. Raymond -.\" Modified, 27 May 2004, Michael Kerrisk -.\" Added notes on capability requirements -.\" 2008-05-03, mtk, expanded and rewrote parts of DESCRIPTION and RETURN -.\" VALUE, made style of page more consistent with man-pages style. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-22, HANATAKA Shinya -.\" Updated 2001-02-10, Yuichi SATO -.\" Updated & Modified 2004-12-30, Yuichi SATO -.\" Updated 2008-08-04, Akihiro MOTOKI , LDP v3.05 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH GETGROUPS 2 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -getgroups, setgroups \- 補助グループ ID のリストを取得/設定する -.SH 書式 -\fB#include \fP -.br -\fB#include \fP -.sp -\fBint getgroups(int \fP\fIsize\fP\fB, gid_t \fP\fIlist\fP\fB[]);\fP -.sp -\fB#include \fP -.sp -\fBint setgroups(size_t \fP\fIsize\fP\fB, const gid_t *\fP\fIlist\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBsetgroups\fP(): _BSD_SOURCE -.SH 説明 -.PP -\fBgetgroups\fP() は呼び出し元プロセスの補助グループ (supplementary group) ID を \fIlist\fP に返す。 -\fIsize\fP 引き数には、 \fIlist\fP により参照されるバッファーに格納できる要素の最大数を設定すべきである。 呼び出し元プロセスが -\fIsize\fP 個より多くの補助グループのメンバの場合には、エラーとなる。 この関数を呼び出したプロセスの実効グループ ID が、 -返されるリストに含まれるかどうかは規定されていない (したがって、アプリケーションは \fBgetegid\fP(2) -を呼び出し、その結果の値を追加・削除すべきである)。 - -\fIsize\fP が 0 ならば、 \fIlist\fP は修正されないが、そのプロセスの補助グループ ID の合計数が返される。 これを使うことで、それ以降の -\fBgetgroups\fP() の呼び出しで必要となる動的割り当てバッファー \fIlist\fP のサイズを、呼び出し元が決定することができる。 -.PP -\fBsetgroups\fP() は、呼び出し元プロセスの補助グループ ID を設定する。 適切な特権 (Linux では \fBCAP_SETGID\fP -ケーパビリティ (capability)) が必要である。 \fIsize\fP 引き数には、 \fIlist\fP -により参照されるバッファーに格納された補助グループ ID の数を指定する。 -.SH 返り値 -\fBgetgroups\fP() は、成功すると補助グループ ID の数を返す。 エラーの場合 \-1 を返し、 \fIerrno\fP を適切に設定する。 - -\fBsetgroups\fP() は、成功すると 0 を返す。 エラーの場合 \-1 を返し、 \fIerrno\fP を適切に設定する。 -.SH エラー -.TP -\fBEFAULT\fP -\fIlist\fP が不正なアドレスである。 -.PP -\fBgetgroups\fP() は、上記に加えて以下のエラーで失敗する可能性がある。 -.TP -\fBEINVAL\fP -\fIsize\fP が補助グループ ID の数より小さいが 0 でない。 -.PP -\fBsetgroups\fP() は、上記に加えて以下のエラーで失敗する可能性がある。 -.TP -\fBEINVAL\fP -\fIsize\fP が \fBNGROUPS_MAX\fP より大きい (\fBNGROUPS_MAX\fP は Linux 2.6.4 より前では 32、Linux -2.6.4 以降では 65536)。 -.TP -\fBENOMEM\fP -メモリー不足。 -.TP -\fBEPERM\fP -呼び出し元プロセスが十分な特権を持っていない。 -.SH 準拠 -SVr4, 4.3BSD. \fBgetgroups\fP() 関数は POSIX.1\-2001 に準拠している。 \fBsetgroups\fP() -は特権を必要とするため、POSIX.1\-2001 に従っていない。 -.SH 注意 -プロセスは、実効グループ ID に加え、最大 \fBNGROUPS_MAX\fP までの補助グループ ID を持つことができる。 定数 -\fBNGROUPS_MAX\fP は \fI\fP で定義されている。 補助グループ ID の集合は親プロセスから継承され、 -\fBexecve\fP(2) の前後で保持される。 - -補助グループ ID の最大数は、実行時に \fBsysconf\fP(3) を使って以下のようにして調べることができる: -.nf - - long ngroups_max; - ngroups_max = sysconf(_SC_NGROUPS_MAX); - -.fi -\fBgetgroups\fP() の返り値の最大値は、この値より大きくなることはない。 Linux 2.6.4 以降では、補助グループ ID の最大数も -Linux 固有の読み込み専用のファイル \fI/proc/sys/kernel/ngroups_max\fP 経由で公開されている。 - -元々の Linux の \fBgetgroups\fP() システムコールは 16 ビットのグループ ID だけ -に対応していた。その後、Linux 2.4 で、32 ビットの ID に対応した -\fBgetgroups\fP() が追加された。glibc の \fBgetgroups\fP のラッパー関数はカーネル -バージョンによるこの違いを吸収している。 -.SH 関連項目 -\fBgetgid\fP(2), \fBsetgid\fP(2), \fBgetgrouplist\fP(3), \fBgroup_member\fP(3), -\fBinitgroups\fP(3), \fBcapabilities\fP(7), \fBcredentials\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/gethostname.2 b/manual/LDP_man-pages/draft/man2/gethostname.2 deleted file mode 100644 index 1e9a7140..00000000 --- a/manual/LDP_man-pages/draft/man2/gethostname.2 +++ /dev/null @@ -1,126 +0,0 @@ -.\" Copyright 1993 Rickard E. Faith (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 1995-07-22 by Michael Chastain : -.\" 'gethostname' is real system call on Linux/Alpha. -.\" Modified 1997-01-31 by Eric S. Raymond -.\" Modified 2000-06-04, 2001-12-15 by aeb -.\" Modified 2004-06-17 by mtk -.\" Modified 2008-11-27 by mtk -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 SUTO, Mitsuaki -.\" all rights reserved. -.\" Translated 1997-06-27, SUTO, Mitsuaki -.\" Updated 2000-09-30, Yuichi SATO -.\" Updated & Modified 2002-01-14, Yuichi SATO -.\" Updated & Modified 2004-12-30, Yuichi SATO -.\" Updated & Modified 2006-01-31, Akihiro MOTOKI -.\" Updated 2008-12-26, Akihiro MOTOKI, LDP v3.15 -.\" -.TH GETHOSTNAME 2 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -gethostname, sethostname \- ホスト名の取得・設定をする -.SH 書式 -\fB#include \fP -.sp -\fBint gethostname(char *\fP\fIname\fP\fB, size_t \fP\fIlen\fP\fB);\fP -.br -\fBint sethostname(const char *\fP\fIname\fP\fB, size_t \fP\fIlen\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -.PD 0 -\fBgethostname\fP(): -.RS 4 -glibc 2.12 以降: _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 -.br -|| /* glibc 2.12 以降: */ _POSIX_C_SOURCE\ >=\ 200112L -.RE -.br -\fBsethostname\fP(): -.RS 4 -_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500) -.RE -.PD -.ad -.SH 説明 -これらのシステムコールは、現在のプロセッサのホスト名を取得・変更するために 使用される。 - -\fBsethostname\fP() は、ホスト名を、文字配列 \fIname\fP で指定された値に設定する。 引き数 \fIlen\fP には、 \fIname\fP -のバイト数を指定する (そのため、 \fIname\fP では文字列終端のヌルバイトは必要ない)。 - -\fBgethostname\fP() は、NULL 終端されたホスト名を、 \fIlen\fP バイトの長さの文字配列 \fIname\fP -に格納して返す。ヌル終端されたホスト名が格納先のバッファーよりも長い場合は、 ホスト名は切り詰められ、エラーは返されない (下記の「注意」の節を参照)。 -POSIX.1\-2001 では、結果の切り詰めが発生した場合に、 返されたバッファーに終端のヌルバイトが含まれているかどうかは 規定されていない。 -.SH 返り値 -成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEFAULT\fP -\fIname\fP が不正なアドレスである。 -.TP -\fBEINVAL\fP -.\" Can't occur for gethostbyname() wrapper, since 'len' has an -.\" unsigned type; can occur for the underlying system call. -\fIlen\fP が負である。 \fBsethostname\fP() において \fIlen\fP が許容された最大サイズを越えている。 -.TP -\fBENAMETOOLONG\fP -(glibc \fBgethostname\fP() で) \fIlen\fP が実際のホスト名の長さよりも小さい (glibc バージョン 2.1 -より前では、この状況で \fBEINVAL\fP が使用される)。 -.TP -\fBEPERM\fP -\fBsethostname\fP() において、呼び出した人が \fBCAP_SYS_ADMIN\fP ケーパビリティ (capability) -を持っていなかった。 -.SH 準拠 -SVr4, 4.4BSD (これらのインターフェースは 4.2BSD で初めて登場した)。 POSIX.1\-2001 では -\fBgethostname\fP() については規定しているが、 \fBsethostname\fP() は規定していない。 -.SH 注意 -SUSv2 では「ホスト名が 255 バイトに制限される」ことを保証している。 POSIX.1\-2001 では「ホスト名 (終端のヌルバイトは含まない) -が \fBHOST_NAME_MAX\fP バイトに制限される」ことを保証している。 Linux では、 \fBHOST_NAME_MAX\fP は 64 -に定義されており、 Linux 1.0 以降ではこれが上限となってきた (もっと古いカーネルでは 8 バイトの上限が適用されていた)。 -.SS "C ライブラリとカーネル ABI の違い" -GNU C ライブラリは、 \fBgethostname\fP() システムコールを利用していない。その代わり、 \fBgethostname\fP() -をライブラリ関数として実装しており、 この関数は \fBuname\fP(2) を呼び出し、 \fBuname\fP(2) が返した \fInodename\fP -フィールド (の最大 \fIlen\fP バイト) を \fIname\fP にコピーする。 コピーを行った際に、この関数は \fInodename\fP の長さが -\fIlen\fP 以上かの確認を行い、 \fIlen\fP 以上の場合には \-1 を返し、 \fIerrno\fP に \fBENAMETOOLONG\fP を設定する。 -この場合、返された \fIname\fP には終端のヌルバイトは含まれない。 - -.\" At least glibc 2.0 and 2.1, older versions not checked -バージョン 2.2 より前の glibc では、 \fInodename\fP の長さが \fIlen\fP 以上の場合の扱いが異なる; \fIlen\fP -以上の場合には、 \fIname\fP には何もコピーせず、関数は \-1 を返し、 \fIerrno\fP に \fBENAMETOOLONG\fP を設定する。 -.SH 関連項目 -\fBgetdomainname\fP(2), \fBsetdomainname\fP(2), \fBuname\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index d35c13fb..00000000 --- a/manual/LDP_man-pages/draft/man2/getitimer.2 +++ /dev/null @@ -1,152 +0,0 @@ -.\" Copyright 7/93 by Darren Senn -.\" 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 -.\" 2005-04-06 mtk, Matthias Lang -.\" Noted MAX_SEC_IN_JIFFIES ceiling -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-22, HANATAKA Shinya -.\" Updated 2005-04-23, Kentaro Shirakata -.\" Updated 2005-09-11, Kentaro Shirakata -.\" Updated 2006-07-23, Kentaro Shirakata -.\" Updated 2007-10-14, Akihiro MOTOKI -.\" Updated 2009-04-13, Akihiro MOTOKI, LDP v3.20 -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH GETITIMER 2 2014\-07\-08 Linux "Linux Programmer's Manual" -.SH 名前 -getitimer, setitimer \- インターバルタイマーの値を取得または設定する -.SH 書式 -.nf -\fB#include \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 個のインターバルタイマーを提供する。 それぞれのタイマーは別々の時間領域で減少する。 あるタイマーが満了すると、 -プロセスにシグナルが送られ、 タイマーは (0 でなければ) 指定されたインターバルに再設定される。 -.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; /* Interval for periodic timer */ - struct timeval it_value; /* Time until next expiration */ -}; - -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 フィールドにはタイマーのインターバル (期間) が設定される。 \fIit_interval\fP -(の両方のサブフィールド) で値 0 が返された場合は、 このタイマーが 1 回限りのタイマーであることを示している。 - -\fBsetitimer\fP() 関数は指定されたタイマーに \fInew_value\fP の値を設定する。 \fIold_value\fP が NULL -以外の場合、タイマーの古い値 (すなわち \fBgetitimer\fP() で返されるのと同じ情報) が \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 -つのインターフェースとの相互の影響については規定していない。 - -標準では、次の呼び出しの意味については規定されていない。 - - setitimer(which, NULL, &old_value); - -(Solaris, BSD 系やおそらく他のシステムもそうだが) 多くのシステムでは、この呼び出しは以下と等価である。 - - getitimer(which, &old_value); - -Linux では、この呼び出しは \fInew_value\fP フィールドが 0 の呼び出しと等価なものと扱われる。 つまり、タイマーが無効になる。 -\fILinux のこの間違った機能を使用しないこと\fP。移植性もなく、不必要な機能である。 -.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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/getpagesize.2 b/manual/LDP_man-pages/draft/man2/getpagesize.2 deleted file mode 100644 index bfa41987..00000000 --- a/manual/LDP_man-pages/draft/man2/getpagesize.2 +++ /dev/null @@ -1,101 +0,0 @@ -.\" Copyright (C) 2001 Andries Brouwer -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 2002-04-14, HANATAKA Shinya -.\" Updated 2003-07-03, Akihiro Motoki -.\" Updated 2007-01-07, Akihiro MOTOKI, catch up to LDP v2.43 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH GETPAGESIZE 2 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -getpagesize \- メモリーのページサイズを取得する -.SH 書式 -\fB#include \fP -.sp -\fBint getpagesize(void);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBgetpagesize\fP(): -.ad l -.RS 4 -.PD 0 -.TP 4 -glibc 2.12 以降: -.nf -_BSD_SOURCE || - !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600) -.TP 4 -.fi -glibc 2.12 より前: _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.PD -.RE -.ad b -.SH 説明 -.\" .SH HISTORY -.\" This call first appeared in 4.2BSD. -\fBgetpagesize\fP() 関数はメモリーページの大きさをバイト数で返す。 -ここでいう「ページ」は固定長のブロックであり、 -\fBmmap\fP(2) で実行されるメモリー割り当てとファイルマッピングの単位である。 -.SH 準拠 -SVr4, 4.4BSD, SUSv2. -SUSv2 では \fBgetpagesize\fP() システムコールは「過去の遺物 (LEGACY)」とされており、 -POSIX.1\-2001 からは外されている。 HP\-UX にはこのシステムコールは存在しない。 -.SH 注意 -移植性が必要なアプリケーションでは、 -\fBgetpagesize\fP() ではなく \fIsysconf(_SC_PAGESIZE)\fP を利用すべきである。 -.PP -.in +4n -.nf -#include -long sz = sysconf(_SC_PAGESIZE); -.fi -.in - -(ほとんどのシステムでは \fB_SC_PAGESIZE\fP の同義語として -\fB_SC_PAGE_SIZE\fP を使用することができる。) - -\fBgetpagesize\fP() が Linux のシステムコールとして存在するかどうかは、そのアーキテクチャーに 依存している。 -システムコールとして存在する場合には、カーネルシンボルの \fBPAGE_SIZE\fP を返す。 \fBPAGE_SIZE\fP -の値は、アーキテクチャーとマシンモデルに依存する。 一般に、バイナリは、アーキテクチャーごとに1つのバイナリ配布で済ませるために、 -アーキテクチャーには依存しているがマシンモデルには依存していない。 つまり、ユーザープログラムはコンパイル時にヘッダーファイルから -\fBPAGE_SIZE\fP を見つけて使用すべきではない。 少なくとも、マシンモデルについても依存性が存在する (sun4 のような) -アーキテクチャーにおいては本物のシステムコールを使用する必要がある。 尚、 glibc 2.0 では、 \fBgetpagesize\fP() -がシステムコールを使用せず、固定の値を返すために、この方法は 失敗する。glibc 2.1 では大丈夫である。 -.SH 関連項目 -\fBmmap\fP(2), \fBsysconf\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index 7fdbafe7..914a1d43 100644 --- a/manual/LDP_man-pages/draft/man2/getpeername.2 +++ b/manual/LDP_man-pages/draft/man2/getpeername.2 @@ -53,12 +53,12 @@ .\" Updated 2013-05-06, Akihiro MOTOKI .\" Updated 2013-07-22, Akihiro MOTOKI .\" -.TH GETPEERNAME 2 2013\-02\-12 Linux "Linux Programmer's Manual" +.TH GETPEERNAME 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 getpeername \- 接続している相手ソケットの名前を取得する .SH 書式 \fB#include \fP -.sp +.PP \fBint getpeername(int \fP\fIsockfd\fP\fB, struct sockaddr *\fP\fIaddr\fP\fB, socklen_t *\fP\fIaddrlen\fP\fB);\fP .SH 説明 @@ -66,7 +66,7 @@ getpeername \- 接続している相手ソケットの名前を取得する が指すバッファーに格納して返す。 \fIaddrlen\fP 引き数は、 \fIaddr\fP が指している領域のサイズに初期化しておかなければならない。 関数が返る時には、 \fIaddrlen\fP には実際に返された名前のサイズが (バイト単位で) 格納される。 提供されたバッファーが小さすぎた場合には、名前は切り詰められる。 - +.PP 渡されたバッファーが小さ過ぎた場合は、返されるアドレスの末尾が切り詰められる。 この場合には、 \fIaddrlen\fP には、呼び出し時に指定された値よりも大きな値が格納される。 .SH 返り値 @@ -74,7 +74,7 @@ getpeername \- 接続している相手ソケットの名前を取得する .SH エラー .TP \fBEBADF\fP -引き数 \fIsockfd\fP が有効なディスクリプターでない。 +The argument \fIsockfd\fP is not a valid file descriptor. .TP \fBEFAULT\fP \fIaddr\fP 引き数の指しているメモリーが有効なプロセスのアドレス空間の 一部でない。 @@ -89,14 +89,13 @@ getpeername \- 接続している相手ソケットの名前を取得する ソケットが接続していない。 .TP \fBENOTSOCK\fP -引き数 \fIsockfd\fP がソケットでなくてファイルである。 +The file descriptor \fIsockfd\fP does not refer to a socket. .SH 準拠 -SVr4, 4.4BSD (\fBgetpeername\fP() 関数は 4.2BSD で登場した), POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.4BSD (\fBgetpeername\fP() first appeared +in 4.2BSD). .SH 注意 -\fBgetpeername\fP() の三番目の引き数は実際には \fI`int\ *'\fP である (4.x BSD, libc4, libc5 では -このようになっている)。 POSIX では紆余曲折を経て現在の \fIsocklen_t\fP になっており、 glibc でも \fIsocklen_t\fP -を使っている。 \fBaccept\fP(2) も参照のこと。 - +For background on the \fIsocklen_t\fP type, see \fBaccept\fP(2). +.PP ストリームソケットでは、 いったん \fBconnect\fP(2) が実行されると、 どのソケットも \fBgetpeername\fP() を使って相手ソケットのアドレスを取得できる。 一方、データグラムソケットはコネクションレスである (接続がない)。 データグラムソケットに対する \fBconnect\fP(2) の呼び出しは、 \fBwrite\fP(2) や \fBrecv\fP(2) @@ -109,6 +108,5 @@ SVr4, 4.4BSD (\fBgetpeername\fP() 関数は 4.2BSD で登場した), POSIX.1\-2 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/getpid.2 b/manual/LDP_man-pages/draft/man2/getpid.2 deleted file mode 100644 index 912b9257..00000000 --- a/manual/LDP_man-pages/draft/man2/getpid.2 +++ /dev/null @@ -1,99 +0,0 @@ -.\" Copyright 1993 Rickard E. Faith (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 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 SUTO, Mitsuaki -.\" and Copyright(c) 2008 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Thu Jun 26 20:33:01 JST 1997 -.\" by SUTO, Mitsuaki -.\" Updated 2008-10-03, Akihiro MOTOKI, LDP v3.10 -.\" -.TH GETPID 2 2014\-09\-21 Linux "Linux Programmer's Manual" -.SH 名前 -getpid, getppid \- プロセス ID を得る -.SH 書式 -\fB#include \fP -.br -\fB#include \fP -.sp -\fBpid_t getpid(void);\fP -.br -\fBpid_t getppid(void);\fP -.SH 説明 -\fBgetpid\fP() は呼び出し元のプロセスのプロセス ID を返す。(テンポラリ用のファイル名として -他と重ならない名前を生成するルーチンでしばしば使用される。) - -\fBgetppid\fP() は呼び出し元のプロセスの親プロセスのプロセス ID を返す。 -.SH エラー -これらの関数は常に成功する。 -.SH 準拠 -POSIX.1\-2001, 4.3BSD, SVr4. -.SH 注意 -.\" The following program demonstrates this "feature": -.\" -.\" #define _GNU_SOURCE -.\" #include -.\" #include -.\" #include -.\" #include -.\" #include -.\" -.\" int -.\" main(int argc, char *argv[]) -.\" { -.\" /* The following statement fills the getpid() cache */ -.\" -.\" printf("parent PID = %ld\n", (long) getpid()); -.\" -.\" if (syscall(SYS_fork) == 0) { -.\" if (getpid() != syscall(SYS_getpid)) -.\" printf("child getpid() mismatch: getpid()=%ld; " -.\" "syscall(SYS_getpid)=%ld\n", -.\" (long) getpid(), (long) syscall(SYS_getpid)); -.\" exit(EXIT_SUCCESS); -.\" } -.\" wait(NULL); -.\"} -glibc バージョン 2.3.4 以降では、 glibc の \fBgetpid\fP() のラッパー関数は PID をキャッシュする。 -これは、プロセスが繰り返し \fBgetpid\fP() を呼び出した場合にその都度システムコールを呼ぶのを避けるためである。 -通常は、このキャッシュ処理が見えることはないが、 キャッシュ処理が正しく働くためには \fBfork\fP(2), \fBvfork\fP(2), -\fBclone\fP(2) のラッパー関数でのサポートが必要である。 アプリケーションがこれらのシステムコールを呼び出す際に、 glibc -のラッパー関数を経由せずに \fBsyscall\fP(2) を使った場合には、子プロセスで \fBgetpid\fP() -を呼び出すと間違った値が返ることだろう (正確にいうと、親プロセスの PID が返される)。 \fBclone\fP(2) を glibc -のラッパー関数経由で起動した際にも \fBgetpid\fP() が間違った値を返す場合があり、これに関する議論は \fBclone\fP(2) -も参照してほしい。 -.SH 関連項目 -\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), -\fBpid_namespaces\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 4cdba60f..00000000 --- a/manual/LDP_man-pages/draft/man2/getpriority.2 +++ /dev/null @@ -1,153 +0,0 @@ -.\" 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 -.\" Modified 1996-07-01 by Andries Brouwer -.\" Modified 1996-11-06 by Eric S. Raymond -.\" Modified 2001-10-21 by Michael Kerrisk -.\" Corrected statement under EPERM to clarify privileges required -.\" Modified 2002-06-21 by Michael Kerrisk -.\" Clarified meaning of 0 value for 'who' argument -.\" Modified 2004-05-27 by Michael Kerrisk -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-22, HANATAKA Shinya -.\" Modified 2001-08-17, HANATAKA Shinya -.\" Modified 2001-10-18, Akihiro MOTOKI -.\" Updated 2001-12-13, Kentaro Shirakata -.\" Updated 2002-10-16, Kentaro Shirakata -.\" Updated 2005-02-24, Akihiro MOTOKI -.\" Updated 2005-10-07, Akihiro MOTOKI -.\" Updated 2008-08-04, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH GETPRIORITY 2 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -getpriority, setpriority \- プログラムのスケジューリングの優先度を取得/設定する -.SH 書式 -\fB#include \fP -.br -\fB#include \fP -.sp -\fBint getpriority(int \fP\fIwhich\fP\fB, id_t \fP\fIwho\fP\fB);\fP -.br -\fBint setpriority(int \fP\fIwhich\fP\fB, id_t \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 では -\-infinity(マイナス無限大)..15 である。 カーネル 1.3.43 以降の Linux では、 \-20..19 である。 -他のいくつかのシステムでは、この範囲が \-20..20 である。 - -.\" -現在では \fI\fP をインクルードする必要はないが、インクルードすれば移植性を高めることができる (実際には -\fI\fP で \fIrusage\fP 構造体が定義されているが、そのフィールドで使用されている -\fIstruct timeval\fP 型は \fI\fP で定義されている)。 -.SS "C ライブラリとカーネル ABI の違い" -カーネル内部では、nice 値は実際には 40 〜 1 の範囲を使って 表現されており (負の値はエラーコードとなるため)、こちらの値が システムコール -\fBsetpriority\fP() と \fBgetpriority\fP() で使用されている。 glibc -のこれらのシステムコールのラッパー関数において、nice 値の ユーザー領域 (user\-land) とカーネル表現の間の変換が行われる。 変換式は -\fIunice\ =\ 20\ \-\ knice\fP となる。 (したがって、カーネルの 40..1 の範囲はユーザー空間で見える \-20..19 -の範囲に対応する。) -.SH バグ -POSIX では nice 値はプロセス単位の設定となっている。 一方、 現在の POSIX スレッドの Linux/NPTL 実装では、 nice -値はスレッド単位の属性である。 同じプロセスの別々のスレッドが異なる nice 値を持つ場合がある。 移植性が必要なアプリケーションではこの Linux -の動作を前提するのは避けるべきである。 Linux の動作は将来標準に準拠した動作になるかもしれない。 -.SH 関連項目 -\fBnice\fP(1), \fBrenice\fP(1), \fBfork\fP(2), \fBcapabilities\fP(7), \fBsched\fP(7) - -Linux カーネルのソースツリー内の \fIDocumentation/scheduler/sched\-nice\-design.txt\fP (Linux -2.6.23 以降) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/getresuid.2 b/manual/LDP_man-pages/draft/man2/getresuid.2 index 55e8a424..c8423974 100644 --- a/manual/LDP_man-pages/draft/man2/getresuid.2 +++ b/manual/LDP_man-pages/draft/man2/getresuid.2 @@ -38,14 +38,14 @@ .\" Updated Sun Oct 12 JST 2003 by Kentaro Shirakata .\" Updated 2012-04-30, Akihiro MOTOKI .\" -.TH GETRESUID 2 2010\-11\-22 Linux "Linux Programmer's Manual" +.TH GETRESUID 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 getresuid, getresgid \- 実、実効、保存、ユーザー ID / グループ ID を取得する .SH 書式 \fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ .br \fB#include \fP -.sp +.PP \fBint getresuid(uid_t *\fP\fIruid\fP\fB, uid_t *\fP\fIeuid\fP\fB, uid_t *\fP\fIsuid\fP\fB);\fP .br \fBint getresgid(gid_t *\fP\fIrgid\fP\fB, gid_t *\fP\fIegid\fP\fB, gid_t *\fP\fIsgid\fP\fB);\fP @@ -61,7 +61,7 @@ set\-user\-ID (\fBgetresgid\fP の場合はグループ ID) を、 それぞれ 指定した引き数のどれかが、呼び出したプログラムのアドレス空間の外の アドレスである。 .SH バージョン これらのシステムコールはカーネル 2.1.44 から Linux に登場した。 - +.PP プロトタイプ宣言は 2.3.2 以降の glibc では \fB_GNU_SOURCE\fP を定義していると得られる。 .SH 準拠 これらのコールは非標準である。 HP\-UX や BSD 系のいくつかにも存在する。 @@ -76,6 +76,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index e3850f7b..00000000 --- a/manual/LDP_man-pages/draft/man2/getrlimit.2 +++ /dev/null @@ -1,477 +0,0 @@ -.\" 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 -.\" Modified 1993-07-23 by Rik Faith -.\" Modified 1996-01-13 by Arnt Gulbrandsen -.\" Modified 1996-01-22 by aeb, following a remark by -.\" Tigran Aivazian -.\" Modified 1996-04-14 by aeb, following a remark by -.\" Robert Bihlmeyer -.\" Modified 1996-10-22 by Eric S. Raymond -.\" Modified 2001-05-04 by aeb, following a remark by -.\" Håvard Lygre -.\" Modified 2001-04-17 by Michael Kerrisk -.\" Modified 2002-06-13 by Michael Kerrisk -.\" Added note on nonstandard behavior when SIGCHLD is ignored. -.\" Modified 2002-07-09 by Michael Kerrisk -.\" 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 -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-22, HANATAKA Shinya -.\" Updated and Modified 2001-06-02, Yuichi SATO -.\" Updated and Modified 2001-08-18, Yuichi SATO -.\" Updated and Modified 2002-08-25, Yuichi SATO -.\" Updated and Modified 2004-01-17, Yuichi SATO -.\" Updated and Modified 2004-12-30, Yuichi SATO -.\" Updated and Modified 2005-09-10, Yuichi SATO -.\" Updated and Modified 2005-10-11, Akihiro MOTOKI -.\" Updated and Modified 2005-10-27, Akihiro MOTOKI -.\" Updated and Modified 2006-04-15, Akihiro MOTOKI, Catch up to LDP v2.29 -.\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2008-10-13, Akihiro MOTOKI, LDP v3.11 -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH GETRLIMIT 2 2015\-01\-22 Linux "Linux Programmer's Manual" -.SH 名前 -getrlimit, setrlimit, prlimit \- 資源の制限を取得/設定する -.SH 書式 -\fB#include \fP -.br -\fB#include \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 ファイルの最大サイズ (\fBcore\fP(5) 参照)。 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 - - Linux 3.5 以降: - bytes = attr.mq_maxmsg * sizeof(struct msg_msg) + - min(attr.mq_maxmsg, MQ_PRIO_MAX) * - sizeof(struct posix_msg_tree_node)+ - /* オーバーヘッド分 */ - attr.mq_maxmsg * attr.mq_msgsize; - /* メッセージデータ分 */ - - Linux 3.4 以前: - 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 引き数として指定される。 また、構造体 -\fImsg_msg\fP と \fIposix_msg_tree_node\fP はカーネル内部の構造体である。 - -上記の式での「オーバーヘッド」加算分は、実装において必要となるオーバーヘッドを考慮したものである。 また、これにより、ユーザーが長さ 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 で失敗する。 この上限値は、ケーパビリティ \fBCAP_SYS_ADMIN\fP か -\fBCAP_SYS_RESOURCE\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 -.\" Date: Tue May 4 18:03:50 2010 +0200 -.\" -.\" rlimits: implement prlimit64 syscall -.\" -.\" commit 6a1d5e2c85d06da35cdfd93f1a27675bfdc3ad8c -.\" Author: Jiri Slaby -.\" Date: Wed Mar 24 17:06:58 2010 +0100 -.\" -.\" rlimits: add rlimit64 structure -.\" -Linux 固有の \fBprlimit\fP() システムコールは、 \fBsetrlimit\fP() と \fBgetrlimit\fP -の機能を合わせて拡張したものである。 このシステムコールを使って、任意のプロセスのリソース上限の設定と取得を行うことができる。 - -\fIresource\fP 引き数は \fBsetrlimit\fP() や \fBgetrlimit\fP() と同じ意味である。 - -\fInew_limit\fP 引き数が NULL 以外の場合、 \fInew_limit\fP が指す \fIrlimit\fP 構造体を使って \fIresource\fP -のソフトリミットとハードリミットの新しい値が設定される。 \fIold_limit\fP 引き数が NULL 以外の場合、 \fBprlimit\fP() -の呼び出しが成功すると、 \fIresource\fP の直前のソフトリミットとハードリミットが \fIold_limit\fP が指す \fIrlimit\fP -構造体に格納される。 - -.\" FIXME . this permission check is strange -.\" Asked about this on LKML, 7 Nov 2010 -.\" "Inconsistent credential checking in prlimit() syscall" -\fIpid\fP 引き数は呼び出しの操作対象となるプロセス ID を指定する。 \fIpid\fP が 0 -の場合、呼び出しは呼び出し元プロセスに対して適用される。 自分以外のプロセスのリソースの設定と取得を行うためには、 呼び出し元プロセスが -\fBCAP_SYS_RESOURCE\fP ケーパビリティを持っているか、 対象となるプロセスの実ユーザー ID、 実効ユーザー ID、 保存 -set\-user\-ID が呼び出し元プロセスの実ユーザー ID と一致し、 かつ、 対象となるプロセスの実グループ ID、 実効グループ ID、 保存 -set\-group\-ID が呼び出し元プロセスの実グループ ID と一致していなければならない。 -.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 ケーパビリティが必要である。 -.TP -\fBEPERM\fP -呼び出し元がハードリミット \fBRLIMIT_NOFILE\fP を \fI/proc/sys/fs/nr_open\fP (\fBproc\fP(5) 参照) -で定義される最大値より大きな値に増やそうとした。 -.TP -\fBEPERM\fP -(\fBprlimit\fP()) 呼び出し元のプロセスが \fIpid\fP で指定されたプロセスの上限を設定する許可を持っていなかった。 -.TP -\fBESRCH\fP -\fIpid\fP で指定された ID のプロセスが見つからなかった。 -.SH バージョン -\fBprlimit\fP() システムコールは Linux 2.6.36 以降で利用できる。 ライブラリのサポートは glibc 2.13 -以降で利用できる。 -.SH 準拠 -\fBgetrlimit\fP(), \fBsetrlimit\fP(): SVr4, 4.3BSD, POSIX.1\-2001. -.br -\fBprlimit\fP(): Linux 固有。 - -\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 -を使って設定することができる。 このシェルのリソース制限は、コマンドを実行してシェルが生成するプロセス に引き継がれる。 - -Linux 2.6.24 以降では、 プロセスのリソース上限は \fI/proc/[pid]/limits\fP で知ることができる。 \fBproc\fP(5) -参照。 - -古いシステムでは、 \fBsetrlimit\fP() と同様の目的を持つ関数 \fBvlimit\fP() が提供されていた。 後方互換性のため、glibc -でも \fBvlimit\fP() を提供している。 全ての新しいアプリケーションでは、 \fBsetrlimit\fP() を使用すべきである。 -.SS "C ライブラリとカーネル ABI の違い" -バージョン 2.13 以降では、 glibc の \fBgetrlimit\fP() と \fBsetrlimit\fP() -のラッパー関数はもはや対応するシステムコールを呼び出さず、 代わりに「バグ」の節で説明されている理由から \fBprlimit\fP() を利用している。 -.SH バグ -以前の 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 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 -Linux 2.6.12 以降では、 プロセスがその \fBRLIMIT_CPU\fP ソフトリミットに達し、 \fBSIGXCPU\fP -に対してシグナルハンドラーが設定されている場合、 シグナルハンドラーを起動するだけでなく、 カーネルは 1 秒間ソフトリミットを増やす。 そのプロセスが -CPU 時間を消費し続けている限り、 ハードリミットに達するまで、この動作が繰り返される。 ハードリミットに達すると、その時点でプロセスは kill -される。 他の実装では、上記のような \fBRLIMIT_CPU\fP ソフトリミットの変更は行われず、 おそらく Linux の動作は標準に準拠していない。 -移植性が必要なアプリケーションではこの Linux 固有の動作を前提にするのは避けるべきである。 Linux 固有の上限 -\fBRLIMIT_RTTIME\fP でも、 ソフトリミットに達した場合に同じ動作となる。 - -.\" -2.4.22 より前のカーネルでは、 \fIrlim\->rlim_cur\fP が \fIrlim\->rlim_max\fP より大きかった場合、 -\fBsetrlimit\fP() での \fBEINVAL\fP エラーを検出できない。 -.SS "32 ビットプラットフォームにおける「大きな」リソース上限値の表現" -.\" https://bugzilla.kernel.org/show_bug.cgi?id=5042 -.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=12201 -glibc の \fBgetrlimit\fP() と \fBsetrlimit\fP() ラッパー関数は、32 ビットプラットフォームであっても 64 ビットの -\fIrlim_t\fP データ型を使用する。 しかし、 \fBgetrlimit\fP() と \fBsetrlimit\fP() システムコールで使用される -\fIrlim_t\fP データ型は (32 ビットの) \fIunsigned long\fP である。 さらに、 2.6.36 より前の Linux では、 -カーネルは 32 ビットプラットフォームではリソース上限を \fIunsigned long\fP として表現している。 しかしながら、 32 -ビットデータ型は十分な大きさではない。 ここで最も関係がある上限値は \fBRLIMIT_FSIZE\fP である。 -この上限はファイルサイズの最大値であり、実用性の面からは、 この上限をファイルオフセットを表現するのに使用されている型、 つまり 64 ビットの -\fBoff_t\fP (\fI_FILE_OFFSET_BITS=64\fP でコンパイルしたプログラムの場合)、 と同じ幅を持つ型、を使って表現すべきである。 - -カーネルのこの制限に対する対策として、 プログラムがリソース上限を 32 ビットの \fIunsigned long\fP -で表現できる値よりも大きな値に設定しようとした際には、 glibc の \fBsetrlimit\fP() ラッパー関数はこの上限値を黙って -\fBRLIM_INFINITY\fP に変換していた。 言い換えると、指定されたリソース上限値は黙って無視されていた。 - -この問題は Linux 2.6.36 での以下の主な変更により解決された。 -.IP * 3 -32 ビットプラットフォームであっても 64 ビットを使用するリソース上限の新しいカーネルでの表現方法の追加。 -.IP * -リソース上限の引き数として 64 ビット値を取る \fBprlimit\fP() システムコールの追加。 -.PP -.\" https://www.sourceware.org/bugzilla/show_bug.cgi?id=12201 -バージョン 2.13 以降の glibc では、 \fBgetrlimit\fP() と \fBsetrlimit\fP() -システムコールの制限に対する回避手段として、 -\fBsetrlimit\fP() と \fBgetrlimit\fP() を \fBprlimit\fP() を呼び出すラッパー関数として実装している。 -.SH 例 -以下のプログラムに \fBprlimit\fP() の使用例を示す。 -.PP -.nf -#define _GNU_SOURCE -#define _FILE_OFFSET_BITS 64 -#include -#include -#include -#include -#include - -#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 [ " - "]\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/getrusage.2 b/manual/LDP_man-pages/draft/man2/getrusage.2 index a7c660ee..f217c055 100644 --- a/manual/LDP_man-pages/draft/man2/getrusage.2 +++ b/manual/LDP_man-pages/draft/man2/getrusage.2 @@ -54,17 +54,16 @@ .\" Updated 2008-11-10, Akihiro MOTOKI, LDP v3.11 .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH GETRUSAGE 2 2014\-05\-10 Linux "Linux Programmer's Manual" +.TH GETRUSAGE 2 2020\-12\-21 Linux "Linux Programmer's Manual" .SH 名前 getrusage \- 資源の使用量を取得する .SH 書式 \fB#include \fP .br \fB#include \fP -.sp +.PP \fBint getrusage(int \fP\fIwho\fP\fB, struct rusage *\fP\fIusage\fP\fB);\fP .SH 説明 -.PP \fBgetrusage\fP() は \fIwho\fP の資源 (resource) の使用量を返す。 \fIwho\fP には以下のいずれか一つを指定できる。 .TP \fBRUSAGE_SELF\fP @@ -81,7 +80,7 @@ getrusage \- 資源の使用量を取得する 資源使用量は \fIusage\fP が指す構造体に格納されて返される。 構造体は以下の形式である。 .PP .in +4n -.nf +.EX struct rusage { struct timeval ru_utime; /* 使用されたユーザー CPU 時間 */ struct timeval ru_stime; /* 使用されたシステム CPU 時間 */ @@ -101,7 +100,7 @@ struct rusage { long ru_nvcsw; /* 意図したコンテキスト切り替え */ long ru_nivcsw; /* 意図しないコンテキスト切り替え */ }; -.fi +.EE .in .PP すべてのフィールドがサポートされているわけではない。 メンテナンスされていないフィールドには、 カーネルが 0 を設定する @@ -173,7 +172,6 @@ I/O 動作を必要とするページフォルトの回数。 .TP \fIru_nivcsw\fP (Linux 2.6 以降) 優先度が自分より高いプロセッサが実行可能になったか、現在のプロセスが自分のタイムスライスを超過したことにより行われたコンテキストスイッチの回数。 -.PP .SH 返り値 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 .SH エラー @@ -183,14 +181,26 @@ I/O 動作を必要とするページフォルトの回数。 .TP \fBEINVAL\fP \fIwho\fP が無効である。 +.SH ATTRIBUTES +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBgetrusage\fP() +T} Thread safety MT\-Safe +.TE +.sp 1 .SH 準拠 -SVr4, 4.3BSD. POSIX.1\-2001 は \fBgetrusage\fP() を規定しているが、規定しているフィールドは -\fIru_utime\fP と \fIru_stime\fP だけである。 - +POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.3BSD. POSIX.1 specifies \fBgetrusage\fP(), +but specifies only the fields \fIru_utime\fP and \fIru_stime\fP. +.PP \fBRUSAGE_THREAD\fP は Linux 固有である。 .SH 注意 \fBexecve\fP(2) の前後でリソース使用量の指標は保持される。 - +.PP 今日では \fI\fP をインクルードする必要はないが、 インクルードしておけば移植性が増す。 (実際 \fIstruct timeval\fP は \fI\fP で定義されている。) .PP @@ -199,18 +209,18 @@ SVr4, 4.3BSD. POSIX.1\-2001 は \fBgetrusage\fP() を規定しているが、 2.6.9 より前のバージョンの Linux カーネルでは、 \fBSIGCHLD\fP の処理が \fBSIG_IGN\fP に設定されていると、 子プロセスのリソース使用量が \fBRUSAGE_CHILDREN\fP で返される値に自動的に含められる。 しかし POSIX.1\-2001 では、これを明確に禁止している。 この準拠していなかった点は、Linux 2.6.9 以降で改正された。 -.LP +.PP このページの最初で示した構造体の定義は 4.3BSD Reno のものである。 - -古いシステムでは、 \fBgetrusage\fP() と同様の目的を持つ関数 \fBvtimes\fP() が提供 -されていた。後方互換性のため、glibc でも \fBvtimes\fP() を提供している。 -全ての新しいアプリケーションでは \fBgetrusage\fP() を使用すべきである。 - -\fBproc\fP(5) にある \fI/proc/PID/stat\fP の説明も参照のこと。 +.PP +Ancient systems provided a \fBvtimes\fP() function with a similar purpose to +\fBgetrusage\fP(). For backward compatibility, glibc (up until version 2.32) +also provides \fBvtimes\fP(). All new applications should be written using +\fBgetrusage\fP(). +.PP +See also the description of \fI/proc/[pid]/stat\fP in \fBproc\fP(5). .SH 関連項目 \fBclock_gettime\fP(2), \fBgetrlimit\fP(2), \fBtimes\fP(2), \fBwait\fP(2), \fBwait4\fP(2), \fBclock\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/getsid.2 b/manual/LDP_man-pages/draft/man2/getsid.2 deleted file mode 100644 index 798d6ab8..00000000 --- a/manual/LDP_man-pages/draft/man2/getsid.2 +++ /dev/null @@ -1,85 +0,0 @@ -.\" Copyright (C) 1996 Andries Brouwer (aeb@cwi.nl) -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified Thu Oct 31 14:18:40 1996 by Eric S. Raymond -.\" Modified 2001-12-17, aeb -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Thu Dec 11 23:36:57 JST 1997 -.\" by HANATAKA Shinya -.\" Updated Thu Jan 17 JST 2001 by Kentaro Shirakata -.\" -.TH GETSID 2 2010\-09\-26 Linux "Linux Programmer's Manual" -.SH 名前 -getsid \- セッション ID を取得する。 -.SH 書式 -\fB#include \fP -.sp -\fBpid_t getsid(pid_t\fP\fI pid\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -.PD 0 -\fBgetsid\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.br -|| /* glibc 2.12 以降: */ _POSIX_C_SOURCE\ >=\ 200809L -.RE -.PD -.ad -.SH 説明 -\fIgetsid(0)\fP は呼び出し元のプロセスのセッション ID を返す。 \fIgetsid(p)\fP はプロセス ID \fIp\fP -を持つプロセスのセッション ID を返す (プロセスのセッション ID は セッションリーダーのプロセスグループ ID である)。 -.SH 返り値 -成功すると、セッション ID が返される。 エラーの場合、\fI(pid_t) \-1\fP が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEPERM\fP -プロセス ID \fIp\fP のプロセスは存在するが、呼び出し元のプロセスと同じセッションではなく、 さらに実装がこの状態をエラーと判断した場合。 -.TP -\fBESRCH\fP -プロセス ID が \fIp\fP のプロセスがない。 -.SH バージョン -.\" Linux has this system call since Linux 1.3.44. -.\" There is libc support since libc 5.2.19. -このシステムコールは Linux バージョン 2.0 以降で利用可能である。 -.SH 準拠 -SVr4, POSIX.1\-2001. -.SH 注意 -Linux は \fBEPERM\fP を返さない。 -.SH 関連項目 -\fBgetpgid\fP(2), \fBsetsid\fP(2), \fBcredentials\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/getsockname.2 b/manual/LDP_man-pages/draft/man2/getsockname.2 index c42019c2..f3c39ec7 100644 --- a/manual/LDP_man-pages/draft/man2/getsockname.2 +++ b/manual/LDP_man-pages/draft/man2/getsockname.2 @@ -52,20 +52,20 @@ .\" Updated & Modified Sat Feb 5 17:23:11 JST 2005 .\" by Yuichi SATO .\" -.TH GETSOCKNAME 2 2008\-12\-03 Linux "Linux Programmer's Manual" +.TH GETSOCKNAME 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 getsockname \- ソケットの名前を取得する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint getsockname(int \fP\fIsockfd\fP\fB, struct sockaddr *\fP\fIaddr\fP\fB, socklen_t *\fP\fIaddrlen\fP\fB);\fP .fi .SH 説明 \fBgetsockname\fP() は、ソケット \fIsockfd\fP に結び付けられている現在のアドレスを、 \fIaddr\fP が指すバッファーに格納して返す。 \fIaddrlen\fP 引き数は、 \fIaddr\fP が指している領域のサイズ (バイト単位) に初期化しておかなければならない。 関数が返る時には、 \fIaddrlen\fP にはソケットアドレスの実際のサイズ (バイト単位) が格納される。 - +.PP 渡されたバッファーが小さ過ぎた場合は、返されるアドレスの末尾が切り詰められる。 この場合には、 \fIaddrlen\fP には、呼び出し時に指定された値よりも大きな値が格納される。 .SH 返り値 @@ -73,7 +73,7 @@ getsockname \- ソケットの名前を取得する .SH エラー .TP \fBEBADF\fP -引き数 \fIsockfd\fP は有効なディスクリプターでない。 +The argument \fIsockfd\fP is not a valid file descriptor. .TP \fBEFAULT\fP 引き数 \fIaddr\fP の指しているメモリーがプロセスのアドレス空間の有効な部分ではない。 @@ -85,19 +85,17 @@ getsockname \- ソケットの名前を取得する 処理をするだけの十分なリソースがシステムに無い。 .TP \fBENOTSOCK\fP -引き数 \fIsockfd\fP がソケットではなくファイルである。 +The file descriptor \fIsockfd\fP does not refer to a socket. .SH 準拠 .\" SVr4 documents additional ENOMEM .\" and ENOSR error codes. -SVr4, 4.4BSD (\fBgetsockname\fP() 関数は 4.2BSD で追加された), POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.4BSD (\fBgetsockname\fP() first appeared +in 4.2BSD). .SH 注意 -\fBgetsockname\fP() の三番目の引き数は (4.x BSD や libc4, libc5 と同様に) 実際には \fIint\ *\fP -である。 glibc でも使われている現在の \fIsocklen_t\fP に関して、 POSIX には少し混乱がある。 詳しくは \fBaccept\fP(2) -を参照のこと。 +For background on the \fIsocklen_t\fP type, see \fBaccept\fP(2). .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/getsockopt.2 b/manual/LDP_man-pages/draft/man2/getsockopt.2 index 8e441aec..18f22d05 100644 --- a/manual/LDP_man-pages/draft/man2/getsockopt.2 +++ b/manual/LDP_man-pages/draft/man2/getsockopt.2 @@ -55,15 +55,14 @@ .\" by HANATAKA Shinya .\" Updated Sun Oct 12 JST 2003 by Kentaro Shirakata .\" -.TH GETSOCKOPT 2 2014\-04\-28 Linux "Linux Programmer's Manual" +.TH GETSOCKOPT 2 2020\-04\-11 Linux "Linux Programmer's Manual" .SH 名前 getsockopt, setsockopt \- ソケットのオプションの設定と取得を行なう .SH 書式 .nf \fB#include \fP /* 「注意」参照 */ -.br \fB#include \fP -.sp +.PP \fBint getsockopt(int \fP\fIsockfd\fP\fB, int \fP\fIlevel\fP\fB, int \fP\fIoptname\fP\fB,\fP \fB void *\fP\fIoptval\fP\fB, socklen_t *\fP\fIoptlen\fP\fB);\fP \fBint setsockopt(int \fP\fIsockfd\fP\fB, int \fP\fIlevel\fP\fB, int \fP\fIoptname\fP\fB,\fP @@ -73,32 +72,37 @@ getsockopt, setsockopt \- ソケットのオプションの設定と取得を行 \fBgetsockopt\fP() と \fBsetsockopt\fP() は、ファイルディスクリプター \fIsocket\fP で参照されるソケットに関連するオプションの操作を行う。 オプションは複数のプロトコル層(level)に存在するかもしれないが、 これらは常に最上位のソケット層へと設定される。 - +.PP ソケットオプションを操作する際には、オプションの層 (level) と オプションの名前を指定しなければならない。 ソケット API 層でオプションを操作する為には、 \fIlevel\fP を \fBSOL_SOCKET\fP に指定する。 他の全ての層でオプションを操作する為には、与えられたオプションの 制御主体となるプロトコルのプロトコル番号を指定する。例えば、 オプションが \fBTCP\fP プロトコルで解釈されるべきことを指示するには、 \fIlevel\fP に \fBTCP\fP のプロトコル番号を指定しなければならない。 \fBgetprotoent\fP(3) を参照すること。 - +.PP \fIoptval\fP と \fIoptlen\fP 引き数は \fBsetsockopt\fP() のオプションの値にアクセスするために用いられる。 \fBgetsockopt\fP() では要求したオプションの値を返すためのバッファーを指定する。 \fBgetsockopt\fP() では \fIoptlen\fP は値と結果両用の引き数で、最初に \fIoptval\fP の指しているバッファーのサイズを与え、実際に返される値のサイズに 書き換えられる。もしオプション値を与えず、返されもしない場合には \fIoptval\fP は NULL でも良い。 - +.PP \fIoptname\fP および指定されたオプションは解釈されずに、適切なプロトコルモジュールに 渡されて解釈される。インクルードファイル \fI\fP には後述のソケット層のオプションの定義が含まれている。 他のプロトコル層では名前や形式は異なる。 マニュアルのセクション 4 の適切なエントリーを参照すること。 - +.PP ほとんどのソケット層のオプションは \fIoptval\fP に \fIint\fP 引き数を利用する。 \fBsetsockopt\fP() で、二値(boolean)オプションを有効(enable)にするにはゼロ以外を指定し、 無効(disable)にするにはゼロを指定する。 .PP 利用可能なソケットオプションの説明に関しては、 \fBsocket\fP(7) と適切なプロトコルの man ページを参照のこと。 .SH 返り値 -成功した場合にはゼロが返される。エラー時には \-1 が返され、 \fIerrno\fP が適切に設定される。 +On success, zero is returned for the standard options. On error, \-1 is +returned, and \fIerrno\fP is set appropriately. +.PP +Netfilter allows the programmer to define custom socket options with +associated handlers; for such options, the return value on success is the +value returned by the handler. .SH エラー -.TP 10 +.TP \fBEBADF\fP -引き数 \fIsockfd\fP は有効なディスクリプターでない。 +The argument \fIsockfd\fP is not a valid file descriptor. .TP \fBEFAULT\fP \fIoptval\fP で指定されたアドレスがプロセスのアドレス空間の有効な部分ではない。 \fBgetsockopt\fP() の場合、 \fIoptlen\fP @@ -113,27 +117,26 @@ getsockopt, setsockopt \- ソケットのオプションの設定と取得を行 指定された層(level)にはこのオプションは存在しない。 .TP \fBENOTSOCK\fP -引き数 \fIsockfd\fP がソケットではなくファイルである。 +The file descriptor \fIsockfd\fP does not refer to a socket. .SH 準拠 .\" SVr4 documents additional ENOMEM and ENOSR error codes, but does .\" not document the .\" .BR SO_SNDLOWAT ", " SO_RCVLOWAT ", " SO_SNDTIMEO ", " SO_RCVTIMEO .\" options -SVr4, 4.4BSD (これらのシステムコールは 4.2BSD で最初に現れた), POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.4BSD (these system calls first appeared +in 4.2BSD). .SH 注意 -POSIX.1\-2001 では \fI\fP のインクルードは必須とされておらず、 Linux -ではこのヘッダーファイルは必要ではない。 しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダーファイルが -必要であり、移植性が必要なアプリケーションではこのファイルを インクルードするのが賢明であろう。 - -\fBgetsockopt\fP() と \fBsetsockopt\fP() の \fIoptlen\fP 引き数は実際は \fIint [*]\fP である (そして -4.x BSD と libc4 と libc5 はそうなっている)。 POSIX では紆余曲折を経て現在の \fIsocklen_t\fP になっており、 -glibc でも \fIsocklen_t\fP を使っている。 \fBaccept\fP(2) も参照のこと。 +POSIX.1 does not require the inclusion of \fI\fP, and this +header file is not required on Linux. However, some historical (BSD) +implementations required this header file, and portable applications are +probably wise to include it. +.PP +For background on the \fIsocklen_t\fP type, see \fBaccept\fP(2). .SH バグ ソケットのオプションのいくつかはシステムのより低い層で 処理されるべきである。 .SH 関連項目 \fBioctl\fP(2), \fBsocket\fP(2), \fBgetprotoent\fP(3), \fBprotocols\fP(5), \fBip\fP(7), \fBpacket\fP(7), \fBsocket\fP(7), \fBtcp\fP(7), \fBudp\fP(7), \fBunix\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/gettid.2 b/manual/LDP_man-pages/draft/man2/gettid.2 index 3bcc3c0e..3b26bc99 100644 --- a/manual/LDP_man-pages/draft/man2/gettid.2 +++ b/manual/LDP_man-pages/draft/man2/gettid.2 @@ -35,36 +35,41 @@ .\" Updated 2008-02-10, Akihiro MOTOKI , LDP v2.77 .\" Updated 2008-08-04, Akihiro MOTOKI , LDP v3.05 .\" -.TH GETTID 2 2014\-02\-11 Linux "Linux Programmer's Manual" +.TH GETTID 2 2020\-04\-11 Linux "Linux Programmer's Manual" .SH 名前 gettid \- スレッドID を取得する .SH 書式 .nf +\fB#define _GNU_SOURCE\fP +\fB#include \fP \fB#include \fP -.sp +.PP \fBpid_t gettid(void);\fP .fi - -\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 .SH 説明 \fBgettid\fP() は呼び出し元のスレッド ID (TID) を返す。 シングルスレッドのプロセスでは、スレッド ID は (\fBgetpid\fP(2) が返すプロセス ID (PID) と等しい。 マルチスレッドのプロセスでは、全てのスレッドは同じ PID を持つが、 それぞれのスレッドは一意な TID を持つ。 さらなる詳細は、 \fBclone\fP(2) の \fBCLONE_THREAD\fP についての議論を参照すること。 .SH 返り値 -成功の場合、呼び出し元のプロセスのスレッドID を返す。 +On success, returns the thread ID of the calling thread. .SH エラー このコールは常に成功する。 .SH バージョン -\fBgettid\fP() システムコールは、カーネル 2.4.11 の Linux で初めて登場した。 +The \fBgettid\fP() system call first appeared on Linux in kernel 2.4.11. +Library support was added in glibc 2.30. (Earlier glibc versions did not +provide a wrapper for this system call, necessitating the use of +\fBsyscall\fP(2).) .SH 準拠 \fBgettid\fP() は Linux 固有であり、 移植を想定したプログラムでは使用すべきではない。 .SH 注意 -.\" FIXME . See http://sourceware.org/bugzilla/show_bug.cgi?id=6399 -.\" "gettid() should have a wrapper" -glibc はこのシステムコールに対するラッパー関数を提供していない。 このシステムコールは呼び出すには \fBsyscall\fP(2) を使うこと。 - このシステムコールが返すスレッド ID は POSIX スレッド ID (\fBpthread_self\fP(3) が返す曖昧な値) と同じものではない。 +.PP +In a new thread group created by a \fBclone\fP(2) call that does not specify +the \fBCLONE_THREAD\fP flag (or, equivalently, a new process created by +\fBfork\fP(2)), the new process is a thread group leader, and its thread group +ID (the value returned by \fBgetpid\fP(2)) is the same as its thread ID (the +value returned by \fBgettid\fP()). .SH 関連項目 .\" .BR kcmp (2), .\" .BR move_pages (2), @@ -76,6 +81,5 @@ glibc はこのシステムコールに対するラッパー関数を提供し \fBsched_setaffinity\fP(2), \fBsched_setparam\fP(2), \fBsched_setscheduler\fP(2), \fBtgkill\fP(2), \fBtimer_create\fP(2) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/gettimeofday.2 b/manual/LDP_man-pages/draft/man2/gettimeofday.2 deleted file mode 100644 index eccd1123..00000000 --- a/manual/LDP_man-pages/draft/man2/gettimeofday.2 +++ /dev/null @@ -1,198 +0,0 @@ -.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 -.\" -.\" %%%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 1994-08-21 by Michael Chastain (mec@shell.portal.com): -.\" Fixed necessary '#include' lines. -.\" Modified 1995-04-15 by Michael Chastain (mec@shell.portal.com): -.\" Added reference to adjtimex. -.\" Removed some nonsense lines pointed out by Urs Thuermann, -.\" (urs@isnogud.escape.de), aeb, 950722. -.\" Modified 1997-01-14 by Austin Donnelly (and1000@debian.org): -.\" Added return values section, and bit on EFAULT -.\" Added clarification on timezone, aeb, 971210. -.\" Removed "#include ", aeb, 010316. -.\" Modified, 2004-05-27 by Michael Kerrisk -.\" Added notes on capability requirement. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1998-05-11, HANATAKA Shinya -.\" Updated & Modified 2001-06-02, Yuichi SATO -.\" Updated & Modified 2001-12-23, Yuichi SATO -.\" Updated & Modified 2003-09-06, Yuichi SATO -.\" Updated & Modified 2004-12-30, Yuichi SATO -.\" Updated 2006-07-23, Akihiro MOTOKI -.\" Updated 2009-04-13, Akihiro MOTOKI, LDP v3.20 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2012-05-08, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH GETTIMEOFDAY 2 2012\-04\-26 Linux "Linux Programmer's Manual" -.SH 名前 -gettimeofday, settimeofday \- 時刻を取得/設定する -.SH 書式 -.nf -\fB#include \fP - -\fBint gettimeofday(struct timeval *\fP\fItv\fP\fB, struct timezone *\fP\fItz\fP\fB);\fP - -\fBint settimeofday(const struct timeval *\fP\fItv\fP\fB, const struct timezone *\fP\fItz\fP\fB);\fP - -.fi -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBsettimeofday\fP(): _BSD_SOURCE -.SH 説明 -関数 \fBgettimeofday\fP() と \fBsettimeofday\fP() は時刻とタイムゾーンを取得または設定する。 \fItv\fP 引き数は -\fIstruct timeval\fP である (\fI\fP で定義されている): -.sp -.in +4n -.nf -struct timeval { - time_t tv_sec; /* 秒 */ - suseconds_t tv_usec; /* マイクロ秒 */ -}; -.fi -.in -.sp -これにより紀元 (the Epoch: \fBtime\fP(2) を参照) からの秒とマイクロ秒が取得できる。 \fItz\fP 引き数は \fIstruct -timezone\fP である: -.sp -.in +4n -.nf -struct timezone { - int tz_minuteswest; /* グリニッジ標準時との差 (西方に分単位) */ - int tz_dsttime; /* 夏時間調整の型 */ -}; -.fi -.in -.PP -.\" FIXME . The compilation warning looks to be going away in 2.17 -.\" see glibc commit 4b7634a5e03b0da6f8875de9d3f74c1cf6f2a6e8 -.\" The following is covered under EPERM below: -.\" .PP -.\" Only the superuser may use -.\" .BR settimeofday (). -\fItv\fP や \fItz\fP が NULL の場合、対応する構造体の設定/取得は行われない -(ただし、\fItv\fP が NULL の場合には、コンパイル時の警告が発生する)。 -.PP -\fItimezone\fP 構造体の利用は廃止予定とされている; -通常は \fItz\fP 引き数に NULL を指定すべきである (下記の「注意」を参照)。 - -Linux では、 \fBsettimeofday\fP() システムコールに関連して、独特の「クロックのズレ -(warp clock)」が存在する場合がある。 これは (ブート後の) 最初の呼び出しで -\fItz\fP 引き数が NULL でなく、 \fItv\fP 引き数が NULL で \fItz_minuteswest\fP フィールド -が 0 でない場合に起こる (この場合 \fItz_dsttime\fP フィールドは 0 にすべきである)。 -このような場合、 \fBsettimeofday\fP() は CMOS クロックが地方時 (local time) であり、 -UTC システム時間を得るためには、\fItz_minuteswest\fP の分だけ増加させなくてはなら -ないとみなしてしまう。 疑いもなく、この機構を使うことは良い考えではない。 -.SH 返り値 -\fBgettimeofday\fP() と \fBsettimeofday\fP() は成功すると 0 を返し、失敗した場合は \-1 を返す (この場合は -\fIerrno\fP が適切に設定される)。 -.SH エラー -.TP -\fBEFAULT\fP -\fItv\fP か \fItz\fP のどちらかがアクセス可能なアドレス空間外を指している。 -.TP -\fBEINVAL\fP -タイムゾーン (または他の何か) が不正である。 -.TP -\fBEPERM\fP -呼び出し元プロセスに \fBsettimeofday\fP() を呼び出すための十分な特権がない。 Linux では \fBCAP_SYS_TIME\fP -ケーパビリティ (capability) が必要である。 -.SH 準拠 -SVr4, 4.3BSD に準拠する。 POSIX.1\-2001 は \fBgettimeofday\fP() については記述しているが、 -\fBsettimeofday\fP() については記述していない。 POSIX.1\-2008 では \fBgettimeofday\fP() -は廃止予定とされており、 代わりに \fBclock_gettime\fP(2) の使用が推奨されている。 -.SH 注意 -\fBgettimeofday\fP() が返す時刻は、システム時間の不連続な変化 -(例えば、システム管理者がシステム時間を手動で変更した場合など) -の影響を\fI受ける\fP。単調増加するクロックが必要な場合は、 -\fBclock_gettime\fP(2) を参照してほしい。 - -\fItimeval\fP 構造体を操作するためのマクロの説明は \fBtimeradd\fP(3) にある。 - -昔は \fIstruct timeval\fP のフィールドは \fIlong\fP 型であった。 - -.\" it has not -.\" been and will not be supported by libc or glibc. -.\" Each and every occurrence of this field in the kernel source -.\" (other than the declaration) is a bug. -\fItz_dsttime\fP は Linux でこれまで使われたことはない。 -したがって、以下は純粋に歴史的な興味から書かれたものである。 - -\fItz_dsttime\fP フィールドには (下記に示す) シンボル定数が格納される。 -これは一年のうちでいつ夏時間 (Daylight Savings Time) を実施するかを示している -(注意: その値は年間を通した定数である: 夏時間が実施中であることを示すわけではなく、 -アルゴリズムを選択しているだけである)。 夏時間は以下のように定義される: -.in +4n -.nf - -\fBDST_NONE\fP /* 夏時間を採用していない */ -.br -\fBDST_USA\fP /* アメリカ合衆国式夏時間 */ -.br -\fBDST_AUST\fP /* オーストラリア式夏時間 */ -.br -\fBDST_WET\fP /* 西ヨーロッパ式夏時間 */ -.br -\fBDST_MET\fP /* 中央ヨーロッパ式夏時間 */ -.br -\fBDST_EET\fP /* 東ヨーロッパ式夏時間 */ -.br -\fBDST_CAN\fP /* カナダ */ -.br -\fBDST_GB\fP /* グレートブリテンおよびアイルランド */ -.br -\fBDST_RUM\fP /* ルーマニア */ -.br -\fBDST_TUR\fP /* トルコ */ -.br -\fBDST_AUSTALT\fP /* 1986年に移行されたオーストラリア式 */ -.fi -.in -.PP -当然のことながら、夏時間がどの期間に実施されるかを国ごとの簡単なアルゴリズムで -導くことができないことが判明した。 実際、夏時間の期間は予測不可能な政治的決定で -決定される。そのため、この方法でタイムゾーンを表すことは断念された。 -Linux において \fBsettimeofday\fP() を呼び出すときは、 -\fItz_dsttime\fP フィールドを 0 にするべきである。 -.SH 関連項目 -\fBdate\fP(1), \fBadjtimex\fP(2), \fBclock_gettime\fP(2), \fBtime\fP(2), -\fBctime\fP(3), \fBftime\fP(3), \fBtimeradd\fP(3), \fBcapabilities\fP(7), -\fBtime\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/getuid.2 b/manual/LDP_man-pages/draft/man2/getuid.2 index 4c1d0523..43926c8d 100644 --- a/manual/LDP_man-pages/draft/man2/getuid.2 +++ b/manual/LDP_man-pages/draft/man2/getuid.2 @@ -37,39 +37,44 @@ .\" by Yuichi SATO .\" Updated 2012-04-30, Akihiro MOTOKI .\" -.TH GETUID 2 2010\-11\-22 Linux "Linux Programmer's Manual" +.TH GETUID 2 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 getuid, geteuid \- ユーザー ID を得る .SH 書式 \fB#include \fP .br \fB#include \fP -.sp +.PP \fBuid_t getuid(void);\fP .br \fBuid_t geteuid(void);\fP .SH 説明 \fBgetuid\fP() は呼び出し元のプロセスの実ユーザー ID を返す。 - +.PP \fBgeteuid\fP() は呼び出し元のプロセスの実効ユーザー ID を返す。 .SH エラー これらの関数は常に成功する。 .SH 準拠 -POSIX.1\-2001, 4.3BSD. +POSIX.1\-2001, POSIX.1\-2008, 4.3BSD. .SH 注意 .SS 歴史 UNIX\ V6 では \fBgetuid\fP() コールは \fI(euid << 8) + uid\fP を返していた。 UNIX\ V7 では \fBgetuid\fP() と \fBgeteuid\fP() という別々のコールが導入された。 - +.PP 元々の Linux の \fBgetuid\fP() と \fBgeteuid\fP() システムコールは 16 ビットのグループ ID だけに対応していた。 その後、Linux 2.4 で、32 ビットの ID に対応した \fBgetuid32\fP() と \fBgeteuid32\fP() が追加された。 glibc の \fBgetuid\fP() と \fBgeteuid\fP() のラッパー関数は カーネルバージョンによるこの違いを吸収している。 +.PP +On Alpha, instead of a pair of \fBgetuid\fP() and \fBgeteuid\fP() system calls, +a single \fBgetxuid\fP() system call is provided, which returns a pair of real +and effective UIDs. The glibc \fBgetuid\fP() and \fBgeteuid\fP() wrapper +functions transparently deal with this. See \fBsyscall\fP(2) for details +regarding register mapping. .SH 関連項目 \fBgetresuid\fP(2), \fBsetreuid\fP(2), \fBsetuid\fP(2), \fBcredentials\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/getxattr.2 b/manual/LDP_man-pages/draft/man2/getxattr.2 deleted file mode 100644 index 1d61c957..00000000 --- a/manual/LDP_man-pages/draft/man2/getxattr.2 +++ /dev/null @@ -1,108 +0,0 @@ -.\" Copyright (C) Andreas Gruenbacher, February 2001 -.\" Copyright (C) Silicon Graphics Inc, September 2001 -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Tue Jul 8 02:47:19 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH GETXATTR 2 2014\-04\-06 Linux "Linux Programmer's Manual" -.SH 名前 -getxattr, lgetxattr, fgetxattr \- 拡張属性の値を取得する -.SH 書式 -.fam C -.nf -\fB#include \fP -\fB#include \fP -.sp -\fBssize_t getxattr(const char\ *\fP\fIpath\fP\fB, const char\ *\fP\fIname\fP\fB,\fP -\fB void\ *\fP\fIvalue\fP\fB, size_t \fP\fIsize\fP\fB);\fP -\fBssize_t lgetxattr(const char\ *\fP\fIpath\fP\fB, const char\ *\fP\fIname\fP\fB,\fP -\fB void\ *\fP\fIvalue\fP\fB, size_t \fP\fIsize\fP\fB);\fP -\fBssize_t fgetxattr(int \fP\fIfd\fP\fB, const char\ *\fP\fIname\fP\fB,\fP -\fB void\ *\fP\fIvalue\fP\fB, size_t \fP\fIsize\fP\fB);\fP -.fi -.fam T -.SH 説明 -拡張属性は、inode (ファイル、ディレクトリ、シンボリックリンク等) に 関連付けられた \fIname\fP:\fIvalue\fP の対である。 -これらは、システム上のすべての inode に関連付けられた通常の属性 (\fBstat\fP(2) が返すデータ) を拡張するものである。 -拡張属性のコンセプトは \fBattr\fP(5) に書かれている。 -.PP -\fBgetxattr\fP() は、ファイルシステム内の指定された \fIpath\fP に対応する、名前 \fIname\fP の拡張属性の \fIvalue\fP -(値) を取得する。 属性 \fIvalue\fP の長さが返される。 -.PP -\fBlgetxattr\fP() は \fBgetxattr\fP() と同じだが、シンボリックリンクの場合に、リンクが参照しているファイル -ではなく、リンクそのものの情報を取得する点だけが異なる。 -.PP -\fBfgetxattr\fP() は \fBgetxattr\fP() と同じだが、 \fIpath\fP の代わりに \fIfd\fP -で参照されたオープン済みファイルの情報だけを取得する点が異なる (\fIfd\fP は \fBopen\fP(2) によって返される)。 -.PP -拡張属性の名前 \fIname\fP は普通のヌル終端された文字列である。 名前には、名前空間を表す接頭辞 (prefix) が含まれる; 個々の inode -に対して、互いに独立な名前空間が複数あってもよい。 拡張属性の値は、ある一定の長さの任意のテキストデータまたは バイナリデータの集合である。 -.PP -\fIsize\fP に 0 を指定して空のバッファーをこれらのシステムコールに渡すことができ、 -この場合には指定された名前の拡張属性の現在のサイズが返される。 この方法は、拡張属性の値を保持するのに十分な大きさのバッファーサイズを -見積もるのに使うことができる、 -.PP -このシステムコールインターフェースは、初期バッファーのサイズの推測をしたり、 -与えられたバッファーが小さすぎたことを返り値で知らせることでバッファーを大きく したりできるように設計されている。 -.SH 返り値 -成功した場合、拡張属性の値の長さを表す非負の数が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。 -.SH エラー -.TP -\fBENOATTR\fP -指定された名前の属性が存在しない、またはプロセスがその属性にアクセスする権限がない (\fBENOATTR\fP は -\fI\fP で \fBENODATA\fP の同義語として定義されている)。 -.TP -\fBENOTSUP\fP -拡張属性がそのファイルシステムでサポートされていない、 もしくは無効になっている。 -.TP -\fBERANGE\fP -\fIvalue\fP バッファーの大きさ \fIsize\fP が結果を保持するのに十分な大きさでなかった。 -.PP -上記に加えて、 \fBstat\fP(2) に書かれているエラーが発生する場合もある。 -.SH バージョン -これらのシステムコールはカーネル 2.4 以降の Linux で利用できる。 glibc でのサポートはバージョン 2.3 以降で行われている。 -.SH 準拠 -.\" .SH AUTHORS -.\" Andreas Gruenbacher, -.\" .RI < a.gruenbacher@computer.org > -.\" and the SGI XFS development team, -.\" .RI < linux-xfs@oss.sgi.com >. -.\" Please send any bug reports or comments to these addresses. -これらのシステムコールは Linux 独自である。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/idle.2 b/manual/LDP_man-pages/draft/man2/idle.2 index 367aca3f..e2c1adc8 100644 --- a/manual/LDP_man-pages/draft/man2/idle.2 +++ b/manual/LDP_man-pages/draft/man2/idle.2 @@ -47,7 +47,7 @@ idle \- ID 0 のプロセスをアイドル状態にする .SH 書式 \fB#include \fP -.sp +.PP \fBint idle(void);\fP .SH 説明 \fBidle\fP() はブートストラップ時に使用される、内部システムコールである。 @@ -67,6 +67,5 @@ Linux 2.3.13 以降では、もはやこのシステムコールは存在しな .SH 準拠 この関数は Linux 特有であり、移植を意図したプログラムでは 使用すべきでない。 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/init_module.2 b/manual/LDP_man-pages/draft/man2/init_module.2 index 3c05bf0e..7112b76f 100644 --- a/manual/LDP_man-pages/draft/man2/init_module.2 +++ b/manual/LDP_man-pages/draft/man2/init_module.2 @@ -33,34 +33,34 @@ .\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. .\" Translated 2006-07-29, Akihiro MOTOKI .\" -.TH INIT_MODULE 2 2014\-05\-10 Linux "Linux Programmer's Manual" +.TH INIT_MODULE 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 init_module, finit_module \- カーネルモジュールをロードする .SH 書式 .nf \fBint init_module(void *\fP\fImodule_image\fP\fB, unsigned long \fP\fIlen\fP\fB,\fP \fB const char *\fP\fIparam_values\fP\fB);\fP - +.PP \fBint finit_module(int \fP\fIfd\fP\fB, const char *\fP\fIparam_values\fP\fB,\fP \fB int \fP\fIflags\fP\fB);\fP .fi - +.PP \fI注意\fP: glibc では、 ヘッダーファイルでの \fBinit_module\fP() の宣言はなく、 \fBfinit_module\fP() のラッパー関数も提供されていない。 「注意」の節を参照。 .SH 説明 \fBinit_module\fP() は ELF イメージをカーネル空間にロードし、 必要なシンボルの配置変更を行い、 モジュールパラメーターを呼び出し元から指定された値に初期化し、 最後にそのモジュールの \fIinit\fP 関数を実行する。 このシステムコールには特権が必要である。 - +.PP \fImodule_image\fP 引き数はロードするバイナリーイメージが入ったバッファーを指し、 \fIlen\fP はバッファーのサイズを指定する。 モジュールイメージは、 実行中のカーネル用に作成された有効な ELF イメージである必要がある。 - +.PP \fIparam_values\fP 引き数はモジュールパラメーター値を指定するスペース区切りの文字列である (モジュールパラメーターは \fBmodule_param\fP() や \fBmodule_param_array\fP() を使ってモジュール内で定義される)。 カーネルはこの文字列を解釈し、指定されたパラメーターを初期化する。 各パラメーター指定は以下の形式である。 - +.PP \fIname\fP[\fB=\fP\fIvalue\fP[\fB,\fP\fIvalue\fP...]] - +.PP パラメーター \fIname\fP はモジュール内で \fImodule_param\fP() を使って定義されているパラメーターのいずれか一つである (Linux カーネルのソースファイル \fIinclude/linux/moduleparam.h\fP を参照)。 パラメーター \fIvalue\fP は \fIbool\fP か \fIinvbool\fP パラメーターの場合は省略可能である。 配列パラメーターの値はカンマ区切りのリストで指定される。 @@ -71,7 +71,7 @@ init_module, finit_module \- カーネルモジュールをロードする からモジュールをロードする。 カーネルモジュールの信頼性をファイルシステムにおける場所から判定できる場合、この方法は有効である。 この方法が利用できる場合、 モジュールの信頼性を判定するのに暗号で署名されたモジュールを使用することによるオーバーヘッドを避ける事ができる。 \fIparam_values\fP 引き数は \fBinit_module\fP() と同じである。 - +.PP .\" commit 2f3238aebedb243804f58d62d57244edec4149b2 \fIflags\fP 引き数で \fBfinit_module\fP() の動作を変更できる。 \fIflags\fP は以下のフラグの 0 個以上の論理和をとって作成したビットマスクである。 @@ -90,11 +90,13 @@ init_module, finit_module \- カーネルモジュールをロードする 設定オプションを有効にして作成されている場合、 バージョンハッシュがモジュールが使用するシンボルごとに記録される。 このハッシュはシンボルに対応する関数の引き数と返り値の型を基づいて計算される。 この場合、 シンボルのバージョンハッシュは十分に信頼できると考えられているため、 "vermagic" 文字列内のカーネルのバージョン番号は無視される。 - -\fBMODULE_INIT_IGNORE_VERMAGIC\fP フラグは "vermagic" 文字列を無視することを意味し、 -\fBMODULE_INIT_IGNORE_MODVERSIONS\fP フラグはシンボルのバージョンハッシュを無視することを意味する。 -カーネルが強制ロードを許可するように作成されている場合 (\fBCONFIG_MODULE_FORCE_LOAD\fP が有効になっている場合)、 -モジュールのロードは継続され、 そうでない場合は不正なモジュールに対して返るのと同じ \fBENOEXEC\fP で失敗する。 +.PP +Using the \fBMODULE_INIT_IGNORE_VERMAGIC\fP flag indicates that the "vermagic" +string is to be ignored, and the \fBMODULE_INIT_IGNORE_MODVERSIONS\fP flag +indicates that the symbol version hashes are to be ignored. If the kernel +is built to permit forced loading (i.e., configured with +\fBCONFIG_MODULE_FORCE_LOAD\fP), then loading continues, otherwise it fails +with the error \fBENOEXEC\fP as expected for malformed modules. .SH 返り値 成功の場合、これらのシステムコールは 0 を返す。エラーの場合 \-1 が返され、 \fIerrno\fP に適切な値が設定される。 .SH エラー @@ -166,28 +168,29 @@ ELF イメージである。 .SH 準拠 \fBinit_module\fP() と \fBfinit_module\fP() は Linux 固有である。 .SH 注意 -\fBinit_module\fP() システムコールは glibc ではサポートされていない。 glibc ヘッダーでは宣言は提供されていないが、 -歴史の紆余曲折を経て glibc はこのシステムコールに対する ABI を公開していない。 -したがって、このシステムコールを利用するには、自分のコードの中で手動でインターフェースを宣言すればよい。 \fBsyscall\fP(2) -を使ってシステムコールを起動できる。 - +The \fBinit_module\fP() system call is not supported by glibc. No declaration +is provided in glibc headers, but, through a quirk of history, glibc +versions before 2.23 did export an ABI for this system call. Therefore, in +order to employ this system call, it is (before glibc 2.23) sufficient to +manually declare the interface in your code; alternatively, you can invoke +the system call using \fBsyscall\fP(2). +.PP glibc は \fBfinit_module\fP() に対するラッパー関数を提供していない。 \fBsyscall\fP(2) を使って呼び出すこと。 - +.PP 現在ロードされているモジュールに関する情報は \fI/proc/modules\fP および \fI/sys/module\fP 以下のモジュール単位のサブディレクトリ内のファイルツリーで参照できる。 - +.PP Linux カーネルのソースファイル \fIinclude/linux/module.h\fP には背景に関する有用な情報がある。 .SS "Linux 2.4 以前" -.PP Linux 2.4 以前では \fBinit_module\fP() システムコールはかなり違ったものであった。 - +.PP \fB#include \fP - +.PP \fB int init_module(const char *\fP\fIname\fP\fB, struct module *\fP\fIimage\fP\fB);\fP - +.PP (ユーザー空間アプリケーションは \fBquery_module\fP() を呼び出してどのバージョンの \fBinit_module\fP() が利用可能かを検出できる。 \fBquery_module\fP() の呼び出しは Linux 2.6 以降ではエラー \fBENOSYS\fP で失敗する。) - +.PP 古いバージョンのシステムコールは、 \fIimage\fP が指す再配置されたモジュールイメージをカーネル空間にロードし、 モジュールの \fIinit\fP 関数を実行する。 呼び出し元には再配置されたイメージを提供する責任がある (Linux 2.6 以降では \fBinit_module\fP() システムコールが再配置自体を行う)。 @@ -196,7 +199,7 @@ Linux 2.4 以前では \fBinit_module\fP() システムコールはかなり違 構造体は以下のように定義されている。 .PP .in +4n -.nf +.EX struct module { unsigned long size_of_struct; struct module *next; @@ -217,7 +220,7 @@ struct module { unsigned long gp; #endif }; -.fi +.EE .in .PP \fInext\fP と \fIrefs\fP 以外の全てのポインター要素はモジュール本体内部を指し、 カーネル空間での適切な値で初期化される @@ -226,6 +229,5 @@ struct module { \fBcreate_module\fP(2), \fBdelete_module\fP(2), \fBquery_module\fP(2), \fBlsmod\fP(8), \fBmodprobe\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/inotify_add_watch.2 b/manual/LDP_man-pages/draft/man2/inotify_add_watch.2 index 16500c3e..ed133e21 100644 --- a/manual/LDP_man-pages/draft/man2/inotify_add_watch.2 +++ b/manual/LDP_man-pages/draft/man2/inotify_add_watch.2 @@ -35,12 +35,12 @@ .\" all rights reserved. .\" Translated 2006-08-15, Akihiro MOTOKI , LDP v2.39 .\" -.TH INOTIFY_ADD_WATCH 2 2014\-07\-08 Linux "Linux Programmer's Manual" +.TH INOTIFY_ADD_WATCH 2 2020\-04\-11 Linux "Linux Programmer's Manual" .SH 名前 inotify_add_watch \- 初期化済み inotify インスタンスに監視対象を追加する .SH 書式 \fB#include \fP -.sp +.PP \fBint inotify_add_watch(int \fP\fIfd\fP\fB, const char *\fP\fIpathname\fP\fB, uint32_t \fP\fImask\fP\fB);\fP .SH 説明 @@ -49,19 +49,22 @@ inotify_add_watch \- 初期化済み inotify インスタンスに監視対象 引き数は、変更を行う監視対象リスト (watch list) を持つ inotify インスタンスを参照するファイルディスクリプターである。 \fIpathname\fP のどのイベントを監視するかは、引き数のビットマスク \fImask\fP で指定する。 \fImask\fP に設定できるビットの説明については \fBinotify\fP(7) を参照のこと。 - -\fBinotify_add_watch\fP() の呼び出しが成功すると、 \fIpathname\fP に対応するファイルシステムオブジェクトに対する、 -一意な監視対象ディスクリプター (watch descriptor) を、 対象の inotify インスタンスに対して返す。 -そのファイルシステムオブジェクトが対象の inotify インスタンスによって以前に監視されていない場合には、 -監視対象ディスクリプターは新規に割り当てられる。 ファイルシステムオブジェクトが (おそらく同じオブジェクトに対する異なるリンク経由で) -すでに監視されている場合には、 既存の監視に対するディスクリプターが返される。 - +.PP +A successful call to \fBinotify_add_watch\fP() returns a unique watch +descriptor for this inotify instance, for the filesystem object (inode) that +corresponds to \fIpathname\fP. If the filesystem object was not previously +being watched by this inotify instance, then the watch descriptor is newly +allocated. If the filesystem object was already being watched (perhaps via +a different link to the same object), then the descriptor for the existing +watch is returned. +.PP これ以降に inotify ファイルディスクリプターから \fBread\fP(2) を行うと、監視対象ディスクリプターが返される。 これらの \fBread\fP() を行うと、ファイルシステムイベントを示す \fIinotify_event\fP 構造体が読み出される (\fBinotify\fP(7) 参照)。この構造体内の監視対象ディスクリプターにより、 どのオブジェクトでそのイベントが発生したかを特定できる。 .SH 返り値 -成功すると、 \fBinotify_add_watch\fP() は非負の監視対象ディスクリプターを返す。 エラーの場合、\-1 を返し、 \fIerrno\fP -を適切に設定する。 +On success, \fBinotify_add_watch\fP() returns a watch descriptor (a +nonnegative integer). On error, \-1 is returned and \fIerrno\fP is set +appropriately. .SH エラー .TP \fBEACCES\fP @@ -70,11 +73,17 @@ inotify_add_watch \- 初期化済み inotify インスタンスに監視対象 \fBEBADF\fP 指定されたファイルディスクリプターが有効ではない。 .TP +\fBEEXIST\fP +\fImask\fP contains \fBIN_MASK_CREATE\fP and \fIpathname\fP refers to a file already +being watched by the same \fIfd\fP. +.TP \fBEFAULT\fP \fIpathname\fP が指すアドレスがプロセスがアクセスできるアドレス空間外である。 .TP \fBEINVAL\fP -指定されたイベントマスクに有効なイベントが含まれていない。 もしくは \fIfd\fP が inotify ファイルディスクリプターではない。 +The given event mask contains no valid events; or \fImask\fP contains both +\fBIN_MASK_ADD\fP and \fBIN_MASK_CREATE\fP; or \fIfd\fP is not an inotify file +descriptor. .TP \fBENAMETOOLONG\fP \fIpathname\fP が長過ぎる。 @@ -88,13 +97,17 @@ inotify_add_watch \- 初期化済み inotify インスタンスに監視対象 .TP \fBENOSPC\fP inotify 監視対象の総数がユーザーが追加できる上限に達していた。 もしくは、必要な資源の割り当てにカーネルが失敗した。 +.TP +\fBENOTDIR\fP +\fImask\fP contains \fBIN_ONLYDIR\fP and \fIpathname\fP is not a directory. .SH バージョン inotify は Linux カーネル 2.6.13 に組み込まれた。 .SH 準拠 このシステムコールは Linux 独自である。 +.SH EXAMPLES +See \fBinotify\fP(7). .SH 関連項目 \fBinotify_init\fP(2), \fBinotify_rm_watch\fP(2), \fBinotify\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/inotify_init.2 b/manual/LDP_man-pages/draft/man2/inotify_init.2 index 93a0ceee..a13b2df5 100644 --- a/manual/LDP_man-pages/draft/man2/inotify_init.2 +++ b/manual/LDP_man-pages/draft/man2/inotify_init.2 @@ -38,29 +38,29 @@ .\" Updated 2008-11-10, Akihiro MOTOKI , LDP v3.12 .\" Updated 2012-05-29, Akihiro MOTOKI .\" -.TH INOTIFY_INIT 2 2014\-03\-28 Linux "Linux Programmer's Manual" +.TH INOTIFY_INIT 2 2020\-04\-11 Linux "Linux Programmer's Manual" .SH 名前 inotify_init, inotify_init1 \- inotify インスタンスを初期化する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint inotify_init(void);\fP \fBint inotify_init1(int \fP\fIflags\fP\fB);\fP .fi .SH 説明 inotify API の概要については \fBinotify\fP(7) を参照。 - +.PP \fBinotify_init\fP() は、新規の inotify インスタンスを初期化し、作成された inotify イベントキュー に対応するファイルディスクリプターを返す。 - +.PP \fBinotify_init1\fP() は、 \fIflags\fP が 0 の場合、 \fBinotify_init\fP() と同じである。 \fIflags\fP に以下の値をビット毎の論理和 (OR) で指定することで、 異なる動作をさせることができる。 -.TP 12 +.TP \fBIN_NONBLOCK\fP -新しく生成されるオープンファイル記述 (open file description) の BR O_NONBLOCK -ファイルステータスフラグをセットする。 このフラグを使うことで、 \fBO_NONBLOCK\fP をセットするために \fBfcntl\fP(2) -を追加で呼び出す必要がなくなる。 +Set the \fBO_NONBLOCK\fP file status flag on the open file description (see +\fBopen\fP(2)) referred to by the new file descriptor. Using this flag saves +extra calls to \fBfcntl\fP(2) to achieve the same result. .TP \fBIN_CLOEXEC\fP 新しいファイルディスクリプターに対して close\-on\-exec (\fBFD_CLOEXEC\fP) フラグをセットする。 @@ -75,8 +75,12 @@ inotify API の概要については \fBinotify\fP(7) を参照。 \fBEMFILE\fP inotify インスタンスの総数がユーザー単位の上限に達していた。 .TP +\fBEMFILE\fP +The per\-process limit on the number of open file descriptors has been +reached. +.TP \fBENFILE\fP -inotify ファイルディスクリプターの総数がシステムの上限に達していた。 +The system\-wide limit on the total number of open files has been reached. .TP \fBENOMEM\fP カーネルメモリーが十分になかった。 @@ -90,6 +94,5 @@ inotify ファイルディスクリプターの総数がシステムの上限に .SH 関連項目 \fBinotify_add_watch\fP(2), \fBinotify_rm_watch\fP(2), \fBinotify\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/inotify_rm_watch.2 b/manual/LDP_man-pages/draft/man2/inotify_rm_watch.2 index a5b06d87..7452e2f0 100644 --- a/manual/LDP_man-pages/draft/man2/inotify_rm_watch.2 +++ b/manual/LDP_man-pages/draft/man2/inotify_rm_watch.2 @@ -34,19 +34,19 @@ .\" all rights reserved. .\" Translated 2006-08-15, Akihiro MOTOKI , LDP v2.39 .\" -.TH INOTIFY_RM_WATCH 2 2010\-10\-15 Linux "Linux Programmer's Manual" +.TH INOTIFY_RM_WATCH 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 inotify_rm_watch \- inotify インスタンスから既存の監視アイテムを削除する .SH 書式 \fB#include \fP -.sp +.PP .\" Before glibc 2.10, the second argument was types as uint32_t. .\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=7040 \fBint inotify_rm_watch(int \fP\fIfd\fP\fB, int \fP\fIwd\fP\fB);\fP .SH 説明 \fBinotify_rm_watch\fP() は、監視対象ディスクリプター (watch descriptor) \fIwd\fP に対応する監視アイテムを、 ファイルディスクリプター \fIfd\fP に対応する inotify インスタンスから削除する。 - +.PP 監視対象を削除すると、 この監視対象ディスクリプターに対して \fBIN_IGNORED\fP イベントが生成される (\fBinotify\fP(7) 参照)。 .SH 返り値 成功すると、\fBinotify_rm_watch\fP() は 0 を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP @@ -65,6 +65,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/intro.2 b/manual/LDP_man-pages/draft/man2/intro.2 index 9284caa9..e124eb05 100644 --- a/manual/LDP_man-pages/draft/man2/intro.2 +++ b/manual/LDP_man-pages/draft/man2/intro.2 @@ -36,7 +36,7 @@ .\" all rights reserved. .\" Translated 2008-02-10, Akihiro MOTOKI .\" -.TH INTRO 2 2014\-02\-20 Linux "Linux Programmer's Manual" +.TH INTRO 2 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 intro \- システムコールの説明 .SH 説明 @@ -44,29 +44,34 @@ intro \- システムコールの説明 通常は、システムコールは直接起動される訳ではなく、 ほとんどのシステムコールには対応する C ライブラリのラッパー関数があり、 そのラッパー関数がシステムコールを呼び出すのに必要な処理を実行する。 そのため、システムコールを呼び出すのは通常のライブラリ関数を呼び出すのと 同じように見える。 - +.PP 多くの場合、 C ライブラリのラッパー関数が行うのは以下のことだけである。 .IP * 3 引き数と一意なシステムコール番号をカーネルが期待するレジスターにコピーする .IP * -カーネルがシステムコールの実際の処理を行う時点でカーネルモードに入る +trapping to kernel mode, at which point the kernel does the real work of the +system call; .IP * カーネルが CPU をユーザーモードに返した際にシステムコールがエラー番号を返したいれば \fIerrno\fP を設定する -.LP -しかし、ラッパー関数がこれ以上のことを行う場合もいくつかある。例えば、カーネルモードに入る前に引き数に対する前処理を実行したり、システムコールが返した値に対する後処理を行うなどである。このような場合、セクション -2 のマニュアルページでは、基本的に、C ライブラリ API インターフェース (通常は GNU C ライブラリのもの) -と生のシステムコールの両方の詳細をできるだけ説明しようとする。ほとんどの場合、メインとなる「説明」では C -ライブラリのインターフェースに焦点をあてて説明し、システムコールでの差分については「注意」のセクションに説明がある。 - +.PP +However, in a few cases, a wrapper function may do rather more than this, +for example, performing some preprocessing of the arguments before trapping +to kernel mode, or postprocessing of values returned by the system call. +Where this is the case, the manual pages in Section 2 generally try to note +the details of both the (usually GNU) C library API interface and the raw +system call. Most commonly, the main DESCRIPTION will focus on the C +library interface, and differences for the system call are covered in the +NOTES section. +.PP Linux のシステムコールのリストについては \fBsyscalls\fP(2) を参照のこと。 .SH 返り値 エラーの場合、ほとんどのシステムコールは負のエラー番号を返す (具体的には \fBerrno\fP(3) で説明されている定数のいずれかを負にした値を返す)。 C ライブラリのラッパーは呼び出し元からこうした詳細を隠蔽している。 システムコールが負の値を返した場合、ラッパーは絶対値を \fIerrno\fP 変数にコピーし、ラッパーの返り値として \-1 を返す。 - +.PP 成功時にシステムコールが返す値はシステムコールにより異なる。 多くのシステムコールは成功時に 0 を返すが、 成功時に 0 以外の値を返すシステムコールもある。 詳細は個々のマニュアルページで説明されている。 - +.PP マニュアルページの「書式」の節に規定されたヘッダーファイルから関数の定義を 得るために、プログラマが機能検査マクロを定義しなければならない場合がある (機能検査マクロの定義が必要な場合、これらの機能検査マクロの定義は 「どの」ヘッダーファイルのインクルードよりも前で行われなければならない)。 このような場合には、必要なマクロがマニュアルページで説明されている。 機能検査マクロのさらなる情報については、 @@ -87,8 +92,8 @@ Linux のシステムコールのリストについては \fBsyscalls\fP(2) を \fBcapabilities\fP(7), \fBcredentials\fP(7), \fBfeature_test_macros\fP(7), \fBmq_overview\fP(7), \fBpath_resolution\fP(7), \fBpipe\fP(7), \fBpty\fP(7), \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) +\fBstandards\fP(7), \fBsystem_data_types\fP(7), \fBsymlink\fP(7), \fBsysvipc\fP(7), +\fBtime\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/io_cancel.2 b/manual/LDP_man-pages/draft/man2/io_cancel.2 index 1344d477..945fc1d6 100644 --- a/manual/LDP_man-pages/draft/man2/io_cancel.2 +++ b/manual/LDP_man-pages/draft/man2/io_cancel.2 @@ -16,19 +16,22 @@ .\" Updated 2013-03-25, Akihiro MOTOKI .\" Updated 2013-05-01, Akihiro MOTOKI .\" -.TH IO_CANCEL 2 2013\-04\-10 Linux "Linux Programmer's Manual" +.TH IO_CANCEL 2 2020\-12\-21 Linux "Linux Programmer's Manual" .SH 名前 io_cancel \- 未処理の非同期 I/O 操作の取り消し .SH 書式 .nf \fB#include \fP /* 必要な型の定義 */ - +.PP \fBint io_cancel(aio_context_t \fP\fIctx_id\fP\fB, struct iocb *\fP\fIiocb\fP\fB,\fP \fB struct io_event *\fP\fIresult\fP\fB);\fP .fi - +.PP \fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 .SH 説明 +\fINote\fP: this page describes the raw Linux system call interface. The +wrapper function provided by \fIlibaio\fP uses a different type for the +\fIctx_id\fP argument. See NOTES. .PP \fBio_cancel\fP() システムコールは、過去に \fBio_submit\fP(2) を使って登録された非同期 I/O (AIO) 操作の取り消しを行おうとする。 \fIiocb\fP 引き数は取り消したい操作が示し、 \fIctx_id\fP 引き数は、取り消しを行う操作が登録された AIO @@ -50,10 +53,8 @@ io_cancel \- 未処理の非同期 I/O 操作の取り消し \fBENOSYS\fP \fBio_cancel\fP() はこのアーキテクチャーでは実装されていない。 .SH バージョン -.PP 非同期 I/O システムコールは Linux 2.5 で初めて登場した。 .SH 準拠 -.PP \fBio_cancel\fP() は Linux 固有であり、移植を想定したプログラムで使用すべきではない。 .SH 注意 .\" http://git.fedorahosted.org/git/?p=libaio.git @@ -62,7 +63,7 @@ glibc はこのシステムコールのラッパー関数を提供していな しかし、たいていは、このシステムコールを呼び出したいのではなく、 \fIlibaio\fP が提供している \fBio_cancel\fP ラッパー関数を呼び出したい 場合がほとんどであろう。 - +.PP .\" But glibc is confused, since uses 'io_context_t' to declare .\" the system call. \fIlibaio\fP のラッパー関数では \fIctx_id\fP 引き数に別の型 @@ -79,6 +80,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/io_destroy.2 b/manual/LDP_man-pages/draft/man2/io_destroy.2 index bf0cc69f..52edabaa 100644 --- a/manual/LDP_man-pages/draft/man2/io_destroy.2 +++ b/manual/LDP_man-pages/draft/man2/io_destroy.2 @@ -16,18 +16,21 @@ .\" Updated 2013-03-25, Akihiro MOTOKI .\" Updated 2013-05-01, Akihiro MOTOKI .\" -.TH IO_DESTROY 2 2013\-04\-08 Linux "Linux Programmer's Manual" +.TH IO_DESTROY 2 2020\-12\-21 Linux "Linux Programmer's Manual" .SH 名前 io_destroy \- 非同期 I/O コンテキストの消去 .SH 書式 .nf \fB#include \fP /* 必要な型の定義 */ - +.PP \fBint io_destroy(aio_context_t \fP\fIctx_id\fP\fB);\fP .fi - +.PP \fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 .SH 説明 +\fINote\fP: this page describes the raw Linux system call interface. The +wrapper function provided by \fIlibaio\fP uses a different type for the +\fIctx_id\fP argument. See NOTES. .PP \fBio_destroy\fP() システムコールは、実行中の \fIctx_id\fP で指定された非同期 I/O 操作をすべて取り消そうとし、取り消せなかったすべての操作が完了するまで停止 (block) し、その後 \fIctx_id\fP の削除を行う。 @@ -44,10 +47,8 @@ io_destroy \- 非同期 I/O コンテキストの消去 \fBENOSYS\fP \fBio_destroy\fP() はこのアーキテクチャーでは実装されていない。 .SH バージョン -.PP 非同期 I/O システムコールは Linux 2.5 で初めて登場した。 .SH 準拠 -.PP \fBio_destroy\fP() は Linux 固有であり、移植を想定したプログラムで使用すべきではない。 .SH 注意 .\" http://git.fedorahosted.org/git/?p=libaio.git @@ -56,7 +57,7 @@ glibc はこのシステムコールのラッパー関数を提供していな しかし、たいていは、このシステムコールを呼び出したいのではなく、 \fIlibaio\fP が提供している \fBio_destroy\fP ラッパー関数を呼び出したい 場合がほとんどであろう。 - +.PP .\" But glibc is confused, since uses 'io_context_t' to declare .\" the system call. \fIlibaio\fP のラッパー関数では \fIctx_id\fP 引き数に別の型 @@ -73,6 +74,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/io_getevents.2 b/manual/LDP_man-pages/draft/man2/io_getevents.2 deleted file mode 100644 index e5c89cff..00000000 --- a/manual/LDP_man-pages/draft/man2/io_getevents.2 +++ /dev/null @@ -1,92 +0,0 @@ -.\" Copyright (C) 2003 Free Software Foundation, Inc. -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" This file is distributed according to the GNU General Public License. -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI, all rights reserved. -.\" Translated Mon Mar 8 2003 by Akihiro MOTOKI -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-03-25, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" -.TH IO_GETEVENTS 2 2013\-04\-08 Linux "Linux Programmer's Manual" -.SH 名前 -io_getevents \- 完了キューから非同期 I/O イベントを読み出す -.SH 書式 -.nf -\fB#include \fP /* 必要な型の定義 */ -\fB#include \fP /* 'struct timespec' の定義 */ - -\fBint io_getevents(aio_context_t \fP\fIctx_id\fP\fB, long \fP\fImin_nr\fP\fB, long \fP\fInr\fP\fB,\fP -\fB struct io_event *\fP\fIevents\fP\fB, struct timespec *\fP\fItimeout\fP\fB);\fP -.fi - -\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 は相対的な指定である。 -.SH 返り値 -成功すると、 \fBio_getevents\fP() は読み出したイベント数を返す。 イベントが一つも読み出されなかった場合は 0 が返され、 -\fItimeout\fP 時間が経過した場合は \fImin_nr\fP 未満の値が返される。 失敗時の返り値については、「注意」の節を参照すること。 -.SH エラー -.TP -\fBEFAULT\fP -\fIevents\fP または \fItimeout\fP が無効なポインターである。 -.TP -\fBEINVAL\fP -\fIctx_id\fP が無効である。もしくは、\fImin_nr\fP または \fInr\fP が 範囲外の値である。 -.TP -\fBEINTR\fP -シグナルハンドラーにより割り込まれた。 \fBsignal\fP(7) 参照。 -.TP -\fBENOSYS\fP -\fBio_getevents\fP() がこのアーキテクチャーでは実装されていない。 -.SH バージョン -.PP -非同期 I/O システムコールは Linux 2.5 で初めて登場した。 -.SH 準拠 -.PP -\fBio_getevents\fP() は Linux 固有であり、移植を想定したプログラムで 使用すべきではない。 -.SH 注意 -.\" http://git.fedorahosted.org/git/?p=libaio.git -glibc はこのシステムコールのラッパー関数を提供していない。 -\fBsyscall\fP(2) を使ってこのシステムコールを起動することができる。 -しかし、たいていは、このシステムコールを呼び出したいのではなく、 - \fIlibaio\fP が提供している \fBio_getevents\fP ラッパー関数を呼び出したい -場合がほとんどであろう。 - -.\" But glibc is confused, since uses 'io_context_t' to declare -.\" the system call. -\fIlibaio\fP のラッパー関数では \fIctx_id\fP 引き数に別の型 -(\fIio_context_t\fP) が使われることに注意すること。 -また、\fIlibaio\fP のラッパー関数は、エラーの通知が通常の C ライブラリの -慣習にしたがっておらず、エラーの場合には負のエラー番号 (エラーの節に列 -挙されている値の一つを負にしたもの) が返り値となる点にも注意すること。 -\fBsyscall\fP(2) 経由でシステムコールを起動すると、返り値は通常のエラー通 -知の慣習に したがってものとなり、エラーの場合には \-1 が返り、 \fIerrno\fP -にエラーを示す (正の) 値が設定される。 -.SH バグ -無効な \fIctx_id\fP を指定した場合、エラー \fBEINVAL\fP が生成されず、セグメンテーション違反 (segmentation fault) -が発生する場合がある。 -.SH 関連項目 -.PP -.\" .SH AUTHOR -.\" Kent Yoder. -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/io_setup.2 b/manual/LDP_man-pages/draft/man2/io_setup.2 index 8c8cb6e8..3eb0ae78 100644 --- a/manual/LDP_man-pages/draft/man2/io_setup.2 +++ b/manual/LDP_man-pages/draft/man2/io_setup.2 @@ -17,18 +17,21 @@ .\" Updated 2013-05-01, Akihiro MOTOKI .\" Updated 2013-07-15, Akihiro MOTOKI .\" -.TH IO_SETUP 2 2013\-06\-21 Linux "Linux Programmer's Manual" +.TH IO_SETUP 2 2020\-12\-21 Linux "Linux Programmer's Manual" .SH 名前 io_setup \- 非同期 I/O コンテキストを作成する .SH 書式 .nf \fB#include \fP /* 必要な型の定義 */ - -\fBint io_setup(unsigned \fP\fInr_events\fP\fB, aio_context_t *\fP\fIctx_idp\fP\fB);\fP +.PP +\fBlong io_setup(unsigned \fP\fInr_events\fP\fB, aio_context_t *\fP\fIctx_idp\fP\fB);\fP .fi - +.PP \fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 .SH 説明 +\fINote\fP: this page describes the raw Linux system call interface. The +wrapper function provided by \fIlibaio\fP uses a different type for the +\fIctx_idp\fP argument. See NOTES. .PP \fBio_setup\fP() システムコールは、 \fInr_events\fP 個のイベントを 同時に実行に適した非同期 I/O (AIO) コンテキストの作成を行う。 \fIctx_idp\fP 引き数 @@ -41,8 +44,8 @@ AIO コンテキストの作成に成功すると、 \fI*ctx_idp\fP に作成さ .SH エラー .TP \fBEAGAIN\fP -指定された \fInr_events\fP がユーザーが使用できるイベント数の上限を越えている。イベント数の上限は -\fI/proc/sys/fs/aio\-max\-nr\fP で定義されている。 +The specified \fInr_events\fP exceeds the limit of available events, as defined +in \fI/proc/sys/fs/aio\-max\-nr\fP (see \fBproc\fP(5)). .TP \fBEFAULT\fP \fIctx_idp\fP に無効なポインターが指定されている。 @@ -58,10 +61,8 @@ AIO コンテキストの作成に成功すると、 \fI*ctx_idp\fP に作成さ \fBENOSYS\fP \fBio_setup\fP() がこのアーキテクチャーでは実装されていない。 .SH バージョン -.PP 非同期 I/O システムコールは Linux 2.5 で初めて登場した。 .SH 準拠 -.PP \fBio_setup\fP() は Linux 固有であり、移植を想定したプログラムで 使用すべきではない。 .SH 注意 .\" http://git.fedorahosted.org/git/?p=libaio.git @@ -70,7 +71,7 @@ glibc はこのシステムコールのラッパー関数を提供していな しかし、たいていは、このシステムコールを呼び出したいのではなく、 \fIlibaio\fP が提供している \fBio_setup\fP ラッパー関数を呼び出したい 場合がほとんどであろう。 - +.PP .\" But glibc is confused, since uses 'io_context_t' to declare .\" the system call. \fIlibaio\fP のラッパー関数では \fIctx_idp\fP 引き数に別の型 @@ -87,6 +88,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/io_submit.2 b/manual/LDP_man-pages/draft/man2/io_submit.2 deleted file mode 100644 index 21e6229e..00000000 --- a/manual/LDP_man-pages/draft/man2/io_submit.2 +++ /dev/null @@ -1,89 +0,0 @@ -.\" Copyright (C) 2003 Free Software Foundation, Inc. -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" This file is distributed according to the GNU General Public License. -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI, all rights reserved. -.\" Translated Mon Mar 8 2003 by Akihiro MOTOKI -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-03-27, Akihiro MOTOKI -.\" -.TH IO_SUBMIT 2 2012\-07\-13 Linux "Linux Programmer's Manual" -.SH 名前 -io_submit \- 非同期 I/O ブロックを処理待ちキューに登録する -.SH 書式 -.nf -\fB#include \fP /* 必要な型の定義 */ - -\fBint io_submit(aio_context_t \fP\fIctx_id\fP\fB, long \fP\fInr\fP\fB, struct iocb **\fP\fIiocbpp\fP\fB);\fP -.fi - -\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 -.SH 説明 -.PP -\fBio_submit\fP() システムコールは、AIO コンテキスト \fIctx_id\fP に \fInr\fP 個 -の I/O リクエストを処理待ちとしてキューに追加する。 \fIiocbpp\fP 引き数は、 -AIO コンテキスト \fIctx_id\fP に登録される \fInr\fP 個の AIO 制御ブロックの -配列になっていなければならない。 -.SH 返り値 -成功すると、 \fBio_submit\fP() は登録した \fIiocb\fP の個数を返す (\fInr\fP が 0 の場合は 0 を返す)。 -失敗時の返り値については、「注意」の節を参照すること。 -.SH エラー -.TP -\fBEAGAIN\fP -何個かの \fIiocb\fP をキューに入れるのに必要なリソースが得られない。 -.TP -\fBEBADF\fP -先頭の \fIiocb\fP に指定されたファイルディスクリプターが無効である。 -.TP -\fBEFAULT\fP -データ構造の中に無効なデータを指しているものがある。 -.TP -\fBEINVAL\fP -\fIctx_id\fP で指定された AIO コンテキストが無効である。 \fInr\fP が 0 未満で -ある。 \fI*iocbpp[0]\fP の \fIiocb\fP が適切に初期化されていないか、 -指定された操作がその \fIiocb\fP 中のファイルディスクリプターに対して 無効 -である。 -.TP -\fBENOSYS\fP -\fBio_submit\fP() はこのアーキテクチャーでは実装されていない。 -.SH バージョン -.PP -非同期 I/O システムコールは Linux 2.5 で初めて登場した。 -.SH 準拠 -.PP -\fBio_submit\fP() は Linux 固有であり、移植を想定したプログラムで 使用すべきではない。 -.SH 注意 -.\" http://git.fedorahosted.org/git/?p=libaio.git -glibc はこのシステムコールのラッパー関数を提供していない。 -\fBsyscall\fP(2) を使ってこのシステムコールを起動することができる。 -しかし、たいていは、このシステムコールを呼び出したいのではなく、 - \fIlibaio\fP が提供している \fBio_submit\fP ラッパー関数を呼び出したい -場合がほとんどであろう。 - -.\" But glibc is confused, since uses 'io_context_t' to declare -.\" the system call. -\fIlibaio\fP のラッパー関数では \fIctx_id\fP 引き数に別の型 -(\fIio_context_t\fP) が使われることに注意すること。 -また、\fIlibaio\fP のラッパー関数は、エラーの通知が通常の C ライブラリの -慣習にしたがっておらず、エラーの場合には負のエラー番号 (エラーの節に列 -挙されている値の一つを負にしたもの) が返り値となる点にも注意すること。 -\fBsyscall\fP(2) 経由でシステムコールを起動すると、返り値は通常のエラー通 -知の慣習に したがってものとなり、エラーの場合には \-1 が返り、 \fIerrno\fP -にエラーを示す (正の) 値が設定される。 -.SH 関連項目 -.\" .SH AUTHOR -.\" Kent Yoder. -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/ioctl.2 b/manual/LDP_man-pages/draft/man2/ioctl.2 deleted file mode 100644 index f2411752..00000000 --- a/manual/LDP_man-pages/draft/man2/ioctl.2 +++ /dev/null @@ -1,111 +0,0 @@ -.\" Copyright (c) 1980, 1991 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 -.\" -.\" @(#)ioctl.2 6.4 (Berkeley) 3/10/91 -.\" -.\" Modified 1993-07-23 by Rik Faith -.\" Modified 1996-10-22 by Eric S. Raymond -.\" Modified 1999-06-25 by Rachael Munns -.\" Modified 2000-09-21 by Andries Brouwer -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997-1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Sat Aug 14 10:10:27 JST 1999 -.\" by HANATAKA Shinya -.\" Modified 2002-09-24 by Akihiro MOTOKI -.\" Updated 2005-02-24, Akihiro MOTOKI -.\" Updated 2011-08-10, TACHIBANA Akira -.\" Updated 2011-09-15, TACHIBANA Akira -.\" -.TH IOCTL 2 2014\-12\-31 Linux "Linux Programmer's Manual" -.SH 名前 -ioctl \- デバイスを制御する -.SH 書式 -\fB#include \fP -.sp -.\" POSIX says 'request' is int, but glibc has the above -.\" See https://bugzilla.kernel.org/show_bug.cgi?id=42705 -\fBint ioctl(int \fP\fIfd\fP\fB, unsigned long \fP\fIrequest\fP\fB, ...);\fP -.SH 説明 -\fBioctl\fP() 関数はスペシャルファイルを構成するデバイスのパラメーターを 操作する。特に、キャラクター型のスペシャルファイル (例えば端末 -(terminal)) の多くの動作特性を \fBioctl\fP() リクエストによって制御することができる。引き数 \fIfd\fP -はオープンされたファイルディスクリプターでなければならない。 -.PP -2 番目の引き数は、デバイス依存のリクエストコードである。 3 番目の引き数は、メモリーへの型を指定しないポインターである。 この引き数は伝統的に (C -で \fBvoid *\fP という書き方が有効になる前から) \fBchar *\fP\fIargp\fP -と表記されている。したがって、この文章でもそう名付けることとする。 -.PP -\fBioctl\fP() の \fIrequest\fP には、 その引き数が \fI入力\fP パラメーターと \fI出力\fP パラメーターのどちらであるかの区別や、 -\fIargp\fP 引き数のバイト単位のサイズ、といった情報がエンコードされている。 \fBioctl\fP() の \fIrequest\fP -を指定するためのマクロ (macro) と定義は \fI\fP ファイルにある。 -.SH 返り値 -たいていの場合、成功するとゼロが返される。 ただし、 \fBioctl\fP() リクエストの中にはパラメーターの出力に返り値を使用しているものが若干あり、 -その場合は、成功したときに非負の値が返される。 エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP 0.7i -\fBEBADF\fP -\fIfd\fP が無効なディスクリプターである。 -.TP -\fBEFAULT\fP -\fIargp\fP がアクセス不可能なメモリーを参照している。 -.TP -\fBEINVAL\fP -\fIrequest\fP または \fIargp\fP が不正である。 -.TP -\fBENOTTY\fP -\fIfd\fP がキャラクター型のスペシャルデバイスを参照していない。 -.TP -\fBENOTTY\fP -指定されたリクエストはディスクリプター \fIfd\fP が参照する種類のオブジェクトには適用することができない。 -.SH 準拠 -どれか一つの標準に対応しているわけではない。 \fBioctl\fP() の引き数、返り値、解釈は、処理対象のデバイスドライバごとに 異なる (この関数は -UNIX の ストリーム I/O モデル に きちんと適合していない操作のための便利屋として使用される)。 よく知られている \fBioctl\fP() -のリストについては \fBioctl_list\fP(2) を参照すること。 \fBioctl\fP() 関数コールは Version 7 AT&T UNIX -で登場した。 -.SH 注意 -このシステムコールを使うには、オープンされたファイルディスクリプターが 必要である。 \fBopen\fP(2) -コールはしばしば望んでいない副作用を伴うことがあるが、Linux では \fBopen\fP(2) に \fBO_NONBLOCK\fP -フラグをつけることでこの副作用を避けることができる。 -.SH 関連項目 -.\" .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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index 0b26ef6f..8cc9b507 100644 --- a/manual/LDP_man-pages/draft/man2/ioperm.2 +++ b/manual/LDP_man-pages/draft/man2/ioperm.2 @@ -46,12 +46,12 @@ .\" Updated 2007-01-07, Akihiro MOTOKI, catch up to LDP v2.43 .\" Updated 2013-05-01, Akihiro MOTOKI .\" -.TH IOPERM 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH IOPERM 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 ioperm \- ポートの入出力許可を設定する .SH 書式 \fB#include \fP /* for glibc */ -.sp +.PP \fBint ioperm(unsigned long \fP\fIfrom\fP\fB, unsigned long \fP\fInum\fP\fB, int \fP\fIturn_on\fP\fB);\fP .SH 説明 @@ -59,15 +59,15 @@ ioperm \- ポートの入出力許可を設定する ビット分の領域に対する、呼び出し元スレッドのアクセス許可ビットを設定する。 \fIturn_on\fP が 0 以外の場合、指定されたビットに対応する許可が有効になる。 \fIturn_on\fP が 0 以外の場合、呼び出し元プロセスは特権 (\fBCAP_SYS_RAWIO\fP) を持っていなければならない。 - +.PP 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) の前後でアクセス権は保存される。この機能は -非特権プログラムにポートへのアクセス権を 与えるのに使用できる。 - +.PP +Permissions are inherited by the child created by \fBfork\fP(2) (but see +NOTES). Permissions are preserved across \fBexecve\fP(2); this is useful for +giving port access permissions to unprivileged programs. +.PP このシステムコールはほとんど i386 アーキテクチャーのためだけのものである。 その他の多くのアーキテクチャーでは存在しないか、常にエラーを返す。 .SH 返り値 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 @@ -89,12 +89,14 @@ I/Oポートに限られていた。これよりも大きなアドレスのポ \fBioperm\fP() は Linux 特有の関数であり、移植を意図したプログラムで 使用してはならない。 .SH 注意 \fI/proc/ioports\fP ファイルには、現在このシステムに割り当てられている I/O ポートが表示される。 - +.PP +Before Linux 2.4, permissions were not inherited by a child created by +\fBfork\fP(2). +.PP glibc2 には \fI\fP と \fI\fP の両方に \fBioperm\fP() のプロトタイプがある。 後者は i386 のみで利用可能なので、使用すべきではない。 .SH 関連項目 \fBiopl\fP(2), \fBoutb\fP(2), \fBcapabilities\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 6c86aa09..00000000 --- a/manual/LDP_man-pages/draft/man2/iopl.2 +++ /dev/null @@ -1,92 +0,0 @@ -.\" 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 -.\" -.\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond -.\" Modified Fri Nov 27 14:50:36 CET 1998 by Andries Brouwer -.\" Modified, 27 May 2004, Michael Kerrisk -.\" Added notes on capability requirements -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HORIMOTO Masafumi -.\" all rights reserved. -.\" Translated 1997-09-29, HORIMOTO Masafumi -.\" Modified 1999-04-03, HANATAKA Shinya -.\" Updated 2003-10-12, Kentaro Shirakata -.\" Updated 2005-02-24, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH IOPL 2 2013\-03\-15 Linux "Linux Programmer's Manual" -.SH 名前 -iopl \- I/O 特権レベルを変更する -.SH 書式 -\fB#include \fP -.sp -\fBint iopl(int \fP\fIlevel\fP\fB);\fP -.SH 説明 -\fBiopl\fP() は呼び出し元のプロセスの I/O 特権レベルを \fIlevel\fP の下位 2 ビットで指定した値に変更する。 - -この関数は 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 -呼び出し元プロセスに \fBiopl\fP() を呼び出すのに十分な権限がなかった。 I/O 特権レベルを現在の値より上げるには -\fBCAP_SYS_RAWIO\fP ケーパビリティが必要である。 -.SH 準拠 -\fBipc\fP() は Linux 特有であり、 移植を意図したプログラムでは 使用してはいけない。 -.SH 注意 -libc5 ではシステムコールとして扱い \fI\fP にプロトタイプが存在している。 glibc1 -にはプロトタイプは存在していない。 glibc2 は \fI\fP と \fI\fP -の両方にプロトタイプを持っている。 後者は i386 のみで利用可能なので、使用すべきではない。 -.SH 関連項目 -\fBioperm\fP(2), \fBoutb\fP(2), \fBcapabilities\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index 7bbb3706..cc75e763 100644 --- a/manual/LDP_man-pages/draft/man2/ioprio_set.2 +++ b/manual/LDP_man-pages/draft/man2/ioprio_set.2 @@ -33,7 +33,7 @@ .\" Updated 2008-08-06, Akihiro MOTOKI, LDP v3.05 .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH IOPRIO_SET 2 2013\-02\-12 Linux "Linux Programmer's Manual" +.TH IOPRIO_SET 2 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 ioprio_get, ioprio_set \- I/O スケジューリングクラスと優先度の設定/取得 .SH 書式 @@ -41,12 +41,12 @@ ioprio_get, ioprio_set \- I/O スケジューリングクラスと優先度の \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 - +.PP \fI注意\fP: これらのシステムコールには glibc ラッパー関数は存在しない。 「注意」の節を参照。 .SH 説明 -システムコール \fBioprio_get\fP() / \fBioprio_set\fP() は、(1つ以上の) スレッドの I/O スケジューリングクラスと -優先度の取得/設定を行う。 - +The \fBioprio_get\fP() and \fBioprio_set\fP() system calls get and set the I/O +scheduling class and priority of one or more threads. +.PP \fIwhich\fP と \fIwho\fP 引き数でシステムコールの操作対象となるスレッドを指示する。 \fIwhich\fP 引き数は、 \fIwho\fP をどのように解釈するかを決めるもので、以下のいずれか一つを指定する。 .TP @@ -68,7 +68,7 @@ ioprio_get, ioprio_set \- I/O スケジューリングクラスと優先度の 優先度が高いとは、より高い優先度クラスに属している (\fBIOPRIO_CLASS_RT\fP が最も高い優先度クラスで、 \fBIOPRIO_CLASS_IDLE\fP が最も低い)、もしくは 同じ優先度クラスに属しているが優先度レベルが高い (優先度番号が小さい方が優先度レベルが高いことを意味する)、 ということである。 - +.PP \fBioprio_set\fP() に渡す \fIioprio\fP 引き数は、対象となるプロセスに割り当てるスケジューリングクラスと 優先度の両方を指定するビットマスクである。 \fIioprio\fP の値を組み立てたり解釈するのに、以下のマクロが利用できる。 .TP @@ -83,8 +83,9 @@ ioprio_get, ioprio_set \- I/O スケジューリングクラスと優先度の \fBIOPRIO_PRIO_DATA(\fP\fImask\fP\fB)\fP \fImask\fP (\fIioprio\fP 値) を与えると、このマクロは優先度 (\fIdata\fP) 要素を返す。 .PP -スケジューリングクラスと優先度に関する詳しい情報は、 「備考」の節を参照のこと。 - +See the NOTES section for more information on scheduling classes and +priorities, as well as the meaning of specifying \fIioprio\fP as 0. +.PP I/O 優先度は読み出しと同期書き込み (\fBO_DIRECT\fP, \fBO_SYNC\fP) に対応している。 I/O 優先度は非同期書き込みには対応していない。なぜなら、 非同期書き込みはメモリー書き換えを行うプログラムの動作 (context) とは 関係なく発行され、そのためプログラム単位の優先度は適用されないから である。 @@ -111,51 +112,65 @@ I/O 優先度は読み出しと同期書き込み (\fBO_DIRECT\fP, \fBO_SYNC\fP) これらのシステムコールは Linux 独自である。 .SH 注意 glibc はこれらのシステムコールに対するラッパー関数を提供していない。 \fBsyscall\fP(2) を使って呼び出すこと。 - +.PP 複数のプロセスやスレッドが一つの I/O コンテキストを共有する場合がある。 \fBclone\fP(2) を \fBCLONE_IO\fP フラグ付きで呼び出した場合にはこの状況となる。 しかしながら、デフォルトでは、一つのプロセスの個々のスレッドは I/O コンテキストを共有「しない」。 したがって、 プロセス内のすべてのスレッドの I/O 優先度を変更したい場合には、 それぞれのスレッドに対して \fBioprio_set\fP() を呼び出す必要がある。 この操作を行うのに必要となるスレッド ID には \fBgettid\fP(2) か \fBclone\fP(2) が返す値を指定する。 - +.PP これらのシステムコールは、I/O 優先度に対応した I/O スケジューラと 組み合わせて使用された場合にのみ効果を持つ。 カーネル 2.6.17 では、この条件を満たすスケジューラは Completely Fair Queuing (CFQ) I/O スケジューラだけである。 +.PP +.\" commit 8ec680e4c3ec818efd1652f15199ed1c216ab550 +If no I/O scheduler has been set for a thread, then by default the I/O +priority will follow the CPU nice value (\fBsetpriority\fP(2)). In Linux +kernels before version 2.6.24, once an I/O priority had been set using +\fBioprio_set\fP(), there was no way to reset the I/O scheduling behavior to +the default. Since Linux 2.6.24, specifying \fIioprio\fP as 0 can be used to +reset to the default I/O scheduling behavior. .SS "I/O スケジューラの選択" -I/O スケジューラの選択はデバイス単位に行われ、その選択は スペシャルファイル -\fI/sys/block//queue/scheduler\fP 経由で行われる。 - +I/O schedulers are selected on a per\-device basis via the special file +\fI/sys/block//queue/scheduler\fP. +.PP 現在の I/O スケジューラは \fI/sys\fP ファイルシステム経由で参照できる。例えば、以下のコマンドを実行すると、 現在カーネルでロードされているスケジューラの全リストが表示される。 -.sp -.RS -.nf -$\fB cat /sys/block/hda/queue/scheduler\fP +.PP +.in +4n +.EX +$\fB cat /sys/block/sda/queue/scheduler\fP noop anticipatory deadline [cfq] -.fi -.RE -.sp -括弧で囲まれたスケジューラがそのデバイス (上の例では \fIhda\fP) について実際に使用されているスケジューラである。 -別のスケジューラを設定するには、このファイルに新しいスケジューラ名を 書き込めばよい。例えば、以下のコマンドを実行すると、デバイス \fIhda\fP -のスケジューラとして \fIcfq\fP が設定される。 -.sp -.RS -.nf +.EE +.in +.PP +The scheduler surrounded by brackets is the one actually in use for the +device (\fIsda\fP in the example). Setting another scheduler is done by +writing the name of the new scheduler to this file. For example, the +following command will set the scheduler for the \fIsda\fP device to \fIcfq\fP: +.PP +.in +4n +.EX $\fB su\fP Password: -#\fB echo cfq > /sys/block/hda/queue/scheduler\fP -.fi -.RE +#\fB echo cfq > /sys/block/sda/queue/scheduler\fP +.EE +.in +.\" .SS "Completely Fair Queuing (CFQ) I/O スケジューラ" -バージョン 3 (別名 CFQ Time Sliced) 以降、 CPU スケジューリングと同様の I/O nice レベルが CFQ -に実装されている。 これらの nice レベルは 3つのスケジューリングクラスに分類でき、 各スケジューリングクラスにつき -1つ以上の優先度レベルが定義されている。 +Since version 3 (also known as CFQ Time Sliced), CFQ implements I/O nice +levels similar to those of CPU scheduling. These nice levels are grouped +into three scheduling classes, each one containing one or more priority +levels: .TP \fBIOPRIO_CLASS_RT\fP (1) -これはリアルタイム I/O クラスである。 このスケジューリングクラスには他のクラスよりも高い優先度が与えられる。 -このクラスのプロセスには、常にディスクへのアクセスが優先して 割り当てられる。そのため、この I/O クラスを使う際には、 たった一つの リアルタイム -I/O クラスのプロセスにより システム全体のディスクアクセスができなくなってしまうことがある という点に、注意を払う必要がある。 このクラスには、8 -段階の class data (優先度レベル) がある。 この値は、そのプロセスが 1回のディスクアクセスにどれだけの -時間が必要かを正確に決めるためのものである。 最高のリアルタイム優先度レベルは 0 で、最低は 7 である。 -将来的には、優先度レベルは、希望するデータレートを渡すなど、 より直接的に性能条件を反映できるように変更されるかもしれない。 +This is the real\-time I/O class. This scheduling class is given higher +priority than any other class: processes from this class are given first +access to the disk every time. Thus, this I/O class needs to be used with +some care: one I/O real\-time process can starve the entire system. Within +the real\-time class, there are 8 levels of class data (priority) that +determine exactly how much time this process needs the disk for on each +service. The highest real\-time priority level is 0; the lowest is 7. In +the future, this might change to be more directly mappable to performance, +by passing in a desired data rate instead. .TP \fBIOPRIO_CLASS_BE\fP (2) これは ベストエフォートスケジューリングクラスである。 このクラスは、特定の I/O 優先度を設定していないプロセスの デフォルト値である。 class @@ -164,18 +179,23 @@ nice 値 (\fBgetpriority\fP(2) 参照) と同様のものである。 優先度 他のプロセスとの相対的な優先度を決定する。 優先度レベルの値の範囲は 0 (最高) から 7 (最低) である。 .TP \fBIOPRIO_CLASS_IDLE\fP (3) -これは idle スケジューリングクラスである。 このレベルで動作するプロセスは他にディスクアクセスをしようとする プロセスがない場合にのみ I/O -時間を取得する。 idle クラスには class data (優先度) は用意されていない。 プロセスにこの優先度を割り当てる際には注意が必要である。 -なぜなら、優先度の高いプロセスが常にディスクにアクセスしている場合には ディスクにアクセスできなくなる可能性があるからだ。 +This is the idle scheduling class. Processes running at this level get I/O +time only when no one else needs the disk. The idle class has no class +data. Attention is required when assigning this priority class to a +process, since it may become starved if higher priority processes are +constantly accessing the disk. .PP -CFQ I/O スケジューラの更なる情報とサンプルプログラムについては \fIDocumentation/block/ioprio.txt\fP -を参照のこと。 +Refer to the kernel source file \fIDocumentation/block/ioprio.txt\fP for more +information on the CFQ I/O Scheduler and an example program. .SS "I/O 優先度の設定に必要な許可" -プロセスの優先度を変更する許可が得られるかどうかは 以下の 2つの条件に基いて決定される。 +Permission to change a process's priority is granted or denied based on two +criteria: .TP \fBプロセスの所有権\fP -非特権プロセスは、プロセスの実 UID が呼び出し元プロセスの実 UID もしくは 実効 UID と一致するプロセスの I/O 優先度のみを設定できる。 -\fBCAP_SYS_NICE\fP ケーパビリティを持つプロセスは、どのプロセスの優先度でも変更できる。 +An unprivileged process may set the I/O priority only for a process whose +real UID matches the real or effective UID of the calling process. A +process which has the \fBCAP_SYS_NICE\fP capability can change the priority of +any process. .TP \fBどの優先度に設定しようとしているか\fP 非常に高い優先度 (\fBIOPRIO_CLASS_RT\fP) を設定しようとする場合、 \fBCAP_SYS_ADMIN\fP ケーパビリティが必要である。 @@ -191,10 +211,10 @@ CFQ I/O スケジューラの更なる情報とサンプルプログラムにつ glibc は、このページに記載された関数プロトタイプやマクロを定義する 適切なヘッダーファイルをまだ提供していない。 必要な定義については \fIlinux/ioprio.h\fP を見ればよい。 .SH 関連項目 -\fBionice\fP(1), \fBgetpriority\fP(2), \fBopen\fP(2), \fBcapabilities\fP(7) - +\fBionice\fP(1), \fBgetpriority\fP(2), \fBopen\fP(2), \fBcapabilities\fP(7), +\fBcgroups\fP(7) +.PP Linux カーネルソース内の \fIDocumentation/block/ioprio.txt\fP .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/ipc.2 b/manual/LDP_man-pages/draft/man2/ipc.2 deleted file mode 100644 index 30785a80..00000000 --- a/manual/LDP_man-pages/draft/man2/ipc.2 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Copyright (c) 1995 Michael Chastain (mec@shell.portal.com), 15 April 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Sun Feb 23 16:13:46 JST 1997 -.\" by HANATAKA Shinya -.\" Updated 2007-09-04, Akihiro MOTOKI , LDP v2.64 -.\" -.TH IPC 2 2012\-10\-16 Linux "Linux Programmer's Manual" -.SH 名前 -ipc \- System V IPC システムコール -.SH 書式 -.nf -\fBint ipc(unsigned int \fP\fIcall\fP\fB, int \fP\fIfirst\fP\fB, int \fP\fIsecond\fP\fB, int \fP\fIthird\fP\fB,\fP -\fB void *\fP\fIptr\fP\fB, long \fP\fIfifth\fP\fB);\fP -.fi -.SH 説明 -\fBipc\fP() は メッセージ、セマフォー、共有メモリーに関する System\ V IPC コールの 共通のカーネルへのエントリーポイントである。 -\fIcall\fP はどの IPC 関数を呼び出すかを決め; 他の引き数は適切なコールへと渡される。 -.PP -ユーザープログラムは通常の名前で適切な関数を呼び出すべきである。 標準ライブラリの実装者やカーネルハッカーのみが \fBipc\fP() -について知る必要がある。 -.SH 準拠 -\fBipc\fP() は Linux 特有であり、 移植を意図したプログラムでは 使用してはいけない。 -.SH 注意 -いくつかのアーキテクチャー\(emfor 例えば x86\-64 や ARM\(emでは、システムコール \fBipc\fP() -が存在しない。実際には、その代わりに \fBmsgctl\fP(2), \fBsemctl\fP(2), \fBshmctl\fP(2) -などが独立したシステムコールとして実装されている。 -.SH 関連項目 -\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) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/kcmp.2 b/manual/LDP_man-pages/draft/man2/kcmp.2 deleted file mode 100644 index af73c945..00000000 --- a/manual/LDP_man-pages/draft/man2/kcmp.2 +++ /dev/null @@ -1,135 +0,0 @@ -.\" Copyright (C) 2012, Cyrill Gorcunov -.\" and Copyright (C) 2012, 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 -.\" -.\" Kernel commit d97b46a64674a267bc41c9e16132ee2a98c3347d -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2013 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2013-08-21, Akihiro MOTOKI -.\" -.TH KCMP 2 2013\-12\-08 Linux "Linux Programmer's Manual" -.SH 名前 -kcmp \- 二つのプロセスが同じカーネルリソースを共有しているかを比較する -.SH 書式 -.nf -\fB#include \fP - -\fBint kcmp(pid_t \fP\fIpid1\fP\fB, pid_t \fP\fIpid2\fP\fB, int \fP\fItype\fP\fB,\fP -\fB unsigned long \fP\fIidx1\fP\fB, unsigned long \fP\fIidx2\fP\fB);\fP -.fi - -\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 -.SH 説明 -システムコール \fBkcmp\fP() を使うと、 ID が \fIpid1\fP と \fIpid2\fP の二つのプロセスが、 -仮想メモリーやファイルディスクリプターなどの、 同じカーネルリソースを共有しているかどうかを検査できる。 - -\fItype\fP 引き数は 2 つのプロセス間でどのリソースを比較するかを指定する。 以下のいずれかの値を指定する。 -.TP -\fBKCMP_FILE\fP -プロセス \fIpid1\fP のファイルディスクリプター \fIidx1\fP が、 プロセス \fIpid2\fP のファイルディスクリプター \fIidx2\fP -と同じオープンファイル記述 (open file description) を参照しているかを検査する。 -.TP -\fBKCMP_FILES\fP -二つのプロセスが同じオープンファイル記述の集合を共有しているかを検査する。 引き数 \fIidx1\fP と \fIidx2\fP は無視される。 -.TP -\fBKCMP_FS\fP -二つのプロセスが同じファイルシステム情報 (すなわち、ファイルのモード作成マスク、作業ディレクトリ、ファイルシステムのルート) -を共有しているかを検査する。 引き数 \fIidx1\fP と \fIidx2\fP は無視される。 -.TP -\fBKCMP_IO\fP -二つのプロセスが I/O コンテキストを共有しているかを検査する。 引き数 \fIidx1\fP と \fIidx2\fP は無視される。 -.TP -\fBKCMP_SIGHAND\fP -二つのプロセスがシグナル配送 (disposition) テーブルを共有しているかを検査する。 引き数 \fIidx1\fP と \fIidx2\fP -は無視される。 -.TP -\fBKCMP_SYSVSEM\fP -二つのプロセスが同じ System\ V セマフォ undo 操作のリストを共有しているかを検査する。 引き数 \fIidx1\fP と \fIidx2\fP -は無視される。 -.TP -\fBKCMP_VM\fP -二つのプロセスが同じアドレス空間を共有しているかを検査する。 引き数 \fIidx1\fP と \fIidx2\fP は無視される。 -.PP -\fBkcmp\fP() には、タスクが実行されている場合に起こり得る誤判定 (false positive) に関する保護はない。 ということは、 -意味のある結果を得るためには、 このシステムコールで検査を行う前に、 \fBSIGSTOP\fP を送信してタスクを停止すべきだということだ -(\fBsignal\fP(7) 参照)。 -.SH 返り値 -\fBkcmp\fP() の呼び出しが成功した場合の返り値は、単にカーネルポインターを数値で比較した結果となる -(カーネルはリソースを比較する際、リソースのメモリーアドレスを使用する)。 - -これを説明するには、例を見るのが一番簡単である。 \fIv1\fP と \fIv2\fP を適切なリソースのアドレスとすると、 返り値は以下のいずれか一つとなる。 -.RS 4 -.IP 0 4 -\fIv1\fP は \fIv2\fP と等しい。言い換えれば、二つのプロセスはそのリソースを共有している。 -.IP 1 -\fIv1\fP は \fIv2\fP より小さい。 -.IP 2 -\fIv1\fP は \fIv2\fP より大きい。 -.IP 3 -\fIv1\fP は \fIv2\fP と等しくないが、順序情報がない。 -.RE -.PP -エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 - -\fBkcmp\fP() は、ソートに適した値を返すように設計された。 大量のファイルディスクリプターを比較する必要がある場合に、特に役に立つ。 -.SH エラー -.TP -\fBEBADF\fP -\fItype\fP が \fBKCMP_FILE\fP で、かつ \fIfd1\fP か \fIfd2\fP がオープンファイル記述でない。 -.TP -\fBEINVAL\fP -\fItype\fP が無効である。 -.TP -\fBEPERM\fP -プロセスのリソースを検査するのに十分な許可がない。 自分が所有していないプロセスを検査するためには \fBCAP_SYS_PTRACE\fP -ケーパビリティが必要である。 -.TP -\fBESRCH\fP -プロセス \fIpid1\fP か \fIpid2\fP が存在しない。 -.SH バージョン -\fBkcmp\fP() システムコールは Linux 3.5 で初めて登場した。 -.SH 準拠 -\fBkcmp\fP() は Linux 特有であり、 移植を考慮したプログラムでは使用すべきではない。 -.SH 注意 -glibc はこのシステムコールに対するラッパー関数を提供していない。 \fBsyscall\fP(2) を使って呼び出すこと。 - -このシステムコールが利用できるのは、 カーネルの \fBCONFIG_CHECKPOINT_RESTORE\fP オプションが有効になっている場合だけである。 -このシステムコールの主な用途は、 ユーザー空間でのチェックポイント/リストア (checkpoint/restore in user space; -CRIU) 機能である。 このシステムコールを使わないとすると、 \fBproc\fP(5) ファイルシステム経由で必要なプロセス情報を公開することになるが、 -これはセキュリティ上の理由から不適切とみなされた。 - -このページで参照されている共有リソースに関する背景についての情報は \fBclone\fP(2) を参照のこと。 -.SH 関連項目 -\fBclone\fP(2), \fBunshare\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/keyctl.2 b/manual/LDP_man-pages/draft/man2/keyctl.2 deleted file mode 100644 index c142c555..00000000 --- a/manual/LDP_man-pages/draft/man2/keyctl.2 +++ /dev/null @@ -1,139 +0,0 @@ -.\" Copyright (C) 2006 Red Hat, Inc. All Rights Reserved. -.\" Written by David Howells (dhowells@redhat.com) -.\" -.\" %%%LICENSE_START(GPLv2+_SW_ONEPARA) -.\" 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. -.\" %%%LICENSE_END -.\" -.\" FIXME Document KEYCTL_REJECT (new in 2.6.39) -.\" commit fdd1b94581782a2ddf9124414e5b7a5f48ce2f9c -.\" Author: David Howells -.\" Documentation/security/keys.txt -.\" FIXME Document KEYCTL_INSTANTIATE_IOV (new in 2.6.39) -.\" commit ee009e4a0d4555ed522a631bae9896399674f064 -.\" Author: David Howells -.\" Documentation/security/keys.txt -.\" FIXME Document KEYCTL_INVALIDATE (new in 3.5) -.\" commit fd75815f727f157a05f4c96b5294a4617c0557da -.\" Author: David Howells -.\" Documentation/security/keys.txt -.\" FIXME Document KEYCTL_GET_PERSISTENT (new in 3.13) -.\" commit f36f8c75ae2e7d4da34f4c908cebdb4aa42c977e -.\" Author: David Howells -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.TH KEYCTL 2 2014\-01\-22 Linux "Linux Key Management Calls" -.SH 名前 -keyctl \- カーネルの鍵管理機能を操作する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBlong keyctl(int \fP\fIcmd\fP\fB, ...);\fP -.fi -.SH 説明 -\fBkeyctl\fP() has a number of functions available: -.TP -\fBKEYCTL_GET_KEYRING_ID\fP -鍵リングの ID を取得する。 -.TP -\fBKEYCTL_JOIN_SESSION_KEYRING\fP -Join or start named session keyring. -.TP -\fBKEYCTL_UPDATE\fP -鍵を更新する。 -.TP -\fBKEYCTL_REVOKE\fP -鍵を廃止する。 -.TP -\fBKEYCTL_CHOWN\fP -鍵の所有者を設定する。 -.TP -\fBKEYCTL_SETPERM\fP -鍵のアクセス許可を設定する。 -.TP -\fBKEYCTL_DESCRIBE\fP -Describe a key. -.TP -\fBKEYCTL_CLEAR\fP -鍵リングの内容をクリアする。 -.TP -\fBKEYCTL_LINK\fP -鍵を鍵リングに結びつける。 -.TP -\fBKEYCTL_UNLINK\fP -鍵の鍵リングへの結びつけを取り消す。 -.TP -\fBKEYCTL_SEARCH\fP -鍵リングから鍵を検索する。 -.TP -\fBKEYCTL_READ\fP -鍵や鍵リングの内容を読み出す。 -.TP -\fBKEYCTL_INSTANTIATE\fP -Instantiate a partially constructed key. -.TP -\fBKEYCTL_NEGATE\fP -Negate a partially constructed key. -.TP -\fBKEYCTL_SET_REQKEY_KEYRING\fP -Set default request\-key keyring. -.TP -\fBKEYCTL_SET_TIMEOUT\fP -鍵にタイムアウトを設定する。 -.TP -\fBKEYCTL_ASSUME_AUTHORITY\fP -Assume authority to instantiate key. -.P -These are wrapped by \fBlibkeyutils\fP into individual functions to permit -compiler the compiler to check types. See the \fBSee Also\fP section at the -bottom. -.SH 返り値 -成功すると \fBkeyctl\fP() は見つかった鍵のシリアル番号を返す。 エラーの場合、 値 \-1 が返され、 \fIerrno\fP -にエラーを示す値が設定される。 -.SH エラー -.TP -\fBEACCES\fP -鍵の操作が許可されていなかった。 -.TP -\fBEDQUOT\fP -鍵を作成するか、 鍵を鍵リングに結びつけると、 呼び出し元ユーザーの鍵のクォータを超過してしまう。 -.TP -\fBEKEYEXPIRED\fP -期限切れの鍵が見つかったか指定された。 -.TP -\fBEKEYREJECTED\fP -除外 (rejected) された鍵が見つかったか指定された。 -.TP -\fBEKEYREVOKED\fP -廃止された鍵が見つかったか指定された。 -.TP -\fBENOKEY\fP -一致する鍵が見つからなかったか、 無効な鍵が指定された。 -.SH LINKING -これは Linux のシステムコールだが、 \fIlibc\fP には存在せず、 代わりに \fIlibkeyutils\fP に存在する。 リンクする際には、 -リンカーに \fB\-lkeyutils\fP を指定する必要がある。 -.SH 関連項目 -.ad l -.nh -\fBkeyctl\fP(1), \fBadd_key\fP(2), \fBrequest_key\fP(2), \fBkeyctl_set_timeout\fP(3), -\fBkeyctl_chown\fP(3), \fBkeyctl_clear\fP(3), \fBkeyctl_describe\fP(3), -\fBkeyctl_describe_alloc\fP(3), \fBkeyctl_get_keyring_ID\fP(3), -\fBkeyctl_instantiate\fP(3), \fBkeyctl_join_session_keyring\fP(3), -\fBkeyctl_link\fP(3), \fBkeyctl_negate\fP(3), \fBkeyctl_revoke\fP(3), -\fBkeyctl_search\fP(3), \fBkeyctl_setperm\fP(3), \fBkeyctl_set_reqkey_keyring\fP(3), -\fBkeyctl_set_timeout\fP(3), \fBkeyctl_read\fP(3), \fBkeyctl_read_alloc\fP(3), -\fBkeyctl_unlink\fP(3), \fBkeyctl_update\fP(3), \fBrequest\-key\fP(8) - -カーネルのソースファイル \fIDocumentation/security/keys.txt\fP -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/kill.2 b/manual/LDP_man-pages/draft/man2/kill.2 deleted file mode 100644 index 7b4763f6..00000000 --- a/manual/LDP_man-pages/draft/man2/kill.2 +++ /dev/null @@ -1,145 +0,0 @@ -.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 -.\" -.\" %%%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 -.\" Modified by Thomas Koenig -.\" Modified 1993-07-23 by Rik Faith -.\" Modified 1993-07-25 by Rik Faith -.\" Modified 1995-11-01 by Michael Haardt -.\" -.\" Modified 1996-04-14 by Andries Brouwer -.\" [added some polishing contributed by Mike Battersby ] -.\" Modified 1996-07-21 by Andries Brouwer -.\" Modified 1997-01-17 by Andries Brouwer -.\" Modified 2001-12-18 by Andries Brouwer -.\" Modified 2002-07-24 by Michael Kerrisk -.\" Added note on historical rules enforced when an unprivileged process -.\" sends a signal. -.\" Modified 2004-06-16 by Michael Kerrisk -.\" Added note on CAP_KILL -.\" Modified 2004-06-24 by aeb -.\" Modified, 2004-11-30, after idea from emmanuel.colbus@ensimag.imag.fr -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyuki Tanisako -.\" all rights reserved. -.\" Translated 1997-05-17, Kazuyuki Tanisako -.\" Modified 1997-05-27, Kazuyuki Tanisako -.\" Modified 1998-02-05, Kazuyuki Tanisako -.\" Updated 2001-12-27, Kentaro Shirakata -.\" Updated 2002-01-03, Kentaro Shirakata -.\" Updated 2002-09-27, Kentaro Shirakata -.\" Updated 2005-02-27, Akihiro MOTOKI -.\" Updated 2005-12-05, Akihiro MOTOKI, Catch up to LDP man-pages 2.16 -.\" Updated 2008-08-06, Akihiro MOTOKI, LDP v3.05 -.\" -.TH KILL 2 2013\-09\-17 Linux "Linux Programmer's Manual" -.SH 名前 -kill \- プロセスにシグナルを送る -.SH 書式 -.nf -\fB#include \fP -.br -\fB#include \fP -.sp -\fBint kill(pid_t \fP\fIpid\fP\fB, int \fP\fIsig\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBkill\fP(): _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE -.ad b -.SH 説明 -システムコールの \fBkill\fP() は、任意のプロセスグループもしくはプロセスにシグナルを 送るのに使われる。 -.PP -\fIpid\fP に正の値を指定した場合、シグナル \fIsig\fP が \fIpid\fP で指定された ID を持つプロセスに送られる。 -.PP -\fIpid\fP に 0 を指定した場合、 呼び出し元のプロセスのプロセスグループに属するすべてのプロセスに \fIsig\fP で指定したシグナルが送られる。 -.PP -\fIpid\fP に \-1 を指定した場合、 \fIsig\fP で指定したシグナルが、 呼び出し元のプロセスがシグナルを送る許可を持つ全てのプロセスに -送られる。但し、プロセス番号 1 (\fIinit\fP) へはシグナルは送られない。 以下の関連部分も参照のこと。 -.PP -\fIpid\fP に \-1 より小さな値を指定した場合、 ID が \fI\-pid\fP のプロセスグループに属するすべてのプロセスに \fIsig\fP -で指定したシグナルが送られる。 -.PP -\fIsig\fP に 0 を指定した場合、シグナルは送られないが、 エラーのチェックは行われる。これを使って、プロセス ID や プロセスグループ ID -の存在確認を行うことができる。 - -プロセスがシグナルを送信する許可を持つためには、 プロセスが特権 (Linux では \fBCAP_KILL\fP ケーパビリティ (capability)) -を持つか、 送信元プロセスの実ユーザー ID または実効ユーザー ID が 送信先プロセスの実 set\-user\-ID または保存 -set\-user\-ID と 等しくなければならない。 \fBSIGCONT\fP の場合、送信プロセスと受信プロセスが -同じセッションに属していれば十分である。 (過去には、 ルールは違っていた; 「注意」の節を参照。) -.SH 返り値 -成功した場合 (少なくとも一つのシグナルが送信された場合)、 0 が返される。エラーの場合 \-1 が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEINVAL\fP -無効なシグナルを指定した。 -.TP -\fBEPERM\fP -プロセスが、受信するプロセスのいずれに対しても シグナルを送る許可を持っていない。 -.TP -\fBESRCH\fP -指定したプロセスまたはプロセスグループが存在しなかった。 ゾンビプロセスは存在するプロセスとしてみなされる。 -ゾンビプロセスとはすでに処理は終了しているが、親プロセスによる \fBwait\fP() 処理が行われていないプロセスのことである。 -.SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001. -.SH 注意 -プロセス番号 1 の \fIinit\fP プロセスに送ることができるシグナルは、 \fIinit\fP が明示的にシグナルハンドラーを設定したシグナルだけである。 -こうなっているのは、誤ってシステムをダウンさせないようにするためである。 -.LP -POSIX.1\-2001 では、 \fIkill(\-1,sig)\fP が 呼び出し元のプロセスがシグナルを送ることが出来るプロセス全てに \fIsig\fP -を送ることを要求している。 但し、システム実装時に定められたシステムプロセスは シグナルの送信対象から除外される。 Linux -では、プロセスが自分自身にシグナルを送れるようになっているが、 Linux の \fIkill(\-1,sig)\fP -は呼び出し元のプロセスにはシグナルを送らない。 -.LP -POSIX.1\-2001 では以下の動作になることを要求している。 自分自身にシグナルを送ると、シグナルを送ったスレッドがそのシグナルをブロック -しておらず、他のどのスレッドもそのシグナルを受ける状態にもなく \fBsigwait\fP(3) でそのシグナルを待ってもいない場合、 \fBkill\fP() -が返る前に少なくとも一つのブロックされていない シグナルがシグナルを送ったスレッドに配送されなければならない。 -.SS "Linux での注意" -.\" In the 0.* kernels things chopped and changed quite -.\" a bit - MTK, 24 Jul 02 -Linux では、特権のないプロセスが他のプロセスにシグナルを送信するために必要な権限についてのルールが、カーネルバージョンにより違っている。 カーネル -1.0 から 1.2.2 では、送信側の実効ユーザー ID が送信対象の実効ユーザー ID と一致するか、 送信側の実ユーザー ID -が送信対象の実ユーザー ID と一致すれば、 シグナルを送信できた。 カーネル 1.2.3 から 1.3.77では、送信側の実効ユーザー ID -が送信対象の実ユーザー ID か実効ユーザー ID のいずれかと一致すればシグナルを送信できた。 現在のルールは、POSIX.1\-2001 -に準拠しており、カーネル 1.3.78 以降で 適用されている。 -.SH バグ -バージョン 2.6.7 以前の 2.6 系のカーネルには、 プロセスグループにシグナルを送ったときに、 呼び出し元のプロセスがプロセスグループの -(全メンバーではなく) 一部のメンバーに対してのみシグナルを送る許可を持っていない場合に、 \fBkill\fP() がエラー \fBEPERM\fP -で失敗するというバグがある。 このエラーが返るにもかかわらず、そのシグナルは呼び出し元が シグナルを送る許可を持つ全てのプロセスへ送られる。 -.SH 関連項目 -\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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%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 index 25a355ad..7661c473 100644 --- a/manual/LDP_man-pages/draft/man2/link.2 +++ b/manual/LDP_man-pages/draft/man2/link.2 @@ -45,33 +45,33 @@ .\" Updated 2008-09-07, Akihiro MOTOKI , LDP v3.08 .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH LINK 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH LINK 2 2020\-12\-21 Linux "Linux Programmer's Manual" .SH 名前 link, linkat \- ファイルの新しい名前を作成する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint link(const char *\fP\fIoldpath\fP\fB, const char *\fP\fInewpath\fP\fB);\fP -.sp +.PP \fB#include \fP/* AT_* 定数の定義 */ \fB#include \fP -.sp +.PP \fBint linkat(int \fP\fIolddirfd\fP\fB, const char *\fP\fIoldpath\fP\fB,\fP \fB int \fP\fInewdirfd\fP\fB, const char *\fP\fInewpath\fP\fB, int \fP\fIflags\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBlinkat\fP(): .PD 0 .ad l .RS 4 .TP 4 glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L +_POSIX_C_SOURCE\ >=\ 200809L .TP glibc 2.10 より前: _ATFILE_SOURCE @@ -80,50 +80,52 @@ _ATFILE_SOURCE .PD .SH 説明 \fBlink\fP() は存在するファイルへの新しいリンク (link) (ハードリンク (hard link) ともいう) を作成する。 - +.PP \fInewpath\fP が存在する場合には、上書きは\fIされない\fP。 - +.PP この新しい名前は全ての操作において古い名前と完全に同じように使用される; 両方の名前は同じファイルを参照しており (それで同じ許可 (permission) や所有者 (ownership) となるので)、 どちらの名前が本来のものであるか判別できない。 .SS linkat() \fBlinkat\fP() システムコールは \fBlink\fP() と全く同様に動作するが、以下で説明する点が異なる。 - +.PP \fIoldpath\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fIolddirfd\fP が参照するディレクトリに対する相対パスと解釈される (\fBlink\fP(2) に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。 - +.PP \fIoldpath\fP で指定されたパス名が相対パスで、 \fIolddirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBlink\fP(2) と同様に) \fIoldpath\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 - +.PP \fIoldpath\fP で指定されたパス名が絶対パスの場合、 \fIolddirfd\fP は無視される。 - +.PP \fInewpath\fP の解釈は \fIoldpath\fP と同じである。 相対パスのパス名がファイルディスクリプター \fInewdirfd\fP が参照するディレクトリと解釈される点だけが異なる。 - +.PP 以下の値のビット単位の論理和を \fIflags\fP に指定できる。 .TP \fBAT_EMPTY_PATH\fP (Linux 2.6.39 以降) .\" commit 11a7b371b64ef39fc5fb1b6f2218eef7c4d035e3 .\" Before glibc 2.16, defining _ATFILE_SOURCE sufficed -\fIoldpath\fP が空文字列の場合、 \fIolddirfd\fP が参照するファイルへのリンクを作成する (\fIolddirfd\fP は -\fBopen\fP(2) の \fBO_PATH\fP フラグを使って取得する)。 この場合、 \fIolddirfd\fP -はディレクトリ以外の任意の型のファイルを参照することができる。 一般的には、 ファイルのリンクカウントが 0 の場合は、この操作は成功しない (ただし、 -\fBO_TMPFILE\fP が指定され \fBO_EXCL\fP を指定せずに作成されたファイルは例外である)。 このフラグを使用するためには、 呼び出し元は -\fBCAP_DAC_READ_SEARCH\fP ケーパビリティを持っていなければならない。 このフラグは Linux 固有で、 この定義を得るには -\fB_GNU_SOURCE\fP を定義すること。 +If \fIoldpath\fP is an empty string, create a link to the file referenced by +\fIolddirfd\fP (which may have been obtained using the \fBopen\fP(2) \fBO_PATH\fP +flag). In this case, \fIolddirfd\fP can refer to any type of file except a +directory. This will generally not work if the file has a link count of +zero (files created with \fBO_TMPFILE\fP and without \fBO_EXCL\fP are an +exception). The caller must have the \fBCAP_DAC_READ_SEARCH\fP capability in +order to use this flag. This flag is Linux\-specific; define \fB_GNU_SOURCE\fP +to obtain its definition. .TP \fBAT_SYMLINK_FOLLOW\fP (Linux 2.6.18 以降) \fBlinkat\fP() は (\fBlink\fP() 同様) デフォルトでは \fIoldpath\fP がシンボリックリンクの場合リンクの展開を行わない。 フラグ \fBAT_SYMLINK_FOLLOW\fP を \fIflags\fP に指定することができ、指定した場合 \fIoldpath\fP がシンボリックリンクの場合リンクの展開が行われる。 procfs がマウントされている場合、これは \fBAT_EMPTY_PATH\fP の代替として以下のように使うことができる。 - -.nf +.IP .in +4n +.EX linkat(AT_FDCWD, "/proc/self/fd/", newdirfd, newname, AT_SYMLINK_FOLLOW); +.EE .in -.fi .PP カーネル 2.6.18 より前では、 \fIflags\fP 引き数は未使用で、 0 を指定しなければならなかった。 .PP @@ -152,7 +154,10 @@ I/O エラーが発生した。 \fIoldpath\fP または \fInewpath\fP を解決する際に遭遇したシンボリックリンクが多過ぎる。 .TP \fBEMLINK\fP -\fIoldpath\fP によって参照されるファイルは 既に最大数までのリンクを持っている。 +The file referred to by \fIoldpath\fP already has the maximum number of links +to it. For example, on an \fBext4\fP(5) filesystem that does not employ the +\fIdir_index\fP feature, the limit on the number of hard links to a file is +65,000; on \fBbtrfs\fP(5), the limit is 65,535 links. .TP \fBENAMETOOLONG\fP \fIoldpath\fP または \fInewpath\fP が長過ぎる。 @@ -179,6 +184,9 @@ I/O エラーが発生した。 呼び出し元にこのファイルへのハードリンクを作成する許可がなかった (\fBproc\fP(5) の \fI/proc/sys/fs/protected_hardlinks\fP の説明を参照)。 .TP +\fBEPERM\fP +\fIoldpath\fP is marked immutable or append\-only. (See \fBioctl_iflags\fP(2).) +.TP \fBEROFS\fP ファイルが読み込み専用のファイルシステムに存在する。 .TP @@ -201,12 +209,20 @@ I/O エラーが発生した。 .TP \fBENOENT\fP 以下の呼び出しで作成されたファイルディスクリプターに対応する \fI/proc/self/fd/NN\fP ファイルに対してリンクを行おおうとした。 - - open(path, O_TMPFILE | O_EXCL, mode); - +.IP +.in +4n +.EX +open(path, O_TMPFILE | O_EXCL, mode); +.EE +.in +.IP \fBopen\fP(2) 参照。 .TP \fBENOENT\fP +An attempt was made to link to a \fI/proc/self/fd/NN\fP file corresponding to a +file that has been deleted. +.TP +\fBENOENT\fP \fIoldpath\fP が相対パス名で、 \fIolddirfd\fP が削除されたディレクトリを参照している。 または、 \fInewpath\fP が相対パス名で、 \fInewdirfd\fP が削除されたディレクトリを参照している。 .TP @@ -225,23 +241,25 @@ I/O エラーが発生した。 .\" EMULTIHOP error conditions; POSIX.1 does not document ELOOP. .\" X/OPEN does not document EFAULT, ENOMEM or EIO. \fBlink\fP(): SVr4, 4.3BSD, POSIX.1\-2001 (但し「注意」を参照), POSIX.1\-2008. - +.PP \fBlinkat\fP(): POSIX.1\-2008. .SH 注意 \fBlink\fP() でファイルシステムを超えてハードリンクを作成することはできない。 このような場合は \fBsymlink\fP(2) を使用すること。 - +.PP .\" 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) を使用すること。 +POSIX.1\-2001 says that \fBlink\fP() should dereference \fIoldpath\fP if it is a +symbolic link. However, since kernel 2.0, Linux does not do so: if +\fIoldpath\fP is a symbolic link, then \fInewpath\fP is created as a (hard) link +to the same symbolic link file (i.e., \fInewpath\fP becomes a symbolic link to +the same file that \fIoldpath\fP refers to). Some other implementations behave +in the same manner as Linux. POSIX.1\-2008 changes the specification of +\fBlink\fP(), making it implementation\-dependent whether or not \fIoldpath\fP is +dereferenced if it is a symbolic link. For precise control over the +treatment of symbolic links when creating a link, use \fBlinkat\fP(). .SS "glibc での注意" \fBlinkat\fP() が利用できない古いカーネルでは、 \fBAT_SYMLINK_FOLLOW\fP が指定されていない場合、 glibc ラッパー関数は \fBlink\fP() を使用するモードにフォールバックする。 \fIoldpath\fP と \fInewpath\fP が相対パスの場合、 glibc は @@ -254,6 +272,5 @@ NFS ファイルシステムでは、NFS サーバーがリンクを作成した \fBln\fP(1), \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/listen.2 b/manual/LDP_man-pages/draft/man2/listen.2 index 7bfb8914..62bdf673 100644 --- a/manual/LDP_man-pages/draft/man2/listen.2 +++ b/manual/LDP_man-pages/draft/man2/listen.2 @@ -57,24 +57,23 @@ .\" Updated 2007-07-04, Akihiro MOTOKI , LDP v2.58 .\" Updated 2008-02-10, Akihiro MOTOKI , LDP v2.77 .\" -.TH LISTEN 2 2014\-05\-10 Linux "Linux Programmer's Manual" +.TH LISTEN 2 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 listen \- ソケット(socket)上の接続を待つ .SH 書式 .nf \fB#include \fP /* 「注意」参照 */ -.br \fB#include \fP -.sp +.PP \fBint listen(int \fP\fIsockfd\fP\fB, int \fP\fIbacklog\fP\fB);\fP .fi .SH 説明 \fBlisten\fP() は \fIsockfd\fP が参照するソケットを接続待ちソケット (passive socket) として印をつける。 接続待ちソケットとは、 \fBaccept\fP(2) を使って到着した接続要求を受け付けるのに使用されるソケットである。 - +.PP \fIsockfd\fP 引き数は、 \fBSOCK_STREAM\fP 型か \fBSOCK_SEQPACKET\fP 型のソケットを参照するファイルディスクリプターである。 - +.PP \fIbacklog\fP 引き数は、 \fIsockfd\fP についての保留中の接続のキューの最大長を指定する。 キューがいっぱいの状態で接続要求が到着すると、クライアントは \fBECONNREFUSED\fP というエラーを受け取る。下位層のプロトコルが再送信をサポート していれば、要求は無視され、これ以降の接続要求の再送信が成功するかもしれない。 @@ -91,15 +90,15 @@ listen \- ソケット(socket)上の接続を待つ \fI/proc/sys/net/ipv4/ip_local_port_range\fP の議論を参照のこと。 .TP \fBEBADF\fP -引き数 \fIsockfd\fP は有効なディスクリプターでない。 +The argument \fIsockfd\fP is not a valid file descriptor. .TP \fBENOTSOCK\fP -引き数 \fIsockfd\fP はソケットではない。 +The file descriptor \fIsockfd\fP does not refer to a socket. .TP \fBEOPNOTSUPP\fP ソケットは \fBlisten\fP() がサポートしている型ではない。 .SH 準拠 -4.4BSD, POSIX.1\-2001. \fBlisten\fP() 関数は 4.2BSDで初めて実装された。 +POSIX.1\-2001, POSIX.1\-2008, 4.4BSD (\fBlisten\fP() first appeared in 4.2BSD). .SH 注意 接続を受け付けるには、以下の処理が実行される。 .RS 4 @@ -113,26 +112,28 @@ listen \- ソケット(socket)上の接続を待つ \fBaccept\fP(2) を使って接続を受け付ける。 .RE .PP -POSIX.1\-2001 では \fI\fP のインクルードは必須とされておらず、 Linux -ではこのヘッダーファイルは必要ではない。 しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダーファイルが -必要であり、移植性が必要なアプリケーションではこのファイルを インクルードするのが賢明であろう。 - +POSIX.1 does not require the inclusion of \fI\fP, and this +header file is not required on Linux. However, some historical (BSD) +implementations required this header file, and portable applications are +probably wise to include it. +.PP TCP ソケットでの \fIbacklog\fP 引き数の振る舞いは Linux 2.2 で変更された。 現在ではこの引き数は、 受け付けられるのを待っている、 \fI完全に\fP 確立されたソケットのキューの長さを指定する。 以前は不完全な接続要求の数であったが、これを置き換えた。 不完全なソケットのキューの最大長は \fI/proc/sys/net/ipv4/tcp_max_syn_backlog\fP を用いて設定できる。 syncookie が有効になっている場合、 論理的な最大長は存在せず、この設定は無視される。 - +.PP .\" The following is now rather historic information (MTK, Jun 05) .\" Don't rely on this value in portable applications since BSD .\" (and some BSD-derived systems) limit the backlog to 5. -\fIbacklog\fP 引き数が \fI/proc/sys/net/core/somaxconn\fP の値よりも大きければ、 \fIbacklog\fP -の値は暗黙のうちにこの値に切り詰められる。 このファイルのデフォルト値は 128 である。 バージョン 2.4.5 以前のカーネルでは、この上限値は -コード埋め込みの固定値 \fBSOMAXCONN\fP であり、その値は 128 であった。 -.SH 例 +If the \fIbacklog\fP argument is greater than the value in +\fI/proc/sys/net/core/somaxconn\fP, then it is silently truncated to that +value. Since Linux 5.4, the default in this file is 4096; in earlier +kernels, the default value is 128. In kernels before 2.4.25, this limit was +a hard coded value, \fBSOMAXCONN\fP, with the value 128. +.SH EXAMPLES \fBbind\fP(2) 参照。 .SH 関連項目 \fBaccept\fP(2), \fBbind\fP(2), \fBconnect\fP(2), \fBsocket\fP(2), \fBsocket\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/listxattr.2 b/manual/LDP_man-pages/draft/man2/listxattr.2 deleted file mode 100644 index 6fc7268d..00000000 --- a/manual/LDP_man-pages/draft/man2/listxattr.2 +++ /dev/null @@ -1,121 +0,0 @@ -.\" Copyright (C) Andreas Gruenbacher, February 2001 -.\" Copyright (C) Silicon Graphics Inc, September 2001 -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Tue Jul 8 04:17:12 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" -.TH LISTXATTR 2 2014\-02\-06 Linux "Linux Programmer's Manual" -.SH 名前 -listxattr, llistxattr, flistxattr \- 拡張属性の名前リストを得る -.SH 書式 -.fam C -.nf -\fB#include \fP -\fB#include \fP -.sp -\fBssize_t listxattr(const char\ *\fP\fIpath\fP\fB, char\ *\fP\fIlist\fP\fB, size_t \fP\fIsize\fP\fB);\fP -\fBssize_t llistxattr(const char\ *\fP\fIpath\fP\fB, char\ *\fP\fIlist\fP\fB, size_t \fP\fIsize\fP\fB);\fP -\fBssize_t flistxattr(int \fP\fIfd\fP\fB, char\ *\fP\fIlist\fP\fB, size_t \fP\fIsize\fP\fB);\fP -.fi -.fam T -.SH 説明 -拡張属性は、inode (ファイル、ディレクトリ、シンボリックリンク等) に 関連付けられた \fIname\fP:\fIvalue\fP の対である。 -これらは、システム上のすべての inode に関連付けられた通常の属性 (\fBstat\fP(2) が返すデータ) を拡張するものである。 -拡張属性のコンセプトは \fBattr\fP(5) に書かれている。 -.PP -\fBlistxattr\fP() は、ファイルシステム内の指定された \fIpath\fP に対応する拡張属性の名前リストを取得する。取得したリストは -\fIlist\fP に格納される。 \fIlist\fP は呼び出し側で確保するバッファーで、引き数 \fIsize\fP でバッファーのサイズを (バイト単位で) -指定する。リストは名前の集合で、ヌル終端された文字列が連続して並んでいる。呼び出したプロセスがアクセスする権限のない拡張属性の名前は、リストに含まれない。拡張属性の名前の -\fIlist\fP の長さが返される。 -.PP -\fBllistxattr\fP() は \fBlistxattr\fP() と同じだが、シンボリックリンクの場合に、リンクが参照しているファイル -ではなく、リンクそのものの拡張属性の名前リストを取得する点だけが異なる。 -.PP -\fBflistxattr\fP() は \fBlistxattr\fP() と同じだが、 \fIpath\fP の代わりに \fIfd\fP -で参照されたオープン済みファイルの情報だけを取得する点が異なる (\fIfiledes\fP は \fBopen\fP(2) によって返される)。 -.PP -個々の拡張属性の \fIname\fP は普通のヌル終端された文字列である。 名前には、名前空間を表す接頭辞 (prefix) が含まれる; 個々の -inode に対して、互いに独立な名前空間が複数あってもよい。 -.PP -\fIsize\fP に 0 を指定して空のバッファーをこれらのシステムコールに渡すことができ、 この場合には拡張属性の名前リストの現在のサイズが返される。 -この方法は名前リストを保持するのに十分な大きさのバッファーサイズを 見積もるのに使うことができる、 -.SS Example -返される名前の \fIlist\fP は、ヌル終端された文字列の配列 (属性名はヌルバイト (\(aq\e0\(aq) で区切られている) -で、各要素は整列されている訳ではない。 以下に例を示す: -.fam C -.RS -.nf - -user.name1\e0system.name1\e0user.name2\e0 -.fi -.RE -.fam T -.P -拡張属性を使って POSIX ACL を実装している ext2、ext3、XFS のようなファイル システムでは、返される \fIlist\fP -は以下のようになることだろう: -.fam C -.RS -.nf - -system.posix_acl_access\e0system.posix_acl_default\e0 -.fi -.RE -.fam T -.SH 返り値 -成功した場合、拡張属性の名前リストの長さを表す非負の数が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。 -.SH エラー -.TP -\fBENOTSUP\fP -拡張属性がそのファイルシステムでサポートされていない、 もしくは無効になっている。 -.TP -\fBERANGE\fP -\fIlist\fP バッファーの大きさ \fIsize\fP が結果を保持するのに十分な大きさでなかった。 -.PP -上記に加えて、 \fBstat\fP(2) に書かれているエラーが発生する場合もある。 -.SH バージョン -これらのシステムコールはカーネル 2.4 以降の Linux で利用できる。 glibc でのサポートはバージョン 2.3 以降で行われている。 -.SH 準拠 -.\" .SH AUTHORS -.\" Andreas Gruenbacher, -.\" .RI < a.gruenbacher@computer.org > -.\" and the SGI XFS development team, -.\" .RI < linux-xfs@oss.sgi.com >. -.\" Please send any bug reports or comments to these addresses. -これらのシステムコールは Linux 独自である。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/llseek.2 b/manual/LDP_man-pages/draft/man2/llseek.2 deleted file mode 100644 index dc61443d..00000000 --- a/manual/LDP_man-pages/draft/man2/llseek.2 +++ /dev/null @@ -1,84 +0,0 @@ -.\" Copyright (C) 1995 Andries Brouwer (aeb@cwi.nl) -.\" Written 10 June 1995 by Andries Brouwer -.\" -.\" %%%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 Thu Oct 31 15:16:23 1996 by Eric S. Raymond -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Sun Feb 23 16:22:27 JST 1997 -.\" by HANATAKA Shinya -.\" Updated & Modified Sat Jun 2 18:27:49 JST 2001 -.\" by Yuichi SATO -.\" Updated & Modified Sat Sep 6 17:05:03 JST 2003 -.\" by Yuichi SATO -.\" Updated & Modified Fri Dec 31 00:50:01 JST 2004 by Yuichi SATO -.\" -.TH LLSEEK 2 2012\-07\-13 Linux "Linux Programmer's Manual" -.SH 名前 -_llseek \- ファイルの読み書きオフセットの位置を変える -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -.sp -\fBint _llseek(unsigned int \fP\fIfd\fP\fB, unsigned long \fP\fIoffset_high\fP\fB,\fP -\fB unsigned long \fP\fIoffset_low\fP\fB, loff_t *\fP\fIresult\fP\fB,\fP -\fB unsigned int \fP\fIwhence\fP\fB);\fP -.fi - -\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 -.SH 説明 -\fB_llseek\fP() 関数は、ファイルディスクリプター (descriptor) \fIfd\fP -に関連づけられたオープンされたファイルのオフセットの位置を、相対的に \fI(offset_high<<32) | offset_low\fP -バイトだけ変更する。 基準となる位置を表す \fIwhence\fP には \fBSEEK_SET\fP, \fBSEEK_CUR\fP, \fBSEEK_END\fP -のいずれかを指定し、それぞれ ファイルの先頭、ファイルの現在位置、 ファイルの最後を表す。 結果のファイル位置を \fIresult\fP 引き数に返す。 -.SH 返り値 -成功した場合は、 \fB_llseek\fP() は 0 を返す。 そうでなれば \-1 という値が返り、エラーを示す \fIerrno\fP が設定される。 -.SH エラー -.TP -\fBEBADF\fP -\fIfd\fP がオープンされたファイルディスクリプターでない。 -.TP -\fBEFAULT\fP -結果をユーザー空間にコピーするときに問題があった。 -.TP -\fBEINVAL\fP -\fIwhence\fP が不正である。 -.SH 準拠 -この関数は Linux 特有であり、移植性の必要なプログラムでは使用してはいけない。 -.SH 注意 -glibc はこのシステムコールに対するラッパー関数を提供していない。 \fBsyscall\fP(2) を使って呼び出すこと。 -.SH 関連項目 -\fBlseek\fP(2), \fBlseek64\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/lookup_dcookie.2 b/manual/LDP_man-pages/draft/man2/lookup_dcookie.2 index 4f1126ce..f3cbd13b 100644 --- a/manual/LDP_man-pages/draft/man2/lookup_dcookie.2 +++ b/manual/LDP_man-pages/draft/man2/lookup_dcookie.2 @@ -36,7 +36,7 @@ .\" Updated 2003-09-30, Akihiro MOTOKI .\" Updated 2005-02-10, Akihiro MOTOKI .\" -.TH LOOKUP_DCOOKIE 2 2004\-06\-17 Linux "Linux Programmer's Manual" +.TH LOOKUP_DCOOKIE 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 lookup_dcookie \- ディレクトリエントリーのパス名を返す .SH 書式 @@ -45,7 +45,7 @@ lookup_dcookie \- ディレクトリエントリーのパス名を返す .SH 説明 \fIcookie\fP 値で指定されたディレクトリエントリーのフルパス名を検索する。 cookie は、個々のディレクトリエントリーを区別する内部識別子 (opaque identifier) である。引き数で指定されたバッファーに、ディレクトリエントリーの フルパス名が格納される。 - +.PP \fBlookup_dcookie\fP() が正常に値を返すためには、カーネルがディレクトリエントリーへの cookie 参照を 保持していなければならない。 .SH 返り値 @@ -76,11 +76,13 @@ Linux 2.5.43 以降で利用できる。 エラー \fBENAMETOOLONG\fP を返す .SH 準拠 \fBlookup_dcookie\fP() は Linux 独自の関数である。 .SH 注意 -\fBlookup_dcookie\fP() は特殊な用途に使われるシステムコールで、現在のところ oprofile profiler で -使われているだけである。 - +\fBlookup_dcookie\fP() is a special\-purpose system call, currently used only +by the \fBoprofile\fP(1) profiler. It relies on a kernel driver to register +cookies for directory entries. +.PP 指定されたディレクトリエントリーが削除されていた場合、返されるパス名の最後に " (deleted)" という文字列が付加されることがある。 +.SH 関連項目 +\fBoprofile\fP(1) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 9a2959bb..00000000 --- a/manual/LDP_man-pages/draft/man2/lseek.2 +++ /dev/null @@ -1,196 +0,0 @@ -'\" t -.\" Copyright (c) 1980, 1991 Regents of the University of California. -.\" and Copyright (c) 2011, Michael Kerrisk -.\" 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 -.\" Modified 1995-06-10 by Andries Brouwer -.\" Modified 1996-10-31 by Eric S. Raymond -.\" Modified 1998-01-17 by Michael Haardt -.\" -.\" Modified 2001-09-24 by Michael Haardt -.\" Modified 2003-08-21 by Andries Brouwer -.\" 2011-09-18, mtk, Added SEEK_DATA + SEEK_HOLE -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997-1998 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-23, HANATAKA Shinya -.\" Modified 1998-05-11, HANATAKA Shinya -.\" Updated 2001-12-14, Kentaro Shirakata -.\" Updated 2003-09-08, Kentaro Shirakata -.\" Updated 2005-02-24, Akihiro MOTOKI -.\" Updated 2006-03-05, Akihiro MOTOKI, catch up to LDP v2.25 -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-05-07, Akihiro MOTOKI -.\" -.TH LSEEK 2 2014\-06\-13 Linux "Linux Programmer's Manual" -.SH 名前 -lseek \- ファイルの読み書きオフセットの位置を変える -.SH 書式 -\fB#include \fP -.br -\fB#include \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)") の読み出しがあると、 -実際にそこにデータを書き込まれるまではヌルバイト (\(aq\e0\(aq) の列が返される。 -.SS ファイルのデータとホールの探索 -Linux バージョン 3.1 以降では、 \fIwhence\fP に以下の値も指定することができる。 -.TP -\fBSEEK_DATA\fP -ファイルオフセットを \fIoffset\fP 以上で次にデータがある位置に設定する。 \fIoffset\fP がデータを指している場合には、 -ファイルオフセットは \fIoffset\fP に設定される。 -.TP -\fBSEEK_HOLE\fP -ファイルオフセットを、 位置が \fIoffset\fP 以上の次のホール (hole) に設定する。 \fIoffset\fP -がホールの内部にある場合は、ファイルシステムは \fIoffset\fP に設定される。 \fIoffset\fP 以降にホールがない場合は、 -ファイルオフセットはファイル末尾に設定される (つまり、 どのファイルの末尾にも暗黙のホールが存在するということだ)。 -.PP -上記のどちらの場合も、 \fIoffset\fP がファイル末尾よりも先を指している場合には \fBlseek\fP() は失敗する。 - -これらの操作を使うことで、 アプリケーションが、 まばら (sparse ) にページが割り当てられたファイルでホールをマップすることができる。 -この機能はファイルバックアップツールなどのアプリケーションで有用である。 ホールを見つける仕組みがあれば、 ファイルバックアップツールで、 -バックアップを作成する際に保存領域を節約し、ホールを保持することができる。 - -.\" https://lkml.org/lkml/2011/4/22/79 -.\" http://lwn.net/Articles/440255/ -.\" http://blogs.oracle.com/bonwick/entry/seek_hole_and_seek_data -これらの操作の目的としては、 ホールは (通常は) バックエンドのファイルストレージには割り当てられていない連続する 0 の列である。 -しかし、ファイルシステムにはホールを報告する義務はなく、 そのため、 これらの操作は、 -ファイルに実際に割り当てられたストレージ領域をマッピングする方法としては確実性のある仕組みではない。 -(また、バックエンドのストレージに実際に書き込まれた連続する 0 の列はホールとして報告されないこともある。) 最も単純な実装としては、 -\fBSEEK_HOLE\fP は常にファイル末尾のオフセットを返すようにし、 \fBSEEK_DATA\fP は常に \fIoffset\fP を返すようにすることで、 -ファイルシステムはこれらの操作をサポートすることができる (\fBSEEK_DATA\fP は常に \fIoffset\fP を返すというのは、 \fIoffset\fP -が参照する場所がホールであったとしても、 連続する 0 の列のデータで構成されているとみなすということである)。 - -\fI\fP から \fBSEEK_DATA\fP と \fBSEEK_HOLE\fP の定義を得るには、 機能検査マクロ -\fB_GNU_SOURCE\fP を定義しなければならない。 - -\fBSEEK_HOLE\fP, \fBSEEK_DATA\fP 操作に対応しているのは以下のファイルシステムである。 -.IP * 3 -Btrfs (Linux 3.1 以降) -.IP * 3 -.\" commit 93862d5e1ab875664c6cc95254fc365028a48bb1 -OCFS (Linux 3.2 以降) -.IP * -XFS (Linux 3.5 以降) -.IP * -ext4 (Linux 3.8 以降) -.IP * -tmpfs (Linux 3.8 以降) -.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 filesystems. -\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 と \fBSEEK_HOLE\fP は非標準の拡張で、 Solaris, FreeBSD, DragonFly BSD -にも存在する。 これらは POSIX の次の版 (Issue 8) に入れるよう提案されている。 -.SH 注意 -ファイルディスクリプター、オープンファイル記述、ファイルの関係の説明については \fBopen\fP(2) を参照。 - -いくつかのデバイスでは 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index b3b1be2d..00000000 --- a/manual/LDP_man-pages/draft/man2/madvise.2 +++ /dev/null @@ -1,249 +0,0 @@ -.\" Copyright (C) 2001 David Gómez -.\" -.\" %%%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, -.\" 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 -.\" Document MADV_HUGEPAGE and MADV_NOHUGEPAGE -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001 NAKANO Takeo all rights reserved. -.\" Translated Thu Aug 16 2001 by NAKANO Takeo -.\" Updated Tue 8 Oct 2002 by NAKANO Takeo -.\" Updated 2007-01-08, Akihiro MOTOKI , LDP v2.43 -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-07-31, Akihiro MOTOKI -.\" -.TH MADVISE 2 2014\-12\-31 Linux "Linux Programmer's Manual" -.SH 名前 -madvise \- メモリー利用に関するアドバイスを与える -.SH 書式 -\fB#include \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 以降) -ページに毒入れを行い、ハードウェアメモリーの破損のようにそのページを取り扱う。 この操作は特権 (\fBCAP_SYS_ADMIN\fP を持った) -プロセスだけが利用できる。 この操作の結果、呼び出したプロセスは \fBSIGBUS\fP を受け取り、そのページはアンマップされる。 -この機能はメモリーのエラー処理コードをテストするためのものである。 カーネルで \fBCONFIG_MEMORY_FAILURE\fP -が有効になっている場合にのみ利用可能である。 -.TP -\fBMADV_SOFT_OFFLINE\fP (Linux 2.6.33 以降) -\fIaddr\fP と \fIlength\fP で指定された範囲のページをソフトオフラインにする。 指定された範囲の各ページのメモリーの内容は保持され -(すなわち、次にアクセスされた際に、同じ内容が見えるが、新しい物理ページフレームになる)、 元のフレームはオフラインになる (すなわち、 -そのフレームは使用される、通常のメモリー管理からは取り除かれる)。 \fBMADV_SOFT_OFFLINE\fP 操作の影響は呼び出したプロセスには見えない -(つまり呼び出したプロセスの動作は変化しない)。 この機能はメモリーのエラー処理コードをテストすることを目的に作られた。 カーネルで -\fBCONFIG_MEMORY_FAILURE\fP が有効になっている場合にのみ利用可能である。 -.TP -\fBMADV_MERGEABLE\fP (Linux 2.6.32 以降) -Kernel Samepage Merging (KSM; カーネルによる同じページの統合) を \fIaddr\fP と \fIlength\fP -で指定された領域に対して有効にする。 カーネルは、 統合可能の印がついたユーザーメモリーの領域を定期的にスキャンし、内容が全く同じページを探す。 -内容が全く同じページがあれば、それらのページは書き込み保護 (write\-protected) がかかった一つのページで置き換えられる -(プロセスが後でページの内容を更新しようとした際には自動的にページのコピーが行われる)。 KSM はプライベートな無名ページ (anonymous -pages) だけを統合する (\fBmmap\fP(2) 参照)。 KSM 機能は、 同じデータのインスタンスを大量に生成するアプリケーション (KVM -などの仮想化システム) での利用を想定している。 この機能はプロセッシング能力を大量に消費する場合があり、注意して使用すること。 詳細は Linux -カーネルソースファイル \fIDocumentation/vm/ksm.txt\fP を参照。 \fBMADV_MERGEABLE\fP と -\fBMADV_UNMERGEABLE\fP は、 カーネルで \fBCONFIG_KSM\fP オプションを有効になっている場合にのみ利用できる。 -.TP -\fBMADV_UNMERGEABLE\fP (Linux 2.6.32 以降) -指定されたアドレス範囲に関して、それ以前に行われた \fBMADV_MERGEABLE\fP 操作の効果を取り消す。 KSM は、 \fIaddr\fP と -\fIlength\fP で指定されたアドレス範囲の統合済みのすべてのページの統合解除を行う。 -.TP -\fBMADV_HUGEPAGE\fP (Linux 2.6.38 以降) -.\" http://lwn.net/Articles/358904/ -.\" https://lwn.net/Articles/423584/ -Transparent Huge Pages (THP) を \fIaddr\fP と \fIlength\fP で指定された領域に対して有効にする。 -現在のところ、Transparent Huge Pages はプライベートな無名ページ (anonymous pages) についてのみ機能する。 -カーネルは定期的にヒュージページ (huge page) 候補の印がついたページをスキャンし、ヒュージページと置き換える。 -また、カーネルはその領域がヒュージページのサイズに合っている場合、ヒュージページを直接割り当てる (\fBposix_memalign\fP(2) 参照)。 -この機能は、大きなデータマッピングを使用し、一度にそのメモリーの大きな範囲にアクセスするようなアプリケーション (例えば QEMU -のような仮想化システム) で使うことを主に想定されている。 この機能は非常に簡単にメモリーを浪費してしまう (例えば、1 バイトしかアクセスしない -2MB のマッピングが、 4KB ページではなく 2MB の実際のメモリーを使ってしまう)。 詳細は Linux カーネルソースファイル -\fIDocumentation/vm/transhuge.txt\fP を参照。 \fBMADV_HUGEPAGE\fP と \fBMADV_NOHUGEPAGE\fP -は、 カーネルで \fBCONFIG_TRANSPARENT_HUGEPAGE\fP オプションを有効になっている場合にのみ利用できる。 -.TP -\fBMADV_NOHUGEPAGE\fP (Linux 2.6.38 以降) -\fIaddr\fP と \fIlength\fP で指定されたアドレス範囲のメモリーがヒュージページに組み込まれないようにする。 -.TP -\fBMADV_DONTDUMP\fP (Linux 3.4 以降) -コアダンプから \fIaddr\fP と \fIlength\fP で指定された範囲のページを除外する。 これは、 -コアダンプに含めても役に立たないことが分かっている大きなメモリー領域があるアプリケーションで有用である。 \fBMADV_DONTDUMP\fP の効果は -\fI/proc/PID/coredump_filter\fP ファイル経由で設定されたビットマスクよりも優先される (\fBcore\fP(5) 参照)。 -.TP -\fBMADV_DODUMP\fP (Linux 3.4 以降) -以前の \fBMADV_DONTDUMP\fP の効果を取り消す。 -.SH 返り値 -\fBmadvise\fP() は成功すると 0 を返す。 エラーが起こると \-1 を返し、 \fIerrno\fP を適切な値に設定する。 -.SH エラー -.TP -\fBEAGAIN\fP -何らかのカーネルリソースが一時的に利用できなかった。 -.TP -\fBEBADF\fP -指定したマップは存在するが、ファイルではないところをマップしている。 -.TP -\fBEINVAL\fP -このエラーは以下の理由で発生する。 -.RS -.IP * 3 -.\" .I len -.\" is zero, -\fIlen\fP が負の値である。 -.IP * -\fIaddr\fP がページ境界ではない。 -.IP * -\fIadvice\fP が有効な値でない。 -.IP * -アプリケーションがロックされたページや共有ページを (\fBMADV_DONTNEED\fP で) 解放 -しようとしている。 -.IP * -\fIadvice\fP に \fBMADV_MERGEABLE\fP か \fBMADV_UNMERGEABLE\fP が指定されたが、 カーネルの設定が -\fBCONFIG_KSM\fP が有効になっていなかった。 -.RE -.TP -\fBEIO\fP -(\fBMADV_WILLNEED\fP の場合) この範囲のページングを行うと、 プロセスの RSS (resident set size) -の最大値を越えてしまう。 -.TP -\fBENOMEM\fP -(\fBMADV_WILLNEED\fP の場合) メモリーが足りず、ページングに失敗した。 -.TP -\fBENOMEM\fP -指定した範囲のアドレスが、現在マップされていない。 あるいはプロセスのアドレス空間の内部にない。 -.SH バージョン -.\" commit d3ac21cacc24790eb45d735769f35753f5b56ceb -Linux 3.18 以降では、このシステムコールのサポートは任意となり、利用できるかはカーネルが \fBCONFIG_ADVISE_SYSCALLS\fP -オプションを有効にしてコンパイルされているかに依存する。 -.SH 準拠 -.\" FIXME . Write a posix_madvise(3) page. -POSIX.1b. POSIX.1\-2001 では、 \fBposix_madvise\fP(3) を \fBPOSIX_MADV_NORMAL\fP, -\fBPOSIX_MADV_RANDOM\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), \fBprctl\fP(2), \fBcore\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/mbind.2 b/manual/LDP_man-pages/draft/man2/mbind.2 deleted file mode 100644 index 831a8be5..00000000 --- a/manual/LDP_man-pages/draft/man2/mbind.2 +++ /dev/null @@ -1,225 +0,0 @@ -.\" Copyright 2003,2004 Andi Kleen, SuSE Labs. -.\" and Copyright 2007 Lee Schermerhorn, Hewlett Packard -.\" -.\" %%%LICENSE_START(VERBATIM_PROF) -.\" 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. -.\" -.\" Formatted or processed versions of this manual, if unaccompanied by -.\" the source, must acknowledge the copyright and authors of this work. -.\" %%%LICENSE_END -.\" -.\" 2006-02-03, mtk, substantial wording changes and other improvements -.\" 2007-08-27, Lee Schermerhorn -.\" more precise specification of behavior. -.\" -.\" FIXME -.\" Linux 3.8 added the following, which need to be documented. -.\" And do they also apply for move_pages()? -.\" -.\" MPOL_LOCAL -.\" commit 479e2802d09f1e18a97262c4c6f8f17ae5884bd8 -.\" Author: Peter Zijlstra -.\" Date: Thu Oct 25 14:16:28 2012 +0200 -.\" -.\" commit f2a07f40dbc603c15f8b06e6ec7f768af67b424f -.\" Author: Hugh Dickins -.\" Date: Wed Jan 2 02:01:33 2013 -0800 -.\" -.\" MPOL_MF_LAZY -.\" commit b24f53a0bea38b266d219ee651b22dba727c44ae -.\" Author: Lee Schermerhorn -.\" Date: Thu Oct 25 14:16:32 2012 +0200 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2006-07-25, Akihiro MOTOKI , LDP v2.36 -.\" Updated 2008-08-21, Akihiro MOTOKI, LDP v3.07 -.\" Updated 2008-09-19, Akihiro MOTOKI, LDP v3.08 -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" -.TH MBIND 2 2015\-01\-22 Linux "Linux Programmer's Manual" -.SH 名前 -mbind \- メモリー領域に対してメモリーポリシーを設定する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBlong mbind(void *\fP\fIaddr\fP\fB, unsigned long \fP\fIlen\fP\fB, int \fP\fImode\fP\fB,\fP -\fB const unsigned long *\fP\fInodemask\fP\fB, unsigned long \fP\fImaxnode\fP\fB,\fP -\fB unsigned \fP\fIflags\fP\fB);\fP -.sp -\fI\-lnuma\fP でリンクする。 -.fi -.SH 説明 -\fBmbind\fP() は、 \fIaddr\fP から始まる長さ \fIlen\fP バイトの範囲のメモリーに NUMA メモリーポリシーを設定する。 NUMA -ポリシーはポリシーモードと 0 個以上のノードから構成される。 メモリーポリシーはどのノードからメモリーを割り当てるかを決定する。 - -\fIaddr\fP と \fIlen\fP で指定されたメモリー範囲に、 メモリーの「無名」領域 \(em \fBMAP_ANONYMOUS\fP 付きの -\fBmmap\fP(2) システムコールを使って作成されたメモリー領域 \(em や \fBMAP_PRIVATE\fP 付きの \fBmmap\fP(2) -を使ってマップされたメモリーマップファイルが含まれている場合、アプリケーションがそのページへの書き込み (データの格納) -を行った時には指定されたポリシーのみに基づいてページが割り当てられる。無名領域の場合、最初の読み出しアクセスの際には カーネル内の全データが 0 -である共有ページが使用される。 \fBMAP_PRIVATE\fP でマップされたファイルの場合、最初の読み出しアクセスがあると、 -ページ割り当てが発生するきっかけとなったプロセスのデフォルトポリシー にしたがってページの割り当てが行われる。 -ページ割り当てのきっかけとなったプロセスは、 \fBmbind\fP() を呼び出したプロセスと同じとは限らない。 - -指定されたメモリー範囲内にある \fBMAP_SHARED\fP のマッピングでは指定されたポリシーは無視され、 -ページ割り当てが発生するきっかけとなったプロセスのデフォルトポリシーに したがってページの割り当てが行われることになる。 -繰り返しになるが、ページ割り当てのきっかけとなったプロセスは、 \fBmbind\fP() を呼び出したプロセスと同じとは限らない。 - -指定されたメモリー範囲に、 \fBshmget\fP(2) システムコールを使って作成されたり、 \fBshmat\fP(2) システムコールを使って付加 -(attach) されたりした共有メモリー領域が 含まれる場合、無名メモリー領域や共有メモリー領域に対するページ割り当ては、 -共有メモリーセグメントへポリシーの設定を行ったプロセスがページ割り当て のきっかけとなったかに関わらず、指定されたポリシーにしたがって割り当て -が行われる。 しかしながら、共有メモリー領域が \fBSHM_HUGETLB\fP フラグを指定して作成された場合には、ヒュージページ (huge page) -の割り当てが 指定されたポリシーにしたがって行われるのは、その領域に対して \fBmbind\fP() -を呼び出したプロセスがページ割り当てのきっかけとなった場合のみである。 - -デフォルトでは、 \fBmbind\fP() は新規のメモリー割り当てに対してのみ効果を持つ。 -ポリシーが設定される前にすでに使用されている範囲内のページに対しては、 ポリシーは影響しない。 このデフォルトの動作は、以下で説明するフラグ -\fBMPOL_MF_MOVE\fP や \fBMPOL_MF_MOVE_ALL\fP により上書きされる可能性がある。 - -\fImode\fP 引き数には、 \fBMPOL_DEFAULT\fP, \fBMPOL_BIND\fP, \fBMPOL_INTERLEAVE\fP, -\fBMPOL_PREFERRED\fP のいずれか一つを指定しなければならない。 \fBMPOL_DEFAULT\fP 以外のポリシーモードの場合、呼び出し元は -\fInodemask\fP 引き数でそのポリシーモードを適用するノードを指定する必要がある。 - -\fImode\fP 引き数には、追加で \fIモードフラグ\fP を含めることもできる。 サポートされている \fIモードフラグ\fP は以下の通りである。 -.TP -\fBMPOL_F_STATIC_NODES\fP (Linux\-2.6.26 以降) -空でない \fInodemask\fP は、物理ノード ID である。 Linux では、そのプロセスが異なる CPU 集合コンテキスト (cpuset -context) に移動した場合でも、そのプロセスの現在の CPU 集合コンテキストで 許可されているノード集合が変化した場合でも、 -\fInodemask\fP をマッピングし直すことはない。 -.TP -\fBMPOL_F_RELATIVE_NODES\fP (Linux\-2.6.26 以降) -空でない \fInodemask\fP は、そのプロセスの現在の CPU 集合で許可されているノード ID 集合 における相対的なノード ID である。 -.PP -\fInodemask\fP は、最大で \fImaxnode\fP ビットから構成されるノードのビットマスクを指す。 ビットマスクの大きさは、直近の -\fIsizeof(unsigned long)\fP の倍数に切り上げられるが、カーネルが使用するのは \fImaxnode\fP 個までのビットだけである。 -NULL 値の \fInodemask\fP もしくは値が 0 の \fImaxnode\fP はノードの空集合を表す。 \fImaxnode\fP の値が 0 の場合、 -\fInodemask\fP 引き数は無視される。 \fInodemask\fP が必須の場面では、 \fInodemask\fP に、オンラインで、そのプロセスの現在の -CPU 集合コンテキストで 許可されており (\fBMPOL_F_STATIC_NODES\fP モードフラグが指定されていない場合)、メモリーがあるノードが -少なくとも一つ入っていなければならない。 - -モード \fBMPOL_DEFAULT\fP はデフォルトではないプロセスのメモリーポリシーを削除し、 デフォルトの動作に戻すことを指定するものである。 -\fBmbind\fP() 経由で、あるメモリー領域に対して \fBMPOL_DEFAULT\fP -が適用された場合、プロセスのデフォルトポリシーを使用することを意味する。 プロセスのデフォルトポリシーは、 \fBset_mempolicy\fP(2) -で変更されているかもしれない。 プロセスのポリシーのモードも \fBMPOL_DEFAULT\fP の場合、システム全体のデフォルトポリシーが使用される。 -システム全体のデフォルトポリシーでは、割り当てのきっかけとなった CPU のノードからページの割り当てを行う。 \fBMPOL_DEFAULT\fP -では、引き数 \fInodemask\fP と \fImaxnode\fP にノードの空集合を指定しなければならない。 - -\fBMPOL_BIND\fP は厳しいポリシーで、メモリー割り当ては \fInodemask\fP に指定されたノードに限定される。 -他のノードへの割り当ては行われない。 \fInodemask\fP に 2 個以上のノードが指定された場合、ページの割り当ては ノード ID -が数字として最小のノードから開始され、 そのノードに空きメモリーがなくなるまでそのノードから -ページ割り当てが行われる。そのノードに空きメモリーがなくなったら、 次に小さなノード ID を持つノードからページ割り当てが行われる。 これを、 -\fInodemask\fP で指定された全てのノードで空きメモリーがなくなるまで繰り返す。 \fInodemask\fP -で指定された以外のノードからはページの割り当ては行われない。 - -\fBMPOL_INTERLEAVE\fP は、メモリー割り当てが \fInodemask\fP に指定されたノード間で交互に行われることを指定するものである。 -このポリシーでは、複数のノードにページを広げて配置し、これらのページへの メモリーアクセスを分散することで、遅延ではなく、帯域を最適化する。 -効果を得るには、メモリー領域をある程度大きくすべきであり、 メモリーアクセスのパターンがかなり均一な場合でも 少なくとも 1MB 以上にすべきである。 -このモードでも、一つのページへのアクセスに関しては 一つのノードのメモリー帯域が上限となることは変わりない。 - -\fBMPOL_PREFERRED\fP は、割り当て時に優先されるノードを設定する。 カーネルはまず優先ノードにページ割り当てを行おうとし、 -優先ノードに空きメモリーが少ない場合に他のノードに割り当てを行う。 \fInodemask\fP に複数のノード ID が指定された場合は、 -\fInodemask\fP 内の最初のノードが優先ノードとして選択される。 引き数 \fInodemask\fP, \fImaxnode\fP -で空集合が指定された場合は、割り当てのきっかけとなった CPU のノードに メモリー割り当てが行われる。 \fBmbind\fP(2) -で、あるメモリー領域に対して「ローカルからの割り当て (local allocation)」を 指定する方法はこれしかない。 - -.\" According to the kernel code, the following is not true -.\" --Lee Schermerhorn -.\" In 2.6.16 or later the kernel will also try to move pages -.\" to the requested node with this flag. -\fIflags\fP に \fBMPOL_MF_STRICT\fP が 指定され、 \fImode\fP が \fBMPOL_DEFAULT\fP でない場合、 -指定されたポリシーに従っていないメモリー領域にページが存在すると、 \fBmbind\fP() はエラー \fBEIO\fP で失敗する。 - -\fIflags\fP に \fBMPOL_MF_MOVE\fP が指定されると、カーネルはそのメモリー領域内の既存の全てのページを移動し、 -指定されたポリシーに従うようにしようとする。 他のプロセスと共有されているページは移動されない。 \fBMPOL_MF_STRICT\fP -も指定された場合、移動できなかったページがあると、 \fBmbind\fP() はエラー \fBEIO\fP で失敗する。 - -.\" --------------------------------------------------------------- -\fIflags\fP に \fBMPOL_MF_MOVE_ALL\fP が指定されると、カーネルはそのメモリー領域内の既存の全てのページを、 -他のプロセスがページを使用しているかどうかに関わらず移動する。 このフラグを使用するには、呼び出し元のプロセスは特権 (\fBCAP_SYS_NICE\fP) -を持っていなければならない。 \fBMPOL_MF_STRICT\fP も指定された場合、移動できなかったページがあると、 \fBmbind\fP() はエラー -\fBEIO\fP で失敗する。 -.SH 返り値 -.\" --------------------------------------------------------------- -成功すると、 \fBmbind\fP() は 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 -.SH エラー -.\" I think I got all of the error returns. --Lee Schermerhorn -.TP -\fBEFAULT\fP -\fInodemask\fP と \fImaxnode\fP で指定されたメモリー領域の一部または全部が、 呼び出し元がアクセス可能なアドレス空間外を指している。 -もしくは \fIaddr\fP と \fIlen\fP で指定されたメモリー領域にマップされていない部分 (unmapped hole) があった、 -.TP -\fBEINVAL\fP -.\" As at 2.6.23, this limit is "a page worth of bits", e.g., -.\" 8 * 4096 bits, assuming a 4kB page size. -\fIflags\fP や \fImode\fP に不正な値が指定された。 \fIaddr + len\fP が \fIaddr\fP より小さい。 \fIaddr\fP -がシステムのページサイズの倍数になっていない。 または \fImode\fP が \fBMPOL_DEFAULT\fP で \fInodemask\fP -に空でない集合が指定された。 \fImode\fP が \fBMPOL_BIND\fP か \fBMPOL_INTERLEAVE\fP で \fInodemask\fP -が空であった。 \fImaxnode\fP がカーネルに適用された上限を超えている。 \fInodemask\fP に、サポートされている最大ノード ID -より大きいノードが指定された。 \fInodemask\fP に、オンラインで、かつそのプロセスの現在の CPU 集合コンテキストで -許可されているノードが一つも含まれていないか、 メモリーを含むノードが一つも指定されていない。 \fImode\fP 引き数に -\fBMPOL_F_STATIC_NODES\fP と \fBMPOL_F_RELATIVE_NODES\fP の両方が指定された。 -.TP -\fBEIO\fP -\fBMPOL_MF_STRICT\fP が指定されたが、このポリシーに従っていないノードに すでにページが存在していた。 もしくは -\fBMPOL_MF_MOVE\fP か \fBMPOL_MF_MOVE_ALL\fP が指定されたが、カーネルが指定された領域内の既存の全てのページを -移動することができなかった。 -.TP -\fBENOMEM\fP -利用可能なカーネルメモリーが十分でなかった。 -.TP -\fBEPERM\fP -.\" --------------------------------------------------------------- -\fIflags\fP 引き数に \fBMPOL_MF_MOVE_ALL\fP フラグが含まれているが、呼び出し元が \fBCAP_SYS_NICE\fP -特権を持たない。 -.SH バージョン -\fBmbind\fP() システムコールはバージョン 2.6.7 で Linux カーネルに追加された。 -.SH 準拠 -このシステムコールは Linux 固有である。 -.SH 注意 -ライブラリによるサポートについては \fBnuma\fP(7) を参照。 - -NUMA ポリシーは、 \fBMAP_SHARED\fP フラグが指定されてマップされたメモリーマップファイルの領域では サポートされていない。 - -\fBMPOL_DEFAULT\fP モードは、 \fBmbind\fP() と \fBset_mempolicy\fP(2) で異なる効果を持つことができる。 -\fBset_mempolicy\fP(2) で \fBMPOL_DEFAULT\fP が指定された場合、そのプロセスのポリシーはシステムの -デフォルトポリシー、すなわちローカルからの割り当て、に戻る。 \fBmbind\fP() を使ってメモリーのある領域に \fBMPOL_DEFAULT\fP -が指定された場合、その範囲に対してそれ以降に行われるページの割り当てでは、 \fBset_mempolicy\fP(2) -で設定したのと同じように、そのプロセスのポリシーが適用される。 これにより、特定のメモリー領域についてだけ明示的なポリシーを削除し、 -デフォルトのポリシーに「戻す」ことができる。 あるメモリー領域に対して「ローカルからの割り当て」を明示的に設定するには、 \fImode\fP に -\fBMPOL_PREFERRED\fP を指定し、 \fInodemask\fP に空集合のノードを指定すればよい。 この方法は -\fBset_mempolicy\fP(2) でも通用する。 - -2.6.16 でヒュージページポリシーへの対応が追加された。 インターリーブポリシーがヒュージページのマッピングで効果を持つには、 -ポリシーが適用されるメモリーが数十メガバイト以上である必要がある。 - -\fBMPOL_MF_STRICT\fP はヒュージページのマッピングでは無視される。 - -\fBMPOL_MF_MOVE\fP と \fBMPOL_MF_MOVE_ALL\fP は Linux 2.6.16 以降でのみ利用可能である。 -.SH 関連項目 -\fBget_mempolicy\fP(2), \fBgetcpu\fP(2), \fBmmap\fP(2), \fBset_mempolicy\fP(2), -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/memfd_create.2 b/manual/LDP_man-pages/draft/man2/memfd_create.2 deleted file mode 100644 index 8702c6b8..00000000 --- a/manual/LDP_man-pages/draft/man2/memfd_create.2 +++ /dev/null @@ -1,331 +0,0 @@ -.\" Copyright (C) 2014 Michael Kerrisk -.\" and Copyright (C) 2014 David Herrmann -.\" -.\" %%%LICENSE_START(GPLv2+) -.\" -.\" 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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.TH MEMFD_CREATE 2 2015\-01\-22 Linux "Linux Programmer's Manual" -.SH 名前 -memfd_create \- 無名ファイル (anonymous file) を作成する -.SH 書式 -\fB#include \fP -.sp -\fBint memfd_create(const char *\fP\fIname\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP -.SH 説明 -.\" David Herrmann: -.\" memfd uses VM_NORESERVE so each page is accounted on first access. -.\" This means, the overcommit-limits (see __vm_enough_memory()) and the -.\" memory-cgroup limits (mem_cgroup_try_charge()) are applied. Note that -.\" those are accounted on "current" and "current->mm", that is, the -.\" process doing the first page access. -\fBmemfd_create\fP() は、 無名ファイル (anonymous file) を作成し、 -そのファイルを参照するファイルディスクリプターを返す。 このファイルは通常のファイルと同様に振る舞い、 変更、切り詰め (truncate)、 -メモリーマップなどを行うことができる。 しかし、 通常のファイルとは違い、 このファイルは RAM 上に置かれ、 格納されるストレージは揮発性である。 -このファイルへの参照がすべてなくなると、 ファイルは自動的に解放される。 このファイルが置かれるページには無名メモリー (anonymous -memory) が使用される。 したがって、 \fBmemfd_create\fP() で作成されたフィアルは、 他の無名メモリーの割り当て -(\fBMAP_ANONYMOUS\fP フラグ付きの \fBmmap\fP(2) を使って割り当てられた無名メモリーなど) と同じ動作をする。 - -ファイルの初期サイズは 0 に設定される。 呼び出しの後に、 \fBftruncate\fP(2) を使ってファイルサイズを設定すべきである (代わりに、 -\fBwrite\fP(2) や同様の関数を呼び出してファイルにデータを書き込むこともできる)。 - -\fIname\fP に指定された名前はファイル名として使用され、 ディレクトリ \fI/proc/self/fd/\fP -で対応するシンボリックリンクのリンク先として表示される。 表示される名前の前には常に \fImemfd:\fP が付き、 -この名前はデバッグ用途としてのみ機能する。 名前はファイルディスクリプターの動作には影響せず、 複数のファイルが同じ名前を持っても副作用はない。 - -以下の値をビット論理和で \fIflags\fP に指定して、 \fBmemfd_create\fP() の動作を変更できる。 -.TP -\fBMFD_CLOEXEC\fP -新しいファイルディスクリプターに close\-on\-exec (\fBFD_CLOEXEC\fP) フラグをセットする。 これが有用な理由については -\fBopen\fP(2) の \fBO_CLOEXEC\fP フラグの説明を参照のこと。 -.TP -\fBMFD_ALLOW_SEALING\fP -.\" FIXME Why is the MFD_ALLOW_SEALING behavior not simply the default? -.\" Is it worth adding some text explaining this? -このファイルに対して sealing 操作を許可する。 \fBfcntl\fP(2) の \fBF_ADD_SEALS\fP と \fBF_GET_SEALS\fP -操作の議論を参照。 下記の「注意」も参照。 初期の seal 集合は空となる。 このフラグを指定しなかった場合、 初期の seal 集合は -\fBF_SEAL_SEAL\fP となり、 これはこのファイルには他の seal をセットできないことということである。 -.PP -\fIflags\fP の未使用のビットは 0 でなければならない。 - -返り値として \fBmemfd_create\fP() は、 作成したファイルを参照するのに使用できる新しいファイルディスクリプターを返す。 -このファイルディスクリプターは読み書き両用 (\fBO_RDWR\fP) でオープンされ、 \fBO_LARGEFILE\fP -がこのファイルディスクリプターにセットされる。 - -\fBfork\fP(2) と \fBexecve\fP(2) に関しては、 \fBmemfd_create\fP() -で作成したファイルディスクリプターについても通常の動作が適用される。 ファイルディスクリプターのコピーは \fBfork\fP(2) -で生成される子プロセスに継承され、 同じファイルを参照する。 close\-on\-exec フラグがセットされていない限り、 \fBexecve\fP(2) -の前後でファイルディスクリプターは保持される。 -.SH 返り値 -成功の場合、 \fBmemfd_create\fP() は新しいファイルディスクリプターを返す。 エラーの場合、\-1 を返し、 \fIerrno\fP -にエラーを示す値を設定する。 -.SH エラー -.TP -\fBEFAULT\fP -\fIname\fP のアドレスが無効なメモリーを指している。 -.TP -\fBEINVAL\fP -サポートされていない値がいずれかの引き数で指定された。 \fIflags\fP に未知のビットが含まれていたか、 \fIname\fP が長過ぎた。 -.TP -\fBEMFILE\fP -オープンされているファイルディスクリプターのプロセス単位の上限に達した。 -.TP -\fBENFILE\fP -システム全体でオープンされているファイルの総数が上限に達した。 -.TP -\fBENOMEM\fP -新しい無名ファイルを作成するのに十分なメモリーがなかった。 -.SH バージョン -.\" FIXME . When glibc support appears, update the following sentence: -\fBmemfd_create\fP() システムコールは Linux 3.17 で初めて登場した。 GNU C ライブラリでのサポートは検討中である。 -.SH 準拠 -\fBmemfd_create\fP() システムコールは Linux 固有である。 -.SH 注意 -.\" See also http://lwn.net/Articles/593918/ -.\" and http://lwn.net/Articles/594919/ and http://lwn.net/Articles/591108/ -\fBmemfd_create\fP() システムコールは、 手動で \fItmpfs\fP ファイルシステムをマウントして、 -そのファイルシステムにファイルをオープンするという操作の、 簡単な代替手段を提供している。 \fBmemfd_create\fP() の主な目的は、 -\fBfcntl\fP(2) が提供する file\-sealing API で使用できる、 -ファイルとそれに関連付けられるファイルディスクリプターを作成することである。 - -\fBmemfd_create\fP() システムコールは、 file sealing なしでも用途がある (これが明示的に -\fBMFD_ALLOW_SEALING\fP フラグが要求されない限り、 file\-sealing が無効になる理由である)。 特に、 -ファイルシステムに実際にファイルを残す意図がない場合、 \fItmp\fP にファイルを作成したり \fBopen\fP(2) \fBO_TMPFILE\fP -を使ったりする際の代替手段として使用できる。 -.SS "file sealing" -file sealing がない場合、 共有メモリー経由で通信するプロセスは、 互いに信頼するか、 -信頼していない相手が共有メモリー領域を問題がある方法で操作する可能性に対処するための対策を講じなければならない。 -例えば、 信頼していない相手は、 いつでも共有メモリーの内容を変更したり、 共有メモリー領域を縮小したりする可能性がある。 前者の場合は、 -ローカルプロセスでは、 データの確認時点と使用時点の競合条件の問題が起こり得る -(通常はこの問題への対処は共有メモリー領域からデータをこぴーしてからデータを確認、使用することである)。 後者の場合は、 ローカルプロセスでは、 -共有メモリー領域の存在しなくなった場所にアクセスしようとした際にシグナル \fBSIGBUS\fP が発生する可能性がある (この可能性に対処するにはシグナル -\fBSIGBUS\fP に対してハンドラーを使用する必要がある)。 - -信頼していない相手への対処により、 共有メモリーを利用するコードに余計な複雑性が増すことになる。 メモリー sealing -により余計な複雑性をなくすことができる。 相手が望まない方法で共有メモリーを変更できないことを知っていることで、 プロセスは安全に動作できるようになる。 - -sealing 機構の使い方の例は以下のとおりである。 - -.IP 1. 3 -最初のプロセスは \fBmemfd_create\fP() を使って \fItmpfs\fP ファイルを作成する。 \fBmemfd_create\fP() -はこれ以降のステップで使用するファイルディスクリプターを返す。 -.IP 2. -最初のプロセスは \fBftruncate\fP(2) を使って直前のステップで作成したファイルのサイズを変更し、 \fBmmap\fP(2) -を使ってそのファイルをマッピングし、 共有メモリーに所望のデータを配置する。 -.IP 3. -最初のプロセスは、 このファイルに対する今後の変更を制限するために、 \fBfcntl\fP(2) の \fBF_ADD_SEALS\fP 操作を使って、 -そのファイルに seal をいくつか設定する。 (seal \fBF_SEAL_WRITE\fP を設定する場合、 -直前のステップで作成した書き込み可能な共有マッピングをまずアンマップする必要が出てくる。) -.IP 4. -二つ目のプロセスは \fItmpfs\fP ファイルのファイルディスクリプターを入手し、 そのファイルをマップする。 以下に示す方法を使用することができる。 -.RS -.IP * 3 -\fBmemfd_create\fP() を呼び出したプロセスは、 得られたファイルディスクリプターを二つ目のプロセスに UNIX -ドメインソケット経由で渡すことができる (\fBunix\fP(7) と \fBcmsg\fP(3) を参照)。 それから、二つ目のプロセスは \fBmmap\fP(2) -を使ってファイルをマップする。 -.IP * -二つ目のプロセスを \fBfork\fP(2) を使って作成する。 そうすると、 自動的にファイルディスクリプターとマッピングが継承される。 -(この方法と次の方法では、 二つのプロセス間で自然な信頼関係が存在することになる。 なぜなら、 二つのプロセスは同じユーザー ID。 -の元で実行されているからである。 したがって、 file sealing は通常は不要であろう。) -.IP * -二つ目のプロセスは \fI/proc//fd/\fP をオープンする。 \fI\fP -は最初のプロセス (\fBmemfd_create\fP() を呼び出したプロセス) の PID で、 \fI\fP は最初のプロセスでの -\fBmemfd_create\fP() の呼び出しで返されたファイルディスクリプター番号である。 それからこのファイルを \fBmmap\fP(2) -を使ってマッピングする。 -.RE -.IP 5. -二つ目のプロセスは \fBfcntl\fP(2) の \fBF_GET_SEALS\fP 操作を使って、 そのファイルに適用されている seal -のビットマスクを取得する。 このビットマスクを調べて、 ファイルの変更に関してどのような制限が適用されているかを知ることができる。 -(\fBF_SEAL_SEAL\fP seal がそれまでに適用されていない限りは) 必要であれば、 二つ目のプロセスはさらに seal -を設定して追加の制限をかけることができる。 -.SH 例 -以下では \fBmemfd_create\fP() と file sealing API の使用例を示すサンプルプログラムを 2 つとりあげる。 - -最初のプログラム \fIt_memfd_create.c\fP は、 \fBmemfd_create\fP() を使って \fItmpfs\fP ファイルを作成し、 -そのファイルのサイズを設定し、 メモリーにマッピングし、 要求された場合にはそのファイルに seal を設定する。 このプログラムは最大で 3 -つのコマンドライン引き数を取り、 最初の 2 つは必須である。 最初の引き数はファイルに関連付けられる名前で、 2 -番目の引き数はファイルに設定されるサイズである。 省略可能な 3 番目の引き数は、 このファイルに設定する seal を指定する文字列である。 - -2 つめのプログラム \fIt_get_seals.c\fP を使うと、 \fBmemfd_create\fP() を使って作成された既存のファイルをオープンし、 -そのファイルに適用されている seal の集合を調査できる。 - -以下のシェルのセッションはこれらのプログラムの使用例を示したものである。 まず \fItmpfs\fP ファイルを作成し、そのファイルに seal -をいくつか設定している。 - -.in +4n -.nf -$ \fB./t_memfd_create my_memfd_file 4096 sw &\fP -[1] 11775 -PID: 11775; fd: 3; /proc/11775/fd/3 -.fi -.in - -この時点では、 \fIt_memfd_create\fP プログラムはバックグラウンドで動作し続ける。 もう一つのプログラムから、 -\fBmemfd_create\fP() がオープンしたディスクリプターに対応する \fI/proc/PID/fd\fP ファイルをオープンすることで、 -\fBmemfd_create\fP() で作成されたファイルのファイルディスクリプターを取得できる。 -そのパス名を使って、 \fI/proc/PID/fd\fP シンボリックリンクの内容を調査し、 \fIt_get_seals\fP -プログラムを使ってそのファイルに設定されている seal を見ることができる。 - -.in +4n -.nf -$ \fBreadlink /proc/11775/fd/3\fP -/memfd:my_memfd_file (deleted) -$ \fB./t_get_seals /proc/11775/fd/3\fP -Existing seals: WRITE SHRINK -.fi -.in -.SS "プログラムのソース: t_memfd_create.c" -\& -.nf -#include -#include -#include -#include -#include -#include - -#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \e - } while (0) - -int -main(int argc, char *argv[]) -{ - int fd; - unsigned int seals; - char *addr; - char *name, *seals_arg; - ssize_t len; - - if (argc < 3) { - fprintf(stderr, "%s name size [seals]\en", argv[0]); - fprintf(stderr, "\et\(aqseals\(aq can contain any of the " - "following characters:\en"); - fprintf(stderr, "\et\etg \- F_SEAL_GROW\en"); - fprintf(stderr, "\et\ets \- F_SEAL_SHRINK\en"); - fprintf(stderr, "\et\etw \- F_SEAL_WRITE\en"); - fprintf(stderr, "\et\etS \- F_SEAL_SEAL\en"); - exit(EXIT_FAILURE); - } - - name = argv[1]; - len = atoi(argv[2]); - seals_arg = argv[3]; - - /* Create an anonymous file in tmpfs; allow seals to be - placed on the file */ - - fd = memfd_create(name, MFD_ALLOW_SEALING); - if (fd == \-1) - errExit("memfd_create"); - - /* Size the file as specified on the command line */ - - if (ftruncate(fd, len) == \-1) - errExit("truncate"); - - printf("PID: %ld; fd: %d; /proc/%ld/fd/%d\en", - (long) getpid(), fd, (long) getpid(), fd); - - /* Code to map the file and populate the mapping with data - omitted */ - - /* If a \(aqseals\(aq command\-line argument was supplied, set some - seals on the file */ - - if (seals_arg != NULL) { - seals = 0; - - if (strchr(seals_arg, \(aqg\(aq) != NULL) - seals |= F_SEAL_GROW; - if (strchr(seals_arg, \(aqs\(aq) != NULL) - seals |= F_SEAL_SHRINK; - if (strchr(seals_arg, \(aqw\(aq) != NULL) - seals |= F_SEAL_WRITE; - if (strchr(seals_arg, \(aqS\(aq) != NULL) - seals |= F_SEAL_SEAL; - - if (fcntl(fd, F_ADD_SEALS, seals) == \-1) - errExit("fcntl"); - } - - /* Keep running, so that the file created by memfd_create() - continues to exist */ - - pause(); - - exit(EXIT_SUCCESS); -} -.fi -.SS "プログラムのソース: t_get_seals.c" -\& -.nf -#include -#include -#include -#include -#include -#include - -#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \e - } while (0) - -int -main(int argc, char *argv[]) -{ - int fd; - unsigned int seals; - - if (argc != 2) { - fprintf(stderr, "%s /proc/PID/fd/FD\en", argv[0]); - exit(EXIT_FAILURE); - } - - fd = open(argv[1], O_RDWR); - if (fd == \-1) - errExit("open"); - - seals = fcntl(fd, F_GET_SEALS); - if (seals == \-1) - errExit("fcntl"); - - printf("Existing seals:"); - if (seals & F_SEAL_SEAL) - printf(" SEAL"); - if (seals & F_SEAL_GROW) - printf(" GROW"); - if (seals & F_SEAL_WRITE) - printf(" WRITE"); - if (seals & F_SEAL_SHRINK) - printf(" SHRINK"); - printf("\en"); - - /* Code to map the file and access the contents of the - resulting mapping omitted */ - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBfcntl\fP(2), \fBftruncate\fP(2), \fBmmap\fP(2), \fBshmget\fP(2), \fBshm_open\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/migrate_pages.2 b/manual/LDP_man-pages/draft/man2/migrate_pages.2 index 71e06f45..f2482d58 100644 --- a/manual/LDP_man-pages/draft/man2/migrate_pages.2 +++ b/manual/LDP_man-pages/draft/man2/migrate_pages.2 @@ -26,18 +26,18 @@ .\" Translated 2012-05-10, Akihiro MOTOKI .\" Updated 2013-03-26, Akihiro MOTOKI .\" -.TH MIGRATE_PAGES 2 2012\-08\-01 Linux "Linux Programmer's Manual" +.TH MIGRATE_PAGES 2 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 migrate_pages \- プロセスの全ページを別のノード集合に移動する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBlong migrate_pages(int \fP\fIpid\fP\fB, unsigned long \fP\fImaxnode,\fP \fB const unsigned long *\fP\fIold_nodes,\fP \fB const unsigned long *\fP\fInew_nodes\fP\fB);\fP .fi -.sp +.PP \fI\-lnuma\fP とリンクする。 .SH 説明 \fBMIGRATE_PAGES\fP() は、メモリーノード \fIold_nodes\fP にあるプロセス \fIpid\fP @@ -45,21 +45,21 @@ migrate_pages \- プロセスの全ページを別のノード集合に移動す 指定されたメモリーノードに置かれていないページは移動されない。 カーネルは、 \fInew_nodes\fP への移動の際に、 \fIold_nodes\fP 内の相対的な トポロジー関係を可能な限り維持しようとする。 - +.PP 引き数 \fIold_nodes\fP と \fInew_nodes\fP は、最大で \fImaxnode\fP ビットから 構成されるノード番号のビットマスクへのポインターである。 各ビットマスクは符号なし \fIlong\fP 整数の配列として管理される (\fImaxnode\fP で指定された長さを越えた部分のビットは無視される)。 引き数 \fImaxnode\fP は最大ノード番号であり、ビットマスクの長さに 1 を 加えた値となる (これは \fBmbind\fP(2) と同じだが、 \fBselect\fP(2) とは違う)。 - +.PP 引き数 \fIpid\fP は、移動を行うページの所有者のプロセス ID である。 別のプロセスのページを移動するには、呼び出したプロセスが特権 (\fBCAP_SYS_NICE\fP) を持っているか、呼び出したプロセスの実ユーザー ID か 実効ユーザー ID がページ移動の対象プロセスの実ユーザー ID か saved\-set ユーザー ID と一致していなければならない。\fIpid\fP が 0 の場合、 \fBmigrate_pages\fP() は呼び出したプロセスのページを移動する。 - +.PP 別のプロセスと共有しているページは、呼び出したプロセスが \fBCAP_SYS_NICE\fP 特権を持っている場合にのみ移動される。 .SH 返り値 @@ -68,6 +68,19 @@ migrate_pages \- プロセスの全ページを別のノード集合に移動す エラーの場合、 \-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 .SH エラー .TP +\fBEFAULT\fP +Part or all of the memory range specified by \fIold_nodes\fP/\fInew_nodes\fP and +\fImaxnode\fP points outside your accessible address space. +.TP +\fBEINVAL\fP +.\" As at 3.5, this limit is "a page worth of bits", e.g., +.\" 8 * 4096 bits, assuming a 4kB page size. +The value specified by \fImaxnode\fP exceeds a kernel\-imposed limit. Or, +\fIold_nodes\fP or \fInew_nodes\fP specifies one or more node IDs that are greater +than the maximum supported node ID. Or, none of the node IDs specified by +\fInew_nodes\fP are on\-line and allowed by the process's current cpuset +context, or none of the specified nodes contain memory. +.TP \fBEPERM\fP \fIpid\fP で指定されたプロセスのページを移動するのに必要な特権 (\fBCAP_SYS_NICE\fP) がなかった。または、指定された対象ノードにアクセス @@ -82,28 +95,27 @@ migrate_pages \- プロセスの全ページを別のノード集合に移動す このシステムコールは Linux 固有である。 .SH 注意 ライブラリによるサポートについては \fBnuma\fP(7) を参照。 - +.PP 呼び出し元プロセスの CPU 集合で許可されているノード集合を取得するには、 \fBMPOL_F_MEMS_ALLOWED\fP フラグを付けて \fBget_mempolicy\fP(2) を使うこと。 この情報は、手動/自動に限らず CPU 集合の再構成によりいつでも 変更されることがある点に注意してほしい。 - +.PP \fBmigrate_pages\fP を使用すると、ページが置かれる場所 (ノード) が、指定 されたアドレスに対して設定されたメモリーポリシー (\fBmbind\fP(2) 参照) や 指定されたプロセスに対して設定されたメモリーポリシー (\fBset_mempolicy\fP(2) 参照) に違反する状況になる可能性がある。 すなわち、メモリーポリシーによる制約は \fBmigrate_pages\fP() による移動先 ノードの選択には適用されないということである。 - +.PP ヘッダーファイル \fI\fP は glibc には含まれておらず、 \fIlibnuma\-devel\fP か同様のパッケージをインストールする必要がある。 .SH 関連項目 \fBget_mempolicy\fP(2), \fBmbind\fP(2), \fBset_mempolicy\fP(2), \fBnuma\fP(3), \fBnuma_maps\fP(5), \fBcpuset\fP(7), \fBnuma\fP(7), \fBmigratepages\fP(8), \fBnumastat\fP(8) - -Linux カーネルソースの \fIDocumentation/vm/page_migration\fP +.PP +\fIDocumentation/vm/page_migration.rst\fP in the Linux kernel source tree .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/mincore.2 b/manual/LDP_man-pages/draft/man2/mincore.2 index c806443e..27e0357b 100644 --- a/manual/LDP_man-pages/draft/man2/mincore.2 +++ b/manual/LDP_man-pages/draft/man2/mincore.2 @@ -47,31 +47,35 @@ .\" Updated & Modified Fri Apr 22 02:35:03 JST 2005 by Yuichi SATO .\" Updated 2007-05-04, Akihiro MOTOKI , LDP v2.44 .\" -.TH MINCORE 2 2008\-04\-22 Linux "Linux Programmer's Manual" +.TH MINCORE 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 mincore \- ページがメモリー内にあるかどうかを判定する .SH 書式 \fB#include \fP .br \fB#include \fP -.sp +.PP \fBint mincore(void *\fP\fIaddr\fP\fB, size_t \fP\fIlength\fP\fB, unsigned char *\fP\fIvec\fP\fB);\fP -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBmincore\fP(): _BSD_SOURCE || _SVID_SOURCE +.RE +.PP +\fBmincore\fP(): + Since glibc 2.19: + _DEFAULT_SOURCE + Glibc 2.19 and earlier: + _BSD_SOURCE || _SVID_SOURCE .SH 説明 \fBmincore\fP() は、呼び出し元プロセスの仮想メモリーのページがコア (RAM) 内に存在し、 ページ参照時にディスクアクセス (ページフォールト) を起こさないか どうかを示すベクトルを返す。カーネルは、アドレス \fIaddr\fP から始まる \fIlength\fP バイトの範囲のページに関する存在情報を返す。 - +.PP \fIaddr\fP 引き数はシステムのページサイズの倍数でなければならない。 \fIlength\fP 引き数はページサイズの倍数である必要はないが、 ページ全体に関する存在情報が返されるので、事実上 \fIlength\fP はページサイズの倍数に切り上げられることになる。 ページサイズ (\fBPAGE_SIZE\fP) は \fIsysconf(_SC_PAGESIZE)\fP を使って入手できる。 - +.PP \fIvec\fP 引き数は、少なくとも \fI(length+PAGE_SIZE\-1) / PAGE_SIZE\fP バイトが格納できる配列を指していなければならない。 この呼び出しが返るとき、 各バイトの最下位ビットは、対応するページがメモリー内にそのとき存在すれば セットされ、そうでない場合はクリアされる (各バイトのその他のビットは未定義であり、これらのビットは将来の使用に そなえて予約されている)。 もちろん、 @@ -104,7 +108,8 @@ Linux 2.3.99pre1 と glibc 2.2 から利用可能である。 .\" The .\" .BR mincore () .\" function first appeared in 4.4BSD. -\fBmincore\fP() は POSIX.1\-2001 に記述されておらず、 全ての UNIX 実装で利用可能であるわけではない。 +\fBmincore\fP() is not specified in POSIX.1, and it is not available on all +UNIX implementations. .SH バグ .\" Linux (up to now, 2.6.5), .\" .B mincore @@ -124,8 +129,8 @@ Linux 2.3.99pre1 と glibc 2.2 から利用可能である。 カーネル 2.6.21 より前は、 \fBmincore\fP() は、 \fBMAP_PRIVATE\fP マッピングや非線形マッピング (\fBremap_file_pages\fP(2) を使って作成される) について正しい情報を返さなかった。 .SH 関連項目 -\fBmlock\fP(2), \fBmmap\fP(2) +\fBfincore\fP(1), \fBmadvise\fP(2), \fBmlock\fP(2), \fBmmap\fP(2), \fBposix_fadvise\fP(2), +\fBposix_madvise\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 index b22fe61f..a3c7ffcb 100644 --- a/manual/LDP_man-pages/draft/man2/mkdir.2 +++ b/manual/LDP_man-pages/draft/man2/mkdir.2 @@ -28,7 +28,7 @@ .\" Updated 2013-05-01, Akihiro MOTOKI .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH MKDIR 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH MKDIR 2 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 mkdir, mkdirat \- ディレクトリを作成する .SH 書式 @@ -36,60 +36,62 @@ mkdir, mkdirat \- ディレクトリを作成する .\" .B #include \fB#include \fP \fB#include \fP -.sp +.PP \fBint mkdir(const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB);\fP -.sp + \fB#include \fP/* AT_* 定数の定義 */ \fB#include \fP -.sp +.PP \fBint mkdirat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBmkdirat\fP(): .PD 0 .ad l .RS 4 .TP 4 glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L +_POSIX_C_SOURCE\ >=\ 200809L .TP glibc 2.10 より前: _ATFILE_SOURCE .RE .ad .PD -.fi .SH 説明 \fBmkdir\fP() は \fIpathname\fP で示される名前のディレクトリを作成しようとする。 - -\fImode\fP 引き数は、作成されたディレクトリの許可属性を決定するのに使われる。 この値に、通常通りプロセスの \fIumask\fP -による修正が加えられる。 したがって、作成されたディレクトリの許可属性は (\fImode\fP & ~\fIumask\fP & 0777) となる。 -作成されたディレクトリのその他のモードビットはオペレーティングシステムに 依存する。Linux の場合は、以下の通りである。 - +.PP +The argument \fImode\fP specifies the mode for the new directory (see +\fBinode\fP(7)). It is modified by the process's \fIumask\fP in the usual way: in +the absence of a default ACL, the mode of the created directory is (\fImode\fP +& \(ti\fIumask\fP & 0777). Whether other \fImode\fP bits are honored for the +created directory depends on the operating system. For Linux, see NOTES +below. +.PP 新しく作成されたディレクトリの所有者はプロセスの実効ユーザー ID に設定される。 新たに作成されたディレクトリが含まれる親ディレクトリに set group ID ビットがセットされていたり、ファイルシステムが BSD の グループセマンティクス (\fImount \-o bsdgroups\fP あるいは、同じ意味の \fImount \-o grpid\fP) に従ってマウントされている場合には、 新たに作成されたディレクトリのグループ所有権は親ディレクトリの ものが継承される (親ディレクトリと同じになる)。 それ以外の場合は、グループ所有権はプロセスの実効グループ ID となる。 - +.PP .\" .\" もし親ディレクトリに set group ID ビットがセットされていれば新しく作成される ディレクトリにも set group ID ビットがセットされる。 .SS mkdirat() \fBmkdirat\fP() システムコールは \fBmkdir\fP() と全く同様に動作するが、以下で説明する点が異なる。 - +.PP \fIpathname\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fIdirfd\fP が参照するディレクトリに対する相対パスと解釈される (\fBmkdir\fP() に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。 - +.PP \fIpathname\fP で指定されたパス名が相対パスで、 \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBmkdir\fP() と同様に) \fIpathname\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 - +.PP \fIpathname\fP で指定されたパス名が絶対パスの場合、 \fIdirfd\fP は無視される。 .PP \fBmkdirat\fP() の必要性についての説明については \fBopenat\fP(2) を参照。 @@ -112,6 +114,11 @@ group ID ビットがセットされていたり、ファイルシステムが B \fBEFAULT\fP \fIpathname\fP がアクセス可能なアドレス空間の外を指している。 .TP +\fBEINVAL\fP +The final component ("basename") of the new directory's \fIpathname\fP is +invalid (e.g., it contains characters not permitted by the underlying +filesystem). +.TP \fBELOOP\fP \fIpathname\fP を解決するときに、解決すべきシンボリックリンクが多すぎた。 .TP @@ -155,12 +162,11 @@ group ID ビットがセットされていたり、ファイルシステムが B .SH 準拠 .\" SVr4 documents additional EIO, EMULTIHOP \fBmkdir\fP(): SVr4, BSD, POSIX.1\-2001, POSIX.1\-2008. - +.PP \fBmkdirat\fP(): POSIX.1\-2008. .SH 注意 -Linux では、許可ビット以外で意味を持つのは、 \fBS_ISVTX\fP モードビットだけである。 つまり、Linux -では作成されたディレクトリは実際には (\fImode\fP & ~\fIumask\fP & 01777) のモードを持つことになる。 \fBstat\fP(2) -を参照のこと。 +Under Linux, apart from the permission bits, the \fBS_ISVTX\fP \fImode\fP bit is +also honored. .PP NFS を実現しているプロトコルには多くの不備が存在し、 それら中には \fBmkdir\fP() に影響を与えるものもある。 .SS "glibc での注意" @@ -169,8 +175,8 @@ NFS を実現しているプロトコルには多くの不備が存在し、 そ のシンボリックリンクに基づいてパス名を構成する。 .SH 関連項目 \fBmkdir\fP(1), \fBchmod\fP(2), \fBchown\fP(2), \fBmknod\fP(2), \fBmount\fP(2), -\fBrmdir\fP(2), \fBstat\fP(2), \fBumask\fP(2), \fBunlink\fP(2), \fBpath_resolution\fP(7) +\fBrmdir\fP(2), \fBstat\fP(2), \fBumask\fP(2), \fBunlink\fP(2), \fBacl\fP(5), +\fBpath_resolution\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 index f0d617e7..130f8c21 100644 --- a/manual/LDP_man-pages/draft/man2/mknod.2 +++ b/manual/LDP_man-pages/draft/man2/mknod.2 @@ -27,7 +27,7 @@ .\" Updated & Modified 2004-12-31, Yuichi SATO .\" Updated 2005-09-06, Akihiro MOTOKI .\" -.TH MKNOD 2 2014\-02\-21 Linux "Linux Programmer's Manual" +.TH MKNOD 2 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 mknod, mknodat \- 特殊ファイルや通常のファイルを作成する .SH 書式 @@ -36,46 +36,53 @@ mknod, mknodat \- 特殊ファイルや通常のファイルを作成する \fB#include \fP \fB#include \fP \fB#include \fP -.sp +.PP \fBint mknod(const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB, dev_t \fP\fIdev\fP\fB);\fP -.sp + \fB#include \fP/* AT_* 定数の定義 */ \fB#include \fP -.sp +.PP \fBint mknodat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB, dev_t \fP\fIdev\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBmknod\fP(): .ad l .RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +.\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +_XOPEN_SOURCE\ >=\ 500 + || /* Since glibc 2.19: */ _DEFAULT_SOURCE + || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .RE .ad .SH 説明 システムコール \fBmknod\fP() は \fIpathname\fP という名前のファイルシステムノード (ファイル、デバイススペシャルファイル、名前付きパイプ) を、 属性 \fImode\fP と \fIdev\fP の指定にしたがって作成する。 - -\fImode\fP 引き数には、作成するノードの許可属性 (permission) とタイプを指定する。 \fImode\fP -の指定は以下にあげるファイルタイプのうちの 1 つと、 許可属性の組合せ (ビットごとの OR を使用) で行う。 - -許可属性は通常通り、プロセスの \fIumask\fP によって修正され、作成されたノードの許可属性は \fI(mode & ~umask)\fP となる。 - +.PP +The \fImode\fP argument specifies both the file mode to use and the type of +node to be created. It should be a combination (using bitwise OR) of one of +the file types listed below and zero or more of the file mode bits listed in +\fBinode\fP(7). +.PP +The file mode is modified by the process's \fIumask\fP in the usual way: in the +absence of a default ACL, the permissions of the created node are (\fImode\fP & +\(ti\fIumask\fP). +.PP .\" (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 と同じである)。 - +.PP ファイルタイプが \fBS_IFCHR\fP または \fBS_IFBLK\fP のとき、 \fIdev\fP には作成するデバイススペシャルファイルのメジャー番号と マイナー番号を指定する (\fBmakedev\fP(3) は \fIdev\fP のこれらの番号を作成する際に役立つだろう)。 それ以外の場合は \fIdev\fP は無視される。 - +.PP \fIpathname\fP が既に存在する場合、またはシンボリックリンクの場合、 この呼び出しは \fBEEXIST\fP エラーで失敗する。 - +.PP .\" .\" 新しく作成されたノードの所有者はプロセスの実効ユーザー ID にセットされる。 新たに作られたノードを保持する 親ディレクトリの @@ -83,15 +90,18 @@ set\-group\-ID ビットがセットされていたり、 ファイルシステ マウントされている場合には、新しいノードのグループ所有権は親ディレクトリの グループ所有権を継承する (親ディレクトリと同じになる)。 また、そうでなかった場合の所有グループはプロセスの実効グループ ID となる。 .SS mknodat() -\fBmknodat\fP() システムコールは \fBmknod\fP() と全く同様に動作するが、以下で説明する点が異なる。 - -\fIpathname\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fIdirfd\fP -が参照するディレクトリに対する相対パスと解釈される (\fBmknod\fP() -に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。 - -\fIpathname\fP で指定されたパス名が相対パスで、 \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBmknod\fP() -と同様に) \fIpathname\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 - +The \fBmknodat\fP() system call operates in exactly the same way as +\fBmknod\fP(), except for the differences described here. +.PP +If the pathname given in \fIpathname\fP is relative, then it is interpreted +relative to the directory referred to by the file descriptor \fIdirfd\fP +(rather than relative to the current working directory of the calling +process, as is done by \fBmknod\fP() for a relative pathname). +.PP +If \fIpathname\fP is relative and \fIdirfd\fP is the special value \fBAT_FDCWD\fP, +then \fIpathname\fP is interpreted relative to the current working directory of +the calling process (like \fBmknod\fP()). +.PP \fIpathname\fP で指定されたパス名が絶対パスの場合、 \fIdirfd\fP は無視される。 .PP \fBmknodat\fP() の必要性についての説明については \fBopenat\fP(2) を参照。 @@ -161,24 +171,24 @@ set\-group\-ID ビットがセットされていたり、 ファイルシステ .\" does not require root permission to create pipes, also in that no .\" EMULTIHOP, ENOLINK, or EINTR error is documented. \fBmknod\fP(): SVr4, 4.4BSD, POSIX.1\-2001 (下記も参照), POSIX.1\-2008. - +.PP \fBmknodat\fP(): POSIX.1\-2008. .SH 注意 POSIX.1\-2001 では次のように書いている: 「\fBmknod\fP() の唯一の移植性のある使用法は、FIFO スペシャルファイルを作成することである。 \fImode\fP が \fBS_IFIFO\fP ではない場合、または \fIdev\fP が 0 ではない場合、 \fBmknod\fP() の挙動は規定されていない。」 しかしながら、現在ではこの目的のために \fBmknod\fP() を使用すべきではない。この目的のために特別に定義された関数である \fBmkfifo\fP() を使用すべきである。 - +.PP .\" and one should make UNIX domain sockets with socket(2) and bind(2). Linux では、ディレクトリを作成するために \fBmknod\fP() を使用することはできない。 ディレクトリは \fBmkdir\fP(2) で作成すべきである。 - -NFS を実現しているプロトコルには多くの不備が存在し、 それらのいくつかは \fBmknod\fP() と \fBmknodat\fP() に影響を与える。 +.PP +There are many infelicities in the protocol underlying NFS. Some of these +affect \fBmknod\fP() and \fBmknodat\fP(). .SH 関連項目 -\fBchmod\fP(2), \fBchown\fP(2), \fBfcntl\fP(2), \fBmkdir\fP(2), \fBmknodat\fP(2), +\fBmknod\fP(1), \fBchmod\fP(2), \fBchown\fP(2), \fBfcntl\fP(2), \fBmkdir\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) +\fBmakedev\fP(3), \fBmkfifo\fP(3), \fBacl\fP(5), \fBpath_resolution\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/mlock.2 b/manual/LDP_man-pages/draft/man2/mlock.2 deleted file mode 100644 index 3d516c75..00000000 --- a/manual/LDP_man-pages/draft/man2/mlock.2 +++ /dev/null @@ -1,209 +0,0 @@ -.\" Copyright (C) Michael Kerrisk, 2004 -.\" using some material drawn from earlier man pages -.\" written by Thomas Kuhn, Copyright 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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-23, HANATAKA Shinya -.\" Updated 2003-10-12, Kentaro Shirakata -.\" Updated 2004-05-23, kentaro Shirakata -.\" Updated 2005-03-29, kentaro Shirakata -.\" Updated 2005-11-04, Akihiro MOTOKI -.\" Updated 2006-02-14, Akihiro MOTOKI -.\" Updated 2008-11-10, Akihiro MOTOKI, LDP v3.13 -.\" Updated 2012-05-01, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH MLOCK 2 2014\-04\-14 Linux "Linux Programmer's Manual" -.SH 名前 -mlock \- メモリーのロックとロック解除を行う -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint mlock(const void *\fP\fIaddr\fP\fB, size_t \fP\fIlen\fP\fB);\fP -\fBint munlock(const void *\fP\fIaddr\fP\fB, size_t \fP\fIlen\fP\fB);\fP -.sp -\fBint mlockall(int \fP\fIflags\fP\fB);\fP -\fBint munlockall(void);\fP -.fi -.SH 説明 -\fBmlock\fP() と \fBmlockall\fP() はそれぞれ、呼び出し元プロセスの仮想アドレス空間の一部または全部を RAM -上にロックし、メモリーがスワップエリアにページングされるのを防ぐ。 \fBmunlock\fP() と \fBmunlockall\fP() -は逆の操作で、それぞれ呼び出し元プロセスの仮想アドレス空間の一部または全部を ロック解除する。つまり、指定された仮想アドレス範囲のページは -カーネルメモリーマネージャーから要求されればスワップアウトするようになる。 メモリーのロックとロック解除はページ単位で行われる。 -.SS "mlock() と munlock()" -\fBmlock\fP() は \fIaddr\fP から始まる長さ \fIlen\fP バイトのアドレス範囲のページをロックする。 呼び出しが成功した場合には、 -指定されたアドレス範囲を含む全てのページは RAM に残り続けることが保証される。 これらのページは後でロック解除されるまで RAM -に残り続けることが保証される。 - -\fBmunlock\fP() は、 \fIaddr\fP から始まる長さ \fIlen\fP バイトのアドレス範囲のページのロックを解除する。 -この呼び出しを行った後は、カーネルが、指定されたメモリー範囲を含む 全てのページを外部のスワップ空間に移動できるようになる。 -.SS "mlockall() と munlockall()" -\fBmlockall\fP() は呼び出し元プロセスのアドレス空間にマップされている全てのページを ロックする。これにはコード、データ、スタックの -各セグメント、共有ライブラリ、カーネルのユーザー空間データ、 共有メモリー、メモリーマップされたファイルが含まれる。 -システムコールが成功した場合には全てのマップされたページは RAM に 残ることを保証される。 これらのページは後でロック解除されるまで RAM -に残り続けることが保証される。 - -\fIflags\fP 引数は以下の内容の一つまたは複数のビット OR から構成される: -.TP 1.2i -\fBMCL_CURRENT\fP -現在、プロセスのアドレス空間にマップされている全てのページをロックする。 -.TP -\fBMCL_FUTURE\fP -将来、プロセスのアドレス空間にマップされる全てのページをロックする。 例えば、ヒープ (heap) やスタックの成長により新しく必要になったページだけで -なく、新しくメモリーマップされたファイルや共有メモリー領域もロックされる。 -.PP -\fBMCL_FUTURE\fP が指定されていると、以後のシステムコール (例えば、 \fBmmap\fP(2), \fBsbrk\fP(2), -\fBmalloc\fP(3)) は、ロックするバイト数が許可された最大値 (下記参照) を超えた場合に 失敗する可能性がある。 -同様に、スタックの成長も失敗する可能性がある。 その場合、カーネルはスタックの拡張を拒否し、 \fBSIGSEGV\fP をプロセスに送る。 - -\fBmunlockall\fP() は、呼び出し元プロセスのアドレス空間にマッピングされている 全てのページをロック解除する。 -.SH 返り値 -成功した場合は、これらのシステムコールはゼロを返す。 エラーの場合は \-1 が返され、 \fIerrno\fP -が適切に設定され、プロセスのアドレス空間におけるロックは変更されない。 -.SH エラー -.TP -\fBENOMEM\fP -(Linux 2.6.9 以降) 呼び出し元は非ゼロの ソフト資源制限 \fBRLIMIT_MEMLOCK\fP -を持つが、制限が許可している以上のメモリーをロックしようとした。 この制限は、プロセスが特権 (\fBCAP_IPC_LOCK\fP) -を持っている場合は適用されない。 -.TP -\fBENOMEM\fP -.\" In the case of mlock(), this check is somewhat buggy: it doesn't -.\" take into account whether the to-be-locked range overlaps with -.\" already locked pages. Thus, suppose we allocate -.\" (num_physpages / 4 + 1) of memory, and lock those pages once using -.\" mlock(), and then lock the *same* page range a second time. -.\" In the case, the second mlock() call will fail, since the check -.\" calculates that the process is trying to lock (num_physpages / 2 + 2) -.\" pages, which of course is not true. (MTK, Nov 04, kernel 2.4.28) -(Linux 2.4 以前) 呼び出し元プロセスが RAM の半分以上をロックしようとした。 -.TP -\fBEPERM\fP -.\"SVr4 documents an additional EAGAIN error code. -呼び出し側が特権を持っていないが、 -要求された操作を実行するには特権 (\fBCAP_IPC_LOCK\fP) が必要である。 -.LP -\fBmlock\fP() と \fBmunlock\fP() 用として: -.TP -\fBEAGAIN\fP -指定されたアドレス範囲の一部または全てをロックすることができなかった。 -.TP -\fBEINVAL\fP -\fIstart\fP+\fIlen\fP の加算の結果が \fIstart\fP よりも小さかった -(例えば、加算でオーバーフローが発生したなど)。 -.TP -\fBEINVAL\fP -(Linux ではこの意味で使われない) \fIaddr\fP がページサイズの倍数ではない。 -.TP -\fBENOMEM\fP -指定されたアドレス範囲がプロセスのアドレス空間にマップされたページと 一致しない。 -.LP -\fBmlockall\fP() 用として: -.TP -\fBEINVAL\fP -未知の \fIflags\fP が指定された。 -.LP -\fBmunlockall\fP() 用として: -.TP -\fBEPERM\fP -(Linux 2.6.8 以前) 呼び出し元が権限 (\fBCAP_IPC_LOCK\fP) を持っていない。 -.SH 準拠 -POSIX.1\-2001, SVr4. -.SH 可用性 -\fBmlock\fP() と \fBmunlock\fP() が使用可能な POSIX システムでは \fB_POSIX_MEMLOCK_RANGE\fP が -\fI\fP で定義されている。 また、ページあたりのバイト数は、 \fI\fP -で定義される定数 \fBPAGESIZE\fP から (定義されている場合)、もしくは \fIsysconf(_SC_PAGESIZE)\fP -を呼び出すことで決定できる。 - -.\" POSIX.1-2001: It shall be defined to -1 or 0 or 200112L. -.\" -1: unavailable, 0: ask using sysconf(). -.\" glibc defines it to 1. -\fBmlockall\fP() と \fBmunlockall\fP() が利用可能な POSIX システムでは、 \fB_POSIX_MEMLOCK\fP は -\fI\fP で 0 より大きい値に定義されている (\fBsysconf\fP(3) も参照のこと)。 -.SH 注意 -メモリーのロックの用途としては主に二つある: リアルタイム アルゴリズムと高いセキュリティの必要なデータ処理である。リアルタイムの -アプリケーションは決定的なタイミングやスケジューリングを必要とするが、 ページングは予期しないプログラムの実行遅延をもたらす主要な要因となる。 -リアルタイムのアプリケーションはたいていは \fBsched_setscheduler\fP(2) でリアルタイムスケジューラに変更される。 -暗号やセキュリティのソフトウェアはしばしばパスワードや秘密鍵のデータの ような重要なバイト列を扱う。ページングの結果、これらの秘密が -スワップ用の固定媒体に転送されるかもしれない。そして、セキュリティ ソフトウェアが RAM 上の秘密を削除して終了したずっと後になっても、 -このスワップされたデータには敵がアクセスできる可能性がある (しかし、ラップトップといくつかのデスクトップコンピュータの サスペンドモードはシステムの -RAM の内容をメモリーのロックに関わらず ディスクに保存することに注意)。 - -リアルタイムプロセスが \fBmlockall\fP() を使ってページフォールトによる遅延を防ごうとする場合、 -関数呼び出しによってページフォールトが発生しないように、 時間制限の厳しい部分 (time\-critical section) に入る前に -十分な量のロックされたスタックを確保しておく必要がある。 これを実現するには、十分な大きさの自動変数 (の配列) を確保し、 -これらのスタック用のページがメモリー上に確保されるようにこの配列に 書き込みを行う関数を用意し、これを呼び出せばよい。こうすることで、 -十分な量のページがスタックにマッピングされ、RAM にロックされる。 ダミーの書き込みを行うことによって、 時間制限の厳しい部分 (critical -section) 内では書き込み時コピーによる ページフォールトさえも発生しないことが保証される。 - -メモリーロックは \fBfork\fP(2) で作成された子プロセスには継承されず、 \fBexecve\fP(2) が呼ばれたり、プロセスが終了した場合は -自動的に削除される (ロック解除される)。 \fBmlockall\fP() の \fBMCL_FUTURE\fP 設定は \fBfork\fP(2) -で作成された子プロセスには継承されず、 \fBexecve\fP(2) の中でクリアされる。 - -あるアドレス範囲に対するメモリーロックは、そのアドレス範囲が \fBmunmap\fP(2) によってアンマップされた場合は削除される。 - -メモリーのロックは累積しない。 すなわち複数回 \fBmlock\fP() や \fBmlockall\fP() を呼び出してロックされたページでも、 -対応する範囲に対して \fBmunlock\fP() を 1 回呼び出したり \fBmunlockall\fP() を呼び出したりするだけでロック解除される。 -複数の場所や複数のプロセスにマップされているページは、少なくとも一つの場所、 一つのプロセスでロックされている限りは RAM に残り続ける。 -.SS "Linux での注意" -Linux では、 \fBmlock\fP() と \fBmunlock\fP() は自動的に \fIaddr\fP -を端数切り捨てにより一番近いページ境界へと丸める。 しかし POSIX.1\-2001 は \fIaddr\fP -がページ境界に合っていることを要求する実装も許している。 そのため移植性を意図したアプリケーションではきちんと境界に合わせた方が良い。 - -Linux 固有の \fI/proc/PID/status\fP ファイルの \fIVmLck\fP フィールドには、 -\fBmlock\fP(), \fBmlockall\fP() および \fBmmap\fP(2) \fBMAP_LOCKED\fP を使って、 -ID が \fIPID\fP のプロセスがロックしているメモリー量 (キロバイト単位) が -表示される。 -.SS 制限と権限 -Linux 2.6.8 以前では、メモリーをロックするためには特権 (\fBCAP_IPC_LOCK\fP) が必要で、 ソフト資源制限 -\fBRLIMIT_MEMLOCK\fP はプロセスがどれだけのメモリーをロックできるかの制限を定義する。 - -Linux 2.6.9 以降では、特権を持つプロセスがロックできるメモリー量は無制限となり、 代わりにソフト資源制限 \fBRLIMIT_MEMLOCK\fP -は特権を持たないプロセスがロックできるメモリー量の制限を定義する。 -.SH バグ -2.4.17 までの 2.4 シリーズの Linux カーネルには、 \fBmlockall\fP() \fBMCL_FUTURE\fP フラグが -\fBfork\fP(2) で継承されると言うバグがある。 これはカーネル 2.4.18 で修正された。 - -.\" See the following LKML thread: -.\" http://marc.theaimsgroup.com/?l=linux-kernel&m=113801392825023&w=2 -.\" "Rationale for RLIMIT_MEMLOCK" -.\" 23 Jan 2006 -カーネル 2.6.9 以降では、特権を持ったプロセスが \fImlockall(MCL_FUTURE)\fP を呼び出した後で、特権をなくした場合 (例えば、 -実効 UID を 0 以外の値に変更するなどにより、 \fBCAP_IPC_LOCK\fP ケーパビリティを失った場合)、リソース上限 -\fBRLIMIT_MEMLOCK\fP に達すると、それ以降のメモリー割り当て (例えば \fBmmap\fP(2), \fBbrk\fP(2)) は失敗する。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 949ca988..00000000 --- a/manual/LDP_man-pages/draft/man2/mmap.2 +++ /dev/null @@ -1,455 +0,0 @@ -.\" Copyright (C) 1996 Andries Brouwer -.\" and Copyright (C) 2006, 2007 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 1997-01-31 by Eric S. Raymond -.\" Modified 2000-03-25 by Jim Van Zandt -.\" Modified 2001-10-04 by John Levon -.\" Modified 2003-02-02 by Andi Kleen -.\" Modified 2003-05-21 by Michael Kerrisk -.\" MAP_LOCKED works from 2.5.37 -.\" Modified 2004-06-17 by Michael Kerrisk -.\" Modified 2004-09-11 by aeb -.\" Modified 2004-12-08, from Eric Estievenart -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997-2000 SUTO, Mitsuaki and NAKANO Takeo -.\" all rights reserved. -.\" Translated 1997-06-26, SUTO, Mitsuaki -.\" Updated & Modified 1999-03-01, NAKANO Takeo -.\" Updated 2000-10-12, Nakano Takeo -.\" Updated 2001-08-16, Nakano Takeo -.\" Updated 2001-11-11, Akihiro MOTOKI -.\" Updated 2002-08-13, Akihiro MOTOKI -.\" Updated 2003-07- 2, Akihiro MOTOKI -.\" Updated 2003-09-14, Akihiro MOTOKI -.\" Updated & Modified 2004-12-28, Yuichi SATO -.\" Updated 2005-09-06, Akihiro MOTOKI -.\" Updated 2005-10-05, Akihiro MOTOKI -.\" Updated 2006-07-23, Akihiro MOTOKI, LDP v2.36 -.\" Updated 2007-01-07, Akihiro MOTOKI, LDP v2.43 -.\" Updated 2007-05-04, Akihiro MOTOKI, LDP v2.46 -.\" Updated 2007-09-03, Akihiro MOTOKI, LDP v2.64 -.\" Updated 2008-08-05, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2008-09-02, Akihiro MOTOKI, LDP v3.08 -.\" Updated 2008-12-24, Akihiro MOTOKI, LDP v3.15 -.\" Updated 2010-04-18, Akihiro MOTOKI, LDP v3.24 -.\" Updated 2012-05-01, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-05-07, Akihiro MOTOKI -.\" -.TH MMAP 2 2015\-01\-22 Linux "Linux Programmer's Manual" -.SH 名前 -mmap, munmap \- ファイルやデバイスをメモリーにマップ/アンマップする -.SH 書式 -.nf -\fB#include \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 - -機能検査マクロの要件に関する情報は「注意」の節を参照。 -.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) 。 -ファイルマッピングを要求したが \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 -\fBEPERM\fP -操作が file seal により禁止されている。 \fBfcntl\fP(2) 参照。 -.TP -\fBETXTBSY\fP -\fBMAP_DENYWRITE\fP がセットされているが \fIfd\fP で指定されているオブジェクトは書き込み用に開かれている。 -.TP -\fBEOVERFLOW\fP -32 ビットアーキテクチャーで large file 拡張を使っている場合 (つまり 64 ビットの \fIoff_t\fP を使う場合)、 -\fIlength\fP で使うページ数と \fIoffset\fP で使うページ数を足した値は \fIunsigned long\fP (32 ビット) を超えてしまう -(オーバーフローしてしまう) 場合がある。 -.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 は で 0 より大きな値に定義される (\fBsysconf\fP(3) -も参照のこと)。 -.SH 注意 -(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) になる。 - -.\" -特定の \fIflags\fP 定数は \fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP のいずれかが定義された場合にのみ定義される。 -(\fB_GNU_SOURCE\fP も定義されている必要がある。これらのフラグはすべて Linux 固有のものなので、 特に \fB_GNU_SOURCE\fP -を必要とする点はもっと論理的に決められるべきであった。) 関係するフラグは \fBMAP_32BIT\fP, \fBMAP_ANONYMOUS\fP -(とその同義語の \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, \fBMAP_STACK\fP である。 -.SS "C ライブラリとカーネル ABI の違い" -.\" 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) を起動する。 -.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 では、 システムはオブジェクト末尾の部分ページを常に 0 で埋め、 末尾より後ろのオブジェクトを決して変更してはならない、と規定している。 -Linux では、 オブジェクト末尾より後ろの部分ページにデータを書き込んだ場合、 -そのファイルをクローズしてアンマップした後であってもページキャッシュにデータが残り続け、 データがファイル自体に書き込まれていなくても、 -それ以降のマッピングで変更された内容が見える可能性がある。 いくつかの場合では、 アンマップを行う前に \fBmsync\fP(2) を呼び出すことで、 -この状況を修正することができる。 しかし、 これは tmpfs では機能しない (例えば、 \fBshm_overview\fP(7) で説明されている -POSIX 共有メモリーインターフェースを使った場合)。 -.SH 例 -.\" FIXME . Add an example here that uses an anonymous shared region for -.\" IPC between parent and child. -.PP -以下のプログラムは、一番目のコマンドライン引き数で指定された ファイルの一部を標準出力に表示する。 -表示する範囲は、二番目、三番目のコマンドライン引き数で渡される オフセットと長さで指定される。 -このプログラムは、指定されたファイルの必要なページのメモリー マッピングを作成し、 \fBwrite\fP(2) を使って所望のバイトを出力する。 -.SS プログラムのソース -.nf -#include -#include -#include -#include -#include -#include - -#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), \fBmemfd_create\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) - -\fBproc\fP(5) の \fI/proc/[pid]/maps\fP, \fI/proc/[pid]/map_files\fP, -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/mmap2.2 b/manual/LDP_man-pages/draft/man2/mmap2.2 index 5cd9b347..a7fda55b 100644 --- a/manual/LDP_man-pages/draft/man2/mmap2.2 +++ b/manual/LDP_man-pages/draft/man2/mmap2.2 @@ -42,13 +42,13 @@ .\" Updated 2013-03-26, Akihiro MOTOKI .\" Updated 2013-07-22, Akihiro MOTOKI .\" -.TH MMAP2 2 2014\-02\-25 Linux "Linux Programmer's Manual" +.TH MMAP2 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 mmap2 \- ファイルやデバイスをメモリーにマップする .SH 書式 .nf \fB#include \fP -.sp +.PP \fBvoid *mmap2(void *\fP\fIaddr\fP\fB, size_t \fP\fIlength\fP\fB, int \fP\fIprot\fP\fB,\fP \fB int \fP\fIflags\fP\fB, int \fP\fIfd\fP\fB, off_t \fP\fIpgoffset\fP\fB);\fP .fi @@ -56,7 +56,7 @@ mmap2 \- ファイルやデバイスをメモリーにマップする これはおそらくあなたが興味のあるシステムコールではないだろう。代わりに \fBmmap\fP(2) を見るとよい。そのページにはこのシステムコールを起動する glibc の ラッパー関数についての説明がある。 - +.PP \fBmmap2\fP() システムコールは \fBmmap\fP(2) と同じインターフェースを提供する。ただ し、最後の引き数には、ファイルのオフセットを (\fBmmap\fP(2) が行っている、バイト 単位ではなく) 4096 バイトを単位として指定する。 これにより、32 ビットの @@ -81,16 +81,15 @@ mmap2 \- ファイルやデバイスをメモリーにマップする .SH 注意 このシステムコールが存在するアーキテクチャーでは、glibc の \fBmmap\fP() のラッパー関数は、 \fBmmap\fP(2) システムコールではなく、このシステムコール (\fBmmap2\fP(2)) を起動する。 - +.PP このシステムコールは x86\-64 には存在しない。 - -.\" ia64 can have page sizes ranging from 4kB to 64kB. +.PP +.\" ia64 can have page sizes ranging from 4 kB to 64 kB. .\" On cris, it looks like the unit might also be the page size, .\" which is 8192 bytes. -- mtk, June 2007 ia64 では、 \fIoffset\fP の単位は、実際にはシステムのページサイズであり、 4096 バイトではない。 .SH 関連項目 \fBgetpagesize\fP(2), \fBmmap\fP(2), \fBmremap\fP(2), \fBmsync\fP(2), \fBshm_open\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/modify_ldt.2 b/manual/LDP_man-pages/draft/man2/modify_ldt.2 deleted file mode 100644 index a4c857a2..00000000 --- a/manual/LDP_man-pages/draft/man2/modify_ldt.2 +++ /dev/null @@ -1,111 +0,0 @@ -.\" Copyright (c) 1995 Michael Chastain (mec@duracef.shout.net), 22 July 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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-23, HANATAKA Shinya -.\" Updated & Modified 2005-02-24, Yuichi SATO -.\" Updated 2007-06-18, Akihiro MOTOKI , LDP v2.57 -.\" -.TH MODIFY_LDT 2 2012\-07\-13 Linux "Linux Programmer's Manual" -.SH 名前 -modify_ldt \- ldt を設定または取得する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint modify_ldt(int \fP\fIfunc\fP\fB, void *\fP\fIptr\fP\fB, unsigned long \fP\fIbytecount\fP\fB);\fP -.fi - -\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 -.SH 説明 -\fBmodify_ldt\fP() はプロセスのローカルディスクリプターテーブル (local descriptor table; ldt) -を読み書きする。 ldt は i386 プロセッサで使用されるプロセスごとのメモリー管理テーブルである。 このテーブルに関してのより詳しい情報は -Intel 386 processor handbook を 参照すること。 -.PP -\fIfunc\fP が 0 ならば、 \fBmodify_ldt\fP() は ldt を \fIptr\fP が指しているメモリーに読み込む。 -読み込むバイト数は実際の ldt のサイズか \fIbytecount\fP より小さい方である。 -.PP -.\" -.\" FIXME Should this page say something about func == 2 and func == 0x11? -.\" In Linux 2.4, func == 2 returned "the default ldt" -.\" In Linux 2.6, func == 2 is a nop, returning a zeroed out structure. -.\" Linux 2.4 and 2.6 implement an operation for func == 0x11 -\fIfunc\fP が 1 ならば、 \fBmodify_ldt\fP() は ldt エントリーの一つを変更する。 \fIptr\fP は \fIuser_desc\fP -構造体を指し、 \fIbytecount\fP はこの構造体の大きさに等しくなければならない。 - -\fIuser_desc\fP 構造体は \fI\fP で以下のように定義されている: -.in +4n -.nf - -struct user_desc { - unsigned int entry_number; - unsigned long base_addr; - unsigned int limit; - unsigned int seg_32bit:1; - unsigned int contents:2; - unsigned int read_exec_only:1; - unsigned int limit_in_pages:1; - unsigned int seg_not_present:1; - unsigned int useable:1; -}; -.fi -.in -.PP -.\" .PP -.\" The ldt is specific for the calling process. Any attempts to change -.\" the ldt to include the address space of another process or the kernel -.\" will result in a segmentation violation when trying to access the memory -.\" outside of the process address space. The memory protection is enforced -.\" at the paging layer. -Linux 2.4 以前では、この構造体は \fImodify_ldt_ldt_s\fP という名前であった。 -.SH 返り値 -成功した場合は、 \fBmodify_ldt\fP() は (読み込みの場合は) 実際に読み込んだバイト数、 または (書き込みの場合は) 0 を返す。 -失敗した場合は \fBmodify_ldt\fP() は \-1 を返し、 \fIerrno\fP をエラーを示す値に設定する。 -.SH エラー -.TP -\fBEFAULT\fP -\fIptr\fP がアドレス空間の外を指している。 -.TP -\fBEINVAL\fP -\fIptr\fP が 0 である、 または \fIfunc\fP が 1 で \fIbytecount\fP が \fImodify_ldt_ldt_s\fP -構造体のサイズと等しくないか、 \fIfunc\fP が 1 で新しい ldt エントリーが無効な値である。 -.TP -\fBENOSYS\fP -\fIfunc\fP が 0 でも 1 でもない。 -.SH 準拠 -このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけない。 -.SH 注意 -glibc はこのシステムコールに対するラッパー関数を提供していない。 \fBsyscall\fP(2) を使って呼び出すこと。 -.SH 関連項目 -\fBvm86\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/mount.2 b/manual/LDP_man-pages/draft/man2/mount.2 deleted file mode 100644 index a93809d1..00000000 --- a/manual/LDP_man-pages/draft/man2/mount.2 +++ /dev/null @@ -1,335 +0,0 @@ -.\" Copyright (C) 1993 Rickard E. Faith -.\" and Copyright (C) 1994 Andries E. Brouwer -.\" and Copyright (C) 2002, 2005 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 1996-11-04 by Eric S. Raymond -.\" Modified 2001-10-13 by Michael Kerrisk -.\" Added note on historical behavior of MS_NOSUID -.\" Modified 2002-05-16 by Michael Kerrisk -.\" Extensive changes and additions -.\" Modified 2002-05-27 by aeb -.\" Modified 2002-06-11 by Michael Kerrisk -.\" Enhanced descriptions of MS_MOVE, MS_BIND, and MS_REMOUNT -.\" Modified 2004-06-17 by Michael Kerrisk -.\" 2005-05-18, mtk, Added MNT_EXPIRE, plus a few other tidy-ups. -.\" 2008-10-06, mtk: move umount*() material into separate umount.2 page. -.\" 2008-10-06, mtk: Add discussion of namespaces. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 SUTO, Mitsuaki -.\" all rights reserved. -.\" Translated 1997-06-26,SUTO, Mitsuaki -.\" Updated 2001-05-20, Kentaro Shirakata -.\" Updated 2001-06-25, Kentaro Shirakata -.\" Updated 2001-10-15, Kentaro Shirakata -.\" Updated 2002-01-01, Kentaro Shirakata -.\" Updated 2002-11-24, Kentaro Shirakata -.\" Updated 2003-01-27, Kentaro Shirakata -.\" Updated 2005-02-28, Akihiro MOTOKI -.\" Updated 2005-09-06, Akihiro MOTOKI -.\" Updated 2006-07-23, Akihiro MOTOKI, LDP v2.36 -.\" Updated 2007-01-07, Akihiro MOTOKI, LDP v2.43 -.\" Updated 2007-05-01, Akihiro MOTOKI, LDP v2.46 -.\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2008-11-10, Akihiro MOTOKI, LDP v3.11 -.\" Updated 2010-04-23, Akihiro MOTOKI, LDP v3.24 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-03-25, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" -.TH MOUNT 2 2014\-09\-21 Linux "Linux Programmer's Manual" -.SH 名前 -mount \- ファイルシステムをマウント/アンマウントする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint mount(const char *\fP\fIsource\fP\fB, const char *\fP\fItarget\fP\fB,\fP -\fB const char *\fP\fIfilesystemtype\fP\fB, unsigned long \fP\fImountflags\fP\fB,\fP -\fB const void *\fP\fIdata\fP\fB);\fP -.fi -.SH 説明 -\fBmount\fP() は \fIsource\fP で指定されたファイルシステム (デバイス名であることが多いが、 ディレクトリ名やダミーの場合もある) を -\fItarget\fP で指定されたディレクトリに結びつける。 - -ファイルシステムのマウントを行うには、 適切な権限 (Linux では \fBCAP_SYS_ADMIN\fP ケーパビリティ) が必要である。 - -.\" Multiple mounts on same mount point: since 2.3.99pre7. -Linux 2.4 以降、ひとつのファイルシステムを複数のマウントポイントに 結びつけることができ、同じマウントポイントに複数のマウントをスタック -させることもできる。 - -引き数 \fIfilesystemtype\fP としてカーネルが対応している値は、 \fI/proc/filesystems\fP で参照できる (例えば -"minix", "ext2", "ext3", "jfs", "xfs", "reiserfs", "msdos", "proc", "nfs", -"iso9660" 等)。 適切なモジュールが読み込まれると、さらに別の値が利用可能になるかもしれない。 - -.\" (as defined in \fI\fP for libc4 and libc5 -.\" and in \fI\fP for glibc2) -.\" FIXME 2.6.15 added flags for "shared subtree" functionality: -.\" MS_UNBINDABLE, MS_PRIVATE, MS_SHARED, MS_SLAVE -.\" -.\" MS_PRIVATE. -.\" All mounts are private by default. Previously shared mounts -.\" can be remarked PRIVATE. -.\" MS_SHARED -.\" Mount points that are marked SHARED propagate mount events -.\" to one another after bing cloned. -.\" MS_SLAVE -.\" A previously shared mount point can be marked SALVE, meaning -.\" it receives propagated events, but does not propagate events. -.\" MS_UNBINDABLE -.\" mounts cannot be bound into other places, and will not be -.\" propagated into new subtrees -.\" mount --make-rshared ==> MS_SHARED | MS_REC -.\" -.\" These settings are visible in proc/mountinfo -.\" -.\" These need to be documented on this page. -.\" See: -.\" Documentation/filesystems/sharedsubtree.txt -.\" -.\" http://lwn.net/Articles/159077/ -.\" -.\" http://myweb.sudhaa.com:2022/~ram/sharedsubtree/paper/sharedsubtree.1.pdf -.\" Shared-Subtree Concept, Implementation, and Applications in Linux -.\" Al Viro viro@ftp.linux.org.uk -.\" Ram Pai linuxram@us.ibm.com -.\" -.\" http://foss.in/2005/slides/sharedsubtree1.pdf -.\" Shared Subtree Concept and Implementation in the Linux Kernel -.\" Ram Pai -.\" -.\" http://www.ibm.com/developerworks/linux/library/l-mount-namespaces/index.html -.\" Applying mount namespaces -.\" -.\" Uncover practical applications for advanced Linux mounts features -.\" Serge E. Hallyn (sergeh@us.ibm.com), Software Engineer, IBM -.\" Ram Pai (linuxram@us.ibm.com), Software Engineer, IBM -.\" Date: 17 Sep 2007 -.\" -.\" FIXME 2.6.25 Added MS_I_VERSION, which needs to be documented. -.\" -引き数 \fImountflags\fP の上位 16 ビットには、マジックナンバー 0xC0ED -(\fBMS_MGC_VAL\fP) を指定することができる (マジックナンバーは、 -カーネルバージョン 2.4 より前では必須であったが、 -現在は必要なく、指定されても無視される)。 -\fImountflags\fP の下位 16 ビットにマウントフラグを指定する。 -.TP -\fBMS_BIND\fP (Linux 2.4 以降) -.\" since 2.4.0-test9 -.\" with the exception of the "hidden" MS_REC mountflags bit -バインドマウントを行う。これはファイルやディレクトリの部分木を ファイルシス -テム内部の別の場所で見えるようにするものである。 バインドマウントを使うと、 -ファイルシステムをまたいで \fBchroot\fP(2) jail を構成することが可能になる。 -引き数 \fIfilesystemtype\fP と \fIdata\fP は無視される。 Linux 2.6.26 より前では -\fImountflags\fP も無視されていた (バインドマウントでは、マウントポイントとなる -ファイルシステムと同じマウントオプションが使用される)。 -.TP -\fBMS_DIRSYNC\fP (Linux 2.5.19 以降) -このファイルシステムへのディレクトリ変更を同期的に行う。 (この特性は個々のディレクトリ、または \fBchattr\fP(1) -を使った部分木毎に設定できる。) -.TP -\fBMS_MANDLOCK\fP -.\" FIXME Describe the MS_MOVE flag in more detail -このファイルシステムのファイルに対して強制ロックを認める。 (強制ロックを有効にするには、 \fBfcntl\fP(2) -で述べられている方法でファイル単位で許可をしなければならない) -.TP -\fBMS_MOVE\fP -部分木を移動する。 \fIsource\fP にはすでに存在するマウントポイントを指定し、 \fItarget\fP には新しい場所を指定する。 -移動はアトミックである。 操作の実行中、部分ツリーがアンマウントされることはない。 \fIfilesystemtype\fP, \fImountflags\fP, -\fIdata\fP 引き数は無視される。 -.TP -\fBMS_NOATIME\fP -このファイルシステムの (全ての種類の) ファイルのアクセス時刻を更新しない。 -.TP -\fBMS_NODEV\fP -このファイルシステムのデバイス (スペシャルファイル) へのアクセスを許可しない。 -.TP -\fBMS_NODIRATIME\fP -このファイルシステムのディレクトリのアクセス時刻を更新しない。 このフラグは \fBMS_NOATIME\fP -で提供される機能のサブセットを提供する。つまり、 \fBMS_NOATIME\fP では \fBMS_NODIRATIME\fP が暗黙のうち設定される。 -.TP -\fBMS_NOEXEC\fP -.\" (Possibly useful for a filesystem that contains non-Linux executables. -.\" Often used as a security feature, e.g., to make sure that restricted -.\" users cannot execute files uploaded using ftp or so.) -このファイルシステムにあるプログラムの実行を許可しない。 -.TP -\fBMS_NOSUID\fP -.\" (This is a security feature to prevent users executing set-user-ID and -.\" set-group-ID programs from removable disk devices.) -このファイルシステムのプログラムを実行するときに、 set\-user\-ID ビットと set\-group\-ID ビットを無視する。 -.TP -\fBMS_RDONLY\fP -.\" -.\" FIXME Document MS_REC, available since 2.4.11. -.\" This flag has meaning in conjunction with MS_BIND and -.\" also with the shared subtree flags. -ファイルシステムを読み込み専用でマウントする。 -.TP -\fBMS_RELATIME\fP (Linux 2.6.20 以降) -.\" Matthew Garrett notes in the patch that added this behavior -.\" that this lets utilities such as tmpreaper (which deletes -.\" files based on last access time) work correctly. -このファイルシステム上のファイルがアクセスされた際、 そのファイルの最終アクセス時刻 (atime) の現在値が 最終修正時刻 (mtime) -や最終状態変更時刻 (ctime) と 等しいか小さい場合にのみ、atime を更新する。 このオプションは、 \fBmutt\fP(1) -のように、最後の内容修正以降にファイルがいつ読み出されたかを知る 必要があるプログラムで有用である。 Linux 2.6.30 以降では、 -\fBMS_NOATIME\fP が指定されていない場合には、このフラグの動作が カーネルのデフォルト動作となっており、 Linux 2.6.30 -より前の動作をさせるためには \fBMS_STRICTATIME\fP フラグを指定する必要がある。 これに加えて、Linux 2.6.30 以降では、 -ファイルの最終アクセス時刻が 1 日以上前の場合、 ファイルの最終アクセス時刻は常に更新される。 -.TP -\fBMS_REMOUNT\fP -すでに存在するマウントを再マウントする。これにより、すでに存在するマウントの \fImountflags\fP と \fIdata\fP -を、一度アンマウントしてから再マウントするという作業をせずに 変更できる。 \fItarget\fP は最初の \fBmount\fP() -呼び出しと同じ値を指定する必要がある。 \fIsource\fP と \fIfilesystemtype\fP は無視される。 引き数 \fImountflags\fP -と \fIdata\fP は、意図的に変更するもの以外は、 元の \fBmount\fP() の呼び出しで使用した値と一致するようにすべきである。 - -\fImountflags\fP のうち \fBMS_RDONLY\fP, \fBMS_SYNCHRONOUS\fP, \fBMS_MANDLOCK\fP は変更可能である。 -カーネル 2.6.16 より前では、 \fBMS_NOATIME\fP, \fBMS_NODIRATIME\fP も変更可能であった。 カーネル 2.4.10 -より前では、上記に加えて、 \fBMS_NOSUID\fP, \fBMS_NODEV\fP, \fBMS_NOEXEC\fP も変更可能であった。 -.TP -\fBMS_SILENT\fP (Linux 2.6.17 以降) -カーネルのログ内のある種の (\fIprintk\fP()) 警告メッセージの表示を抑制する。 このフラグは、名前が不適切で廃止された -\fBMS_VERBOSE\fP フラグ (Linux 2.4.12 以降で利用可能) を置き換えるもので、同じ意味を持つ。 -.TP -\fBMS_STRICTATIME\fP (Linux 2.6.30 以降) -このファイルシステムがアクセスされた際に最終アクセス時刻 (atime) を常に更新する (Linux 2.6.30 -より前では、これがデフォルトの動作 であった)。 このフラグを指定することで、 \fBMS_NOATIME\fP と \fBMS_RELATIME\fP -の両フラグを設定した際の影響を上書きすることができる。 -.TP -\fBMS_SYNCHRONOUS\fP -ファイルシステムに対して同期的に書き込みを行う。 (このファイルシステムの全てのオープンされたファイルに対して、 \fBopen\fP(2) のフラグに -\fBO_SYNC\fP を指定したような動作となる) -.PP -Linux 2.4 以降では、 \fBMS_NODEV\fP, \fBMS_NOEXEC\fP, \fBMS_NOSUID\fP はマウントポイント単位で指定できる。 -カーネル 2.6.16 以降では、 \fBMS_NOATIME\fP と \fBMS_NODIRATIME\fP もマウントポイント単位で指定できる。 また、 -\fBMS_RELATIME\fP フラグもマウントポイント単位で設定できる。 -.PP -引き数 \fIdata\fP がどのように解釈されるかは、ファイルシステムによって異なる。 たいていは、指定されたファイルシステムで利用可能なオプションが -コンマ区切りで並べられた文字列である。 各ファイルシステムに対して指定可能なオプションの詳細については \fBmount\fP(8) を参照のこと。 -.SH 返り値 -成功した場合、0 が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。 -.SH エラー -以下に示すエラーは、ファイルシステムに依存しないものである。 それぞれのファイルシステムタイプには固有のエラーが存在する場合があり、 -独自の動作をすることもある。詳しくは Linux カーネルのソースを見て欲しい。 -.TP -\fBEACCES\fP -.\" mtk: Probably: write permission is required for MS_BIND, with -.\" the error EPERM if not present; CAP_DAC_OVERRIDE is required. -パスに含まれるディレクトリに検索 (実行) 許可がない (\fBpath_resolution\fP(7) も参照)。 または、 \fBMS_RONLY\fP -フラグを指定せずに読み込み専用のファイルシステムを マウントしようとした。 または、ブロックデバイス \fIsource\fP が \fBMS_NODEV\fP -オプションでマウントされたファイルシステム上にある。 -.TP -\fBEBUSY\fP -\fIsource\fP は既にマウントされている。 または、書き込み用にオープンされたファイルがあり、 読み込み専用で再マウントすることができない。 -または、 \fItarget\fP が使用中 (busy) のため、 \fItarget\fP にマウントできない。 \fItarget\fP -が使用中の例としては、あるスレッドの動作ディレクトリ (working directory) であるとか、別のデバイスのマウントポイントであるとか、 -オープンされたファイルが存在する、などがある。 -.TP -\fBEFAULT\fP -場所を示す引き数のひとつがユーザーのアドレス空間の外を指している。 -.TP -\fBEINVAL\fP -\fIsource\fP に不正なスーパーブロックがある。 または、 \fIsource\fP が \fItarget\fP にマウントされていないのに、再マウント -(\fBMS_REMOUNT\fP) が要求された。 または、 \fIsource\fP がマウントポイントではないか、\(aq/\(aq なのに、移動 -(\fBMS_MOVE\fP) が要求された。 -.TP -\fBELOOP\fP -パス名の解決中に登場したリンクが多すぎた。 または、 \fItarget\fP が \fIsource\fP の子孫なのに移動が要求された。 -.TP -\fBEMFILE\fP -(ブロックデバイスが必要でない場合) ダミーデバイスのテーブルが一杯になった。 -.TP -\fBENAMETOOLONG\fP -パス名の長さが \fBMAXPATHLEN\fP より長かった。 -.TP -\fBENODEV\fP -\fIfilesystemtype\fP がカーネル中で定義 (config) されていない。 -.TP -\fBENOENT\fP -パス名が空である。もしくは指定されたパスが存在しない。 -.TP -\fBENOMEM\fP -カーネルがファイル名やデータをコピーするための空きページを確保できなかった。 -.TP -\fBENOTBLK\fP -(ブロックデバイスが必要だが) \fIsource\fP がブロックデバイスではない。 -.TP -\fBENOTDIR\fP -\fItarget\fP か、 \fIsource\fP のプレフィックスがディレクトリではない。 -.TP -\fBENXIO\fP -ブロックデバイス \fIsource\fP のメジャー番号が範囲外である。 -.TP -\fBEPERM\fP -呼び出し元が必要な権限を持っていない。 -.SH バージョン -.\" 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 のヘッダーに追加されたのは バージョン 2.12 においてである。 -.SH 準拠 -この関数は Linux 固有の関数であり、移植を考慮したプログラムでは 使用すべきでない。 -.SH 注意 -元の \fBMS_SYNC\fP フラグは、別の \fBMS_SYNC\fP が \fI\fP に追加されたので 1.1.69 から -\fBMS_SYNCHRONOUS\fP に名前が変わった。 -.LP -.\" The change is in patch-2.4.0-prerelease. -Linux 2.4 より前のバージョンでは、 \fBMS_NOSUID\fP オプション付きでマウントされたファイルシステム上の set\-UID や -set\-GID のプログラムを実行しようとすると、 \fBEPERM\fP エラーとなった。 Linux 2.4 以降では、このような場合は set\-UID -ビットや set\-GID ビットが 無視されるだけである。 -.SS プロセス単位の名前空間 -カーネル 2.4.19 以降の Linux では、プロセス単位のマウント名前空間 (mount namespace) -が提供されている。マウント名前空間とは、 あるプロセスに見えているファイルシステムのマウントの集合である。 -マウントポイントの名前空間は複数のプロセスで共有することができ、 普通は共有されている。 一つのプロセスによる名前空間の変更 -(すなわち、マウントやアンマウント) は 同じ名前空間を共有する他の全てのプロセスにも見える。 (2.4.19 より前の Linux -は、一つの名前空間がシステム上の全プロセスで 共有される状況とみなすことができる。) - -\fBfork\fP(2) 経由で作成された子プロセスは親プロセスのマウント名前空間を共有する。 \fBexecve\fP(2) -の前後でマウント名前空間は保持される。 - -プロセスは自分用 (private) のマウント名前空間を持つことができる。 自分用の名前空間を持つことができるのは、 そのプロセスが -\fBclone\fP(2) \fBCLONE_NEWNS\fP フラグを使って作成された場合と、 そのプロセスが \fBCLONE_NEWNS\fP フラグ付きで -\fBunshare\fP(2) を呼び出した場合である。 前者の場合、作成されたプロセスの新しい名前空間は \fBclone\fP(2) -を呼び出したプロセスの名前空間の「コピー」で初期化される。 後者の場合、 \fBunshare\fP(2) -を呼び出すと、呼び出し元のプロセスのマウント名前空間が、 それまでは他のプロセスと共有していた名前空間の自分用のコピーとなる。 -これにより、呼び出し元のプロセスがこれ以後に行うマウント/アンマウントは 他のプロセスから見えなくなる (ただし、呼び出し元のプロセスが -\fBunshare\fP(2) の呼び出し以降に作成した子プロセスには見える)。 -また、その逆の、他のプロセスが行ったマウント/アンマウントも呼び出し元のプロセスには 見えなくなる。 - -Linux 独自のファイル \fI/proc/PID/mounts\fP では、指定された ID を持つプロセスのマウント名前空間における -マウントポイントのリストが公開されている。詳細は \fBproc\fP(5) を参照のこと。 -.SH 関連項目 -\fBumount\fP(2), \fBnamespaces\fP(7), \fBpath_resolution\fP(7), \fBlsblk\fP(8), -\fBmount\fP(8), \fBumount\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/move_pages.2 b/manual/LDP_man-pages/draft/man2/move_pages.2 index b0b1449d..4e8a66f8 100644 --- a/manual/LDP_man-pages/draft/man2/move_pages.2 +++ b/manual/LDP_man-pages/draft/man2/move_pages.2 @@ -15,7 +15,8 @@ .\" FIXME Should programs normally be using move_pages() directly, or should .\" they rather be using interfaces in the numactl package? .\" (e.g., compare with recommendation in mbind(2)). -.\" Does this page need to give advise on this topic? +.\" Does this page need to give advice on this topic? +.\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. @@ -26,42 +27,58 @@ .\" all rights reserved. .\" Translated 2008-10-26, Akihiro MOTOKI .\" -.TH MOVE_PAGES 2 2010\-06\-11 Linux "Linux Programmer's Manual" +.TH MOVE_PAGES 2 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 move_pages \- あるプロセスの個々のページを別のノードに移動する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBlong move_pages(int \fP\fIpid\fP\fB, unsigned long count, void **\fP\fIpages\fP\fB,\fP \fB const int *\fP\fInodes\fP\fB, int *\fP\fIstatus\fP\fB, int \fP\fIflags\fP\fB);\fP .fi -.sp +.PP \fI\-lnuma\fP とリンクする。 .SH 説明 \fBmove_pages\fP() は、プロセス \fIpid\fP の指定されたページ \fIpages\fP を \fInodes\fP で指定されたメモリーノードに移動する。 移動の結果は \fIstatus\fP に反映される。 \fIflags\fP では移動されるページに関する制約を指定する。 - -\fIpid\fP は、移動されるページが属するプロセスの ID である。 別のプロセスのページを移動するためには、呼び出し元が特権 -(\fBCAP_SYS_NICE\fP) を持っているか、呼び出したプロセスの実ユーザー ID か実効ユーザー ID が -ページ移動対象のプロセスの実ユーザー ID か保存 set\-user\-ID のどちらかと 一致しなければならない。 \fIpid\fP が 0 の場合、 -\fBmove_pages\fP() は呼び出したプロセスのページを移動する。 - +.PP +\fIpid\fP is the ID of the process in which pages are to be moved. If \fIpid\fP +is 0, then \fBmove_pages\fP() moves pages of the calling process. +.PP +To move pages in another process requires the following privileges: +.IP * 3 +In kernels up to and including Linux 4.12: the caller must be privileged +(\fBCAP_SYS_NICE\fP) or the real or effective user ID of the calling process +must match the real or saved\-set user ID of the target process. +.IP * +.\" commit 197e7e521384a23b9e585178f3f11c9fa08274b9 +The older rules allowed the caller to discover various virtual address +choices made by the kernel that could lead to the defeat of +address\-space\-layout randomization for a process owned by the same UID as +the caller, the rules were changed starting with Linux 4.13. Since Linux +4.13, permission is governed by a ptrace access mode +\fBPTRACE_MODE_READ_REALCREDS\fP check with respect to the target process; see +\fBptrace\fP(2). +.PP \fIcount\fP は移動するページ数である。 \fIcount\fP により \fIpages\fP, \fInodes\fP, \fIstatus\fP の 3 つの配列の大きさが定義される。 - +.PP .\" FIXME Describe the result if pointers in the 'pages' array are .\" not aligned to page boundaries \fIpages\fP は、移動すべきページへのポインターの配列であり、 各ポインターはページ境界に揃えた値を指定すべきである。 \fIpid\fP で指定されたプロセスで見えるアドレスを指定する。 - +.PP \fInodes\fP は、各ページの希望の移動場所を示す整数値の配列であり、 配列の各要素はノード番号である。 \fInodes\fP には NULL を指定することもでき、この場合には \fBmove_pages\fP() はどのページも移動しないが、各ページが現在配置されているノードを配列 \fIstatus\fP に格納して返す。どのページを移動する必要があるかを判断するために、 各ページの状態の取得が必要な場合もある。 - -\fIstatus\fP は、各ページの状態を表す整数値の配列である。 この配列に有効な値が格納されるのは、 \fBmove_pages\fP() -がエラーを返さなかった場合だけである。 - +.PP +\fIstatus\fP is an array of integers that return the status of each page. The +array contains valid values only if \fBmove_pages\fP() did not return an +error. Preinitialization of the array to a value which cannot represent a +real numa node or valid error of status array could help to identify pages +that have been migrated. +.PP \fIflags\fP には、どの種類のページを移動するかを指定する。 \fBMPOL_MF_MOVE\fP は、そのプロセスが排他的に使用しているページだけを移動することを意味する。 \fBMPOL_MF_MOVE_ALL\fP は、複数のプロセス間で共有されているページも移動できることを意味する。 \fBMPOL_MF_MOVE_ALL\fP を使用するためには、そのプロセスが特権 @@ -97,14 +114,20 @@ dirty なページを移動できない。 ファイルシステムが dirty な .SH 返り値 .\" FIXME . Is the following quite true: does the wrapper in numactl .\" do the right thing? -成功すると、 \fBmove_pages\fP() は 0 を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 +On success \fBmove_pages\fP() returns zero. On error, it returns \-1, and sets +\fIerrno\fP to indicate the error. If positive value is returned, it is the +number of nonmigrated pages. .SH エラー .TP -\fBE2BIG\fP -移動すべきページが多過ぎる。 +\fBPositive value\fP +.\" commit a49bd4d7163707de377aee062f17befef6da891b +.\" commit 3140a2273009c01c27d316f35ab76a37e105fdd8 +The number of nonmigrated pages if they were the result of nonfatal reasons +(since Linux 4.17). \fBE2BIG\fP Too many pages to move. Since Linux 2.6.29, +the kernel no longer generates this error. .TP \fBEACCES\fP -.\" FIXME Clarify "current cpuset" in the description of the EACCESS error. +.\" FIXME Clarify "current cpuset" in the description of the EACCES error. .\" Is that the cpuset of the caller or the target? 移動先のノードのいずれかが現在の CPU 集合では許可されていない。 .TP @@ -118,10 +141,6 @@ dirty なページを移動できない。 ファイルシステムが dirty な \fBENODEV\fP 移動先のノードのいずれかがオンラインでない。 .TP -\fBENOENT\fP -移動が必要なページが全く見つからなかった。 指定された全てのページが、すでに移動先のノードに存在するか、存在しないか、 -無効なアドレスであったか、複数のプロセスによってマップされていて移動でき なかったか、のいずれかであった。 -.TP \fBEPERM\fP 呼び出し元は \fBMPOL_MF_MOVE_ALL\fP を指定したが、十分な特権 (\fBCAP_SYS_NICE\fP) を持っていない。 または、呼び出し元が他のユーザーに属するプロセスのページを移動しようとしたが、 それを行えるだけの特権 (\fBCAP_SYS_NICE\fP) @@ -135,17 +154,17 @@ dirty なページを移動できない。 ファイルシステムが dirty な このシステムコールは Linux 固有である。 .SH 注意 ライブラリによるサポートについては \fBnuma\fP(7) を参照。 - +.PP .\" FIXME Clarify "current cpuset". Is that the cpuset of the caller .\" or the target? 現在の CPU 集合で許可されているノードの集合を取得するには、フラグ \fBMPOL_F_MEMS_ALLOWED\fP を指定して \fBget_mempolicy\fP(2) を使用すればよい。 取得した情報は、CPU 集合の手動または自動での再構成により いつ何時変化してしまうか分からない。 - +.PP この関数を使用すると、ページの位置 (ノード) が 指定されたアドレスに対して設定されたメモリーポリシー (\fBmbind\fP(2) 参照) や指定されたプロセスに対して設定されたメモリーポリシー (\fBset_mempolicy\fP(2) 参照) に違反してしまう可能性がある。 つまり、メモリーポリシーは \fBmove_pages\fP() で使われる移動先ノードを制限しないということである。 - +.PP ヘッダーファイル \fI\fP は glibc には含まれておらず、 \fIlibnuma\-devel\fP か同様のパッケージをインストールする必要がある。 .SH 関連項目 @@ -153,6 +172,5 @@ dirty なページを移動できない。 ファイルシステムが dirty な \fBnuma_maps\fP(5), \fBcpuset\fP(7), \fBnuma\fP(7), \fBmigratepages\fP(8), \fBnumastat\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/mprotect.2 b/manual/LDP_man-pages/draft/man2/mprotect.2 deleted file mode 100644 index 9e3776b9..00000000 --- a/manual/LDP_man-pages/draft/man2/mprotect.2 +++ /dev/null @@ -1,198 +0,0 @@ -.\" Copyright (C) 2007 Michael Kerrisk -.\" and 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 author of this work. -.\" %%%LICENSE_END -.\" -.\" Modified 1996-10-22 by Eric S. Raymond -.\" Modified 1997-05-31 by Andries Brouwer -.\" Modified 2003-08-24 by Andries Brouwer -.\" Modified 2004-08-16 by Andi Kleen -.\" 2007-06-02, mtk: Fairly substantial rewrites and additions, and -.\" a much improved example program. -.\" -.\" FIXME The following protection flags need documenting: -.\" PROT_SEM -.\" PROT_GROWSDOWN -.\" PROT_GROWSUP -.\" PROT_SAO (PowerPC) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-06-01, HANATAKA Shinya -.\" Updated and revised 2003-10-24, Suzuki Takashi. -.\" Updated & Modified 2005-02-08, Yuichi SATO -.\" Updated & Modified 2005-10-15, Yuichi SATO -.\" Updated 2007-06-11, Akihiro MOTOKI , LDP v2.54 -.\" -.TH MPROTECT 2 2014\-01\-05 Linux "Linux Programmer's Manual" -.SH 名前 -mprotect \- メモリー領域の保護を設定する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint mprotect(void *\fP\fIaddr\fP\fB, size_t \fP\fIlen\fP\fB, int \fP\fIprot\fP\fB);\fP -.fi -.SH 説明 -\fBmprotect\fP() は、区間 [\fIaddr\fP,\ \fIaddr\fP+\fIlen\fP\-1] のアドレス範囲を含む -呼び出し元のプロセスのメモリーページのアクセス保護を変更する。 \fIaddr\fP はページ境界に一致していなければならない。 - -呼び出し元のプロセスがアクセス保護に違反するようなメモリーアクセスを 行おうとすると、カーネルはシグナル \fBSIGSEGV\fP -をそのプロセスに対して生成する。 -.PP -\fIprot\fP には、 \fBPROT_NONE\fP か、以下のリストの \fBPROT_NONE\fP 以外の値をビット毎の論理和 (bitwize\-or) -で指定する: -.TP 1.1i -\fBPROT_NONE\fP -そのメモリーには全くアクセスできない。 -.TP -\fBPROT_READ\fP -そのメモリーを読み取ることができる。 -.TP -\fBPROT_WRITE\fP -そのメモリーを変更できる。 -.TP -\fBPROT_EXEC\fP -そのメモリーは実行可能である。 -.SH 返り値 -成功した場合、 \fBmprotect\fP() は 0 を返す。エラーの場合は \-1 が返り、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEACCES\fP -指定されたアクセスをメモリーに設定することができない。 これは、例えば ファイルを読み取り専用で \fBmmap\fP(2) しており、その領域に対して -\fBmprotect\fP() を呼び出して \fBPROT_WRITE\fP に設定しようとした場合に発生する。 -.TP -\fBEINVAL\fP -.\" Or: both PROT_GROWSUP and PROT_GROWSDOWN were specified in 'prot'. -\fIaddr\fP が有効なポインターでないか、 システムのページサイズの倍数でない。 -.TP -\fBENOMEM\fP -カーネル内部の構造体を割り当てることができなかった。 -.TP -\fBENOMEM\fP -[\fIaddr\fP, \fIaddr\fP+\fIlen\fP\-1] という範囲のアドレスがプロセスのアドレス空間として不正であるか、 -その範囲のアドレスがマップされていない 1 つ以上のページを指している (カーネル 2.4.19 より前では、この状況でエラー \fBEFAULT\fP -が間違って生成されていた)。 -.SH 準拠 -.\" SVr4 defines an additional error -.\" code EAGAIN. The SVr4 error conditions don't map neatly onto Linux's. -SVr4, POSIX.1\-2001. POSIX では、 \fBmmap\fP(2) 経由で獲得していないメモリー領域に対して -\fBmprotect\fP() を行った場合の \fBmprotect\fP() の動作は未定義であるとされている。 -.SH 注意 -Linux では、(カーネル vsyscall 領域以外の) 任意のプロセスアドレス空間に対して \fBmprotect\fP() -を呼び出すことが、常に許されている。 これは特に既存のコードマッピングを書き込み可能にするために使われる。 - -\fBPROT_EXEC\fP が \fBPROT_READ\fP と異なる影響を持つか否かは、アーキテクチャーとカーネルのバージョンに依存する。 (i386 -などの) いくつかのアーキテクチャーでは、 \fBPROT_WRITE\fP をセットすると、暗黙のうちに \fBPROT_READ\fP がセットされる。 - -POSIX.1\-2001 では、 \fIprot\fP で指定されていないアクセスを許可する実装を認めている。 ただし、最低限、 \fBPROT_WRITE\fP -がセットされている場合にのみ書き込みアクセスが許可され、 \fBPROT_NONE\fP がセットされている場合にはアクセスは許可されない点だけは -満たす必要がある。 -.SH 例 -.\" sigaction.2 refers to this example -.PP -以下のプログラムは、メモリーページを 4つ確保し、そのうち 3番目のページを 読み込み専用に設定する。その後で、確保した領域のアドレスの小さい方から -大きな方に向かって順番にバイト値を変更するループを実行する。 - -プログラムを実行した場合の一例を以下に示す。 - -.in +4n -.nf -$\fB ./a.out\fP -Start of region: 0x804c000 -Got SIGSEGV at address: 0x804e000 -.fi -.in -.SS プログラムのソース -\& -.nf -#include -#include -#include -#include -#include -#include -#include - -#define handle_error(msg) \e - do { perror(msg); exit(EXIT_FAILURE); } while (0) - -static char *buffer; - -static void -handler(int sig, siginfo_t *si, void *unused) -{ - printf("Got SIGSEGV at address: 0x%lx\en", - (long) si\->si_addr); - exit(EXIT_FAILURE); -} - -int -main(void) -{ - char *p; - int pagesize; - struct sigaction sa; - - sa.sa_flags = SA_SIGINFO; - sigemptyset(&sa.sa_mask); - sa.sa_sigaction = handler; - if (sigaction(SIGSEGV, &sa, NULL) == \-1) - handle_error("sigaction"); - - pagesize = sysconf(_SC_PAGE_SIZE); - if (pagesize == \-1) - handle_error("sysconf"); - - /* Allocate a buffer aligned on a page boundary; - initial protection is PROT_READ | PROT_WRITE */ - - buffer = memalign(pagesize, 4 * pagesize); - if (buffer == NULL) - handle_error("memalign"); - - printf("Start of region: 0x%lx\en", (long) buffer); - - if (mprotect(buffer + pagesize * 2, pagesize, - PROT_READ) == \-1) - handle_error("mprotect"); - - for (p = buffer ; ; ) - *(p++) = \(aqa\(aq; - - printf("Loop completed\en"); /* Should never happen */ - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBmmap\fP(2), \fBsysconf\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/mq_getsetattr.2 b/manual/LDP_man-pages/draft/man2/mq_getsetattr.2 index 3bc2fd31..ed1cef5c 100644 --- a/manual/LDP_man-pages/draft/man2/mq_getsetattr.2 +++ b/manual/LDP_man-pages/draft/man2/mq_getsetattr.2 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (C) 2006 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) @@ -32,22 +31,22 @@ .\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. .\" Translated 2006-07-16, Akihiro MOTOKI .\" -.TH MQ_GETSETATTR 2 2012\-07\-13 Linux "Linux Programmer's Manual" +.TH MQ_GETSETATTR 2 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 mq_getsetattr \- メッセージキューの属性を設定/取得する .SH 書式 .nf \fB#include \fP \fB#include \fP -.sp -\fBint mq_getsetattr(mqd_t \fP\fImqdes\fP\fB, struct mq_attr *\fP\fInewattr\fP\fB,\fP +.PP +\fBint mq_getsetattr(mqd_t \fP\fImqdes\fP\fB, const struct mq_attr *\fP\fInewattr\fP\fB,\fP \fB struct mq_attr *\fP\fIoldattr\fP\fB);\fP .fi - +.PP \fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 .SH 説明 このシステムコールを使用しないこと。 - +.PP \fBmq_getattr\fP(3) と \fBmq_setattr\fP(3) の実装に使用される低レベルのシステムコールである。 このシステムコールがどのように動作するかは \fBmq_setattr\fP(3) の説明を参照のこと。 .SH 準拠 @@ -58,6 +57,5 @@ glibc はこのシステムコールに対するラッパー関数を提供し .SH 関連項目 \fBmq_getattr\fP(3), \fBmq_overview\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/mremap.2 b/manual/LDP_man-pages/draft/man2/mremap.2 deleted file mode 100644 index 5195af5c..00000000 --- a/manual/LDP_man-pages/draft/man2/mremap.2 +++ /dev/null @@ -1,136 +0,0 @@ -.\" Copyright (c) 1996 Tom Bjorkholm -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" 1996-04-11 Tom Bjorkholm -.\" First version written (1.3.86) -.\" 1996-04-12 Tom Bjorkholm -.\" Update for Linux 1.3.87 and later -.\" 2005-10-11 mtk: Added NOTES for MREMAP_FIXED; revised EINVAL text. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-23, HANATAKA Shinya -.\" Updated 2002-11-26, Kentaro Shirakata -.\" Updated 2005-10-09, Kentaro Shirakata -.\" Updated 2006-04-16, Akihiro MOTOKI , LDP v2.28 -.\" Updated 2012-05-01, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH MREMAP 2 2010\-06\-10 Linux "Linux Programmer's Manual" -.SH 名前 -mremap \- 仮想メモリーアドレスを再マッピングする -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBvoid *mremap(void *\fP\fIold_address\fP\fB, size_t \fP\fIold_size\fP\fB,\fP -\fB size_t \fP\fInew_size\fP\fB, int \fP\fIflags\fP\fB, ... /* void *\fP\fInew_address\fP\fB */);\fP -.fi -.SH 説明 -\fBmremap\fP() は既存のメモリーマッピングの拡張 (または縮小) を行う。 同時に移動されることもある (\fIflags\fP -引き数と利用可能な仮想アドレス空間によって決まる)。 - -\fIold_address\fP は拡張 (または縮小) しようとする仮想メモリーブロック の元のアドレスである。\fIold_address\fP -はページ境界に合っていなければ ならない点に注意すること。\fIold_size\fP は元の仮想メモリーブロックの サイズである。 \fInew_size\fP -は要求する変更後の仮想メモリーブロックのサイズである。 5 番目の引き数として \fInew_address\fP を指定することができる。下記の -\fBMREMAP_FIXED\fP の説明を参照のこと。 - -Linux ではメモリーはページに分割される。ユーザープロセスは (一つまたは) 複数のリニアな仮想メモリーセグメントを持つ。 -それぞれの仮想メモリーセグメントは一つ以上の実メモリーページ にマッピングされている (マッピング情報はページテーブルで管理される)。 -仮想メモリーセグメントにはセグメント毎の保護 (アクセス権) が設定されており、 メモリーが不正にアクセスされた場合 (例えば読み込み専用のセグメントに -書き込んだ場合)、セグメンテーション侵害 (segmentation violation) を -引き起こす。また、セグメント外の仮想メモリーにアクセスした場合にも セグメンテーション侵害が発生する。 - -\fBmremap\fP() は Linux のページテーブル方式を使用する。 \fBmremap\fP() -は仮想アドレスとメモリーページのマッピングを変更する。これは非常に効率的な \fBrealloc\fP(3) を実装するのに使用されている。 - -\fIflags\fP ビットマスク引数は 0 または以下のフラグを含む: -.TP -\fBMREMAP_MAYMOVE\fP -デフォルトでは、現在の位置にマッピングを拡張するための 十分な空きがなければ \fBmremap\fP() は失敗する。 -このフラグが指定されると、カーネルは必要があればマッピングを 新しい仮想アドレスに再配置することができる -マッピングが再配置されると、古いマッピング位置への絶対ポインターは 無効になる (マッピングの開始アドレスからの相対オフセットは有効のままである)。 -.TP -\fBMREMAP_FIXED\fP (Linux 2.3.31 以降) -このフラグは \fBmmap\fP(2) の \fBMAP_FIXED\fP フラグと似たような目的で用いられる。 このフラグが指定されると、 -\fBmremap\fP() は 5 番目の引き数 \fIvoid\ *new_address\fP -を受け取り、この引数はマッピングが移動されるべきアドレスを指定する。 このアドレスはページ境界に合っていなければならない。 \fInew_address\fP -と \fInew_size\fP で指定されるアドレス範囲に過去のマッピングがあった場合、 そのマッピングはアンマップされる (unmapped)。 -\fBMREMAP_FIXED\fP を指定した場合は、 \fBMREMAP_MAYMOVE\fP も指定しなければならない。 -.PP -\fIold_address\fP と \fIold_size\fP で指定されるメモリーセグメントが (\fBmlock\fP(2) や同様のもので) -ロックされている場合、セグメントのサイズが変わったり 再配置されたりした時にロックも維持される。 -その結果、プロセスによってロックされるメモリーの量は変化する。 -.SH 返り値 -成功した場合は \fBmremap\fP() は新しい仮想メモリー領域へのポインターを返す。 エラーの場合は \fBMAP_FAILED\fP (すなわち -\fI(void\ *)\ \-1\fP) が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEAGAIN\fP -呼び出し元がロックされているメモリーセグメントを拡張しようとしたが、 \fBRLIMIT_MEMLOCK\fP -リソース制限を越えずにこれを行うことができない。 -.TP -\fBEFAULT\fP -「セグメンテーション違反(segmentation fault)」 \fIold_address\fP から -\fIold_address\fP+\fIold_size\fP の 範囲のアドレスのどれかがこのプロセスにおいて不正な仮想メモリーアドレスである。 -たとえ要求したアドレス空間全体を含むようなマッピングがあったとしても、 それらのマッピングが異なった型ならば \fBEFAULT\fP を受け取るだろう。 -.TP -\fBEINVAL\fP -不正な引き数が与えられた。 可能性のある原因は以下の通りである: たいていは \fIold_address\fP がページ境界に 合ってない; -\fIflags\fP に \fBMREMAP_MAYMOVE\fP または \fBMREMAP_FIXED\fP 以外の値が指定されている; \fInew_size\fP -がゼロ; \fInew_size\fP または \fInew_address\fP の値が不正; \fInew_address\fP と \fInew_size\fP -で指定される新しいアドレス範囲が \fIold_address\fP と \fIold_size\fP で指定される古いアドレス範囲と重なっている; -\fBMREMAP_FIXED\fP が指定されているが \fBMREMAP_MAYMOVE\fP が指定されていない。 -.TP -\fBENOMEM\fP -現在の仮想アドレスではメモリー領域が拡張できず、 \fBMREMAP_MAYMOVE\fP フラグが \fIflags\fP に設定されていない。 または十分な -(仮想) メモリーが存在しない。 -.SH 準拠 -.\" 4.2BSD had a (never actually implemented) -.\" .BR mremap (2) -.\" call with completely different semantics. -このコールは Linux 特有であり、移植を意図したプログラムで 使用すべきではない。 -.SH 注意 -バージョン 2.4 より前の glibc では、 \fBMREMAP_FIXED\fP の定義は公開されておらず、 \fBmremap\fP() のプロトタイプは -\fInew_address\fP 引き数を取らなかった。 -.SH 関連項目 -\fBbrk\fP(2), \fBgetpagesize\fP(2), \fBgetrlimit\fP(2), \fBmlock\fP(2), \fBmmap\fP(2), -\fBsbrk\fP(2), \fBrealloc\fP(3), \fBmalloc\fP(3) - -ページ分割されたメモリーについてもっと詳しく知りたいならば、あなたのお気に入りのオペレーティングシステムの教科書を参照してほしい (例えば、 -\fIModern Operating Systems\fP by Andrew S. Tanenbaum, \fIInside Linux\fP by -Randolf Bentson, \fIThe Design of the UNIX Operating System\fP by Maurice -J. Bach.) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 33241c9d..00000000 --- a/manual/LDP_man-pages/draft/man2/msgctl.2 +++ /dev/null @@ -1,222 +0,0 @@ -.\" Copyright 1993 Giorgio Ciucci (giorgio@crcc.it) -.\" and Copyright 2004, 2005 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 Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond -.\" Modified Sun Feb 18 01:59:29 2001 by Andries E. Brouwer -.\" Modified, 27 May 2004, Michael Kerrisk -.\" Added notes on CAP_IPC_OWNER requirement -.\" Modified, 17 Jun 2004, Michael Kerrisk -.\" Added notes on CAP_SYS_ADMIN requirement for IPC_SET and IPC_RMID -.\" Modified, 11 Nov 2004, Michael Kerrisk -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-23, HANATAKA Shinya -.\" Updated & Modified 2001-06-04, Yuichi SATO -.\" Updated & Modified 2002-07-06, Yuichi SATO -.\" Updated & Modified 2004-12-31, Yuichi SATO -.\" Updated & Modified 2005-10-10, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" -.TH MSGCTL 2 2014\-02\-24 Linux "Linux Programmer's Manual" -.SH 名前 -msgctl \- System V メッセージ制御操作 -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -\fB#include \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\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_SYS_RESOURCE\fP ケーパビリティ -(capability)) が必要である。 -.TP -\fBIPC_RMID\fP -メッセージキューをただちに削除する。 同時にその構造体の読み書きの待ち状態にあったプロセスに通知する (エラーが返り、 \fIerrno\fP が -\fBEIDRM\fP に設定される)。 呼び出したプロセスが適切な特権を持っているか、 呼び出したプロセスの実効ユーザー ID がメッセージキューの作成者か -所有者の実効ユーザー ID でなければならない。この場合、 \fBmsgctl\fP() の第 3 引き数は無視される。 -.TP -\fBIPC_INFO\fP (Linux 固有) -システム全体でのメッセージキューの制限とパラメーターに関する情報を、 \fIbuf\fP が指す構造体に入れて返す。 この構造体は \fImsginfo\fP -型である (そのためキャストが必要である)。 \fImsginfo\fP は \fB_GNU_SOURCE\fP 機能検査マクロが定義された場合に -\fI\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 ケーパビリティがない)。 -.TP -\fBEPERM\fP -\fBIPC_SET\fP で \fImsg_qbytes\fP をシステムパラメーター \fBMSGMNB\fP -より大きな値に設定しようとしたが、呼び出し元が特権を持っていなかった (Linux では、 \fBCAP_SYS_RESOURCE\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. -Linux や POSIX の全てのバージョンでは、 \fI\fP と \fI\fP -のインクルードは必要ない。しかしながら、いくつかの古い実装ではこれらのヘッダーファイルのインクルードが必要であり、 SVID -でもこれらのインクルードをするように記載されている。このような古いシステムへの移植性を意図したアプリケーションではこれらのファイルをインクルードする必要があるかもしれない。 - -\fBIPC_INFO\fP, \fBMSG_STAT\fP, \fBMSG_INFO\fP 操作は、 \fBipcs\fP(1) -プログラムで割り当て済の資源に関する情報を提供するために 使用されている。将来、これらの操作は変更されたり、 \fI/proc\fP -ファイルシステムのインターフェースに移動されるかもしれない。 - -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 1c4853cb..00000000 --- a/manual/LDP_man-pages/draft/man2/msgget.2 +++ /dev/null @@ -1,139 +0,0 @@ -.\" Copyright 1993 Giorgio Ciucci -.\" -.\" %%%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 , aeb, 960426 -.\" Modified Wed Nov 6 04:00:31 1996 by Eric S. Raymond -.\" Modified, 8 Jan 2003, Michael Kerrisk, -.\" Removed EIDRM from errors - that can't happen... -.\" Modified, 27 May 2004, Michael Kerrisk -.\" Added notes on capability requirements -.\" Modified, 11 Nov 2004, Michael Kerrisk -.\" Language and formatting clean-ups -.\" Added notes on /proc files -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-23, HANATAKA Shinya -.\" Modified 2003-07-03, Akihiro MOTOKI -.\" Updated 2005-03-04, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" -.TH MSGGET 2 2014\-04\-30 Linux "Linux Programmer's Manual" -.SH 名前 -msgget \- System V メッセージキュー識別子を取得する -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -\fB#include \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 -\fImsgflg\fP に \fBIPC_CREAT\fP と \fBIPC_EXCL\fP が指定されたが、 \fIkey\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. -Linux や POSIX の全てのバージョンでは、 \fI\fP と \fI\fP -のインクルードは必要ない。しかしながら、いくつかの古い実装ではこれらのヘッダーファイルのインクルードが必要であり、 SVID -でもこれらのインクルードをするように記載されている。このような古いシステムへの移植性を意図したアプリケーションではこれらのファイルをインクルードする必要があるかもしれない。 - -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 138be26f..00000000 --- a/manual/LDP_man-pages/draft/man2/msgop.2 +++ /dev/null @@ -1,303 +0,0 @@ -.\" Copyright 1993 Giorgio Ciucci -.\" -.\" %%%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 -.\" Modified Mon Jul 10 21:09:59 2000 by aeb -.\" Modified 1 Jun 2002, Michael Kerrisk -.\" 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 -.\" Added notes on capability requirements -.\" Modified, 11 Nov 2004, Michael Kerrisk -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-23, HANATAKA Shinya -.\" Modified 2000-09-23, HANATAKA Shinya -.\" Updated 2002-11-26, Kentaro Shirakata -.\" Updated 2005-03-04, Akihiro MOTOKI -.\" Updated 2006-03-05, Akihiro MOTOKI, LDP v2.25 -.\" Updated 2008-08-09, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" -.TH MSGOP 2 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -msgrcv, msgsnd \- System V メッセージキュー操作 -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -\fB#include \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) を使って変更できる。 次のいずれかの条件が成立する場合に、メッセージキューは一杯と判断される。 -.IP * 2 -新しいメッセージをそのキューに追加すると、 そのキューの全バイト数がキューの最大サイズ (\fImsg_qbytes\fP フィールド) -を超過してしまう場合。 -.IP * -そのキューにもう一つメッセージを追加すると、 そのキューが全メッセージ数がキューの最大サイズ (\fImsg_qbytes\fP フィールド) -を超過してしまう場合。 このチェックは、無限個の長さ 0 のメッセージをそのキューに追加するのを防ぐために必要である。 長さ 0 -のメッセージはデータを含まないが、 (ロックされた) カーネルメモリーを消費するからである。 -.PP -そのキューに十分な領域がない場合、 デフォルトの動作では、 必要な領域ができるまで \fBmsgsnd\fP() は停止 (block) する。 -\fImsgflg\fP に \fBIPC_NOWAIT\fP が指定された場合、 \fBmsgsnd\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 -\fBMSG_COPY\fP が \fImsgflg\fP に指定されていない場合 (下記参照)、 \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_COPY\fP (Linux 3.8 以降) -.\" commit 4a674f34ba04a002244edaf891b5da7fc1473ae8 -キューの中で \fImsgtyp\fP で指定した位置にあるメッセージのコピーを、キューを変更せずに (非破壊的に) 取り出す (メッセージの位置は 0 -から順番に番号が割り当てられる)。 - -このフラグは \fBIPC_NOWAIT\fP と組み合わせて指定しなければならない。 その結果、指定した位置にメッセージがなかった場合、呼び出しはエラー -\fBENOMSG\fP ですぐに失敗する。 \fBMSG_COPY\fP と \fBMSG_EXCEPT\fP は \fImsgtyp\fP -の意味を相容れない方法で使用するため、この二つのフラグの両方を \fImsgtyp\fP に指定することはできない。 - -\fBMSG_COPY\fP フラグは、 カーネルのチェックポイント復元 (checkpoint\-restore) 機能の実装のために追加された。 -このフラグはカーネルが \fBCONFIG_CHECKPOINT_RESTORE\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 -\fBEINVAL\fP (Linux 3.14 以降) -\fImsgflg\fP に \fBMSG_COPY\fP が指定されたが、 \fBIPC_NOWAIT\fP が指定されていない。 -.TP -\fBEINVAL\fP (Linux 3.14 以降) -\fImsgflg\fP に \fBMSG_COPY\fP と \fBMSG_EXCEPT\fP の両方が指定された。 -.TP -\fBENOMSG\fP -\fImsgflg\fP に \fBIPC_NOWAIT\fP が設定されており、 メッセージキューに要求された型のメッセージが存在しなかった。 -.TP -\fBENOMSG\fP -\fBIPC_NOWAIT\fP と \fBMSG_COPY\fP が \fImsgflg\fP に指定されたが、 キューには \fImsgtyp\fP -未満のメッセージしか入っていなかった。 -.TP -\fBENOSYS\fP (Linux 3.8 以降) -\fImsgflg\fP に \fIMSG_COPY\fP が指定されたが、カーネルが \fBCONFIG_CHECKPOINT_RESTORE\fP -なしで作成されている。 -.SH 準拠 -SVr4, POSIX.1\-2001. - -.\" MSG_COPY since glibc 2.18 -フラグ \fBMSG_EXCEPT\fP と \fBMSG_COPY\fP は Linux 固有である。 これらの定義を得るには、機能検査マクロ -\fB_GNU_SOURCE\fP を定義する。 -.SH 注意 -.\" Like Linux, the FreeBSD man pages still document -.\" the inclusion of these header files. -Linux や POSIX の全てのバージョンでは、 \fI\fP と \fI\fP -のインクルードは必要ない。しかしながら、いくつかの古い実装ではこれらのヘッダーファイルのインクルードが必要であり、 SVID -でもこれらのインクルードをするように記載されている。このような古いシステムへの移植性を意図したアプリケーションではこれらのファイルをインクルードする必要があるかもしれない。 - -\fImsgp\fP 引き数は、 glibc 2.0 と 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 経由で読み出したり変更したりできる)。 特権プロセス (Linux ではケーパビリティ -\fBCAP_SYS_RESOURCE\fP を持ったプロセス) は \fBmsgctl\fP(2) システムコールでメッセージキューのサイズを -\fBMSGMNB\fP よりも大きい値に増やすことができる。 -.PP -現在の実装では、システム全体のメッセージヘッダーの上限数 (\fBMSGTQL\fP) と、システム全体のメッセージプールの最大バイト数 -(\fBMSGPOOL\fP) に関して実装依存の制限はない。 -.SH バグ -.\" http://marc.info/?l=linux-kernel&m=139048542803605&w=2 -.\" commit 4f87dac386cc43d5525da7a939d4b4e7edbea22c -Linux 3.13 以前では、 \fBmsgrcv\fP() の呼び出しで \fBMSG_COPY\fP フラグは指定されたが \fBIPC_NOWAIT\fP -は指定されず、かつメッセージキューに \fImsgtyp\fP 未満のメッセージしかない場合に、 \fBmsgrcv\fP() -の呼び出しはキューに次のメッセージが書き込まれるまで停止していた。 新しいメッセージが書き込まれた時点で、 そのメッセージが指定された位置 -\fImsgtyp\fP かどうかに\fI関わらず\fP、 \fBmsgrcv\fP() の呼び出しは新たに書き込まれたメッセージのコピーを返していた。 このバグは -Linux 3.14で修正された。 - -.\" http://marc.info/?l=linux-kernel&m=139048542803605&w=2 -.\" commit 4f87dac386cc43d5525da7a939d4b4e7edbea22c -\fImsg_copy\fP に \fBMSG_COPY\fP と \fBMSG_EXCEPT\fP の両方を指定するのは、論理的なエラーである -(なぜならこれらのフラグは \fImsgtyp\fP を別の意味で解釈するからである)。 Linux 3.13 以前では、\fBmsgrcv\fP() -がこのエラーを検出しなかった。 このバグは Linux 3.14 で修正された。 -.SH 関連項目 -\fBmsgctl\fP(2), \fBmsgget\fP(2), \fBcapabilities\fP(7), \fBmq_overview\fP(7), -\fBsvipc\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/msync.2 b/manual/LDP_man-pages/draft/man2/msync.2 deleted file mode 100644 index 1a8c0a25..00000000 --- a/manual/LDP_man-pages/draft/man2/msync.2 +++ /dev/null @@ -1,99 +0,0 @@ -.\" 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 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Sun Feb 23 19:45:43 JST 1997 -.\" by HANATAKA Shinya -.\" Updated and revised Fri Oct 24 23:34:51 JST 2003 -.\" by Suzuki Takashi. -.\" Updated 2007-01-01 by Kentaro Shirakata -.\" -.TH MSYNC 2 2014\-04\-20 Linux "Linux Programmer's Manual" -.SH 名前 -msync \- ファイルをマップしたメモリーと同期させる -.SH 書式 -\fB#include \fP -.sp -\fBint msync(void *\fP\fIaddr\fP\fB, size_t \fP\fIlength\fP\fB, int \fP\fIflags\fP\fB);\fP -.SH 説明 -\fBmsync\fP() は \fBmmap\fP(2) を使ってメモリーにマップされたファイルの、 -メモリー上のコピーになされた変更をファイルシステムに反映させる。 この関数を使用しないと、 \fBmunmap\fP(2) -が呼び出されるまで変更が書き戻される保証はない。 より正確には、ファイルのうち \fIaddr\fP から始まり長さ \fIlength\fP -のメモリー領域に対応する部分が更新される。 - -\fIflags\fP 引数にはビット \fBMS_ASYNC\fP, \fBMS_SYNC\fP, \fBMS_INVALIDATE\fP を設定することができるが、 -\fBMS_ASYNC\fP と \fBMS_SYNC\fP を同時に指定することはできない。 \fBMS_ASYNC\fP -は更新を予定に組み込むことを表し、呼び出しは直ちに返る。 \fBMS_SYNC\fP は更新を要求し、更新が完了するまで待つ。 -\fBMS_INVALIDATE\fP は(たった今書き込んだ新しい値でマッピングを更新することができるように) -同じファイルに対する他のマッピングを無効にすることを要求する。 -.SH 返り値 -成功した場合、 0 が返る。エラーの場合、 \-1 が返り、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEBUSY\fP -I flags に \fBMS_INVALIDATE\fP が指定されたが、指定されたアドレス範囲にロックが存在する。 -.TP -\fBEINVAL\fP -\fIaddr\fP が PAGESIZE の倍数でない。または、 \fIflags\fP に -\fBMS_ASYNC\fP、\fBMS_INVALIDATE\fP、\fBMS_SYNC\fP 以外のビットが設定された。 または、 \fIflags\fP に -\fBMS_SYNC\fP と \fBMS_ASYNC\fP の両方が設定された。 -.TP -\fBENOMEM\fP -指定されたメモリー (またはその一部) がマップされていない。 -.SH 準拠 -POSIX.1\-2001. - -この関数は Linux 1.3.21 で導入されたが、 \fBENOMEM\fP ではなく \fBEFAULT\fP が使われていた。 これは Linux -2.4.19 で POSIX における値 \fBENOMEM\fP に変更された。 -.SH 可用性 -.\" POSIX.1-2001: It shall be defined to -1 or 0 or 200112L. -.\" -1: unavailable, 0: ask using sysconf(). -.\" glibc defines them to 1. -\fBmsync\fP() が使用可能な POSIX システムでは \fB_POSIX_MAPPED_FILES\fP と -\fB_POSIX_SYNCHRONIZED_IO\fP の両方が \fI\fP で 0 より大きい値に定義される。 -(\fBsysconf\fP(3) を参照すること。 ) -.SH 注意 -.\" commit 204ec841fbea3e5138168edbc3a76d46747cc987 -POSIX では \fBMS_SYNC\fP と \fBMS_ASYNC\fP のいずれかは必ず \fIflags\fP に指定しなければならないとされており、 -実際にこれらのフラグのいずれかを指定しなかった場合 \fBmsync\fP() が失敗するシステムもある。 しかし、 Linux -ではこれらのフラグのいずれも指定せずに \fBmsync\fP() を呼び出すことができ、 その場合の動作は (現在のところ) \fBMS_ASYNC\fP -を指定した場合と等価である。 (Linux 2.6.19 以降では \fBMS_ASYNC\fP は実際には no\-op (何もしない命令) である。 -これはカーネルが正しく dirty ページを追跡し、必要に応じてストレージにそれらをフラッシュするからである。) Linux -の動作に関係なく、アプリケーションの移植性を考慮し、将来も確実に動くようにするには、 \fBMS_SYNC\fP か \fBMS_ASYNC\fP のいずれかを必ず -\fIflags\fP に指定するようにすべきである。 -.SH 関連項目 -\fBmmap\fP(2) - -B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128\-129 and 389\-391. -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/nanosleep.2 b/manual/LDP_man-pages/draft/man2/nanosleep.2 index edbfab6b..f0cdbf42 100644 --- a/manual/LDP_man-pages/draft/man2/nanosleep.2 +++ b/manual/LDP_man-pages/draft/man2/nanosleep.2 @@ -47,42 +47,42 @@ .\" Updated 2006-08-13, Akihiro MOTOKI, LDP v2.39 .\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05 .\" -.TH NANOSLEEP 2 2013\-07\-30 Linux "Linux Programmer's Manual" +.TH NANOSLEEP 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 nanosleep \- 高精度なスリープ .SH 書式 \fB#include \fP -.sp +.PP \fBint nanosleep(const struct timespec *\fP\fIreq\fP\fB, struct timespec *\fP\fIrem\fP\fB);\fP -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBnanosleep\fP(): _POSIX_C_SOURCE\ >=\ 199309L .SH 説明 \fBnanosleep\fP() は、少なくとも \fI*req\fP で指定された時間の間、プログラムの実行を遅延させる。 \fBnanosleep\fP() は、呼び出したスレッドの実行を、 少なくとも \fI*req\fP で指定された時間の間、もしくは呼び出したスレッドでハンドラーの起動の きっかけとなるシグナル、またはプロセスを終了させるシグナルの配送が 行われるまで一時停止する。 - +.PP 呼び出しがシグナルハンドラーにより割り込まれた場合、 \fBnanosleep\fP は \-1 を返し、 \fIerrno\fP に \fBEINTR\fP を設定し、 \fIrem\fP が NULL でなければ 残りの時間を \fIrem\fP が指す構造体に格納する。 \fI*rem\fP の値を使うと、 \fBnanosleep\fP() をもう一度呼び出して、指定した時間の停止を 完了させることができる (但し、「注意」の節を参照のこと)。 - +.PP ナノ秒刻みの時間間隔を指定するのに \fItimespec\fP 構造体が使用される。この構造体は次のように定義されている。 -.sp +.PP .in +4n -.nf +.EX struct timespec { time_t tv_sec; /* 秒 */ long tv_nsec; /* ナノ秒 */ }; -.fi +.EE .in .PP ナノ秒のフィールドの値は 0 から 999999999 の範囲になければならない。 - +.PP \fBsleep\fP(3) や \fBusleep\fP(3) に比べると \fBnanosleep\fP() には以下のような利点がある: 停止期間の指定に関して高い時間分解能が提供されている。 シグナルと互いに影響を及ぼすことがないと POSIX.1 で明示的に規定されている。 シグナルハンドラーによって割り込まれた際に、停止を再開するのが より簡単にできる。 @@ -95,21 +95,23 @@ struct timespec { ユーザー空間からの情報のコピーで問題があった。 .TP \fBEINTR\fP -そのスレッドに配送されたシグナルにより停止が中断された。 スレッドが簡単に \fBnanosleep\fP() -を再び呼び出して停止を続けることができるように、 残りの停止時間が \fI*rem\fP に格納される。 +The pause has been interrupted by a signal that was delivered to the thread +(see \fBsignal\fP(7)). The remaining sleep time has been written into \fI*rem\fP +so that the thread can easily call \fBnanosleep\fP() again and continue with +the pause. .TP \fBEINVAL\fP \fItv_nsec\fP フィールドの値が 0 から 999999999 の範囲でないか、 \fItv_sec\fP の値が負であった。 .SH 準拠 -POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008. .SH 注意 \fIreq\fP で指定された期間が、内部で使用されるクロックの粒度の倍数になっていない 場合、期間は一番近い倍数に切り上げられる。 また、停止が完了した後、CPU が呼び出し元のスレッドを再び実行できるように なるまでには遅延が入る。 - +.PP シグナルによる割り込み後に繰り返し再開された場合、 \fBnanosleep\fP() の停止が相対的な期間であることは問題となることがある。 これは、呼び出しの割り込みから再開までの間の時間が原因で 停止が最終的に完了した際に時間にずれが発生するからである。 この問題は、絶対時刻が指定できる \fBclock_nanosleep\fP(2) を使うことで回避できる。 - +.PP .\" See also http://thread.gmane.org/gmane.linux.kernel/696854/ .\" Subject: nanosleep() uses CLOCK_MONOTONIC, should be CLOCK_REALTIME? .\" Date: 2008-06-22 07:35:41 GMT @@ -124,19 +126,29 @@ POSIX.1 は、 \fBnanosleep\fP() は \fBCLOCK_REALTIME\fP に対して時刻を 結果として、クロック値が更新前か後かに関わらず、要求された相対的な時間が 経過すると満了することになる。 .RE .SS 以前の動作 -(例えば、時間が重要な意味を持つハードウェアを制御する場合など) より正確な停止を必要とするアプリケーションに対応するために、 -\fBnanosleep\fP() は、マイクロ秒精度のビジーウェイトを利用することで、 2\ ms 以下の停止を行うことができた。 -但し、この機能を利用するには、呼び出し元のスレッドが \fBSCHED_FIFO\fP や \fBSCHED_RR\fP -といったリアルタイムポリシーの元でスケジューリングされている 必要があった。 この特別な拡張はカーネル 2.5.39 で削除された。したがって、 現在の -2.4 系列のカーネルにはこの機能が存在するが、 2.6系列のカーネルにはない。 +In order to support applications requiring much more precise pauses (e.g., +in order to control some time\-critical hardware), \fBnanosleep\fP() would +handle pauses of up to 2 milliseconds by busy waiting with microsecond +precision when called from a thread scheduled under a real\-time policy like +\fBSCHED_FIFO\fP or \fBSCHED_RR\fP. This special extension was removed in kernel +2.5.39, and is thus not available in Linux 2.6.0 and later kernels. .SH バグ -Linux 2.4 では、 \fBnanosleep\fP() が (\fBSIGTSTP\fP などの) シグナルにより停止された場合、 -\fBnanosleep\fP() の呼び出しは \fBSIGCONT\fP シグナルによるスレッドの再開後に \fBEINTR\fP エラーで失敗する。 -システムコールがこの後で再スタートされた場合、 スレッドが停止状態にある間に経過した時間は 停止期間としてカウント「されない」。 +If a program that catches signals and uses \fBnanosleep\fP() receives signals +at a very high rate, then scheduling delays and rounding errors in the +kernel's calculation of the sleep interval and the returned \fIremain\fP value +mean that the \fIremain\fP value may steadily \fIincrease\fP on successive +restarts of the \fBnanosleep\fP() call. To avoid such problems, use +\fBclock_nanosleep\fP(2) with the \fBTIMER_ABSTIME\fP flag to sleep to an +absolute deadline. +.PP +In Linux 2.4, if \fBnanosleep\fP() is stopped by a signal (e.g., \fBSIGTSTP\fP), +then the call fails with the error \fBEINTR\fP after the thread is resumed by a +\fBSIGCONT\fP signal. If the system call is subsequently restarted, then the +time that the thread spent in the stopped state is \fInot\fP counted against +the sleep interval. This problem is fixed in Linux 2.6.0 and later kernels. .SH 関連項目 \fBclock_nanosleep\fP(2), \fBrestart_syscall\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/nfsservctl.2 b/manual/LDP_man-pages/draft/man2/nfsservctl.2 deleted file mode 100644 index fa8f31ea..00000000 --- a/manual/LDP_man-pages/draft/man2/nfsservctl.2 +++ /dev/null @@ -1,71 +0,0 @@ -.\" %%%LICENSE_START(PUBLIC_DOMAIN) -.\" This text is in the public domain. -.\" %%%LICENSE_END -.\" -.\" FIXME . The description of nfsservctl() on this page -.\" is woefully thin. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Sat Aug 30 14:47:25 JST 1997 -.\" by HANATAKA Shinya -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH NFSSERVCTL 2 2013\-09\-17 Linux "Linux Programmer's Manual" -.SH 名前 -nfsservctl \- カーネル nfs デーモンのためのインターフェース -.SH 書式 -.nf -\fB#include \fP -.sp -\fBlong nfsservctl(int \fP\fIcmd\fP\fB, struct nfsctl_arg *\fP\fIargp\fP\fB,\fP -\fB union nfsctl_res *\fP\fIresp\fP\fB);\fP -.fi -.SH 説明 -\fI注意\fP: Linux 3.1 以降では、このシステムコールはもはや存在しない。 - -.nf -/* - * nfsctl() によって理解されるコマンド - */ -#define NFSCTL_SVC 0 /* サーバープロセス */ -#define NFSCTL_ADDCLIENT 1 /* NFS クライアントを追加 */ -#define NFSCTL_DELCLIENT 2 /* NFS クライアンドを削除 */ -#define NFSCTL_EXPORT 3 /* ファイルシステムのエクスポート */ -#define NFSCTL_UNEXPORT 4 /* ファイルシステムのアンエクスポート */ -#define NFSCTL_UGIDUPDATE 5 /* UID/GID マップの更新 - (Linux 2.4.x とそれ以前のみ) */ -#define NFSCTL_GETFH 6 /* (mountd で使用される) fh の取得 - (Linux 2.4.x とそれ以前のみ) */ - -struct nfsctl_arg { - int ca_version; /* safeguard */ - union { - struct nfsctl_svc u_svc; - struct nfsctl_client u_client; - struct nfsctl_export u_export; - struct nfsctl_uidmap u_umap; - struct nfsctl_fhparm u_getfh; - unsigned int u_debug; - } u; -} - -union nfsctl_res { - struct knfs_fh cr_getfh; - unsigned int cr_debug; -}; -.fi -.SH 返り値 -成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 -.SH 準拠 -このコールは Linux 特有である。 -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/nice.2 b/manual/LDP_man-pages/draft/man2/nice.2 deleted file mode 100644 index 318cc3db..00000000 --- a/manual/LDP_man-pages/draft/man2/nice.2 +++ /dev/null @@ -1,88 +0,0 @@ -.\" Copyright (c) 1992 Drew Eckhardt , March 28, 1992 -.\" -.\" %%%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 -.\" Modified 1993-07-24 by Rik Faith -.\" Modified 1996-11-04 by Eric S. Raymond -.\" Modified 2001-06-04 by aeb -.\" Modified 2004-05-27 by Michael Kerrisk -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 SUTO, Mitsuaki -.\" all rights reserved. -.\" Translated 1997-06-26, SUTO, Mitsuaki -.\" Updated 2001-06-25, Kentaro Shirakata -.\" Updated 2005-09-03, Akihiro MOTOKI -.\" Updated 2005-10-07, Akihiro MOTOKI -.\" -.TH NICE 2 2014\-04\-28 Linux "Linux Programmer's Manual" -.SH 名前 -nice \- プロセスの優先度を変更する -.SH 書式 -\fB#include \fP -.sp -\fBint nice(int \fP\fIinc\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBnice\fP(): _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE -.SH 説明 -\fBnice\fP() は \fIinc\fP の値を \fBnice\fP を呼んだプロセスの nice 値に加える (nice -値が大きい数値ほど低い優先度を表す)。 負の数を指定する、つまり、以前よりも優先度を上げるという指定ができるのは スーパーユーザーだけである。 nice -値の範囲については \fBgetpriority\fP(2) で説明されている。 -.SH 返り値 -成功した場合、新しい nice 値が返る (但し、下記の「注意」を参照)。 失敗した場合 \-1 が返り、 \fIerrno\fP -がエラーの内容に従って設定される。 -.SH エラー -.TP -\fBEPERM\fP -スーパーユーザー以外が \fIinc\fP に負の数値を指定して優先度を上げようとした。 呼び出し元のプロセスが \fIinc\fP -に負の数値を指定して優先度を上げようとしたが、 十分な権限を持っていなかった。 Linux では \fBCAP_SYS_NICE\fP -ケーパビリティが必要である。 (\fBsetrlimit\fP(2) のリソース上限 \fBRLIMIT_NICE\fP に関する議論も参照のこと)。 -.SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001. しかし、Linux と (2.2.4より古い) (g)libc では返り値は標準と異なる。 -詳細は以下を参照のこと。 SVr4 には他に \fBEINVAL\fP エラーコードについての記述がある。 -.SH 注意 -SUSv2 と POSIX 1003.1\-2003 では、 \fBnice\fP() は新しい nice 値を返すと規定されている。 一方、Linux -システムコールと (2.2.4 より古い) (g)libc ライブラリ関数は 成功時に 0 を返す。新しい nice 値は -\fBgetpriority\fP(2) を使って取得できる。 - -glibc 2.2.4 以降では、 \fBnice\fP() は \fBgetpriority\fP(2) を呼び出すライブラリ関数として実装されており、 -呼び出し元に返す新しい nice 値を \fBgetpriority\fP(2) を呼び出して取得するようになっている。 この実装では、正常な動作でも \-1 -が返される可能性がある。 確実にエラーを検出するためには、 呼び出しの前に \fIerrno\fP に 0 を設定し、 \fBnice\fP() が \-1 -を返したときに errno をチェックすると良い。 -.SH 関連項目 -\fBnice\fP(1), \fBrenice\fP(1), \fBfork\fP(2), \fBgetpriority\fP(2), \fBsetpriority\fP(2), -\fBcapabilities\fP(7), \fBsched\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index c7b25830..00000000 --- a/manual/LDP_man-pages/draft/man2/open.2 +++ /dev/null @@ -1,789 +0,0 @@ -.\" This manpage is Copyright (C) 1992 Drew Eckhardt; -.\" and Copyright (C) 1993 Michael Haardt, Ian Jackson. -.\" and Copyright (C) 2008 Greg Banks -.\" and Copyright (C) 2006, 2008, 2013, 2014 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 1993-07-21 by Rik Faith -.\" Modified 1994-08-21 by Michael Haardt -.\" Modified 1996-04-13 by Andries Brouwer -.\" Modified 1996-05-13 by Thomas Koenig -.\" Modified 1996-12-20 by Michael Haardt -.\" Modified 1999-02-19 by Andries Brouwer -.\" Modified 1998-11-28 by Joseph S. Myers -.\" Modified 1999-06-03 by Michael Haardt -.\" Modified 2002-05-07 by Michael Kerrisk -.\" Modified 2004-06-23 by Michael Kerrisk -.\" 2004-12-08, mtk, reordered flags list alphabetically -.\" 2004-12-08, Martin Pool (& 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 -.\" and Timo Sirainen -.\" Rewrite description of O_EXCL. -.\" 2008-01-11, Greg Banks : 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 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997-1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1999-08-14, HANATAKA Shinya -.\" Updated 2001-05-25, Yuichi SATO -.\" Updated & Modified 2002-01-02, Yuichi SATO -.\" Updated & Modified 2002-07-07, Yuichi SATO -.\" Updated & Modified 2002-09-19, Yuichi SATO -.\" Updated & Modified 2003-07-30, Yuichi SATO -.\" Updated & Modified 2003-11-27, Yuichi SATO -.\" Updated & Modified 2005-01-01, Yuichi SATO -.\" Updated & Modified 2005-09-14, Akihiro MOTOKI -.\" Updated & Modified 2005-10-14, Akihiro MOTOKI -.\" Updated & Modified 2006-01-18, Akihiro MOTOKI -.\" Updated & Modified 2006-04-15, Akihiro MOTOKI, LDP v2.29 -.\" Updated 2007-01-07, Akihiro MOTOKI, LDP v2.43 -.\" Updated 2007-05-01, Akihiro MOTOKI, LDP v2.46 -.\" Updated 2007-10-12, Akihiro MOTOKI, LDP v2.66 -.\" Updated 2008-02-12, Akihiro MOTOKI, LDP v2.77 -.\" Updated 2008-04-04, Akihiro MOTOKI, LDP v2.79 -.\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2010-04-23, Akihiro MOTOKI, LDP v3.24 -.\" Updated 2012-05-08, Akihiro MOTOKI -.\" Updated 2012-05-30, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" Updated 2013-08-16, Akihiro MOTOKI -.\" -.TH OPEN 2 2015\-01\-22 Linux "Linux Programmer's Manual" -.SH 名前 -open, openat, creat \- ファイルのオープン、作成を行う -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -\fB#include \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 -.sp -\fBint openat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, int \fP\fIflags\fP\fB);\fP -\fBint openat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, int \fP\fIflags\fP\fB, mode_t \fP\fImode\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBopenat\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_ATFILE_SOURCE -.RE -.ad -.PD -.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 -が作成される。ファイル記述とは、システム全体のオープン中のファイルのテーブルのエントリーである。 -このオープンファイル記述は、ファイルオフセットとファイル状態フラグ (下記参照) が保持する。 -ファイルディスクリプターはオープンファイルっ記述への参照である。 この後で \fIpathname\fP -が削除されたり、他のファイルを参照するように変更されたりしても、 この参照は影響を受けない。 オープンファイル記述の詳細な説明は「注意」の節を参照。 -.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_TMPFILE\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 以降) -.\" NOTE! several other man pages refer to this text -新しいファイルディスクリプターに対して close\-on\-exec フラグを有効にする。 このフラグを指定することで、 プログラムは -\fBFD_CLOEXEC\fP フラグをセットするために \fBfcntl\fP(2) \fBF_SETFD\fP 操作を別途呼び出す必要がなくなる。 - -.\" This flag fixes only one form of the race condition; -.\" The race can also occur with, for example, descriptors -.\" returned by accept(), pipe(), etc. -ある種のマルチスレッドのプログラムはこのフラグの使用は不可欠である点に注意すること。 なぜなら、個別に \fBFD_CLOEXEC\fP フラグを設定する -\fBfcntl\fP(2) \fBF_SETFD\fP 操作を呼び出したとしても、あるスレッドがファイルディスクリプターを オープンするのと同時に別のスレッドが -\fBfork\fP(2) と \fBexecve\fP(2) を実行するという競合条件を避けるのには十分ではないからである。 -実行の順序に依存して、この競合条件の結果、 \fBopen\fP() が返したファイルディスクリプターが \fBfork\fP(2) -で作成された子プロセスにより実行されるプログラムに意図せず見えてしまう可能性がある。 (この種の競合は、 本質的に、 close\-on\-exec -フラグをセットすべきファイルディスクリプターを作成するどのシステムコールでも起こり得るものであり、 他のいろいろな Linux -システムコールでこの問題に対処するために \fBO_CLOEXEC\fP と同等の機能が提供されている。) -.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 -か \fBO_TMPFILE\fP が指定されている場合、 \fImode\fP を指定しなければならない。 \fBO_CREAT\fP も \fBO_TMPFILE\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 がディレクトリでなければオープンは失敗する。 このフラグは、 \fBopendir\fP(3) が FIFO -やテープデバイスに対してコールされた場合の サービス不能 (denial\-of\-service) 攻撃を避けるために カーネル 2.1.126 -で追加された。 -.TP -\fBO_DSYNC\fP -ファイルに対する書き込み操作は、同期 I/O の\fIデータ\fP完全性完了の要件に基づいて行われる。 - -\fBwrite\fP(2) (や同様のコール) が返るまでに、 -書き込まれたデータおよびデータを取得するのに必要なファイルメタデータが裏で利用されているハードウェアに転送される (つまり、\fBwrite\fP(2) -の後に \fBfdatasync\fP(2) を呼び出したのと同じようになる)。 \fI下記の「注意」も参照のこと\fP。 -.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 で追加された。 このフラグが指定された場合でも \fIpathname\fP の前の方の要素 (最後のディレクトリセパレータより前の部分) -にあるシンボリックリンクについてはリンクが辿られる。 下記の \fBO_PATH\fP も参照のこと。 -.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_PATH\fP (Linux 2.6.39 以降) -.\" commit 1abf0c718f15a56a0a435588d1b104c7a37dc9bd -.\" commit 326be7b484843988afe57566b627fb7a70beac56 -.\" commit 65cfc6722361570bfe255698d9cd4dccaf47570d -.\" -.\" http://thread.gmane.org/gmane.linux.man/2790/focus=3496 -.\" Subject: Re: [PATCH] open(2): document O_PATH -.\" Newsgroups: gmane.linux.man, gmane.linux.kernel -.\" -このフラグを指定して取得したファイルディスクリプターは、 ファイルシステムツリー内での場所を示すため、 -純粋にファイルディスクリプターレベルでの作用する操作を実行するため、 の二つの目的で使用することができる。 ファイル自身はオープンされず、 -他のファイル操作 (例えば \fBread\fP(2), \fBwrite\fP(2), \fBfchmod\fP(2), \fBfchown\fP(2), -\fBfgetxattr\fP(2), \fBmmap\fP(2)) はエラー \fBEBADF\fP で失敗する。 - -取得したファイルディスクリプターに対して以下の操作を行うことが「できる」。 -.RS -.IP * 3 -.\" commit 332a2e1244bd08b9e3ecd378028513396a004a24 -.\" fstat(): commit 55815f70147dcfa3ead5738fd56d3574e2e3c1c2 -\fBclose\fP(2); \fBfchdir\fP(2) (Linux 3.5 以降); \fBfstat\fP(2) (Linux 3.6 以降) -.IP * -ファイルディスクリプターの複製 (\fBdup\fP(2), \fBfcntl\fP(2) \fBF_DUPFD\fP など) -.IP * -ファイルディスクリプターフラグの取得と設定 (\fBfcntl\fP(2) の \fBF_GETFD\fP と \fBF_SETFD\fP) -.IP * -\fBfcntl\fP(2) の \fBF_GETFL\fP 操作を使ったオープンされたファイルの状態フラグの取得。 返されるフラグには \fBO_PATH\fP -ビットが含まれる。 -.IP * -\fBopenat\fP(2) や他の "*at()" 系のシステムコールの \fIdirfd\fP 引数としてそのファイルディスクリプターを渡す。 これには、 -ファイルがディレクトリでない場合に \fBlinkat\fP(2) に \fBAT_EMPTY_PATH\fP が指定された場合 (や procfs 経由で -\fBAT_SYMLINK_FOLLOW\fP が使用された場合) を含む。 -.IP * -そのファイルディスクリプターを別のプロセスに UNIX ドメインソケット経由で渡す。 (\fBunix\fP(7) の \fBSCM_RIGHTS\fP を参照) -.RE -.IP -\fIflags\fP に \fBO_PATH\fP が指定された場合、 \fBO_CLOEXEC\fP, \fBO_DIRECTORY\fP, \fBO_NOFOLLOW\fP -以外のフラグビットは無視される。 - -\fIpathname\fP がシンボリックリンクで \fBO_NOFOLLOW\fP フラグも合わせて指定された場合、 -この呼び出しではシンボリックリンクを参照するファイルディスクリプターを返す。 このファイルディスクリプターは、 空のパス名を指定した -\fBfchownat\fP(2), \fBfstatat\fP(2), \fBlinkat\fP(2), \fBreadlinkat\fP(2) の呼び出しで -\fIdirfd\fP 引数として使うことで、 そのシンボリックリンクに対して操作を行うことができる。 -.TP -\fBO_SYNC\fP -ファイルに対する書き込み操作は、同期 I/O の\fIファイル\fP完全性完了の要件に基づいて行われる (これに対し \fBO_DSYNC\fP では同期 I/O -の\fIデータ\fP完全性完了が提供される)。 - -\fBwrite\fP(2) (や同様のコール) が返るまでに、 書き込まれたデータと関連するファイルメタデータが裏で利用されているハードウェアに転送される -(つまり、\fBwrite\fP(2) の後に \fBfsync\fP(2) を呼び出したのと同じようになる)。 \fI下記の「注意」も参照のこと\fP。 -.TP -\fBO_TMPFILE\fP (Linux 3.11 以降) -.\" commit 60545d0d4610b02e55f65d141c95b18ccf855b6e -.\" commit f4e0c30c191f87851c4a53454abb55ee276f4a7e -.\" commit bb458c644a59dbba3a1fe59b27106c5e68e1c4bd -名前なしの一時ファイルを作成する。 \fIpathname\fP 引き数はディレクトリを指定する。 名前なしの inode -がそのディレクトリが存在するファイルシステムに作成される。 そのファイルに名前を付与しない限り、 作成されたファイルに書き込まれた内容は、 -最後のファイルディスクリプターがクローズされる際に失われる。 - -\fBO_TMPFILE\fP は必ず \fBO_RDWR\fP か \fBO_WRONLY\fP のいずれかと一緒に使わなければならない。 \fBO_EXCL\fP -も指定することができる。 \fBO_EXCL\fP が指定されなかった場合、 \fBlinkat\fP(2) -を使って、そのファイルシステムにこの一時ファイルへのリンクを作成し、ファイルを永続化することができる。 以下のコードのようにすればよい。 - -.in +4n -.nf -char path[PATH_MAX]; -fd = open("/path/to/dir", O_TMPFILE | O_RDWR, - S_IRUSR | S_IWUSR); - -/* 'fd' に対するファイル I/O ... */ - -snprintf(path, PATH_MAX, "/proc/self/fd/%d", fd); -linkat(AT_FDCWD, path, AT_FDCWD, "/path/for/file", - AT_SYMLINK_FOLLOW); -.fi -.in - -この場合、 \fBopen\fP() の \fImode\fP 引き数は \fBO_CREAT\fP と同様にファイルのアクセス許可モードの決定に使われる。 - -\fBO_TMPFILE\fP とともに \fBO_EXCL\fP を指定すると、 -一時ファイルに対して上記の方法でファイルシステムへのリンクを行うことができなくなる (この場合の \fBO_EXCL\fP の意味は他の場合の -\fBO_EXCL\fP の意味とは異なる点に注意)。 - - -.\" Inspired by http://lwn.net/Articles/559147/ -\fBO_TMPFILE\fP には主に二つの用途がある。 -.RS -.IP * 3 -改善された \fBtmpfile\fP(3) の機能: (1) クローズ時に自動的に削除される、 (2) パス名では決して参照できない、 (3) -シンボリックリンク攻撃ができない、 (4) 呼び出し元が一意な名前を考える必要がない、 という特長を持つ競合のない一時ファイルの作成。 -.IP * -最初は見えないファイルを作成し、 それからデータを書き込んだり、適切なファイルシステム属性を持つように調整したり (\fBchown\fP(2), -\fBchmod\fP(2), \fBfsetxattr\fP(2) など) した後、 準備が全て整った状態で (上述の \fBlinkat\fP(2) を使って) -ファイルシステム内にアトミックにリンクを行う。 -.RE -.IP -.\" commit 99b6436bc29e4f10e4388c27a3e4810191cc4788 -.\" commit ab29743117f9f4c22ac44c13c1647fb24fb2bafe -\fBO_TMPFILE\fP は、 裏で利用されるファイルシステムによるサポートが必要である。 一部の Linux -ファイルシステムだけがこの機能をサポートしている。 最初の実装では、 ext2, ext3, ext4, UDF, Minix, shmem -ファイルシステムがサポートしていた。 XFS でのサポートが Linux 3.15 で追加された。 -.TP -\fBO_TRUNC\fP -ファイルが既に存在し、通常ファイルであり、 アクセスモードで書き込みが許可されている (つまり、 \fBO_RDWR\fP または \fBO_WRONLY\fP -の) 場合、長さ 0 に切り詰め (truncate) られる。 ファイルが FIFO または端末デバイスファイルの場合、 \fBO_TRUNC\fP -フラグは無視される。 それ以外の場合、 \fBO_TRUNC\fP の効果は未定義である。 -.SS creat() -\fBcreat\fP() は \fIflags\fP に \fBO_CREAT|O_WRONLY|O_TRUNC\fP を指定して \fBopen\fP() -を行うのと等価である。 -.SS openat() -\fBopenat\fP() システムコールは \fBopen\fP() と全く同様に動作するが、以下で説明する点が異なる。 - -\fIpathname\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fIdirfd\fP -が参照するディレクトリに対する相対パスと解釈される (\fBopen\fP() -に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。 - -\fIpathname\fP で指定されたパス名が相対パスで、 \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBopen\fP() -と同様に) \fIpathname\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 - -\fIpathname\fP で指定されたパス名が絶対パスの場合、 \fIdirfd\fP は無視される。 -.SH 返り値 -\fBopen\fP(), \fBopenat\fP(), \fBcreat\fP() は新しいファイルディスクリプターを返す。 エラーが発生した場合は \-1 を返す -(その場合は \fIerrno\fP が適切に設定される)。 -.SH エラー -\fBopen\fP(), \fBopenat\fP(), \fBcreat\fP() は以下のエラーで失敗する。 -.TP -\fBEACCES\fP -ファイルに対する要求されたアクセスが許されていないか、 \fIpathname\fP のディレクトリ部分の何れかのディレクトリに検索許可がなかった。 -またはファイルが存在せず、親ディレクトリへの書き込み許可がなかった。 (\fBpath_resolution\fP(7) も参照すること。) -.TP -\fBEDQUOT\fP -\fBO_CREAT\fP が指定された場合で、そのファイルが存在せず、ディスクブロックか inode がそのファイルシステムのユーザークォータに達していた。 -.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 -\fBEINVAL\fP -ファイルシステムが \fBO_DIRECT\fP フラグをサポートしていない。 詳細は\fB注意\fPを参照。 -.TP -\fBEINVAL\fP -.\" In particular, __O_TMPFILE instead of O_TMPFILE -\fIflags\fP に無効な値が入っている。 -.TP -\fBEINVAL\fP -\fIflags\fP に \fBO_TMPFILE\fP が指定されたが、 \fBO_WRONLY\fP も \fBO_RDWR\fP も指定されていなかった。 -.TP -\fBEISDIR\fP -\fIpathname\fP はディレクトリを参照しており、書き込み要求が含まれていた (つまり \fBO_WRONLY\fP または \fBO_RDWR\fP -が設定されている)。 -.TP -\fBEISDIR\fP -\fIpathname\fP が存在するディレクトリを参照していて、 \fBO_TMPFILE\fP および \fBO_WRONLY\fP と \fBO_RDWR\fP -の一方が \fIflags\fP に指定されていたが、 このカーネルバージョンでは \fBO_TMPFILE\fP 機能が提供されていない。 -.TP -\fBELOOP\fP -\fIpathname\fP を解決する際に遭遇したシンボリックリンクが多過ぎる。 -.TP -\fBELOOP\fP -\fIpathname\fP がシンボリックリンクで、 \fIflags\fP に \fBO_NOFOLLOW\fP が指定されたが、 \fBO_PATH\fP -が指定されていなかった。 -.TP -\fBEMFILE\fP -プロセスがオープンしているファイル数がすでに最大数に達している (\fBgetrlimit\fP(2) の \fBRLIMIT_NOFILE\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 -\fBENOENT\fP -\fIpathname\fP が存在しないディレクトリを参照していて、 \fBO_TMPFILE\fP および \fBO_WRONLY\fP と \fBO_RDWR\fP -の一方が \fIflags\fP に指定されていたが、 このカーネルバージョンでは \fBO_TMPFILE\fP 機能が提供されていない。 -.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 で そのファイルを読み込み用でオープンしている -FIFO が存在しない。 または、ファイルがデバイススペシャルファイルで 対応するデバイスが存在しない。 -.TP -\fBEOPNOTSUPP\fP -\fIpathname\fP を含んでいるファイルシステムが \fBO_TMPFILE\fP をサポートしていない。 -.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(1<31)\-1\fP バイトを超えるファイルを開こうとした場合である。 上記の \fBO_LARGEFILE\fP も参照。 これは -POSIX.1\-2001 で規定されているエラーである。 2.6.24 より前のカーネルでは、Linux はこの場合にエラー \fBEFBIG\fP -を返していた。 -.TP -\fBEPERM\fP -.\" Strictly speaking, it's the filesystem UID... (MTK) -\fBO_NOATIME\fP フラグが指定されたが、呼び出し元の実効ユーザー ID が ファイルの所有者と一致せず、かつ呼び出し元に特権 -(\fBCAP_FOWNER\fP) がない。 -.TP -\fBEPERM\fP -操作が file seal により禁止されている。 \fBfcntl\fP(2) 参照。 -.TP -\fBEROFS\fP -\fIpathname\fP が読み込み専用のファイルシステム上のファイルを参照しており、 書き込みアクセスが要求された。 -.TP -\fBETXTBSY\fP -\fIpathname\fP が現在実行中の実行イメージを参照しており、書き込みが要求された。 -.TP -\fBEWOULDBLOCK\fP -\fBO_NONBLOCK\fP フラグが指定されたが、そのファイルには矛盾するリースが設定されていた (\fBfcntl\fP(2) 参照)。 -.PP -\fBopenat\fP() では以下のエラーも発生する。 -.TP -\fBEBADF\fP -\fIdirfd\fP が有効なファイルディスクリプターではない。 -.TP -\fBENOTDIR\fP -\fIpathname\fP が相対パス名で、 \fIdirfd\fP がディレクトリ以外のファイルを参照しているファイルディスクリプターである。 -.SH バージョン -\fBopenat\fP() はカーネル 2.6.16 で Linux に追加された。 ライブラリによるサポートはバージョン 2.4 で glibc -に追加された。 -.SH 準拠 -\fBopen\fP(), \fBcreat\fP() SVr4, 4.3BSD, POSIX.1\-2001, POSIX.1\-2008. - -\fBopenat\fP(): POSIX.1\-2008. - -フラグ \fBO_DIRECT\fP, \fBO_NOATIME\fP, \fBO_PATH\fP, \fBO_TMPFILE\fP は Linux 特有のものである。 -これらのフラグの定義を得るためには \fB_GNU_SOURCE\fP を定義しなければならない。 - -フラグ \fBO_CLOEXEC\fP, \fBO_DIRECTORY\fP, \fBO_NOFOLLOW\fP は POSIX.1\-2001 では規定されていないが、 -POSIX.1\-2008 では規定されている。 glibc 2.12 以降では、これらの定義を得るには、 \fB_POSIX_C_SOURCE\fP を -200809L 以上の値で定義するか、 \fB_XOPEN_SOURCE\fP を 700 以上の値で定義する。 glibc 2.11 以前では、 -これらの定義を得るには \fB_GNU_SOURCE\fP を定義する。 - -\fBfeature_test_macros\fP(7) に注意書きがあるように、 \fB_POSIX_C_SOURCE\fP, \fB_XOPEN_SOURCE\fP, -\fB_GNU_SOURCE\fP などの機能検査マクロは\fIどの\fPヘッダーファイルをインクルードするより前に定義しなければならない。 -.SH 注意 -Linux では、 \fBO_NONBLOCK\fP フラグは、 open を実行したいが read または write を実行する意図は -必ずしもないことを意味する。 これは \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 の影響は未定義であり、その動作は実装によって異なる。 多くのシステムではファイルは実際に切り詰められる。 - -\fBopen\fP() はスペシャルファイルをオープンすることができるが、 \fBcreat\fP() でスペシャルファイルを作成できない点に注意すること。 -代わりに \fBmknod\fP(2) を使用する。 - -.\" -.\" -ファイルが新しく作成されると、 ファイルの \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 オープンファイル記述 -オープンファイル記述という用語は POSIX -で使用されている用語で、オープンされているファイルのシステム共通のテーブルのエントリーを参照するものである。 -別の文脈では、このオブジェクトはいろいろな呼び方があり、 -「オープンファイルオブジェクト」、「ファイルハンドル」、「オープンファイルテーブルエントリー」、 カーネル開発者の用語では \fIstruct file\fP -などと呼ばれる。 - -ファイルディスクリプターが (\fBdup\fP(2) や同様のシステムコールを使って) 複製される際に、 -複製されたファイルディスクリプターは元のファイルディスクリプターと同じオープンファイル記述を参照する。 結果として 2 -つのファイルディスクリプターはファイルオフセットとファイル状態フラグを共有する。 このような共有はプロセス間でも起こり得る。 \fBfork\fP(2) -で作成された子プロセスは親プロセスのファイルディスクリプターの複製を継承し、これらの複製は同じオープンファイル記述を参照する。 - -.\" -.\" -1 つのファイルに対して \fBopen\fP(2) を行う毎に、新しいオープンファイル記述が作成される。 したがって、 1 つのファイル inode -に対して複数のオープンファイル記述が存在することがありえる。 -.SS "同期 I/O" -POSIX.1\-2008 の「同期 I/O」の選択肢として複数種類が規定されており、 動作を制御するために \fBopen\fP() フラグとして -\fBO_SYNC\fP, \fBO_DSYNC\fP, \fBO_RSYNC\fP が規定されている。 この選択肢を実装がサポートしているかに関わらず、 -各実装では少なくとも通常のファイルに対して \fBO_SYNC\fP が利用できなければならない。 - -Linux は \fBO_SYNC\fP と \fBO_DSYNC\fP を実装しているが、 \fBO_RSYNC\fP は実装していない (少し間違っているのだが、 -glibc では \fBO_RSYNC\fP が \fBO_SYNC\fP と同じ値で定義されている)。 - -\fBO_SYNC\fP は、 同期 I/O での\fIファイル\fP完全性完了を提供する。 つまり、 -書き込み操作はデータとすべての関連メタデータを裏で利用されているハードウェアにフラッシュすることを意味する。 \fBO_DSYNC\fP は、 同期 I/O -での\fIデータ\fP完全性完了を提供する。 つまり、 書き込み操作はデータを裏で利用されているハードウェアにフラッシュするが、 -それ以降の読み出し操作が正常に完了するのに必要なメタデータの更新のみをフラッシュする。 データ完全性完了は、 -ファイル完全性完了を必要としないアプリケーションで、 ディスク操作の数を減らすことができる。 - -2 種類の完了の違いを理解するために、 ファイルメタデータの 2 つの要素、 ファイルの最終修正時刻 (\fIst_mtime\fP) -とファイル長、を考える。 すべての書き込み操作は最終修正時刻を更新するが、 ファイルの末尾にデータを追加する書き込み操作のみがファイル長を変更する。 -最終修正時刻は、 読み出しが正常に完了するのに必要ではないが、 ファイル長は必要である。 したがって、 \fBO_DSYNC\fP -はファイル長のメタデータの更新がフラッシュされることだけを保証する (これに対して \fBO_SYNC\fP -では最終修正時刻のメタデータも常にフラッシュされる)。 - -Linux 2.6.33 より前では、 Linux は \fBopen\fP() では \fBO_SYNC\fP フラグのみを実装していた。 しかしながら、 -このフラグが指定された場合、 ほとんどのファイルシステムで提供されていたのは実際には同期 I/O での\fIデータ\fP完全性完了と等価なものであった -(つまり、 \fBO_SYNC\fP は実際には \fBO_DSYNC\fP と等価なものとして実装されていた)。 - -.\" -.\" -Linux 2.6.33 行こう では、 正しい \fBO_SYNC\fP のサポートが提供されている。 しかしながら、 -バイナリレベルの後方互換性を保証するため、 \fBO_DSYNC\fP は以前の \fBO_SYNC\fP と同じ値で定義されており、 \fBO_SYNC\fP は -\fBO_DSYNC\fP フラグの値を含む新しい (2 ビットの) フラグ値として定義されている。 これにより、 -新しいヘッダーを使ってコンパイルされたアプリケーションで、 2.6.33 より前のカーネルで少なくとも \fBO_DSYNC\fP -の動作は同じになることが保証される。 -.SS NFS -NFS を実現しているプロトコルには多くの不備があり、特に \fBO_SYNC\fP と \fBO_NDELAY\fP に影響する。 - -.\" -.\" -UID マッピングを使用している NFS ファイルシステムでは、 \fBopen\fP() がファイルディスクリプターを返した場合でも \fBread\fP(2) -が \fBEACCES\fP で拒否される場合がある。 これはクライアントがアクセス許可のチェックを行って \fBopen\fP() -を実行するが、読み込みや書き込みの際には サーバーで UID マッピングが行われるためである。 -.SS ファイルアクセスモード -「アクセスモード」の値 \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 と同じ意味ではない。 - -.\" 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 -.\" -.\" -Linux では、特別な、非標準なアクセスモードとして 3 (バイナリでは 11) が 予約されており \fIflags\fP に指定できる。 -このアクセスモードを指定すると、ファイルの読み出し/書き込み許可をチェックし、 読み出しにも書き込みにも使用できないディスクリプターを返す。 -この非標準のアクセスモードはいくつかの Linux ドライバで、デバイス固有の \fBioctl\fP(2) -操作にのみ使用されるディスクリプターを返すために使われている。 -.SS "openat() や他のディレクトリファイルディスクリプター API の基本原理" -\fBopenat\fP() やディレクトリファイルディスクリプターを引き数を取る他のシステムコールやライブラリ関数 (\fBexecveat\fP(2), -\fBfaccessat\fP(2), \fBfanotify_mark\fP(2), \fBfchmodat\fP(2), \fBfchownat\fP(2), -\fBfstatat\fP(2), \fBfutimesat\fP(2), \fBlinkat\fP(2), \fBmkdirat\fP(2), \fBmknodat\fP(2), -\fBname_to_handle_at\fP(2), \fBreadlinkat\fP(2), \fBrenameat\fP(2), \fBsymlinkat\fP(2), -\fBunlinkat\fP(2), \fButimensat\fP(2) \fBmkfifoat\fP(3), \fBscandirat\fP(3)) -は二つの理由から用意されている。 ここでは、 \fBopenat\fP コールに関して説明するが、この基本原理は他のインターフェースでも同じである。 - -最初の理由として、 \fBopenat\fP() を使うと、 アプリケーションは、 カレントワーキングディレクトリ以外のディレクトリで \fBopen\fP() -を使ってファイルをオープンする際に起こり得る競合条件を避けることができる。 これらの競合条件は、 \fBopen\fP() -に渡されたディレクトリプレフィックスの構成要素が \fBopen\fP() の呼び出しと並行して変化する可能性があるという点に由来している。 例えば、ファイル -\fIpath/to/xxx\fP が存在する場合にファイル \fIpath/to/xxx.dep\fP を作成したいとする。 -問題は、存在確認とファイル作成の間に、 \fIpath\fP や \fIto\fP (シンボリックリンクでもよい) -が別の場所を指すように変更されることがあるということだ。 このような競合条件は、 対象のディレクトリに対するファイルディスクリプターをオープンし、 -それから \fBfstatat\fP(2) や \fBopenat\fP() の \fIdirfd\fP 引き数としてそのファイルディスクリプターを指定することで、 -避けることができる。 - -.\" -.\" -二つ目として、 \fBopenat\fP() を使うと、アプリケーションが管理するファイルディスクリプターにより、 -スレッド単位の「カレントワーキングディレクトリ」を実装することができる (この機能は、 \fI/proc/self/fd/dirfd\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.0 以降では、 -内部で使われるストレージの論理ブロックサイズのアライメント (通常は 512 バイト) で十分である。 論理ブロックサイズは \fBioctl\fP(2) -\fBBLKSSZGET\fP 操作や以下のシェルコマンドから知ることができる。 - - blockdev \-\-getss -.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) を使用すること。 - -カーネルが \fBO_TMPFILE\fP 機能をサポートしているかを判定する際に、 \fBEISDIR\fP と \fBENOENT\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), \fBopen_by_handle_at\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/open_by_handle_at.2 b/manual/LDP_man-pages/draft/man2/open_by_handle_at.2 index 7ccb3595..db08289a 100644 --- a/manual/LDP_man-pages/draft/man2/open_by_handle_at.2 +++ b/manual/LDP_man-pages/draft/man2/open_by_handle_at.2 @@ -27,7 +27,7 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH OPEN_BY_HANDLE_AT 2 2014\-06\-13 Linux "Linux Programmer's Manual" +.TH OPEN_BY_HANDLE_AT 2 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 name_to_handle_at, open_by_handle_at \- パス名に対するハンドルの取得とハンドルによるファイルのオープン .SH 書式 @@ -36,11 +36,11 @@ name_to_handle_at, open_by_handle_at \- パス名に対するハンドルの取 \fB#include \fP \fB#include \fP \fB#include \fP - +.PP \fBint name_to_handle_at(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB,\fP \fB struct file_handle *\fP\fIhandle\fP\fB,\fP \fB int *\fP\fImount_id\fP\fB, int \fP\fIflags\fP\fB);\fP - +.PP \fBint open_by_handle_at(int \fP\fImount_fd\fP\fB, struct file_handle *\fP\fIhandle\fP\fB,\fP \fB int \fP\fIflags\fP\fB);\fP .fi @@ -55,35 +55,44 @@ name_to_handle_at, open_by_handle_at \- パス名に対するハンドルの取 \fBname_to_handle_at\fP() システムコールは、 引き数 \fIdirfd\fP と \fIpathname\fP で指定されるファイルに対応するファイルハンドルとマウント ID を返す。 ファイルハンドルは引き数 \fIhandle\fP で返される。 \fIhandle\fP は以下の形式の構造体へのポインターである。 - +.PP .in +4n -.nf +.EX struct file_handle { unsigned int handle_bytes; /* Size of f_handle [in, out] */ int handle_type; /* Handle type [out] */ unsigned char f_handle[0]; /* File identifier (sized by caller) [out] */ }; -.fi +.EE .in .PP -\fIf_handle\fP で返されるハンドルを保持するのに十分な大きさの構造体を確保するのは、 呼び出し元が責任をもって行う必要がある。 呼び出し前に、 -\fIhandle_bytes\fP フィールドは \fIf_handle\fP 用に格納されたサイズで初期化すべきである -(\fI\fP で定義されている定数 \fBMAX_HANDLE_SZ\fP でファイルハンドルの最大サイズが規定されている)。 -呼び出しが成功でリターンする際、 \fIhandle_bytes\fP フィールドは \fIf_handle\fP に実際に書き込まれたバイト数に更新される。 - -呼び出し元では、 \fIhandle\->handle_bytes\fP を 0 に設定して呼び出しを行うことで、 \fIfile_handle\fP -構造体に必要なサイズを知ることができる。 この場合、 この呼び出しはエラー \fBEOVERFLOW\fP で失敗し、 -\fIhandle\->handle_bytes\fP に必要なサイズが設定される。 -呼び出し元はこの情報を使って、正しいサイズの構造体を割り当てることができる (下記の「例」を参照)。 - +It is the caller's responsibility to allocate the structure with a size +large enough to hold the handle returned in \fIf_handle\fP. Before the call, +the \fIhandle_bytes\fP field should be initialized to contain the allocated +size for \fIf_handle\fP. (The constant \fBMAX_HANDLE_SZ\fP, defined in +\fI\fP, specifies the maximum expected size for a file +handle. It is not a guaranteed upper limit as future filesystems may +require more space.) Upon successful return, the \fIhandle_bytes\fP field is +updated to contain the number of bytes actually written to \fIf_handle\fP. +.PP +The caller can discover the required size for the \fIfile_handle\fP structure +by making a call in which \fIhandle\->handle_bytes\fP is zero; in this case, +the call fails with the error \fBEOVERFLOW\fP and \fIhandle\->handle_bytes\fP +is set to indicate the required size; the caller can then use this +information to allocate a structure of the correct size (see EXAMPLES +below). Some care is needed here as \fBEOVERFLOW\fP can also indicate that no +file handle is available for this particular name in a filesystem which does +normally support file\-handle lookup. This case can be detected when the +\fBEOVERFLOW\fP error is returned without \fIhandle_bytes\fP being increased. +.PP \fIhandle_bytes\fP フィールドを使用する以外は、 呼び出し元は \fIfile_handle\fP 構造体の内容を意識せずに扱うべきである。 フィールド \fIhandle_type\fP と \fIf_handle\fP は後で \fBopen_by_handle_at\fP() を呼び出す場合にだけ必要である。 - +.PP \fIflags\fP 引き数は、 下記の \fBAT_EMPTY_PATH\fP と \fBAT_SYMLINK_FOLLOW\fP のうち 0 個以上の論理和を取って構成されるビットマスクである。 - +.PP 引き数 \fIpathname\fP と \fIdirfd\fP はその組み合わせでハンドルを取得するファイルを指定する。 以下の 4 つのパターンがある。 .IP * 3 \fIpathname\fP が空でない文字列で絶対パス名を含む場合、 このパス名が参照するファイルに対するハンドルが返される。 @@ -99,38 +108,49 @@ struct file_handle { には任意の種別のファイルを参照するオープンされたファイルディスクリプターか \fBAT_FDCWD\fP (カレントワーキングディレクトリを意味する) を指定でき、 \fIdirfd\fP が参照するファイルに対するハンドルが返される。 .PP -\fImount_id\fP 引き数は、 \fIpathname\fP に対応するファイルシステムのマウントの識別子を返す。 この識別子は -\fI/proc/self/mountinfo\fP のいずれかのレコードの最初のフィールドに対応する。 対応するレコードの 5 -番目のフィールドのパス名をオープンすると、 このマウントポイントのファイルディスクリプターが得られる。 このファイルディスクリプターはこの後の -\fBopen_by_handle_at\fP() の呼び出しで使用できる。 - +The \fImount_id\fP argument returns an identifier for the filesystem mount that +corresponds to \fIpathname\fP. This corresponds to the first field in one of +the records in \fI/proc/self/mountinfo\fP. Opening the pathname in the fifth +field of that record yields a file descriptor for the mount point; that file +descriptor can be used in a subsequent call to \fBopen_by_handle_at\fP(). +\fImount_id\fP is returned both for a successful call and for a call that +results in the error \fBEOVERFLOW\fP. +.PP デフォルトでは、 \fBname_to_handle_at\fP() は \fIpathname\fP がシンボリックリンクの場合にその展開 (dereference) を行わず、 リンク自身に対するハンドルを返す。 \fBAT_SYMLINK_FOLLOW\fP が \fIflags\fP に指定されると、 \fIpathname\fP がシンボリックリンクの場合にリンクの展開が行われる (リンクが参照するファイルに対するハンドルが返される)。 +.PP +.\" commit 20fa19027286983ab2734b5910c4a687436e0c31 +\fBname_to_handle_at\fP() does not trigger a mount when the final component of +the pathname is an automount point. When a filesystem supports both file +handles and automount points, a \fBname_to_handle_at\fP() call on an automount +point will return with error \fBEOVERFLOW\fP without having increased +\fIhandle_bytes\fP. This can happen since Linux 4.13 with NFS when accessing a +directory which is on a separate filesystem on the server. In this case, +the automount can be triggered by adding a "/" to the end of the pathname. .SS open_by_handle_at() \fBopen_by_handle_at\fP() システムコールは \fIhandle\fP が参照するファイルをオープンする。 \fIhandle\fP は 前に呼び出した \fBname_to_handle_at\fP() が返したファイルハンドルである。 - +.PP \fImount_fd\fP 引き数は、 \fIhandle\fP がそのファイルシステムに関連すると解釈されるマウントされたファイルシステム内の任意のオブジェクト (ファイル、 ディレクトリなど) のファイルディスクリプターである。 特別な値 \fBAT_FDCWD\fP も指定できる。 この値は呼び出し元のカレントワーキングディレクトリを意味する。 - +.PP 引き数 \fIflags\fP は \fBopen\fP(2) と同じである。 \fIhandle\fP がシンボリックリンクを参照している場合、 呼び出し元は \fBO_PATH\fP フラグを指定しなければならず、 そのシンボリックリンクは展開されない。 \fBO_NOFOLLOW\fP が指定された場合は、 \fBO_NOFOLLOW\fP は無視される。 - - +.PP \fBopen_by_handle_at\fP() を呼び出すには、 呼び出し元が \fBCAP_DAC_READ_SEARCH\fP ケーパビリティーを持っていなければならない。 .SH 返り値 -成功すると、 \fBname_to_handle_at\fP() は 0 を返し、 \fBopen_by_handle_at\fP() -は負でないファイルディスクリプターを返す。 - +On success, \fBname_to_handle_at\fP() returns 0, and \fBopen_by_handle_at\fP() +returns a file descriptor (a nonnegative integer). +.PP エラーの場合、 どちらのシステムコールも \-1 を返し、 \fIerrno\fP にエラーの原因を示す値を設定する。 .SH エラー \fBname_to_handle_at\fP() と \fBopen_by_handle_at\fP() は \fBopenat\fP(2) と同じエラーで失敗する。 また、 これらのシステムコールは以下のエラーで失敗することもある。 - +.PP \fBname_to_handle_at\fP() は以下のエラーで失敗することがある。 .TP \fBEFAULT\fP @@ -182,25 +202,25 @@ struct file_handle { で提供されている。 .SH 準拠 これらのシステムコールは非標準の Linux の拡張である。 - +.PP FreeBSD には \fBgetfh\fP() と \fBopenfh\fP() というほとんど同じ機能のシステムコールのペアが存在する。 .SH 注意 あるプロセスで \fBname_to_handle_at\fP() を使ってファイルハンドルを生成して、 そのハンドルを別のプロセスの \fBopen_by_handle_at\fP() で使用することができる。 - +.PP いくつかのファイルシステムでは、 パス名からファイルハンドルへの変換がサポートされていない。 例えば、 \fI/proc\fP, \fI/sys\fP や種々のネットワークファイルシステムなどである。 - +.PP ファイルハンドルは、 ファイルが削除されたり、 その他のファイルシステム固有の理由で、 無効 ("stale") になる場合がある。 無効なハンドルであることは、 \fBopen_by_handle_at\fP() からエラー \fBESTALE\fP が返ることで通知される。 - +.PP .\" https://lwn.net/Articles/375888/ .\" "Open by handle" - Jonathan Corbet, 2010-02-23 これらのシステムコールは、 ユーザー空間のファイルサーバーでの使用を意図して設計されている。 例えば、 ユーザー空間 NFS サーバーがファイルハンドルを生成して、 そのハンドルを NFS クライアントに渡すことができる。 その後、 クライアントがファイルをオープンしようとした際に、 このハンドルをサーバーに送り返すことができる。 このような機能により、 ユーザー空間ファイルサーバーは、 そのサーバーが提供するファイルに関してステートレスで (状態を保持せずに) 動作することができる。 - +.PP .\" commit bcda76524cd1fa32af748536f27f674a13e56700 \fIpathname\fP がシンボリックリンクを参照していて、 \fIflags\fP に \fBAT_SYMLINK_FOLLOW\fP が指定されていない場合、 \fBname_to_handle_at\fP() は (シンボリックが参照するファイルではなく) リンクに対するハンドルを返す。 @@ -212,59 +232,59 @@ FreeBSD には \fBgetfh\fP() と \fBopenfh\fP() というほとんど同じ機 ファイルシステムのアンマウント、マウントが行われるに連れて再利用されることがある。 したがって、 \fBname_to_handle_at\fP() (の \fI*mount_id\fP) で返されたマウント ID は対応するマウントされたファイルシステムを表す永続的な ID と考えるべきではない。 ただし、 アプリケーションは、 マウント ID に対応する \fImountinfo\fP レコードの情報を使うことで、 永続的な ID を得ることができる。 - +.PP .\" e.g., http://stackoverflow.com/questions/6748429/using-libblkid-to-find-uuid-of-a-partition 例えば、 \fImountinfo\fP レコードの 5 番目のフィールドのデバイス名を使って、 \fI/dev/disks/by\-uuid\fP のシンボリックリンク経由で対応するデバイス UUID を検索できる。 (UUID を取得するもっと便利な方法は \fBlibblkid\fP(3) ライブラリを使用することである。) そのプロセスは、逆に、 この UUID を使ってデバイス名を検索し、 対応するマウントポイントを取得することで、 \fBopen_by_handle_at\fP() で使用する \fImount_fd\fP 引き数を生成することができる。 -.SH 例 +.SH EXAMPLES 以下の 2 つのプログラムは \fBname_to_handle_at\fP() と \fBopen_by_handle_at\fP() の使用例を示したものである。 最初のプログラム (\fIt_name_to_handle_at.c\fP) は \fBname_to_handle_at\fP() を使用して、 コマンドライン引き数で指定されたファイルに対応するファイルハンドルとマウント ID を取得する。 ハンドルとマウント ID は標準出力に出力される。 - +.PP 2 つ目のプログラム (\fIt_open_by_handle_at.c\fP) は、 標準入力からマウント ID とファイルハンドルを読み込む。 それから、 \fBopen_by_handle_at\fP() を利用して、 そのハンドルを使ってファイルをオープンする。 追加のコマンドライン引き数が指定された場合は、 \fBopen_by_handle_at\fP() の \fImount_fd\fP 引き数は、 この引き数で渡された名前のディレクトリをオープンして取得する。 それ以外の場合、 \fI/proc/self/mountinfo\fP からスキャンして標準入力から読み込んだマウント ID に一致するマウント ID を検索し、 そのレコードで指定されているマウントディレクトリをオープンして、 \fImount_fd\fP を入手する。 (これらのプログラムではマウント ID が永続的ではない点についての対処は行わない。) - +.PP 以下のシェルセッションは、これら 2 つのプログラムの使用例である。 - +.PP .in +4n -.nf -$ \fBecho 'Can you please think about it?' > cecilia.txt\fP +.EX +$ \fBecho \(aqCan you please think about it?\(aq > cecilia.txt\fP $ \fB./t_name_to_handle_at cecilia.txt > fh\fP $ \fB./t_open_by_handle_at < fh\fP open_by_handle_at: Operation not permitted $ \fBsudo ./t_open_by_handle_at < fh\fP # Need CAP_SYS_ADMIN Read 31 bytes $ \fBrm cecilia.txt\fP -.fi +.EE .in - +.PP .\" Christoph Hellwig: That's why the file handles contain a generation .\" counter that gets incremented in this case. ここで、 ファイルを削除し (すぐに) 再作成する。 同じ内容で (運がよければ) 同じ inode になる。 この場合でも、 \fBopen_by_handle_at\fP() はこのファイルハンドルが参照する元のファイルがすでに存在しないことを認識する。 - +.PP .in +4n -.nf +.EX $ \fBstat \-\-printf="%i\en" cecilia.txt\fP # Display inode number 4072121 $ \fBrm cecilia.txt\fP -$ \fBecho 'Can you please think about it?' > cecilia.txt\fP +$ \fBecho \(aqCan you please think about it?\(aq > cecilia.txt\fP $ \fBstat \-\-printf="%i\en" cecilia.txt\fP # Check inode number 4072121 $ \fBsudo ./t_open_by_handle_at < fh\fP open_by_handle_at: Stale NFS file handle -.fi +.EE .in .SS "プログラムのソース: t_name_to_handle_at.c" \& -.nf +.EX #define _GNU_SOURCE #include #include @@ -282,7 +302,7 @@ int main(int argc, char *argv[]) { struct file_handle *fhp; - int mount_id, fhsize, flags, dirfd, j; + int mount_id, fhsize, flags, dirfd; char *pathname; if (argc != 2) { @@ -313,7 +333,7 @@ main(int argc, char *argv[]) /* file_handle 構造体を正しいサイズに確保し直す */ - fhsize = sizeof(struct file_handle) + fhp\->handle_bytes; + fhsize = sizeof(*fhp) + fhp\->handle_bytes; fhp = realloc(fhp, fhsize); /* Copies fhp\->handle_bytes */ if (fhp == NULL) errExit("realloc"); @@ -327,17 +347,17 @@ main(int argc, char *argv[]) ファイルハンドルのサイズ、ファイルハンドルを標準出力に書き出す */ printf("%d\en", mount_id); - printf("%d %d ", fhp\->handle_bytes, fhp\->handle_type); - for (j = 0; j < fhp\->handle_bytes; j++) + printf("%u %d ", fhp\->handle_bytes, fhp\->handle_type); + for (int j = 0; j < fhp\->handle_bytes; j++) printf(" %02x", fhp\->f_handle[j]); printf("\en"); exit(EXIT_SUCCESS); } -.fi +.EE .SS "プログラムのソース: t_open_by_handle_at.c" \& -.nf +.EX #define _GNU_SOURCE #include #include @@ -403,7 +423,7 @@ int main(int argc, char *argv[]) { struct file_handle *fhp; - int mount_id, fd, mount_fd, handle_bytes, j; + int mount_id, fd, mount_fd, handle_bytes; ssize_t nread; char buf[1000]; #define LINE_SIZE 100 @@ -434,7 +454,7 @@ main(int argc, char *argv[]) /* handle_bytes があれば、 file_handle 構造体をここで割り当てできる */ - fhp = malloc(sizeof(struct file_handle) + handle_bytes); + fhp = malloc(sizeof(*fhp) + handle_bytes); if (fhp == NULL) errExit("malloc"); @@ -442,7 +462,7 @@ main(int argc, char *argv[]) fhp\->handle_type = strtoul(nextp, &nextp, 0); - for (j = 0; j < fhp\->handle_bytes; j++) + for (int j = 0; j < fhp\->handle_bytes; j++) fhp\->f_handle[j] = strtoul(nextp, &nextp, 16); /* マウントポイントのファイルディスクリプターを取得する。 @@ -474,15 +494,14 @@ main(int argc, char *argv[]) exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \fBopen\fP(2), \fBlibblkid\fP(3), \fBblkid\fP(8), \fBfindfs\fP(8), \fBmount\fP(8) - +.PP .UR https://www.kernel.org/pub/linux/utils/util\-linux/ .UE で入手できる最新の \fIutil\-linux\fP リリースの \fIlibblkid\fP と \fIlibmount\fP のドキュメント。 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 index 8fc4f6d3..46d0b200 100644 --- a/manual/LDP_man-pages/draft/man2/outb.2 +++ b/manual/LDP_man-pages/draft/man2/outb.2 @@ -38,53 +38,53 @@ .\" Updated Thu Mar 24 JST 2005 by Kentaro Shirakata .\" Updated Thu Oct 9 JST 2005 by Kentaro Shirakata .\" -.TH OUTB 2 2012\-12\-31 Linux "Linux Programmer's Manual" +.TH OUTB 2 2020\-11\-01 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 \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 +.PP +\fBunsigned char inb(unsigned short \fP\fIport\fP\fB);\fP +\fBunsigned char inb_p(unsigned short \fP\fIport\fP\fB);\fP +\fBunsigned short inw(unsigned short \fP\fIport\fP\fB);\fP +\fBunsigned short inw_p(unsigned short \fP\fIport\fP\fB);\fP +\fBunsigned int inl(unsigned short \fP\fIport\fP\fB);\fP +\fBunsigned int inl_p(unsigned short \fP\fIport\fP\fB);\fP +.PP +\fBvoid outb(unsigned char \fP\fIvalue\fP\fB, unsigned short \fP\fIport\fP\fB);\fP +\fBvoid outb_p(unsigned char \fP\fIvalue\fP\fB, unsigned short \fP\fIport\fP\fB);\fP +\fBvoid outw(unsigned short \fP\fIvalue\fP\fB, unsigned short \fP\fIport\fP\fB);\fP +\fBvoid outw_p(unsigned short \fP\fIvalue\fP\fB, unsigned short \fP\fIport\fP\fB);\fP +\fBvoid outl(unsigned int \fP\fIvalue\fP\fB, unsigned short \fP\fIport\fP\fB);\fP +\fBvoid outl_p(unsigned int \fP\fIvalue\fP\fB, unsigned short \fP\fIport\fP\fB);\fP +.PP +\fBvoid insb(unsigned short \fP\fIport\fP\fB, void *\fP\fIaddr\fP\fB,\fP +\fB unsigned long \fP\fIcount\fP\fB);\fP +\fBvoid insw(unsigned short \fP\fIport\fP\fB, void *\fP\fIaddr\fP\fB,\fP +\fB unsigned long \fP\fIcount\fP\fB);\fP +\fBvoid insl(unsigned short \fP\fIport\fP\fB, void *\fP\fIaddr\fP\fB,\fP +\fB unsigned long \fP\fIcount\fP\fB);\fP +\fBvoid outsb(unsigned short \fP\fIport\fP\fB, const void *\fP\fIaddr\fP\fB,\fP +\fB unsigned long \fP\fIcount\fP\fB);\fP +\fBvoid outsw(unsigned short \fP\fIport\fP\fB, const void *\fP\fIaddr\fP\fB,\fP +\fB unsigned long \fP\fIcount\fP\fB);\fP +\fBvoid outsl(unsigned short \fP\fIport\fP\fB, const void *\fP\fIaddr\fP\fB,\fP +\fB unsigned long \fP\fIcount\fP\fB);\fP .fi .SH 説明 この一連の関数はポートに対する低レベルの入出力に使用する。 out* 関数はポート出力、in* 関数はポート入力を行う。 語尾に b がついている関数はバイト単位、w がついている関数はワード単位である。 _p がついている関数は I/O が終了するまで待つ。 -.LP +.PP .\" , given the following information .\" in addition to that given in .\" .BR outb (9). これらの関数はもともとカーネル内部での使用を想定して設計されているが、 ユーザー空間からでも使用できる。 - +.PP \fB\-O\fP や \fB\-O2\fP などを指定してコンパイルしなければならない。 これらの関数はインラインマクロとして定義されており、 最適化を行わないと関数の展開が行われず、 リンクの時に「解決できない参照(unresolved reference)」が発生する。 - +.PP ユーザー空間のアプリケーションが I/O ポートにアクセスすることを カーネルに教えるために \fBioperm\fP(2) もしくは \fBiopl\fP(2) を使用すること。これを忘れるとアプリケーションはセグメンテーション違反 (segmentation fault) を受けとることになる。 .SH 準拠 @@ -93,6 +93,5 @@ outb_p, outw_p, outl_p, inb_p, inw_p, inl_p \- ポート入出力 .SH 関連項目 \fBioperm\fP(2), \fBiopl\fP(2) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/pause.2 b/manual/LDP_man-pages/draft/man2/pause.2 index dc6414af..25b63b91 100644 --- a/manual/LDP_man-pages/draft/man2/pause.2 +++ b/manual/LDP_man-pages/draft/man2/pause.2 @@ -38,12 +38,12 @@ .\" Translated Thu Jun 26 21:08:30 JST 1997 .\" by SUTO, Mitsuaki .\" -.TH PAUSE 2 2008\-10\-06 Linux "Linux Programmer's Manual" +.TH PAUSE 2 2015\-08\-08 Linux "Linux Programmer's Manual" .SH 名前 pause \- シグナルを待つ .SH 書式 \fB#include \fP -.sp +.PP \fBint pause(void);\fP .SH 説明 \fBpause\fP() は、呼び出したプロセス (またはスレッド) を、 そのプロセスを終了させたり、シグナル捕捉関数が起動されるような @@ -57,9 +57,9 @@ pause \- シグナルを待つ \fBEINTR\fP シグナルを受け取り、シグナル捕獲関数から帰ってきた。 .SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.3BSD. .SH 関連項目 \fBkill\fP(2), \fBselect\fP(2), \fBsignal\fP(2), \fBsigsuspend\fP(2) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 index 01e2e2c3..1f65a1ec 100644 --- a/manual/LDP_man-pages/draft/man2/pciconfig_read.2 +++ b/manual/LDP_man-pages/draft/man2/pciconfig_read.2 @@ -2,7 +2,7 @@ .\" narahimi@us.ibm.com .\" .\" %%%LICENSE_START(FREELY_REDISTRIBUTABLE) -.\" May be freely distributed. +.\" May be freely distributed and modified. .\" %%%LICENSE_END .\" .\"******************************************************************* @@ -16,13 +16,13 @@ .\" Translated Sat Jun 19 17:51:11 JST 2004 .\" by Yuichi SATO .\" -.TH PCICONFIG_READ 2 2003\-07\-14 Linux "Linux Programmer's Manual" +.TH PCICONFIG_READ 2 2016\-07\-17 Linux "Linux Programmer's Manual" .SH 名前 pciconfig_read, pciconfig_write, pciconfig_iobase \- pci デバイス情報を扱う .SH 書式 .nf \fB#include \fP -.sp +.PP \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 @@ -31,7 +31,6 @@ pciconfig_read, pciconfig_write, pciconfig_iobase \- pci デバイス情報を \fB unsigned long \fP\fIdevfn\fP\fB);\fP .fi .SH 説明 -.PP PCI デバイスとのやり取り (interaction) は カーネル PCI レイヤですでに処理されているので、 通常はこららの関数をユーザー空間からアクセスする必要はない。 .TP @@ -47,10 +46,12 @@ bus/devfn ペアをこの関数に渡し、 メモリーオフセット (prep .SH 返り値 .TP \fBpciconfig_read\fP() -成功した場合、0 が返される。 エラーの場合、\-1 が返され、 \fIerrno\fP が適切に設定される。 +On success, zero is returned. On error, \-1 is returned and \fIerrno\fP is set +appropriately. .TP \fBpciconfig_write\fP() -成功した場合、0 が返される。 エラーの場合、\-1 が返され、 \fIerrno\fP が適切に設定される。 +On success, zero is returned. On error, \-1 is returned and \fIerrno\fP is set +appropriately. .TP \fBpciconfig_iobase\fP() \fIwhich\fP の値に基づいて、物理メモリー内の様々な I/O 領域の位置情報が返される。 \fIwhich\fP の値は、 @@ -81,6 +82,5 @@ I/O エラー。 .SH 関連項目 \fBcapabilities\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/perfmonctl.2 b/manual/LDP_man-pages/draft/man2/perfmonctl.2 index 160940ed..45686917 100644 --- a/manual/LDP_man-pages/draft/man2/perfmonctl.2 +++ b/manual/LDP_man-pages/draft/man2/perfmonctl.2 @@ -29,14 +29,14 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH PERFMONCTL 2 2013\-02\-13 Linux "Linux Programmer's Manual" +.TH PERFMONCTL 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 perfmonctl \- IA\-64 の PMU (性能監視ユニット) のインターフェース .SH 書式 .nf \fB#include \fP \fB#include \fP -.sp +.PP \fBlong perfmonctl(int \fP\fIfd\fP\fB, int \fP\fIcmd\fP\fB, void *\fP\fIarg\fP\fB, int \fP\fInarg\fP\fB);\fP .fi \fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 @@ -44,10 +44,10 @@ perfmonctl \- IA\-64 の PMU (性能監視ユニット) のインターフェー IA\-64 固有の \fBperfmonctl\fP() システムコールは PMU (性能監視ユニット; performance monitoring unit) へのインターフェースを提供する。 PMU は PMD (performance monitoring data) レジスターと PMC (performance monitoring control) レジスターで構成され、 ハードウェアの統計を収集する。 - +.PP \fBperfmonctl\fP() は、 操作 \fIcmd\fP を \fIarg\fP で指定された入力引き数で行う。 引き数の数は \fInarg\fP で規定される。 \fIfd\fP 引き数は操作対象の perfmon コンテキストを指定する。 - +.PP \fIcmd\fP に指定できる値は以下のとおりである。 .TP \fBPFM_CREATE_CONTEXT\fP @@ -55,14 +55,14 @@ unit) へのインターフェースを提供する。 PMU は PMD (performance \fBperfmonctl(int \fP\fIfd\fP\fB, PFM_CREATE_CONTEXT, pfarg_context_t *\fP\fIctxt\fP\fB, 1);\fP .fi コンテキストを用意する。 - +.IP \fIfd\fP 引き数は無視される。 新しい perfmon コンテキストを \fIctxt\fP で指定した内容で作成し、 そのファイルディスクリプターを \fIctxt\->ctx_fd\fP で返す。 - +.IP ファイルディスクリプターはそれ以降の \fBperfmonctl\fP() の呼び出しで使用したり、 \fBread\fP(2) を使ってイベント通知 (\fIpfm_msg_t\fP 型) を読み出したりするのに使用できる。 このファイルディスクリプターは \fBselect\fP(2), \fBpoll\fP(2), \fBepoll\fP(7) で状態監視 (ポーリング) することができる。 - +.IP コンテキストを破棄するには、 そのファイルディスクリプターに対して \fBclose\fP(2) を呼び出す。 .TP \fBPFM_WRITE_PMCS\fP @@ -125,7 +125,7 @@ PMD レジスターを読み出す。 \fBPFM_GET_FEATURES\fP .\" pfm_get_features() .nf -\fBperfmonctl(int \fP\fIfd\fP\fB, PFM_GET_FEARURES, pfarg_features_t *\fP\fIarg\fP\fB, 1);\fP +\fBperfmonctl(int \fP\fIfd\fP\fB, PFM_GET_FEATURES, pfarg_features_t *\fP\fIarg\fP\fB, 1);\fP .fi .TP \fBPFM_DEBUG\fP @@ -138,7 +138,7 @@ PMD レジスターを読み出す。 \fBPFM_GET_PMC_RESET_VAL\fP .\" pfm_get_pmc_reset() .nf -\fBperfmonctl(int \fP\fIfd\fP\fB, PFM_GET_PMC_RESET_VAL, pfarg_reg_t * \fP\fIreq\fP\fB, n);\fP +\fBperfmonctl(int \fP\fIfd\fP\fB, PFM_GET_PMC_RESET_VAL, pfarg_reg_t *\fP\fIreq\fP\fB, n);\fP .fi .\" .\" @@ -172,9 +172,8 @@ PMC レジスターをデフォルト値にリセットする。 glibc はこのシステムコールに対するラッパー関数を提供していない。 \fBsyscall\fP(2) を使って呼び出すこと。 .SH 関連項目 \fBgprof\fP(1) - +.PP perfmon2 インターフェース仕様 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/personality.2 b/manual/LDP_man-pages/draft/man2/personality.2 deleted file mode 100644 index 49b6e615..00000000 --- a/manual/LDP_man-pages/draft/man2/personality.2 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Copyright (C) 1995, Thomas K. Dyas -.\" -.\" %%%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 -.\" -.\" Created Sat Aug 21 1995 Thomas K. Dyas -.\" -.\" typo corrected, aeb, 950825 -.\" added layout change from joey, 960722 -.\" changed prototype, documented 0xffffffff, aeb, 030101 -.\" Modified 2004-11-03 patch from Martin Schulze -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-23, HANATAKA Shinya -.\" Updated 2003-04-24, Kentaro Shirakata -.\" Updated 2007-05-04, Akihiro MOTOKI -.\" -.TH PERSONALITY 2 2015\-02\-01 Linux "Linux Programmer's Manual" -.SH 名前 -personality \- プロセスを実行するドメインを設定する -.SH 書式 -\fB#include \fP -.sp -\fBint personality(unsigned long \fP\fIpersona\fP\fB);\fP -.SH 説明 -Linux は、プロセス毎の異なる実行ドメイン、すなわち パーソナリティ (personality) をサポートしている。 実行ドメインは Linux -にシグナル番号にどのシグナルを割り付けるかを 教えたりする。また、実行ドメインシステムにより、 Linux は、 他の UNIX -風のオペレーティングシステムでコンパイルされたバイナリに対する限定的なサポートを提供している。 - -\fIpersona\fP が 0xffffffff 以外の場合、 \fBpersonality\fP() は呼び出し元の実行ドメインを \fIpersona\fP -で指定された値に設定する。 \fIpersona\fP に 0xffffffff を指定すると、変更を行わず、現在の persona 値を取得できる。 - -利用可能な実行ドメインのリストは \fI\fP にある。 -.SH 返り値 -成功した場合、以前の \fIpersona\fP が返される。エラーの場合は、\-1 が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEINVAL\fP -カーネルがパーソナリティを変更できなかった。 -.SH 準拠 -\fBpersonality\fP() は Linux 固有であり、移植を意図したプログラムで使用すべきではない。 -.SH 関連項目 -\fBsetarch\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/pipe.2 b/manual/LDP_man-pages/draft/man2/pipe.2 deleted file mode 100644 index fa863a80..00000000 --- a/manual/LDP_man-pages/draft/man2/pipe.2 +++ /dev/null @@ -1,187 +0,0 @@ -.\" Copyright (C) 2005, 2008, Michael Kerrisk -.\" (A few fragments remain from an earlier (1992) version by -.\" Drew Eckhardt .) -.\" -.\" %%%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 -.\" Modified 1993-07-23 by Rik Faith -.\" Modified 1996-10-22 by Eric S. Raymond -.\" Modified 2004-06-17 by Michael Kerrisk -.\" Modified 2005, mtk: added an example program -.\" Modified 2008-01-09, mtk: rewrote DESCRIPTION; minor additions -.\" to EXAMPLE text. -.\" 2008-10-10, mtk: add description of pipe2() -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 SUTO, Mitsuaki -.\" all rights reserved. -.\" Translated Thu Jun 26 21:09:51 JST 1997 -.\" by SUTO, Mitsuaki -.\" Updated & Modified Thu Feb 10 00:47:11 JST 2005 -.\" by Yuichi SATO -.\" Updated & Modified Sat Dec 17 08:10:16 JST 2005 by Yuichi SATO -.\" Updated 2008-02-10, Akihiro MOTOKI , LDP v2.77 -.\" Updated 2008-11-09, Akihiro MOTOKI, LDP v3.13 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH PIPE 2 2014\-07\-08 Linux "Linux Programmer's Manual" -.SH 名前 -pipe, pipe2 \- パイプを生成する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint pipe(int \fP\fIpipefd\fP\fB[2]);\fP -.sp -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP /* O_* 定数の定義の取得 */ -\fB#include \fP -.sp -\fBint pipe2(int \fP\fIpipefd\fP\fB[2], int \fP\fIflags\fP\fB);\fP -.fi -.SH 説明 -\fBpipe\fP() はパイプを生成する。 パイプは、プロセス間通信に使用できる単方向のデータチャネルである。 配列 \fIpipefd\fP -は、パイプの両端を参照する二つのファイルディスクリプターを 返すのに使用される。 \fIpipefd[0]\fP がパイプの読み出し側、 -\fIpipefd[1]\fP がパイプの書き込み側である。 パイプの書き込み側に書き込まれたデータは、 -パイプの読み出し側から読み出されるまでカーネルでバッファーリングされる。 さらなる詳細は \fBpipe\fP(7) を参照のこと。 - -\fBpipe2\fP() は \fIflags\fP が 0 の場合には \fBpipe\fP() と同じである。 \fIflags\fP に以下の値をビット毎の論理和 -(OR) で指定することで、 異なる動作をさせることができる。 -.TP -\fBO_CLOEXEC\fP -新しく生成される二つのファイルディスクリプターの close\-on\-exec (\fBFD_CLOEXEC\fP) フラグをセットする。 -このフラグが役に立つ理由については、 \fBopen\fP(2) の \fBO_CLOEXEC\fP フラグの説明を参照のこと。 -.TP -\fBO_DIRECT\fP (Linux 3.4 以降) -.\" commit 9883035ae7edef3ec62ad215611cb8e17d6a1a5d -「パケット」モードで入出力を行うパイプを作成する。 このパイプへの \fBwrite\fP(2) それぞれが別のパケットとして扱われ、 このパイプからの -\fBread\fP(2) では一度に一つパケットが読み出される。 以下の点に注意すること。 -.RS -.IP * 3 -\fBPIPE_BUF\fP バイト (\fBpipe\fP(7) 参照) より大きいデータを書き込んだ場合、複数のパケットに分割される。 -定数 \fBPIPE_BUF\fP は \fI\fP で定義されている。 -.IP * -\fBread\fP(2) -で次のパケットよりも小さなバッファーサイズを指定した場合、要求されたバイト数のデータが読み出され、そのパケットの超過分のバイトは破棄される。 -可能性のある最大サイズのパケットを読み出すには、\fBPIPE_BUF\fP のバッファーサイズを指定すれば十分である (上の項目を参照)。 -.IP * -長さ 0 のパケットはサポートされていない。 (バッファーサイズ 0 を指定した \fBread\fP(2) は何も行わず 0 を返す)。 -.RE -.IP -このフラグをサポートしていない古いカーネルでは、エラー \fBEINVAL\fP が返る。これによりカーネルがサポートしていないことが分かる。 -.TP -\fBO_NONBLOCK\fP -新しく生成される二つのオープンファイル記述 (open file description) の \fBO_NONBLOCK\fP -ファイルステータスフラグをセットする。 このフラグを使うことで、 \fBO_NONBLOCK\fP をセットするために \fBfcntl\fP(2) -を追加で呼び出す必要がなくなる。 -.SH 返り値 -成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEFAULT\fP -\fIpipefd\fP が無効な値である。 -.TP -\fBEINVAL\fP -(\fBpipe2\fP()) \fIflags\fP に無効な値が入っている。 -.TP -\fBEMFILE\fP -このプロセスで使われているファイルディスクリプターが多すぎる。 -.TP -\fBENFILE\fP -オープンされているファイルの総数がシステムの制限に達している。 -.SH バージョン -\fBpipe2\fP() はバージョン 2.6.27 で Linux に追加された。 glibc によるサポートはバージョン 2.9 以降で利用できる。 -.SH 準拠 -\fBpipe\fP(): POSIX.1\-2001. - -\fBpipe2\fP() は Linux 固有である。 -.SH 例 -.\" fork.2 refers to this example program. -以下のプログラムではパイプを生成し、その後 \fBfork\fP(2) で子プロセスを生成する。 -子プロセスは同じパイプを参照するファイルディスクリプター集合のコピーを 継承する。 \fBfork\fP(2) の後、各プロセスはパイプ -(\fBpipe\fP(7) を参照) に必要がなくなったディスクリプターをクローズする。 親プロセスはプログラムのコマンドライン引き数に含まれる -文字列をパイプへ書き込み、 子プロセスはこの文字列をパイプから 1 バイトずつ読み込んで標準出力にエコーする。 -.SS プログラムのソース -.nf -#include -#include -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - int pipefd[2]; - pid_t cpid; - char buf; - - if (argc != 2) { - fprintf(stderr, "Usage: %s \en", argv[0]); - exit(EXIT_FAILURE); - } - - if (pipe(pipefd) == \-1) { - perror("pipe"); - exit(EXIT_FAILURE); - } - - cpid = fork(); - if (cpid == \-1) { - perror("fork"); - exit(EXIT_FAILURE); - } - - if (cpid == 0) { /* 子プロセスがパイプから読み込む */ - close(pipefd[1]); /* 使用しない write 側はクローズする */ - - while (read(pipefd[0], &buf, 1) > 0) - write(STDOUT_FILENO, &buf, 1); - - write(STDOUT_FILENO, "\en", 1); - close(pipefd[0]); - _exit(EXIT_SUCCESS); - - } else { /* 親プロセスは argv[1] をパイプへ書き込む */ - close(pipefd[0]); /* 使用しない read 側はクローズする */ - write(pipefd[1], argv[1], strlen(argv[1])); - close(pipefd[1]); /* 読み込み側が EOF に出会う */ - wait(NULL); /* 子プロセスを待つ */ - exit(EXIT_SUCCESS); - } -} -.fi -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/pivot_root.2 b/manual/LDP_man-pages/draft/man2/pivot_root.2 deleted file mode 100644 index 7ec78da6..00000000 --- a/manual/LDP_man-pages/draft/man2/pivot_root.2 +++ /dev/null @@ -1,106 +0,0 @@ -.\" Copyright (C) 2000 by Werner Almesberger -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" May be distributed under GPL -.\" %%%LICENSE_END -.\" -.\" Written 2000-02-23 by Werner Almesberger -.\" Modified 2004-06-17 Michael Kerrisk -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2000 NAKANO Takeo all rights reserved. -.\" Translated Wed Jun 14 2000 by NAKANO Takeo -.\" -.TH PIVOT_ROOT 2 2012\-07\-13 Linux "Linux Programmer's Manual" -.SH 名前 -pivot_root \- root ファイルシステムを変更する -.SH 書式 -\fBint pivot_root(const char *\fP\fInew_root\fP\fB, const char *\fP\fIput_old\fP\fB);\fP - -\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 -.SH 説明 -.\" -.\" The -.\" .B CAP_SYS_ADMIN -.\" capability is required. -\fBpivot_root\fP() は呼び出し元のプロセスの root ファイルシステムを \fIput_old\fP ディレクトリに移動し、 -\fInew_root\fP を呼び出し元のプロセスの新しい root ファイルシステムにする。 - -\fBpivot_root\fP() の典型的な利用法は、システムの起動中にシステムが一時的な root ファイルシステム (例えば \fBinitrd\fP) -をマウントし、これに続いて本当の root ファイルシステムをマウントし、 後者を必要な全てのプロセス・スレッドの カレント root -に変更するような場合である。 - -古い root ディレクトリを使っていた全てのプロセスやスレッドの カレント root とカレントワーキングディレクトリを、 -\fBpivot_root\fP() が変更するかどうかはわからない。 \fBpivot_root\fP() の呼びだしプロセスは、古い root -やカレントワーキングディレクトリを使っていた プロセスが、いずれの場合でも正しく動作することを保証しなければならない。 -これを簡単に行うには、それらのプロセスの root と カレントワーキングディレクトリを \fBpivot_root\fP() を呼び出す前に -\fInew_root\fP に変更しておくことである。 - -上記の段落は、将来 \fBpivot_root\fP() が変更されるかも知れないことを鑑みて、わざと曖昧に書いてある。 本ページを記述している時点では、 -\fBpivot_root\fP() は古い root ディレクトリを用いている全てのプロセス・スレッドの root と カレントワーキングディレクトリを -\fInew_root\fP に変更する。これはカーネルのスレッドが古い root ディレクトリを busy 状態にしないために必要である。これらのスレッドが -古いディレクトリを root やカレントワーキングディレクトリとしていると、 ファイルシステムに一切アクセスしない場合でも 古い root が busy -になってしまうからである。 将来は、カーネルスレッドがあらゆるファイルシステムへのアクセスを 明示的に放棄するメカニズムができ、このでしゃばりな機能は -\fBpivot_root\fP() から削除されるかもしれない。 - -これは呼び出し元のプロセスについても当てはまることに注意。 \fBpivot_root\fP() -がカレントプロセスのカレントワーキングディレクトリに影響するかどうかは 分からない。したがって \fBpivot_root\fP() の直後に -\fBchdir("/")\fP を呼び出すとよい。 - -\fInew_root\fP および \fIput_old\fP には以下の制限がある: -.IP \- 3 -ディレクトリでなければならない。 -.IP \- 3 -\fInew_root\fP と \fIput_old\fP は現在の root と同じファイルシステムにあってはならない。 -.IP \- 3 -\fIput_old\fP は \fInew_root\fP 以下になければならない。すなわち \fIput_old\fP を差す文字列に 1 個以上の \fI../\fP -を付けることによって \fInew_root\fP と同じディレクトリが得られなければならない。 -.IP \- 3 -他のファイルシステムが \fIput_old\fP にマウントされていてはならない。 -.PP -利用例については \fBpivot_root\fP(8) を参照のこと。 - -現在の root がマウントポイントではない (\fBchroot\fP(2) や \fBpivot_root\fP() の後など。以下も参照) 場合、 古い -root ディレクトリではなく、 そのファイルシステムのマウントポイントが \fIput_old\fP にマウントされる。 - -\fInew_root\fP はマウントポイントでなくてもよい。 この場合 \fI/proc/mounts\fP は、 \fInew_root\fP を root -(\fI/\fP) とするファイルシステムのマウントポイントを表示する。 -.SH 返り値 -成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -\fBpivot_root\fP() は \fBstat\fP(2) の返すあらゆるエラーを (\fIerrno\fP に) -返す可能性がある。さらに以下を返すことがある: -.TP -\fBEBUSY\fP -\fInew_root\fP または \fIput_old\fP が、現在の root ファイルシステム上にあるか、既に \fIput_old\fP -になんらかのファイルシステムがマウントされている。 -.TP -\fBEINVAL\fP -\fIput_old\fP が \fInew_root\fP の下層にない。 -.TP -\fBENOTDIR\fP -\fInew_root\fP または \fIput_old\fP がディレクトリでない。 -.TP -\fBEPERM\fP -呼び出し元のプロセスが \fBCAP_SYS_ADMIN\fP ケーパビリティを持っていない。 -.SH バージョン -\fBpivot_root\fP() は Linux 2.3.41 で導入された。 -.SH 準拠 -\fBpivot_root\fP() は Linux に固有のものなので、移植性はない。 -.SH 注意 -glibc はこのシステムコールに対するラッパー関数を提供していない。 \fBsyscall\fP(2) を使って呼び出すこと。 -.SH バグ -\fBpivot_root\fP() はシステムの他のプロセス全ての root と カレントワーキングディレクトリとを変更しなくてもよいはずである。 - -\fBpivot_root\fP() の使い方がもうちょっと曖昧になると、 あっという間にわけのわからない状態になってしまうだろう -.SH 関連項目 -\fBchdir\fP(2), \fBchroot\fP(2), \fBstat\fP(2), \fBinitrd\fP(4), \fBpivot_root\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/poll.2 b/manual/LDP_man-pages/draft/man2/poll.2 deleted file mode 100644 index c07e7dd2..00000000 --- a/manual/LDP_man-pages/draft/man2/poll.2 +++ /dev/null @@ -1,254 +0,0 @@ -.\" Copyright (C) 1997 Andries Brouwer (aeb@cwi.nl) -.\" and Copyright (C) 2006, 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 -.\" -.\" Additions from Richard Gooch and aeb, 971207 -.\" 2006-03-13, mtk, Added ppoll() + various other rewordings -.\" 2006-07-01, mtk, Added POLLRDHUP + various other wording and -.\" formatting changes. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-12-11, HANATAKA Shinya -.\" Updated & Modified 2004-05-22, Yuichi SATO -.\" Updated & Modified 2005-01-03, Yuichi SATO -.\" Updated & Modified 2005-10-10, Akihiro MOTOKI -.\" Updated 2005-12-05, Akihiro MOTOKI, Catch up to LDP man-pages 2.16 -.\" Updated 2006-04-16, Akihiro MOTOKI, Catch up to LDP man-pages 2.28 -.\" Updated 2006-07-23, Akihiro MOTOKI, Catch up to LDP man-pages 2.36 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH POLL 2 2014\-09\-06 Linux "Linux Programmer's Manual" -.SH 名前 -poll, ppoll \- ファイルディスクリプターにおけるイベントを待つ -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint poll(struct pollfd *\fP\fIfds\fP\fB, nfds_t \fP\fInfds\fP\fB, int \fP\fItimeout\fP\fB);\fP -.sp -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP -\fB#include \fP -.sp -\fBint ppoll(struct pollfd *\fP\fIfds\fP\fB, nfds_t \fP\fInfds\fP\fB, \fP -\fB const struct timespec *\fP\fItimeout_ts\fP\fB, const sigset_t *\fP\fIsigmask\fP\fB);\fP -.fi -.SH 説明 -\fBpoll\fP() は \fBselect\fP(2) と同様の仕事を行う、つまり、ファイルディスクリプター集合のいずれか一つが I/O -を実行可能な状態になるのを待つ。 - -監視するファイルディスクリプター集合は、 \fIfds\fP 引き数で指定する。 \fIfds\fP は、以下の型の構造体の配列である。 -.in +4n -.nf - -struct pollfd { - int fd; /* file descriptor */ - short events; /* requested events */ - short revents; /* returned events */ -}; -.in -.fi -.PP -\fInfds\fP には、 \fIfds\fP 配列の要素数を指定する。 - -\fIfd\fP フィールドには、オープンされたファイルのファイルディスクリプターが入る。 このフィールドが負の場合、対応する \fIevents\fP -フィールドは無視され、 \fIrevents\fP には 0 が返される。(この機能により、一つの \fBpoll\fP() -の呼び出しで簡単にあるファイルディスクリプターを無視することができる。 単に \fIfd\fP フィールドの符号を反転するだけでよい。 -ただし、この方法はファイルディスクリプター 0 を無視するのには使用できない点に注意すること。) - -構造体の \fIevents\fP 要素は入力パラメーターで、 ファイルディスクリプター \fIfd\fP に関して、 -アプリケーションが興味を持っているイベントのビットマスクを指定する。 このフィールドには 0 を指定することもでき、 その場合 \fIrevents\fP -で返されるイベントは \fBPOLLHUP\fP, \fBPOLLERR\fP, \fBPOLLNVAL\fP だけである (下記参照)。 - -\fIrevents\fP 要素は出力パラメーターで、実際に起こったイベントがカーネルにより設定される。 \fIrevents\fP で返されるビット列には、 -\fIevents\fP で指定したもののどれか、もしくは \fBPOLLERR\fP, \fBPOLLHUP\fP, \fBPOLLNVAL\fP のうちの一つが含まれる -(\fBPOLLERR\fP, \fBPOLLHUP\fP, \fBPOLLNVAL\fP の 3つのビットは \fIevents\fP -に指定しても意味がなく、対応した状態が真の場合に \fIrevents\fP に設定される)。 - -どのファイルディスクリプターにも要求したイベントが発生しておらず、 エラーも起こらない場合、 \fBpoll\fP() -はイベントのうちいずれか一つが発生するまで停止 (block) する。 - -\fItimeout\fP 引き数は、 ファイルディスクリプターが利用可能になるまで \fBpoll\fP() が停止する時間をミリ秒で指定する。 -\fBpoll\fP() の呼び出しは以下のいずれかになるまで停止する。 -.IP * 3 -ファイルディスクリプターが利用可能になる -.IP * -呼び出しがシグナルハンドラーにより割り込まれた -.IP * -タイムアウトが満了する -.PP -\fItimeout\fP 時間はシステムクロックの粒度に切り上げられ、 カーネルのスケジューリング遅延により少しだけ長くなる可能性がある点に注意すること。 -\fItimeout\fP に負の値を指定した場合、タイムアウト時間が無限大を意味する。 \fItimeout\fP を 0 に指定した場合、I/O -可能なファイルディスクリプターがない場合であっても、 \fBpoll\fP() はすぐに返る。 - -\fIevents\fP に指定したり、 \fIrevents\fP で返されるビットは \fI\fP で定義されている: -.RS -.TP -\fBPOLLIN\fP -読み出し可能なデータがある。 -.TP -\fBPOLLPRI\fP -読み出し可能な緊急データ (urgent data) がある (例えば、TCP ソケットの帯域外 (out\-of\-band data) -データを受信した場合や、 パケットモードの擬似端末のマスタがスレーブ側の変化を見つけたとき)。 -.TP -\fBPOLLOUT\fP -書き込みが可能になった。ただし、ソケットやパイプで利用可能な空間よりも大きなデータを書き込んだ場合には (\fBO_NONBLOCK\fP -がセットされている場合以外は) やはり停止することになる。 -.TP -\fBPOLLRDHUP\fP (Linux 2.6.17 以降) -ストリームソケットの他端が、コネクションを close したか、 コネクションの書き込み側を shutdown した。 この定義を有効にするには、 -(「どの」ヘッダーファイルをインクルードするよりも前に) \fB_GNU_SOURCE\fP 機能検査マクロを定義しなければならない。 -.TP -\fBPOLLERR\fP -エラー状態 (出力の場合のみ)。 -.TP -\fBPOLLHUP\fP -ハングアップした (出力の場合のみ)。 -.TP -\fBPOLLNVAL\fP -不正な要求: \fIfd\fP がオープンされていない (出力の場合のみ)。 -.RE -.PP -\fB_XOPEN_SOURCE\fP を定義してコンパイルした場合には、以下の定義も行われる。 -ただし、上記のリストにあるビット以上の情報が得られる訳ではない。 -.RS -.TP -\fBPOLLRDNORM\fP -\fBPOLLIN\fP と同じ。 -.TP -\fBPOLLRDBAND\fP -.\" POLLRDBAND is used in the DECnet protocol. -優先帯域データ (priority band data) が読み出し可能である (普通は Linux では使用されない)。 -.TP -\fBPOLLWRNORM\fP -\fBPOLLOUT\fP と同じ。 -.TP -\fBPOLLWRBAND\fP -優先帯域データ (priority data) が書き込み可能である。 -.RE -.PP -Linux では \fBPOLLMSG\fP も定義されているが、使用されていない。 -.SS ppoll() -\fBpoll\fP() と \fBppoll\fP() の関係は \fBselect\fP(2) と \fBpselect\fP(2) の関係と同じようなものである: -\fBpselect\fP(2) と同様に、 \fBppoll\fP() を使うと、アプリケーションはファイルディスクリプターの状態変化 -もしくはシグナルの捕捉を安全に待つことができる。 -.PP -\fItimeout\fP 引き数の精度の違いを除くと、以下の \fBppoll\fP() の呼び出しは、 -.nf - - ready = ppoll(&fds, nfds, timeout_ts, &sigmask); - -.fi -次の呼び出しを \fIatomic\fP に実行するのと等価である。 -.nf - - sigset_t origmask; - int timeout; - - timeout = (timeout_ts == NULL) ? \-1 : - (timeout_ts.tv_sec * 1000 + timeout_ts.tv_nsec / 1000000); - sigprocmask(SIG_SETMASK, &sigmask, &origmask); - ready = poll(&fds, nfds, timeout); - sigprocmask(SIG_SETMASK, &origmask, NULL); -.fi -.PP -なぜ \fBppoll\fP() が必要なのかについての説明は \fBpselect\fP(2) の説明を参照のこと。 - -\fIsigmask\fP 引き数に NULL が指定された場合、シグナルマスクの操作は行われない (したがって、 \fBppoll\fP() の -\fBpoll\fP() との違いは \fItimeout\fP 引き数の精度だけとなる)。 - -\fItimeout\fP 引き数は \fBppoll\fP() が停止する時間の上限を指定するものである。 -この引き数には以下の型の構造体へのポインターを指定する。 -.in +4n -.nf - -struct timespec { - long tv_sec; /* seconds */ - long tv_nsec; /* nanoseconds */ -}; -.fi -.in - -\fItimeout_ts\fP に NULL が指定された場合、 \fBppoll\fP は無限に停止することがあり得る。 -.SH 返り値 -成功した場合は正の数を返す。この数は 0 以外の \fIrevents\fP 要素を持つ構造体の数である (別の言い方をすると、これらのディスクリプター -にはイベントかエラー報告がある)。 値 0 は、タイムアウトとなり、どのファイルディスクリプターでもイベントが 発生しなかったことを示す。エラーの場合は -\-1 が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEFAULT\fP -引き数として指定した配列が、呼び出したプロセスのアドレス空間に 含まれていない。 -.TP -\fBEINTR\fP -要求されたイベントのどれかが起こる前にシグナルが発生した。 \fBsignal\fP(7) 参照。 -.TP -\fBEINVAL\fP -\fInfds\fP の値が \fBRLIMIT_NOFILE\fP を超えた。 -.TP -\fBENOMEM\fP -ファイルディスクリプターテーブルを確保するためのメモリーがない。 -.SH バージョン -.\" library call was introduced in libc 5.4.28 -\fBpoll\fP() システムコールは Linux 2.1.23 で導入された。 -このシステムコールが存在しない古いカーネルでは、 -glibc (や古い Linux libc) は \fBselect\fP(2) を使用して \fBpoll\fP() -ラッパー関数のエミュレーションを行う。 - -\fBppoll\fP() システムコールは カーネル 2.6.16 で Linux に追加された。 \fBppoll\fP() ライブラリコールは glibc -2.4 に追加された。 -.SH 準拠 -.\" NetBSD 3.0 has a pollts() which is like Linux ppoll(). -\fBpoll\fP() は POSIX.1\-2001 に準拠している。 \fBppoll\fP() は Linux 固有である。 -.SH 注意 -いくつかの実装では、値 \-1 を持った非標準の定数 \fBINFTIM\fP が定義されており、 \fBpoll\fP() の \fItimeout\fP -の指定に使用できる。 この定数は glibc では定義されていない。 - -\fBpoll\fP() で監視中のファイルディスクリプターが別のスレッドによってクローズされた場合に何が起こるかの議論については、 \fBselect\fP(2) -を参照してほしい。 -.SS "C ライブラリとカーネル ABI の違い" -Linux の \fBppoll\fP() システムコールは \fItimeout_ts\fP 引き数を変更する。 しかし、glibc -のラッパー関数は、システムコールに渡す timeout 引き数 としてローカル変数を使うことでこの動作を隠蔽している。 このため、glibc の -\fBppoll\fP() 関数では \fItimeout_ts\fP 引き数は変更されない。 - -素の \fBppoll\fP() システムコールは 5 番目の引き数 \fIsize_t sigsetsize\fP をとる。 この引き数は \fIsigmask\fP -引き数のバイト単位のサイズを指定する。 glibc の \fBppoll\fP() ラッパー関数は、この引き数に固定値 -(\fIsizeof(sigset_t)\fP と同じ) を指定する。 -.SH バグ -\fBselect\fP(2) の「バグ」の節に書かれている、誤った準備完了通知 (spurious readiness notifications) -についての議論を参照のこと。 -.SH 関連項目 -\fBrestart_syscall\fP(2), \fBselect\fP(2), \fBselect_tut\fP(2), \fBtime\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/posix_fadvise.2 b/manual/LDP_man-pages/draft/man2/posix_fadvise.2 index 0f232035..c0602b2b 100644 --- a/manual/LDP_man-pages/draft/man2/posix_fadvise.2 +++ b/manual/LDP_man-pages/draft/man2/posix_fadvise.2 @@ -1,4 +1,5 @@ .\" Copyright 2003 Abhijit Menon-Sen +.\" and Copyright (C) 2010, 2015, 2017 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this @@ -40,35 +41,35 @@ .\" Updated 2012-05-31, Akihiro MOTOKI .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH POSIX_FADVISE 2 2014\-12\-31 Linux "Linux Programmer's Manual" +.TH POSIX_FADVISE 2 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 posix_fadvise \- ファイルデータのアクセスパターンをあらかじめ宣言する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint posix_fadvise(int \fP\fIfd\fP\fB, off_t \fP\fIoffset\fP\fB, off_t \fP\fIlen\fP\fB, int \fP\fIadvice\fP\fB);\fP .fi -.sp +.PP .ad l -.in -4n +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBposix_fadvise\fP(): .RS 4 -_XOPEN_SOURCE\ >=\ 600 || _POSIX_C_SOURCE\ >=\ 200112L +_POSIX_C_SOURCE\ >=\ 200112L .RE .ad .SH 説明 プログラムは、将来特定のパターンでファイルデータに アクセスする意思を伝えるために \fBposix_fadvise\fP() を使うことができる。 これにより、カーネルが適切な最適化を実行することが可能になる。 - +.PP \fIadvice\fP は \fIfd\fP が参照しているファイルの \fIoffset\fP から始まる \fIlen\fP バイ トの範囲内 (\fIlen\fP が 0 の場合はファイルの終りまで) の (必ずしも存在しない) 領域に適用される。 \fIadvice\fP は義務づけではない。 \fIadvice\fP は単にアプリケー ションのために可能性を構成するだけである。 - +.PP \fIadvice\fP に許される値には、以下のものが含まれる: .TP \fBPOSIX_FADV_NORMAL\fP @@ -83,12 +84,32 @@ _XOPEN_SOURCE\ >=\ 600 || _POSIX_C_SOURCE\ >=\ 200112L .TP \fBPOSIX_FADV_NOREUSE\fP 指定されたデータは 1 度しかアクセスされない。 +.IP +2.6.18 より前のカーネルでは、\fBPOSIX_FADV_NOREUSE\fP は \fBPOSIX_FADV_WILLNEED\fP と同じ意味であった。 +これは多分バグであった。 カーネル 2.6.18 以降では、このフラグは何も行わない。 .TP \fBPOSIX_FADV_WILLNEED\fP 指定されたデータは近い将来アクセスされる。 +.IP +\fBPOSIX_FADV_WILLNEED\fP は、 ページキャッシュに指定領域のブロックされない読み込みを開始する。 読み込まれるデータの総量は、 +仮想メモリーの負荷に依ってカーネルが減らすかもしれない (数メガバイトであれば通常は全く十分であり、 それより多くてもめったに役に立たない)。 .TP \fBPOSIX_FADV_DONTNEED\fP 指定されたデータは近い将来アクセスされない。 +.IP +\fBPOSIX_FADV_DONTNEED\fP は指定された領域に関連付けられた キャッシュページを解放しようとする。 +例えば、これは大きなファイルをストリーミングするときに役立つ。 プログラムは、使用済みのキャッシュされたデータを解放するように、 +定期的にカーネルに要求するかもしれない。 そうすることにより、さらに有効なキャッシュされたページが、 代わりに破棄されることはない。 +.IP +Requests to discard partial pages are ignored. It is preferable to preserve +needed data than discard unneeded data. If the application requires that +data be considered for discarding, then \fIoffset\fP and \fIlen\fP must be +page\-aligned. +.IP +The implementation \fImay\fP attempt to write back dirty pages in the specified +region, but this is not guaranteed. Any unwritten dirty pages will not be +freed. If the application wishes to ensure that dirty pages will be +released, it should call \fBfsync\fP(2) or \fBfdatasync\fP(2) first. .SH 返り値 成功した場合は 0 が返される。 失敗した場合はエラー番号が返される。 .SH エラー @@ -101,56 +122,56 @@ _XOPEN_SOURCE\ >=\ 600 || _POSIX_C_SOURCE\ >=\ 200112L .TP \fBESPIPE\fP .\" commit 87ba81dba431232548ce29d5d224115d0c2355ac -指定されたファイルディスクリプターがパイプまたは FIFO を参照している (\fBESPIPE\fP は POSIX で規定されているエラーだが、 -バージョン 2.16 より前のカーネルでは、 この場合に \fBEINVAL\fP を返していた。) +The specified file descriptor refers to a pipe or FIFO. (\fBESPIPE\fP is the +error specified by POSIX, but before kernel version 2.6.16, Linux returned +\fBEINVAL\fP in this case.) .SH バージョン .\" of fadvise64_64() カーネルによるサポートは Linux 2.5.60 で最初に登場し、 対応するシステムコールは \fBfadvise64\fP() という名前である。 ライブラリによるサポートは glibc バージョン 2.2 以降で提供されており、 ラッパー関数は \fBposix_fadvise\fP() という名前である。 - +.PP .\" commit d3ac21cacc24790eb45d735769f35753f5b56ceb Linux 3.18 以降では、対応するシステムコールのサポートは任意となり、利用できるかはカーネルが \fBCONFIG_ADVISE_SYSCALLS\fP オプションを有効にしてコンパイルされているかに依存する。 .SH 準拠 -POSIX.1\-2001. \fIlen\fP 引き数の型が POSIX.1\-2003 TC1 において \fIsize_t\fP から \fIoff_t\fP -に変更された点に注意すること。 +POSIX.1\-2001, POSIX.1\-2008. Note that the type of the \fIlen\fP argument was +changed from \fIsize_t\fP to \fIoff_t\fP in POSIX.1\-2001 TC1. .SH 注意 Linux では、\fBPOSIX_FADV_NORMAL\fP はバッキングデバイスの デフォルトサイズに先読み (readahead) ウインドウを設定する。 \fBPOSIX_FADV_SEQUENTIAL\fP はこのサイズを 2 倍し、 \fBPOSIX_FADV_RANDOM\fP は先読みを全く無効にする。 これらの変更はファイル全体に影響し、指定された領域のみに影響するわけではない (しかし同じファイルに対する他のオープンファイルハンドルは影響を受けない)。 - -\fBPOSIX_FADV_WILLNEED\fP は、 ページキャッシュに指定領域のブロックされない読み込みを開始する。 読み込まれるデータの総量は、 -仮想メモリーの負荷に依ってカーネルが減らすかもしれない (数メガバイトであれば通常は全く十分であり、 それより多くてもめったに役に立たない)。 - -2.6.18 より前のカーネルでは、\fBPOSIX_FADV_NOREUSE\fP は \fBPOSIX_FADV_WILLNEED\fP と同じ意味であった。 -これは多分バグであった。 カーネル 2.6.18 以降では、このフラグは何も行わない。 - -\fBPOSIX_FADV_DONTNEED\fP は指定された領域に関連付けられた キャッシュページを解放しようとする。 -例えば、これは大きなファイルをストリーミングするときに役立つ。 プログラムは、使用済みのキャッシュされたデータを解放するように、 -定期的にカーネルに要求するかもしれない。 そうすることにより、さらに有効なキャッシュされたページが、 代わりに破棄されることはない。 - -ページの一部分の破棄要求は無視される。 不要なデータを破棄するよりも必要なデータを保持する方がよい。 -アプリケーションがデータを破棄した方がよいと思う場合は、 \fIoffset\fP と \fIlen\fP がページ境界に合っていなければならない。 - -まだ書き出されていないページは影響を受けないので、 そのページの解放が保証されることをアプリケーションが望んでいるなら、 最初に \fBfsync\fP(2) -または \fBfdatasync\fP(2) を呼ぶべきである。 +.PP +The contents of the kernel buffer cache can be cleared via the +\fI/proc/sys/vm/drop_caches\fP interface described in \fBproc\fP(5). +.PP +One can obtain a snapshot of which pages of a file are resident in the +buffer cache by opening a file, mapping it with \fBmmap\fP(2), and then +applying \fBmincore\fP(2) to the mapping. +.SS "C library/kernel differences" +The name of the wrapper function in the C library is \fBposix_fadvise\fP(). +The underlying system call is called \fBfadvise64\fP() (or, on some +architectures, \fBfadvise64_64\fP()); the difference between the two is that +the former system call assumes that the type of the \fIlen\fP argument is +\fIsize_t\fP, while the latter expects \fIloff_t\fP there. .SS アーキテクチャー固有の派生バージョン -いくつかのアーキテクチャーでは、 64 ビットの引き数は適切なレジスターの組に割り当てる必要がある (\fBsyscall\fP(2) 参照)。 -このようなアーキテクチャーでは、 「書式」に書かれている \fBposix_fadvise\fP() の呼び出しシグネチャーで、 引き数 \fIfd\fP と -\fIoffset\fP の間のパディング (詰めもの) でレジスターが一つ消費されてしまう。 そのため、 -これらのアーキテクチャーでは引き数が適切な順序になった別のシステムコールが定義されているが、 それ以外は \fBposix_fadvise\fP() -と全く同じである。 - +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 \fIoffset\fP arguments. Therefore, these architectures define a version of +the system call that orders the arguments suitably, but is otherwise exactly +the same as \fBposix_fadvise\fP(). +.PP 例えば、 Linux 2.6.14 以降では、 ARM には以下のシステムコールが存在する。 .PP .in +4n -.nf +.EX \fBlong arm_fadvise64_64(int \fP\fIfd\fP\fB, int \fP\fIadvice\fP\fB,\fP \fB loff_t \fP\fIoffset\fP\fB, loff_t \fP\fIlen\fP\fB);\fP -.fi +.EE .in .PP 通常、 glibc の \fBposix_fadvise\fP() ラッパー関数により、 これらのアーキテクチャー固有の詳細はアプリケーションには見えない。 @@ -159,10 +180,8 @@ glibc のラッパー関数では、適切なアーキテクチャー固有の 2.6.6 より前のカーネルでは、 \fIlen\fP に 0 が指定された場合、 「ファイルの終りまでの全てのバイト」という意味ではなく、 文字通り「0 バイト」として解釈されていた。 .SH 関連項目 -.\" FIXME . Write a posix_fadvise(3) page. -\fBreadahead\fP(2), \fBsync_file_range\fP(2), \fBposix_fallocate\fP(3), -\fBposix_madvise\fP(3) +\fBfincore\fP(1), \fBmincore\fP(2), \fBreadahead\fP(2), \fBsync_file_range\fP(2), +\fBposix_fallocate\fP(3), \fBposix_madvise\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/prctl.2 b/manual/LDP_man-pages/draft/man2/prctl.2 deleted file mode 100644 index 43d116e3..00000000 --- a/manual/LDP_man-pages/draft/man2/prctl.2 +++ /dev/null @@ -1,621 +0,0 @@ -.\" Copyright (C) 1998 Andries Brouwer (aeb@cwi.nl) -.\" and Copyright (C) 2002, 2006, 2008, 2012, 2013 Michael Kerrisk -.\" and Copyright Guillem Jover -.\" and Copyright (C) 2014 Dave Hansen / Intel -.\" -.\" %%%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 Thu Nov 11 04:19:42 MET 1999, aeb: added PR_GET_PDEATHSIG -.\" Modified 27 Jun 02, Michael Kerrisk -.\" Added PR_SET_DUMPABLE, PR_GET_DUMPABLE, -.\" PR_SET_KEEPCAPS, PR_GET_KEEPCAPS -.\" Modified 2006-08-30 Guillem Jover -.\" Updated Linux versions where the options where introduced. -.\" Added PR_SET_TIMING, PR_GET_TIMING, PR_SET_NAME, PR_GET_NAME, -.\" PR_SET_UNALIGN, PR_GET_UNALIGN, PR_SET_FPEMU, PR_GET_FPEMU, -.\" PR_SET_FPEXC, PR_GET_FPEXC -.\" 2008-04-29 Serge Hallyn, Document PR_CAPBSET_READ and PR_CAPBSET_DROP -.\" 2008-06-13 Erik Bosman, -.\" Document PR_GET_TSC and PR_SET_TSC. -.\" 2008-06-15 mtk, Document PR_SET_SECCOMP, PR_GET_SECCOMP -.\" 2009-10-03 Andi Kleen, document PR_MCE_KILL -.\" 2012-04 Cyrill Gorcunov, Document PR_SET_MM -.\" 2012-04-25 Michael Kerrisk, Document PR_TASK_PERF_EVENTS_DISABLE and -.\" PR_TASK_PERF_EVENTS_ENABLE -.\" 2012-09-20 Kees Cook, update PR_SET_SECCOMP for mode 2 -.\" 2012-09-20 Kees Cook, document PR_SET_NO_NEW_PRIVS, PR_GET_NO_NEW_PRIVS -.\" 2012-10-25 Michael Kerrisk, Document PR_SET_TIMERSLACK and -.\" PR_GET_TIMERSLACK -.\" 2013-01-10 Kees Cook, document PR_SET_PTRACER -.\" 2012-02-04 Michael kerrisk, document PR_{SET,GET}_CHILD_SUBREAPER -.\" 2014-11-10 Dave Hansen, document PR_MPX_{EN,DIS}ABLE_MANAGEMENT -.\" -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998-1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1999-04-03, HANATAKA Shinya -.\" Updated 2002-12-20, Kentaro Shirakata -.\" Updated 2005-09-06, Akihiro MOTOKI -.\" Updated 2005-10-07, Akihiro MOTOKI -.\" Updated 2007-01-08, Akihiro MOTOKI, LDP v2.43 -.\" Updated 2007-10-12, Akihiro MOTOKI, LDP v2.66 -.\" Updated 2008-08-12, Akihiro MOTOKI, LDP v3.05 -.\" -.TH PRCTL 2 2015\-02\-01 Linux "Linux Programmer's Manual" -.SH 名前 -prctl \- プロセスの操作を行なう -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint prctl(int \fP\fIoption\fP\fB, unsigned long \fP\fIarg2\fP\fB, unsigned long \fP\fIarg3\fP\fB,\fP -\fB unsigned long \fP\fIarg4\fP\fB, unsigned long \fP\fIarg5\fP\fB);\fP -.fi -.SH 説明 -\fBprctl\fP() の動作は最初の引き数によって決定される (この値は \fI\fP に定義されている)。 -残りの引き数は最初の引き数によって変化する。 一番目の引き数として以下のものを指定できる: -.TP -\fBPR_CAPBSET_READ\fP (Linux 2.6.25 以降) -で指定されたケーパビリティが呼び出したスレッドのケーパビリティ バインディングセット (capability bounding set) -に含まれている場合、 (関数の結果として) 1 を返し、そうでない場合 0 を返す (ケーパビリティ定数は -\fI\fP で定義されている)。 ケーパビリティバウンディングセットは、 \fBexecve\fP(2) -を呼び出した際に、ファイルの許可 (permitted) ケーパビリティの中で そのプロセスが獲得できるケーパビリティを指示するものである。 - -\fIarg2\fP に指定されたケーパビリティが有効でない場合、 呼び出しはエラー \fBEINVAL\fP で失敗する。 -.TP -\fBPR_CAPBSET_DROP\fP (Linux 2.6.25 以降) -呼び出したスレッドがケーパビリティ \fBCAP_SETPCAP\fP を持っている場合、 呼び出したスレッドのケーパビリティバウンディングセットから -\fIarg2\fP で指定されたケーパビリティを外す。 呼び出したスレッドの子プロセスは変更後のバウンディングセットを 継承する。 - -呼び出したスレッドが \fBCAP_SETPCAP\fP を持っていない場合、呼び出しはエラー \fBEPERM\fP で失敗する。 \fIarg2\fP -に指定されたケーパビリティが有効でない場合、 \fBEINVAL\fP で失敗する。 ファイルケーパビリティがカーネルで有効になっていない場合 -(この場合にはバウンディングセットがサポートされない)、 \fBEINVAL\fP で失敗する。 -.TP -\fBPR_SET_CHILD_SUBREAPER\fP (Linux 3.4 以降) -.\" commit ebec18a6d3aa1e7d84aab16225e87fd25170ec2b -\fIarg2\fP が 0 以外の場合、 呼び出し元プロセスの "child subreaper" 属性をセットする。 \fIarg2\fP が 0 の場合、 -この属性をクリアする。 プロセスが child subreaper のマークが付いている場合、 このプロセスの子プロセスやその子孫にはすべて -subreaper のマークが付与される。 subreaper は事実上その子孫のプロセスに対して \fBinit\fP(1) の役割を果たす。 -孤児になったプロセス (直接の親プロセスがすでに終了しているプロセス) が終了した際、 そのプロセスに subreaper のマークが付いていると、 -最も近い存在する先祖の subreaper プロセスに \fBSIGCHLD\fP シグナルが送られ、 そのプロセスの \fBwait\fP -を使って終了ステータスを知ることができる。 -.TP -\fBPR_GET_CHILD_SUBREAPER\fP (Linux 3.4 以降) -呼び出し元の "child subreaper" 設定を、 \fI(int\ *) arg2\fP が指す場所に返す。 -.TP -\fBPR_SET_DUMPABLE\fP (Linux 2.3.20 以降) -.\" See http://marc.theaimsgroup.com/?l=linux-kernel&m=115270289030630&w=2 -.\" Subject: Fix prctl privilege escalation (CVE-2006-2451) -.\" From: Marcel Holtmann -.\" Date: 2006-07-12 11:12:00 -(Linux 2.3.20 以降) -デフォルトの振る舞いではコアダンプを引き起こすようなシグナルを受信したときに、呼び出し元のプロセスでコアダンプを生成するかどうかを決定するフラグを設定する -(通常このフラグは、デフォルトではセットされているが、 set\-user\-ID あるいは set\-group\-ID プログラムが実行されたり、 -さまざまなシステムコールによってプロセスの UID や GID が操作されたときに クリアされる)。 2.6.12 以前のカーネルでは、 \fIarg2\fP -は 0 (プロセスはダンプ不可) あるいは 1 (プロセスはダンプ可能) の どちらかでなければならない。 2.6.13 から 2.6.17 -までのカーネルでは、値 2 も認められていた。 この値を指定すると、通常はダンプされないバイナリが root だけが 読み込み可能な形でダンプされた。 -セキュリティ上の理由から、この機能は削除された (\fBproc\fP(5) の \fI/proc/sys/fs/suid_dumpable\fP の説明も参照)。 -ダンプ不可のプロセスを \fBptrace\fP(2) \fBPTRACE_ATTACH\fP 経由で接続することはできない。 -.TP -\fBPR_GET_DUMPABLE\fP (Linux 2.3.20 以降) -.\" Since Linux 2.6.13, the dumpable flag can have the value 2, -.\" but in 2.6.13 PR_GET_DUMPABLE simply returns 1 if the dumpable -.\" flags has a nonzero value. This was fixed in 2.6.14. -(Linux 2.3.20 以降) 呼び出し元プロセスにおけるダンプ可能フラグの 現在の状態を (関数の結果として) 返す。 -.TP -\fBPR_SET_ENDIAN\fP (Linux 2.6.18 以降、PowerPC のみ) -.\" Respectively 0, 1, 2 -呼び出し元プロセスのエンディアン設定 (endian\-ness) を \fIarg2\fP で指定された値に設定する。 指定できる値は -\fBPR_ENDIAN_BIG\fP, \fBPR_ENDIAN_LITTLE\fP, \fBPR_ENDIAN_PPC_LITTLE\fP (PowerPC -擬似リトルエンディアン) のいずれか一つである。 -.TP -\fBPR_GET_ENDIAN\fP (Linux 2.6.18 以降、PowerPC のみ) -呼び出し元プロセスのエンディアン設定 (endian\-ness) を \fI(int\ *) arg2\fP が指す場所に格納して返す。 -.TP -\fBPR_SET_FPEMU\fP (Linux 2.4.18 以降, 2.5.9, ia64 のみ) -浮動小数点エミュレーション (floating\-point emulation) 制御ビットを \fIarg2\fP で指定された値に設定する。 -指定できる値は \fBPR_FPEMU_NOPRINT\fP (浮動小数点命令アクセスを黙って エミュレートする) か \fBPR_FPEMU_SIGFPE\fP -(浮動小数点命令をエミュレートせず、 代わりに \fBSIGFPE\fP を送る) である。 -.TP -\fBPR_GET_FPEMU\fP (Linux 2.4.18 以降, 2.5.9, ia64 のみ) -浮動小数点エミュレーション制御ビットの値を \fI(int\ *) arg2\fP が指す場所に格納して返す。 -.TP -\fBPR_SET_FPEXC\fP (Linux 2.4.21 および 2.5.32 以降、PowerPC のみ) -浮動小数点例外モード (floating\-point exception mode) を \fIarg2\fP で指定された値に設定する。 -指定できるのは以下の値である: \fBPR_FP_EXC_SW_ENABLE\fP (FPEXC で浮動小数点例外を有効にする)、 -\fBPR_FP_EXC_DIV\fP (0 除算)、 \fBPR_FP_EXC_OVF\fP (オーバーフロー)、 \fBPR_FP_EXC_UND\fP -(アンダーフロー)、 \fBPR_FP_EXC_RES\fP (不正確な結果 (inexact result))、 \fBPR_FP_EXC_INV\fP -(不正な命令 (invalid operation))、 \fBPR_FP_EXC_DISABLED\fP (浮動小数点例外を無効にする)、 -\fBPR_FP_EXC_NONRECOV\fP (async nonrecoverable exception mode)、 -\fBPR_FP_EXC_ASYNC\fP (async recoverable exception mode)、 \fBPR_FP_EXC_PRECISE\fP -(precise exception mode)。 -.TP -\fBPR_GET_FPEXC\fP(Linux 2.4.21 および 2.5.32 以降、PowerPC のみ) -浮動小数点例外モードの値を \fI(int\ *) arg2\fP が指す場所に格納して返す。 -.TP -\fBPR_SET_KEEPCAPS\fP (Linux 2.2.18 以降) -スレッドの「ケーパビリティ保持」フラグを設定する。 このフラグは、スレッドの実 UID、実効 UID、保存 set\-user\-ID -のうち少なくとも一つが 0 であった状態から、これら全てが 0 以外に変更されたとき、 -スレッドの許可ケーパビリティ集合がクリアされるかどうかを決定する。 -デフォルトでは、このような変更が行われた場合、許可ケーパビリティセットはクリアされる。「ケーパビリティ保持」フラグを設定すると、許可ケーパビリティセットはクリアされなくなる。 -\fIarg2\fP は 0 (許可ケーパビリティをクリアする) か 1 (許可ケーパビリティを保持する) の どちらかでなければならない。 (このような -ID の変更が行われた場合、「ケーパビリティ保持」フラグの設定に関わらず、スレッドの\fI実効\fPケーパビリティセットは常にクリアされる。) -\fBexecve\fP(2) が呼び出されると、「ケーパビリティ保持」フラグは 0 にリセットされる。 -.TP -\fBPR_GET_KEEPCAPS\fP (Linux 2.2.18 以降) -呼び出し元スレッドにおける「ケーパビリティ保持」フラグの 現在の状態を (関数の結果として) 返す。 -.TP -\fBPR_SET_NAME\fP (Linux 2.6.9 以降) -.\" TASK_COMM_LEN in include/linux/sched.h -呼び出し元スレッドのプロセス名を \fI(char\ *) arg2\fP が指す場所に格納された値を使って設定する。 名前は終端の NULL -バイトを含めて最大で 16 バイトである (終端の NULL バイトを含めた文字列の長さが 16 バイトを超える場合、 文字列は黙って切り詰められる)。 -これは、 \fBpthread_setname_np\fP(3) で設定でき、 \fBpthread_getname_np\fP(3) -で取得できるのと同じ属性である。 同様に、 \fItid\fP が呼び出し元スレッドの ID の場合、 この属性は -\fI/proc/self/task/[tid]/comm\fP 経由でもアクセス可能である。 -.TP -\fBPR_GET_NAME\fP (Linux 2.6.11 以降) -呼び出し元スレッドの名前を \fI(char\ *) arg2\fP が指す場所に格納して返す。 バッファーは最大で 16 -バイトを格納できるようにすべきである。 返される文字列はヌル終端される。 -.TP -\fBPR_SET_NO_NEW_PRIVS\fP (Linux 3.5 以降) -呼び出し元プロセスの \fIno_new_privs\fP ビットを \fIarg2\fP の値に設定する。 \fIno_new_privs\fP が 1 -に設定されると、 \fBexecve\fP(2) は、 \fBexecve\fP(2) の呼び出しなしでは実行できなかったことに対する特権を許可しなくなる -(例えば、 set\-user\-ID/set\-group\-ID 許可ビットやファイルケーパビリティが動作しなくなる)。 一度設定される、 -このビットは解除することができない。 このビットの設定は \fBfork\fP(2) や \fBclone\fP(2) で作成された子プロセスに継承され、 -\fBexecve\fP(2) の前後で保持される。 - -詳しい情報は、カーネルソースファイル \fIDocumentation/prctl/no_new_privs.txt\fP を参照。 -.TP -\fBPR_GET_NO_NEW_PRIVS\fP (Linux 3.5 以降) -現在のプロセスの \fIno_new_privs\fP ビットの値を (関数の結果として) 返す。 値 0 は通常の \fBexecve\fP(2) -の動作を意味する。 値 1 は \fBexecve\fP(2) が上記で述べた特権を制限する動作をすることを示す。 -.TP -\fBPR_SET_PDEATHSIG\fP (Linux 2.1.57 以降) -親プロセス死亡シグナル (parent process death signal) を \fIarg2\fP に設定する (設定できるシグナル値の範囲は -1..maxsig であり、0 は通知の解除である)。 呼び出し元プロセスの親プロセスが死んだ際に、ここで設定した値が -シグナルとして通知される。この値は \fBfork\fP(2) の子プロセスでは解除される。 (Linux 2.4.36 以降および 2.6.23 以降では) -set\-user\-ID もしくは set\-group\-ID されたバイナリを実行した場合にも、このフラグは解除される。この値は \fBexecve\fP(2) -の前後で保持される。 -.TP -\fBPR_GET_PDEATHSIG\fP (Linux 2.3.15 以降) -親プロセス死亡シグナルの現在の値を \fI(int\ *) arg2\fP が指す場所に格納して返す。 -.TP -\fBPR_SET_PTRACER\fP (Linux 3.4 以降) -.\" commit 2d514487faf188938a4ee4fb3464eeecfbdcf8eb -.\" commit bf06189e4d14641c0148bea16e9dd24943862215 -この設定は Yama LSM が有効になっていてモード 1 ("restricted ptrace") の場合のみに意味を持つ (モードは -\fI/proc/sys/kernel/yama/ptrace_scope\fP で参照可能)。 "ptrace プロセス ID" が \fIarg2\fP -で渡された場合、 呼び出し元は ptracer プロセスがそのプロセスが直接のプロセスの先祖であるかのよう呼び出したプロセスを \fBptrace\fP -できる、 と宣言しているということだ。 \fBPR_SET_PTRACER\fP 操作を行う毎に、 直前の "ptracer プロセス ID" -は置きかえられる。 \fIarg2\fP で \fBPR_SET_PTRACER\fP を 0 に設定すると、 呼び出し元の "ptracer プロセス ID" -がクリアされる。 \fIarg2\fP が \fBPR_SET_PTRACER\fP の場合、 Yama が導入した ptrace -の制限は呼び出し元プロセスに対しては無効になる。 - -詳しい情報は、カーネルソースファイル \fIDocumentation/security/Yama.txt\fP を参照。 -.TP -\fBPR_SET_SECCOMP\fP (Linux 2.6.23 以降) -.\" See http://thread.gmane.org/gmane.linux.kernel/542632 -.\" [PATCH 0 of 2] seccomp updates -.\" andrea@cpushare.com -呼び出したスレッドのセキュアコンピューティング (seccomp) モードを設定する。 最近の \fBseccomp\fP(2) システムコールは -\fBPR_SET_SECCOMP\fP の上位互換の機能を提供する。 - -seccomp モードは \fIarg2\fP で指定できる (seccomp 定数は \fI\fP -で定義されている)。 - -\fIarg2\fP を \fBSECCOMP_MODE_STRICT\fP に設定すると、 そのスレッドが呼び出しを許可されるシステムコールは -\fBread\fP(2), \fBwrite\fP(2), \fB_exit\fP(2), \fBsigreturn\fP(2) だけになる。 -それ以外のシステムコールを呼び出すと、シグナル \fBSIGKILL\fP が配送される。 パイプやソケットから読み込んだ、 -信頼できないバイトコードを実行する必要がある大量の演算を行うアプリケーションにおいて、 strict secure computing モードは役立つ。 -この操作は利用できるのは、 カーネルが \fBCONFIG_SECCOMP\fP を有効にして作成されている場合だけである。 - -\fIarg2\fP を \fBSECCOMP_MODE_FILTER\fP (Linux 3.5 以降) に設定すると、 許可されるシステムコールは -\fIarg3\fP で渡された Berkeley Packet Filter へのポインターで定義される。 この引き数は \fIstruct -sock_fprog\fP へのポインターである。 これは任意のシステムコールやシステムコール引き数をフィルタリングするために設計された。 -このモードはカーネルで \fBCONFIG_SECCOMP_FILTER\fP が有効になっている場合にのみ利用可能である。 - -\fBSECCOMP_MODE_FILTER\fP フィルターで \fBfork\fP(2) が許可されている場合、 seccomp モードは \fBfork\fP(2) -で作成された子プロセスに継承される。 \fBexecve\fP(2) が許可されている場合、 seccomp モードは \fBexecve\fP(2) -の前後で維持される。 フィルターで \fBprctl\fP() コールが許可されている場合、 追加でフィルターが定義され、 -これらのフィルターは許可されないものが見つかるまで指定された順序で実行される。 - -詳しい情報は、カーネルソースファイル \fIDocumentation/prctl/seccomp_filter.txt\fP を参照。 -.TP -\fBPR_GET_SECCOMP\fP (Linux 2.6.23 以降) -呼び出したスレッドの secure computing モードを (関数の結果として) 返す。 呼び出したスレッドが secure computing -モードでなかった場合、 この操作は 0 を返し、 呼び出したスレッドが strict secure computing モードの場合、 -\fBprctl\fP() を呼び出すとシグナル \fBSIGKILL\fP がそのプロセスに送信される。 呼び出したスレッドがフィルタモードで、 -このシステムコールが seccomp フィルタにより許可されている場合、 2 を返し、 そうでない場合プロセスは \fBSIGKILL\fP シグナルで -kill されづ。 この操作が利用できるのは、カーネルが \fBCONFIG_SECCOMP\fP を有効にして作成されている場合だけである。 - -Linux 3.8 以降では、 \fI/proc/[pid]/status\fP の \fIseccomp\fP フィールドからも同じ情報を取得できる。 -この方法の場合はプロセスが kill される危険はない。 \fBproc\fP(5) を参照。 -.TP -\fBPR_SET_SECUREBITS\fP (Linux 2.6.26 以降) -呼び出したスレッドの "securebits" フラグを \fIarg2\fP で渡された値に設定する。 \fBcapabilities\fP(7) 参照。 -.TP -\fBPR_GET_SECUREBITS\fP (Linux 2.6.26 以降) -呼び出したスレッドの "securebits" フラグを (関数の結果として) 返す。 \fBcapabilities\fP(7) 参照。 -.TP -\fBPR_SET_THP_DISABLE\fP (Linux 3.15 以降) -.\" commit a0715cc22601e8830ace98366c0c2bd8da52af52 -呼び出したスレッドの "THP disable" (THP 無効) フラグの状態を設定する。 \fIarg2\fP が 0 -以外の場合、フラグは有効になり、そうでない場合はクリーンされる。 このフラグを設定する方法により、 コードを変更できなかったり -\fBmadvise\fP(2) の malloc hook をが有効ではないジョブ (この方法は静的に割り当てられたデータには有効ではない)に対して、 -transparent huge pages を無効にする手段が提供される。 "THP disable" フラグの設定は \fBfork\fP(2) -で作成された子プロセスに継承され、 \fBexecve\fP の前後で維持される。 -.TP -\fBPR_GET_THP_DISABLE\fP (Linux 3.15 以降) -呼び出し元スレッドの "THP disable" フラグの現在の設定を (関数の結果として) 返す。フラグがセットされている場合は 1 -が、セットされていない場合は 0 が返る。 -.TP -\fBPR_GET_TID_ADDRESS\fP (Linux 3.5 以降) -.\" commit 300f786b2683f8bb1ec0afb6e1851183a479c86d -\fBset_tid_address\fP(2) や \fBclone\fP(2) \fBCLONE_CHILD_CLEARTID\fP フラグで設定された -\fIclear_child_tid\fP を取得し、 \fI(int\ **)\ arg2\fP が指す場所に格納して返す。 この機能はカーネルが -\fBCONFIG_CHECKPOINT_RESTORE\fP オプションを有効にして作成されている場合にのみ利用できる。 -.TP -\fBPR_SET_TIMERSLACK\fP (Linux 2.6.28 以降) -.\" See https://lwn.net/Articles/369549/ -.\" commit 6976675d94042fbd446231d1bd8b7de71a980ada -.\" It seems that it's not possible to set the timer slack to zero; -.\" The minimum value is 1? Seems a little strange. -呼び出し元スレッドの現在の timer slack を \fIarg2\fP で指定されたナノ秒に設定する。 \fIarg2\fP が 0 以下の場合、 現在の -timer slack をそのスレッドのデフォルトの timer slack 値にリセットする。 カーネルは timer slack を使って、 -呼び出し元スレッドのタイマー満了のうち、どのくらい近いものグルーピングする (一纏めにする) かを決める。 その結果、 -そのスレッドのタイマーの満了は最大で指定されたナノ秒分だけ遅れる場合がある。 タイマー満了をグルーピングすることで、 CPU -を起こす回数が最小化されシステムの消費電力を減らすことができる。 - -.\" List obtained by grepping for futex usage in glibc source -timer slack の影響を受けるのは、 システムコール \fBselect\fP(2), \fBpselect\fP(2), \fBpoll\fP(2), -\fBppoll\fP(2), \fBepoll_wait\fP(2), \fBepoll_pwait\fP(2), \fBclock_nanosleep\fP(2), -\fBnanosleep\fP(2), \fBfutex\fP(2) により設定されたタイマー満了である -(また、 futex を使って実装されているライブラリ関数 \fBpthread_cond_timedwait\fP(3), -\fBpthread_mutex_timedlock\fP(3), \fBpthread_rwlock_timedrdlock\fP(3), -\fBpthread_rwlock_timedwrlock\fP(3), \fBsem_timedwait\fP(3) も影響を受ける)。 - -timer slack はリアルタイムスケジューリングポリシーでスケジューリングされるスレッドには提供されない -(\fBsched_setscheduler\fP(2) 参照)。 - -各スレッドには timer slack に関連する値が 2 つある。 「デフォルト値」と「現在値」である。 -現在値はタイマー満了のグルーピングを制御する。 新しいスレッドが作成される際、 2 つの timer slack -値はそのスレッドを作成したスレッドの現在値と同じに設定される。 その後、 スレッドは \fBPR_SET_TIMERSLACK\fP で現在の timer -slack 値を調整できる (デフォルト値は変更できない)。 すべてのプロセスの先祖となる \fIinit\fP (PID 1) の timer slack -値は 50,000 ナノ秒 (50 ミリ秒) である。 timer slack 値は \fBexecve\fP(2) の前後で保持される。 -.TP -\fBPR_GET_TIMERSLACK\fP (Linux 2.6.28 以降) -呼び出し元スレッドの現在のタイマーのスラック値を (関数の結果として) 返す。 -.TP -\fBPR_SET_TIMING\fP (Linux 2.6.0\-test4 以降) -.\" 0 -.\" 1 -.\" PR_TIMING_TIMESTAMP doesn't do anything in 2.6.26-rc8, -.\" and looking at the patch history, it appears -.\" that it never did anything. -(通常の、伝統的に使われてきた) 統計的なプロセスタイミングを使用するか、 正確なタイムスタンプに基づくプロセスタイミングを使用するかを設定する。 -\fIarg2\fP に指定できる値は \fBPR_TIMING_STATISTICAL\fP か \fBPR_TIMING_TIMESTAMP\fP である。 -\fBPR_TIMING_TIMESTAMP\fP は現在のところ実装されていない (このモードに設定しようとするとエラー \fBEINVAL\fP -が起こることだろう)。 -.TP -\fBPR_GET_TIMING\fP (Linux 2.6.0\-test4 以降) -現在使用中のプロセスタイミングを決める方法を (関数の結果として) 返す。 -.TP -\fBPR_TASK_PERF_EVENTS_DISABLE\fP (Linux 2.6.31 以降) -呼び出したプロセスに接続されたすべての性能カウンターを無効にする。 カウンターがこのプロセスにより作成されたか他のプロセスにより作成されたかは関係ない。 -呼び出したプロセスが他のプロセス用に作成した性能カウンターは影響を受けない。 性能カウンターの詳細については Linux カーネルソースの -\fItools/perf/design.txt\fP を参照。 -.IP -.\" commit 1d1c7ddbfab358445a542715551301b7fc363e28 -以前は \fBPR_TASK_PERF_COUNTERS_DISABLE\fP と呼ばれていた。 Linux 2.6.32 で名前が変更された -(数値は同じままである)。 -.TP -\fBPR_TASK_PERF_EVENTS_ENABLE\fP (Linux 2.6.31 以降) -\fBPR_TASK_PERF_EVENTS_DISABLE\fP の逆。 呼び出したプロセスに接続された性能カウンターを有効にする。 -.IP -.\" commit 1d1c7ddbfab358445a542715551301b7fc363e28 -.\" commit cdd6c482c9ff9c55475ee7392ec8f672eddb7be6 -以前は \fBPR_TASK_PERF_COUNTERS_ENABLE\fP と呼ばれていた。 Linux 2.6.32 で名前が変更された。 -.TP -\fBPR_SET_TSC\fP (Linux 2.6.26 以降, x86 のみ) -そのプロセスがタイムスタンプカウンターを読み出せるかを決定する フラグの状態を設定する。 読み出しを許可する場合は \fIarg2\fP に -\fBPR_TSC_ENABLE\fP を、そのプロセスがタイムスタンプカウンターを読み出そうとした際に \fBSIGSEGV\fP を発生させる場合には -\fBPR_TSC_SIGSEGV\fP を渡す。 -.TP -\fBPR_GET_TSC\fP (Linux 2.6.26 以降, x86 のみ) -そのプロセスがタイムスタンプカウンターを読み出せるかを決定する フラグの状態を \fI(int\ *) arg2\fP が指す場所に格納して返す。 -.TP -\fBPR_SET_UNALIGN\fP -(ia64 では Linux 2.3.48 以降; parisc では Linux 2.6.15 以降; PowerPC では Linux 2.6.18 -以降; Alpha では Linux 2.6.22 以降; これらのアーキテクチャーのみ) unaligned アクセス制御ビットを \fIarg2\fP -で指定された値に設定する。 指定できる値は \fBPR_UNALIGN_NOPRINT\fP (unaligned なユーザーアクセスを黙って 修正する) か -\fBPR_UNALIGN_SIGBUS\fP (unaligned なユーザーアクセスがあった場合 \fBSIGBUS\fP を生成する) である。 -.TP -\fBPR_GET_UNALIGN\fP -(バージョンとアーキテクチャーの情報は \fBPR_SET_UNALIGN\fP 参照) unaligned アクセス制御ビットの値を \fI(int\ *) -arg2\fP が指す場所に格納して返す。 -.TP -\fBPR_MCE_KILL\fP (Linux 2.6.32 以降) -現在のスレッドの machine check memory corruption kill ポリシーを設定する。 \fIarg2\fP が -\fBPR_MCE_KILL_CLEAR\fP の場合、 このスレッドの memory corruption kill ポリシーをクリアし、 -システム全体のデフォルト値を使用する (システム全体のデフォルトは \fI/proc/sys/vm/memory_failure_early_kill\fP -で定義される。 \fBproc\fP(5) 参照)。 \fIarg2\fP が \fBPR_MCE_KILL_SET\fP の場合、 スレッド固有の memory -corruption kill ポリシーを使用する。 この場合、 \fIarg3\fP によりこのポリシーが \fIearly kill\fP -(\fBPR_MCE_KILL_EARLY\fP か、 \fIlate kill\fP (\fBPR_MCE_KILL_LATE\fP) か、 システム全体のデフォルト値 -(\fBPR_MCE_KILL_DEFAULT\fP) が指定される。 early kill は、 ハードウェアメモリー破壊 (corruption) -がスレッドのアドレス空間内で検出されるとすぐに、 そのスレッドが \fBSIGBUS\fP シグナルを受信することを意味する。 late kill -モードでは、 メモリー破壊が起こったページにアクセスした場合にのみ、 そのプロセスが kill される。 \fBSIGBUS\fP シグナルの詳細は -\fBsigaction\fP(2) を参照。 このポリシーは子プロセスに継承される。 未使用の残りの \fBprctl\fP() の引き数は将来の互換性のため 0 -にしなければならない。 -.TP -\fBPR_MCE_KILL_GET\fP (Linux 2.6.32 以降) -現在のプロセス単位の machine check kill ポリシーを返す。 未使用の \fBprctl\fP() の引き数はすべて 0 -にしなければならない。 -.TP -\fBPR_SET_MM\fP (Linux 3.3 以降) -.\" commit 028ee4be34a09a6d48bdf30ab991ae933a7bc036 -呼び出したプロセスのカーネルメモリーマップディスクリプターのフィールドを変更する。 これらのフィールドは通常カーネルと動的リンカーにより設定される -(詳しい情報は \fBld.so\fP を参照)。 通常のアプリケーションはこの機能を利用すべきではない。 しかしながら、自分を書き換えるプログラムなど、 -プログラムが自分自身のメモリーマップを変更するのが有用な場面もある。 この機能はカーネルが \fBCONFIG_CHECKPOINT_RESTORE\fP -オプションを有効にして作成されている場合にのみ利用できる。 呼び出したプロセスは \fBCAP_SYS_RESOURCE\fP -ケーパビリティを持っていなければならない。 \fIarg2\fP の値には以下のいずれかを指定し、 \fIarg3\fP でそのオプションの新しい値を指定する。 -.RS -.TP -\fBPR_SET_MM_START_CODE\fP -プログラムテキストを実行できるアドレスの上限を設定する。 対応するメモリー領域は読み出し可能で実行可能でなければならないが、 -書き込み可能だったり共有可能だったりしてはならない (詳しい情報は \fBmprotect\fP(2) と \fBmmap\fP(2) 参照)。 -.TP -\fBPR_SET_MM_END_CODE\fP -プログラムテキストを実行できるアドレスの下限を設定する。 対応するメモリー領域は読み出し可能で実行可能でなければならないが、 -書き込み可能だったり共有可能だったりしてはならない。 -.TP -\fBPR_SET_MM_START_DATA\fP -初期化済データや未初期化 (bss) データを配置する領域のアドレス上限を指定する。 対応するメモリー領域は読み書き可能でなければならないが、 -実行可能だったり共有可能だったりしてはならない。 -.TP -\fBPR_SET_MM_END_DATA\fP -初期化済データや未初期化 (bss) データを配置する領域のアドレス下限を指定する。 対応するメモリー領域は読み書き可能でなければならないが、 -実行可能だったり共有可能だったりしてはならない。 -.TP -\fBPR_SET_MM_START_STACK\fP -スタックの開始アドレスを設定する。 対応するメモリー領域は読み書き可能でなければならない。 -.TP -\fBPR_SET_MM_START_BRK\fP -\fBbrk\fP(2) コールで拡張できるプログラムのヒープ領域のアドレス上限を設定する。 -このアドレスは、プログラムの現在のデータセグメントの最終アドレスより大きくなければならない。 また、 -変更後のヒープとデータセグメントのサイズを合わせたサイズが \fBRLIMIT_DATA\fP リソースリミットを超えることはできない -(\fBsetrlimit\fP(2) 参照)。 -.TP -\fBPR_SET_MM_BRK\fP -現在の \fBbrk\fP(2) 値を設定する。 このアドレスの要件は \fBPR_SET_MM_START_BRK\fP オプションと同じである。 -.P -.\" commit fe8c7f5cbf91124987106faa3bdf0c8b955c4cf7 -以下のオプションは Linux 3.5 以降で利用できる。 -.TP -\fBPR_SET_MM_ARG_START\fP -プログラムのコマンドラインを配置するアドレスの上限を設定する。 -.TP -\fBPR_SET_MM_ARG_END\fP -プログラムのコマンドラインを配置するアドレスの下限を設定する。 -.TP -\fBPR_SET_MM_ENV_START\fP -プログラムの環境情報 (environment) を配置するアドレスの上限を設定する。 -.TP -\fBPR_SET_MM_ENV_END\fP -プログラムの環境情報 (environment) を配置するアドレスの下限を設定する。 -.IP -\fBPR_SET_MM_ARG_START\fP, \fBPR_SET_MM_ARG_END\fP, \fBPR_SET_MM_ENV_START\fP, -\fBPR_SET_MM_ENV_END\fP で指定されるアドレスはプロセスのスタック領域に属している必要がある。 -したがって、これらのメモリー領域は読み書き可能でなければならない。 また、 (カーネル設定によっては) \fBMAP_GROWSDOWN\fP -属性がセットされていなければならない (\fBmmap\fP(2) 参照)。 -.TP -\fBPR_SET_MM_AUXV\fP -新しい補助ベクトル (auxiliary vector) を設定する。 \fIarg3\fP 引き数はベクトルのアドレスを指定し、 \fIarg4\fP -はベクトルのサイズを指定する。 -.TP -\fBPR_SET_MM_EXE_FILE\fP -.\" commit b32dfe377102ce668775f8b6b1461f7ad428f8b6 -\fI/proc/pid/exe\fP シンボリックリンクを \fIarg3\fP -引き数で渡された新しい実行可能なファイルディスクリプターを指すシンボリックリンクで置き換える。 ファイルディスクリプターは通常の \fBopen\fP(2) -コールで取得すべきである。 -.IP -シンボリックリンクを変更するには、 既存の実行可能なメモリー領域のすべてをアンマップする必要がある。これにはカーネル自身が作成した領域も含まれる -(例えば、カーネルは通常 ELF \fI.text\fP セクションに少なくとも一つの実行可能なメモリー領域を作成する)。 -.IP -二つ目の制限は、このような変更はプロセスの生存期間で一度だけ行うことができるという点である。 一度変更を行った後で変更を行おうとすると拒否される。 -この動作は、 システム管理者が、 システムで動作するすべてのプロセスが行う、 普通でないシンボリックリンクの変更を監視するのを楽にする。 -.RE -.TP -\fBPR_MPX_ENABLE_MANAGEMENT\fP, \fBPR_MPX_DISABLE_MANAGEMENT\fP (Linux 3.19 以降) -.\" commit fe3d197f84319d3bce379a9c0dc17b1f48ad358c -.\" See also http://lwn.net/Articles/582712/ -.\" See also https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler -.\" commit e9d1b4f3c60997fe197bf0243cb4a41a44387a88 -Memory Protection eXtensions (MPX) の境界テーブル (bounds table) -のカーネル管理の有効化/無効化を行う。 引き数 \fIarg2\fP, \fIarg3\fP, \fIarg4\fP, \fIarg5\fP は 0 でなければならない。 - -MPX は、 ポインターの境界チェックを行うハードウェア支援機構である。 この機能は、 境界情報を格納するレジスター群と、 -境界チェックをどの命令に課すかを CPU に教えるための特別な命令プレフィックスの集合で構成される。 これらのレジスター数は限られており、 -レジスター数よりも多くのポインターがある場合には、 その内容をテーブル群に退避する (spilled) 必要がある。 これらのテーブル群は「境界テーブル -(bounds tables)」と呼ばれ、 MPX \fBprctl\fP 命令はカーネルがこれらの割り当てと解放を行うかどうかを制御する。 - -管理が有効になっている場合、 カーネルが境界テーブルの割り当てと解放を担当する。 最初に存在しない境界テーブルを使おうとした際に上がる #BR -例外を捕捉し、 ユーザー空間に例外を配送せずに、 テーブルの割り当てを行い、 新しいテーブルに境界情報 (bounds directory) -を書き込む。 解放に関しては、 カーネルが割り当てられていないメモリーに対応する境界テーブルが存在するかを確認し、 そうであれば解放を行う。 - -\fBPR_MPX_ENABLE_MANAGEMENT\fP を使って MPX 管理を有効にする前に、 -アプリケーションはまず境界情報管理用のユーザー空間バッファーを割り当て、 その管理情報の場所を \fIbndcfgu\fP -レジスターに設定しなければならない。 - -CPU やカーネルが MPX をサポートしていない場合、 これらの呼び出しは失敗する。 カーネルによる MPX のサポートは -\fBCONFIG_X86_INTEL_MPX\fP 設定オプションで有効にできる。 CPU が MPX をサポートしているかを確認するには、 以下のように -\&'mpx' CPUID ビットを見ればよい。 - - cat /proc/cpuinfo | grep ' mpx ' - -MPX が有効になっている間は、 スレッドはロング (64 ビット) モードのオン/オフの切り替えはできない。 - -プロセス内のすべてのスレッドがこれらの呼び出しの影響を受ける。 - -\fBfork\fP(2) で作成された子プロセスは MPX 管理の状態を継承する。 \fBexecve\fP(2) の中で、 MPX 管理は -\fBPR_MPX_DISABLE_MANAGEMENT\fP が呼ばれた場合と同じ状態がリセットされる。 - -.\" -Intel MPX についての詳しい情報は、カーネルソースファイル \fIDocumentation/x86/intel_mpx.txt\fP を参照。 -.SH 返り値 -成功すると、 \fBPR_GET_DUMPABLE\fP, \fBPR_GET_KEEPCAPS\fP, \fBPR_GET_NO_NEW_PRIVS\fP, -\fBPR_GET_THP_DISABLE\fP, \fBPR_CAPBSET_READ\fP, \fBPR_GET_TIMING\fP, -\fBPR_GET_TIMERSLACK\fP, \fBPR_GET_SECUREBITS\fP, \fBPR_MCE_KILL_GET\fP, -\fBPR_GET_SECCOMP\fP は上述の負でない値を返す (なお、\fBPR_GET_SECCOMP\fP は返らない場合もある)。 \fIoption\fP -が他の値の場合は成功時に 0 を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP に適切な値を設定する。 -.SH エラー -.TP -\fBEFAULT\fP -\fIarg2\fP が不正なアドレスである。 -.TP -\fBEFAULT\fP -\fIoption\fP が \fBPR_SET_SECCOMP\fP で、 \fIarg2\fP が \fBSECCOMP_MODE_FILTER\fP で、 カーネルが -\fBCONFIG_SECCOMP_FILTER\fP を有効にして作成されており、 \fIarg3\fP が無効なアドレスである。 -.TP -\fBEINVAL\fP -\fIoption\fP の値が理解できない。 -.TP -\fBEINVAL\fP -\fIoption\fP が \fBPR_MCE_KILL\fP, \fBPR_MCE_KILL_GET\fP, \fBPR_SET_MM\fP のいずれかで、かつ未使用の -\fBprctl\fP() 引き数に 0 が指定されていなかった。 -.TP -\fBEINVAL\fP -\fIarg2\fP が指定された \fIoption\fP で有効な値ではない。 -.TP -\fBEINVAL\fP -\fIoption\fP が \fBPR_SET_SECCOMP\fP か \fBPR_GET_SECCOMP\fP だが、カーネルが \fBCONFIG_SECCOMP\fP -を有効にして作成されていなかった。 -.TP -\fBEINVAL\fP -\fIoption\fP が \fBPR_SET_SECCOMP\fP で、 \fIarg2\fP が \fBSECCOMP_MODE_FILTER\fP で、 カーネルが -\fBCONFIG_SECCOMP\fP を有効にして作成されていなかった。 -.TP -\fBEINVAL\fP -\fIoption\fP が \fBPR_SET_MM\fP で、以下のいずれかが真である。 -.RS -.IP * 3 -\fIarg4\fP が \fIarg5\fP で 0 以外である。 -.IP * -\fIarg3\fP が \fBTASK_SIZE\fP よりも大きい (\fBTASK_SIZE\fP -はこのアーキテクチャーでユーザー空間アドレススペースの最大サイズである)。 -.IP * -\fIarg2\fP が \fBPR_SET_MM_START_CODE\fP, \fBPR_SET_MM_END_CODE\fP, -\fBPR_SET_MM_START_DATA\fP, \fBPR_SET_MM_END_DATA\fP, \fBPR_SET_MM_START_STACK\fP -のどれかで、対応するメモリー領域のアクセス許可が要件を満たしていない。 -.IP * -\fIarg2\fP が \fBPR_SET_MM_START_BRK\fP か \fBPR_SET_MM_BRK\fP で、 \fIarg3\fP -データセグメントの末尾と同じかそれより前か、 \fIarg3\fP に \fBRLIMIT_DATA\fP リソースリミットを超えてしまうような値が指定されている。 -.RE -.TP -\fBEINVAL\fP -\fIoption\fP が \fBPR_SET_PTRACER\fP で \fIarg2\fP が 0, \fBPR_SET_PTRACER_ANY\fP, 既存プロセスの -PID のいずれでもない。 -.TP -\fBEINVAL\fP -\fIoption\fP が \fBPR_SET_PDEATHSIG\fP で、 \fIarg2\fP で指定された値は無効なシグナル番号である。 -.TP -\fBEINVAL\fP -\fIoption\fP が \fBPR_SET_DUMPABLE\fP で、 \fIarg2\fP が \fBSUID_DUMP_DISABLE\fP でも -\fBSUID_DUMP_USER\fP でもない。 -.TP -\fBEINVAL\fP -\fIoption\fP が \fBPR_SET_TIMING\fP で、 \fIarg2\fP が \fBPR_TIMING_STATISTICAL\fP ではない。 -.TP -\fBEINVAL\fP -\fIoption\fP が \fBPR_SET_NO_NEW_PRIVS\fP で、 \fIarg2\fP が 1 以外か、 \fIarg3\fP, \fIarg4\fP, -\fIarg5\fP のどれかが 0 ではない。 -.TP -\fBEINVAL\fP -\fIoption\fP が \fBPR_GET_NO_NEW_PRIVS\fP で、 \fIarg2\fP, \fIarg3\fP, \fIarg4\fP, \fIarg5\fP -のどれかが 0 ではない。 -.TP -\fBEINVAL\fP -\fIoption\fP が \fBPR_SET_THP_DISABLE\fP で \fIarg3\fP, \fIarg4\fP, \fIarg5\fP のどれかが 0 ではない。 -.TP -\fBEINVAL\fP -\fIoption\fP が \fBPR_GET_THP_DISABLE\fP で \fIarg2\fP, \fIarg3\fP, \fIarg4\fP, \fIarg5\fP のいずれが -0 ではない。 -.TP -\fBEPERM\fP -\fIoption\fP が \fBPR_SET_SECUREBITS\fP で、呼び出し元がケーパビリティ \fBCAP_SETPCAP\fP を持っていない。 -または、"locked" フラグを解除しようとした。 または、locked フラグがセットされているフラグをセットしようとした -(\fBcapabilities\fP(7) 参照)。 -.TP -\fBEPERM\fP -\fIoption\fP が \fBPR_SET_KEEPCAPS\fP で、呼び出し元のフラグ \fBSECURE_KEEP_CAPS_LOCKED\fP -がセットされている (\fBcapabilities\fP(7) 参照)。 -.TP -\fBEPERM\fP -\fIoption\fP が \fBPR_CAPBSET_DROP\fP で、呼び出し元がケーパビリティ \fBCAP_SETPCAP\fP を持っていない。 -.TP -\fBEPERM\fP -\fIoption\fP が \fBPR_SET_MM\fP で、呼び出し元がケーパビリティ \fBCAP_SYS_RESOURCE\fP を持っていない。 -.TP -\fBEACCES\fP -\fIoption\fP が \fBPR_SET_MM\fP、かつ \fIarg3\fP が \fBPR_SET_MM_EXE_FILE\fP で、ファイルが実行可能ではない。 -.TP -\fBEBUSY\fP -\fIoption\fP が \fBPR_SET_MM\fP で、 \fIarg3\fP が \fBPR_SET_MM_EXE_FILE\fP で、 -\fI/proc/pid/exe\fP シンボリックリンクを変更しようとしたが、 禁止されている。 -.TP -\fBEBADF\fP -.\" The following can't actually happen, because prctl() in -.\" seccomp mode will cause SIGKILL. -.\" .TP -.\" .B EPERM -.\" .I option -.\" is -.\" .BR PR_SET_SECCOMP , -.\" and secure computing mode is already 1. -\fIoption\fP が \fBPR_SET_MM\fP で、 \fIarg3\fP が \fBPR_SET_MM_EXE_FILE\fP で、 \fIarg4\fP -で渡されたファイルディスクリプターが有効ではない。 -.TP -\fBENXIO\fP -\fIoption\fP が \fBPR_MPX_ENABLE_MANAGEMENT\fP か \fBPR_MPX_DISABLE_MANAGEMENT\fP で、 -カーネルか CPU が MPX の管理をサポートしていない。 カーネルとプロセスが MPX をサポートしているか確認すること。 -.SH バージョン -.\" The library interface was added in glibc 2.0.6 -\fBprctl\fP() システムコールは Linux 2.1.57 で導入された。 -.SH 準拠 -このコールは Linux 特有である。 IRIX には \fBprctl\fP() システムコールがあるが (MIPS アーキテクチャーにおいて -irix_prctl として Linux 2.1.44 で同様に導入された)、 そのプロトタイプは -.sp -\fBptrdiff_t prctl(int \fP\fIoption\fP\fB, int \fP\fIarg2\fP\fB, int \fP\fIarg3\fP\fB);\fP -.sp -である。ユーザー当りのプロセス最大数を取得するオプション、 プロセスの使用できる最大プロッサー数を取得するオプション、 -現在特定のプロセスが停止(block)させられているかどうか調べるオプション、 スタックサイズの最大値の取得や設定を行なうオプションなどがある。 -.SH 関連項目 -\fBsignal\fP(2), \fBcore\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/pread.2 b/manual/LDP_man-pages/draft/man2/pread.2 index 32933979..06d21677 100644 --- a/manual/LDP_man-pages/draft/man2/pread.2 +++ b/manual/LDP_man-pages/draft/man2/pread.2 @@ -37,24 +37,24 @@ .\" Updated 2013-05-01, Akihiro MOTOKI .\" Updated 2013-07-24, Akihiro MOTOKI .\" -.TH PREAD 2 2013\-06\-21 Linux "Linux Programmer's Manual" +.TH PREAD 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 pread, pwrite \- 指定したオフセットでファイルディスクリプターを読み書きする .SH 書式 \fB#include \fP -.sp +.PP \fBssize_t pread(int \fP\fIfd\fP\fB, void *\fP\fIbuf\fP\fB, size_t \fP\fIcount\fP\fB, off_t \fP\fIoffset\fP\fB);\fP -.sp +.PP \fBssize_t pwrite(int \fP\fIfd\fP\fB, const void *\fP\fIbuf\fP\fB, size_t \fP\fIcount\fP\fB, off_t \fP\fIoffset\fP\fB);\fP -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in +.RE +.PP .PD 0 .ad l -.sp \fBpread\fP(), \fBpwrite\fP(): .RS 4 _XOPEN_SOURCE\ >=\ 500 @@ -72,8 +72,15 @@ _XOPEN_SOURCE\ >=\ 500 .PP \fIfd\fP で参照されるファイルはシーク (seek) 可能でなければならない。 .SH 返り値 -成功した場合、読み書きを行ったバイト数が返される (ゼロは、 \fBpwrite\fP() の場合には何も書かれなかったことを意味し、 \fBpread\fP() -の場合にはファイル の末尾に達したことを意味する)。 エラーの場合は \-1 が返され、 \fIerrno\fP がそのエラーを示すように設定される。 +On success, \fBpread\fP() returns the number of bytes read (a return of zero +indicates end of file) and \fBpwrite\fP() returns the number of bytes +written. +.PP +Note that it is not an error for a successful call to transfer fewer bytes +than requested (see \fBread\fP(2) and \fBwrite\fP(2)). +.PP +On error, \-1 is returned and \fIerrno\fP is set to indicate the cause of the +error. .SH エラー \fBpread\fP() では、 \fBread\fP(2) および \fBlseek\fP(2) で規定された全てのエラーが発生する可能性があり、 \fIerrno\fP にはエラーを示す値が設定される。 \fBpwrite\fP() では、 \fBwrite\fP(2) および \fBlseek\fP(2) @@ -83,16 +90,17 @@ _XOPEN_SOURCE\ >=\ 500 のシステムコールのエントリーは 2.1.69 で追加された。 (システムコールを持たない古いカーネルでの \fBlseek\fP(2) を使ったエミュレーションを含めると) C ライブラリにおけるサポートは glibc 2.1 で追加された。 .SH 準拠 -POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008. .SH 注意 +.\" システムコール \fBpread\fP() と \fBpwrite\fP() は、特にマルチスレッドアプリケーションで役に立つ。 これらを使うと、 他のスレッドによるファイルオフセットの変更の影響を受けることなく、 複数のスレッドが同じファイルディスクリプターに対して入出力を行うことができる。 - +.SS "C library/kernel differences" Linux では、裏で呼び出されるシステムコールの名前がカーネル 2.6 で変更された。 \fBpread\fP() は \fBpread64\fP() になり、 \fBpwrite\fP() は \fBpwrite64\fP() になった。 システムコールの番号は変更されていない。 glibc の \fBpread\fP() と \fBpwrite\fP() のラッパー関数はこれらの変更を吸収している。 - +.PP いくつかの 32 ビットアーキテクチャーでは、これらのシステムコールの呼び出し時のシグネチャーが違っています。理由は \fBsyscall\fP(2) で説明されている通りです。 .SH バグ @@ -105,6 +113,5 @@ POSIX では、\fBO_APPEND\fP フラグを指定してファイルをオープ .SH 関連項目 \fBlseek\fP(2), \fBread\fP(2), \fBreadv\fP(2), \fBwrite\fP(2) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/process_vm_readv.2 b/manual/LDP_man-pages/draft/man2/process_vm_readv.2 index a89a2db9..9a7b29cb 100644 --- a/manual/LDP_man-pages/draft/man2/process_vm_readv.2 +++ b/manual/LDP_man-pages/draft/man2/process_vm_readv.2 @@ -25,25 +25,26 @@ .\" %%%LICENSE_END .\" .\" Commit fcf634098c00dd9cd247447368495f0b79be12d1 +.\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH PROCESS_VM_READV 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH PROCESS_VM_READV 2 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 process_vm_readv, process_vm_writev \- プロセスのアドレス空間間でデータを転送する .SH 書式 .nf \fB#include \fP - +.PP \fBssize_t process_vm_readv(pid_t \fP\fIpid\fP\fB,\fP \fB const struct iovec *\fP\fIlocal_iov\fP\fB,\fP \fB unsigned long \fP\fIliovcnt\fP\fB,\fP \fB const struct iovec *\fP\fIremote_iov\fP\fB,\fP \fB unsigned long \fP\fIriovcnt\fP\fB,\fP \fB unsigned long \fP\fIflags\fP\fB);\fP - +.PP \fBssize_t process_vm_writev(pid_t \fP\fIpid\fP\fB,\fP \fB const struct iovec *\fP\fIlocal_iov\fP\fB,\fP \fB unsigned long \fP\fIliovcnt\fP\fB,\fP @@ -51,11 +52,11 @@ process_vm_readv, process_vm_writev \- プロセスのアドレス空間間で \fB unsigned long \fP\fIriovcnt\fP\fB,\fP \fB unsigned long \fP\fIflags\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBprocess_vm_readv\fP(), \fBprocess_vm_writev\fP(): .PD 0 .ad l @@ -64,76 +65,83 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 .RE .ad .PD -.fi .SH 説明 これらのシステムコールは、 呼び出し元プロセス (「ローカルプロセス」) と \fIpid\fP で指定されるプロセス (「リモートプロセス」) のアドレス空間間でデータを転送する。 データの移動は、 カーネル空間を経由することなく、 2 つのプロセスのアドレス空間間で直接行われる。 - +.PP \fBprocess_vm_readv\fP() システムコールは、 リモートプロセスからローカルプロセスへデータを転送する。 転送対象のデータは \fIremote_iov\fP と \fIriovcnt\fP で指定される。 \fIremote_iov\fP はプロセス \fIpid\fP におけるアドレス範囲を指定する配列へのポインターで、 \fIriovcnt\fP は \fIremote_iov\fP の要素数を指定する。 データは \fIlocal_iov\fP と \fIliovcnt\fP で指定された場所に転送される。 \fIlocal_iov\fP は呼び出し元プロセスにおけるアドレス範囲を指定する配列で、 \fIliovcnt\fP は \fIlocal_iov\fP の要素数を指定する。 - +.PP \fBprocess_vm_writev\fP() システムコールは \fBprocess_vm_readv\fP() の逆で、 ローカルプロセスからリモートプロセスにデータを転送する。 転送の方向が違う以外は、 引き数 \fIliovcnt\fP, \fIlocal_iov\fP, \fIriovcnt\fP, \fIremote_iov\fP は \fBprocess_vm_readv\fP() と同じ意味を持つ。 - +.PP 引き数 \fIlocal_iov\fP と \fIremote_iov\fP は \fIiovec\fP 構造体の配列へのポイン タである。 \fIiovec\fP 構造体は \fI\fP で以下のように定義 されている: - +.PP .in +4n -.nf +.EX struct iovec { void *iov_base; /* Starting address */ size_t iov_len; /* Number of bytes to transfer */ }; -.fi +.EE .in - +.PP バッファーは配列の順序で処理される。 つまり、 \fBprocess_vm_readv\fP() は \fIlocal_iov\fP[0] が一杯になるまでデータを詰めてから、 \fIlocal_iov\fP[1] に進むことを意味する。 同様に、 \fIremote_iov\fP[0] を全部読み出してから \fIremote_iov\fP[1] に進み、 以降も同様である。 - +.PP 同様に、 \fBprocess_vm_writev\fP() は \fIlocal_iov[0]\fP の内容を全部読み出してから \fIlocal_iov[1]\fP に進み、 書き込み先でも \fIremote_iov[0]\fP が一杯になってから \fIremote_iov[1]\fP に進む。 - +.PP 長さ \fIremote_iov[i].iov_len\fP と \fIlocal_iov[i].iov_len\fP は同じである必要はない。 したがって、 ローカル側で 1 つのバッファーのデータがリモート側で複数のバッファーに分割されることがあるし、 その逆も起こりえる。 - +.PP \fIflags\fP 引き数は現在使用されておらず、 0 を設定しなければならない。 - +.PP .\" In time, glibc might provide a wrapper that works around this limit, .\" as is done for readv()/writev() \fIliovcnt\fP と \fIriovcnt\fP で指定される値は \fBIOV_MAX\fP 以下でなければならない (\fBIOV_MAX\fP は \fI\fP で定義されており、 \fIsysconf(_SC_IOV_MAX)\fP の呼び出しでも入手できる)。 - +.PP 要素数引き数と \fIlocal_iov\fP のチェックは、 すべてのデータ転送に先立って行われる。 要素数が大きすぎる場合や \fIlocal_iov\fP が無効な場合、 アドレスがローカルプロセスがアクセスできない領域を参照している場合は、 配列のどの要素も処理されず、 すぐにエラーが返される。 - -ただし、 これらのシステムコールは、 実際に読み出し/書き込みを行う直前までリモートプロセスのメモリー領域のチェックを行わない点に注意すること。 -結果として、 \fIremote_iov\fP の要素の一つがリモートプロセスで無効なメモリー領域を参照している場合、 部分的な読み出し/書き込み -(「返り値」の節を参照) が行われることになる。 これ以降は読み出し/書き込みは行われない。 リモートプロセスから長さ不明のデータ (例えば NULL -終端された C 文字列) を読み出す際で、 リモート側の一つの \fIiovec\fP 要素が複数のメモリーページ (通常は 4KiB) -にまたがらないようにしている場合は、 この点に注意が必要である。 -(リモートからの読み出しを 2 つの \fIremote_iov\fP 要素に分割し、 1 つの \fIlocal_iov\fP -要素への書き込みにマージすればよい。 最初の読み出しでページ境界まで読み出し、 次の読み出しを次のページ境界から行う。) - -他のプロセスからの読み出しや他のプロセスへの書き込みを行うには、 呼び出し元がケーパビリティ \fBCAP_SYS_PTRACE\fP -を持っていなければならない、もしくは、 リモートプロセスの実ユーザー ID、 実効ユーザー ID、 保存 set\-user\-ID -が呼び出し元の実ユーザー ID と一致し、 かつリモートプロセスの実グループ ID、 実効グループ ID、 保存 set\-group\-ID -が呼び出し元の実グループ ID と一致していなければならない。 (ここで必要なアクセス許可は、 リモートプロセスに対して \fBptrace\fP(2) の -\fBPTRACE_ATTACH\fP を実行するのに必要な許可と全く同じである。) +.PP +Note, however, that these system calls do not check the memory regions in +the remote process until just before doing the read/write. Consequently, a +partial read/write (see RETURN VALUE) may result if one of the +\fIremote_iov\fP elements points to an invalid memory region in the remote +process. No further reads/writes will be attempted beyond that point. Keep +this in mind when attempting to read data of unknown length (such as C +strings that are null\-terminated) from a remote process, by avoiding +spanning memory pages (typically 4\ KiB) in a single remote \fIiovec\fP +element. (Instead, split the remote read into two \fIremote_iov\fP elements +and have them merge back into a single write \fIlocal_iov\fP entry. The first +read entry goes up to the page boundary, while the second starts on the next +page boundary.) +.PP +Permission to read from or write to another process is governed by a ptrace +access mode \fBPTRACE_MODE_ATTACH_REALCREDS\fP check; see \fBptrace\fP(2). .SH 返り値 成功すると、 \fBprocess_vm_readv\fP() は読み出したバイト数を返し、 \fBprocess_vm_writev\fP() は書き込んだバイト数を返す。 この返り値は、 読み出し/書き込みが部分的に行われた場合には、 要求された総バイト数よりも小さくなることがある (部分的な転送は \fIiovec\fP 要素単位に行われ、 これらのシステムコールが一つの \fIiovec\fP 要素の一部だけが転送されることはない)。 呼び出し元は返り値を検査して、 部分的な読み出し/書き込みが起こったかどうかを判定できる。 - +.PP エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 .SH エラー .TP +\fBEFAULT\fP +\fIlocal_iov\fP で指定されたメモリーが呼び出し元がアクセス可能なアドレス空間の外にある。 +.TP +\fBEFAULT\fP +\fIremote_iov\fP で指定されたメモリーがプロセス \fIpid\fP がアクセス可能なアドレス空間の外にある。 +.TP \fBEINVAL\fP \fIlocal_iov\fP か \fIremote_iov\fP のいずれかの \fIiov_len\fP の合計値が \fIssize_t\fP で表現できる値を超えている。 @@ -144,12 +152,6 @@ struct iovec { \fBEINVAL\fP \fIliovcnt\fP か \fIriovcnt\fP が大きすぎる。 .TP -\fBEFAULT\fP -\fIlocal_iov\fP で指定されたメモリーが呼び出し元がアクセス可能なアドレス空間の外にある。 -.TP -\fBEFAULT\fP -\fIremote_iov\fP で指定されたメモリーがプロセス \fIpid\fP がアクセス可能なアドレス空間の外にある。 -.TP \fBENOMEM\fP \fIiovec\fP 構造体の内部コピーのためのメモリーを割り当てできなかった。 .TP @@ -167,17 +169,17 @@ ID が \fIpid\fP のプロセスが存在しない。 .SH 注意 \fBprocess_vm_readv\fP() と \fBprocess_vm_writev\fP() により実行されるデータ転送をどのように行ったとしても、 これらがアトミックに行われる保証はない。 - +.PP .\" Original user is MPI, http://www.mcs.anl.gov/research/projects/mpi/ .\" See also some benchmarks at http://lwn.net/Articles/405284/ .\" and http://marc.info/?l=linux-mm&m=130105930902915&w=2 これらのシステムコールは、 (共有メモリーやパイプなどを使った場合に必要となる 2 回のコピーではなく) 1 回のコピー処理でメッセージの交換を許すことで、 高速なメッセージ送信をできるようにするために設計された。 -.SH 例 +.SH EXAMPLES 以下のサンプルコードは \fBprocess_vm_readv\fP() の使用例を示すものである。 このコードは PID 10 のプロセスのアドレス 0x10000 から 20 バイトを読み取り、 最初の 10 バイトを \fIbuf1\fP に、 残りの 10 バイトを \fIbuf2\fP に書き込む。 -.sp -.nf +.PP +.EX #include int @@ -203,10 +205,9 @@ main(void) else return 0; } -.fi +.EE .SH 関連項目 \fBreadv\fP(2), \fBwritev\fP(2) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 index c7bd31db..6d130186 100644 --- a/manual/LDP_man-pages/draft/man2/query_module.2 +++ b/manual/LDP_man-pages/draft/man2/query_module.2 @@ -18,26 +18,27 @@ .\" Updated 2013-05-01, Akihiro MOTOKI .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH QUERY_MODULE 2 2014\-05\-10 Linux "Linux Programmer's Manual" +.TH QUERY_MODULE 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 query_module \- モジュールに関連する各種の情報をカーネルに問い合わせる .SH 書式 .nf \fB#include \fP -.sp +.PP \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 のヘッダーでは提供されていない。「注意」を参照。 +.PP +\fINote\fP: No declaration of this system call is provided in glibc headers; +see NOTES. .SH 説明 \fI注意\fP: このシステムコールが存在するのは、カーネル 2.6 より前の Linux だけである。 - +.PP \fBquery_module\fP() は、ローダーブルモジュールに関する情報をカーネルに問い合わせる。 情報は \fIbuf\fP が指し示すバッファーに格納されて返される。 呼び出し元は \fIbuf\fP のサイズを \fIbufsize\fP に指定しなければならない。 得られる情報の正確な意味とフォーマットは、 \fIwhich\fP でどの操作を指定するかによって異なる。 現在ロードされているモジュールを特定するために \fIname\fP を必要とする操作があれば、 カーネル固有であることを示す NULL を指定できる操作もある。 - +.PP \fIwhich\fP には以下の値を指定できる: .TP \fB0\fP @@ -62,29 +63,29 @@ query_module \- モジュールに関連する各種の情報をカーネルに .\" ret is set on ENOSPC カーネルまたは指定されたモジュールがエクスポートしているシンボルと 値を返す。 バッファーのデータは、 以下の構造体の配列にヌル終端された文字列が続く形となる。 +.IP .in +4n -.nf - +.EX struct module_symbol { unsigned long value; unsigned long name; }; -.fi +.EE .in .IP \fIname\fP の値は、 \fIbuf\fP の先頭からの文字列までのオフセット文字数である。 \fIret\fP にはシンボルの数が設定される。 .TP \fBQM_INFO\fP 指定されたモジュールに関する様々な情報を返す。 出力バッファーのフォーマットは以下の形式となる: +.IP .in +4n -.nf - +.EX struct module_info { unsigned long address; unsigned long size; unsigned long flags; }; -.fi +.EE .in .IP \fIaddress\fP はそのモジュールが配置されているカーネル空間上のアドレス、 \fIsize\fP はそのモジュールのバイト単位のサイズ、 @@ -119,7 +120,7 @@ struct module_info { .SH 注意 以前 \fBquery_module\fP() で得られた情報のいくつかは、 \fI/proc/modules\fP, \fI/proc/kallsyms\fP および \fI/sys/module\fP ディレクトリ内のファイルから取得できる。 - +.PP \fBquery_module\fP() システムコールは glibc ではサポートされていない。 glibc ヘッダーでは宣言は提供されていないが、 歴史の紆余曲折を経て glibc はこのシステムコールに対する ABI を公開していない。 したがって、このシステムコールを利用するには、自分のコードの中で手動でインターフェースを宣言すればよい。 \fBsyscall\fP(2) @@ -128,6 +129,5 @@ struct module_info { \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index d3cd6d47..00000000 --- a/manual/LDP_man-pages/draft/man2/read.2 +++ /dev/null @@ -1,158 +0,0 @@ -.\" 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 -.\" Modified Wed Jan 17 16:02:32 1996 by Michael Haardt -.\" -.\" Modified Thu Apr 11 19:26:35 1996 by Andries Brouwer -.\" Modified Sun Jul 21 18:59:33 1996 by Andries Brouwer -.\" Modified Fri Jan 31 16:47:33 1997 by Eric S. Raymond -.\" Modified Sat Jul 12 20:45:39 1997 by Michael Haardt -.\" -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-23, HANATAKA Shinya -.\" Modified 1997-09-28, HANATAKA Shinya -.\" Updated & Modified 2005-02-24, Yuichi SATO -.\" Updated 2005-09-06, Akihiro MOTOKI -.\" Updated 2005-10-14, Akihiro MOTOKI -.\" Updated 2008-02-10, Akihiro MOTOKI, LDP v2.77 -.\" Updated 2009-04-13, Akihiro MOTOKI, LDP v3.20 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH READ 2 2014\-05\-04 Linux "Linux Programmer's Manual" -.SH 名前 -read \- ファイルディスクリプターから読み込む -.SH 書式 -.nf -\fB#include \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 -で始まるバッファーへ読み込もうとする。 - -seek に対応しているファイルでは、read -は現在のファイルオフセットから行われ、ファイルオフセットは読み込んだバイト数分だけ進められる。現在のファイルオフセットがファイル末尾かそれより先の場合は、読み出しは行われず、 -\fBread\fP() は 0 を返す。 - -\fIcount\fP が 0 の場合、 \fBread\fP() は以下で説明するエラーを検出する\fI場合がある\fP。 どのエラーもなかった場合、もしくは -\fBread\fP() がエラーのチェックを行わない場合、 \fIcount\fP が 0 で呼び出された \fBread\fP() は 0 を返し、何も行わない。 - -\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 バグ -POSIX.1\-2008/SUSv4 セクション XSI 2.9.7 ("Thread Interactions with Regular File -Operations") によると、 - -.RS 4 -以下のすべての関数では、 通常ファイルもしくはシンボリックリンクに対する操作では POSIX.1\-2008 -で規定された効果が互いにアトミックに行われなければならない: ... -.RE - -.\" http://thread.gmane.org/gmane.linux.kernel/1649458 -.\" From: Michael Kerrisk (man-pages gmail.com> -.\" Subject: Update of file offset on write() etc. is non-atomic with I/O -.\" Date: 2014-02-17 15:41:37 GMT -.\" Newsgroups: gmane.linux.kernel, gmane.linux.file-systems -.\" commit 9c225f2655e36a470c4f58dbbc99244c5fc7f2d4 -.\" Author: Linus Torvalds -.\" Date: Mon Mar 3 09:36:58 2014 -0800 -.\" -.\" vfs: atomic f_pos accesses as per POSIX -この後に書かれている API の中に \fBread\fP() と \fBreadv\fP(2) である。 スレッド(やプロセス) -間でアトミックに適用することが求められる効果の一つとして、 ファイルオフセットの更新がある。 しかしながら、 バージョン 3.14 より前の Linux -では、 この限りではない。 オープンファイル記述 (open file description) を共有する 2 つのプロセスが同時に -\fBread\fP() (や \fBreadv\fP(2)) を実行した場合、 この I/O 操作ではファイルオフセットの更新に関してはアトミックではなく、 2 -つのプロセスの read で取得されるデータブロックが (間違って) 重なる可能性がある。 この問題は Linux 3.14 で修正された。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/readahead.2 b/manual/LDP_man-pages/draft/man2/readahead.2 index a3226908..9427029d 100644 --- a/manual/LDP_man-pages/draft/man2/readahead.2 +++ b/manual/LDP_man-pages/draft/man2/readahead.2 @@ -36,25 +36,28 @@ .\" Translated 2005-02-26, Akihiro MOTOKI .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH READAHEAD 2 2014\-03\-15 Linux "Linux Programmer's Manual" +.TH READAHEAD 2 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 readahead \- 前もってファイルをページキャッシュに読み込む .SH 書式 .nf \fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ \fB#include \fP -.sp +.PP \fBssize_t readahead(int \fP\fIfd\fP\fB, off64_t \fP\fIoffset\fP\fB, size_t \fP\fIcount\fP\fB);\fP .fi .SH 説明 \fBreadahead\fP() はファイルの先読みを行い、そのファイルに対する後の読み込みがキャッシュから行われ、ディスク I/O で停止しないようにする (この条件を満たせるのは、先読みは十分早く行われ、システムの他の動作によりその後にキャッシュからページがフラッシュされない場合である)。 - -\fIfd\fP 引き数は読み込みを行うファイルを識別するファイルディスクリプターである。 \fIoffset\fP 引き数はデータの読み込み開始位置を指定し、 -\fIcount\fP は読み込むデータのバイト数を指定する。 ディスク I/O はページ単位で実行されるので、 実際には \fIoffset\fP -はページ境界に切り下げられ、読み込みバイト数は \fI(offset+count)\fP より小さくない次のページ境界まで切り上げられる。 -\fBreadahead\fP() はファイルの末尾を越えた範囲まで読み出しを行うことはない。 \fIfd\fP -で参照されたオープン済のファイルのファイルオフセットの現在値は 変更されない。 +.PP +The \fIfd\fP argument is a file descriptor identifying the file which is to be +read. The \fIoffset\fP argument specifies the starting point from which data +is to be read and \fIcount\fP specifies the number of bytes to be read. I/O is +performed in whole pages, so that \fIoffset\fP is effectively rounded down to a +page boundary and bytes are read up to the next page boundary greater than +or equal to \fI(offset+count)\fP. \fBreadahead\fP() does not read beyond the end +of the file. The file offset of the open file description referred to by +the file descriptor \fIfd\fP is left unchanged. .SH 返り値 \fBreadahead\fP() は成功すると 0 を返す。失敗した場合 \-1 を返し、 \fIerrno\fP にエラーの原因を示す値を設定する。 .SH エラー @@ -80,6 +83,5 @@ readahead \- 前もってファイルをページキャッシュに読み込む .SH 関連項目 \fBlseek\fP(2), \fBmadvise\fP(2), \fBmmap\fP(2), \fBposix_fadvise\fP(2), \fBread\fP(2) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/readdir.2 b/manual/LDP_man-pages/draft/man2/readdir.2 index 79fbb522..1ca43e82 100644 --- a/manual/LDP_man-pages/draft/man2/readdir.2 +++ b/manual/LDP_man-pages/draft/man2/readdir.2 @@ -40,16 +40,16 @@ .\" Updated 2013-05-01, Akihiro MOTOKI .\" Updated 2013-07-22, Akihiro MOTOKI .\" -.TH READDIR 2 2013\-06\-21 Linux "Linux Programmer's Manual" +.TH READDIR 2 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 readdir \- ディレクトリエントリーを読み込む .SH 書式 .nf -.sp +.PP \fBint readdir(unsigned int \fP\fIfd\fP\fB, struct old_linux_dirent *\fP\fIdirp\fP\fB,\fP \fB unsigned int \fP\fIcount\fP\fB);\fP .fi - +.PP \fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 .SH 説明 これはあなたの興味をもっている関数ではない。 POSIX 準拠の C ライブラリインターフェースについては \fBreaddir\fP(3) を見ること。 @@ -60,22 +60,24 @@ readdir \- ディレクトリエントリーを読み込む 構造体を読み込み、 \fIdirp\fP で指されたバッファーに格納する。 \fIcount\fP 引き数は(ほとんどの \fIold_linux_dirent\fP 構造体の読み込みにおいて)無視される .PP -\fIold_linux_dirent\fP 構造体は以下のように宣言される: +The \fIold_linux_dirent\fP structure is declared (privately in Linux kernel +file \fBfs/readdir.c\fP) as follows: .PP .in +4n -.nf +.EX struct old_linux_dirent { - long d_ino; /* inode number */ - off_t d_off; /* offset to this \fIold_linux_dirent\fP */ - unsigned short d_reclen; /* length of this \fId_name\fP */ - char d_name[NAME_MAX+1]; /* filename (null\-terminated) */ + unsigned long d_ino; /* inode number */ + unsigned long d_offset; /* offset to this \fIold_linux_dirent\fP */ + unsigned short d_namlen; /* length of this \fId_name\fP */ + char d_name[1]; /* filename (null\-terminated) */ } -.fi +.EE .in .PP -\fId_ino\fP は inode 番号である。 \fId_off\fP はディレクトリの最初からこの \fIold_linux_dirent\fP まで距離である。 -\fId_reclen\fP は \fId_name\fP の大きさで、終端のヌルバイト (\(aq\e0\(aq) を含まない。 \fId_name\fP -はヌルバイトで終わるファイル名である。 +\fId_ino\fP is an inode number. \fId_offset\fP is the distance from the start of +the directory to this \fIold_linux_dirent\fP. \fId_reclen\fP is the size of +\fId_name\fP, not counting the terminating null byte (\(aq\e0\(aq). \fId_name\fP +is a null\-terminated filename. .SH 返り値 成功した場合は、1 が返される。 ディレクトリの最後では 0 が返される。 エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 .SH エラー @@ -100,11 +102,10 @@ struct old_linux_dirent { glibc はこのシステムコールに対するラッパー関数を提供していない。 \fBsyscall\fP(2) を使って呼び出すこと。 \fIold_linux_dirent\fP 構造体を自分自身で定義する必要がある。しかし、たいていはこのシステムコールではなく \fBreaddir\fP(3) を使うべき場面のことが多い。 - +.PP このシステムコールは x86\-64 では存在しない。 .SH 関連項目 \fBgetdents\fP(2), \fBreaddir\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/readlink.2 b/manual/LDP_man-pages/draft/man2/readlink.2 deleted file mode 100644 index afac12d3..00000000 --- a/manual/LDP_man-pages/draft/man2/readlink.2 +++ /dev/null @@ -1,252 +0,0 @@ -.\" Copyright (c) 1983, 1991 The Regents of the University of California. -.\" And Copyright (C) 2011 Guillem Jover -.\" And Copyright (C) 2006, 2014 Michael Kerrisk -.\" 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 -.\" -.\" @(#)readlink.2 6.8 (Berkeley) 3/10/91 -.\" -.\" Modified Sat Jul 24 00:10:21 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Tue Jul 9 23:55:17 1996 by aeb -.\" Modified Fri Jan 24 00:26:00 1997 by aeb -.\" 2011-09-20, Guillem Jover : -.\" Added text on dynamically allocating buffer + example program -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-12-12, HANATAKA Shinya -.\" Updated 2005-02-10, Yuichi SATO -.\" Updated 2006-07-19, Akihiro MOTOKI , LDP v2.36 -.\" Updated 2008-08-06, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2012-05-08, Akihiro MOTOKI -.\" -.TH READLINK 2 2014\-10\-15 Linux "Linux Programmer's Manual" -.SH 名前 -readlink, readlinkat \- シンボリックリンクの値を読む -.SH 書式 -.nf -\fB#include \fP -.sp -\fBssize_t readlink(const char *\fP\fIpathname\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbufsiz\fP\fB);\fP -.sp -\fB#include \fP/* AT_* 定数の定義 */ -\fB#include \fP -.sp -\fBssize_t readlinkat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB,\fP -\fB char *\fP\fIbuf\fP\fB, size_t \fP\fIbufsiz\fP\fB);\fP -.sp -.fi -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBreadlink\fP(): -.RS 4 -_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _POSIX_C_SOURCE\ >=\ 200112L -.RE -.sp -\fBreadlinkat\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_ATFILE_SOURCE -.RE -.ad b -.PD -.SH 説明 -\fBreadlink\fP() は \fIpathname\fP で与えられたシンボリックリンクの内容を \fIbuf\fP バッファーへ格納する、 \fIbuf\fP -のサイズは \fIbufsiz\fP である。 \fBreadlink\fP() はヌルバイトを \fIbuf\fP に追加しない。 -その内容全てを格納するのにバッファーが小さ過ぎる場合は、 (\fIbufsiz\fP バイトの長さに) 内容を切り詰める。 -.SS readlinkat() -\fBreadlinkat\fP() システムコールは \fBreadlink\fP() と全く同様に動作するが、以下で説明する点が異なる。 - -\fIpathname\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fIdirfd\fP -が参照するディレクトリに対する相対パスと解釈される (\fBreadlink\fP() -に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。 - -\fIpathname\fP で指定されたパス名が相対パスで、 \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBreadlink\fP() -と同様に) \fIpathname\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 - -\fIpathname\fP で指定されたパス名が絶対パスの場合、 \fIdirfd\fP は無視される。 - -.\" commit 65cfc6722361570bfe255698d9cd4dccaf47570d -Linux 2.6.39 以降では、 \fIpathname\fP に空文字列を指定できる。 その場合、呼び出しは \fIdirfd\fP -が参照するシンボリックリンクに対して行われる (\fIdirfd\fP はフラグ \fBO_PATH\fP と \fBO_NOFOLLOW\fP を指定した -\fBopen\fP(2) を使って取得すべきである)。 -.PP -\fBreadlinkat\fP() の必要性についての説明については \fBopenat\fP(2) を参照。 -.SH 返り値 -成功すると、これらのシステムコールは \fIbuf\fP に格納されたバイト数を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP -にエラーを示す値を設定する。 -.SH エラー -.TP -\fBEACCES\fP -パスのディレクトリ部分に検索許可が与えられていない (\fBpath_resolution\fP(7) も参照すること)。 -.TP -\fBEFAULT\fP -\fIbuf\fP がプロセスに割り当てられたアドレス空間の外を指している。 -.TP -\fBEINVAL\fP -.\" At the glibc level, bufsiz is unsigned, so this error can only occur -.\" if bufsiz==0. However, the in the kernel syscall, bufsiz is signed, -.\" and this error can also occur if bufsiz < 0. -.\" See: http://thread.gmane.org/gmane.linux.man/380 -.\" Subject: [patch 0/3] [RFC] kernel/glibc mismatch of "readlink" syscall? -\fIbufsiz\fP が正でない。 -.TP -\fBEINVAL\fP -指定したファイルがシンボリックリンクでない。 -.TP -\fBEIO\fP -ファイルシステムの読み込み中に I/O エラーが起こった。 -.TP -\fBELOOP\fP -パス名にシンボリックリンクが多すぎる。 -.TP -\fBENAMETOOLONG\fP -パス名かパス名の一部分が長過ぎる。 -.TP -\fBENOENT\fP -その名前のファイルが存在しない。 -.TP -\fBENOMEM\fP -十分なカーネルメモリーがない。 -.TP -\fBENOTDIR\fP -パスのディレクトリ部分がディレクトリでない。 -.PP -\fBreadlinkat\fP() では以下のエラーも発生する。 -.TP -\fBEBADF\fP -\fIdirfd\fP が有効なファイルディスクリプターではない。 -.TP -\fBENOTDIR\fP -\fIpathname\fP が相対パスで、 \fIdirfd\fP がディレクトリ以外のファイルを参照しているファイルディスクリプターである。 -.SH バージョン -\fBreadlinkat\fP() はカーネル 2.6.16 で Linux に追加された。 ライブラリによるサポートはバージョン 2.4 で glibc -に追加された。 -.SH 準拠 -4.4BSD (\fBreadlink\fP() は 4.2BSD で初めて登場した), POSIX.1\-2001, POSIX.1\-2008. - -\fBreadlinkat\fP(): POSIX.1\-2008. -.SH 注意 -バージョン 2.4 以前の glibc (バージョン 2.4 を含む) では、 \fBreadlink\fP() の返り値の型は \fIint\fP -で宣言されていた。現在では、返り値の型は \fIssize_t\fP である (返り値 \fIssize_t\fP は POSIX.1\-2001 で (新たに) -必須となった)。 - -静的な大きさのバッファーを使うと、 シンボリックリンクの内容を格納するのに十分な領域がない場合がある。 バッファーに必要なサイズは、 -そのシンボリックリンクに対して \fBlstat\fP(2) の呼び出しで返される \fIstat.st_size\fP の値から取得できる。 ただし、 -\fBreadlink\fP() や \fBreadlinkat\fP() が書き込んだバイト数をチェックして、 -シンボリックリンクのサイズが二つの呼び出しの間で増えていないことを確認すべきである。 \fBreadlink\fP() や \fBreadlinkat\fP() -用のバッファーを動的に割り当てる方法でも、 バッファーサイズとして \fIPATH_MAX\fP を使用する場合に共通する移植性の問題を解決することができる。 -なぜなら、POSIX では、 システムがそのような上限値を定義していない場合には、 \fIPATH_MAX\fP -が定義されることが保証されていないからである。 -.SS "glibc での注意" -\fBreadlinkat\fP() が利用できない古いカーネルでは、 glibc ラッパー関数は \fBreadlink\fP() -を使用するモードにフォールバックする。 \fIpathname\fP が相対パスの場合、 glibc は \fIdirfd\fP 引き数に対応する -\fI/proc/self/fd\fP のシンボリックリンクに基づいてパス名を構成する。 -.SH 例 -以下のプログラムは、 \fBreadlink\fP() が必要とするバッファーを、 -\fBlstat\fP() が提供する情報に基づいて動的に割り当てる。 -また、両方の呼び出し間で競合条件がないことを保証している。 -.nf - -#include -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - struct stat sb; - char *linkname; - ssize_t r; - - if (argc != 2) { - fprintf(stderr, "Usage: %s \en", argv[0]); - exit(EXIT_FAILURE); - } - - if (lstat(argv[1], &sb) == \-1) { - perror("lstat"); - exit(EXIT_FAILURE); - } - - linkname = malloc(sb.st_size + 1); - if (linkname == NULL) { - fprintf(stderr, "insufficient memory\en"); - exit(EXIT_FAILURE); - } - - r = readlink(argv[1], linkname, sb.st_size + 1); - - if (r == \-1) { - perror("readlink"); - exit(EXIT_FAILURE); - } - - if (r > sb.st_size) { - fprintf(stderr, "symlink increased in size " - "between lstat() and readlink()\en"); - exit(EXIT_FAILURE); - } - - linkname[r] = \(aq\e0\(aq; - - printf("\(aq%s\(aq points to \(aq%s\(aq\en", argv[1], linkname); - - free(linkname); - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBreadlink\fP(1), \fBlstat\fP(2), \fBstat\fP(2), \fBsymlink\fP(2), \fBrealpath\fP(3), -\fBpath_resolution\fP(7), \fBsymlink\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/readv.2 b/manual/LDP_man-pages/draft/man2/readv.2 deleted file mode 100644 index e9c50d7c..00000000 --- a/manual/LDP_man-pages/draft/man2/readv.2 +++ /dev/null @@ -1,205 +0,0 @@ -.\" Copyright (C) 2007, 2010 Michael Kerrisk -.\" and Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" -.\" %%%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 18:34:44 1993 by Rik Faith (faith@cs.unc.edu) -.\" Merged readv.[23], 2002-10-17, aeb -.\" 2007-04-30 mtk, A fairly major rewrite to fix errors and -.\" add more details. -.\" 2010-11-16, mtk, Added documentation of preadv() and pwritev() -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997-1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-23, HANATAKA Shinya -.\" Updated 1999-04-03, HANATAKA Shinya -.\" Updated 2003-01-14, Akihiro MOTOKI -.\" Updated 2005-10-07, Akihiro MOTOKI -.\" Updated 2007-06-01, Akihiro MOTOKI, LDP v2.50 -.\" Updated 2012-05-08, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH READV 2 2015\-01\-22 Linux "Linux Programmer's Manual" -.SH 名前 -readv, writev, preadv, pwritev \- 複数のバッファーへの読み書きを行なう -.SH 書式 -.nf -\fB#include \fP -.sp -\fBssize_t readv(int \fP\fIfd\fP\fB, const struct iovec *\fP\fIiov\fP\fB, int \fP\fIiovcnt\fP\fB);\fP -.sp -\fBssize_t writev(int \fP\fIfd\fP\fB, const struct iovec *\fP\fIiov\fP\fB, int \fP\fIiovcnt\fP\fB);\fP -.sp -\fBssize_t preadv(int \fP\fIfd\fP\fB, const struct iovec *\fP\fIiov\fP\fB, int \fP\fIiovcnt\fP\fB,\fP -\fB off_t \fP\fIoffset\fP\fB);\fP -.sp -\fBssize_t pwritev(int \fP\fIfd\fP\fB, const struct iovec *\fP\fIiov\fP\fB, int \fP\fIiovcnt\fP\fB,\fP -\fB off_t \fP\fIoffset\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBpreadv\fP(), \fBpwritev\fP(): _BSD_SOURCE -.SH 説明 -\fBreadv\fP() システムコールは、ファイルディスクリプター \fIfd\fP に関連付けられた -ファイルから、 \fIiovcnt\fP 個のバッファー分のデータを読み込み、 \fIiov\fP で指定 -されたバッファーに格納する ("scatter input";「ばらまき入力」)。 -.PP -\fBwritev\fP() システムコールは、 \fIiov\fP で指定されたバッファーから最大 \fIiovcnt\fP -個のバッファー分のデータを取り出し、 ファイルディスクリプター \fIfd\fP に関連付けら -れたファイルに書き込む ("gather output";「かき集め出力」)。 -.PP -ポインター \fIiov\fP は \fIiovec\fP 構造体の配列へのポインターである。 \fIiovec\fP 構造体は -\fI\fP で以下のように定義されている: -.PP -.br -.in +4n -.nf -struct iovec { - void *iov_base; /* Starting address */ - size_t iov_len; /* Number of bytes to transfer */ -}; -.fi -.in -.PP -\fBreadv\fP() システムコールは、複数のバッファーにデータを読み込む点を除いて -\fBread\fP(2) と全く同様の動作を行う。 -.PP -\fBwritev\fP() システムコールは、複数のバッファーのデータを書き出す点以外は -\fBwrite\fP(2) と全く同様の動作を行う。 -.PP -バッファーは配列の順序で処理される。これは、 \fBreadv\fP() が \fIiov\fP[0] が完全に一杯になるまでデータを詰めてから、 -\fIiov\fP[1] などに進むことを意味する (データが十分ない場合は、 \fIiov\fP が指すバッファーのいずれも一杯にならない)。 同様に、 -\fBwritev\fP() は \fIiov\fP[0] の内容を全部書き出してから \fIiov\fP[1] などに進む。 -.PP -\fBreadv\fP() と \fBwritev\fP() によるデータ転送は atomic に行われる。つまり、 \fBwritev\fP() -によるデータ書き込みは一つのブロックとして行われ、他のプロセスの write による書き込みと混ざり合うことはない (例外に関しては -\fBpipe\fP(7) を参照のこと)。同様に、 \fBreadv\fP() はファイルから連続するデータブロックが読み出すことが保証され、 -同じファイル記述 (file description; \fBopen\fP(2) 参照) を参照するファイルディスクリプターを持つ他のスレッドやプロセスが -実行した read 操作の影響を受けることはない。 -.SS "preadv() と pwritev()" -\fBpreadv\fP() システムコールは \fBreadv\fP() と \fBpreadv\fP(2) の機能を -組み合わせたものである。 -\fBreadv\fP() と同じ処理を実行するが、 -4 番目の引き数 \fIoffset\fP が追加されており、 -この引き数は入力操作を行うファイルオフセットを指定する。 - -\fBpwritev\fP() システムコールは \fBwritev\fP() と \fBpwrite\fP(2) の機能を -組み合わせたものである。 -\fBwritev\fP() と同じ処理を実行するが、 -4 番目の引き数 \fIoffset\fP が追加されており、 -この引き数は出力操作を行うファイルオフセットを指定する。 - -これらのシステムコールで、ファイルオフセットは変更されない。 -\fIfd\fP が参照するファイルは seek 可能でなければならない。 -.SH 返り値 -成功した場合、 \fBreadv\fP() と \fBpreadv\fP は読み込んだバイト数を返し、 -\fBwritev\fP() と \fBpwritev\fP()は書き込んだバイト数を返す。 -エラーの場合 \-1 を返し、\fIerrno\fP を適切に設定する。 -.SH エラー -\fBread\fP(2) や \fBwrite\fP(2) と同じエラーが定義されている。 -さらに、 \fBpreadv\fP() と \fBpwritev\fP() は \fBlseek\fP(2) と同じ理由でも失敗する。 -また、追加で以下のエラーが定義されている: -.TP -\fBEINVAL\fP -\fIiov_len\fP の合計が \fIssize_t\fP の範囲をオーバーフローした。 -.TP -\fBEINVAL\fP -ベクタ数 \fIiovcnt\fP が 0 より小さいか許可された最大値よりも大きかった。 -.SH バージョン -\fBpreadv\fP() と \fBpwritev\fP() は Linux 2.6.30 で初めて登場した。 -ライブラリによるサポートは glibc 2.10 で追加された。 -.SH 準拠 -.\" Linux libc5 used \fIsize_t\fP as the type of the \fIiovcnt\fP argument, -.\" and \fIint\fP as the return type. -.\" The readv/writev system calls were buggy before Linux 1.3.40. -.\" (Says release.libc.) -\fBreadv\fP(), \fBwritev\fP(): 4.4BSD (これらのシステムコールは 4.2BSD で初めて登場した), -POSIX.1\-2001. - -\fBpreadv\fP(), \fBpwritev\fP(): 非標準だが、最近の BSD にも存在する。 -.SH 注意 -POSIX.1\-2001 では、 \fIiov\fP で渡すことができる要素数に上限を設ける実装が認められている。 実装はこの上限値を広告することができ、 -\fI\fP の \fBIOV_MAX\fP を定義することや、 実行時に \fIsysconf(_SC_IOV_MAX)\fP -の返り値経由で知ることができる。 最近の Linux では、 この上限値は 1024 である。 Linux 2.0 の頃は、 この値は 16 であった。 - - -.\" -.\" -.SS "C ライブラリとカーネル ABI の違い" -素のシステムコール \fBpreadv\fP() と \fBpwritev\fP() のシグネチャーは、 「書式」に書かれている対応する GNU C -ライブラリのラッパー関数のものとは少し異なる。 最後の引き数 \fIoffset\fP はラッパー関数によりシステムコールの 2 つの引き数に展開される。 - -\fB unsigned long \fP\fIpos_l\fP\fB, unsigned long \fP\fIpos\fP - -これらの引き数は、それぞれ、 \fIoffset\fP の下位 32 ビットと上位 32 ビットである。 -.SS "以前の C ライブラリとカーネル ABI の違い" -古いバージョンの Linux では \fBIOV_MAX\fP が非常に小さかったという事実に対処するため、 glibc の \fBreadv\fP() と -\fBwritev\fP() のラッパー関数は、 その関数の内部で呼ばれるカーネルシステムコールがこの上限を超過して失敗したことを検出すると、 -追加の動作をしていた。 \fBreadv\fP() の場合、 ラッパー関数は \fIiov\fP -で指定された全ての要素を格納できる大きさの一時バッファーを割り当て、 \fBread\fP(2) を呼び出す際にそのバッファーを渡し、 -そのバッファーのデータを \fIiov\fP の各要素の \fIiov_base\fP フィールドが指定する場所にコピーしてから、 そのバッファーを解放していた。 -\fBwritev\fP() のラッパー関数も、 同じように一時バッファーを使って \fBwrite\fP(2) を呼び出していた。 - -glibc ラッパー関数でのこの追加の動作は Linux 2.2 以降では必要なくなった。 しかし、 glibc はバージョン 2.10 -まではこの動作を続けていた。 glibc 2.9 以降では、 システムがバージョン 2.6.18 より前の Linux カーネル (2.6.18 -は勝手に選択したカーネルバージョンである) を実行しているとライブラリが検出した場合にのみ、 ラッパー関数はこの動作を行う。 glibc 2.20 -以降では、 (Linux カーネルのバージョン 2.6.32 以降が必須条件となり) glibc -のラッパー関数は常にシステムコールを直接呼び出すようになっている。 -.SH バグ -ファイルディスクリプターに対する操作を行う \fBreadv\fP() や \fBwritev\fP() と、 -標準入出力ライブラリの関数をごちゃまぜにして呼ぶのはお薦めしない。 -どんな結果になるかは定義されておらず、おそらく期待する結果は -得られないだろう。 -.SH 例 -以下のサンプルコードは \fBwritev\fP() の使用方法を示すものである。 - -.in +4n -.nf -char *str0 = "hello "; -char *str1 = "world\en"; -struct iovec iov[2]; -ssize_t nwritten; - -iov[0].iov_base = str0; -iov[0].iov_len = strlen(str0); -iov[1].iov_base = str1; -iov[1].iov_len = strlen(str1); - -nwritten = writev(STDOUT_FILENO, iov, 2); -.fi -.in -.SH 関連項目 -\fBpread\fP(2), \fBread\fP(2), \fBwrite\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/reboot.2 b/manual/LDP_man-pages/draft/man2/reboot.2 deleted file mode 100644 index bbec8870..00000000 --- a/manual/LDP_man-pages/draft/man2/reboot.2 +++ /dev/null @@ -1,150 +0,0 @@ -.\" Copyright (c) 1998 Andries Brouwer (aeb@cwi.nl), 24 September 1998 -.\" -.\" %%%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, 27 May 2004, Michael Kerrisk -.\" Added notes on capability requirements -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Ueyama Rui -.\" all rights reserved. -.\" Translated Mon Sep 29 23:21:04 JST 1997 -.\" by Ueyama Rui -.\" Updated & Modified Mon Mar 1 1999 -.\" by NAKANO Takeo -.\" Updated Sat Oct 11 JST 2003 by Kentaro Shirakata -.\" -.TH REBOOT 2 2015\-02\-01 Linux "Linux Programmer's Manual" -.SH 名前 -reboot \- 再起動する。または Ctrl\-Alt\-Delを有効・無効にする -.SH 書式 -/* libc4 と libc5 でのライブラリコールとシステムコールは同じである。 - またカーネル 2.1.30 以降では、定数としてシンボリックな名前 - LINUX_REBOOT_* が定義されており、呼び出しの第 4 引数として - 指定することができる。*/ -.sp -\fB#include \fP -.br -\fB#include \fP -.sp -\fBint reboot(int \fP\fImagic\fP\fB, int \fP\fImagic2\fP\fB, int \fP\fIcmd\fP\fB, void -*\fP\fIarg\fP\fB);\fP -.sp -/* glibc では、関連する定数に RB_* というシンボリックな名前が付け - られている。ライブラリ関数の引数は 1 つで、3 引数のシステムコールの - ラッパ (wrapper) となっている。 */ -.sp -\fB#include \fP -.br -\fB#include \fP -.sp -\fBint reboot(int \fP\fIcmd\fP\fB);\fP -.SH 説明 -\fBreboot\fP() はシステムを再起動する。または再起動のキーストロークである Ctrl\-Alt\-Delete (CAD) を有効/無効にする。 -このキーストロークは \fBloadkeys\fP(1) によって変更できる。 -.PP -\fImagic\fP が \fBLINUX_REBOOT_MAGIC1\fP (値は 0xfee1dead) であり、かつ \fImagic2\fP が -\fBLINUX_REBOOT_MAGIC2\fP (672274793) でなければこのシステムコールは失敗し、 \fBEINVAL\fP が返される。 しかし -2.1.17 からは \fBLINUX_REBOOT_MAGIC2A\fP (85072278) が、 また 2.1.97 からは -\fBLINUX_REBOOT_MAGIC2B\fP (369367448) が、 2.5.71 からは \fBLINUX_REBOOT_MAGIC2C\fP -(537993216) が \fImagic2\fP の値として指定できるようになった (これらの定数の 16 進での 表記にはちょっとした意味がある)。 - -\fIcmd\fP 引数には以下の値を指定できる。 -.TP -\fBLINUX_REBOOT_CMD_CAD_OFF\fP -(\fBRB_DISABLE_CAD\fP, 0) CAD を無効にする。 これ以降に CAD キーストロークが入力されると、 \fBSIGINT\fP -シグナルが init (プロセス 1) に送られる。 このシグナルを受けると、おそらく init プロセスは 前もって定められた動作を行うことになる -(多分すべてのプロセスの kill, sync, 再起動)。 -.TP -\fBLINUX_REBOOT_CMD_CAD_ON\fP -(\fBRB_ENABLE_CAD\fP, 0x89abcdef) CAD を有効にする。 これ以降に CAD キーストロークが入力されると、 ただちに -\fBLINUX_REBOOT_CMD_RESTART\fP に関連付けられた動作が行われるようになる。 -.TP -\fBLINUX_REBOOT_CMD_HALT\fP -(\fBRB_HALT_SYSTEM\fP, 0xcdef0123; Linux 1.1.76 以降) "System halted." -というメッセージが表示され、システムは停止 (halt) する。 制御は ROM モニタに移る (ROM モニタがある場合)。 先に -\fBsync\fP(2) を行なわないと、データが失われる。 -.TP -\fBLINUX_REBOOT_CMD_KEXEC\fP -(\fBRB_KEXEC\fP, 0x45584543, Linux 2.6.13 以降) \fBkexec_load\fP(2) -を使って事前にロードされたカーネルを実行する。このオプションが利用できるのは、カーネルのコンフィグで \fBCONFIG_KEXEC\fP -が有効になっている場合にのみである。 -.TP -\fBLINUX_REBOOT_CMD_POWER_OFF\fP -(\fBRB_POWER_OFF\fP, 0x4321fedc; Linux 2.1.30 以降) "Power down" -というメッセージが表示され、システムは停止 (stop) する。 可能な場合はシステムの電源が落とされる。 先に \fBsync\fP(2) -を行なわないと、データが失われる。 -.TP -\fBLINUX_REBOOT_CMD_RESTART\fP -(\fBRB_AUTOBOOT\fP, 0x1234567) "Restarting system." というメッセージが表示され、 -デフォルトの再起動処理がただちに実行される。 先に \fBsync\fP(2) を行なわないと、データが失われる。 -.TP -\fBLINUX_REBOOT_CMD_RESTART2\fP -(0xa1b2c3d4; Linux 2.1.30 以降) "Restarting system with command \(aq%s\(aq" -というメッセージが表示され、 ただちに ( \fIarg\fP に指定されたコマンドを用いて) 再起動 (restart) が行われる。 先に -\fBsync\fP(2) を行なわないと、データが失われる。 -.TP -\fBLINUX_REBOOT_CMD_SW_SUSPEND\fP -(\fBRB_SW_SUSPEND\fP, 0xd000fce1; Linux 2.5.18 以降). システムがディスクにサスペンド (ハイバネーション) -される。このオプションはカーネルで \fBCONFIG_HIBERNATION\fP が有効になっている場合にのみ利用できる。 -.LP -スーパーユーザーだけが \fBreboot\fP() を呼び出すことができる。 -.LP -上述のアクションの実際の効果はアーキテクチャーに依存する。 i386 アーキテクチャーでは、現在のところ (2.1.122) 付加引数は -何も行わないが、再起動のタイプをカーネルのコマンドライン引数 ("reboot=...") によって定めることができる。 これには warm または -cold と、 hard または BIOS 経由の再起動を 設定できる。 -.SS "PID 名前空間内での動作" -.\" commit cf3f89214ef6a33fad60856bc5ffd7bb2fc4709b -.\" see also commit 923c7538236564c46ee80c253a416705321f13e3 -Linux 3.4 以降では、 \fBreboot\fP() が最初の PID 名前空間以外の PID 名前空間 (\fBpid_namespaces\fP(7) -参照) から呼び出された場合、 呼び出しの効果として、 名前空間の "init" プロセスへシグナルが送信される。 -\fBLINUX_REBOOT_CMD_RESTART\fP と\fBLINUX_REBOOT_CMD_RESTART2\fP の場合、 \fBSIGHUP\fP -シグナルが送信される。 \fBLINUX_REBOOT_CMD_POWER_OFF\fP と \fBLINUX_REBOOT_CMD_HALT\fP の場合、 -\fBSIGINT\fP シグナルが送信される。 -.SH 返り値 -\fIcmd\fP がシステムの停止や再起動を表す値の場合、呼び出しが成功すると \fBreboot\fP() は返らない。 \fIcmd\fP -が他の値の場合には、成功すると 0 が返る。 \fIcmd\fP の値に関わらず、失敗の場合には \-1 が返り、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEFAULT\fP -\fBLINUX_REBOOT_CMD_RESTART2\fP の時にユーザースペースのデータの取得に問題があった。 -.TP -\fBEINVAL\fP -magic の数字か \fIcmd\fP が間違っている。 -.TP -\fBEPERM\fP -呼び出し元プロセスに \fBreboot\fP() を呼び出すのに十分な権限がなかった。 \fBCAP_SYS_BOOT\fP ケーパビリティが必要である。 -.SH 準拠 -\fBreboot\fP() は Linux に特有であり、移植を考慮したプログラムでは用いるべきではない。 -.SH 関連項目 -\fBkexec_load\fP(2), \fBsync\fP(2), \fBbootparam\fP(7), \fBcapabilities\fP(7), -\fBctrlaltdel\fP(8), \fBhalt\fP(8), \fBreboot\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/recv.2 b/manual/LDP_man-pages/draft/man2/recv.2 deleted file mode 100644 index 047b285b..00000000 --- a/manual/LDP_man-pages/draft/man2/recv.2 +++ /dev/null @@ -1,347 +0,0 @@ -.\" Copyright (c) 1983, 1990, 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: recv.2,v 1.3 1999/05/13 11:33:38 freitag Exp $ -.\" -.\" Modified Sat Jul 24 00:22:20 1993 by Rik Faith -.\" Modified Tue Oct 22 17:45:19 1996 by Eric S. Raymond -.\" Modified 1998,1999 by Andi Kleen -.\" 2001-06-19 corrected SO_EE_OFFENDER, bug report by James Hawtin -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Akira Yoshiyama -.\" all rights reserved. -.\" Translated 1996-07-18, Akira Yoshiyama -.\" Modified 1997-12-14, HANATAKA Shinya -.\" Modified 1999-08-14, HANATAKA Shinya -.\" Updated & Modified 2000-10-12, HAYAKAWA Hitoshi -.\" and NAKANO Takeo -.\" Updated & Modified 2001-02-09, NAKANO Takeo -.\" Updated 2003-10-11, Kentaro Shirakata -.\" Updated 2005-03-14, Akihiro MOTOKI -.\" Updated 2006-04-15, Akihiro MOTOKI, Catch up to LDP v2.29 -.\" Updated 2007-10-12, Akihiro MOTOKI, LDP v2.66 -.\" Updated 2008-08-06, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2009-04-13, Akihiro MOTOKI, LDP v3.20 -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH RECV 2 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -recv, recvfrom, recvmsg \- ソケットからメッセージを受け取る -.SH 書式 -.\" .B #include -.\" .br -.nf -\fB#include \fP -.br -\fB#include \fP -.sp -\fBssize_t recv(int \fP\fIsockfd\fP\fB, void *\fP\fIbuf\fP\fB, size_t \fP\fIlen\fP\fB, int \fP\fIflags\fP\fB);\fP -.sp -\fBssize_t recvfrom(int \fP\fIsockfd\fP\fB, void *\fP\fIbuf\fP\fB, size_t \fP\fIlen\fP\fB, int \fP\fIflags\fP\fB,\fP -\fB struct sockaddr *\fP\fIsrc_addr\fP\fB, socklen_t *\fP\fIaddrlen\fP\fB);\fP -.sp -\fBssize_t recvmsg(int \fP\fIsockfd\fP\fB, struct msghdr *\fP\fImsg\fP\fB, int \fP\fIflags\fP\fB);\fP -.fi -.SH 説明 -\fBrecv\fP(), \fBrecvfrom\fP(), \fBrecvmsg\fP() コールは、 ソケットからメッセージを受け取るのに使用される。 -これらはコネクションレス型のソケットにも接続指向 (connection\-oriened) 型のソケットにも使用できる。 このページでは、まずこれら 3 -つのシステムコールすべてに共通の機能について説明し、 システムコール間の違いについて説明する。 -.PP -これらの三つのシステムコールはいずれも、成功した場合にはメッセージの長さを返す。 メッセージが長過ぎて指定されたバッファーに入り切らなかった場合には、 -メッセージを受信したソケットの種類によっては余分のバイトが捨てられる かもしれない。 -.PP -ソケットに受け取るメッセージが存在しなかった場合、 受信用のコールはメッセージが到着するまで待つ。 ただし、ソケットが非停止 (nonblocking) -に設定されていた場合 (\fBfcntl\fP(2) を参照) は \-1 を返し、外部変数 \fIerrno\fP に \fBEAGAIN\fP か -\fBEWOULDBLOCK\fP を設定する。 これらの受信用のコールは、受信したデータのサイズが要求したサイズに -達するまで待つのではなく、何らかのデータを受信すると復帰する (受信されるデータの最大サイズは要求したサイズである)。 -.PP -アプリケーションは \fBselect\fP(2), \fBpoll\fP(2), \fBepoll\fP(7) -を使って、ソケットにさらにデータが到着しているかを判定することができる。 -.SS フラグ引き数 -\fIflags\fP 引き数には、以下の値を 1つ以上、ビット単位の論理和 を取ったものを指定する: -.TP -\fBMSG_CMSG_CLOEXEC\fP (\fBrecvmsg\fP() のみ; Linux 2.6.23) -(\fBunix\fP(7) で説明されている) \fBSCM_RIGHTS\fP 操作を使って UNIX ドメインのファイルディスクリプター経由で受信した -ファイルディスクリプターについて close\-on\-exec フラグをセットする。 このフラグは、 \fBopen\fP(2) の \fBO_CLOEXEC\fP -フラグと同じ理由で有用である。 -.TP -\fBMSG_DONTWAIT\fP (Linux 2.2 以降) -非停止 (nonblocking) 操作を有効にする。 操作が停止するような場合にエラー \fBEAGAIN\fP か \fBEWOULDBLOCK\fP -で呼び出しが失敗する (\fBfcntl\fP(2) の \fBF_SETFL\fP で \fBO_NONBLOCK\fP -フラグを指定することによっても有効にできる)。 -.TP -\fBMSG_ERRQUEUE\fP (Linux 2.2 以降) -このフラグを指定すると、 キューに入れられたエラーをソケットのエラーキューから取りだせるようになる。 このエラーは補助メッセージに組み込まれて渡され、 -この補助メッセージの種別はプロトコルに依存する (IPv4 の場合は \fBIP_RECVERR\fP)。 -ユーザーは十分なサイズのバッファーを用意しなければならない。 補助メッセージに関するより詳細な情報は \fBcmsg\fP(3) および \fBip\fP(7) -を参照のこと。 エラーの原因となったオリジナルパケットのペイロードは、 \fImsg_iovec\fP 経由で通常のデータとして渡される。 -エラーを起こしたデータグラムのオリジナルの宛先アドレスは、 \fImsg_name\fP 経由で参照できる。 -.IP -ローカルなエラーの場合はアドレスは渡されない -(これは \fIcmsghdr\fP の \fIcmsg_len\fP メンバーでチェックできる)。 -受信エラーの場合は \fBMSG_ERRQUIE\fP が \fImsghdr\fP にセットされる。 -エラーが渡された後には、キューに入っている次のエラーに基いて、 -処理待ちのソケットエラーが再生成され、次のソケット操作の際に渡される。 - -このエラーは \fIsock_extended_err\fP 構造体で提供される: -.in +4n -.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; /* padding */ - 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 -にはエラーが発生した場所のオリジンコード (origin code) が入っている。 他のフィールドはプロトコル依存である。 -\fBSO_EE_OFFENDER\fP マクロは、この補助的なメッセージを引き数に取って、 -エラーの発生したネットワークオブジェクトのアドレスへのポインターを返す。 アドレスが不明の場合には、 \fIsockaddr\fP の -\fIsa_family\fP メンバーが \fBAF_UNSPEC\fP になっている。 \fIsockaddr\fP の他のフィールドは不定である。 -エラーの発生したパケットのペイロードは通常のデータとして渡される。 -.IP -ローカルなエラーの場合はアドレスは渡されない -(これは \fIcmsghdr\fP の \fIcmsg_len\fP メンバーでチェックできる)。 -受信エラーの場合は \fBMSG_ERRQUIE\fP が \fImsghdr\fP にセットされる。 -エラーが渡された後には、キューに入っている次のエラーに基いて、 -処理待ちのソケットエラーが再生成され、次のソケット操作の際に渡される。 -.TP -\fBMSG_OOB\fP -このフラグは、通常のデータストリームでは受信できない 帯域外 (out\-of\-band) データの受信を要求する。 プロトコルによっては、 -通常のデータキューの先頭に速達データを置くものがあるが、 そのようなプロトコルではこのフラグは使用できない。 -.TP -\fBMSG_PEEK\fP -このフラグを指定すると、 受信キューの最初のデータを返すとき、キューからデータを削除しない。 -したがって、この後でもう一度受信コールを呼び出すと、同じデータが返ることになる。 -.TP -\fBMSG_TRUNC\fP (Linux 2.2 以降) -raw ソケット (\fBAF_PACKET\fP)、 Internet datagram ソケット (Linux 2.4.27/2.6.8 以降)、 -netlink (Linux 2.6.22 以降) ソケット、 UNIX datagram ソケット (Linux 3.4 以降) -の場合、パケットやデータグラムの長さが渡したバッファーよりも長かった場合にも、 パケットやデータグラムの実際の長さを返す。 - -Internet ストリームソケットでの利用については \fBtcp\fP(7) を参照。 -.TP -\fBMSG_WAITALL\fP (Linux 2.2 以降) -.\" -このフラグは、要求した量いっぱいのデータが到着するまで、 操作を停止 (block) するよう要求する。 但し、シグナルを受信したり、エラーや切断 -(disconnect) が発生したり、 次に受信されるデータが異なる型だったりした場合には、 要求した量よりデータが少なくても返ることがある。 -.SS recvfrom() -\fBrecvfrom\fP() は受信したメッセージをバッファー \fIbuf\fP に格納する。 呼び出し元はバッファーサイズを \fIlen\fP -で指定しなければならない。 - -.\" (Note: for datagram sockets in both the UNIX and Internet domains, -.\" .I src_addr -.\" is filled in. -.\" .I src_addr -.\" is also filled in for stream sockets in the UNIX domain, but is not -.\" filled in for stream sockets in the Internet domain.) -.\" [The above notes on AF_UNIX and AF_INET sockets apply as at -.\" Kernel 2.4.18. (MTK, 22 Jul 02)] -\fIsrc_addr\fP が NULL 以外で、下層のプロトコルからメッセージの送信元アドレスが分かる場合、 この送信元アドレスが \fIsrc_addr\fP -が指すバッファーに格納される。 この場合、 \fIaddrlen\fP は入出力両用の引き数となる。 呼び出し前に、呼び出し元は \fIsrc_addr\fP -に割り当てたバッファーの大きさで初期化しておくべきである。 返ってくる時には、 \fIaddrlen\fP -は送信元アドレスの実際の大きさに変更される。渡されたバッファーが小さ過ぎる場合には、返されるアドレスの末尾は 切り詰められる。この場合には、 -\fIaddrlen\fP では、呼び出し時に渡された値よりも大きな値が返される。 - -.\" -呼び出し元が送信元アドレスを必要としない場合は、 \fIsrc_addr\fP と \fIaddrlen\fP には NULL を指定すべきである。 -.SS recv() -\fBrecv\fP() コールは通常 \fI接続済みの (connected)\fP ソケットに対してのみ使用される (\fBconnect\fP(2) -参照)。次の呼び出しと等価である。 - -.\" - recvfrom(fd, buf, len, flags, NULL, 0)); -.SS recvmsg() -\fBrecvmsg\fP() コールは、直接渡す引き数の数を減らすために \fImsghdr\fP 構造体を使用する。この構造体は -\fI\fP で以下のように定義されている: -.in +4n -.nf - -struct iovec { /* Scatter/gather array items */ - void *iov_base; /* Starting address */ - size_t iov_len; /* Number of bytes to transfer */ -}; - -struct msghdr { - void *msg_name; /* 追加のアドレス */ - socklen_t msg_namelen; /* アドレスのサイズ */ - struct iovec *msg_iov; /* scatter/gather 配列 */ - size_t msg_iovlen; /* msg_iov の要素数 */ - void *msg_control; /* 補助データ (後述) */ - size_t msg_controllen; /* 補助データバッファー長 */ - int msg_flags; /* 受信メッセージのフラグ */ -}; -.fi -.in -.PP -フィールド \fImsg_name\fP は、 ソケットが接続されていない場合に送信元アドレスを返すのに使用されるバッファーを指す。 -このバッファーは呼び出し元が確保する。 呼び出し元は呼び出し前に \fImsg_namelen\fP にこのバッファーの大きさを設定しなければならない。 -呼び出しが成功した場合、呼び出しから返って来た際には \fImsg_namelen\fP には返されるアドレスの長さが入っている。 -アプリケーションが送信元アドレスを知る必要がない場合には、 \fImsg_name\fP に NULL を指定することができる。 - -\fImsg_iov\fP と \fImsg_iovlen\fP フィールドは scatter\-gather 用の場所を指定する。 \fBreadv\fP(2) -に説明がある。 - -\fImsg_control\fP フィールドは \fImsg_controllen\fP の長さを持ち、他のプロトコル制御メッセージや -種々の補助データのためのバッファーへのポインターである。 \fBrecvmsg\fP() を呼ぶ際には、 \fImsg_controllen\fP に -\fImsg_control\fP のバッファーの長さを入れておく必要がある。 コールが成功して返った場合、制御メッセージ列の長さが入っている。 -.PP -メッセージの形式は以下の通り: -.in +4n -.nf - -struct cmsghdr { - socklen_t cmsg_len; /* data byte count, including hdr */ - int cmsg_level; /* originating protocol */ - int cmsg_type; /* protocol\-specific type */ -/* followed by - unsigned char cmsg_data[]; */ -}; -.fi -.in -.PP -補助データは、 \fBcmsg\fP(3) に定義されたマクロ経由でのみアクセスすべきである。 -.PP -例をあげると、 Linux はこの補助データのメカニズムを、 UNIX ドメインソケット上での拡張エラーや IP オプション、 -ファイルディスクリプターの受け渡しに利用している。 -.PP -\fImsghdr\fP の \fImsg_flags\fP フィールドは \fBrecvmsg\fP() -からのリターン時に設定される。ここにはいくつかのフラグが入る。 -.TP -\fBMSG_EOR\fP -これはレコードの終り (end\-of\-record) を示し、 返されたデータが完全なレコードであることを示す (一般的には -\fBSOCK_SEQPACKET\fP 型のソケットで使用される)。 -.TP -\fBMSG_TRUNC\fP -データグラムが与えられたバッファーより大きかったために、 データグラムのはみ出した部分が捨てられたことを示す。 -.TP -\fBMSG_CTRUNC\fP -補助データのためのバッファーが不足したために、 制御データの一部が捨てられたことを示す。 -.TP -\fBMSG_OOB\fP -速達データや帯域外データを受信したことを示す。 -.TP -\fBMSG_ERRQUEUE\fP -データは受信しなかったが ソケットのエラーキューから拡張エラーを受信したことを示す。 -.SH 返り値 -これらのコールは受信したバイト数を返す。 エラーの場合は \-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 - -ストリームソケットの接続相手が正しくシャットダウンを実行した場合は、 -返り値は 0 (昔ながらの "end\-of\-file" の戻り値) となる。 - -いくつかのドメインのデータグラムソケット (UNIX ドメインやインターネットドメインなど) では、長さ 0 のデータグラムが送信できる。 -このようなデータグラムを受信した場合、 返り値は 0 となる。 - -ストリームソケットに対する受信要求バイト数が 0 だった場合も、 値 0 が返される。 -.SH エラー -これらはソケット層で発生する一般的なエラーである。 他のエラーが下層のプロトコルモジュールで生成され、 返されるかもしれない。 -それらのマニュアルを参照すること。 -.TP -\fBEAGAIN\fP または \fBEWOULDBLOCK\fP -.\" Actually EAGAIN on Linux -ソケットが非停止 (nonblocking) に設定されていて 受信操作が停止するような状況になったか、 受信に時間切れ (timeout) -が設定されていて データを受信する前に時間切れになった。 POSIX.1\-2001 は、この場合にどちらのエラーを返すことも認めており、 これら 2 -つの定数が同じ値を持つことも求めていない。 したがって、移植性が必要なアプリケーションでは、両方の可能性を 確認すべきである。 -.TP -\fBEBADF\fP -引き数 \fIsockfd\fP が不正なディスクリプターである。 -.TP -\fBECONNREFUSED\fP -リモートのホストでネットワーク接続が拒否された (よくある理由としては、要求したサービスが起動されていないなどがある)。 -.TP -\fBEFAULT\fP -受信バッファーへのポインターがプロセスのアドレス空間外を指している。 -.TP -\fBEINTR\fP -データを受信する前に、シグナルが配送されて割り込まれた。 \fBsignal\fP(7) 参照。 -.TP -\fBEINVAL\fP -.\" e.g., msg_namelen < 0 for recvmsg() or addrlen < 0 for recvfrom() -不正な引き数が渡された。 -.TP -\fBENOMEM\fP -\fBrecvmsg\fP() のためのメモリーが確保できなかった。 -.TP -\fBENOTCONN\fP -ソケットに接続指向プロトコルが割り当てられており、 まだ接続されていない (\fBconnect\fP(2) と \fBaccept\fP(2) -を参照のこと)。 -.TP -\fBENOTSOCK\fP -引き数 \fIsockfd\fP がソケットを参照していない。 -.SH 準拠 -4.4BSD (これらの関数は 4.2BSD で現われた), POSIX.1\-2001。 -.LP -POSIX.1\-2001 では、 \fBMSG_OOB\fP, \fBMSG_PEEK\fP, \fBMSG_WAITALL\fP フラグだけが記載されている。 -.SH 注意 -\fIsocklen_t\fP 型は POSIX で発案された。 \fBaccept\fP(2) も参照。 - -.\" glibc bug raised 12 Mar 2006 -.\" http://sourceware.org/bugzilla/show_bug.cgi?id=2448 -.\" The problem is an underlying kernel issue: the size of the -.\" __kernel_size_t type used to type this field varies -.\" across architectures, but socklen_t is always 32 bits. -POSIX.1\-2001 では、構造体 \fImsghdr\fP のフィールド \fImsg_controllen\fP は \fIsocklen_t\fP -型であるべきだとされているが、 現在の glibc では \fIsize_t\fP 型である。 - -\fBrecvmmsg\fP(2) には、一度の呼び出しでの複数のデータグラムに使用できる Linux 固有の システムコールに関する情報が書かれている。 -.SH 例 -\fBrecvfrom\fP() の利用例が \fBgetaddrinfo\fP(3) に記載されている。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/recvmmsg.2 b/manual/LDP_man-pages/draft/man2/recvmmsg.2 index 9001adc5..f6088990 100644 --- a/manual/LDP_man-pages/draft/man2/recvmmsg.2 +++ b/manual/LDP_man-pages/draft/man2/recvmmsg.2 @@ -38,42 +38,41 @@ .\" all rights reserved. .\" Translated 2013-05-22, Akihiro MOTOKI .\" -.TH RECVMMSG 2 2014\-06\-13 Linux "Linux Programmer's Manual" +.TH RECVMMSG 2 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 recvmmsg \- 複数のメッセージをソケットから受信する .SH 書式 .nf \fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ \fB#include \fP - +.PP \fBint recvmmsg(int \fP\fIsockfd\fP\fB, struct mmsghdr *\fP\fImsgvec\fP\fB, unsigned int \fP\fIvlen\fP\fB,\fP -.br -\fB unsigned int \fP\fIflags\fP\fB, struct timespec *\fP\fItimeout\fP\fB);\fP +\fB int \fP\fIflags\fP\fB, struct timespec *\fP\fItimeout\fP\fB);\fP .fi .SH 説明 \fBrecvmmsg\fP() システムコールは \fBrecvmsg\fP(2) の拡張で、 このシステムコールを使うと一度の呼び出しでソケットから複数のメッセージを受信することができる (アプリケーションによっては性能上のメリットがある)。 他に \fBrecvmsg\fP(2) から拡張されている点としては、受信操作におけるタイムアウトのサポートがある。 - +.PP \fIsockfd\fP 引き数は、データを受信するソケットのファイルディスクリプターである。 - +.PP \fImsgvec\fP 引き数は \fImmsghdr\fP 構造体の配列である。 この配列の大きさは \fIvlen\fP で指定する。 - +.PP \fImmsghdr\fP 構造体は \fI\fP で次のように定義されている。 - +.PP .in +4n -.nf +.EX struct mmsghdr { struct msghdr msg_hdr; /* メッセージヘッダー */ unsigned int msg_len; /* このヘッダーで受信されたバイト数 */ }; -.fi +.EE .in .PP \fImsg_hdr\fP フィールドは、 \fBrecvmsg\fP(2) で説明されている \fImsghdr\fP 構造体である。 \fImsg_len\fP フィールドは、 このエントリーで返されるメッセージのバイト数で、 このヘッダーに対して \fBrecvmsg\fP(2) を呼び出した場合の返り値と同じ値が入る。 - +.PP \fIflags\fP 引き数には複数のフラグを論理和 (OR) で指定できる。 フラグは、 \fBrecvmsg\fP(2) で説明されているものに加えて、以下が使用できる。 .TP @@ -84,11 +83,11 @@ struct mmsghdr { この構造体で受信操作のタイムアウト (秒とナノ秒) を指定する (\fIただし、バグを参照のこと\fP) (待ち時間はシステムクロックの粒度に切り上げられ、カーネルのスケジューリング遅延により少しだけ長くなる可能性がある)。 \fItimeout\fPが NULL の場合、 受信操作は無期限に停止 (block) する。 - +.PP 停止 (blocking) モードの \fBrecvmmsg\fP() の呼び出しは、 \fIvlen\fP 個のメッセージを受信するか、タイムアウトが満了するまで停止する。 非停止 (nonblocking) モードの呼び出しでは、 読み出し可能なメッセージ (最大で \fIvlen\fP 個) を読み出し、 すぐに返る。 - +.PP \fBrecvmmsg\fP() が返った際には、 \fImsgvec\fP のうちデータが受信された要素には、受信したそれぞれのメッセージの情報が格納されている。 また、 \fImsg_len\fP には受信したメッセージの大きさが入り、 \fImsg_hdr\fP の各フィールドは \fBrecvmsg\fP(2) に書かれている通りに更新される。 呼び出しの返り値は、更新された \fImsgvec\fP の要素数である。 @@ -100,29 +99,43 @@ struct mmsghdr { .TP \fBEINVAL\fP \fItimeout\fP が無効である。 +.PP +See also BUGS. .SH バージョン \fBrecvmmsg\fP() システムコールは Linux 2.6.33 で追加された。 glibc でのサポートはバージョン 2.12 以降で利用可能である。 .SH 準拠 \fBrecvmmsg\fP() は Linux 固有である。 -.SH 例 +.SH バグ +.\" FIXME . https://bugzilla.kernel.org/show_bug.cgi?id=75371 +.\" http://thread.gmane.org/gmane.linux.man/5677 +\fItimeout\fP 引き数は意図した通りには動作しない。 タイムアウトは各データグラムの受信後にのみチェックされる。 そのため、 +タイムアウトが満了する前に \fIvlen\-1\fP 個のデータグラムを受信し、 その後全くデータグラムを受信しなかった場合、 +呼び出しはずっと停止し続けてしまう。 .PP +If an error occurs after at least one message has been received, the call +succeeds, and returns the number of messages received. The error code is +expected to be returned on a subsequent call to \fBrecvmmsg\fP(). In the +current implementation, however, the error code can be overwritten in the +meantime by an unrelated network event on a socket, for example an incoming +ICMP packet. +.SH EXAMPLES 以下のプログラムは、 \fBrecvmmsg\fP() を使って複数のメッセージをソケットから受信し、それらを複数のバッファーに格納する。 呼び出しは、すべてのバッファーにメッセージが格納されるか、 指定したタイムアウト時間が経過すると返る。 - +.PP 以下のコマンドは、 ランダムな数字が入った UDP データグラムを定期的に生成する。 +.PP .in +4n -.nf - -$\fB while true; do echo $RANDOM > /dev/udp/127.0.0.1/1234; \fP +.EX +$\fB while true; do echo $RANDOM > /dev/udp/127.0.0.1/1234;\fP \fBsleep 0.25; done\fP -.fi +.EE .in - +.PP 生成されたデータグラムをサンプルアプリケーションが読み出し、以下のような出力が得られる。 +.PP .in +4n -.nf - +.EX $\fB ./a.out\fP 5 messages received 1 11782 @@ -130,11 +143,11 @@ $\fB ./a.out\fP 3 304 4 13514 5 28421 -.fi +.EE .in .SS プログラムのソース \& -.nf +.EX #define _GNU_SOURCE #include #include @@ -148,8 +161,8 @@ main(void) #define VLEN 10 #define BUFSIZE 200 #define TIMEOUT 1 - int sockfd, retval, i; - struct sockaddr_in sa; + int sockfd, retval; + struct sockaddr_in addr; struct mmsghdr msgs[VLEN]; struct iovec iovecs[VLEN]; char bufs[VLEN][BUFSIZE+1]; @@ -161,16 +174,16 @@ main(void) exit(EXIT_FAILURE); } - sa.sin_family = AF_INET; - sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK); - sa.sin_port = htons(1234); - if (bind(sockfd, (struct sockaddr *) &sa, sizeof(sa)) == \-1) { + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); + addr.sin_port = htons(1234); + if (bind(sockfd, (struct sockaddr *) &addr, sizeof(addr)) == \-1) { perror("bind()"); exit(EXIT_FAILURE); } memset(msgs, 0, sizeof(msgs)); - for (i = 0; i < VLEN; i++) { + for (int i = 0; i < VLEN; i++) { iovecs[i].iov_base = bufs[i]; iovecs[i].iov_len = BUFSIZE; msgs[i].msg_hdr.msg_iov = &iovecs[i]; @@ -187,23 +200,16 @@ main(void) } printf("%d messages received\en", retval); - for (i = 0; i < retval; i++) { + for (int i = 0; i < retval; i++) { bufs[i][msgs[i].msg_len] = 0; printf("%d %s", i+1, bufs[i]); } exit(EXIT_SUCCESS); } -.fi -.SH バグ -.\" FIXME . https://bugzilla.kernel.org/show_bug.cgi?id=75371 -.\" http://thread.gmane.org/gmane.linux.man/5677 -\fItimeout\fP 引き数は意図した通りには動作しない。 タイムアウトは各データグラムの受信後にのみチェックされる。 そのため、 -タイムアウトが満了する前に \fIvlen\-1\fP 個のデータグラムを受信し、 その後全くデータグラムを受信しなかった場合、 -呼び出しはずっと停止し続けてしまう。 +.EE .SH 関連項目 \fBclock_gettime\fP(2), \fBrecvmsg\fP(2), \fBsendmmsg\fP(2), \fBsendmsg\fP(2), \fBsocket\fP(2), \fBsocket\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/remap_file_pages.2 b/manual/LDP_man-pages/draft/man2/remap_file_pages.2 index 27d53cdd..03351562 100644 --- a/manual/LDP_man-pages/draft/man2/remap_file_pages.2 +++ b/manual/LDP_man-pages/draft/man2/remap_file_pages.2 @@ -1,4 +1,4 @@ -.\" Copyright (C) 2003, Michael Kerrisk (mtk.manpages@gmail.com) +.\" Copyright (C) 2003, Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this @@ -39,29 +39,35 @@ .\" Updated & Modified Mon Oct 10 01:15:38 JST 2005 .\" by Akihiro MOTOKI .\" -.TH REMAP_FILE_PAGES 2 2014\-05\-28 Linux "Linux Programmer's Manual" +.TH REMAP_FILE_PAGES 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 remap_file_pages \- 非線形ファイルマッピングを作成する。 .SH 書式 .nf \fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ \fB#include \fP -.sp +.PP \fBint remap_file_pages(void *\fP\fIaddr\fP\fB, size_t \fP\fIsize\fP\fB, int \fP\fIprot\fP\fB,\fP \fB size_t \fP\fIpgoff\fP\fB, int \fP\fIflags\fP\fB);\fP .fi .SH 説明 .\" commit 33041a0d76d3c3e0aff28ac95a2ffdedf1282dbc .\" http://lwn.net/Articles/597632/ -\fB注意\fP: このシステムコールは (Linux 3.16 以降で) 非推奨となっており、 -やがてより低速なカーネル内でのエミュレーションに置き換えられる予定である。 -このシステムコールを使用しているアプリケーションは少ないが、こうしたアプリケーションは代替手段への移行を検討すべきである。 - +.\" commit c8d78c1823f46519473949d33f0d1d33fe21ea16 +\fBNote\fP: this system call was marked as deprecated starting with Linux +3.16. In Linux 4.0, the implementation was replaced by a slower in\-kernel +emulation. Those few applications that use this system call should consider +migrating to alternatives. This change was made because the kernel code for +this system call was complex, and it is believed to be little used or +perhaps even completely unused. While it had some use cases in database +applications on 32\-bit systems, those use cases don't exist on 64\-bit +systems. +.PP \fBremap_file_pages\fP() システムコールは非線形なマッピング、 つまりファイルのページがメモリー上で連続しない順番でマップされる マッピングを作成するために使われる。 \fBremap_file_pages\fP() を使う方が \fBmmap\fP(2) を繰り返して使うより優れている点は、 前者の方法ではカーネルが VMA (Virtual Memory Area, 仮想メモリー領域) データ構造体を追加で作成する必要がないことである。 - +.PP 非線形マッピングを作成するためには、 以下のようなステップを実行する: .TP 3 1. @@ -71,22 +77,22 @@ remap_file_pages \- 非線形ファイルマッピングを作成する。 2. \fBremap_file_pages\fP() を 1 回以上呼び出して、 マッピングのページとファイルのページの対応関係を再構成する。 ファイルの同じページをマッピング領域の複数の場所に マップすることが可能である。 -.LP +.PP \fIpgoff\fP と \fIsize\fP 引き数は、マッピング内で再配置されるファイルの領域を指定する。 \fIpgoff\fP はファイルオフセットであり、単位はシステムのページサイズである。 \fIsize\fP は領域の長さであり、単位はバイトである。 - +.PP \fIaddr\fP 引き数は 2 つの目的で使われる。 第 1 の目的は、この引き数によって再編成したいページの マッピングを識別することである。 よって \fIaddr\fP は \fBmmap\fP(2) の呼び出しで過去にマップされた領域内のアドレスでなければならない。 第 2 の目的は、 \fIpgoff\fP と \fIsize\fP で識別されるファイルページが置かれる予定のアドレスを、 \fIaddr\fP によって指定することである。 - +.PP .\" This rounding is weird, and not consistent with the treatment of .\" the analogous arguments for munmap()/mprotect() and for mlock(). .\" MTK, 14 Sep 2005 \fIaddr\fP と \fIsize\fP に指定する値は、システムのページサイズの倍数とすべきである。 それ以外の場合、カーネルは「両方」の値を 最も近いページサイズの倍数へ「切り下げる」。 - +.PP \fIprot\fP 引き数は 0 に指定されなければならない。 - +.PP \fIflags\fP 引き数は \fBmmap\fP(2) のものと同じ意味であるが、 \fBMAP_NONBLOCK\fP 以外の全てのフラグは無視される。 .SH 返り値 成功した場合、 \fBremap_file_pages\fP() は 0 を返す。 エラーの場合、\-1 が返され、 \fIerrno\fP が適切に設定される。 @@ -105,14 +111,14 @@ remap_file_pages \- 非線形ファイルマッピングを作成する。 \fBremap_file_pages\fP() システムコールは Linux 固有のものである。 .SH 注意 .\" commit 3ee6dafc677a68e461a7ddafc94a580ebab80735 -Linux 2.6.23 以降、 \fBremap_file_pages\fP() は tmpfs, hugetlbfs, ramfs -などのインメモリーファイルシステム上にのみ非線形マッピングを作成する。 裏にデータストアを持つファイルシステム上では、 -\fBremap_file_pages\fP() は、 ファイルのどの部分がどのアドレスにマッピングされているかの調整が、 \fBmmap\fP(2) -を使った場合ほど効率的ではない。 +Since Linux 2.6.23, \fBremap_file_pages\fP() creates non\-linear mappings only +on in\-memory filesystems such as \fBtmpfs\fP(5), hugetlbfs or ramfs. On +filesystems with a backing store, \fBremap_file_pages\fP() is not much more +efficient than using \fBmmap\fP(2) to adjust which parts of the file are +mapped to which addresses. .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/removexattr.2 b/manual/LDP_man-pages/draft/man2/removexattr.2 index 93f2509f..c81e2038 100644 --- a/manual/LDP_man-pages/draft/man2/removexattr.2 +++ b/manual/LDP_man-pages/draft/man2/removexattr.2 @@ -34,7 +34,7 @@ .\" by Akihiro MOTOKI .\" Updated 2013-03-26, Akihiro MOTOKI .\" -.TH REMOVEXATTR 2 2014\-02\-06 Linux "Linux Programmer's Manual" +.TH REMOVEXATTR 2 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 removexattr, lremovexattr, fremovexattr \- 拡張属性を削除する .SH 書式 @@ -42,16 +42,18 @@ removexattr, lremovexattr, fremovexattr \- 拡張属性を削除する .nf \fB#include \fP \fB#include \fP -.sp +.PP \fBint removexattr(const char\ *\fP\fIpath\fP\fB, const char\ *\fP\fIname\fP\fB);\fP \fBint lremovexattr(const char\ *\fP\fIpath\fP\fB, const char\ *\fP\fIname\fP\fB);\fP \fBint fremovexattr(int \fP\fIfd\fP\fB, const char\ *\fP\fIname\fP\fB);\fP .fi .fam T .SH 説明 -拡張属性は、inode (ファイル、ディレクトリ、シンボリックリンク等) に 関連付けられた \fIname\fP:\fIvalue\fP の対である。 -これらは、システム上のすべての inode に関連付けられた通常の属性 (\fBstat\fP(2) が返すデータ) を拡張するものである。 -拡張属性のコンセプトは \fBattr\fP(5) に書かれている。 +Extended attributes are \fIname\fP:\fIvalue\fP pairs associated with inodes +(files, directories, symbolic links, etc.). They are extensions to the +normal attributes which are associated with all inodes in the system (i.e., +the \fBstat\fP(2) data). A complete overview of extended attributes concepts +can be found in \fBxattr\fP(7). .PP \fBremovexattr\fP() は、ファイルシステム内の指定された \fIpath\fP に対応する、名前 \fIname\fP の拡張属性を削除する。 .PP @@ -61,15 +63,20 @@ removexattr, lremovexattr, fremovexattr \- 拡張属性を削除する \fBfremovexattr\fP() は \fBremovexattr\fP() と同じだが、 \fIpath\fP の代わりに \fIfd\fP で参照されたオープン済みファイルから拡張属性を削除するだけである点が異なる (\fIfd\fP は \fBopen\fP(2) によって返される)。 .PP -拡張属性の名前は、普通のヌル終端された文字列である。 \fIname\fP には、名前空間を表す接頭辞 (prefix) が含まれる。 個々の inode -に対し、互いに独立な名前空間が複数あってもよい。 +An extended attribute name is a null\-terminated string. The \fIname\fP +includes a namespace prefix; there may be several, disjoint namespaces +associated with an individual inode. .SH 返り値 成功した場合、0 が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。 .SH エラー .TP -\fBENOATTR\fP -指定された属性が存在しない。(\fBENOATTR\fP は \fI\fP で \fBENODATA\fP -の同義語として定義されている。) +\fBENODATA\fP +.\" .RB ( ENOATTR +.\" is defined to be a synonym for +.\" .BR ENODATA +.\" in +.\" .IR .) +The named attribute does not exist. .TP \fBENOTSUP\fP 拡張属性がそのファイルシステムでサポートされていない、 もしくは無効になっている。 @@ -87,8 +94,7 @@ removexattr, lremovexattr, fremovexattr \- 拡張属性を削除する これらのシステムコールは Linux 独自である。 .SH 関連項目 \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) +\fBsetxattr\fP(2), \fBstat\fP(2), \fBsymlink\fP(7), \fBxattr\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 index 7ee23ea3..4089c0b9 100644 --- a/manual/LDP_man-pages/draft/man2/rename.2 +++ b/manual/LDP_man-pages/draft/man2/rename.2 @@ -48,93 +48,173 @@ .\" Updated 2013-05-01, Akihiro MOTOKI .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH RENAME 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH RENAME 2 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 rename, renameat, renameat2 \- ファイルの名前や位置を変更する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint rename(const char *\fP\fIoldpath\fP\fB, const char *\fP\fInewpath\fP\fB);\fP -.sp + \fB#include \fP/* AT_* 定数の定義 */ \fB#include \fP -.sp +.PP \fBint renameat(int \fP\fIolddirfd\fP\fB, const char *\fP\fIoldpath\fP\fB,\fP \fB int \fP\fInewdirfd\fP\fB, const char *\fP\fInewpath\fP\fB);\fP - +.PP \fBint renameat2(int \fP\fIolddirfd\fP\fB, const char *\fP\fIoldpath\fP\fB,\fP \fB int \fP\fInewdirfd\fP\fB, const char *\fP\fInewpath\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBrenameat\fP(): .PD 0 .ad l .RS 4 .TP 4 glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L +_POSIX_C_SOURCE\ >=\ 200809L .TP glibc 2.10 より前: -.\" FIXME . need to define FTMs for renameat2(), once it hits glibc _ATFILE_SOURCE .RE +.PP +\fBrenameat2\fP(): +.RS 4 +.TP +_GNU_SOURCE +.RE .ad .PD .SH 説明 \fBrename\fP() はファイルの名前を変更し、必要ならばディレクトリ間の移動を行なう。 そのファイルに対する (\fBlink\fP(2) を使用して作られた) 他のハードリンク (hard link) には影響はない。 オープン済の \fIoldpath\fP に対するファイルディスクリプターにも影響はない。 - -\fInewpath\fP が既に存在する場合、それは不可分操作で (atomically) 置き換えられる (ただし、いくつかの条件がある; -以下の「エラー」のセクションを参照)。 そのため、 \fInewpath\fP にアクセスしようとしている他のプロセスがファイルを見失うことはない (訳註: -常にアクセス可能である)。 - +.PP +Various restrictions determine whether or not the rename operation succeeds: +see ERRORS below. +.PP +If \fInewpath\fP already exists, it will be atomically replaced, so that there +is no point at which another process attempting to access \fInewpath\fP will +find it missing. However, there will probably be a window in which both +\fIoldpath\fP and \fInewpath\fP refer to the file being renamed. +.PP \fIoldpath\fP と \fInewpath\fP がどちらも既存のハードリンクで、同じファイルを参照している場合、 \fBrename\fP() は何も行わず、ステータスとして成功を返す。 - +.PP \fInewpath\fP が存在し、何らかの理由で操作が失敗した場合、 \fBrename\fP() は \fInewpath\fP の実体を元のまま残すことを保証する。 - +.PP \fIoldpath\fP にはディレクトリを指定することもできる。 この場合、 \fInewpath\fP は存在しないか、空のディレクトリでなければならない。 - -一方で、上書きを行なう場合は、rename が行なわれるファイルを \fIoldpath\fP と \fInewpath\fP -の両方で参照できる瞬間がおそらく存在する。 - +.PP \fIoldpath\fP がシンボリックリンク (symbolic link) を参照している場合は、 リンクの名前が変更される。 また、 \fInewpath\fP がシンボリックリンクを参照している場合は、リンクが上書きされる。 .SS renameat() \fBrenameat\fP() システムコールは \fBrename\fP() と全く同様に動作するが、以下で説明する点が異なる。 - +.PP \fIoldpath\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fIolddirfd\fP が参照するディレクトリに対する相対パスと解釈される (\fBrename\fP(2) に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。 - +.PP \fIoldpath\fP で指定されたパス名が相対パスで、 \fIolddirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBrename\fP(2) と同様に) \fIoldpath\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 - +.PP \fIoldpath\fP で指定されたパス名が絶対パスの場合、 \fIolddirfd\fP は無視される。 - +.PP \fInewpath\fP の解釈は \fIoldpath\fP と同じである。 相対パスのパス名がファイルディスクリプター \fInewdirfd\fP が参照するディレクトリと解釈される点だけが異なる。 - +.PP \fBrenameat\fP() の必要性についての説明については \fBopenat\fP(2) を参照。 .SS renameat2() \fBrenameat2\fP() には追加の \fIflags\fP 引き数がある。 \fIflags\fP 引き数が 0 の \fBrenameat2\fP() の呼び出しは \fBrenameat\fP() と等価である。 - +.PP \fIflags\fP 引き数は、以下のフラグの 0 個以上のビットマスクである。 .TP -\fBRENAME_NOREPLACE\fP -rename の \fInewpath\fP を上書きしない。 \fInewpath\fP がすでに存在する場合エラーを返す。 -.TP \fBRENAME_EXCHANGE\fP \fIoldpath\fP と \fInewpath\fP をアトミックに入れ換える。 両方のパス名が存在しなければならないが、 ファイル種別は異なっていてもよい (例えば、一方は空でないディレクトリで、もう一方はシンボリックリンクであるなど)。 +.TP +\fBRENAME_NOREPLACE\fP +rename の \fInewpath\fP を上書きしない。 \fInewpath\fP がすでに存在する場合エラーを返す。 +.IP +\fBRENAME_NOREPLACE\fP can't be employed together with \fBRENAME_EXCHANGE\fP. +.IP +\fBRENAME_NOREPLACE\fP requires support from the underlying filesystem. +Support for various filesystems was added as follows: +.RS +.IP * 3 +.\" ext4: commit 0a7c3937a1f23f8cb5fc77ae01661e9968a51d0c +ext4 (Linux 3.15); +.IP * +btrfs, shmem, and cifs (Linux 3.17); +.IP * +.\" btrfs: commit 80ace85c915d0f41016f82917218997b72431258 +.\" shmem: commit 3b69ff51d087d265aa4af3a532fc4f20bf33e718 +.\" cifs: commit 7c33d5972ce382bcc506d16235f1e9b7d22cbef8 +.\" +.\" gfs2 in 4.2? +xfs (Linux 4.0); +.IP * +.\" Also affs, bfs, exofs, hfs, hfsplus, jffs2, logfs, msdos, +.\" nilfs2, omfs, sysvfs, ubifs, udf, ufs +.\" hugetlbfs, ramfs +.\" local filesystems: commit f03b8ad8d38634d13e802165cc15917481b47835 +.\" libfs: commit e0e0be8a835520e2f7c89f214dfda570922a1b90 +Support for many other filesystems was added in Linux 4.9, including ext2, +minix, reiserfs, jfs, vfat, and bpf. +.RE +.TP +\fBRENAME_WHITEOUT\fP (since Linux 3.18) +.\" commit 0d7a855526dd672e114aff2ac22b60fc6f155b08 +.\" commit 787fb6bc9682ec7c05fb5d9561b57100fbc1cc41 +This operation makes sense only for overlay/union filesystem +implementations. +.IP +Specifying \fBRENAME_WHITEOUT\fP creates a "whiteout" object at the source of +the rename at the same time as performing the rename. The whole operation +is atomic, so that if the rename succeeds then the whiteout will also have +been created. +.IP +A "whiteout" is an object that has special meaning in union/overlay +filesystem constructs. In these constructs, multiple layers exist and only +the top one is ever modified. A whiteout on an upper layer will effectively +hide a matching file in the lower layer, making it appear as if the file +didn't exist. +.IP +When a file that exists on the lower layer is renamed, the file is first +copied up (if not already on the upper layer) and then renamed on the +upper, read\-write layer. At the same time, the source file needs to be +"whiteouted" (so that the version of the source file in the lower layer is +rendered invisible). The whole operation needs to be done atomically. +.IP +.\" https://www.freebsd.org/cgi/man.cgi?query=mount_unionfs&manpath=FreeBSD+11.0-RELEASE +When not part of a union/overlay, the whiteout appears as a character device +with a {0,0} device number. (Note that other union/overlay implementations +may employ different methods for storing whiteout entries; specifically, BSD +union mount employs a separate inode type, \fBDT_WHT\fP, which, while supported +by some filesystems available in Linux, such as CODA and XFS, is ignored by +the kernel's whiteout support code, as of Linux 4.19, at least.) +.IP +\fBRENAME_WHITEOUT\fP requires the same privileges as creating a device node +(i.e., the \fBCAP_MKNOD\fP capability). +.IP +\fBRENAME_WHITEOUT\fP can't be employed together with \fBRENAME_EXCHANGE\fP. +.IP +.\" tmpfs: commit 46fdb794e3f52ef18b859ebc92f0a9d7db21c5df +.\" ext4: commit cd808deced431b66b5fa4e5c193cb7ec0059eaff +.\" XFS: commit 7dcf5c3e4527cfa2807567b00387cf2ed5e07f00 +.\" f2fs: commit 7e01e7ad746bc8198a8b46163ddc73a1c7d22339 +.\" btrfs: commit cdd1fedf8261cd7a73c0596298902ff4f0f04492 +.\" ubifs: commit 9e0a1fff8db56eaaebb74b4a3ef65f86811c4798 +\fBRENAME_WHITEOUT\fP requires support from the underlying filesystem. Among +the filesystems that provide that support are tmpfs (since Linux 3.18), ext4 +(since Linux 3.18), XFS (since Linux 4.1), f2fs (since Linux 4.2), btrfs +(since Linux 4.7), and ubifs (since Linux 4.9). .SH 返り値 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 .SH エラー @@ -223,26 +303,37 @@ rename の \fInewpath\fP を上書きしない。 \fInewpath\fP がすでに存 \fIflags\fP に \fBRENAME_NOREPLACE\fP が指定されているが、 \fInewpath\fP がすでに存在する。 .TP \fBEINVAL\fP -\fIflags\fP に無効なフラグが指定された。 \fBRENAME_NOREPLACE\fP と \fBRENAME_EXCHANGE\fP の両方が指定された。 +An invalid flag was specified in \fIflags\fP. +.TP +\fBEINVAL\fP +Both \fBRENAME_NOREPLACE\fP and \fBRENAME_EXCHANGE\fP were specified in \fIflags\fP. +.TP +\fBEINVAL\fP +Both \fBRENAME_WHITEOUT\fP and \fBRENAME_EXCHANGE\fP were specified in \fIflags\fP. .TP \fBEINVAL\fP \fIflags\fP にファイルシステムでサポートされていないフラグが指定された。 .TP \fBENOENT\fP \fIflags\fP に \fBRENAME_EXCHANGE\fP が指定されたが、 \fInewpath\fP が存在しない。 +.TP +\fBEPERM\fP +\fBRENAME_WHITEOUT\fP was specified in \fIflags\fP, but the caller does not have +the \fBCAP_MKNOD\fP capability. .SH バージョン \fBrenameat\fP() はカーネル 2.6.16 で Linux に追加された。 ライブラリによるサポートはバージョン 2.4 で glibc に追加された。 - -.\" FIXME . glibc support is pending. -\fBrenameat2\fP() はカーネル 2.6.16 で Linux に追加された。 +.PP +\fBrenameat2\fP() was added to Linux in kernel 3.15; library support was added +in glibc 2.28. .SH 準拠 \fBrename\fP(): 4.3BSD, C89, C99, POSIX.1\-2001, POSIX.1\-2008. - +.PP \fBrenameat\fP(): POSIX.1\-2008. - +.PP \fBrenameat2\fP() は Linux 固有である。 .SH 注意 +.\" .SS "glibc での注意" \fBrenameat\fP() が利用できない古いカーネルでは、 glibc ラッパー関数は \fBrename\fP() を使用するモードにフォールバックする。 \fIoldpath\fP と \fInewpath\fP が相対パスの場合、 glibc は \fIolddirfd\fP と \fInewdirfd\fP 引き数に対応する @@ -252,9 +343,8 @@ NFS ファイルシステムでは、操作が失敗したからといって、 操作を終えてからクラッシュした場合、 サーバが再び立ち上がったときに、 再送信された RPC が処理されるが、これは失敗となる。 アプリケーションはこの問題を正しく取り扱うことが期待されている。 同様の問題について \fBlink\fP(2) にも書かれている。 .SH 関連項目 -\fBmv\fP(1), \fBchmod\fP(2), \fBlink\fP(2), \fBsymlink\fP(2), \fBunlink\fP(2), -\fBpath_resolution\fP(7), \fBsymlink\fP(7) +\fBmv\fP(1), \fBrename\fP(1), \fBchmod\fP(2), \fBlink\fP(2), \fBsymlink\fP(2), +\fBunlink\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/request_key.2 b/manual/LDP_man-pages/draft/man2/request_key.2 deleted file mode 100644 index 3d391ea6..00000000 --- a/manual/LDP_man-pages/draft/man2/request_key.2 +++ /dev/null @@ -1,112 +0,0 @@ -.\" Copyright (C) 2006 Red Hat, Inc. All Rights Reserved. -.\" Written by David Howells (dhowells@redhat.com) -.\" -.\" %%%LICENSE_START(GPLv2+_SW_ONEPARA) -.\" 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. -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.TH REQUEST_KEY 2 2010\-02\-25 Linux "Linux Key Management Calls" -.SH 名前 -request_key \- カーネルの鍵管理機能から鍵を取得する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBkey_serial_t request_key(const char *\fP\fItype\fP\fB, const char *\fP\fIdescription\fP\fB,\fP -\fB const char *\fP\fIcallout_info\fP\fB,\fP -\fB key_serial_t \fP\fIkeyring\fP\fB);\fP -.fi -.SH 説明 -\fBrequest_key\fP() asks the kernel to find a key of the given \fItype\fP that -matches the specified \fIdescription\fP and, if successful, to attach it to the -nominated \fIkeyring\fP and to return its serial number. -.P -\fBrequest_key\fP() first recursively searches all the keyrings attached to -the calling process in the order thread\-specific keyring, process\-specific -keyring and then session keyring for a matching key. -.P -If \fBrequest_key\fP() is called from a program invoked by \fBrequest_key\fP() -on behalf of some other process to generate a key, then the keyrings of that -other process will be searched next, using that other process's UID, GID, -groups, and security context to control access. -.P -The keys in each keyring searched are checked for a match before any child -keyrings are recursed into. Only keys that are \fBsearchable\fP for the caller -may be found, and only \fBsearchable\fP keyrings may be searched. -.P -If the key is not found, then, if \fIcallout_info\fP is set, this function will -attempt to look further afield. In such a case, the \fIcallout_info\fP is -passed to a user\-space service such as \fB/sbin/request\-key\fP to generate the -key. -.P -If that is unsuccessful also, then an error will be returned, and a -temporary negative key will be installed in the nominated \fIkeyring\fP. This -will expire after a few seconds, but will cause subsequent calls to -\fBrequest_key\fP() to fail until it does. -.P -The \fIkeyring\fP serial number may be that of a valid keyring to which the -caller has write permission, or it may be a special keyring ID: -.TP -\fBKEY_SPEC_THREAD_KEYRING\fP -この値は呼び出し元スレッド固有の鍵リングを指定する。 -.TP -\fBKEY_SPEC_PROCESS_KEYRING\fP -この値は呼び出し元プロセス固有の鍵リングを指定する。 -.TP -\fBKEY_SPEC_SESSION_KEYRING\fP -この値は呼び出し元セッション固有の鍵リングを指定する。 -.TP -\fBKEY_SPEC_USER_KEYRING\fP -この値は呼び出し元の UID 固有の鍵リングを指定する。 -.TP -\fBKEY_SPEC_USER_SESSION_KEYRING\fP -この値は呼び出し元の UID のセッションの鍵リングを指定する。 -.P -If a key is created, no matter whether it's a valid key or a negative key, -it will displace any other key of the same type and description from the -destination \fIkeyring\fP. -.SH 返り値 -成功すると \fBrequest_key\fP() は見つかった鍵のシリアル番号を返す。 エラーの場合、 値 \-1 が返され、 \fIerrno\fP -にエラーを示す値が設定される。 -.SH エラー -.TP -\fBEACCES\fP -そのユーザーは指定された鍵リングを変更できない。 -.TP -\fBEINTR\fP -要求がシングルで中断された。 -.TP -\fBEDQUOT\fP -この鍵を作成するか、鍵を鍵リングに追加すると、 このユーザーの鍵リングのクォータを超過してしまう。 -.TP -\fBEKEYEXPIRED\fP -期限切れの鍵が見つかったが、 新しい代わりの鍵が取得できなかった。 -.TP -\fBEKEYREJECTED\fP -新しい鍵の生成が拒否された。 -.TP -\fBEKEYREVOKED\fP -廃止された鍵が見つかったが、 新しい代わりの鍵が取得できなかった。 -.TP -\fBENOMEM\fP -鍵を作成するのに十分なメモリーがない。 -.TP -\fBENOKEY\fP -合致する鍵が見つからなかった。 -.SH LINKING -これは Linux のシステムコールだが、 \fIlibc\fP には存在せず、 代わりに \fIlibkeyutils\fP に存在する。 リンクする際には、 -リンカーに \fB\-lkeyutils\fP を指定する必要がある。 -.SH 関連項目 -\fBkeyctl\fP(1), \fBadd_key\fP(2), \fBkeyctl\fP(2), \fBrequest\-key\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/restart_syscall.2 b/manual/LDP_man-pages/draft/man2/restart_syscall.2 index 4c8e35d1..4ffa0685 100644 --- a/manual/LDP_man-pages/draft/man2/restart_syscall.2 +++ b/manual/LDP_man-pages/draft/man2/restart_syscall.2 @@ -35,18 +35,18 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH RESTART_SYSCALL 2 2014\-12\-31 Linux "Linux Programmer's Manual" +.TH RESTART_SYSCALL 2 2020\-12\-21 Linux "Linux Programmer's Manual" .SH 名前 restart_syscall \- 一時停止シグナルによる割り込み後にシステムコールを再開する .SH 書式 -\fBint restart_syscall(void);\fP - +\fBlong restart_syscall(void);\fP +.PP \fI注\fP: このシステムコールには、glibc のラッパー関数はない。「注意」の節を参照。 .SH 説明 \fBrestart_syscall\fP() システムコールは、 シグナル (\fBSIGSTOP\fP や \fBSIGTSTP\fP など) によって停止されたプロセスが \fBSIGCONT\fP シグナルを受信して再開された後に、 特定のシステムコールを再開するのに使用される。 このシステムコールはカーネル内部での利用のみを想定している。 - +.PP .\" These system calls correspond to the special internal errno value .\" ERESTART_RESTARTBLOCK. Each of the system calls has a "restart" .\" helper function that is invoked by restart_syscall(). @@ -72,14 +72,14 @@ restart_syscall \- 一時停止シグナルによる割り込み後にシステ .SH 注意 このシステムコールには glibc のラッパー関数はない。 それはカーネルによる利用だけが想定されており、 アプリケーションは決してこのシステムコールを呼び出すべきではない。 - +.PP カーネルは \fBrestart_syscall\fP() を使用することで、 シグナルにより停止されたプロセスが \fBSIGCONT\fP により再開された後にシステムコールが再開される際に、 元のシステムコールに指定されたタイムアウト時間の計算に、 プロセスが停止中に経過した時間が含まれることを保証する。 タイムアウト引き数を取り、停止シグナルの後に \fBSIGCONT\fP があった場合自動的に再開するシステムコールだが、 そのシステムコールに \fBrestart_syscall\fP() の仕組みが組込まれていない場合には、 プロセスの実行が再開された後、 停止中にプロセスが消費した時間はタイムアウト値としてカウント「されない」。 この問題を持つ有名なシステムコールとしては \fBppoll\fP(2), \fBselect\fP(2), \fBpselect\fP(2) がある。 - +.PP ユーザー空間からは \fBrestart_syscall\fP() の動作はほとんど見えない。 再開されたシステムコールを呼び出したプロセスには、 そのシステムコールが通常通り実行され返ったように見える。 .SH 関連項目 @@ -90,5 +90,5 @@ restart_syscall \- 一時停止シグナルによる割り込み後にシステ .\" FIXME . check whether recvmmsg() handles stop-sig+SIGCONT properly. \fBsigaction\fP(2), \fBsigreturn\fP(2), \fBsignal\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/rmdir.2 b/manual/LDP_man-pages/draft/man2/rmdir.2 index 1c0df001..af88aaa5 100644 --- a/manual/LDP_man-pages/draft/man2/rmdir.2 +++ b/manual/LDP_man-pages/draft/man2/rmdir.2 @@ -41,12 +41,12 @@ .\" Updated 2006-07-23, Akihiro MOTOKI, LDP v2.36 .\" Updated 2008-08-06, Akihiro MOTOKI, LDP v3.05 .\" -.TH RMDIR 2 2008\-05\-08 Linux "Linux Programmer's Manual" +.TH RMDIR 2 2015\-08\-08 Linux "Linux Programmer's Manual" .SH 名前 rmdir \- ディレクトリを削除する .SH 書式 \fB#include \fP -.sp +.PP \fBint rmdir(const char *\fP\fIpathname\fP\fB);\fP .SH 説明 \fBrmdir\fP() はディレクトリを削除する。削除するディレクトリは空でなければならない。 @@ -60,8 +60,9 @@ rmdir \- ディレクトリを削除する に至るまでのディレクトリのいずれかに対する検索許可がなかった。 (\fBpath_resolution\fP(7) も参照のこと) .TP \fBEBUSY\fP -\fIpathname\fP がシステムや別のプロセスにより使用中で削除することができない。 Linux では、 \fIpathname\fP -がマウントポイントとして使用されているか、 呼び出したプロセスのルートディレクトリであることを意味する。 +\fIpathname\fP is currently in use by the system or some process that prevents +its removal. On Linux, this means \fIpathname\fP is currently used as a mount +point or is the root directory of the calling process. .TP \fBEFAULT\fP \fIpathname\fP がアクセス可能なアドレス空間の外を指している。 @@ -86,8 +87,10 @@ rmdir \- ディレクトリを削除する \fIpathname\fP か \fIpathname\fP に含まれているディレクトリ部分が、実際には、ディレクトリでない。 .TP \fBENOTEMPTY\fP -ディレクトリ \fIpathname\fP に \fI.\fP と \fI..\fP 以外のエントリーがある。または、 \fIpathname\fP を構成する最後の要素が -\&\fI..\fP である。 POSIX.1\-2001 は、この状況で \fBEEXIST\fP を返すことを認めている。 +.\" POSIX.1-2001, POSIX.1-2008 +\fIpathname\fP contains entries other than \fI.\fP and \fI..\fP ; or, \fIpathname\fP has +\&\fI..\fP as its final component. POSIX.1 also allows \fBEEXIST\fP for this +condition. .TP \fBEPERM\fP \fIpathname\fP を含んでいるディレクトリにスティッキービット(sticky\-bit) (\fBS_ISVTX\fP) @@ -100,13 +103,12 @@ rmdir \- ディレクトリを削除する \fBEROFS\fP \fIpathname\fP が読み込み専用のファイルシステム上のディレクトリを参照している。 .SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.3BSD. .SH バグ NFS プロトコルに潜在している欠陥によって、まだ使用中のディレクトリが 突然消滅する現象が引き起こされることがある。 .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/sched_get_priority_max.2 b/manual/LDP_man-pages/draft/man2/sched_get_priority_max.2 index d8429e08..c47797a2 100644 --- a/manual/LDP_man-pages/draft/man2/sched_get_priority_max.2 +++ b/manual/LDP_man-pages/draft/man2/sched_get_priority_max.2 @@ -37,14 +37,14 @@ .\" Translated 1997-02-23, HANATAKA Shinya .\" Updated 2006-04-14, Akihiro MOTOKI , LDP v2.29 .\" -.TH SCHED_GET_PRIORITY_MAX 2 2014\-05\-12 Linux "Linux Programmer's Manual" +.TH SCHED_GET_PRIORITY_MAX 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 sched_get_priority_max, sched_get_priority_min \- 静的プライオリティの範囲を取得する .SH 書式 \fB#include \fP -.sp +.PP \fBint sched_get_priority_max(int \fP\fIpolicy\fP\fB);\fP -.sp +.PP \fBint sched_get_priority_min(int \fP\fIpolicy\fP\fB);\fP .SH 説明 \fBsched_get_priority_max\fP() は\fIpolicy\fP によって指定されたスケジューリングのアルゴリズムで @@ -52,19 +52,21 @@ sched_get_priority_max, sched_get_priority_min \- 静的プライオリティの によって指定されたスケジューリングのアルゴリズムで 使用されるプライオリティの最小値を返す。 サポートされる \fIpolicy\fP の値は \fBSCHED_FIFO\fP、 \fBSCHED_RR\fP、 \fBSCHED_OTHER\fP、 \fBSCHED_BATCH\fP, \fBSCHED_IDLE\fP, \fBSCHED_DEADLINE\fP である。これらのスケジューリング方針に関する詳細は \fBsched\fP(7) に書かれている。 - +.PP 数値的に大きなプライオリティ値を持つプロセスは小さな プライオリティ値を持つプロセスより前にスケジュールされる。 このため \fBsched_get_priority_max\fP() が返す値は \fBsched_get_priority_min\fP() が返す値よりも大きい。 - +.PP Linux では、 ポリシー \fBSCHED_FIFO\fP と \fBSCHED_RR\fP では 1 から 99 の範囲の静的プライオリティーを持ち、それ以外のポリシーでは プライオリティとして 0 を持つ。 それぞれの方針のスケジューリングプライオリティの範囲は 変更することができない。 - -スケジューリングプライオリティの範囲は他の POSIX システムと 異なっているかもしれない。それで、移植性(portable)のある -アプリケーションでは仮想的な範囲を用い \fBsched_get_priority_max\fP() と -\fBsched_get_priority_min\fP() で与えられた間隔にマップして使用することはいい考えである。 POSIX.1\-2001 では -\fBSCHED_FIFO\fP と \fBSCHED_RR\fP における 最大値と最小値の間隔を少なくとも 32 にすることを要求している。 - +.PP +.\" POSIX.1-2001, POSIX.1-2008 (XBD 2.8.4) +The range of scheduling priorities may vary on other POSIX systems, thus it +is a good idea for portable applications to use a virtual priority range and +map it to the interval given by \fBsched_get_priority_max\fP() and +\fBsched_get_priority_min\fP POSIX.1 requires a spread of at least 32 between +the maximum and the minimum values for \fBSCHED_FIFO\fP and \fBSCHED_RR\fP. +.PP POSIX システムでは \fBsched_get_priority_max\fP() と \fBsched_get_priority_min\fP() は \fI\fP に \fB_POSIX_PRIORITY_SCHEDULING\fP が定義されている場合にのみ使用可能である。 .SH 返り値 @@ -75,7 +77,7 @@ POSIX システムでは \fBsched_get_priority_max\fP() と \fBsched_get_priori \fBEINVAL\fP 引き数 \fIpolicy\fP が定義されているスケジューリング方針と一致しない。 .SH 準拠 -POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008. .SH 関連項目 .ad l .nh @@ -83,6 +85,5 @@ POSIX.1\-2001. \fBsched_setaffinity\fP(2), \fBsched_setparam\fP(2), \fBsched_setscheduler\fP(2), \fBsched\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/sched_rr_get_interval.2 b/manual/LDP_man-pages/draft/man2/sched_rr_get_interval.2 index 7fff4b99..0596fad3 100644 --- a/manual/LDP_man-pages/draft/man2/sched_rr_get_interval.2 +++ b/manual/LDP_man-pages/draft/man2/sched_rr_get_interval.2 @@ -40,30 +40,30 @@ .\" Updated 2012-05-08, Akihiro MOTOKI .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH SCHED_RR_GET_INTERVAL 2 2014\-04\-28 Linux "Linux Programmer's Manual" +.TH SCHED_RR_GET_INTERVAL 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 sched_rr_get_interval \- 指定されたプロセスの SCHED_RR 間隔を取得する .SH 書式 \fB#include \fP -.sp +.PP \fBint sched_rr_get_interval(pid_t \fP\fIpid\fP\fB, struct timespec *\fP\fItp\fP\fB);\fP .SH 説明 \fBsched_rr_get_interval\fP() は \fItp\fP で指定された \fItimespec\fP 構造体に \fIpid\fP で指定されたプロセスのラウンドロビン時間量 (round robin time quantum) を書き込む。指定されたプロセスは \fBSCHED_RR\fP スケジューリング ポリシーで動作しているはずである。 - +.PP \fItimespec\fP 構造体は以下の通りである: - +.PP .in +4n -.nf +.EX struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* nanoseconds */ }; -.fi +.EE .in - +.PP .\" FIXME . On Linux, sched_rr_get_interval() .\" returns the timeslice for SCHED_OTHER processes -- this timeslice .\" is influenced by the nice value. @@ -91,7 +91,7 @@ PID が不正である。 \fBESRCH\fP プロセス ID が \fIpid\fP のプロセスが見つからなかった。 .SH 準拠 -POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008. .SH 注意 POSIX システムで \fBsched_rr_get_interval\fP() は \fI\fP に \fB_POSIX_PRIORITY_SCHEDULING\fP が定義されている場合にのみ使用可能である。 @@ -102,7 +102,7 @@ POSIX ではラウンドロビン時間量の大きさを制御する仕組み 値 (すなわち、高い nice 値) を割り当てると時間量は長くなり、 正の nice 値 (すなわち、低い nice 値) を割り当てると時間量は短くなる。 デフォルトの時間量は 0.1 秒である。 nice 値の変更が時間量にどの程度影響を与えるかは カーネルのバージョンにより多少異なる。時間量を調整するこのメソッドは Linux 2.6.24 以降で削除された。 - +.PP .\" commit ce0dbbbb30aee6a835511d5be446462388ba9eee .\" .SH BUGS .\" As of Linux 1.3.81 @@ -116,6 +116,5 @@ Linux 3.9 で、 \fBSCHED_RR\fP の時間量の調整 (と参照) を行う新 .SH 関連項目 \fBsched\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 0b1080cc..00000000 --- a/manual/LDP_man-pages/draft/man2/sched_setaffinity.2 +++ /dev/null @@ -1,151 +0,0 @@ -.\" 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" 2002-11-19 Robert Love - 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003, 2005 Yuichi SATO -.\" all rights reserved. -.\" Translated 2003-01-23, Yuichi SATO -.\" Updated & Modified 2003-09-23, Yuichi SATO -.\" Updated & Modified 2005-01-03, Yuichi SATO -.\" Updated & Modified 2005-09-13, Akihiro MOTOKI -.\" Updated & Modified 2006-07-14, Akihiro MOTOKI, LDP v2.34 -.\" Updated & Modified 2008-12-24, Akihiro MOTOKI, LDP v3.14 -.\" -.TH SCHED_SETAFFINITY 2 2014\-12\-31 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 \fP -.sp -\fBint sched_setaffinity(pid_t \fP\fIpid\fP\fB, size_t \fP\fIcpusetsize\fP\fB,\fP -\fB const 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 集合に対する制限はカーネルにより 暗黙のうちに適用される。 - -システムで利用可能な CPU 数を判定する方法はいくつかある。 \fI/proc/cpuinfo\fP の内容を調べる、 \fBsysconf\fP(3) を使って -\fB_SC_NPROCESSORS_CONF\fP と \fB_SC_NPROCESSORS_ONLN\fP の値を取得する、 -\fI/sys/devices/system/cpu/\fP の CPU ディレクトリの一覧を調べる、などがある。 - -\fBsched\fP(7) に 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) の前後で保存される。 -.SS "C ライブラリとカーネル ABI の違い" -このマニュアルページでは CPU affinity コールの glibc インターフェースを -説明している。実際のシステムコールインターフェースは少し違っており、 実際の実装では CPU 集合は簡単なビットマスクであるという実状を反映し、 -\fImask\fP の型が \fIunsigned long\ *\fP となっている。 成功時には、生の \fBsched_getaffinity\fP() -システムコール自身は \fIcpumask_t\fP データ型の (バイト単位の) 大きさを返す。 \fIcpumask_t\fP はカーネル内部で CPU -集合のビットマスクを表現するのに 使われているデータ型である。 -.SH 関連項目 -.ad l -.nh -\fBlscpu\fP(1), \fBnproc\fP(1), \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), \fBsched\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/sched_setattr.2 b/manual/LDP_man-pages/draft/man2/sched_setattr.2 index d7ff25a2..cdef3f0a 100644 --- a/manual/LDP_man-pages/draft/man2/sched_setattr.2 +++ b/manual/LDP_man-pages/draft/man2/sched_setattr.2 @@ -28,17 +28,17 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH SCHED_SETATTR 2 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH SCHED_SETATTR 2 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 sched_setattr, sched_getattr \- スケジューリングポリシーと属性の設定と取得を行なう .SH 書式 .nf \fB#include \fP - -\fBint sched_setattr(pid_t \fP\fIpid\fP\fB, const struct sched_attr *\fP\fIattr\fP\fB,\fP +.PP +\fBint sched_setattr(pid_t \fP\fIpid\fP\fB, struct sched_attr *\fP\fIattr\fP\fB,\fP \fB unsigned int \fP\fIflags\fP\fB);\fP - -\fBint sched_getattr(pid_t \fP\fIpid\fP\fB, const struct sched_attr *\fP\fIattr\fP\fB,\fP +.PP +\fBint sched_getattr(pid_t \fP\fIpid\fP\fB, struct sched_attr *\fP\fIattr\fP\fB,\fP \fB unsigned int \fP\fIsize\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP .fi .\" FIXME . Add feature test macro requirements @@ -47,7 +47,7 @@ sched_setattr, sched_getattr \- スケジューリングポリシーと属性の \fBsched_setattr\fP() システムコールは、 \fIpid\fP で指定された ID を持つスレッドのスケジューリングポリシーと関連する属性を設定する。 \fIpid\fP が 0 の場合、呼び出したスレッド自身のスケジューリングポリシーと属性が設定される。 - +.PP 現在のところ、 Linux では、 以下の「通常」の (つまり、リアルタイムではない) スケジューリングポリシーが、 \fIpolicy\fP に指定できる値としてサポートされている。 .TP 14 @@ -78,9 +78,9 @@ Linux では以下のポリシーも提供されている。 デッドライン (応答期限) ベースのスケジューリングポリシー。詳細は \fBsched\fP(7) を参照。 .PP \fIattr\fP 引き数は、 指定したスレッドの新しいスケジューリングポリシーと属性を定義した構造体へのポインターである。 この構造体は以下の形式である。 - +.PP .in +4n -.nf +.EX struct sched_attr { u32 size; /* この構造体のサイズ */ u32 sched_policy; /* ポリシー (SCHED_*) */ @@ -94,10 +94,10 @@ struct sched_attr { u64 sched_deadline; u64 sched_period; }; -.fi +.EE .in - -この構造体のフィールドは以下の通りである。 +.PP +The fields of the \fIsched_attr\fP structure are as follows: .TP \fBsize\fP このフィールドには、 構造体のバイト単位のサイズを設定する。 \fIsizeof(struct sched_attr)\fP を指定すればよい。 @@ -115,14 +115,42 @@ struct sched_attr { このフィールドはスケジューリングポリシーを指定する。 上記のリストにある \fBSCHED_*\fP 値のいずれかを指定する。 .TP \fIsched_flags\fP -このフィールドはスケジューリング動作の制御を行う。 現在のところ、サポートされているフラグは \fBSCHED_FLAG_RESET_ON_FORK\fP -の一つだけである。 このフラグが指定されると、 \fBfork\fP(2) で作成された子プロセスは特権が必要なスケジューリングポリシーを継承しない。 詳細は -\fBsched\fP(7) を参照。 +This field contains zero or more of the following flags that are ORed +together to control scheduling behavior: +.RS +.TP +\fBSCHED_FLAG_RESET_ON_FORK\fP +Children created by \fBfork\fP(2) do not inherit privileged scheduling +policies. See \fBsched\fP(7) for details. +.TP +\fBSCHED_FLAG_RECLAIM\fP (since Linux 4.13) +.\" 2d4283e9d583a3ee8cfb1cbb9c1270614df4c29d +.\" Bandwidth reclaim is done via the GRUB algorithm; see +.\" Documentation/scheduler/sched-deadline.txt +This flag allows a \fBSCHED_DEADLINE\fP thread to reclaim bandwidth unused by +other real\-time threads. +.TP +\fBSCHED_FLAG_DL_OVERRUN\fP (since Linux 4.16) +.\" commit 34be39305a77b8b1ec9f279163c7cdb6cc719b91 +This flag allows an application to get informed about run\-time overruns in +\fBSCHED_DEADLINE\fP threads. Such overruns may be caused by (for example) +coarse execution time accounting or incorrect parameter assignment. +Notification takes the form of a \fBSIGXCPU\fP signal which is generated on +each overrun. +.IP +This \fBSIGXCPU\fP signal is \fIprocess\-directed\fP (see \fBsignal\fP(7)) rather +than thread\-directed. This is probably a bug. On the one hand, +\fBsched_setattr\fP() is being used to set a per\-thread attribute. On the +other hand, if the process\-directed signal is delivered to a thread inside +the process other than the one that had a run\-time overrun, the application +has no way of knowing which thread overran. +.RE .TP \fIsched_nice\fP -このフィールドは、 \fIsched_policy\fP に \fBSCHED_OTHER\fP か \fBSCHED_BATCH\fP が指定された場合に設定される -nice 値を指定する。 nice 値は \-20 (高優先度) から +19 (低優先度) の範囲の数値である。 \fBsetpriority\fP(2) -を参照。 +This field specifies the nice value to be set when specifying +\fIsched_policy\fP as \fBSCHED_OTHER\fP or \fBSCHED_BATCH\fP. The nice value is a +number in the range \-20 (high priority) to +19 (low priority); see +\fBsched\fP(7). .TP \fIsched_priority\fP このフィールドは、 \fIsched_policy\fP に \fBSCHED_FIFO\fP か \fBSCHED_RR\fP @@ -147,18 +175,21 @@ nice 値を指定する。 nice 値は \-20 (高優先度) から +19 (低優先 \fBsched_getattr\fP() システムコールは、 \fIpid\fP で指定された ID を持つスレッドのスケジューリングポリシーと関連する属性を取得する。 \fIpid\fP が 0 の場合、呼び出したスレッド自身のスケジューリングポリシーと関連する属性を取得する。 - +.PP \fIsize\fP 引き数には、 ユーザー空間での \fIsched_attr\fP 構造体の大きさを設定する。 この値は、 少なくとも初期バージョンの \fIsched_attr\fP 構造体のサイズでなければならない。 そうでなかった場合、 エラー \fBEINVAL\fP で呼び出しが失敗する。 - +.PP 取得したスケジューリング属性は、 \fIattr\fP が指す \fIsched_attr\fP 構造体の各フィールドに格納される。 カーネルは \fIattr.size\fP に \fIsched_attr\fP 構造体のサイズを設定する。 - -呼び出し側が提供した \fIattr\fP バッファーがカーネルの \fIsched_attr\fP 構造体よりも大きい場合、 -ユーザー空間構造体の残りのバイトは変更されない。 呼び出し側が提供した構造体がカーネルの \fIsched_attr\fP 構造体よりも小さく、 -カーネルが値を返すのにもっと大きな空間が必要な場合、 \fBsched_getattr\fP() はエラー \fBE2BIG\fP で失敗する。 -\fBsched_setattr\fP() と同様、 この動作はこのインターフェースの将来の拡張性を考慮してのものである。 - +.PP +If the caller\-provided \fIattr\fP buffer is larger than the kernel's +\fIsched_attr\fP structure, the additional bytes in the user\-space structure +are not touched. If the caller\-provided structure is smaller than the +kernel \fIsched_attr\fP structure, the kernel will silently not return any +values which would be stored outside the provided space. As with +\fBsched_setattr\fP(), these semantics allow for future extensibility of the +interface. +.PP \fIflags\fP 引き数は、このインターフェースの将来の拡張のために用意されている。 現在の実装では 0 を指定しなければならない。 .SH 返り値 成功した場合は \fBsched_setattr\fP() と \fBsched_getattr\fP() は 0 を返す。 エラーの場合は \-1 が返され、 @@ -199,8 +230,8 @@ ID が \fIpid\fP のスレッドが見つからなかった。 呼び出した元が適切な特権を持っていない。 .TP \fBEPERM\fP -呼び出し元の CPU affinity マスクにシステムの全ての CPU のうち含まれていないものがある -(\fBsched_setaffinity\fP(2) を参照)。 +The CPU affinity mask of the thread specified by \fIpid\fP does not include all +CPUs in the system (see \fBsched_setaffinity\fP(2)). .SH バージョン .\" FIXME . Add glibc version これらのシステムコールは Linux 3.14 で初めて登場した。 @@ -214,26 +245,29 @@ ID が \fIpid\fP のスレッドが見つからなかった。 \fBgetpriority\fP(2) の一部機能を持つ。 .SH バグ .\" FIXME . patch sent to Peter Zijlstra +In Linux versions up to 3.15, \fBsched_setattr\fP() failed with the error +\fBEFAULT\fP instead of \fBE2BIG\fP for the case described in ERRORS. +.PP .\" In Linux versions up to up 3.15, .\" FIXME . patch from Peter Zijlstra pending .\" .BR sched_setattr () .\" allowed a negative .\" .I attr.sched_policy .\" value. -バージョン 3.15 までの Linux では、 \fBsched_settattr\fP() は、 エラーの節に書かれている \fBE2BIG\fP -の場合にエラー\fBEFAULT\fP で失敗していた。 +In Linux versions up to 5.3, \fBsched_getattr\fP() failed with the error +\fBEFBIG\fP if the in\-kernel \fIsched_attr\fP structure was larger than the +\fIsize\fP passed by user space. .SH 関連項目 .ad l .nh \fBchrt\fP(1), \fBnice\fP(2), \fBsched_get_priority_max\fP(2), -\fBsched_get_priority_min\fP(2), \fBsched_getaffinity\fP(2), -\fBsched_getscheduler\fP(2), \fBsched_getparam\fP(2), \fBsched_rr_get_interval\fP(2), -\fBsched_setaffinity\fP(2), \fBsched_setscheduler\fP(2), \fBsched_setparam\fP(2), +\fBsched_get_priority_min\fP(2), \fBsched_getaffinity\fP(2), \fBsched_getparam\fP(2), +\fBsched_getscheduler\fP(2), \fBsched_rr_get_interval\fP(2), +\fBsched_setaffinity\fP(2), \fBsched_setparam\fP(2), \fBsched_setscheduler\fP(2), \fBsched_yield\fP(2), \fBsetpriority\fP(2), \fBpthread_getschedparam\fP(3), \fBpthread_setschedparam\fP(3), \fBpthread_setschedprio\fP(3), \fBcapabilities\fP(7), \fBcpuset\fP(7), \fBsched\fP(7) .ad .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 index 1b8219dd..b21e638f 100644 --- a/manual/LDP_man-pages/draft/man2/sched_setparam.2 +++ b/manual/LDP_man-pages/draft/man2/sched_setparam.2 @@ -40,17 +40,17 @@ .\" Updated & Modified 2005-10-10, Akihiro MOTOKI .\" Updated 2006-04-14, Akihiro MOTOKI, LDP v2.29 .\" -.TH SCHED_SETPARAM 2 2014\-05\-11 Linux "Linux Programmer's Manual" +.TH SCHED_SETPARAM 2 2019\-10\-10 Linux "Linux Programmer's Manual" .SH 名前 sched_setparam, sched_getparam \- スケジューリングパラメーターの設定と取得を行なう .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint sched_setparam(pid_t \fP\fIpid\fP\fB, const struct sched_param *\fP\fIparam\fP\fB);\fP -.sp +.PP \fBint sched_getparam(pid_t \fP\fIpid\fP\fB, struct sched_param *\fP\fIparam\fP\fB);\fP -.sp +.PP \fBstruct sched_param { ... int \fP\fIsched_priority\fP\fB; @@ -58,20 +58,23 @@ sched_setparam, sched_getparam \- スケジューリングパラメーターの };\fP .fi .SH 説明 -\fBsched_setparam\fP() は \fIpid\fP で指定されたプロセスのスケジューリング方針 (scheduling policy) に -関連するスケジューリングパラメーターを設定する。 \fIpid\fP が 0 ならば、呼び出し元のプロセスのパラメーターが設定される。 引き数 -\fIparam\fP の解釈は、 \fIpid\fP で指定されたプロセスのスケジューリング方針によって異なる。 Linux -でサポートされているスケジューリング方針の説明は \fBsched\fP(7) を参照のこと。 - -\fBsched_getparam\fP() は \fIpid\fP で指定されたプロセスのスケジューリングパラメーターを取得する。 \fIpid\fP が 0 -ならば、呼び出し元のプロセスのパラメーターを取得する。 - +\fBsched_setparam\fP() sets the scheduling parameters associated with the +scheduling policy for the thread whose thread ID is specified in \fIpid\fP. If +\fIpid\fP is zero, then the parameters of the calling thread are set. The +interpretation of the argument \fIparam\fP depends on the scheduling policy of +the thread identified by \fIpid\fP. See \fBsched\fP(7) for a description of the +scheduling policies supported under Linux. +.PP +\fBsched_getparam\fP() retrieves the scheduling parameters for the thread +identified by \fIpid\fP. If \fIpid\fP is zero, then the parameters of the calling +thread are retrieved. +.PP \fBsched_setparam\fP() はスレッドのスケジューリング方針における \fIparam\fP の妥当性をチェックする。 \fIparam\->sched_priority\fP の値は \fBsched_get_priority_min\fP(2) と \fBsched_get_priority_max\fP(2) の範囲に入っていなければならない。 - +.PP スケジューリングの優先度と方針に関連する特権とリソース制限の 議論に関しては \fBsched\fP(7) を参照のこと。 - +.PP \fBsched_setparam\fP() と \fBsched_getparam\fP() が使用できる POSIX システムでは、 \fI\fP に \fB_POSIX_PRIORITY_SCHEDULING\fP が定義されている。 .SH 返り値 @@ -86,24 +89,20 @@ sched_setparam, sched_getparam \- スケジューリングパラメーターの (\fBsched_setparam\fP()) 引き数 \fIparam\fP が現在のスケジューリング方針においては 無意味である。 .TP \fBEPERM\fP -(\fBsched_setparam\fP()) 呼び出し元のプロセスが適切な特権を持っていない (Linux では、 \fBCAP_SYS_NICE\fP -ケーパビリティを持っていない)。 +(\fBsched_setparam\fP()) The caller does not have appropriate privileges +(Linux: does not have the \fBCAP_SYS_NICE\fP capability). .TP \fBESRCH\fP -プロセス ID \fIpid\fP のプロセスが見つからなかった。 +ID が \fIpid\fP のスレッドが見つからなかった。 .SH 準拠 -POSIX.1\-2001. -.SH 注意 -.PP -Linux では、スケジューリングパラメーターは実際にはスレッド単位の属性である。 \fBsched\fP(7) 参照。 +POSIX.1\-2001, POSIX.1\-2008. .SH 関連項目 .ad l .nh -\fBgetpriority\fP(2), \fBnice\fP(2), \fBsched_get_priority_max\fP(2), +\fBgetpriority\fP(2), \fBgettid\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), -\fBsched_setattr\fP(2), \fBsetpriority\fP(2), \fBcapabilities\fP(7), \fBsched\fP(7) +\fBsched_getscheduler\fP(2), \fBsched_setaffinity\fP(2), \fBsched_setattr\fP(2), +\fBsched_setscheduler\fP(2), \fBsetpriority\fP(2), \fBcapabilities\fP(7), \fBsched\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 index 7ba06b29..924014cb 100644 --- a/manual/LDP_man-pages/draft/man2/sched_setscheduler.2 +++ b/manual/LDP_man-pages/draft/man2/sched_setscheduler.2 @@ -45,40 +45,38 @@ .\" Updated 2013-05-01, Akihiro MOTOKI .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH SCHED_SETSCHEDULER 2 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH SCHED_SETSCHEDULER 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 sched_setscheduler, sched_getscheduler \- スケジューリングポリシーとパラメーターを設定/取得する .SH 書式 .nf \fB#include \fP -.sp +.PP \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 +.PP \fBint sched_getscheduler(pid_t \fP\fIpid\fP\fB);\fP -.sp .fi .SH 説明 \fBsched_setscheduler\fP() システムコールは、 \fIpid\fP で指定された ID を持つスレッドのスケジューリングポリシーとスケジューリングパラメーターの両方を設定する。 \fIpid\fP が 0 の場合、呼び出したスレッド自身のスケジューリングポリシーとスケジューリングパラメーターが設定される。 - +.PP スケジューリングパラメーターは \fIparam\fP 引き数で、以下の形式の構造体へのポインターを指定する。 - -.nf +.PP .in +4n +.EX struct sched_param { ... int sched_priority; ... }; +.EE .in -.fi - +.PP 現在の実装では、この構造体のフィールドは \fIsched_priority\fP だけである。 \fIparam\fP がどのように解釈されるかは選択されたポリシーによって変わる。 - +.PP 現在のところ、 Linux では、 以下の「通常」の (つまり、リアルタイムではない) スケジューリングポリシーが、 \fIpolicy\fP に指定できる値としてサポートされている。 .TP 14 @@ -94,7 +92,7 @@ struct sched_param { 「非常に」低い優先度で動作するバックグラウンドジョブ用。 .PP 上記のどのポリシーの場合でも、 \fIparam\->sched_priority\fP は 0 でなければならない。 - +.PP どの実行可能スレッドを選択するかについて、より正確な制御を必要とする 時間の制約が厳しい特別なアプリケーション用として、 いろいろな「リアルタイム」ポリシーもサポートされている。 プロセスがこれらのポリシーをいつ使用できるかを決めるルールについては、\fBsched\fP(7) を参照。 \fIpolicy\fP には以下のリアルタイムポリシーを指定できる。 @@ -109,11 +107,11 @@ struct sched_param { 指定された \fIpolicy\fP で \fIsched_get_priority_min\fP(2) と \fIsched_get_priority_max\fP(2) を呼び出した返り値の範囲の数字を指定する。 Linux では、これらのシステムコールはそれぞれ 1 と 99 を返す。 - +.PP Linux 2.6.32 以降では、 \fBsched_setscheduler\fP() を呼び出す際に \fIpolicy\fP に \fBSCHED_RESET_ON_FORK\fP フラグを OR で指定できる。このフラグが指定されると、 \fBfork\fP(2) で作成された子プロセスは特権が必要なスケジューリングポリシーを継承しない。 詳細は \fBsched\fP(7) を参照。 - +.PP \fBsched_getscheduler\fP() は \fIpid\fP で識別されるスレッドの現在のスケジューリングポリシーを返す。\fIpid\fP が 0 ならば、呼び出した スレッド自身のスケジューリングポリシーが返される。 .SH 返り値 @@ -136,14 +134,17 @@ Linux 2.6.32 以降では、 \fBsched_setscheduler\fP() を呼び出す際に \f \fBESRCH\fP ID が \fIpid\fP のスレッドが見つからなかった。 .SH 準拠 -POSIX.1\-2001 (但し、下記のバグの節も参照)。 \fBSCHED_BATCH\fP と \fBSCHED_IDLE\fP ポリシーは Linux -固有である。 +POSIX.1\-2001, POSIX.1\-2008 (but see BUGS below). The \fBSCHED_BATCH\fP and +\fBSCHED_IDLE\fP policies are Linux\-specific. .SH 注意 -上記の「通常」および「リアルタイム」スケジューリングポリシーの動作の詳細な説明は \fBsched\fP(7) にある。 - +Further details of the semantics of all of the above "normal" and +"real\-time" scheduling policies can be found in the \fBsched\fP(7) manual +page. That page also describes an additional policy, \fBSCHED_DEADLINE\fP, +which is settable only via \fBsched_setattr\fP(2). +.PP POSIX システムでは \fI\fP に \fB_POSIX_PRIORITY_SCHEDULING\fP が定義されている場合にのみ \fBsched_setscheduler\fP() と \fBsched_getscheduler\fP() が使用できる。 - +.PP POSIX.1 は、非特権スレッドが \fBsched_setscheduler\fP() を呼び出すために必要な権限の詳細を規定しておらず、 詳細はシステムにより異なる。 例えば、Solaris 7 のマニュアルページでは、 呼び出し元の実ユーザー ID または実効ユーザー ID が 設定対象の実ユーザー ID か保存 (save) set\-user\-ID と 一致していなければならない、となっている。 @@ -155,8 +156,9 @@ Linux では、 スケジューリングポリシーとスケジューリング システムコールの代わりに \fBpthread_setschedparam\fP(3), \fBpthread_getschedparam\fP(3), and \fBpthread_setschedprio\fP(3) を使用すること)。 .SH バグ -POSIX では、成功時に \fBsched_setscheduler\fP() は直前のスケジューリングポリシーを返すべきとされている。 Linux の -\fBsched_setscheduler\fP() はこの要求仕様に準拠しておらず、 成功時には常に 0 を返す。 +POSIX.1 says that on success, \fBsched_setscheduler\fP() should return the +previous scheduling policy. Linux \fBsched_setscheduler\fP() does not conform +to this requirement, since it always returns 0 on success. .SH 関連項目 .ad l .nh @@ -167,6 +169,5 @@ POSIX では、成功時に \fBsched_setscheduler\fP() は直前のスケジュ \fBsetpriority\fP(2), \fBcapabilities\fP(7), \fBcpuset\fP(7), \fBsched\fP(7) .ad .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/sched_yield.2 b/manual/LDP_man-pages/draft/man2/sched_yield.2 index b1f9a899..897318e2 100644 --- a/manual/LDP_man-pages/draft/man2/sched_yield.2 +++ b/manual/LDP_man-pages/draft/man2/sched_yield.2 @@ -38,12 +38,12 @@ .\" by HANATAKA Shinya .\" Updated 2008-11-10, Akihiro MOTOKI , LDP v3.13 .\" -.TH SCHED_YIELD 2 2014\-04\-28 Linux "Linux Programmer's Manual" +.TH SCHED_YIELD 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 sched_yield \- プロセッサーを空け渡す(yield) .SH 書式 \fB#include \fP -.sp +.PP \fBint sched_yield(void);\fP .SH 説明 \fBsched_yield\fP() を呼び出すことで、呼び出したスレッドが CPU の使用権を手放すことができる。 @@ -53,22 +53,26 @@ sched_yield \- プロセッサーを空け渡す(yield) .SH エラー Linux の実装では、 \fBsched_yield\fP() は常に成功する。 .SH 準拠 -POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008. .SH 注意 \fBsched_yield\fP() を呼び出した時点で最大優先度のリストの中に呼び出し元のスレッドしか 存在しなければ、そのスレッドは呼び出し後も走り続けることになる。 - +.PP POSIX システムで \fBsched_yield\fP() は \fI\fP に \fB_POSIX_PRIORITY_SCHEDULING\fP が定義されている場合にのみ使用可能である。 - +.PP \fBsched_yield\fP() を戦略的に呼び出すことで、(極度に) 競合するリソース (mutex など) を呼び出し元が解放した際に他のスレッドやプロセスに実行機会を与えることで、 性能を上げることができる。 \fBsched_yield\fP() を必要もないのに呼び出したり、不適切な場面 (例えば、他のスケジューリング 対象となるスレッドが必要とするリソースを呼び出し元が保持したままの状態) で呼び出したりするのは避けること。なぜなら、 \fBsched_yield\fP() の呼び出しより不必要なコンテキストスイッチが起こり、システム性能が 劣化する結果になるからである。 +.PP +\fBsched_yield\fP() is intended for use with real\-time scheduling policies +(i.e., \fBSCHED_FIFO\fP or \fBSCHED_RR\fP). Use of \fBsched_yield\fP() with +nondeterministic scheduling policies such as \fBSCHED_OTHER\fP is unspecified +and very likely means your application design is broken. .SH 関連項目 \fBsched\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 35eacba6..00000000 --- a/manual/LDP_man-pages/draft/man2/select.2 +++ /dev/null @@ -1,379 +0,0 @@ -.\" 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 -.\" Modified 1995-05-18 by Jim Van Zandt -.\" Sun Feb 11 14:07:00 MET 1996 Martin Schulze -.\" * layout slightly modified -.\" -.\" Modified Mon Oct 21 23:05:29 EDT 1996 by Eric S. Raymond -.\" Modified Thu Feb 24 01:41:09 CET 2000 by aeb -.\" Modified Thu Feb 9 22:32:09 CET 2001 by bert hubert , aeb -.\" Modified Mon Nov 11 14:35:00 PST 2002 by Ben Woodard -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya all rights reserved. -.\" Translated 1997-02-23, HANATAKA Shinya -.\" Modified 2000-03-12, HANATAKA Shinya -.\" Updated & Modified 2001-06-04, Yuichi SATO -.\" Updated & Modified 2001-07-01, Yuichi SATO -.\" Updated & Modifedd 2002-01-14, Yuichi SATO -.\" Updated 2002-09-24, Akihiro MOTOKI -.\" Updated 2003-01-19, Akihiro MOTOKI -.\" Updated 2005-03-17, Akihiro MOTOKI -.\" Updated 2006-04-16, Akihiro MOTOKI, LDP v2.28 -.\" Updated 2006-07-23, Akihiro MOTOKI, LDP v2.36 -.\" Updated 2007-09-08, Akihiro MOTOKI, LDP v2.64 -.\" Updated 2008-08-06, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2012-05-30, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH SELECT 2 2015\-01\-22 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 \fP -.sp -/* 以前の規格に従う場合 */ -.br -\fB#include \fP -.br -\fB#include \fP -.br -\fB#include \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 \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 (準備ができた) とは、 (\fBread\fP(2) などの) 対応する I/O -操作が停止 (block) なしに実行したり、 十分小さな \fBwrite\fP(2) を実行したりできる状態にあることを意味する。 -.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 引き数は、 \fBselect\fP() がファイルディスクリプターが ready になるのを待って停止する時間を指定する。 -呼び出しは以下のいずれかになるまで停止する。 -.IP * 3 -ファイルディスクリプターが利用可能になる。 -.IP * -システムコールがシグナルハンドラーにより割り込まれた。 -.IP * -タイムアウト時間が満了した。 -.PP -この \fItimeout\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\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 -\fInfds\fP が負、 またはリソース上限 \fBRLIMIT_NOFILE\fP (\fBgetrlimit\fP(2) 参照) より大きい。 -.TP -\fBEINVAL\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\fP で定義されている。 POSIX.1\-2001 の下では、以下のようになっている。 - -.in +4n -.nf -struct timeval { - time_t tv_sec; /* 秒 */ - suseconds_t tv_usec; /* マイクロ秒 */ -}; -.fi -.in - -この構造体は \fI\fP で定義されており、データ型 \fItime_t\fP と \fIsuseconds_t\fP は -\fI\fP で定義されている。 -.LP -プロトタイプに関しては、昔ながらの状況で \fBselect\fP() を使いたい場合は、 \fI\fP -をインクルードすればよい。 POSIX.1\-2001 の環境で \fBselect\fP() と \fBpselect\fP() を使いたい場合は、 -\fI\fP をインクルードすればよい。 - -glibc 2.0 では \fI\fP が提供する \fBpselect\fP() のプロトタイプが間違っている。 -glibc 2.1 から 2.2.1 では \fB_GNU_SOURCE\fP が定義されている場合に、 \fBpselect\fP() が提供される。 -glibc 2.2.2 以降では、 \fBpselect\fP() を使用するには、「書式」に記載された要件を満たす必要がある。 -.SS マルチスレッドアプリケーション -.\" -\fBselect\fP() で監視中のファイルディスクリプターが別のスレッドでクローズされた場合、どのような結果になるかは規定されていない。いくつかの -UNIX システムでは、 \fBselect\fP() は停止 (block) せず、すぐ返り、ファイルディスクリプターが ready だと報告される -(\fBselect\fP() が返ってから I/O 操作が実行されるまでの間に、 別のファイルディスクリプターが再度オープンされない限り、 それ以降の -I/O 操作はおそらく失敗するだろう)。 Linux (や他のいくつかのシステム) では、 別のスレッドでファイルディスクリプターがクローズされても -\fBselect\fP() には影響を与えない。 -まとめると、このような場合に特定の動作に依存しているアプリケーションは「バグっている」と考えなければならない。 -.SS "C ライブラリとカーネル ABI の違い" -このページで説明している \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 -#include -#include -#include -#include - -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), -\fBrestart_syscall\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/select_tut.2 b/manual/LDP_man-pages/draft/man2/select_tut.2 deleted file mode 100644 index 808ad8dc..00000000 --- a/manual/LDP_man-pages/draft/man2/select_tut.2 +++ /dev/null @@ -1,615 +0,0 @@ -.\" This manpage is copyright (C) 2001 Paul Sheer. -.\" -.\" %%%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 -.\" -.\" very minor changes, aeb -.\" -.\" Modified 5 June 2002, Michael Kerrisk -.\" 2006-05-13, mtk, removed much material that is redundant with select.2 -.\" various other changes -.\" 2008-01-26, mtk, substantial changes and rewrites -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated 2002-02-21, NAKANO Takeo -.\" Updated 2002-09-23, Akihiro MOTOKI -.\" Updated 2005-03-15, Akihiro MOTOKI -.\" Updated 2006-07-21, Akihiro MOTOKI, LDP v2.36 -.\" Updated 2009-02-13, Akihiro MOTOKI, LDP v3.18 -.\" -.TH SELECT_TUT 2 2013\-12\-30 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 \fP -.sp -/* 以前の規格に従う場合 */ -.br -\fB#include \fP -.br -\fB#include \fP -.br -\fB#include \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\fIutimeout\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 \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\fIntimeout\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()) を使うと、効率的に複数のファイルディスクリプターを監視し、 -そのファイルディスクリプターのいずれかが 「ready (準備ができた)」状態、つまり I/O (入出力) が可能になっているかや、 -ファイルディスクリプターのいずれかが 「例外状態 (exceptional condition)」が発生したか、を調べることができる。 - -この関数の主要な引き数は、3種類のファイルディスクリプターの「集合」 \fIreadfds\fP, \fIwritefds\fP, \fIexceptfds\fP -である。 各々の集合は \fBfd_set\fP として宣言され、その内容は \fBFD_CLR\fP(), \fBFD_ISSET\fP(), \fBFD_SET\fP(), -\fBFD_ZERO\fP() といったマクロによって操作できる。 新しく宣言された集合は、まず最初に \fBFD_ZERO\fP() -を使ってクリアすべきである。 \fBselect\fP() はこれらの集合の内容を、以降に述べる規則に従って修正する。 \fBselect\fP() -を呼んだ後、ファイルディスクリプターがまだ集合に存在しているかどうかは、 \fBFD_ISSET\fP() マクロによって調べることができる。 -\fBFD_ISSET\fP() は指定されたディスクリプターが集合に存在していれば 0 以外の値を返し、 存在しなければ 0 を返す。 -\fBFD_CLR\fP() は集合からのファイルディスクリプターの削除を行う。 -.SS 引き数 -.TP -\fIreadfds\fP -この集合に含まれるいずれかのファイルディスクリプターで、 データの読み込みが可能になったかどうかを監視する。 \fBselect\fP() -から戻る時に、\fIreadfds\fP のうち、 直ちに読み込み可能なファイルディスクリプター以外は 集合から削除される。 -.TP -\fIwritefds\fP -この集合に含まれるいずれかのファイルディスクリプターで、 データを書き込むスペースがあるかどうかを監視する。 \fBselect\fP() -から戻る時に、\fIwritefds\fP のうち、 直ちに書き込み可能なファイルディスクリプター以外は 集合から削除される。 -.TP -\fIexceptfds\fP -この集合に含まれるいずれかのファイルディスクリプターで、 「例外状態 (exceptional condition)」が発生したかどうかを監視する。 -実際の動作では、普通に起こり得る例外状態は一つだけであり、 それは TCP ソケットで \fI帯域外 (out\-of\-band; OOB)\fP データが -読み込み可能な場合である。 OOB データの詳細については、 \fBrecv\fP(2), \fBsend\fP(2), \fBtcp\fP(7) を参照のこと。 -(これ以外では、まれなことだが、 パケットモードの擬似端末 (pseudoterminals) で \fBselect\fP() -が例外状態を示すことがある。) \fBselect\fP() が返る時に、\fIexceptfds\fP のうち、 -例外状態が発生したディスクリプター以外は集合から削除される。 -.TP -\fInfds\fP -全ての集合に含まれるファイルディスクリプターのうち、 値が最大のものに 1 を足した整数である。 -すなわち、ファイルディスクリプターを各集合に加える作業の途中で、 全てのファイルディスクリプターを見て最大値を求め、 それに 1 を加えて -\fInfds\fP として渡さないといけない、ということだ。 -.TP -\fIutimeout\fP -(何も起こらなかった場合に) \fBselect\fP() が戻る前に待つ最大時間である。 この値に NULL を渡すと、 \fBselect\fP() -はファイルディスクリプターのいずれかが ready (準備ができた) 状態に なるまで待ち続けてずっと停止する。 \fIutimeout\fP は 0 -秒にすることもでき、 この場合 \fBselect\fP() は直ちに返り、呼び出し時点のファイルディスクリプターの状態に 関する情報が返される。 構造体 -\fIstruct timeval\fP は次のように定義されている: -.IP -.in +4n -.nf -struct timeval { - time_t tv_sec; /* seconds */ - long tv_usec; /* microseconds */ -}; -.fi -.in -.TP -\fIntimeout\fP -\fBpselect\fP() のこの引き数は \fIutimeout\fP と同じ意味を持つが、 \fIstruct timespec\fP -は次に示すようにナノ秒の精度を持つ。 -.IP -.in +4n -.nf -struct timespec { - long tv_sec; /* seconds */ - long tv_nsec; /* nanoseconds */ -}; -.fi -.in -.TP -\fIsigmask\fP -この引き数は、呼び出し側が \fBpselect\fP() 内部で停止している間に、カーネルが通知を許可すべきシグナル集合 -(すなわち、呼び出したスレッドのシグナルマスクから削除すべきシグナル集合) を保持する (\fBsigaddset\fP(3) と -\fBsigprocmask\fP(2) を参照)。 この引き数は NULL にすることもでき、その場合はこの関数へ -入るとき・出るときにシグナルマスクを変更しない。 この場合、 \fBpselect\fP() は \fBselect\fP() と全く同じ動作となる。 -.SS シグナルとデータイベントを組み合わせる -ファイルディスクリプターが I/O 可能な状態になるのと同時に シグナルも待ちたい場合には、 \fBpselect\fP() が便利である。 -シグナルを受信するプログラムは、通常は、 シグナルハンドラーをグローバルなフラグを立てるためだけに使う。 このグローバルなフラグは、 -そのイベントをプログラムのメインループで 処理しなければならないことを示す。 シグナルを受けると \fBselect\fP() (や -\fBpselect\fP()) は \fIerrno\fP に \fBEINTR\fP をセットして戻ることになる。 -シグナルがプログラムのメインループで処理されるためにはこの動作が不可欠で、 これがないと \fBselect\fP() は永遠に停止し続けることになる。 -さて、メインループのどこかにこのグローバルフラグをチェックする 条件文があるとしよう。ここで少し考えてみないといけない。 「シグナルが条件文の後、しかし -\fBselect\fP() コールの前に到着したら どうなるのか?」 答えは「その \fBselect\fP() -は、たとえ解決待ちのイベントがあったとしても、 永遠に停止する」である。 この競合状態は \fBpselect\fP() コールによって解決できる。 -このコールを使うと、 \fBpselect\fP() でのみ受信したいシグナルの集合をシグナルマスクに設定することができる。 -例えば、問題となっているイベントが子プロセスの終了の場合を考えよう。 メインループが始まる前に、 \fBSIGCHLD\fP を -\fBsigprocmask\fP(2) でブロックする。 \fBpselect\fP() コールでは \fBSIGCHLD\fP -を、もともとのシグナルマスクを使って有効にするのだ。 このプログラムは次のようになる。 -.PP -.nf -static volatile sig_atomic_t got_SIGCHLD = 0; - -static void -child_sig_handler(int sig) -{ - got_SIGCHLD = 1; -} - -int -main(int argc, char *argv[]) -{ - sigset_t sigmask, empty_mask; - struct sigaction sa; - fd_set readfds, writefds, exceptfds; - int r; - - sigemptyset(&sigmask); - sigaddset(&sigmask, SIGCHLD); - if (sigprocmask(SIG_BLOCK, &sigmask, NULL) == \-1) { - perror("sigprocmask"); - exit(EXIT_FAILURE); - } - - sa.sa_flags = 0; - sa.sa_handler = child_sig_handler; - sigemptyset(&sa.sa_mask); - if (sigaction(SIGCHLD, &sa, NULL) == \-1) { - perror("sigaction"); - exit(EXIT_FAILURE); - } - - sigemptyset(&empty_mask); - - for (;;) { /* main loop */ - /* Initialize readfds, writefds, and exceptfds - before the pselect() call. (Code omitted.) */ - - r = pselect(nfds, &readfds, &writefds, &exceptfds, - NULL, &empty_mask); - if (r == \-1 && errno != EINTR) { - /* Handle error */ - } - - if (got_SIGCHLD) { - got_SIGCHLD = 0; - - /* Handle signalled event here; e.g., wait() for all - terminated children. (Code omitted.) */ - } - - /* main body of program */ - } -} -.fi -.SS 実例 -実際のところ \fBselect\fP() の大事な点は何なのか? ディスクリプターは好きなときに読み書きできるんじゃないの? \fBselect\fP() -の重要なところは、複数のディスクリプターを同時に監視でき、 なんの動きもなければプロセスを適切にスリープ状態に移行するところにあるのだ。 UNIX -プログラマは、 複数のファイルディスクリプターの入出力を同時に扱わねばならず、 しかもデータの流れは間欠的である、という状況によく出会う。 単に -\fBread\fP(2) や \fBwrite\fP(2) コールのシーケンスを作るだけでは、それらのコールのどれかが -ファイルディスクリプターからのデータを待ってブロックしており、 別のファイルディスクリプターには I/O が可能なのに使えない、 -ということになってしまうだろう。 \fBselect\fP() を使うとこの状況に効果的に対処できる。 -.SS "SELECT の掟" -\fBselect\fP() を使おうとした多くの人は、理解しにくい挙動に出くわし、結果的に -できたものは移植性がないか、よくてもギリギリのものになってしまう。 例えば、上記のプログラムは、 集合に含まれるファイルディスクリプターを非停止 -(nonblocking) モード にしなくても、どこにもブロックが生じないよう注意して書かれている。 微妙な間違いによって、 \fBselect\fP() -を使う利点は簡単に失われてしまう。 そこで、 \fBselect\fP() コールを使うときに注意すべき重要事項を列挙しておくことにする。 -.TP 4 -1. -\fBselect\fP() を使うときは、タイムアウトは設定すべきでない。 処理するデータが無いときには、 -あなたのプログラムには何もすることは無いはずである。 タイムアウトに依存したコードは通常移植性がなく、 デバッグも難しくなる。 -.TP -2. -上述したように、 効率的なプログラムを書くには \fInfds\fP の値を適切に計算して与えなければならない。 -.TP -3. -\fBselect\fP() コールの終了後に結果をチェックして、 適切に対応するつもりのないファイルディスクリプターは、 どの集合にも加えてはならない。 -次のルールも参照。 -.TP -4. -\fBselect\fP() から返った後には、全ての集合の全てのファイルディスクリプターについて 読み書き可能な状態になっているかをチェックすべきである。 -.TP -5. -\fBread\fP(2), \fBrecv\fP(2), \fBwrite\fP(2), \fBsend\fP(2) -といった関数は、こちらが要求した全データを読み書きする必要は\fIない\fP。 もし全データを読み書きするなら、それはトラフィックの負荷が小さく、 -ストリームが速い場合だろう。この条件は常に満たされるとは限らない。 これらの関数が頑張っても 1 バイトしか送受信できないような場合も -考慮に入れてやらなければならない。 -.TP -6. -処理するデータ量が小さいことがはっきりとわかっている場合を除いて、 一度に 1 バイトずつ読み書きするようなことはしてはならない。 -バッファーの許すかぎりのデータをまとめて読み書きしないと、 非常に効率が悪い。下記の例ではバッファーは 1024 バイトにしているが、 -このサイズを大きくするのは簡単だろう。 -.TP -7. -.\" Nonetheless, you should still cope with these errors for completeness. -\fBread\fP(2), \fBrecv\fP(2), \fBwrite\fP(2), \fBsend\fP(2) などの関数や \fBselect\fP() コールは、 -\fIerrno\fP を \fBEINTR や EAGAIN\fP (\fBEWOULDBLOCK\fP) にして \-1 を返すことがある。 -このような結果に対して適切に対応してやらなければならない (上記の例ではしていない)。 書いているプログラムがシグナルを受ける予定がなければ、 -\fBEINTR\fP が返されることはあまり考えられない。 書いているプログラムで非ブロック I/O をセットしていない場合は、 \fBEAGAIN\fP -が返されることはないだろう。 -.TP -8. -決して、引き数に長さ 0 のバッファーを指定して \fBread\fP(2), \fBrecv\fP(2), \fBwrite\fP(2), \fBsend\fP(2) -を呼び出してはならない。 -.TP -9. -\fBread\fP(2), \fBrecv\fP(2), \fBwrite\fP(2), \fBsend\fP(2) が \fB7.\fP に示した以外のエラーで失敗した場合や、 -入力系の関数の一つがファイル末尾を表す 0 を返した場合は、 そのディスクリプターをもう一度 select に渡しては\fIならない\fP。 -下記の例では、そのディスクリプターをただちにクローズし、 そこには \-1 をセットして、 それが集合に含まれ続けるのを許さないようにしている。 -.TP -10. -タイムアウトの値は \fBselect\fP() を呼ぶたびに初期化すべきである。 OS によっては timeout -構造体が変更される場合があるからである。 但し、 \fBpselect\fP() は自分の timeout 構造体を変更することはない。 -.TP -11. -.\" "I have heard" does not fill me with confidence, and doesn't -.\" belong in a man page, so I've commented this point out. -.\" .TP -.\" 11. -.\" I have heard that the Windows socket layer does not cope with OOB data -.\" properly. -.\" It also does not cope with -.\" .BR select () -.\" calls when no file descriptors are set at all. -.\" Having no file descriptors set is a useful -.\" way to sleep the process with subsecond precision by using the timeout. -.\" (See further on.) -\fBselect\fP() はファイルディスクリプター集合を変更するので、 \fBselect\fP() -がループの中で使用されている場合には、呼び出しを行う前に毎回 ディスクリプター集合を初期化し直さなければならない。 -.SS "usleep エミュレーション" -\fBusleep\fP(3) 関数を持たないシステムでは、 有限のタイムアウトを指定し、ファイルディスクリプターを全くセットせずに \fBselect\fP() -を呼び出すことで、これを代用できる。 以下のようにする。 -.PP -.nf - struct timeval tv; - tv.tv_sec = 0; - tv.tv_usec = 200000; /* 0.2 seconds */ - select(0, NULL, NULL, NULL, &tv); -.fi -.PP -但し、これが動くと保証されているのは UNIX システムに限られる。 -.SH 返り値 -成功すると、 \fBselect\fP() はファイルディスクリプター集合に残っている ファイルディスクリプターの総数を返す。 - -\fBselect\fP() がタイムアウトすると、返り値は 0 になる。 その時、ファイルディスクリプター集合はすべて空である -(しかしそうならないシステムもある)。 - -返り値が \-1 の場合はエラーを意味し、 \fIerrno\fP が適切にセットされる。エラーが起こった場合、 返された集合の内容や構造体 \fIstruct -timeout\fP の内容は 未定義となっており、使用すべきではない。 しかし \fBpselect\fP() は決して \fIntimeout\fP -を変更しない。 -.SH 注意 -一般的に言って、ソケットをサポートする全てのオペレーティングシステムは \fBselect\fP() もサポートしている。 \fBselect\fP() -を使うと、プログラマがスレッド、フォーク、IPC、シグナル、メモリー共有、 等々を使ってもっと複雑な方法で解決しようとする多くの問題が、 -移植性がありかつ効率的な方法で解決できる。 -.PP -\fBpoll\fP(2) システムコールは \fBselect\fP() と同じ機能を持っており、 まばらなファイルディスクリプター集合を監視する場合に -いくらか効率がよい。 現在では広く利用可能であるが、以前は \fBselect\fP() より移植性の面で劣っていた。 -.PP -Linux 独自の \fBepoll\fP(7) API は、多数のファイルディスクリプターを監視する場合に \fBselect\fP(2) や -\fBpoll\fP(2) よりも効率的なインターフェースを提供している。 -.SH 例 -\fBselect\fP() の本当に便利な点を示す、よい例を紹介する。 以下のリストは、ある TCP ポートから別のポートへ転送を行う TCP -フォワードプログラムである。 -.PP -.nf -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static int forward_port; - -#undef max -#define max(x,y) ((x) > (y) ? (x) : (y)) - -static int -listen_socket(int listen_port) -{ - struct sockaddr_in a; - int s; - int yes; - - if ((s = socket(AF_INET, SOCK_STREAM, 0)) == \-1) { - perror("socket"); - return \-1; - } - yes = 1; - if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, - &yes, sizeof(yes)) == \-1) { - perror("setsockopt"); - close(s); - return \-1; - } - memset(&a, 0, sizeof(a)); - a.sin_port = htons(listen_port); - a.sin_family = AF_INET; - if (bind(s, (struct sockaddr *) &a, sizeof(a)) == \-1) { - perror("bind"); - close(s); - return \-1; - } - printf("accepting connections on port %d\en", listen_port); - listen(s, 10); - return s; -} - -static int -connect_socket(int connect_port, char *address) -{ - struct sockaddr_in a; - int s; - - s = socket(AF_INET, SOCK_STREAM, 0); - if (s == \-1) { - perror("socket"); - close(s); - return \-1; - } - - memset(&a, 0, sizeof(a)); - a.sin_port = htons(connect_port); - a.sin_family = AF_INET; - - if (!inet_aton(address, (struct in_addr *) &a.sin_addr.s_addr)) { - perror("bad IP address format"); - close(s); - return \-1; - } - - if (connect(s, (struct sockaddr *) &a, sizeof(a)) == \-1) { - perror("connect()"); - shutdown(s, SHUT_RDWR); - close(s); - return \-1; - } - return s; -} - -#define SHUT_FD1 do { \e - if (fd1 >= 0) { \e - shutdown(fd1, SHUT_RDWR); \e - close(fd1); \e - fd1 = \-1; \e - } \e - } while (0) - -#define SHUT_FD2 do { \e - if (fd2 >= 0) { \e - shutdown(fd2, SHUT_RDWR); \e - close(fd2); \e - fd2 = \-1; \e - } \e - } while (0) - -#define BUF_SIZE 1024 - -int -main(int argc, char *argv[]) -{ - int h; - int fd1 = \-1, fd2 = \-1; - char buf1[BUF_SIZE], buf2[BUF_SIZE]; - int buf1_avail, buf1_written; - int buf2_avail, buf2_written; - - if (argc != 4) { - fprintf(stderr, "Usage\en\etfwd " - " \en"); - exit(EXIT_FAILURE); - } - - signal(SIGPIPE, SIG_IGN); - - forward_port = atoi(argv[2]); - - h = listen_socket(atoi(argv[1])); - if (h == \-1) - exit(EXIT_FAILURE); - - for (;;) { - int r, nfds = 0; - fd_set rd, wr, er; - - FD_ZERO(&rd); - FD_ZERO(&wr); - FD_ZERO(&er); - FD_SET(h, &rd); - nfds = max(nfds, h); - if (fd1 > 0 && buf1_avail < BUF_SIZE) { - FD_SET(fd1, &rd); - nfds = max(nfds, fd1); - } - if (fd2 > 0 && buf2_avail < BUF_SIZE) { - FD_SET(fd2, &rd); - nfds = max(nfds, fd2); - } - if (fd1 > 0 && buf2_avail \- buf2_written > 0) { - FD_SET(fd1, &wr); - nfds = max(nfds, fd1); - } - if (fd2 > 0 && buf1_avail \- buf1_written > 0) { - FD_SET(fd2, &wr); - nfds = max(nfds, fd2); - } - if (fd1 > 0) { - FD_SET(fd1, &er); - nfds = max(nfds, fd1); - } - if (fd2 > 0) { - FD_SET(fd2, &er); - nfds = max(nfds, fd2); - } - - r = select(nfds + 1, &rd, &wr, &er, NULL); - - if (r == \-1 && errno == EINTR) - continue; - - if (r == \-1) { - perror("select()"); - exit(EXIT_FAILURE); - } - - if (FD_ISSET(h, &rd)) { - unsigned int l; - struct sockaddr_in client_address; - - memset(&client_address, 0, l = sizeof(client_address)); - r = accept(h, (struct sockaddr *) &client_address, &l); - if (r == \-1) { - perror("accept()"); - } else { - SHUT_FD1; - SHUT_FD2; - buf1_avail = buf1_written = 0; - buf2_avail = buf2_written = 0; - fd1 = r; - fd2 = connect_socket(forward_port, argv[3]); - if (fd2 == \-1) - SHUT_FD1; - else - printf("connect from %s\en", - inet_ntoa(client_address.sin_addr)); - } - } - - /* NB: read oob data before normal reads */ - - if (fd1 > 0) - if (FD_ISSET(fd1, &er)) { - char c; - - r = recv(fd1, &c, 1, MSG_OOB); - if (r < 1) - SHUT_FD1; - else - send(fd2, &c, 1, MSG_OOB); - } - if (fd2 > 0) - if (FD_ISSET(fd2, &er)) { - char c; - - r = recv(fd2, &c, 1, MSG_OOB); - if (r < 1) - SHUT_FD2; - else - send(fd1, &c, 1, MSG_OOB); - } - if (fd1 > 0) - if (FD_ISSET(fd1, &rd)) { - r = read(fd1, buf1 + buf1_avail, - BUF_SIZE \- buf1_avail); - if (r < 1) - SHUT_FD1; - else - buf1_avail += r; - } - if (fd2 > 0) - if (FD_ISSET(fd2, &rd)) { - r = read(fd2, buf2 + buf2_avail, - BUF_SIZE \- buf2_avail); - if (r < 1) - SHUT_FD2; - else - buf2_avail += r; - } - if (fd1 > 0) - if (FD_ISSET(fd1, &wr)) { - r = write(fd1, buf2 + buf2_written, - buf2_avail \- buf2_written); - if (r < 1) - SHUT_FD1; - else - buf2_written += r; - } - if (fd2 > 0) - if (FD_ISSET(fd2, &wr)) { - r = write(fd2, buf1 + buf1_written, - buf1_avail \- buf1_written); - if (r < 1) - SHUT_FD2; - else - buf1_written += r; - } - - /* check if write data has caught read data */ - - if (buf1_written == buf1_avail) - buf1_written = buf1_avail = 0; - if (buf2_written == buf2_avail) - buf2_written = buf2_avail = 0; - - /* one side has closed the connection, keep - writing to the other side until empty */ - - if (fd1 < 0 && buf1_avail \- buf1_written == 0) - SHUT_FD2; - if (fd2 < 0 && buf2_avail \- buf2_written == 0) - SHUT_FD1; - } - exit(EXIT_SUCCESS); -} -.fi -.PP -上記のプログラムは、ほとんどの種類の TCP 接続をフォワードする。 \fBtelnet\fP サーバによって中継される OOB シグナルデータも扱える。 -このプログラムは、データフローを双方向に同時に送るという、 ややこしい問題も処理できる。 \fBfork\fP(2) -コールを使って、各ストリームごとに専用のスレッドを用いるほうが効率的だ、 という人もいるかもしれない。しかし、これは考えているよりずっとややこしい。 -あるいは、 \fBfcntl\fP(2) を使って非ブロック I/O をセットすれば良い、というアイデアもあるだろう。 -これにも実際には問題があり、タイムアウトが非効率的に起こってしまう。 - -このプログラムは一度にひとつ以上の同時接続を扱うことはできないが、 その様に拡張するのは簡単で、バッファーのリンクリストを (接続ごとにひとつずつ) -使えばよい。 現時点のものでは、新しい接続がくると古い接続は落ちてしまう。 -.SH 関連項目 -.\" .SH AUTHORS -.\" This man page was written by Paul Sheer. -\fBaccept\fP(2), \fBconnect\fP(2), \fBioctl\fP(2), \fBpoll\fP(2), \fBread\fP(2), -\fBrecv\fP(2), \fBselect\fP(2), \fBsend\fP(2), \fBsigprocmask\fP(2), \fBwrite\fP(2), -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 33c562dc..00000000 --- a/manual/LDP_man-pages/draft/man2/semctl.2 +++ /dev/null @@ -1,298 +0,0 @@ -.\" Copyright 1993 Giorgio Ciucci (giorgio@crcc.it) -.\" and Copyright 2004, 2005 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 Tue Oct 22 17:53:56 1996 by Eric S. Raymond -.\" Modified Fri Jun 19 10:59:15 1998 by Andries Brouwer -.\" Modified Sun Feb 18 01:59:29 2001 by Andries Brouwer -.\" Modified 20 Dec 2001, Michael Kerrisk -.\" Modified 21 Dec 2001, aeb -.\" Modified 27 May 2004, Michael Kerrisk -.\" Added notes on CAP_IPC_OWNER requirement -.\" Modified 17 Jun 2004, Michael Kerrisk -.\" Added notes on CAP_SYS_ADMIN requirement for IPC_SET and IPC_RMID -.\" Modified, 11 Nov 2004, Michael Kerrisk -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997,1998 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-23, HANATAKA Shinya -.\" Modified 1998-09-10, HANATAKA Shinya -.\" Updated & Modified 2001-06-03, Yuichi SATO -.\" Updated & Modified 2002-01-02, Yuichi SATO -.\" Updated & Modified 2005-01-03, Yuichi SATO -.\" Updated & Modified 2005-10-10, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" Updated 2013-07-24, Akihiro MOTOKI -.\" -.TH SEMCTL 2 2013\-06\-03 Linux "Linux Programmer's Manual" -.SH 名前 -semctl \- System V セマフォの制御操作を行なう -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -\fB#include \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\fP で以下のように定義されている: -.nf -.in +4n - -struct semid_ds { - struct ipc_perm sem_perm; /* 所有権と許可 */ - time_t sem_otime; /* 最後の semop の時刻 */ - time_t sem_ctime; /* 最後に変更が行われた時刻 */ - unsigned long 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\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 10 -\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. - -POSIX.1\-2001 では \fIsemid_ds\fP 構造体の \fIsem_nsems\fP フィールドは \fIunsigned\ short\fP -型を持つと規定されており、 他のほとんどのシステムでこのフィールドは \fIunsigned\ short\fP 型になっている。 Linux 2.4 -以前ではそうなっていたが、 Linux 2.4 以降ではこのフィールドは \fIunsigned\ long\fP 型である。 -.SH 注意 -.\" Like Linux, the FreeBSD man pages still document -.\" the inclusion of these header files. -Linux や POSIX の全てのバージョンでは、 \fI\fP と \fI\fP -のインクルードは必要ない。しかしながら、いくつかの古い実装ではこれらのヘッダーファイルのインクルードが必要であり、 SVID -でもこれらのインクルードをするように記載されている。このような古いシステムへの移植性を意図したアプリケーションではこれらのファイルをインクルードする必要があるかもしれない。 - -\fBIPC_INFO\fP, \fBSEM_STAT\fP, \fBSEM_INFO\fP 操作は \fBipcs\fP(1) -プログラムによって割当られた資源について情報を提供するために使用される。 将来的にはこれらは変更されるか、 \fI/proc\fP -ファイルシステムインターフェースに移動されるかもしれない。 -.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\fP で定義されていたが、 -POSIX.1\-2001 では呼び出し側がこの共用体を定義する必要がある。 この共用体が定義されて\fIいない\fP glibc のバージョンでは、 マクロ -\fB_SEM_SEMUN_UNDEFINED\fP が \fI\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 809cfdb1..00000000 --- a/manual/LDP_man-pages/draft/man2/semget.2 +++ /dev/null @@ -1,178 +0,0 @@ -.\" 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 -.\" Modified 1 Jan 2002, Martin Schulze -.\" Modified 4 Jan 2002, Michael Kerrisk -.\" Modified, 27 May 2004, Michael Kerrisk -.\" Added notes on capability requirements -.\" Modified, 11 Nov 2004, Michael Kerrisk -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-02-23, HANATAKA Shinya -.\" Updated 2003-04-08, Kentaro Shirakata -.\" Updated 2005-03-01, Akihiro MOTOKI -.\" Updated 2006-07-20, Akihiro MOTOKI, LDP v2.36 -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" -.TH SEMGET 2 2014\-05\-21 Linux "Linux Programmer's Manual" -.SH 名前 -semget \- System V セマフォ集合の識別子を取得する -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -\fB#include \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 -新規のセマフォ集合を作成する際、 \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. -\fIsemflg\fP に \fBIPC_CREAT\fP と \fBIPC_EXCL\fP が指定されたが、 \fIkey\fP に対応するセマフォ集合はすでに存在する。 -.TP -\fBEINVAL\fP -\fInsems\fP が 0 より小さいか、 セマフォ集合あたりのセマフォの最大数 (\fBSEMMSL\fP) より大きい。 -.TP -\fBEINVAL\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. -Linux や POSIX の全てのバージョンでは、 \fI\fP と \fI\fP -のインクルードは必要ない。しかしながら、いくつかの古い実装ではこれらのヘッダーファイルのインクルードが必要であり、 SVID -でもこれらのインクルードをするように記載されている。このような古いシステムへの移植性を意図したアプリケーションではこれらのファイルをインクルードする必要があるかもしれない。 - -.\" -\fBIPC_PRIVATE\fP はフラグフィールドに指定するものではなく、 \fIkey_t\fP 型である。 この特別な値が \fIkey\fP に指定されると、 -\fBsemget\fP() \fIsemflg\fP の下位 9 ビット以外は全て無視し、 (成功した場合は) 新しいセマフォ集合を作成する。 -.SS セマフォの初期化 -.\" 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 と POSIX.1\-2008 -に明記されている。ただし、POSIX.1\-2008 では POSIX の将来のバージョンではセマフォを 0 -に初期化するように実装に要求する可能性が注記されている。) Linux は他の多くの実装と同様にセマフォ値を 0 に初期化するが、 -移植性を考慮したアプリケーションではこの動作を前提にすべきではない。 アプリケーションは明示的にセマフォを希望の値で初期化すべきである。 - -.\" -\fBsemctl\fP(2) の \fBSETVAL\fP か \fBSETALL\fP 操作を使って初期化することができる。 -複数箇所からセマフォ集合の操作が行われる場面では、 誰が最初に集合を初期化すればよいか分からない。 この状況を避けるには、 \fBsemctl\fP(2) -の \fBIPC_STAT\fP 操作で取得できるセマフォのデータ構造体の \fIsem_otime\fP が 0 以外になっているかをチェックすればよい。 -.SS セマフォの上限 -セマフォ集合のリソースに関する上限のうち、 \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 -セマフォ ID あたりのセマフォの最大数: 実装依存 (Linux では、この制限値は \fI/proc/sys/kernel/sem\fP -の第1フィールドに対応し、読み出しも変更もできる)。 -.TP -\fBSEMMNS\fP -システム全体のセマフォ数の上限値: 方針依存 (Linux では、この上限値は \fI/proc/sys/kernel/sem\fP の第 2 -フィールドであり、読み出しも変更もできる)。 システム全体のセマフォ数には、 \fBSEMMSL\fP と \fBSEMMNI\fP の積という上限もある。 -.SH バグ -\fBIPC_PRIVATE\fP という名前を選んだのはおそらく失敗であろう。 \fBIPC_NEW\fP の方がより明確にその機能を表しているだろう。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index 2a2bc272..45aff0b3 100644 --- a/manual/LDP_man-pages/draft/man2/semop.2 +++ b/manual/LDP_man-pages/draft/man2/semop.2 @@ -50,7 +50,7 @@ .\" Updated 2012-05-29, Akihiro MOTOKI .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH SEMOP 2 2014\-12\-31 Linux "Linux Programmer's Manual" +.TH SEMOP 2 2020\-04\-11 Linux "Linux Programmer's Manual" .SH 名前 semop, semtimedop \- System V セマフォの操作 .SH 書式 @@ -58,48 +58,48 @@ semop, semtimedop \- System V セマフォの操作 \fB#include \fP \fB#include \fP \fB#include \fP -.sp +.PP \fBint semop(int \fP\fIsemid\fP\fB, struct sembuf *\fP\fIsops\fP\fB, size_t \fP\fInsops\fP\fB);\fP -.sp +.PP \fBint semtimedop(int \fP\fIsemid\fP\fB, struct sembuf *\fP\fIsops\fP\fB, size_t \fP\fInsops\fP\fB,\fP \fB const struct timespec *\fP\fItimeout\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBsemtimedop\fP(): _GNU_SOURCE .SH 説明 System\ V セマフォ集合 (semaphore set) のメンバーの各セマフォは 以下の関連情報を持っている: -.sp +.PP .in +4n -.nf -unsigned short semval; /* セマフォ値 */ -unsigned short semzcnt; /* ゼロを待つプロセス数 */ -unsigned short semncnt; /* 増加を待つプロセス数 */ -pid_t sempid; /* 最後に操作を行なったプロセスの ID */ -.sp -.in -4n -.fi +.EX +unsigned short semval; /* semaphore value */ +unsigned short semzcnt; /* # waiting for zero */ +unsigned short semncnt; /* # waiting for increase */ +pid_t sempid; /* PID of process that last +.EE +.in +.PP \fBsemop\fP() は \fIsemid\fP で指定されたセマフォ集合の選択されたセマフォに対して操作を行う。 \fIsops\fP は \fInsops\fP 個の要素の配列を指し、配列の各要素は個々のセマフォに対する操作を示す構造体である。その型は \fIstruct sembuf\fP で、次のメンバを持つ: -.sp +.PP .in +4n -.nf +.EX unsigned short sem_num; /* セマフォ番号 */ short sem_op; /* セマフォ操作 */ short sem_flg; /* 操作フラグ */ -.sp -.in -4n -.fi +.EE +.in +.PP \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 が存在するかによって決まり、後述のようになる。 - +.PP それぞれの操作はセマフォ集合の \fIsem_num\fP番目 のセマフォに対して実行される。セマフォ集合の最初のセマフォには 番号 0 が振られる。 そして操作は三種類あり、 \fIsem_op\fP の値で区別される。 .PP @@ -112,7 +112,7 @@ short sem_flg; /* 操作フラグ */ \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 +.IP \(bu 2 \fIsemval\fP が 0 になった: このとき \fIsemzcnt\fP の値は 1 減算される。 .IP \(bu セマフォ集合が削除された: このとき \fBsemop\fP() は失敗し、 \fIerrno\fP に \fBEIDRM\fP が設定される。 @@ -128,7 +128,7 @@ short sem_flg; /* 操作フラグ */ \fIsemval\fP が \fIsem_op\fP の絶対値より小さく、 \fBIPC_WAIT\fP が指定されていない場合は、 \fIsemncnt\fP (このセマフォの値が増加するのを待っているスレッド数のカウンター) を 1 増加させて、以下のいずれかが起こるまでスレッドを停止 (sleep) する。 -.IP \(bu 3 +.IP \(bu 2 \fIsemval\fP が \fIsem_op\fP の絶対値以上になった。この時点で、操作は上述の通り実行される。 .IP \(bu セマフォ集合がシステムから削除された: このとき \fBsemop\fP() は失敗し \fIerrno\fP に \fBEIDRM\fP が設定される。 @@ -150,9 +150,10 @@ short sem_flg; /* 操作フラグ */ \fBEAGAIN\fP が設定される (このとき \fIsops\fP の操作は実行されない)。 \fItimeout\fP 引き数が NULL の場合、 \fBsemtimedop\fP() 関数の振る舞いは \fBsemop\fP() 関数と全く同じになる。 - -\fBsemtimeop\fP() がシグナルにより割り込まれた場合、呼び出しはエラー \fBEINTR\fP で失敗し、 \fItimeout\fP -の内容は変更されないままとなる点に注意すること。 +.PP +Note that if \fBsemtimedop\fP() is interrupted by a signal, causing the call +to fail with the error \fBEINTR\fP, the contents of \fItimeout\fP are left +unchanged. .SH 返り値 成功した場合、 \fBsemop\fP() と \fBsemtimedop\fP() は 0 を返す。そうでなければ \-1 を返し、 エラーを示す \fIerrno\fP を設定する。 @@ -163,7 +164,9 @@ short sem_flg; /* 操作フラグ */ \fInsops\fP 引き数が \fBSEMOPM\fP より大きい。 \fBSEMOPM\fP は一回のシステムコールで許される操作の最大個数である。 .TP \fBEACCES\fP -呼び出し元プロセスには指定されたセマフォ操作を行うのに 必要なアクセス許可がなく、 \fBCAP_IPC_OWNER\fP ケーパビリティもない。 +The calling process does not have the permissions required to perform the +specified semaphore operations, and does not have the \fBCAP_IPC_OWNER\fP +capability in the user namespace that governs its IPC namespace. .TP \fBEAGAIN\fP 操作を直ちに処理することができず、かつ \fIsem_flg\fP に \fBIPC_NOWAIT\fP が指定されているか \fItimeout\fP @@ -195,20 +198,20 @@ short sem_flg; /* 操作フラグ */ \fBsemtimedop\fP() の glibc でのサポートはバージョン 2.3.3 で初めて登場した。 .SH 準拠 .\" SVr4 documents additional error conditions EINVAL, EFBIG, ENOSPC. -SVr4, POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008, SVr4. .SH 注意 .\" Like Linux, the FreeBSD man pages still document .\" the inclusion of these header files. Linux や POSIX の全てのバージョンでは、 \fI\fP と \fI\fP のインクルードは必要ない。しかしながら、いくつかの古い実装ではこれらのヘッダーファイルのインクルードが必要であり、 SVID でもこれらのインクルードをするように記載されている。このような古いシステムへの移植性を意図したアプリケーションではこれらのファイルをインクルードする必要があるかもしれない。 - +.PP あるプロセスの \fIsem_undo\fP 構造体は \fBfork\fP(2) で生成された子プロセスには継承されないが、 \fBexecve\fP(2) システムコールの場合は継承される。 .PP \fBsemop\fP() はシグナルハンドラーによって中断された後に、 決して自動的に再開することはない。 たとえシグナルハンドラーの設定時に \fBSA_RESTART\fP フラグがセットされていても再開することはない - +.PP セマフォの調整値 (\fIsemadj\fP) は、プロセス毎のセマフォ毎の整数で、 \fBSEM_UNDO\fP フラグを指定して行われた、セマフォに対するすべての操作の合計値を反転したものである。 各プロセスは \fIsemadj\fP の値のリストを保持する \(em リストのそれぞれの値は \fBSEM_UNDO\fP を使って操作が行われた個々のセマフォに対応する。 プロセスが終了する際、 セマフォ毎の @@ -216,16 +219,23 @@ Linux や POSIX の全てのバージョンでは、 \fI\fP と \fI (ただし、下記の「バグ」を参照)。 \fBsemctl\fP(2) の \fBSETVAL\fP や \fBSETALL\fP を使ってセマフォの値が直接設定された場合、 すべてのプロセスの対応する \fIsemadj\fP の値がクリアされる。 \fBclone\fP(2) の \fBCLONE_SYSVSEM\fP フラグを使うと、 複数のプロセスがひとつの \fIsemadj\fP リストを共有できる。 詳細は \fBclone\fP(2) を参照。 - +.PP あるセマフォの \fIsemval\fP, \fIsempid\fP, \fIsemzcnt\fP, \fIsemnct\fP の値はいずれも、適切な操作を指定して \fBsemctl\fP(2) を呼び出すことで取得できる。 .SS セマフォの上限 セマフォ集合のリソースに関する制限のうち、 \fBsemop\fP() に影響を及ぼすものを以下に挙げる: .TP \fBSEMOPM\fP +.\" commit e843e7d2c88b7db107a86bd2c7145dc715c058f4 .\" This /proc file is not available in Linux 2.2 and earlier -- MTK -一回の \fBsemop\fP() で許される操作の最大数 (32)。 (Linux では、この制限値は \fI/proc/sys/kernel/sem\fP -の第3フィールドに対応し、読み出しも変更もできる)。 +.\" See comment in Linux 3.19 source file include/uapi/linux/sem.h +Maximum number of operations allowed for one \fBsemop\fP() call. Before Linux +3.19, the default value for this limit was 32. Since Linux 3.19, the +default value is 500. On Linux, this limit can be read and modified via the +third field of \fI/proc/sys/kernel/sem\fP. \fINote\fP: this limit should not be +raised above 1000, because of the risk of that \fBsemop\fP() fails due to +kernel memory fragmentation when allocating memory to copy the \fIsops\fP +array. .TP \fBSEMVMX\fP \fIsemval\fP が取り得る最大値: 実装依存 (32767)。 @@ -240,40 +250,43 @@ Linux や POSIX の全てのバージョンでは、 \fI\fP と \fI しかもどれくらい長時間になるかは分からない。 別の選択肢として、このようなセマフォ調整を完全に無視してしまう方法がある (これはセマフォ操作として \fBIPC_NOWAIT\fP が指定するのと少し似ている)。 Linux は第三の手法を採用している: セマフォの値を出来るだけ (つまり 0 まで) 減少させて、プロセスの終了を直ちに続行できるようにしている。 - +.PP .\" 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 例 +.SH EXAMPLES 以下の部分的なコードは、 セマフォ 0 の値が 0 になるのを待ってから、 セマフォの値を 1 加算する処理を、 \fBsemop\fP() を使ってアトミック (atomically) に行う。 -.nf - - struct sembuf sops[2]; - int semid; +.PP +.in +4n +.EX +struct sembuf sops[2]; +int semid; - /* Code to set \fIsemid\fP omitted */ +/* 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[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; +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 +if (semop(semid, sops, 2) == \-1) { + perror("semop"); + exit(EXIT_FAILURE); +} +.EE +.in +.PP +A further example of the use of \fBsemop\fP() can be found in \fBshmop\fP(2). .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) +\fBcapabilities\fP(7), \fBsem_overview\fP(7), \fBsysvipc\fP(7), \fBtime\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/send.2 b/manual/LDP_man-pages/draft/man2/send.2 index 80869e73..11feef1f 100644 --- a/manual/LDP_man-pages/draft/man2/send.2 +++ b/manual/LDP_man-pages/draft/man2/send.2 @@ -55,19 +55,19 @@ .\" Updated 2012-05-04, Akihiro MOTOKI .\" Updated 2013-03-26, Akihiro MOTOKI .\" -.TH SEND 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH SEND 2 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 send, sendto, sendmsg \- ソケットへメッセージを送る .SH 書式 .nf \fB#include \fP \fB#include \fP -.sp +.PP \fBssize_t send(int \fP\fIsockfd\fP\fB, const void *\fP\fIbuf\fP\fB, size_t \fP\fIlen\fP\fB, int \fP\fIflags\fP\fB);\fP - +.PP \fBssize_t sendto(int \fP\fIsockfd\fP\fB, const void *\fP\fIbuf\fP\fB, size_t \fP\fIlen\fP\fB, int \fP\fIflags\fP\fB,\fP \fB const struct sockaddr *\fP\fIdest_addr\fP\fB, socklen_t \fP\fIaddrlen\fP\fB);\fP - +.PP \fBssize_t sendmsg(int \fP\fIsockfd\fP\fB, const struct msghdr *\fP\fImsg\fP\fB, int \fP\fIflags\fP\fB);\fP .fi .SH 説明 @@ -77,11 +77,11 @@ send, sendto, sendmsg \- ソケットへメッセージを送る (つまり、どの相手に送信するかは既知である)。 \fBsend\fP() と \fBwrite\fP(2) の違いは、引き数に \fIflags\fP があるかどうかだけである。 引き数 \fIflags\fP にフラグが指定されない場合、 \fBsend\fP() は \fBwrite\fP(2) と等価である。 また、 - +.PP send(sockfd, buf, len, flags); - +.PP は以下と等価である。 - +.PP sendto(sockfd, buf, len, flags, NULL, 0); .PP 引き数 \fIsockfd\fP は、データを送信するパケットのファイルディスクリプターである。 @@ -110,9 +110,11 @@ NULL と 0 でない場合は \fBEISCONN\fP エラーも返される)。 また \fIflags\fP 引き数は、以下のフラグの (0 個以上の) ビット単位の論理和を とったものを指定する。 .TP \fBMSG_CONFIRM\fP (Linux 2.3.15 以降) -転送処理に進展があった、つまり相手側から成功の応答を受けたことをリンク層に 知らせる。リンク層がこの通知を受け取らなかった場合には、通常どおり -(ユニキャスト ARP を使うなどの方法で) 近傍 (neighbor) の再検索を行う。 \fBSOCK_DGRAM\fP と \fBSOCK_RAW\fP -のソケットに対してのみ有効で、現在のところ IPv4 と IPv6 のみ実装されている。 詳しくは \fBarp\fP(7) 参照のこと。 +Tell the link layer that forward progress happened: you got a successful +reply from the other side. If the link layer doesn't get this it will +regularly reprobe the neighbor (e.g., via a unicast ARP). Valid only on +\fBSOCK_DGRAM\fP and \fBSOCK_RAW\fP sockets and currently implemented only for +IPv4 and IPv6. See \fBarp\fP(7) for details. .TP \fBMSG_DONTROUTE\fP パケットを送り出すのにゲートウェイを使用せず、 直接接続されているネットワーク上のホストだけに送る。 通常、このフラグは診断 (diagnostic) @@ -120,8 +122,13 @@ NULL と 0 でない場合は \fBEISCONN\fP エラーも返される)。 また に対してのみ定義されている。パケットソケットには定義されていない。 .TP \fBMSG_DONTWAIT\fP (Linux 2.2 以降) -非停止 (nonblocking) 操作を有効にする。操作が停止されるような場合には \fBEAGAIN\fP か \fBEWOULDBLOCK\fP -を返すようにする (\fBfcntl\fP(2) の \fBF_SETFL\fP で \fBO_NONBLOCK\fP フラグを指定することによっても有効にできる)。 +Enables nonblocking operation; if the operation would block, \fBEAGAIN\fP or +\fBEWOULDBLOCK\fP is returned. This provides similar behavior to setting the +\fBO_NONBLOCK\fP flag (via the \fBfcntl\fP(2) \fBF_SETFL\fP operation), but differs +in that \fBMSG_DONTWAIT\fP is a per\-call option, whereas \fBO_NONBLOCK\fP is a +setting on the open file description (see \fBopen\fP(2)), which will affect all +threads in the calling process and as well as other processes that hold file +descriptors referring to the same open file description. .TP \fBMSG_EOR\fP (Linux 2.2 以降) レコードの終了を指示する (\fBSOCK_SEQPACKET\fP のようにこの概念に対応しているソケット種別のときに有効)。 @@ -130,47 +137,53 @@ NULL と 0 でない場合は \fBEISCONN\fP エラーも返される)。 また 呼び出し元にさらに送るデータがあることを示す。 このフラグは TCP ソケットとともに使用され、 \fBTCP_CORK\fP ソケットオプションと同じ効果が得られる (\fBtcp\fP(7) を参照)。 \fBTCP_CORK\fP との違いは、このフラグを使うと呼び出し単位で この機能を有効にできる点である。 - +.IP Linux 2.6 以降では、このフラグは UDP ソケットでもサポートされており、 このフラグ付きで送信された全てのデータを一つのデータグラムにまとめて 送信することを、カーネルに知らせる。まとめられたデータグラムは、 このフラグを指定せずにこのシステムコールが実行された際に初めて送信される (\fBudp\fP(7) に記載されているソケットオプション \fBUDP_CORK\fP も参照)。 .TP \fBMSG_NOSIGNAL\fP (Linux 2.2 以降) -ストリーム指向のソケットで相手側が接続を切断した時に、エラーとして \fBSIGPIPE\fP を送信しないように要求する。この場合でも \fBEPIPE\fP -は返される。 +Don't generate a \fBSIGPIPE\fP signal if the peer on a stream\-oriented socket +has closed the connection. The \fBEPIPE\fP error is still returned. This +provides similar behavior to using \fBsigaction\fP(2) to ignore \fBSIGPIPE\fP, +but, whereas \fBMSG_NOSIGNAL\fP is a per\-call feature, ignoring \fBSIGPIPE\fP sets +a process attribute that affects all threads in the process. .TP \fBMSG_OOB\fP \fI帯域外 (out\-of\-band)\fP データをサポートするソケット (例えば \fBSOCK_STREAM\fP) で \fI帯域外\fP データを送る。下位プロトコルも \fI帯域外\fP データをサポートしている必要がある。 .SS sendmsg() \fBsendmsg\fP() で利用されている \fImsghdr\fP 構造体は以下の通り。 +.PP .in +4n -.nf - +.EX struct msghdr { - void *msg_name; /* 追加のアドレス */ - socklen_t msg_namelen; /* アドレスのサイズ */ - struct iovec *msg_iov; /* scatter/gather 配列 */ - size_t msg_iovlen; /* msg_iov の要素数 */ - void *msg_control; /* 補助データ (後述) */ - size_t msg_controllen; /* 補助データバッファー長 */ - int msg_flags; /* フラグ (未使用) */ + void *msg_name; /* Optional address */ + socklen_t msg_namelen; /* Size of address */ + struct iovec *msg_iov; /* Scatter/gather array */ + size_t msg_iovlen; /* # elements in msg_iov */ + void *msg_control; /* Ancillary data, see below */ + size_t msg_controllen; /* Ancillary data buffer len */ + int msg_flags; /* Flags (unused) */ }; -.fi +.EE .in .PP フィールド \fImsg_name\fP は、 未接続のソケットでデータグラムの宛先アドレスを指定するのに使用される。 このフィールドはアドレスを格納したバッファーを指す。 フィールド \fImsg_namelen\fP にはアドレスの大きさを設定しなければならない。 接続済のソケットについては、これらのフィールドにはそれぞれ NULL と 0 を指定しなければならない。 - +.PP フィールド \fBmsg_iov\fP と \fImsg_iovlen\fP は scatter\-gather 用の場所を指定する。 \fBwritev\fP(2) と同じ。 - -フィールド \fImsg_control\fP と \fImsg_controllen\fP を使用して制御情報を送信することができる。 -カーネルが処理できる制御バッファーのソケットあたりの最大長は、 \fI/proc/sys/net/core/optmem_max\fP の値に制限されている。 -\fBsocket\fP(7) を参照。 - +.PP +You may send control information (ancillary data) using the \fImsg_control\fP +and \fImsg_controllen\fP members. The maximum control buffer length the kernel +can process is limited per socket by the value in +\fI/proc/sys/net/core/optmem_max\fP; see \fBsocket\fP(7). For further information +on the use of ancillary data in various socket domains, see \fBunix\fP(7) and +\fBip\fP(7). +.PP .\" Still to be documented: .\" Send file descriptors and user credentials using the .\" msg_control* fields. @@ -187,7 +200,7 @@ struct msghdr { ソケットファイルへの書き込み許可がなかったか、パス名へ到達するまでの ディレクトリのいずれかに対する検索許可がなかった。 (\fBpath_resolution\fP(7) も参照のこと) -.sp +.IP (UDP ソケットの場合) ユニキャストアドレスであるかのように、 ネットワークアドレスやブロードキャストアドレスへの送信が試みられた。 .TP @@ -201,8 +214,11 @@ struct msghdr { そのソケットに一時ポートをバインドしようとした際に、 一時ポートとして使用する範囲のポート番号がすべて使用中であった。 \fBip\fP(7) の \fI/proc/sys/net/ipv4/ip_local_port_range\fP の議論を参照のこと。 .TP +\fBEALREADY\fP +Another Fast Open is in progress. +.TP \fBEBADF\fP -無効なディスクリプターが指定された。 +\fIsockfd\fP is not a valid open file descriptor. .TP \fBECONNRESET\fP 接続が接続相手によりリセットされた。 @@ -239,7 +255,7 @@ struct msghdr { ソケットが接続されておらず、接続先も指定されていない。 .TP \fBENOTSOCK\fP -引き数 \fIsockfd\fP はソケットではない。 +The file descriptor \fIsockfd\fP does not refer to a socket. .TP \fBEOPNOTSUPP\fP 引き数 \fIflags\fP のいくつかのビットが、そのソケット種別では不適切なものである。 @@ -248,30 +264,31 @@ struct msghdr { 接続指向のソケットでローカル側が閉じられている。 この場合、 \fBMSG_NOSIGNAL\fP が設定されていなければ、プロセスには \fBSIGPIPE\fP も同時に送られる。 .SH 準拠 -4.4BSD, SVr4, POSIX.1\-2001. (これらの関数コールは 4.2BSD で最初に登場した)。 -.LP +4.4BSD, SVr4, POSIX.1\-2001. These interfaces first appeared in 4.2BSD. +.PP POSIX.1\-2001 には、 \fBMSG_OOB\fP と \fBMSG_EOR\fP フラグだけが記載されている。 POSIX.1\-2008 では \fBMSG_NOSIGNAL\fP が規格に追加されている。 \fBMSG_CONFIRM\fP フラグは Linux での拡張である。 .SH 注意 -.\" glibc bug raised 12 Mar 2006 +.\" glibc bug for msg_controllen raised 12 Mar 2006 .\" http://sourceware.org/bugzilla/show_bug.cgi?id=2448 .\" The problem is an underlying kernel issue: the size of the -.\" __kernel_size_t type used to type this field varies -.\" across architectures, but socklen_t is always 32 bits. -POSIX.1\-2001 では、構造体 \fImsghdr\fP のフィールド \fImsg_controllen\fP は \fIsocklen_t\fP -型であるべきだとされているが、 現在の glibc では \fIsize_t\fP 型である。 - +.\" __kernel_size_t type used to type these fields varies +.\" across architectures, but socklen_t is always 32 bits, +.\" as (at least with GCC) is int. +According to POSIX.1\-2001, the \fImsg_controllen\fP field of the \fImsghdr\fP +structure should be typed as \fIsocklen_t\fP, and the \fImsg_iovlen\fP field +should be typed as \fIint\fP, but glibc currently types both as \fIsize_t\fP. +.PP \fBsendmmsg\fP(2) には、一度の呼び出しでの複数のデータグラムの送信に使用できる Linux 固有の システムコールに関する情報が書かれている。 .SH バグ Linux は \fBENOTCONN\fP を返す状況で \fBEPIPE\fP を返すことがある。 -.SH 例 +.SH EXAMPLES \fBsendto\fP() の利用例が \fBgetaddrinfo\fP(3) に記載されている。 .SH 関連項目 \fBfcntl\fP(2), \fBgetsockopt\fP(2), \fBrecv\fP(2), \fBselect\fP(2), \fBsendfile\fP(2), \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) +\fBip\fP(7), \fBipv6\fP(7), \fBsocket\fP(7), \fBtcp\fP(7), \fBudp\fP(7), \fBunix\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/sendfile.2 b/manual/LDP_man-pages/draft/man2/sendfile.2 deleted file mode 100644 index bb2aa01c..00000000 --- a/manual/LDP_man-pages/draft/man2/sendfile.2 +++ /dev/null @@ -1,140 +0,0 @@ -.\" This man page is Copyright (C) 1998 Pawel Krawczyk. -.\" -.\" %%%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: sendfile.2,v 1.5 1999/05/18 11:54:11 freitag Exp $ -.\" 2000-11-19 bert hubert : in_fd cannot be socket -.\" -.\" 2004-12-17, mtk -.\" updated description of in_fd and out_fd for 2.6 -.\" Various wording and formatting changes -.\" -.\" 2005-03-31 Martin Pool mmap() improvements -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1999-06-26, HANATAKA Shinya -.\" Updated 2001-02-16, Kentaro Shirakata -.\" Updated 2003-09-08, Kentaro Shirakata -.\" Updated 2005-03-14, Akihiro MOTOKI -.\" Updated 2005-04-17, Akihiro MOTOKI -.\" Updated 2010-04-18, Akihiro MOTOKI , LDP v3.24 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH SENDFILE 2 2011\-09\-14 Linux "Linux Programmer's Manual" -.SH 名前 -sendfile \- ファイルディスクリプター間でデータを転送する -.SH 書式 -\fB#include \fP -.sp -.\" The below is too ugly. Comments about glibc versions belong -.\" in the notes, not in the header. -.\" -.\" .B #include -.\" .br -.\" .B #if (__GLIBC__==2 && __GLIBC_MINOR__>=1) || __GLIBC__>2 -.\" .br -.\" .B #include -.\" .br -.\" #else -.\" .br -.\" .B #include -.\" .br -.\" .B /* No system prototype before glibc 2.1. */ -.\" .br -.\" .BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", off_t *" \ -.\" offset ", size_t" " count" ) -.\" .br -.\" .B #endif -.\" -\fBssize_t sendfile(int\fP\fI out_fd\fP\fB, int\fP\fI in_fd\fP\fB, off_t *\fP\fIoffset\fP\fB, -size_t\fP\fI count\fP\fB);\fP -.SH 説明 -\fBsendfile\fP() は、あるファイルディスクリプターから別の ファイルディスクリプターへのデータのコピーを行う。 -このコピーはカーネル内で行われるので、 \fBsendfile\fP() は、 \fBread\fP(2) と \fBwrite\fP(2) -を組み合わせるよりも効率がよい。 \fBread\fP(2) や \fBwrite\fP(2) ではユーザー空間との間でデータの転送が必要となるからである。 - -\fIin_fd\fP は読み込みのためにオープンされたファイルディスクリプター、 \fIout_fd\fP -は書き込みのためにオープンされたディスクリプターでなければならない。 - -\fIoffset\fP が NULL でない場合、 \fIoffset\fP は \fBsendfile\fP() が \fIin_fd\fP -のどこからデータを読み始めるかを示すファイルオフセットを保持する変数への ポインターである。 \fBsendfile\fP() -は復帰する時、この変数に最後に読み込んだバイトの 次のバイトのオフセットを書き込む。 \fIoffset\fP が NULL でない場合、 -\fBsendfile\fP() は \fIin_fd\fP のファイルオフセットの現在値を変更しない。 NULL の場合は、ファイルオフセットの現在値を -\fIin_fd\fP から読み込んだバイト数を反映した位置に調整する。 - -\fIoffset\fP が NULL の場合、データは \fIin_fd\fP の現在のファイルオフセットから読み出され、 -ファイルオフセットはこの呼び出しで更新される。 - -\fIcount\fP は、ファイルディスクリプター間でコピーするバイト数である。 - -\fIin_fd\fP 引き数は \fBmmap\fP(2) 風の操作ができるファイルを指していなければならな -い (ソケットを指定することはできない)。 - -2.6.33 より前の Linux カーネルでは \fIout_fd\fP はソケットを参照していなければな -らない。Linux 2.6.33 以降では、任意のファイルを参照することができる。 -通常のファイルの場合には \fBsendfile\fP() はファイルオフセットを適切に変更する。 -.SH 返り値 -転送に成功した場合、 \fIout_fd\fP に書き込まれたバイト数を返す。エラーの場合、\-1 を返し、 \fIerrno\fP に適切な値を設定する。 -.SH エラー -.TP -\fBEAGAIN\fP -\fBO_NONBLOCK\fP を用いて非ブロック I/O が選択されたが、書き込みがブロックされた。 -.TP -\fBEBADF\fP -入力ファイルが読み込みのためにオープンされていないか、 出力ファイルが書き込みのためにオープンされていない。 -.TP -\fBEFAULT\fP -アドレスがおかしい。 -.TP -\fBEINVAL\fP -ディスクリプターが有効でないか、ロックされている。もしくは \fBmmap\fP(2) 風の操作が \fIin_fd\fP では利用できない。 -.TP -\fBEIO\fP -\fIin_fd\fP から読み込んでいるうちに予期しないエラーが起こった。 -.TP -\fBENOMEM\fP -\fIin_fd\fP から読み込むための十分なメモリーがない。 -.SH バージョン -\fBsendfile\fP は Linux 2.2 の新しい機能である。 インクルードファイル \fI\fP は -glibc 2.1 から存在している。 -.SH 準拠 -POSIX.1\-2001 や他の標準では規定されていない。 - -他の UNIX システムでは、異なった方式やプロトタイプで \fBsendfile\fP() -を実装している。移植性を考慮したプログラムでは使用すべきではない。 -.SH 注意 -\fBsendfile\fP() を使って TCP ソケットにファイルを送ろうとしていて、 ファイルの内容の前にヘッダーデータを付け加える必要がある場合は、 -パケット数を最小にして性能を上げるために \fBtcp\fP(7) に記述されている \fBTCP_CORK\fP オプションを使うといいだろう。 - -Linux 2.4 とそれ以前のバージョンでも、 \fIout_fd\fP は通常のファイルを参照でき、 -\fBsendfile\fP() はそのファイルのオフセットの現在値を変更していた。 - -元々の Linux \fBsendfile\fP() システムコールは大きなファイルオフセットを -扱えるように設計されていなかった。その結果、Linux 2.4 で、 -ビット幅の大きな \fIoffset\fP 引き数を持った \fBsendfile64\fP() が追加された。 -glibc の \fBsendfile\fP() のラッパー関数はカーネルによるこの違いを吸収している。 - -\fBsendfile\fP() が \fBEINVAL\fP や \fBENOSYS\fP で失敗するような場合は、 アプリケーションは -\fBread\fP(2)/\fBwrite\fP(2) に戻すことを考えてもよいかもしれない。 - -Linux 固有の \fBsplice\fP(2) システムコールは、任意のファイル間 (例えば、 -ソケット同士) でのデータ転送をサポートしている。 -.SH 関連項目 -\fBmmap\fP(2), \fBopen\fP(2), \fBsocket\fP(2), \fBsplice\fP(2) - -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/sendmmsg.2 b/manual/LDP_man-pages/draft/man2/sendmmsg.2 index 08e66543..85bed544 100644 --- a/manual/LDP_man-pages/draft/man2/sendmmsg.2 +++ b/manual/LDP_man-pages/draft/man2/sendmmsg.2 @@ -35,52 +35,52 @@ .\" all rights reserved. .\" Translated 2013-05-22, Akihiro MOTOKI .\" -.TH SENDMMSG 2 2014\-07\-08 Linux "Linux Programmer's Manual" +.TH SENDMMSG 2 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 sendmmsg \- 複数のメッセージをソケットへ送信する .SH 書式 .nf \fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ \fB#include \fP - +.PP \fBint sendmmsg(int \fP\fIsockfd\fP\fB, struct mmsghdr *\fP\fImsgvec\fP\fB, unsigned int \fP\fIvlen\fP\fB,\fP -\fB unsigned int \fP\fIflags\fP\fB);\fP +\fB int \fP\fIflags\fP\fB);\fP .fi .SH 説明 .\" See commit 228e548e602061b08ee8e8966f567c12aa079682 \fBsendmmsg\fP() システムコールは \fBsendmsg\fP(2) の拡張で、 このシステムコールを使うと一度の呼び出しでソケットに複数のメッセージを送信できる (アプリケーションによっては性能上のメリットがある)。 - +.PP \fIsockfd\fP 引き数は、 データを送信するソケットのファイルディスクリプターである。 - +.PP \fImsgvec\fP 引き数は \fImmsghdr\fP 構造体の配列である。 この配列の大きさは \fIvlen\fP で指定する。 - +.PP \fImmsghdr\fP 構造体は \fI\fP で次のように定義されている。 - +.PP .in +4n -.nf +.EX struct mmsghdr { struct msghdr msg_hdr; /* メッセージヘッダー */ unsigned int msg_len; /* 送信されたバイト数 */ }; -.fi +.EE .in .PP \fImsg_hdr\fP フィールドは、 \fBsendmsg\fP(2) で説明されている \fImsghdr\fP 構造体である。 \fImsg_len\fP フィールドは \fImsg_hdr\fP から送信されたメッセージのバイト数を返すのに使用される。 この値は \fBsendmsg\fP(2) をこのヘッダーに対して呼び出した場合の返り値と同じである。 - +.PP \fIflags\fP 引き数には複数のフラグを論理和 (OR) で指定できる。フラグは \fBsendmsg\fP(2) と同じである。 - +.PP 停止 (blocking) モードの \fBsendmmsg\fP() の呼び出しは、 \fIvlen\fP 個のメッセージが送信されるまで停止する。 非停止 (nonblocking) モードの呼び出しでは、 送信できるだけのメッセージ (最大で \fIvlen\fP 個) を送信し、 すぐに返る。 - +.PP \fBsendmmsg\fP() が返った際には、 \fImsgvec\fP の送信が行われた要素の \fImsg_len\fP フィールドは、対応する \fImsg_hdr\fP から送信されたバイト数が入っている。 呼び出しの返り値は、更新された \fImsgvec\fP の要素数である。 .SH 返り値 成功すると、 \fBsendmmsg\fP() は \fImsgvec\fP から送信されたメッセージ数を返す。 返り値が \fIvlen\fP よりも小さい場合、 呼び出した側では再度 \fBsendmmsg\fP を呼び出して残りのメッセージを送信することができる。 - +.PP エラーの場合、 \-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 .SH エラー .\" commit 728ffb86f10873aaf4abd26dde691ee40ae731fe @@ -91,7 +91,8 @@ struct mmsghdr { .\" .\" This matches the behavior of other syscalls like read/write - it .\" is not an error if less than the requested number of elements are sent. -エラーは \fBsendmsg\fP(2) と同じである。 エラーが返されるのは、 データグラムが全く送信できなかった場合のみである。 +Errors are as for \fBsendmsg\fP(2). An error is returned only if no datagrams +could be sent. See also BUGS. .SH バージョン \fBsendmmsg\fP() システムコールは Linux 3.0 で追加された。 glibc でのサポートはバージョン 2.14 で追加された。 .SH 準拠 @@ -107,11 +108,17 @@ struct mmsghdr { .\" the first unsent message, so capping is simpler and requires less .\" application logic than returning EINVAL. \fIvlen\fP に指定できる値の最大値は \fBUIO_MAXIOV\fP (1024) である。 -.SH 例 +.SH バグ +If an error occurs after at least one message has been sent, the call +succeeds, and returns the number of messages sent. The error code is lost. +The caller can retry the transmission, starting at the first failed message, +but there is no guarantee that, if an error is returned, it will be the same +as the one that was lost on the previous call. +.SH EXAMPLES 以下の例では、 \fBsendmmsg\fP() を使って、 一度のシステムコールで、 \fIonetwo\fP と \fIthree\fP を二つの別々の UDP データグラムで送信する。 一つ目のデータグラムの内容は、二つのバッファーから取得される。 - -.nf +.PP +.EX #define _GNU_SOURCE #include #include @@ -124,7 +131,7 @@ int main(void) { int sockfd; - struct sockaddr_in sa; + struct sockaddr_in addr; struct mmsghdr msg[2]; struct iovec msg1[2], msg2; int retval; @@ -135,10 +142,10 @@ main(void) exit(EXIT_FAILURE); } - sa.sin_family = AF_INET; - sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK); - sa.sin_port = htons(1234); - if (connect(sockfd, (struct sockaddr *) &sa, sizeof(sa)) == \-1) { + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); + addr.sin_port = htons(1234); + if (connect(sockfd, (struct sockaddr *) &addr, sizeof(addr)) == \-1) { perror("connect()"); exit(EXIT_FAILURE); } @@ -168,10 +175,9 @@ main(void) exit(0); } -.fi +.EE .SH 関連項目 \fBrecvmmsg\fP(2), \fBsendmsg\fP(2), \fBsocket\fP(2), \fBsocket\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/set_mempolicy.2 b/manual/LDP_man-pages/draft/man2/set_mempolicy.2 deleted file mode 100644 index 17758d0b..00000000 --- a/manual/LDP_man-pages/draft/man2/set_mempolicy.2 +++ /dev/null @@ -1,156 +0,0 @@ -.\" Copyright 2003,2004 Andi Kleen, SuSE Labs. -.\" and Copyright 2007 Lee Schermerhorn, Hewlett Packard -.\" -.\" %%%LICENSE_START(VERBATIM_PROF) -.\" 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. -.\" -.\" Formatted or processed versions of this manual, if unaccompanied by -.\" the source, must acknowledge the copyright and authors of this work. -.\" %%%LICENSE_END -.\" -.\" 2006-02-03, mtk, substantial wording changes and other improvements -.\" 2007-08-27, Lee Schermerhorn -.\" more precise specification of behavior. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated 2006-08-14, Akihiro MOTOKI , LDP v2.39 -.\" Updated 2007-01-07, Akihiro MOTOKI, LDP v2.43 -.\" Updated 2008-02-13, Akihiro MOTOKI, LDP v2.77 -.\" Updated 2008-08-06, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2008-08-21, Akihiro MOTOKI, LDP v3.07 -.\" Updated 2008-09-02, Akihiro MOTOKI, LDP v3.08 -.\" Updated 2008-11-19, Akihiro MOTOKI, LDP v3.13 -.\" -.TH SET_MEMPOLICY 2 2014\-05\-28 Linux "Linux Programmer's Manual" -.SH 名前 -set_mempolicy \- プロセスとその子プロセスの NUMA メモリーの デフォルトポリシーを設定する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBlong set_mempolicy(int \fP\fImode\fP\fB, const unsigned long *\fP\fInodemask\fP\fB,\fP -\fB unsigned long \fP\fImaxnode\fP\fB);\fP -.sp -\fI\-lnuma\fP でリンクする。 -.fi -.SH 説明 -\fBset_mempolicy\fP() は、呼び出し元プロセスの NUMA ポリシーを \fIpolicy\fP に設定する。 NUMA -ポリシーはポリシーモードと 0 個以上のノードから構成され、 設定内容は引き数 \fImode\fP, \fInodemask\fP, \fImaxnode\fP -により指定される。 - -NUMA (非対称メモリーアクセス) マシンでは、CPU により メモリーコントローラーが異なり、距離も異なっている。 -メモリーポリシーは、どのノードからメモリーをそのプロセスに 割り当てるかを定めるものである。 - -\fBset_mempolicy\fP() は、プロセスのデフォルトポリシーを定める。 プロセスのポリシーは、 \fBmbind\fP(2) -で設定される特定のポリシーにより制御されるメモリー領域以外の プロセスのアドレス空間におけるページの割り当てに適用される。 -プロセスのデフォルトポリシーは、 \fBMAP_PRIVATE\fP フラグを指定した \fBmmap\fP(2) -を使ってマップされたメモリーマップファイルに対する読み出し専用 (ロードされるだけ) のページの割り当てにも適用される。 また、 -\fBMAP_SHARED\fP フラグを指定した \fBmmap\fP(2) を使ってマップされたメモリーマップファイルに対するページの割り当てにも 適用される -(この場合はページのアクセス種別に関わらず適用される) 。 設定したポリシーは、プロセスに新規のページが割り当てられるときにのみ -適用される。無名メモリー (anonymous memory) の場合、新規ページの割り当ては -アプリケーションが初めてページにアクセスした際に行われる。 - -\fImode\fP 引き数には \fBMPOL_DEFAULT\fP, \fBMPOL_BIND\fP, \fBMPOL_INTERLEAVE\fP, -\fBMPOL_PREFERRED\fP のいずれか一つを指定してしなければならない。 \fBMPOL_DEFAULT\fP 以外のポリシーの場合、呼び出し元は -\fInodemask\fP 引き数で一つ以上のノードを指定する必要がある。 - -\fImode\fP 引き数には、追加で \fIモードフラグ\fP を含めることもできる。 サポートされている \fIモードフラグ\fP は以下の通りである。 -.TP -\fBMPOL_F_STATIC_NODES\fP (Linux 2.6.26 以降) -空でない \fInodemask\fP は、物理ノード ID である。 Linux では、そのプロセスが異なる CPU 集合コンテキスト (cpuset -context) に移動した場合でも、そのプロセスの現在の CPU 集合コンテキストで 許可されているノード集合が変化した場合でも、 -\fInodemask\fP をマッピングし直すことはない。 -.TP -\fBMPOL_F_RELATIVE_NODES\fP (Linux 2.6.26 以降) -空でない \fInodemask\fP は、そのプロセスの現在の CPU 集合で許可されているノード ID 集合 における相対的なノード ID である。 -.PP -\fInodemask\fP は、最大で \fImaxnode\fP ビットから構成されるノード ID のビットマスクを指す。 ビットマスクの大きさは、直近の -\fIsizeof(unsigned long)\fP の倍数に切り上げられるが、カーネルが使用するのは \fImaxnode\fP 個までのビットだけである。 -NULL 値の \fInodemask\fP もしくは値が 0 の \fImaxnode\fP はノードの空集合を表す。 \fImaxnode\fP の値が 0 の場合、 -\fInodemask\fP 引き数は無視される。 - -\fInodemask\fP が必須の場面では、 \fInodemask\fP に、オンラインで、そのプロセスの現在の CPU 集合コンテキストで 許可されており -(\fBMPOL_F_STATIC_NODES\fP モードフラグが指定されていない場合)、メモリーがあるノードが 少なくとも一つ入っていなければならない。 -\fImode\fP に \fBMPOL_F_STATIC_NODES\fP がセットされ、 \fInodemask\fP が必須の場面で、 \fInodemask\fP -に、そのプロセスの現在の CPU 集合コンテキストで許可されたノードが 一つも含まれていない場合には、メモリーのポリシーとしてデフォルトの -「ローカルから割り当て (local allocation)」が適用される。 そのプロセスの CPU 集合コンテキストが \fInodemask\fP -で指定されたノードを少なくとも一つ含むようになるまでは、 結果的に指定された動作が上書きされることになる。 - -\fBMPOL_DEFAULT\fP モードは、デフォルトではないプロセスのメモリーポリシーを削除することを -指定するものである。これにより、メモリーポリシーはシステムの デフォルトポリシーに「戻る」ことになる。 -システムのデフォルトポリシーは「ローカルからの割り当て (local allocation)」、 つまりメモリー割り当てのきっかけとなった CPU -のノードのメモリーが割り当てられる。 \fInodemask\fP には NULL を指定しなければならない。 「自ノード (local -node)」に空きメモリーが全くない場合、システムは 「近くの (near by) ノード」からメモリーを割り当てようと試みる。 - -\fBMPOL_BIND\fP モードは厳密なポリシーで、メモリー割り当ては \fInodemask\fP に指定されたノードに限定される。 \fInodemask\fP -に 2 個以上のノードが指定された場合、ページの割り当ては ノード ID が数字として最小のノードから開始され、 -そのノードに空きメモリーがなくなるまでそのノードから ページ割り当てが行われる。そのノードに空きメモリーがなくなったら、 次に小さなノード ID -を持つノードからページ割り当てが行われる。 これを、 \fInodemask\fP で指定された全てのノードで空きメモリーがなくなるまで繰り返す。 -\fInodemask\fP で指定された以外のノードからはページの割り当ては行われない。 - -.\" NOTE: the following sentence doesn't make sense in the context -.\" of set_mempolicy() -- no memory area specified. -.\" To be effective the memory area should be fairly large, -.\" at least 1MB or bigger. -\fBMPOL_INTERLEAVE\fP では、ページ割り当てを \fInodemask\fP に指定されたノードの間でノード ID の数字順で交互に行う。 -このポリシーでは、複数のノードにページを広げて配置し、これらのページへのメモリー アクセスを分散することで、遅延ではなく、帯域を最適化する。 -ただし、一つのページへのアクセスに関しては依然として一つのノードのメモリー帯域 が上限となる。 - -\fBMPOL_PREFERRED\fP は、割り当て時に優先されるノード (preferred node) を設定する。 -カーネルはまず優先ノードからページ割り当てを行おうとし、 優先ノードに空きメモリーが少ない場合に「近くの (near by)」ノードから -割り当てを行う。 \fInodemask\fP に複数のノード ID が指定された場合は、 \fInodemask\fP -内の最初のノードが優先ノードとして選択される。 引き数 \fInodemask\fP, \fImaxnode\fP で空集合が指定された場合は、ポリシーは -(上述のシステムの デフォルトポリシーと同様に) 「ローカルからの割り当て」となる。 - -プロセスのメモリーポリシーは \fBexecve\fP(2) の前後で保持され、 \fBfork\fP(2) や \fBclone\fP(2) -を使って作成された子プロセスに継承される。 -.SH 返り値 -成功すると、 \fBset_mempolicy\fP() は 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 -.SH エラー -.TP -\fBEFAULT\fP -\fInodemask\fP と \fImaxnode\fP で指定されたメモリー領域の一部または全部が、 呼び出し元がアクセス可能なアドレス空間外を指している。 -.TP -\fBEINVAL\fP -\fImode\fP が不正である。 \fImode\fP が \fBMPOL_DEFAULT\fP で、 \fInodemask\fP が空ではない。 \fImode\fP が -\fBMPOL_BIND\fP か \fBMPOL_INTERLEAVE\fP で、 \fInodemask\fP が空である。 \fImaxnode\fP -で実際に意味があるビット数より多くのビット数が指定された。 \fInodemask\fP に、サポートされている最大ノード ID -より大きいノードが指定された。 \fInodemask\fP に、オンラインで、かつそのプロセスの現在の CPU 集合コンテキストで -許可されているノードが一つも含まれていないか、 メモリーを含むノードが一つも指定されていない。 \fImode\fP 引き数に -\fBMPOL_F_STATIC_NODES\fP と \fBMPOL_F_RELATIVE_NODES\fP の両方が指定された。 -.TP -\fBENOMEM\fP -利用可能なカーネルメモリーが十分でなかった。 -.SH バージョン -\fBset_mempolicy\fP() システムコールはバージョン 2.6.7 で Linux カーネルに追加された。 -.SH 準拠 -このシステムコールは Linux 固有である。 -.SH 注意 -ページがスワップアウトされる場合には、 プロセスポリシーの設定は推奨されない。 スワップアウトされたページがページインする際にも、 -ページ割り当て時に適用されるプロセスポリシーやメモリー領域ポリシーが 使用される。 - -ライブラリによるサポートについては \fBnuma\fP(7) を参照。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/set_thread_area.2 b/manual/LDP_man-pages/draft/man2/set_thread_area.2 deleted file mode 100644 index ac7fc354..00000000 --- a/manual/LDP_man-pages/draft/man2/set_thread_area.2 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Copyright (C) 2003 Free Software Foundation, Inc. -.\" Author: Kent Yoder -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" This file is distributed according to the GNU General Public License. -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2003-07-08, Akihiro MOTOKI -.\" Updated 2005-02-24, Akihiro MOTOKI -.\" Updated 2013-04-03, Akihiro MOTOKI -.\" -.TH SET_THREAD_AREA 2 2012\-07\-13 Linux "Linux Programmer's Manual" -.SH 名前 -set_thread_area \- スレッド局所記憶 (TLS) 領域を設定する -.SH 書式 -\fB#include \fP -.br -\fB#include \fP -.sp -\fBint set_thread_area(struct user_desc *\fP\fIu_info\fP\fB);\fP - -\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 -.SH 説明 -\fBset_thread_area\fP() は、カレントスレッドのスレッド局所記憶 (thread\-local storage; TLS) -配列の中のエントリーを設定する。 \fBset_thread_area\fP() により設定される TLS -配列のエントリーは、ユーザーから引き数として渡される \fIu_info\->entry_number\fP の値に対応している。値が範囲内にある場合、 -\fBset_thread_area\fP() は \fIu_info\fP で指された TLS ディスクリプターをスレッドの TLS 配列にコピーする。 -.PP -\fIentry_number\fP として \-1 が渡された場合、 \fBset_thread_area\fP() は未使用 (free) の TLS -エントリーを使用する。 未使用の TLS エントリーがあった場合、どのエントリーが変更されたかが分かる ように終了時に -\fIu_info\->entry_number\fP の値が変更される。 -.SH 返り値 -\fBset_thread_area\fP() は成功した場合 0 を返す。失敗した場合は \-1 を返し、 \fIerrno\fP を適切に設定する。 -.SH エラー -.TP -\fBEINVAL\fP -\fIu_info\->entry_number\fP が範囲外である。 -.TP -\fBEFAULT\fP -\fIu_info\fP が不正なポインターである。 -.TP -\fBESRCH\fP -未使用の TLS エントリーが見つからなかった。 -.SH バージョン -\fBset_thread_area\fP() は Linux 2.5.29 で初めて登場した。 -.SH 準拠 -\fBset_thread_area\fP() は Linux 独自であり、移植を意図したプログラムでは使用すべきではない。 -.SH 注意 -このシステムコールは通常はスレッドライブラリでのみ使用されることを目的として用意されているため、 glibc -はこのシステムコールに対するラッパー関数を提供していない。おそらくないと思うが、このシステムコールを直接呼び出したい場合は \fBsyscall\fP(2) -を使うこと。 -.SH 関連項目 -\fBget_thread_area\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index 846c0476..38d6ed01 100644 --- a/manual/LDP_man-pages/draft/man2/set_tid_address.2 +++ b/manual/LDP_man-pages/draft/man2/set_tid_address.2 @@ -34,15 +34,17 @@ .\" by Yuichi SATO .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH SET_TID_ADDRESS 2 2014\-07\-08 Linux "Linux Programmer's Manual" +.TH SET_TID_ADDRESS 2 2020\-12\-21 Linux "Linux Programmer's Manual" .SH 名前 set_tid_address \- スレッド ID へのポインターを設定する .SH 書式 .nf \fB#include \fP -.sp -\fBlong set_tid_address(int *\fP\fItidptr\fP\fB);\fP +.PP +\fBpid_t set_tid_address(int *\fP\fItidptr\fP\fB);\fP .fi +.PP +\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 .SH 説明 各スレッドについて、カーネルは \fIset_child_tid\fP と \fIclear_child_tid\fP という 2 つの属性を保持する。この 2 つの属性はデフォルトでは NULL である。 @@ -56,15 +58,15 @@ set_tid_address \- スレッド ID へのポインターを設定する \fIclear_child_tid\fP スレッドが \fBCLONE_CHILD_CLEARTID\fP フラグを指定した \fBclone\fP(2) によって開始された場合、 \fIclear_child_tid\fP は \fBclone\fP(2) のシステムコールの \fIctid\fP 引き数で渡された値に設定される。 -.LP +.PP システムコール \fBset_tid_address\fP() は呼び出し元スレッドの \fIclear_child_tid\fP の値を \fItidptr\fP に設定する。 -.LP +.PP \fIclear_child_tid\fP が NULL でないスレッドが終了すると、そのスレッドが他のスレッドとメモリーを共有していれば、 \fIclear_child_tid\fP で指定されたアドレスに 0 が書き込まれ、カーネルは以下の処理を実行する。 - +.PP futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0); - +.PP この処理の結果、このメモリーアドレスに対する futex wait を実行しているスレッドを一つ起こす (wake)。 futex wake 操作でのエラーは無視される。 .SH 返り値 @@ -75,9 +77,10 @@ set_tid_address \- スレッド ID へのポインターを設定する この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux 2.5.49 以降で有効である。 .SH 準拠 このシステムコールは Linux 固有である。 +.SH 注意 +glibc はこのシステムコールに対するラッパー関数を提供していない。 \fBsyscall\fP(2) を使って呼び出すこと。 .SH 関連項目 \fBclone\fP(2), \fBfutex\fP(2), \fBgettid\fP(2) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 4fb3e4f9..00000000 --- a/manual/LDP_man-pages/draft/man2/seteuid.2 +++ /dev/null @@ -1,113 +0,0 @@ -.\" 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 -.\" Added notes on capability requirements -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001, 2005 Yuichi SATO -.\" all rights reserved. -.\" Translated 2001-06-04, Yuichi SATO -.\" Updated & Modified 2005-01-04, Yuichi SATO -.\" Updated 2010-04-23, Akihiro MOTOKI , LDP v3.24 -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH SETEUID 2 2014\-09\-21 Linux "Linux Programmer's Manual" -.SH 名前 -seteuid, setegid \- 実効ユーザー ID や 実効グループ ID を設定する -.SH 書式 -\fB#include \fP -.br -\fB#include \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 が適切に設定される。 - -\fI注意\fP: 呼び出し元が UID 0 であっても \fBseteuid\fP() が失敗する場合がある。 \fBseteuid\fP() -からのリターンが失敗かどうかの確認を省略することは重大なセキュリティ上のエラーとなる。 -.SH エラー -.TP -\fBEINVAL\fP -対象のユーザー ID かグループ ID がこのユーザー名前空間では有効ではない。 -.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 -glibc 2.0 では、 \fBseteuid(\fP\fIeuid\fP\fB)\fP は \fBsetreuid(\-1,\fP\fI euid\fP\fB)\fP と等価であり、保存 -set\-user\-ID を変更するかもしれない。 glibc 2.1 では、 \fBsetresuid(\-1,\fP\fI euid\fP\fB, \-1)\fP -と等価であり、保存 set\-user\-ID 変更しない。 同様のことが \fBsetegid\fP() にも言えるが、 glibc 2.2 か 2.3 で、 -実装が \fBsetregid(\-1,\fP\fI egid\fP\fB)\fP から \fBsetresgid(\-1,\fP\fI egid\fP\fB, \-1)\fP -へ変更された点だけが違う (どの glibc バージョンで変更が行われたかは、ハードウェアアーキテクチャーによって異なる)。 - -POSIX.1 では、 \fBseteuid\fP() (\fBsetegid\fP()) で、 \fIeuid\fP (\fIegid\fP) として現在の実効ユーザー -(グループ) ID と同じ値を指定可能である 必要はないとされており、いくつかの実装では \fIeuid\fP (\fIegid\fP) として現在の実効ユーザー -(グループ) ID と同じ値を 指定することができない。 -.SS "C ライブラリとカーネル ABI の違い" -Linux では、 \fBseteuid\fP() と \fBsetegid\fP() は、それぞれ \fBsetreuid\fP(2) と -\fBsetresgid\fP(2) を呼び出すライブラリ関数として実装されている。 -.SH 関連項目 -\fBgeteuid\fP(2), \fBsetresuid\fP(2), \fBsetreuid\fP(2), \fBsetuid\fP(2), -\fBcapabilities\fP(7), \fBcredentials\fP(7), \fBuser_namespaces\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/setfsgid.2 b/manual/LDP_man-pages/draft/man2/setfsgid.2 index 8b9a82b0..8afbec05 100644 --- a/manual/LDP_man-pages/draft/man2/setfsgid.2 +++ b/manual/LDP_man-pages/draft/man2/setfsgid.2 @@ -1,4 +1,5 @@ .\" Copyright (C) 1995, Thomas K. Dyas +.\" and Copyright (C) 2019, Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this @@ -44,24 +45,27 @@ .\" Modified 2005-02-24, Akihiro MOTOKI .\" Updated 2012-04-30, Akihiro MOTOKI .\" -.TH SETFSGID 2 2013\-08\-08 Linux "Linux Programmer's Manual" +.TH SETFSGID 2 2019\-05\-09 Linux "Linux Programmer's Manual" .SH 名前 setfsgid \- ファイルシステムのチェックに用いられるグループ ID を設定する .SH 書式 \fB#include \fP -.sp +.PP \fBint setfsgid(uid_t \fP\fIfsgid\fP\fB);\fP .SH 説明 -システムコール \fBsetfsgid\fP() は、 呼び出し元のファイルシステムグループ ID \(em -ファイルシステムへの全てのアクセスのチェックにおいて Linux カーネルが使用するグループ ID \(em -の値を変更する。通常はファイルシステムグループ ID の値は実効 (effective) グループ ID と同じになる。実際、 実効グループ ID -が変更される度にファイルシステムグループ ID もまた新しい実効グループ ID の値に変更される。 - -通常、 \fBsetfsuid\fP() や \fBsetfsgid\fP() を明示的に呼び出すのは、Linux NFS サーバー のように、 -ファイルアクセスに用いるユーザーID / グループID を変更しなければならないが、 対応する実(real)/実効(effective) ユーザーID -/ グループID は変更したくないような プログラムに限られる。 NFS サーバーのようなプログラムで、通常のユーザーID を変更すると、 -プロセスを望まないシグナルにさらす可能性があり、 セキュリティホールになる。(下記参照) - +On Linux, a process has both a filesystem group ID and an effective group +ID. The (Linux\-specific) filesystem group ID is used for permissions +checking when accessing filesystem objects, while the effective group ID is +used for some other kinds of permissions checks (see \fBcredentials\fP(7)). +.PP +Normally, the value of the process's filesystem group ID is the same as the +value of its effective group ID. This is so, because whenever a process's +effective group ID is changed, the kernel also changes the filesystem group +ID to be the same as the new value of the effective group ID. A process can +cause the value of its filesystem group ID to diverge from its effective +group ID by using \fBsetfsgid\fP() to change its filesystem group ID to the +value given in \fIfsgid\fP. +.PP \fBsetfsgid\fP() は、スーパーユーザーによって呼び出された場合か、 \fIfsgid\fP が呼び出し元の実グループID、実効グループID、 保存セットグループID (saved set\-group\-ID)、現在のファイルシステムグループ ID の値のいずれかに一致する場合にのみ成功する。 .SH 返り値 @@ -73,19 +77,22 @@ setfsgid \- ファイルシステムのチェックに用いられるグルー .SH 準拠 \fBsetfsgid\fP() は Linux 特有であり、移植を想定したプログラムで使用してはいけない。 .SH 注意 -glibc が引き数がグループID として不正だと判断した場合は、 システムコールを行わず \fIerrno\fP に \fBEINVAL\fP を設定して \-1 -が返される。 -.LP -このシステムコールが導入された当時、プロセスは 同じ実効ユーザーIDのプロセスへシグナルを送ることができた。 -今日では、シグナル送信権限の扱いはかなり違うものになっている。 なぜ今日では \fBsetfsuid\fP(2) と \fBsetfsgid\fP() -の両者が不要なのかの議論については \fBsetfsuid\fP(2) を参照のこと。 - +The filesystem group ID concept and the \fBsetfsgid\fP() system call were +invented for historical reasons that are no longer applicable on modern +Linux kernels. See \fBsetfsuid\fP(2) for a discussion of why the use of both +\fBsetfsuid\fP(2) and \fBsetfsgid\fP() is nowadays unneeded. +.PP 元々の Linux の \fBsetfsgid\fP() システムコールは 16 ビットのグループ ID だけに対応していた。 その後、Linux 2.4 で、32 ビットの ID に対応した \fBsetfsgid32\fP() が追加された。 glibc の \fBsetfsgid\fP() のラッパー関数は カーネルバージョンによるこの違いを吸収している。 +.SS "C library/kernel differences" +In glibc 2.15 and earlier, when the wrapper for this system call determines +that the argument can't be passed to the kernel without integer truncation +(because the kernel is old and does not support 32\-bit group IDs), it will +return \-1 and set \fIerrno\fP to \fBEINVAL\fP without attempting the system call. .SH バグ いかなる種類のエラーメッセージも返さず、 成功した場合も失敗した場合も呼び出しは同じ値を返すため、 呼び出しが成功したか失敗したかを直接判定することはできない。 その代わり、 直前の \fBsetfsgid\fP() の呼び出しがファイルシステムグループ @@ -95,6 +102,5 @@ ID を変更したかどうかを判定するために、 呼び出し元はこ .SH 関連項目 \fBkill\fP(2), \fBsetfsuid\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/setfsuid.2 b/manual/LDP_man-pages/draft/man2/setfsuid.2 deleted file mode 100644 index 69bce63f..00000000 --- a/manual/LDP_man-pages/draft/man2/setfsuid.2 +++ /dev/null @@ -1,103 +0,0 @@ -.\" Copyright (C) 1995, Thomas K. Dyas -.\" -.\" %%%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 -.\" -.\" Created 1995-08-06 Thomas K. Dyas -.\" Modified 2000-07-01 aeb -.\" Modified 2002-07-23 aeb -.\" Modified, 27 May 2004, Michael Kerrisk -.\" Added notes on capability requirements -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Sat Mar 1 00:55:10 JST 1997 -.\" by HANATAKA Shinya -.\" Modified Mon Sep 23 21:15:17 JST 2000 -.\" by HANATAKA Shinya -.\" Modified 2002-09-24 by Akihiro MOTOKI -.\" Modified 2005-02-24, Akihiro MOTOKI -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH SETFSUID 2 2013\-08\-08 Linux "Linux Programmer's Manual" -.SH 名前 -setfsuid \- ファイルシステムのチェックに用いられるユーザー ID を設定する -.SH 書式 -\fB#include \fP -.sp -\fBint setfsuid(uid_t \fP\fIfsuid\fP\fB);\fP -.SH 説明 -\fBsetfsuid\fP() は、 呼び出し元のファイルシステムユーザー ID \(em ファイルシステムへの全てのアクセスのチェックにおいて -Linux カーネルが使用するユーザー ID \(em の値を変更する。通常はファイルシステムユーザー ID の値は実効 (effective) -ユーザーID と同じになる。実際、 実効ユーザーID が変更される度にファイルシステムユーザー ID もまた新しい実効ユーザー ID の値に変更される。 - -通常、 \fBsetfsuid\fP() や \fBsetfsgid\fP() を明示的に呼び出すのは、Linux NFS サーバー のように、 -ファイルアクセスに用いるユーザーID / グループID を変更しなければならないが、 対応する実(real)/実効(effective) ユーザーID -/ グループID は変更したくないような プログラムに限られる。 NFS サーバーのようなプログラムで、通常のユーザーID を変更すると、 -プロセスを望まないシグナルにさらす可能性があり、 セキュリティホールになる。(下記参照) - -\fBsetfsuid\fP() は、スーパーユーザーによって呼び出された場合か、 \fIfsuid\fP が呼び出し元の実ユーザーID、実効ユーザーID、 -保存セットユーザーID (saved set\-user\-ID)、現在のファイルシステムグループ ID の値のいずれかに一致する場合にのみ成功する。 -.SH 返り値 -成功時も失敗時も、 この呼び出しは直前の呼び出し元のファイルシステムユーザー ID の値を返す。 -.SH バージョン -.\" This system call is present since Linux 1.1.44 -.\" and in libc since libc 4.7.6. -このシステムコールはバージョン 1.2 以降の Linux に存在する。 -.SH 準拠 -\fBsetfsuid\fP() は Linux 特有であり、移植を想定したプログラムで使用してはいけない。 -.SH 注意 -glibc が引き数がユーザーID として不正だと判断した場合は、 システムコールを行わず \fIerrno\fP に \fBEINVAL\fP を設定して \-1 -が返される。 -.LP -このシステムコールが導入された当時、 あるプロセスは同じ実効ユーザー ID を持つ別のプロセスにシグナルを送信できた。 これは、 -特権プロセスがファイルのアクセス許可をチェックするために自身の実効ユーザー ID を変更すると、 同じユーザー ID を持つ別の (非特権) -プロセスが送信したシグナルを受け取るようになってしまうことを意味する。そのため、 プロセスが、 受け取りたくないシグナルを受信する状態にならずに、 -ファイルのアクセス許可をチェックするために自身のユーザー ID を変更できるように、 ファイルシステムユーザー ID 属性が追加された。 Linux -2.0 以降では、 シグナルの送信許可の扱いは異なり (\fBkill\fP(2) 参照)、 プロセスは、 -望まないプロセスからシグナルを受信してしまう状態にならずに、 自身の実効ユーザー ID を変更することができる。 したがって、 -\fBsetfsuid\fP() は今日では不要であり、 新規のアプリケーションでは使用すべきではない (\fBsetfsgid\fP(2) も同様)。 - -元々の Linux の \fBsetfsuid\fP() システムコールは -16 ビットのグループ ID だけに対応していた。 -その後、Linux 2.4 で、32 ビットの ID に対応した -\fBsetfsuid32\fP() が追加された。 -glibc の \fBsetfsuid\fP() のラッパー関数は -カーネルバージョンによるこの違いを吸収している。 -.SH バグ -いかなる種類のエラーメッセージも返さず、 成功した場合も失敗した場合も呼び出しは同じ値を返すため、 -呼び出しが成功したか失敗したかを直接判定することはできない。 その代わり、 直前の \fBsetfsuid\fP() の呼び出しがファイルシステムグループ -ID を変更したかどうかを判定するために、 呼び出し元はこの後に \fIsetfsuid(\-1)\fP などを呼び出して返り値を見なければならない -(\fIsetfsuid(\-1)\fP は常に失敗する)。 最低でも、失敗した場合は \fBEPERM\fP くらいは返すべきである (呼び出し元には -\fBCAP_SETUID\fP ケーパビリティがなかったのだから)。 -.SH 関連項目 -\fBkill\fP(2), \fBsetfsgid\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/setgid.2 b/manual/LDP_man-pages/draft/man2/setgid.2 index fe830eca..9900afa8 100644 --- a/manual/LDP_man-pages/draft/man2/setgid.2 +++ b/manual/LDP_man-pages/draft/man2/setgid.2 @@ -1,4 +1,5 @@ .\" Copyright (C), 1994, Graeme W. Wilford. (Wilf.) +.\" and Copyright (C) 2010, 2015, Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this @@ -39,19 +40,21 @@ .\" Updated Fri Feb 7 JST 2003 by Kentaro Shirakata .\" Updated 2012-04-30, Akihiro MOTOKI .\" -.TH SETGID 2 2014\-09\-21 Linux "Linux Programmer's Manual" +.TH SETGID 2 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 setgid \- グループ識別(identity)を設定する .SH 書式 \fB#include \fP .br \fB#include \fP -.sp +.PP \fBint setgid(gid_t \fP\fIgid\fP\fB);\fP .SH 説明 -\fBsetgid\fP() は呼び出し元のプロセスの実効 (effective) グループID を設定する。 -もしスーパーユーザーによって呼び出された場合は、 実 (real) グループID と保存 (saved) set\-group\-ID も設定される。 - +\fBsetgid\fP() sets the effective group ID of the calling process. If the +calling process is privileged (more precisely: has the \fBCAP_SETGID\fP +capability in its user namespace), the real GID and saved set\-group\-ID are +also set. +.PP Linux において、 \fBsetgid\fP() は \fB_POSIX_SAVED_IDS\fP をもった POSIX 版のように実装されている。 これは set\-user\-ID\-root でない set\-group\-ID プログラムにそのグループの 特権の全て落とし、特権の必要ない仕事をし、本来の実効グループID に 安全な方法で再び戻すことを許す。 @@ -63,21 +66,31 @@ set\-user\-ID\-root でない set\-group\-ID プログラムにそのグルー \fIgid\fP で指定されたグループ ID がこのユーザー名前空間では有効ではない。 .TP \fBEPERM\fP -呼び出し元のプロセスに権限がなく (\fBCAP_SETGID\fP ケーパビリティがなく)、かつ \fIgid\fP が呼び出し元のプロセスの実グループID -と保存セットグループID のどちらとも一致しない。 +The calling process is not privileged (does not have the \fBCAP_SETGID\fP +capability in its user namespace), and \fIgid\fP does not match the real group +ID or saved set\-group\-ID of the calling process. .SH 準拠 -SVr4, POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008, SVr4. .SH 注意 +.\" 元々の Linux の \fBsetgid\fP() システムコールは 16 ビットのグループ ID だけに対応していた。 その後、Linux 2.4 で、32 ビットの ID に対応した \fBsetgid32\fP() が追加された。 glibc の \fBsetgid\fP() のラッパー関数は カーネルバージョンによるこの違いを吸収している。 +.SS "C library/kernel differences" +At the kernel level, user IDs and group IDs are a per\-thread attribute. +However, POSIX requires that all threads in a process share the same +credentials. The NPTL threading implementation handles the POSIX +requirements by providing wrapper functions for the various system calls +that change process UIDs and GIDs. These wrapper functions (including the +one for \fBsetgid\fP()) employ a signal\-based technique to ensure that when +one thread changes credentials, all of the other threads in the process also +change their credentials. For details, see \fBnptl\fP(7). .SH 関連項目 \fBgetgid\fP(2), \fBsetegid\fP(2), \fBsetregid\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7), \fBuser_namespaces\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 8eb7956b..00000000 --- a/manual/LDP_man-pages/draft/man2/setns.2 +++ /dev/null @@ -1,213 +0,0 @@ -.\" Copyright (C) 2011, Eric Biederman -.\" and Copyright (C) 2011, 2012, Michael Kerrisk -.\" -.\" %%%LICENSE_START(GPLv2_ONELINE) -.\" Licensed under the GPLv2 -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012-2013 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-06-04, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH SETNS 2 2015\-01\-10 Linux "Linux Programmer's Manual" -.SH 名前 -setns \- スレッドに名前空間を関連付けしなおす -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \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 の詳細は \fBnamespaces\fP(7) を参照。 -\fInstype\fP 引き数で指定された制限の範囲内で、 -呼び出したスレッドに \fIfd\fP に対応する名前空間を関連付けしなおす。 - -\fInstype\fP 引き数は、呼び出したスレッドがどのタイプの名前空間を -関連付けしなおすことができるかを指定する。 -この引き数には以下のいずれかの値を指定できる。 -.TP -\fB0\fP -どのタイプの名前空間も関連付けることができる。 -.TP -\fBCLONE_NEWIPC\fP (Linux 3.0 以降) -\fIfd\fP は IPC 名前空間を参照していなければならない。 -.TP -\fBCLONE_NEWNET\fP (Linux 3.0 以降) -\fIfd\fP はネットワーク名前空間を参照していなければならない。 -.TP -\fBCLONE_NEWNS\fP (Linux 3.8 以降) -\fIfd\fP はマウント名前空間を参照していなければならない。 -.TP -\fBCLONE_NEWPID\fP (Linux 3.8 以降) -\fIfd\fP は子孫の PID 名前空間を参照していなければならない。 -.TP -\fBCLONE_NEWUSER\fP (Linux 3.8 以降) -\fIfd\fP はユーザー名前空間を参照していなければならない。 -.TP -\fBCLONE_NEWUTS\fP (Linux 3.0 以降) -\fIfd\fP は UTS 名前空間を参照していなければならない。 -.PP -呼び出し側が \fIfd\fP がどのタイプの名前空間を参照しているかを知っている -(もしくは気にする必要がない) 場合には、 \fInstype\fP に 0 を指定すれば十分 -である。呼び出し側が \fIfd\fP がどのタイプの名前空間を参照しているかを -知っておらず、かつ、特定のタイプの名前空間であることを保証したい場合、 -\fInstype\fP に 0 以外の値を指定するとよい。 (ファイルディスクリプターが別の -プロセスによりオープンされ、例えば、UNIX ドメインソケット経由で呼び出し -側に渡された場合などでは、呼び出し側が \fIfd\fP がどのタイプの名前空間を -参照しているかを知らない可能性がある。) - -\fBCLONE_NEWPID\fP は他の \fInstype\fP 値の場合と少し違った動作をする。 呼び出し元スレッドを PID 名前空間に関連付けし直すと、 -呼び出し元の子プロセスが作成される PID 名前空間が変更されるだけである。 呼び出し元自身の PID 名前空間は変更されない。 PID -名前空間を関連付けし直すことができるのは、 \fIfd\fP で指定された PID 名前空間が呼び出し元の PID 名前空間の子孫 -(子プロセス、孫プロセスなど) の場合だけである。 PID 名前空間の詳細は \fBpid_namespaces\fP(7) を参照。 - -.\" See kernel/user_namespace.c:userns_install() [3.8 source] -.\" commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71 -.\" https://lwn.net/Articles/543273/ -プロセスが自分自身をユーザー名前空間に再関連付けするには、 そのプロセスは変更後のユーザー名前空間において \fBCAP_SYS_ADMIN\fP -ケーパビリティを持っていなければならない。 ユーザー名前空間への参加に成功すると、 そのユーザー ID やグループ ID に関わらず、 -プロセスにはその名前空間におけるすべてのケーパビリティが認められる。 マルチスレッドのプロセスは \fBsetns\fP() -でユーザー名前空間を変更できない。 \fBsetns\fP() を使って、呼び出し元が現在のユーザー名前空間に再度入ることは認められていない。 これにより、 -いくつかのケーパビリティを外した呼び出し元が \fBsetns\fP() を呼び出すことでそれらのケーパビリティを再度得ることを防ぐことができる。 -セキュリティ上の理由から、 ファイルシステム関連の属性 (共有が \fBclone\fP(2) \fBCLONE_FS\fP フラグで制御される属性) -を別のプロセスと共有している場合、 プロセスは新しいユーザー名前空間に参加できない。 ユーザー名前空間の詳細は -\fBuser_namespaces\fP(7) を参照。 - -.\" Above check is in fs/namespace.c:mntns_install() [3.8 source] -プロセスがマルチスレッドの場合、そのプロセスを新しいマウント名前空間に関連付けし直すことは許可されていない。 -マウント名前空間を変更するには、呼び出し元のプロセスが、 自分自身のユーザー名前空間において \fBCAP_SYS_CHROOT\fP と -\fBCAP_SYS_ADMIN\fP の両方のケーパビリティを持っており、 変更後のマウント名前空間で \fBCAP_SYS_ADMIN\fP -ケーパビリティを持っていなければならない。 ユーザー名前空間とマウント名前空間の関係の詳細は \fBuser_namespaces\fP(7) を参照。 -.SH 返り値 -成功すると \fBsetns\fP() は 0 を返す。 失敗すると、 \-1 が返され、 \fIerrno\fP にエラーを示す値が設定される。 -.SH エラー -.TP -\fBEBADF\fP -\fIfd\fP が有効なファイルディスクリプターではない。 -.TP -\fBEINVAL\fP -\fIfd\fP が \fInstype\fP で指定されたタイプと一致しない名前空間を参照している。 -.TP -\fBEINVAL\fP -スレッドを指定された名前空間に関連付けし直す際に問題が発生した。 -.TP -.\" See kernel/pid_namespace.c::pidns_install() [kernel 3.18 sources] -\fBEINVAL\fP -呼び出し元が先祖 (親や親の親など) の PID 名前空間に参加しようとした。 -.TP -\fBEINVAL\fP -自分がすでにメンバーとなっているユーザー名前空間に参加しようとした。 -.TP -\fBEINVAL\fP -.\" commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71 -呼び出し元が他のプロセスとファイルシステム状態 (特に root ディレクトリ) を共有していて (\fBCLONE_FS\fP)、 -新しいユーザー名前空間に参加しようとした。 -.TP -\fBEINVAL\fP -.\" See kernel/user_namespace.c::userns_install() [kernel 3.15 sources] -呼び出し元プロセスがマルチスレッドで、新しいユーザー名前空間に参加しようとした。 -.TP -\fBENOMEM\fP -指定された名前空間に変更するのに必要なメモリーが割り当てられない。 -.TP -\fBEPERM\fP -呼び出し元スレッドはこの操作を行うのに必要なケーパビリティを持っていなかった。 -.SH バージョン -\fBsetns\fP() システムコールはカーネル 3.0 で Linux に初めて登場した。 -ライブラリによるサポートは glibc バージョン 2.14 を追加された。 -.SH 準拠 -\fBsetns\fP() システムコールは Linux 固有である。 -.SH 注意 -新しいスレッドが \fBclone\fP(2) を使って作成された際に共有できる全ての属性を、 -\fBsetns\fP() を使って変更できるわけではない。 -.SH 例 -以下のプログラムは 2 つ以上の引き数を取る。 最初の引き数には、 既存の \fI/proc/[pid]/ns/\fP -ディレクトリの名前空間ファイルのパス名を指定する。 残りの引き数は、コマンドとその引き数を指定する。 このプログラムは名前空間ファイルをオープンし、 -\fBsetns\fP() を使って名前空間に参加し、 指定されたコマンドをその名前空間内で実行する。 - -以下のシェルセッションでは、 このプログラム (\fIns_exec\fP という名前のバイナリとしてコンパイルされている)を、 \fBclone\fP(2) -のマニュアルページの \fBCLONE_NEWUTS\fP のサンプルプログラムと組み合わせて使っている。 - -まず、 \fBclone\fP(2) のサンプルプログラムをバックグラウンドで実行する。 このプログラムは、 別の UTS 名前空間で子プロセスを作成する。 -子プロセスは自分の名前空間内でホスト名を変更する。 それから、 親プロセスと子プロセスの両方でそれぞれの UTS 名前空間のホスト名を表示し、 2 -つのホスト名が違うことが確認できる。 - -.nf -.in +4n -$ \fBsu\fP # 名前空間の操作には特権が必要 -Password: -# \fB./newuts bizarro &\fP -[1] 3549 -clone() returned 3550 -uts.nodename in child: bizarro -uts.nodename in parent: antero -# \fBuname \-n\fP # シェルでホスト名を確認 -antero -.in -.fi - -次に、以下のプログラムを使ってシェルを実行する。 -このシェルの中では、ホスト名が最初のプログラムで作成された子プロセスが設定したホスト名になっていることを確認できる。 - -.nf -.in +4n -# \fB./ns_exec /proc/3550/ns/uts /bin/bash\fP -# \fBuname \-n\fP # ns_exec で起動されたシェル内で実行 -bizarro -.in -.fi -.SS プログラムのソース -.nf -#define _GNU_SOURCE -#include -#include -#include -#include -#include - -#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); /* 名前空間のディスクリプターを取得 */ - if (fd == \-1) - errExit("open"); - - if (setns(fd, 0) == \-1) /* 名前空間に参加 */ - errExit("setns"); - - execvp(argv[2], &argv[2]); /* 名前空間内でコマンドを実行 */ - errExit("execvp"); -} -.fi -.SH 関連項目 -\fBclone\fP(2), \fBfork\fP(2), \fBunshare\fP(2), \fBvfork\fP(2), \fBnamespaces\fP(7), -\fBunix\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/setpgid.2 b/manual/LDP_man-pages/draft/man2/setpgid.2 index 7a63754d..0c5ed1b2 100644 --- a/manual/LDP_man-pages/draft/man2/setpgid.2 +++ b/manual/LDP_man-pages/draft/man2/setpgid.2 @@ -60,96 +60,98 @@ .\" Updated 2007-09-25, Akihiro MOTOKI , LDP v2.64 .\" Updated 2010-04-23, Akihiro MOTOKI, LDP v3.24 .\" -.TH SETPGID 2 2014\-01\-07 Linux "Linux Programmer's Manual" +.TH SETPGID 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 setpgid, getpgid, setpgrp, getpgrp \- プロセスグループの設定/取得を行う .SH 書式 +\fB#include \fP +.br \fB#include \fP -.sp +.PP \fBint setpgid(pid_t \fP\fIpid\fP\fB, pid_t \fP\fIpgid\fP\fB);\fP .br \fBpid_t getpgid(pid_t \fP\fIpid\fP\fB);\fP -.sp +.PP \fBpid_t getpgrp(void);\fP /* POSIX.1 version */ .br -\fBpid_t getpgrp(pid_t \fP\fIpid\fP\fB);\ \ \ \ \ \ \ \ \ \ \ \fP /* BSD version */ -.sp +\fBpid_t getpgrp(pid_t \fP\fIpid\fP\fB);\fP /* BSD version */ +.PP \fBint setpgrp(void);\fP /* System V version */ .br -\fBint setpgrp(pid_t \fP\fIpid\fP\fB, pid_t \fP\fIpgid\fP\fB);\ \fP /* BSD version */ -.sp -.in -4n +\fBint setpgrp(pid_t \fP\fIpid\fP\fB, pid_t \fP\fIpgid\fP\fB);\fP /* BSD version */ +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP .ad l -.PD 0 \fBgetpgid\fP(): .RS 4 -_XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.br -|| /* glibc 2.12 以降: */ _POSIX_C_SOURCE\ >=\ 200809L +.\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +_XOPEN_SOURCE\ >=\ 500 + || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L .RE -.sp +.PP \fBsetpgrp\fP() (POSIX.1): .nf - _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || - _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.br - || /* glibc 2.19 以降: */ _BSD_SOURCE +.\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED + _XOPEN_SOURCE\ >=\ 500 + || /* Since glibc 2.19: */ _DEFAULT_SOURCE + || /* Glibc versions <= 2.19: */ _SVID_SOURCE .fi -.sp -\fBsetpgrp\fP()\ (BSD), \fBgetpgrp\fP()\ (BSD) [glibc 2.19 より前]: +.PP +\fBsetpgrp\fP()\ (BSD), \fBgetpgrp\fP()\ (BSD): .nf + [These are available only before glibc 2.19] _BSD_SOURCE && !\ (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE || - _XOPEN_SOURCE_EXTENDED || _GNU_SOURCE || _SVID_SOURCE) + _GNU_SOURCE || _SVID_SOURCE) .fi -.PD .ad .SH 説明 これらのインターフェースすべてが Linux で利用可能で、 これらを使ってプロセスのプロセスグループ ID (PGID) の 取得や設定ができる。 推奨の、POSIX.1 で規定された方法では、 \fBgetpgrp\fP(void) で呼び出し元プロセスの PGID を取得し、 \fBsetpgid\fP() で設定する。 - +.PP \fBsetpgid\fP() は \fIpid\fP で指定したプロセスの PGID に \fIpgid\fP を設定する。 \fIpid\fP がゼロならば、呼び出し元プロセスのプロセス ID が pid として使用される。 \fIpgid\fP がゼロならば、 \fIpid\fP で指定されたプロセスの PGID がそのプロセスのプロセス ID と 同じに設定される。 \fBsetpgid\fP() をプロセスをあるプロセスグループから別のグループへ 移動するために使用する場合は (一部のシェルはパイプラインを生成 する時にこれを行う)、両方のプロセスグループは同じセッションの 一部でなければならない (\fBsetsid\fP(2) と \fBcredentials\fP(7) 参照)。この場合は \fIpgid\fP は参加すべき既存の プロセスグループを指定し、そのセッション ID は参加するプロセスの セッション ID に一致しなければならない。 - +.PP POSIX.1 バージョンの \fBgetpgrp\fP() は引き数を一つもとらず、 呼び出し元プロセスの PGID を返す。 - +.PP \fBgetpgid\fP() は \fIpid\fP で指定されたプロセスの PGID を返す。 \fIpid\fP がゼロならば、呼び出し元プロセスのプロセス ID が pid として使用される。 (呼び出し元プロセス以外のプロセスの PGID の取得が必要になることは めったになく、呼び出し元プロセスの PGID を取得するには POSIX.1 バージョンの \fBgetpgrp\fP() を使うのが望ましい。) - +.PP System\ V バージョンの \fBsetpgrp\fP() は引き数を一つもとらず、 \fIsetpgid(0,\ 0)\fP と等価である。 - -BSD 仕様の \fBsetpgrp\fP() は \fIpid\fP と \fIpgid\fP を引き数にとり、 以下を呼び出すラッパー関数である。 - +.PP +The BSD\-specific \fBsetpgrp\fP() call, which takes arguments \fIpid\fP and +\fIpgid\fP, is a wrapper function that calls +.PP setpgid(pid, pgid) - +.PP .\" The true BSD setpgrp() system call differs in allowing the PGID .\" to be set to arbitrary values, rather than being restricted to .\" PGIDs in the same session. glibc 2.19 以降、 BSD 固有の \fBsetpgrp\fP() 関数はもはや \fI\fP では公開されない。 この関数の呼び出しは上記の \fBsetpgid\fP() の呼び出しで置き換えるべきである。 - +.PP BSD 仕様の \fBgetpgrp\fP() は \fIpid\fP だけを引き数にとり、 以下を呼び出すラッパー関数である。 - +.PP getpgid(pid) - +.PP glibc 2.19 以降、 BSD 固有の \fBgetpgrp\fP() 関数はもはや \fI\fP では公開されない。 この関数の呼び出しは、引き数を取らない POSIX.1 の \fBgetpgrp\fP() の呼び出し (呼び出し元の PGID を取得する目的の場合)、もしくは上記の \fBgetpgid\fP() の呼び出しで置き換えるべきである。 .SH 返り値 \fBsetpgid\fP() と \fBsetpgrp\fP() は成功した場合、ゼロを返す。エラーの場合は \-1 を返し、 \fIerrno\fP が適切に設定される。 - +.PP POSIX.1 バージョンの \fBgetpgrp\fP() は常に呼び出しプロセスの PGID を返す。 - +.PP \fBgetpgid\fP() と BSD 仕様の \fBgetpgrp\fP() は成功した場合プロセスグループを返す。 エラーの場合は \-1 を返し、 \fIerrno\fP が適切に設定される。 .SH エラー @@ -171,17 +173,19 @@ POSIX.1 バージョンの \fBgetpgrp\fP() は常に呼び出しプロセスの が呼び出し元のプロセスではなく、呼び出し元のプロセスの子プロセスでもない。 .SH 準拠 \fBsetpgid\fP() と、引き数なしバージョンの \fBgetpgrp\fP() は POSIX.1\-2001 に準拠している。 - +.PP POSIX.1\-2001 は、 \fBgetpgid\fP() と、引き数なしバージョンの \fBsetpgrp\fP() も規定している。 POSIX.1\-2008 は、この \fBsetpgrp\fP() の仕様を廃止予定としている。 - +.PP 引き数 1 個バージョンの \fBgetpgrp\fP() と引き数 2 個バージョンの \fBsetpgrp\fP() は 4.2BSD に由来し、 POSIX.1 では規定されていない。 .SH 注意 \fBfork\fP(2) で作成された子プロセスは、親プロセスの PGID を継承する。 \fBexecve\fP(2) の前後で PGID は保存される。 - -各プロセスグループはセッションのメンバーであり、各プロセスは そのプロセスグループが所属しているセッションのメンバーである。 - +.PP +Each process group is a member of a session and each process is a member of +the session of which its process group is a member. (See +\fBcredentials\fP(7).) +.PP セッションは制御端末 (controlling terminal) を持つことができる。 いつでも、セッションに所属するプロセスグループの一つ (だけ) が 端末のフォアグランドのプロセスグループになることができ、 残りのプロセスグループはバックグラウンドになる。 端末からシグナルが生成された場合 (例えば、中断キーを叩いて \fBSIGINT\fP が生成されるなど)、そのシグナルはフォアグラウンドのプロセスグループ に送られる @@ -189,24 +193,21 @@ POSIX.1 では規定されていない。 ができる。 バックグラウンドのプロセスグループが端末からの \fBread\fP(2) を行おうとした場合、そのプロセスグループにはシグナル \fBSIGTTIN\fP が送られ、そのプロセスグループは一時停止 (suspend) する。 関数 \fBtcgetpgrp\fP(3) と \fBtcsetpgrp\fP(3) を使うと、制御端末のフォアグラウンドのプロセスグループを 取得/設定できる。 - +.PP \fBsetpgid\fP() と \fBgetpgrp\fP() は、 \fBbash\fP(1) のようなプログラムで、シェルのジョブ制御 (job control) の実装のための プロセスグループを作成するのに使われる。 - -セッションが制御端末を持っていて、その端末に対して \fBCLOCAL\fP フラグが設定されておらず、端末のハングアップが起きた場合、 セッションリーダーに -\fBSIGHUP\fP が送られる。 セッションリーダーが終了した場合には、その制御端末の フォアグランドのプロセスグループに所属する各プロセスにも -\fBSIGHUP\fP シグナルが送られる。 - +.PP .\" exit.3 refers to the following text: -プロセスの終了によってプロセスグループが孤児 (orphaned) になった際に、 -その新たに孤児になったプロセスグループに停止しているメンバーがいれば、 その孤児になったプロセスグループに属す全てのプロセスに \fBSIGHUP\fP -シグナルに続けて \fBSIGCONT\fP シグナルが送られる。 孤児になった (orphaned) プロセスグループとは、 -そのプロセスグループの全てのメンバーについて、メンバーの親プロセスが、 親プロセス自身もそのプロセスグループのメンバーか、 -別のセッションに属すプロセスグループのメンバーのいずれかであるような、 プロセスグループのことである。 +If the termination of a process causes a process group to become orphaned, +and if any member of the newly orphaned process group is stopped, then a +\fBSIGHUP\fP signal followed by a \fBSIGCONT\fP signal will be sent to each +process in the newly orphaned process group. An orphaned process group is +one in which the parent of every member of process group is either itself +also a member of the process group or is a member of a process group in a +different session (see also \fBcredentials\fP(7)). .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/setresuid.2 b/manual/LDP_man-pages/draft/man2/setresuid.2 index 1696228b..40c83ced 100644 --- a/manual/LDP_man-pages/draft/man2/setresuid.2 +++ b/manual/LDP_man-pages/draft/man2/setresuid.2 @@ -1,4 +1,5 @@ .\" Copyright (C) 1997 Andries Brouwer (aeb@cwi.nl) +.\" and Copyright (C) 2005, 2010, 2014, 2015, Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this @@ -38,37 +39,39 @@ .\" Updated & Modified 2005-11-04, Akihiro MOTOKI .\" Updated 2012-04-30, Akihiro MOTOKI .\" -.TH SETRESUID 2 2014\-09\-21 Linux "Linux Programmer's Manual" +.TH SETRESUID 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 setresuid, setresgid \- ユーザーやグループの 実、実効、保存 ID を設定する .SH 書式 \fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ .br \fB#include \fP -.sp +.PP \fBint setresuid(uid_t \fP\fIruid\fP\fB, uid_t \fP\fIeuid\fP\fB, uid_t \fP\fIsuid\fP\fB);\fP .br \fBint setresgid(gid_t \fP\fIrgid\fP\fB, gid_t \fP\fIegid\fP\fB, gid_t \fP\fIsgid\fP\fB);\fP .SH 説明 \fBsetresuid\fP() は呼び出し元のプロセスの実 (real) ユーザーID、実効 (effective) ユーザーID、 保存 set\-user\-ID を設定する。 - -非特権ユーザーのプロセスは、その実 UID、実効 UID、保存 set\-user\-ID を、 現在の実 UID、現在の実効 UID、現在の保存 -set\-user\-ID のどれかに変更することができる: - -特権プロセス (Linux では \fBCAP_SETUID\fP ケーパビリティ (capability) を持つ プロセス) は、実 UID、実効 -UID、保存 set\-user\-ID を任意の値に設定できる。 - +.PP +An unprivileged process may change its real UID, effective UID, and saved +set\-user\-ID, each to one of: the current real UID, the current effective UID +or the current saved set\-user\-ID. +.PP +A privileged process (on Linux, one having the \fBCAP_SETUID\fP capability) +may set its real UID, effective UID, and saved set\-user\-ID to arbitrary +values. +.PP 引き数のどれかが \-1 の場合はその値は変更されずに残される。 - +.PP 実 UID、実効 UID、保存 set\-user\-ID にどんな変更が行われたかに関わらず、 ファイルシステム UID は常に実効 UID (可能であれば変更後の新しい実効 UID) と同じ値に設定される。 - +.PP 全く同じように、 \fBsetresgid\fP() は呼び出し元のプロセスの実 GID、実効 GID、保存 set\-group\-ID を設定する (さらにファイルシステム GID を実効 GID と同じ値に修正する)。 非特権プロセスは同様の制限を受ける。 .SH 返り値 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 - +.PP \fI注意\fP: 呼び出し元が UID 0 であっても \fBsetresuid\fP() が失敗する場合がある。 \fBsetresuid\fP() からのリターンが失敗かどうかの確認を省略することは重大なセキュリティ上のエラーとなる。 .SH エラー @@ -86,7 +89,10 @@ UID、保存 set\-user\-ID を任意の値に設定できる。 対象のユーザー ID やグループ ID のうち 1 つ以上がこのユーザー名前空間で有効ではない。 .TP \fBEPERM\fP -呼び出したプロセスが特権を持たないのに (\fBCAP_SETUID\fP ケーパビリティを持たないのに)、 ID を許されていない値に変更しようとした。 +The calling process is not privileged (did not have the necessary capability +in its user namespace) and tried to change the IDs to values that are not +permitted. For \fBsetresuid\fP(), the necessary capability is \fBCAP_SETUID\fP; +for \fBsetresgid\fP(), it is \fBCAP_SETGID\fP. .SH バージョン Linux ではバージョン 2.1.44 より利用可能になった。 .SH 準拠 @@ -94,18 +100,27 @@ Linux ではバージョン 2.1.44 より利用可能になった。 .SH 注意 HP\-UX や FreeBSD では \fI\fP にプロトタイプが存在する。 Linux では、glibc 2.3.2 以降で プロトタイプが提供されている。 - +.PP +.\" 元々の Linux の \fBsetresuid\fP() と \fBsetresgid\fP() システムコールは 16 ビットのグループ ID だけに対応していた。 その後、Linux 2.4 で、32 ビットの ID に対応した \fBsetresuid32\fP() と \fBsetresgid32\fP() が追加された。 glibc の \fBsetresuid\fP() と \fBsetresgid\fP() のラッパー関数は カーネルバージョンによるこの違いを吸収している。 +.SS "C library/kernel differences" +At the kernel level, user IDs and group IDs are a per\-thread attribute. +However, POSIX requires that all threads in a process share the same +credentials. The NPTL threading implementation handles the POSIX +requirements by providing wrapper functions for the various system calls +that change process UIDs and GIDs. These wrapper functions (including those +for \fBsetresuid\fP() and \fBsetresgid\fP()) employ a signal\-based technique to +ensure that when one thread changes credentials, all of the other threads in +the process also change their credentials. For details, see \fBnptl\fP(7). .SH 関連項目 \fBgetresuid\fP(2), \fBgetuid\fP(2), \fBsetfsgid\fP(2), \fBsetfsuid\fP(2), \fBsetreuid\fP(2), \fBsetuid\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7), \fBuser_namespaces\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/setreuid.2 b/manual/LDP_man-pages/draft/man2/setreuid.2 index aee5593a..19cba03f 100644 --- a/manual/LDP_man-pages/draft/man2/setreuid.2 +++ b/manual/LDP_man-pages/draft/man2/setreuid.2 @@ -1,4 +1,5 @@ .\" Copyright (c) 1983, 1991 The Regents of the University of California. +.\" and Copyright (C) 2009, 2010, 2014, 2015, Michael Kerrisk .\" All rights reserved. .\" .\" %%%LICENSE_START(BSD_4_CLAUSE_UCB) @@ -59,45 +60,48 @@ .\" Updated 2010-04-23, Akihiro MOTOKI , LDP v3.24 .\" Updated 2012-04-30, Akihiro MOTOKI .\" -.TH SETREUID 2 2014\-09\-21 Linux "Linux Programmer's Manual" +.TH SETREUID 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 setreuid, setregid \- 実 (real) と実効 (effective) ユーザー (グループ) ID を設定する .SH 書式 \fB#include \fP .br \fB#include \fP -.sp +.PP \fBint setreuid(uid_t \fP\fIruid\fP\fB, uid_t \fP\fIeuid\fP\fB);\fP .br \fBint setregid(gid_t \fP\fIrgid\fP\fB, gid_t \fP\fIegid\fP\fB);\fP -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBsetreuid\fP(), \fBsetregid\fP(): .RS 4 .ad l -_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +.\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +_XOPEN_SOURCE\ >=\ 500 + || /* Since glibc 2.19: */ _DEFAULT_SOURCE + || /* Glibc versions <= 2.19: */ _BSD_SOURCE .ad .RE .SH 説明 \fBsetreuid\fP() は呼び出し元のプロセスの実 (real) ユーザー ID と 実効 (effective) ユーザー ID を設定する。 - +.PP 実ユーザー ID や実効ユーザー ID に \-1 を与えた場合、 システムはその ID を変更しない。 - +.PP 非特権プロセスは実効ユーザー ID を実ユーザー ID または実効ユーザー ID または 保存 set\-user\-ID にしか設定できない。 - +.PP 非特権ユーザーは、実ユーザー ID を実ユーザー ID または 実効ユーザー ID にしか設定できない。 - +.PP 実ユーザーID が設定されたり (\fIruid\fP が \-1 ではない)、実効ユーザーID が前の実ユーザーID と 異った値に設定された場合、保存 set\-user\-ID には新しい実効ユーザーID の値が設定される。 - +.PP これと全く同様に、 \fBsetregid\fP() は呼び出し元のプロセスの実グループ ID と実効グループ ID を設定し、 上記の説明で「ユーザー」を「グループ」に読み替えたことが成り立つ。 .SH 返り値 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 - +.PP \fI注意\fP: 呼び出し元が UID 0 であっても \fBsetreuid\fP() が失敗する場合がある。 \fBsetreuid\fP() からのリターンが失敗かどうかの確認を省略することは重大なセキュリティ上のエラーとなる。 .SH エラー @@ -115,34 +119,50 @@ set\-user\-ID には新しい実効ユーザーID の値が設定される。 対象のユーザー ID やグループ ID のうち 1 つ以上がこのユーザー名前空間で有効ではない。 .TP \fBEPERM\fP -呼び出し元のプロセスに特権がなく (Linux では \fBsetreuid\fP() の場合に \fBCAP_SETUID\fP ケーパビリティ -(capability) がなく、 \fBsetregid\fP() の場合に \fBCAP_SETGID\fP ケーパビリティがない)、 -以下のいずれでもない変更が指定された: (i) 実効ユーザー (グループ) ID と実ユーザー (グループ) ID を入れ換える。 (ii) -片方の値を他方に設定する。 (iii) 実効ユーザー (グループ) ID に保存 set\-user\-ID (保存 set\-group\-ID) -の値を設定する。 +The calling process is not privileged (on Linux, does not have the necessary +capability in its user namespace: \fBCAP_SETUID\fP in the case of +\fBsetreuid\fP(), or \fBCAP_SETGID\fP in the case of \fBsetregid\fP()) and a change +other than (i) swapping the effective user (group) ID with the real user +(group) ID, or (ii) setting one to the value of the other or (iii) setting +the effective user (group) ID to the value of the saved set\-user\-ID (saved +set\-group\-ID) was specified. .SH 準拠 -POSIX.1\-2001, 4.3BSD (\fBsetreuid\fP() と \fBsetregid\fP() 関数コールは 4.2BSD で登場した)。 +POSIX.1\-2001, POSIX.1\-2008, 4.3BSD (\fBsetreuid\fP() and \fBsetregid\fP() first +appeared in 4.2BSD). .SH 注意 実効ユーザー (グループ) ID を保存ユーザー (グループ) ID に 設定することが、Linux 1.1.37 (1.1.38) から可能になった。 - -POSIX.1 では、非特権プロセスに対して Linux 上で認められている ID の変更の 全パターンを規定しているわけではない。 -\fBsetreuid\fP() では、実効ユーザー ID を実ユーザー ID もしくは保存 set\-user\-ID と 同じ値にすることができるが、 -非特権プロセスが実ユーザー ID を実ユーザー ID、実効ユーザー ID、 保存 set\-user\-ID のどの値にも設定できるかは規定されていない。 -\fBsetregid\fP() では、実グループ ID を保存 set\-group\-ID と同じ値に変更でき、 実効グループ ID を実グループ ID -や保存 set\-group\-ID と同じ値に変更できる。 どのような ID の変更が認められているかの正確な詳細は 実装ごとに異なる。 - +.PP +POSIX.1 does not specify all of the UID changes that Linux permits for an +unprivileged process. For \fBsetreuid\fP(), the effective user ID can be made +the same as the real user ID or the saved set\-user\-ID, and it is unspecified +whether unprivileged processes may set the real user ID to the real user ID, +the effective user ID, or the saved set\-user\-ID. For \fBsetregid\fP(), the +real group ID can be changed to the value of the saved set\-group\-ID, and the +effective group ID can be changed to the value of the real group ID or the +saved set\-group\-ID. The precise details of what ID changes are permitted +vary across implementations. +.PP POSIX.1 では、これらのシステムコールが保存 set\-user\-ID や 保存 set\-group\-ID に与える影響については規定していない。 - +.PP +.\" 元々の Linux の \fBsetreuid\fP() と \fBsetregid\fP() システムコールは 16 ビットのグループ ID だけに対応していた。 その後、Linux 2.4 で、32 ビットの ID に対応した \fBsetreuid32\fP() と \fBsetregid32\fP() が追加された。 glibc の \fBsetreuid\fP() と \fBsetregid\fP() のラッパー関数は カーネルバージョンによるこの違いを吸収している。 +.SS "C library/kernel differences" +At the kernel level, user IDs and group IDs are a per\-thread attribute. +However, POSIX requires that all threads in a process share the same +credentials. The NPTL threading implementation handles the POSIX +requirements by providing wrapper functions for the various system calls +that change process UIDs and GIDs. These wrapper functions (including those +for \fBsetreuid\fP() and \fBsetregid\fP()) employ a signal\-based technique to +ensure that when one thread changes credentials, all of the other threads in +the process also change their credentials. For details, see \fBnptl\fP(7). .SH 関連項目 \fBgetgid\fP(2), \fBgetuid\fP(2), \fBseteuid\fP(2), \fBsetgid\fP(2), \fBsetresuid\fP(2), -\fBsetuid\fP(2), \fBcapabilities\fP(7), \fBuser_namespaces\fP(7) +\fBsetuid\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7), \fBuser_namespaces\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index b52b92c8..00000000 --- a/manual/LDP_man-pages/draft/man2/setsid.2 +++ /dev/null @@ -1,88 +0,0 @@ -.\" Copyright Michael Haardt (michael@cantor.informatik.rwth-aachen.de) -.\" Sat Aug 27 20:43:50 MET DST 1994 -.\" and Copyright (C) 2014, 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified Sun Sep 11 19:19:05 1994 -.\" Modified Mon Mar 25 10:19:00 1996 (merged a few -.\" tiny changes from a man page by Charles Livingston). -.\" Modified Sun Jul 21 14:45:46 1996 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Sat Mar 1 16:46:43 JST 1997 -.\" by HANATAKA Shinya -.\" Modified Mon May 5 19:43:49 JST 1997 -.\" by HANATAKA Shinya -.\" Updated & Modified Thu Feb 10 22:45:24 JST 2005 -.\" by Yuichi SATO -.\" -.TH SETSID 2 2014\-12\-31 Linux "Linux Programmer's Manual" -.SH 名前 -setsid \- セッション (session) を作成し、プロセスグループ ID を設定する -.SH 書式 -.ad l -\fB#include \fP -.sp -\fBpid_t setsid(void);\fP -.br -.ad b -.SH 説明 -\fBsetsid\fP() は、 呼び出したプロセスがプロセスグループリーダー (process group leader) でなければ、 -新しいセッションを作成する。 呼び出したプロセスは、 新しいセッションのリーダーとなる (すなわち、そのセッション ID がプロセス ID -と同じ値になる)。 また、呼び出したプロセスは、 そのセッションの新しいプロセスグループのプロセスグループリーダーにもなる (すなわち、プロセスグループ -ID がプロセス ID と同じ値になる)。 - -呼び出したプロセスは、 新しいプロセスグループと新しいセッションの唯一のプロセスとなる。 新しいセッションは制御端末を持たない。 -.SH 返り値 -成功すると、呼び出したプロセスの (新しい) セッション ID が返される。 エラーの場合は、 \fI(pid_t)\ \-1\fP が返され、 -\fIerrno\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() -を呼び出すことを許可しないと、 そのプロセスグループ内の他のプロセスを元のセッションに残したまま、 -プロセスグループリーダーが自分自身を新しいセッションに入れるということができなくなる。 このようなシナリオは、 セッションとプロセスグループという厳密な -2 階層モデルを壊すことになる。 \fBsetsid\fP() が成功することを保証するには、 \fBfork\fP(2) と \fB_exit\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/setuid.2 b/manual/LDP_man-pages/draft/man2/setuid.2 index 55ab7083..1b8d01a1 100644 --- a/manual/LDP_man-pages/draft/man2/setuid.2 +++ b/manual/LDP_man-pages/draft/man2/setuid.2 @@ -1,4 +1,5 @@ .\" Copyright (C), 1994, Graeme W. Wilford (Wilf). +.\" and Copyright (C) 2010, 2014, 2015, Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this @@ -45,33 +46,36 @@ .\" Updated 2010-04-10, Akihiro MOTOKI , LDP v3.24 .\" Updated 2012-04-30, Akihiro MOTOKI .\" -.TH SETUID 2 2014\-09\-21 Linux "Linux Programmer's Manual" +.TH SETUID 2 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 setuid \- ユーザー識別 (identity) を設定する .SH 書式 \fB#include \fP .br \fB#include \fP -.sp +.PP \fBint setuid(uid_t \fP\fIuid\fP\fB);\fP .SH 説明 -\fBsetuid\fP() は呼び出し元のプロセスの実効 (effective) ユーザー ID を設定する。 もし呼び出し元プロセスの実効 UID が -root ならば、 実 (real) UID と保存 (saved) set\-user\-ID も設定される。 +\fBsetuid\fP() sets the effective user ID of the calling process. If the +calling process is privileged (more precisely: if the process has the +\fBCAP_SETUID\fP capability in its user namespace), the real UID and saved +set\-user\-ID are also set. .PP Linux では、 \fBsetuid\fP() は \fB_POSIX_SAVED_IDS\fP をもった POSIX 版のように実装されている。 これは (ルート以外の) set\-user\-ID プログラムにそのユーザーの特権を 全て与え、特権の必要ない仕事をし、本来の実効ユーザー ID に 安全な方法で再び戻すことを許す。 .PP -ユーザーが root またはプログラムが root に set\-user\-ID されているならば、 特別の注意が払われる。 \fBsetuid\fP() -関数は呼び出し者の実効ユーザー ID をチェックし、 それがスーパーユーザーならば、 プロセスに関連する全てのユーザー ID に \fIuid\fP -を設定する。 これが行なわれた後にはプログラムが再びルートの特権を得ることはできない。 +If the user is root or the program is set\-user\-ID\-root, special care must be +taken: \fBsetuid\fP() checks the effective user ID of the caller and if it is +the superuser, all process\-related user ID's are set to \fIuid\fP. After this +has occurred, it is impossible for the program to regain root privileges. .PP したがって、set\-user\-ID\-root プログラムで、一時的にルート特権を解除し、 非特権ユーザーであるかのように振舞い、後でルート権限をもう一度得ようと する場合には、 \fBsetuid\fP() を使うことができない。その場合には、 \fBseteuid\fP(2) を使う必要がある。 .SH 返り値 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 - +.PP \fI注意\fP: 呼び出し元が UID 0 であっても \fBsetuid\fP() が失敗する場合がある。 \fBsetuid\fP() からのリターンが失敗かどうかの確認を省略することは重大なセキュリティ上のエラーとなる。 .SH エラー @@ -89,12 +93,13 @@ Linux では、 \fBsetuid\fP() は \fB_POSIX_SAVED_IDS\fP をもった POSIX \fIuid\fP で指定されたユーザー ID がこのユーザー名前空間では有効ではない。 .TP \fBEPERM\fP -ユーザーが特権を持たず (Linux では \fBCAP_SETUID\fP ケーパビリティ (capability) を持たず)、 \fIuid\fP -が呼び出し元プロセスの実 UID または保存 set\-user\-ID と一致しない。 +The user is not privileged (Linux: does not have the \fBCAP_SETUID\fP +capability in its user namespace) and \fIuid\fP does not match the real UID or +saved set\-user\-ID of the calling process. .SH 準拠 .\" SVr4 documents an additional EINVAL error condition. -SVr4, POSIX.1\-2001. 4.4BSD のコールとは完全な互換性はない、 BSD のコールは実 (real)、保存 (saved)、実効 -(effective) ID の全てを設定する。 +POSIX.1\-2001, POSIX.1\-2008, SVr4. Not quite compatible with the 4.4BSD +call, which sets all of the real, saved, and effective user IDs. .SH 注意 Linux はファイルシステムユーザー ID の概念を持つ。 通常、これは実効ユーザー ID に等しい。 @@ -104,17 +109,26 @@ Linux はファイルシステムユーザー ID の概念を持つ。 .PP \fIuid\fP が前の実効 UID と異っていた場合、 プロセスはコアダンプすることを禁止される。 - +.PP +.\" 元々の Linux の \fBsetuid\fP() システムコールは 16 ビットのグループ ID だけに対応していた。 その後、Linux 2.4 で、32 ビットの ID に対応した \fBsetuid32\fP() が追加された。 glibc の \fBsetuid\fP() のラッパー関数は カーネルバージョンによるこの違いを吸収している。 +.SS "C library/kernel differences" +At the kernel level, user IDs and group IDs are a per\-thread attribute. +However, POSIX requires that all threads in a process share the same +credentials. The NPTL threading implementation handles the POSIX +requirements by providing wrapper functions for the various system calls +that change process UIDs and GIDs. These wrapper functions (including the +one for \fBsetuid\fP()) employ a signal\-based technique to ensure that when +one thread changes credentials, all of the other threads in the process also +change their credentials. For details, see \fBnptl\fP(7). .SH 関連項目 \fBgetuid\fP(2), \fBseteuid\fP(2), \fBsetfsuid\fP(2), \fBsetreuid\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7), \fBuser_namespaces\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/setup.2 b/manual/LDP_man-pages/draft/man2/setup.2 index 895410bd..edde5872 100644 --- a/manual/LDP_man-pages/draft/man2/setup.2 +++ b/manual/LDP_man-pages/draft/man2/setup.2 @@ -51,7 +51,7 @@ setup \- デバイスとファイルシステムの初期化を行い、 ルートファイルシステムのマウントを行う .SH 書式 \fB#include \fP -.sp +.PP \fBint setup(void);\fP .SH 説明 \fBsetup\fP() は \fIlinux/init/main.c\fP の中で一度だけ呼ばれる。 @@ -73,6 +73,5 @@ Linux 2.1.121 以降では、もはやこの関数は存在しない。 呼び出し手続きは変化してきた。 ある時は \fBsetup\fP() は一つの引数 \fIvoid\ *BIOS\fP を取っており、またある時には \fIint magic\fP を一つの引数として取っていた。 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/setxattr.2 b/manual/LDP_man-pages/draft/man2/setxattr.2 deleted file mode 100644 index e383ed13..00000000 --- a/manual/LDP_man-pages/draft/man2/setxattr.2 +++ /dev/null @@ -1,114 +0,0 @@ -.\" Copyright (C) Andreas Gruenbacher, February 2001 -.\" Copyright (C) Silicon Graphics Inc, September 2001 -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Tue Jul 8 04:43:40 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2013-03-27, Akihiro MOTOKI -.\" -.TH SETXATTR 2 2014\-02\-06 Linux "Linux Programmer's Manual" -.SH 名前 -setxattr, lsetxattr, fsetxattr \- 拡張属性の値を設定する -.SH 書式 -.fam C -.nf -\fB#include \fP -\fB#include \fP -.sp -\fBint setxattr(const char\ *\fP\fIpath\fP\fB, const char\ *\fP\fIname\fP\fB,\fP -\fB const void\ *\fP\fIvalue\fP\fB, size_t \fP\fIsize\fP\fB, int \fP\fIflags\fP\fB);\fP -\fBint lsetxattr(const char\ *\fP\fIpath\fP\fB, const char\ *\fP\fIname\fP\fB,\fP -\fB const void\ *\fP\fIvalue\fP\fB, size_t \fP\fIsize\fP\fB, int \fP\fIflags\fP\fB);\fP -\fBint fsetxattr(int \fP\fIfd\fP\fB, const char\ *\fP\fIname\fP\fB,\fP -\fB const void\ *\fP\fIvalue\fP\fB, size_t \fP\fIsize\fP\fB, int \fP\fIflags\fP\fB);\fP -.fi -.fam T -.SH 説明 -拡張属性は、inode (ファイル、ディレクトリ、シンボリックリンク等) に 関連付けられた \fIname\fP:\fIvalue\fP の対である。 -これらは、システム上のすべての inode に関連付けられた通常の属性 (\fBstat\fP(2) が返すデータ) を拡張するものである。 -拡張属性のコンセプトは \fBattr\fP(5) に書かれている。 -.PP -\fBsetxattr\fP() は、ファイルシステム内の指定された \fIpath\fP に対応する、名前 \fIname\fP の拡張属性の値 \fIvalue\fP -を設定する。 \fIvalue\fP の \fIsize\fP は必ず指定しなければならない。 -.PP -\fBlsetxattr\fP() は \fBsetxattr\fP() と同じだが、シンボリックリンクの場合に、リンクが参照しているファイル -ではなく、リンクそのものの拡張属性を設定する点だけが異なる。 -.PP -\fBfsetxattr\fP() は \fBsetxattr\fP() と同じだが、 \fIpath\fP の代わりに \fIfd\fP -で参照されたオープン済みファイルの情報だけを設定する点が異なる (\fIfiledes\fP は \fBopen\fP(2) によって返される)。 -.PP -拡張属性の名前 は普通のヌル終端された文字列である。 \fIname\fP には、名前空間を表す接頭辞 (prefix) が含まれる。 個々の inode -に対して、互いに独立な名前空間が複数あってもよい。 拡張属性の値 \fIvalue\fP は、ある一定の長さの任意のテキストデータまたは -バイナリデータの集合である。 -.PP -操作の意味を明確にするために \fIflags\fP 引き数を使用することができる。 \fBXATTR_CREATE\fP は属性の作成だけを行うことを指定する。 -指定された名前の属性がすでに存在する場合は失敗する。 \fBXATTR_REPLACE\fP は属性の置換だけを行うことを指定する。 -指定された名前の属性がまだ存在しない場合は失敗する。 デフォルトでは (フラグを指定しない場合)、拡張属性は必要な場合は作成され、 -属性がすでに存在する場合は属性値の置換を行う。 -.SH 返り値 -成功した場合、0 が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。 -.SH エラー -.TP -\fBEDQUOT\fP -ディスクのクォータ上限に達した。拡張属性を格納できるだけの空き領域がないことを意味する。 -.TP -\fBEEXIST\fP -\fBXATTR_CREATE\fP が指定されたが、その属性はすでに存在している。 -.TP -\fBENOATTR\fP -\fBXATTR_REPLACE\fP が指定されたが、その属性が存在しない。(\fBENOATTR\fP は \fI\fP -で \fBENODATA\fP の同義語として定義されている。) -.TP -\fBENOSPC\fP -拡張属性を記憶するのに十分なスペースが残っていない。 -.TP -\fBENOTSUP\fP -拡張属性がそのファイルシステムでサポートされていない、もしくは無効になっている。 -\fIerrno\fP に \fBENOTSUP\fP がセットされる。 -.PP -上記に加えて、 \fBstat\fP(2) に書かれているエラーが発生する場合もある。 -.SH バージョン -これらのシステムコールはカーネル 2.4 以降の Linux で利用できる。 glibc でのサポートはバージョン 2.3 以降で行われている。 -.SH 準拠 -.\" .SH AUTHORS -.\" Andreas Gruenbacher, -.\" .RI < a.gruenbacher@computer.org > -.\" and the SGI XFS development team, -.\" .RI < linux-xfs@oss.sgi.com >. -.\" Please send any bug reports or comments to these addresses. -これらのシステムコールは Linux 独自である。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/sgetmask.2 b/manual/LDP_man-pages/draft/man2/sgetmask.2 index 1e2012f8..367c8eed 100644 --- a/manual/LDP_man-pages/draft/man2/sgetmask.2 +++ b/manual/LDP_man-pages/draft/man2/sgetmask.2 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (c) 2007 by Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) @@ -34,22 +33,22 @@ .\" Translated 2007-10-16, Akihiro MOTOKI , LDP v2.66 .\" Updated 2013-03-26, Akihiro MOTOKI .\" -.TH SGETMASK 2 2014\-12\-31 Linux "Linux Programmer's Manual" +.TH SGETMASK 2 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 sgetmask, ssetmask \- シグナルマスクの操作 (廃止予定) .SH 書式 \fBlong sgetmask(void);\fP -.sp +.PP \fBlong ssetmask(long \fP\fInewmask\fP\fB);\fP - +.PP \fI注\fP: これらのシステムコールには、glibc のラッパー関数はない。「注意」の節を参照。 .SH 説明 これらのシステムコールは廃止予定であり、 「使用しないこと」。 代わりに \fBsigprocmask\fP(2) を使用すること。 - +.PP \fBsgetmask\fP() は、呼び出し元プロセスのシグナルマスクを返す。 - +.PP \fBssetmask\fP() は、呼び出し元プロセスのシグナルマスクを \fInewmask\fP で指定された値に設定し、変更前のシグナルマスクを返す。 - +.PP これら二つのシステムコールが扱うシグナルマスクは、 単純なビットマスクである (この点が \fBsigprocmask\fP(2) で使用される \fIsigset_t\fP と異なる)。 これらのマスクを作成したり検査するには \fBsigmask\fP(3) を使用すること。 .SH 返り値 @@ -65,14 +64,14 @@ Linux 3.16 以降では、これらのシステムコールのサポートは任 .SH 注意 glibc はこれらの古いシステムコールに対するラッパー関数を提供していない。 あまりないと思うが、これらを呼び出したい場合には \fBsyscall\fP(2) を使うこと。 - +.PP これらのシステムコールは、 31 より大きいシグナル番号 (つまり、リアルタイムシグナル) を扱えない。 - +.PP これらのシステムコールは x86\-64 には存在しない。 - +.PP \fBSIGSTOP\fP や \fBSIGKILL\fP をブロックすることはできない。 .SH 関連項目 \fBsigprocmask\fP(2), \fBsignal\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 7d814872..00000000 --- a/manual/LDP_man-pages/draft/man2/shmctl.2 +++ /dev/null @@ -1,277 +0,0 @@ -.\" Copyright (c) 1993 Luigi P. Bai (lpb@softint.com) July 28, 1993 -.\" and Copyright 1993 Giorgio Ciucci -.\" and Copyright 2004, 2005 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 1993-07-28, Rik Faith -.\" Modified 1993-11-28, Giorgio Ciucci -.\" Modified 1997-01-31, Eric S. Raymond -.\" Modified 2001-02-18, Andries Brouwer -.\" Modified 2002-01-05, 2004-05-27, 2004-06-17, -.\" Michael Kerrisk -.\" Modified 2004-10-11, aeb -.\" Modified, Nov 2004, Michael Kerrisk -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-03-01, HANATAKA Shinya -.\" Updated & Modified 2001-06-13, Yuichi SATO -.\" Updated & Modified 2005-01-05, Yuichi SATO -.\" Updated & Modified 2005-09-06, Akihiro MOTOKI -.\" Updated & Modified 2005-10-08, Akihiro MOTOKI -.\" Updated 2006-07-21, Akihiro MOTOKI, LDP v2.36 -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH SHMCTL 2 2014\-02\-07 Linux "Linux Programmer's Manual" -.SH 名前 -shmctl \- System V 共有メモリー (shared memory) を制御する -.SH 書式 -.ad l -\fB#include \fP -.br -\fB#include \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\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 になった) 後でのみ破棄される。 -呼び出し元はそのセグメントの所有者か作成者であるか、特権を持たなければならない。 \fIbuf\fP 引き数は無視される。 -.IP -セグメントに破棄のマークが付けられると、 関連するデータ構造体において \fIshm_perm.mode\fP フィールドの (標準ではない) -\fBSHM_DEST\fP フラグが設定される。 このデータ構造体は \fBIPC_STAT\fP で取得される。 -.IP -呼び出し元は最終的にはセグメントを忘れずに破棄\fIしなければならない\fP。 そうでなれば、フォールト (fault) されたページは メモリーかスワップ -(swap) に残り続ける。 -.IP -\fBproc\fP(5) の \fI/proc/sys/kernel/shm_rmid_forced\fP の説明も参照のこと。 -.TP 10 -\fBIPC_INFO\fP (Linux 固有) -システム全体での共有メモリーの制限とパラメーターに関する情報を、 \fIbuf\fP が指す構造体に入れて返す。 この構造体は \fIshminfo\fP 型である -(そのためキャストが必要である)。 \fIshminfo\fP は \fB_GNU_SOURCE\fP 機能検査マクロが定義された場合に -\fI\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\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. -Linux や POSIX の全てのバージョンでは、 \fI\fP と \fI\fP -のインクルードは必要ない。しかしながら、いくつかの古い実装ではこれらのヘッダーファイルのインクルードが必要であり、 SVID -でもこれらのインクルードをするように記載されている。このような古いシステムへの移植性を意図したアプリケーションではこれらのファイルをインクルードする必要があるかもしれない。 - -\fBIPC_INFO\fP, \fBSHM_STAT\fP, \fBSHM_INFO\fP 操作は、 \fBipcs\fP(1) -プログラムで割り当て済の資源に関する情報を提供するために 使用されている。将来、これらの操作は変更されたり、 \fI/proc\fP -ファイルシステムのインターフェースに移動されるかもしれない。 - -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 299fa3c9..00000000 --- a/manual/LDP_man-pages/draft/man2/shmget.2 +++ /dev/null @@ -1,234 +0,0 @@ -.\" 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 -.\" Modified Sun Nov 28 16:43:30 1993, Rik Faith -.\" with material from Giorgio Ciucci -.\" Portions Copyright 1993 Giorgio Ciucci -.\" Modified Tue Oct 22 22:03:17 1996 by Eric S. Raymond -.\" Modified, 8 Jan 2003, Michael Kerrisk, -.\" Removed EIDRM from errors - that can't happen... -.\" Modified, 27 May 2004, Michael Kerrisk -.\" Added notes on capability requirements -.\" Modified, 11 Nov 2004, Michael Kerrisk -.\" Language and formatting clean-ups -.\" Added notes on /proc files -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-03-01, HANATAKA Shinya -.\" Updated & Modified 2001-06-03, Yuichi SATO -.\" Updated 2001-12-22, Kentaro Shirakata -.\" Updated 2002-10-16, Kentaro Shirakata -.\" Updated 2003-02-23, Kentaro Shirakata -.\" Updated 2005-03-02, Akihiro MOTOKI -.\" Updated 2005-11-04, Akihiro MOTOKI -.\" Updated 2006-07-21, Akihiro MOTOKI, LDP v2.36 -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" Updated 2013-07-24, Akihiro MOTOKI -.\" -.TH SHMGET 2 2015\-01\-10 Linux "Linux Programmer's Manual" -.SH 名前 -shmget \- System V 共有メモリーセグメントを割り当てる -.SH 書式 -.ad l -\fB#include \fP -.br -\fB#include \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 -\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 -上記のフラグに加えて、 \fIshmflg\fP の下位 9 ビットは、所有者、グループ、その他への許可を指定する。 これらのビットは \fBopen\fP(2) -の \fImode\fP 引き数と同じ形式で同じ意味を持つ。 今のところ、システムは実行 (execute) 許可を参照しない。 -.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 返り値 -成功の場合、有効な共有メモリーセグメントの識別子が返される。 エラーの場合、 \-1 が返り、 \fIerrno\fP にエラーを示す値が設定される。 -.SH エラー -失敗した場合は \fIerrno\fP が以下のどれかに設定される: -.TP -\fBEACCES\fP -ユーザーはその共有メモリーセグメントへのアクセス許可を持たず、 \fBCAP_IPC_OWNER\fP ケーパビリティも持っていない。 -.TP -\fBEEXIST\fP -\fBIPC_CREAT\fP と \fBIPC_EXCL\fP が \fIshmflg\fP に指定されたが、 \fIkey\fP -に対応する共有メモリーセグメントはすでに存在する。 -.TP -\fBEINVAL\fP -新しいセグメントを作成しようとしたが、 \fIsize\fP が \fBSHMMIN\fP より小さいか \fBSHMMAX\fP よりも大きかった。 -.TP -\fBEINVAL\fP -指定された \fIkey\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 と \fBSHM_NORESERVE\fP は Linux での拡張である。 -.SH 注意 -.\" Like Linux, the FreeBSD man pages still document -.\" the inclusion of these header files. -Linux や POSIX の全てのバージョンでは、 \fI\fP と \fI\fP -のインクルードは必要ない。しかしながら、いくつかの古い実装ではこれらのヘッダーファイルのインクルードが必要であり、 SVID -でもこれらのインクルードをするように記載されている。このような古いシステムへの移植性を意図したアプリケーションではこれらのファイルをインクルードする必要があるかもしれない。 - -.\" -\fBIPC_PRIVATE\fP はフラグではなく \fIkey_t\fP 型である。 この特別な値が \fIkey\fP に使用された場合は、 \fBshmget\fP() -は \fIshmflg\fP の下位 9 ビットを除いた全てを無視し、 新しい共有メモリーセグメントを作成する。 -.SS 共有メモリーの上限 -\fBshmget\fP() コールに影響する共有メモリーセグメント資源の制限は以下の通りである: -.TP -\fBSHMALL\fP -共有メモリーの全使用量のシステム全体での上限値。 システムページサイズが単位である。 - -.\" commit 060028bac94bf60a65415d1d55a359c3a17d5c31 -Linux では、この上限値は \fI/proc/sys/kernel/shmall\fP 経由で参照したり、変更したりできる。 Linux 3.16 -以降では、 この上限値のデフォルト値は以下のとおりである。 - - ULONG_MAX \- 2^24 - -この値は割り当てに関する上限としては適用されない (なお、この値は 32 ビットシステムにも 64 ビットシステムにも適したものになっている)。 -\fBULONG_MAX\fP ではなく、この値が選ばれたのは、 -古いアプリケーションが最初に現在の値を確認せずに既存の上限をそのまま増やしてしまっても問題が起こらないようなデフォルト値を選んだからである。 -このようなアプリケーションでは、 上限を \fBULONG_MAX\fP に設定すると値がオーバーフローしてしまうことになる。 - -Linux 2.4 から Linux 3.15 では、この上限のデフォルト値は以下であった。 - - SHMMAX / PAGE_SIZE * (SHMMNI / 16) - -\fBSHMMAX\fP と \fBSHMMNI\fP が変更されないとすると、 この式の結果に (バイト単位の値を得るために) ページサイズを掛け算すると、 -全ての共有メモリーセグメントで使用される全メモリーの上限として、 8 GB という値が得られる。 -.TP -\fBSHMMAX\fP -1 つの共有メモリーセグメントの最大サイズ (バイト数)。 - -.\" commit 060028bac94bf60a65415d1d55a359c3a17d5c31 -Linux では、この上限値は \fI/proc/sys/kernel/shmmax\fP 経由で参照したり、変更したりできる。 Linux 3.16 -以降では、 この上限値のデフォルト値は以下のとおりである。 - - ULONG_MAX \- 2^24 - -この値は割り当てに関する上限としては適用されない (なお、この値は 32 ビットシステムにも 64 ビットシステムにも適したものになっている)。 -(\fBULONG_MAX\fP ではなく) このデフォルト値が使われている理由については \fBSHMALL\fP の説明を参照。 - -Linux 2.2 から Linux 3.15 までは、この上限値のデフォルト値は 0x2000000 (32MB) であった。 - -共有メモリーセグメントの一部分だけをマッピングすることはできないので、 -使用可能なセグメントの最大サイズには仮想メモリーの総量という別の上限が適用される。 例えば、i386 -ではマッピング可能な最大セグメントの大きさはおおよそ 2.8GB で、 x86_64 では上限はおおよそ 127TB である。 -.TP -\fBSHMMIN\fP -共有メモリーセグメントのバイト単位の大きさの下限: 実装依存 (現在は 1 バイトだが、実質的な最小サイズは \fBPAGE_SIZE\fP である)。 -.TP -\fBSHMMNI\fP -システム全体の共有メモリーセグメント数の上限値。 この上限値のデフォルトは、 Linux 2.2 以降では 128、 Linux 2.4 以降で -4096 である。 - -.\" 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 -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 関連項目 -\fBmemfd_create\fP(2), \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/shmop.2 b/manual/LDP_man-pages/draft/man2/shmop.2 deleted file mode 100644 index 910ced6e..00000000 --- a/manual/LDP_man-pages/draft/man2/shmop.2 +++ /dev/null @@ -1,187 +0,0 @@ -.\" 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 Sun Nov 28 17:06:19 1993, Rik Faith (faith@cs.unc.edu) -.\" with material from Luigi P. Bai (lpb@softint.com) -.\" Portions Copyright 1993 Luigi P. Bai -.\" Modified Tue Oct 22 22:04:23 1996 by Eric S. Raymond -.\" Modified, 5 Jan 2002, Michael Kerrisk -.\" Modified, 19 Sep 2002, Michael Kerrisk -.\" Added SHM_REMAP flag description -.\" Modified, 27 May 2004, Michael Kerrisk -.\" Added notes on capability requirements -.\" Modified, 11 Nov 2004, Michael Kerrisk -.\" Language and formatting clean-ups -.\" Changed wording and placement of sentence regarding attachment -.\" of segments marked for destruction -.\" -.\" FIXME . Add an example program to this page. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1999-08-15, HANATAKA Shinya -.\" Updated & Modified 2002-05-07, Yuichi SATO -.\" Updated & Modified 2003-01-18, Yuichi SATO -.\" Updated & Modified 2005-01-07, Yuichi SATO -.\" Updated 2005-12-05, Akihiro MOTOKI, Catch up to LDP man-pages 2.16 -.\" Updated 2006-04-14, Akihiro MOTOKI, Catch up to LDP man-pages 2.29 -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-07-24, Akihiro MOTOKI -.\" -.TH SHMOP 2 2014\-07\-08 Linux "Linux Programmer's Manual" -.SH 名前 -shmat, shmdt \- System V 共有メモリー (shared memory) の操作 -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP - -\fBvoid *shmat(int \fP\fIshmid\fP\fB, const void *\fP\fIshmaddr\fP\fB, int \fP\fIshmflg\fP\fB);\fP - -\fBint shmdt(const void *\fP\fIshmaddr\fP\fB);\fP -.fi -.SH 説明 -.SS shmat() -\fBshmat\fP() は \fIshmid\fP で指定された System\ V 共有メモリーセグメント (shared memory segment) -を コールしたプロセスのアドレス空間に付加 (attach) する。 付加するアドレスは \fIshmaddr\fP に以下のどれかの形式で指定する: -.IP * 3 -\fIshmaddr\fP が NULL ならば、システムはセグメントを付加するための 適切な (使用されていない) アドレスを選択する。 -.IP * -\fIshmaddr\fP が NULL でなく \fBSHM_RND\fP が \fIshmflg\fP に指定されている場合は、 \fIshmaddr\fP を -\fBSHMLBA\fP の倍数へと切り捨てた (rounding down) のと等しいアドレスへ付加する。 -.IP * -その他の場合は \fIshmaddr\fP は付加を行なうアドレスで、ページ境界を指している必要がある。 -.PP -\fBSHM_RND\fP に加えて、以下のフラグを \fIshmflg\fP ビットマスク引き数に指定できる。 -.TP -\fBSHM_EXEC\fP (Linux 固有; Linux 2.6.9 以降) -セグメントの内容を実行できる。 呼び出し元はセグメントに対する実行許可を持っていなければならない。 -.TP -\fBSHM_RDONLY\fP -セグメントを読み込み専用に付加する。 プロセスはそのセグメントへの読み込み許可を持っていなければならない。 -このフラグが指定されなかった場合、そのセグメントは読み込みと書き込みアクセスのために付加され、 -プロセスはそのセグメントに読み込みと書き込みの許可を持っていなければならない。 書き込み専用の共有メモリーセグメントという概念は存在しない。 -.TP -\fBSHM_REMAP\fP (Linux 固有) -このフラグは、 セグメントのマッピングを既存のマッピングに置き換えることを指示する。 マッピングの範囲は、 \fIshmaddr\fP -から始まりセグメントのサイズ分だけある (通常 \fBEINVAL\fP エラーは、このアドレス範囲にマッピングが既に存在するために起る)。 -このフラグを指定する場合は、 \fIshmaddr\fP が NULL であってはならない。 -.PP -呼び出したプロセスの \fBbrk\fP(2) の値は付加によって変化しない。 そのセグメントはプロセスが終了 (exit) したら自動的に分離 -(detach) される。 同じセグメントをプロセスのアドレス空間に、読み込み専用および読み書き両用 として付加でき、また複数回付加することもできる。 -.PP -成功した \fBshmat\fP() コールは共有メモリーセグメントに関連する \fIshmid_ds\fP 構造体 (\fBshmctl\fP(2) を参照) -のメンバーを以下のように更新する: -.IP -\fIshm_atime\fP には現在の時刻を設定する。 -.IP -\fIshm_lpid\fP には呼び出したプロセスのプロセス ID が設定される。 -.IP -.\" -\fIshm_nattch\fP を 1 増加させる。 -.SS shmdt() -\fBshmdt\fP() は呼び出したプロセスのアドレス空間から \fIshmaddr\fP で指定されたアドレスに配置された共有メモリーセグメントを分離 -(detach) する。 分離する共有メモリーセグメントは、現在 \fIshmaddr\fP に付加されているものでなければならない。 \fIshmaddr\fP -は、それを付加した時に \fBshmat\fP() が返した値に等しくなければならない。 -.PP -成功した \fBshmdt\fP() コールはその共有メモリーセグメントに関連する \fIshmid_ds\fP 構造体のメンバーを以下のように更新する: -.IP -\fIshm_dtime\fP には現在の時刻が設定される。 -.IP -\fIshm_lpid\fP には呼び出したプロセスのプロセス ID が設定される。 -.IP -\fIshm_nattch\fP を 1 減少させる。 もし 0 になり、削除マークがあった場合は そのセグメントは削除される。 -.SH 返り値 -\fBshmat\fP() は、成功した場合、 付加された共有メモリーセグメントのアドレスを返す。 エラーの場合、 \fI(void\ *)\ \-1\fP -を返し、 \fIerrno\fP にエラーの原因を示す値を設定する。 - -\fBshmdt\fP() は、成功すると 0 を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP にエラーの原因を示す値を設定する。 -.SH エラー -\fBshmat\fP() が失敗した場合、 \fIerrno\fP に以下の値のどれかを設定して返す: -.TP -\fBEACCES\fP -呼び出したプロセスに要求された種類の付加に必要な許可がなく、 \fBCAP_IPC_OWNER\fP ケーパビリティ (capability) がない。 -.TP -\fBEIDRM\fP -\fIshmid\fP が削除 (remove) された識別子 (identifier) を指している。 -.TP -\fBEINVAL\fP -\fIshmid\fP の値が不正である。 \fIshmaddr\fP の値が境界違反 (unaligned) (つまり、ページ境界に合っておらず、 -\fBSHM_RND\fP が指定されていない) または が不正である。 \fIshmaddr\fP へのセグメントの付加に失敗した。 または -\fBSHM_REMAP\fP が指定されているが、 \fIshmaddr\fP が NULL であった。 -.TP -\fBENOMEM\fP -ディスクリプター (descriptor) やページテーブルのためのメモリーを 割り当てることができない。 -.PP -\fBshmdt\fP() が失敗した場合、 \fBEINVAL\fP は以下のようにセットされる: -.TP -\fBEINVAL\fP -.\" The following since 2.6.17-rc1: -\fIshmaddr\fP に付加された共有メモリーセグメントが存在しない。 もしくは、 \fIshmaddr\fP がページ境界に合っていない。 -.SH 準拠 -.\" SVr4 documents an additional error condition EMFILE. -SVr4, POSIX.1\-2001. - -SVID 3 で (たぶんそれより前だと思うが) \fIshmaddr\fP 引き数の型は \fIchar\ *\fP から \fIconst void\ *\fP -に、\fIshmat\fP() の返り値の型は \fIchar\ *\fP から \fIvoid\ *\fP に変更された。 -.SH 注意 -.PP -\fBfork\fP(2) した後、子プロセスは付加された共有メモリーセグメントを継承する。 - -\fBexec\fP(2) した後、全ての付加された共有メモリーセグメントはプロセスから分離される。 - -\fBexit\fP(2) において、全ての付加された共有メモリーセグメントはプロセスから分離される。 - -共有メモリーセグメントを付加する場合の移植性の高い方法としては、 \fIshmaddr\fP を NULL にして \fBshmat\fP() -を使用するのがよい。 このような方法で付加される共有メモリーセグメントは、 プロセスが異なれば別のアドレスに付加される、という点に注意すること。 -よって共有メモリー内で管理されるポインターは、 絶対アドレスではなく、 (一般的にはセグメントの開始アドレスからの) -相対アドレスで作成するべきである。 -.PP -Linux では共有メモリーセグメントに既に削除マークが付けられていても、 その共有メモリーセグメントを付加することができる。 しかし -POSIX.1\-2001 ではこのような動作を指定しておらず、 他の多くの実装もこれをサポートしていない。 -.LP -以下のシステムパラメーターは、 \fBshmat\fP() に影響する: -.TP -\fBSHMLBA\fP -セグメントの下限アドレス倍数 (Segment low boundary address multiple)。 \fBshmat\fP() -の呼び出しにおいて付加するアドレスを明示的に指定する際、 呼び出し元は指定するアドレスがこの値の倍数になるように保証しなければならない。 -これはいくつかのアーキテクチャーでは必要なことで、 CPU キャッシュの性能を保証するためであったり、 同じセグメントの別の付与を CPU -キャッシュ内部で一貫して扱えるようにするためだったりする。 \fBSHMLBA\fP は通常はシステムページサイズの倍数である (Linux -の多くのアーキテクチャーではシステムページサイズと同じである)。 -.PP -現在の実装では、プロセスごとの 共有メモリーセグメントの最大数 (\fBSHMSEG\fP) に関する実装依存の制限はない。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index 93b832b0..91112267 100644 --- a/manual/LDP_man-pages/draft/man2/shutdown.2 +++ b/manual/LDP_man-pages/draft/man2/shutdown.2 @@ -53,12 +53,12 @@ .\" Updated Mon Oct 15 03:22:24 JST 2001 by Kentaro Shirakata .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH SHUTDOWN 2 2012\-09\-06 Linux "Linux Programmer's Manual" +.TH SHUTDOWN 2 2018\-04\-30 Linux "Linux Programmer's Manual" .SH 名前 shutdown \- 全二重接続の一部を閉じる .SH 書式 \fB#include \fP -.sp +.PP \fBint shutdown(int \fP\fIsockfd\fP\fB, int \fP\fIhow\fP\fB);\fP .SH 説明 \fBshutdown\fP() は、 \fIsockfd\fP に関連づけられているソケットによる全二重接続 (full\-duplex connection) @@ -69,7 +69,7 @@ shutdown \- 全二重接続の一部を閉じる .SH エラー .TP \fBEBADF\fP -\fIsockfd\fP が有効なディスクリプターでない。 +\fIsockfd\fP is not a valid file descriptor. .TP \fBEINVAL\fP \fIhow\fP に無効な値が指定された (バグが参照)。 @@ -78,20 +78,23 @@ shutdown \- 全二重接続の一部を閉じる 指定されたソケットは接続されていない。 .TP \fBENOTSOCK\fP -\fIsockfd\fP がソケットでなくファイルである。 +The file descriptor \fIsockfd\fP does not refer to a socket. .SH 準拠 -POSIX.1\-2001, 4.4BSD (\fBshutdown\fP() 関数コールは 4.2BSD で初めて登場した)。 +POSIX.1\-2001, POSIX.1\-2008, 4.4BSD (\fBshutdown\fP() first appeared in +4.2BSD). .SH 注意 \fBSHUT_RD\fP, \fBSHUT_WR\fP, \fBSHUT_RDWR\fP の各定数 (それぞれ 0, 1, 2 の値を持つ) は glibc\-2.1.91 以降、 \fI\fP で定義されている。 .SH バグ -.\" FIXME . .\" https://bugzilla.kernel.org/show_bug.cgi?id=47111 -現在の実装では \fIhow\fP の妥当性チェックはドメイン固有のコードの中で行われているが、 すべてのドメインでこれらのチェックが行われている訳ではない。 -中でも注意すべきは、 UNIX ドメインソケットでは無効な値は単に無視される点である。 これは将来変更されるかもしれない。 +.\" commit fc61b928dc4d72176cf4bd4d30bf1d22e599aefc +.\" and for DECnet sockets in commit 46b66d7077b89fb4917ceef19b3f7dd86055c94a +Checks for the validity of \fIhow\fP are done in domain\-specific code, and +before Linux 3.7 not all domains performed these checks. Most notably, UNIX +domain sockets simply ignored invalid values. This problem was fixed for +UNIX domain sockets in Linux 3.7. .SH 関連項目 -\fBconnect\fP(2), \fBsocket\fP(2), \fBsocket\fP(7) +\fBclose\fP(2), \fBconnect\fP(2), \fBsocket\fP(2), \fBsocket\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 67b47f50..00000000 --- a/manual/LDP_man-pages/draft/man2/sigaction.2 +++ /dev/null @@ -1,535 +0,0 @@ -'\" t -.\" Copyright (c) 1994,1995 Mike Battersby -.\" and Copyright 2004, 2005 Michael Kerrisk -.\" 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 -.\" 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 -.\" SA_ONSTACK -.\" Modified 2004-11-11 by Michael Kerrisk -.\" Added mention of SIGCONT under SA_NOCLDSTOP -.\" Added SA_NOCLDWAIT -.\" Modified 2004-11-17 by Michael Kerrisk -.\" 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. -.\" 2015-01-17, Kees Cook -.\" Added notes on ptrace SIGTRAP and SYS_SECCOMP. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya all rights reserved. -.\" Translated 1997-03-03, HANATAKA Shinya -.\" Modified 2000-10-02, HANATAKA Shinya -.\" Modified 2001-10-18, Akihiro MOTOKI -.\" Updated 2005-03-15, Akihiro MOTOKI -.\" Updated 2005-10-05, Akihiro MOTOKI -.\" Updated 2007-09-08, Akihiro MOTOKI, LDP v2.64 -.\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2010-04-18, Akihiro MOTOKI, LDP v3.24 -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH SIGACTION 2 2015\-01\-22 Linux "Linux Programmer's Manual" -.SH 名前 -sigaction \- シグナルの動作の確認と変更 -.SH 書式 -.nf -\fB#include \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 -フィールドを規定していない)。 このフィールドの詳細な目的については \fBsigreturn\fP(2) に書かれている。 -.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_RESTORER\fP -\fIアプリケーションでの使用を意図したものではない\fP。 このフラグは C ライブラリが \fIsa_restorer\fP フィールドに "signal -trampoline" のアドレスが入っていることを示すために使用される。 詳細は \fBsigreturn\fP(2) を参照。 -.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 -.\" The siginfo_t 'si_trapno' field seems to be used only 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) */ - void *si_call_addr; /* Address of system call instruction - (since Linux 3.5) */ - int si_syscall; /* Number of attempted system call - (since Linux 3.5) */ - unsigned int si_arch; /* Architecture of attempted system call - (since Linux 3.5) */ -} -.fi -.in - -\fIsi_signo\fP, \fIsi_errno\fP, \fIsi_code\fP は全てのシグナルに対して定義されている (\fIsi_errno\fP は -Linux では一般的には使用されない)。 構造体の残りの部分は、共用体 (union) になっているかもしれない。 -その場合は該当するシグナルにおいて意味のあるフィールドのみを読み込む ことができる。 -.IP * 2 -\fBkill\fP(2) や \fBsigqueue\fP(3) で送信されたシグナルでは \fIsi_pid\fP と \fIsi_uid\fP が設定される。 さらに、 -\fBsigqueue\fP(3) で送信されたシグナルでは \fIsi_int\fP と \fIsi_pid\fP -にシグナルの送信者により指定された値が設定される。詳細は \fBsigqueue\fP(3) を参照。 -.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 * -メッセージキューの通知用に送信されたシグナル (\fBmq_notify\fP(3) の \fBSIGEV_SIGNAL\fP の説明を参照) では、 -\fIsi_int\fP/\fIsi_ptr\fP に \fBmq_notify\fP(3) に渡された \fIsigev_value\fP が設定される。 \fIsi_pid\fP -にはメッセージ送信者のプロセス ID が設定され、 \fIsi_uid\fP にはメッセージ送信者の実ユーザー ID が設定される。 -.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) や -\fBtimes\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 * -\fBSIGILL\fP, \fBSIGFPE\fP, \fBSIGSEGV\fP, \fBSIGBUS\fP, \fBSIGTRAP\fP では、 \fIsi_addr\fP に -fault が発生したアドレスが設定される。 いくつかのアーキテクチャーでは、 これらのシグナルは \fIsi_trapno\fP フィールドにも設定される。 -\fBSIGBUS\fP が発生するエラーのいくつか、特に \fBBUS_MCEERR_AO\fP と \fBBUS_MCEERR_AR\fP では、 -\fIsi_addr_lsb\fP も設定される。 このフィールドは報告されるアドレスの最下位ビットを示し、 これによりメモリー破壊の程度を知ることができる。 -例えば、ページ全体が壊れている場合には \fIsi_addr_lsb\fP には \fIlog2(sysconf(_SC_PAGESIZE))\fP が入る。 -\fBSIGTRAP\fP が \fBptrace\fP(2) イベント (PTRACE_EVENT_foo) に対応して配送される際、 \fIsi_addr\fP -は設定されないが、 \fIsi_pid\fP と \fIsi_uid\fP にはトラップの配送に責任を負うプロセス ID とユーザー ID がそれぞれ格納される。 -\fBseccomp\fP(2) の場合、 トレース対象はイベントを配送した元として示される。 \fBBUS_MCEERR_*\fP と -\fIsi_addr_lsb\fP は Linux 固有の拡張である。 -.IP * -\fBSIGIO\fP/\fBSIGPOLL\fP (2 つの名前は Linux では同義語) では \fIsi_band\fP と \fIsi_fd\fP が設定される。 -\fIsi_band\fP イベントは、 \fBpoll\fP(2) が \fIrevents\fP フィールドに設定するのと同じ値が入ったビットマスクである。 -\fIsi_fd\fP フィールドは I/O イベントが発生したファイルディスクリプターを示す。 -.IP * -.\" commit a0727e8ce513fe6890416da960181ceb10fbfae6 -seccomp フィルターが \fBSECCOMP_RET_TRAP\fP を返す際に (Linux 3.5 以降で) 生成される \fBSIGSYS\fP -シグナルでは、 \fIsi_call_addr\fP, \fIsi_syscall\fP, \fIsi_arch\fP, \fIsi_arch\fP や -\fBseccomp\fP(2) で説明されている他のフィールドが設定される。 -.PP -\fIsi_code\fP は、そのシグナルが送信された理由を示す値である (ビットマスクではない)。 \fBptrace\fP(2) イベントでは、 -\fIsi_code\fP には \fBSIGTRAP\fP が入り、 上位バイトには ptrace イベントが入る。 - -.nf - (SIGTRAP | PTRACE_EVENT_foo << 8). -.fi - -通常のシグナルの場合には、 以下のリストに示す値がどのシグナルの場合でも \fIsi_code\fP に入りうる。シグナルが生成された理由も記載している。 -.RS 4 -.TP -\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 (Linux 2.6.6 以降) -POSIX メッセージキューの状態が変化した; \fBmq_notify\fP(3) 参照 -.TP -\fBSI_ASYNCIO\fP -非同期 IO (AIO) が完了した -.TP -\fBSI_SIGIO\fP -\fBSIGIO\fP がキューイングされた (Linux 2.2 以下のカーネルのみ; Linux 2.4 以降では以下で説明する -\fBSIGIO\fP/\fBSIGPOLL\fP の \fIsi_code\fP が入る) -.TP -\fBSI_TKILL\fP (Linux 2.4.19 以降) -.\" 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) -.RE -.PP -\fBSIGILL\fP シグナルの場合、 \fIsi_code\fP には以下の値が入る可能性がある: -.RS 4 -.TP -\fBILL_ILLOPC\fP -不正な命令コード -.TP -\fBILL_ILLOPN\fP -不正なオペランド -.TP -\fBILL_ILLADR\fP -不正なアドレッシングモード -.TP -\fBILL_ILLTRP\fP -不正なトラップ -.TP -\fBILL_PRVOPC\fP -特権が必要な命令コード -.TP -\fBILL_PRVREG\fP -特権が必要なレジスター -.TP -\fBILL_COPROC\fP -コプロセッサのエラー -.TP -\fBILL_BADSTK\fP -内部スタックエラー -.RE -.PP -\fBSIGFPE\fP シグナルの場合、 \fIsi_code\fP には以下の値が入る可能性がある: -.RS 4 -.TP -\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 -\fBSEGV_MAPERR\fP -オブジェクトにマッピングされていないアドレス -.TP -\fBSEGV_ACCERR\fP -マッピングされたオブジェクトに対するアクセス許可がない -.RE -.PP -\fBSIGBUS\fP シグナルの場合、 \fIsi_code\fP には以下の値が入る可能性がある: -.RS 4 -.TP -\fBBUS_ADRALN\fP -不正なアドレスアライメント (alignment) -.TP -\fBBUS_ADRERR\fP -存在しない物理アドレス -.TP -\fBBUS_OBJERR\fP -オブジェクト固有のハードウェアエラー -.TP -\fBBUS_MCEERR_AR\fP (Linux 2.6.32 以降) -マシンチェックで使用中のハードウェアメモリーのエラーが検出された。対応が必須。 -.TP -\fBBUS_MCEERR_AO\fP (Linux 2.6.32 以降) -実行中にハードウェアメモリーエラーが検出されたが、使用中のメモリーではない。対応は必須ではない。 -.RE -.PP -\fBSIGTRAP\fP シグナルの場合、 \fIsi_code\fP には以下の値が入る可能性がある: -.RS 4 -.TP -\fBTRAP_BRKPT\fP -プロセスのブレークポイント -.TP -\fBTRAP_TRACE\fP -プロセスのトレーストラップ -.TP -\fBTRAP_BRANCH\fP (Linux 2.4 以降) -プロセスのブランチトラップ -.TP -\fBTRAP_HWBKPT\fP (Linux 2.4 以降) -ハードウェアのブレークポイント/ウォッチポイント -.RE -.PP -\fBSIGCHLD\fP シグナルの場合、 \fIsi_code\fP には以下の値が入る可能性がある: -.RS 4 -.TP -\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 -\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 -.PP -\fBSIGSYS\fP シグナルの場合、 \fIsi_code\fP には以下の値が入る可能性がある: -.RS 4 -.TP -\fBSYS_SECCOMP\fP (Linux 3.5 以降) -\fBseccomp\fP(2) のフィルタールールによる配送された -.RE -.SH 返り値 -\fBsigaction\fP() 関数は成功すると 0 を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値をセットする。 -.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 と System\ V では \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), \fBrestart_syscall\fP(2), -\fBseccomp\fP(2) \fBsigaltstack\fP(2), \fBsignal\fP(2), \fBsignalfd\fP(2), -\fBsigpending\fP(2), \fBsigreturn\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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/sigaltstack.2 b/manual/LDP_man-pages/draft/man2/sigaltstack.2 deleted file mode 100644 index f7bec1b6..00000000 --- a/manual/LDP_man-pages/draft/man2/sigaltstack.2 +++ /dev/null @@ -1,179 +0,0 @@ -'\" t -.\" Copyright (c) 2001, 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 -.\" -.\" aeb, various minor fixes -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001 Yuichi SATO -.\" all rights reserved. -.\" Translated 2001-11-04, Yuichi SATO -.\" Updated 2001-12-09, Yuichi SATO -.\" Updated 2005-11-04, Akihiro MOTOKI -.\" Updated 2006-01-04, Akihiro MOTOKI, Catch up to LDP 2.20 -.\" -.TH SIGALTSTACK 2 2010\-09\-26 Linux "Linux Programmer's Manual" -.SH 名前 -sigaltstack \- シグナルスタックのコンテキストを設定・取得する -.SH 書式 -\fB#include \fP -.sp -\fBint sigaltstack(const stack_t *\fP\fIss\fP\fB, stack_t *\fP\fIoss\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBsigaltstack\fP(): -.ad l -.RS 4 -.PD 0 -_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.br -|| /* glibc 2.12 以降: */ _POSIX_C_SOURCE\ >=\ 200809L -.PD -.RE -.ad -.SH 説明 -\fBsigaltstack\fP() を使うと、 プロセスは新しい代替シグナルスタックを定義したり、 既存の代替シグナルスタックの状態を取得できる。 -シグナルハンドラーが代替シグナルスタックを要求するように設定されていると (\fBsigaction\fP(2) -参照)、ハンドラーの実行中はそのシグナルスタックが使われる。 - -代替シグナルスタックを使う際の一般的な手順は、以下の通りである: -.TP 3 -1. -代替シグナルスタックで使うメモリー領域を確保する。 -.TP -2. -\fBsigaltstack\fP() を使って、 代替シグナルスタックの存在と場所をシステムに知らせる。 -.TP -3. -\fBsigaction\fP(2) を使ってシグナルハンドラーを確立する際、 \fBSA_ONSTACK\fP フラグを指定することにより、 -そのシグナルハンドラーを代替シグナルスタック上で実行することを システムに知らせる。 -.P -\fIss\fP 引き数は、新しいシグナルスタックを指定するために使う。 また \fIoss\fP 引き数は、現在確立されている -シグナルスタックの情報を取得するために使う。 この操作のうち 1 つだけを実行させるには、 使用しない引き数を NULL に指定すればよい。 -引き数となる構造体は、以下のような型である: -.sp -.in +4n -.nf -typedef struct { - void *ss_sp; /* スタックのベースアドレス */ - int ss_flags; /* フラグ */ - size_t ss_size; /* スタックのバイト数 */ -} stack_t; -.fi -.in - -新規の代替シグナルスタックを確立するには、 \fIss.ss_flags\fP を 0 に設定し、 \fIss.ss_sp\fP と \fIss.ss_size\fP に -スタックの開始アドレスとスタックサイズを指定する。 定数 \fBSIGSTKSZ\fP は、代替シグナルスタックが通常必要する -サイズよりも充分大きく定義されている。 また定数 \fBMINSIGSTKSZ\fP は、 シグナルハンドラーの実行に必要な最小サイズに定義されている。 - -代替スタックでシグナルハンドラーが起動された場合には、 カーネルにより自動的に、\fIss.ss_sp\fP で指定されたアドレスは -動作しているハードウェアアーキテクチャーに適したアドレス境界に 調整される。 - -既存のスタックを無効にするには、 \fIss.ss_flags\fP を \fBSS_DISABLE\fP に指定する。 この場合、\fIss\fP -の他のフィールドは無視される。 - -\fIoss\fP が NULL 以外の場合、 \fIoss\fP に代替シグナルスタックの情報が返される。 これは (実質的に) -\fBsigaltstack\fP() の呼び出しより先に行われる。 \fIoss.ss_sp\fP と \fIoss.ss_size\fP フィールドに -スタックの開始アドレスとスタックサイズが返される。 \fIoss.ss_flags\fP には以下のどちらかの値が返される: -.TP -\fBSS_ONSTACK\fP -プロセスが代替シグナルスタック上で実行されている (プロセスが既にそのシグナルスタック上で実行されている場合は、 -それと同じシグナルスタックには変更できない点に注意すること)。 -.TP -\fBSS_DISABLE\fP -代替シグナルスタックが現在無効になっている。 -.SH 返り値 -\fBsigaltstack\fP() は成功した場合 0 を返す。 失敗した場合は \-1 を返して、 エラーを示す値に \fIerrno\fP を設定する。 -.SH エラー -.TP -\fBEFAULT\fP -\fIss\fP または \fIoss\fP のどちらが、NULL 以外で、 かつプロセスのアドレス空間の外を指している。 -.TP -\fBEINVAL\fP -\fIss\fP が NULL 以外で、\fIss_flags\fP フィールドが \fBSS_DISABLE\fP 以外の 0 でない値になっている。 -.TP -\fBENOMEM\fP -新しい代替シグナルスタック (\fIss.ss_size\fP) に指定したサイズが \fBMINSTKSZ\fP より小さかった。 -.TP -\fBEPERM\fP -代替シグナルスタックが有効であるときに変更を行おうとした (つまり、プロセスが既に現在の代替シグナルスタック上で実行されていた)。 -.SH 準拠 -SUSv2, SVr4, POSIX.1\-2001. -.SH 注意 -代替シグナルスタックを使用する最もよくある場面は、 \fBSIGSEGV\fP シグナルを扱うときである。 \fBSIGSEGV\fP -はプロセスの通常のスタックが利用できる空間が使い果たされた際に 生成されるシグナルである。この場合には、 \fBSIGSEGV\fP -用のシグナルハンドラーをプロセスのスタック上では起動することができない。 そのため、このシグナルを扱おうとする場合には、 -代替シグナルスタックを使用しなければならない。 -.P -プロセスが標準のシグナルスタックを使い果たすことが予想される場合は、 代替シグナルスタックを確立すると便利である。 例えば、スタックが最上位アドレスから -下位アドレス方向に非常にたくさん積まれてしまうことで、 最下位アドレスから上位アドレス方向に積まれるヒープとぶつかってしまう場合や、 -\fBsetrlimit(RLIMIT_STACK, &rlim)\fP の呼び出しで確立された 制限に達してしまった場合に、この様な事が起こる。 -標準のスタックを使い果たしてしまうと、 カーネルはプロセスに \fBSIGSEGV\fP シグナルを送る。 -このような状況では、代替シグナルスタック上でしかシグナルをキャッチできない。 -.P -Linux がサポートする多くのハードウェアアーキテクチャーでは、 スタックは下位アドレス方向に積まれる。 \fBsigaltstack\fP() -はスタックが積まれる方向を自動的に決定する。 -.P -代替シグナルスタック上で実行されている シグナルハンドラーから呼ばれる関数も、代替シグナルハンドラーを使う -(プロセスが代替シグナルスタック上で実行されている場合、 他のシグナルで呼び出されるハンドラーもこの代替シグナルハンドラーを使う)。 -標準のスタックとは異なり、 システムは代替シグナルスタックを自動的に拡張しない。 代替シグナルスタック用に確保したサイズを越えた場合、 -結果は予想できない。 -.P -\fBexecve\fP(2) の呼び出しが成功すると、 既存の全ての代替シグナルスタックが削除される。 \fBfork\fP(2) -経由で作成された子プロセスは、親プロセスの代替シグナルスタックの 設定のコピーを継承する。 -.P -\fBsigaltstack\fP() は以前の \fBsigstack\fP() を置き換えるものである。 過去プログラムとの互換性のため、glibc では -\fBsigstack\fP() も提供している。 新しいのアプリケーションは全て \fBsigaltstack\fP() を使って書くべきである。 -.SS 歴史 -4.2BSD には \fBsigstack\fP() システムコールがあった。 この関数は少し異なった構造体を使っており、 -呼び出した側がスタックの積まれる方向を知っていなければならないという 大きな欠点があった。 -.SH 例 -以下のコードで \fBsigaltstack\fP() の使用法の一部を示す: - -.in +4n -.nf -stack_t ss; - -ss.ss_sp = malloc(SIGSTKSZ); -if (ss.ss_sp == NULL) - /* ハンドルエラー */; -ss.ss_size = SIGSTKSZ; -ss.ss_flags = 0; -if (sigaltstack(&ss, NULL) == \-1) - /* ハンドルエラー */; -.fi -.in -.SH 関連項目 -\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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%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 index 1e7d911c..c88da0a7 100644 --- a/manual/LDP_man-pages/draft/man2/signal.2 +++ b/manual/LDP_man-pages/draft/man2/signal.2 @@ -53,22 +53,29 @@ .\" Updated 2013-05-06, Akihiro MOTOKI .\" Updated 2013-07-22, Akihiro MOTOKI .\" -.TH SIGNAL 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH SIGNAL 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 signal \- ANSI C シグナル操作 .SH 書式 \fB#include \fP -.sp +.PP \fBtypedef void (*sighandler_t)(int);\fP -.sp +.PP \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) を使用すること。 下記の「移植性」を参照。 - +\fBWARNING\fP: + the behavior of +\fBsignal\fP() +varies across UNIX versions, +and has also varied historically across different versions of Linux. +\fBAvoid its use\fP: use +\fBsigaction\fP(2) +instead. +See \fIPortability\fP below. +.PP \fBsignal\fP() はシグナル \fIsignum\fP の処理方法を \fIhandler\fP に設定する。 \fIhandler\fP には、 \fBSIG_IGN\fP、 \fBSIG_DFL\fP、 プログラマが定義した関数 (「シグナルハンドラー」) のアドレスの いずれかを指定する。 - +.PP シグナル \fIsignum\fP がプロセスに配送されると、以下のいずれかが発生する。 .TP 3 * @@ -91,7 +98,7 @@ signal \- ANSI C シグナル操作 \fBEINVAL\fP \fIsignum\fP が不正である。 .SH 準拠 -C89, C99, POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008, C89, C99. .SH 注意 マルチスレッドプロセスにおける \fBsignal\fP() の結果は、指定されていない。 .PP @@ -100,56 +107,62 @@ POSIX では、 \fBkill\fP(2) や \fBraise\fP(3) で生成できないシグ アーキテクチャーによっては、このとき \fBSIGFPE\fP シグナルが生成される。 (同様に負の最大整数を \-1 で割ると \fBSIGFPE\fP が生成されるかもしれない) このシグナルを無視すると無限ループに陥るかもしれない。 .PP -\fBSIGCHLD\fP の動作として \fBSIG_IGN\fP を設定した場合の詳細な動作については、 \fBsigaction\fP(2) を参照すること。 +See \fBsigaction\fP(2) for details on what happens when the disposition +\fBSIGCHLD\fP is set to \fBSIG_IGN\fP. .PP -シグナルハンドラー内から安全に呼び出すことができる、 async\-signal\-safe functions (非同期シングルで安全な関数) の -リストについては \fBsignal\fP(7) を参照。 +See \fBsignal\-safety\fP(7) for a list of the async\-signal\-safe functions that +can be safely called from inside a signal handler. .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() の宣言は読みにくいものとなる。 +The use of \fIsighandler_t\fP is a GNU extension, exposed if \fB_GNU_SOURCE\fP is +defined; glibc also defines (the BSD\-derived) \fIsig_t\fP if \fB_BSD_SOURCE\fP +(glibc 2.19 and earlier) or \fB_DEFAULT_SOURCE\fP (glibc 2.19 and later) is +defined. Without use of such a type, the declaration of \fBsignal\fP() is the +somewhat harder to read: +.PP .in +4n -.nf - +.EX \fBvoid ( *\fP\fIsignal\fP\fB(int \fP\fIsignum\fP\fB, void (*\fP\fIhandler\fP\fB)(int)) ) (int);\fP -.fi +.EE .in .SS 移植性 移植性のある \fBsignal\fP() の使い方は、シグナルの処理方法を \fBSIG_DFL\fP か \fBSIG_IGN\fP に設定する方法だけである。 シグナルハンドラーを設定するのに \fBsignal\fP() を使ったときの動作はシステムにより異なる (POSIX.1 は明示的にこの違いを認めている)。 \fB移植性が必要なときはこのシステムコールを使用しないこと。\fP - +.PP POSIX.1 は、 \fBsigaction\fP(2) を規定することで移植性に関する混乱を解決した。 \fBsigaction\fP(2) はシグナルハンドラーが起動される際の挙動を明示的に制御できる。 \fBsignal\fP() の代わりにこのインターフェイスを使うこと。 - +.PP オリジナルの UNIX システムでは、 \fBsignal\fP() を使って設定されたハンドラーがシグナルの配送により起動されると、 そのシグナルの処理方法は \fBSIG_DFL\fP にリセットされ、システムは同じシグナルがさらに生成されても シグナルの配送をブロックしなかった。これは、以下のフラグで \fBsigaction\fP(2) を呼び出すのと等価である。 - - sa.sa_flags = SA_RESETHAND | SA_NODEFER; - +.PP +.in +4n +.EX +sa.sa_flags = SA_RESETHAND | SA_NODEFER; +.EE +.in +.PP System\ V でも、 \fBsignal\fP() に対してこれらの挙動を規定している。 こうした挙動はまずく、ハンドラーがハンドラー自身を再設定する機会が 来るより前に、同じシグナルがまた配送される可能性がある。 さらに、同じシグナルが立て続けに配送されると、同じシグナルが ハンドラーを繰り返し起動されることになる。 - +.PP BSD はこの状況が改善したが、残念なことに、その過程で既存の \fBsignal\fP() の挙動も変更された。 BSD では、シグナルハンドラーが起動された際、 シグナルの処理方法はリセットされず、 ハンドラーの実行中は、同じシグナルのさらなる生成は配送がブロックされる。 また、 シグナルハンドラーが中断された場合、 停止中のシステムコールのいくつかは自動的に再スタートされる。 BSD の挙動は、 以下のフラグを指定した \fBsigaction\fP(2) の呼び出しと等価である。 - - sa.sa_flags = SA_RESTART; - +.PP +.in +4n +.EX +sa.sa_flags = SA_RESTART; +.EE +.in +.PP 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 が定義された場合には暗黙のうちに定義され、 もちろん明示的に定義することもできる。 -.IP * .\" .\" System V semantics are also provided if one uses the separate .\" .BR sysv_signal (3) @@ -165,17 +178,19 @@ BSD 方式を示すフラグを使って \fBsigaction\fP(2) を呼び出す。 .\" then .\" .BR signal () .\" provides BSD semantics. -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) を参照のこと。) +By default, in glibc 2 and later, the \fBsignal\fP() wrapper function does not +invoke the kernel system call. Instead, it calls \fBsigaction\fP(2) using +flags that supply BSD semantics. This default behavior is provided as long +as a suitable feature test macro is defined: \fB_BSD_SOURCE\fP on glibc 2.19 +and earlier or \fB_DEFAULT_SOURCE\fP in glibc 2.19 and later. (By default, +these macros are defined; see \fBfeature_test_macros\fP(7) for details.) If +such a feature test macro is not defined, then \fBsignal\fP() provides System\ V semantics. .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), +\fBkill\fP(1), \fBalarm\fP(2), \fBkill\fP(2), \fBpause\fP(2), \fBsigaction\fP(2), +\fBsignalfd\fP(2), \fBsigpending\fP(2), \fBsigprocmask\fP(2), \fBsigsuspend\fP(2), +\fBbsd_signal\fP(3), \fBkillpg\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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/signalfd.2 b/manual/LDP_man-pages/draft/man2/signalfd.2 deleted file mode 100644 index a77f5356..00000000 --- a/manual/LDP_man-pages/draft/man2/signalfd.2 +++ /dev/null @@ -1,276 +0,0 @@ -.\" Copyright (C) 2008 Michael Kerrisk -.\" starting from a version by Davide Libenzi -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2008 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2008-04-06, Akihiro MOTOKI , LDP v2.79 -.\" Updated 2008-11-10, Akihiro MOTOKI , LDP v3.13 -.\" Updated 2009-02-23, Akihiro MOTOKI , LDP v3.18 -.\" -.TH SIGNALFD 2 2014\-07\-08 Linux "Linux Programmer's Manual" -.SH 名前 -signalfd \- シグナル受け付け用のファイルディスクリプターを生成する -.SH 書式 -\fB#include \fP -.sp -\fBint signalfd(int \fP\fIfd\fP\fB, const sigset_t *\fP\fImask\fP\fB, int \fP\fIflags\fP\fB);\fP -.SH 説明 -\fBsignalfd\fP() は、呼び出し元宛てのシグナルを受け付けるために使用されるファイル ディスクリプターを生成する。 -この方法はシグナルハンドラーや \fBsigwaitinfo\fP(2) を用いる方法の代わりとなるものであり、このファイルディスクリプターを -\fBselect\fP(2), \fBpoll\fP(2), \fBepoll\fP(7) で監視できるという利点がある。 - -\fImask\fP 引き数には、呼び出し元がこのファイルディスクリプター経由で受け付けたい -シグナル集合を指定する。この引き数で指定するシグナル集合の内容は、 \fBsigsetops\fP(3) -で説明されているマクロを使って初期化することができる。 通常、ファイルディスクリプター経由で受信するシグナル集合は、 -そのシグナルがデフォルトの配送方法に基いて処理されるのを防ぐために、 \fBsigprocmask\fP(2) を使ってブロックしておくべきである。 -シグナル \fBSIGKILL\fP と \fBSIGSTOP\fP を signalfd ファイルディスクリプター経由で受信することはできない。 -これらのシグナルが \fImask\fP で指定された場合には黙って無視される。 - -\fIfd\fP 引き数が \-1 の場合、 \fBsignalfd\fP() は新しいファイルディスクリプターを生成し、 \fImask\fP -で指定されたシグナル集合をそのファイルディスクリプターに関連付ける。 \fIfd\fP 引き数が \-1 以外の場合、 \fIfd\fP には有効な既存の -signalfd ファイルディスクリプターを指定しなければならず、 そのディスクリプターに関連付けられているシグナル集合は \fImask\fP -を使って置き換えられる。 - -Linux 2.6.27 以降では、 以下の値のいくつかをビット単位の論理和 (OR) で指定することで、 \fBsignalfd\fP() -の振舞いを変更することができる。 -.TP 14 -\fBSFD_NONBLOCK\fP -新しく生成されるオープンファイル記述 (open file description) の \fBO_NONBLOCK\fP -ファイルステータスフラグをセットする。 このフラグを使うことで、 \fBO_NONBLOCK\fP をセットするために \fBfcntl\fP(2) -を追加で呼び出す必要がなくなる。 -.TP -\fBSFD_CLOEXEC\fP -新しいファイルディスクリプターに対して close\-on\-exec (\fBFD_CLOEXEC\fP) フラグをセットする。 -このフラグが役に立つ理由については、 \fBopen\fP(2) の \fBO_CLOEXEC\fP フラグの説明を参照のこと。 -.PP -バージョン 2.6.26 以前の Linux では、 \fIflags\fP 引き数は未使用であり、0 を指定しなければならない。 - -\fBsignalfd\fP() が返すファイルディスクリプターは以下の操作をサポートしている。 -.TP -\fBread\fP(2) -\fImask\fP に指定されているシグナルのうち一つ以上がそのプロセスに対して 処理待ち (pending) であれば、それらのシグナルの情報が -\fBread\fP(2) に渡されたバッファーを使って、 \fIsignalfd_siginfo\fP 構造体に格納されて返される。 \fBread\fP(2) -は、バッファーに格納可能な範囲でできるだけ多くの処理待ちのシグナルに ついての情報を返す。 バッファーは最低でも \fIsizeof(struct -signalfd_siginfo)\fP バイトの大きさがなければならない。 \fBread\fP(2) の返り値は読み出されたトータルのバイト数である。 -.IP -\fBread\fP(2) が行われた結果、シグナルは消費され、 これらのシグナルはそのプロセスに対しては処理待ちではなくなる -(つまり、シグナルハンドラーで捕捉されることもなく、 \fBsigwaitinfo\fP(2) を使って受け取ることもできなくなる)。 -.IP -\fImask\fP に指定されているシグナルがそのプロセスに対して一つも処理待ちでなければ、 \fBread\fP(2) は、 \fImask\fP -で指定されたシグナルのうちいずれか一つがそのプロセスに対して発生するまで 停止 (block) する、もしくはファイルディスクリプターが非停止 -(nonblocking) に設定されている場合はエラー \fBEAGAIN\fP で失敗する。 -.TP -\fBpoll\fP(2), \fBselect\fP(2) (と同様の操作) -\fImask\fP に指定されたシグナルのうち一つ以上がそのプロセスに対して処理待ちであれば、 ファイルディスクリプターは読み出し可能となる -(\fBselect\fP(2) の \fIreadfds\fP 引き数や \fBpoll\fP(2) の \fBPOLLIN\fP フラグ)。 -.IP -signalfd ファイルディスクリプターは、これ以外のファイルディスクリプター 多重 API である \fBpselect\fP(2), -\fBppoll\fP(2), \fBepoll\fP(7) もサポートしている。 -.TP -\fBclose\fP(2) -ファイルディスクリプターがそれ以降は必要なくなった際には、クローズすべきである。 同じ signalfd -オブジェクトに関連付けられたファイルディスクリプターが全て クローズされると、そのオブジェクト用の資源がカーネルにより解放される。 -.SS "signalfd_siginfo 構造体" -signalfd ファイルディスクリプターからの \fBread\fP(2) で返される \fIsignalfd_siginfo\fP -構造体のフォーマットは以下の通りである。 -.in +4n -.nf - -.\" ssi_trapno is unused on most arches -.\" FIXME Since Linux 2.6.37 there is 'uint16_t ssi_addr_lsb' -.\" in the signalfd_siginfo structure. This needs to be documented. -struct signalfd_siginfo { -struct signalfd_siginfo { - uint32_t ssi_signo; /* シグナル番号 */ - int32_t ssi_errno; /* エラー番号 (未使用) */ - int32_t ssi_code; /* シグナルコード */ - uint32_t ssi_pid; /* 送信元の PID */ - uint32_t ssi_uid; /* 送信元の実 UID */ - int32_t ssi_fd; /* ファイルディスクリプター (SIGIO) */ - uint32_t ssi_tid; /* カーネルタイマー ID (POSIX タイマー) - uint32_t ssi_band; /* Band イベント (SIGIO) */ - uint32_t ssi_overrun; /* POSIX タイマーのオーバーラン回数 */ - uint32_t ssi_trapno; /* シグナルの原因となったトラップ番号 */ - int32_t ssi_status; /* 終了ステータスかシグナル (SIGCHLD) */ - int32_t ssi_int; /* sigqueue(3) から送られた整数 */ - uint64_t ssi_ptr; /* sigqueue(3) から送られたポインター */ - uint64_t ssi_utime; /* 消費したユーザー CPU 時間 (SIGCHLD) */ - uint64_t ssi_stime; /* 消費したシステム CPU 時間 (SIGCHLD) */ - uint64_t ssi_addr; /* シグナルを生成したアドレス - (ハードウェアが生成したシグナルの場合) */ - uint8_t pad[\fIX\fP]; /* pad の大きさは 128 バイト - (将来のフィールド追加用の場所の確保) */ -}; - -.fi -.in -\fIsignalfd_siginfo\fP 構造体の各フィールドは、 \fIsiginfo_t\fP 構造体の同じような名前のフィールドと同様である。 -\fIsiginfo_t\fP 構造体については \fBsigaction\fP(2) に説明がある。 返された \fIsignalfd_siginfo\fP -構造体の全てのフィールドがあるシグナルに対して有効なわけではない。 どのフィールドが有効かは、 \fIssi_code\fP -フィールドで返される値から判定することができる。 このフィールドは \fIsiginfo_t\fP の \fIsi_code\fP フィールドと同様である。詳細は -\fBsigaction\fP(2) を参照。 -.SS "fork(2) での扱い" -\fBfork\fP(2) が行われると、子プロセスは signalfd ファイルディスクリプターのコピーを 継承する。 -子プロセスでこのファイルディスクリプターから \fBread\fP(2) を行うと、子プロセスに対するキューに入っているシグナルに関する 情報が返される。 -.SS "execve(2) での扱い" -他のファイルディスクリプターと全く同様に、 signalfd ファイルディスクリプターも \fBexecve\fP(2) -の前後でオープンされたままとなる。但し、そのファイルディスクリプターに close\-on\-exec のマーク (\fBfcntl\fP(2) 参照) -が付いている場合はクローズされる。 \fBexecve\fP(2) の前に読み出し可能となっていた全てのシグナルは新しく起動されたプログラム -でも引き続き読み出し可能である (これは伝統的なシグナルの扱いと同じであり、 処理待ちのブロックされたシグナルは \fBexecve\fP(2) -の前後で処理待ちのままとなる)。 -.SS スレッドでの扱い -マルチスレッドプログラムにおける signalfd ファイルディスクリプターの扱いは シグナルの標準的な扱いと全く同じである。 -言い換えると、あるスレッドが signalfd ファイルディスクリプターから 読み出しを行うと、そのスレッド自身宛てのシグナルとプロセス (すなわち -スレッドグループ全体) 宛てのシグナルが読み出される。 (スレッドは同じプロセスの他のスレッド宛てのシグナルを読み出すことはできない。) -.SH 返り値 -成功すると、 \fBsignalfd\fP() は signalfd ファイルディスクリプターを返す。 返されるファイルディスクリプターは、 \fIfd\fP が -\-1 の場合は新規のファイルディスクリプターであり、 \fIfd\fP が有効な signalfd ファイルディスクリプターだった場合は \fIfd\fP -自身である。 エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 -.SH エラー -.TP -\fBEBADF\fP -ファイルディスクリプター \fIfd\fP が有効なファイルディスクリプターでない。 -.TP -\fBEINVAL\fP -.\" or, the -.\" .I sizemask -.\" argument is not equal to -.\" .IR sizeof(sigset_t) ; -\fIfd\fP が有効な signalfd ファイルディスクリプターではない。 -.TP -\fBEINVAL\fP -\fIflags\fP が無効である。もしくは、Linux 2.6.26 以前の場合には \fIflags\fP が 0 以外である。 -.TP -\fBEMFILE\fP -オープン済みのファイルディスクリプターの数がプロセスあたりの上限に 達していた。 -.TP -\fBENFILE\fP -オープン済みのファイル総数がシステム全体の上限に達していた。 -.TP -\fBENODEV\fP -(カーネル内の) 無名 inode デバイスをマウントできなかった。 -.TP -\fBENOMEM\fP -新しい signalfd ファイルディスクリプターを生成するのに十分なメモリーがなかった。 -.SH バージョン -.\" signalfd() is in glibc 2.7, but reportedly does not build -\fBsignalfd\fP() はカーネル 2.6.22 以降の Linux で利用可能である。 正しく動作する glibc 側のサポートはバージョン -2.8 以降で提供されている。 \fBsignalfd4\fP() システムコール (「注意」参照) は カーネル 2.6.27 以降の Linux -で利用可能である。 -.SH 準拠 -\fBsignalfd\fP() と \fBsignalfd4\fP() は Linux 固有である。 -.SH 注意 -一つのプロセスは複数の signalfd ファイルディスクリプターを生成することができる。 -これにより、異なるファイルディスクリプターで異なるシグナルを受け取ることが できる (この機能は \fBselect\fP(2), \fBpoll\fP(2), -\fBepoll\fP(7) を使ってファイルディスクリプターを監視する場合に有用かもしれない。 -異なるシグナルが到着すると、異なるファイルディスクリプターが利用可能に なるからだ)。 一つのシグナルが二つ以上のファイルディスクリプターの -\fImask\fP に含まれている場合、そのシグナルの発生はそのシグナルを \fImask\fP -に含むファイルディスクリプターのうちいずれか一つから読み出すことができる。 -.SS "C ライブラリとカーネル ABI の違い" -実際の Linux のシステムコールでは \fIsize_t sizemask\fP という引き数が追加で必要である。この引き数で \fImask\fP -のサイズを指定する。 glibc の \fBsignalfd\fP() ラッパー関数にはこの引き数は含まれず、 -ラッパー関数が必要な値を計算して内部で呼び出すシステムコールに提供する。 - -下層にある Linux システムコールは二種類あり、 \fBsignalfd\fP() と、もっと新しい \fBsignalfd4\fP() である。 -\fBsignalfd\fP() は \fIflags\fP 引き数を実装していない。 \fBsignalfd4\fP() では上記の値の \fIflags\fP -が実装されている。 glibc 2.9 以降では、 \fBsignalfd\fP() のラッパー関数は、 \fBsignalfd4\fP() -が利用可能であれば、これを使用する。 -.SH バグ -.\" The fix also was put into 2.6.24.5 -カーネル 2.6.25 より前では、 \fBsigqueue\fP(3) により送信されたシグナルと一緒に渡されるデータでは、フィールド -\fIssi_ptr\fP と \fIssi_int\fP は設定されない。 -.SH 例 -下記のプログラムは、シグナル \fBSIGINT\fP と \fBSIGQUIT\fP を signalfd ファイルディスクリプター経由で受信する。 シグナル -\fBSIGQUIT\fP 受信後にプログラムは終了する。 以下に示すシェルセッションにこのプログラムの使い方を示す。 -.in +4n -.nf - -$\fB ./signalfd_demo\fP -\fB^C\fP # Control\-C generates SIGINT -Got SIGINT -\fB^C\fP -Got SIGINT -\fB^\e\fP # Control\-\e generates SIGQUIT -Got SIGQUIT -$ -.fi -.in -.SS プログラムのソース -\& -.nf -#include -#include -#include -#include -#include - -#define handle_error(msg) \e - do { perror(msg); exit(EXIT_FAILURE); } while (0) - -int -main(int argc, char *argv[]) -{ - sigset_t mask; - int sfd; - struct signalfd_siginfo fdsi; - ssize_t s; - - sigemptyset(&mask); - sigaddset(&mask, SIGINT); - sigaddset(&mask, SIGQUIT); - - /* Block signals so that they aren\(aqt handled - according to their default dispositions */ - - if (sigprocmask(SIG_BLOCK, &mask, NULL) == \-1) - handle_error("sigprocmask"); - - sfd = signalfd(\-1, &mask, 0); - if (sfd == \-1) - handle_error("signalfd"); - - for (;;) { - s = read(sfd, &fdsi, sizeof(struct signalfd_siginfo)); - if (s != sizeof(struct signalfd_siginfo)) - handle_error("read"); - - if (fdsi.ssi_signo == SIGINT) { - printf("Got SIGINT\en"); - } else if (fdsi.ssi_signo == SIGQUIT) { - printf("Got SIGQUIT\en"); - exit(EXIT_SUCCESS); - } else { - printf("Read unexpected signal\en"); - } - } -} -.fi -.SH 関連項目 -\fBeventfd\fP(2), \fBpoll\fP(2), \fBread\fP(2), \fBselect\fP(2), \fBsigaction\fP(2), -\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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/sigpending.2 b/manual/LDP_man-pages/draft/man2/sigpending.2 index 2f5a08b0..8d31e4cc 100644 --- a/manual/LDP_man-pages/draft/man2/sigpending.2 +++ b/manual/LDP_man-pages/draft/man2/sigpending.2 @@ -36,24 +36,22 @@ .\" Translated 2005-10-03, Akihiro MOTOKI .\" Updated 2005-12-05, Akihiro MOTOKI, Catch up to LDP man-pages 2.16 .\" -.TH SIGPENDING 2 2013\-12\-11 Linux "Linux Programmer's Manual" +.TH SIGPENDING 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 -sigpending \- 処理待ちのシグナルの検査 +sigpending, rt_sigpending \- examine pending signals .SH 書式 \fB#include \fP -.sp +.PP \fBint sigpending(sigset_t *\fP\fIset\fP\fB);\fP -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP .ad l -\fBsigpending\fP(): _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || -_POSIX_SOURCE +\fBsigpending\fP(): _POSIX_C_SOURCE .ad b .SH 説明 -.PP \fBsigpending\fP() は、呼び出し元のスレッドへの配送を待っている (pending) シグナル集合 (すなわち、禁止中に発生したシグナル) を返す。 処理待ちのシグナルのマスクが \fIset\fP に格納される。 .SH 返り値 @@ -63,18 +61,35 @@ _POSIX_SOURCE \fBEFAULT\fP \fIset\fP が指しているメモリーが、プロセスのアドレス空間の有効な部分ではない。 .SH 準拠 -POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008. .SH 注意 シグナル集合の操作に関する詳細は \fBsigsetops\fP(3) を参照のこと。 - +.PP シグナルが禁止 (ブロック) されており、かつ配送方法が "ignored" (無視) になっている場合、そのシグナルが発生した場合に処理待ちシグナルのマスクにそのシグナルは追加\fIされない\fP。 - +.PP あるスレッドに対する処理待ちのシグナルの集合は、 そのスレッド自体への処理待ちのシグナル集合と、プロセス全体への処理待ちの シグナル集合をあわせたものである。 \fBsignal\fP(7) 参照。 - +.PP +.\" \fBfork\fP(2) 経由で作成された子プロセスでは、処理待ちのシグナル集合は空の集合で初期化される。 \fBexecve\fP(2) の前後で、処理待ちのシグナル集合は保持される。 +.SS "C library/kernel differences" +.\" This argument is currently required to be less than or equal to +.\" .IR sizeof(sigset_t) +.\" (or the error +.\" .B EINVAL +.\" results). +.\" +The original Linux system call was named \fBsigpending\fP(). However, with the +addition of real\-time signals in Linux 2.2, the fixed\-size, 32\-bit +\fIsigset_t\fP argument supported by that system call was no longer fit for +purpose. Consequently, a new system call, \fBrt_sigpending\fP(), was added to +support an enlarged \fIsigset_t\fP type. The new system call takes a second +argument, \fIsize_t sigsetsize\fP, which specifies the size in bytes of the +signal set in \fIset\fP. The glibc \fBsigpending\fP() wrapper function hides +these details from us, transparently calling \fBrt_sigpending\fP() when the +kernel provides it. .SH バグ バージョン 2.2.1 以前の glibc では、 \fBsigpending\fP() のラッパー関数に、処理待ちのリアルタイムシグナルに関する情報が 正しく返されないというバグがある。 @@ -82,5 +97,5 @@ 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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/sigprocmask.2 b/manual/LDP_man-pages/draft/man2/sigprocmask.2 deleted file mode 100644 index 376d6679..00000000 --- a/manual/LDP_man-pages/draft/man2/sigprocmask.2 +++ /dev/null @@ -1,108 +0,0 @@ -.\" Copyright (c) 2005 Michael Kerrisk -.\" based on earlier work by faith@cs.unc.edu and -.\" Mike Battersby -.\" -.\" %%%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 -.\" -.\" 2005-09-15, mtk, Created new page by splitting off from sigaction.2 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved. -.\" Translated 2005-10-03, Akihiro MOTOKI -.\" Updated 2012-05-04, Akihiro MOTOKI -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH SIGPROCMASK 2 2013\-04\-19 Linux "Linux Programmer's Manual" -.SH 名前 -sigprocmask \- 禁止するシグナルの確認と変更 -.SH 書式 -\fB#include \fP -.sp -\fBint sigprocmask(int \fP\fIhow\fP\fB, const sigset_t *\fP\fIset\fP\fB,\fP \fBsigset_t -*\fP\fIoldset\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBsigprocmask\fP(): _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || -_POSIX_SOURCE -.ad b -.SH 説明 -\fBsigprocmask\fP() を使うと、呼び出したスレッドのシグナルマスクの取得/変更ができる。 -シグナルマスクは、呼び出し元に対して現在配送が禁止されているシグナルの 集合のことである (詳細については \fBsignal\fP(7) も参照のこと)。 - -このコールの動作は \fIhow\fP の値によって決まる: -.TP -\fBSIG_BLOCK\fP -禁止されたシグナルの集合は現在の値と \fIset\fP 引き数を結合したものとなる。 -.TP -\fBSIG_UNBLOCK\fP -現在禁止されているシグナルの集合から \fIset\fP にあるシグナルを取り除く。禁止されていないシグナルを取り除こうと することも認められている。 -.TP -\fBSIG_SETMASK\fP -禁止されているシグナルの集合に \fIset\fP 引き数を設定する。 -.PP -\fIoldset\fP が NULL でなければ、シグナルマスクの今までの値を \fIoldset\fP に格納する。 - -\fIset\fP が NULL であれば、シグナルマスクは変更されない (すなわち、 \fIhow\fP は無視される)。 \fIset\fP -の値にかかわらず、現在のシグナルマスクの値は \fIoldset\fP に入れて返される (但し、 \fIoldset\fP が NULL でない場合)。 - -マルチスレッドのプロセスで \fBsigprocmask\fP() を使用した場合の動作は規定されていない。 \fBpthread_sigmask\fP(3) -を参照のこと。 -.SH 返り値 -\fBsigprocmask\fP() は成功した場合 0 を返す。 エラーの場合、 \-1 を返し、 \fIerrno\fP にエラーの原因を示す値を設定する。 -.SH エラー -.TP -\fBEFAULT\fP -引き数 \fIset\fP か \fIoldset\fP がプロセスに割り当てられたアドレス空間の外を指している。 -.TP -\fBEINVAL\fP -\fIhow\fP に指定された値が有効ではない。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fBSIGKILL\fP や \fBSIGSTOP\fP を禁止することはできない。 禁止しようとしても黙って無視される。 - -プロセス内の各スレッドはそれぞれ専用のシグナルマスクを持つ。 - -\fBfork\fP(2) 経由で作成された子プロセスは親プロセスのシグナルマスクのコピーを継承する。 \fBexecve\fP(2) -の前後でシグナルマスクは保持される。 - -シグナル \fBSIGBUS\fP, \fBSIGFPE\fP, \fBSIGILL\fP, \fBSIGSEGV\fP が禁止されている間に生成された場合で、 そのシグナルが -\fBkill\fP(2), \fBsigqueue\fP(3), \fBraise\fP(3) によって生成されたものでないときには、 その後の動作は未定義である。 -.PP -シグナル集合の操作に関する詳細は \fBsigsetops\fP(3) を参照のこと。 -.SH 関連項目 -\fBkill\fP(2), \fBpause\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBsigpending\fP(2), -\fBsigsuspend\fP(2), \fBpthread_sigmask\fP(3), \fBsigqueue\fP(3), \fBsigsetops\fP(3), -\fBsignal\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/sigreturn.2 b/manual/LDP_man-pages/draft/man2/sigreturn.2 deleted file mode 100644 index c51494ef..00000000 --- a/manual/LDP_man-pages/draft/man2/sigreturn.2 +++ /dev/null @@ -1,89 +0,0 @@ -.\" Copyright (C) 2008, 2014, 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 -.\" -.\" Created Sat Aug 21 1995 Thomas K. Dyas -.\" Modified Tue Oct 22 22:09:03 1996 by Eric S. Raymond -.\" 2008-06-26, mtk, added some more detail on the work done by sigreturn() -.\" 2014-12-05, mtk, rewrote all of the rest of the original page -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-03-03, HANATAKA Shinya -.\" Updated 2005-09-04, Akihiro MOTOKI -.\" Updated 2008-08-07, Akihiro MOTOKI, LDP v3.05 -.\" -.TH SIGRETURN 2 2014\-12\-31 Linux "Linux Programmer's Manual" -.SH 名前 -sigreturn \- シグナルハンドラーから返り、スタックを掃除する -.SH 書式 -\fBint sigreturn(...);\fP -.SH 説明 -.\" See arch/x86/kernel/signal.c::__setup_frame() [in 3.17 source code] -Linux カーネルがプロセスに対してブロックされていないシグナルが処理待ちと判定した場合、 そのプロセスの次回のユーザーモードへの遷移 -(すなわち、システムコールからのリターン時やそのプロセスが CPU に再スケジュールされる際)、 カーネルはプロセスコンテキストの種々の値 -(プロセッサーのステータスワード、 レジスター、 シグナルマスク、 シグナルスタック設定) をユーザー空間のスタックに保存する。 - -また、 カーネルは、 ユーザーモードへの遷移時にシグナルハンドラーが呼び出され、 ハンドラーからのリターン時に、 制御が "signal -trampoline" と呼ばれるユーザー空間コードブロックに渡されるように、準備を行う。 signal trampoline のコードが -\fBsigreturn\fP() を呼び出す。 - -\fBsigreturn\fP() は、シグナルハンドラーを起動するために行ったことの全て \(em プロセスのシグナルマスクの変更、 -シグナルスタックの切り替え (\fBsigaltstack\fP(2) 参照) \(em の取り消しを行う。 プロセスのシグナルマスクの復元、 -スタックの切り替え、 プロセスのコンテキスト (プロセッサフラグ、 レジスター (スタックポインター、 命令ポインターを含む)) の復元を行い、 -プロセスがシグナルにより割り込まれた場所から実行を再開できるようにする。 -.SH 返り値 -\fBsigreturn\fP() が返ることはない。 -.SH 準拠 -多くの UNIX 系のシステムには \fBsigreturn\fP() システムコールか似たようなシステムコールがある。 しかしながら、 このシステムコールは -POSIX には規定されておらず、 その動作の詳細はシステムにより異なる。 -.SH 注意 -\fBsigreturn\fP() はシグナルハンドラーを実装するためだけに存在している。 これらを直接呼び出すのは\fB決して\fP行うべきではない。 -\fBsigreturn\fP() に渡される引き数の詳細はアーキテクチャーにより異なる。 - -.\" See, for example, sysdeps/unix/sysv/linux/i386/sigaction.c and -.\" sysdeps/unix/sysv/linux/x86_64/sigaction.c in the glibc (2.20) source. -かつて、 UNIX システムでは signal trampoline コードがユーザースタックに置かれていた。 今日では、 -ユーザースタックのページは保護され、 コードの実行は禁止されている。 したがって、 現代の Linux システムでは、 アーキテクチャー依存ではあるが、 -signal trampoline コードは \fBvdso\fP(7) 内もしくは C ライブラリ内に置かれる。 後者の場合、 C ライブラリは -trampoline code の場所を \fBsigaction\fP(2) に渡される \fIsigaction\fP 構造体の \fIsa_restorer\fP -フィールドを使って渡し、 \fIsa_flags\fP フィールドの \fBSA_RESTORER\fP フラグをセットする。 - -保存されたプロセスコンテキスト情報は \fIucontext_t\fP構造体に置かれる (\fI\fP 参照)。 -この構造体は、 \fBSA_SIGINFO\fP フラグを付けて設定されたシグナルハンドラーの第 3 引き数としてシングルハンドラー内で参照できる。 - -他のいくつかの UNIX システムでは、 signal trampoline の扱いは少し異なる。 特に、 いくつかのシステムでは、 -ユーザーモードに戻る際に、 カーネルは制御を (シグナルハンドラーではなく) trampoline に渡し、 trampoline -コードがシグナルハンドラーを呼び出す (その後ハンドラーが返ると \fBsigreturn\fP() を呼び出す)。 -.SH 関連項目 -\fBkill\fP(2), \fBrestart_syscall\fP(2), \fBsigaltstack\fP(2), \fBsignal\fP(2), -\fBgetcontext\fP(3), \fBsignal\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/sigsuspend.2 b/manual/LDP_man-pages/draft/man2/sigsuspend.2 deleted file mode 100644 index e59e994c..00000000 --- a/manual/LDP_man-pages/draft/man2/sigsuspend.2 +++ /dev/null @@ -1,89 +0,0 @@ -.\" Copyright (c) 2005 Michael Kerrisk -.\" based on earlier work by faith@cs.unc.edu and -.\" Mike Battersby -.\" -.\" %%%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 -.\" -.\" 2005-09-15, mtk, Created new page by splitting off from sigaction.2 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved. -.\" Translated 2005-10-03, Akihiro MOTOKI -.\" -.TH SIGSUSPEND 2 2013\-04\-19 Linux "Linux Programmer's Manual" -.SH 名前 -sigsuspend \- シグナルを待つ -.SH 書式 -\fB#include \fP -.sp -\fBint sigsuspend(const sigset_t *\fP\fImask\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBsigsuspend\fP(): _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || -_POSIX_SOURCE -.ad b -.SH 説明 -\fBsigsuspend\fP() は、呼び出し元プロセスのシグナルマスクを \fImask\fP で指定されたマスクに一時的に置き換え、 -シグナルハンドラーの起動もしくはプロセスの終了がアクションとして 設定されたシグナルが配送されるまで、そのプロセスを停止する。 - -シグナルがプロセスを終了させるものの場合、 \fBsigsuspend\fP() は返らない。シグナルが捕捉された場合、 -シグナルハンドラーの処理が終わった後に \fBsigsuspend\fP() は返り、シグナルマスクは \fBsigsuspend\fP() -が呼び出される前の状態に復元される。 - -\fBSIGKILL\fP と \fBSIGSTOP\fP を禁止 (block) することはできない; これらのシグナルを \fImask\fP -に指定しても、プロセスのシグナルマスクは影響を受けない。 -.SH 返り値 -\fBsigsuspend\fP() は常に \-1 を返し、 \fIerrno\fP にエラーの原因を示す値 (通常は \fBEINTR\fP) を設定する。 -.SH エラー -.TP -\fBEFAULT\fP -\fImask\fP が指しているメモリーが、プロセスのアドレス空間の有効な部分ではない。 -.TP -\fBEINTR\fP -システムコールはシグナルにより割り込まれた。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -.PP -\fBsigsuspend\fP() は、通常、クリティカルコードセクション (critical code section) の -実行中にシグナルが配送されるのを防止するために、 \fBsigprocmask\fP(2) と組み合わせて使用される。 まず最初に、呼び出し元は -\fBsigprocmask\fP(2) を使ってシグナルを禁止する。 クリティカルコードが完了すると、呼び出し元は \fBsigprocmask\fP(2) -が (\fIoldset\fP 引き数で) 返すシグナルマスクを指定して \fBsigsuspend\fP() -を呼び出すことで、クリティカルコード実行中に発生した シグナルを待つことができる。 -.PP -シグナル集合の操作に関する詳細は \fBsigsetops\fP(3) を参照のこと。 -.SH 関連項目 -\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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%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 index d389df99..75149a12 100644 --- a/manual/LDP_man-pages/draft/man2/sigwaitinfo.2 +++ b/manual/LDP_man-pages/draft/man2/sigwaitinfo.2 @@ -36,29 +36,30 @@ .\" Updated 2012-05-29, Akihiro MOTOKI .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH SIGWAITINFO 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH SIGWAITINFO 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 -sigwaitinfo, sigtimedwait \- キューに入れられたシグナルを同期して待つ +sigwaitinfo, sigtimedwait, rt_sigtimedwait \- synchronously wait for queued +signals .SH 書式 .nf \fB#include \fP -.sp +.PP \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 +.PP +\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 +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBsigwaitinfo\fP(), \fBsigtimedwait\fP(): _POSIX_C_SOURCE\ >=\ 199309L .SH 説明 \fBsigwaitinfo\fP() は \fIset\fP のうちのどれかのシグナルが処理待ちになるまで、 呼び出しスレッドの実行を一時停止する (呼び出しスレッドに対して \fIset\fP のうちのどれかのシグナルが既に待機中 (pending) である場合、 \fBsigwaitinfo\fP() はすぐに戻る)。 - +.PP \fBsigwaitinfo\fP() はそのシグナルを待機中のシグナルの集合から削除し、関数の結果としてシグナル番号を返す。 \fIinfo\fP 引き数が NULL でない場合、配送されたシグナルの情報が入った \fIsiginfo_t\fP 型 (\fBsigaction\fP(2) を参照) の構造体を \fIinfo\fP が指すバッファーに入れて返す。 @@ -69,16 +70,16 @@ NULL でない場合、配送されたシグナルの情報が入った \fIsigin \fBsigtimedwait\fP() は、 \fBsigwaitinfo\fP() と次の点を除いて全く同じように動作する。この関数にはもう 1 つの引き数 \fItimeout\fP があり、シグナル待ちでスレッドが一時停止する時間を指定することができる(この時間はシステムクロックの粒度に切り上げられ、カーネルのスケジューリング遅延により少しだけ長くなる可能性がある)。この引き数の型は以下のとおりである: -.sp +.PP .in +4n -.nf +.EX struct timespec { long tv_sec; /* 秒 */ long tv_nsec; /* ナノ秒 */ } -.fi +.EE .in -.sp +.PP この構造体の 2 つのフィールドがともに 0 の場合、ポーリングが行われる: \fBsigtimedwait\fP() は、呼び出し側プロセスに対して 待機しているシグナルの情報を返して戻るか、 \fIset\fP のうちのどのシグナルも待機していない場合はエラーを返して戻る。 .SH 返り値 @@ -96,36 +97,55 @@ struct timespec { \fBEINVAL\fP \fItimeout\fP が不正である。 .SH 準拠 -POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008. .SH 注意 通常の使用法では、呼び出し側プロセスはこれらの関数より先に \fBsigprocmask\fP(2) の呼び出すことにより \fIset\fP に含まれるシグナルをブロックし (そのためにこれらのシグナルがこの後に続く \fBsigwaitinfo\fP() や \fBsigtimedwait\fP() の呼び出しの間に処理待ちになった場合には、デフォルトの動作は行われず)、 これらのシグナルに対するハンドラーは設定しない。 マルチスレッドプログラムでは、 \fBsigwaitinfo\fP() や \fBsigtimedwait\fP() を呼び出したスレッド以外のスレッドで、そのシグナルがデフォルトの動作に基いて処理されないように、全てのスレッドで該当シグナルをブロックすべきである。 - +.PP 指定されたスレッドに対する処理待ちのシグナルの集合は、 そのスレッド自体宛ての処理待ちのシグナル集合と、プロセス全体宛ての 処理待ちのシグナル集合をあわせたものである (\fBsignal\fP(7) 参照)。 - +.PP \fBSIGKILL\fP と \fBSIGSTOP\fP を待とうとした場合、黙って無視される。 - +.PP 一つのプロセス内の複数のスレッドが \fBsigwaitinfo\fP() や \fBsigtimedwait\fP() で同じシグナルを待って停止した場合、 プロセス全体宛てのシグナルが処理待ちになると、複数のスレッドのうち一つだけが 実際にそのシグナルを受信することになる。 どのスレッドがシグナルを受信するかは決まっていない。 - +.PP +\fBsigwaitinfo\fP() or \fBsigtimedwait\fP(), can't be used to receive signals +that are synchronously generated, such as the \fBSIGSEGV\fP signal that results +from accessing an invalid memory address or the \fBSIGFPE\fP signal that +results from an arithmetic error. Such signals can be caught only via +signal handler. +.PP .\" POSIX では \fBsigtimedwait\fP() の引き数 \fItimeout\fP の値を NULL にした場合の意味を未定義としている。 \fBsigwaitinfo\fP() を呼び出したのと同じ意味としてもよいことになっており、 実際 Linux ではこのように動作する。 -.SS "C ライブラリとカーネル ABI の違い" +.SS "C library/kernel differences" Linux では、 \fBsigwaitinfo\fP() は \fBsigtimedwait\fP() を用いて実装されたライブラリ関数である。 - -素の \fBsigtimedwait\fP() システムコールは 5 番目の引き数 \fIsize_t sigsetsize\fP を取る。 この引き数は -\fIset\fP 引き数のバイト単位のサイズを指定する。 glibc の \fBsigtimedwait\fP() のラッパー関数はこの引き数に固定値 -(\fIsizeof(sigset_t)\fP と同じ) を指定する。 +.PP +The glibc wrapper functions for \fBsigwaitinfo\fP() and \fBsigtimedwait\fP() +silently ignore attempts to wait for the two real\-time signals that are used +internally by the NPTL threading implementation. See \fBnptl\fP(7) for +details. +.PP +.\" +The original Linux system call was named \fBsigtimedwait\fP(). However, with +the addition of real\-time signals in Linux 2.2, the fixed\-size, 32\-bit +\fIsigset_t\fP type supported by that system call was no longer fit for +purpose. Consequently, a new system call, \fBrt_sigtimedwait\fP(), was added +to support an enlarged \fIsigset_t\fP type. The new system call takes a fourth +argument, \fIsize_t sigsetsize\fP, which specifies the size in bytes of the +signal set in \fIset\fP. This argument is currently required to have the value +\fIsizeof(sigset_t)\fP (or the error \fBEINVAL\fP results). The glibc +\fBsigtimedwait\fP() wrapper function hides these details from us, +transparently calling \fBrt_sigtimedwait\fP() when the kernel provides it. .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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/socket.2 b/manual/LDP_man-pages/draft/man2/socket.2 deleted file mode 100644 index d2c9fa01..00000000 --- a/manual/LDP_man-pages/draft/man2/socket.2 +++ /dev/null @@ -1,283 +0,0 @@ -'\" t -.\" 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: socket.2,v 1.4 1999/05/13 11:33:42 freitag Exp $ -.\" -.\" Modified 1993-07-24 by Rik Faith -.\" Modified 1996-10-22 by Eric S. Raymond -.\" Modified 1998, 1999 by Andi Kleen -.\" Modified 2002-07-17 by Michael Kerrisk -.\" Modified 2004-06-17 by Michael Kerrisk -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Mon Mar 3 23:40:11 JST 1997 -.\" by HANATAKA Shinya -.\" Modified Sun Aug 15 23:52:28 JST 1999 -.\" by HANATAKA Shinya -.\" Updated Mon Jan 13 JST 2000 by Kentaro Shirakata -.\" Updated Mon Oct 15 JST 2001 by Kentaro Shirakata -.\" Updated Mon Oct 26 JST 2002 by Kentaro Shirakata -.\" Updated 2008-11-09, Akihiro MOTOKI , LDP v3.13 -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-03-25, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH SOCKET 2 2015\-02\-01 Linux "Linux Programmer's Manual" -.SH 名前 -socket \- 通信のための端点 (endpoint) を作成する -.SH 書式 -\fB#include \fP /* 「注意」参照 */ -.br -\fB#include \fP -.sp -\fBint socket(int \fP\fIdomain\fP\fB, int \fP\fItype\fP\fB, int \fP\fIprotocol\fP\fB);\fP -.SH 説明 -\fBsocket\fP() は通信のための端点 (endpoint) を作成し、 ディスクリプターを返す。 -.PP -\fIdomain\fP 引数は通信を行なうドメインを指定する; これはどの プロトコルファミリー (protocol family) -を通信に使用するかを指定する。 これらのファミリーは \fI\fP に定義されている。 -現在、理解できるフォーマットは以下の通り。 -.TS -tab(:); -l l l. -名前:目的:マニュアル -T{ -\fBAF_UNIX\fP, \fBAF_LOCAL\fP -T}:T{ -ローカル通信 -T}:T{ -\fBunix\fP(7) -T} -T{ -\fBAF_INET\fP -T}:IPv4 インターネットプロトコル:T{ -\fBip\fP(7) -T} -T{ -\fBAF_INET6\fP -T}:IPv6 インターネットプロトコル:T{ -\fBipv6\fP(7) -T} -T{ -\fBAF_IPX\fP -T}:IPX \- Novell プロトコル: -T{ -\fBAF_NETLINK\fP -T}:T{ -カーネルユーザーインターフェースデバイス -T}:T{ -\fBnetlink\fP(7) -T} -T{ -\fBAF_X25\fP -T}:ITU\-T X.25 / ISO\-8208 プロトコル:T{ -\fBx25\fP(7) -T} -T{ -\fBAF_AX25\fP -T}:T{ -アマチュア無線 AX.25 プロトコル -T}: -T{ -\fBAF_ATMPVC\fP -T}:生の ATM PVC にアクセスする: -T{ -\fBAF_APPLETALK\fP -T}:AppleTalk:T{ -\fBddp\fP(7) -T} -T{ -\fBAF_PACKET\fP -T}:T{ -低レベルのパケットインターフェース -T}:T{ -\fBpacket\fP(7) -T} -T{ -\fBAF_ALG\fP -T}:T{ -カーネルの暗号 API へのインターフェース -T} -.TE -.PP -ソケットは \fItype\fP で指定される型を持ち、それは通信方式 (semantics) を指定する。 定義されている型は現在以下の通り。 -.TP 16 -\fBSOCK_STREAM\fP -順序性と信頼性があり、双方向の、接続された バイトストリーム (byte stream) を提供する。 帯域外 (out\-of\-band) -データ転送メカニズムもサポートされる。 -.TP -\fBSOCK_DGRAM\fP -データグラム (コネクションレス、信頼性無し、固定最大長メッセージ) をサポートする。 -.TP -\fBSOCK_SEQPACKET\fP -固定最大長のデータグラム転送パスに基づいた順序性、信頼性のある 双方向の接続に基づいた通信を提供する。受け取り側ではそれぞれの入力 -システムコールでパケット全体を読み取ることが要求される。 -.TP -\fBSOCK_RAW\fP -生のネットワークプロトコルへのアクセスを提供する。 -.TP -\fBSOCK_RDM\fP -信頼性はあるが、順序は保証しないデータグラム層を提供する。 -.TP -\fBSOCK_PACKET\fP -廃止されており新しいプログラムで使用してはいけない。 \fBpacket\fP(7) を参照すること -.PP -ある種のソケット型が全てのプロトコルファミリーで実装されているわけではない。 -.PP -Linux 2.6.27 以降では、 \fItype\fP 引数は二つ目の目的にも使用される。 ソケットの型を指定するのに加えて、 -以下の値のいくつかをビット単位の論理和 (OR) で指定することで、 \fBsocket\fP() の振舞いを変更することができる。 -.TP 16 -\fBSOCK_NONBLOCK\fP -新しく生成されるオープンファイル記述 (open file description) の \fBO_NONBLOCK\fP -ファイルステータスフラグをセットする。 このフラグを使うことで、 \fBO_NONBLOCK\fP をセットするために \fBfcntl\fP(2) -を追加で呼び出す必要がなくなる。 -.TP -\fBSOCK_CLOEXEC\fP -新しいファイルディスクリプターに対して close\-on\-exec (\fBFD_CLOEXEC\fP) フラグをセットする。 -このフラグが役に立つ理由については、 \fBopen\fP(2) の \fBO_CLOEXEC\fP フラグの説明を参照のこと。 -.PP -\fIprotocol\fP はソケットによって使用される固有のプロトコルを指定する。通常それぞれの -ソケットは、与えられたプロトコルファミリーの種類ごとに一つのプロトコルのみを サポートする。 その場合は \fIprotocol\fP に 0 を指定できる。 -しかし、多くのプロトコルが存在してもかまわない。 この場合にはこの方法により固有のプロトコルを指定する必要がある。 -使用されるプロトコル番号は通信の行なわれる\*(lq通信ドメイン\*(rqに 固有である; \fBprotocols\fP(5) を参照すること。 -プロトコル名をどうやってプロトコル番号に対応させるかについては \fBgetprotoent\fP(3) を参照すること。 -.PP -\fBSOCK_STREAM\fP 型のソケットは全二重バイトストリームである。 これらはレコード境界を保存しない。 -ストリームは、ソケットがデータを送ったり受けたりする前に \fI接続された\fP 状態になってなければならない。他のソケットへの接続は -\fBconnect\fP(2) コールによって行なわれる。一度接続したらデータは \fBread\fP(2) と \fBwrite\fP(2) コールや -\fBsend\fP(2) と \fBrecv\fP(2) コールの変種を使用して転送できる。 セッションが完了したら \fBclose\fP(2) -が行なわれる。帯域外データの転送も \fBsend\fP(2) に記述されており、 受信も \fBrecv\fP(2) に記述されている。 -.PP -\fBSOCK_STREAM\fP を実装した通信プロトコルはデータに損失や重複がないことを保証する。 もし相手のプロトコルがバッファー空間を持つ -データの断片を適当な時間のうちに転送できなければ、 接続は断たれたとみなす。そのソケット \fBSO_KEEPALIVE\fP -が有効になっている場合、プロトコル独自の方法で接続の相手側がまだ 有効であるかをチェックする。 -もしプロセスが、壊れたストリームでデータを送受信しようとした場合には \fBSIGPIPE\fP シグナルが送られる; -これは通常のそのシグナルを扱っていないプロセスを 終了させる。 \fBSOCK_SEQPACKET\fP ソケットは \fBSOCK_STREAM\fP -ソケットと同じシステムコールを使用する。 唯一の違いは \fBread\fP(2) コールが要求された量のデータのみを返し、到着したパケットの残りの部分を -捨ててしまうことである。同様に入ってくるデータグラムの全てのメッセージ境界は 保存される。 -.PP -\fBSOCK_DGRAM\fP と \fBSOCK_RAW\fP ソケットは \fBsendto\fP(2) -コールで指定された相手へデータグラムを送ることが許されている。 データグラムは一般に \fBrecvfrom\fP(2) で受けとり、 -このコールは次のデータグラムを送信者のアドレスと一緒に返す。 -.PP -\fBSOCK_PACKET\fP は古いソケット型で、生(raw)のパケットをデバイスドライバから 直接受信するためのものである。 今は代わりに -\fBpacket\fP(7) を用いること。 -.PP -\fBfcntl\fP(2) の \fBF_SETOWN\fP 操作を使って、シグナル \fBSIGURG\fP や \fBSIGPIPE\fP -を受けとるプロセスグループを指定できる。 \fBSIGURG\fP シグナルは帯域外データが到着した時に、 \fBSIGPIPE\fP シグナルは -\fBSOCK_STREAM\fP 接続が予期せず切断された時に送られる。 また、 \fBF_SETOWN\fP 操作は、I/O や I/O イベントの非同期 -(asynchronous) 通知を \fBSIGIO\fP を経由で受け取るプロセスやプロセスグループを設定するのにも使用できる。 \fBF_SETOWN\fP -を使用することは \fBFIOSETOWN\fP または \fBSIOCSPGRP\fP の引数で \fBioctl\fP(2) を使用することと等価である。 -.PP -ネットワークがプロトコルモジュールにエラー状態を伝えた場合 (例えば、IP の ICMP メッセージを使用して)には、ソケットの -ペンディングエラーフラグが設定される。次にこのソケットを操作した 時にペンディングされていたエラーコードが返される。プロトコルによっては -エラーについてのより詳しい情報を受け取るためにソケットごとのエラーキューを 受け取ることが可能である。 \fBip\fP(7) の -\fBIP_RECVERR\fP を参照すること。 -.PP -ソケットの操作はソケットレベル \fIoptions\fP によって制御される。 これらのオプションは \fI\fP -に定義されている。 \fBsetsockopt\fP(2) と \fBgetsockopt\fP(2) 関数はそれぞれオプションの設定と取得を行なう。 -.SH 返り値 -成功した場合、新しいソケットのファイルディスクリプターを返す。 エラーが発生した場合は \-1 を返し、 \fIerrno\fP を適切に設定する。 -.SH エラー -.TP -\fBEACCES\fP -指定されたタイプまたはプロトコルのソケットを作成する許可が与えられていない。 -.TP -\fBEAFNOSUPPORT\fP -指定されたアドレスファミリーがサポートされていない。 -.TP -\fBEINVAL\fP -知らないプロトコル、または利用できないプロトコルファミリーである。 -.TP -\fBEINVAL\fP -.\" Since Linux 2.6.27 -\fItype\fP に無効なフラグが指定されている。 -.TP -\fBEMFILE\fP -プロセスのファイルテーブルが溢れている。 -.TP -\fBENFILE\fP -オープンされたファイルの総数がシステム全体の上限に達していた。 -.TP -\fBENOBUFS\fP または \fBENOMEM\fP -十分なメモリーがない。十分な資源が解放されるまではソケットを 作成することはできない。 -.TP -\fBEPROTONOSUPPORT\fP -このドメインでは指定されたプロトコルまたはプロトコルタイプが サポートされていない。 -.PP -下位のプロトコルモジュールから他のエラーが生成されるかもしれない。 -.SH 準拠 -4.4BSD, POSIX.1\-2001. - -フラグ \fBSOCK_NONBLOCK\fP, \fBSOCK_CLOEXEC\fP は Linux 固有である。 - -\fBsocket\fP() は 4.2BSD で登場した。一般に、(System\ V の変種を含めて) BSD のソケット層の互換性をサポートしている -BSD 以外のシステムへの、 または、BSD 以外のシステムからの移植ができる。 -.SH 注意 -POSIX.1\-2001 では \fI\fP のインクルードは必須とされておらず、 Linux -ではこのヘッダーファイルは必要ではない。 しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダーファイルが -必要であり、移植性が必要なアプリケーションではこのファイルを インクルードするのが賢明であろう。 - -4.x BSD において定数を使用する場合、プロトコルファミリーには -\fBPF_UNIX\fP, \fBPF_INET\fP 等を使用している。一方でアドレスファミリーには -\fBAF_UNIX\fP, \fBAF_INET\fP 等が使用されている。 -しかしながら BSD のマニュアルでは 「一般にプロトコルファミリーは -アドレスファミリーと同じものである。」 と保証している。 -それ以外の規格では全ての場所で AF_* が使用されている。 - -\fBAF_ALG\fP プロトコル種別は Linux 2.6.38 で追加された。 このインターフェースの詳しい情報は、 カーネルのソースファイル -\fIDocumentation/crypto/crypto\-API\-userspace.txt\fP に書かれている。 -.SH 例 -\fBsocket\fP() の利用例が \fBgetaddrinfo\fP(3) に記載されている。 -.SH 関連項目 -\fBaccept\fP(2), \fBbind\fP(2), \fBconnect\fP(2), \fBfcntl\fP(2), \fBgetpeername\fP(2), -\fBgetsockname\fP(2), \fBgetsockopt\fP(2), \fBioctl\fP(2), \fBlisten\fP(2), \fBread\fP(2), -\fBrecv\fP(2), \fBselect\fP(2), \fBsend\fP(2), \fBshutdown\fP(2), \fBsocketpair\fP(2), -\fBwrite\fP(2), \fBgetprotoent\fP(3), \fBip\fP(7), \fBsocket\fP(7), \fBtcp\fP(7), -\fBudp\fP(7), \fBunix\fP(7) - -\(lqAn Introductory 4.3BSD Interprocess Communication Tutorial\(rq and -\(lqBSD Interprocess Communication Tutorial\(rq, (\fIUNIX Programmer's -Supplementary Documents Volume 1.\fP として再版された) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/socketcall.2 b/manual/LDP_man-pages/draft/man2/socketcall.2 deleted file mode 100644 index 4f0a9552..00000000 --- a/manual/LDP_man-pages/draft/man2/socketcall.2 +++ /dev/null @@ -1,62 +0,0 @@ -.\" Copyright (c) 1995 Michael Chastain (mec@shell.portal.com), 15 April 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified Tue Oct 22 22:11:53 1996 by Eric S. Raymond -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Mon Mar 3 23:45:10 JST 1997 -.\" by HANATAKA Shinya -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH SOCKETCALL 2 2012\-10\-16 Linux "Linux Programmer's Manual" -.SH 名前 -socketcall \- ソケットシステムコール -.SH 書式 -\fBint socketcall(int \fP\fIcall\fP\fB, unsigned long *\fP\fIargs\fP\fB);\fP -.SH 説明 -\fBsocketcall\fP() はソケットシステムコールのための共通のカーネルエントリー ポイント(kernel entry point)である。 -\fIcall\fP はどのソケット関数を呼び出すかを指定する。 \fIargs\fP は適切なコールに渡すための実際の引き数を含んでいるブロックを指す。 -.PP -ユーザープログラムは通常の名前を使用して適切な関数を呼び出すべきである。 標準ライブラリの実装者やカーネルハッカーのみが \fBsocketcall\fP() -について知る必要がある。 -.SH 準拠 -このコールは Linux 特有であり、移植を意図したプログラムで 使用してはいけない。 -.SH 注意 -いくつかのアーキテクチャー\\(emfor 例えば x86\-64 や ARM\\(emでは、システムコール \fBsocketcall\fP() -が存在しない。実際には、その代わりに \fBsocket\fP(2), \fBaccept\fP(2), \fBbind\fP(2) -などが独立したシステムコールとして実装されている。 -.SH 関連項目 -\fBaccept\fP(2), \fBbind\fP(2), \fBconnect\fP(2), \fBgetpeername\fP(2), -\fBgetsockname\fP(2), \fBgetsockopt\fP(2), \fBlisten\fP(2), \fBrecv\fP(2), -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/socketpair.2 b/manual/LDP_man-pages/draft/man2/socketpair.2 deleted file mode 100644 index 39c4a07c..00000000 --- a/manual/LDP_man-pages/draft/man2/socketpair.2 +++ /dev/null @@ -1,111 +0,0 @@ -.\" 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 -.\" -.\" @(#)socketpair.2 6.4 (Berkeley) 3/10/91 -.\" -.\" Modified 1993-07-24 by Rik Faith -.\" Modified 1996-10-22 by Eric S. Raymond -.\" Modified 2002-07-22 by Michael Kerrisk -.\" Modified 2004-06-17 by Michael Kerrisk -.\" 2008-10-11, mtk: Add description of SOCK_NONBLOCK and SOCK_CLOEXEC -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-03-03, HANATAKA Shinya -.\" Updated 2002-09-24, Akihiro MOTOKI -.\" Updated 2005-02-24, Akihiro MOTOKI -.\" Updated 2008-11-09, Akihiro MOTOKI , LDP v3.13 -.\" -.TH SOCKETPAIR 2 2008\-10\-11 Linux "Linux Programmer's Manual" -.SH 名前 -socketpair \- 接続されたソケットのペアを作成する -.SH 書式 -\fB#include \fP /* 「注意」参照 */ -.br -\fB#include \fP -.sp -\fBint socketpair(int \fP\fIdomain\fP\fB, int \fP\fItype\fP\fB, int \fP\fIprotocol\fP\fB, int -\fP\fIsv\fP\fB[2]);\fP -.SH 説明 -\fBsocketpair\fP() は、指定されたドメイン \fIdomain\fP に指定された種類 \fItype\fP -で名前のないソケットの接続されたペアを作成する。 \fIprotocol\fP が指定されると、このプロトコルを用いる。 これらの引き数の詳細は -\fBsocket\fP(2) を参照のこと。 - -新しいソケットの参照に使用するディスクリプター (descriptor) が \fIsv\fP[0] と \fIsv\fP[1] に返される。 -二つのソケットは全く同じである。 -.SH 返り値 -成功した場合にはゼロが返される。エラー時には \-1 が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEAFNOSUPPORT\fP -このマシンでは指定されたアドレスファミリーがサポートされていない。 -.TP -\fBEFAULT\fP -アドレス \fIsv\fP がこのプロセスで使えるアドレス空間を指定していない。 -.TP -\fBEMFILE\fP -このプロセスが使用しているディスクリプターの数が多すぎる。 -.TP -\fBENFILE\fP -オープンされたファイルの総数がシステム全体の上限に達していた。 -.TP -\fBEOPNOTSUPP\fP -指定されたプロトコルではソケットのペアの作成がサポートされていない。 -.TP -\fBEPROTONOSUPPORT\fP -このマシンでは指定されたプロトコルがサポートされていない。 -.SH 準拠 -4.4BSD, POSIX.1\-2001. \fBsocketpair\fP() 関数コールは 4.2BSD で現われた。一般に (System\ V -の変種を含めて) BSD のソケット層のクローンをサポートしている、BSD 以外のシステムと、 互いに移植性がある。 -.SH 注意 -Linux では、この関数でサポートされているドメインは \fBAF_UNIX\fP (または同義語である \fBAF_LOCAL\fP) だけである。 -(ほとんどの実装で同じ制限がある) - -Linux 2.6.27 以降では、 \fBsocketpair\fP() は、フラグ \fBSOCK_NONBLOCK\fP と \fBSOCK_CLOEXEC\fP -に対応している。フラグの説明は \fBsocket\fP(2) を参照のこと。 - -POSIX.1\-2001 では \fI\fP のインクルードは必須とされておらず、 Linux -ではこのヘッダーファイルは必要ではない。 しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダーファイルが -必要であり、移植性が必要なアプリケーションではこのファイルを インクルードするのが賢明であろう。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/splice.2 b/manual/LDP_man-pages/draft/man2/splice.2 deleted file mode 100644 index ae66d6d6..00000000 --- a/manual/LDP_man-pages/draft/man2/splice.2 +++ /dev/null @@ -1,164 +0,0 @@ -.\" This manpage is Copyright (C) 2006 Jens Axboe -.\" and Copyright (C) 2006 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2007 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2007-02-04, Akihiro MOTOKI -.\" Updated 2008-11-10, Akihiro MOTOKI , LDP v3.13 -.\" -.TH SPLICE 2 2014\-12\-31 Linux "Linux Programmer's Manual" -.SH 名前 -splice \- パイプとの間でデータを継ぎ合わせる -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP - -.\" Return type was long before glibc 2.7 -\fBssize_t splice(int \fP\fIfd_in\fP\fB, loff_t *\fP\fIoff_in\fP\fB, int \fP\fIfd_out\fP\fB,\fP -\fB loff_t *\fP\fIoff_out\fP\fB, size_t \fP\fIlen\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP -.fi -.SH 説明 -\fBsplice\fP() は、カーネルアドレス空間とユーザーアドレス空間との間のコピーを伴わずに、 2 -つのファイルディスクリプター間でデータの移動を行う。 ファイルディスクリプター \fIfd_in\fP からファイルディスクリプター \fIfd_out\fP -へ最大 \fIlen\fP バイトを転送する。 2 つのファイルディスクリプターのうち一つは パイプを参照していなければならない。 - -\fIfd_in\fP と \fIoff_in\fP には以下のルールが適用される。 -.IP * 3 -\fIfd_in\fP がパイプを参照している場合、 \fIoff_in\fP は NULL でなければならない。 -.IP * -\fIfd_in\fP がパイプを参照しておらず、かつ \fIoff_in\fP が NULL の場合、 バイトは \fIfd_in\fP -の現在のファイルオフセットから読み出され、 現在のファイルオフセットは適切に調整される。 -.IP * -\fIfd_in\fP がパイプを参照しておらず、 \fIoff_in\fP が NULL でない場合、 \fIoff_in\fP は \fIfd_in\fP -からのデータ読み出しを開始する先頭オフセットを格納したバッファー へのポインターでなければならない。この場合、 \fIfd_in\fP -の現在のファイルオフセットは変更されない。 -.PP -\fIfd_out\fP と \fIoff_out\fP に関しても同様である。 - -\fIflags\fP 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。 -.TP 1.9i -\fBSPLICE_F_MOVE\fP -ページのコピーでなく移動を試みる。 これはカーネルに対するヒントでしかない。 つまり、カーネルがパイプからページを移動できない場合や、 -パイプバッファーがページ全部を参照していない場合は、 ページのコピーが行われることもある。 このフラグの最初の実装にはバグがあった。そのため、 -Linux 2.6.21 以降ではこのフラグの操作はできないようになっている (ただし、 \fBsplice\fP() -コールでこのフラグを指定することは今も認められている)。 将来、正しい実装が行われることだろう。 -.TP -\fBSPLICE_F_NONBLOCK\fP -入出力時に停止 (block) しない。 このフラグを指定すると、 splice によるパイプ操作を非停止モード (nonblocking) で -行おうとするが、その場合でも \fBsplice\fP() は停止することもある。なぜなら、データのやり取りを行う ファイルディスクリプターは -(\fBO_NONBLOCK\fP フラグをセットされていない場合) 停止する可能性があるからである。 -.TP -\fBSPLICE_F_MORE\fP -この後の splice でさらに転送されるデータがあることを示す。 このフラグは \fIfd_out\fP がソケットを参照している場合に有用なヒントとなる -(\fBsend\fP(2) の \fBMSG_MORE\fP や \fBtcp\fP(7) の \fBTCP_CORK\fP の説明も参照)。 -.TP -\fBSPLICE_F_GIFT\fP -\fBsplice\fP() では使用しない。 \fBvmsplice\fP(2) 参照。 -.SH 返り値 -成功して完了すると、 \fBsplice\fP() はパイプから出し入れしたバイト数を返す。 返り値 0 はデータの転送が行わなかったことを示す。 -この場合、処理を停止 (block) しても無意味である。 なぜなら、 \fIfd_in\fP -が参照するパイプの書き込み側に接続されている者がいないからである。 - -エラーの場合、 \fBsplice\fP() は \-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 -.SH エラー -.TP -\fBEAGAIN\fP -\fBSPLICE_F_NONBLOCK\fP が \fIflags\fP に指定されていて、かつ操作が停止するような状態であった。 -.TP -\fBEBADF\fP -ファイルディスクリプターの一方または両方が有効ではない、 もしくは適切な read\-write モードではない。 -.TP -\fBEINVAL\fP -.\" The append-mode error is given since 2.6.27; in earlier kernels, -.\" splice() in append mode was broken -対象のファイルシステムが splice に対応していない、 または対象のファイルが追記モードでオープンされている、 -またはディスクリプターのどちらもパイプを参照していない、 または seek できないデバイスに対してオフセットが指定された。 -.TP -\fBENOMEM\fP -メモリー不足。 -.TP -\fBESPIPE\fP -\fIoff_in\fP か \fIoff_out\fP のいずれかが NULL ではないが、対応するファイルディスクリプターが パイプを参照している。 -.SH バージョン -\fBsplice\fP() システムコールは Linux 2.6.17 で初めて登場した。 -ライブラリによるサポートは glibc バージョン 2.5 で追加された。 -.SH 準拠 -このシステムコールは Linux 固有である。 -.SH 注意 -3 つのシステムコール (\fBsplice\fP(), \fBvmsplice\fP(2), \fBtee\fP(2)) -を使うと、ユーザー空間プログラムは任意のカーネルバッファーに対する 完全な制御ができる。カーネルバッファーは、パイプに使用されているのと -同種のバッファーを使ってカーネル内に実装されている。 大まかにいうと、これらのシステムコールは以下の仕事を行う: -.TP 1.2i -\fBsplice\fP() -バッファーから任意のファイルディスクリプターや、その逆方向、 もしくはあるバッファーから別のバッファーへの、データ移動を行う。 -.TP -\fBtee\fP(2) -あるバッファーから別のバッファーへのデータ「コピー」を行う。 -.TP -\fBvmsplice\fP(2) -ユーザー空間からバッファーへのデータ「コピー」を行う。 -.PP -.\" -.\" Linus: Now, imagine using the above in a media server, for example. -.\" Let's say that a year or two has passed, so that the video drivers -.\" have been updated to be able to do the splice thing, and what can -.\" you do? You can: -.\" -.\" - splice from the (mpeg or whatever - let's just assume that the video -.\" input is either digital or does the encoding on its own - like they -.\" pretty much all do) video input into a pipe (remember: no copies - the -.\" video input will just DMA directly into memory, and splice will just -.\" set up the pages in the pipe buffer) -.\" - tee that pipe to split it up -.\" - splice one end to a file (ie "save the compressed stream to disk") -.\" - splice the other end to a real-time video decoder window for your -.\" real-time viewing pleasure. -.\" -.\" Linus: Now, the advantage of splice()/tee() is that you can -.\" do zero-copy movement of data, and unlike sendfile() you can -.\" do it on _arbitrary_ data (and, as shown by "tee()", it's more -.\" than just sending the data to somebody else: you can duplicate -.\" the data and choose to forward it to two or more different -.\" users - for things like logging etc.). -.\" -ここではコピーの話をしているが、実際のコピーは一般的に回避される。 カーネルは、パイプバッファーをカーネルメモリーのページへのポインター集合として -実装し、ページへの参照回数を管理することで、これを実現している。 カーネルは、対象となるページを参照する (出力バッファー用の) ポインターを -新規に作成することでバッファー内のページの「コピー」を作成し、 そのページの参照回数を増やす。つまり、ポインターだけがコピーされ、 -バッファーのページはコピーされない。 -.SH 例 -\fBtee\fP(2) 参照。 -.SH 関連項目 -\fBsendfile\fP(2), \fBtee\fP(2), \fBvmsplice\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index 05da7aca..298a3bbf 100644 --- a/manual/LDP_man-pages/draft/man2/spu_create.2 +++ b/manual/LDP_man-pages/draft/man2/spu_create.2 @@ -33,19 +33,18 @@ .\" Translated 2007-10-23, Akihiro MOTOKI .\" Updated 2013-05-01, Akihiro MOTOKI .\" -.TH SPU_CREATE 2 2012\-08\-05 Linux "Linux Programmer's Manual" +.TH SPU_CREATE 2 2020\-12\-21 Linux "Linux Programmer's Manual" .SH 名前 spu_create \- 新しい SPU コンテキストを生成する .SH 書式 .nf \fB#include \fP \fB#include \fP - -\fBint spu_create(const char *\fP\fIpathname\fP\fB, int \fP\fIflags\fP\fB, mode_t \fP\fImode\fP\fB);\fP +.PP \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 - +.PP \fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 .SH 説明 \fBspu_create\fP() システムコールは、Cell Broadband Engine アーキテクチャーを実装した PowerPC @@ -54,13 +53,19 @@ spu_create \- 新しい SPU コンテキストを生成する \fIpathname\fP は SPU ファイルシステム (\fBspufs\fP) のマウントポイント内の存在しないディレクトリを指していなければならない。 \fBspu_create\fP() が成功すると、 \fIpathname\fP にディレクトリが生成され、 そのディレクトリに \fBspufs\fP(7) で説明されているファイル群が配置される。 - +.PP コンテキストを作成した際、返されたファイルディスクリプターは、 \fBspu_run\fP(2) に渡すか、 \fB*at\fP 系のシステムコール (\fBopenat\fP(2) など) の \fIdirfd\fP 引き数として使用するか、 クローズするか、しかできない。 他の操作は定義されていない。 そのコンテキストへの最後の参照がなくなった際に、 論理 SPU コンテキストは破棄される (そのコンテキストの \fIpathname\fP ディレクトリに作成されたファイルもすべて破棄される)。 通常は \fBspu_create\fP() が返したファイルディスクリプターがクローズされた際に発生する。 - +.PP +\fImode\fP 引き数 (からプロセスの \fBumask\fP(2) でセットされたビットを除いたもの) により、 \fBspufs\fP +に作られる新しいディレクトリで使用されるアクセス許可が決まる。 利用できる \fImode\fP 値の完全なリストについては \fBstat\fP(2) を参照。 +.PP +The \fIneighbor_fd\fP is used only when the \fBSPU_CREATE_AFFINITY_SPU\fP flag is +specified; see below. +.PP \fIflags\fP 引き数には 0 か以下の定数の組み合わせ (ビット単位の論理和) を指定できる。 .TP \fBSPU_CREATE_EVENTS_ENABLED\fP @@ -70,37 +75,36 @@ DMA エラーを通知するのにシグナルを使うのではなく、 \fBspu コンテキストの代わりに SPU gang を作成する。 (gang は、機能的に互いに関係していて、スケジューリングパラメーター (優先度とポリシー) を共有する SPU コンテキストのグループである。 将来、 グループ全体が一つの単位としてスイッチイン/スイッチアウトされる gang スケジューリングが実装されるかもしれない。) - +.IP \fIpathname\fP 引き数で指定された場所に新しいディレクトリが作成される。 この gang を使って他の SPU コンテキストを保持することができる。 それには、それ以降の \fBspu_create\fP() に gang ディレクトリ内のパス名を渡す。 .TP \fBSPU_CREATE_NOSCHED\fP SPU スケジューラーの影響を受けないコンテキストを作成する。 一度実行されると、 呼び出したプロセスが破棄されるまでこのコンテキストがスケジューリングで追い出されることはない。 - +.IP このコンテキストは SPU から削除されることはないので、 \fBSPU_CREATE_NOSCHED\fP コンテキストではいくつかの機能は無効にされる。 \fBspufs\fP のこのコンテキストのディレクトリでは一部のファイルだけができる。 また、 \fBSPU_CREATE_NOSCHED\fP コンテキストはクラッシュした際にコアファイルをダンプできない。 - +.IP \fBSPU_CREATE_NOSCHED\fP コンテキストを作成するには \fBCAP_SYS_NICE\fP ケーパビリティが必要である。 .TP \fBSPU_CREATE_ISOLATE\fP 隔離された SPU コンテキストを作成する。 隔離されたコンテキストはいくつかの PPE (PowerPC Processing Element) 命令から保護される。 SPU ローカルストアや NPC レジスターへのアクセスなどである。 - +.IP \fBSPU_CREATE_ISOLATE\fP コンテキストを作成するには \fBSPU_CREATE_NOSCHED\fP フラグも指定する必要がある。 .TP -\fBSPU_CREATE_AFFINITY_SPU\fP +\fBSPU_CREATE_AFFINITY_SPU\fP (since Linux 2.6.23) +.\" commit 8e68e2f248332a9c3fd4f08258f488c209bd3e0c 別の SPU コンテキストと affinity (親和性) を持ったコンテキストを作成する。 この affinity 情報は SPU スケジューリングアルゴリズムで使用される。 このフラグを使う際には、 他の SPU コンテキストを指すファイルディスクリプターを \fIneighbor_fd\fP 引き数を渡す必要がある。 .TP -\fBSPU_CREATE_AFFINITY_MEM\fP +\fBSPU_CREATE_AFFINITY_MEM\fP (since Linux 2.6.23) +.\" commit 8e68e2f248332a9c3fd4f08258f488c209bd3e0c システムメモリーと affinity (親和性) を持ったコンテキストを作成する。 この affinity 情報は SPU スケジューリングアルゴリズムで使用される。 -.PP -\fImode\fP 引き数 (からプロセスの \fBumask\fP(2) でセットされたビットを除いたもの) により、 \fBspufs\fP -に作られる新しいディレクトリで使用されるアクセス許可が決まる。 利用できる \fImode\fP 値の完全なリストについては \fBstat\fP(2) を参照。 .SH 返り値 成功すると、 \fBspu_create\fP() は新しいファイルディスクリプターを返す。 エラーの場合、\-1 を返し、 \fIerrno\fP に以下のリストに記載のエラーコードのいずれかを設定する。 @@ -123,13 +127,14 @@ SPU スケジューラーの影響を受けないコンテキストを作成す \fIpathname\fP を解決するまでに辿ったシンボリックリンクが多過ぎた。 .TP \fBEMFILE\fP -そのプロセスがオープンできるファイル数の上限に達していた。 +The per\-process limit on the number of open file descriptors has been +reached. .TP \fBENAMETOOLONG\fP \fIpathname\fP が長過ぎる。 .TP \fBENFILE\fP -システム全体でオープンできるファイル数の上限に達していた。 +The system\-wide limit on the total number of open files has been reached. .TP \fBENODEV\fP 隔離されたコンテキストが要求されたが、 ハードウェアが SPU アイソレーションをサポートしていない。 @@ -151,7 +156,8 @@ SPU スケジューラーの影響を受けないコンテキストを作成す \fIpathname\fP の一部がディレクトリではない。 .TP \fBEPERM\fP -\fISPU_CREATE_NOSCHED\fP フラグが指定されたが、ユーザーが \fBCAP_SYS_NICE\fP ケーパビリティを持っていない。 +The \fBSPU_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 にマウントされる。 @@ -167,11 +173,14 @@ glibc はこのシステムコールに対するラッパー関数を提供し .UR http://www.bsc.es\:/projects\:/deepcomputing\:/linuxoncell/ .UE を参照のこと。 -.SH 例 +.PP +Prior to the addition of the \fBSPU_CREATE_AFFINITY_SPU\fP flag in Linux +2.6.23, the \fBspu_create\fP() system call took only three arguments (i.e., +there was no \fIneighbor_fd\fP argument). +.SH EXAMPLES \fBspu_create\fP() の利用例については \fBspu_run\fP(2) を参照。 .SH 関連項目 \fBclose\fP(2), \fBspu_run\fP(2), \fBcapabilities\fP(7), \fBspufs\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/spu_run.2 b/manual/LDP_man-pages/draft/man2/spu_run.2 index 8c1d1236..c8f3fdd3 100644 --- a/manual/LDP_man-pages/draft/man2/spu_run.2 +++ b/manual/LDP_man-pages/draft/man2/spu_run.2 @@ -34,40 +34,42 @@ .\" Translated 2007-10-19, Akihiro MOTOKI .\" Updated 2008-11-10, Akihiro MOTOKI , LDP v3.04 .\" -.TH SPU_RUN 2 2012\-08\-05 Linux "Linux Programmer's Manual" +.TH SPU_RUN 2 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 spu_run \- SPU コンテキストを実行する .SH 書式 .nf \fB#include \fP - +.PP \fBint spu_run(int \fP\fIfd\fP\fB, unsigned int *\fP\fInpc\fP\fB, unsigned int *\fP\fIevent\fP\fB);\fP .fi - +.PP \fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 .SH 説明 \fBspu_run\fP() システムコールは、Cell Broadband Engine アーキテクチャーを実装した PowerPC マシンで Synergistic Processor Units (SPU) にアクセスするために 使用される。 \fIfd\fP 引き数は、 \fBspu_create\fP(2) が返すファイルディスクリプターで、 特定の SPU コンテキストを参照する。 そのコンテキストが物理 SPU に割り当てられると、 \fInpc\fP で渡された命令ポインター (instruction pointer) から実行が開始される。 - +.PP SPU コードの実行は同期的 (synchronously) に行われる、つまり SPU が実行中は \fBspu_run\fP() は停止 (block) する。 SPU コードの実行をメイン CPU や他の SPU と並行して行う必要がある場合は、 最初に、その SPU コードを実行する新しいスレッドを、(例えば \fBpthread_create\fP(3) などを使って) 生成しなければならない。 - +.PP \fBspu_run\fP() が返るときには、SPU のプログラムカウンターの現在値が \fInpc\fP に書き込まれる。 これにより、連続する \fBspu_run\fP() の呼び出しで同じ \fInpc\fP ポインターを使うことができる。 - +.PP \fIevent\fP 引き数には、拡張ステータスコード用のバッファーを指定する。 \fBSPU_CREATE_EVENTS_ENABLED\fP フラグ付きで SPU コンテキストが作成されると、 \fBspu_run\fP() が返る前に Linux カーネルによりこのバッファーに 拡張ステータスコードが格納される。 - +.PP ステータスコードには以下の定数が一つ以上入る。 .TP \fBSPE_EVENT_DMA_ALIGNMENT\fP DMA (direct memory access) のアライメントエラーが発生した。 .TP \fBSPE_EVENT_INVALID_DMA\fP +.\" SPE_EVENT_SPE_DATA_SEGMENT is defined, but does not seem to be generated +.\" at any point (in Linux 5.9 sources). 無効な MFC (Memory Flow Controller) DMA コマンドを行おうとした。 .TP \fBSPE_EVENT_SPE_DATA_STORAGE\fP @@ -80,7 +82,7 @@ NULL は \fIevent\fP 引き数として有効な値である。 この場合、 .SH 返り値 成功すると、 \fBspu_run\fP() は \fIspu_status\fP レジスターの値を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP を下記のエラーコードのいずれかに設定する。 - +.PP \fIspu_status\fP レジスターの値は、ステータスコードと SPU の \fBstop\-and\-signal\fP 命令が返す 14 ビットのコードの ビットマスクで構成される。 後者の 14 ビットのコードはオプションである。 ステータスコードのビットマスクは下記の通りである。 .TP @@ -140,10 +142,10 @@ glibc はこのシステムコールに対するラッパー関数を提供し .UR http://www.bsc.es\:/projects\:/deepcomputing\:/linuxoncell/ .UE を参照のこと。 -.SH 例 +.SH EXAMPLES 以下は、簡単な 1 命令の SPU プログラムを \fBspu_run\fP() システムコールを使って実行させる例である。 - -.nf +.PP +.EX #include #include #include @@ -187,16 +189,15 @@ int main(void) * 0x00000002 (spu was stopped due to stop\-and\-signal) * | 0x12340000 (the stop\-and\-signal code) */ - printf("SPU Status: 0x%08x\en", spu_status); + printf("SPU Status: %#08x\en", spu_status); exit(EXIT_SUCCESS); } -.fi +.EE .\" .SH AUTHORS .\" Arnd Bergmann , Jeremy Kerr .SH 関連項目 \fBclose\fP(2), \fBspu_create\fP(2), \fBcapabilities\fP(7), \fBspufs\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/stat.2 b/manual/LDP_man-pages/draft/man2/stat.2 deleted file mode 100644 index 5819fb13..00000000 --- a/manual/LDP_man-pages/draft/man2/stat.2 +++ /dev/null @@ -1,620 +0,0 @@ -'\" t -.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 -.\" Parts Copyright (c) 1995 Nicolai Langfeldt (janl@ifi.uio.no), 1/1/95 -.\" and Copyright (c) 2006, 2007, 2014 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 -.\" Modified 1993-07-24 by Rik Faith -.\" Modified 1995-05-18 by Todd Larason -.\" Modified 1997-01-31 by Eric S. Raymond -.\" Modified 1995-01-09 by Richard Kettlewell -.\" Modified 1998-05-13 by Michael Haardt -.\" Modified 1999-07-06 by aeb & Albert Cahalan -.\" Modified 2000-01-07 by aeb -.\" Modified 2004-06-23 by Michael Kerrisk -.\" 2007-06-08 mtk: Added example program -.\" 2007-07-05 mtk: Added details on underlying system call interfaces -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998-1999 HANATAKA Shinya -.\" and Copyright (c) 2005-2008 Akihiro MOTOKI -.\" Translated 1998-06-21, HANATAKA Shinya -.\" Modified 1999-04-16, HANATAKA Shinya -.\" Updated 2000-01-03, Kentaro Shirakata -.\" Updated 2000-10-06, Kentaro Shirakata -.\" Updated 2001-04-09, Kentaro Shirakata -.\" Updated 2001-06-25, Kentaro Shirakata -.\" Updated 2005-02-28, Akihiro MOTOKI -.\" Updated 2005-09-06, Akihiro MOTOKI -.\" Updated 2005-11-19, Akihiro MOTOKI, catch up to LDP v2.14 -.\" Updated 2006-07-21, Akihiro MOTOKI, LDP v2.36 -.\" Updated 2007-06-13, Akihiro MOTOKI, LDP v2.55 -.\" Updated 2008-09-19, Akihiro MOTOKI, LDP v3.08 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH STAT 2 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -stat, fstat, lstat, fstatat \- ファイルの状態を取得する -.SH 書式 -.nf -\fB#include \fP -.br -\fB#include \fP -.br -\fB#include \fP -.sp -\fBint stat(const char *\fP\fIpathname\fP\fB, struct stat *\fP\fIbuf\fP\fB);\fP -.br -\fBint fstat(int \fP\fIfd\fP\fB, struct stat *\fP\fIbuf\fP\fB);\fP -.br -\fBint lstat(const char *\fP\fIpathname\fP\fB, struct stat *\fP\fIbuf\fP\fB);\fP -.sp -\fB#include \fP/* AT_* 定数の定義 */ -\fB#include \fP -.sp -\fBint fstatat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, struct stat *\fP\fIbuf\fP\fB,\fP -\fB int \fP\fIflags\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.ad l -.PD 0 -.sp -\fBlstat\fP(): -.RS 4 -/* glibc 2.19 以前 */ _BSD_SOURCE || -.br -/* glibc 2.20 以降 */_DEFAULT_SOURCE || -.br -_XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.br -|| /* glibc 2.10 以降: */ _POSIX_C_SOURCE\ >=\ 200112L -.RE -.sp -\fBfstatat\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_ATFILE_SOURCE -.RE -.PD -.ad -.SH 説明 -.PP -これらの関数は、ファイルについての情報を \fIstat\fP が指すバッファーに格納して返す。 ファイルそのものに対するアクセス許可は必要としないが、 -\(em\fBstat\fP(), \fBfstatat\fP(), \fBlstat\fP() の場合には \(emそのファイルへ至る \fIpathname\fP -を構成する全てのディレクトリに対する実行 (検索) 許可が必要である。 -.PP -\fBstat\fP() と \fBfstatat\fP() は \fIpathname\fP が指すファイルに関する情報を取得する。 \fBfstatat\fP() -の違いについては後で説明する。 - -\fBlstat\fP() は \fBstat\fP() と同じであるが、 \fIpathnames\fP -がシンボリックリンクの場合、リンクが参照しているファイルではなく、 リンク自身の状態を返す点が異なる。 - -\fBfstat\fP() は \fBstat\fP() と同じだが、 状態を取得するファイルをファイルディスクリプター \fIfd\fP で指定する点が異なる。 -.PP -これらのシステムコールはいずれも、結果を \fIstat\fP 構造体に入れて返す。 \fIstat\fP 構造体には以下のフィールドが含まれている: -.PP -.in +4n -.nf -struct stat { - dev_t st_dev; /* ファイルがあるデバイスの ID */ - ino_t st_ino; /* inode 番号 */ - mode_t st_mode; /* アクセス保護 */ - nlink_t st_nlink; /* ハードリンクの数 */ - uid_t st_uid; /* 所有者のユーザー ID */ - gid_t st_gid; /* 所有者のグループ ID */ - dev_t st_rdev; /* デバイス ID (特殊ファイルの場合) */ - off_t st_size; /* 全体のサイズ (バイト単位) */ - blksize_t st_blksize; /* ファイルシステム I/O での - ブロックサイズ */ - blkcnt_t st_blocks; /* 割り当てられた 512B のブロック数 */ -}; - - /* Linux 2.6 以降では、カーネルは以下のタイムスタンプ - フィールドでナノ秒の精度をサポートしている。 - Linux 2.6 より前のバージョンでの詳細は - 下記の「注意」を参照。 */ - - struct timespec st_atim; /* 最終アクセス時刻 */ - struct timespec st_mtim; /* 最終修正時刻 */ - struct timespec st_ctim; /* 最終状態変更時刻 */ - -#define st_atime st_atim.tv_sec /* 後方互換性 */ -#define st_mtime st_mtim.tv_sec -#define st_ctime st_ctim.tv_sec -}; -.fi -.in - -\fI注意:\fP \fIstat\fP 構造体のフィールドの順序はアーキテクチャーにより様々である。 -また、上記の定義では、フィールド間に存在することがあるパディングバイトは書かれていない。このパディングバイトはアーキテクチャーによっても異なる。詳細を知る必要がある場合は -glibc とカーネルのソースを調べてほしい。 - -\fIst_dev\fP フィールドは、このファイルが存在するデバイスを示す (マクロ \fBmajor\fP(3), \fBminor\fP(3) -は、このフィールドのデバイス ID を分解するのに役立つだろう)。 - -\fIst_rdev\fP フィールドは、このファイル (inode) が表すデバイスを示す。 - -\fIst_size\fP フィールドは、(通常のファイルかシンボリックリンクの場合に) -ファイルの大きさをバイト単位で示す。 シンボリックリンクの大きさは、 -シンボリックリンクに含まれている パス名の長さ (終端のヌルバイトは含まない) -である。 - -\fIst_blocks\fP フィールドは、ファイルの大きさを 512 バイトのブロックサイズ単位で示す フィールドは、ファイルに割り当てされたブロック数を -512 バイト単位で示す。 (ファイルに穴があるような場合、この値は \fIst_size\fP/512 より小さくなることもある)。 - -\fIst_blksize\fP フィールドは、効率的にファイルシステム I/O ができる「好ましい」 ブロックサイズを示す -(もっと小さい単位でファイルに書き込みを行うと、 読み出し\-\-修正\-\-再書き込みといった非効率な動作になってしまうかもしれない)。 -.PP -全ての Linux のファイルシステムが全ての時間フィールドを 実装しているわけではない。 ファイルやディレクトリのアクセスが \fIst_atime\fP -フィールドを更新しないようなかたちでマウントできるファイルシステムもある。 (\fBmount\fP(8) の \fInoatime\fP, -\fInodiratime\fP, \fIrelatime\fP や \fBmount\fP(2) の関連する情報を参照)。 また、ファイルが \fBO_NOATIME\fP -付きでオープンされている場合には \fIst_atime\fP は更新されない。 \fBopen\fP(2) 参照。 - -\fIst_atime\fP フィールドはファイルアクセスがあった場合に変更される (例えば、 \fBexecve\fP(2), \fBmknod\fP(2), -\fBpipe\fP(2), \fButime\fP(2) を使用した場合や \fBread\fP(2) で 1 バイト以上読み込んだ場合など)。 -\fBmmap\fP(2) などの他のルーチンでは、 \fIst_atime\fP は更新されることもあれば、そうでない場合もある。 - -\fIst_mtime\fP フィールドは、ファイルが修正された場合に変更される (例えば、 \fBmknod\fP(2), \fBtruncate\fP(2), -\fButime\fP(2) を使用した場合や \fBwrite\fP(2) で 1 バイト以上書き込みをした場合など)。 さらに、ディレクトリの -\fIst_mtime\fP は、そのディレクトリで ファイルが作成されたり削除されたりすると変更される。 \fIst_mtime\fP フィールドは -所有者やグループやハードリンク数やモードの変更では変更 \fIされない。\fP - -\fIst_ctime\fP フィールドは書き込みや inode 情報 (所有者、グループ、リンク数、モードなど) の 設定によって変更される。 -.PP -以下のマスク値が \fIst_mode\fP フィールドのファイル種別の検査用に定義されている。 -.in +4n -.TS -lB l l. -S_IFMT 0170000 ファイル種別を示すビット領域を表すビットマスク - -S_IFSOCK 0140000 ソケット -S_IFLNK 0120000 シンボリックリンク -S_IFREG 0100000 通常のファイル -S_IFBLK 0060000 ブロックデバイス -S_IFDIR 0040000 ディレクトリ -S_IFCHR 0020000 キャラクターデバイス -S_IFIFO 0010000 FIFO -.TE -.in -.PP -したがって、(例えば) 通常のファイルかどうかを検査するには、以下のようにすればよい。 - -.nf -.in +4n -stat(pathname, &sb); -if ((sb.st_mode & S_IFMT) == S_IFREG) { - /* Handle regular file */ -} -.in -.fi -.PP -上記の形の検査はよくあるので、 POSIX では以下のマクロが定義されており、 \fIst_mode\fP -のファイル種別の検査をより簡単に書けるようになっている。 -.RS 4 -.TP 1.2i -\fBS_ISREG\fP(m) -通常のファイルか? -.TP -\fBS_ISDIR\fP(m) -ディレクトリか? -.TP -\fBS_ISCHR\fP(m) -キャラクターデバイスか? -.TP -\fBS_ISBLK\fP(m) -ブロックデバイスか? -.TP -\fBS_ISFIFO\fP(m) -FIFO (名前付きパイプ) か? -.TP -\fBS_ISLNK\fP(m) -シンボリックリンクか? (POSIX.1\-1996 にはない) -.TP -\fBS_ISSOCK\fP(m) -ソケットか? (POSIX.1\-1996 にはない) -.RE -.PP -上で挙げたコードは以下のように書き換えることができる。 - -.nf -.in +4n -stat(pathname, &sb); -if (S_ISREG(sb.st_mode)) { - /* Handle regular file */ -} -.in -.fi -.PP -上記のほとんどのファイル種別検査マクロの定義は、 機能検査マクロ \fB_BSD_SOURCE\fP (glibc 2.19 以前の場合)、 -\fB_SVID_SOURCE\fP (glibc 2.19 以前の場合)、 \fB_DEFAULT_SOURCE\fP (glibc 2.20 以降の場合) -のいずれかが定義されている場合に公開される。 さらに、 \fBS_IFSOCK\fP と \fBS_ISSOCK\fP 以外の上記のすべてのマクロの定義は -\fB_XOPEN_SOURCE\fP が定義されている場合にも公開される。 \fBS_IFSOCK\fP の定義は \fB_XOPEN_SOURCE\fP が値 500 -以上で定義された場合にも公開される。 - -\fBS_ISSOCK\fP() の定義が公開されるのは以下の機能検査マクロが定義されている場合である: \fB_BSD_SOURCE\fP (glibc 2.19 -以前の場合)、 \fB_DEFAULT_SOURCE\fP (glibc 2.20 以降の場合)、 値 500 以上の \fB_XOPEN_SOURCE\fP、 -値が 200112L 以上の \fB_POSIX_C_SOURCE\fP。 -.PP -以下のマスク値が \fIst_mode\fP フィールドのファイルのアクセス許可の検査用に定義されている。 -.in +4n -.TS -lB l l. -S_ISUID 0004000 set\-user\-ID bit -S_ISGID 0002000 set\-group\-ID bit (下記参照) -S_ISVTX 0001000 スティッキービット (下記参照) - -S_IRWXU 00700 ファイル所有者のアクセス許可用のビットマスク -S_IRUSR 00400 所有者の読み込み許可 -S_IWUSR 00200 所有者の書き込み許可 -S_IXUSR 00100 所有者の実行許可 - -S_IRWXG 00070 グループのアクセス許可用のビットマスク -S_IRGRP 00040 グループの読み込み許可 -S_IWGRP 00020 グループの書き込み許可 -S_IXGRP 00010 グループの実行許可 - -S_IRWXO 00007 T{ -他人 (others) のアクセス許可用のビットマスク -T} -S_IROTH 00004 他人の読み込み許可 -S_IWOTH 00002 他人の書き込み許可 -S_IXOTH 00001 他人の実行許可 -.TE -.in -.P -set\-group\-ID bit (\fBS_ISGID\fP) にはいくつかの特殊な使用法がある: ディレクトリに設定した場合には、そのディレクトリが -BSD 方式で使用される ことを示す。つまり、そのディレクトリに作成されたファイルのグループID は 作成したプロセスの実効 (effective) -グループID ではなく、ディレクトリの グループID を継承する。また、そのディレクトリに作成されたディレクトリにも \fBS_ISGID\fP -ビットが設定される。グループ実行ビット (\fBS_IXGRP\fP) が設定されていないファイルに設定された場合は、 set\-group\-ID -ビットはファイル/レコードの 強制的な (mandatory) ロックを表す。 -.P -.\" -.\" -ディレクトリにスティッキービット (S_ISVTX) が設定された場合は、 そのディレクトリのファイルの名前を変更したり、削除したりできるのは、 -そのファイルの所有者か、そのディレクトリの所有者か、特権プロセス だけとなる。 -.SS fstatat() -\fBfstatat\fP() システムコールは \fBstat\fP() と全く同様に動作するが、以下で説明する点が異なる。 - -指定された \fIpathname\fP が相対パスの場合、 ファイルディスクリプター \fIdirfd\fP が参照するディレクトリに対する相対パスと解釈される -(\fBstat\fP() に相対パスを渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。 - -\fIpathname\fP が相対パスで、 \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBstat\fP(2) と同様に) -\fIpathname\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 - -\fIpathname\fP で指定されたパス名が絶対パスの場合、 \fIdirfd\fP は無視される。 - -この \fIflags\fP 引き数は下記のフラグの 0 個以上の論理和を取ったものである: -.TP -\fBAT_EMPTY_PATH\fP (Linux 2.6.39 以降) -.\" commit 65cfc6722361570bfe255698d9cd4dccaf47570d -.\" Before glibc 2.16, defining _ATFILE_SOURCE sufficed -\fIpathname\fP が空文字列の場合、 \fIdirfd\fP が参照するファイルに対して操作を行う (\fIdirfd\fP は \fBopen\fP(2) の -\fBO_PATH\fP フラグを使って取得できる)。 \fBdirfd\fP が \fBAT_FDCWD\fP -の場合、呼び出しはカレントワーキングディレクトリに対して操作を行う。 この場合、 \fIdirfd\fP -は、ディレクトリだけでなく、任意のタイプのファイルを参照することができる。 このフラグは Linux 固有であり、その定義を得るには -\fB_GNU_SOURCE\fP を定義すること。 -.TP -\fBAT_NO_AUTOMOUNT\fP (Linux 2.6.38 以降) -.\" Before glibc 2.16, defining _ATFILE_SOURCE sufficed -\fIpathname\fP がオートマウントポイントとなっているディレクトリの場合、 \fIpathname\fP の最終 ("basename") -要素のオートマウントを行わない。 これにより (マウントされるはずの場所ではなく) オートマウントポイントの属性を取得することができる。 -このフラグを使うと、 ディレクトリをスキャンするツールがオートマウントポイントのディレクトリを大量にオートマウントしてしまうのを防ぐことができる。 -マウントポイントがすでにマウントされている場合 \fBAT_NO_AUTOMOUNT\fP フラグは何の効果もない。 このフラグは Linux -固有であり、その定義を得るには \fB_GNU_SOURCE\fP を定義すること。 -.TP -\fBAT_SYMLINK_NOFOLLOW\fP -(\fBlstat\fP() 同様) \fIpathname\fP がシンボリックリンクの場合リンクの展開を行わず、 リンク自身の情報を返す (デフォルトでは、 -\fBfstatat\fP() は、 \fBstat\fP() と同様に、シンボリックリンクの展開を行う)。 -.PP -\fBfstatat\fP() の必要性についての説明については \fBopenat\fP(2) を参照。 -.SH 返り値 -成功した場合、0 が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。 -.SH エラー -.TP -\fBEACCES\fP -\fIpathname\fP が所属するディレクトリとその上位のディレクトリのいずれかに 対する検索許可がなかった -(\fBpath_resolution\fP(7) も参照のこと)。 -.TP -\fBEBADF\fP -\fIfd\fP が不正である。 -.TP -\fBEFAULT\fP -アドレスが間違っている。 -.TP -\fBELOOP\fP -パスを辿る際に解決すべきシンボリックリンクが多過ぎた。 -.TP -\fBENAMETOOLONG\fP -\fIpathname\fP が長過ぎる。 -.TP -\fBENOENT\fP -\fIpathname\fP の構成要素が存在しないか、 \fIpathname\fP が空文字列である。 -.TP -\fBENOMEM\fP -カーネルのメモリーが足りない。 -.TP -\fBENOTDIR\fP -\fIpathname\fP の前半部分 (prefix) の構成要素がディレクトリではない。 -.TP -\fBEOVERFLOW\fP -\fIpathname\fP または \fIfd\fP が、ファイルサイズ、inode 番号、ブロック数が -それぞれ \fIoff_t\fP 型、 \fIino_t\fP 型、 \fIblkcnt_t\fP 型で表現できないファイルを -参照している。このエラーが起こるのは、例えば、32 ビットプラットフォーム上で -\fI\-D_FILE_OFFSET_BITS=64\fP を指定せずにコンパイルされたアプリケーションが、 -ファイルサイズが \fI(1<<31)\-1\fP バイトを超えるファイルに対して -\fBstat\fP() を呼び出した場合である。 -.PP -\fBfstatat\fP() では以下のエラーも発生することがある。 -.TP -\fBEBADF\fP -\fIdirfd\fP が有効なファイルディスクリプターでない。 -.TP -\fBEINVAL\fP -\fIflags\fP に無効なフラグが指定された。 -.TP -\fBENOTDIR\fP -\fIpathname\fP が相対パスで、 \fIdirfd\fP がディレクトリ以外のファイルを参照しているファイルディスクリプターである。 -.SH バージョン -\fBfstatat\fP() はカーネル 2.6.16 で Linux に追加された。 ライブラリによるサポートはバージョン 2.4 で glibc -に追加された。 -.SH 準拠 -.\" SVr4 documents additional -.\" .BR fstat () -.\" error conditions EINTR, ENOLINK, and EOVERFLOW. SVr4 -.\" documents additional -.\" .BR stat () -.\" and -.\" .BR lstat () -.\" error conditions EINTR, EMULTIHOP, ENOLINK, and EOVERFLOW. -\fBstat\fP(), \fBfstat\fP(), \fBlstat\fP(): SVr4, 4.3BSD, POSIX.1\-2001, POSIX.1.2008. - -\fBfstatat\fP(): POSIX.1\-2008. - -POSIX.1\-2001 では、シンボリックリンクに対する \fBlstat\fP() で -有効な情報を返すように求められていたのは、 \fIstat\fP 構造体の \fIst_size\fP -と \fIst_mode\fP のファイル種別要素だけであった。 -POSIX.1\-2008 では規定が厳しくなり、 \fBlstat\fP() は \fIst_mode\fP の -アクセス許可ビット以外の全てのフィールドに有効な情報を返すことが -求められるようになっている。 - -\fIst_blocks\fP と \fIst_blksize\fP フィールドの使用はあまり移植性がない -(これらのフィールドは BSD によって導入された。 システムごとに解釈が -異なっており、 NFS マウントの場合には同じシステムでも異なる可能性がある)。 -\fI\fP から \fIblkcnt_t\fP の \fIblksize_t\fP 型定義を -読み込みたい場合は、(\fIどの\fPヘッダーファイルをインクルードするよりも前に) -\fB_XOPEN_SOURCE\fP を 500 以上の値で定義すること。 -.LP -POSIX.1\-1990 には \fBS_IFMT\fP, \fBS_IFSOCK\fP, \fBS_IFLNK\fP, \fBS_IFREG\fP, -\fBS_IFBLK\fP, \fBS_IFDIR\fP, \fBS_IFCHR\fP, \fBS_IFIFO\fP, \fBS_ISVTX\fP 定数に関する -記述はなかったが、代わりに \fBS_ISDIR\fP() のようなマクロを使用するように -要求していた。 \fBS_IF*\fP 定数は POSIX.1\-2001 以降には存在する。 - -マクロ \fBS_ISLNK\fP() と \fBS_ISSOCK\fP() は POSIX.1\-1996 にはないが、 -POSIX.1\-2001 には両方とも存在する。 前者は SVID 4 に、後者は SUSv2 に -由来している。 -.LP -UNIX\ V7 (とその後のシステム) は \fBS_IREAD\fP, \fBS_IWRITE\fP, \fBS_IEXEC\fP を持っており、 -POSIX はその同義語として \fBS_IRUSR\fP, \fBS_IWUSR\fP, \fBS_IXUSR\fP を規定している。 -.SS 他のシステム -各種システムで使用されていた(いる)値: -.ad l -.TS -l l l l l. -16進 名前 ls 8進 説明 -f000 S_IFMT 170000 ファイル種別フィールドのビットマスク -0000 000000 T{ -SCO では 使用不能 inode; BSD では不明なファイル種別; -SVID\-v2 と XPG2 では 0 と 0100000 の両方が通常のファイル -T} -1000 S_IFIFO p| 010000 FIFO (名前付きパイプ) -2000 S_IFCHR c 020000 キャラクター特殊ファイル (V7) -3000 S_IFMPC 030000 多重化されたキャラクター特殊ファイル (V7) -4000 S_IFDIR d/ 040000 ディレクトリ (V7) -5000 S_IFNAM 050000 T{ -XENIX の二つの副型を持つ名前付きの特殊ファイル; -副型は \fIst_rdev\fP の値 1, 2 で区別される -T} -0001 S_INSEM s 000001 XENIX の IFNAM セマフォ副型 -0002 S_INSHD m 000002 XENIX の IFNAM 共有データ副型 -6000 S_IFBLK b 060000 ブロック特殊ファイル (V7) -7000 S_IFMPB 070000 多重化されたブロック特殊ファイル (V7) -8000 S_IFREG \- 100000 通常ファイル (V7) -9000 S_IFCMP 110000 VxFS 圧縮ファイル -9000 S_IFNWK n 110000 ネットワーク特殊ファイル (HP\-UX) -a000 S_IFLNK l@ 120000 シンボリックリンク (BSD) -b000 S_IFSHAD 130000 T{ -Solaris の ACL 用の隠し inode (ユーザー空間からは見えない) -T} -c000 S_IFSOCK s= 140000 ソケット (BSD; VxFS の "S_IFSOC") -d000 S_IFDOOR D> 150000 Solaris の door ファイル -e000 S_IFWHT w% 160000 BSD の空白ファイル (inode を使用しない) -0200 S_ISVTX 001000 T{ -スティッキービット: 使用後もスワップに残す (V7) -.br -予約 (SVID\-v2) -.br -ディレクトリ以外: ファイルをキャッシュしない (SunOS) -.br -ディレクトリの場合: 削除制限フラグ (SVID\-v4.2) -T} -0400 S_ISGID 002000 T{ -実行時の set\-group\-ID (V7) -.br -ディレクトリの場合: GID の伝搬に BSD 方式を使用する -T} -0400 S_ENFMT 002000 T{ -System V ファイルロックを強制する (S_ISGID と共有) -T} -0800 S_ISUID 004000 実行時の set\-user\-ID (V7) -0800 S_CDF 004000 T{ -ディレクトリがコンテキスト依存ファイル (HP\-UX) -T} -.TE -.ad - -スティッキー コマンドは Version 32V AT&T UNIX で登場した。 -.SH 注意 -Linux では、 \fBlstat\fP() は一般には自動マウント動作 (automounter action) の -きっかけとならないが、 \fBstat\fP() はきっかけとなる (\fBfstatat\fP(2) を参照)。 - -\fI/proc\fP ディレクトリ以下にあるファイルのほとんどでは、 \fBstat\fP() を呼び出した際に、 \fIst_size\fP -フィールドにファイルサイズが返されない。 代わりに \fIst_size\fP フィールドには 0 が返される。 -.SS タイムスタンプフィールド -古いカーネルや古い標準では、ナノ秒精度のタイムスタンプフィールドはサポートされていなかった。 代わりに 3 つの \fItime_t\fP -型のタイムスタンプフィールド \fIst_atime\fP, \fIst_mtime\fP, and \fIst_ctime\fP があった。これらのフィールドには 1 -秒単位のタイムスタンプが記録されていた。 - -カーネル 2.5.48 以降では、 \fIstat\fP 構造体は 3 つのファイルのタイムスタンプ関連のフィールドでナノ秒単位の精度に対応している。 -機能検査マクロ \fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP が定義された場合に、各タイムスタンプのナノ秒の情報は -\fIst_atim.tv_nsec\fP という形式の名前で参照できる。 ナノ秒のタイムスタンプは現在では標準化されており、 POSIX.1\-2008 -からである。 バージョン 2.12 以降の glibc では、 \fB_POSIX_C_SOURCE\fP が 200809L 以上の値で定義されるか、 -\fB_XOPEN_SOURCE\fP が 700 以上の値で定義された場合にも、 このナノ秒のタイムスタンプが公開される。 -上記のマクロのいずれも定義されていない場合、ナノ秒の値は \fIst_atimensec\fP という形式の名前で公開される。 - -.\" commit ef7f38359ea8b3e9c7f2cae9a4d4935f55ca9e80 -ナノ秒のタイムスタンプは XFS, JFS, Btrfs, ext4 でサポートされている (Linux 2.6.23 以降)。 -ナノ秒のタイムスタンプは ext2, ext3, Reiserfs ではサポートされていない。 -サブ秒のタイムスタンプをサポートしていないファイルシステムでは、 ナノ秒のフィールドには値 0 が入る。 -.SS 背後のカーネルインターフェース -.\" -.\" A note from Andries Brouwer, July 2007 -.\" -.\" > Is the story not rather more complicated for some calls like -.\" > stat(2)? -.\" -.\" Yes and no, mostly no. See /usr/include/sys/stat.h . -.\" -.\" The idea is here not so much that syscalls change, but that -.\" the definitions of struct stat and of the types dev_t and mode_t change. -.\" This means that libc (even if it does not call the kernel -.\" but only calls some internal function) must know what the -.\" format of dev_t or of struct stat is. -.\" The communication between the application and libc goes via -.\" the include file that defines a _STAT_VER and -.\" _MKNOD_VER describing the layout of the data that user space -.\" uses. Each (almost each) occurrence of stat() is replaced by -.\" an occurrence of xstat() where the first parameter of xstat() -.\" is this version number _STAT_VER. -.\" -.\" Now, also the definitions used by the kernel change. -.\" But glibc copes with this in the standard way, and the -.\" struct stat as returned by the kernel is repacked into -.\" the struct stat as expected by the application. -.\" Thus, _STAT_VER and this setup cater for the application-libc -.\" interface, rather than the libc-kernel interface. -.\" -.\" (Note that the details depend on gcc being used as c compiler.) -時間の経過とともに、 \fIstat\fP 構造体のサイズが大きくなり、この影響で \fBstat\fP() には 3つのバージョンが存在する: -\fIsys_stat\fP() (スロットは \fI__NR_oldstat\fP)、 \fIsys_newstat\fP() (スロットは -\fI__NR_stat\fP)、 \fIsys_stat64\fP() (カーネル 2.4 で導入; スロットは \fI__NR_stat64\fP). glibc -の \fBstat\fP() ラッパー関数はこれらの詳細をアプリケーションから隠蔽してくれる。 -具体的には、カーネルが提供しているシステムコールのうち最新のバージョンを 起動し、古いバイナリの場合には必要に応じて返された情報を再構成 -(repack) する。 \fBfstat\fP() と \fBlstat\fP() についても同様である。 - -glibc の \fBfstatat\fP() ラッパー関数が内部で利用するシステムコールは、実際には \fBfstatat64\fP() である。 -.SH 例 -以下のプログラムは \fBstat\fP() を呼び出し、返ってきた \fIstat\fP 構造体のフィールドのいくつかを表示する。 -.nf - -#include -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - struct stat sb; - - if (argc != 2) { - fprintf(stderr, "Usage: %s \en", argv[0]); - exit(EXIT_FAILURE); - } - - if (stat(argv[1], &sb) == \-1) { - perror("stat"); - exit(EXIT_FAILURE); - } - - printf("File type: "); - - switch (sb.st_mode & S_IFMT) { - case S_IFBLK: printf("block device\en"); break; - case S_IFCHR: printf("character device\en"); break; - case S_IFDIR: printf("directory\en"); break; - case S_IFIFO: printf("FIFO/pipe\en"); break; - case S_IFLNK: printf("symlink\en"); break; - case S_IFREG: printf("regular file\en"); break; - case S_IFSOCK: printf("socket\en"); break; - default: printf("unknown?\en"); break; - } - - printf("I\-node number: %ld\en", (long) sb.st_ino); - - printf("Mode: %lo (octal)\en", - (unsigned long) sb.st_mode); - - printf("Link count: %ld\en", (long) sb.st_nlink); - printf("Ownership: UID=%ld GID=%ld\en", - (long) sb.st_uid, (long) sb.st_gid); - - printf("Preferred I/O block size: %ld bytes\en", - (long) sb.st_blksize); - printf("File size: %lld bytes\en", - (long long) sb.st_size); - printf("Blocks allocated: %lld\en", - (long long) sb.st_blocks); - - printf("Last status change: %s", ctime(&sb.st_ctime)); - printf("Last file access: %s", ctime(&sb.st_atime)); - printf("Last file modification: %s", ctime(&sb.st_mtime)); - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBls\fP(1), \fBstat\fP(1), \fBaccess\fP(2), \fBchmod\fP(2), \fBchown\fP(2), -\fBreadlink\fP(2), \fButime\fP(2), \fBcapabilities\fP(7), \fBsymlink\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/statfs.2 b/manual/LDP_man-pages/draft/man2/statfs.2 deleted file mode 100644 index 2b7a1b6a..00000000 --- a/manual/LDP_man-pages/draft/man2/statfs.2 +++ /dev/null @@ -1,247 +0,0 @@ -.\" Copyright (C) 2003 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 -.\" -.\" Modified 2003-08-17 by Walter Harms -.\" Modified 2004-06-23 by Michael Kerrisk -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Fri Dec 12 00:25:54 JST 1997 -.\" by HANATAKA Shinya -.\" Updated & Modified Sat Jun 2 20:25:46 JST 2001 -.\" by Yuichi SATO -.\" Updated & Modified Sat Jan 18 16:48:08 JST 2003 -.\" by Yuichi SATO -.\" Updated & Modified Sun Sep 7 00:52:44 JST 2003 by Yuichi SATO -.\" Updated & Modified Sun Jan 9 22:35:28 JST 2005 by Yuichi SATO -.\" Updated 2006-07-21, Akihiro MOTOKI , LDP v2.36 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH STATFS 2 2014\-06\-13 Linux "Linux Programmer's Manual" -.SH 名前 -statfs, fstatfs \- ファイルシステムの統計を取得する -.SH 書式 -\fB#include \fP/* または */ -.sp -\fBint statfs(const char *\fP\fIpath\fP\fB, struct statfs *\fP\fIbuf\fP\fB);\fP -.br -\fBint fstatfs(int \fP\fIfd\fP\fB, struct statfs *\fP\fIbuf\fP\fB);\fP -.SH 説明 -関数 \fBstatfs\fP() はマウントされたファイルシステムについての情報を返す。 \fIpath\fP -はマウントされたファイルシステムにあるファイルのパス名である。 \fIbuf\fP は \fIstatfs\fP -構造体へのポインターで、およそ以下のように定義される: - -.in +4n -.nf -#if __WORDSIZE == 32 /* システムのワードサイズ */ -# define __SWORD_TYPE int -#else /* __WORDSIZE == 64 */ -# define __SWORD_TYPE long int -#endif - -struct statfs { - __SWORD_TYPE f_type; /* ファイルシステムの種別 (下記参照) */ - __SWORD_TYPE f_bsize; /* 最適な転送ブロックサイズ */ - fsblkcnt_t f_blocks; /* ファイルシステムの総データブロック数 */ - fsblkcnt_t f_bfree; /* ファイルシステムの空きブロック数 */ - fsblkcnt_t f_bavail; /* 非特権ユーザーが利用可能な空きブロック数 */ - fsfilcnt_t f_files; /* ファイルシステムの総ファイルノード数 */ - fsfilcnt_t f_ffree; /* ファイルシステムの空きファイルノード数 */ - fsid_t f_fsid; /* ファイルシステムの ID */ - __SWORD_TYPE f_namelen; /* ファイル名の最大長 */ - __SWORD_TYPE f_frsize; /* フラグメントサイズ (Linux 2.6 以降) */ - __SWORD_TYPE f_spare[5]; -}; - -ファイルシステムの型: - - ADFS_SUPER_MAGIC 0xadf5 - AFFS_SUPER_MAGIC 0xADFF - BDEVFS_MAGIC 0x62646576 - BEFS_SUPER_MAGIC 0x42465331 - BFS_MAGIC 0x1BADFACE - BINFMTFS_MAGIC 0x42494e4d - BTRFS_SUPER_MAGIC 0x9123683E - CGROUP_SUPER_MAGIC 0x27e0eb - CIFS_MAGIC_NUMBER 0xFF534D42 - CODA_SUPER_MAGIC 0x73757245 - COH_SUPER_MAGIC 0x012FF7B7 - CRAMFS_MAGIC 0x28cd3d45 - DEBUGFS_MAGIC 0x64626720 - DEVFS_SUPER_MAGIC 0x1373 - DEVPTS_SUPER_MAGIC 0x1cd1 - EFIVARFS_MAGIC 0xde5e81e4 - EFS_SUPER_MAGIC 0x00414A53 - EXT_SUPER_MAGIC 0x137D - EXT2_OLD_SUPER_MAGIC 0xEF51 - EXT2_SUPER_MAGIC 0xEF53 - EXT3_SUPER_MAGIC 0xEF53 - EXT4_SUPER_MAGIC 0xEF53 - FUSE_SUPER_MAGIC 0x65735546 - FUTEXFS_SUPER_MAGIC 0xBAD1DEA - HFS_SUPER_MAGIC 0x4244 - HOSTFS_SUPER_MAGIC 0x00c0ffee - HPFS_SUPER_MAGIC 0xF995E849 - HUGETLBFS_MAGIC 0x958458f6 - ISOFS_SUPER_MAGIC 0x9660 - JFFS2_SUPER_MAGIC 0x72b6 - JFS_SUPER_MAGIC 0x3153464a - MINIX_SUPER_MAGIC 0x137F /* オリジナルの minix */ - MINIX_SUPER_MAGIC2 0x138F /* 30 文字ファイル名の minix */ - MINIX2_SUPER_MAGIC 0x2468 /* minix V2 */ - MINIX2_SUPER_MAGIC2 0x2478 /* minix V2, 30 文字ファイル名 */ - MINIX3_SUPER_MAGIC 0x4d5a /* minix V3 ファイルシステム, 60 文字ファイル名 */ - MQUEUE_MAGIC 0x19800202 - MSDOS_SUPER_MAGIC 0x4d44 - NCP_SUPER_MAGIC 0x564c - NFS_SUPER_MAGIC 0x6969 - NILFS_SUPER_MAGIC 0x3434 - NTFS_SB_MAGIC 0x5346544e - OPENPROM_SUPER_MAGIC 0x9fa1 - PIPEFS_MAGIC 0x50495045 - PROC_SUPER_MAGIC 0x9fa0 - PSTOREFS_MAGIC 0x6165676C - QNX4_SUPER_MAGIC 0x002f - QNX6_SUPER_MAGIC 0x68191122 - RAMFS_MAGIC 0x858458f6 - REISERFS_SUPER_MAGIC 0x52654973 - ROMFS_MAGIC 0x7275 - SELINUX_MAGIC 0xf97cff8c - SMACK_MAGIC 0x43415d53 - SMB_SUPER_MAGIC 0x517B - SOCKFS_MAGIC 0x534F434B - SQUASHFS_MAGIC 0x73717368 - SYSFS_MAGIC 0x62656572 - SYSV2_SUPER_MAGIC 0x012FF7B6 - SYSV4_SUPER_MAGIC 0x012FF7B5 - TMPFS_MAGIC 0x01021994 - UDF_SUPER_MAGIC 0x15013346 - UFS_MAGIC 0x00011954 - USBDEVICE_SUPER_MAGIC 0x9fa2 - V9FS_MAGIC 0x01021997 - VXFS_SUPER_MAGIC 0xa501FCF5 - XENFS_SUPER_MAGIC 0xabba1974 - XENIX_SUPER_MAGIC 0x012FF7B4 - XFS_SUPER_MAGIC 0x58465342 - _XIAFS_SUPER_MAGIC 0x012FD16D -.fi -.in -.PP -これらの MAGIC 定数のほとんどは \fI/usr/include/linux/magic.h\fP -で定義されており、いくつかはカーネルソースで直接書かれている。 -.PP -\fIf_fsid\fP にどんな値が入るべきなのかは誰も知らない (但し、下記を参照)。 -.PP -それぞれのファイルシステムにおいて未定義のフィールドには 0 が 設定される。 \fBfstatfs\fP() はディスクリプター \fIfd\fP -によって参照されるオープンされたファイルについて、同じ情報を返す。 -.SH 返り値 -成功した場合、0 が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。 -.SH エラー -.TP -\fBEACCES\fP -(\fBstatfs\fP() の場合) \fIpath\fP のディレクトリ部分に検索許可が与えられていない (\fBpath_resolution\fP(7) -も参照すること)。 -.TP -\fBEBADF\fP -(\fBfstatfs\fP() の場合) \fIfd\fP は有効なオープンされたファイルディスクリプターではない。 -.TP -\fBEFAULT\fP -\fIbuf\fP または \fIpath\fP が不正なアドレスを指している。 -.TP -\fBEINTR\fP -この呼び出しがシグナルで中断された。 -.TP -\fBEIO\fP -ファイルシステムからの読み込みの間に I/O エラーが発生した。 -.TP -\fBELOOP\fP -(\fBstatfs\fP() の場合) \fIpath\fP を解決するのに辿るべきシンボリックリンクが多すぎる。 -.TP -\fBENAMETOOLONG\fP -(\fBstatfs\fP() の場合) \fIpath\fP が長過ぎる。 -.TP -\fBENOENT\fP -(\fBstatfs\fP() の場合) \fIpath\fP によって参照されるファイルが存在しない。 -.TP -\fBENOMEM\fP -十分なカーネルメモリーがない。 -.TP -\fBENOSYS\fP -ファイルシステムがこの呼び出しをサポートしていない。 -.TP -\fBENOTDIR\fP -(\fBstatfs\fP() の場合) \fIpath\fP のディレクトリ部分がディレクトリでない。 -.TP -\fBEOVERFLOW\fP -いくつかの値が大き過ぎて、返り値の構造体で表現できない。 -.SH 準拠 -Linux 固有である。 Linux の \fBstatfs\fP() は 4.4BSD のものに影響を受けている。 -(しかし同じ構造体を使用しているわけではない) -.SH 注意 -元々の Linux の \fBstatfs\fP() と \fBfstatfs\fP() システムコールは -非常に大きなファイルサイズを念頭に入れて設計されていなかった。 -その後、Linux 2.6 で、新しい構造体 \fIstatfs64\fP を使用する -新しいシステムコール \fBstatfs64\fP() と \fBfstatfs64\fP() が追加された。 -新しい構造体は元の \fIstatfs\fP 構造体と同じフィールドを持つが、 -いろいろなフィールドのサイズが大きなファイルサイズに対応できるように -増やされている。 glibc の \fBstatfs\fP() と \fBfstatfs\fP() のラッパー関数は -カーネルによるこれらの違いを吸収している。 - -\fI\fP しか持たないシステムもあり、 \fI\fP -も持っているシステムもある。 前者は後者をインクルードするので、 前者をインクルードするのが良いと考えられる。 - -LSB ではライブラリコール \fBstatfs\fP(), \fBfstatfs\fP() を非推奨として、代わりに \fBstatvfs\fP(2), -\fBfstatvfs\fP(2) を使うように指示している。 -.SS "f_fsid フィールド" -Solaris, Irix, POSIX にはシステムコール \fBstatvfs\fP(2) があり、 \fIstruct statvfs\fP を返す -(\fI\fP で定義されている)。 この構造体には、 \fIunsigned long\fP \fIf_fsid\fP -が含まれている。 Linux, SunOS, HP\-UX, 4.4BSD にはシステムコール \fBstatfs\fP() があり、 \fIstruct -statfs\fP を返す (\fI\fP で定義されている)。 この構造体には \fIfsid_t\fP \fIf_fsid\fP, -が含まれており、 \fIfsid_t\fP は \fIstruct { int val[2]; }\fP と定義されている。 FreeBSD -でも同じであるが、インクルードファイル \fI\fP を使う。 - -\fIf_fsid\fP はあるランダムな値を持ち、 (\fIf_fsid\fP,\fIino\fP) という 1 組の値でファイルを一意に決定できるようにする、 -というのが基本的な考え方である。 いくつかの OS では、デバイス番号 (の変種) を使ったり、 -デバイス番号とファイルシステムタイプを組み合わせて使ったりしている。 OS の中には \fIf_fsid\fP -フィールドの取得をスーパーユーザーに限定しているものもある (非特権ユーザーが取得すると 0 となる)。 NFS でエクスポートされる場合、 -このフィールドがファイルシステムのファイルハンドルで使われており、 この値を提供するとセキュリティ上の問題がある。 -.LP -いくつかの OS では、 \fIfsid\fP を \fBsysfs\fP(2) システムコールの第 2 引き数として使用できる。 -.SH バグ -.\" broken in commit ff0c7d15f9787b7e8c601533c015295cc68329f8 -.\" fixed in commit d70ef97baf048412c395bb5d65791d8fe133a52b -Linux 2.6.38 から Linux 3.1 までは (3.1 を含む)、 \fBfstatfs\fP() は \fBpipe\fP(2) -で作成されたファイルディスクリプターに対してはエラー \fBENOSYS\fP で失敗していた。 -.SH 関連項目 -\fBstat\fP(2), \fBstatvfs\fP(2), \fBpath_resolution\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/stime.2 b/manual/LDP_man-pages/draft/man2/stime.2 index b34af6c5..c199b242 100644 --- a/manual/LDP_man-pages/draft/man2/stime.2 +++ b/manual/LDP_man-pages/draft/man2/stime.2 @@ -40,20 +40,26 @@ .\" Updated 2003-09-08, Kentaro Shirakata .\" Updated 2005-02-24, Akihiro MOTOKI .\" -.TH STIME 2 2014\-05\-10 Linux "Linux Programmer's Manual" +.TH STIME 2 2020\-02\-09 Linux "Linux Programmer's Manual" .SH 名前 stime \- 時間を設定する .SH 書式 \fB#include \fP -.sp +.PP \fBint stime(const time_t *\fP\fIt\fP\fB);\fP -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBstime\fP(): _SVID_SOURCE +.RE +.PP +\fBstime\fP(): + Since glibc 2.19: + _DEFAULT_SOURCE + Glibc 2.19 and earlier: + _SVID_SOURCE .SH 説明 +\fBNOTE\fP: This function is deprecated; use \fBclock_settime\fP(2) instead. +.PP \fBstime\fP() はシステムの時刻と日付を設定する。 \fIt\fP が指す時刻は、時刻紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC)) からの秒数で指定する。 スーパーユーザーのみが \fBstime\fP() を実行できる。 (訳注: 正確にはグリニッジ平均時(GMT)ではなく協定世界時(UTC)が使用される) @@ -68,9 +74,11 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 呼び出し元のプロセスが十分な権限を持っていない。 Linux では \fBCAP_SYS_TIME\fP 権限が必要である。 .SH 準拠 SVr4. +.SH 注意 +Starting with glibc 2.31, this function is no longer available to newly +linked applications and is no longer declared in \fI\fP. .SH 関連項目 \fBdate\fP(1), \fBsettimeofday\fP(2), \fBcapabilities\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/swapon.2 b/manual/LDP_man-pages/draft/man2/swapon.2 index 2df52fb6..d764c91a 100644 --- a/manual/LDP_man-pages/draft/man2/swapon.2 +++ b/manual/LDP_man-pages/draft/man2/swapon.2 @@ -56,14 +56,14 @@ .\" Updated 2007-09-04, Akihiro MOTOKI , LDP v2.64 .\" Updated 2012-04-30, Akihiro MOTOKI .\" -.TH SWAPON 2 2014\-05\-28 Linux "Linux Programmer's Manual" +.TH SWAPON 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 swapon, swapoff \- ファイル/デバイスへのスワップを開始/停止する .SH 書式 \fB#include \fP .br \fB#include \fP -.sp +.PP \fBint swapon(const char *\fP\fIpath\fP\fB, int \fP\fIswapflags\fP\fB);\fP .br \fBint swapoff(const char *\fP\fIpath\fP\fB);\fP @@ -74,10 +74,12 @@ swapon, swapoff \- ファイル/デバイスへのスワップを開始/停止 \fBswapon\fP() の \fIswapflags\fP 引き数に \fBSWAP_FLAG_PREFER\fP フラグが指定された場合、 新しいスワップ領域はデフォルトよりも高い優先度を持つ。 優先度は以下のように変換されて \fIswapflags\fP に指定する。 -.br -.sp +.PP +.in +4n +.EX \fI(prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK\fP -.br +.EE +.in .PP \fBSWAP_FLAG_DISCARD\fP フラグが \fBswapon\fP() の \fIswapflags\fP 引き数に指定された場合、 スワップデバイスが破棄 (discard) 操作や trim 操作をサポートしている場合には、 @@ -109,17 +111,17 @@ Linux 1.3.6 において、カーネルは通常はこれらの規則に従っ ファイル \fIpath\fP は存在するが、通常のファイルもブロックデバイスも参照していない。 .TP \fBEINVAL\fP -(\fBswapon\fP()) 指定されたパスが有効なスワップの署名 (signature) を含んでいないか、tmpfs -のようなインメモリーファイルシステム上にある。 +(\fBswapon\fP()) The indicated path does not contain a valid swap signature or +resides on an in\-memory filesystem such as \fBtmpfs\fP(5). .TP \fBEINVAL\fP (Linux 3.4 以降) -(\fBswapon\fP()) \fIflags\fP に無効なフラグ値が指定された。 +(\fBswapon\fP()) An invalid flag value was specified in \fIswapflags\fP. .TP \fBEINVAL\fP (\fBswapoff\fP()) \fIpath\fP が現在スワップ領域ではない。 .TP \fBENFILE\fP -オープンされたファイルの総数がシステム全体の上限に達していた。 +The system\-wide limit on the total number of open files has been reached. .TP \fBENOENT\fP ファイル \fIpath\fP が存在しない。 @@ -135,14 +137,14 @@ Linux 1.3.6 において、カーネルは通常はこれらの規則に従っ 1.3.2 から導入された。 .SH 注意 パーティションやパスは \fBmkswap\fP(8) によって準備されていなければならない。 - +.PP 使用できるスワップファイルの数には上限があり、その上限は カーネル定数 \fBMAX_SWAPFILES\fP で定義される。 \fBMAX_SWAPFILES\fP の値は、カーネル 2.4.10 より前では 8、 カーネル 2.4.10 以降では 32 である。 カーネル 2.6.18 以降では、カーネルが \fBCONFIG_MIGRATION\fP オプションを有効にして作成された場合、 この上限が 2 少ない値 (つまり 30) となる (このカーネルでは、 \fBmbind\fP(2) と \fBmigrate_pages\fP(2) のページマイグレーション機能用にスワップテーブルのエントリーが 二つ予約される)。 カーネル 2.6.32 以降では、カーネルが \fBCONFIG_MEMORY_FAILURE\fP オプションを有効にして作成された場合、 この上限がさらに 1 少ない値となる。 - +.PP .\" To be precise: 2.6.35.5 スワップページの破棄は、カーネル 2.6.29 で導入され、その後カーネル 2.6.36 で \fBSWAP_FLAG_DISCARD\fP フラグが指定された場合にだけ実行されるようになったが、 @@ -151,6 +153,5 @@ Linux 1.3.6 において、カーネルは通常はこれらの規則に従っ .SH 関連項目 \fBmkswap\fP(8), \fBswapoff\fP(8), \fBswapon\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 index 0aa44d85..234f9f25 100644 --- a/manual/LDP_man-pages/draft/man2/symlink.2 +++ b/manual/LDP_man-pages/draft/man2/symlink.2 @@ -44,38 +44,40 @@ .\" by Yuichi SATO .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH SYMLINK 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH SYMLINK 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 symlink, symlinkat \- ファイルに新しい名前を付ける .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint symlink(const char *\fP\fItarget\fP\fB, const char *\fP\fIlinkpath\fP\fB);\fP -.sp + \fB#include \fP/* AT_* 定数の定義 */ \fB#include \fP -.sp +.PP \fBint symlinkat(const char *\fP\fItarget\fP\fB, int \fP\fInewdirfd\fP\fB, const char *\fP\fIlinkpath\fP\fB);\fP -.sp +.PP .fi -.in -4n +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP .ad l \fBsymlink\fP(): .RS 4 -_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _POSIX_C_SOURCE\ >=\ 200112L +.\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +_XOPEN_SOURCE\ >=\ 500 || _POSIX_C_SOURCE\ >=\ 200112L + || /* Glibc versions <= 2.19: */ _BSD_SOURCE .RE -.sp +.PP \fBsymlinkat\fP(): .PD 0 .ad l .RS 4 .TP 4 glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L +_POSIX_C_SOURCE\ >=\ 200809L .TP glibc 2.10 より前: _ATFILE_SOURCE @@ -85,30 +87,30 @@ _ATFILE_SOURCE .SH 説明 \fBsymlink\fP() は \fItarget\fP という文字列をファイルの内容として持つ \fIlinkpath\fP というシンボリックリンク (symbolic link) を作成する。 - +.PP シンボリックリンクは実行時に解釈され、 リンクの内容でパスを置き換えて、そのパスを辿ることで、 ファイルやディレクトリに到達する。 - +.PP シンボリックリンクはパスの部分に \fI..\fP を含むかもしれない。これは (もしリンクの最初に使用された場合は) リンクの 存在するディレクトリの親ディレクトリが参照される。 - +.PP シンボリックリンクは (ソフトリンク (soft link) とも呼ばれ) 存在するファイルを指しているかもしれないし、 存在しないファイルを指しているかもしれない; 後者の場合は壊れたリンク (dangling link) とも呼ばれる。 - +.PP シンボリックリンクの許可 (permission) は無意味である; リンクを追跡する場合には所有権 (ownership) は無視される。 ただし、リンクの削除や名前の変更が要求され、かつリンクが存在する ディレクトリにスティッキービット (sticky bit) (\fBS_ISVTX\fP) が設定されている場合には、所有権のチェックが行われる。 - +.PP \fIlinkpath\fP が存在する場合には上書きは\fIされない\fP。 .SS symlinkat() \fBsymlinkat\fP() システムコールは \fBsymlink\fP() と全く同様に動作するが、以下で説明する点が異なる。 - +.PP \fIlinkpath\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fInewdirfd\fP が参照するディレクトリに対する相対パスと解釈される (\fBsymlink\fP() に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。 - +.PP \fIlinkpath\fP で指定されたパス名が相対パスで、 \fInewdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBsymlink\fP() と同様に) \fIlinkpath\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 - +.PP \fIlinkpath\fP で指定されたパス名が絶対パスの場合、 \fInewdirfd\fP は無視される。 .SH 返り値 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 @@ -138,7 +140,8 @@ I/O エラーが発生した。 \fItarget\fP または \fIlinkpath\fP が長過ぎる。 .TP \fBENOENT\fP -\fIlinkpath\fP に含まれるディレクトリ部分が存在しないか、壊れたリンクであるか、 \fItarget\fP が空文字列である。 +A directory component in \fIlinkpath\fP does not exist or is a dangling +symbolic link, or \fItarget\fP or \fIlinkpath\fP is an empty string. .TP \fBENOMEM\fP 十分なカーネルメモリーがない。 @@ -174,21 +177,22 @@ I/O エラーが発生した。 .\" .BR open (2) .\" re multiple files with the same name, and NFS. \fBsymlink\fP(): SVr4, 4.3BSD, POSIX.1\-2001, POSIX.1\-2008. - +.PP \fBsymlinkat\fP(): POSIX.1\-2008. .SH 注意 \fItarget\fP についてのチェックは行なわれない。 - +.PP シンボリックリンクによって参照される名前を削除すると (それが他にハードリンク (hard link) を持たなければ) 実際にファイルが削除される。 この動作が望んだものでない場合は、 \fBlink\fP(2) を使用すること。 .SS "glibc での注意" -\fBsymlinkat\fP() が利用できない古いカーネルでは、 glibc ラッパー関数は \fBsymlink\fP(2) -を使用するモードにフォールバックする。 \fIpathname\fP が相対パスの場合、 glibc は \fInewdirfd\fP 引き数に対応する -\fI/proc/self/fd\fP のシンボリックリンクに基づいてパス名を構成する。 +On older kernels where \fBsymlinkat\fP() is unavailable, the glibc wrapper +function falls back to the use of \fBsymlink\fP(). When \fIlinkpath\fP is a +relative pathname, glibc constructs a pathname based on the symbolic link in +\fI/proc/self/fd\fP that corresponds to the \fInewdirfd\fP argument. .SH 関連項目 -\fBln\fP(1), \fBlchown\fP(2), \fBlink\fP(2), \fBlstat\fP(2), \fBopen\fP(2), \fBreadlink\fP(2), -\fBrename\fP(2), \fBunlink\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7) +\fBln\fP(1), \fBnamei\fP(1), \fBlchown\fP(2), \fBlink\fP(2), \fBlstat\fP(2), \fBopen\fP(2), +\fBreadlink\fP(2), \fBrename\fP(2), \fBunlink\fP(2), \fBpath_resolution\fP(7), +\fBsymlink\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/sync.2 b/manual/LDP_man-pages/draft/man2/sync.2 deleted file mode 100644 index 255fd72d..00000000 --- a/manual/LDP_man-pages/draft/man2/sync.2 +++ /dev/null @@ -1,119 +0,0 @@ -.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 -.\" and Copyright (c) 2011 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 -.\" Modified Sat Jul 24 12:02:47 1993 by Rik Faith -.\" Modified 15 Apr 1995 by Michael Chastain : -.\" Added reference to `bdflush(2)'. -.\" Modified 960414 by Andries Brouwer : -.\" Added the fact that since 1.3.20 sync actually waits. -.\" Modified Tue Oct 22 22:27:07 1996 by Eric S. Raymond -.\" Modified 2001-10-10 by aeb, following Michael Kerrisk. -.\" 2011-09-07, mtk, Added syncfs() documentation, -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Daisuke Sato -.\" all rights reserved. -.\" Translated Sat Apr 19 15:22:53 JST 1997 -.\" by Daisuke Sato -.\" Modified Sun Mar 21 17:23:38 JST 1999 -.\" by HANATAKA Shinya -.\" Updated Tue Oct 16 JST 2001 by Kentaro Shirakata -.\" Updated Mon Sep 8 JST 2003 by Kentaro Shirakata -.\" -.TH SYNC 2 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -sync, syncfs \- バッファーキャッシュをディスクに書き込む -.SH 書式 -\fB#include \fP -.sp -\fBvoid sync(void);\fP -.sp -\fBint syncfs(int \fP\fIfd\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBsync\fP(): -.ad l -.RS 4 -_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.RE -.ad -.sp -\fBsyncfs\fP(): -.ad l -.RS 4 -_GNU_SOURCE -.RE -.ad -.SH 説明 -\fBsync\fP() を呼び出すと、バッファーされたファイルのメタデータとデータ本体に -対して行われた全ての変更が、対応するファイルシステムに書き込まれる。 - -\fBsyncfs\fP() は \fBsync\fP() と同様だが、オープンされたファイルディスクリプター \fIfd\fP -が参照するファイルを含むファイルシステムだけを同期する点が異なる。 -.SH 返り値 -\fBsyncfs\fP() は成功すると 0 を返す。エラーが発生した場合は \-1 を返し、 -\fIerrno\fP にエラーを示す値を設定する。 -.SH エラー -\fBsync\fP() は常に成功する。 - -\fBsyncfs\fP() は少なくとも以下の理由で失敗する可能性がある: -.TP -\fBEBADF\fP -\fIfd\fP が有効なファイルディスクリプターでない。。 -.SH バージョン -\fBsyncfs\fP() は Linux 2.6.39 で初めて登場した。 -ライブラリによるサポートは glibc バージョン 2.14 で追加された。 -.SH 準拠 -\fBsync\fP(): SVr4, 4.3BSD, POSIX.1\-2001. - -\fBsyncfs\fP() is Linux 固有である。 -.SH 注意 -Linux での \fBsync\fP() のプロトタイプは、さまざまな標準規格での規定に準拠し、 -glibc 2.2.2 から上述のようになった。 -glibc 2.2.1 以前ではプロトタイプは "int sync(void)" で、 -\fBsync\fP() は常に 0 を返していた。 -.SH バグ -標準規格 (例えば POSIX.1\-2001) によると、 -\fBsync\fP() -は書き込むことを予定に -組み込むのみで実際に書き込みが終了する前に戻ってもよいことになっている。 -一方で Linux はバージョン 1.3.20 からは書き込みが終了するまで待つ。 -(最近のディスクは大きなキャッシュを持っているため、 - これはデータの完全性 (data integrity) までは保証していない。) -.SH 関連項目 -\fBbdflush\fP(2), \fBfdatasync\fP(2), \fBfsync\fP(2), \fBsync\fP(1) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/sync_file_range.2 b/manual/LDP_man-pages/draft/man2/sync_file_range.2 index 5e7d8d98..b52723e5 100644 --- a/manual/LDP_man-pages/draft/man2/sync_file_range.2 +++ b/manual/LDP_man-pages/draft/man2/sync_file_range.2 @@ -41,25 +41,25 @@ .\" Updated 2012-05-31, Akihiro MOTOKI .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH SYNC_FILE_RANGE 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH SYNC_FILE_RANGE 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 sync_file_range \- ファイルセグメントをディスクと同期する .SH 書式 .nf \fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ \fB#include \fP - +.PP \fBint sync_file_range(int \fP\fIfd\fP\fB, off64_t \fP\fIoffset\fP\fB, off64_t \fP\fInbytes\fP\fB,\fP \fB unsigned int \fP\fIflags\fP\fB);\fP .fi .SH 説明 \fBsync_file_range\fP() を使うと、ファイルディスクリプター \fIfd\fP で参照されるオープンされたファイルのディスクとの同期に関して、 きめ細かな制御が可能となる。 - +.PP \fIoffset\fP は、同期を行うファイルの領域の開始バイトである。 \fInbytes\fP には同期を行う領域の長さをバイト単位で指定する。 \fInbytes\fP が 0 の場合は、 \fIoffset\fP からファイル末尾までの全バイトを同期する。 同期はシステムのページサイズの単位で行われる。 \fIoffset\fP はページ境界にあわせて切り下げられ、 \fI(offset+nbytes\-1)\fP はページ境界にあわせて切り上げられる。 - +.PP ビットマスク引き数 \fIflags\fP には以下の値を指定することができる: .TP \fBSYNC_FILE_RANGE_WAIT_BEFORE\fP @@ -85,7 +85,7 @@ sync_file_range \- ファイルセグメントをディスクと同期する .SS 詳細 \fBSYNC_FILE_RANGE_WAIT_BEFORE\fP と \fBSYNC_FILE_RANGE_WAIT_AFTER\fP は I/O エラーや \fBENOSPC\fP 状態を検出し、呼び出し元にこれらの情報を返す。 - +.PP \fIflags\fP の役に立つビットの組み合わせを以下に示す: .TP \fBSYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE\fP @@ -124,10 +124,8 @@ I/O エラー。 ディスク領域不足である。 .TP \fBESPIPE\fP -.\" FIXME . (bug?) Actually, how can 'fd' refer to a symbolic link (S_ISLNK)? -.\" (In user space at least) it isn't possible to obtain a file descriptor -.\" for a symbolic link. -\fIfd\fP が、通常のファイル、ブロックデバイス、ディレクトリ、シンボリックリンク 以外のものを指している。 +\fIfd\fP refers to something other than a regular file, a block device, or a +directory. .SH バージョン \fBsync_file_range\fP() はカーネル 2.6.17 で Linux に登場した。 .SH 準拠 @@ -141,16 +139,16 @@ I/O エラー。 これらのアーキテクチャーでは引き数が適切な順序になった別のシステムコールが定義されている。 .PP .in +4n -.nf +.EX \fBint sync_file_range2(int \fP\fIfd\fP\fB, unsigned int \fP\fIflags\fP\fB,\fP \fB off64_t \fP\fIoffset\fP\fB, off64_t \fP\fInbytes\fP\fB);\fP -.fi +.EE .in .PP 上記の点以外は、このシステムコールの動作は \fBsync_file_range\fP() と 全く同じである。このシステムコールに対するライブラリによるサポートは glibc では提供されていない。 - +.PP このバージョンのシステムコールは、Linux 2.6.20 で ARM アーキテクチャーで 初めて登場し、 \fBarm_sync_file_range\fP() という名前であった。 Linux 2.6.22 で、同様のシステムコールが PowerPC 用に追加された際に、 @@ -161,6 +159,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/syscall.2 b/manual/LDP_man-pages/draft/man2/syscall.2 deleted file mode 100644 index 46e295e0..00000000 --- a/manual/LDP_man-pages/draft/man2/syscall.2 +++ /dev/null @@ -1,204 +0,0 @@ -.\" Copyright (c) 1980, 1991, 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 -.\" -.\" @(#)syscall.2 8.1 (Berkeley) 6/16/93 -.\" -.\" -.\" 2002-03-20 Christoph Hellwig -.\" - adopted for Linux -.\" 2015-01-17, Kees Cook -.\" Added mips and arm64. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 Yuichi SATO -.\" all rights reserved. -.\" Translated Tue Aug 6 03:43:25 JST 2002 -.\" by Yuichi SATO -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" Updated 2013-07-24, Akihiro MOTOKI -.\" -.TH SYSCALL 2 2015\-01\-22 Linux "Linux Programmer's Manual" -.SH 名前 -syscall \- 間接システムコール -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP -\fB#include \fP/* SYS_xxx の定義用 */ - -\fBlong syscall(long \fP\fInumber\fP\fB, ...);\fP -.fi -.SH 説明 -\fBsyscall\fP() は、システムコールを起動する小さなライブラリ関数で、 \fInumber\fP -で指定されたアセンブリ言語インターフェースのシステムコールを、指定された引き数をつけて実行する。 \fBsyscall\fP() が役に立つのは、例えば C -ライブラリにラッパー関数が存在しないシステムコールを呼び出したい場合である。 - -\fBsyscall\fP() は、システムコールを行う前に CPU -レジスターを保存し、システムコールから返った際にレジスターを復元し、エラーが発生した場合はシステムコールが返したエラーコードを \fBerrno\fP(3) -に格納する。 - -システムコールのシンボル定数は、ヘッダーファイル \fI\fP に書かれている。 -.SH 返り値 -返り値は呼び出されたシステムコールによって定義される。 一般に、返り値 0 は成功を表す。 \-1 はエラーを表し、エラーコードは \fIerrno\fP -に入れられる。 -.SH 注意 -\fBsyscall\fP() は 4BSD で最初に登場した。 -.SS アーキテクチャー固有の要件 -各アーキテクチャーの ABI には、 システムコールの引き数のカーネルへの渡し方に関する独自の要件がある。 -(ほとんどのシステムコールのように) glibc ラッパー関数があるシステムコールでは、 glibc -が詳細を処理し、アーキテクチャーに応じた方法で引き数が適切なレジスターにコピーされる。 しかし、 システムコールを呼び出すのに \fBsyscall\fP() -を使う場合には、 呼び出し側でアーキテクチャー依存の詳細を処理しなければならない場合がある。 これはいくつかの 32 -ビットアーキテクチャーでは非常によくあることだ。 - -例えば、ARM アーキテクチャーの Embedded ABI (EABI) では、 (\fIlong long\fP などの) 64 -ビット値は偶数番地のレジスターのペアに境界があっていなければならない。したがって、 glibc が提供するラッパー関数ではなく \fBsyscall\fP() -を使う場合には、 \fBreadahead\fP() システムコールは ARM アーキテクチャーの EABI では以下のようにして起動されることになる。 - -.in +4n -.nf -syscall(SYS_readahead, fd, 0, - (unsigned int) (offset >> 32), - (unsigned int) (offset & 0xFFFFFFFF), - count); -.fi -.in -.PP -オフセット引き数は 64 ビットで、最初の引き数 (\fIfd\fP) は \fIr0\fP で渡されるので、呼び出し側では手動で 64 -ビット値を分割して境界を合わせて、 64 ビット値が \fIr2\fP/\fIr3\fP レジスターペアで渡されるようにしなければならない。このため、 \fIr1\fP -(2 番目の引数 0) としてダミー値を挿入している。 - -.\" Mike Frysinger: this issue ends up forcing MIPS -.\" O32 to take 7 arguments to syscall() -同様のことが、 MIPS の O32 ABI、 PowerPC の 32 ビット ABI や Xtensa でも起こりうる。 - -次のシステムコールに影響がある: \fBfadvise64_64\fP(2), \fBftruncate64\fP(2), \fBposix_fadvise\fP(2), -\fBpread64\fP(2), \fBpwrite64\fP(2), \fBreadahead\fP(2), \fBsync_file_range\fP(2), -\fBtruncate64\fP(2) -.SS アーキテクチャー毎の呼び出し規約 -各アーキテクチャーには、それぞれ独自のシステムコール起動方法とカーネルへの引き数の渡し方がある。 各種のアーキテクチャーの詳細を以下の 2 -つの表にまとめる。 - -最初の表は、 カーネルモードに遷移するのに使用される命令、 システムコール番号を示すのに使用されるレジスター、 -システムコールの結果を返すのに使用されるレジスターの一覧である (なお、 ここに載っているカーネルモードに遷移するのに使用される命令は、 -カーネルモードに遷移する最速や最善の方法でない場合もあるので、 \fBvdso\fP(7) を参照する必要があるかもしれない)。 -.if t \{\ -.ft CW -\} -.TS -l l1 l l1 l. -arch/ABI instruction syscall # retval 備考 -_ -arm/OABI swi NR \- a1 NR はシステムコール番号 -arm/EABI swi 0x0 r7 r0 -arm64 svc #0 x8 x0 -blackfin excpt 0x0 P0 R0 -i386 int $0x80 eax eax -ia64 break 0x100000 r15 r8 下記参照 -mips syscall v0 v0 下記参照 -parisc ble 0x100(%sr2, %r0) r20 r28 -s390 svc 0 r1 r2 下記参照 -s390x svc 0 r1 r2 下記参照 -sparc/32 t 0x10 g1 o0 -sparc/64 t 0x6d g1 o0 -x86_64 syscall rax rax -.TE -.PP -s390 と s390x では、 NR (システムコール番号) が 256 未満の場合 "svc NR" で NR が直接渡される場合がある。 - -少ないがいくつかのアーキテクチャーでは、 システムコールの失敗を示す単純な真偽値がレジスターを使って通知される。この用途に ia64 は \fIr10\fP -を使用し、 mips は \fIa3\fP を使用する。 -.if t \{\ -.in -.ft P -\} -.PP -2 つ目の表は、システムコールの引き数を渡すのに使用されるレジスターの一覧である。 -.if t \{\ -.ft CW -\} -.TS -l l2 l2 l2 l2 l2 l2 l2 l. -arch/ABI arg1 arg2 arg3 arg4 arg5 arg6 arg7 備考 -_ -arm/OABI a1 a2 a3 a4 v1 v2 v3 -arm/EABI r0 r1 r2 r3 r4 r5 r6 -arm64 x0 x1 x2 x3 x4 x5 \- -blackfin R0 R1 R2 R3 R4 R5 \- -i386 ebx ecx edx esi edi ebp \- -ia64 out0 out1 out2 out3 out4 out5 \- -mips/o32 a0 a1 a2 a3 \- \- \- 下記参照 -mips/n32,64 a0 a1 a2 a3 a4 a5 \- -parisc r26 r25 r24 r23 r22 r21 \- -s390 r2 r3 r4 r5 r6 r7 \- -s390x r2 r3 r4 r5 r6 r7 \- -sparc/32 o0 o1 o2 o3 o4 o5 \- -sparc/64 o0 o1 o2 o3 o4 o5 \- -x86_64 rdi rsi rdx r10 r8 r9 \- -.TE -.PP -mips/o32 のシステムコールの規約では、 ユーザースタックに引き数を 5 個から 8 個渡す。 -.if t \{\ -.in -.ft P -\} -.PP -これらの表にはすべての呼び出し規約が記載されているわけではない点に注意すること \(em -アーキテクチャーによっては、ここに記載されていない他のレジスターが見境なく上書きされる場合もある。 -.SH 例 -.nf -#define _GNU_SOURCE -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - pid_t tid; - - tid = syscall(SYS_gettid); - tid = syscall(SYS_tgkill, getpid(), tid, SIGHUP); -} -.fi -.SH 関連項目 -\fB_syscall\fP(2), \fBintro\fP(2), \fBsyscalls\fP(2), \fBerrno\fP(3), \fBvdso\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index fdddd423..6f896692 100644 --- a/manual/LDP_man-pages/draft/man2/syscalls.2 +++ b/manual/LDP_man-pages/draft/man2/syscalls.2 @@ -45,7 +45,7 @@ .\" Updated 2012-05-29, Akihiro MOTOKI .\" Updated 2013-05-01, Akihiro MOTOKI .\" -.TH SYSCALLS 2 2015\-01\-22 Linux "Linux Programmer's Manual" +.TH SYSCALLS 2 2020\-12\-21 Linux "Linux Programmer's Manual" .SH 名前 syscalls \- Linux のシステムコール .SH 書式 @@ -53,16 +53,24 @@ Linux のシステムコール。 .SH 説明 システムコールは、アプリケーションと Linux カーネルとの間の 基本的なインターフェースである。 .SS システムコールとライブラリのラッパー関数 -システムコールは一般には直接起動されず、 glibc (や他の何らかのライブラリ) 経由で起動される。 システムコールの直接起動については、詳細は -\fBintro\fP(2) を参照のこと。 いつもという訳ではないが、普通は、ラッパー関数の名前はその関数が起動する システムコールの名前と同じである。 -例えば、glibc には \fBtruncate\fP() という関数があり、この関数は "truncate" システムコールを起動する。 - -たいていの場合、glibc のラッパー関数はかなり簡単なもので、 システムコールを起動する前に引き数を適切なレジスターにコピーし、 -システムコールが返った後は \fIerrno\fP を適切に設定する以外は、ほとんど処理を行わない (これらは、ラッパー関数が提供されていない場合に -システムコールを起動するのに使用する \fBsyscall\fP(2) により実行される処理と同じである)。 [注意] -システムコールは失敗を示すのに負のエラー番号を呼び出し元に返す。 失敗が起こった際には、ラッパー関数は返されたエラー番号を反転して -(正の値に変換し)、それを \fIerrno\fP にコピーし、ラッパー関数の呼び出し元に \-1 を返す。 - +System calls are generally not invoked directly, but rather via wrapper +functions in glibc (or perhaps some other library). For details of direct +invocation of a system call, see \fBintro\fP(2). Often, but not always, the +name of the wrapper function is the same as the name of the system call that +it invokes. For example, glibc contains a function \fBchdir\fP() which +invokes the underlying "chdir" system call. +.PP +Often the glibc wrapper function is quite thin, doing little work other than +copying arguments to the right registers before invoking the system call, +and then setting \fIerrno\fP appropriately after the system call has returned. +(These are the same steps that are performed by \fBsyscall\fP(2), which can be +used to invoke system calls for which no wrapper function is provided.) +Note: system calls indicate a failure by returning a negative error number +to the caller on architectures without a separate error register/flag, as +noted in \fBsyscall\fP(2); when this happens, the wrapper function negates the +returned error number (to make it positive), copies it to \fIerrno\fP, and +returns \-1 to the caller of the wrapper. +.PP しかしながら、時には、ラッパー関数がシステムコールを起動する前に 何らかの追加の処理を行う場合がある。 例えば、現在、 二つの関連するシステムコール \fBtruncate\fP(2) と \fBtruncate64\fP(2) があり、glibc のラッパー関数 \fBtruncate\fP() は、カーネルがこれらのシステムコールのうちどちらを提供しているかをチェックし、 どちらを採用するかを決定する。 @@ -101,11 +109,12 @@ Linux のシステムコール。 2.6.0 で初めて登場したことを意味する。 (バージョン 2.6 のカーネルは、カーネル 2.4.15 から分岐し、 バージョン 2.5.x の不安定版のカーネル系列として開発された。) .IP * -カーネル 2.6.0 から開発モデルは変更され、新しいシステムコールが -個々の 2.6.x のリリースでも登場するようになった。 -その場合、このリストでは、システムコールが登場した -厳密なバージョン番号が記載されている。この慣習は、カーネル 2.6.39 の -後継となるバージョン 3.x 系列のカーネルでも継続されている。 +Starting with kernel 2.6.0, the development model changed, and new system +calls may appear in each 2.6.x release. In this case, the exact version +number where the system call appeared is shown. This convention continues +with the 3.x kernel series, which followed on from kernel 2.6.39; and the +4.x kernel series, which followed on from kernel 3.19; and the 5.x kernel +series, which followed on from kernel 4.20. .IP * 前の安定版カーネル系列から分岐した後に安定版カーネル系列にシステムコール が追加された場合、以前の安定版カーネル系列にそのシステムコールが 移植 (backport) されることがある。 例えば、2.6.x で登場したシステムコールのいくつかは、 2.4.15 以降の 2.4.x リリースにも @@ -115,8 +124,8 @@ backport された。 この場合、システムコールが登場したバー .\" Looking at scripts/checksyscalls.sh in the kernel source is .\" instructive about x86 specifics. .\" -カーネル 3.15 で利用可能なシステムコールのリストを以下に示す -(それ以前のカーネルでだけ利用可能なものも少数だが含まれる): +The list of system calls that are available as at kernel 5.10 (or in a few +cases only on older kernels) is as follows: .ad l .TS l2 le l @@ -126,15 +135,25 @@ l l l. \fB_llseek\fP(2) 1.2 \fB_newselect\fP(2) 2.0 -\fB_sysctl\fP(2) 2.0 +\fB_sysctl\fP(2) 2.0 Removed in 5.5 \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 +\fBadd_key\fP(2) 2.6.10 \fBadjtimex\fP(2) 1.0 \fBalarm\fP(2) 1.0 \fBalloc_hugepages\fP(2) 2.5.36 2.5.44 で削除 +.\" 4adeefe161a74369e44cc8e663f240ece0470dc3 +\fBarc_gettls\fP(2) 3.9 ARC only +\fBarc_settls\fP(2) 3.9 ARC only +.\" 91e040a79df73d371f70792f30380d4e44805250 +\fBarc_usr_cmpxchg\fP(2) 4.9 ARC only +.\" x86: 79170fda313ed5be2394f87aa2a00d597f8ed4a1 +\fBarch_prctl\fP(2) 2.6 x86_64, x86 since 4.12 +.\" 9674cdc74d63f346870943ef966a034f8c71ee57 +\fBatomic_barrier\fP(2) 2.6.34 m68k only +\fBatomic_cmpxchg_32\fP(2) 2.6.34 m68k only \fBbdflush\fP(2) 1.2 T{ 2.6 以降で非推奨 .br @@ -143,6 +162,11 @@ T} \fBbind\fP(2) 2.0 \fBsocketcall\fP(2) の「注意」の節を参照 \fBbpf\fP(2) 3.18 \fBbrk\fP(2) 1.0 +\fBbreakpoint\fP(2) 2.2 T{ +ARM OABI only, defined with +.br +\fB__ARM_NR\fP prefix +T} \fBcacheflush\fP(2) 1.2 x86 にはない \fBcapget\fP(2) 2.2 \fBcapset\fP(2) 2.2 @@ -160,12 +184,32 @@ T} \fBclock_gettime\fP(2) 2.6 \fBclock_nanosleep\fP(2) 2.6 \fBclock_settime\fP(2) 2.6 +\fBclone2\fP(2) 2.4 IA\-64 only \fBclone\fP(2) 1.0 +\fBclone3\fP(2) 5.3 \fBclose\fP(2) 1.0 +\fBclose_range\fP(2) 5.9 +.\" .\" dcef1f634657dabe7905af3ccda12cf7f0b6fcc1 +.\" .\" cc20d42986d5807cbe4f5c7c8e3dab2e59ea0db3 +.\" .\" db695c0509d6ec9046ee5e4c520a19fa17d9fce2 +.\" \fBcmpxchg\fP(2) 2.6.12 T{ +.\" ARM, syscall constant never was +.\" .br +.\" exposed to userspace, in-kernel +.\" .br +.\" definition had \fB__ARM_NR\fP prefix, +.\" .br +.\" removed in 4.4 +.\" T} +.\" 867e359b97c970a60626d5d76bbe2a8fadbf38fb +.\" bb9d812643d8a121df7d614a2b9c60193a92deb0 \fBconnect\fP(2) 2.0 \fBsocketcall\fP(2) の「注意」の節を参照 +\fBcopy_file_range\fP(2) 4.5 \fBcreat\fP(2) 1.0 \fBcreate_module\fP(2) 1.0 2.6 で削除 \fBdelete_module\fP(2) 1.0 +.\" 1394f03221790a988afc3e4b3cb79f2e477246a9 +.\" 4ba66a9760722ccbb691b8f7116cad2f791cca7b \fBdup\fP(2) 1.0 \fBdup2\fP(2) 1.0 \fBdup3\fP(2) 2.6.27 @@ -176,11 +220,17 @@ T} \fBepoll_wait\fP(2) 2.6 \fBeventfd\fP(2) 2.6.22 \fBeventfd2\fP(2) 2.6.27 +\fBexecv\fP(2) 2.0 T{ +SPARC/SPARC64 only, for +.br +compatibility with SunOS +T} \fBexecve\fP(2) 1.0 \fBexecveat\fP(2) 3.19 \fBexit\fP(2) 1.0 \fBexit_group\fP(2) 2.6 \fBfaccessat\fP(2) 2.6.16 +\fBfaccessat2\fP(2) 5.8 \fBfadvise64\fP(2) 2.6 .\" Implements \fBposix_fadvise\fP(2) \fBfadvise64_64\fP(2) 2.6 @@ -205,7 +255,11 @@ T} \fBfork\fP(2) 1.0 \fBfree_hugepages\fP(2) 2.5.36 2.5.44 で削除 \fBfremovexattr\fP(2) 2.6; 2.4.18 +\fBfsconfig\fP(2) 5.2 \fBfsetxattr\fP(2) 2.6; 2.4.18 +\fBfsmount\fP(2) 5.2 +\fBfsopen\fP(2) 5.2 +\fBfspick\fP(2) 5.2 \fBfstat\fP(2) 1.0 \fBfstat64\fP(2) 2.4 \fBfstatat64\fP(2) 2.6.16 @@ -220,10 +274,32 @@ T} \fBget_mempolicy\fP(2) 2.6.6 \fBget_robust_list\fP(2) 2.6.17 \fBget_thread_area\fP(2) 2.6 +.\" 8fcd6c45f5a65621ec809b7866a3623e9a01d4ed +\fBget_tls\fP(2) 4.15 T{ +ARM OABI only, has +.br +\fB__ARM_NR\fP prefix +T} \fBgetcpu\fP(2) 2.6.19 \fBgetcwd\fP(2) 2.2 \fBgetdents\fP(2) 2.0 \fBgetdents64\fP(2) 2.4 +.\" parisc: 863722e856e64dae0e252b6bb546737c6c5626ce +\fBgetdomainname\fP(2) 2.2 T{ +SPARC, SPARC64; available +.br +as \fBosf_getdomainname\fP(2) +.br +on Alpha since Linux 2.0 +T} +.\" ec98c6b9b47df6df1c1fa6cf3d427414f8c2cf16 +\fBgetdtablesize\fP(2) 2.0 T{ +SPARC (removed in 2.6.26), +.br +available on Alpha as +.br +\fBosf_getdtablesize\fP(2) +T} \fBgetegid\fP(2) 1.0 \fBgetegid32\fP(2) 2.4 \fBgeteuid\fP(2) 1.0 @@ -232,6 +308,12 @@ T} \fBgetgid32\fP(2) 2.4 \fBgetgroups\fP(2) 1.0 \fBgetgroups32\fP(2) 2.4 +.\" SPARC removal: ec98c6b9b47df6df1c1fa6cf3d427414f8c2cf16 +\fBgethostname\fP(2) 2.0 T{ +Alpha, was available on +.br +SPARC up to Linux 2.6.26 +T} \fBgetitimer\fP(2) 1.0 \fBgetpeername\fP(2) 2.0 \fBsocketcall\fP(2) の「注意」の節を参照 \fBgetpagesize\fP(2) 2.0 x86 にはない @@ -254,8 +336,11 @@ T} \fBgettimeofday\fP(2) 1.0 \fBgetuid\fP(2) 1.0 \fBgetuid32\fP(2) 2.4 -.\" \fBgetunwind\fP(2) 2.4.8 ia64; DEPRECATED +\fBgetunwind\fP(2) 2.4.8 IA\-64 only; deprecated \fBgetxattr\fP(2) 2.6; 2.4.18 +\fBgetxgid\fP(2) 2.0 Alpha only; see NOTES +\fBgetxpid\fP(2) 2.0 Alpha only; see NOTES +\fBgetxuid\fP(2) 2.0 Alpha only; see NOTES \fBinit_module\fP(2) 1.0 \fBinotify_add_watch\fP(2) 2.6.13 \fBinotify_init\fP(2) 2.6.13 @@ -264,8 +349,12 @@ T} \fBio_cancel\fP(2) 2.6 \fBio_destroy\fP(2) 2.6 \fBio_getevents\fP(2) 2.6 +\fBio_pgetevents\fP(2) 4.18 \fBio_setup\fP(2) 2.6 \fBio_submit\fP(2) 2.6 +\fBio_uring_enter\fP(2) 5.1 +\fBio_uring_register\fP(2) 5.1 +\fBio_uring_setup\fP(2) 5.1 \fBioctl\fP(2) 1.0 \fBioperm\fP(2) 1.0 \fBiopl\fP(2) 1.0 @@ -274,14 +363,14 @@ T} \fBipc\fP(2) 1.0 .\" Implements System V IPC calls \fBkcmp\fP(2) 3.5 -\fBkern_features\fP(2) 3.7 Sparc64 +\fBkern_features\fP(2) 3.7 SPARC64 only .\" FIXME . document kern_features(): .\" commit 517ffce4e1a03aea979fe3a18a3dd1761a24fafb \fBkexec_file_load\fP(2) 3.17 \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 +\fBkeyctl\fP(2) 2.6.10 \fBkill\fP(2) 1.0 \fBlchown\fP(2) 1.0 T{ バージョン毎の詳細は @@ -303,7 +392,10 @@ T} \fBlstat64\fP(2) 2.4 \fBmadvise\fP(2) 2.4 \fBmbind\fP(2) 2.6.6 -.\" \fBmemory_ordering\fP(2) ??? Sparc64 +\fBmemory_ordering\fP(2) 2.2 SPARC64 only +.\" 26025bbfbba33a9425be1b89eccb4664ea4c17b6 +.\" bb6fb6dfcc17cddac11ac295861f7608194447a7 +\fBmembarrier\fP(2) 3.17 \fBmemfd_create\fP(2) 3.17 \fBmigrate_pages\fP(2) 2.6.16 \fBmincore\fP(2) 2.4 @@ -312,11 +404,13 @@ T} \fBmknod\fP(2) 1.0 \fBmknodat\fP(2) 2.6.16 \fBmlock\fP(2) 2.0 +\fBmlock2\fP(2) 4.4 \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_mount\fP(2) 5.2 \fBmove_pages\fP(2) 2.6.18 \fBmprotect\fP(2) 1.0 \fBmq_getsetattr\fP(2) 2.6.6 @@ -339,16 +433,35 @@ T} \fBmunmap\fP(2) 1.0 \fBname_to_handle_at\fP(2) 2.6.39 \fBnanosleep\fP(2) 2.0 +.\" 5590ff0d5528b60153c0b4e7b771472b5a95e297 +\fBnewfstatat\fP(2) 2.6.16 See \fBstat\fP(2) \fBnfsservctl\fP(2) 2.2 3.1 で削除 \fBnice\fP(2) 1.0 +\fBold_adjtimex\fP(2) 2.0 Alpha only; see NOTES +\fBold_getrlimit\fP(2) 2.4 T{ +Old variant of \fBgetrlimit\fP(2) +.br +that used a different value +.br +for \fBRLIM_INFINITY\fP +T} \fBoldfstat\fP(2) 1.0 \fBoldlstat\fP(2) 1.0 \fBoldolduname\fP(2) 1.0 \fBoldstat\fP(2) 1.0 +\fBoldumount\fP(2) 2.4.116 T{ +Name of the old \fBumount\fP(2) +.br +syscall on Alpha +T} \fBolduname\fP(2) 1.0 \fBopen\fP(2) 1.0 \fBopen_by_handle_at\fP(2) 2.6.39 +\fBopen_tree\fP(2) 5.2 \fBopenat\fP(2) 2.6.16 +\fBopenat2\fP(2) 5.6 +.\" 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a +\fBor1k_atomic\fP(2) 3.1 OpenRISC 1000 only \fBpause\fP(2) 1.0 \fBpciconfig_iobase\fP(2) 2.2.15; 2.4 x86 にはない .\" Alpha, PowerPC, ARM; not x86 @@ -362,14 +475,19 @@ T} 2.6.32 で名称変更 T} \fBpersonality\fP(2) 1.2 -\fBperfctr\fP(2) 2.2 Sparc; 2.6.34 で削除 +\fBperfctr\fP(2) 2.2 SPARC only; removed in 2.6.34 .\" commit c7d5a0050773e98d1094eaa9f2a1a793fafac300 removed perfctr() -\fBperfmonctl\fP(2) 2.4 ia64 +\fBperfmonctl\fP(2) 2.4 IA\-64 only +\fBpidfd_getfd\fP(2) 5.6 +\fBpidfd_send_signal\fP(2) 5.1 +\fBpidfd_open\fP(2) 5.3 \fBpipe\fP(2) 1.0 \fBpipe2\fP(2) 2.6.27 \fBpivot_root\fP(2) 2.4 +\fBpkey_alloc\fP(2) 4.8 +\fBpkey_free\fP(2) 4.8 +\fBpkey_mprotect\fP(2) 4.8 \fBpoll\fP(2) 2.0.36; 2.2 -\fBppc_rtas\fP(2) 2.6.2 PowerPC のみ \fBppoll\fP(2) 2.6.16 \fBprctl\fP(2) 2.2 \fBpread64\fP(2) T{ @@ -378,8 +496,9 @@ T} 2.6 で "pread64" に名称変更 T} \fBpreadv\fP(2) 2.6.30 -\fBprlimit\fP(2) 2.6.36 +\fBpreadv2\fP(2) 4.6 \fBprlimit64\fP(2) 2.6.36 +\fBprocess_madvise\fP(2) 5.10 \fBprocess_vm_readv\fP(2) 3.2 \fBprocess_vm_writev\fP(2) 3.2 \fBpselect6\fP(2) 2.6.16 @@ -391,6 +510,7 @@ T} 2.6 で "pwrite64" に名称変更 T} \fBpwritev\fP(2) 2.6.30 +\fBpwritev2\fP(2) 4.6 \fBquery_module\fP(2) 2.2 2.6 で削除 \fBquotactl\fP(2) 1.0 \fBread\fP(2) 1.0 @@ -410,9 +530,12 @@ T} \fBrename\fP(2) 1.0 \fBrenameat\fP(2) 2.6.16 \fBrenameat2\fP(2) 3.15 -\fBrequest_key\fP(2) 2.6.11 +\fBrequest_key\fP(2) 2.6.10 \fBrestart_syscall\fP(2) 2.6 +.\" 921ebd8f2c081b3cf6c3b29ef4103eef3ff26054 +\fBriscv_flush_icache\fP(2) 4.15 RISC\-V only \fBrmdir\fP(2) 1.0 +\fBrseq\fP(2) 4.18 \fBrt_sigaction\fP(2) 2.2 \fBrt_sigpending\fP(2) 2.2 \fBrt_sigprocmask\fP(2) 2.2 @@ -421,9 +544,17 @@ T} \fBrt_sigsuspend\fP(2) 2.2 \fBrt_sigtimedwait\fP(2) 2.2 \fBrt_tgsigqueueinfo\fP(2) 2.6.31 +\fBrtas\fP(2) 2.6.2 PowerPC/PowerPC64 only \fBs390_runtime_instr\fP(2) 3.7 s390 のみ \fBs390_pci_mmio_read\fP(2) 3.19 s390 のみ \fBs390_pci_mmio_write\fP(2) 3.19 s390 のみ +\fBs390_sthyi\fP(2) 4.15 s390 のみ +\fBs390_guarded_storage\fP(2) 4.12 s390 のみ +\fBsched_get_affinity\fP(2) 2.6 T{ +Name of \fBsched_getaffinity\fP(2) +.br +on SPARC and SPARC64 +T} \fBsched_get_priority_max\fP(2) 2.0 \fBsched_get_priority_min\fP(2) 2.0 \fBsched_getaffinity\fP(2) 2.6 @@ -431,6 +562,11 @@ T} \fBsched_getparam\fP(2) 2.0 \fBsched_getscheduler\fP(2) 2.0 \fBsched_rr_get_interval\fP(2) 2.0 +\fBsched_set_affinity\fP(2) 2.6 T{ +Name of \fBsched_setaffinity\fP(2) +.br +on SPARC and SPARC64 +T} \fBsched_setaffinity\fP(2) 2.6 \fBsched_setattr\fP(2) 3.14 \fBsched_setparam\fP(2) 2.0 @@ -452,6 +588,18 @@ T} \fBset_robust_list\fP(2) 2.6.17 \fBset_thread_area\fP(2) 2.6 \fBset_tid_address\fP(2) 2.6 +\fBset_tls\fP(2) 2.6.11 T{ +ARM OABI/EABI only (constant +.br +has \fB__ARM_NR\fP prefix) +T} +.\" \fBsetaltroot\fP(2) 2.6.10 T{ +.\" Removed in 2.6.11, exposed one +.\" of implementation details of +.\" \fBpersonality\fP(2) (creating an +.\" alternative root, precursor of +.\" mount namespaces) to user space. +.\" T} .\" See http://lkml.org/lkml/2005/8/1/83 .\" "[PATCH] remove sys_set_zone_reclaim()" \fBsetdomainname\fP(2) 1.0 @@ -463,10 +611,17 @@ T} \fBsetgid32\fP(2) 2.4 \fBsetgroups\fP(2) 1.0 \fBsetgroups32\fP(2) 2.4 +.\" arch/alpha/include/asm/core_lca.h +\fBsethae\fP(2) 2.0 Alpha only; see NOTES \fBsethostname\fP(2) 1.0 \fBsetitimer\fP(2) 1.0 \fBsetns\fP(2) 3.0 \fBsetpgid\fP(2) 1.0 +\fBsetpgrp\fP(2) 2.0 T{ +Alternative name for +.br +\fBsetpgid\fP(2) on Alpha +T} \fBsetpriority\fP(2) 1.0 \fBsetregid\fP(2) 1.0 \fBsetregid32\fP(2) 2.4 @@ -503,16 +658,22 @@ T} \fBsocketcall\fP(2) 1.0 .\" Implements BSD socket calls \fBsocketpair\fP(2) 2.0 \fBsocketcall\fP(2) の「注意」の節を参照 +.\" 5a0015d62668e64c8b6e02e360fbbea121bfd5e6 +\fBspill\fP(2) 2.6.13 Xtensa only \fBsplice\fP(2) 2.6.17 -\fBspu_create\fP(2) 2.6.16 PowerPC のみ -\fBspu_run\fP(2) 2.6.16 PowerPC のみ +\fBspu_create\fP(2) 2.6.16 PowerPC/PowerPC64 only +\fBspu_run\fP(2) 2.6.16 PowerPC/PowerPC64 only \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 +\fBstatx\fP(2) 4.11 \fBstime\fP(2) 1.0 -\fBsubpage_prot\fP(2) 2.6.25 PowerPC のみ +\fBsubpage_prot\fP(2) 2.6.25 PowerPC/PowerPC64 only +\fBswapcontext\fP(2) 2.6.3 PowerPC/PowerPC64 only +.\" 529d235a0e190ded1d21ccc80a73e625ebcad09b +\fBswitch_endian\fP(2) 4.1 PowerPC64 only \fBswapoff\fP(2) 1.0 \fBswapon\fP(2) 1.0 \fBsymlink\fP(2) 1.0 @@ -524,10 +685,17 @@ T} .\" 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 +\fBsys_debug_setcontext\fP(2) 2.6.11 PowerPC のみ +\fBsyscall\fP(2) 1.0 T{ +Still available on ARM OABI +.br +and MIPS O32 ABI +T} \fBsysfs\fP(2) 1.2 \fBsysinfo\fP(2) 1.0 \fBsyslog\fP(2) 1.0 .\" glibc interface is \fBklogctl\fP(3) +\fBsysmips\fP(2) 2.6.0 MIPS only \fBtee\fP(2) 2.6.17 \fBtgkill\fP(2) 2.6 \fBtime\fP(2) 1.0 @@ -536,6 +704,12 @@ T} \fBtimer_getoverrun\fP(2) 2.6 \fBtimer_gettime\fP(2) 2.6 \fBtimer_settime\fP(2) 2.6 +.\" .\" b215e283992899650c4271e7385c79e26fb9a88e +.\" .\" 4d672e7ac79b5ec5cdc90e450823441e20464691 +.\" \fBtimerfd\fP(2) 2.6.22 T{ +.\" Old timerfd interface, +.\" removed in 2.6.25 +.\" T} \fBtimerfd_create\fP(2) 2.6.25 \fBtimerfd_gettime\fP(2) 2.6.25 \fBtimerfd_settime\fP(2) 2.6.25 @@ -555,17 +729,21 @@ T} \fBunshare\fP(2) 2.6.16 \fBuselib\fP(2) 1.0 \fBustat\fP(2) 1.0 +\fBuserfaultfd\fP(2) 4.3 +\fBusr26\fP(2) 2.4.8.1 ARM OABI only +\fBusr32\fP(2) 2.4.8.1 ARM OABI only \fButime\fP(2) 1.0 \fButimensat\fP(2) 2.6.22 \fButimes\fP(2) 2.2 -\fButrap_install\fP(2) 2.2 Sparc のみ +\fButrap_install\fP(2) 2.2 SPARC64 only .\" FIXME . document utrap_install() .\" There's a man page for Solaris 5.11 \fBvfork\fP(2) 2.2 \fBvhangup\fP(2) 1.0 \fBvm86old\fP(2) 1.0 T{ -以前は "vm86"; -2.0.28/2.2 で改名された +Was "vm86"; renamed in +.br +2.0.28/2.2 T} \fBvm86\fP(2) 2.0.28; 2.2 \fBvmsplice\fP(2) 2.6.17 @@ -574,13 +752,15 @@ T} \fBwaitpid\fP(2) 1.0 \fBwrite\fP(2) 1.0 \fBwritev\fP(2) 2.0 +.\" 5a0015d62668e64c8b6e02e360fbbea121bfd5e6 +\fBxtensa\fP(2) 2.6.13 Xtensa only .TE .ad .PP x86\-32 を含む多くのプラットフォームでは、ソケット関連のシステムコールは (glibc のラッパー関数を介してだが) すべて \fBsocketcall\fP(2) 経由に多重されている。 同様に、System\ V IPC 関連のシステムコールは \fBipc\fP(2) 経由に多重されている。 - +.PP .\" __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 @@ -613,25 +793,84 @@ x86\-32 を含む多くのプラットフォームでは、ソケット関連の 使用されている; 将来においても \fBphys\fP(2) は実装されない。 \fBgetpmsg\fP(2) と \fBputpmsg\fP(2) は STREAMS 対応のパッチが適用された カーネル用であり、標準のカーネルに登場することはないかもしれない。 - +.PP +.\" \fBset_zone_reclaim\fP(2) は少しの間だけ存在した。 Linux 2.6.13 で追加され、2.6.16 で削除された。このシステムコールがユーザー空間から使える状態になったことはない。 +.SS "System calls on removed ports" +Some system calls only ever existed on Linux architectures that have since +been removed from the kernel: +.TP +AVR32 (port removed in Linux 4.12) +.RS +.PD 0 +.IP * 2 +\fBpread\fP(2) +.IP * +\fBpwrite\fP(2) +.PD +.RE +.TP +Blackfin (port removed in Linux 4.17) +.RS +.PD 0 +.IP * 2 +\fBbfin_spinlock\fP(2) (added in Linux 2.6.22) +.IP * +\fBdma_memcpy\fP(2) (added in Linux 2.6.22) +.IP * +\fBpread\fP(2) (added in Linux 2.6.22) +.IP * +\fBpwrite\fP(2) (added in Linux 2.6.22) +.IP * +\fBsram_alloc\fP(2) (added in Linux 2.6.22) +.IP * +\fBsram_free\fP(2) (added in Linux 2.6.22) +.PD +.RE +.TP +Metag (port removed in Linux 4.17) +.RS +.PD 0 +.IP * 2 +\fBmetag_get_tls\fP(2) (add in Linux 3.9) +.IP * +\fBmetag_set_fpu_flags\fP(2) (add in Linux 3.9) +.IP * +\fBmetag_set_tls\fP(2) (add in Linux 3.9) +.IP * +\fBmetag_setglobalbit\fP(2) (add in Linux 3.9) +.PD +.RE +.TP +Tile (port removed in Linux 4.17) +.RS +.PD 0 +.IP * 2 +\fBcmpxchg_badaddr\fP(2) (added in Linux 2.6.36) +.PD +.RE .SH 注意 +Roughly speaking, the code belonging to the system call with number __NR_xxx +defined in \fI/usr/include/asm/unistd.h\fP can be found in the Linux kernel +source in the routine \fIsys_xxx\fP(). There are many exceptions, however, +mostly because older system calls were superseded by newer ones, and this +has been treated somewhat unsystematically. On platforms with proprietary +operating\-system emulation, such as sparc, sparc64, and alpha, there are +many additional system calls; mips64 also contains a full set of 32\-bit +system calls. .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 -レベルでの互換性を保持することを保証する処理を行っている。) 複数のバージョンが存在するシステムコールの例を以下に挙げる。 +Over time, changes to the interfaces of some system calls have been +necessary. One reason for such changes was the need to increase the size of +structures or scalar values passed to the system call. Because of these +changes, certain architectures (notably, longstanding 32\-bit architectures +such as i386) now have various groups of related system calls (e.g., +\fBtruncate\fP(2) and \fBtruncate64\fP(2)) which perform similar tasks, but +which vary in details such as the size of their arguments. (As noted +earlier, applications are generally unaware of this: the glibc wrapper +functions do some work to ensure that the right system call is invoked, and +that ABI compatibility is preserved for old binaries.) Examples of systems +calls that exist in multiple versions are the following: .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, @@ -641,8 +880,9 @@ parisc, sparc, sparc64, alpha (カーネル 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() というルーチンを参照している。 +Similarly, the defines \fI__NR_oldolduname\fP, \fI__NR_olduname\fP, and +\fI__NR_uname\fP refer to the routines \fIsys_olduname\fP(), \fIsys_uname\fP(), and +\fIsys_newuname\fP(). .IP * Linux 2.0 では、 \fBvm86\fP(2) の新バージョンが登場した。カーネルルーチンの 古いバージョン、新しいバージョンはそれぞれ \fIsys_vm86old\fP(), \fIsys_vm86\fP() という名前である。 @@ -658,16 +898,21 @@ Linux 2.4 で、ユーザー ID とグループ ID のサイズが 16 ビット \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 -がついていないシステムコールは廃止扱いである。 +Linux 2.4 added support for applications on 32\-bit architectures to access +large files (i.e., files for which the sizes and file offsets can't be +represented in 32 bits.) To support this change, replacements were required +for system calls that deal with file offsets and sizes. Thus the following +system calls were added: \fBfcntl64\fP(2), \fBgetdents64\fP(2), \fBstat64\fP(2), +\fBstatfs64\fP(2), \fBtruncate64\fP(2), and their analogs that work with file +descriptors or symbolic links. These system calls supersede the older +system calls which, except in the case of the "stat" calls, have the same +name without the "64" suffix. +.IP +On newer platforms that only have 64\-bit file access and 32\-bit UIDs/GIDs +(e.g., alpha, ia64, s390x, x86\-64), there is just a single version of the +UID/GID and file access system calls. On platforms (typically, 32\-bit +platforms) where the *64 and *32 calls exist, the other versions are +obsolete. .IP * リアルタイムシグナル (\fBsignal\fP(7) 参照) への対応を追加するために、 \fIrt_sig*\fP 系のシステムコールがカーネル 2.2 で追加された。 これらのシステムコールが、先頭に "rt_" が付かない同名の 古いバージョンに代わって使われるようになった。 @@ -693,16 +938,36 @@ Linux 2.4 では、32 ビットアーキテクチャー上のアプリケーシ .\" .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 -についても同様である。 +.\" +.\" +The \fBselect\fP(2) and \fBmmap\fP(2) system calls use five or more arguments, +which caused problems in the way argument passing on the i386 used to be set +up. Thus, while other architectures have \fIsys_select\fP() and \fIsys_mmap\fP() +corresponding to \fI__NR_select\fP and \fI__NR_mmap\fP, on i386 one finds +\fIold_select\fP() and \fIold_mmap\fP() (routines that use a pointer to an +argument block) instead. These days passing five arguments is not a problem +any more, and there is a \fI__NR__newselect\fP that corresponds directly to +\fIsys_select\fP() and similarly \fI__NR_mmap2\fP. s390x is the only 64\-bit +architecture that has \fIold_mmap\fP(). +.SS "Architecture\-specific details: Alpha" +.IP * 3 +\fBgetxgid\fP(2) returns a pair of GID and effective GID via registers \fBr0\fP +and \fBr20\fP; it is provided instead of \fBgetgid\fP(2) and \fBgetegid\fP(2). +.IP * +\fBgetxpid\fP(2) returns a pair of PID and parent PID via registers \fBr0\fP and +\fBr20\fP; it is provided instead of \fBgetpid\fP(2) and \fBgetppid\fP(2). +.IP * +\fBold_adjtimex\fP(2) is a variant of \fBadjtimex\fP(2) that uses \fIstruct +timeval32\fP, for compatibility with OSF/1. +.IP * +\fBgetxuid\fP(2) returns a pair of GID and effective GID via registers \fBr0\fP +and \fBr20\fP; it is provided instead of \fBgetuid\fP(2) and \fBgeteuid\fP(2). +.IP * +\fBsethae\fP(2) is used for configuring the Host Address Extension register on +low\-cost Alphas in order to access address space beyond first 27 bits. .SH 関連項目 \fBintro\fP(2), \fBsyscall\fP(2), \fBunimplemented\fP(2), \fBerrno\fP(3), \fBlibc\fP(7), \fBvdso\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 index b3394cb3..12a7e5a3 100644 --- a/manual/LDP_man-pages/draft/man2/sysctl.2 +++ b/manual/LDP_man-pages/draft/man2/sysctl.2 @@ -40,27 +40,24 @@ .\" Updated 2007-10-11, Akihiro MOTOKI , LDP v2.66 .\" Updated 2013-05-01, Akihiro MOTOKI .\" -.TH SYSCTL 2 2012\-12\-22 Linux "Linux Programmer's Manual" +.TH SYSCTL 2 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 sysctl \- システムパラメーターを読み書きする .SH 書式 .nf \fB#include \fP -.br \fB#include \fP -.sp +.PP \fBint _sysctl(struct __sysctl_args *\fP\fIargs\fP\fB);\fP .fi - -\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 .SH 説明 -\fBこのシステムコールを使用しないこと!\fP 「注意」の節を参照。 - +\fBThis system call no longer exists on current kernels!\fP See NOTES. +.PP \fB_sysctl\fP() コールはカーネルパラメーターを読み書きする。例えば、 ホストネームや同時にオープンできるファイルの最大数など。 引き数は以下の形式である。 .PP .in +4n -.nf +.EX struct __sysctl_args { int *name; /* integer vector describing variable */ int nlen; /* length of this vector */ @@ -70,7 +67,7 @@ struct __sysctl_args { void *newval; /* 0 or address of new value */ size_t newlen; /* size of new value */ }; -.fi +.EE .in .PP このコールは \fI/proc/sys\fP の下のディレクトリツリーに似た木構造(tree structure)を検索する。 @@ -79,38 +76,40 @@ struct __sysctl_args { 成功した場合は \fB_sysctl\fP() は 0 を返す。失敗した場合、\-1 が返され、 \fIerrno\fP がそのエラーを示す値に設定される。 .SH エラー .TP +\fBEACCES\fP か \fBEPERM\fP +「ディレクトリ」のどれかに検索許可がなかったか、 \fIoldval\fP が 0 でないのに読み込み許可がなかったか、 \fInewval\fP が 0 +でないのに書き込み許可がなかった。 +.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 バージョン +This system call first appeared in Linux 1.3.57. It was removed in Linux +5.5; glibc support was removed in version 2.32. .SH 準拠 -このコールは Linux 特有であり、移植を意図したプログラムで使用しては いけない。 \fBsysctl\fP() コールは Linux のバージョン -1.3.57 から存在している。 これは 4.4BSD に由来している。Linux は \fI/proc/sys\fP -に写し(mirror)をもっており、項目の名前の付け方が Linux と 4.4BSD では 異っている。しかし \fBsysctl\fP() -関数の宣言は両方で同じである。 +This call is Linux\-specific, and should not be used in programs intended to +be portable. It originated in 4.4BSD. Only Linux has the \fI/proc/sys\fP +mirror, and the object naming schemes differ between Linux and 4.4BSD, but +the declaration of the \fBsysctl\fP() function is the same in both. .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 はこのシステムコールに対するラッパー関数を提供していない。 \fBsyscall\fP(2) -を使って呼び出すこと。というよりは・・・このシステムコールを呼び出さないこと。 長い間このシステムコールの使用は非推奨とされており、 -「将来のバージョンのカーネルで削除されるようだ」と言われるほどである。 あなたのプログラムにこのシステムコールがあれば、すぐにでも削除すること。 -代わりに \fI/proc/sys\fP インターフェースを使用すること。 - -このシステムコールは、カーネルの \fBCONFIG_SYSCTL_SYSCALL\fP オプションが有効になっている場合のみ利用できる。 +Use of this system call was long discouraged: since Linux 2.6.24, uses of +this system call result in warnings in the kernel log, and in Linux 5.5, the +system call was finally removed. Use the \fI/proc/sys\fP interface instead. +.PP +Note that on older kernels where this system call still exists, it is +available only if the kernel was configured with the +\fBCONFIG_SYSCTL_SYSCALL\fP option. Furthermore, glibc does not provide a +wrapper for this system call, necessitating the use of \fBsyscall\fP(2). .SH バグ オブジェクトの名前は、カーネルのバージョンごとに異なっている。 このため、このシステムコールはアプリケーションにとって 無価値なものとなっている。 .PP 全ての可能な項目が正確に記述されているわけではない。 .PP 今のところ \fI/proc/sys/kernel/ostype\fP に書き込むことでオペーレーティングシステムを変えることはできない。 -.SH 例 -.nf +.SH EXAMPLES +.EX #define _GNU_SOURCE #include #include @@ -131,7 +130,7 @@ main(void) size_t osnamelth; int name[] = { CTL_KERN, KERN_OSTYPE }; - memset(&args, 0, sizeof(struct __sysctl_args)); + memset(&args, 0, sizeof(args)); args.name = name; args.nlen = sizeof(name)/sizeof(name[0]); args.oldval = osname; @@ -146,10 +145,9 @@ main(void) printf("This machine is running %*s\en", osnamelth, osname); exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \fBproc\fP(5) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/sysfs.2 b/manual/LDP_man-pages/draft/man2/sysfs.2 index c3782a92..799c9bb4 100644 --- a/manual/LDP_man-pages/draft/man2/sysfs.2 +++ b/manual/LDP_man-pages/draft/man2/sysfs.2 @@ -37,19 +37,24 @@ .\" Updated & Modified Sat Jun 2 20:46:34 JST 2001 .\" by Yuichi SATO .\" -.TH SYSFS 2 2010\-06\-27 Linux "Linux Programmer's Manual" +.TH SYSFS 2 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 sysfs \- ファイルシステム (file system) の情報を取得する .SH 書式 \fBint sysfs(int \fP\fIoption\fP\fB, const char *\fP\fIfsname\fP\fB);\fP - +.PP \fBint sysfs(int \fP\fIoption\fP\fB, unsigned int \fP\fIfs_index\fP\fB, char *\fP\fIbuf\fP\fB);\fP - +.PP \fBint sysfs(int \fP\fIoption\fP\fB);\fP .SH 説明 -\fBsysfs\fP() は現在カーネル (kernel) に存在しているファイルシステムの型 (type) 情報を返す。 それぞれの -\fBsysfs\fP() コールの形式と返される情報は \fIoption\fP に依存しており、それは: +\fBNote\fP: if you are looking for information about the \fBsysfs\fP filesystem +that is normally mounted at \fI/sys\fP, see \fBsysfs\fP(5). +.PP +The (obsolete) \fBsysfs\fP() system call returns information about the +filesystem types currently present in the kernel. The specific form of the +\fBsysfs\fP() call and the information returned depends on the \fIoption\fP in +effect: .TP 3 \fB1\fP ファイルシステム識別文字列 (identifier string) \fIfsname\fP をファイルシステムの型インデックス (type index) @@ -76,11 +81,13 @@ fsname\fI と \fPbuf のどちらかがアクセス可能なアドレス空間 .SH 準拠 SVr4. .SH 注意 -この System\-V 由来のシステムコールは廃止予定 (obsolete) であり、 使用しないこと。 \fI/proc\fP -が利用できるシステムでは、同じ情報が \fI/proc/filesystems\fP 経由で取得でき、このインターフェースを使用すること。 +This System\-V derived system call is obsolete; don't use it. On systems +with \fI/proc\fP, the same information can be obtained via \fI/proc\fP; use that +interface instead. .SH バグ libc または glibc のサポートは存在しない。 \fIbuf\fP の大きさがどれだけ必要かを推測する方法がない。 +.SH 関連項目 +\fBproc\fP(5), \fBsysfs\fP(5) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/sysinfo.2 b/manual/LDP_man-pages/draft/man2/sysinfo.2 deleted file mode 100644 index 2b55e460..00000000 --- a/manual/LDP_man-pages/draft/man2/sysinfo.2 +++ /dev/null @@ -1,96 +0,0 @@ -.\" Copyright (C) 1993 by Dan Miner (dminer@nyx.cs.du.edu) -.\" -.\" %%%LICENSE_START(FREELY_REDISTRIBUTABLE) -.\" Permission is granted to freely distribute or modify this file -.\" for the purpose of improving Linux or its documentation efforts. -.\" If you modify this file, please put a date stamp and HOW you -.\" changed this file. Thanks. -DM -.\" %%%LICENSE_END -.\" -.\" Modified Sat Jul 24 12:35:12 1993 by Rik Faith -.\" Modified Tue Oct 22 22:29:51 1996 by Eric S. Raymond -.\" Modified Mon Aug 25 16:06:11 1997 by Nicolás Lichtmaier -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Mar 4 00:04:15 JST 1997 -.\" by HANATAKA Shinya -.\" Modified Mon Sep 23 21:56:40 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH SYSINFO 2 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -sysinfo \- システム全体の統計情報を返す。 -.SH 書式 -\fB#include \fP -.sp -\fBint sysinfo(struct sysinfo *\fP\fIinfo\fP\fB);\fP -.SH 説明 -Linux 2.3.16 までは \fBsysinfo\fP() は以下の構造体に情報を入れて返す。 - -.nf -.in +4n -struct sysinfo { - long uptime; /* Seconds since boot */ - unsigned long loads[3]; /* 1, 5, and 15 minute load averages */ - unsigned long totalram; /* Total usable main memory size */ - unsigned long freeram; /* Available memory size */ - unsigned long sharedram; /* Amount of shared memory */ - unsigned long bufferram; /* Memory used by buffers */ - unsigned long totalswap; /* Total swap space size */ - unsigned long freeswap; /* swap space still available */ - unsigned short procs; /* Number of current processes */ - char _f[22]; /* Pads structure to 64 bytes */ -}; -.in -.fi -.PP -ここでバイト単位で与えられる。 - -Linux 2.3.23 (i386)、2.3.48 (全てのアーキテクチャー) からは構造体は - -.nf -.in +4n -struct sysinfo { - long uptime; /* Seconds since boot */ - unsigned long loads[3]; /* 1, 5, and 15 minute load averages */ - unsigned long totalram; /* Total usable main memory size */ - unsigned long freeram; /* Available memory size */ - unsigned long sharedram; /* Amount of shared memory */ - unsigned long bufferram; /* Memory used by buffers */ - unsigned long totalswap; /* Total swap space size */ - unsigned long freeswap; /* swap space still available */ - unsigned short procs; /* Number of current processes */ - unsigned long totalhigh; /* Total high memory size */ - unsigned long freehigh; /* Available high memory size */ - unsigned int mem_unit; /* Memory unit size in bytes */ - char _f[20\-2*sizeof(long)\-sizeof(int)]; /* Padding to 64 bytes */ -}; -.in -.fi -.PP -となり、大きさは \fImem_unit\fP バイトの倍数で与えられる。 - -\fBsysinfo\fP() はシステム全体の統計を取得する簡単な方法を提供する。 これは \fI/dev/kmem\fP を読むよりも移植性の高い方法である。 -.SH 返り値 -成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEFAULT\fP -\fIsysinfo 構造体\fP へのポインターが不正である。 -.SH バージョン -0.98.pl6 以降の Linux カーネルに \fBsysinfo\fP() システムコールは存在する。 -.SH 準拠 -この関数は Linux 特有であり、移植を意図したプログラムでは 使用すべきでない。 -.SH 関連項目 -\fBproc\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/syslog.2 b/manual/LDP_man-pages/draft/man2/syslog.2 index 9aa9abe0..23726114 100644 --- a/manual/LDP_man-pages/draft/man2/syslog.2 +++ b/manual/LDP_man-pages/draft/man2/syslog.2 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (C) 1995 Andries Brouwer (aeb@cwi.nl) .\" and Copyright (C) 2012, 2014 Michael Kerrisk .\" @@ -48,24 +47,23 @@ .\" Updated 2012-05-29, Akihiro MOTOKI .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH SYSLOG 2 2014\-07\-08 Linux "Linux Programmer's Manual" +.TH SYSLOG 2 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 syslog, klogctl \- カーネルのメッセージリングバッファーを読んだり消去したりする; console_loglevel の設定を行う .SH 書式 .nf \fBint syslog(int \fP\fItype\fP\fB, char *\fP\fIbufp\fP\fB, int \fP\fIlen\fP\fB);\fP \fB/* glibc ではラッパー関数は提供されていない */\fP -.sp -/* glibc のインターフェース */ -.br +.PP +/* The glibc interface */ \fB#include \fP -.sp +.PP \fBint klogctl(int \fP\fItype\fP\fB, char *\fP\fIbufp\fP\fB, int \fP\fIlen\fP\fB);\fP .fi .SH 説明 \fI注意\fP: おそらく、あなたが探しているのは、 \fBsyslogd\fP(8) と通信する C ライブラリ関数の \fBsyslog\fP() でしょう。詳細は \fBsyslog\fP(3) を参照のこと。 - +.PP このページはカーネルの \fBsyslog\fP() システムコールについて説明している。 \fBsyslog\fP() システムコールはカーネルの \fIprintk\fP() バッファーを制御するために使用される。 このシステムコールに対する glibc ラッパー関数は \fBklogctl\fP() と呼ばれている。 @@ -115,7 +113,7 @@ syslog, klogctl \- カーネルのメッセージリングバッファーを読 \fIminimum_console_loglevel\fP に設定する。 これにより、コンソールにメッセージが出力されなくなる。 Linux 2.6.32 より前では、 このコマンドは \fIconsole_loglevel\fP を \fIminimum_console_loglevel\fP に設定するだけであった。 下記の \fI/proc/sys/kernel/printk\fP の議論を参照。 - +.IP 引き数 \fIbufp\fP と \fIlen\fP は無視される。 .TP \fBSYSLOG_ACTION_CONSOLE_ON\fP (7) @@ -124,7 +122,7 @@ syslog, klogctl \- カーネルのメッセージリングバッファーを読 を前のコマンドが保存した値に戻す。 Linux 2.6.32 より前では、 このコマンドは単に \fIconsole_loglevel\fP を \fIdefault_console_loglevel\fP に設定するだけであった。 下記の \fI/proc/sys/kernel/printk\fP の議論を参照。 - +.IP 引き数 \fIbufp\fP と \fIlen\fP は無視される。 .TP \fBSYSLOG_ACTION_CONSOLE_LEVEL\fP (8) @@ -158,11 +156,13 @@ Linux 2.6.37 以降では、「特権を持つ」とは呼び出し者が .TP \fIconsole_loglevel\fP .\" since Linux 2.4 -メッセージのログレベルがこの値よりも小さい場合のみ、メッセージだけがコンソールに出力される。 このフィールドのデフォルト値は -\fBDEFAULT_CONSOLE_LOGLEVEL\fP (7) だが、 カーネルのコマンドラインに "quiet" という単語が含まれている場合は 4 -に設定され、 "debug" という単語が含まれている場合は 10 に設定され、 カーネルフォールトが発生した場合には 15 に設定される (但し、10 -や 15 という数字に意味はなく、8 と同等である)。 \fIconsole_loglevel\fP の値は \fItype\fP が 8 の -\fBsyslog\fP() の呼び出しによって設定でき、 設定できる値の範囲は 1\-8 である。 +Only messages with a log level lower than this value will be printed to the +console. The default value for this field is \fBDEFAULT_CONSOLE_LOGLEVEL\fP +(7), but it is set to 4 if the kernel command line contains the word +"quiet", 10 if the kernel command line contains the word "debug", and to 15 +in case of a kernel fault (the 10 and 15 are just silly, and equivalent to +8). The value of \fIconsole_loglevel\fP can be set (to a value in the range +1\(en8) by a \fBsyslog\fP() call with a \fItype\fP of 8. .TP \fIdefault_message_loglevel\fP .\" commit 5af5bcb8d37f99ba415a1adc6da71051b84f93a5 @@ -181,7 +181,6 @@ Linux 2.6.37 以降では、「特権を持つ」とは呼び出し者が .SS ログレベル すべての \fIprintk\fP() メッセージにはそれぞれログレベルがある。 ログレベルがメッセージの一部として明示的に指定されなかった場合は、 ログレベルは \fIdefault_message_loglevel\fP になる。ログレベルの一般的な意味は以下のとおりである。 - .TS lB lB lB lB c l. @@ -195,14 +194,14 @@ KERN_NOTICE 5 通常だが重要な状況 KERN_INFO 6 参考情報 KERN_DEBUG 7 デバッグレベルのメッセージ .TE - +.sp 1 カーネルの \fIprintk()\fP ルーチンは、メッセージのログレベルが \fIconsole_loglevel\fP よりも小さい値の場合にのみ、 メッセージをコンソールに出力する。 .SH 返り値 \fItype\fP が 2, 3, 4 の場合、成功すると \fBsyslog\fP() は読み出したバイト数を返す。 \fItype\fP が 9 の場合、 カーネルログバッファーにある現在読み出し可能なバイト数を返す。 \fItype\fP が 10 の場合、 カーネルログバッファーの総量を返す。 \fItype\fP がそれ以外の値の場合、成功すると 0 が返される。 - +.PP エラーの場合は、\-1\ が返り、 \fIerrno\fP にエラーを示す値が設定される。 .SH エラー .TP @@ -230,8 +229,7 @@ KERN_DEBUG 7 デバッグレベルのメッセージ かなり初期の頃から、同じ名前を持つシステムコールとライブラリルーチンが 全く異なる別物であるのは不幸なことだと指摘されてきた。 .SH 関連項目 -\fBsyslog\fP(3), \fBcapabilities\fP(7) +\fBdmesg\fP(1), \fBsyslog\fP(3), \fBcapabilities\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/tee.2 b/manual/LDP_man-pages/draft/man2/tee.2 index 29587635..8398c4f3 100644 --- a/manual/LDP_man-pages/draft/man2/tee.2 +++ b/manual/LDP_man-pages/draft/man2/tee.2 @@ -33,14 +33,14 @@ .\" all rights reserved. .\" Translated 2007-02-04, Akihiro MOTOKI .\" -.TH TEE 2 2014\-12\-31 Linux "Linux Programmer's Manual" +.TH TEE 2 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 tee \- パイプの中身を複製する .SH 書式 .nf \fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ \fB#include \fP - +.PP \fBssize_t tee(int \fP\fIfd_in\fP\fB, int \fP\fIfd_out\fP\fB, size_t \fP\fIlen\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP .fi .\" Return type was long before glibc 2.7 @@ -54,8 +54,9 @@ tee \- パイプの中身を複製する \fBtee\fP() は、ファイルディスクリプター \fIfd_in\fP が参照するパイプからファイルディスクリプター \fIfd_out\fP が参照するパイプへ最大 \fIlen\fP バイトのデータを複製する。 この操作では、複製されるデータは \fIfd_in\fP からは消費されない。したがって、これらのデータをこの後の \fBsplice\fP(2) でコピーすることができる。 - -\fIflags\fP は一連の修飾フラグであり、 \fBsplice\fP(2) や \fBvmsplice\fP(2) と共通の名前である。 +.PP +\fIflags\fP is a bit mask that is composed by ORing together zero or more of +the following values: .TP 1.9i \fBSPLICE_F_MOVE\fP 現在のところ \fBtee\fP() では何の効果もない。 \fBsplice\fP(2) 参照。 @@ -72,12 +73,14 @@ tee \- パイプの中身を複製する 成功して完了すると、 \fBtee\fP() は入出力間で複製されたバイト数を返す。 返り値 0 はデータの転送が行われなかったことを示す。 この場合、処理を停止 (block) しても無意味である。 なぜなら、 \fIfd_in\fP が参照するパイプの書き込み側に接続されている者がいないからである。 - +.PP エラーの場合、 \fBtee\fP() は \-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 .SH エラー .TP \fBEAGAIN\fP -\fBSPLICE_F_NONBLOCK\fP が \fIflags\fP に指定されていて、かつ操作が停止するような状態であった。 +\fBSPLICE_F_NONBLOCK\fP was specified in \fIflags\fP or one of the file +descriptors had been marked as nonblocking (\fBO_NONBLOCK\fP)\fB,\fP and the +operation would block. .TP \fBEINVAL\fP \fIfd_in\fP と \fIfd_out\fP のどちらかがパイプを参照していない。もしくは \fIfd_in\fP と \fIfd_out\fP @@ -91,22 +94,23 @@ tee \- パイプの中身を複製する .SH 準拠 このシステムコールは Linux 固有である。 .SH 注意 -概念としては、 \fBtee\fP() は二つのパイプ間でデータのコピーを行う。 しかし、実際には実データのコピーは行われない。 内部では、 -\fBtee\fP() は入力側に対する参照だけを作成することで出力側にデータを 追加する。 -.SH 例 +Conceptually, \fBtee\fP() copies the data between the two pipes. In reality +no real data copying takes place though: under the covers, \fBtee\fP() assigns +data to the output by merely grabbing a reference to the input. +.SH EXAMPLES 以下の例は、 \fBtee\fP() システムコールを使って、 基本的な \fBtee\fP(1) プログラムを実装したものである。 以下は利用例である。 - +.PP .in +4n -.nf +.EX $ \fBdate |./a.out out.log | cat\fP Tue Oct 28 10:06:00 CET 2014 $ \fBcat out.log\fP Tue Oct 28 10:06:00 CET 2014 -.fi +.EE .in .SS プログラムのソース -.nf - +\& +.EX #define _GNU_SOURCE #include #include @@ -165,10 +169,9 @@ main(int argc, char *argv[]) close(fd); exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 -\fBsplice\fP(2), \fBvmsplice\fP(2) +\fBsplice\fP(2), \fBvmsplice\fP(2), \fBpipe\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/time.2 b/manual/LDP_man-pages/draft/man2/time.2 deleted file mode 100644 index e8bdc7d7..00000000 --- a/manual/LDP_man-pages/draft/man2/time.2 +++ /dev/null @@ -1,79 +0,0 @@ -.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 -.\" -.\" %%%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 -.\" Modified Sat Jul 24 14:13:40 1993 by Rik Faith -.\" Additions by Joseph S. Myers , 970909 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 SUTO, Mitsuaki -.\" all rights reserved. -.\" Translated Thu Jun 26 21:11:17 JST 1997 -.\" by SUTO, Mitsuaki -.\" Modified Sun Mar 21 17:23:27 JST 1999 -.\" by HANATAKA Shinya -.\" -.TH TIME 2 2011\-09\-09 Linux "Linux Programmer's Manual" -.SH 名前 -time \- 秒単位の時間を得る -.SH 書式 -\fB#include \fP -.sp -\fBtime_t time(time_t *\fP\fIt\fP\fB);\fP -.SH 説明 -\fBtime\fP() は、紀元 (Epoch; 1970\-01\-01 00:00:00 (UTC)) からの秒数で返す。 - -もし \fIt\fP が NULL でなかったら返り値は \fIt\fP の指しているメモリーにも格納される。 -.SH 返り値 -成功した場合、紀元(the Epoch)からの経過秒数を返す。エラーの場合は \fI((time_t)\ \-1)\fP を返し、\fIerrno\fP を設定する。 -.SH エラー -.TP -\fBEFAULT\fP -\fIt\fP がアクセス可能なアドレス空間の外を指している。 -.SH 準拠 -.\" .br -.\" Under 4.3BSD, this call is obsoleted by -.\" .BR gettimeofday (2). -SVr4, 4.3BSD, C89, C99, POSIX.1\-2001. POSIX にはエラー状態の規定はない。 -.SH 注意 -POSIX.1 では、指定した時刻と紀元との間の秒数を近似する変換式を使って、 - \fI「紀元からの経過秒数 (seconds since the Epoch)」\fP を定義している。 -この変換式では、4 で割り切れる年で、100 で割り切れない年はすべて閏年 -(但し、400 で割り切れる年は閏年) であるという点も考慮されている。 -「紀元からの経過秒数」は、紀元と現在時刻との間で実際に経過した秒数と同じではない。 -なぜならば、閏秒が存在するし、システムの時計を標準時間 (standard reference) -に同期させる必要もないからである。 -この定義の目的は、紀元からの経過秒数の解釈に一貫性を持たせることになる。 -より詳しい原理は POSIX.1 Rationale A.4.15 を参照すること。 -.SH 関連項目 -\fBdate\fP(1), \fBgettimeofday\fP(2), \fBctime\fP(3), \fBftime\fP(3), \fBtime\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/timer_delete.2 b/manual/LDP_man-pages/draft/man2/timer_delete.2 index 0faa5107..19dae8c9 100644 --- a/manual/LDP_man-pages/draft/man2/timer_delete.2 +++ b/manual/LDP_man-pages/draft/man2/timer_delete.2 @@ -33,22 +33,22 @@ .\" all rights reserved. .\" Translated 2013-08-17, Akihiro MOTOKI .\" -.TH TIMER_DELETE 2 2009\-02\-20 Linux "Linux Programmer's Manual" +.TH TIMER_DELETE 2 2015\-08\-08 Linux "Linux Programmer's Manual" .SH 名前 timer_delete \- プロセス単位の POSIX タイマーを削除する .SH 書式 .nf \fB#include \fP - +.PP \fBint timer_delete(timer_t \fP\fItimerid\fP\fB);\fP .fi - +.PP \fI\-lrt\fP でリンクする。 -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBtimer_delete\fP(): _POSIX_C_SOURCE\ >=\ 199309L .SH 説明 \fBtimer_delete\fP() は \fItimerid\fP で指定された ID のタイマーを削除する。 \fBtimer_delete\fP() @@ -63,10 +63,10 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 .SH バージョン このシステムコールは Linux 2.6 以降で利用できる。 .SH 準拠 -POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008. .SH 関連項目 \fBclock_gettime\fP(2), \fBtimer_create\fP(2), \fBtimer_getoverrun\fP(2), \fBtimer_settime\fP(2), \fBtime\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/timerfd_create.2 b/manual/LDP_man-pages/draft/man2/timerfd_create.2 deleted file mode 100644 index 38e1f2c8..00000000 --- a/manual/LDP_man-pages/draft/man2/timerfd_create.2 +++ /dev/null @@ -1,387 +0,0 @@ -.\" Copyright (C) 2008 Michael Kerrisk -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" FIXME Linux 3.0: timerfd_settime() adds a TFD_TIMER_CANCEL_ON_SET flag; -.\" This flag needs to documented. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2008 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2008-11-19, Akihiro MOTOKI , LDP v3.13 -.\" Updated 2009-04-24, Akihiro MOTOKI , LDP 3.20 -.\" Updated 2012-05-04, Akihiro MOTOKI -.\" -.TH TIMERFD_CREATE 2 2011\-09\-14 Linux "Linux Programmer's Manual" -.SH 名前 -timerfd_create, timerfd_settime, timerfd_gettime \- ファイルディスクリプター経由で通知するタイマー -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint timerfd_create(int \fP\fIclockid\fP\fB, int \fP\fIflags\fP\fB);\fP -.sp -\fBint timerfd_settime(int \fP\fIfd\fP\fB, int \fP\fIflags\fP\fB,\fP -\fB const struct itimerspec *\fP\fInew_value\fP\fB,\fP -\fB struct itimerspec *\fP\fIold_value\fP\fB);\fP -.sp -\fBint timerfd_gettime(int \fP\fIfd\fP\fB, struct itimerspec *\fP\fIcurr_value\fP\fB);\fP -.fi -.SH 説明 -これらのシステムコールは、満了通知をファイルディスクリプター経由で配送する タイマーの生成と操作を行う。 これらは、 \fBsetitimer\fP(2) -や \fBtimer_create\fP(2) を用いる方法の代わりとなるものであり、このファイルディスクリプターを \fBselect\fP(2), -\fBpoll\fP(2), \fBepoll\fP(7) で監視できるという利点がある。 - -.\" -これらのシステムコールを使うのは、それぞれ \fBtimer_create\fP(2), \fBtimer_settime\fP(2), -\fBtimer_gettime\fP(2) を使うのと同様である (\fBtimer_getoverrun\fP(2) -に対応するものはなく、以下で説明するように この機能は \fBread\fP(2) により提供される)。 -.SS timerfd_create() -.\" FIXME -.\" Additional clocks are now supported: -.\" CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM -.\" Since Linux 3.11, commit 11ffa9d6065f344a9bd769a2452f26f2f671e5f8 -.\" CLOCK_BOOTTIME -.\" Since Linux 3.15, commit 4a2378a943f09907fb1ae35c15de917f60289c14 -\fBtimerfd_create\fP() は新規のタイマーオブジェクトを生成し、そのタイマーを参照するファイル ディスクリプターを返す。 -\fIclockid\fP 引き数は、タイマーの進捗を管理するためのクロックを指定するもので、 \fBCLOCK_REALTIME\fP か -\fBCLOCK_MONOTONIC\fP のいずれかでなければならない。 \fBCLOCK_REALTIME\fP -はシステム全体で使用されるクロックで、このクロックは変更可能である。 \fBCLOCK_MONOTONIC\fP -は変更されることのないクロックで、(システム時刻の手動での変更などの) システムクロックの不連続な変化の影響を受けない。 これらのクロックの現在の値は -\fBclock_gettime\fP(2) を使って取得できる。 - -Linux 2.6.27 以降では、 以下の値のいくつかをビット単位の論理和 (OR) で指定することで、 \fBtimerfd_create\fP() -の振舞いを変更することができる。 -.TP 14 -\fBTFD_NONBLOCK\fP -新しく生成されるオープンファイル記述 (open file description) の \fBO_NONBLOCK\fP -ファイルステータスフラグをセットする。 このフラグを使うことで、 \fBO_NONBLOCK\fP をセットするために \fBfcntl\fP(2) -を追加で呼び出す必要がなくなる。 -.TP -\fBTFD_CLOEXEC\fP -新しいファイルディスクリプターに対して close\-on\-exec (\fBFD_CLOEXEC\fP) フラグをセットする。 -このフラグが役に立つ理由については、 \fBopen\fP(2) の \fBO_CLOEXEC\fP フラグの説明を参照のこと。 -.PP -バージョン 2.6.26 以前の Linux では、 \fIflags\fP 引き数は未使用であり、0 を指定しなければならない。 -.SS timerfd_settime() -\fBtimerfd_settime\fP() は、ファイルディスクリプター \fIfd\fP により参照されるタイマーを開始したり停止したりする。 - -\fInew_value\fP 引き数は、タイマーの満了時間 (expiration) の初期値と間隔 (interval) を -指定する。この引き数で使用されている \fIitimerspec\fP 構造体には 2 つのフィールドがあり、各フィールドは \fItimespec\fP -型の構造体である。 -.in +4n -.nf - -struct timespec { - time_t tv_sec; /* Seconds */ - long tv_nsec; /* Nanoseconds */ -}; - -struct itimerspec { - struct timespec it_interval; /* Interval for periodic timer */ - struct timespec it_value; /* Initial expiration */ -}; -.fi -.in -.PP -\fInew_value.it_value\fP はタイマーの満了時間の初期値を、秒とナノ秒で指定する。 \fInew_value.it_value\fP -のフィールドのうち少なくとも一方に 0 以外の値を設定すると、 タイマーが開始される。 両方のフィールドに 0 を設定すると、タイマーが停止する。 - -\fInew_value.it_interval\fP はタイマーの一回目の満了後に繰り返しタイマーの満了間隔を、秒とナノ秒で指定する。 -\fInew_value.it_interval\fP のフィールドのうち少なくとも一方に 0 以外の値を設定すると、 繰り返しタイマーが有効になる。 -両方のフィールドに 0 を設定した場合、タイマーは \fInew_value.it_value\fP で指定された時間後に、一回だけ満了して停止する。 - -\fIflags\fP 引き数には 0 か \fBTFD_TIMER_ABSTIME\fP を指定する。 0 は相対時刻タイマーを意味し、 -\fInew_value.it_value\fP では \fIclockid\fP で指定されたクロックの現在の値からの相対的な時刻を指定する。 -\fBTFD_TIMER_ABSTIME\fP は絶対時刻タイマーを意味し、 \fInew_value.it_interval\fP では \fIclockid\fP -で指定されたクロックの絶対時刻を指定する。 つまり、クロックの値が \fInew_value.it_interval\fP -で指定された時刻に達したら、タイマーが満了する。 - -.\" -\fIold_value\fP 引き数が NULL でない場合、 \fIold_value\fP 引き数が指す \fIitimerspec\fP 構造体は、 -\fBtimerfd_settime\fP() を呼び出した時点でのタイマーの設定を返すのに使用される。 下記の \fBtimerfd_gettime\fP() -の説明を参照。 -.SS timerfd_gettime() -\fBtimerfd_gettime\fP() は、ファイルディスクリプター \fIfd\fP で参照されるタイマーの現在の設定が入った -\fIitimerspec\fP 構造体を、 \fIcurr_value\fP に格納して返す。 - -\fIit_value\fP フィールドは、タイマーが次に満了するまでの残り時間を返す。 この構造体の両方のフィールドが 0 -であれば、タイマーは現在停止している。 タイマー設定時に \fBTFD_TIMER_ABSTIME\fP -フラグが指定されたかに関わらず、このフィールドは常に相対値が格納される。 - -\fIit_interval\fP フィールドは、タイマーの間隔を返す。 この構造体の両方のフィールドが 0 であれば、タイマーは -\fInew_value.it_value\fP で指定された時間後に一回だけ満了して停止するように設定されている。 -.SS タイマーファイルディスクリプターに対する操作 -\fBtimerfd_create\fP() が返すファイルディスクリプターは以下の操作をサポートしている。 -.TP -\fBread\fP(2) -\fBtimerfd_settime\fP() を使ってタイマーの設定が最後変更されて以降、または \fBread\fP(2) -の呼び出しに最後に成功して以降に、タイマーの満了が一回以上発生していれば、 \fBread\fP(2) に渡されたバッファーに、タイマー満了回数を示す 8 -バイトの unsigned 型の整数 (\fIuint64_t\fP) が返される (返される値はホストバイトオーダ、つまりそのホストマシンにおける -整数の通常のバイトオーダである)。 -.IP -\fBread\fP(2) を行った時点でタイマーの満了が発生していなければ、 \fBread\fP(2) は停止 (block) -する、もしくはファイルディスクリプターが 非停止 (nonblocking) に設定されている場合はエラー \fBEAGAIN\fP で失敗する -(非停止モードにするには、 \fBfcntl\fP(2) の \fBF_SETFL\fP 命令で \fBO_NONBLOCK\fP フラグをセットする)。 -.IP -渡されたバッファーの大きさが 8 バイト未満の場合、 \fBread\fP(2) はエラー \fBEINVAL\fP で失敗する。 -.TP -\fBpoll\fP(2), \fBselect\fP(2) (と同様の操作) -一つ以上のタイマー満了が発生していれば、 ファイルディスクリプターは読み出し可能となる (\fBselect\fP(2) の \fIreadfds\fP 引き数や -\fBpoll\fP(2) の \fBPOLLIN\fP フラグ)。 -.IP -このファイルディスクリプターは、他のファイルディスクリプター多重 API である \fBpselect\fP(2), \fBppoll\fP(2), -\fBepoll\fP(7) もサポートしている。 -.TP -\fBclose\fP(2) -.\" -ファイルディスクリプターがそれ以降は必要なくなった際には、クローズすべきである。 同じ timer -オブジェクトに関連付けられたファイルディスクリプターが全て クローズされると、そのタイマーは解除され、 -そのオブジェクト用の資源がカーネルにより解放される。 -.SS "fork(2) での扱い" -.\" -\fBfork\fP(2) が行われると、子プロセスは \fBtimerfd_create\fP() により生成されたファイルディスクリプターのコピーを -継承する。そのファイルディスクリプターは、親プロセスの対応する ファイルディスクリプターと同じタイマーオブジェクトを参照しており、 子プロセスの -\fBread\fP(2) でも同じタイマーの満了に関する情報が返される。 -.SS "execve(2) での扱い" -\fBexecve\fP(2) の前後で \fBtimerfd_create\fP() により生成されたファイルディスクリプターは保持され、 -タイマーが開始されていた場合にはタイマーの満了が発生し続ける。 -.SH 返り値 -成功すると、 \fBtimerfd_create\fP() は新しいファイルディスクリプターを返す。 エラーの場合、\-1 を返し、 \fIerrno\fP -にエラーを示す値を設定する。 - -\fBtimerfd_settime\fP() と \fBtimerfd_gettime\fP() は成功すると 0 を返す。 エラーの場合、\-1 を返し、 -\fIerrno\fP にエラーを示す値を設定する。 -.SH エラー -\fBtimerfd_create\fP() は以下のエラーで失敗する可能性がある。 -.TP -\fBEINVAL\fP -\fIclockid\fP 引き数が \fBCLOCK_MONOTONIC\fP でも \fBCLOCK_REALTIME\fP でもない。 -.TP -\fBEINVAL\fP -\fIflags\fP が無効である。もしくは、Linux 2.6.26 以前の場合には \fIflags\fP が 0 以外である。 -.TP -\fBEMFILE\fP -オープン済みのファイルディスクリプターの数がプロセスあたりの上限に 達していた。 -.TP -\fBENFILE\fP -オープン済みのファイル総数がシステム全体の上限に達していた。 -.TP -\fBENODEV\fP -(カーネル内の) 無名 inode デバイスをマウントできなかった。 -.TP -\fBENOMEM\fP -タイマーを作成するのに十分なカーネルメモリーがなかった。 -.PP -\fBtimerfd_settime\fP() と \fBtimerfd_gettime\fP() は以下のエラーで失敗する可能性がある。 -.TP -\fBEBADF\fP -\fIfd\fP が有効なファイルディスクリプターでない。 -.TP -\fBEFAULT\fP -\fInew_value\fP, \fIold_value\fP, \fIcurr_value\fP が有効なポインターではない。 -.TP -\fBEINVAL\fP -\fIfd\fP が有効な timerfd ファイルディスクリプターでない。 -.PP -\fBtimerfd_settime\fP() は以下のエラーで失敗することもある。 -.TP -\fBEINVAL\fP -\fInew_value\fP が適切に初期化されていない (\fItv_nsec\fP の一つが 0 から 999,999,999 までの範囲に入っていない)。 -.TP -\fBEINVAL\fP -.\" This case only checked since 2.6.29, and 2.2.2[78].some-stable-version. -.\" In older kernel versions, no check was made for invalid flags. -\fIflags\fP が無効である。 -.SH バージョン -これらのシステムコールはカーネル 2.6.25 以降の Linux で利用可能である。 ライブラリ側のサポートはバージョン 2.8 以降の glibc -で提供されている。 -.SH 準拠 -これらのシステムコールは Linux 固有である。 -.SH バグ -.\" 2.6.29 -現在のところ、 \fBtimerfd_create\fP() が対応している clockid の種類は \fBtimer_create\fP(2) -よりも少ない。 -.SH 例 -以下のプログラムは、タイマーを作成し、その進捗をモニターするものである。 このプログラムは最大で 3 個のコマンドライン引き数を取り、 -第一引き数ではタイマーの満了時間の初期値 (秒数単位) を、 第二引き数ではタイマーの間隔 (秒数単位) を、 -第三引き数ではタイマーが何回満了したらプログラムが終了するかを指定する。 第二引き数と第三引き数は省略可能である。 - -以下のシェルのセッションはこのプログラムの使用例を示したものである。 -.in +4n -.nf - -$\fB a.out 3 1 100\fP -0.000: timer started -3.000: read: 1; total=1 -4.000: read: 1; total=2 -\fB^Z \fP # type control\-Z to suspend the program -[1]+ Stopped ./timerfd3_demo 3 1 100 -$ \fBfg\fP # Resume execution after a few seconds -a.out 3 1 100 -9.660: read: 5; total=7 -10.000: read: 1; total=8 -11.000: read: 1; total=9 -\fB^C \fP # type control\-C to suspend the program -.fi -.in -.SS プログラムのソース -\& -.nf -.\" The commented out code here is what we currently need until -.\" the required stuff is in glibc -.\" -.\" -.\"/* Link with -lrt */ -.\"#define _GNU_SOURCE -.\"#include -.\"#include -.\"#include -.\"#if defined(__i386__) -.\"#define __NR_timerfd_create 322 -.\"#define __NR_timerfd_settime 325 -.\"#define __NR_timerfd_gettime 326 -.\"#endif -.\" -.\"static int -.\"timerfd_create(int clockid, int flags) -.\"{ -.\" return syscall(__NR_timerfd_create, clockid, flags); -.\"} -.\" -.\"static int -.\"timerfd_settime(int fd, int flags, struct itimerspec *new_value, -.\" struct itimerspec *curr_value) -.\"{ -.\" return syscall(__NR_timerfd_settime, fd, flags, new_value, -.\" curr_value); -.\"} -.\" -.\"static int -.\"timerfd_gettime(int fd, struct itimerspec *curr_value) -.\"{ -.\" return syscall(__NR_timerfd_gettime, fd, curr_value); -.\"} -.\" -.\"#define TFD_TIMER_ABSTIME (1 << 0) -.\" -.\"//////////////////////////////////////////////////////////// -#include -#include -#include -#include -#include -#include /* Definition of uint64_t */ - -#define handle_error(msg) \e - do { perror(msg); exit(EXIT_FAILURE); } while (0) - -static void -print_elapsed_time(void) -{ - static struct timespec start; - struct timespec curr; - static int first_call = 1; - int secs, nsecs; - - if (first_call) { - first_call = 0; - if (clock_gettime(CLOCK_MONOTONIC, &start) == \-1) - handle_error("clock_gettime"); - } - - if (clock_gettime(CLOCK_MONOTONIC, &curr) == \-1) - handle_error("clock_gettime"); - - secs = curr.tv_sec \- start.tv_sec; - nsecs = curr.tv_nsec \- start.tv_nsec; - if (nsecs < 0) { - secs\-\-; - nsecs += 1000000000; - } - printf("%d.%03d: ", secs, (nsecs + 500000) / 1000000); -} - -int -main(int argc, char *argv[]) -{ - struct itimerspec new_value; - int max_exp, fd; - struct timespec now; - uint64_t exp, tot_exp; - ssize_t s; - - if ((argc != 2) && (argc != 4)) { - fprintf(stderr, "%s init\-secs [interval\-secs max\-exp]\en", - argv[0]); - exit(EXIT_FAILURE); - } - - if (clock_gettime(CLOCK_REALTIME, &now) == \-1) - handle_error("clock_gettime"); - - /* Create a CLOCK_REALTIME absolute timer with initial - expiration and interval as specified in command line */ - - new_value.it_value.tv_sec = now.tv_sec + atoi(argv[1]); - new_value.it_value.tv_nsec = now.tv_nsec; - if (argc == 2) { - new_value.it_interval.tv_sec = 0; - max_exp = 1; - } else { - new_value.it_interval.tv_sec = atoi(argv[2]); - max_exp = atoi(argv[3]); - } - new_value.it_interval.tv_nsec = 0; - - fd = timerfd_create(CLOCK_REALTIME, 0); - if (fd == \-1) - handle_error("timerfd_create"); - - if (timerfd_settime(fd, TFD_TIMER_ABSTIME, &new_value, NULL) == \-1) - handle_error("timerfd_settime"); - - print_elapsed_time(); - printf("timer started\en"); - - for (tot_exp = 0; tot_exp < max_exp;) { - s = read(fd, &exp, sizeof(uint64_t)); - if (s != sizeof(uint64_t)) - handle_error("read"); - - tot_exp += exp; - print_elapsed_time(); - printf("read: %llu; total=%llu\en", - (unsigned long long) exp, - (unsigned long long) tot_exp); - } - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBeventfd\fP(2), \fBpoll\fP(2), \fBread\fP(2), \fBselect\fP(2), \fBsetitimer\fP(2), -\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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/times.2 b/manual/LDP_man-pages/draft/man2/times.2 index c0d7fc72..9092f666 100644 --- a/manual/LDP_man-pages/draft/man2/times.2 +++ b/manual/LDP_man-pages/draft/man2/times.2 @@ -53,36 +53,41 @@ .\" Updated 2005-04-20, Kentaro Shirakata .\" Updated 2008-02-12, Akihiro MOTOKI , LDP v2.77 .\" -.TH TIMES 2 2012\-10\-22 Linux "Linux Programmer's Manual" +.TH TIMES 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 times \- プロセス時間を取得する .SH 書式 \fB#include \fP -.sp +.PP \fBclock_t times(struct tms *\fP\fIbuf\fP\fB);\fP .SH 説明 \fBtimes\fP() は現在のプロセス時間を \fIbuf\fP が指している \fBstruct tms\fP に格納する。 \fIstruct tms\fP は \fI\fP で以下のように定義されている: -.sp +.PP .in +4n -.nf +.EX struct tms { clock_t tms_utime; /* user time */ clock_t tms_stime; /* system time */ clock_t tms_cutime; /* user time of children */ clock_t tms_cstime; /* system time of children */ }; -.fi +.EE .in -.LP -\fItms_utime\fP フィールドは、呼び出したプロセスが命令を実行するのに消費した CPU 時間である。 \fItms_stime\fP -フィールドは、呼び出したプロセスのために実行されたタスクで、 システムが消費した CPU 時間である。 \fItms_cutime\fP フィールドは、 -終了を待っている全ての子プロセスの \fItms_utime\fP と \fItms_cutime\fP の合計である。 \fItms_cstime\fP フィールドは、 -終了を待っている全ての子プロセスの \fItms_stime\fP と \fItms_cstime\fP の合計である。 -.LP +.PP +The \fItms_utime\fP field contains the CPU time spent executing instructions of +the calling process. The \fItms_stime\fP field contains the CPU time spent +executing inside the kernel while performing tasks on behalf of the calling +process. +.PP +The \fItms_cutime\fP field contains the sum of the \fItms_utime\fP and +\fItms_cutime\fP values for all waited\-for terminated children. The +\fItms_cstime\fP field contains the sum of the \fItms_stime\fP and \fItms_cstime\fP +values for all waited\-for terminated children. +.PP 終了する子(及びその子孫)プロセスの時間は \fBwait\fP(2) や \fBwaitpid\fP(2) がプロセス ID を返した瞬間に加算される。 つまり、子がまだ終了を待っていない状態では 孫プロセスの時間は決して現れない。 -.LP +.PP 全ての時間はクロック数で返される。 .SH 返り値 \fBtimes\fP() は過去のある時点から経過したクロック数 (clock tick) を返す。 この返り値は \fIclock_t\fP @@ -92,12 +97,14 @@ struct tms { \fBEFAULT\fP \fItms\fP がプロセスのアドレス空間の外を指している。 .SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.3BSD. .SH 注意 一秒あたりのクロック数は以下で得ることができる。 +.PP .in +4n - +.EX sysconf(_SC_CLK_TCK); +.EE .in .PP POSIX.1\-1996 では、\fBCLK_TCK\fP シンボル (\fI\fP で定義されている) @@ -110,21 +117,25 @@ Linux 2.6.9 より前のバージョンでは、 \fBSIGCHLD\fP を \fBSIG_IGN\fP \fItms_cstime\fP と \fItms_cutime\fP フィールドに含まれる。 しかし、POSIX.1\-2001 では、この動作は呼び出し元が \fBwait\fP(2) 関数群で子プロセスを待った場合にのみ起きるべきだとしている。 標準とは異なるこの動作は Linux 2.6.9 以降で修正されている。 - +.PP Linux では、 \fIbuf\fP 引数に NULL を指定することができ、その場合は \fBtimes\fP() は単に関数の結果を返す。 しかし、POSIX はこの振る舞いは規定されておらず、 その他のほとんどの UNIX 実装は \fIbuf\fP の値として非 NULL の値を要求する。 -.LP +.PP \fBclock\fP(3) も \fIclock_t\fP 型の値を返すが、この値は \fBtimes\fP() で使用されるクロック tick 数ではなく、 \fBCLOCKS_PER_SEC\fP が単位である点に注意すること。 - +.PP .\" .PP .\" On older systems the number of clock ticks per second is given .\" by the variable HZ. -Linux では、 \fBtimes\fP() の返り値を計算する起点となる「過去の任意の時点」は、カーネルのバージョン により異なる。 Linux 2.4 -以前では、この時点はシステムが起動した瞬間である。 Linux 2.6 以降では、この時点はシステム起動時刻の \fI(2^32/HZ) \- 300\fP -(および 4億2900万) 秒前である。 このようにカーネルバージョン (や UNIX の実装) により異なることと、 返り値が \fIclock_t\fP -の範囲をオーバーフローする可能性があるという事実を考慮すると、 移植性が必要なアプリケーションではこの値を使うのは避けるのが賢明であろう。 -経過時間を測りたい場合には、代わりに \fBclock_gettime\fP(2) を使用すること。 +On Linux, the "arbitrary point in the past" from which the return value of +\fBtimes\fP() is measured has varied across kernel versions. On Linux 2.4 and +earlier, this point is the moment the system was booted. Since Linux 2.6, +this point is \fI(2^32/HZ) \- 300\fP seconds before system boot time. This +variability across kernel versions (and across UNIX implementations), +combined with the fact that the returned value may overflow the range of +\fIclock_t\fP, means that a portable application would be wise to avoid using +this value. To measure changes in elapsed time, use \fBclock_gettime\fP(2) +instead. .SS 歴史 SVr1\-3 では \fIlong\fP を返し、構造体のメンバに \fItime_t\fP 型を使っていたが、紀元からの秒数ではなくクロック数を格納していた。 V7 では構造体のメンバに \fIlong\fP 型を使っていた。まだ \fItime_t\fP 型がなかったからである。 @@ -143,6 +154,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/tkill.2 b/manual/LDP_man-pages/draft/man2/tkill.2 index 582cff04..8f312a87 100644 --- a/manual/LDP_man-pages/draft/man2/tkill.2 +++ b/manual/LDP_man-pages/draft/man2/tkill.2 @@ -36,54 +36,63 @@ .\" Translated 2003-03-05, Akihiro MOTOKI .\" Updated 2005-02-28, Akihiro MOTOKI .\" -.TH TKILL 2 2014\-12\-31 Linux "Linux Programmer's Manual" +.TH TKILL 2 2019\-08\-02 Linux "Linux Programmer's Manual" .SH 名前 tkill, tgkill \- スレッドにシグナルを送る .SH 書式 .nf \fBint tkill(int \fP\fItid\fP\fB, int \fP\fIsig\fP\fB);\fP -.sp +.PP \fBint tgkill(int \fP\fItgid\fP\fB, int \fP\fItid\fP\fB, int \fP\fIsig\fP\fB);\fP .fi - -\fI注\fP: これらのシステムコールには、glibc のラッパー関数はない。「注意」の節を参照。 +.PP +\fINote\fP: There is no glibc wrapper for \fBtkill\fP(); see NOTES. .SH 説明 \fBtgkill\fP() はスレッドグループ \fItgid\fP に属するスレッド ID が \fItid\fP のスレッドにシグナル \fIsig\fP を送る。 (これに対し、 \fBkill\fP(2) は一つのプロセス (すなわち、スレッドグループ) にまとめてシグナルを 送るのにだけ利用できる。 \fBkill\fP(2) で送信されたシグナルはプロセス内の任意のスレッドに配送される。) - +.PP .\" FIXME Maybe say something about the following: .\" http://sourceware.org/bugzilla/show_bug.cgi?id=12889 -.\" Rich Felker -.\" There is a race condition in pthread_kill: it is possible that, -.\" between the time pthread_kill reads the pid/tid from the target -.\" thread descriptor and the time it makes the tgkill syscall, -.\" the target thread terminates and the same tid gets assigned -.\" to a new thread in the same process. .\" -.\" (The tgkill syscall was designed to eliminate a similar race -.\" condition in tkill, but it only succeeded in eliminating races -.\" where the tid gets reused in a different process, and does not -.\" help if the same tid gets assigned to a new thread in the -.\" same process.) +.\" Quoting Rich Felker : .\" -.\" The only solution I can see is to introduce a mutex that ensures -.\" that a thread cannot exit while pthread_kill is being called on it. +.\" There is a race condition in pthread_kill: it is possible that, +.\" between the time pthread_kill reads the pid/tid from the target +.\" thread descriptor and the time it makes the tgkill syscall, +.\" the target thread terminates and the same tid gets assigned +.\" to a new thread in the same process. .\" -.\" Note that in most real-world situations, like almost all race -.\" conditions, this one will be extremely rare. To make it -.\" measurable, one could exhaust all but 1-2 available pid values, -.\" possibly by lowering the max pid parameter in /proc, forcing -.\" the same tid to be reused rapidly. +.\" (The tgkill syscall was designed to eliminate a similar race +.\" condition in tkill, but it only succeeded in eliminating races +.\" where the tid gets reused in a different process, and does not +.\" help if the same tid gets assigned to a new thread in the +.\" same process.) +.\" +.\" The only solution I can see is to introduce a mutex that ensures +.\" that a thread cannot exit while pthread_kill is being called on it. +.\" +.\" Note that in most real-world situations, like almost all race +.\" conditions, this one will be extremely rare. To make it +.\" measurable, one could exhaust all but 1-2 available pid values, +.\" possibly by lowering the max pid parameter in /proc, forcing +.\" the same tid to be reused rapidly. \fBtkill\fP() はもう使われなくなった \fBtgkill\fP() の先祖である。 \fBtkill\fP() ではシグナルの送り先のスレッド ID しか指定できない。 そのため、スレッドが終了して、そのスレッド ID が再利用される場合に、 意図しないスレッドにシグナルが送られる可能性がある。 このシステムコールの使用は避けること。 - +.PP これらはシステムコールへの直接のインターフェースであり、 スレッドライブラリ内部での使用を意図したものである。 .SH 返り値 成功した場合、0 が返される。エラーが発生した場合、\-1 が返され、 \fIerrno\fP が適切に設定される。 .SH エラー .TP +\fBEAGAIN\fP +The \fBRLIMIT_SIGPENDING\fP resource limit was reached and \fIsig\fP is a +real\-time signal. +.TP +\fBEAGAIN\fP +Insufficient kernel memory was available and \fIsig\fP is a real\-time signal. +.TP \fBEINVAL\fP 指定されたスレッド ID、スレッドグループ ID、シグナルが不正であった。 .TP @@ -95,14 +104,18 @@ tkill, tgkill \- スレッドにシグナルを送る .SH バージョン \fBtkill\fP() は Linux 2.4.19 / 2.5.4 以降でサポートされ、 \fBtgkill\fP() は Linux 2.5.75 で追加された。 +.PP +Library support for \fBtgkill\fP() was added to glibc in version 2.30. .SH 準拠 \fBtkill\fP() と \fBtgkill\fP() は Linux 固有であり、 移植を想定したプログラムでは使用すべきではない。 .SH 注意 スレッドグループの説明については \fBclone\fP(2) の \fBCLONE_THREAD\fP の説明を参照のこと。 - -glibc はこれらのシステムコールに対するラッパー関数を提供していない。 \fBsyscall\fP(2) を使って呼び出すこと。 +.PP +Glibc does not provide a wrapper for \fBtkill\fP(); call it using +\fBsyscall\fP(2). Before glibc 2.30, there was also no wrapper function for +\fBtgkill\fP(). .SH 関連項目 \fBclone\fP(2), \fBgettid\fP(2), \fBkill\fP(2), \fBrt_sigqueueinfo\fP(2) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/truncate.2 b/manual/LDP_man-pages/draft/man2/truncate.2 index e979dcc6..c853bdef 100644 --- a/manual/LDP_man-pages/draft/man2/truncate.2 +++ b/manual/LDP_man-pages/draft/man2/truncate.2 @@ -58,51 +58,53 @@ .\" Updated 2012-04-30, Akihiro MOTOKI .\" Updated 2013-05-01, Akihiro MOTOKI .\" -.TH TRUNCATE 2 2015\-01\-22 Linux "Linux Programmer's Manual" +.TH TRUNCATE 2 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 truncate, ftruncate \- 指定した長さにファイルを切り詰める .SH 書式 \fB#include \fP .br \fB#include \fP -.sp +.PP \fBint truncate(const char *\fP\fIpath\fP\fB, off_t \fP\fIlength\fP\fB);\fP .br \fBint ftruncate(int \fP\fIfd\fP\fB, off_t \fP\fIlength\fP\fB);\fP -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in +.RE .ad l -.PD 0 -.sp +.PP \fBtruncate\fP(): .RS 4 -_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.br -|| /* glibc 2.12 以降: */ _POSIX_C_SOURCE\ >=\ 200809L +.\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +_XOPEN_SOURCE\ >=\ 500 + || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L + || /* Glibc versions <= 2.19: */ _BSD_SOURCE .RE -.sp +.PP \fBftruncate\fP(): .RS 4 -_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.br -|| /* glibc 2.3.5 以降: */ _POSIX_C_SOURCE\ >=\ 200112L +.\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +_XOPEN_SOURCE\ >=\ 500 + || /* Since glibc 2.3.5: */ _POSIX_C_SOURCE\ >=\ 200112L + || /* Glibc versions <= 2.19: */ _BSD_SOURCE .RE -.PD .ad b .SH 説明 \fBtruncate\fP() は \fIpath\fP で指定されるファイルを、 \fBftruncate\fP() は \fIfd\fP で参照されるファイルを \fIlength\fP バイトの長さになるように延長する、もしくは切り詰める。 -.LP +.PP もし切り詰める前のファイルが \fIlength\fP より長ければ、length バイトを越える部分のデータは失われる。 もし切り詰める前のファイルが \fIlength\fP より短かければ、伸張される。 伸張された部分を読んだ場合はヌルバイト (\(aq\e0\(aq) の列が返される。 -.LP +.PP ファイルオフセットは変更されない。 -.LP -大きさが変更されると、ファイルの st_ctime と st_mtime フィールド (それぞれ最終状態変更時刻、最終修正時刻; \fBstat\fP(2) -参照) が更新される。 また、set\-user\-ID と set\-group\-ID の許可ビットがクリアされるかもしれない。 -.LP +.PP +If the size changed, then the st_ctime and st_mtime fields (respectively, +time of last status change and time of last modification; see \fBinode\fP(7)) +for the file are updated, and the set\-user\-ID and set\-group\-ID mode bits may +be cleared. +.PP \fBftruncate\fP() の場合、ファイルは書き込み用に開いていなければならない。 \fBtruncate\fP() の場合、ファイルは書き込み可能でなければならない。 .SH 返り値 @@ -157,19 +159,24 @@ inode の更新時に I/O エラーが発生した。 ファイルが読み込み専用 (read only) のファイルシステム上にある。 .TP \fBETXTBSY\fP -指定されたファイルは実行されているファイルである。 +The file is an executable file that is being executed. .PP \fBftruncate\fP() にも同様のエラーが適用される。 但し、 \fIpath\fP に関するエラーの場合は、ファイルディスクリプター \fIfd\fP に関するエラーとなる。 .TP \fBEBADF\fP -\fIfd\fP が無効なディスクリプターである。 +\fIfd\fP が適切なファイルディスクリプターでない。 .TP \fBEBADF\fP または \fBEINVAL\fP \fIfd\fP で指定されているものが書き込みモードで開かれていない。 .TP \fBEINVAL\fP -\fIfd\fP が通常のファイルを参照していない。 +\fIfd\fP does not reference a regular file or a POSIX shared memory object. +.TP +\fBEINVAL\fP or \fBEBADF\fP +The file descriptor \fIfd\fP is not open for writing. POSIX permits, and +portable applications should handle, either error for this case. (Linux +produces \fBEINVAL\fP.) .SH 準拠 .\" POSIX.1-1996 has .\" .BR ftruncate (). @@ -182,8 +189,12 @@ inode の更新時に I/O エラーが発生した。 .\" error conditions EMFILE, EMULTIHP, ENFILE, ENOLINK. SVr4 documents for .\" .BR ftruncate () .\" an additional EAGAIN error condition. -4.4BSD, SVr4, POSIX.1\-2001 (これらのコールは 4.2BSD で初めて登場した)。 +POSIX.1\-2001, POSIX.1\-2008, 4.4BSD, SVr4 (these calls first appeared in +4.2BSD). .SH 注意 +\fBftruncate\fP() can also be used to set the size of a POSIX shared memory +object; see \fBshm_open\fP(3). +.PP .\" At the very least: OSF/1, Solaris 7, and FreeBSD conform, mtk, Jan 2002 「説明」の節で述べた詳細は XSI 準拠のシステムについてのものである。 XSI 非準拠のシステムの場合、POSIX 標準は \fBftruncate\fP() に対して \fIlength\fP が @@ -194,7 +205,7 @@ XSI 非準拠のシステムの場合、POSIX 標準は \fBftruncate\fP() に対 のファイルシステムでは、 \fBtruncate\fP() や \fBftruncate\fP() を使って現在のファイル 長を越えてファイルを伸長することができない。 Linux での有名な例としては VFAT がある。 - +.PP 元々の Linux の \fBtruncate\fP() と \fBftruncate\fP() システムコールは 大きなファイルオフセットを扱えるように設計されていなかった。 その結果、大きなファイルファイルを扱うことができる \fBtruncate64\fP() と \fBftruncate64\fP() @@ -202,7 +213,7 @@ VFAT がある。 ただし、glibc を使ったアプリケーションではこれらの詳細は気にする必要はない。 glibc のラッパー関数は新しいシステムコールが利用できる場合にはそれらを利用する ようになっているからである。 - +.PP いくつかの 32 ビットアーキテクチャーでは、これらのシステムコールの呼び出し時のシグネチャーが違っています。理由は \fBsyscall\fP(2) で説明されている通りです。 .SH バグ @@ -211,8 +222,7 @@ glibc 2.12 のヘッダーファイルにはバグがあり、 \fBftruncate\fP() \fB_POSIX_C_SOURCE\fP の最小値が 200112L ではなく 200809L となっていた。 このバグは、これ以降のバージョンの glibc では修正されている。 .SH 関連項目 -\fBopen\fP(2), \fBstat\fP(2), \fBpath_resolution\fP(7) +\fBtruncate\fP(1), \fBopen\fP(2), \fBstat\fP(2), \fBpath_resolution\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/umask.2 b/manual/LDP_man-pages/draft/man2/umask.2 deleted file mode 100644 index 3a2c1f76..00000000 --- a/manual/LDP_man-pages/draft/man2/umask.2 +++ /dev/null @@ -1,100 +0,0 @@ -.\" Copyright (c) 2006, 2008, Michael Kerrisk (mtk.manpages@gmail.com) -.\" (A few fragments remain from an earlier (1992) version written in -.\" 1992 by Drew Eckhardt .) -.\" -.\" %%%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 -.\" Modified Sat Jul 24 12:51:53 1993 by Rik Faith -.\" Modified Tue Oct 22 22:39:04 1996 by Eric S. Raymond -.\" Modified Thu May 1 06:05:54 UTC 1997 by Nicolás Lichtmaier -.\" with Lars Wirzenius suggestion -.\" 2006-05-13, mtk, substantial rewrite of description of 'mask' -.\" 2008-01-09, mtk, a few rewrites and additions. -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 SUTO, Mitsuaki -.\" all rights reserved. -.\" Translated 1997-06-26, SUTO Mitsuaki -.\" Modified 1999-03-21, HANATAKA Shinya -.\" Modified 2005-09-04, Akihiro MOTOKI -.\" Updated 2006-07-21, Akihiro MOTOKI, LDP v2.36 -.\" Updated 2008-02-10, Akihiro MOTOKI, LDP v2.77 -.\" -.TH UMASK 2 2008\-01\-09 Linux "Linux Programmer's Manual" -.SH 名前 -umask \- ファイルモード作成マスクを設定する -.SH 書式 -\fB#include \fP -.br -\fB#include \fP -.sp -\fBmode_t umask(mode_t \fP\fImask\fP\fB);\fP -.SH 説明 -\fBumask\fP() は、呼び出し元プロセスのファイルモード作成マスク (umask) を \fImask\fP & 0777 に設定し (\fIumask\fP -のファイル許可に対応するビットのみを使用する)、 変更前のマスク値を返す。 - -.\" e.g., mkfifo(), creat(), mknod(), sem_open(), mq_open(), shm_open() -.\" but NOT the System V IPC *get() calls -umask は、 \fBopen\fP(2), \fBmkdir\fP(2) やファイル作成を行うその他のシステムコールで、 -新しく作成されるファイルやディレクトリの許可 (permission) を 修正するために使用される。 具体的には umask に設定されている許可が -\fBopen\fP(2) や \fBmkdir\fP(2) の \fImode\fP 引き数から取り消される。 - -\fImask\fP に指定するのに使用すべき定数については \fBstat\fP(2) で説明されている。 - -プロセスの umask のよくあるデフォルト値は \fIS_IWGRP\ |\ S_IWOTH\fP (8進で 022) である。 -新しいファイルを作成する際に \fBopen\fP(2) の \fImode\fP 引き数に -.nf - - S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH - -.fi -を指定するというよくあるケースでは、作成されたファイルは -.nf - - S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH - -.fi -という許可を持つことになる (なぜなら 0666 & ~022 = 0644、つまり rw\-r\-\-r\-\-)。 -.SH 返り値 -このシステムコールは必ず成功し、以前の umask 値を返す。 -.SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001. -.SH 注意 -\fBfork\fP(2) で作成された子プロセスは、親プロセスの umask を継承する。 \fBexecve\fP(2) によって umask -は変更されない。 - -umask の設定は、そのプロセスが生成する POSIX IPC オブジェクト (\fBmq_open\fP(3), \fBsem_open\fP(3), -\fBshm_open\fP(3)) や FIFO (\fBmkfifo\fP(3))、 UNIX ドメインソケット (\fBunix\fP(7)) -に設定される許可にも影響を与える。 一方、umask は、そのプロセスが (\fBmsgget\fP(2), \fBsemget\fP(2), -\fBshmget\fP(2) を使って) 生成する System\ V IPC オブジェクトに設定される許可には 影響を与えない。 -.SH 関連項目 -\fBchmod\fP(2), \fBmkdir\fP(2), \fBopen\fP(2), \fBstat\fP(2), \fBacl\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/umount.2 b/manual/LDP_man-pages/draft/man2/umount.2 index 12553f11..b75962e1 100644 --- a/manual/LDP_man-pages/draft/man2/umount.2 +++ b/manual/LDP_man-pages/draft/man2/umount.2 @@ -38,15 +38,15 @@ .\" Translated 2008-11-20, Akihiro MOTOKI , LDP v3.13 .\" Updated 2012-04-30, Akihiro MOTOKI .\" -.TH UMOUNT 2 2014\-02\-26 Linux "Linux Programmer's Manual" +.TH UMOUNT 2 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 umount, umount2 \- ファイルシステムをアンマウントする .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint umount(const char *\fP\fItarget\fP\fB);\fP -.sp +.PP \fBint umount2(const char *\fP\fItarget\fP\fB, int \fP\fIflags\fP\fB);\fP .fi .SH 説明 @@ -54,17 +54,27 @@ umount, umount2 \- ファイルシステムをアンマウントする .\" umount2 is the glibc name for what the kernel now calls umount .\" and umount is the glibc name for oldumount \fBumount\fP() と \fBumount2\fP() は \fItarget\fP にマウントされている (最上位の) ファイルシステムを外す。 - +.PP ファイルシステムのアンマウントを行うには、 適切な権限 (Linux では \fBCAP_SYS_ADMIN\fP ケーパビリティ) が必要である。 - +.PP Linux 2.1.116 から、 \fBumount2\fP() システムコールが追加された。これは \fBumount\fP() と同様に \fItarget\fP をアンマウントするが、 \fIflags\fP が追加されており、操作時の振る舞いを制御できる。 .TP \fBMNT_FORCE\fP (2.1.116 以降) -使用中 (busy) でも強制的にアンマウントを実行する。 これを行うとデータを失う可能性がある。 (NFS マウント専用) +Ask the filesystem to abort pending requests before attempting the unmount. +This may allow the unmount to complete without waiting for an inaccessible +server, but could cause data loss. If, after aborting requests, some +processes still have active references to the filesystem, the unmount will +still fail. As at Linux 4.12, \fBMNT_FORCE\fP is supported only on the +following filesystems: 9p (since Linux 2.6.16), ceph (since Linux 2.6.34), +cifs (since Linux 2.6.12), fuse (since Linux 2.6.16), lustre (since Linux +3.11), and NFS (since Linux 2.1.116). .TP \fBMNT_DETACH\fP (2.4.11 以降) -遅延アンマウントを行う。マウントポイントに対する新規のアクセスは 不可能となり、実際のアンマウントはマウントポイントがビジーで なくなった時点で行う。 +Perform a lazy unmount: make the mount point unavailable for new accesses, +immediately disconnect the filesystem and all filesystems mounted below it +from each other and from the mount table, and actually perform the unmount +when the mount point ceases to be busy. .TP \fBMNT_EXPIRE\fP (Linux 2.6.8 以降) マウントポイントに期限切れの印をつける。 マウントポイントが現在使用中でない場合、このフラグをつけて \fBumount2\fP() を初めて呼び出すと @@ -120,14 +130,32 @@ Linux 2.1.116 から、 \fBumount2\fP() システムコールが追加された .SH 準拠 この関数は Linux 固有の関数であり、移植を考慮したプログラムでは 使用すべきでない。 .SH 注意 +.SS "umount() and shared mount points" +Shared mount points cause any mount activity on a mount point, including +\fBumount\fP() operations, to be forwarded to every shared mount point in the +peer group and every slave mount of that peer group. This means that +\fBumount\fP() of any peer in a set of shared mounts will cause all of its +peers to be unmounted and all of their slaves to be unmounted as well. +.PP +This propagation of unmount activity can be particularly surprising on +systems where every mount point is shared by default. On such systems, +recursively bind mounting the root directory of the filesystem onto a +subdirectory and then later unmounting that subdirectory with \fBMNT_DETACH\fP +will cause every mount in the mount namespace to be lazily unmounted. +.PP +To ensure \fBumount\fP() does not propagate in this fashion, the mount point +may be remounted using a \fBmount\fP(2) call with a \fImount_flags\fP argument +that includes both \fBMS_REC\fP and \fBMS_PRIVATE\fP prior to \fBumount\fP() being +called. +.SS "Historical details" 元々の \fBumount\fP() 関数は \fIumount(device)\fP の形で呼び出され、 ブロックデバイス以外を指定して呼び出すと \fBENOTBLK\fP を返した。 Linux 0.98p4 で、無名デバイス (anonymous device) に対応するために \fIumount(dir)\fP の形での呼び出しが加えられた。 Linux 2.3.99\-pre7 で、\fIumount(device)\fP は削除され、 \fIumount(dir)\fP だけが残された (一つのデバイスを複数の位置にマウント出来るようになったため、 デバイスを指定しただけでは不十分だからである)。 .SH 関連項目 -\fBmount\fP(2), \fBpath_resolution\fP(7), \fBmount\fP(8), \fBumount\fP(8) +\fBmount\fP(2), \fBmount_namespaces\fP(7), \fBpath_resolution\fP(7), \fBmount\fP(8), +\fBumount\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/uname.2 b/manual/LDP_man-pages/draft/man2/uname.2 index 08e5f67f..69d30325 100644 --- a/manual/LDP_man-pages/draft/man2/uname.2 +++ b/manual/LDP_man-pages/draft/man2/uname.2 @@ -38,33 +38,34 @@ .\" by Yuichi SATO .\" Updated 2007-09-04, Akihiro MOTOKI , LDP v2.64 .\" -.TH UNAME 2 2014\-09\-21 Linux "Linux Programmer's Manual" +.TH UNAME 2 2019\-10\-10 Linux "Linux Programmer's Manual" .SH 名前 uname \- 現在稼働中のカーネルについての名前と情報を得る .SH 書式 \fB#include \fP -.sp +.PP \fBint uname(struct utsname *\fP\fIbuf\fP\fB);\fP .SH 説明 \fBuname\fP() は \fIbuf\fP で指される構造体にシステム情報を返す。 \fIutsname\fP 構造体は \fI\fP で以下のように定義されている。 +.PP .in +4n -.nf - +.EX struct utsname { - char sysname[]; /* OS の名前 (例: "Linux") */ - char nodename[]; /* 「実装時に定義された、何らかの - ネットワーク」におけるマシン名 */ - char release[]; /* オペレーションシステムのリリース番号 (例: "2.6.28") */ - char version[]; /* オペレーティングシステムのバージョン */ - char machine[]; /* ハードウェア識別子 */ + char sysname[]; /* Operating system name (e.g., "Linux") */ + char nodename[]; /* Name within "some implementation\-defined + network" */ + char release[]; /* Operating system release + (e.g., "2.6.28") */ + char version[]; /* Operating system version */ + char machine[]; /* Hardware identifier */ #ifdef _GNU_SOURCE - char domainname[]; /* NIS や YP のドメイン名 */ + char domainname[]; /* NIS or YP domain name */ #endif }; - -.fi +.EE .in +.PP \fIstruct utsname\fP にある配列の長さは指定されていない (「注意」の節を参照)。 フィールドはヌルバイト (\(aq\e0\(aq) で終端される。 .SH 返り値 @@ -74,7 +75,7 @@ struct utsname { \fBEFAULT\fP \fIbuf\fP が有効でない。 .SH 準拠 -SVr4, POSIX.1\-2001. 4.3BSD には \fBuname\fP() コールがない。 +POSIX.1\-2001, POSIX.1\-2008, SVr4. There is no \fBuname\fP() call in 4.3BSD. .PP \fIdomainname\fP メンバー (NIS または YP ドメイン名) は GNU の拡張である。 .SH 注意 @@ -83,22 +84,21 @@ SVr4, POSIX.1\-2001. 4.3BSD には \fBuname\fP() コールがない。 フィールドには意味がない: このフィールドは現在のマシンの (定義されていない) どこかのネットワークにおける名前を与えるが、 通常マシンは複数のネットワークに属し、複数の名前を持つ。 さらに、カーネルはこのような情報を知る術を持たないので、 ここでの答えは前もって教えてやらなければならない。 これは追加フィールドである \fIdomainname\fP についても同様である。 -.LP +.PP このため Linux ではシステムコール \fBsethostname\fP(2) と \fBsetdomainname\fP(2) が使われる。 「\fBsethostname\fP(2) で設定されるホスト名は、 \fBuname\fP() で返される構造体の \fInodename\fP フィールドと同じ文字列である」 と規定している標準規格はない (実際、256 バイトのホスト名と 8 バイトのノード名を許可しているシステムもある)。 しかし、Linux では同じ文字列が返される。 \fBsetdomainname\fP(2) と \fIdomainname\fP フィールドについても同じことが成り立つ。 -.LP +.PP 構造体のフィールドの長さはさまざまである。 OS やライブラリの中には、 ハードコードされた 9, 33, 65, 257 などの値を使っているものもある。 また \fBSYS_NMLN\fP, \fB_SYS_NMLN\fP, \fBUTSLEN\fP, \fB_UTSNAME_LENGTH\fP などを使っているシステムもある。 はっきり言って、これらの定数を使うのは悪い考え方であり、 sizeof(...) を使うべきである。 インターネットホスト名で使う領域を持たせるために、 257 が選ばれることが多い。 -.LP +.PP utsname の情報は、 \fI/proc/sys/kernel/\fP{\fIostype\fP, \fIhostname\fP, \fIosrelease\fP, \fIversion\fP, \fIdomainname\fP} を使ってアクセスすることもできる。 -.SS "C ライブラリとカーネル ABI の違い" -.LP +.SS "C library/kernel differences" .\" That was back before Linux 1.0 .\" That was also back before Linux 1.0 時間の経過とともに、 \fIutsname\fP 構造体のサイズが大きくなり、この影響で \fBuname\fP() には 3つのバージョンが存在する: @@ -109,8 +109,7 @@ utsname の情報は、 \fI/proc/sys/kernel/\fP{\fIostype\fP, \fIhostname\fP, \f \fBuname\fP() ラッパー関数は、これらの詳細をアプリケーションから隠蔽し、 カーネルが提供しているシステムコールのうち最新のバージョンを起動する。 .SH 関連項目 -\fBuname\fP(1), \fBgetdomainname\fP(2), \fBgethostname\fP(2), \fBnamespaces\fP(7) +\fBuname\fP(1), \fBgetdomainname\fP(2), \fBgethostname\fP(2), \fButs_namespaces\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/unimplemented.2 b/manual/LDP_man-pages/draft/man2/unimplemented.2 index 9515a379..8b4ffff8 100644 --- a/manual/LDP_man-pages/draft/man2/unimplemented.2 +++ b/manual/LDP_man-pages/draft/man2/unimplemented.2 @@ -36,7 +36,7 @@ .\" Modified Tue Jan 26 00:04:30 JST 1999 .\" by HANATAKA Shinya .\" -.TH UNIMPLEMENTED 2 2013\-02\-12 Linux "Linux Programmer's Manual" +.TH UNIMPLEMENTED 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 afs_syscall, break, fattach, fdetach, ftime, getmsg, getpmsg, gtty, isastream, lock, madvise1, mpx, prof, profil, putmsg, putpmsg, security, @@ -49,15 +49,14 @@ stty, tuxcall, ulimit, vserver \- 実装されていないシステムコール これらのシステムコールは常に \-1 を返し、 \fIerrno\fP に \fBENOSYS\fP を設定する。 .SH 注意 \fBftime\fP(3), \fBprofil\fP(3), \fBulimit\fP(3) はライブラリ関数として実装されていることに注意すること。 - +.PP \fBalloc_hugepages\fP(2), \fBfree_hugepages\fP(2), \fBioperm\fP(2), \fBiopl\fP(2), \fBvm86\fP(2) のようなシステムコールは特定のアーキテクチャーにのみ存在する。 - +.PP \fBipc\fP(2), \fBcreate_module\fP(2), \fBinit_module\fP(2), \fBdelete_module\fP(2) のようなシステムコールは Linux カーネルがそれらをサポートするよう に構築されている場合にのみ存在する。 .SH 関連項目 \fBsyscalls\fP(2) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/unlink.2 b/manual/LDP_man-pages/draft/man2/unlink.2 index 28668672..540123ad 100644 --- a/manual/LDP_man-pages/draft/man2/unlink.2 +++ b/manual/LDP_man-pages/draft/man2/unlink.2 @@ -48,32 +48,32 @@ .\" by Yuichi SATO .\" Updated 2012-05-08, Akihiro MOTOKI .\" -.TH UNLINK 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH UNLINK 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 unlink, unlinkat \- 名前を削除し、場合によってはそれが参照しているファイルも削除する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint unlink(const char *\fP\fIpathname\fP\fB);\fP -.sp + \fB#include \fP/* AT_* 定数の定義 */ \fB#include \fP -.sp +.PP \fBint unlinkat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, int \fP\fIflags\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBunlinkat\fP(): .PD 0 .ad l .RS 4 .TP 4 glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L +_POSIX_C_SOURCE\ >=\ 200809L .TP glibc 2.10 より前: _ATFILE_SOURCE @@ -84,28 +84,29 @@ _ATFILE_SOURCE \fBunlink\fP() はファイルシステム上の名前を削除する。 もしその名前がファイルへの最後のリンク (link) であり、 どのプロセスもそのファイルをオープン (open) していなければ、 ファイルは削除される。 ファイルが使用していたディスク上の領域は再利用が可能になる。 - +.PP 名前がファイルへの最後のリンクであっても、どこかのプロセスが そのファイルを開いているなら、ファイルの最後のファイルディスクリプター (file descriptor) が閉じられるまでファイルは存在し続ける。 - +.PP 名前が指しているのがシンボリックリンクなら、そのリンクを削除する。 - +.PP 名前が指しているのがソケット、FIFO、デバイスの場合、名前は削除されるが、 そのソケットなどを開いているプロセスはそのまま使い続けることができる。 .SS unlinkat() \fBunlinkat\fP() システムコールは、\fBunlink\fP() と \fBrmdir\fP(2) のいずれかと全く同じ動作をする (どちらと同じになるかは \fIflags\fP に \fBAT_REMOVEDIR\fP フラグが指定されたかにより決まる) が、以下で説明する点が異なる。 - +.PP \fIpathname\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fIdirfd\fP が参照するディレクトリに対する相対パスと解釈される (\fBunlink\fP() や \fBrmdir\fP(2) に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。 - +.PP \fIpathname\fP で指定されたパス名が相対パスで、 \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBunlink\fP() や \fBrmdir\fP(2) と同様に) \fIpathname\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 - +.PP \fIpathname\fP で指定されたパス名が絶対パスの場合、 \fIdirfd\fP は無視される。 - -\fIflags\fP はビットマスクで、0 もしくは \fBunlinkat\fP() -の動作を制御するフラグ値を論理和の形で指定することができる。現在のところ、定義されているフラグはひとつだけである。 +.PP +\fIflags\fP is a bit mask that can either be specified as 0, or by ORing +together flag values that control the operation of \fBunlinkat\fP(). +Currently, only one such flag is defined: .TP \fBAT_REMOVEDIR\fP デフォルトでは、 \fBunlinkat\fP() は \fIpathname\fP に対して \fBunlink\fP() と等価な動作をする。 @@ -165,6 +166,10 @@ I/O エラーが発生した。 が設定されていて、プロセスの実効ユーザー ID が削除しようとするファイルの UID でもそれを含んでいるディレクトリのものでもなく、 かつプロセスに特権がない (Linux では \fBCAP_FOWNER\fP ケーパビリティ (capability) がない)。 .TP +\fBEPERM\fP +The file to be unlinked is marked immutable or append\-only. (See +\fBioctl_iflags\fP(2).) +.TP \fBEROFS\fP \fIpathname\fP が読み込み専用のファイルシステムのファイルを参照している。 .PP @@ -189,20 +194,20 @@ I/O エラーが発生した。 .\" SVr4 documents additional error .\" conditions EINTR, EMULTIHOP, ETXTBSY, ENOLINK. \fBunlink\fP(): SVr4, 4.3BSD, POSIX.1\-2001, POSIX.1\-2008. - +.PP \fBunlinkat\fP(): POSIX.1\-2008. .SH 注意 .SS "glibc での注意" -\fBunlinkat\fP() が利用できない古いカーネルでは、 glibc ラッパー関数は \fBunlink\fP(2) と \fBrmdir\fP(2) -を使用するモードにフォールバックする。 \fIpathname\fP が相対パスの場合、 glibc は \fIdirfd\fP 引き数に対応する -\fI/proc/self/fd\fP のシンボリックリンクに基づいてパス名を構成する。 +On older kernels where \fBunlinkat\fP() is unavailable, the glibc wrapper +function falls back to the use of \fBunlink\fP() or \fBrmdir\fP(2). When +\fIpathname\fP is a relative pathname, glibc constructs a pathname based on the +symbolic link in \fI/proc/self/fd\fP that corresponds to the \fIdirfd\fP argument. .SH バグ NFS プロトコルに内在する問題により、まだ使用中のファイルが想定外に消えてしまうことがありえる。 .SH 関連項目 -\fBrm\fP(1), \fBchmod\fP(2), \fBlink\fP(2), \fBmknod\fP(2), \fBopen\fP(2), \fBrename\fP(2), -\fBrmdir\fP(2), \fBmkfifo\fP(3), \fBremove\fP(3), \fBpath_resolution\fP(7), -\fBsymlink\fP(7) +\fBrm\fP(1), \fBunlink\fP(1), \fBchmod\fP(2), \fBlink\fP(2), \fBmknod\fP(2), \fBopen\fP(2), +\fBrename\fP(2), \fBrmdir\fP(2), \fBmkfifo\fP(3), \fBremove\fP(3), +\fBpath_resolution\fP(7), \fBsymlink\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/unshare.2 b/manual/LDP_man-pages/draft/man2/unshare.2 deleted file mode 100644 index 97c39eb5..00000000 --- a/manual/LDP_man-pages/draft/man2/unshare.2 +++ /dev/null @@ -1,304 +0,0 @@ -.\" Copyright (C) 2006, Janak Desai -.\" and Copyright (C) 2006, 2012 Michael Kerrisk -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Licensed under the GPL -.\" %%%LICENSE_END -.\" -.\" Patch Justification: -.\" unshare system call is needed to implement, using PAM, -.\" per-security_context and/or per-user namespace to provide -.\" polyinstantiated directories. Using unshare and bind mounts, a -.\" PAM module can create private namespace with appropriate -.\" directories(based on user's security context) bind mounted on -.\" public directories such as /tmp, thus providing an instance of -.\" /tmp that is based on user's security context. Without the -.\" unshare system call, namespace separation can only be achieved -.\" by clone, which would require porting and maintaining all commands -.\" such as login, and su, that establish a user session. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Yuichi SATO -.\" all rights reserved. -.\" Translated 2006-08-10 by Yuichi SATO , LDP v2.36 -.\" Updated 2012-05-08, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH UNSHARE 2 2014\-09\-21 Linux "Linux Programmer's Manual" -.SH 名前 -unshare \- プロセス実行コンテキストの一部を分離する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint unshare(int \fP\fIflags\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBunshare\fP(): -.ad l -.RS 4 -.PD 0 -.TP 4 -glibc 2.14 以降: -_GNU_SOURCE -.TP 4 -.\" See http://sources.redhat.com/bugzilla/show_bug.cgi?id=4749 -glibc 2.14 より前: -_BSD_SOURCE || _SVID_SOURCE - /* _GNU_SOURCE も定義される */ -.PD -.RE -.ad b -.SH 説明 -\fBunshare\fP() を使うと、プロセスは他のプロセスと現在共有している 実行コンテキストの一部を分離することができる。 -実行コンテキストの一部、たとえばマウント名前空間 (mount namespace) などは、新しいプロセスを \fBfork\fP(2) または -\fBvfork\fP(2) を使って生成したときに、暗黙のうちに共有される。 一方、仮想メモリーなどは、 \fBclone\fP(2) -を使ってプロセスを生成するときに、明示的に共有することを要求できる。 - -\fBunshare\fP() の主な利用法は、プロセスが新しいプロセスを生成することなく、 共有実行コンテキストを制御することである。 - -\fIflags\fP 引き数はビットマスクであり、 実行コンテキストのどの部分の共有を解除するかを表す。 この引き数は、以下の定数の 0 個以上の OR -で指定する: -.TP -\fBCLONE_FILES\fP -\fBclone\fP(2) \fBCLONE_FILES\fP フラグの効果を取り消す。 ファイルディスクリプターテーブルを共有させず、 -呼び出し元プロセスは他のプロセスとファイルディスクリプターを共有しなくなる。 -.TP -\fBCLONE_FS\fP -\fBclone\fP(2) \fBCLONE_FS\fP フラグの効果を取り消す。ファイルシステム属性を共有させず、呼び出し元プロセスは、ルートディレクトリ -(\fBchroot\fP(2))、カレントディレクトリ (\fBchdir\fP(2))、 umask (\fBumask\fP(2)) -を他のプロセスと共有しなくなる。 -.TP -\fBCLONE_NEWIPC\fP (Linux 2.6.19 以降) -このフラグは \fBclone\fP(2) \fBCLONE_NEWIPC\fP フラグと同じ効果を持つ。 -System\ V IPC 名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは -共有しない固有の System\ V IPC 名前空間のコピーを持つ。 このフラグを指定 -すると、 \fBCLONE_SYSVSEM\fP も暗黙のうちに指定される。 \fBCLONE_NEWIPC\fP を -使用するには \fBCAP_SYS_ADMIN\fP ケーパビリティが必要である。 -.TP -\fBCLONE_NEWNET\fP (Linux 2.6.24 以降) -このフラグは \fBclone\fP(2) \fBCLONE_NEWNET\fP フラグと同じ効果を持つ。ネット -ワーク名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しな -い固有のネットワーク名前空間のコピーを持つ。\fBCLONE_NEWNET\fP を使用する -には \fBCAP_SYS_ADMIN\fP ケーパビリティが必要である。 -.TP -\fBCLONE_NEWNS\fP -.\" These flag name are inconsistent: -.\" CLONE_NEWNS does the same thing in clone(), but CLONE_VM, -.\" CLONE_FS, and CLONE_FILES reverse the action of the clone() -.\" flags of the same name. -このフラグは \fBclone\fP(2) \fBCLONE_NEWNS\fP フラグと同じ効果を持つ。 マウン -ト名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは共有しない固 -有の名前空間のコピーを持つ。 このフラグを指定すると、 \fBCLONE_FS\fP も暗 -黙のうちに指定される。 \fBCLONE_NEWNS\fP を使用するには \fBCAP_SYS_ADMIN\fP -ケーパビリティが必要である。 -.TP -\fBCLONE_NEWPID\fP (Linux 3.8 以降) -このフラグは \fBclone\fP(2) \fBCLONE_NEWPID\fP フラグと同じ効果を持つ。 PID 名前空間を共有しない。 呼び出し元プロセスは、 -すでに存在するどのプロセスとも共有されない新しい PID 名前空間を、 自身の子プロセス用に持つことになる。 -このプロセスにより作成される最初の子プロセスはプロセス ID 1 を持ち、 この新しい名前空間において \fBinit\fP(1) の役割を持つとみなされる。 -\fBCLONE_NEWPID\fP を指定すると、自動的に \fBCLONE_THREAD\fP も指定されたものとみなされる。 \fBCLONE_NEWPID\fP -を使用するには \fBCAP_SYS_ADMIN\fP ケーパビリティが必要である。 詳細な情報は \fBpid_namespaces\fP(7) を参照。 -.TP -\fBCLONE_NEWUSER\fP (Linux 3.8 以降) -このフラグは \fBclone\fP(2) \fBCLONE_NEWUSER\fP フラグと同じ効果を持つ。 ユーザー名前空間を共有せず、 -呼び出し元プロセスはすでに存在するどのプロセスとも共有されない新しいユーザー名前空間に移動される。 \fBCLONE_NEWUSER\fP フラグを指定して -\fBclone\fP(2) で作成された子プロセスと同様に、 呼び出し元は新しい名前空間ですべてのケーパビリティを獲得する。 -.IP -.\" commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71 -.\" https://lwn.net/Articles/543273/ -\fBCLONE_NEWUSER\fP を使うには、呼び出し元プロセスがスレッド化されていないことが必要である。 \fBCLONE_NEWUSER\fP -を指定すると、自動的に \fBCLONE_THREAD\fP が指定されたものとみなされる。 Linux 3.9 以降では、 \fBCLONE_NEWUSER\fP -が指定された場合 \fBCLONE_FS\fP も指定されたとみなされる。 \fBCLONE_NEWUSER\fP を使うには、呼び出し元プロセスのユーザー ID -とグループ ID が、 呼び出した時点で、 呼び出し元プロセスのユーザー名前空間のユーザー ID とグループ ID にマッピングされている必要がある。 - -ユーザー名前空間の詳細は \fBuser_namespaces\fP(7) を参照。 -.TP -\fBCLONE_NEWUTS\fP (Linux 2.6.19 以降) -このフラグは \fBclone\fP(2) \fBCLONE_NEWUTS\fP フラグと同じ効果を持つ。 UTS -IPC 名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しない -固有の UTS IPC 名前空間のコピーを持つ。 このフラグを指定すると、 -\fBCLONE_FS\fP も暗黙のうちに指定される。\fBCLONE_NEWUTS\fP を使用するには -\fBCAP_SYS_ADMIN\fP ケーパビリティが必要である。 -.TP -\fBCLONE_SYSVSEM\fP (Linux 2.6.26 以降) -.\" commit 9edff4ab1f8d82675277a04e359d0ed8bf14a7b7 -.\" CLONE_NEWNS If CLONE_SIGHAND is set and signals are also being shared -.\" (i.e., current->signal->count > 1), force CLONE_THREAD. -このフラグは \fBclone\fP(2) \fBCLONE_SYSVSEM\fP フラグの効果を逆転させる。 System\ V セマフォの調整値 -(\fIsemadj\fP) を共有せず、 呼び出し元プロセスは他のプロセスとは共有されない新しい空の \fIsemadj\fP リストを持つ。 -そのプロセスが、自分の現在の \fIsemadj\fP リストへの参照を持つ最後のプロセスであれば、 このリストの調整値は対応するセマフォに適用される -(\fBsemop\fP(2) に説明がある通り)。 -.PP -.\" As at 3.9, the following forced implications also apply, -.\" although the relevant flags are not yet implemented. -.\" If CLONE_THREAD is set force CLONE_VM. -.\" If CLONE_VM is set, force CLONE_SIGHAND. -.\" -.\" See kernel/fork.c::check_unshare_flags() -上記に加えて、 呼び出し元がシングルスレッドの場合 (すなわち別のプロセスやスレッドとアドレス空間を共有していない場合)、 -\fBCLONE_THREAD\fP, \fBCLONE_SIGHAND\fP, \fBCLONE_VM\fP を指定することができる。 この場合、 -これらのフラグは効果を持たない。 (\fBCLONE_THREAD\fP を指定すると自動的に \fBCLONE_VM\fP が指定されたとみなされ、 -\fBCLONE_VM\fP を指定すると自動的に \fBCLONE_SIGHAND\fP が指定されたとみなされる点に注意してほしい。) -プロセスがマルチスレッドの場合、 これらのフラグを使用するとエラーとなる。 -.PP -\fIflags\fP に 0 が指定された場合、 \fBunshare\fP() は何も行わないので、 -呼び出し元プロセスの実行コンテキストは、何も変更されない。 -.SH 返り値 -成功した場合は 0 が返される。 失敗した場合は \-1 が返されて、 \fIerrno\fP にはエラーを示す値が設定される。 -.SH エラー -.TP -\fBEINVAL\fP -\fIflags\fP に不正なビットが指定された。 -.TP -\fBEINVAL\fP -\fBCLONE_THREAD\fP, \fBCLONE_SIGHAND\fP, \fBCLONE_VM\fP が \fIflags\fP に指定されたが、 -呼び出したプロセスはマルチスレッドである。 -.TP -\fBENOMEM\fP -呼び出し元のコンテキストのうち共有を解除する必要がある部分をコピーするために、 十分なメモリーが確保できなかった。 -.TP -\fBEPERM\fP -呼び出し元プロセスはこの操作を行うのに必要な特権を持っていなかった。 -.TP -\fBEPERM\fP -\fBCLONE_NEWUSER\fP が \fIflags\fP に指定されたが、 呼び出し元の実効ユーザー ID もしくは実効グループ ID -が親名前空間にマッピングがない (\fBuser_namespaces\fP(7) 参照)。 -.TP -\fBEPERM\fP (Linux 3.9 以降) -.\" commit 3151527ee007b73a0ebd296010f1c0454a919c7d -.\" FIXME What is the rationale for this restriction? -\fBCLONE_NEWUSER\fP が \fIflags\fP に指定され、 呼び出し元が chroot された環境にいる (すなわち、呼び出し元の root -ディレクトリが呼び出し元が属するマウント名前空間の root ディレクトリに一致しない)。 -.TP -\fBEUSERS\fP (Linux 3.11 以降) -\fBCLONE_NEWUSER\fP が \fIflags\fP に指定されており、 この呼び出しによりネストされたユーザー名前空間数の上限を超えてしまう。 -\fBuser_namespaces\fP(7) を参照。 -.SH バージョン -\fBunshare\fP() システムコールは Linux カーネル 2.6.16 で追加された。 -.SH 準拠 -\fBunshare\fP() システムコールは Linux 固有である。 -.SH 注意 -.\" FIXME all of the following needs to be reviewed for the current kernel -.\" However, we can do unshare(CLONE_SIGHAND) if CLONE_SIGHAND -.\" was not specified when doing clone(); i.e., unsharing -.\" signal handlers is permitted if we are not actually -.\" sharing signal handlers. mtk -.\" However, we can do unshare(CLONE_VM) if CLONE_VM -.\" was not specified when doing clone(); i.e., unsharing -.\" virtual memory is permitted if we are not actually -.\" sharing virtual memory. mtk -.\" -.\"9) Future Work -.\"-------------- -.\"The current implementation of unshare does not allow unsharing of -.\"signals and signal handlers. Signals are complex to begin with and -.\"to unshare signals and/or signal handlers of a currently running -.\"process is even more complex. If in the future there is a specific -.\"need to allow unsharing of signals and/or signal handlers, it can -.\"be incrementally added to unshare without affecting legacy -.\"applications using unshare. -.\" -\fBclone\fP(2) で新しいプロセスを生成したときに共有される全てのプロセス属性を、 \fBunshare\fP() -によって共有の解除ができるわけではない。 特に、カーネル 3.8 時点では、 \fBunshare\fP() に \fBCLONE_SIGHAND\fP, -\fBCLONE_THREAD\fP, \fBCLONE_VM\fP の効果を取り消すためのフラグが実装されていない。 -これらの機能は、必要であれば将来追加されるかもしれない。 -.SH 例 -以下のプログラムは \fBunshare\fP(1) コマンドの簡単な実装である。 このコマンドは、1 つ以上の名前空間の unshare を行ってから、 -コマンドライン引き数で指定されたコマンドを実行する。 以下はこのプログラムの使用例である。 新しいマウント名前空間でシェルを実行し、 -元のシェルと新しいシェルが別のマウント名前空間にいることを確認している。 -.in +4n -.nf - -$ \fBreadlink /proc/$$/ns/mnt\fP -mnt:[4026531840] -$ \fBsudo ./unshare \-m /bin/bash\fP -[sudo] password for cecilia: -# \fBreadlink /proc/$$/ns/mnt\fP -mnt:[4026532325] -.fi -.in - -2 つの \fBreadlink\fP(1) コマンドの出力が違うことから、 2 つのシェルは異なるマウント名前空間にいることが分かる。 -.SS プログラムのソース -\& -.nf -/* unshare.c - - A simple implementation of the unshare(1) command: unshare - namespaces and execute a command. -*/ -#define _GNU_SOURCE -#include -#include -#include -#include - -/* A simple error\-handling function: print an error message based - on the value in \(aqerrno\(aq and terminate the calling process */ - -#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \e - } while (0) - -static void -usage(char *pname) -{ - fprintf(stderr, "Usage: %s [options] program [arg...]\en", pname); - fprintf(stderr, "Options can be:\en"); - fprintf(stderr, " \-i unshare IPC namespace\en"); - fprintf(stderr, " \-m unshare mount namespace\en"); - fprintf(stderr, " \-n unshare network namespace\en"); - fprintf(stderr, " \-p unshare PID namespace\en"); - fprintf(stderr, " \-u unshare UTS namespace\en"); - fprintf(stderr, " \-U unshare user namespace\en"); - exit(EXIT_FAILURE); -} - -int -main(int argc, char *argv[]) -{ - int flags, opt; - - flags = 0; - - while ((opt = getopt(argc, argv, "imnpuU")) != \-1) { - switch (opt) { - case \(aqi\(aq: flags |= CLONE_NEWIPC; break; - case \(aqm\(aq: flags |= CLONE_NEWNS; break; - case \(aqn\(aq: flags |= CLONE_NEWNET; break; - case \(aqp\(aq: flags |= CLONE_NEWPID; break; - case \(aqu\(aq: flags |= CLONE_NEWUTS; break; - case \(aqU\(aq: flags |= CLONE_NEWUSER; break; - default: usage(argv[0]); - } - } - - if (optind >= argc) - usage(argv[0]); - - if (unshare(flags) == \-1) - errExit("unshare"); - - execvp(argv[optind], &argv[optind]); - errExit("execvp"); -} -.fi -.SH 関連項目 -\fBunshare\fP(1), \fBclone\fP(2), \fBfork\fP(2), \fBkcmp\fP(2), \fBsetns\fP(2), -\fBvfork\fP(2), \fBnamespaces\fP(7) - -Linux カーネルソース内の \fIDocumentation/unshare.txt\fP -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/uselib.2 b/manual/LDP_man-pages/draft/man2/uselib.2 index d6786774..7a0a82e1 100644 --- a/manual/LDP_man-pages/draft/man2/uselib.2 +++ b/manual/LDP_man-pages/draft/man2/uselib.2 @@ -25,7 +25,7 @@ .\" Modified by Michael Haardt .\" Modified 1993-07-24 by Rik Faith .\" Modified 1996-10-22 by Eric S. Raymond -.\" Modified 2004-06-23 by Michael Kerrisk +.\" Modified 2004-06-23 by Michael Kerrisk .\" Modified 2005-01-09 by aeb .\" .\"******************************************************************* @@ -41,13 +41,16 @@ .\" Updated 2005-02-28, Akihiro MOTOKI .\" Updated 2005-04-20, Akihiro MOTOKI .\" -.TH USELIB 2 2005\-01\-09 Linux "Linux Programmer's Manual" +.TH USELIB 2 2020\-12\-21 Linux "Linux Programmer's Manual" .SH 名前 uselib \- 共有ライブラリを選択する .SH 書式 \fB#include \fP -.sp +.PP \fBint uselib(const char *\fP\fIlibrary\fP\fB);\fP +.PP +\fINote\fP: No declaration of this system call is provided in glibc headers; +see NOTES. .SH 説明 システムコール \fBuselib\fP() は、呼び出し元プロセスが使用する 共有ライブラリをロードする際に使用される。 このシステムコールにはライブラリのパス名を指定する。 ライブラリをロードするアドレスはライブラリ自身に書かれている。 @@ -62,30 +65,46 @@ uselib \- 共有ライブラリを選択する が存在するディレクトリかその上位のいずれかに対する検索許可がない (\fBpath_resolution\fP(7) も参照)。 .TP \fBENFILE\fP -オープンされたファイルの総数がシステム全体の上限に達していた。 +The system\-wide limit on the total number of open files has been reached. .TP \fBENOEXEC\fP \fIlibrary\fP で指定されたファイルが、実行可能ファイルと認識されるファイル種別ではない。 例えば、正しいマジックナンバーが付いていない。 .SH 準拠 \fBuselib\fP() は Linux 特有の関数であり、移植性を持たせたいプログラム には使用すべきでない。 .SH 注意 -初期の libc の起動コードは、 \fBuselib\fP() を使って、 バイナリ中のリストに書かれている共有ライブラリを -リスト中のそのままの名前でロードしていた。 -.LP -.\" libc 4.3.1f - changelog 1993-03-02 -.\" libc 4.3.4 - changelog 1993-04-21 -libc 4.3.2 以降では、これらの名前の前に "/usr/lib", "/lib", "" を つけて共有ライブラリを探すようになった。 libc -4.3.4 以降では、これらの名前の共有ライブラリをまず \fBLD_LIBRARY_PATH\fP で指定されたディレクトリで探し、見つからなければ、 -名前の前に "/usr/lib", "/lib", "/" をつけて探す。 -.LP -libc 4.4.4 以降では、ライブラリ "/lib/ld.so" だけがロードされ、その後で この動的ライブラリが -(このシステムコールをもう一度使って) 必要な残りのライブラリをロードできるようになっている。 -.LP -glibc2 は、このシステムコールを使用しない。 +This obsolete system call is not supported by glibc. No declaration is +provided in glibc headers, but, through a quirk of history, glibc versions +before 2.23 did export an ABI for this system call. Therefore, in order to +employ this system call, it was sufficient to manually declare the interface +in your code; alternatively, you could invoke the system call using +\fBsyscall\fP(2). +.PP +.\" .PP +.\" .\" libc 4.3.1f - changelog 1993-03-02 +.\" Since libc 4.3.2, startup code tries to prefix these names +.\" with "/usr/lib", "/lib" and "" before giving up. +.\" .\" libc 4.3.4 - changelog 1993-04-21 +.\" In libc 4.3.4 and later these names are looked for in the directories +.\" found in +.\" .BR LD_LIBRARY_PATH , +.\" and if not found there, +.\" prefixes "/usr/lib", "/lib" and "/" are tried. +.\" .PP +.\" From libc 4.4.4 on only the library "/lib/ld.so" is loaded, +.\" so that this dynamic library can load the remaining libraries needed +.\" (again using this call). +.\" This is also the state of affairs in libc5. +.\" .PP +.\" glibc2 does not use this call. +In ancient libc versions (before glibc 2.0), \fBuselib\fP() was used to load +the shared libraries with names found in an array of names in the binary. +.PP +.\" commit 69369a7003735d0d8ef22097e27a55a8bad9557a +Since Linux 3.15, this system call is available only when the kernel is +configured with the \fBCONFIG_USELIB\fP option. .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/ustat.2 b/manual/LDP_man-pages/draft/man2/ustat.2 index 16f98d50..36894a44 100644 --- a/manual/LDP_man-pages/draft/man2/ustat.2 +++ b/manual/LDP_man-pages/draft/man2/ustat.2 @@ -40,30 +40,28 @@ .\" Updated & Modified Sat May 22 19:00:40 JST 2004 .\" by Yuichi SATO .\" -.TH USTAT 2 2003\-08\-04 Linux "Linux Programmer's Manual" +.TH USTAT 2 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 ustat \- ファイルシステム (file system) の統計を得る .SH 書式 .nf \fB#include \fP -.br \fB#include \fP /* libc[45] */ -.br \fB#include \fP /* glibc2 */ -.sp +.PP \fBint ustat(dev_t \fP\fIdev\fP\fB, struct ustat *\fP\fIubuf\fP\fB);\fP .fi .SH 説明 \fBustat\fP() はマウント (mount) されたファイルシステムの情報を返す。 \fIdev\fP は調べるファイルシステムを含んでいるデバイス (device) の デバイス番号。 \fIubuf\fP は以下のメンバーを含む ustat 構造体へのポインター: +.PP .in +4n -.nf - +.EX daddr_t f_tfree; /* Total free blocks */ ino_t f_tinode; /* Number of free inodes */ char f_fname[6]; /* Filsys name */ char f_fpack[6]; /* Filsys pack name */ -.fi +.EE .in .PP 後の二つのフィールド \fIf_fname\fP と \fIf_fpack\fP は実装されておらず、常にヌルバイト (\(aq\e0\(aq) で埋められる。 @@ -81,6 +79,8 @@ char f_fpack[6]; /* Filsys pack name */ \fBENOSYS\fP \fIdev\fP で参照されるマウントされたファイルシステムがこの操作 (operation) を サポートしていないか、Linux のバージョンが 1.3.16 以前である。 +.SH バージョン +Since version 2.28, glibc no longer provides a wrapper for this system call. .SH 準拠 .\" SVr4 documents additional error conditions ENOLINK, ECOMM, and EINTR .\" but has no ENOSYS condition. @@ -98,6 +98,5 @@ HP\-UX 版の構造体 \fIustat\fP には、その他にフィールド \fIf_blk .SH 関連項目 \fBstat\fP(2), \fBstatfs\fP(2) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/utime.2 b/manual/LDP_man-pages/draft/man2/utime.2 index 1064d8d9..4263f876 100644 --- a/manual/LDP_man-pages/draft/man2/utime.2 +++ b/manual/LDP_man-pages/draft/man2/utime.2 @@ -44,60 +44,60 @@ .\" Updated 2007-10-13, Akihiro MOTOKI, LDP v2.65 .\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05 .\" -.TH UTIME 2 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH UTIME 2 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 utime, utimes \- ファイルの最終アクセス時刻と修正時刻を変更する .SH 書式 .nf \fB#include \fP -.br \fB#include \fP -.sp +.PP \fBint utime(const char *\fP\fIfilename\fP\fB, const struct utimbuf *\fP\fItimes\fP\fB);\fP -.sp +.PP \fB#include \fP -.sp +.PP \fBint utimes(const char *\fP\fIfilename\fP\fB, const struct timeval \fP\fItimes\fP\fB[2]);\fP .fi .SH 説明 \fB備考:\fP 最近のアプリケーションの場合、 \fButimensat\fP(2) で説明されているインターフェースを使いたいと思うかもしれない。 - +.PP \fButime\fP() システムコールは \fIfilename\fP で示される inode のアクセス時刻と修正時刻を \fItimes\fP 中の \fIactime\fP と \fImodtime\fP にそれぞれ変更する。 - +.PP \fItimes\fP が \fBNULL\fP の場合、ファイルのアクセス時刻と修正時刻は現在の時刻に設定される。 - +.PP タイムスタンプの変更は以下のいずれかの場合に許可される。 プロセスに適切な特権がある場合、 実効 (effective) ユーザー ID がファイルのユーザー ID と等しい場合、 \fItimes\fP が NULL かつ、プロセスがファイルへの書き込み許可を持っている場合。 - +.PP 構造体 \fIutimbuf\fP は以下に示すようになっている。 - +.PP .in +4n -.nf +.EX struct utimbuf { time_t actime; /* アクセス時刻 */ time_t modtime; /* 修正時刻 */ }; -.fi +.EE .in - +.PP \fButime\fP() システムコールは 1 秒の分解能でタイムスタンプを指定することができる。 - +.PP \fButimes\fP() は \fButime\fP() と同様であるが、 \fItimes\fP 引き数が構造体ではなく配列を参照する。 この配列の要素は \fItimeval\fP 構造体で、タイムスタンプの指定を 1 マイクロ秒の分解能で行うことができる。 構造体 \fItimeval\fP は以下に示す通りである。 - +.PP .in +4n -.nf +.EX struct timeval { long tv_sec; /* 秒 */ long tv_usec; /* マイクロ秒 */ }; -.fi +.EE .in .PP -\fItimes\fP[0] は新しいアクセス時刻を、 \fItimes\fP[1] は新しい修正時刻を規定する。 \fItimes\fP が NULL の場合、 -\fButime\fP() 同様、ファイルのアクセス時刻と修正時刻は現在の時刻に設定される。 +\fItimes[0]\fP specifies the new access time, and \fItimes[1]\fP specifies the new +modification time. If \fItimes\fP is NULL, then analogously to \fButime\fP(), the +access and modification times of the file are set to the current time. .SH 返り値 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 .SH エラー @@ -121,7 +121,7 @@ struct timeval { \fIpath\fP が読み込み専用のファイルシステム上にある。 .SH 準拠 \fButime\fP(): SVr4, POSIX.1\-2001. POSIX.1\-2008 は \fButime\fP() を廃止予定としている。 -.br +.PP \fButimes\fP(): 4.3BSD, POSIX.1\-2001. .SH 注意 .\" @@ -133,9 +133,8 @@ struct timeval { Linux では、不変 (immutable) ファイルのタイムスタンプを変更したり、 追加専用 (append\-only) のファイルに現在時刻以外のタイムスタンプを 設定したりすることは、許可されていない。 .SH 関連項目 -\fBchattr\fP(1), \fBfutimesat\fP(2), \fBstat\fP(2), \fButimensat\fP(2), \fBfutimens\fP(3), -\fBfutimes\fP(3) +\fBchattr\fP(1), \fBtouch\fP(1), \fBfutimesat\fP(2), \fBstat\fP(2), \fButimensat\fP(2), +\fBfutimens\fP(3), \fBfutimes\fP(3), \fBinode\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/utimensat.2 b/manual/LDP_man-pages/draft/man2/utimensat.2 index 01f6b5bc..fb095c22 100644 --- a/manual/LDP_man-pages/draft/man2/utimensat.2 +++ b/manual/LDP_man-pages/draft/man2/utimensat.2 @@ -28,31 +28,31 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH UTIMENSAT 2 2015\-01\-22 Linux "Linux Programmer's Manual" +.TH UTIMENSAT 2 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 utimensat, futimens \- ファイルのタイムスタンプをナノ秒精度で変更する .SH 書式 .nf \fB#include /* AT_* 定数の定義 */\fP \fB#include \fP -.sp +.PP \fBint utimensat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB,\fP \fB const struct timespec \fP\fItimes\fP\fB[2], int \fP\fIflags\fP\fB);\fP - +.PP \fBint futimens(int \fP\fIfd\fP\fB, const struct timespec \fP\fItimes\fP\fB[2]);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in +.RE +.PP .ad l .PD 0 -.sp \fButimensat\fP(): .RS 4 .TP 4 Since glibc 2.10: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L +_POSIX_C_SOURCE\ >=\ 200809L .TP Before glibc 2.10: _ATFILE_SOURCE @@ -62,7 +62,7 @@ _ATFILE_SOURCE .RS 4 .TP Since glibc 2.10: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L +_POSIX_C_SOURCE\ >=\ 200809L .TP Before glibc 2.10: _GNU_SOURCE @@ -73,32 +73,34 @@ _GNU_SOURCE \fButimensat\fP() と \fBfutimens\fP() はファイルのタイムスタンプをナノ秒精度で更新する。 ファイルのタイムスタンプをセットする際に、 昔からある \fButime\fP(2) と \fButimes\fP(2) で指定できるのはそれぞれ秒精度とマイクロ秒精度であり、 この点が異なる点である。 - +.PP \fButimensat\fP() では、 ファイルは \fIpathname\fP で渡されるパス名で指定される。 \fBfutimens\fP() では、 タイムスタンプを更新するファイルはオープンしたファイルディスクリプター \fIfd\fP で指定される。 - -どちらのシステムコールでも、 ファイルの新しいタイムスタンプは配列 \fItimes\fP で指定される。 \fItimes\fP[0] -は新しい「最終アクセス時刻」 (\fIatime\fP) を指定し、 \fItimes\fP[1] は新しい「最終修正時刻」 (\fImtime\fP) を指定する。 -\fItimes\fP の各要素では、 時刻を、 紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC)) -からの秒数とナノ秒として指定する。 この情報は以下の形式の構造体で渡す。 +.PP +For both calls, the new file timestamps are specified in the array \fItimes\fP: +\fItimes[0]\fP specifies the new "last access time" (\fIatime\fP); \fItimes[1]\fP +specifies the new "last modification time" (\fImtime\fP). Each of the elements +of \fItimes\fP specifies a time as the number of seconds and nanoseconds since +the Epoch, 1970\-01\-01 00:00:00 +0000 (UTC). This information is conveyed in +a structure of the following form: +.PP .in +4n -.nf - +.EX struct timespec { time_t tv_sec; /* 秒 */ long tv_nsec; /* ナノ秒 */ }; -.fi +.EE .in .PP ファイルの更新後のタイムスタンプは、 指定された時刻を超えないファイルシステムがサポートする最大の値に設定される。 - +.PP .\" 2.6.22 was broken: it is not ignored それぞれの \fItimespec\fP 構造体の \fItv_nsec\fP フィールドには \fBUTIME_NOW\fP を指定することができ、 その場合はファイルの対応するタイムスタンプは現在時刻に設定される。 \fItimespec\fP 構造体の \fItv_nsec\fP フィールドには \fBUTIME_OMIT\fP を指定することができ、 その場合はファイルの対応するタイムスタンプは変更されないままとなる。 このどちらの場合も、 対応する \fItv_sec\fP フィールドの値は無視される。 - +.PP .\" \fItimes\fP が NULL の場合、 両方のタイムスタンプが現在時刻に設定される。 .SS アクセス許可の要件 @@ -120,24 +122,22 @@ struct timespec { 両方のタイムスタンプを現在時刻に設定する以外の変更するには (\fItimes\fP が NULL 以外、 または どちらの \fItv_nsec\fP フィールドも \fBUTIME_NOW\fP でなくどちらの \fItv_nsec\fP フィールドも \fBUTIME_OMIT\fP でもない場合)、 上記の条件 2 か条件 3 が必要である。 - +.PP .\" .\" 両方の \fItv_nsec\fP フィールドに \fBUTIME_OMIT\fP が指定された場合、 ファイルの所有権やアクセス許可のチェックは行われず、 ファイルのタイムスタンプは変更されないが、 それ以外のエラー条件はこの場合も検出される。 .SS "utimensat() 固有の内容" -.\" FIXME . Say something about O_SEARCH? (But it's not in current -.\" glibc (Mar 08), or kernel 2.6.25.) \fIpathname\fP が相対パスの場合、 デフォルトでは、 オープンしたファイルディスクリプター \fIdirfd\fP が参照するディレクトリに対する相対パスと解釈される (\fButimes\fP(2) のようにカレントワーキングディレクトリに対する相対パスと解釈されるわけではない)。 なぜこのシステムコールが役に立つのかの説明は \fBopenat\fP(2) を参照。 - +.PP \fIpathname\fP が相対パスで \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 \fIpathname\fP は (\fButimes\fP(2) 同様) 呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 - +.PP \fIpathname\fP が絶対パスの場合、 \fIdirfd\fP は無視される。 - +.PP \fIflags\fP フィールドはビットマスクで、 0 か \fI\fP で定義されている以下の定数を指定できる。 .TP \fBAT_SYMLINK_NOFOLLOW\fP @@ -148,10 +148,6 @@ struct timespec { .SH エラー .TP \fBEACCES\fP -\fItimes\fP が NULL か両方の \fItv_nsec\fP の値が \fBUTIME_NOW\fP で、 以下のいずれかにあてはまる。 -.PD 0 -.RS -.IP * 2 .\" But Linux 2.6.22 was broken here. .\" Traditionally, utime()/utimes() gives the error EACCES for the case .\" where the timestamp pointer argument is NULL (i.e., set both timestamps @@ -173,14 +169,12 @@ struct timespec { .\" and the permissions of the directory to which .\" .I fd .\" refers do not allow searches. -呼び出し元の実効ユーザー ID がファイルの所有者と一致せず、 呼び出し元がそのファイルに対する書き込みアクセス許可を持っておらず、 -呼び出し元が特権を持っていない (Linux では、ケーパビリティー \fBCAP_FOWNER\fP か \fBCAP_DAC_OVERRIDE\fP -を持っていない)。 -.IP * .\" EXT2_IMMUTABLE_FL and similar flags for other filesystems. -ファイルが immutable (変更不可) の属性が付いている (\fBchattr\fP(1) 参照)。 -.RE -.PD +\fItimes\fP is NULL, or both \fItv_nsec\fP values are \fBUTIME_NOW\fP, and the +effective user ID of the caller does not match the owner of the file, the +caller does not have write access to the file, and the caller is not +privileged (Linux: does not have either the \fBCAP_FOWNER\fP or the +\fBCAP_DAC_OVERRIDE\fP capability). .TP \fBEBADF\fP (\fBfutimens\fP()) \fIfd\fP が有効なファイルディスクリプターでない。 @@ -220,13 +214,13 @@ struct timespec { でもディレクトリを参照するファイルディスクリプターでもない。 \fIpathname\fP の構成要素のディレクトリ部分がディレクトリではない。 .TP \fBEPERM\fP -呼び出し元がタイムスタンプの一方もしくは両方を現在時刻以外の値に更新しようとしたか、 -もしくはタイムスタンプの一方を現在時刻に変更し、もう一方は変更しないままにしようとした (すなわち \fItimes\fP が NULL 以外で、 どちらの -\fItv_nsec\fP フィールドも \fBUTIME_NOW\fP でもなく、 どちらの \fItv_nsec\fP フィールドも \fBUTIME_OMIT\fP -でもない) 場合で、 以下のいずれかにあてはまる。 -.PD 0 +The caller attempted to change one or both timestamps to a value other than +the current time, or to change one of the timestamps to the current time +while leaving the other timestamp unchanged, (i.e., \fItimes\fP is not NULL, +neither \fItv_nsec\fP field is \fBUTIME_NOW\fP, and neither \fItv_nsec\fP field is +\fBUTIME_OMIT\fP) and either: .RS -.IP * 2 +.IP * 3 呼び出し元の実効ユーザー ID がファイルの所有者と一致せず、 呼び出し元が特権を持っていない (Linux では、ケーパビリティー \fBCAP_FOWNER\fP を持っていない)。 .IP * @@ -242,7 +236,6 @@ struct timespec { .\" (This was also so for the older utimes() implementation.) ファイルに追記のみか変更不可 (immutable) の属性が付いている (\fBchattr\fP(1) 参照)。 .RE -.PD .TP \fBEROFS\fP ファイルが読み込み専用のファイルシステム上にある。 @@ -251,33 +244,52 @@ struct timespec { (\fButimensat\fP()) \fIpathname\fP の構成要素のディレクトリ部分のいずれかで検索許可がなかった。 .SH バージョン \fButimensat\fP() はカーネル 2.6.22 で Linux に追加された。 glibc のサポートはバージョン 2.6 で追加された。 - +.PP \fBfutimens\fP() のサポートは glibc 2.6 で初めて登場した。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lbw23 lb lb +l l l. +Interface Attribute Value +T{ +\fButimensat\fP(), +\fBfutimens\fP() +T} Thread safety MT\-Safe +.TE +.sp 1 .SH 準拠 \fBfutimens\fP() と \fButimensat\fP() は POSIX.1\-2008 で規定されている。 .SH 注意 \fButimensat\fP() が登場した結果、 \fBfutimesat\fP(2) は非推奨となった。 - +.PP Linux では、 変更不可 (immutable) の属性が付いたファイルのタイムスタンプを変更することはできず、 また、 追記のみ (append\-only) の属性が付いたファイルで可能な変更は、 タイムスタンプを現在時刻に設定することだけである。 (これは Linux の \fButime\fP(2) や \fButimes\fP() の昔からの動作と一貫性がある動作である)。 - +.PP +両方の \fItv_nsec\fP フィールドに \fBUTIME_OMIT\fP が指定された場合、 \fButimensat\fP() の Linux 実装は、 +\fIdirfd\fP と \fIpathname\fP が参照するファイルが存在しない場合でも成功する。 +.SS "C library/kernel ABI differences" Linux では、 \fBfutimens\fP() は \fButimensat\fP() システムコールを使って実装されているライブラリ関数である。 これを可能にするため、 Linux の \fButimensat\fP() システムコールは非標準の機能を実装している。 \fIpathname\fP が NULL の場合、 呼び出しはファイルディスクリプター \fIdirfd\fP が参照するファイルのタイムスタンプを変更する (ファイルディスクリプターはどのタイプのファイルを参照していてもよい)。 この機能を利用して、 \fIfutimens(fd,\ times)\fP は以下のように実装されている。 -.nf - - utimensat(fd, NULL, times, 0); -.fi - -両方の \fItv_nsec\fP フィールドに \fBUTIME_OMIT\fP が指定された場合、 \fButimensat\fP() の Linux 実装は、 -\fIdirfd\fP と \fIpathname\fP が参照するファイルが存在しない場合でも成功する。 +.PP +.in +4n +.EX +utimensat(fd, NULL, times, 0); +.EE +.in +.PP +Note, however, that the glibc wrapper for \fButimensat\fP() disallows passing +NULL as the value for \fIpathname\fP: the wrapper function returns the error +\fBEINVAL\fP in this case. .SH バグ カーネル 2.6.26 より前では \fButimensat\fP() と \fBfutimens\fP() にはいくつかの悩ましいバグがあった。 これらのバグは、 ドラフト版の POSIX.1 規格との不整合や、 以前からの Linux での動作との違いである。 -.IP * 2 +.IP * 3 POSIX.1 では、 \fItv_nsec\fP フィールドの一つが \fBUTIME_NOW\fP か \fBUTIME_OMIT\fP の場合、 対応する \fItv_sec\fP フィールドは無視されると規定されている。 しかし、 \fItv_sec\fP フィールドの値を 0 にする必要があった (さもなければエラー \fBEINVAL\fP となった)。 @@ -377,9 +389,9 @@ file\fP) は、そのファイルに対して \fItimes\fP に NULL や 両方の では、 \fIファイルディスクリプターのアクセス許可が書き込みを許可しているか\fP (\fIaccess mode of the file descriptor allows writing\fP)のチェックが行われる。 .SH 関連項目 -\fBchattr\fP(1), \fBfutimesat\fP(2), \fBopenat\fP(2), \fBstat\fP(2), \fButimes\fP(2), -\fBfutimes\fP(3), \fBpath_resolution\fP(7), \fBsymlink\fP(7) +\fBchattr\fP(1), \fBtouch\fP(1), \fBfutimesat\fP(2), \fBopenat\fP(2), \fBstat\fP(2), +\fButimes\fP(2), \fBfutimes\fP(3), \fBinode\fP(7), \fBpath_resolution\fP(7), +\fBsymlink\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/vfork.2 b/manual/LDP_man-pages/draft/man2/vfork.2 deleted file mode 100644 index 608f6ba5..00000000 --- a/manual/LDP_man-pages/draft/man2/vfork.2 +++ /dev/null @@ -1,180 +0,0 @@ -.\" Copyright (c) 1999 Andries Brouwer (aeb@cwi.nl), 1 Nov 1999 -.\" -.\" %%%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 -.\" -.\" 1999-11-10: Merged text taken from the page contributed by -.\" Reed H. Petty (rhp@draper.net) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1999-12-04, HANATAKA Shinya -.\" Updated 2007-01-09, Akihiro MOTOKI , LDP v2.43 -.\" Updated 2008-11-10, Akihiro MOTOKI , LDP v3.13 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH VFORK 2 2012\-08\-05 Linux "Linux Programmer's Manual" -.SH 名前 -vfork \- 子プロセスを生成し親プロセスを停止させる -.SH 書式 -\fB#include \fP -.br -\fB#include \fP -.sp -\fBpid_t vfork(void);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBvfork\fP(): -.ad l -.RS 4 -.PD 0 -.TP 4 -glibc 2.12 以降: -.nf -_BSD_SOURCE || - (_XOPEN_SOURCE\ >=\ 500 || - _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) && - !(_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700) -.TP 4 -.fi -glibc 2.12 より前: _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.PD -.RE -.ad b -.SH 説明 -.SS 規格の説明 -(POSIX.1 より引用) \fBvfork\fP() 関数は \fBfork\fP(2) と同じ働きをするが、 \fBvfork\fP() -で作成されたプロセスが \fBvfork\fP() からの返り値を格納している \fIpid_t\fP 型の変数以外を変更したり、 \fBvfork\fP() -を呼び出している関数から return したり、 \fB_exit\fP(2) や \fBexec\fP(3) -族の関数をコールする前に他の関数をコールした場合の動作が 未定義であるという点が異なる。 -.SS "LINUX での説明" -\fBvfork\fP() は \fBfork\fP(2) と全く同じように呼び出したプロセスの子プロセスを生成する。 詳しい説明と返り値、エラーについては -\fBfork\fP(2) を参照すること。 -.PP -\fBvfork\fP() は \fBclone\fP(2) の特殊な場合である。 親プロセスのページテーブルのコピーを行わずに新しいプロセスを -作成するために使用する。これは性能に敏感なアプリケーションにおいて 子プロセスを生成してすぐに \fBexecve\fP(2) する場合に有用かもしれない。 -.PP -\fBvfork\fP() は \fBfork\fP(2) と違い、子プロセスが終了するか、 -\fBexecve\fP(2) をコールするまで呼び出し元のスレッドを停止 (suspend) させる。 -子プロセスの終了は、\fB_exit\fP(2) の呼び出しによる通常終了、致命的なシグナルの -配送後の異常終了の二つのケースがある。 -この時点までは、子プロセスはスタックを含む全てのメモリーを親プロセスと共有する。 -子プロセスは現在の関数から return してはならず、 -\fBexit\fP(3) もコールしてはならないが、\fB_exit\fP(2) ならばコールしてもよい。 - -\fBfork\fP(2) と同様に、 \fBvfork\fP() で作成された子プロセスは、 -(ファイルディスクリプター、シグナル配送定義、カレントワーキングディレクトリなどの) -呼び出し元のプロセスの各種の属性を継承する。 -\fBvfork\fP() では、上で説明した仮想アドレス空間の扱いだけが異なる。 - -親プロセスへ送られたシグナルは、子プロセスが親プロセスのメモリーを解放した後 -(すなわち、子プロセスが終了するか \fBexecve\fP(2) を呼んだ後) に到着する。 -.SS 歴史的な説明 -Linux において \fBfork\fP(2) は書き込み時コピー (copy\-on\-write) ページを使用して実装されている。 そのため -\fBfork\fP(2) を使用することによって被る損害は親プロセスのページテーブルを 複製するために必要な時間とメモリーだけである。 -しかしながら、忌しき昔には \fBfork\fP(2) は呼び出したプロセスのデータ空間の全てのコピーしていたが、 -これはしばしば不必要であった。なぜなら、たいていはすぐ後に \fBexec\fP(3) を実行していたからである。 この場合の効率を上げるために BSD は -\fBvfork\fP() システムコールを導入して親プロセスのアドレス空間を完全にコピー するかわりに、 \fBexecve\fP(2) をコールするか -exit が起きるまで親プロセスのメモリーと制御スレッド を借りるようにした。 親プロセスは子プロセスがその資源を使用している間は停止された。 -\fBvfork\fP() は使いにくいものであった: 例えば、親プロセスの変数を変更しな -いようにするためにはどの変数がレジスターに保持されているかを知らな ければならなかった。 -.SH 準拠 -4.3BSD; POSIX.1\-2001 (廃止予定とされている)。 -POSIX.1\-2008 では \fBvfork\fP() の規定が削除されている。 - -.\" In AIXv3.1 vfork is equivalent to fork. -\fBvfork\fP() コールは他のオペレーティングシステムの同名のコールと ちょっと似 -ているかもしれない。規格が \fBvfork\fP() に要求していることは、 \fBfork\fP(2) に要 -求していることよりは弱い。したがって、 両者を同じものとして実装しても、規格に -準拠していることになる。 特にプログラマーは、子プロセスが終了するか -\fBexecve\fP(2) を呼び出すまで親プロセスが停止していることや、メモリーを共有するこ -とによる特殊な動作をあてにすべきではない。 -.SH 注意 -.PP -\fBvfork\fP() の動作は構造的な欠陥と考える人もいるだろうし、 -BSD のマニュアルには、「このシステムコールは妥当なシステム共有機構が実装さ -れた場合には削除される。ユーザーは \fBvfork\fP() のメモリー共有機能に依存するべき -ではない。何故ならば、このシステムコール が削除された場合には、それは -\fBfork\fP(2) の同義語とされるからである。」と書かれている。しかしながら、 -最近のメモリー管理ハードウェアにより \fBfork\fP(2) と \fBvfork\fP() の間の性能差が -減ったとはいえ、 Linux や他のシステムで \fBvfork\fP() が残されているのには -いくつか理由がある: -.IP * 3 -性能に厳しいアプリケーションでは、 \fBvfork\fP() により得られる -小さな性能上のメリットが必要な場合がある。 -.IP * -.\" http://stackoverflow.com/questions/4259629/what-is-the-difference-between-fork-and-vfork -.\" http://developers.sun.com/solaris/articles/subprocess/subprocess.html -.\" http://mailman.uclinux.org/pipermail/uclinux-dev/2009-April/000684.html -\fBvfork\fP() はメモリー管理ユニット (MMU) を持たないシステムでも実装すること -ができるが、そのようなシステムで \fBfork\fP(2) を実装することはできない。 -(POSIX.1\-2008 では \fBvfork\fP() が標準から削除された。 -\fBposix_spawn\fP(3) 関数の POSIX の原理 (rationale) には、 -\fBfork\fP(2)+\fBexec\fP(3) と等価な機能を提供する \fBposix_spawn\fP(3) は、 -MMU を持たないシステムでも実装できるように設計されたとの注記がある。) -.SS "Linux での注意" -\fBpthread_atfork\fP(3) を使って設定された fork ハンドラーは NPTL -スレッドライブラリコールを採用したマルチスレッドプログラムでは 呼び出されない。一方、LinuxThreads スレッドライブラリを使った -プログラムでは、fork ハンドラーは呼び出される。 (Linux のスレッドライブラリの説明は \fBpthreads\fP(7) を参照。) - -\fBvfork\fP() の呼び出しは、以下の \fIflags\fP を指定して \fBclone\fP(2) を呼び出す -のと等価である。 - - CLONE_VM | CLONE_VFORK | SIGCHLD -.SS 歴史 -.\" In the release notes for 4.2BSD Sam Leffler wrote: `vfork: Is still -.\" present, but definitely on its way out'. -\fBvfork\fP() システムコールは 3.0BSD に現われた。 4.4BSD において \fBfork\fP(2) の同義語となったが、NetBSD -では再び導入された。 -.UR http://www.netbsd.org\:/Documentation\:/kernel\:/vfork.html -.UE -を参照。 -Linux では 2.2.0\-pre6 あたりまでは \fBfork\fP(2) と等価であった。(i386 では) 2.2.0\-pre9 から -(他のアーキテクチャーでは 少し遅れて) 独立したシステムコールとなった。 glibc でのサポートは glibc\-2.0.112 で追加された。 -.SH バグ -.PP -.\" -.\" As far as I can tell, the following is not true in 2.6.19: -.\" Currently (Linux 2.3.25), -.\" .BR strace (1) -.\" cannot follow -.\" .BR vfork () -.\" and requires a kernel patch. -シグナルの扱いの詳細は不明瞭でシステムごとに異っている。 BSD のマニュアルには、 「デッドロック状態になる可能性があるので \fBvfork\fP() -の途中の子プロセスに \fBSIGTTOU\fP や \fBSIGTTIN\fP シグナルを送信してはならない; さらに出力や \fIioctl\fP -は許されるが、入力を試みた場合には結果はファイル終端 (EOF) になる。」 と書かれている。 -.SH 関連項目 -\fBclone\fP(2), \fBexecve\fP(2), \fBfork\fP(2), \fBunshare\fP(2), \fBwait\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/vhangup.2 b/manual/LDP_man-pages/draft/man2/vhangup.2 index 2d931041..61d274af 100644 --- a/manual/LDP_man-pages/draft/man2/vhangup.2 +++ b/manual/LDP_man-pages/draft/man2/vhangup.2 @@ -38,20 +38,29 @@ .\" Updated & Modified Tue Feb 15 03:38:03 JST 2005 .\" by Yuichi SATO .\" -.TH VHANGUP 2 2007\-07\-26 Linux "Linux Programmer's Manual" +.TH VHANGUP 2 2016\-03\-15 Linux "Linux Programmer's Manual" .SH 名前 vhangup \- 現在の端末を仮想的に (virtualy) ハングアップ (hangup) させる .SH 書式 \fB#include \fP -.sp +.PP \fBint vhangup(void);\fP -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP .ad l -\fBvhangup\fP(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500) +\fBvhangup\fP(): +.nf +.\" commit 266865c0e7b79d4196e2cc393693463f03c90bd8 + Since glibc 2.21: + _DEFAULT_SOURCE + In glibc 2.19 and 2.20: + _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500) + Up to and including glibc 2.19: + _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500) +.fi .ad b .SH 説明 \fBvhangup\fP() は現在の端末 (terminal) でハングアップをシミュレートする。このコールは他のユーザーがログインした時に綺麗 @@ -66,8 +75,7 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 .SH 準拠 このコールは Linux 特有であり、移植を意図したプログラムで 使用してはいけない。 .SH 関連項目 -\fBcapabilities\fP(7), \fBinit\fP(1) +\fBinit\fP(1), \fBcapabilities\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/vm86.2 b/manual/LDP_man-pages/draft/man2/vm86.2 index e76f673d..23d71a67 100644 --- a/manual/LDP_man-pages/draft/man2/vm86.2 +++ b/manual/LDP_man-pages/draft/man2/vm86.2 @@ -43,15 +43,15 @@ vm86old, vm86 \- 仮想 8086 モードへ移行する .SH 書式 \fB#include \fP -.sp +.PP \fBint vm86old(struct vm86_struct *\fP\fIinfo\fP\fB);\fP -.sp +.PP \fBint vm86(unsigned long \fP\fIfn\fP\fB, struct vm86plus_struct *\fP\fIv86\fP\fB);\fP .SH 説明 \fBvm86\fP() システムコールは Linux 0.97p2 で導入された。 これは Linux 2.1.15 と 2.0.28 で \fBvm86old\fP() に名前が変更され、 新しい \fBvm86\fP() が導入された。 \fIstruct vm86_struct\fP の定義は 1.1.8 と 1.1.9 で変更された。 -.LP +.PP これらのコールによってプロセスは VM86 モード (Intel の文書では仮想 8086 モード) へと移行する。 これらのコールは \fBdosemu\fP で使用される。 .PP @@ -72,6 +72,5 @@ VM86 モードはプロテクトモードタスクにおける リアルモー .SH 準拠 この関数は 32 ビット Intel プロセッサ上の Linux 特有の関数であり、 移植を意図したプログラムでは使用すべきでない。 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man2/vmsplice.2 b/manual/LDP_man-pages/draft/man2/vmsplice.2 index dff3a33e..8b99dfb3 100644 --- a/manual/LDP_man-pages/draft/man2/vmsplice.2 +++ b/manual/LDP_man-pages/draft/man2/vmsplice.2 @@ -33,15 +33,15 @@ .\" all rights reserved. .\" Translated 2007-02-04, Akihiro MOTOKI .\" -.TH VMSPLICE 2 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH VMSPLICE 2 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 -vmsplice \- ユーザーページをパイプに継ぎ合わせる +vmsplice \- splice user pages to/from a pipe .SH 書式 .nf \fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ \fB#include \fP \fB#include \fP - +.PP \fBssize_t vmsplice(int \fP\fIfd\fP\fB, const struct iovec *\fP\fIiov\fP\fB,\fP \fB unsigned long \fP\fInr_segs\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP .fi @@ -54,23 +54,28 @@ vmsplice \- ユーザーページをパイプに継ぎ合わせる .\" the kernel-space one (contrast this to "write()", which copies .\" the actual data, and you can thus reuse the buffer immediately .\" after a successful write), but that is often easy to do. -\fBvmsplice\fP() システムコールは、 \fIiov\fP で指定されたユーザーメモリーの \fInr_segs\fP の範囲をパイプにマッピングする。 -\fIfd\fP はパイプを参照していなければならない。 - +.\" Since Linux 2.6.23 +.\" commit 6a14b90bb6bc7cd83e2a444bf457a2ea645cbfe7 +If \fIfd\fP is opened for writing, the \fBvmsplice\fP() system call maps +\fInr_segs\fP ranges of user memory described by \fIiov\fP into a pipe. If \fIfd\fP +is opened for reading, the \fBvmsplice\fP() system call fills \fInr_segs\fP +ranges of user memory described by \fIiov\fP from a pipe. The file descriptor +\fIfd\fP must refer to a pipe. +.PP ポインター \fIiov\fP は \fIiovec\fP 構造体の配列を指す。 \fIiovec\fP 構造体は \fI\fP で以下のように定義されている: - +.PP .in +4n -.nf +.EX struct iovec { - void *iov_base; /* 開始アドレス */ - size_t iov_len; /* バイト数 */ + void *iov_base; /* Starting address */ + size_t iov_len; /* Number of bytes */ }; +.EE .in -.fi - +.PP \fIflags\fP 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。 -.TP 1.9i +.TP \fBSPLICE_F_MOVE\fP \fBvmsplice\fP() では未使用。 \fBsplice\fP(2) 参照。 .TP @@ -85,15 +90,16 @@ struct iovec { \fBSPLICE_F_GIFT\fP .\" FIXME . Explain the following line in a little more detail: .\" FIXME -.\" It looks like the page-alignment requirement went away with -.\" commit bd1a68b59c8e3bce45fb76632c64e1e063c3962d +.\" It looks like the page-alignment requirement went away with +.\" commit bd1a68b59c8e3bce45fb76632c64e1e063c3962d .\" .\" .... if we expect to later SPLICE_F_MOVE to the cache. -ユーザーページがカーネルへ渡すもの (gift) であることを示す。 アプリケーションはこのメモリーを絶対に変更してはならない。 -さもなければ、ページキャッシュとディスク上のデータは 一致しなくなるだろう。 ページをカーネルに渡すと、この次の \fBsplice\fP(2) -\fBSPLICE_F_MOVE\fP でそのページの移動を行うことができる。 このフラグが指定されなかった場合、この次の \fBsplice\fP(2) -\fBSPLICE_F_MOVE\fP でそのページのコピーを行わなければならない。 データはメモリー上でページ境界にあっていなければならず、 -長さもページ境界の倍数でなければならない。 +The user pages are a gift to the kernel. The application may not modify +this memory ever, otherwise the page cache and on\-disk data may differ. +Gifting pages to the kernel means that a subsequent \fBsplice\fP(2) +\fBSPLICE_F_MOVE\fP can successfully move the pages; if this flag is not +specified, then a subsequent \fBsplice\fP(2) \fBSPLICE_F_MOVE\fP must copy the +pages. Data must also be properly page aligned, both in memory and length. .SH 返り値 成功して完了すると、 \fBvmsplice\fP() はパイプに転送したバイト数を返す。 エラーの場合、 \fBvmplice\fP() は \-1 を返し、 \fIerrno\fP をエラーを示す値に設定する。 @@ -117,12 +123,20 @@ struct iovec { .SH 準拠 このシステムコールは Linux 固有である。 .SH 注意 -指定されたセグメント数が上限に達した場合、 \fBvmsplice\fP() は他のベクトル形式の read/write を行う関数と同じ動作をする。 -上限は \fBIOV_MAX\fP であり、 \fI\fP で定義されている。 このドキュメントを書いた時点での値は 1024 -である。 +.\" UIO_MAXIOV in kernel source +\fBvmsplice\fP() follows the other vectorized read/write type functions when +it comes to limitations on the number of segments being passed in. This +limit is \fBIOV_MAX\fP as defined in \fI\fP. Currently, this +limit is 1024. +.PP +.\" commit 6a14b90bb6bc7cd83e2a444bf457a2ea645cbfe7 +\fBvmsplice\fP() really supports true splicing only from user memory to a +pipe. In the opposite direction, it actually just copies the data to +userspace. But this makes the interface nice and symmetric and enables +people to build on \fBvmsplice\fP() with room for future improvement in +performance. .SH 関連項目 -\fBsplice\fP(2), \fBtee\fP(2) +\fBsplice\fP(2), \fBtee\fP(2), \fBpipe\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 5bacb641..00000000 --- a/manual/LDP_man-pages/draft/man2/wait.2 +++ /dev/null @@ -1,401 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig -.\" and Copyright (c) 2004 by 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 Sat Jul 24 13:30:06 1993 by Rik Faith -.\" Modified Sun Aug 21 17:42:42 1994 by Rik Faith -.\" (Thanks to Koen Holtman ) -.\" Modified Wed May 17 15:54:12 1995 by Rik Faith -.\" To remove *'s from status in macros (Thanks to Michael Shields). -.\" Modified as suggested by Nick Duffek , 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 -.\" - 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, -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya all rights reserved. -.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved. -.\" Translated 1997-03-04, HANATAKA Shinya -.\" Modified 2000-09-23, HANATAKA Shinya -.\" Updated 2001-06-25, Kentaro Shirakata -.\" Updated 2001-10-15, Kentaro Shirakata -.\" Updated 2001-12-13, Kentaro Shirakata -.\" Updated 2002-10-21, Kentaro Shirakata -.\" Updated 2003-01-27, Kentaro Shirakata -.\" Updated 2003-09-12, Kentaro Shirakata -.\" Updated 2005-03-19, Akihiro MOTOKI -.\" Updated 2005-12-26, Akihiro MOTOKI -.\" Updated 2008-07-31, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH WAIT 2 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -wait, waitpid, waitid \- プロセスの状態変化を待つ -.SH 書式 -\fB#include \fP -.br -\fB#include \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 - /* これは glibc と POSIX のインターフェイスである。 - 生のシステムコールについての情報は「注意」の節を参照。 */ -.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 を返す。 -.PP -エラーの場合 \-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(1) の養子となる。 \fBinit\fP(1) は 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 より前ではデフォルトであった。 -.SS "C ライブラリとカーネル ABI の違い" -生の \fBwaitid\fP() システムコールは \fIstruct rusage\ *\fP 型の第 5 引数を取る。 この引数が NULL 以外の場合、 -この引数が子プロセスのリソース使用状況を返すのに使用される。 これは \fBwait4\fP(2) と同じ方法である。 詳細は \fBgetrusage\fP(2) -を参照。 -.SH バグ -POSIX.1\-2008 によると、 \fBwaitid\fP() を呼び出すアプリケーションは、 \fIinfop\fP が \fIsiginfo_t\fP -構造体を指していること (つまり \fIinfop\fP が NULL でないポインターであること) を保証しなければならない。 Linux では、 -\fIinfop\fP が NULL の場合、 \fBwaitid\fP() は成功し、wait している子プロセスのプロセス ID を返す。 -アプリケーションは、この食い違った、非標準で、不必要な機能に依存しないようにすべきである。 -.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 -#include -#include -#include - -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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%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 deleted file mode 100644 index af6c3cd5..00000000 --- a/manual/LDP_man-pages/draft/man2/wait4.2 +++ /dev/null @@ -1,136 +0,0 @@ -.\" 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 -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997,1998 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-03-04, HANATAKA Shinya -.\" Modified 1997-09-28, HANATAKA Shinya -.\" Modified 2001-08-17, HANATAKA Shinya -.\" Updated 2001-12-13, Kentaro Shirakata -.\" Updated 2003-09-12, Kentaro Shirakata -.\" Updated 2005-03-04, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH WAIT4 2 2012\-09\-23 Linux "Linux Programmer's Manual" -.SH 名前 -wait3, wait4 \- BSD スタイルでプロセスの状態変化を待つ -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -\fB#include \fP -\fB#include \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 説明 -これらの関数は廃止予定である。 新しいプログラムでは \fBwaitpid\fP(2) や \fBwaitid\fP(2) を使用すること。 - -システムコール \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 には \fBwait3\fP() の規定があった。 SUSv2 には \fBwait3\fP() が含まれていたが、「過去の名残 -(LEGACY)」となっていた。 SUSv3 では \fBwait3\fP() は削除された。 -.SH 注意 -現在では \fI\fP をインクルードする必要はないが、インクルードしておくと 移植性を高めることができる (実際には -\fI\fP で \fIrusage\fP 構造体が定義されているが、そのフィールドで使用されている -\fIstruct timeval\fP 型は \fI\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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%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 deleted file mode 100644 index 69d1cdf1..00000000 --- a/manual/LDP_man-pages/draft/man2/write.2 +++ /dev/null @@ -1,184 +0,0 @@ -.\" This manpage is Copyright (C) 1992 Drew Eckhardt; -.\" and Copyright (C) 1993 Michael Haardt, Ian Jackson. -.\" and Copyright (C) 2007 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 Sat Jul 24 13:35:59 1993 by Rik Faith -.\" Modified Sun Nov 28 17:19:01 1993 by Rik Faith -.\" Modified Sat Jan 13 12:58:08 1996 by Michael Haardt -.\" -.\" Modified Sun Jul 21 18:59:33 1996 by Andries Brouwer -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Mar 4 00:18:20 JST 1997 -.\" by HANATAKA Shinya -.\" Updated & Modified Wed Jun 13 20:57:55 JST 2001 -.\" by Yuichi SATO -.\" Updated Mon Jun 25 JST 2001 by Kentaro Shirakata -.\" Updated Fri Dec 21 JST 2001 by Kentaro Shirakata -.\" Updated 2002-09-24 by Akihiro MOTOKI -.\" Updated 2005-10-14 by Akihiro MOTOKI -.\" Updated 2007-05-01, Akihiro MOTOKI, LDP v2.46 -.\" Updated 2007-09-01, Akihiro MOTOKI, LDP v2.64 -.\" Updated 2008-04-13, Akihiro MOTOKI, LDP v3.20 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2013-05-04, Akihiro MOTOKI -.\" -.TH WRITE 2 2015\-01\-22 Linux "Linux Programmer's Manual" -.SH 名前 -write \- ファイルディスクリプター (file descriptor) に書き込む -.SH 書式 -\fB#include \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 -\fIfd\fP が参照するファイルを含むファイルシステムのディスクブロックのユーザークォータの上限に達している。 -.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 -\fBEPERM\fP -操作が file seal により禁止されている。 \fBfcntl\fP(2) 参照。 -.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 バグ -POSIX.1\-2008/SUSv4 セクション XSI 2.9.7 ("Thread Interactions with Regular File -Operations") によると、 - -.RS 4 -以下のすべての関数では、 通常ファイルもしくはシンボリックリンクに対する操作では POSIX.1\-2008 -で規定された効果が互いにアトミックに行われなければならない: ... -.RE - -.\" http://thread.gmane.org/gmane.linux.kernel/1649458 -.\" From: Michael Kerrisk (man-pages gmail.com> -.\" Subject: Update of file offset on write() etc. is non-atomic with I/O -.\" Date: 2014-02-17 15:41:37 GMT -.\" Newsgroups: gmane.linux.kernel, gmane.linux.file-systems -.\" commit 9c225f2655e36a470c4f58dbbc99244c5fc7f2d4 -.\" Author: Linus Torvalds -.\" Date: Mon Mar 3 09:36:58 2014 -0800 -.\" -.\" vfs: atomic f_pos accesses as per POSIX -この後に書かれている API の中に \fBwrite\fP() と \fBwritev\fP(2) である。 スレッド(やプロセス) -間でアトミックに適用することが求められる効果の一つとして、 ファイルオフセットの更新がある。 しかしながら、 バージョン 3.14 より前の Linux -では、 この限りではない。 オープンファイル記述 (open file description) を共有する 2 つのプロセスが同時に -\fBwrite\fP() (や \fBwritev\fP(2)) を実行した場合、 この I/O 操作ではファイルオフセットの更新に関してはアトミックではなく、 -2 つのプロセスから出力されるデータブロックが (間違って) 重なる可能性がある。 この問題は Linux 3.14 で修正された。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/CPU_SET.3 b/manual/LDP_man-pages/draft/man3/CPU_SET.3 index b8aa2464..99f27660 100644 --- a/manual/LDP_man-pages/draft/man3/CPU_SET.3 +++ b/manual/LDP_man-pages/draft/man3/CPU_SET.3 @@ -34,7 +34,7 @@ .\" all rights reserved. .\" Translated 2013-08-21, Akihiro MOTOKI .\" -.TH CPU_SET 3 2012\-03\-15 Linux "Linux Programmer's Manual" +.TH CPU_SET 3 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 CPU_SET, CPU_CLR, CPU_ISSET, CPU_ZERO, CPU_COUNT, CPU_AND, CPU_OR, CPU_XOR, CPU_EQUAL, CPU_ALLOC, CPU_ALLOC_SIZE, CPU_FREE, CPU_SET_S, CPU_CLR_S, @@ -44,54 +44,55 @@ CPU_EQUAL_S \- CPU 集合を操作するためのマクロ .nf \fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ \fB#include \fP -.sp +.PP \fBvoid CPU_ZERO(cpu_set_t *\fP\fIset\fP\fB);\fP -.sp +.PP \fBvoid CPU_SET(int \fP\fIcpu\fP\fB, cpu_set_t *\fP\fIset\fP\fB);\fP \fBvoid CPU_CLR(int \fP\fIcpu\fP\fB, cpu_set_t *\fP\fIset\fP\fB);\fP \fBint CPU_ISSET(int \fP\fIcpu\fP\fB, cpu_set_t *\fP\fIset\fP\fB);\fP -.sp +.PP \fBint CPU_COUNT(cpu_set_t *\fP\fIset\fP\fB);\fP -.sp +.PP \fBvoid CPU_AND(cpu_set_t *\fP\fIdestset\fP\fB,\fP \fB cpu_set_t *\fP\fIsrcset1\fP\fB, cpu_set_t *\fP\fIsrcset2\fP\fB);\fP \fBvoid CPU_OR(cpu_set_t *\fP\fIdestset\fP\fB,\fP \fB cpu_set_t *\fP\fIsrcset1\fP\fB, cpu_set_t *\fP\fIsrcset2\fP\fB);\fP \fBvoid CPU_XOR(cpu_set_t *\fP\fIdestset\fP\fB,\fP \fB cpu_set_t *\fP\fIsrcset1\fP\fB, cpu_set_t *\fP\fIsrcset2\fP\fB);\fP -.sp +.PP \fBint CPU_EQUAL(cpu_set_t *\fP\fIset1\fP\fB, cpu_set_t *\fP\fIset2\fP\fB);\fP -.sp +.PP \fBcpu_set_t *CPU_ALLOC(int \fP\fInum_cpus\fP\fB);\fP \fBvoid CPU_FREE(cpu_set_t *\fP\fIset\fP\fB);\fP \fBsize_t CPU_ALLOC_SIZE(int \fP\fInum_cpus\fP\fB);\fP -.sp +.PP \fBvoid CPU_ZERO_S(size_t \fP\fIsetsize\fP\fB, cpu_set_t *\fP\fIset\fP\fB);\fP -.sp +.PP \fBvoid CPU_SET_S(int \fP\fIcpu\fP\fB, size_t \fP\fIsetsize\fP\fB, cpu_set_t *\fP\fIset\fP\fB);\fP \fBvoid CPU_CLR_S(int \fP\fIcpu\fP\fB, size_t \fP\fIsetsize\fP\fB, cpu_set_t *\fP\fIset\fP\fB);\fP \fBint CPU_ISSET_S(int \fP\fIcpu\fP\fB, size_t \fP\fIsetsize\fP\fB, cpu_set_t *\fP\fIset\fP\fB);\fP -.sp +.PP \fBint CPU_COUNT_S(size_t \fP\fIsetsize\fP\fB, cpu_set_t *\fP\fIset\fP\fB);\fP -.sp +.PP \fBvoid CPU_AND_S(size_t \fP\fIsetsize\fP\fB, cpu_set_t *\fP\fIdestset\fP\fB,\fP \fB cpu_set_t *\fP\fIsrcset1\fP\fB, cpu_set_t *\fP\fIsrcset2\fP\fB);\fP \fBvoid CPU_OR_S(size_t \fP\fIsetsize\fP\fB, cpu_set_t *\fP\fIdestset\fP\fB,\fP \fB cpu_set_t *\fP\fIsrcset1\fP\fB, cpu_set_t *\fP\fIsrcset2\fP\fB);\fP \fBvoid CPU_XOR_S(size_t \fP\fIsetsize\fP\fB, cpu_set_t *\fP\fIdestset\fP\fB,\fP \fB cpu_set_t *\fP\fIsrcset1\fP\fB, cpu_set_t *\fP\fIsrcset2\fP\fB);\fP -.sp +.PP \fBint CPU_EQUAL_S(size_t \fP\fIsetsize\fP\fB, cpu_set_t *\fP\fIset1\fP\fB, cpu_set_t *\fP\fIset2\fP\fB);\fP .fi .SH 説明 \fIcpu_set_t\fP データ構造体は CPU 集合を表現している。 CPU 集合は \fBsched_setaffinity\fP(2) や同様のインターフェースで使用されている。 - -\fIcpu_set_t\fP データ型はビット集合として実装されている。 しかし、 データ構造体はその実装を意識せずに扱うものとされており、 CPU -集合のすべての操作は、 このページで説明されているマクロを通して行うべきである。 - +.PP +The \fIcpu_set_t\fP data type is implemented as a bit mask. However, the data +structure should be treated as opaque: all manipulation of CPU sets should +be done via the macros described in this page. +.PP 以下のマクロが CPU 集合 \fIset\fP を操作するために提供されている。 -.TP 17 +.TP \fBCPU_ZERO\fP() \fIset\fP をクリアする。 集合には何も CPU が含まれない状態となる。 .TP @@ -109,11 +110,15 @@ CPU \fIcpu\fP が \fIset\fP のメンバーであるかを検査する。 .PP \fIcpu\fP 引き数が指定する場合、 その引き数は副作用を伴うべきではない。 上記のマクロは引き数を複数回評価する可能性があるからである。 .PP -そのシステムで利用可能な最初の CPU が \fIcpu\fP 値 0 に対応し、 次の CPU が \fIcpu\fP 値 1 に対応し、 以降も同様である。 -定数 \fBCPU_SETSIZE\fP (現在のところ 1024) は \fIcpu_set_t\fP に格納できる最大 CPU 数よりも大きな値である。 - +The first CPU on the system corresponds to a \fIcpu\fP value of 0, the next CPU +corresponds to a \fIcpu\fP value of 1, and so on. No assumptions should be +made about particular CPUs being available, or the set of CPUs being +contiguous, since CPUs can be taken offline dynamically or be otherwise +absent. The constant \fBCPU_SETSIZE\fP (currently 1024) specifies a value one +greater than the maximum CPU number that can be stored in \fIcpu_set_t\fP. +.PP 以下のマクロは CPU 集合どうしの論理操作を行う。 -.TP 17 +.TP \fBCPU_AND\fP() 集合 \fIsrcset1\fP と \fIsrcset2\fP の積集合を \fIdestset\fP に格納する (元の集合のいずれかが \fIdestset\fP として使用される場合もある)。 @@ -133,9 +138,9 @@ CPU \fIcpu\fP が \fIset\fP のメンバーであるかを検査する。 いくつかのアプリケーションでは CPU 集合の大きさを動的に決める能力 (例えば、 標準の \fIcpu_set_t\fP データ型で定義されたよりも大きい集合を割り当てるなど) が必要となることがあるため、 現在 glibc はこれに対応するためにいくつかのマクロを提供している。 - +.PP 以下のマクロを使うと CPU 集合の割り当てと解放ができる。 -.TP 17 +.TP \fBCPU_ALLOC\fP() 0 から \fInum_cpus\-1\fP までの範囲の CPU を保持するのに十分な大きさの CPU 集合を割り当てる。 .TP @@ -151,23 +156,23 @@ CPU \fIcpu\fP が \fIset\fP のメンバーであるかを検査する。 .SH 返り値 \fBCPU_ISSET\fP() と \fBCPU_ISSET_S\fP() は、 \fIcpu\fP が \fIset\fP に含まれていれば 0 以外を返し、含まれない場合 0 を返す。 - +.PP \fBCPU_COUNT\fP() と \fBCPU_COUNT_S\fP() は \fIset\fP に含まれる CPU 数を返す。 - -\fBCPU_EQUAL\fP() と \fBCPU_EQUAL_S\fP() は、 二つの CPU 集合が等しければ 0 以外を返し、 等しくない場合 0 -を返す。 - +.PP +\fBCPU_EQUAL\fP() and \fBCPU_EQUAL_S\fP() return nonzero if the two CPU sets are +equal; otherwise they return 0. +.PP \fBCPU_ALLOC\fP() は成功するとポインターを返し、 失敗すると NULL を返す (エラーは \fBmalloc\fP(3) と同じである)。 - +.PP \fBCPU_ALLOC_SIZE\fP() は指定された大きさの CPU 集合を格納するのに必要なバイト数を返す。 - +.PP 他の関数は値を返さない。 .SH バージョン マクロ \fBCPU_ZERO\fP(), \fBCPU_SET\fP(), \fBCPU_CLR\fP(), \fBCPU_ISSET\fP() は glibc 2.3.3 で追加された。 - +.PP \fBCPU_COUNT\fP() は glibc 2.6 で初めて登場した。 - +.PP \fBCPU_AND\fP(), \fBCPU_OR\fP(), \fBCPU_XOR\fP(), \fBCPU_EQUAL\fP(), \fBCPU_ALLOC\fP(), \fBCPU_ALLOC_SIZE\fP(), \fBCPU_FREE\fP(), \fBCPU_ZERO_S\fP(), \fBCPU_SET_S\fP(), \fBCPU_CLR_S\fP(), \fBCPU_ISSET_S\fP(), \fBCPU_AND_S\fP(), \fBCPU_OR_S\fP(), @@ -176,15 +181,17 @@ CPU \fIcpu\fP が \fIset\fP のメンバーであるかを検査する。 これらのインターフェースは Linux 固有である。 .SH 注意 CPU 集合を複製するには、 \fBmemcpy\fP(3) を使用する。 - -CPU 集合はロングワード単位に割り当てられるビット集合なので、 動的に割り当てられた CPU 集合の実際の CPU 数は -\fIsizeof(unsigned long)\fP の次の倍数に切り上げられることになる。 アプリケーションは、 -これらの余分なビットの内容は不定と考えるべきである。 - -名前は似ているが、 定数 \fBCPU_SETSIZE\fP は \fIcpu_set_t\fP データ型に含まれる CPU 数 -(つまり、事実上ビット集合内のビットカウント) を示すのに対して、 マクロ \fBCPU_*_S\fP() の \fIsetsize\fP -引き数はバイト単位のサイズである点に注意すること。 - +.PP +Since CPU sets are bit masks allocated in units of long words, the actual +number of CPUs in a dynamically allocated CPU set will be rounded up to the +next multiple of \fIsizeof(unsigned long)\fP. An application should consider +the contents of these extra bits to be undefined. +.PP +Notwithstanding the similarity in the names, note that the constant +\fBCPU_SETSIZE\fP indicates the number of CPUs in the \fIcpu_set_t\fP data type +(thus, it is effectively a count of the bits in the bit mask), while the +\fIsetsize\fP argument of the \fBCPU_*_S\fP() macros is a size in bytes. +.PP 「書式」に書かれている引き数と返り値のデータ型は、それぞれの場合でどんな型が期待されるかのヒントである。 しかしながら、 これらのインターフェースはマクロとして実装されているため、 このヒントを守らなかった場合に、 コンパイラが必ずしも全ての型エラーを捕捉できるとは限らない。 @@ -194,10 +201,10 @@ glibc 2.8 以前の 32 ビットプラットフォームでは、 \fBCPU_ALLOC\f \fBCPU_ALLOC_SIZE\fP() は本来あるべき値の二倍の値を返す。 このバグはプログラムの動作には影響を与えないはずだが、 無駄にメモリーを消費し、 動的に割り当てられた CPU 集合に対して操作を行うマクロの動作の効率が下がる結果となる。 これらのバグは glibc 2.9 で修正された。 -.SH 例 +.SH EXAMPLES 以下のプログラムは、動的に割り当てた CPU 集合に対していくつかのマクロを使用する例を示している。 - -.nf +.PP +.EX #define _GNU_SOURCE #include #include @@ -210,7 +217,7 @@ main(int argc, char *argv[]) { cpu_set_t *cpusetp; size_t size; - int num_cpus, cpu; + int num_cpus; if (argc < 2) { fprintf(stderr, "Usage: %s \en", argv[0]); @@ -228,7 +235,7 @@ main(int argc, char *argv[]) size = CPU_ALLOC_SIZE(num_cpus); CPU_ZERO_S(size, cpusetp); - for (cpu = 0; cpu < num_cpus; cpu += 2) + for (int cpu = 0; cpu < num_cpus; cpu += 2) CPU_SET_S(cpu, size, cpusetp); printf("CPU_COUNT() of set: %d\en", CPU_COUNT_S(size, cpusetp)); @@ -236,11 +243,10 @@ main(int argc, char *argv[]) CPU_FREE(cpusetp); exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/INFINITY.3 b/manual/LDP_man-pages/draft/man3/INFINITY.3 index 170612d9..8864d0e2 100644 --- a/manual/LDP_man-pages/draft/man3/INFINITY.3 +++ b/manual/LDP_man-pages/draft/man3/INFINITY.3 @@ -33,37 +33,35 @@ .\" Translated Thu Jan 27 00:33:04 JST 2005 .\" by Yuichi SATO .\" -.TH INFINITY 3 2007\-07\-26 "" "Linux Programmer's Manual" +.TH INFINITY 3 2020\-12\-21 "" "Linux Programmer's Manual" .SH 名前 INFINITY, NAN, HUGE_VAL, HUGE_VALF, HUGE_VALL \- 浮動小数点数の定数 .SH 書式 .nf -\fB#define _ISOC99_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br +\fB#define _ISOC99_SOURCE\fP /* See feature_test_macros(7) */ \fB#include \fP -.sp +.PP \fBINFINITY\fP -.sp +.PP \fBNAN\fP -.sp +.PP \fBHUGE_VAL\fP -.br \fBHUGE_VALF\fP -.br \fBHUGE_VALL\fP .fi .SH 説明 マクロ \fBINFINITY\fP は正の無限大を表す \fIfloat\fP 型の定数に展開される。 - +.PP (サポートされている場合) マクロ \fBNAN\fP は quiet NaN を表す \fIfloat\fP 型の定数に展開される。 \fIquiet\fP NaN は計算式の中で使われたときに例外を起こさない NaN ("not\-a\-number") である。 この反対は \fIsignalling\fP NaN である。 IEC 60559:1989 を参照すること。 - -マクロ \fBHUGE_VAL\fP, \fBHUGE_VALF\fP, \fBHUGE_VALL\fP はそれぞれ \fIdouble\fP, \fIfloat\fP, -\fIlong double\fP 型の定数で、 大きな正の値を表し、可能な場合には正の無限大を表す。 +.PP +The macros \fBHUGE_VAL\fP, \fBHUGE_VALF\fP, \fBHUGE_VALL\fP expand to constants of +types \fIdouble\fP, \fIfloat\fP, and \fIlong double\fP, respectively, that represent +a large positive value, possibly positive infinity. .SH 準拠 C99. -.SH 可用性 +.PP glibc システムではマクロ \fBHUGE_VAL\fP が常に使用可能である。 \fBNAN\fP マクロが使用できるかは、 \fB#ifdef NAN\fP を使ってテストできる。 \fBINFINITY\fP, \fBHUGE_VALF\fP, \fBHUGE_VALL\fP も同様である。 \fB_ISOC99_SOURCE\fP か \fB_GNU_SOURCE\fP が定義されている場合、 または \fB__STDC_VERSION__\fP @@ -71,6 +69,5 @@ glibc システムではマクロ \fBHUGE_VAL\fP が常に使用可能である .SH 関連項目 \fBfpclassify\fP(3), \fBmath_error\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/MB_CUR_MAX.3 b/manual/LDP_man-pages/draft/man3/MB_CUR_MAX.3 index 34cd0653..ac38c77e 100644 --- a/manual/LDP_man-pages/draft/man3/MB_CUR_MAX.3 +++ b/manual/LDP_man-pages/draft/man3/MB_CUR_MAX.3 @@ -24,7 +24,7 @@ .\" all rights reserved. .\" Translated Sep 11 1999, HAYAKAWA Hitoshi .\" -.TH MB_CUR_MAX 3 1999\-07\-04 Linux "Linux Programmer's Manual" +.TH MB_CUR_MAX 3 2015\-08\-08 Linux "Linux Programmer's Manual" .SH 名前 MB_CUR_MAX \- 現在のロケールでのマルチバイト文字の最大長 .SH 書式 @@ -32,17 +32,18 @@ MB_CUR_MAX \- 現在のロケールでのマルチバイト文字の最大長 \fB#include \fP .fi .SH 説明 -\fBMB_CUR_MAX\fP マクロは、現在のロケールで一つのワイド文字を表現するために必要な 最大バイト数を表す整数表現を定義する。 -これはロケール依存であり、コンパイル時に決まる定数ではない。 +The \fBMB_CUR_MAX\fP macro defines an integer expression giving the maximum +number of bytes needed to represent a single wide character in the current +locale. This value is locale dependent and therefore not a compile\-time +constant. .SH 返り値 [1, \fBMB_LEN_MAX\fP] の範囲の整数を返す。 1 という値は伝統的な (traditional) 8\-bit エンコードされた文字を意味する。 .SH 準拠 -C99, POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008, C99. .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/MB_LEN_MAX.3 b/manual/LDP_man-pages/draft/man3/MB_LEN_MAX.3 index 2606d258..1428343e 100644 --- a/manual/LDP_man-pages/draft/man3/MB_LEN_MAX.3 +++ b/manual/LDP_man-pages/draft/man3/MB_LEN_MAX.3 @@ -24,7 +24,7 @@ .\" all rights reserved. .\" Translated Sep 11 1999, HAYAKAWA Hitoshi .\" -.TH MB_LEN_MAX 3 1999\-07\-04 Linux "Linux Programmer's Manual" +.TH MB_LEN_MAX 3 2015\-07\-23 Linux "Linux Programmer's Manual" .SH 名前 MB_LEN_MAX \- 全てのロケールでの1文字の最大マルチバイト長 .SH 書式 @@ -32,17 +32,23 @@ MB_LEN_MAX \- 全てのロケールでの1文字の最大マルチバイト長 \fB#include \fP .fi .SH 説明 -\fBMB_LEN_MAX\fP マクロは、全てのロケールで一つのワイド文字を表現するために必要となる 最大バイト数である。 +The \fBMB_LEN_MAX\fP macro is the maximum number of bytes needed to represent a +single wide character, in any of the supported locales. .SH 返り値 0 より大きいの整数型の定数。 .SH 準拠 -C99, POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008, C99. .SH 注意 -\fBMB_LEN_MAX\fP と \fIsizeof(wchar_t)\fP の値にはなんの関係もない。 glibc では \fBMB_LEN_MAX\fP は通常は -6 で、 \fIsizeof(wchar_t)\fP は 4 である。 +.\" For an explanation of why the limit was raised to 16, see +.\" http://lists.gnu.org/archive/html/bug-gnulib/2015-05/msg00001.html +.\" From: Bruno Haible +.\" Subject: Re: why is MB_LEN_MAX so large (16) on glibc +.\" Date: Thu, 14 May 2015 02:30:14 +0200 +The entities \fBMB_LEN_MAX\fP and \fIsizeof(wchar_t)\fP are totally unrelated. In +glibc, \fBMB_LEN_MAX\fP is typically 16 (6 in glibc versions earlier than 2.2), +while \fIsizeof(wchar_t)\fP is 4. .SH 関連項目 \fBMB_CUR_MAX\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/__setfpucw.3 b/manual/LDP_man-pages/draft/man3/__setfpucw.3 index 4dc25145..2b81f09f 100644 --- a/manual/LDP_man-pages/draft/man3/__setfpucw.3 +++ b/manual/LDP_man-pages/draft/man3/__setfpucw.3 @@ -17,12 +17,12 @@ .\" by ISHIOKA Takashi .\" Updated Wed Sep 20 2000 by NAKANO Takeo .\" -.TH __SETFPUCW 3 2012\-12\-31 Linux "Linux Programmer's Manual" +.TH __SETFPUCW 3 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 __setfpucw \- i386 アーキテクチャーにおける FPU のコントロールワードの設定 (obsolete) .SH 書式 \fB#include \fP -.sp +.PP \fBvoid __setfpucw(unsigned short \fP\fIcontrol_word\fP\fB);\fP .SH 説明 \fB__setfpucw\fP() は、i386アーキテクチャーにおいて \fIcontrol_word\fP を FPU (floating\-point @@ -39,21 +39,17 @@ glibc 2.1 以降では、この関数は存在しない。 新たな関数群が .PP FPU のコントロールワードへどうしても直接アクセスする必要がある場合には、 \fI\fP の \fB_FPU_GETCW\fP マクロと \fB_FPU_SETCW\fP マクロを用いることは可能である。 -.SH 例 +.SH EXAMPLES \fB__setfpucw(0x1372)\fP - -は、i386アーキテクチャーにおける FPU のコントロールワードを、 -.br - \- 拡張精度 -.br - \- 最も近い整数へ丸める、中間の場合は偶数を選択する。 -.br - \- 桁溢れ、0で除算、及び無効値(NaN)ときに例外を発生に設定する。 +.PP +Set FPU control word on the i386 architecture to + \- extended precision + \- rounding to nearest + \- exceptions on overflow, zero divide and NaN .SH 関連項目 \fBfeclearexcept\fP(3) -.br +.PP \fI\fP .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/a64l.3 b/manual/LDP_man-pages/draft/man3/a64l.3 deleted file mode 100644 index 00239df7..00000000 --- a/manual/LDP_man-pages/draft/man3/a64l.3 +++ /dev/null @@ -1,83 +0,0 @@ -.\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" Corrected, aeb, 2002-05-30 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002-2003 Yuichi SATO -.\" all rights reserved. -.\" Translated Tue Aug 6 04:34:20 JST 2002 -.\" by Yuichi SATO -.\" Updated & Modified Thu Nov 27 01:02:55 JST 2003 -.\" by Yuichi SATO -.\" -.TH A64L 3 2014\-05\-28 "" "Linux Programmer's Manual" -.SH 名前 -a64l, l64a \- long と base\-64 を変換する -.SH 書式 -\fB#include \fP -.sp -\fBlong a64l(const char *\fP\fIstr64\fP\fB);\fP -.sp -\fBchar *l64a(long \fP\fIvalue\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBa64l\fP(), \fBl64a\fP(): -.br -.RS 4 -.ad l -_SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.RE -.ad -.SH 説明 -これらの関数は 32 ビット long 整数と リトルエンディアン base\-64 ASCII 文字列 (長さ 0 〜 6) の間の変換を行う。 -\fBa64l\fP() の引き数の文字列が 7 文字以上の場合、 最初の 6 バイトが使われる。 \fIlong\fP 型が 32 ビットより大きい場合、 -\fBl64a\fP() は \fIvalue\fP の下位 32 ビットのみを使い、 \fBa64l\fP() は 32 ビットの結果を符号拡張 -(sign\-extend) する。 -.LP -base\-64 システムで使われる 64 個の文字は以下の通りである: -.RS -.nf - -\&\(aq.\(aq は 0 を表す。 -\&\(aq/\(aq は 1 を表す。 -0\-9 は 2\-11 を表す。 -A\-Z は 12\-37 を表す。 -a\-z は 38\-63 を表す。 - -.fi -.RE -よって 123 = 59*64^0 + 1*64^1 = "v/" である。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBl64a\fP() 関数はスレッドセーフではない。 -.LP -\fBa64l\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fBl64a\fP() で返される値は静的バッファーへのポインターかもしれないので、 以降の呼び出しで上書きされる可能性がある。 -.LP -\fIvalue\fP が負の場合、 \fBl64a\fP() の動作は定義されていない。 \fIvalue\fP が 0 の場合は空文字列を返す。 -.LP -これらの関数は glibc 2.2.5 以前では間違っている (最上位デジットを最初にしている)。 -.LP -これは \fBuuencode\fP(1) で使われるエンコーディングではない。 -.SH 関連項目 -.\" .BR itoa (3), -\fBuuencode\fP(1), \fBstrtoul\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/abort.3 b/manual/LDP_man-pages/draft/man3/abort.3 deleted file mode 100644 index 5845250e..00000000 --- a/manual/LDP_man-pages/draft/man3/abort.3 +++ /dev/null @@ -1,77 +0,0 @@ -.\" Copyright 2007 (C) Michael Kerrisk -.\" some parts 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 21:46:21 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Fri Aug 4 10:51:53 2000 - patch from Joseph S. Myers -.\" 2007-12-15, mtk, Mostly rewritten -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kentaro OGAWA -.\" all rights reserved. -.\" Translated 1996-07-13, Kentaro OGAWA -.\" Updated 2008-02-09, Akihiro MOTOKI -.\" Updated 2010-12-26, Akihiro MOTOKI -.\" -.TH ABORT 3 2014\-12\-31 GNU "Linux Programmer's Manual" -.SH 名前 -abort \- プロセスの異常終了を生じさせる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid abort(void);\fP -.fi -.SH 説明 -\fBabort\fP() 関数は、まず \fBSIGABRT\fP の禁止 (block) を解除してから、 (\fBraise\fP(3) -が呼び出されたかのように) 呼び出し元のプロセスに \fBSIGABRT\fP シグナルを上げる。その結果、 \fBSIGABRT\fP シグナルが捕捉 -(caught) されて対応するシグナルハンドラーが 返って来ない場合以外は、プログラムの異常終了が起こる (\fBlongjmp\fP(3) 参照)。 -.PP -\fBabort\fP() 関数によってプロセスの終了が引き起こされたときには、 すべての開いているストリームは閉じられフラッシュされる。 -.PP -\fBSIGABRT\fP シグナルが無視、または返って来るシグナルハンドラーで 捕捉されるようになっている場合であっても、 \fBabort\fP() -関数はそのプロセスを終了する。 \fBSIGABRT\fP シグナルに対する処理方法をデフォルトに戻してから、再度 \fBSIGABRT\fP -シグナルを上げることで、このような動作になる。 -.SH 返り値 -\fBabort\fP() 関数が返ることはない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBabort\fP() 関数はスレッドセーフである。 -.SH 準拠 -SVr4, POSIX.1\-2001, POSIX.1\-2008, 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/abs.3 b/manual/LDP_man-pages/draft/man3/abs.3 deleted file mode 100644 index 9cd61b40..00000000 --- a/manual/LDP_man-pages/draft/man3/abs.3 +++ /dev/null @@ -1,106 +0,0 @@ -.\" 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 Mon Mar 29 22:31:13 1993, David Metcalfe -.\" Modified Sun Jun 6 23:27:50 1993, David Metcalfe -.\" Modified Sat Jul 24 21:45:37 1993, Rik Faith (faith@cs.unc.edu) -.\" Modified Sat Dec 16 15:02:59 2000, Joseph S. Myers -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kentaro OGAWA -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 22:44:04 +0900 -.\" by Kentaro OGAWA -.\" Updated Mon 29 Jan 2001 17:18:34 JST by Kentaro Shirakata -.\" -.TH ABS 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -abs, labs, llabs, imaxabs \- 整数の絶対値を計算する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint abs(int \fP\fIj\fP\fB);\fP -.br -\fBlong int labs(long int \fP\fIj\fP\fB);\fP -.br -\fBlong long int llabs(long long int \fP\fIj\fP\fB);\fP -.sp -\fB#include \fP -.sp -\fBintmax_t imaxabs(intmax_t \fP\fIj\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBllabs\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBabs\fP() 関数は、整数の引数 \fIj\fP の絶対値を計算する。 \fBlabs\fP(), \fBllabs\fP(), \fBimaxabs\fP() -関数は、 それぞれの関数の型に応じた引数 \fIj\fP の絶対値を計算する。 -.SH 返り値 -それぞれの関数の型に応じた整数の引数の絶対値を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBabs\fP(), \fBlabs\fP(), \fBllabs\fP(), \fBimaxabs\fP() はスレッドセーフである。 -.SH 準拠 -.\" POSIX.1 (1996 edition) requires only the -.\" .BR abs () -.\" function. -SVr4, POSIX.1\-2001, 4.3BSD, C99. C89 は \fBabs\fP() 関数と \fBlabs\fP() 関数のみを含んでいる。 -\fBllabs\fP() 関数と \fBimaxabs\fP() 関数は C99 で追加された。 -.SH 注意 -最大の負整数の絶対値は、定義されていない。 -.PP -\fBllabs\fP() 関数はバージョン 2.0 から glibc に含まれるようになった。 \fBimaxabs\fP() 関数は バージョン 2.1.1 -から glibc に含まれるようになった。 -.PP -\fBllabs\fP() が宣言されるためには、標準ヘッダーを include する前に \fB_ISOC99_SOURCE\fP か -\fB_ISOC9X_SOURCE\fP(どちらかは glibc の バージョンに依存する)を define しておく必要がある。 -.PP -デフォルトで、GCC は \fBabs\fP(), \fBlabs\fP() および (GCC 3.0 以降では) \fBllabs\fP() と -\fBimaxabs\fP() をビルドイン関数として扱う。 -.SH 関連項目 -\fBcabs\fP(3), \fBceil\fP(3), \fBfabs\fP(3), \fBfloor\fP(3), \fBrint\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/acos.3 b/manual/LDP_man-pages/draft/man3/acos.3 deleted file mode 100644 index 0dab9cd7..00000000 --- a/manual/LDP_man-pages/draft/man3/acos.3 +++ /dev/null @@ -1,105 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-25 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kenji Kajiwara and Kentaro Ogawa -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 17:50:45 JST -.\" by Kenji Kajiwara and Kentaro Ogawa -.\" Proof Reading: Takashi Yoshino -.\" Updated Tue Aug 5 23:12:59 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2008-09-14, Akihiro MOTOKI -.\" -.TH ACOS 3 2010\-09\-20 "" "Linux Programmer's Manual" -.SH 名前 -acos, acosf, acosl \- 逆余弦(arc cosine)関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble acos(double \fP\fIx\fP\fB);\fP -\fBfloat acosf(float \fP\fIx\fP\fB);\fP -\fBlong double acosl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBacosf\fP(), \fBacosl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -\fBacos\fP() 関数は \fIx\fP の逆余弦(arc cosine) を計算する。 すなわち、その余弦 (cosine) が \fIx\fP -となる値である。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の逆余弦をラジアン単位で返す。 返り値は [0,\ pi] の範囲となる。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が +1 の場合、+0 が返される。 - -\fIx\fP が正の無限大か負の無限大の場合、 領域エラー (domain error) が発生し、NaN が返される。 - -\fIx\fP が [\-1,\ 1] の範囲に入っていない場合、 領域エラー (domain error) が発生し、NaN が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が [\-1,\ 1] の範囲に入っていない -\fIerrno\fP に \fBEDOM\fP が設定される。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠している。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/acosh.3 b/manual/LDP_man-pages/draft/man3/acosh.3 deleted file mode 100644 index 3e91dce8..00000000 --- a/manual/LDP_man-pages/draft/man3/acosh.3 +++ /dev/null @@ -1,113 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-25 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kenji Kajiwara and Kentaro Ogawa -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 17:58:16 JST -.\" by Kenji Kajiwara and Kentaro Ogawa -.\" Proof Reading: Takashi Yoshino -.\" Updated Tue Aug 5 23:16:48 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2008-09-14, Akihiro MOTOKI -.\" -.TH ACOSH 3 2010\-09\-20 "" "Linux Programmer's Manual" -.SH 名前 -acosh, acoshf, acoshl \- 逆双曲線余弦(inverse hyperbolic cosine)関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble acosh(double \fP\fIx\fP\fB);\fP -.br -\fBfloat acoshf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double acoshl(long double \fP\fIx\fP\fB);\fP -.sp -.fi -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBacosh\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBacoshf\fP(), \fBacoshl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -\fBacosh\fP() 関数は \fIx\fP の逆双曲線余弦(inverse hyperbolic cosine)を 計算する。 -すなわち、その双曲線余弦(hyperbolic cosine)が \fIx\fP に なるような値である。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の逆双曲線余弦を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が +1 の場合、+0 が返される。 - -\fIx\fP が正の無限大の場合、正の無限大が返される。 - -\fIx\fP が 1 より小さい場合、 領域エラー (domain error) が発生し、NaN が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が 1 より小さい -\fIerrno\fP に \fBEDOM\fP が設定される。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/addseverity.3 b/manual/LDP_man-pages/draft/man3/addseverity.3 deleted file mode 100644 index 91c32b3b..00000000 --- a/manual/LDP_man-pages/draft/man3/addseverity.3 +++ /dev/null @@ -1,57 +0,0 @@ -.\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" adapted glibc info page -.\" -.\" polished a little, aeb -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Thu Jul 1 01:12:35 JST 2004 -.\" by Yuichi SATO -.\" -.TH ADDSEVERITY 3 2008\-06\-14 GNU "Linux Programmer's Manual" -.SH 名前 -addseverity \- 新しい重大度 (severity class) を導入する -.SH 書式 -.nf -.sp -\fB#include \fP -.sp -\fBint addseverity(int \fP\fIseverity\fP\fB, const char *\fP\fIs\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBaddseverity\fP(): _SVID_SOURCE -.SH 説明 -この関数により、新しい重大度を導入できる。 この重大度は、 \fBfmtmsg\fP(3) 関数の \fIseverity\fP 引き数に入れることができる。 -デフォルトでは、 \fBfmtmsg\fP(3) 関数は重大度 0\-4 (文字列では (none), HALT, ERROR, WARNING, INFO) -の メッセージを表示する方法しか知らない。 この \fBaddseverity\fP(3) の呼び出しにより、指定された文字列 \fIs\fP に指定された値 -\fIseverity\fP を付加する。 \fIs\fP が NULL の場合、数値 \fIseverity\fP の重大度が削除される。 -デフォルトの重大度のどれかを上書きしたり削除したりすることはできない。 重大度の値は負でない数としなければならない。 -.SH 返り値 -成功した場合、値 \fBMM_OK\fP が返される。 エラーの場合、返り値は \fBMM_NOTOK\fP である。 -起こる可能性があるエラーには、以下のものが含まれる: メモリーを使い果たした。 存在しない重大度またはデフォルトの重大度を削除しようとした。 -.SH バージョン -\fBaddseverity\fP() はバージョン 2.1 以降の glibc で提供されている。 -.SH 準拠 -\fBfmtmsg\fP(3) 関数は X/Open Portability Guide に指定されているが、 この関数は指定されていない。 この関数は -System V システムで利用可能である。 -.SH 注意 -新しい重大度は、環境変数 \fBSEV_LEVEL\fP を設定することで追加することもできる。 -.SH 関連項目 -\fBfmtmsg\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/adjtime.3 b/manual/LDP_man-pages/draft/man3/adjtime.3 deleted file mode 100644 index 2e2bbd42..00000000 --- a/manual/LDP_man-pages/draft/man3/adjtime.3 +++ /dev/null @@ -1,105 +0,0 @@ -.\" Copyright (c) 2006 by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-07-16, Akihiro MOTOKI -.\" -.TH ADJTIME 3 2014\-05\-28 Linux "Linux Programmer's Manual" -.SH 名前 -adjtime \- システムクロックに同期する時刻を調整する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint adjtime(const struct timeval *\fP\fIdelta\fP\fB, struct timeval *\fP\fIolddelta\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBadjtime\fP(): _BSD_SOURCE -.SH 説明 -\fBadjtime\fP() 関数は (\fBgettimeofday\fP(2) が返す) システムクロックを徐々に調整する。 調整すべきクロックの時間量は -\fIdelta\fP が指す構造体で指定される。 この構造体は以下の形である: -.in +4n -.nf - -struct timeval { - time_t tv_sec; /* 秒 */ - suseconds_t tv_usec; /* マイクロ秒 */ -}; -.fi -.in -.PP -\fIdelta\fP の調整量が正の場合、調整量に達するまでシステムクロックを 少し割合だけスピードアップさせる (つまり、毎秒クロック値に少しだけ -時刻を加算する)。 \fIdelta\fP の調整量が負の場合、同様の方法でクロックを遅くする。 - -\fBadjtime\fP() が呼び出されたときに以前の \fBadjtime\fP() の呼び出しによるクロックの調整がまだ実行中で、かつ後の -\fBadjtime\fP() の \fIdelta\fP が NULL でない場合、実行中の調整は停止される。 -しかし、すでに実行された調整の取り消しは行われない。 - -\fIolddelta\fP が NULL でない場合、 \fIolddelta\fP が指すバッファーに、過去の調整要求でまだ完了せず残っている時間量が -格納して返される。 -.SH 返り値 -成功すると、 \fBadjtime\fP() は 0 を返す。失敗すると、\-1 を返し、 \fIerrno\fP にエラーを示す値をセットする。 -.SH エラー -.TP -\fBEINVAL\fP -\fIdelta\fP で指定された調整量が許可された範囲に入っていない。 -.TP -\fBEPERM\fP -呼び出し者が時刻を調整するのに必要な権限を持っていない。 Linux では \fBCAP_SYS_TIME\fP ケーパビリティが必要である。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBadjtime\fP() 関数はスレッドセーフである。 -.SH 準拠 -4.3BSD, System V. -.SH 注意 -\fBadjtime\fP() が行うクロックの調整は、クロックは常に単調増加するという範囲内で 実行される。 \fBadjtime\fP() -を使って時刻を調整することで、システムタイムの突然の正や負のジャンプ により、いくつかのアプリケーション (例えば \fBmake\fP(1) など) -に起こる問題を防ぐことができる。 - -\fBadjtime\fP() はシステム時刻に少しずつ調整を行うために使用されることを期待されている。 ほとんどのシステムでは、 \fIdelta\fP -に指定できる調整量に制限を課している。 glibc の実装では、 \fIdelta\fP は (INT_MIN / 1000000 + 2) 以上 -(INT_MAX / 1000000 \- 2) 以下 (i386 では \-2145 以上 2145 以下) でなければならない。 -.SH バグ -.\" http://sourceware.org/bugzilla/show_bug?id=2449 -.\" http://bugzilla.kernel.org/show_bug.cgi?id=6761 -.\" Thanks to the new adjtimex() ADJ_OFFSET_SS_READ flag -ずっと昔から、 \fIdelta\fP に NULL を指定すると、未完了のクロック調整に関する有効な情報が \fIolddelta\fP -に返されないというバグがあった (この場合、 \fBadjtime\fP() は、未完了のクロック調整に関する情報を、変更せずに返すべきである)。 -このバグは、 glibc 2.8 以降で、Linux カーネル 2.6.26 以降のシステムで修正されている。 -.SH 関連項目 -\fBadjtimex\fP(2), \fBgettimeofday\fP(2), \fBtime\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/aio_cancel.3 b/manual/LDP_man-pages/draft/man3/aio_cancel.3 index cdf80958..50cba24a 100644 --- a/manual/LDP_man-pages/draft/man3/aio_cancel.3 +++ b/manual/LDP_man-pages/draft/man3/aio_cancel.3 @@ -35,14 +35,14 @@ .\" Updated 2012-05-02, Akihiro MOTOKI .\" Updated 2012-04-30, Akihiro MOTOKI .\" -.TH AIO_CANCEL 3 2012\-05\-08 "" "Linux Programmer's Manual" +.TH AIO_CANCEL 3 2020\-06\-09 "" "Linux Programmer's Manual" .SH 名前 aio_cancel \- 完了していない非同期 I/O リクエストをキャンセルする .SH 書式 \fB#include \fP -.sp +.PP \fBint aio_cancel(int \fP\fIfd\fP\fB, struct aiocb *\fP\fIaiocbp\fP\fB);\fP -.sp +.PP \fI\-lrt\fP でリンクする。 .SH 説明 \fBaio_cancel\fP() 関数は、ファイルディスクリプター \fIfd\fP についての完了して @@ -50,19 +50,19 @@ aio_cancel \- 完了していない非同期 I/O リクエストをキャンセ NULL の場合、そのような全てのリクエストがキャンセルされる。 \fIaiocbp\fP が NULL でない場合、\fIaiocbp\fP で指された制御ブロックで記述されたリクエ ストのみがキャンセルされる。(\fIaiocb\fP 構造体の説明は \fBaio\fP(7) を参照) -.LP +.PP キャンセルされたリクエストに対して、通常の非同期通知が起こる (\fBaio\fP(7) と \fBsigevent\fP(7) を参照)。 リクエストの返り値 (\fBaio_return\fP(3)) は \-1 に設定され、 リクエストのエラー状態 (\fBaio_error\fP(3)) は \fBECANCELED\fP に設定される。 キャンセルできないリクエストの制御ブロックは変更されない。 -.LP +.PP リクエストがキャンセルできない場合には、 \fBaio_cancel\fP() は通常の I/O 操作の実行後と同じように終了する。 (この場合、 \fBaio_error\fP(3) はステータス \fBEINPROGRESSS\fP を返す)。 -.LP +.PP \fIaiocbp\fP が NULL でなく、かつ \fIfd\fP が非同期操作が開始されたファイルディスクリプターと異なる場合、 生じる結果は不定である。 -.LP +.PP .\" FreeBSD: not those on raw disk devices. どの操作をキャンセルできるかは、実装定義である。 .SH 返り値 @@ -91,14 +91,24 @@ NULL の場合、そのような全てのリクエストがキャンセルされ \fBaio_cancel\fP() は実装されていない。 .SH バージョン \fBaio_cancel\fP() 関数は glibc 2.1 以降で利用できる。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBaio_cancel\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 POSIX.1\-2001, POSIX.1\-2008. -.SH 例 +.SH EXAMPLES \fBaio\fP(7) を参照。 .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/aio_error.3 b/manual/LDP_man-pages/draft/man3/aio_error.3 deleted file mode 100644 index 804540fc..00000000 --- a/manual/LDP_man-pages/draft/man3/aio_error.3 +++ /dev/null @@ -1,84 +0,0 @@ -.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl) -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Sat Jul 3 05:28:09 JST 2004 -.\" by Yuichi SATO -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" -.TH AIO_ERROR 3 2013\-07\-04 "" "Linux Programmer's Manual" -.SH 名前 -aio_error \- 非同期 I/O 操作のエラー状態を取得する -.SH 書式 -\fB#include \fP -.sp -\fBint aio_error(const struct aiocb *\fP\fIaiocbp\fP\fB);\fP -.sp -\fI\-lrt\fP でリンクする。 -.SH 説明 -\fBaio_error\fP() 関数は \fIaiocbp\fP で指された制御ブロックでの非同期 I/O リクエス -トのエラー状態を返す。(\fIaiocb\fP 構造体の説明は \fBaio\fP(7) を参照) -.SH 返り値 -この関数の返り値は以下のいずれかである。 -.IP * 3 -\fBEINPROGRESS\fP (リクエストがまだ完了していない場合) -.IP * -\fBECANCELED\fP (リクエストがキャンセルされた場合) -.IP * -0 (リクエストが正常に完了した場合) -.IP * -正のエラー番号 (非同期 I/O 命令が失敗した場合)。 -同期の \fBread\fP(2), \fBwrite\fP(2), \fBfsync\fP(2), \fBfdatasync\fP(2) の呼び出しの場合で -\fIerrno\fP 変数に格納されるのと同じ値になる。 -.SH エラー -.TP -\fBEINVAL\fP -\fIaiocbp\fP が、まだ返り値 (return status) (\fBaio_return\fP(3) を参照) が取得されていない非同期 I/O -リクエストの制御ブロックを指していない。 -.TP -\fBENOSYS\fP -\fBaio_error\fP() は実装されていない。 -.SH バージョン -\fBaio_error\fP() 関数は glibc 2.1 以降で利用できる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBaio_error\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001, POSIX.1\-2008. -.SH 例 -\fBaio\fP(7) を参照。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/aio_fsync.3 b/manual/LDP_man-pages/draft/man3/aio_fsync.3 index e9679079..377d92dc 100644 --- a/manual/LDP_man-pages/draft/man3/aio_fsync.3 +++ b/manual/LDP_man-pages/draft/man3/aio_fsync.3 @@ -34,27 +34,27 @@ .\" Updated 2012-04-30, Akihiro MOTOKI .\" Updated 2012-05-29, Akihiro MOTOKI .\" -.TH AIO_FSYNC 3 2012\-05\-08 "" "Linux Programmer's Manual" +.TH AIO_FSYNC 3 2017\-09\-15 "" "Linux Programmer's Manual" .SH 名前 aio_fsync \- 非同期ファイルを同期させる .SH 書式 \fB#include \fP -.sp +.PP \fBint aio_fsync(int \fP\fIop\fP\fB, struct aiocb *\fP\fIaiocbp\fP\fB);\fP -.sp +.PP \fI\-lrt\fP でリンクする。 .SH 説明 \fBaio_fsync\fP() 関数は、 \fIaiocbp\->aio_fildes\fP で関連付けられているまだ 完了していない全ての非同期 I/O 操作を同期させる。 (\fIaiocb\fP 構造体の説明は \fBaio\fP(7) を参照) -.LP +.PP より正確に言うと、 \fIop\fP が \fBO_SYNC\fP の場合、現在キューに入れられている全て の I/O 操作は、 \fBfsync\fP(2) が呼ばれたかのように完了されるだろう。 また \fIop\fP が \fBO_DSYNC\fP の場合、この呼び出しは \fBfdatasync\fP(2) の非同期版となる。 - +.PP この関数はリクエストを行うだけである点に注意すること。 I/O の完了の待ち合わせは行わない。 -.LP +.PP \fIaiocbp\fP で指される構造体のフィールドのうち、この呼び出しで \fIaio_fildes\fP 以外に使用されるのは \fIaio_sigevent\fP フィールド (\fIsigevent\fP 構造体、説明は \fBsigevent\fP(7) 参照) のみである。このフィールドは、完了時の非同期通知に使用 @@ -78,6 +78,17 @@ I/O の完了の待ち合わせは行わない。 \fBaio_fsync\fP() は実装されていない。 .SH バージョン The \fBaio_fsync\fP() 関数は glibc 2.1 以降で利用できる。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBaio_fsync\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 POSIX.1\-2001, POSIX.1\-2008. .SH 関連項目 @@ -85,6 +96,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/aio_init.3 b/manual/LDP_man-pages/draft/man3/aio_init.3 index c0d3ad0f..293ffefb 100644 --- a/manual/LDP_man-pages/draft/man3/aio_init.3 +++ b/manual/LDP_man-pages/draft/man3/aio_init.3 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (c) 2010 by Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) @@ -34,29 +33,29 @@ .\" Translated 2012-04-30, Akihiro MOTOKI .\" Updated 2012-05-02, Akihiro MOTOKI .\" -.TH AIO_INIT 3 2012\-04\-26 Linux "Linux Programmer's Manual" +.TH AIO_INIT 3 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 aio_init \- 非同期 I/O の初期化 .SH 書式 .nf \fB#define _GNU_SOURCE\fP /* See feature_test_macros(7) */ \fB#include \fP - +.PP \fBvoid aio_init(const struct aioinit *\fP\fIinit\fP\fB);\fP .fi -.sp +.PP \fI\-lrt\fP でリンクする。 .SH 説明 GNU 固有の \fBaio_init\fP() 関数を使うと、呼び出し側が glibc の POSIX AIO 実装に 対して調整 (チューニング) のヒントを与えることができる。この関数は使用しなく てもよいが、この関数が効果を持つには、POSIX AIO API の他の関数を利用する前に 呼び出さなければならない。 - +.PP チューニングの情報は、引き数 \fIinit\fP が指すバッファーで与える。 このバッファーは以下の形式の構造体である。 .PP .in +4n -.nf +.EX struct aioinit { int aio_threads; /* Maximum number of threads */ int aio_num; /* Number of expected simultaneous @@ -69,11 +68,11 @@ struct aioinit { terminates (since glibc 2.2) */ int aio_reserved; }; -.fi +.EE .in .PP \fIaioinit\fP 構造体のフィールドのうち以下が使用される。 -.TP 15 +.TP \fIaio_threads\fP このフィールドは、AIO の実装が使用できるワーカースレッド数の最大値を指定する。 完了していない I/O 操作の数がこの上限を超えた場合、超過した操作は @@ -101,6 +100,5 @@ The \fBaio_init\fP() 関数は glibc 2.1 以降で利用できる。 .SH 関連項目 \fBaio\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/aio_read.3 b/manual/LDP_man-pages/draft/man3/aio_read.3 index e24eff68..b82b2e6e 100644 --- a/manual/LDP_man-pages/draft/man3/aio_read.3 +++ b/manual/LDP_man-pages/draft/man3/aio_read.3 @@ -34,41 +34,41 @@ .\" Updated 2012-04-30, Akihiro MOTOKI .\" Updated 2012-05-29, Akihiro MOTOKI .\" -.TH AIO_READ 3 2012\-05\-08 "" "Linux Programmer's Manual" +.TH AIO_READ 3 2020\-06\-09 "" "Linux Programmer's Manual" .SH 名前 aio_read \- 非同期で読み込む .SH 書式 \fB#include \fP -.sp +.PP \fBint aio_read(struct aiocb *\fP\fIaiocbp\fP\fB);\fP -.sp +.PP \fI\-lrt\fP でリンクする。 .SH 説明 \fBaio_read\fP() 関数は、\fIaiocbp\fP が指すバッファーに記載された I/O リクエストを キューに入れる。この関数は \fBread\fP(2) の非同期版である。 呼び出し - +.PP read(fd, buf, count) - +.PP の各引き数は \fIaiocb\fP が指す構造体の \fIaio_fildes\fP, \fIaio_buf\fP, \fIaio_nbytes\fP に (この順序で) 対応する (\fIaiocb\fP 構造体の説明は \fBaio\fP(7) を参照)。 -.LP -データの読み込みは、カレントのファイルオフセットに関係なく、 -絶対ファイルオフセット \fIaiocbp\->aio_offset\fP を開始点として行われる。 -呼び出しの後のカレントのファイルオフセットは規定されていない。 -.LP +.PP +The data is read starting at the absolute position +\fIaiocbp\->aio_offset\fP, regardless of the file offset. After the call, +the value of the file offset is unspecified. +.PP 「非同期」とは「リクエストがキューに入れられたら、この呼び出しはすぐに返る」 ということである。 呼び出しから戻った時に、読み込みは完了しているかも知れないし、 完了していないかも知れない。 \fBaio_error\fP(3) を使うことで完了したかをテストできる。 完了した I/O 操作の返り値は \fBaio_return\fP(3) で取得できる。 \fIaiocbp\->aio_sigevent\fP を適切に設定することで、 I/O 完了の非同期通知は受けることもできる。詳細は \fBsigevent\fP(7) を参照。 -.LP +.PP \fB_POSIX_PRIORITIZED_IO\fP が定義されていて、 かつファイルがこれをサポートしている場合、 非同期操作は呼び出したプロセスの優先度から \fIaiocbp\->aio_reqprio\fP を引いた優先度で登録 (submit) される。 -.LP +.PP フィールド \fIaiocbp\->aio_lio_opcode\fP は無視される。 -.LP +.PP 最大オフセットを超えた通常のファイルからは、何もデータが読み込まれない。 .SH 返り値 成功した場合、0 が返される。 エラーの場合、リクエストはキューに入れられず、 @@ -95,6 +95,17 @@ I/O 完了の非同期通知は受けることもできる。詳細は \fBsigeve しかし開始位置がこのファイルの最大オフセットを超えていた。 .SH バージョン The \fBaio_read\fP() 関数は glibc 2.1 以降で利用できる。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBaio_read\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 POSIX.1\-2001, POSIX.1\-2008. .SH 注意 @@ -102,15 +113,14 @@ POSIX.1\-2001, POSIX.1\-2008. 使用する前に制御ブロックを 0 にしておくのは、よい考えである。 この制御ブロックは、読み込み操作が進行している間は変更すべきでない。 読み込まれるバッファー領域は 操作の最中にアクセスすべきではない。 さもないと起こる結果が不定になる。 これに含まれるメモリー領域は、有効なままにしなければならない。 - +.PP 同じ \fIaiocb\fP 構造体を指定して同時に複数の I/O 操作を行った場合、 どのような結果になるかは不定である。 -.SH 例 +.SH EXAMPLES \fBaio\fP(7) を参照。 .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/aio_return.3 b/manual/LDP_man-pages/draft/man3/aio_return.3 deleted file mode 100644 index d58bcffa..00000000 --- a/manual/LDP_man-pages/draft/man3/aio_return.3 +++ /dev/null @@ -1,83 +0,0 @@ -.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl) -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Fri Jul 9 05:07:19 JST 2004 -.\" by Yuichi SATO -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-07-15, Akihiro MOTOKI -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH AIO_RETURN 3 2013\-07\-04 "" "Linux Programmer's Manual" -.SH 名前 -aio_return \- 非同期 I/O 操作の返り値 (return status) を取得する -.SH 書式 -\fB#include \fP -.sp -\fBssize_t aio_return(struct aiocb *\fP\fIaiocbp\fP\fB);\fP -.sp -\fI\-lrt\fP でリンクする。 -.SH 説明 -\fBaio_return\fP() 関数は \fIaiocbp\fP で指された制御ブロックにおける非同期 I/O -リクエストの最終的な返り値を返す。 -(\fIaiocb\fP 構造体の説明は \fBaio\fP(7) を参照) -.LP -この関数は、 \fBaio_error\fP(3) が \fBEINPROGRESS\fP 以外を返した後で、 与えられたリクエストに対して 1 -回だけ呼ばれるべきである。 -.SH 返り値 -非同期 I/O 操作が完了した場合、この関数は、同期呼び出し \fBread\fP(2), -\fBwrite\fP(2), \fBfsync\fP(2), \fBfdatasync\fP(2) が返すのと同じ値を返す。 - -非同期 I/O 操作が完了していない場合、 -\fBaio_return\fP() の返り値とその影響は不定である。 -.SH エラー -.TP -\fBEINVAL\fP -\fIaiocbp\fP が、返り値がまだ取得されていない非同期 I/O リクエストの 制御ブロックを指していない。 -.TP -\fBENOSYS\fP -\fBaio_return\fP() は実装されていない。 -.SH バージョン -The \fBaio_return\fP() 関数は glibc 2.1 以降で利用できる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -The \fBaio_return\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001, POSIX.1\-2008. -.SH 例 -\fBaio\fP(7) を参照。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/aio_suspend.3 b/manual/LDP_man-pages/draft/man3/aio_suspend.3 index cfda4f15..0d4e1a1b 100644 --- a/manual/LDP_man-pages/draft/man3/aio_suspend.3 +++ b/manual/LDP_man-pages/draft/man3/aio_suspend.3 @@ -1,5 +1,5 @@ .\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl) -.\" and Copyright (C) 2010 Michael kerrisk +.\" and Copyright (C) 2010 Michael Kerrisk .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) .\" This is free documentation; you can redistribute it and/or @@ -35,18 +35,17 @@ .\" Updated 2012-04-30, Akihiro MOTOKI .\" Updated 2012-05-29, Akihiro MOTOKI .\" -.TH AIO_SUSPEND 3 2012\-05\-08 "" "Linux Programmer's Manual" +.TH AIO_SUSPEND 3 2017\-09\-15 "" "Linux Programmer's Manual" .SH 名前 aio_suspend \- 非同期 I/O 操作またはタイムアウトを待つ .SH 書式 .nf -.sp +.PP \fB#include \fP -.sp +.PP \fBint aio_suspend(const struct aiocb * const \fP\fIaiocb_list\fP\fB[],\fP -.br \fB int \fP\fInitems\fP\fB, const struct timespec *\fP\fItimeout\fP\fB);\fP -.sp +.PP \fI\-lrt\fP でリンクする。 .fi .SH 説明 @@ -59,13 +58,13 @@ aio_suspend \- 非同期 I/O 操作またはタイムアウトを待つ .IP * \fItimeout\fP が NULL でない場合に、指定した時間が経過した (\fItimespec\fP 構造体の詳細は \fBnanosleep\fP(2) を参照)。 -.LP +.PP \fInitems\fP 引き数は \fIaiocb_list\fP の要素数を指定する。 \fIaiocb_list\fP が指すリストの各要素は、NULL (これは無視される) か、 \fBaio_read\fP(3), \fBaio_write\fP(3), \fBlio_listio\fP(3) を使って I/O が開始された 制御ブロックへのポインターでなければならない。 (\fIaiocb\fP 構造体の説明は \fBaio\fP(7) を参照) -.LP +.PP \fBCLOCK_MONOTONIC\fP がサポートされる場合、 このクロックを使ってタイムアウトの 間隔が計測される (\fBclock_gettime\fP(3) を参照)。 .SH 返り値 @@ -85,22 +84,36 @@ aio_suspend \- 非同期 I/O 操作またはタイムアウトを待つ \fBaio_suspend\fP() は実装されていない。 .SH バージョン The \fBaio_suspend\fP() 関数は glibc 2.1 以降で利用できる。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBaio_suspend\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 POSIX.1\-2001, POSIX.1\-2008. .SH 注意 時間間隔が 0 であることを指定する NULL ではない \fItimeout\fP を使って、ポーリングを行うこともできる。 - +.PP \fIaiocb_list\fP リストで指定した非同期 I/O 操作のうち、 \fBaio_suspend\fP() を呼び出した時点ですでに完了したものがある場合、 \fBaio_suspend\fP() はすぐに返る。 - +.PP \fBaio_suspend\fP() が成功で返った後でどの I/O 操作が完了したかを特定するには、 \fBaio_error\fP(3) を使って \fIaiocb_list\fP が指す \fIaiocb\fP 構造体のリストを スキャンする。 +.SH バグ +.\" FIXME . https://sourceware.org/bugzilla/show_bug.cgi?id=13172 +The glibc implementation of \fBaio_suspend\fP() is not async\-signal\-safe, in +violation of the requirements of POSIX.1. .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/aio_write.3 b/manual/LDP_man-pages/draft/man3/aio_write.3 index da8b6aba..fcf20c15 100644 --- a/manual/LDP_man-pages/draft/man3/aio_write.3 +++ b/manual/LDP_man-pages/draft/man3/aio_write.3 @@ -35,43 +35,43 @@ .\" Updated 2012-05-29, Akihiro MOTOKI .\" Updated 2013-03-25, Akihiro MOTOKI .\" -.TH AIO_WRITE 3 2012\-05\-08 "" "Linux Programmer's Manual" +.TH AIO_WRITE 3 2017\-09\-15 "" "Linux Programmer's Manual" .SH 名前 aio_write \- 非同期で書き込む .SH 書式 \fB#include \fP -.sp +.PP \fBint aio_write(struct aiocb *\fP\fIaiocbp\fP\fB);\fP -.sp +.PP \fI\-lrt\fP でリンクする。 .SH 説明 \fBaio_write\fP() 関数は、\fIaiocbp\fP が指すバッファーに記載された I/O リクエストをキューに入れる。この関数は \fBwrite\fP(2) の非同期版である。 呼び出し - +.PP write(fd, buf, count) - +.PP の各引き数は \fIaiocb\fP が指す構造体の \fIaio_fildes\fP, \fIaio_buf\fP, \fIaio_nbytes\fP に (この順序で) 対応する (\fIaiocb\fP 構造体の説明は \fBaio\fP(7) を参照)。 -.LP -\fBO_APPEND\fP が設定されない場合、カレントのファイルオフセットに関係なく、 -データは絶対ファイルオフセット \fIaiocbp\->aio_offset\fP を開始点として書き込まれる。 -\fBO_APPEND\fP が設定されている場合、データはファイルの末尾に、 -\fBaio_write\fP() の呼び出しが行われたのと同じ順序で書き込まれる。 -この呼び出しの後のカレントのファイルオフセットは規定されていない。 -.LP +.PP +If \fBO_APPEND\fP is not set, the data is written starting at the absolute +position \fIaiocbp\->aio_offset\fP, regardless of the file offset. If +\fBO_APPEND\fP is set, data is written at the end of the file in the same order +as \fBaio_write\fP() calls are made. After the call, the value of the file +offset is unspecified. +.PP 「非同期」とは「リクエストがキューに入れられたら、この呼び出しはすぐに返る」 ということである。 呼び出しから戻った時に、書き込みは完了しているかも知れないし、 完了していないかも知れない。 \fBaio_error\fP(3) を使うことで完了したかをテストできる。 完了した I/O 操作の返り値は \fBaio_return\fP(3) で取得できる。 \fIaiocbp\->aio_sigevent\fP を適切に設定することで、 I/O 完了の非同期通知は受けることもできる。詳細は \fBsigevent\fP(7) を参照。 -.LP +.PP \fB_POSIX_PRIORITIZED_IO\fP が定義されていて、 かつファイルがこれをサポートしている場合、 非同期操作は呼び出したプロセスの優先度から \fIaiocbp\->aio_reqprio\fP を引いた優先度で登録 (submit) される。 -.LP +.PP フィールド \fIaiocbp\->aio_lio_opcode\fP は無視される。 -.LP +.PP 最大オフセットを超えた通常のファイルには、何もデータが書き込まれない。 .SH 返り値 成功した場合、0 が返される。 エラーの場合、リクエストはキューに入れられず、 @@ -97,6 +97,17 @@ I/O 完了の非同期通知は受けることもできる。詳細は \fBsigeve \fBaio_write\fP() は実装されていない。 .SH バージョン The \fBaio_write\fP() 関数は glibc 2.1 以降で利用できる。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBaio_write\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 POSIX.1\-2001, POSIX.1\-2008. .SH 注意 @@ -104,13 +115,12 @@ POSIX.1\-2001, POSIX.1\-2008. 使用する前に制御ブロックを 0 にしておくのは、よい考えである。 この制御ブロックは、読み込み操作が進行している間は変更すべきでない。 読み込まれるバッファー領域は 操作の最中にアクセスすべきではない。 さもないと起こる結果が不定になる。 これに含まれるメモリー領域は、有効なままにしなければならない。 - +.PP 同じ \fIaiocb\fP 構造体を指定して同時に複数の I/O 操作を行った場合、 どのような結果になるかは不定である。 .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/alloca.3 b/manual/LDP_man-pages/draft/man3/alloca.3 deleted file mode 100644 index 6ba4c44a..00000000 --- a/manual/LDP_man-pages/draft/man3/alloca.3 +++ /dev/null @@ -1,120 +0,0 @@ -.\" Copyright (c) 1980, 1991 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 -.\" -.\" @(#)alloca.3 5.1 (Berkeley) 5/2/91 -.\" -.\" Converted Mon Nov 29 11:05:55 1993 by Rik Faith -.\" Modified Tue Oct 22 23:41:56 1996 by Eric S. Raymond -.\" Modified 2002-07-17, aeb -.\" 2008-01-24, mtk: -.\" Various rewrites and additions (notes on longjmp() and SIGSEGV). -.\" Weaken warning against use of alloca() (as per Debian bug 461100). -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kentaro OGAWA -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 22:44:04 +0900 -.\" by Kentaro OGAWA -.\" Updated & Modified Tue Oct 16 01:01:48 JST 2001 -.\" by Yuichi SATO -.\" Updated & Modified Sat Aug 31 04:42:49 JST 2002 by Yuichi SATO -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" Updated 2013-07-24, Akihiro MOTOKI -.\" -.TH ALLOCA 3 2013\-10\-07 GNU "Linux Programmer's Manual" -.SH 名前 -alloca \- 自動的に解放されるメモリーを割り当てる -.SH 書式 -\fB#include \fP -.sp -\fBvoid *alloca(size_t \fP\fIsize\fP\fB);\fP -.SH 説明 -\fBalloca\fP() 関数は、 \fIsize\fP バイトの領域を呼出元のスタックフレームに割り付ける。 この一時的な領域は、 \fBalloca\fP() -を呼び出した関数が呼出元に返るときに自動的に解放される。 -.SH 返り値 -\fBalloca\fP() 関数は、割り付けた領域の始まりを指すポインターを返す。 割り付けによってスタックオーバーフローが起った場合の -プログラムの動作は定義されていない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBalloca\fP() 関数はスレッドセーフである。 -.SH 準拠 -この関数は POSIX.1\-2001 にはない。 - -32V, PWB, PWB.2, 3BSD, 4BSD に \fBalloca\fP() 関数が登場した証拠がある。 4.3BSD -には、マニュアルページがある。 Linux は、GNU 版を使っている。 この関数は POSIX.1\-2001 にはない。 -.SH 注意 -\fBalloca\fP() 関数は、機種とコンパイラに依存する。 特定のアプリケーションでは、この関数を使うと \fBmalloc\fP(3) と -\fBfree\fP(3) を組み合わせて使った場合に比べて効率を改善することができる。 特定の場合では、この関数を使うことで、 \fBlongjmp\fP(3) -や \fBsiglongjmp\fP(3) を使うアプリケーションでのメモリーの開放を簡単にすることができる。 -それ以外の場合では、この関数の使用は推奨されない。 - -\fBalloca\fP() により割り当てられる空間はスタックフレームから割り当てらるので、 関数の戻り先が \fBlongjmp\fP(3) や -\fBsiglongjmp\fP(3) の呼び出しによりジャンプした場合には、 割り当てられた空間は自動的に解放される。 - -\fBalloca\fP() で割り当てられた空間を \fBfree\fP(3) しようとすることのないように! -.SS "GNU 版についての注意" -通常 \fBgcc\fP(1) は \fBalloca\fP() の呼び出しをインラインコードに変換する。 \fI\-ansi\fP, \fI\-std=c89\fP, -\fI\-std=c99\fP, \fI\-std=c11\fP のいずれかのオプションが指定され、\fBかつ\fP \fI\fP -がインクルードされていない場合、 この変換は行われない。 それ以外の場合 (\-ansi オプションも \-std=c* オプションも指定されない場合) -には、 glibc 版の \fI\fP は \fI\fP -をインクルードするが、このファイルには以下の行が含まれており、 -.nf - - #ifdef __GNUC__ - #define alloca(size) __builtin_alloca (size) - #endif - -.fi -独自版の __builtin_alloca (size) 関数がある場合、厄介な結果になる。 -.LP -このコードはインライン化されているので、 この関数のアドレスを取得したり、 他のライブラリをリンクして動作を変更することはできない。 -.LP -通常このインラインコードはスタックポインターを移動する 1 つの命令 (instruction) から構成されており、 -スタックオーバーフローをチェックしない。 よって NULL エラーが返されることはない。 -.SH バグ -スタックフレームが拡張できなかった場合、エラー通知は行われない。 (しかしながら、割り当てに失敗した後で、プログラムが割り当てられなかった -空間にアクセスしようとした場合に \fBSIGSEGV\fP シグナルを受信することだろう。) - -多くのシステムにおいて、関数コールの引き数のリスト内では \fBalloca\fP() が使えない。 これは、 \fBalloca\fP() -によって予約されるスタック領域が、 関数引き数に使われるスタック領域の中に現れてしまうためである。 -.SH 関連項目 -\fBbrk\fP(2), \fBlongjmp\fP(3), \fBmalloc\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/argz_add.3 b/manual/LDP_man-pages/draft/man3/argz_add.3 deleted file mode 100644 index 953d54c4..00000000 --- a/manual/LDP_man-pages/draft/man3/argz_add.3 +++ /dev/null @@ -1,116 +0,0 @@ -.\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" based on the description in glibc source and infopages -.\" -.\" Corrections and additions, aeb -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI, all rights reserved. -.\" Translated Mon Feb 2 2003 by Akihiro MOTOKI -.\" -.TH ARGZ_ADD 3 2014\-05\-28 "" "Linux Programmer's Manual" -.SH 名前 -argz_add, argz_add_sep, argz_append, argz_count, argz_create, -argz_create_sep, argz_delete, argz_extract, argz_insert, argz_next, -argz_replace, argz_stringify \- argz リストを操作するための関数群 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBerror_t argz_add(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB, const char *\fP\fIstr\fP\fB);\fP -.sp -\fBerror_t argz_add_sep(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB,\fP -\fB const char *\fP\fIstr\fP\fB, int \fP\fIdelim\fP\fB);\fP -.sp -\fBerror_t argz_append(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB,\fP -\fB const char *\fP\fIbuf\fP\fB, size_t \fP\fIbuf_len\fP\fB);\fP -.sp -\fBsize_t argz_count(const char *\fP\fIargz\fP\fB, size_t \fP\fIargz_len\fP\fB);\fP -.sp -\fBerror_t argz_create(char * const \fP\fIargv\fP\fB[], char **\fP\fIargz\fP\fB,\fP -\fB size_t *\fP\fIargz_len\fP\fB);\fP -.sp -\fBerror_t argz_create_sep(const char *\fP\fIstr\fP\fB, int \fP\fIsep\fP\fB, char **\fP\fIargz\fP\fB,\fP -\fB size_t *\fP\fIargz_len\fP\fB);\fP -.sp -\fBvoid argz_delete(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB, char *\fP\fIentry\fP\fB);\fP -.sp -\fBvoid argz_extract(const char *\fP\fIargz\fP\fB, size_t \fP\fIargz_len\fP\fB, char **\fP\fIargv\fP\fB);\fP -.sp -\fBerror_t argz_insert(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB, char *\fP\fIbefore\fP\fB,\fP -\fB const char *\fP\fIentry\fP\fB);\fP -.sp -\fBchar *argz_next(const char *\fP\fIargz\fP\fB, size_t \fP\fIargz_len\fP\fB, const char *\fP\fIentry\fP\fB);\fP -.sp -\fBerror_t argz_replace(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB, const char *\fP\fIstr\fP\fB,\fP -\fB const char *\fP\fIwith\fP\fB, unsigned int *\fP\fIreplace_count\fP\fB);\fP -.sp -\fBvoid argz_stringify(char *\fP\fIargz\fP\fB, size_t \fP\fIlen\fP\fB, int \fP\fIsep\fP\fB);\fP -.fi -.SH 説明 -これらの関数は glibc 固有である。 -.LP -argz vector は長さ情報付きの文字バッファーへのポインターである。 文字バッファーでは、複数の文字列がヌルバイト (\(aq\e0\(aq) -で区切られており、 文字列の配列として解釈されるようになっている。 長さが 0 でない場合、バッファーの最後のバイトはヌルバイトでなければならない。 -.LP -これらの関数は argz vector を操作するためのものである。 ペア (NULL,0) は argz vector であり、逆に言えば 長さ 0 -の argz vectorはヌルポインターを持たなければならない。 空でない argz vector の割り当ては \fBmalloc\fP(3) -を使って行われる。したがって、argz vector を解放するのに \fBfree\fP(3) を使うことができる。 -.LP -\fBargz_add\fP() は、文字列 \fIstr\fP を配列 \fI*argz\fP の末尾に追加し、 \fI*argz\fP と \fI*argz_len\fP -を更新する。 -.LP -\fBargz_add_sep\fP() も同様の動作をするが、区切り文字 \fIdelim\fP にしたがって文字列 \fIstr\fP -を複数の文字列に分割する点が異なる。 例えば、区切り文字 \(aq:\(aq を指定して、UNIX サーチパスに対して -この関数を使うことができるだろう。 -.LP -\fBargz_append\fP() は argz vector (\fIbuf\fP,\ \fIbuf_len\fP) の後ろに (\fI*argz\fP,\ \fI*argz_len\fP) を付け加え、 \fI*argz\fP と \fI*argz_len\fP を更新する。 (したがって、 \fI*argz_len\fP は -\fIbuf_len\fP だけ増加する。) -.LP -\fBargz_count\fP() は (\fIargz\fP,\ \fIargz_len\fP) 内の文字列の数を数える。実際にはヌルバイト -(\(aq\e0\(aq) の数を数えている。 -.LP -\fBargz_create\fP() は、UNIX 流の引き数ベクトルである (\fI(char\ *)\ 0\fP で終端される) \fIargv\fP を、argz -vector (\fI*argz\fP,\ \fI*argz_len\fP) に変換する。 -.LP -\fBargz_create_sep\fP() は、ヌル終端された文字列 \fIstr\fP を区切り文字 \fIsep\fP が現れる毎に分割しながら、argz -vector (*\fIargz\fP,\ \fI*argz_len\fP) に変換する。 -.LP -\fBargz_delete\fP() は、 \fIentry\fP で指し示された文字列を argz vector (\fI*argz\fP,\ \fI*argz_len\fP) から削除し、 \fI*argz\fP と \fI*argz_len\fP を更新する。 -.LP -\fBargz_extract\fP() は \fBargz_create\fP() の反対の操作を行う。argz vector (\fIargz\fP,\ \fIargz_len\fP) を調べ、 \fIargv\fP から始まる配列をサブ文字列へのポインターで埋めていき、 一番最後に NULL を入れて、UNIX -流の argv ベクトルを作成する。 配列 \fIargv\fP は \fIargz_count\fP(\fIargz\fP,\fIargz_len\fP) + 1 -個のポインターを収容できる空間を持っていなければならない。 -.LP -\fBargz_insert\fP() は \fBargz_delete\fP() の反対の操作を行う。argz vector (\fI*argz\fP,\ \fI*argz_len\fP) の位置 \fIbefore\fP に引き数 \fIentry\fP を挿入し、 \fI*argz\fP と \fI*argz_len\fP -を更新する。 \fIbefore\fP が NULL の場合、 \fIentry\fP は末尾に挿入される。 -.LP -\fBargz_next\fP() は argz vector を順番に調べるための関数である。 \fIentry\fP が NULL -の場合、最初のエントリーを返す。 そうでない場合、次のエントリーを返す。 次のエントリーがない場合、NULL を返す。 -.LP -\fBargz_replace\fP() は、 \fIstr\fP をすべて \fIwith\fP で置き換える (必要に応じて argz の再割り当てを行う)。 -\fIreplace_count\fP が NULL でない場合、 \fI*replace_count\fP を置き換えを行った数だけ増やす。 -.LP -\fBargz_stringify\fP() は \fBargz_create_sep\fP() の反対の操作を行う。 末尾の ヌルバイト以外の全てのヌルバイト -(\(aq\e0\(aq) を \fIsep\fP で置き換えて、 argz vector を通常の文字列に変換する。 -.SH 返り値 -メモリー割り当てを行う argz 関数群はすべて \fIerror_t\fP 型の返り値を持つ。 成功した場合は 0 を返し、割り当てエラーが発生した場合は -\fBENOMEM\fP を返す。 -.SH 準拠 -これらの関数は GNU による拡張である。注意して使用すること。 -.SH バグ -ヌルバイトで終端されていない argz vector を使用した場合、 segmentation fault を起こすかもしれない。 -.SH 関連項目 -\fBenvz_add\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/asin.3 b/manual/LDP_man-pages/draft/man3/asin.3 deleted file mode 100644 index 4dd1262d..00000000 --- a/manual/LDP_man-pages/draft/man3/asin.3 +++ /dev/null @@ -1,108 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-25 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kenji Kajiwara and Kentaro Ogawa -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 17:50:45 JST -.\" by Kenji Kajiwara and Kentaro Ogawa -.\" Proof Reading: Takashi Yoshino -.\" Updated Tue Aug 5 23:16:48 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2008-09-14, Akihiro MOTOKI -.\" -.TH ASIN 3 2010\-09\-20 "" "Linux Programmer's Manual" -.SH 名前 -asin, asinf, asinl \- 逆正弦(arc sine)関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble asin(double \fP\fIx\fP\fB);\fP -.br -\fBfloat asinf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double asinl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBasinf\fP(), \fBasinl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -\fBasin\fP() 関数は \fIx\fP の逆正弦(arc sine) の主値を計算する。 すなわち、その正弦(sine)が \fIx\fP -となるような値である。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の逆正弦の主値をラジアン単位で返す。 返り値は [\-pi/2,\ pi/2] の範囲となる。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が +0 (\-0) の場合、+0 (\-0) が返される。 - -.\" -.\" POSIX.1-2001 documents an optional range error for subnormal x; -.\" glibc 2.8 does not do this. -\fIx\fP が [\-1,\ 1] の範囲に入っていない場合、 領域エラー (domain error) が発生し、NaN が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が [\-1,\ 1] の範囲に入っていない -\fIerrno\fP に \fBEDOM\fP が設定される。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠している。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/asinh.3 b/manual/LDP_man-pages/draft/man3/asinh.3 deleted file mode 100644 index 13e6bded..00000000 --- a/manual/LDP_man-pages/draft/man3/asinh.3 +++ /dev/null @@ -1,112 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kenji Kajiwara and Kentaro Ogawa -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 17:58:16 JST -.\" by Kenji Kajiwara and Kentaro Ogawa -.\" Proof Reading: Takashi Yoshino -.\" Updated Tue Aug 5 23:16:48 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2008-09-14, Akihiro MOTOKI -.\" -.TH ASINH 3 2013\-10\-14 GNU "Linux Programmer's Manual" -.SH 名前 -asinh, asinhf, asinhl \- 逆双曲線正弦(inverse hyperbolic sine)関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble asinh(double \fP\fIx\fP\fB);\fP -.br -\fBfloat asinhf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double asinhl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBasinh\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBasinhf\fP(), \fBasinhl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -\fBasinh\fP() 関数は \fIx\fP 逆双曲線正弦(inverse hyperbolic sine)を -計算する。すなわち、その双曲線正弦(hyperbolic sine)が \fIx\fP に なるような値である。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の逆双曲線正弦を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が +0 (\-0) の場合、+0 (\-0) が返される。 - -.\" -.\" POSIX.1-2001 documents an optional range error for subnormal x; -.\" glibc 2.8 does not do this. -\fIx\fP が正の無限大 (負の無限大) の場合、正の無限大 (負の無限大) が返される。 -.SH エラー -エラーは発生しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBasinh\fP(), \fBasinhf\fP(), \fBasinhl\fP() はスレッドセーフである。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/asprintf.3 b/manual/LDP_man-pages/draft/man3/asprintf.3 deleted file mode 100644 index 0419fbd2..00000000 --- a/manual/LDP_man-pages/draft/man3/asprintf.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Copyright (C) 2001 Andries Brouwer -.\" -.\" %%%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 -.\" -.\" Text fragments inspired by Martin Schulze . -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 NAKANO Takeo all rights reserved. -.\" Translated Mon 14 Jan 2002 by NAKANO Takeo -.\" -.TH ASPRINTF 3 2013\-06\-21 GNU "Linux Programmer's Manual" -.SH 名前 -asprintf, vasprintf \- 文字列を割り当ててそれに出力する -.SH 書式 -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBint asprintf(char **\fP\fIstrp\fP\fB, const char *\fP\fIfmt\fP\fB, ...);\fP -.sp -\fBint vasprintf(char **\fP\fIstrp\fP\fB, const char *\fP\fIfmt\fP\fB, va_list -\fP\fIap\fP\fB);\fP -.SH 説明 -\fBasprintf\fP() 関数と \fBvasprintf\fP() 関数とは、それぞれ \fBsprintf\fP(3) 関数と -\fBvsprintf\fP(3) 関数とに似ているが、 出力文字列を (終端のヌルバイト (\(aq\e0\(aq) も含めて) -保持するのに十分な大きさのメモリーを確保し、 最初の引数にその文字列へのポインターを返す。 このポインターは、不要になったら \fBfree\fP(3) -に渡し、割り当てられた記憶領域を解放すべきである。 -.SH 返り値 -成功すると、これらの関数は出力されたバイト数を (\fBsprintf\fP(3) のように) 返す。 メモリーの割り当てができなかったり、 -その他エラーが生じると、 これらの関数は \-1 を返し、 \fIstrp\fP の内容は未定義となる。 -.SH 準拠 -これらの関数は GNU の拡張であり、C や POSIX のものではない。 これらは *BSD でも利用できる。 FreeBSD -の実装では、エラーの際には \fIstrp\fP を NULL にセットする。 -.SH 関連項目 -\fBfree\fP(3), \fBmalloc\fP(3), \fBprintf\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/assert.3 b/manual/LDP_man-pages/draft/man3/assert.3 deleted file mode 100644 index 013b9a8c..00000000 --- a/manual/LDP_man-pages/draft/man3/assert.3 +++ /dev/null @@ -1,72 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" -.\" %%%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 21:42:42 1993 by Rik Faith -.\" Modified Tue Oct 22 23:44:11 1996 by Eric S. Raymond -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kentaro OGAWA -.\" all rights reserved. -.\" Translated Sun, 14 Jul 1996 01:33:26 +0900 -.\" by Kentaro OGAWA -.\" Updated Fri 6 Oct JST 2000 by Kentaro Shirakata -.\" Updated Thu 19 Sep JST 2002 by Kentaro Shirakata -.\" -.TH ASSERT 3 2013\-09\-26 GNU "Linux Programmer's Manual" -.SH 名前 -assert \- 診断が偽の時にプログラムを中止する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid assert(scalar \fP\fIexpression\fP\fB);\fP -.fi -.SH 説明 -\fI\fP が最後にインクルードされた時点で、 \fBNDEBUG\fP マクロが定義されていた場合、 \fBassert\fP() -マクロは何のコードも生成せず、従って全く何もしない。 さもなければ、 \fBassert\fP(3) マクロは \fIexpression\fP -が偽の時(すなわち、比較の結果が0と等しい時)に 標準エラー出力にエラーメッセージを表示し、さらに \fBabort\fP() -を呼び出すことによって、プログラムを終了させる。 -.LP -このマクロの目的は、プログラマーがプログラムのバグを発見する手助けをすることである。"assertion failed in file foo.c, -function do_bar(), line 1287" というメッセージはユーザーには何の助けにもならない。 -.SH 返り値 -値は返されない。 -.SH 準拠 -.\" See Defect Report 107 for more details. -POSIX.1\-2001, C89, C99. C89 では \fBexpression\fP は \fIint\fP -型であることが必要とされ、そうでない場合の動作は未定義とされていた。 しかし C99 ではどのようなスカラ値でもよいことになった。 -.SH バグ -\fBassert\fP() は、マクロとして実装されている。すなわち、 試されている式が副作用を持っている場合には、 マクロ \fBNDEBUG\fP -が定義されているかどうかに依存して、プログラムの振舞いは異なるだろう。 これによって、バグ出しするときには消えてしまう -ハイゼンバグ(Heisenbugs)を生み出すだろう。 -.SH 関連項目 -\fBabort\fP(3), \fBassert_perror\fP(3), \fBexit\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/assert_perror.3 b/manual/LDP_man-pages/draft/man3/assert_perror.3 deleted file mode 100644 index 548f37ee..00000000 --- a/manual/LDP_man-pages/draft/man3/assert_perror.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" Copyright (C) 2002 Andries Brouwer -.\" -.\" %%%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 replaces an earlier man page written by Walter Harms -.\" . -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Tue Jul 8 05:09:37 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH ASSERT_PERROR 3 2013\-09\-26 GNU "Linux Programmer's Manual" -.SH 名前 -assert_perror \- test errnum and abort -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP -.sp -\fBvoid assert_perror(int \fP\fIerrnum\fP\fB);\fP -.fi -.SH 説明 -最後に \fI\fP がインクルードされた時にマクロ \fBNDEBUG\fP が定義されていた場合、マクロ -\fBassert_perror\fP() は何のコードも生成せず、したがって全く何もしない。 そうでない場合、マクロ \fBassert_perror\fP() -は標準エラーにエラーメッセージを表示し、 \fIerrnum\fP が 0 でない場合には \fBabort\fP(3) を呼び出してプログラムを終了させる。 -メッセージには、ファイル名、マクロ呼び出しがあった関数名と行番号、 \fIstrerror(errnum)\fP の出力が含まれる。 -.SH 返り値 -値は返されない。 -.SH 準拠 -これは GNU による拡張である。 -.SH バグ -assert マクロの目的は、プログラマがプログラム中のバグを探す手助けをすることであり、コーディング間違いがない場合には何が起こることはありえない。 -しかしながら、システムコールやライブラリコールの場合、状況がかなり違っていて、 -エラーが返されることがありえるし、実際あるだろう。そしてそのような状況でも テストされるべきである。この場合には、 \fBNDEBUG\fP -を定義することで無効にできる assert ではなく、適切なエラー処理コードで対処すべきである。 このマクロは決して使わないこと。 -.SH 関連項目 -\fBabort\fP(3), \fBassert\fP(3), \fBexit\fP(3), \fBstrerror\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/atan.3 b/manual/LDP_man-pages/draft/man3/atan.3 deleted file mode 100644 index 6ea79e49..00000000 --- a/manual/LDP_man-pages/draft/man3/atan.3 +++ /dev/null @@ -1,106 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kenji Kajiwara and Kentaro Ogawa -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 17:50:45 JST -.\" by Kenji Kajiwara and Kentaro Ogawa -.\" Proof Reading: Takashi Yoshino -.\" Updated Tue Aug 5 23:16:48 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2008-09-14, Akihiro MOTOKI -.\" -.TH ATAN 3 2013\-10\-07 "" "Linux Programmer's Manual" -.SH 名前 -atan, atanf, atanl \- 逆正接(arc tangent)関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble atan(double \fP\fIx\fP\fB);\fP -.br -\fBfloat atanf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double atanl( long double \fP\fIx\fP\fB);\fP -.sp -.fi -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBatanf\fP(), \fBatanl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -\fBatan\fP() \fIx\fP の逆正接(arc tangent)の主値を計算する。 すなわち、 その正接(tangent)が \fIx\fP -となるような値である。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の逆正接の主値をラジアン単位で返す。 返り値は [\-pi/2,\ pi/2] の範囲となる。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が +0 (\-0) の場合、+0 (\-0) が返される。 - -.\" -.\" POSIX.1-2001 documents an optional range error for subnormal x; -.\" glibc 2.8 does not do this. -\fIx\fP が正の無限大 (負の無限大) の場合、+pi/2 (\-pi/2) が返される。 -.SH エラー -エラーは発生しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBatan\fP(), \fBatanf\fP(), \fBatanl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠している。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/atan2.3 b/manual/LDP_man-pages/draft/man3/atan2.3 deleted file mode 100644 index 02dc4836..00000000 --- a/manual/LDP_man-pages/draft/man3/atan2.3 +++ /dev/null @@ -1,131 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kenji Kajiwara and Kentaro Ogawa -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 17:50:45 JST -.\" by Kenji Kajiwara and Kentaro Ogawa -.\" Proof Reading: Takashi Yoshino -.\" Updated Tue Aug 5 23:16:48 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2008-09-15, Akihiro MOTOKI -.\" -.TH ATAN2 3 2010\-09\-20 "" "Linux Programmer's Manual" -.SH 名前 -atan2, atan2f, atan2l \- 二つの変数に対する逆正接(arc tangent)関数 -.SH 書式 -.nf -\fB#include \fP - -\fBdouble atan2(double \fP\fIy\fP\fB, double \fP\fIx\fP\fB);\fP -\fBfloat atan2f(float \fP\fIy\fP\fB, float \fP\fIx\fP\fB);\fP -\fBlong double atan2l(long double \fP\fIy\fP\fB, long double \fP\fIx\fP\fB);\fP - -.fi -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBatan2f\fP(), \fBatan2l\fP(): -.RS -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -\fBatan2\fP() 関数は \fIy/x\fP の逆正接 (arg tangent) の主値を計算する。 -二つの引き数の符号は結果の象限を決定するために使われる。 -.SH 返り値 -成功すると、これらの関数は \fIy/x\fP の逆正接の主値をラジアン単位で返す。 返り値は [\-pi,\ pi] の範囲となる。 - -\fIy\fP が +0 (\-0) で \fIx\fP が 0 未満の場合、+pi (\-pi) が返される。 - -\fIy\fP が +0 (\-0) で \fIx\fP が 0 より大きい場合、+0 (\-0) が返される。 - -\fIy\fP が 0 未満で \fIx\fP が +0 か \-0 の場合、\-pi/2 が返される。 - -\fIy\fP が 0 より大きく \fIx\fP が +0 か \-0 の場合、pi/2 が返される。 - -.\" POSIX.1 says: -.\" If -.\" .I x -.\" is 0, a pole error shall not occur. -.\" -\fIx\fP か \fIy\fP のいずかが NaN の場合、NaN が返される。 - -.\" POSIX.1 says: -.\" If the result underflows, a range error may occur and -.\" .I y/x -.\" should be returned. -.\" -\fIy\fP が +0 (\-0) で \fIx\fP が \-0 の場合、+pi (\-pi) が返される。 - -\fIy\fP が +0 (\-0) で \fIx\fP が +0 の場合、+0 (\-0) が返される。 - -\fIy\fP が 0 より大きい (小さい) 有限値で \fIx\fP が負の無限大の場合、+pi (\-pi) が返される。 - -\fIy\fP が 0 より大きい (小さい) 有限値で \fIx\fP が正の無限大の場合、+0 (\-0) が返される。 - -\fIy\fP が正の無限大 (負の無限大) で \fIx\fP が有限値の場合、pi/2 (\-pi/2) が返される。 - -\fIy\fP が正の無限大 (負の無限大) で \fIx\fP が負の無限大の場合、+3*pi/4 (\-3*pi/4) が返される。 - -.\" -.\" POSIX.1 says: -.\" If both arguments are 0, a domain error shall not occur. -\fIy\fP が正の無限大 (負の無限大) で \fIx\fP が正の無限大の場合、+pi/4 (\-pi/4) が返される。 -.SH エラー -.\" POSIX.1 documents an optional underflow error -.\" glibc 2.8 does not do this. -エラーは発生しない。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠している。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/atanh.3 b/manual/LDP_man-pages/draft/man3/atanh.3 deleted file mode 100644 index 6d7935cd..00000000 --- a/manual/LDP_man-pages/draft/man3/atanh.3 +++ /dev/null @@ -1,126 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kenji Kajiwara and Kentaro Ogawa -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 17:58:16 JST -.\" by Kenji Kajiwara and Kentaro Ogawa -.\" Proof Reading: Takashi Yoshino -.\" Updated Tue Aug 5 23:16:48 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2008-09-14, Akihiro MOTOKI -.\" -.TH ATANH 3 2010\-09\-11 "" "Linux Programmer's Manual" -.SH 名前 -atanh, atanhf, atanhl \- 逆双曲線正接(inverse hyperbolic tangent)関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble atanh(double \fP\fIx\fP\fB);\fP -.br -\fBfloat atanhf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double atanhl(long double \fP\fIx\fP\fB);\fP -.sp -.fi -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBatanh\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBatanhf\fP(), \fBatanhl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -\fBatanh\fP() 関数は \fIx\fP の逆双曲線正接 (inverse hyperbolic tangent) を計算する。 -すなわち、その双曲線正接 (hyperbolic tangent) が \fIx\fP になる ような値である。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の逆双曲線正接を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が +0 (\-0) の場合、+0 (\-0) が返される。 - -\fIx\fP が +1 か \-1 の場合、 極エラー (pole error) が発生し、 関数の種類に応じて、数学的に正しい符号の -\fBHUGE_VAL\fP, \fBHUGE_VALF\fP, \fBHUGE_VALL\fP がそれぞれ返される。 - -.\" -.\" POSIX.1-2001 documents an optional range error for subnormal x; -.\" glibc 2.8 does not do this. -\fIx\fP の絶対値が 1 より大きい場合、 領域エラー (domain error) が発生し、 NaN が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が \-1 より小さいか +1 より大きい -\fIerrno\fP に \fBEDOM\fP が設定される。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.TP -極エラー (pole error): \fIx\fP が +1 か \-1 -\fIerrno\fP に \fBERANGE\fP が設定される (「バグ」の節も参照)。 0 による除算 (divide\-by\-zero) 浮動小数点例外 -(\fBFE_DIVBYZERO\fP) が上がる。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠している。 -.SH バグ -.\" Bug: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6759 -.\" This can be seen in sysdeps/ieee754/k_standard.c -glibc 2.9 とそれ以前のバージョンでは、 極エラーが発生した場合、POSIX で要求されている \fBERANGE\fP ではなく \fBEDOM\fP が -\fIerrno\fP に設定される。 バージョン 2.10 以降の glibc では、正しい動作をする。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/atexit.3 b/manual/LDP_man-pages/draft/man3/atexit.3 deleted file mode 100644 index fa16ca61..00000000 --- a/manual/LDP_man-pages/draft/man3/atexit.3 +++ /dev/null @@ -1,129 +0,0 @@ -.\" 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-03-29, David Metcalfe -.\" Modified 1993-07-24, Rik Faith (faith@cs.unc.edu) -.\" Modified 2003-10-25, Walter Harms -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kentaro OGAWA -.\" all rights reserved. -.\" Translated 2006-07-14, Kentaro OGAWA -.\" Updated & Modified 2004-05-23, Yuichi SATO -.\" Updated 2008-12-26, Akihiro MOTOKI , LDP v3.15 -.\" -.TH ATEXIT 3 2008\-12\-05 Linux "Linux Programmer's Manual" -.SH 名前 -atexit \- プロセスが正常終了した時に呼び出される関数を登録する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint atexit(void (*\fP\fIfunction\fP\fB)(void));\fP -.fi -.SH 説明 -\fBatexit\fP() 関数は、与えられた \fIfunction\fP を、 \fBexit\fP(3) やプログラムの \fImain\fP() -関数からの返りを通じて、プロセスが正常終了した時に呼び出される 関数として登録する。 ここで定義された関数は、登録した順番とは逆の順番で呼び出される。 -登録した関数に引き数は渡されない。 - -同じ関数を複数回登録してもよい。 登録された関数は登録 1 回につき 1 回呼び出される。 -.LP -POSIX.1\-2001 では、このような関数を少なくとも \fBATEXIT_MAX\fP 個 (32個) 登録できることを要求している。 -その実装でサポートされている実際の上限は \fBsysconf\fP(3) を使って取得できる。 -.LP -\fBfork\fP(2) で作成された場合、子プロセスは親プロセスの登録のコピーを継承する。 -\fBexec\fP(3) ファミリーの関数の場合、呼び出しに成功すると、 全ての登録が削除される。 -.SH 返り値 -\fBatexit\fP() 関数は、関数登録が成功した時には 0 を返す。 その他の場合には 0 以外の値を返す。 -.SH 準拠 -SVr4, 4.3BSD, C89, C99, POSIX.1\-2001. -.SH 注意 -\fBatexit\fP() (と \fBon_exit\fP(3)) を使って登録された関数は、 -シグナルの配送によりプロセスが異常終了した場合には呼び出されない。 - -登録された関数の一つが \fB_exit\fP(2) を呼び出した場合、残りの関数はどれも起動されず、 \fBexit\fP(3) -により実行される他のプロセス終了ステップは実行されない。 - -.\" This can happen on OpenBSD 4.2 for example, and is documented -.\" as occurring on FreeBSD as well. -.\" Glibc does "the Right Thing" -- invocation of the remaining -.\" exit handlers carries on as normal. -POSIX.1\-2001 では、 \fBatexit\fP() を使って登録された一つの関数内で、複数回 \fBexit\fP(3) -を呼び出した際の結果は未定義である。 (Linux ではないが) いくつかのシステムでは、この場合、 繰り返しが無限に起こることになる。 -移植性が必要なプログラムでは、 \fBatexit\fP() で登録された関数内で \fBexit\fP(3) を起動すべきではない。 - -\fBatexit\fP() と \fBon_exit\fP(3) は、同じリストに対して関数を登録する。 プロセスが正常に終了した際には、 -これらの二つの関数で登録された順序の逆順で、 登録された関数が起動される。 - -.\" In glibc, things seem to be handled okay -POSIX.1\-2001 では、 \fBatexit\fP() で登録された関数の実行を終了するために \fBlongjmp\fP(3) -が使用された場合の結果は未定義である。 -.SS "Linux での注意" -glibc 2.2.3 以降では、共有ライブラリがアンロードされるときに呼ばれる 関数を登録するために、共有ライブラリの中で \fBatexit\fP() -(と \fBon_exit\fP(3)) を使用することができる。 -.SH 例 -.nf -#include -#include -#include - -void -bye(void) -{ - printf("That was all, folks\en"); -} - -int -main(void) -{ - long a; - int i; - - a = sysconf(_SC_ATEXIT_MAX); - printf("ATEXIT_MAX = %ld\en", a); - - i = atexit(bye); - if (i != 0) { - fprintf(stderr, "cannot set exit function\en"); - exit(EXIT_FAILURE); - } - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fB_exit\fP(2), \fBexit\fP(3), \fBon_exit\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/atof.3 b/manual/LDP_man-pages/draft/man3/atof.3 deleted file mode 100644 index 4ada6eb2..00000000 --- a/manual/LDP_man-pages/draft/man3/atof.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" 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 Mon Mar 29 22:39:24 1993, David Metcalfe -.\" Modified Sat Jul 24 21:39:22 1993, Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kentaro OGAWA -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 22:47:32 +0900 -.\" by Kentaro OGAWA -.\" -.TH ATOF 3 2014\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -atof \- 文字列を double 型の数値に変換 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble atof(const char *\fP\fInptr\fP\fB);\fP -.fi -.SH 説明 -\fBatof\fP() 関数は、\fInptr\fPによって指示される文字列のはじめの部分を \fIdouble\fP 型の数値に変換する。 この振る舞いは、 -\fBatof\fP() 関数がエラーを見つけないことを除いては、 -.sp -.in +4n -strtod(nptr, NULL); -.in -.sp -と同じである。 -.SH 返り値 -変換された値。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBatof\fP() 関数は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/atoi.3 b/manual/LDP_man-pages/draft/man3/atoi.3 deleted file mode 100644 index f8f8ad73..00000000 --- a/manual/LDP_man-pages/draft/man3/atoi.3 +++ /dev/null @@ -1,105 +0,0 @@ -.\" 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 Mon Mar 29 22:39:41 1993, David Metcalfe -.\" Modified Sat Jul 24 21:38:42 1993, Rik Faith (faith@cs.unc.edu) -.\" Modified Sun Dec 17 18:35:06 2000, Joseph S. Myers -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kentaro OGAWA -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 22:47:32 +0900 -.\" by Kentaro OGAWA -.\" Updated Tue 30 Jan 2001 JST by Kentaro Shirakata -.\" -.TH ATOI 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -atoi, atol, atoll \- 文字列を整数型に変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint atoi(const char *\fP\fInptr\fP\fB);\fP -.br -\fBlong atol(const char *\fP\fInptr\fP\fB);\fP -.br -\fBlong long atoll(const char *\fP\fInptr\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBatoll\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -または \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBatoi\fP() 関数は、\fInptr\fP によって指示される文字列のはじめの部分を \fIint\fP 型整数に変換する。 この振る舞いは、 -\fBatoi\fP() 関数がエラーを見つけない点以外は、 -.sp -.in +4n -strtol(nptr, NULL, 10); -.in -.sp -と同じである。 -.PP -\fBatol\fP() 関数と \fBatoll\fP() 関数は \fBatoi\fP() と同様の振る舞いをするが、 文字列のはじめの部分をそれぞれ -\fIlong\fP や \fIlong long\fP に変換する。 -.SH 返り値 -変換された値。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBatoi\fP(), \fBatol\fP(), \fBatoll\fP() は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -SVr4, POSIX.1\-2001, 4.3BSD, C99. C89 と POSIX.1\-1996 には \fBatoi\fP() と -\fBatol\fP() だけが含まれている。 -.SH 注意 -.\" The -.\" .BR atoll () -.\" function is present in glibc 2 since version 2.0.2, but -.\" not in libc4 or libc5. -Linux libc は \fBatoll\fP() の古い名前として \fBatoq\fP() を提供していた。 glibc では \fBatoq\fP() -は提供されていない。 -.SH 関連項目 -\fBatof\fP(3), \fBstrtod\fP(3), \fBstrtol\fP(3), \fBstrtoul\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/backtrace.3 b/manual/LDP_man-pages/draft/man3/backtrace.3 deleted file mode 100644 index e9e96f50..00000000 --- a/manual/LDP_man-pages/draft/man3/backtrace.3 +++ /dev/null @@ -1,176 +0,0 @@ -.\" Copyright (C) 2007 Michael Kerrisk -.\" drawing on material by Justin Pryzby -.\" -.\" %%%LICENSE_START(PERMISSIVE_MISC) -.\" Permission is hereby granted, free of charge, to any person obtaining -.\" a copy of this software and associated documentation files (the -.\" "Software"), to deal in the Software without restriction, including -.\" without limitation the rights to use, copy, modify, merge, publish, -.\" distribute, sublicense, and/or sell copies of the Software, and to -.\" permit persons to whom the Software is furnished to do so, subject to -.\" the following conditions: -.\" -.\" The above copyright notice and this permission notice shall be -.\" included in all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -.\" IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -.\" CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -.\" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -.\" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -.\" %%%LICENSE_END -.\" -.\" References: -.\" glibc manual and source -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2007 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2007-10-16, Akihiro MOTOKI , LDP v2.66 -.\" -.TH BACKTRACE 3 2008\-06\-14 GNU "Linux Programmer's Manual" -.SH 名前 -backtrace, backtrace_symbols, backtrace_symbols_fd \- アプリケーション自身でのデバッグのサポート -.SH 書式 -\fB#include \fP - -\fBint backtrace(void\fP \fB**\fP\fIbuffer\fP\fB,\fP \fBint\fP \fIsize\fP\fB);\fP - -\fBchar **backtrace_symbols(void *const\fP \fB*\fP\fIbuffer\fP\fB,\fP \fBint\fP -\fIsize\fP\fB);\fP - -\fBvoid backtrace_symbols_fd(void *const\fP \fB*\fP\fIbuffer\fP\fB,\fP \fBint\fP -\fIsize\fP\fB,\fP \fBint\fP \fIfd\fP\fB);\fP -.SH 説明 -\fBbacktrace\fP() は、呼び出したプログラムのバックトレースを \fIbuffer\fP が指す配列に入れて返す。バックトレースは、プログラムで -現在動作中の関数呼び出しの並びである。 \fIbuffer\fP が指す配列の個々の要素は \fIvoid\ *\fP 型で、 -対応するスタックフレームからのリターンアドレスである。 \fIsize\fP 引き数は \fIbuffer\fP に格納できるアドレスの最大個数を指定する。 -バックトレースが \fIsize\fP より大きい場合、 \fIsize\fP 個の直近の関数呼び出しに対応するアドレスが返される。 -完全なバックトレースを取得するためには、確実に \fIbuffer\fP と \fIsize\fP が十分大きくなるようにすること。 - -\fBbacktrace\fP() によって \fIbuffer\fP にアドレスの集合が得られたら、 \fBbacktrace_symbols\fP() -によって、アドレス集合を、そのアドレスをシンボルで表した文字列の配列 に翻訳できる。 \fIsize\fP 引き数は \fIbuffer\fP -に格納されたアドレスの数を指定する。 個々のアドレスのシンボル表現は、関数名 (特定できた場合)、 関数へのオフセット -(16進表記)、実際のリターンアドレス (16進表記) から構成される。 \fBbacktrace_symbols\fP() の実行結果としては、 -文字列ポインターの配列のアドレスが返される。 この配列は \fBbacktrace_symbols\fP() によって \fBmalloc\fP(3) -され、呼び出し側で free しなければならない (ポインターの配列が指す個々の文字列は free する必要はないし、 free すべきでもない)。 - -\fBbacktrace_symbols_fd\fP() は、 \fBbacktrace_symbols\fP() と同じ引き数 \fIbuffer\fP と -\fIsize\fP をとるが、呼び出し側に文字列の配列を返す代わりに、 文字列をファイルディスクリプター \fIfd\fP に 1 行に 1 -エントリーの形で書き込む。 \fBbacktrace_symbols_fd\fP() は \fBmalloc\fP(3) を呼び出さない。 -そのため、これに続く関数が失敗する可能性がある状況でも利用できる。 -.SH 返り値 -\fBbacktrace\fP() は \fIbuffer\fP に格納したアドレスの個数を返す。その個数は \fIsize\fP より大きくなることはない。 返り値が -\fIsize\fP より小さい場合、バックトレース全体が格納されている。返り値が \fIsize\fP -と等しい場合、バックトレースは切り詰められているかもしれない。 切り詰められた場合、最も古いスタックフレームのアドレスは 返されないことになる。 - -\fBbacktrace_symbols\fP() は、成功すると、この呼び出しで \fBmalloc\fP(3) された配列へのポインターを返す。 -エラーの場合、 NULL を返す。 -.SH バージョン -\fBbacktrace\fP(), \fBbacktrace_symbols\fP(), \fBbacktrace_symbols_fd\fP() はバージョン -2.1 以降の glibc で提供されている。 -.SH 準拠 -これらの関数は GNU による拡張である。 -.SH 注意 -これらの関数は、関数のリターンアドレスがスタック上でどのように格納されるか に関してある仮定を置いている。 以下の点に注意。 -.IP * 3 -(\fBgcc\fP(1) の 0 以外の最適化レベルで暗黙のうちに行われる) フレームポインターの省略を行うと、これらの前提が崩れる可能性がある。 -.IP * -インライン関数はスタックフレームを持たない。 -.IP * -末尾呼び出しの最適化 (tail\-call optimization) を行うと、 あるスタックフレームが別のスタックフレームを置き換える可能性がある。 -.PP -シンボル名は特別なリンカーオプションを使用しないと利用できない場合がある。 GNU リンカーを使用するシステムでは、 \fI\-rdynamic\fP -リンカーオプションを使う必要がある。 "static" な関数のシンボル名は公開されず、 バックトレースでは利用できない点に注意すること。 -.SH 例 -以下のプログラムは、 \fBbacktrace\fP() と \fBbacktrace_symbols\fP() の使用例を示したものである。 -以下に示すシェルのセッションは、 このプログラムを動かした際の実行例である。 -.nf -.in +4n - -$\fB cc \-rdynamic prog.c \-o prog\fP -$\fB ./prog 3\fP -backtrace() returned 8 addresses -\&./prog(myfunc3+0x5c) [0x80487f0] -\&./prog [0x8048871] -\&./prog(myfunc+0x21) [0x8048894] -\&./prog(myfunc+0x1a) [0x804888d] -\&./prog(myfunc+0x1a) [0x804888d] -\&./prog(main+0x65) [0x80488fb] -\&/lib/libc.so.6(__libc_start_main+0xdc) [0xb7e38f9c] -\&./prog [0x8048711] -.in -.fi -.SS プログラムのソース -\& -.nf -#include -#include -#include -#include - -void -myfunc3(void) -{ - int j, nptrs; -#define SIZE 100 - void *buffer[100]; - char **strings; - - nptrs = backtrace(buffer, SIZE); - printf("backtrace() returned %d addresses\en", nptrs); - - /* backtrace_symbols_fd(buffer, nptrs, STDOUT_FILENO) を - 呼び出しても、以下と同様の出力が得られる。 */ - - strings = backtrace_symbols(buffer, nptrs); - if (strings == NULL) { - perror("backtrace_symbols"); - exit(EXIT_FAILURE); - } - - for (j = 0; j < nptrs; j++) - printf("%s\en", strings[j]); - - free(strings); -} - -static void /* "static" はシンボルを公開しないことを意味する */ -myfunc2(void) -{ - myfunc3(); -} - -void -myfunc(int ncalls) -{ - if (ncalls > 1) - myfunc(ncalls \- 1); - else - myfunc2(); -} - -int -main(int argc, char *argv[]) -{ - if (argc != 2) { - fprintf(stderr, "%s num\-calls\en", argv[0]); - exit(EXIT_FAILURE); - } - - myfunc(atoi(argv[1])); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBgcc\fP(1), \fBld\fP(1), \fBdlopen\fP(3), \fBmalloc\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/basename.3 b/manual/LDP_man-pages/draft/man3/basename.3 deleted file mode 100644 index c1fea71e..00000000 --- a/manual/LDP_man-pages/draft/man3/basename.3 +++ /dev/null @@ -1,131 +0,0 @@ -.\" Copyright (c) 2000 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 -.\" -.\" Created, 14 Dec 2000 by Michael Kerrisk -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001 NAKANO Takeo all rights reserved. -.\" Translated 2001-03-31, NAKANO Takeo -.\" Updated 2005-02-26, Akihiro MOTOKI -.\" Updated 2007-05-01, Akihiro MOTOKI, LDP v2.46 -.\" -.TH BASENAME 3 2014\-06\-13 GNU "Linux Programmer's Manual" -.SH 名前 -basename, dirname \- パス名を解析して各部分を取り出す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *dirname(char *\fP\fIpath\fP\fB);\fP - -\fBchar *basename(char *\fP\fIpath\fP\fB);\fP -.fi -.SH 説明 -警告: \fBbasename\fP() には異なるバージョンが 2つ存在する。下記の「注意」の節を参照のこと。 -.LP -\fBdirname\fP() と \fBbasename\fP() は、ヌルで終端されたパス名の文字列を、 ディレクトリ部分・ファイル名部分に分割する。 -通常は、 \fBdirname\fP() は最後の \(aq/\(aq までの部分 (最後の \(aq/\(aq は含まない) を返し、 -\fBbasename\fP() は最後の \(aq/\(aq 以降の部分を返す。 文字列の末尾についた \(aq/\(aq -文字は、パス名の一部とはみなされない。 -.PP -\fIpath\fP に '/' 文字がない場合は、 \fBdirname\fP() は文字列 "." を返し、 \fBbasename\fP() は \fIpath\fP -と同じ内容を返す。 \fIpath\fP が文字列 "/" に等しい場合は、 \fBdirname\fP() も \fBbasename\fP() も文字列 "/" -を返す。 \fIpath\fP が ヌルポインターだったり、空の文字列を指していた場合は、 \fBdirname\fP() も \fBbasename\fP() -も文字列 "." を返す。 -.PP -\fBdirname\fP() の返した文字列、 "/"、 \fBbasename\fP() の返した文字列、 を順に結合すると、完全なパス名が得られる。 -.PP -\fBdirname\fP() と \fBbasename\fP() は、いずれも \fIpath\fP の内容を変更することがある。 -したがって、これらの関数を呼び出す際には コピーを渡すのが望ましい。 -.PP -これらの関数は、静的に割り当てられたメモリーへのポインターを返すことがあり、 これらの領域は後の関数呼び出しで上書きされるかもしれない。 -また、これらの関数は \fIpath\fP の一部分を指すポインターを返すこともある。そのため、 \fIpath\fP -で参照される文字列は、関数が返すポインターが不要になるまでは 変更したり free したりすべきではない。 -.PP -以下の一連の例 (SUSv2 から引用) は、 いろいろな path に対して \fBdirname\fP() と \fBbasename\fP() -が返す文字列を表したものである。 -.sp -.TS -lb lb lb -l l l l. -path dirname basename -/usr/lib /usr lib -/usr/ / usr -usr . usr -/ / / -\&. . . -\&.. . .. -.TE -.SH 返り値 -\fBdirname\fP() と \fBbasename\fP() は、いずれもヌルで終端された文字列へのポインターを返す。 (これらのポインターを -\fBfree\fP(3) に渡さないこと。) -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBbasename\fP() と \fBdirname\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fBbasename\fP() には 2種類の異なるバージョンがある。 一つはすでに説明した POSIX バージョンであり、 もう一つは GNU -バージョンである。 GNU バージョンを使用するには以下のようにする。 -.br -.nf - -\fB #define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP - -.fi -GNU バージョンは引き数を変更することはなく、 \fIpath\fP の末尾が '/'の場合は空の文字列を返す。 特に \fIpath\fP が "/" -の場合も空文字列を返す。 \fBdirname\fP() には GNU バージョンはない。 -.LP -glibc では、 \fI\fP をインクルードすると POSIX バージョンの \fBbasename\fP() -が使用され、それ以外の場合は GNU バージョンとなる。 -.SH バグ -glibc の POSIX バージョンの実装では、引き数の内容が変更され、 引き数に ("/usr/" などの) 定数文字列を指定されると -セグメンテーションフォールトを起こす。 バージョン 2.2.1 以前の glibc では、 glibc の \fBdirname\fP() は末尾が -\(aq/\(aq 文字になっているパス名を正しく扱えず、 引き数が NULL だとセグメンテーションフォールトを起こした。 -.SH 例 -.in +4n -.nf -char *dirc, *basec, *bname, *dname; -char *path = "/etc/passwd"; - -dirc = strdup(path); -basec = strdup(path); -dname = dirname(dirc); -bname = basename(basec); -printf("dirname=%s, basename=%s\en", dname, bname); -.fi -.in -.SH 関連項目 -\fBbasename\fP(1), \fBdirname\fP(1) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/bcmp.3 b/manual/LDP_man-pages/draft/man3/bcmp.3 deleted file mode 100644 index a61af1fe..00000000 --- a/manual/LDP_man-pages/draft/man3/bcmp.3 +++ /dev/null @@ -1,69 +0,0 @@ -.\" 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 21:36:50 1993 by Rik Faith -.\" Modified Tue Oct 22 23:47:36 1996 by Eric S. Raymond -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Ueyama Rui -.\" all rights reserved. -.\" Translated Sun Sep 7 07:27:24 JST 1997 -.\" by Ueyama Rui -.\" Updated Sun Feb 23 JST 2003 by Kentaro Shirakata -.\" -.TH BCMP 3 2013\-10\-21 Linux "Linux Programmer's Manual" -.SH 名前 -bcmp \- バイト列を比較する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint bcmp(const void *\fP\fIs1\fP\fB, const void *\fP\fIs2\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBbcmp\fP() は、2 つのバイト列 \fIs1\fP と \fIs2\fP の先頭 \fIn\fP バイトを 比較する。2 つが等しいか、特に \fIn\fP が 0 -の場合 \fBbcmp\fP() は 0 を返す。 さもなければ 0 以外を返す。 -.SH 返り値 -バイト列が等しい場合は 0 、等しくない場合は 0 以外を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBbcmp\fP() 関数はスレッドセーフである。 -.SH 準拠 -4.3BSD. この関数は廃止予定である (POSIX.1\-2001 では 過去の名残 (LEGACY) とされている)。新しいプログラムでは -\fBmemcmp\fP(3) を使うべきである。 POSIX.1\-2008 では \fBbcmp\fP() の仕様が削除されている。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/bcopy.3 b/manual/LDP_man-pages/draft/man3/bcopy.3 deleted file mode 100644 index 43b5d053..00000000 --- a/manual/LDP_man-pages/draft/man3/bcopy.3 +++ /dev/null @@ -1,70 +0,0 @@ -.\" 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 Feb 26 14:52:00 1995 by Rik Faith -.\" Modified Tue Oct 22 23:48:10 1996 by Eric S. Raymond -.\" " -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Ueyama Rui -.\" all rights reserved. -.\" Translated Tue Feb 21 0:45:00 JST 1997 -.\" by Ueyama Rui -.\" Updated Sun Feb 23 JST 2003 by Kentaro Shirakata -.\" -.TH BCOPY 3 2013\-10\-22 Linux "Linux Programmer's Manual" -.SH 名前 -bcopy \- バイト列をコピーする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid bcopy(const void *\fP\fIsrc\fP\fB, void *\fP\fIdest\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBbcopy\fP() は \fIsrc\fP から先頭 \fIn\fP バイトを \fIdest\fP にコピーする。 領域が重なっていても、結果は正しいものである。 -.SH 返り値 -なし。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBbcopy\fP() 関数はスレッドセーフである。 -.SH 準拠 -4.3BSD. この関数は廃止予定である (POSIX.1\-2001 では 過去の名残 (LEGACY) とされている)。新しいプログラムでは -\fBmemcpy\fP() や \fBmemmove\fP() を使用すべきである。 \fBmemcpy\fP() や \fBmemmove\fP() では、最初の -2 つの引数の順序が入れ替わっていることに注意すること。 POSIX.1\-2008 では、 \fBbcopy\fP() の仕様が削除されている。 -.SH 関連項目 -\fBmemccpy\fP(3), \fBmemcpy\fP(3), \fBmemmove\fP(3), \fBstrcpy\fP(3), \fBstrncpy\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/bindresvport.3 b/manual/LDP_man-pages/draft/man3/bindresvport.3 deleted file mode 100644 index 00144af9..00000000 --- a/manual/LDP_man-pages/draft/man3/bindresvport.3 +++ /dev/null @@ -1,96 +0,0 @@ -.\" Copyright (C) 2007, Michael Kerrisk -.\" and Copyright (C) 2008, Linux Foundation, written by 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 -.\" -.\" 2007-05-31, mtk: Rewrite and substantial additional text. -.\" 2008-12-03, mtk: Rewrote some pieces and fixed some errors -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 Shouichi Saito all rights reserved. -.\" Translated 1999-08-28, Shouichi Saito -.\" Proofed 1999-09-25, NAKANO Takeo -.\" Updated 2007-06-11, Akihiro MOTOKI , LDP v2.54 -.\" Updated 2008-12-24, Akihiro MOTOKI , LDP v3.15 -.\" Updated 2013-07-24, Akihiro MOTOKI -.\" -.TH BINDRESVPORT 3 2013\-06\-21 "" "Linux Programmer's Manual" -.SH 名前 -bindresvport \- ソケットを特権 IP ポートにバインドする -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -.LP -\fBint bindresvport(int \fP\fIsockfd\fP\fB, struct sockaddr_in *\fP\fIsin\fP\fB);\fP -.fi -.SH 説明 -.LP -.\" Glibc actually starts searching with a port # in the range 600 to 1023 -\fBbindresvport\fP() は、ソケットディスクリプターを特権無名 (privileged anonymous) IP ポートに -バインドするのに使う。特権無名 IP ポートとは、 ポート番号が 512 から 1023 の範囲から任意に選択されるポートである。 - -\fBbindresvport\fP() によって実行された \fBbind\fP(2) が成功し、 \fIsin\fP が NULL -以外の場合、実際に割り当てられたポート番号が \fIsin\->sin_port\fP に入れて返される。 - -\fIsin\fP には NULL を指定することもでき、その場合には \fIsin\->sin_family\fP は暗黙のうちに \fBAF_INET\fP -とみなされる。 しかし、この場合には、 \fBbindresvport\fP() は実際に割り当てられたポート番号を返す手段を持たない -(割り当てられたポート番号は、後で \fBgetsockname\fP(2) を使って取得できる)。 -.SH 返り値 -\fBbindresvport\fP() は成功すると 0 を返す。それ以外の場合、\-1 を返し、 \fIerrno\fP にエラーの原因を示す値を設定する。 -.SH エラー -\fBbindresvport\fP() は \fBbind\fP(2) と同じ原因で失敗する可能性がある。 さらに、以下のエラーが発生することがある: -.TP -\fBEACCES\fP -呼び出し元がスーパーユーザーの特権を持っていなかった (より正確に言うと、 \fBCAP_NET_BIND_SERVICE\fP -ケーパビリティが必要である)。 -.TP -\fBEADDRINUSE\fP -全ての特権ポートが使用中である。 -.TP -\fBEAFNOSUPPORT\fP (glibc 2.7 以前では \fBEPFNOSUPPORT\fP) -\fIsin\fP が NULL 以外で、かつ \fIsin\->sin_family\fP が \fBAF_INET\fP でなかった。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -glibc 2.17 より前のバージョンでは、 \fBbindresvport\fP() -関数は保護されていない静的変数を使用しているため、スレッドセーフではない。 - -.\" commit f6da27e53695ad1cc0e2a9490358decbbfdff5e5 -glibc 2.17 以降では、 \fBbindresvport\fP() 関数は静的変数を保護するロックを使っており、スレッドセーフである。 -.SH 準拠 -POSIX.1\-2001 にはない。 BSD, Solaris およびその他の多くのシステムに存在する。 -.SH 注意 -\fBbindresvport\fP() のいくつかの実装と異なり、glibc の実装では呼び出し元が \fIsin\->sin_port\fP -で渡した値はどんな値であっても無視される。 -.SH 関連項目 -\fBbind\fP(2), \fBgetsockname\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/bsd_signal.3 b/manual/LDP_man-pages/draft/man3/bsd_signal.3 deleted file mode 100644 index dfe8fb3b..00000000 --- a/manual/LDP_man-pages/draft/man3/bsd_signal.3 +++ /dev/null @@ -1,76 +0,0 @@ -.\" Copyright (c) 2007 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2007 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2007-06-02, Akihiro MOTOKI -.\" -.TH BSD_SIGNAL 3 2013\-10\-22 "" "Linux Programmer's Manual" -.SH 名前 -bsd_signal \- BSD 方式のシグナル処理 -.SH 書式 -\fB#define _XOPEN_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBtypedef void (*sighandler_t)(int);\fP -.sp -\fBsighandler_t bsd_signal(int \fP\fIsignum\fP\fB, sighandler_t \fP\fIhandler\fP\fB);\fP -.SH 説明 -\fBbsd_signal\fP() 関数は \fBsignal\fP(2) と同じ引き数をとり、同じ処理を実行する。 - -両者の違いは、 \fBbsd_signal\fP() では信頼性のあるシグナル処理方式の提供が保証されていることである。 -信頼性のあるシグナル処理方式は以下の特徴を持つ。 a) ハンドラーが起動された場合に、シグナルの処理方法 (disposition) が -デフォルトにリセットされない、 b) シグナルハンドラーの実行中は、それ以降に発生した同じシグナルの配送が ブロックされない、 c) -ハンドラーが停止中の (blocking している) システムコールを 中断した場合、そのシステムコールが自動的に再開される。 -移植性が必要なアプリケーションでは、 \fBsignal\fP(2) でこれらが保証されることを前提にすべきではない。 -.SH 返り値 -\fBbsd_signal\fP() 関数はシグナルハンドラーの直前の値を返す。 エラーの場合、 \fBSIG_ERR\fP を返す。 -.SH エラー -\fBsignal\fP(2) と同じ。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBbsd_signal\fP() 関数はスレッドセーフである。 -.SH 準拠 -4.2BSD, POSIX.1\-2001. POSIX.1\-2008 では \fBbsd_signal\fP() の仕様が削除されている。 代わりに、 -\fBsigaction\fP(2) の使用が推奨されている。 -.SH 注意 -\fBbsd_signal\fP() の使用は避けるべきである。代わりに \fBsigaction\fP(2) を使うこと。 - -最近の Linux システムでは、 \fBbsd_signal\fP() と \fBsignal\fP(2) は等価である。しかし、以前のシステムでは、 -\fBsignal\fP(2) は信頼性に欠けるシグナル処理方式を提供していた。 詳細は \fBsignal\fP(2) を参照。 - -\fIsighandler_t\fP を使っているのは GNU による拡張である。 この型は機能検査マクロ \fB_GNU_SOURCE\fP -を定義した場合にのみ定義される。 -.SH 関連項目 -\fBsigaction\fP(2), \fBsignal\fP(2), \fBsysv_signal\fP(3), \fBsignal\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/bsearch.3 b/manual/LDP_man-pages/draft/man3/bsearch.3 deleted file mode 100644 index ceccc3a1..00000000 --- a/manual/LDP_man-pages/draft/man3/bsearch.3 +++ /dev/null @@ -1,119 +0,0 @@ -.\" 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 Mon Mar 29 22:41:16 1993, David Metcalfe -.\" Modified Sat Jul 24 21:35:16 1993, Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated 1998-03-18, NAKANO Takeo -.\" Updated 2005-02-26, Akihiro MOTOKI -.\" -.TH BSEARCH 3 2003\-11\-01 "" "Linux Programmer's Manual" -.SH 名前 -bsearch \- ソートされた配列を二分木検索 (binary search) する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid *bsearch(const void *\fP\fIkey\fP\fB, const void *\fP\fIbase\fP\fB,\fP -\fB size_t \fP\fInmemb\fP\fB, size_t \fP\fIsize\fP\fB,\fP -\fB int (*\fP\fIcompar\fP\fB)(const void *, const void *));\fP -.fi -.SH 説明 -\fBbsearch\fP() 関数は \fInmemb\fP 個のオブジェクトからなる配列を検索 する。配列の最初のメンバーへのポインターは \fIbase\fP -によって与える。 ポインター \fIkey\fP で参照されるオブジェクトと一致するメンバーが返される。 配列中の各々のメンバーのサイズは \fIsize\fP -によって指定する。 -.PP -配列の内容は比較関数 \fIcompar\fP に基づき、昇順にソートされていなけれ ばならない。 \fIcompar\fP -ルーチンは二つの引き数を取る関数で、一つ 目に \fIkey\fP へのポインター、次に配列のメンバーへのポインターを取る。 この順に指定したとき、 -\fIkey\fP が配列メンバーより小さいときには 負の整数を、大きいときには正の整数を、一致したときには 0 を、それぞれ \fIcompar\fP -は返さなければならない。 -.SH 返り値 -\fBbsearch\fP() 関数は、配列のメンバーのうち、一致したものへのポインターを 返す。見つからなかったときは NULL を返す。 \fIkey\fP -と一致したメンバーが 複数あるとき、そのうちのどのメンバーが返されるかはわからない。 -.SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001, C89, C99. -.SH 例 -以下の例は、 \fBqsort\fP(3) を使って構造体の配列の並び換えを行った後、 所望の要素を \fBbsearch\fP() -を使って取得するものである。 -.sp -.nf -#include -#include -#include - -struct mi { - int nr; - char *name; -} months[] = { - { 1, "jan" }, { 2, "feb" }, { 3, "mar" }, { 4, "apr" }, - { 5, "may" }, { 6, "jun" }, { 7, "jul" }, { 8, "aug" }, - { 9, "sep" }, {10, "oct" }, {11, "nov" }, {12, "dec" } -}; - -#define nr_of_months (sizeof(months)/sizeof(months[0])) - -static int -compmi(const void *m1, const void *m2) -{ - struct mi *mi1 = (struct mi *) m1; - struct mi *mi2 = (struct mi *) m2; - return strcmp(mi1\->name, mi2\->name); -} - -int -main(int argc, char **argv) -{ - int i; - - qsort(months, nr_of_months, sizeof(struct mi), compmi); - for (i = 1; i < argc; i++) { - struct mi key, *res; - key.name = argv[i]; - res = bsearch(&key, months, nr_of_months, - sizeof(struct mi), compmi); - if (res == NULL) - printf("\(aq%s\(aq: unknown month\en", argv[i]); - else - printf("%s: month #%d\en", res\->name, res\->nr); - } - exit(EXIT_SUCCESS); -} -.fi -.\" this example referred to in qsort.3 -.SH 関連項目 -\fBhsearch\fP(3), \fBlsearch\fP(3), \fBqsort\fP(3), \fBtsearch\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/bstring.3 b/manual/LDP_man-pages/draft/man3/bstring.3 index a16e3fde..3c4f3ab8 100644 --- a/manual/LDP_man-pages/draft/man3/bstring.3 +++ b/manual/LDP_man-pages/draft/man3/bstring.3 @@ -41,48 +41,47 @@ .\" by Ueyama Rui .\" Updated Wed Oct 15 JST 2003 by Kentaro Shirakata .\" -.TH BSTRING 3 2014\-05\-28 "" "Linux Programmer's Manual" +.TH BSTRING 3 2020\-12\-21 "" "Linux Programmer's Manual" .SH 名前 bcmp, bcopy, bzero, memccpy, memchr, memcmp, memcpy, memfrob, memmem, memmove, memset \- バイト列の操作を行なう .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint bcmp(const void *\fP\fIs1\fP\fB, const void *\fP\fIs2\fP\fB, size_t \fP\fIn\fP\fB);\fP -.sp +.PP \fBvoid bcopy(const void *\fP\fIsrc\fP\fB, void *\fP\fIdest\fP\fB, size_t \fP\fIn\fP\fB);\fP -.sp +.PP \fBvoid bzero(void *\fP\fIs\fP\fB, size_t \fP\fIn\fP\fB);\fP -.sp +.PP \fBvoid *memccpy(void *\fP\fIdest\fP\fB, const void *\fP\fIsrc\fP\fB, int \fP\fIc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.sp +.PP \fBvoid *memchr(const void *\fP\fIs\fP\fB, int \fP\fIc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.sp +.PP \fBint memcmp(const void *\fP\fIs1\fP\fB, const void *\fP\fIs2\fP\fB, size_t \fP\fIn\fP\fB);\fP -.sp +.PP \fBvoid *memcpy(void *\fP\fIdest\fP\fB, const void *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.sp +.PP \fBvoid *memfrob(void *\fP\fIs\fP\fB, size_t \fP\fIn\fP\fB);\fP -.sp -\fBvoid *memmem(const void *\fP\fIneedle\fP\fB, size_t \fP\fIneedlelen\fP\fB,\fP -\fB const void *\fP\fIhaystack\fP\fB, size_t \fP\fIhaystacklen\fP\fB);\fP -.sp +.PP +\fBvoid *memmem(const void *\fP\fIhaystack\fP\fB, size_t \fP\fIhaystacklen\fP\fB,\fP +\fB const void *\fP\fIneedle\fP\fB, size_t \fP\fIneedlelen\fP\fB);\fP +.PP \fBvoid *memmove(void *\fP\fIdest\fP\fB, const void *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.sp +.PP \fBvoid *memset(void *\fP\fIs\fP\fB, int \fP\fIc\fP\fB, size_t \fP\fIn\fP\fB);\fP .fi .SH 説明 これらの関数はヌル終端する必要のない文字列 (バイト配列) の操作を行う。 関数の詳しい説明は、それぞれの man ページを参照すること。 .SH 注意 .\" The old functions are not even available on some non-GNU/Linux systems. -\fBbcmp\fP(), \fBbcopy\fP(), \fBbzero\fP() 関数は古いものである。代わりに \fBmemcmp\fP(), \fBmemcpy\fP() -\fBmemset\fP() を使うこと。 +The functions \fBbcmp\fP(), \fBbcopy\fP(), and \fBbzero\fP() are obsolete. Use +\fBmemcmp\fP(), \fBmemcpy\fP(), and \fBmemset\fP() instead. .SH 関連項目 \fBbcmp\fP(3), \fBbcopy\fP(3), \fBbzero\fP(3), \fBmemccpy\fP(3), \fBmemchr\fP(3), \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/btowc.3 b/manual/LDP_man-pages/draft/man3/btowc.3 deleted file mode 100644 index bc621ee4..00000000 --- a/manual/LDP_man-pages/draft/man3/btowc.3 +++ /dev/null @@ -1,53 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HAYAKAWA Hitoshi -.\" all rights reserved. -.\" Translated Sep 11 1999, HAYAKAWA Hitoshi -.\" -.TH BTOWC 3 2011\-09\-22 GNU "Linux Programmer's Manual" -.SH 名前 -btowc \- シングルバイトをワイド文字にコンバートする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwint_t btowc(int \fP\fIc\fP\fB);\fP -.fi -.SH 説明 -\fBbtowc\fP() 関数は初期シフト状態から始まる長さ 1 のマルチバイトのシーケンスとして 解釈され、\fIc\fP をワイド文字にコンバートして返す。 -\fIc\fP が \fBEOF\fP もしくは長さ 1 の無効なマルチバイトシーケンスの場合、 \fBbtowc\fP() 関数は \fBWEOF\fP を返す。 -.SH 返り値 -\fBbtowc\fP() 関数はシングルバイト \fIc\fP からコンバートされたワイド文字を返す。 \fIc\fP が \fBEOF\fP もしくは長さ 1 -の無効なマルチバイトシーケンスの場合、 \fBbtowc\fP() 関数は \fBWEOF\fP を返す。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 注意 -\fBbtowc\fP() の振る舞いは、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.PP -この関数は使用されるべきではない。状態(state)を持ったエンコードには使えず、 マルチバイトシーケンスとは違い、必ずしもシングルバイト -を取り扱えるとは限らない。代わりに \fBmbtowc\fP() か、スレッドセーフな \fBmbrtowc\fP() を使用すること。 -.SH 関連項目 -\fBmbrtowc\fP(3), \fBmbtowc\fP(3), \fBwctob\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/btree.3 b/manual/LDP_man-pages/draft/man3/btree.3 index b0be2ca7..478a4706 100644 --- a/manual/LDP_man-pages/draft/man3/btree.3 +++ b/manual/LDP_man-pages/draft/man3/btree.3 @@ -46,7 +46,7 @@ .\" Proofed Mon Aug 16 1999 by NAKANO Takeo .\" Updated 2012-05-01, Akihiro MOTOKI .\" -.TH BTREE 3 2012\-04\-23 "" "Linux Programmer's Manual" +.TH BTREE 3 2020\-12\-21 "" "Linux Programmer's Manual" .\".UC 7 .SH 名前 btree \- btree データベースへのアクセスメソッド @@ -61,7 +61,7 @@ btree \- btree データベースへのアクセスメソッド ついて説明している。バージョン 2.2 以降の glibc では、もはやこれらの インターフェースは提供されていない。おそらく、このページではなく、 \fIlibdb\fP ライブラリが提供する API をお探しなのだろう。 - +.PP ルーチン \fBdbopen\fP(3) はデータベースファイルに対するライブラリインターフェースである。 サポートされているファイルフォーマットのひとつに btree ファイルがある。 データベースへのアクセスメソッドに関する一般的な記述は \fBdbopen\fP(3) に書かれている。 このマニュアルページでは btree 特有の情報についてのみ記述する。 @@ -70,9 +70,9 @@ btree データ構造では、ソートされたバランスツリー構造に .PP \fBdbopen\fP(3) に渡される btree アクセスメソッドに特有のデータ構造体は、 \fI\fP インクルードファイルで次のように定義されている。 +.PP .in +4n -.nf - +.EX typedef struct { unsigned long flags; unsigned int cachesize; @@ -83,7 +83,7 @@ typedef struct { size_t (*prefix)(const DBT *key1, const DBT *key2); int lorder; } BTREEINFO; -.fi +.EE .in .PP この構造体の要素を以下に示す。 @@ -126,8 +126,10 @@ minkeypage の値で分割されたページサイズより大きい時、その \fIminkeypage\fP が 0 (キーの最小値が指定されていない) の場合、値として 2 が使われる。 .TP \fIpsize\fP -ツリーの中のノードに使われるページサイズ (バイト単位)。 最小値は 512 バイトで、最大値は 64K である。 \fIpsize\fP が 0 -(ページサイズが指定されていない) の場合、 ファイルシステムの I/O ブロックサイズに基づいて決められる。 +Page size is the size (in bytes) of the pages used for nodes in the tree. +The minimum page size is 512 bytes and the maximum page size is 64\ KiB. If +\fIpsize\fP is 0 (no page size is specified), a page size is chosen based on +the underlying filesystem I/O block size. .TP \fIcompare\fP \fIcompare\fP はキーの比較関数である。 最初のキー引数に対し、二番目のキー引数が大きい場合には正の整数を、 @@ -146,8 +148,9 @@ minkeypage の値で分割されたページサイズより大きい時、その データベースに格納されているメタデータの整数値のバイトオーダー。 この数字は、順序を整数で表したものである。 例えばビッグエンディアンなら、この数値は 4,321 となる。 \fIlorder\fP が 0 (指定されていない) の場合、現在のホスト で使われているバイトオーダーが使われる。 .PP -ファイルが既に存在している (または \fBO_TRUCT\fP フラグが指定されていない) と、 引き数 \fIflag\fP, \fIlorder\fP, -\fIpsize\fP に指定された値は無視され、 ツリーが作られた時に使った値が用いられる。 +If the file already exists (and the \fBO_TRUNC\fP flag is not specified), the +values specified for the arguments \fIflags\fP, \fIlorder\fP, and \fIpsize\fP are +ignored in favor of the values used when the tree was created. .PP ツリーの前方順検索は、最小キーから最大キーに向かって行われる。 .PP @@ -166,16 +169,15 @@ than normal page fill factor. バイトオーダーとしてはビッグエンディアンとリトルエンディアンのみが サポートされている。 .SH 関連項目 \fBdbopen\fP(3), \fBhash\fP(3), \fBmpool\fP(3), \fBrecno\fP(3) - +.PP \fIThe Ubiquitous B\-tree\fP, Douglas Comer, ACM Comput. Surv. 11, 2 (June 1979), 121\-138. - +.PP \fIPrefix B\-trees\fP, Bayer and Unterauer, ACM Transactions on Database Systems, Vol. 2, 1 (March 1977), 11\-26. - +.PP \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/byteorder.3 b/manual/LDP_man-pages/draft/man3/byteorder.3 index 4b3a20ca..15850b50 100644 --- a/manual/LDP_man-pages/draft/man3/byteorder.3 +++ b/manual/LDP_man-pages/draft/man3/byteorder.3 @@ -39,19 +39,19 @@ .\" Translated 1998-05-18, NAKANO Takeo .\" Updated 2005-11-04, Akihiro MOTOKI .\" -.TH BYTEORDER 3 2014\-04\-08 GNU "Linux Programmer's Manual" +.TH BYTEORDER 3 2017\-09\-15 GNU "Linux Programmer's Manual" .SH 名前 htonl, htons, ntohl, ntohs \- ホストバイトオーダーとネットワークバイトオーダーの間で値を変換する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBuint32_t htonl(uint32_t \fP\fIhostlong\fP\fB);\fP -.sp +.PP \fBuint16_t htons(uint16_t \fP\fIhostshort\fP\fB);\fP -.sp +.PP \fBuint32_t ntohl(uint32_t \fP\fInetlong\fP\fB);\fP -.sp +.PP \fBuint16_t ntohs(uint16_t \fP\fInetshort\fP\fB);\fP .fi .SH 説明 @@ -70,16 +70,26 @@ htonl, htons, ntohl, ntohs \- ホストバイトオーダーとネットワー i80x86 のホストバイトオーダーでは最下位バイトが若いアドレスに配置されるが、 インターネットで用いられるネットワークバイトオーダーでは最上位バイト が先に配置される。 .SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBhtonl\fP(), \fBhtons\fP(), \fBntohl\fP(), \fBntohs\fP() はスレッドセーフである。 +この節で使用されている用語の説明は \fBattributes\fP(7) を参照のこと。 +.TS +allbox; +lbw34 lb lb +l l l. +Interface Attribute Value +T{ +\fBhtonl\fP(), +\fBhtons\fP(), +\fBntohl\fP(), +\fBntohs\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 -POSIX.1\-2001. - +POSIX.1\-2001, POSIX.1\-2008. +.PP いくつかのシステムでは、 \fI\fP の代わりに \fI\fP をインクルードする必要がある。 .SH 関連項目 -\fBendian\fP(3), \fBgethostbyname\fP(3), \fBgetservent\fP(3) +\fBbswap\fP(3), \fBendian\fP(3), \fBgethostbyname\fP(3), \fBgetservent\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/bzero.3 b/manual/LDP_man-pages/draft/man3/bzero.3 deleted file mode 100644 index 1d8826d6..00000000 --- a/manual/LDP_man-pages/draft/man3/bzero.3 +++ /dev/null @@ -1,69 +0,0 @@ -.\" 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 21:28:17 1993 by Rik Faith -.\" Modified Tue Oct 22 23:49:37 1996 by Eric S. Raymond -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Ueyama Rui -.\" all rights reserved. -.\" Translated Tue Feb 21 0:47:30 JST 1997 -.\" by Ueyama Rui -.\" Modified Wed 23 Aug 2000 by NAKANO Takeo -.\" Modified Thu 6 Mar 2003 by Akihiro MOTOKI -.\" -.TH BZERO 3 2013\-10\-22 Linux "Linux Programmer's Manual" -.SH 名前 -bzero \- 値 0 のバイトで埋める -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid bzero(void *\fP\fIs\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBbzero\fP() 関数は バイト列 \fIs\fP から始まる領域の先頭 \fIn\fP バイトを 数値ゼロ (値が \(aq\e0\(aq のバイト) -で埋める。 -.SH 返り値 -なし。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBbzero\fP() 関数はスレッドセーフである。 -.SH 準拠 -4.3BSD. この関数は廃止予定である (POSIX.1\-2001 では 過去の名残 (LEGACY) とされている)。新しいプログラムでは -\fBmemset\fP(3) を使用すべきである。 POSIX.1\-2008 では \fBbzero\fP() の仕様が削除されている。 -.SH 関連項目 -\fBmemset\fP(3), \fBswab\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/cabs.3 b/manual/LDP_man-pages/draft/man3/cabs.3 deleted file mode 100644 index f0621250..00000000 --- a/manual/LDP_man-pages/draft/man3/cabs.3 +++ /dev/null @@ -1,44 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Wed Jul 23 05:04:09 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH CABS 3 2008\-08\-11 "" "Linux Programmer's Manual" -.SH 名前 -cabs, cabsf, cabsl \- 複素数の絶対値 -.SH 書式 -\fB#include \fP -.sp -\fBdouble cabs(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat cabsf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double cabsl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -\fBcabs\fP() 関数は複素数 \fIz\fP の絶対値を返す。 結果は実数である。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 注意 -実際には、この関数は \fIhypot(a,\ b)\fP (\fIsqrt(a*a\ +\ b*b)\fP と等価) へのエイリアスになっている。 -.SH 関連項目 -\fBabs\fP(3), \fBcimag\fP(3), \fBhypot\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/cacos.3 b/manual/LDP_man-pages/draft/man3/cacos.3 deleted file mode 100644 index f6711fe9..00000000 --- a/manual/LDP_man-pages/draft/man3/cacos.3 +++ /dev/null @@ -1,82 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" and Copyright (C) 2011 Michael Kerrisk -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Wed Jul 23 05:24:21 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH CACOS 3 2011\-09\-15 "" "Linux Programmer's Manual" -.SH 名前 -cacos, cacosf, cacosl \- 複素数の逆余弦 (arc cosine) -.SH 書式 -\fB#include \fP -.sp -\fBdouble complex cacos(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex cacosf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex cacosl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -\fBcacos\fP() 関数は複素数 \fIz\fP の逆余弦 (arc cosine) を計算する。 \fIy\ =\ cacos(z)\fP ならば、 \fIz\ =\ ccos(y)\fP が成立する。 \fIy\fP の実部の値は区間 [0,pi] から選択される。 -.LP -次の関係が成立する: -.nf - - cacos(z) = \-i * clog(z + i * csqrt(1 \- z * z)) -.fi -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 例 -.nf -/* "\-lm" でリンクする */ - -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - double complex z, c, f; - double complex i = I; - - if (argc != 3) { - fprintf(stderr, "Usage: %s \en", argv[0]); - exit(EXIT_FAILURE); - } - - z = atof(argv[1]) + atof(argv[2]) * I; - - c = cacos(z); - - printf("cacos() = %6.3f %6.3f*i\en", creal(c), cimag(c)); - - f = \-i * clog(z + i * csqrt(1 \- z * z)); - - printf("formula = %6.3f %6.3f*i\en", creal(f), cimag(f)); - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBccos\fP(3), \fBclog\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/cacosh.3 b/manual/LDP_man-pages/draft/man3/cacosh.3 deleted file mode 100644 index 5c409ce3..00000000 --- a/manual/LDP_man-pages/draft/man3/cacosh.3 +++ /dev/null @@ -1,80 +0,0 @@ -.\" Copyright 2002 Walter Harms(walter.harms@informatik.uni-oldenburg.de) -.\" and Copyright (C) 2011 Michael Kerrisk -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Thu Jul 24 00:26:52 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH CACOSH 3 2011\-09\-15 "" "Linux Programmer's Manual" -.SH 名前 -cacosh, cacoshf, cacoshl \- 複素数の逆双曲線余弦 (arc hyperbolic cosine) -.SH 書式 -\fB#include \fP -.sp -\fBdouble complex cacosh(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex cacoshf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex cacoshl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -\fBcacosh\fP() 関数は複素数 \fIz\fP の逆双曲線余弦 (arc hyperbolic cosine) を計算する。 \fIy\ =\ cacosh(z)\fP ならば、 \fIz\ =\ ccosh(y)\fP が成立する。 \fIy\fP の虚部の値は区間 [\-pi,pi] から選択され、 \fIy\fP -の実部の値は非負の値が選択される。 -.LP -次の関係が成立する: -.nf - - cacosh(z) = 2 * clog(csqrt((z + 1) / 2) + csqrt((z \- 1) / 2)) -.fi -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 例 -.nf -/* "\-lm" でリンクする */ - -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - double complex z, c, f; - - if (argc != 3) { - fprintf(stderr, "Usage: %s \en", argv[0]); - exit(EXIT_FAILURE); - } - - z = atof(argv[1]) + atof(argv[2]) * I; - - c = cacosh(z); - printf("cacosh() = %6.3f %6.3f*i\en", creal(c), cimag(c)); - - f = 2 * clog(csqrt((z + 1)/2) + csqrt((z \- 1)/2)); - printf("formula = %6.3f %6.3f*i\en", creal(f2), cimag(f2)); - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBacosh\fP(3), \fBcabs\fP(3), \fBccosh\fP(3), \fBcimag\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index be7cc826..00000000 --- a/manual/LDP_man-pages/draft/man3/canonicalize_file_name.3 +++ /dev/null @@ -1,70 +0,0 @@ -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved. -.\" Translated 2005-09-06, Akihiro MOTOKI -.\" Updated 2013-05-04, Akihiro MOTOKI -.\" Updated 2013-07-15, Akihiro MOTOKI -.\" -.TH CANONICALIZE_FILE_NAME 3 2013\-05\-11 GNU "Linux Programmer's Manual" -.SH 名前 -canonicalize_file_name \- 正規化された絶対パス名を返す -.SH 書式 -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBchar *canonicalize_file_name(const char *\fP\fIpath\fP\fB);\fP -.SH 説明 -\fBcanonicalize_file_name\fP() 関数は \fIpath\fP -に対応する正規化された絶対パス名を示すヌル終端された文字列を返す。返された文字列では、シンボリックリンクや、パス名に含まれる \fI.\fP や \fI..\fP -は展開される。連続するスラッシュ (\fI/\fP) 文字はスラッシュ一つに置換される。 - -返される文字列は \fBcanonicalize_file_name\fP() により動的に割り当てられる。呼び出し側は、必要なくなった際にはこの文字列を -\fBfree\fP(3) で解放すべきである。 - -\fIcanonicalize_file_name(path)\fP は以下と等価である。 - - realpath(path, NULL); -.SH 返り値 -成功すると、 \fBcanonicalize_file_name\fP() はヌル終端された文字列を返す。エラーの場合 -(例えば、パス名の中に読み込めなかったり存在しないパスが含まれている場合など)、 \fBcanonicalize_file_name\fP() は NULL -を返し、 \fIerrno\fP にエラー内容を示す値を設定する。 -.SH エラー -\fBrealpath\fP(3) 参照。 -.SH 準拠 -この関数は GNU による拡張である。 -.SH 関連項目 -\fBreadlink\fP(2), \fBrealpath\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/carg.3 b/manual/LDP_man-pages/draft/man3/carg.3 deleted file mode 100644 index a7a2f665..00000000 --- a/manual/LDP_man-pages/draft/man3/carg.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2003-07-24, Akihiro MOTOKI -.\" Updated 2005-10-02, Akihiro MOTOKI -.\" -.TH CARG 3 2008\-08\-11 "" "Linux Programmer's Manual" -.SH 名前 -carg, cargf, cargl \- 複素数の偏角を計算する -.SH 書式 -\fB#include \fP -.sp -\fBdouble carg(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat cargf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double cargl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -複素数は 2つの実数値からなる座標で表すことができる。 直交座標を使うと、以下のように書くことができる。 - -.nf - z = x + I * y -.fi - -ここで、\fIx\ =\ creal(z)\fP, \fIy\ =\ cimag(z)\fP である。 -.LP -また、極座標を使うと、以下のように書くことができる。 -.nf - - z = r * cexp(I * a) - -.fi -ここで、 \fIr\ =\ cabs(z)\fP は「半径」、「係数」であり、 \fIz\fP の絶対値である。 \fIa\ =\ carg(z)\fP -は「位相角」であり、 \fIz\fP の偏角である。 -.LP -次の関係が成立する: -.nf - - tan(carg(z)) = cimag(z) / creal(z) -.fi -.SH 返り値 -返り値は [\-pi,pi] の範囲である。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 関連項目 -\fBcabs\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/casin.3 b/manual/LDP_man-pages/draft/man3/casin.3 deleted file mode 100644 index 396682a8..00000000 --- a/manual/LDP_man-pages/draft/man3/casin.3 +++ /dev/null @@ -1,48 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Thu Jul 24 00:07:40 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH CASIN 3 2008\-08\-11 "" "Linux Programmer's Manual" -.SH 名前 -casin, casinf, casinl \- 複素数の逆正弦 (arc sine) -.SH 書式 -\fB#include \fP -.sp -\fBdouble complex casin(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex casinf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex casinl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -\fBcasin\fP() 関数は複素数 \fIz\fP の逆正弦 (arg sine) を計算する。 \fIy\ =\ casin(z)\fP ならば、 \fIz\ =\ csin(y)\fP が成立する。 \fIy\fP の実部の値は区間 [\-pi/2,pi/2] から選択される。 -.LP -次の関係が成立する: -.nf - - casin(z) = \-i clog(iz + csqrt(1 \- z * z)) -.fi -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 関連項目 -\fBclog\fP(3), \fBcsin\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/casinh.3 b/manual/LDP_man-pages/draft/man3/casinh.3 deleted file mode 100644 index 278005cb..00000000 --- a/manual/LDP_man-pages/draft/man3/casinh.3 +++ /dev/null @@ -1,48 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Thu Jul 24 00:41:13 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH CASINH 3 2008\-08\-11 "" "Linux Programmer's Manual" -.SH 名前 -casinh, casinhf, casinhl \- 複素数の逆双曲線正弦 (arc sine hyperbolic) -.SH 書式 -\fB#include \fP -.sp -\fBdouble complex casinh(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex casinhf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex casinhl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -\fBcasinh\fP() 関数は複素数 \fIz\fP の逆双曲線正弦 (arc hyperbolic sine) を計算する。 \fIy\ =\ casinh(z)\fP ならば、 \fIz\ =\ csinh(y)\fP が成立する。 \fIy\fP の虚部の値は区間 [\-pi/2,pi/2] から選択される。 -.LP -次の関係が成立する: -.nf - - casinh(z) = clog(z + csqrt(z * z + 1)) -.fi -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 関連項目 -\fBasinh\fP(3), \fBcabs\fP(3), \fBcimag\fP(3), \fBcsinh\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/catan.3 b/manual/LDP_man-pages/draft/man3/catan.3 deleted file mode 100644 index f7931f2b..00000000 --- a/manual/LDP_man-pages/draft/man3/catan.3 +++ /dev/null @@ -1,82 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" and Copyright (C) 2011 Michael Kerrisk -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Thu Jul 24 00:22:25 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH CATAN 3 2011\-09\-15 "" "Linux Programmer's Manual" -.SH 名前 -catan, catanf, catanl \- 複素数の逆正接 (arc tangent) -.SH 書式 -\fB#include \fP -.sp -\fBdouble complex catan(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex catanf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex catanl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -\fBcatan\fP() 関数は複素数 \fIz\fP の逆正接 (arc tangent) を計算する。 -\fIy = catan(z)\fP ならば、 \fIz = ctan(y)\fP が成立する。 -\fIy\fP の実部の値は区間 [\-pi/2,pi/2] から選択される。 -.LP -次の関係が成立する: -.nf - - catan(z) = (clog(1 + i * z) \- clog(1 \- i * z)) / (2 * i) -.fi -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 例 -.nf -/* "\-lm" でリンクする */ - -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - double complex z, c, f; - double complex i = I; - - if (argc != 3) { - fprintf(stderr, "Usage: %s \en", argv[0]); - exit(EXIT_FAILURE); - } - - z = atof(argv[1]) + atof(argv[2]) * I; - - c = catan(z); - printf("catan() = %6.3f %6.3f*i\en", creal(c), cimag(c)); - - f = (clog(1 + i * z) \- clog(1 \- i * z)) / (2 * i); - printf("formula = %6.3f %6.3f*i\en", creal(f2), cimag(f2)); - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBccos\fP(3), \fBclog\fP(3), \fBctan\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/catanh.3 b/manual/LDP_man-pages/draft/man3/catanh.3 deleted file mode 100644 index cb00155d..00000000 --- a/manual/LDP_man-pages/draft/man3/catanh.3 +++ /dev/null @@ -1,80 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" and Copyright (C) 2011 Michael Kerrisk -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Thu Jul 24 00:43:35 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH CATANH 3 2011\-09\-15 "" "Linux Programmer's Manual" -.SH 名前 -catanh, catanhf, catanhl \- 複素数の逆双曲線正接 (arc tangents hyperbolic) -.SH 書式 -\fB#include \fP -.sp -\fBdouble complex catanh(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex catanhf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex catanhl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -\fBcatanh\fP() 関数は複素数 \fIz\fP の逆双曲線正弦 (arc hyperbolic tangent) を計算する。 \fIy = -catanh(z)\fP ならば、 \fIz = ctanh(y)\fP が成立する。 \fIy\fP の虚部の値は区間 [\-pi/2,pi/2] から選択される。 -.LP -次の関係が成立する: -.nf - - catanh(z) = 0.5 * (clog(1 + z) \- clog(1 \- z)) -.fi -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 例 -.nf -/* "\-lm" でリンクする */ - -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - double complex z, c, f; - - if (argc != 3) { - fprintf(stderr, "Usage: %s \en", argv[0]); - exit(EXIT_FAILURE); - } - - z = atof(argv[1]) + atof(argv[2]) * I; - - c = catanh(z); - printf("catanh() = %6.3f %6.3f*i\en", creal(c), cimag(c)); - - f = 0.5 * (clog(1 + z) \- clog(1 \- z)); - printf("formula = %6.3f %6.3f*i\en", creal(f2), cimag(f2)); - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBatanh\fP(3), \fBcabs\fP(3), \fBcimag\fP(3), \fBctanh\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/catgets.3 b/manual/LDP_man-pages/draft/man3/catgets.3 deleted file mode 100644 index 426a8f35..00000000 --- a/manual/LDP_man-pages/draft/man3/catgets.3 +++ /dev/null @@ -1,74 +0,0 @@ -.\" Copyright 1993 Mitchum DSouza -.\" -.\" %%%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 -.\" -.\" Updated, aeb, 980809 -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Tue Dec 16 19:43:01 JST 1997 -.\" by HIROFUMI Nishizuka -.\" Updated & Modified Mon Mar 1 1999 -.\" by NAKANO Takeo -.\" -.TH CATGETS 3 2014\-06\-13 "" "Linux Programmer's Manual" -.SH 名前 -catgets \- メッセージカタログからメッセージを取り出す -.SH 書式 -.nf -\fB#include \fP - -\fBchar *catgets(nl_catd \fP\fIcatalog\fP\fB, int \fP\fIset_number\fP\fB, int \fP\fImessage_number\fP\fB,\fP -\fB const char *\fP\fImessage\fP\fB);\fP -.fi -.SH 説明 -\fBcatgets\fP() は catalog で指定されたメッセージカタログから、 セット \fIset_number\fP のメッセージ -\fImessage_number\fP を読み取る。 \fIcatalog\fP は、 \fBcatopen\fP(3) の呼び出しによって得られたカタログ -ディスクリプターを指定する。 4番目の引数 \fImessage\fP は、指定のメッセージカタログが現在利用できない 場合に \fBcatgets\fP() -が返すデフォルトのメッセージを指す。 メッセージテキストは内部のバッファー領域に格納されており、 -保存や変更を行う場合にはアプリケーション側でコピーする必要がある。 返される文字列は常にヌルバイト (\(aq\e0\(aq) で終端される。 -.SH 返り値 -.LP -成功した場合、 \fBcatgets\fP() は内部のバッファー領域へのポインターを返す。 ここにはヌル文字で終端されたメッセージ文字列が格納されている。 -失敗した場合は \fImessage\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBcatgets\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fBcatgets\fP() 関数は libc.so.4.4.4c 以降でしか使えない。 Jan 1987 X/Open Portability Guide -では、エラーの時に 返される値により微妙な指定をしている。 \fIcatalog\fP で指定されたメッセージカタログが利用できない場合は -\fImessage\fP を返し、一方メッセージカタログはあるが指定したメッセージがない場合は 空の文字列が返される。 SUSv2 -ではこの二種類のエラーリターンは廃止され、 常に \fImessage\fP を返すことにしたようである。 -.SH 関連項目 -\fBcatopen\fP(3), \fBsetlocale\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/catopen.3 b/manual/LDP_man-pages/draft/man3/catopen.3 deleted file mode 100644 index 8c8ea9b7..00000000 --- a/manual/LDP_man-pages/draft/man3/catopen.3 +++ /dev/null @@ -1,129 +0,0 @@ -.\" Copyright 1993 Mitchum DSouza -.\" -.\" %%%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 Thu Dec 13 22:51:19 2001 by Martin Schulze -.\" Modified 2001-12-14 aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Tue Dec 16 19:43:18 JST 1997 -.\" by HIROFUMI Nishizuka -.\" Updated & Modified Mon Jan 14 06:48:39 JST 2002 -.\" by Yuichi SATO -.\" -.TH CATOPEN 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -catopen, catclose \- メッセージカタログのオープン/クローズ -.SH 書式 -\fB#include \fP -.sp -\fBnl_catd catopen(const char *\fP\fIname\fP\fB, int \fP\fIflag\fP\fB);\fP - -\fBint catclose(nl_catd \fP\fIcatalog\fP\fB);\fP -.SH 説明 -関数 \fBcatopen\fP() はメッセージカタログをオープンし、カタログディスクリプターを返す。 このディスクリプターは \fBcatclose\fP() -または \fBexecve\fP(2) が呼び出されるまで有効である。 カタログディスクリプターを実装するために ファイルディスクリプターを使用すると、 -\fBFD_CLOEXEC\fP フラグが設定される。 -.LP -引き数 \fIname\fP はオープンするメッセージカタログの名前を指定する。 \fIname\fP が絶対パスで指定されている場合 (すなわち -\(aq/\(aq を含んでいる場合)、 \fIname\fP はメッセージカタログへのパス名である。 それ以外の場合、環境変数 \fBNLSPATH\fP が -\fIname\fP とともに使用され \fB%N\fP を置き換える (\fBlocale\fP(7) 参照)。 プロセスが root 権限を持っているときに -\fBNLSPATH\fP が使われるかどうかは指定されていない。 \fBNLSPATH\fP 環境変数が存在しないか、 \fBNLSPATH\fP -で指定されたパスの中の どのパスにおいてもメッセージカタログをオープンできない場合、 実装で定義されているパスが使われる。 後者のデフォルトパスは、 -\fIflag\fP 引き数が \fBNL_CAT_LOCALE\fP の場合には \fBLC_MESSAGES\fP のロケール設定に依存し、 \fIflag\fP 引き数が -0 の場合には \fBLANG\fP 環境変数に依存する。 ロケールの \fBLC_MESSAGES\fP を変更すると、 -オープンされているカタログディスクリプターが無効になるかもしれない。 -.LP -\fBcatopen\fP() の \fIflag\fP 引き数は、使用される言語のソースを示すために使われる。 \fBNL_CAT_LOCALE\fP -に設定されると、 \fBLC_MESSAGES\fP の現在のロケール設定が使われる。 それ以外の場合は \fBLANG\fP 環境変数が使われる。 -.LP -関数 \fBcatclose\fP() は \fIcatalog\fP で指定されたメッセージカタログをクローズする。 これは、以降の \fIcatalog\fP -で指定されるメッセージカタログへの全ての参照を無効にする。 -.SH 返り値 -関数 \fBcatopen\fP() が成功すると、 \fInl_catd\fP 型のメッセージカタログディスクリプターを返す。 失敗した場合は -\fI(nl_catdv) \-1\fP を返し、 \fIerrno\fP を設定してエラーを示す。 ここで起こり得るエラーの値には、 \fBopen\fP(2) -の呼び出しの際に起こり得る全てのエラーの値が含まれる。 -.LP -関数 \fBcatclose\fP() は、成功した場合 0 を、失敗した場合 \-1 を返す。 -.SH 環境変数 -.TP -\fBLC_MESSAGES\fP -\fBLC_MESSAGES\fP ロケール設定のソースになることも可能なので、 \fIflag\fP が \fBNL_CAT_LOCALE\fP -に設定されている場合は、使用する言語を決定するのに使われる。 -.TP -\fBLANG\fP -\fIflag\fP が 0 の場合、使用する言語を決定する。 -.SH 準拠 -.\" In XPG 1987, Vol. 3 it says: -.\" .I "The flag argument of catopen is reserved for future use" -.\" .IR "and should be set to 0" . -.\" -.\" It is unclear what the source was for the constants -.\" .B MCLoadBySet -.\" and -.\" .B MCLoadAll -.\" (see below). -POSIX.1\-2001. -.SH 注意 -.\" (Compare -.\" .B MCLoadAll -.\" below.) -.\" .SS Linux notes -.\" These functions are available for Linux since libc 4.4.4c. -.\" In the case of linux libc4 and libc5, the catalog descriptor -.\" .I nl_catd -.\" is a -.\" .BR mmap (2)'ed -.\" area of memory and not a file descriptor. -.\" The -.\" .I flag -.\" argument to -.\" .BR catopen () -.\" should be either -.\" .B MCLoadBySet -.\" (=0) or -.\" .B MCLoadAll -.\" (=1). -.\" The former value indicates that a set from the catalog is to be -.\" loaded when needed, whereas the latter causes the initial call to -.\" .BR catopen () -.\" to load the entire catalog into memory. -.\" The default search path varies, but usually looks at a number of places below -.\" .I /etc/locale -.\" and -.\" .IR /usr/lib/locale . -以上は POSIX.1\-2001 における説明である。 glibc では \fBNL_CAT_LOCALE\fP の値は 1 である。 -デフォルトのパスは場合によって様々であるが、通常は \fI/usr/share/locale\fP 以下のファイルが調べられる。 -.SH 関連項目 -\fBcatgets\fP(3), \fBsetlocale\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/cbrt.3 b/manual/LDP_man-pages/draft/man3/cbrt.3 deleted file mode 100644 index 7d910826..00000000 --- a/manual/LDP_man-pages/draft/man3/cbrt.3 +++ /dev/null @@ -1,101 +0,0 @@ -.\" Copyright 1995 Jim Van Zandt -.\" -.\" %%%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 `square root' into `cube root' - aeb, 950919 -.\" -.\" Modified 2002-07-27 Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Mon Jan 20 17:29:27 JST 1997 -.\" by YOSHINO Takashi Yoshino -.\" Updated & Modified Fri Jul 25 22:03:54 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2008-09-15, Akihiro MOTOKI -.\" -.TH CBRT 3 2013\-09\-18 GNU "Linux Programmer's Manual" -.SH 名前 -cbrt, cbrtf, cbrtl \- 立方根を計算する関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble cbrt(double \fP\fIx\fP\fB);\fP -.br -\fBfloat cbrtf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double cbrtl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBcbrt\fP(): -.br -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -\fBcbrtf\fP(), \fBcbrtl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOUCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -\fBcbrt\fP() 関数は \fIx\fP の (実数)立方根を返す。 この関数が失敗することはない。なぜなら、 すべての内部表現可能な -(representable) 実数は 必ず内部表現可能な立方根を持つためである。 -.SH 返り値 -これらの関数は \fIx\fP の立方根を返す。 - -\fIx\fP が +0、\-0、正の無限大、負の無限大、NaN のいずれかの場合、 \fIx\fP が返される。 -.SH エラー -エラーは発生しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBcbrt\fP(), \fBcbrtf\fP(), \fBcbrtl\fP() はスレッドセーフである。 -.SH 準拠 -.\" .BR cbrt () -.\" was a GNU extension. It is now a C99 requirement. -C99, POSIX.1\-2001. -.SH 関連項目 -\fBpow\fP(3), \fBsqrt\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ccos.3 b/manual/LDP_man-pages/draft/man3/ccos.3 deleted file mode 100644 index ccf8cae8..00000000 --- a/manual/LDP_man-pages/draft/man3/ccos.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Wed Jul 23 05:24:15 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH CCOS 3 2008\-08\-11 "" "Linux Programmer's Manual" -.SH 名前 -ccos, ccosf, ccosl \- 複素数の余弦 (cosine) -.SH 書式 -\fB#include \fP -.sp -\fBdouble complex ccos(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex ccosf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex ccosl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -複素数の余弦 (cosine) 関数 ccos(z) は以下のように定義される。 -.nf - - ccos(z) = (exp(i * z) + exp(\-i * z)) / 2 -.fi -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 関連項目 -\fBcabs\fP(3), \fBcacos\fP(3), \fBcsin\fP(3), \fBctan\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ccosh.3 b/manual/LDP_man-pages/draft/man3/ccosh.3 index b6fb12d2..d7585d55 100644 --- a/manual/LDP_man-pages/draft/man3/ccosh.3 +++ b/manual/LDP_man-pages/draft/man3/ccosh.3 @@ -15,32 +15,33 @@ .\" Translated Mon Jul 28 23:42:41 JST 2003 .\" by Akihiro MOTOKI .\" -.TH CCOSH 3 2008\-08\-11 "" "Linux Programmer's Manual" +.TH CCOSH 3 2017\-09\-15 "" "Linux Programmer's Manual" .SH 名前 ccosh, ccoshf, ccoshl \- 複素数の双曲線余弦 (hyperbolic cosine) .SH 書式 \fB#include \fP -.sp +.PP \fBdouble complex ccosh(double complex \fP\fIz\fP\fB);\fP .br \fBfloat complex ccoshf(float complex \fP\fIz\fP\fB);\fP .br \fBlong double complex ccoshl(long double complex \fP\fIz\fP\fB);\fP -.sp +.PP \fI\-lm\fP でリンクする。 .SH 説明 +These functions calculate the complex hyperbolic cosine of \fIz\fP. +.PP 複素数の双曲線余弦 (hyperbolic cosine) 関数 ccosh(z) は 以下のように定義される。 +.PP .nf - ccosh(z) = (exp(z)+exp(\-z))/2 .fi .SH バージョン これらの関数は glibc バージョン 2.1 で初めて登場した。 .SH 準拠 -C99. +C99, POSIX.1\-2001, POSIX.1\-2008. .SH 関連項目 \fBcabs\fP(3), \fBcacosh\fP(3), \fBcsinh\fP(3), \fBctanh\fP(3), \fBcomplex\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ceil.3 b/manual/LDP_man-pages/draft/man3/ceil.3 deleted file mode 100644 index 5200d93f..00000000 --- a/manual/LDP_man-pages/draft/man3/ceil.3 +++ /dev/null @@ -1,104 +0,0 @@ -.\" Copyright 2001 Andries Brouwer . -.\" and Copyright 2008, Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Ueyama Rui -.\" all rights reserved. -.\" Translated Tue Feb 21 0:47:30 JST 1997 -.\" by Ueyama Rui -.\" Updated & Modified Fri Jul 6 20:35:28 JST 2001 -.\" by Yuichi SATO -.\" Updated & Modified Sun Jan 9 23:39:35 JST 2005 -.\" by Yuichi SATO -.\" Updated 2008-09-15, Akihiro MOTOKI -.\" -.TH CEIL 3 2013\-06\-21 "" "Linux Programmer's Manual" -.SH 名前 -ceil, ceilf, ceill \- 引き数を下回らない最小の整数値 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble ceil(double \fP\fIx\fP\fB);\fP -.br -\fBfloat ceilf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double ceill(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBceilf\fP(), \fBceill\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -これらの関数は \fIx\fP より小さくない最小の整数値を返す。 - -例えば、 \fIceil(0.5)\fP は 1.0 であり、 \fIceil(\-0.5)\fP は 0.0 である。 -.SH 返り値 -これらの関数は \fIx\fP を下回らない整数値を返す。 - -\fIx\fP が整数、+0、\-0、NaN、無限のいずれかの場合、 \fIx\fP そのものが返される。 -.SH エラー -エラーは発生しない。 POSIX.1\-2001 にはオーバーフローでの範囲エラー (range error) の 記載がある。「注意」の節を参照のこと。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBceil\fP(), \fBceilf\fP(), \fBceill\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠している。 -.SH 注意 -.\" The POSIX.1-2001 APPLICATION USAGE SECTION discusses this point. -SUSv2 と POSIX.1\-2001 にはオーバーフローに関する記述があり、 オーバーフローの場合には、 \fIerrno\fP を \fBERANGE\fP -に設定するか、 \fBFE_OVERFLOW\fP 例外を発生することとされている。 -実際のところ、どの現行のマシンでも結果がオーバーフローを起こすことはないので、 このエラー処理は意味がない。 -(より正確に言うと、オーバーフローは指数部の最大値が 仮数部を表すビットの数より小さい場合にしか起こらない。 IEEE\-754 規格の 32 ビットと -64 ビットの浮動小数では、 指数部の最大値はそれぞれ 128 と 1024 であり、 仮数部のビット数はそれぞれ 24 と 53 である。) - -これらの関数が返す整数値は整数型 (\fIint\fP, \fIlong\fP など) に格納するには大き過ぎるかもしれない。 -オーバーフローが起こった場合の結果は分からないので、 オーバーフローを避けるため、アプリケーションでは整数型に代入する前に -返された値の範囲確認を実行すべきである。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/cexp.3 b/manual/LDP_man-pages/draft/man3/cexp.3 deleted file mode 100644 index 6707bcc0..00000000 --- a/manual/LDP_man-pages/draft/man3/cexp.3 +++ /dev/null @@ -1,48 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Thu Jul 24 02:05:20 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH CEXP 3 2008\-08\-11 "" "Linux Programmer's Manual" -.SH 名前 -cexp, cexpf, cexpl \- 複素数の指数関数 -.SH 書式 -\fB#include \fP -.sp -\fBdouble complex cexp(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex cexpf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex cexpl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -この関数は e (2.71828..., 自然対数の底) の \fIz\fP 乗を計算する。 -.LP -次の関係が成立する: -.nf - - cexp(I * z) = ccos(z) + I * csin(z) -.fi -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 関連項目 -\fBcabs\fP(3), \fBcexp2\fP(3), \fBclog\fP(3), \fBcpow\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/cexp2.3 b/manual/LDP_man-pages/draft/man3/cexp2.3 index 2f7a5ebd..0d09a99f 100644 --- a/manual/LDP_man-pages/draft/man3/cexp2.3 +++ b/manual/LDP_man-pages/draft/man3/cexp2.3 @@ -15,29 +15,28 @@ .\" Translated 2003-07-24, Akihiro MOTOKI .\" Updated 2005-02-24, Akihiro MOTOKI .\" -.TH CEXP2 3 2014\-08\-19 "" "Linux Programmer's Manual" +.TH CEXP2 3 2020\-06\-09 "" "Linux Programmer's Manual" .SH 名前 cexp2, cexp2f, cexp2l \- 複素数の 2 の累乗 .SH 書式 \fB#include \fP -.sp +.PP \fBdouble complex cexp2(double complex \fP\fIz\fP\fB);\fP .br \fBfloat complex cexp2f(float complex \fP\fIz\fP\fB);\fP .br \fBlong double complex cexp2l(long double complex \fP\fIz\fP\fB);\fP -.sp +.PP \fI\-lm\fP でリンクする。 .SH 説明 この関数は 2 の \fIz\fP 乗を返す。 .SH 準拠 これらの関数名は C99 で今後使用するために予約されている。 -.SH 可用性 +.PP .\" But reserved in NAMESPACE. -バージョン 2.19 時点では、glibc にはまだ実装されていない。 +As at version 2.31, these functions are not provided in glibc. .SH 関連項目 \fBcabs\fP(3), \fBcexp\fP(3), \fBclog10\fP(3), \fBcomplex\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/cfree.3 b/manual/LDP_man-pages/draft/man3/cfree.3 deleted file mode 100644 index 111461f6..00000000 --- a/manual/LDP_man-pages/draft/man3/cfree.3 +++ /dev/null @@ -1,97 +0,0 @@ -.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl) -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Mon Jul 19 04:38:03 JST 2004 -.\" by Yuichi SATO -.\" -.TH CFREE 3 2007\-07\-26 "" "Linux Programmer's Manual" -.SH 名前 -cfree \- 割り当てられたメモリーを解放する -.SH 書式 -.nf -.sp -\fB#include \fP -.sp -/* SunOS 4 では */ -\fBint cfree(void *\fP\fIptr\fP\fB);\fP -.sp -/* glibc と FreeBSD libcompat では */ -\fBvoid cfree(void *\fP\fIptr\fP\fB);\fP -.sp -/* SCO OpenServer では */ -\fBvoid cfree(char *\fP\fIptr\fP\fB, unsigned \fP\fInum\fP\fB, unsigned \fP\fIsize\fP\fB);\fP -.sp -/* Solaris watchmalloc.so.1 では */ -\fBvoid cfree(void *\fP\fIptr\fP\fB, size_t \fP\fInelem\fP\fB, size_t \fP\fIelsize\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBcfree\fP(): _BSD_SOURCE || _SVID_SOURCE -.SH 説明 -この関数は決して使用すべきではない。 代わりに \fBfree\fP(3) を使うこと。 -.SS "引き数が 1 つの cfree" -glibc では、関数 \fBcfree\fP() は \fBfree\fP(3) の別名であり、「SunOS との互換性のために追加された」。 -.LP -他のシステムでは、この名前の別の関数がある。 この宣言は \fI\fP に存在する場合もあるし、 -\fI\fP に存在する場合もある。 -.SS "引き数が 3 つの cfree" -SCO と Solaris のいくつかのバージョンでは、 引き数が 3 つの \fBcfree\fP() が含まれる malloc ライブラリがある。 -これは明らかに \fBcalloc\fP(3) に類似している。 -.LP -何かを移植する時にこの関数が必要な場合、 -.sp -.in +4n -#define cfree(p, n, s) free((p)) -.in -.sp -をファイルに追加すること。 -.LP -よく尋ねられる質問は 「\fBcalloc\fP(3) で割り当てられたメモリーを解放するのに \fBfree\fP(3) を使うことができるか、 それとも -\fBcfree\fP() を使う必要があるか」というものである。 答え: \fBfree\fP(3) を使うこと。 -.LP -SCO のマニュアルには以下のように記述されている: 「cfree ルーチンは iBCSe2 規格に従うために提供されており、 単に free -を呼んでいるだけである。 cfree の num と size 引き数は使用されない。」 -.SH 返り値 -SunOS 版の \fBcfree\fP() (\fBfree\fP(3) の別名) は、成功した場合に 1 を返し、失敗した場合に 0 を返す。 -エラーの場合、 \fIerrno\fP が \fBEINVAL\fP に設定される: \fIptr\fP の値が \fBmalloc\fP() 系のルーチンの 1 -つで以前に割り当てられた ブロックへのポインターでない。 -.SH 準拠 -SCO で用いられている引き数が 3 つの \fBcfree\fP() は、iBCSe2 規格: Intel386 Binary Compatibility -Specification, Edition 2 (Intel386 バイナリ互換仕様、第 2 版) に準拠する。 -.SH 関連項目 -\fBmalloc\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/cimag.3 b/manual/LDP_man-pages/draft/man3/cimag.3 deleted file mode 100644 index 1308a75c..00000000 --- a/manual/LDP_man-pages/draft/man3/cimag.3 +++ /dev/null @@ -1,53 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Thu Jul 24 01:37:31 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH CIMAG 3 2013\-06\-21 "" "Linux Programmer's Manual" -.SH 名前 -cimag, cimagf, cimagl \- 複素数の虚部を取得する -.SH 書式 -\fB#include \fP -.sp -\fBdouble cimag(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat cimagf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double cimagl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -\fBcimag\fP() 関数は複素数 \fIz\fP の虚部を返す。 -.LP -次の関係が成立する: -.nf - - z = creal(z) + I * cimag(z) -.fi -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBcimag\fP(), \fBcimagf\fP(), and \fBcimagl\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 注意 -gcc では __imag__ を使うこともできるが、 これは GNU による拡張である。 -.SH 関連項目 -\fBcabs\fP(3), \fBcreal\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/clearenv.3 b/manual/LDP_man-pages/draft/man3/clearenv.3 deleted file mode 100644 index 93061e31..00000000 --- a/manual/LDP_man-pages/draft/man3/clearenv.3 +++ /dev/null @@ -1,84 +0,0 @@ -.\" Copyright 2001 John Levon -.\" -.\" %%%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 -.\" -.\" Additions, aeb, 2001-10-17. -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001-2002 Yuichi SATO -.\" all rights reserved. -.\" Translated Sun Nov 4 22:46:03 JST 2001 -.\" by Yuichi SATO -.\" Updated & Modifined Mon Jul 15 02:10:29 JST 2002 by Yuichi SATO -.\" -.TH CLEARENV 3 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -clearenv \- 環境 (environment) をクリアする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint clearenv(void);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBclearenv\fP(): _SVID_SOURCE || _BSD_SOURCE -.SH 説明 -\fBclearenv\fP() 関数は、名前と値が組になった全ての環境をクリアする。 さらに外部変数 \fIenviron\fP の値を NULL にする。 -.SH 返り値 -.\" Most versions of UNIX return -1 on error, or do not even have errors. -.\" Glibc info and the Watcom C library document "a nonzero value". -\fBclearenv\fP() 関数は、成功した場合は 0 を返し、 失敗した場合は 0 以外を返す。 -.SH バージョン -glibc 2.0 以降で利用可能。 -.SH 準拠 -(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() の追加は否決された。 -.SH 注意 -この関数はセキュリティに考慮したアプリケーションで使われる。 この関数が使用できない場合は、 -.nf - - environ = NULL; - -.fi -というように変数 environ を設定すればよい。 -.LP -.\" .LP -.\" HP-UX has a ENOMEM error return. -DG/UX と Tru64 man ページには次のように記されている: \fIenviron\fP が \fBputenv\fP(3), \fBgetenv\fP(3), -\fBclearenv\fP() 関数以外で変更された場合、 \fBclearenv\fP() はエラーを返し、プロセス環境は変更前のままにされる。 -.SH 関連項目 -\fBgetenv\fP(3), \fBputenv\fP(3), \fBsetenv\fP(3), \fBunsetenv\fP(3), \fBenviron\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/clock.3 b/manual/LDP_man-pages/draft/man3/clock.3 deleted file mode 100644 index 58c0e40d..00000000 --- a/manual/LDP_man-pages/draft/man3/clock.3 +++ /dev/null @@ -1,82 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" -.\" %%%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 21:27:01 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 14 Jun 2002, Michael Kerrisk -.\" Added notes on differences from other UNIX systems with respect to -.\" waited-for children. -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Hiroaki Nagoya -.\" all rights reserved. -.\" Translated Mon Feb 3 15:35:19 JST 1997 -.\" by Hiroaki Nagoya -.\" Updated Fri Sep 27 JST 2002 by Kentaro Shirakata -.\" Updated 2007-05-28, Akihiro MOTOKI , LDP v2.48 -.\" -.TH CLOCK 3 2014\-09\-21 GNU "Linux Programmer's Manual" -.SH 名前 -clock \- プロセッサ時間の取得 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBclock_t clock(void);\fP -.fi -.SH 説明 -\fBclock\fP() はプログラムの使用したプロセッサ時間の近似値を返す。 -.SH 返り値 -返り値は \fIclock_t\fP 単位での CPU 時間である。 秒単位での値を得るためには \fBCLOCKS_PER_SEC\fP で割ればよい。 -使用したプロセッサ時間が得られない場合や、その値を表現できない場合、 この関数は \fI(clock_t)\ \-1\fP を返す。 -.SH 準拠 -C89, C99, POSIX.1\-2001. POSIX は実際の精度にはよらず \fBCLOCKS_PER_SEC\fP が 1000000 -であることを要求している。 -.SH 注意 -C の標準規格ではプログラムの開始の時点ではどんな値が返ってきても かまわない。 移植性を最大限確保するためには、プログラムの開始時に -\fBclock\fP() を呼び出してその値を差し引くこと。 -.PP -時刻は桁あふれする可能性がある点に注意すること。 \fBCLOCKS_PER_SEC\fP が 1000000 である 32 ビットシステムでは、 -この関数は約 72 分毎に同じ値を返すことになる。 -.PP -.\" I have seen this behavior on Irix 6.3, and the OSF/1, HP/UX, and -.\" Solaris manual pages say that clock() also does this on those systems. -.\" POSIX.1-2001 doesn't explicitly allow this, nor is there an -.\" explicit prohibition. -- MTK -実装によっては、 \fBclock\fP() で返される値に \fBwait\fP(2) (あるいはその他の wait のような関数) で収集された -子プロセスの時間が含まれる場合もある。 Linux では、 \fBclock\fP() が返す値には wait された子プロセスの時間は含まれない。 -\fBtimes\fP(2) 関数は呼び出し元とその子プロセスに関する情報を (別々に) 明示的に返すので、より好ましいだろう。 - -glibc 2.17 以前では、 \fBclock\fP() は \fBtimes\fP(2) を使って実装されていた。 glibc 2.18 以降では、 -精度を向上させるため、 \fBclock_gettime\fP(2) (の \fBCLOCK_PROCESS_CPUTIME_ID\fP クロック) -を使って実装されている。 -.SH 関連項目 -\fBclock_gettime\fP(2), \fBgetrusage\fP(2), \fBtimes\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/clock_getcpuclockid.3 b/manual/LDP_man-pages/draft/man3/clock_getcpuclockid.3 deleted file mode 100644 index b650b910..00000000 --- a/manual/LDP_man-pages/draft/man3/clock_getcpuclockid.3 +++ /dev/null @@ -1,139 +0,0 @@ -.\" Copyright (c) 2008, Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2013 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2013-07-31, Akihiro MOTOKI -.\" -.TH CLOCK_GETCPUCLOCKID 3 2013\-07\-04 Linux "Linux Programmer's Manual" -.SH 名前 -clock_getcpuclockid \- プロセスの CPU 時刻のクロック ID を取得する -.SH 書式 -\fB#include \fP -.nf -.sp -\fBint clock_getcpuclockid(pid_t \fP\fIpid\fP\fB, clockid_t *\fP\fIclock_id\fP\fB);\fP -.fi -.sp -\fI\-lrt\fP とリンクする (バージョン 2.17 より前の glibc のみ) -.sp -.ad l -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBclock_getcpuclockid\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _POSIX_C_SOURCE\ >=\ 200112L -.RE -.ad -.SH 説明 -\fBclock_getcpuclockid\fP() 関数は、 プロセス ID が \fIpid\fP のプロセスの CPU 時刻のクロック ID を取得し、 -その ID を \fIclock_id\fP が指す場所に入れて返す。 \fIpid\fP が 0 の場合、 呼び出し元のプロセスの CPU 時刻のクロック ID -が返される。 -.SH 返り値 -成功すると、 \fBclock_getcpuclockid\fP() は 0 を返す。 エラーの場合、 -「エラー」の節のリストにある正のエラー番号のいずれかを返す。 -.SH エラー -.TP -\fBENOSYS\fP -カーネルが他のプロセスのプロセス単位の CPU 時刻のクロックの取得に対応しておらず、 かつ \fIpid\fP が呼び出し元のプロセスを指していなかった。 -.TP -\fBEPERM\fP -呼び出し元プロセスが \fIpid\fP で指定されたプロセスの CPU 時刻のクロックにアクセスする許可を持っていなかった。(POSIX.1\-2001 -では任意のエラーとして規定されている。 カーネルが他のプロセスのプロセス単位の CPU 時刻のクロックの取得に対応していない場合には、 -このエラーは発生しない。) -.TP -\fBESRCH\fP -ID が \fIpid\fP のプロセスが存在しない。 -.SH バージョン -\fBclock_getcpuclockid\fP() 関数は glibc バージョン 2.2 以降で利用可能である。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBclock_getcpuclockid\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fIpid\fP に 0 を指定して \fBclock_getcpuclockid\fP() を呼び出して得られたクロック ID を引き数として -\fBclock_gettime\fP(2) の呼び出すのは、 クロック ID \fBCLOCK_PROCESS_CPUTIME_ID\fP を使って -\fBclock_gettime\fP(2) の呼び出すのと同じである。 -.SH 例 -以下のサンプルプログラムは、 コマンドラインで指定された ID を持つプロセスの CPU 時刻のクロック ID を取得し、 -\fBclock_gettime\fP(2) を使ってそのクロックの時刻を取得する。 以下は実行例である。 -.in +4n -.nf - -$\fB ./a.out 1\fP # Show CPU clock of init process -CPU\-time clock for PID 1 is 2.213466748 seconds -.fi -.in -.SS プログラムのソース -\& -.nf -#define _XOPEN_SOURCE 600 -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - clockid_t clockid; - struct timespec ts; - - if (argc != 2) { - fprintf(stderr, "%s \en", argv[0]); - exit(EXIT_FAILURE); - } - - if (clock_getcpuclockid(atoi(argv[1]), &clockid) != 0) { - perror("clock_getcpuclockid"); - exit(EXIT_FAILURE); - } - - if (clock_gettime(clockid, &ts) == \-1) { - perror("clock_gettime"); - exit(EXIT_FAILURE); - } - - printf("CPU\-time clock for PID %s is %ld.%09ld seconds\en", - argv[1], (long) ts.tv_sec, (long) ts.tv_nsec); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBclock_getres\fP(2), \fBtimer_create\fP(2), \fBpthread_getcpuclockid\fP(3), -\fBtime\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/clog.3 b/manual/LDP_man-pages/draft/man3/clog.3 deleted file mode 100644 index 92339899..00000000 --- a/manual/LDP_man-pages/draft/man3/clog.3 +++ /dev/null @@ -1,51 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Thu Jul 24 01:47:42 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH CLOG 3 2008\-08\-11 "" "Linux Programmer's Manual" -.SH 名前 -clog, clogf, clogl \- 複素数の自然対数 -.SH 書式 -\fB#include \fP -.sp -\fBdouble complex clog(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex clogf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex clogl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -対数 \fBclog\fP() は指数関数 \fBcexp\fP() の逆関数である。 したがって、 \fIy = clog(z)\fP ならば、 \fIz = -cexp(y)\fP が成立する。 \fIy\fP の虚数部の値は区間 [\-pi,pi] から選択される。 -.LP -次の関係が成立する: -.nf - - clog(z) = log(cabs(z)) + I * carg(z) -.fi -.LP -\fIz\fP として 0 に近い値を入れると、オーバーフローを起こすため、 注意が必要である。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 関連項目 -\fBcabs\fP(3), \fBcexp\fP(3), \fBclog10\fP(3), \fBclog2\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/clog10.3 b/manual/LDP_man-pages/draft/man3/clog10.3 deleted file mode 100644 index 5e7d44af..00000000 --- a/manual/LDP_man-pages/draft/man3/clog10.3 +++ /dev/null @@ -1,48 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2003-07-24, Akihiro MOTOKI -.\" Updated 2005-02-26, Akihiro MOTOKI -.\" Updated 2007-01-05, Akihiro MOTOKI, catch up to LDP v2.43 -.\" -.TH CLOG10 3 2008\-08\-11 "" "Linux Programmer's Manual" -.SH 名前 -clog10, clog10f, clog10l \- 底が 10 の複素数の対数 -.SH 書式 -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBdouble complex clog10(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex clog10f(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex clog10l(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -\fIclog10(z)\fP の呼び出しは \fIclog(z)/log(10)\fP と等価である。 他の関数は同じ機能を持つ \fIfloat\fP 版と -\fIlong double\fP 版である。 - -\fIz\fP として 0 に近い値を入れると、オーバーフローを起こすため、 注意が必要である。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -この関数は GNU による拡張である。 C99 では今後のために予約されている。 -.SH 関連項目 -\fBcabs\fP(3), \fBcexp\fP(3), \fBclog\fP(3), \fBclog2\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/clog2.3 b/manual/LDP_man-pages/draft/man3/clog2.3 index 97c3dac9..1093898c 100644 --- a/manual/LDP_man-pages/draft/man3/clog2.3 +++ b/manual/LDP_man-pages/draft/man3/clog2.3 @@ -16,33 +16,32 @@ .\" Updated 2005-02-26, Akihiro MOTOKI .\" Updated 2007-01-05, Akihiro MOTOKI, catch up to LDP v2.43 .\" -.TH CLOG2 3 2014\-08\-19 "" "Linux Programmer's Manual" +.TH CLOG2 3 2020\-06\-09 "" "Linux Programmer's Manual" .SH 名前 clog2, clog2f, clog2l \- 底が 2 の複素数の対数 .SH 書式 \fB#include \fP -.sp +.PP \fBdouble complex clog2(double complex \fP\fIz\fP\fB);\fP .br \fBfloat complex clog2f(float complex \fP\fIz\fP\fB);\fP .br -.\" .sp +.\" .PP .\" Link with \fI\-lm\fP. \fBlong double complex clog2l(long double complex \fP\fIz\fP\fB);\fP .SH 説明 \fIclog2(z)\fP の呼び出しは \fIclog(z)/log(2)\fP と等価である。 - +.PP 他の関数は同じ機能を持つ \fIfloat\fP 版と \fIlong double\fP 版である。 - +.PP \fIz\fP として 0 に近い値を入れると、オーバーフローを起こすため、 注意が必要である。 .SH 準拠 これらの関数名は C99 で今後使用するために予約されている。 -.SH 可用性 +.PP .\" But reserved in NAMESPACE. バージョン 2.19 時点では、glibc にはまだ実装されていない。 .SH 関連項目 \fBcabs\fP(3), \fBcexp\fP(3), \fBclog\fP(3), \fBclog10\fP(3), \fBcomplex\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/closedir.3 b/manual/LDP_man-pages/draft/man3/closedir.3 deleted file mode 100644 index 7119c718..00000000 --- a/manual/LDP_man-pages/draft/man3/closedir.3 +++ /dev/null @@ -1,75 +0,0 @@ -.\" 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 21:25:52 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 11 June 1995 by Andries Brouwer (aeb@cwi.nl) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Mon Jan 20 17:49:23 JST 1997 -.\" by YOSHINO Takashi Yoshino -.\" Updated & Modified Tue Feb 15 04:01:41 JST 2005 -.\" by Yuichi SATO -.\" -.TH CLOSEDIR 3 2008\-09\-23 "" "Linux Programmer's Manual" -.SH 名前 -closedir \- ディレクトリをクローズする -.SH 書式 -.nf -\fB#include \fP -.sp -\fB#include \fP -.sp -\fBint closedir(DIR *\fP\fIdirp\fP\fB);\fP -.fi -.SH 説明 -\fBclosedir\fP() 関数は \fIdirp\fP に関連付けられた ディレクトリストリームをクローズする。 -\fBclosedir\fP() の呼び出しが成功すると、 \fIdirp\fP に関連付けられた -ファイルディスクリプターもクローズされる。 -ディレクトリストリームディスクリプター (directory stream descriptor) \fIdirp\fP は、 -この呼び出しの後では使用することができない。 -.SH 返り値 -\fBclosedir\fP() 関数は成功時に 0 を返す。 エラーの場合は、\-1 が返されて、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEBADF\fP -ディレクトリストリームディスクリプター \fIdirp\fP が無効である。 -.SH 準拠 -SVr4, POSIX.1\-2001, 4.3BSD. -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/cmsg.3 b/manual/LDP_man-pages/draft/man3/cmsg.3 deleted file mode 100644 index 79f526b4..00000000 --- a/manual/LDP_man-pages/draft/man3/cmsg.3 +++ /dev/null @@ -1,160 +0,0 @@ -.\" This man page is Copyright (C) 1999 Andi Kleen . -.\" -.\" %%%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: cmsg.3,v 1.8 2000/12/20 18:10:31 ak Exp $ -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 Shouichi Saito -.\" all rights reserved. -.\" Translated Mon Jul 26 21:58:26 JST 1999 -.\" by Shouichi Saito -.\" Proofed Tue Aug 17 1999 by NAKANO Takeo -.\" -.TH CMSG 3 2014\-12\-31 Linux "Linux Programmer's Manual" -.SH 名前 -CMSG_ALIGN, CMSG_SPACE, CMSG_NXTHDR, CMSG_FIRSTHDR \- 補助データにアクセスする。 -.SH 書式 -\fB#include \fP -.sp -\fBstruct cmsghdr *CMSG_FIRSTHDR(struct msghdr *\fP\fImsgh\fP\fB);\fP -.br -\fBstruct cmsghdr *CMSG_NXTHDR(struct msghdr *\fP\fImsgh\fP\fB, struct cmsghdr -*\fP\fIcmsg\fP\fB);\fP -.br -\fBsize_t CMSG_ALIGN(size_t \fP\fIlength\fP\fB);\fP -.br -\fBsize_t CMSG_SPACE(size_t \fP\fIlength\fP\fB);\fP -.br -\fBsize_t CMSG_LEN(size_t \fP\fIlength\fP\fB);\fP -.br -\fBunsigned char *CMSG_DATA(struct cmsghdr *\fP\fIcmsg\fP\fB);\fP -.sp -.nf -struct cmsghdr { - socklen_t cmsg_len; /* data byte count, including header */ - int cmsg_level; /* originating protocol */ - int cmsg_type; /* protocol\-specific type */ - /* followed by unsigned char cmsg_data[]; */ -}; -.fi -.SH 説明 -これらのマクロは制御メッセージ (補助データ (ancillary data) とも呼ばれる) を作り、 それにアクセスするために使われる。 -制御メッセージはソケットにのるデータではない。 この制御情報は、到着したパケットへのインターフェイス、様々なあまり -使われないヘッダーフィールド、エラー記述の拡張、ファイルデスクリ プタの集合や、UNIXにおける信頼情報 (credential) を含んでいる。 -制御メッセージは、例えば IP オプションのような追加ヘッダーフィールドを 送るのに使う事ができる。 補助データは、 \fBsendmsg\fP(2) -を呼び出して送り、 \fBrecvmsg\fP(2) を呼び出して受け取る。 詳細はそれらのマニュアルページを参照。 -.PP -補助データは \fIstruct cmsghdr\fP 構造体のシーケンスに追加データが付加されたものである。 -このシーケンスにはこのマニュアルページに書かれている マクロを使ってアクセスすべきで、直接アクセスすべきではない。 -使用可能な制御メッセージのタイプについては、 それぞれのプロトコルのマニュアルページを参照のこと。 接続毎の最大補助用バッファーサイズは -\fI/proc/sys/net/core/optmem_max\fP を使って設定できる。 \fBsocket\fP(7) を参照。 -.PP -\fBCMSG_FIRSTHDR\fP() は、渡した \fImsghdr\fP に関連した補助データバッファー中の、最初の \fIcmsghdr\fP -へのポインターを返す。 -.PP -\fBCMSG_NXTHDR\fP() は、渡した \fIcmsghdr\fP の次にくる (有効な) \fIcmsghdr\fP を返す。 -バッファーに十分な空きが無い場合、NULL を返す。 -.PP -\fBCMSG_ALIGN\fP() に長さを与えると、必要なアラインメントを加味した長さを返してくる。 これは定数式である。 -.PP -\fBCMSG_SPACE\fP() は、与えたデータ長が占めるのに必要な補助要素 (ancillary element) の -バイト数を返す。これは定数式である。 -.PP -\fBCMSG_DATA\fP() は、 \fIcmsghdr\fP のデータ部分へのポインターを返す。 -.PP -\fBCMSG_LEN\fP() は、 \fIcmsghdr\fP 構造体の \fIcmsg_len\fP -メンバにデータを格納する際に必要な値を返す。アラインメントも考慮に入れ られる。 引数としてデータ長をとる。これは定数式である。 -.PP -補助データを作るためには最初に \fImsghdr\fP のメンバー \fImsg_controllen\fP を、制御メッセージバッファーの長さで初期化する。 -\fBCMSG_FIRSTHDR\fP() を \fImsghdr\fP に用いると最初の制御メッセージが得られ、 \fBCMSG_NXTHDR\fP() -を使うと次の制御メッセージが得られる。 それぞれの制御メッセージでは、 \fIcmsg_len\fP を初期化する (\fBCMSG_LEN\fP() を使う)。 -その他の \fIcmsghdr\fP ヘッダーフィールド、そしてデータ部分に対しても \fBCMSG_DATA\fP() を使って初期化をする。 最後に -\fImsghdr\fP の \fImsg_controllen\fP フィールドに、バッファー中の制御メッセージの長さの \fBCMSG_SPACE\fP() -の合計がセットされる。 \fImsghdr\fP についての詳細は \fBrecvmsg\fP(2) を参照。 -.PP -制御メッセージバッファーが全てのメッセージを納めるのには短すぎる場合、 \fImsghdr\fP の \fImsg_flags\fP メンバーに -\fBMSG_CTRUNC\fP フラグがセットされる。 -.SH 準拠 -この補助データモデルは、POSIX.1g draft, 4.4BSD\-Lite, RFC\ 2292 に 記述されている IPv6 advanced -API, そして SUSv2 に準拠している。 \fBCMSG_ALIGN\fP() は Linux の拡張である。 -.SH 注意 -移植性のために、補助データへのアクセスには、 ここで述べられているマクロだけを使うべきである。 \fBCMSG_ALIGN\fP() は Linux -での拡張であり、移植性を考えたプログラムでは使うべきではない。 -.PP -Linux では \fBCMSG_LEN\fP(), \fBCMSG_DATA\fP(), \fBCMSG_ALIGN\fP() は定数式である -(それらの引数が定数とみなされる)。 このことは、大域変数のサイズを宣言するのに使える。 しかし移植性はなくなるだろう。 -.SH 例 -次のコードは、受け取った補助バッファーから \fBIP_TTL\fP オプションを探すものである。 -.PP -.in +4n -.nf -struct msghdr msgh; -struct cmsghdr *cmsg; -int *ttlptr; -int received_ttl; - -/* Receive auxiliary data in msgh */ -for (cmsg = CMSG_FIRSTHDR(&msgh); cmsg != NULL; - cmsg = CMSG_NXTHDR(&msgh,cmsg)) { - if (cmsg\->cmsg_level == IPPROTO_IP - && cmsg\->cmsg_type == IP_TTL) { - ttlptr = (int *) CMSG_DATA(cmsg); - received_ttl = *ttlptr; - break; - } -} -if (cmsg == NULL) { - /* - * Error: IP_TTL not enabled or small buffer - * or I/O error. - */ -} -.fi -.in -.PP -以下のコードは、 \fBSCM_RIGHTS\fP を使い、ファイルディスクリプターの配列を UNIX ドメインソケットを通して送るものである。 -.PP -.in +4n -.nf -struct msghdr msg = {0}; -struct cmsghdr *cmsg; -int myfds[NUM_FD]; /* Contains the file descriptors to pass. */ -union { - /* ancillary data buffer, wrapped in a union in order to ensure it is - suitably aligned */ - char buf[CMSG_SPACE(sizeof myfds)]; - struct cmsghdr align; -} u; -int *fdptr; - -msg.msg_control = u.buf; -msg.msg_controllen = sizeof u.buf; -cmsg = CMSG_FIRSTHDR(&msg); -cmsg\->cmsg_level = SOL_SOCKET; -cmsg\->cmsg_type = SCM_RIGHTS; -cmsg\->cmsg_len = CMSG_LEN(sizeof(int) * NUM_FD); -/* Initialize the payload: */ -fdptr = (int *) CMSG_DATA(cmsg); -memcpy(fdptr, myfds, NUM_FD * sizeof(int)); -/* Sum of the length of all control messages in the buffer: */ -msg.msg_controllen = cmsg\->cmsg_len; -.fi -.in -.SH 関連項目 -\fBrecvmsg\fP(2), \fBsendmsg\fP(2) -.PP -RFC\ 2292 -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/confstr.3 b/manual/LDP_man-pages/draft/man3/confstr.3 deleted file mode 100644 index 9a1c4d91..00000000 --- a/manual/LDP_man-pages/draft/man3/confstr.3 +++ /dev/null @@ -1,117 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" -.\" %%%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 19:53:02 1993 by Rik Faith (faith@cs.unc.edu) -.\" FIXME Many more values for 'name' are supported, some of which -.\" are documented under 'info confstr'. -.\" See for the rest. -.\" These should all be added to this page. -.\" See also the POSIX.1-2001 specification of confstr() -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Hiroaki Nagoya -.\" all rights reserved. -.\" Translated by Hiroaki Nagoya -.\" Updated 2005-09-06, Akihiro MOTOKI -.\" Updated 2006-07-20, Akihiro MOTOKI , LDP v2.36 -.\" -.TH CONFSTR 3 2014\-03\-20 GNU "Linux Programmer's Manual" -.SH 名前 -confstr \- コンフィグレーションに依存した文字列変数の取得 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t confstr(int \fP\fIname\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIlen\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBconfstr\fP(): _POSIX_C_SOURCE\ >=\ 2 || _XOPEN_SOURCE -.SH 説明 -\fBconfstr\fP() はコンフィグレーションに依存した文字列変数の値を取得する。 -.PP -引き数 \fIname\fP は、問い合わせ内容を表すシステム変数である。 以下の変数がサポートされている。 -.TP -\fB_CS_GNU_LIBC_VERSION\fP (GNU C library 限定; glibc 2.3.2 以降) -そのシステムの GNU C ライブラリのバージョンを示す文字列 (例えば "glibc 2.3.4")。 -.TP -\fB_CS_GNU_LIBPTHREAD_VERSION\fP (GNU C library 限定; glibc 2.3.2 以降) -その C ライブラリが提供している POSIX 実装を示す文字列 (例えば "NPTL 2.3.4" や "linuxthreads\-0.10")。 -.TP -\fB_CS_PATH\fP -すべての POSIX.2 標準ユーティリティが見つかるような \fBPATH\fP の値。 -.PP -\fIbuf\fP が NULL でなく、かつ \fIlen\fP が 0 でなければ \fBconfstr\fP() は取得 -した文字列の内容を \fIbuf\fP にコピーする。必要ならば長さが \fIlen \- 1\fP -バイトに切り捨てられて、NULL バイト (\(aq\e0\(aq) で終端される。 -末尾が切り捨てられたかどうかを判定するには、 \fBconfstr\fP() の返り値を -\fIlen\fP と比較すればよい。 -.PP -\fIlen\fP が 0 で \fIbuf\fP が NULL ならば、 \fBconfstr\fP() は以下で定義された値 (訳注: -切り捨てる前の、取得した文字列の長さ) を返す。 -.SH 返り値 -\fIname\fP が有効なコンフィギュレーション変数の場合、 \fBconfstr\fP() はその変数の値全体を保持するのに必要であったバイト数を返す -(文字列終端のヌルバイトも含む)。この値は \fIlen\fP より大きいこともある。この場合には、 \fIbuf\fP -に格納された値の末尾が切り詰められたことを意味する。 - -\fIname\fP が有効なコンフィギュレーション変数だが、 変数が値を持っていない場合、 \fBconfstr\fP() は 0 を返す。 \fIname\fP -が有効なコンフィグレーション変数に対応していなければ、 \fBconfstr\fP() は 0 を返し、 \fIerrno\fP に \fBEINVAL\fP -を設定する。 -.SH エラー -.TP -\fBEINVAL\fP -\fIname\fP の値が不正である。 -.SH 準拠 -POSIX.1\-2001. -.SH 例 -次の部分的なコードは、 POSIX.2 システムのユーティリティがあるパス を取得するものである。 -.br -.nf -.in +4n - -char *pathbuf; -size_t n; - -n = confstr(_CS_PATH, NULL, (size_t) 0); -pathbuf = malloc(n); -if (pathbuf == NULL) - abort(); -confstr(_CS_PATH, pathbuf, n); -.in -.fi -.SH 関連項目 -\fBgetconf\fP(1), \fBsh\fP(1), \fBexec\fP(3), \fBfpathconf\fP(3) \fBsysconf\fP(3) -\fBpathconf\fP(3) \fBsystem\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/conj.3 b/manual/LDP_man-pages/draft/man3/conj.3 deleted file mode 100644 index 2daf9461..00000000 --- a/manual/LDP_man-pages/draft/man3/conj.3 +++ /dev/null @@ -1,51 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Thu Jul 24 02:38:18 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH CONJ 3 2013\-06\-21 "" "Linux Programmer's Manual" -.SH 名前 -conj, conjf, conjl \- 複素共役を計算する -.SH 書式 -\fB#include \fP -.sp -\fBdouble complex conj(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex conjf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex conjl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -\fBconj\fP() 関数は \fIz\fP の複素共役を返す。 その値は虚部の符号を反転して得られる。 -.LP -次の関係が成立する: -.nf - - cabs(z) = csqrt(z * conj(z)) -.fi -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBconj\fP(), \fBconjf\fP(), \fBconjl\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBcabs\fP(3), \fBcsqrt\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/copysign.3 b/manual/LDP_man-pages/draft/man3/copysign.3 deleted file mode 100644 index 883d63ae..00000000 --- a/manual/LDP_man-pages/draft/man3/copysign.3 +++ /dev/null @@ -1,99 +0,0 @@ -.\" 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-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-08-10 by Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Hiroaki Nagoya -.\" all rights reserved. -.\" Translated Mon Feb 10 1997 by Hiroaki Nagoya -.\" Updated 2002-08-24 by Akihiro MOTOKI -.\" Updated 2007-06-01, Akihiro MOTOKI, LDP v2.50 -.\" Updated 2008-09-15, Akihiro MOTOKI -.\" -.TH COPYSIGN 3 2013\-10\-14 GNU "Linux Programmer's Manual" -.SH 名前 -copysign, copysignf, copysignl \- 数の符号をコピーする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble copysign(double \fP\fIx\fP\fB, double \fP\fIy\fP\fB);\fP -.br -\fBfloat copysignf(float \fP\fIx\fP\fB, float \fP\fIy\fP\fB);\fP -.br -\fBlong double copysignl(long double \fP\fIx\fP\fB, long double \fP\fIy\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBcopysign\fP(), \fBcopysignf\fP(), \fBcopysignl\fP(): -.RS 4 -_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -関数 \fBcopysign\fP(), \fBcopysignf\fP(), \fBcopysignl\fP() は絶対値が \fIx\fP に等しく、符号ビットが \fIy\fP -に等しい値を返す。 - -例えば、 -\fIcopysign(42.0,\ \-1.0)\fP と \fIcopysign(\-42.0, \-1.0)\fP はどちらも \-42.0 を返す。 -.SH 返り値 -成功すると、これらの関数は、その絶対値は \fIx\fP に等しく、符号は \fIy\fP に等しい値を返す。 - -\fIx\fP が NaN の場合、NaN に \fIy\fP の符号ビットをつけて返す。 -.SH エラー -エラーは発生しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBcopysign\fP(), \fBcopysignf\fP(), \fBcopysignl\fP() はスレッドセーフである。 -.SH 準拠 -.\" 4.3BSD. -C99, POSIX.1\-2001. この関数は IEC 559 で定義されている (また IEEE 754/IEEE 854 -では付録で推奨関数として定義されている)。 -.SH 注意 -浮動小数点形式が IEEE 754 準拠でないアーキテクチャーでは、 これらの関数は負の 0 を正として扱うことがある。 -.SH 関連項目 -\fBsignbit\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/cos.3 b/manual/LDP_man-pages/draft/man3/cos.3 deleted file mode 100644 index 3d64ffc0..00000000 --- a/manual/LDP_man-pages/draft/man3/cos.3 +++ /dev/null @@ -1,110 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kenji Kajiwara and Kentaro Ogawa -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 17:42:24 JST -.\" by Kenji Kajiwara and Kentaro Ogawa -.\" Proof Reading: Takashi Yoshino -.\" Updated Tue Aug 5 23:16:48 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated & Modified Tue Feb 15 04:17:01 JST 2005 -.\" by Yuichi SATO -.\" Updated 2008-09-15, Akihiro MOTOKI -.\" -.TH COS 3 2013\-10\-14 "" "Linux Programmer's Manual" -.SH 名前 -cos, cosf, cosl \- 余弦 (コサイン) 関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble cos(double \fP\fIx\fP\fB);\fP -.br -\fBfloat cosf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double cosl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBcosf\fP(), \fBcosl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBcos\fP() 関数は \fIx\fP の余弦 (コサイン) の値を返す。 \fIx\fP はラジアン単位で指定する。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の余弦を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が正の無限大か負の無限大の場合、 領域エラー (domain error) が発生し、NaN が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が無限大である -\fIerrno\fP に \fBEDOM\fP が設定される (「バグ」の節も参照)。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) -が上がる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBcos\fP(), \fBcosf\fP(), \fBcosl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD にも準拠している。 -.SH バグ -.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6780 -バージョン 2.10 より前の glibc の実装では、 領域エラーが発生した際に、 \fIerrno\fP に \fBEDOM\fP が設定されなかった。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/cosh.3 b/manual/LDP_man-pages/draft/man3/cosh.3 deleted file mode 100644 index e52213a6..00000000 --- a/manual/LDP_man-pages/draft/man3/cosh.3 +++ /dev/null @@ -1,115 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 1996-06-08 by aeb -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kenji Kajiwara and Kentaro Ogawa -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 17:54:30 JST -.\" by Kenji Kajiwara and Kentaro Ogawa -.\" Updated Tue Aug 5 23:16:48 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated & Modified Tue Feb 15 04:28:36 JST 2005 -.\" by Yuichi SATO -.\" Updated 2008-09-15, Akihiro MOTOKI -.\" -.TH COSH 3 2010\-09\-20 "" "Linux Programmer's Manual" -.SH 名前 -cosh, coshf, coshl \- 双曲線余弦 (ハイパボリックコサイン) 関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble cosh(double \fP\fIx\fP\fB);\fP -.br -\fBfloat coshf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double coshl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBcoshf\fP(), \fBcoshl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBcosh\fP() 関数は双曲線余弦 (ハイパボリックコサイン) の値を返す。 数学的には以下のように定義される. -.nf - - cosh(x) = (exp(x) + exp(\-x)) / 2 -.fi -.SH 返り値 -成功すると、これらの関数は \fIx\fP の双曲線余弦を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が +0 か \-0 の場合、1 が返される。 - -\fIx\fP が正の無限大か負の無限大の場合、正の無限大が返される。 - -結果がオーバーフローする場合、範囲エラーが発生し、 各関数はそれぞれ +\fBHUGE_VAL\fP, +\fBHUGE_VALF\fP, -+\fBHUGE_VALL\fP を返す。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -範囲エラー (range error): 結果のオーバーフロー -\fIerrno\fP に \fBERANGE\fP が設定される。 オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD にも準拠している。 -.SH バグ -glibc バージョン 2.3.4 以前では、オーバーフローが発生したときに、 オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) -が上がらなかった。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/cpow.3 b/manual/LDP_man-pages/draft/man3/cpow.3 deleted file mode 100644 index e82acadf..00000000 --- a/manual/LDP_man-pages/draft/man3/cpow.3 +++ /dev/null @@ -1,44 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2003-09-02, Akihiro MOTOKI -.\" -.TH CPOW 3 2008\-08\-11 "" "Linux Programmer's Manual" -.SH 名前 -cpow, cpowf, cpowl \- 複素数の累乗関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble complex cpow(double complex \fP\fIx\fP\fB, complex double \fP\fIz\fP\fB);\fP -.br -\fBfloat complex cpowf(float complex \fP\fIx\fP\fB, complex float \fP\fIz\fP\fB);\fP -.br -\fBlong double complex cpowl(long double complex \fP\fIx\fP\fB,\fP -\fB complex long double \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.fi -.SH 説明 -この関数は \fIx\fP の \fIz\fP 乗を計算する (実軸の負の部分に沿って \fIx\fP の分枝切断 (branch cut) がある)。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 関連項目 -\fBcabs\fP(3), \fBpow\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/cproj.3 b/manual/LDP_man-pages/draft/man3/cproj.3 deleted file mode 100644 index 91b6f894..00000000 --- a/manual/LDP_man-pages/draft/man3/cproj.3 +++ /dev/null @@ -1,50 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2003-07-24, Akihiro MOTOKI -.\" Updated 2005-02-21, Akihiro MOTOKI -.\" -.TH CPROJ 3 2013\-09\-18 "" "Linux Programmer's Manual" -.SH 名前 -cproj, cprojf, cprojl \- リーマン球面への射影 -.SH 書式 -\fB#include \fP -.sp -\fBdouble complex cproj(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex cprojf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex cprojl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -これらの関数は、平面上の点をリーマン球の表面に射影する、つまり 複素平面の一つの軸へのコンパクト化 (one\-point -compactification) を行う。 有限な点 \fIz\fP はいずれも \fIz\fP 自身へ射影される。 -無限の値を持つ全ての複素数は、一つの無限値に射影される。 もっと詳しく言うと、実数軸の正の無限大に射影される。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBcproj\fP(), \fBcprojf\fP(), \fBcprojl\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 注意 -.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=10401 -バージョン 2.11 以前の glibc の実装は違った動作 (リーマン球面への「立体」写像) を行う。 -.SH 関連項目 -\fBcabs\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/creal.3 b/manual/LDP_man-pages/draft/man3/creal.3 deleted file mode 100644 index a4ad0bcf..00000000 --- a/manual/LDP_man-pages/draft/man3/creal.3 +++ /dev/null @@ -1,53 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Thu Jul 24 01:33:13 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH CREAL 3 2013\-09\-18 "" "Linux Programmer's Manual" -.SH 名前 -creal, crealf, creall \- 複素数の実部を取得する -.SH 書式 -\fB#include \fP -.sp -\fBdouble creal(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat crealf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double creall(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -\fBcreal\fP() 関数は複素数 \fIz\fP の実部を返す。 -.LP -次の関係が成立する: -.nf - - z = creal(z) + I * cimag(z) -.fi -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBcreal\fP(), \fBcrealf\fP(), \fBcreall\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 注意 -gcc では __real__ を使うこともできるが、 これは GNU による拡張である。 -.SH 関連項目 -\fBcabs\fP(3), \fBcimag\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/crypt.3 b/manual/LDP_man-pages/draft/man3/crypt.3 deleted file mode 100644 index 6081d98e..00000000 --- a/manual/LDP_man-pages/draft/man3/crypt.3 +++ /dev/null @@ -1,202 +0,0 @@ -.\" Michael Haardt (michael@cantor.informatik.rwth.aachen.de) -.\" Sat Sep 3 22:00:30 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Sun Feb 19 21:32:25 1995, faith@cs.unc.edu edited details away -.\" -.\" TO DO: This manual page should go more into detail how DES is perturbed, -.\" which string will be encrypted, and what determines the repetition factor. -.\" Is a simple repetition using ECB used, or something more advanced? I hope -.\" the presented explanations are at least better than nothing, but by no -.\" means enough. -.\" -.\" added _XOPEN_SOURCE, aeb, 970705 -.\" added GNU MD5 stuff, aeb, 011223 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 Hiroaki Nagoya and MAEHARA Kouichi all rights reserved. -.\" Translated Sun Sep 27 JST 1998 by Hiroaki Nagoya and MAEHARA Kouichi -.\" Updated 2002-01-19 by Kentaro Shirakata -.\" Updated 2007-01-01 by Kentaro Shirakata -.\" Updated 2008-07-30 by Kentaro Shirakata -.\" Updated 2009-09-28 by Kentaro Shirakata -.\" -.TH CRYPT 3 2014\-02\-26 "" "Linux Programmer's Manual" -.SH 名前 -crypt, crypt_r \- パスワードとデータの暗号化 -.SH 書式 -.nf -\fB#define _XOPEN_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBchar *crypt(const char *\fP\fIkey\fP\fB, const char *\fP\fIsalt\fP\fB);\fP -.sp -\fB#define _GNU_SOURCE\fP /* See feature_test_macros(7) */ -.br -\fB#include \fP -.sp -\fBchar *crypt_r(const char *\fP\fIkey\fP\fB, const char *\fP\fIsalt\fP\fB,\fP -\fB struct crypt_data *\fP\fIdata\fP\fB);\fP -.fi -.sp -\fI\-lcrypt\fP でリンクする。 -.SH 説明 -\fBcrypt\fP() はパスワード暗号化関数である。 鍵探索のハードウェアによる実装を妨げるように(その他にもいろいろ) 変更した Data -Encryption Standard アルゴリズムを元にしている。 -.PP -\fIkey\fP はユーザーが入力するパスワードである。 -.PP -\fIsalt\fP は集合 [\fBa\-zA\-Z0\-9./\fP] から選ばれた 2 文字の文字列である。 この文字列はアルゴリズムの出力を 4096 -通りにかき乱すのに使われる。 -.PP -\fIkey\fP の最初の 8 文字の各文字から下位 7 ビットをとって 56 ビットの鍵が得られる。 この 56 ビットの鍵は特定の文字列(ふつうはすべて -0 の文字列) を繰り返し暗号化するのに用いられる。 返り値は暗号化されたパスワードへのポインターで、13 の印字可能な ASCII 文字 -からなる(最初の 2 文字は salt そのもの)。 返り値は、関数呼出しのたびに上書きされる静的なデータへのポインターである。 -.PP -警告: 鍵空間は -.if t 2\s-2\u56\s0\d -.if n 2**56 -= 7.2e16 の可能な値から成る。 この鍵空間の全探索は強力な並列計算機を使えば可能である。また \fBcrack\fP(1) -のようなソフトウェアはこの鍵空間の中で、多くの人にパスワードとして 使われるような鍵についての全探索が可能である。 -それゆえ、パスワードを選択するときには、すくなくとも、 一般的に使われる単語と名前は避けるべきである。 \fBpasswd\fP(1) -を使う時にはクラックされうるパスワードについての検査をすることが 推奨される。 -.PP -DES アルゴリズムにはいくつかの癖があり、それによってパスワード認証以外に \fBcrypt\fP() を使うのはたいへんよくない選択となっている。もし -\fBcrypt\fP() を暗号プロジェクトに使おうという案をもっているならば、それはやめたほうが よい。暗号化についてのよい本と誰でも入手できる DES -ライブラリのひとつを 手にいれるべきだ。 - -\fBcrypt_r\fP() は \fBcrypt\fP() の再入可能版である。 \fIdata\fP で示される構造体は結果データの保存と情報の管理に使われる。 -この構造体に対して(メモリーを割り当てること以外に)呼び出し元がするべき唯一の ことは、 \fBcrypt_r\fP() の初回の呼び出しの前に -\fIdata\->initialized\fP をゼロにすることだけである。 -.SH 返り値 -成功の場合には、暗号化されたパスワードへのポインターが返される。 エラーの場合には NULL が返される。 -.SH エラー -.TP -\fBEINVAL\fP -\fIsalt\fP が間違ったフォーマットである。 -.TP -\fB -.TP -\fBENOSYS\fP -.\" This level of detail is not necessary in this man page. . . -.\" .PP -.\" When encrypting a plain text P using DES with the key K results in the -.\" encrypted text C, then the complementary plain text P' being encrypted -.\" using the complementary key K' will result in the complementary encrypted -.\" text C'. -.\" .PP -.\" Weak keys are keys which stay invariant under the DES key transformation. -.\" The four known weak keys 0101010101010101, fefefefefefefefe, -.\" 1f1f1f1f0e0e0e0e and e0e0e0e0f1f1f1f1 must be avoided. -.\" .PP -.\" There are six known half weak key pairs, which keys lead to the same -.\" encrypted data. Keys which are part of such key clusters should be -.\" avoided. -.\" Sorry, I could not find out what they are. -.\"" -.\" .PP -.\" Heavily redundant data causes trouble with DES encryption, when used in the -.\" .I codebook -.\" mode that -.\" .BR crypt () -.\" implements. The -.\" .BR crypt () -.\" interface should be used only for its intended purpose of password -.\" verification, and should not be used as part of a data encryption tool. -.\" .PP -.\" The first and last three output bits of the fourth S-box can be -.\" represented as function of their input bits. Empiric studies have -.\" shown that S-boxes partially compute the same output for similar input. -.\" It is suspected that this may contain a back door which could allow the -.\" NSA to decrypt DES encrypted data. -.\" .PP -.\" Making encrypted data computed using crypt() publicly available has -.\" to be considered insecure for the given reasons. -\fBcrypt\fP() 関数が実装されていない。多分アメリカの輸出規制のために。 -.TP -\fBEPERM\fP -\fI/proc/sys/crypto/fips_enabled\fP が 0 でない値で、 DES などの弱い暗号タイプを利用しようとした。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBcrypt\fP() 関数はスレッドセーフではない。 -.LP -\fBcrypt_r\fP() 関数はスレッドセーフである。 -.SH 準拠 -\fBcrypt\fP(): SVr4, 4.3BSD, POSIX.1\-2001. \fBcrypt_r\fP() は GNU 拡張である。 -.SH 注意 -.SS "glibc での注意" -この関数の glibc2 版は追加の暗号化アルゴリズムに対応している。 - -もし \fIsalt\fP の文字列が "$\fIid\fP$" で始まっていて、"$" で終わっている文字列が 続いている場合: -.RS - -$\fIid\fP$\fIsalt\fP$\fIencrypted\fP - -.RE -DES を使う代わりに、 \fIid\fP で使用する暗号化手法を識別し、これがパスワード文字列の残りの部分を解釈する 方法を決定する。 \fIid\fP -の値として、以下の値に対応している: -.RS -.TS -l l. -ID | Method -_ -1 | MD5 -2a | Blowfish (本流の glibc には入っていない; - | いくつかの Linux ディストリビューションで追加されている) -.\" openSUSE has Blowfish, but AFAICS, this option is not supported -.\" natively by glibc -- mtk, Jul 08 -.\" -.\" md5 | Sun MD5 -.\" glibc doesn't appear to natively support Sun MD5; I don't know -.\" if any distros add the support. -5 | SHA\-256 (glibc 2.7 以降) -6 | SHA\-512 (glibc 2.7 以降) -.TE -.RE - -従って、$5$\fIsalt\fP$\fIencrypted\fP は SHA\-256 でエンコードされた -パスワードであり、$6$\fIsalt\fP$\fIencrypted\fP は SHA\-512 で エンコードされたパスワードである。 - -"\fIsalt\fP" は salt における "$\fIid\fP$" に引き続く 16 文字以下の 文字列である。 -パスワード文字列の暗号化部分は実際に計算されたパスワードである。 この文字列のサイズは固定である: -.TS -l l. -MD5 | 22 characters -SHA\-256 | 43 characters -SHA\-512 | 86 characters -.TE - -"\fIsalt\fP" と "\fIencrypted\fP" の文字は [\fBa\-zA\-Z0\-9./\fP] の集合から 選ばれる。 MD5 と SHA -の実装では、 \fIkey\fP 全体が意味がある (DES の場合には最初の 8 文字だけに意味がある)。 -.SH 関連項目 -\fBlogin\fP(1), \fBpasswd\fP(1), \fBencrypt\fP(3), \fBgetpass\fP(3), \fBpasswd\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/csin.3 b/manual/LDP_man-pages/draft/man3/csin.3 deleted file mode 100644 index 679b54c0..00000000 --- a/manual/LDP_man-pages/draft/man3/csin.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Wed Jul 23 05:24:36 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH CSIN 3 2008\-08\-11 "" "Linux Programmer's Manual" -.SH 名前 -csin, csinf, csinl \- 複素数の正弦 (sine) -.SH 書式 -\fB#include \fP -.sp -\fBdouble complex csin(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex csinf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex csinl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -複素数の正弦 (sine) 関数 csin(z) は以下のように定義される。 -.nf - - csin(z) = (exp(i * z) \- exp(\-i * z)) / (2 * i) -.fi -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 関連項目 -\fBcabs\fP(3), \fBcasin\fP(3), \fBccos\fP(3), \fBctan\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/csinh.3 b/manual/LDP_man-pages/draft/man3/csinh.3 deleted file mode 100644 index c8d0ca33..00000000 --- a/manual/LDP_man-pages/draft/man3/csinh.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Wed Jul 23 05:54:24 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH CSINH 3 2008\-08\-11 "" "Linux Programmer's Manual" -.SH 名前 -csinh, csinhf, csinhl \- 複素数の双曲線正弦 (hyperbolic sine) -.SH 書式 -\fB#include \fP -.sp -\fBdouble complex csinh(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex csinhf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex csinhl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -複素数の双曲線正弦 (hyperbolic sine) 関数 sinh(z) は以下のように定義される。 -.nf - - csinh(z) = (exp(z)\-exp(\-z))/2 -.fi -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 関連項目 -\fBcabs\fP(3), \fBcasinh\fP(3), \fBccosh\fP(3), \fBctanh\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/csqrt.3 b/manual/LDP_man-pages/draft/man3/csqrt.3 deleted file mode 100644 index 4fb6ef60..00000000 --- a/manual/LDP_man-pages/draft/man3/csqrt.3 +++ /dev/null @@ -1,44 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Thu Jul 24 00:47:23 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH CSQRT 3 2008\-08\-11 "" "Linux Programmer's Manual" -.SH 名前 -csqrt, csqrtf, csqrtl \- 複素数の平方根 -.SH 書式 -\fB#include \fP -.sp -\fBdouble complex csqrt(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex csqrtf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex csqrtl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -与えられた複素数の平方根を計算する。 但し、平方根のうち実数部が非負の値を返す。 実軸の負の部分に沿って分枝切断 (branch cut) がある。 -(つまり、 \fIeps\fP を小さな正の実数とした場合、 \fIcsqrt(\-1+eps*I)\fP が I に近付いていき、 一方 -\fIcsqrt(\-1\-eps*I)\fP は \-I に近付いていく、 ということである。) -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 関連項目 -\fBcabs\fP(3), \fBcexp\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ctan.3 b/manual/LDP_man-pages/draft/man3/ctan.3 deleted file mode 100644 index 6bc12db3..00000000 --- a/manual/LDP_man-pages/draft/man3/ctan.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2003-07-23, Akihiro MOTOKI -.\" Updated 2005-02-21, Akihiro MOTOKI -.\" -.TH CTAN 3 2008\-08\-11 "" "Linux Programmer's Manual" -.SH 名前 -ctan, ctanf, ctanl \- 複素数の正接 (tangent) 関数 -.SH 書式 -\fB#include \fP -.sp -\fBdouble complex ctan(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex ctanf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex ctanl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -複素数の正接 (tangent) 関数 ctan(z) は以下のように定義される。 -.nf - - ctan(z) = csin(z) / ccos(z) -.fi -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 関連項目 -\fBcabs\fP(3), \fBcatan\fP(3), \fBccos\fP(3), \fBcsin\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ctanh.3 b/manual/LDP_man-pages/draft/man3/ctanh.3 deleted file mode 100644 index b5ba6e9c..00000000 --- a/manual/LDP_man-pages/draft/man3/ctanh.3 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2003-07-23, Akihiro MOTOKI -.\" Updated 2005-02-21, Akihiro MOTOKI -.\" -.TH CTANH 3 2008\-08\-11 "" "Linux Programmer's Manual" -.SH 名前 -ctanh, ctanhf, ctanhl \- 複素数の双曲線正接 (hyperbolic tangent) -.SH 書式 -\fB#include \fP -.sp -\fBdouble complex ctanh(double complex \fP\fIz\fP\fB);\fP -.br -\fBfloat complex ctanhf(float complex \fP\fIz\fP\fB);\fP -.br -\fBlong double complex ctanhl(long double complex \fP\fIz\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -複素数の双曲線正接 (hyperbolic tangent) 関数は以下のように定義される。 -.nf - - ctanh(z) = csinh(z) / ccosh(z) -.fi -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99. -.SH 関連項目 -\fBcabs\fP(3), \fBcatanh\fP(3), \fBccosh\fP(3), \fBcsinh\fP(3), \fBcomplex\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ctermid.3 b/manual/LDP_man-pages/draft/man3/ctermid.3 deleted file mode 100644 index 71f98730..00000000 --- a/manual/LDP_man-pages/draft/man3/ctermid.3 +++ /dev/null @@ -1,76 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" -.\" %%%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 19:51:06 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Hiroaki Nagoya -.\" all rights reserved. -.\" Translated Mon Feb 10 1997 by Hiroaki Nagoya -.\" -.TH CTERMID 3 2013\-07\-04 GNU "Linux Programmer's Manual" -.SH 名前 -ctermid \- 制御端末名の取得 -.SH 書式 -.nf -.\" POSIX also requires this function to be declared in , -.\" and glibc does so if suitable feature test macros are defined. -\fB#include \fP -.sp -\fBchar *ctermid(char *\fP\fIs\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.\" From : _XOPEN_SOURCE -\fBctermid\fP(): _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE -.SH 説明 -\fBctermid\fP() はプロセスの現在の制御端末のパス名を返す。 \fIs\fP が NULL の場合、静的なバッファーを用いる。それ以外の場合、 -\fIs\fP は端末パス名を保持するのに使用されるバッファーへのポインターとなる。 シンボル定数 \fBL_ctermid\fP -は返されるパス名の最大文字数である。 -.SH 返り値 -パス名へのポインター。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBctermid\fP() 関数は例外付きでスレッドセーフである。 NULL パラメーターで呼び出された場合はスレッドセーフではない。 -.SH 準拠 -SVr4, POSIX.1\-2001. -.SH バグ -返されたパスはたぶん制御端末を一意には特定できない。 たとえば \fI/dev/tty\fP のように。 -.PP -.\" in glibc 2.3.x, x >= 4, the glibc headers threw an error -.\" if ctermid() was given an argument; fixed in 2.4. -プログラムが端末をオープンできることは保証されていない。 -.SH 関連項目 -\fBttyname\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ctime.3 b/manual/LDP_man-pages/draft/man3/ctime.3 deleted file mode 100644 index 9b25c3b2..00000000 --- a/manual/LDP_man-pages/draft/man3/ctime.3 +++ /dev/null @@ -1,230 +0,0 @@ -.\" 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 19:49:27 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Fri Apr 26 12:38:55 MET DST 1996 by Martin Schulze (joey@linux.de) -.\" Modified 2001-11-13, aeb -.\" Modified 2001-12-13, joey, aeb -.\" Modified 2004-11-16, mtk -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Hiroaki Nagoya -.\" all rights reserved. -.\" Translated 1997-02-10, Hiroaki Nagoya -.\" Updated 1999-09-01, Kentaro Shirakata -.\" Updated 2001-10-15, Kentaro Shirakata -.\" Updated 2001-12-13, Kentaro Shirakata -.\" Updated 2002-01-03, Kentaro Shirakata -.\" Updated 2005-02-24, Akihiro MOTOKI -.\" Updated 2008-04-04, Akihiro MOTOKI , LDP v2.79 -.\" Updated 2008-08-08, Akihiro MOTOKI , LDP v3.05 -.\" Updated 2008-11-10, Akihiro MOTOKI , LDP v3.13 -.\" -.TH CTIME 3 2014\-08\-19 "" "Linux Programmer's Manual" -.SH 名前 -asctime, ctime, gmtime, localtime, mktime, asctime_r, ctime_r, gmtime_r, -localtime_r \- 日付と時刻を要素別の時刻や ASCII に変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *asctime(const struct tm *\fP\fItm\fP\fB);\fP -.br -\fBchar *asctime_r(const struct tm *\fP\fItm\fP\fB, char *\fP\fIbuf\fP\fB);\fP -.sp -\fBchar *ctime(const time_t *\fP\fItimep\fP\fB);\fP -.br -\fBchar *ctime_r(const time_t *\fP\fItimep\fP\fB, char *\fP\fIbuf\fP\fB);\fP -.sp -\fBstruct tm *gmtime(const time_t *\fP\fItimep\fP\fB);\fP -.br -\fBstruct tm *gmtime_r(const time_t *\fP\fItimep\fP\fB, struct tm *\fP\fIresult\fP\fB);\fP -.sp -\fBstruct tm *localtime(const time_t *\fP\fItimep\fP\fB);\fP -.br -\fBstruct tm *localtime_r(const time_t *\fP\fItimep\fP\fB, struct tm *\fP\fIresult\fP\fB);\fP -.sp -\fBtime_t mktime(struct tm *\fP\fItm\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.ad l -.sp -\fBasctime_r\fP(), \fBctime_r\fP(), \fBgmtime_r\fP(), \fBlocaltime_r\fP(): -.RS -_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE -|| _POSIX_SOURCE -.RE -.ad -.SH 説明 -関数 \fBctime\fP(), \fBgmtime\fP(), \fBlocaltime\fP() は \fItime_t\fP 型のカレンダー時刻を引き数にとる。 -引き数が絶対値として解釈される場合は、時刻紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC)) -からの経過秒数と解釈される。 -.PP -関数 \fBasctime\fP() と \fBmktime\fP() は 年・月・日などに分離された要素別の時刻を引き数とする。 -.PP -要素別の時刻は \fI\fP で以下のように定義されている \fItm\fP 構造体に保持される。 -.sp -.in +4n -.nf -struct tm { - int tm_sec; /* 秒 (0\-60) */ - int tm_min; /* 分 (0\-59) */ - int tm_hour; /* 時間 (0\-23) */ - int tm_mday; /* 月内の日付 (1\-31) */ - int tm_mon; /* 月 (0\-11) */ - int tm_year; /* å¹´ \- 1900 */ - int tm_wday; /* 曜日 (0\-6, 日曜 = 0) */ - int tm_yday; /* 年内通算日 (0\-365, 1 月 1 日 = 0) */ - int tm_isdst; /* 夏時間 */ -}; -.fi -.in -.PP -\fItm\fP 構造体のメンバーは以下の通り: -.TP 10 -\fItm_sec\fP -秒数、ふつうは 0 から 59 までの値、 しかし閏秒のため 60 までの値は許される。 -.TP -\fItm_min\fP -分数、0 から 59 までの値。 -.TP -\fItm_hour\fP -真夜中からの通算時間、0 から 23 までの値。 -.TP -\fItm_mday\fP -月はじめからの日数、1 から 31 までの値。 -.TP -\fItm_mon\fP -1月からの通算月数、0 から 11 までの値。 -.TP -\fItm_year\fP -1900 年からの通算年数。 -.TP -\fItm_wday\fP -日曜日からの通算日数(曜日)。0 から 6 までの値。 -.TP -\fItm_yday\fP -1 月 1 日からの通算日数、0 から 365 までの値。 -.TP -\fItm_isdst\fP -夏時間が有効かどうかのフラグ。 正の値ならば夏時間は有効になり、0 ならば無効、負の値ならばこの情報には 意味がない。 -.PP -\fBctime(\fP\fIt\fP\fB)\fP 関数は、 \fBasctime(localtime(\fP\fIt\fP\fB))\fP と等価である。 カレンダー時刻 \fIt\fP を -.sp -.RS -"Wed Jun 30 21:49:08 1993\en" -.RE -.sp -という形式のヌル終端された文字列へ変換する。 曜日の略称は "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", -"Sat" である。 月の略称は "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", -"Sep", "Oct", "Nov", "Dec" である。 返り値は、静的 (static) に割り当てられた文字列へのポインターである。 -この文字列は、日付・時刻関数のいずれかが呼び出されると上書きされることがある。 またこの関数は大域変数 \fItzname\fP, \fItimezone\fP, -\fIdaylight\fP に現在のタイムゾーンの情報を設定する (\fBtzset\fP(3) 参照)。 リエントラント版である \fBctime_r\fP() -も同様だが、 文字列はユーザーが用意したバッファーに格納される。バッファーのサイズは 少なくとも 26 バイト以上でなければならない。 この関数は -\fItzname\fP, \fItimezone\fP, and \fIdaylight\fP を設定する必要はない。 -.PP -関数 \fBgmtime\fP() は、カレンダー時刻 \fItimep\fP を 協定世界時 (UTC) での要素別の時刻へ変換する。 -年が整数型に収まらない場合、NULL を返す。 返り値は静的に確保された構造体を指しており、この後で 日付や時刻に関する関数のいずれかが呼び出されると -上書きされる可能性がある。 \fBgmtime_r\fP() も同様だが、 データはユーザーが用意した構造体に格納される。 -.PP -関数 \fBlocaltime\fP() は、カレンダー時刻 \fItimep\fP を ユーザーが指定したタイムゾーンでの時刻要素別の表現へ変換する。 -この関数は \fBtzset\fP(3) を呼び出したかのように振舞い、 大域変数 \fItzname\fP に現在のタイムゾーンの情報を設定する。 -また、\fItimezone\fP に協定世界時 (UTC) とローカル標準時との 時差の秒数を設定し、 一年の一部で夏時間が適用される場合は -\fIdaylight\fP に 0 が設定される。 返り値は静的に確保された構造体を指しており、この後で 日付や時刻に関する関数のいずれかが呼び出されると -上書きされる可能性がある。 \fBlocaltime_r\fP() も同様だが、 データはユーザーが用意した構造体に格納される。 この関数は -\fItzname\fP, \fItimezone\fP, and \fIdaylight\fP を設定する必要はない。 -.PP -関数 \fBasctime\fP() は、要素別の時刻 \fItm\fP を \fBctime\fP() と同じ形式のヌル終端された文字列へ変換する。 -返り値は静的に割り当てられた文字列へのポインターである。この文字列は、 日付・時刻関数のいずれかが呼び出されると上書きされることがある。 -リエントラント版である \fBasctime_r\fP() も同様だが、 文字列はユーザーが用意したバッファーに格納される。バッファーのサイズは 少なくとも -26 バイト以上でなければならない。 -.PP -関数 \fBmktime\fP() は、(ローカルタイムで記述されている) 要素別の時刻を カレンダー時刻へ変換する。この際、呼び出し元がフィールド -\fItm_wday\fP と \fItm_yday\fP で指定した値は無視される。 \fBmktime\fP() は、フィールド \fItm_isdst\fP -で指定された値により、 \fItm\fP 構造体で渡された時刻で夏時間 (daylight saving time; DST) が有効になって いるかを知る。 -正の値は夏時間が有効であることを意味する。 負の値であれば、 \fBmktime\fP() は (タイムゾーン情報とシステムのデータベースを使って) -指定された時刻で夏時間が有効かどうかを判断する必要があることを意味する。 - -\fBmktime\fP() は \fItm\fP 構造体の各フィールドを以下のように修正する。 \fItm_wday\fP と \fItm_yday\fP -には他のフィールドの内容から求めた値を設定する。 構造体の要素が有効な範囲にない場合、正規化される (例えば、10 月 40 日は 11 月 9 -日に変更される)。 \fItm_isdst\fP には (最初の値にかかわらず) 正の値か 0 が設定される。 -正の値は指定された時間で夏時間が有効であることを示し、 0 は無効であることを示す。 関数 \fBmktime\fP() を呼び出すと、 大域変数 -\fItzname\fP が現在のタイムゾーンに設定される。 - -要素別の時刻をカレンダー時刻 (紀元 (Epoch) からの秒数) で表現できない場合、 \fBmktime\fP() は \fI(time_t)\ (\-1)\fP を返し、要素別の時刻の構造体メンバーを変更しない。 -.SH 返り値 -各関数はそれぞれ前述した値を返す。エラーの場合は NULL (\fBmktime\fP() では \-1) を返す。 -.SH 準拠 -POSIX.1\-2001. C89 と C99 では \fBasctime\fP(), \fBctime\fP(), \fBgmtime\fP(), -\fBlocaltime\fP(), \fBmktime\fP() が規定されている。 POSIX.1\-2008 は、 \fBasctime\fP(), -\fBasctime_r\fP(), \fBctime\fP(), \fBctime_r\fP() を廃止予定としている。 代わりに、 \fBstrftime\fP(3) -の使用が推奨されている。 -.SH 注意 -\fBasctime\fP(), \fBctime\fP(), \fBgmtime\fP(), \fBlocaltime\fP() の 4 -つの関数は静的データへのポインターを返すので、スレッドセーフではない。 これらの関数のスレッドセーフ版である \fBasctime_r\fP(), -\fBctime_r\fP(), \fBgmtime_r\fP(), \fBlocaltime_r\fP() は SUSv2 で規定されている。 - -POSIX.1\-2001 では、「関数 \fBasctime\fP(), \fBctime\fP(), \fBgmtime\fP(), \fBlocaltime\fP() -は、要素別の時刻の構造体か \fIchar\fP 型の配列かのどちらかの静的オブジェクトを返すものとする。 -これらの関数のいずれかを実行すると、他の関数のどれかがこれらの 静的オブジェクトのどちらかに格納して返した情報が上書きされるかも -しれない。」となっている。 このことは glibc の実装で起こりうる。 -.LP -glibc を含む多くの実装では、 \fItm_mday\fP に 0 を指定すると前月の最終日を意味していると解釈される。 -.LP -glibc では、 \fI\fP がインクルードされる前に \fB_BSD_SOURCE\fP が定義されると、 \fIstruct -tm\fP に以下のフィールドが追加される。 -.sp -.RS -.nf -long tm_gmtoff; /* Seconds east of UTC */ -const char *tm_zone; /* Timezone abbreviation */ -.fi -.RE -.sp -これは BSD 拡張であり、4.3BSD\-Reno から現れた。 - -.\" See http://thread.gmane.org/gmane.comp.time.tz/2034/ -POSIX.1\-2004 によると、 \fBlocaltime\fP() はあたかも \fBtzset\fP(3) -が呼ばれたかのように振舞うことが要求されているが、 \fBlocaltime_r\fP() にはこの要件はない。 移植性が必要なコードでは、 -\fBlocaltime_r\fP() の前に \fBtzset\fP(3) を呼び出しておくべきである。 -.SH 関連項目 -\fBdate\fP(1), \fBgettimeofday\fP(2), \fBtime\fP(2), \fButime\fP(2), \fBclock\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/daemon.3 b/manual/LDP_man-pages/draft/man3/daemon.3 deleted file mode 100644 index 2c0ef9fe..00000000 --- a/manual/LDP_man-pages/draft/man3/daemon.3 +++ /dev/null @@ -1,90 +0,0 @@ -.\" Copyright (c) 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 -.\" -.\" @(#)daemon.3 8.1 (Berkeley) 6/9/93 -.\" Added mentioning of glibc weirdness wrt unistd.h. 5/11/98, Al Viro -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2000-2001 Yuichi SATO -.\" all rights reserved. -.\" Translated Tue Jun 27 10:54:22 JST 2000 -.\" by Yuichi SATO -.\" Updated & Modified Mon Jan 14 06:50:04 JST 2002 -.\" by Yuichi SATO -.\" -.TH DAEMON 3 2013\-10\-28 GNU "Linux Programmer's Manual" -.SH 名前 -daemon \- バックグラウンドで動作させる -.SH 書式 -\fB#include \fP -.sp -\fBint daemon(int \fP\fInochdir\fP\fB, int \fP\fInoclose\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBdaemon\fP(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500) -.SH 説明 -\fBdaemon\fP() は、制御端末から分離させてシステムデーモンとして動作させたい プログラムのための関数である。 -.PP -\fInochdir\fP が 0 の場合、 \fBdaemon\fP() は呼び出したプロセスの現在の作業ディレクトリ (current working -directory) をルートディレクトリ ("/") に変更する。 それ以外の場合、現在の作業ディレクトリは変更されない。 -.PP -\fInoclose\fP が 0 の場合、 \fBdaemon\fP() は標準入力・標準出力・標準エラーを \fI/dev/null\fP にリダイレクトする。 -それ以外の場合、これらのファイルディスクリプターは変更されない。 -.SH 返り値 -.\" not .IR in order not to underline _ -(この関数が fork して \fBfork\fP(2) が成功すると、親プロセスでは \fB_exit\fP(2) -を呼び出すので、これ以降のエラーは子プロセスからしか見れない)。 成功した場合、 \fBdaemon\fP() は 0 を返す。 エラーが起こった場合、 -\fBdaemon\fP() は \-1 を返す。 さらに、 \fIerrno\fP に \fBfork\fP(2) と \fBsetsid\fP(2) -に関して規定されたエラーを設定する。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBdaemon\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001 にはない。 同様の関数が BSD には見られる。 \fBdaemon\fP() 関数は 4.4BSD で始めて登場した。 -.SH 注意 -The glibc implementation can also return \-1 when \fI/dev/null\fP exists but is -not a character device with the expected major and minor numbers. In this -case, \fIerrno\fP need not be set. -.SH 関連項目 -\fBfork\fP(2), \fBsetsid\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/dbopen.3 b/manual/LDP_man-pages/draft/man3/dbopen.3 index 2c30c901..d826af28 100644 --- a/manual/LDP_man-pages/draft/man3/dbopen.3 +++ b/manual/LDP_man-pages/draft/man3/dbopen.3 @@ -46,7 +46,7 @@ .\" Proofed Tue Aug 19 1999 by NAKANO Takeo .\" Updated 2012-05-01, Akihiro MOTOKI .\" -.TH DBOPEN 3 2012\-05\-04 "" "Linux Programmer's Manual" +.TH DBOPEN 3 2017\-09\-15 "" "Linux Programmer's Manual" .UC 7 .SH 名前 dbopen \- データベースアクセスメソッド @@ -56,7 +56,7 @@ dbopen \- データベースアクセスメソッド \fB#include \fP \fB#include \fP \fB#include \fP - +.PP \fBDB *dbopen(const char *\fP\fIfile\fP\fB, int \fP\fIflags\fP\fB, int \fP\fImode\fP\fB, DBTYPE \fP\fItype\fP\fB,\fP \fB const void *\fP\fIopeninfo\fP\fB);\fP .fi @@ -66,7 +66,7 @@ dbopen \- データベースアクセスメソッド ついて説明している。バージョン 2.2 以降の glibc では、もはやこれらの インターフェースは提供されていない。おそらく、このページではなく、 \fIlibdb\fP ライブラリが提供する API をお探しなのだろう。 - +.PP \fBdbopen\fP() はデータベースファイルに対するライブラリインターフェースである。 サポートされているファイルフォーマットは btree, hash, UNIX ファイルに指向したフォーマット, の 3 つである。 btree フォーマットは、ソートされたバランスツリー構造である。 hashed フォーマットは、拡張可能な動的 hash スキームである。 フラットファイル (flat\-file) フォーマットは、 @@ -108,9 +108,9 @@ hashed フォーマットは、拡張可能な動的 hash スキームである .PP \fBdbopen\fP() は、成功した場合 \fIDB\fP 構造体へのポインターを、エラーの場合 NULL を返す。 \fIDB\fP 構造体は \fI\fP インクルードファイルの中で定義されており、 少なくとも以下のようなフィールドを持っている。 -.sp +.PP .in +4n -.nf +.EX typedef struct { DBTYPE type; int (*close)(const DB *db); @@ -124,7 +124,7 @@ typedef struct { int (*seq)(const DB *db, DBT *key, DBT *data, unsigned int flags); } DB; -.fi +.EE .in .PP 各要素には、データベースのタイプと、 様々な動作をする関数のセットが記述されている。 これらの関数は \fBdbopen\fP() @@ -255,14 +255,14 @@ btree ファイルに sync が行われる。 (詳細は \fBrecno\fP(3) マニ \fIsync\fP ルーチンはエラーの場合 \-1 を返し (\fIerrno\fP をセットする)、成功すると 0 を返す。 .SS キー/データ対 全てのファイルタイプにおいて、 キー/データ対をベースにしてアクセスが行われる。 キーとデータのいずれも、次のデータ構造で記述される。 +.PP .in +4n -.nf - +.EX typedef struct { void *data; size_t size; } DBT; -.fi +.EE .in .PP \fIDBT\fP 構造体の各要素は次のように定義されている。 @@ -298,18 +298,17 @@ typedef struct { .PP \fIsync\fP ルーチンは失敗するとライブラリルーチン \fBfsync\fP(2) で指定されているエラーに応じた \fIerrno\fP をセットする。 .SH バグ -typedef \fIDBT\fP は \*(lqdata base thang\*(rqの略語であるが、これが使われているのは、 -まだ使われていない妥当な名前が思い付かなかったためである。 +The typedef \fIDBT\fP is a mnemonic for "data base thang", and was used because +no one could think of a reasonable name that wasn't already used. .PP ファイルディスクリプターを使ったやりとりはひどい代物であり、 将来のバージョンでは削除されるだろう。 .PP どのアクセスメソッドも、同時アクセス、ロック、トランザクション の仕組みは備えていない。 .SH 関連項目 \fBbtree\fP(3), \fBhash\fP(3), \fBmpool\fP(3), \fBrecno\fP(3) - +.PP \fILIBTP: Portable, Modular Transactions for UNIX\fP, Margo Seltzer, Michael Olson, USENIX proceedings, Winter 1992. .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/des_crypt.3 b/manual/LDP_man-pages/draft/man3/des_crypt.3 deleted file mode 100644 index d4e22c45..00000000 --- a/manual/LDP_man-pages/draft/man3/des_crypt.3 +++ /dev/null @@ -1,94 +0,0 @@ -.\" @(#)des_crypt.3 2.1 88/08/11 4.0 RPCSRC; from 1.16 88/03/02 SMI; -.\" -.\" Taken from libc4 sources, which say: -.\" Copyright (C) 1993 Eric Young - can be distributed under GPL. -.\" -.\" However, the above header line suggests that this file in fact is -.\" Copyright Sun Microsystems, Inc (and is provided for unrestricted use, -.\" see other Sun RPC sources). -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" can be distributed under GPL. -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Fri Jul 23 05:53:35 JST 2004 -.\" by Yuichi SATO -.\" -.TH DES_CRYPT 3 2014\-08\-19 "" "Linux Programmer's Manual" -.SH 名前 -des_crypt, ecb_crypt, cbc_crypt, des_setparity, DES_FAILED \- 高速な DES 暗号化 -.SH 書式 -.nf -.\" Sun version -.\" .B #include -\fB#include \fP -.LP -\fBint ecb_crypt(char *\fP\fIkey\fP\fB, char *\fP\fIdata\fP\fB, unsigned \fP\fIdatalen\fP\fB,\fP -\fB unsigned \fP\fImode\fP\fB);\fP -.LP -\fBint cbc_crypt(char *\fP\fIkey\fP\fB, char *\fP\fIdata\fP\fB, unsigned \fP\fIdatalen\fP\fB,\fP -\fB unsigned \fP\fImode\fP\fB, char *\fP\fIivec\fP\fB);\fP -.LP -\fBvoid des_setparity(char *\fP\fIkey\fP\fB);\fP -.LP -\fBint DES_FAILED(int \fP\fIstatus\fP\fB);\fP -.fi -.SH 説明 -\fBecb_crypt\fP() と \fBcbc_crypt\fP() は NBS DES (Data Encryption Standard, -データ暗号化規格) を実装している。 これらのルーチンは \fBcrypt\fP(3) よりも高速でより一般的な目的に使用できる。 -利用可能であれば、これらのルーチンは DES ハードウェアを使用することもできる。 \fBecb_crypt\fP() は ECB (Electronic -Code Book) モードで暗号化する。 このモードでは (個々の) データのブロックを独立して暗号化する \fBcbc_crypt\fP() は CBC -(Cipher Block Chaining) モードで暗号化する。 このモードでは連続するブロックを互いに連鎖させて暗号化する。 CBC -はブロックの挿入・削除・置き換えから保護する。 また平文の規則性が暗号文に現れない。 -.LP -これらのルーチンの使用法を示す。 第 1 引き数 \fIkey\fP はパリティ付きの 8 バイトの暗号化鍵である。 鍵のパリティを設定するには -\fBdes_setparity\fP() を使うこと。 DES の場合、鍵のパリティは各バイトの最下位ビットである。 第 2 引き数 \fIdata\fP -は暗号化または復号化されるデータを含む。 第 3 引き数 \fIdatalen\fP は \fIdata\fP のバイト長であり、8 の倍数でなければならない。 第 -4 引き数 \fImode\fP はいくつかの値を OR することで作成する。 暗号化の方向 (訳註: 暗号化なのか復号化なのか) を指定するため、 -\fBDES_ENCRYPT\fP または \fBDES_DECRYPT\fP を OR する。 暗号化をソフトウェアで行うかハードウェアで行うかを指定するため、 -\fBDES_HW\fP または \fBDES_SW\fP を OR する。 \fBDES_HW\fP が指定されていて、かつハードウェアがない場合、 -暗号化はソフトウェアで実行されて、ルーチンは \fBDESERR_NOHWDEVICE\fP を返す。 \fBcbc_crypt\fP() において、引き数 -\fIivec\fP はデータブロックを連鎖させる際の 8 バイトの初期化ベクトルである。 この引き数はルーチンから戻るときに次の初期化ベクトルに更新される。 -.SH 返り値 -.PD 0 -.TP 20 -\fBDESERR_NONE\fP -エラーなし。 -.TP -\fBDESERR_NOHWDEVICE\fP -暗号化は成功したが、要求されたハードウェアの代わりにソフトウェアで実行された。 -.TP -\fBDESERR_HWERROR\fP -ハードウェアまたはドライバでエラーが発生した。 -.TP -\fBDESERR_BADPARAM\fP -ルーチンへの引き数が不正である。 -.PD -.LP -.\" .BR DES_FAILED\c -.\" .BR ( stat ) -.\" So far the Sun page -.\" Some additions - aeb -結果の状態 \fIstat\fP を与えたとき、マクロ \fBDES_FAILED(\fP\fIstat\fP\fB)\fP が false になるのは、最初の 2 -つだけである。 -.SH バージョン -これらの関数は glibc 2.1 以降に存在する。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBecb_crypt\fP(), \fBcbc_crypt\fP(), \fBdes_setparity\fP() はスレッドセーフである。 -.SH 準拠 -4.3BSD. POSIX.1\-2001 にはない。 -.SH 関連項目 -\fBdes\fP(1), \fBcrypt\fP(3), \fBxcrypt\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/difftime.3 b/manual/LDP_man-pages/draft/man3/difftime.3 deleted file mode 100644 index 8ce68d3a..00000000 --- a/manual/LDP_man-pages/draft/man3/difftime.3 +++ /dev/null @@ -1,76 +0,0 @@ -.\" 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 19:48:17 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 NAGOYA Hiroaki -.\" all rights reserved. -.\" Translated Mon Feb 10 1997 by Hiroaki Nagoya -.\" Updated & Modified Sat Mar 23 23:57:43 JST 2002 -.\" by Yuichi SATO -.\" -.TH DIFFTIME 3 2013\-10\-28 GNU "Linux Programmer's Manual" -.SH 名前 -difftime \- 時刻の間隔の計算 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble difftime(time_t \fP\fItime1\fP\fB, time_t \fP\fItime0\fP\fB);\fP -.fi -.SH 説明 -関数 \fBdifftime\fP() は時刻 \fItime0\fP から 時刻 \fItime1\fP までの経過時間を \fIdouble\fP -型で返す。各々の時刻はカレンダー時間で指定する。 つまり、紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC)) からの -経過時間を秒単位で指定する。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBdifftime\fP() 関数はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, C89, C99. -.SH 注意 -POSIX システムでは \fItime_t\fP は数値型なので、引き算の際に起こる可能性のあるオーバーフローを 気にしない場合は、単純に -.RS -.nf - -#define difftime(t1,t0) (double)(t1 \- t0) - -.fi -.RE -と定義できる。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/dirfd.3 b/manual/LDP_man-pages/draft/man3/dirfd.3 deleted file mode 100644 index cd633f83..00000000 --- a/manual/LDP_man-pages/draft/man3/dirfd.3 +++ /dev/null @@ -1,98 +0,0 @@ -.\" Copyright (C) 2002 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002-2003 Yuichi SATO -.\" all rights reserved. -.\" Translated Mon May 6 21:32:36 JST 2002 -.\" by Yuichi SATO -.\" Updated & Modified Sun Sep 7 01:23:08 JST 2003 -.\" by Yuichi SATO -.\" -.TH DIRFD 3 2013\-07\-05 Linux "Linux Programmer's Manual" -.SH 名前 -dirfd \- ディレクトリストリームのファイルディスクリプターを取得する -.SH 書式 -\fB#include \fP -.br -\fB#include \fP -.sp -\fBint dirfd(DIR *\fP\fIdirp\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBdirfd\fP(): -.br -.RS 4 -.PD 0 -.ad l -_BSD_SOURCE || _SVID_SOURCE -.br -|| /* glibc 2.10 以降: */ -.RS 4 -(_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700) -.RE -.PD -.RE -.ad -.SH 説明 -関数 \fBdirfd\fP() はディレクトリストリーム \fIdirp\fP に関連づけられたファイルディスクリプターを返す。 -.LP -このディスクリプターはディレクトリストリームが内部で使用するものである。 よって、ファイルの位置に依存せず、かつその位置を変更しない関数 -\fBfstat\fP(2) や \fBfchdir\fP(2) などでしか役に立たない。 このディスクリプターは \fBclosedir\fP(3) -が呼ばれたときに自動的にクローズされる。 -.SH 返り値 -成功すると、負でない値のファイルディスクリプターが返される。 エラーの場合は \-1 が返され、 \fIerrno\fP にエラーの原因を示す値が設定される。 -.SH エラー -.\" glibc 2.8 -POSIX.1\-2008 では 2 つのエラーが規定されている。 現在の実装ではどちらのエラーも返されない。 -.TP -\fBEINVAL\fP -\fIdirp\fP が有効なディレクトリストリームを参照していない。 -.TP -\fBENOTSUP\fP -この実装では、ファイルディスクリプターのディレクトリとの関連付けが サポートされていない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBdirfd\fP() 関数はスレッドセーフである。 -.SH 準拠 -.\" It is present in libc5 (since 5.1.2) and in glibc2. -POSIX.1\-2008. この関数は BSD 拡張であった。 4.3BSD\-Reno には存在するが、4.2BSD には存在しない。 -.SH 注意 -\fBdirfd\fP() のプロトタイプが使用可能なのは、 \fB_BSD_SOURCE\fP または \fB_SVID_SOURCE\fP -が定義されたときのみである。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/div.3 b/manual/LDP_man-pages/draft/man3/div.3 deleted file mode 100644 index ab469805..00000000 --- a/manual/LDP_man-pages/draft/man3/div.3 +++ /dev/null @@ -1,108 +0,0 @@ -.\" 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-03-29, David Metcalfe -.\" Modified 1993-07-24, Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-08-10, 2003-11-01 Walter Harms, aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kenji Kajiwara -.\" all rights reserved. -.\" Translated Mon Jul 15 18:00:00 JST 1996 -.\" by Kenji Kajiwara -.\" Proof Reading: Takashi Yoshino -.\" Updated & Modified Sun May 30 13:03:43 JST 2004 -.\" by Yuichi SATO -.\" -.TH DIV 3 2013\-07\-05 "" "Linux Programmer's Manual" -.SH 名前 -div, ldiv, lldiv, imaxdiv \- integer 型の割算の商と余りを計算する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdiv_t div(int \fP\fInumerator\fP\fB, int \fP\fIdenominator\fP\fB);\fP -.br -\fBldiv_t ldiv(long \fP\fInumerator\fP\fB, long \fP\fIdenominator\fP\fB);\fP -.br -\fBlldiv_t lldiv(long long \fP\fInumerator\fP\fB, long long \fP\fIdenominator\fP\fB);\fP -.sp -\fB#include \fP -.sp -\fBimaxdiv_t imaxdiv(intmax_t \fP\fInumerator\fP\fB, intmax_t \fP\fIdenominator\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.ad l -.sp -\fBlldiv\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBdiv\fP() 関数は \fInumerator\fP/\fIdenominator\fP の値を計算する。 商と余りは、 \fIquot\fP (商) と -\fIrem\fP (余り) という名前の 2 つの integer 型メンバを含む \fIdiv_t\fP という構造体の中に返される -(メンバの順番は不定である)。 商は 0 に近い方に丸められる。 結果は \fIquot\fP*\fIdenominator\fP+\fIrem\fP = -\fInumerator\fP を満たす。 -.LP -\fBldiv\fP(), \fBlldiv\fP(), \fBimaxdiv\fP() 関数は同様な動作をし、 -上に示した型の数値を割算して、上に示した名前の構造体に結果を返す。 どの場合でもフィールド \fIquot\fP と \fIrem\fP は、 -関数の引き数と同じ型である。 -.SH 返り値 -\fIdiv_t\fP (などの) 構造体。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBdiv\fP(), \fBldiv\fP(), \fBlldiv\fP(), \fBimaxdiv\fP() はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, C89, C99. -関数 \fBlldiv\fP() と \fBimaxdiv\fP() は C99 に追加された。 -.SH 例 -以下の式を計算すると、 -.nf - - div_t q = div(\-5, 3); - -.fi -\fIq.quot\fP と \fIq.rem\fP はそれぞれ \-1 と \-2 になる。 -.SH 関連項目 -\fBabs\fP(3), \fBremainder\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/dl_iterate_phdr.3 b/manual/LDP_man-pages/draft/man3/dl_iterate_phdr.3 deleted file mode 100644 index 2726d319..00000000 --- a/manual/LDP_man-pages/draft/man3/dl_iterate_phdr.3 +++ /dev/null @@ -1,157 +0,0 @@ -.\" Copyright (c) 2003 by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Thu Jan 27 07:03:56 JST 2005 -.\" by Yuichi SATO -.\" -.TH DL_ITERATE_PHDR 3 2007\-05\-18 GNU "Linux Programmer's Manual" -.SH 名前 -dl_iterate_phdr \- 共有オブジェクトのリストを辿る -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP - -\fBint dl_iterate_phdr(\fP -\fB int (*\fP\fIcallback\fP\fB) (struct dl_phdr_info *\fP\fIinfo\fP\fB,\fP -\fB size_t \fP\fIsize\fP\fB, void *\fP\fIdata\fP\fB),\fP -\fB void *\fP\fIdata\fP\fB);\fP -.fi -.SH 説明 -\fBdl_iterate_phdr\fP() 関数を使うと、アプリケーションは実行時に どの共有オブジェクトをロードしたかを見つけることができる。 - -\fBdl_iterate_phdr\fP() 関数はアプリケーションの共有オブジェクトのリストを辿り、 各オブジェクトに対して関数 \fIcallback\fP -を 1 回ずつ呼び出す。 これは全ての共有オブジェクトが処理されるか、 \fIcallback\fP が 0 以外の値を返すまで行われる。 - -各々の \fIcallback\fP 呼び出しは 3 つの引き数を受け取る: \fIinfo\fP は共有オブジェクトの情報を保持する構造体へのポインターである。 -\fIsize\fP は \fIinfo\fP で指される構造体のサイズである。 \fIdata\fP は呼び出し元プログラムから -\fBdl_iterate_phdr\fP() の呼び出しの (同じく \fIdata\fP という名前の) 第 2 引き数として渡される値のコピーである。 - -\fIinfo\fP 引き数は、以下のような型の構造体である。 - -.in +4n -.nf -struct dl_phdr_info { - ElfW(Addr) dlpi_addr; /* オブジェクトのベースアドレス */ - const char *dlpi_name; /* (ヌル文字で終端された) - オブジェクト名 */ - const ElfW(Phdr) *dlpi_phdr; /* このオブジェクトの - ELF プログラムヘッダーの - 配列へのポインター */ - ElfW(Half) dlpi_phnum; /* \fIdlpi_phdr\fP のアイテム数 */ -}; -.fi -.in - -(\fIElfW\fP() マクロ定義は引き数をハードウェアアーキテクチャーに適した ELF データ型の名前に変換する。 たとえば、32 -ビットプラットフォームでは ElfW(Addr) はデータ型名 Elf32_Addr を生成する。 -これらの型についての更に詳細な情報は、ヘッダーファイル \fI\fP と \fI\fP にある。 - -\fIdlpi_addr\fP フィールドは共有オブジェクトのベースアドレス (つまり、共有オブジェクトの仮想メモリーアドレスと、 ファイル -(このファイルから共有オブジェクトがロードされる) における 共有オブジェクトのオフセットとの差分) を表す。 \fIdlpi_name\fP -はヌル文字で終端された文字列であり、 このパス名のファイルから共有オブジェクトがロードされる。 - -\fIdlpi_phdr\fP と \fIdlpi_phnum\fP フィールドの意味を理解するには、 ELF -共有オブジェクトが幾つかのセグメントから構成されていることと、 各セグメントがそれに対応するプログラムヘッダー (そのセグメントを説明する) -を持っていることを知っている必要がある。 \fIdlpi_phdr\fP フィールドは、この共有オブジェクトのプログラムヘッダーの配列へのポインターである。 -\fIdlpi_phnum\fP は、この配列のサイズを表す。 - -これらのプログラムヘッダーは以下のような形式の構造体である: -.in +4n -.nf - -typedef struct -{ - Elf32_Word p_type; /* セグメントの型 */ - Elf32_Off p_offset; /* セグメントのファイルオフセット */ - Elf32_Addr p_vaddr; /* セグメントの仮想アドレス */ - Elf32_Addr p_paddr; /* セグメントの物理アドレス */ - Elf32_Word p_filesz; /* ファイルにおけるセグメントサイズ */ - Elf32_Word p_memsz; /* メモリーにおけるセグメントサイズ */ - Elf32_Word p_flags; /* セグメントフラグ */ - Elf32_Word p_align; /* セグメントの配置 (alignment) */ -} Elf32_Phdr; -.fi -.in - -特定のプログラムヘッダー \fIx\fP の仮想メモリーにおける位置は、以下の式で計算できる点に注意すること: - -.nf - addr == info\->dlpi_addr + info\->dlpi_phdr[x].p_vaddr; -.fi -.SH 返り値 -\fBdl_iterate_phdr\fP() 関数は最後の \fIcallback\fP の呼び出しで返された値を返す。 -.SH バージョン -\fBdl_iterate_phdr\fP() は glibc のバージョン 2.2.4 以降でサポートされている。 -.SH 準拠 -\fBdl_iterate_phdr\fP() 関数は Linux 固有であり、移植を考えたアプリケーションでは避けるべきである。 -.SH 例 -以下のプログラムは、共有オブジェクトがロードされた パス名の一覧を表示する。 各共有オブジェクトについて、このプログラムは オブジェクトの ELF -セグメントがロードされた 仮想アドレスの一覧を表示する。 - -.nf -#define _GNU_SOURCE -#include -#include -#include - -static int -callback(struct dl_phdr_info *info, size_t size, void *data) -{ - int j; - - printf("name=%s (%d segments)\en", info\->dlpi_name, - info\->dlpi_phnum); - - for (j = 0; j < info\->dlpi_phnum; j++) - printf("\et\et header %2d: address=%10p\en", j, - (void *) (info\->dlpi_addr + info\->dlpi_phdr[j].p_vaddr)); - return 0; -} - -int -main(int argc, char *argv[]) -{ - dl_iterate_phdr(callback, NULL); - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBldd\fP(1), \fBobjdump\fP(1), \fBreadelf\fP(1), \fBdlopen\fP(3), \fBelf\fP(5), -\fBld.so\fP(8) - -オンラインのいろいろな場所で入手できる \fIExecutable and Linking Format Specification\fP -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/dlopen.3 b/manual/LDP_man-pages/draft/man3/dlopen.3 deleted file mode 100644 index 4df8827f..00000000 --- a/manual/LDP_man-pages/draft/man3/dlopen.3 +++ /dev/null @@ -1,335 +0,0 @@ -.\" Copyright 1995 Yggdrasil Computing, Incorporated. -.\" written by Adam J. Richter (adam@yggdrasil.com), -.\" with typesetting help from Daniel Quinlan (quinlan@yggdrasil.com). -.\" and Copyright 2003 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified by David A. Wheeler 2000-11-28. -.\" Applied patch by Terran Melconian, aeb, 2001-12-14. -.\" Modified by Hacksaw 2003-03-13. -.\" Modified by Matt Domsch, 2003-04-09: _init and _fini obsolete -.\" Modified by Michael Kerrisk 2003-05-16. -.\" Modified by Walter Harms: dladdr, dlvsym -.\" Modified by Petr Baudis , 2008-12-04: dladdr caveat -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated Sat May 23 1998 by NAKANO Takeo -.\" Updated & Modified 1999-09-14, NAKANO Takeo -.\" Modified 2000-03-19, HANATAKA Shinya -.\" Updated 2001-02-16, Kentaro Shirakata -.\" Updated 2001-12-21, Kentaro Shirakata -.\" Updated 2002-10-21, Kentaro Shirakata -.\" Updated 2003-09-01, Kentaro Shirakata -.\" Updated 2005-03-15, Akihiro MOTOKI -.\" Updated 2006-01-20, Akihiro MOTOKI -.\" Updated 2009-03-02, Akihiro MOTOKI, LDP v3.19 -.\" -.TH DLOPEN 3 2014\-10\-02 Linux "Linux Programmer's Manual" -.SH 名前 -dlclose, dlerror, dlopen, dlsym \- 動的リンクを行うローダーへの プログラミングインターフェース -.SH 書式 -\fB#include \fP -.sp -\fBvoid *dlopen(const char *\fP\fIfilename\fP\fB, int \fP\fIflag\fP\fB);\fP -.sp -\fBchar *dlerror(void);\fP -.sp -\fBvoid *dlsym(void *\fP\fIhandle\fP\fB, const char *\fP\fIsymbol\fP\fB);\fP -.sp -\fBint dlclose(void *\fP\fIhandle\fP\fB);\fP -.sp -\fI\-ldl\fP でリンクする。 -.SH 説明 -\fBdlopen\fP(), \fBdlsym\fP(), \fBdlclose\fP(), \fBdlerror\fP() の 4つの関数は、動的リンク (dynamic -linking) を行うローダーへの インターフェースを実装したものである。 -.SS dlerror() -関数 \fBdlerror\fP() は、前回 \fBdlerror\fP() が呼び出された後に、 \fBdlopen\fP(), \fBdlsym\fP(), -\fBdlclose\fP() のいずれかで最後に発生したエラーについての説明メッセージを返す。 -初期化後または前回呼び出された後で、エラーが発生していなければ NULL を返す。 -.SS dlopen() -関数 \fBdlopen\fP() は、ヌル終端された文字列 \fIfilename\fP で指定されたファイル名の動的ライブラリ (dynamic -library) をロードし、 その動的ライブラリへの内部「ハンドル」を返す。 \fIfilename\fP が NULL -の場合、メインプログラムへのハンドルが返される。 \fIfilename\fP がスラッシュ ("/") -を含む場合、(相対か絶対かの)パス名として解釈される。 それ以外の場合、動的リンカーは以下の手順でライブラリを検索する (詳細は \fBld.so\fP(8) -を参照): -.IP o 4 -(ELF のみ) 呼び出し元プログラムの実行ファイルに DT_RPATH タグが含まれており、 DT_RUNPATH -タグが含まれていない場合、DT_RPATH タグに書かれている ディレクトリリストを検索する。 -.IP o -プログラムの開始時に環境変数 \fBLD_LIBRARY_PATH\fP にコロン区切りのディレクトリのリストが定義されていれば、 -この環境変数に定義されたディレクトリが検索される (セキュリティ上の理由で、この変数は set\-UID や set\-GID された -プログラムの場合は無視される)。 -.IP o -(ELF のみ) 呼び出し元プログラムの実行ファイルに DT_RUNPATH タグが含まれて -いる場合、そのタグに書かれているディレクトリリストを検索する。 -.IP o -キャッシュファイル \fI/etc/ld.so.cache\fP の中に \fIfilename\fP のエントリーが入っているかをチェックする -(\fB/etc/ld.so.cache\fP は \fBldconfig\fP(8) によって管理されている)。 -.IP o -ディレクトリ \fI/lib\fP と \fI/usr/lib\fP をこの順番で検索する。 -.PP -そのライブラリが他の共有ライブラリに依存している場合は、 依存しているライブラリも動的リンカーが同じ検索ルールに基づいて 自動的にロードする -(それらのライブラリにさらに依存関係がある場合などは この処理は再帰的に行われる)。 -.PP -\fIflag\fP には以下の 2 つの値のいずれかを含めなければならない: -.TP -\fBRTLD_LAZY\fP -lazy binding (手抜きなシンボルの結び付け) が行う。 シンボルの解決はそのシンボルを参照するコードが実行されるときにのみ -行われる。シンボルが一度も参照されなかった場合には、そのシンボルは 解決されないままとなる。 (lazy binding -は関数参照についてのみ実施される; 変数への参照は常に ライブラリがロードされた時点で直ちに解決される。) -.TP -\fBRTLD_NOW\fP -この値が指定されるか、環境変数 \fBLD_BIND_NOW\fP に空でない文字列が設定された場合、 ライブラリ中の未定義のシンボルを全て解決してから -\fBdlopen\fP() は復帰する。解決できなかったときにはエラーが返される。 -.PP -以下の値のうち 0 個以上を論理和 (OR) の形で \fIflag\fP に追加することもできる: -.TP -\fBRTLD_GLOBAL\fP -このライブラリで定義されているシンボルが、これより後でロードされる ライブラリのシンボル解決で利用できるようになる。 -.TP -\fBRTLD_LOCAL\fP -このフラグは \fBRTLD_GLOBAL\fP の反対の意味であり、どちらのフラグも指定されなかった場合は こちらがデフォルトとなる。 -このライブラリで定義されているシンボルは、これより後でロードされる ライブラリでのシンボル参照で利用できない。 -.TP -\fBRTLD_NODELETE\fP (glibc 2.2 以降) -.\" (But it is present on Solaris.) -\fBdlclose\fP() 中にそのライブラリをアンロードしない。 そのため、同じライブラリをこれ以降に \fBdlopen\fP() -で再度ロードした場合に、ライブラリ内の静的変数は再初期化されない。 このフラグは POSIX.1\-2001 では規定されていない。 -.TP -\fBRTLD_NOLOAD\fP (glibc 2.2 以降) -.\" (But it is present on Solaris.) -.\" -そのライブラリをロードしない。 このフラグはそのライブラリがすでに組み込まれているかを検査するのに 利用できる (\fBdlopen\fP() -は、ライブラリが組み込まれていなければ NULL を返し、 すでに組み込まれていればそのライブラリのハンドルを返す)。 -また、すでにロードされているライブラリのフラグを昇格させるのにも 利用できる。例えば、過去に \fBRTLD_LOCAL\fP でロードしたライブラリを -\fBRTLD_NOLOAD\ |\ RTLD_GLOBAL\fP で再オープンすることができる。 このフラグは POSIX.1\-2001 -では規定されていない。 -.TP -\fBRTLD_DEEPBIND\fP (glibc 2.3.4 以降) -.\" Inimitably described by UD in -.\" http://sources.redhat.com/ml/libc-hacker/2004-09/msg00083.html. -このライブラリ内のシンボルの参照領域をグローバル領域よりも前に配置する。 つまり、内蔵型のライブラリでは、すでにロードされたライブラリに含まれる -同じ名前のグローバルなシンボルよりも自ライブラリ内のシンボルが優先して 使われる。 このフラグは POSIX.1\-2001 では規定されていない。 -.PP -\fIfilename\fP が NULL である場合は、 返されるハンドルはメインプログラムのものになる。 このハンドルが \fBdlsym\fP() -に渡されると、シンボルの検索は、メインプログラム内、 プログラムの起動時にロードされる全ての共有ライブラリ、 \fBdlopen\fP() によって -\fBRTLD_GLOBAL\fP フラグ付きでロードされた全ての共有ライブラリ、の順序で行われる。 -.PP -オープンされたライブラリ中での外部参照は、 そのライブラリの依存リストにあるライブラリか、 \fBRTLD_GLOBAL\fP -フラグ付きで既にオープンされているライブラリを使って解決される。 実行ファイルが "\-rdynamic" フラグ ("\-\-export\-dynamic" -も同義) 付きでリンクされている場合は、実行ファイル中のグローバルシンボルも、 動的にロードされるライブラリ内の参照解決に用いられる。 -.PP -同じライブラリが \fBdlopen\fP() によって再度ロードされた場合には、同じライブラリハンドルが返される。 dl -ライブラリはライブラリハンドルのリンク数を管理している。 したがって動的ライブラリは \fBdlclose\fP() が \fBdlopen\fP() -と同じ回数だけ呼び出されない限りアンロードされない。 \fB_init\fP() ルーチンは一度だけ呼び出される (\fB_init\fP() -が存在する場合のみ)。 \fBRTLD_NOW\fP が指定されて \fBdlopen\fP() が呼び出された場合、 \fBRTLD_LAZY\fP -で以前にロードされたライブラリのシンボル解決が実行されることがある。 -.PP -\fBdlopen\fP() は、何らかの理由で失敗すると NULL を返す。 -.SS dlsym() -関数 \fBdlsym\fP() は、 \fBdlopen\fP() が返した動的ライブラリの「ハンドル」と、 NULL -終端されたシンボル名の文字列を引き数に取り、 そのシンボルがロードされたメモリーのアドレスを返す。 -シンボルが、指定されたライブラリと、指定されたライブラリがロードされる際に \fBdlopen\fP() -が自動的にロードしてライブラリのいずれにも見つからない場合には、 \fBdlsym\fP() は NULL を返す (\fBdlsym\fP() -による検索は、これらのライブラリの依存関係のツリーを先頭から 辿って行われる)。 実際にはシンボルの値自体が NULL になることもある (そのため、 -\fBdlsym\fP() の返り値が NULL であったとしても必ずしもエラーという訳ではない)。 エラーかどうかを確認する正しい方法は以下の通りである: -\fBdlerror\fP() を呼び出して以前のエラー状態をクリアしてから、 \fBdlsym\fP() を呼び出す。その後でもう一度 -\fBdlerror\fP() を呼び出して、 \fBdlerror\fP() の返り値を変数に保存し、保存した値が NULL であるか判定する。 -.PP -\fBRTLD_DEFAULT\fP と \fBRTLD_NEXT\fP という二つの特別な擬似ハンドルがある。 \fBRTLD_DEFAULT\fP -は、デフォルトのライブラリ検索順序にしたがって、 検索対象のシンボルが最初に現れるところを探す。 \fBRTLD_NEXT\fP -は、ライブラリ検索順序の中で現在のライブラリ以降で最初に 関数が現れるところを探す。この機能を使うことで、別の共有ライブラリの -関数へのラッパーを提供することができる。 -.SS dlclose() -関数 \fBdlclose\fP() は動的ライブラリのハンドル \fIhandle\fP の参照カウントを 1 減らす。参照カウントが 0 -になり、ロードされている 他のライブラリからそのライブラリ内のシンボルが使われていなければ、 その動的ライブラリをアンロードする。 -.LP -関数 \fBdlclose\fP() は、成功した場合は 0 を返し、エラーの場合 0 以外を返す。 -.SS "廃止されたシンボル _init() と _fini()" -リンカーは \fB_init\fP と \fB_fini\fP を特別なシンボルと解釈する。 ある動的ライブラリで \fB_init\fP() -という名前のルーチンがエクスポートされていれば、 そのコードは、ライブラリのロード後、かつ \fBdlopen\fP() が復帰する前に実行される。 -その動的ライブラリで \fB_fini\fP() という名前のルーチンがエクスポートされていれば、 -ライブラリがアンロードされる直前にそのルーチンが呼び出される。 システムの起動ファイルに対するリンクを避ける必要がある場合、 \fBgcc\fP(1) -のコマンドラインに \fI\-nostartfiles\fP オプションを指定すればよい。 -.LP -.\" void _init(void) __attribute__((constructor)); -.\" void _fini(void) __attribute__((destructor)); -このルーチンや、gcc のオプション \fB\-nostartfiles\fP や \fB\-nostdlib\fP は使用しないことを推奨する。 -これらを使うと、望ましくない動作をすることがある。 なぜなら、(特別な措置が行われない限り) これらの constructor/destructor -ルーチンは実行されないからである。 -.LP -代わりに、ライブラリは \fB__attribute__((constructor))\fP や \fB__attribute__((destructor))\fP -の関数属性を使って必要なルーチンをエクスポートするのがよい。 これらについては gcc の info ページを参照のこと。 constructor -ルーチンは \fBdlopen\fP() が復帰する前に実行され、 destructor ルーチンは \fBdlclose\fP() が復帰する前に実行される。 -.SS "GNU での拡張: dladdr() と dlvsym()" -glibc では POSIX には記載されていない関数が 2つ追加されている。 プロトタイプは以下の通りである。 -.sp -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP -.sp -\fBint dladdr(void *\fP\fIaddr\fP\fB, Dl_info *\fP\fIinfo\fP\fB);\fP -.sp -\fBvoid *dlvsym(void *\fP\fIhandle\fP\fB, char *\fP\fIsymbol\fP\fB, char *\fP\fIversion\fP\fB);\fP -.fi -.PP -関数 \fBdladdr\fP() は、関数のポインターを引き数にとり、関数の名前と関数が定義されている ファイルの解決を試みる。情報は -\fIDl_info\fP 構造体に格納される。 -.sp -.in +4n -.nf -typedef struct { - const char *dli_fname; /* Pathname of shared object that - contains address */ - void *dli_fbase; /* Address at which shared object - is loaded */ - const char *dli_sname; /* Name of symbol whose definition - overlaps \fIaddr\fP */ - void *dli_saddr; /* Exact address of symbol named - in \fIdli_sname\fP */ -} Dl_info; -.fi -.in -.PP -\fIaddr\fP にマッチするシンボルが見つからなかった場合、 \fIdli_sname\fP と \fIdli_saddr\fP は NULL にセットされる。 -.PP -\fBdladdr\fP() は、エラー時には 0 を返し、成功した場合は 0 以外を返す。 -.PP -関数 \fBdlvsym\fP() は \fBdlsym\fP() と同じ動作をするが、バージョンの文字列を渡す引き数が 追加されている点が異なる -(\fBdlvsym\fP() はバージョン 2.1 以降の glibc で提供されている)。 -.SH 準拠 -POSIX.1\-2003 には \fBdlclose\fP(), \fBdlerror\fP(), \fBdlopen\fP(), \fBdlsym\fP(). -の記載がある。 -.SH 注意 -.\" .LP -.\" The string returned by -.\" .BR dlerror () -.\" should not be modified. -.\" Some systems give the prototype as -.\" .sp -.\" .in +5 -.\" .B "const char *dlerror(void);" -.\" .in -シンボル \fBRTLD_DEFAULT\fP と \fBRTLD_NEXT\fP は \fI\fP で定義されており、 -\fI\fP のインクルード前に \fB_GNU_SOURCE\fP が定義されている場合のみ有効となる。 - -glibc 2.2.3 以降では、 \fBatexit\fP(3) を使って、ライブラリがアンロードされる際に自動的に呼び出される 終了ハンドラー -(exit handler) を登録することができる。 -.SS 歴史 -dlopen インターフェースの標準は SunOS をもとにしている。 SunOS には \fBdladdr\fP() もあったが、 \fBdlvsym\fP() -はなかった。 -.SH バグ -時として、 \fBdladdr\fP() に渡した関数ポインターは驚くような値になることがある。 いくつかのアーキテクチャー (特に i386 と -x86_64) では、 引き数として使用した関数が動的リンクライブラリで定義されるもので あったとしても、 \fIdli_fname\fP と -\fIdli_fbase\fP が \fBdladdr\fP() を呼び出したオブジェクトを参照した状態で終わっていることがある。 -.PP -問題は、関数ポインターの解決は今なおコンパイル時に行われるが、 そのポインターは元のオブジェクトの \fIplt\fP (Procedure Linkage -Table) セクションを指しているだけだという点にある (オブジェクト自体は、ダイナミックリンカーによってシンボルの解決が行われた後に、 -関数の呼び出しを行う)。 これに対処する方法としては、 コードを position\-independent でコンパイルするという方法がある。 -そうすると、コンパイラはコンパイル時にポインターを用意することができず、 今日の \fBgcc\fP(1) では、実行時に \fBdladdr\fP() -に関数ポインターを渡す前に、 \fIgot\fP (Global Offset Table) から最終的なシンボルのアドレスをロードするだけの -コードが生成される。 -.SH 例 -math ライブラリをロードし、2.0 の余弦を表示する -.nf - -#include -#include -#include - -int -main(int argc, char **argv) -{ - void *handle; - double (*cosine)(double); - char *error; - - handle = dlopen("libm.so", RTLD_LAZY); - if (!handle) { - fprintf(stderr, "%s\en", dlerror()); - exit(EXIT_FAILURE); - } - - dlerror(); /* Clear any existing error */ - - cosine = (double (*)(double)) dlsym(handle, "cos"); - - /* ISO の C 標準によれば、上のような、関数ポインターと 'void *' 間の - キャストを行った場合に得られる結果は不定である。 - POSIX.1\-2003 と POSIX.1\-2008 では、この状況は認められており、 - 以下のようなワークアラウンドが提案されている。 - - *(void **) (&cosine) = dlsym(handle, "cos"); - - この (ぶかっこうな) キャストは ISO の C 標準に従っており、 - コンパイラの警告を避けることができる。 - -.\" http://pubs.opengroup.org/onlinepubs/009695399/functions/dlsym.html#tag_03_112_08 -.\" http://pubs.opengroup.org/onlinepubs/9699919799/functions/dlsym.html#tag_16_96_07 -.\" http://austingroupbugs.net/view.php?id=74 - POSIX.1\-2008 の 2013 Technical Corrigendum (別名 POSIX.1\-2013) - では、 POSIX に準拠する実装では 'void *' から関数ポインターへの - キャストをサポートすることが要求されるようになり、状況が改善 - された。にもかかわらず、('\-pedantic' オプションを指定した gcc - などの) いくつかのコンパイラは、このプログラムで使用されている - キャストについて文句を言うのだ。 - - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\en", error); - exit(EXIT_FAILURE); - } - - printf("%f\en", (*cosine)(2.0)); - dlclose(handle); - exit(EXIT_SUCCESS); -} -.fi -.PP -このプログラムを "foo.c" に書いたとすると、以下のコマンドでプログラムを ビルドできる。 -.in +4n -.LP - gcc \-rdynamic \-o foo foo.c \-ldl -.in -.PP -\fB_init\fP() と \fB_fini\fP() をエクスポートするライブラリの場合は 以下のようにしてコンパイルする必要がある。 例として -\fIbar.c\fP をコンパイルする場合: -.in +4n -.LP - gcc \-shared \-nostartfiles \-o bar bar.c -.in -.SH 関連項目 -\fBld\fP(1), \fBldd\fP(1), \fBpldd\fP(1), \fBdl_iterate_phdr\fP(3), \fBrtld\-audit\fP(7), -\fBld.so\fP(8), \fBldconfig\fP(8) - -ld.so info pages, gcc info pages, ld info pages -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/drand48.3 b/manual/LDP_man-pages/draft/man3/drand48.3 deleted file mode 100644 index 97ee73dc..00000000 --- a/manual/LDP_man-pages/draft/man3/drand48.3 +++ /dev/null @@ -1,147 +0,0 @@ -.\" 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 19:46:03 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Mon Jan 20 20:04:05 JST 1997 -.\" by YOSHINO Takashi -.\" -.TH DRAND48 3 2014\-09\-21 "" "Linux Programmer's Manual" -.SH 名前 -drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, -lcong48 \- 一様分布する疑似乱数を生成する関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble drand48(void);\fP -.sp -\fBdouble erand48(unsigned short \fP\fIxsubi\fP\fB[3]);\fP -.sp -\fBlong int lrand48(void);\fP -.sp -\fBlong int nrand48(unsigned short \fP\fIxsubi\fP\fB[3]);\fP -.sp -\fBlong int mrand48(void);\fP -.sp -\fBlong int jrand48(unsigned short \fP\fIxsubi\fP\fB[3]);\fP -.sp -\fBvoid srand48(long int \fP\fIseedval\fP\fB);\fP -.sp -\fBunsigned short *seed48(unsigned short \fP\fIseed16v\fP\fB[3]);\fP -.sp -\fBvoid lcong48(unsigned short \fP\fIparam\fP\fB[7]);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -.\" .BR drand48 (), -.\" .BR erand48 (), -.\" .BR lrand48 (), -.\" .BR nrand48 (), -.\" .BR mrand48 (), -.\" .BR jrand48 (), -.\" .BR srand48 (), -.\" .BR seed48 (), -.\" .BR lcong48 (): -上記の全ての関数: _SVID_SOURCE || _XOPEN_SOURCE -.ad b -.SH 説明 -これらの関数は線形合同アルゴリズムと 48ビット整数演算を用いて 疑似乱数を生成する。 -.PP -関数 \fBdrand48\fP() と \fBerand48\fP() は、区間 [0.0, 1.0) で 一様分布する非負の倍精度浮動小数点実数値を返す。 -.PP -関数 \fBlrand48\fP() と \fBnrand48\fP() は 0 と 2^31 の間で一様分布する 非負のロング整数を返す。 -.PP -関数 \fBmrand48\fP() と \fBjrand48\fP() は \-2^31 と 2^31 の間で一様分布する符号付きロング整数を返す。 -.PP -関数 \fBsrand48\fP(), \fBseed48\fP(), \fBlcong48\fP() は初期化関数 である。 関数 \fBdrand48\fP(), -\fBlrand48\fP(), \fBmrand48\fP() を 使用する前に、これらの初期化関数のいずれかを呼ぶべきである。 関数 -\fBerand48\fP(), \fBnrand48\fP(), \fBjrand48\fP() は初めに 初期化関数を呼ぶことを必要としない。 -.PP -ここで説明しているすべての関数は 48ビットの整数の シーケンス (\fIXi\fP) を生成することで 機能している。生成方法は以下の線形合同の式による。 -.sp -.nf -.RS -\fBXn+1 = (aXn + c) mod m,\fP -.RE -.fi -.sp -ここで n >= 0 である。 パラメーターが \fIm\fP = 2^48 であるため、48ビット整数演算が行われている。 \fBlcong48\fP() -が呼ばれていない場合、\fIa\fP と \fIc\fP は以下の式で与えられる。 -.sp -.nf -.RS -\fBa = 0x5DEECE66D\fP -\fBc = 0xB\fP -.RE -.fi -.sp -関数 \fBdrand48\fP(), \fBerand48\fP(), \fBlrand48\fP(), \fBnrand48\fP(), \fBmrand48\fP(), -\fBjrand48\fP() で返される値は次のようにして計算される。 はじめに、次の48ビットの \fIXi\fP が計算される。 -そして、返すべきデータの型に依存した適切な ビット数が \fIXi\fP の上位ビットからコピーされる。 最後に、この値を返り値に変換する。 -.PP -関数 \fBdrand48\fP(), \fBlrand48\fP(), \fBmrand48\fP() は 最後に生成された48ビットの \fIXi\fP -を内部バッファーに格納する。 配列の形の引数 \fIxsubi\fP に個々の \fIXi\fP の値を 格納できるような領域を確保することを、 関数 -\fBerand48\fP(), \fBnrand48\fP(), \fBjrand48\fP() は、 呼び出し側のプログラムに要求する。 -これらの関数は、はじめてそれらの関数を呼ぶ前に \fIXi\fP の初期値を配列に 代入することで初期化される。 -.PP -初期化関数 \fBsrand48\fP() は、\fIXi\fP の 上位32ビットを引数 \fIseedval\fP に設定する。 -下位の16ビットは、適当に決められた値である0x330Eに設定される。 -.PP -初期化関数 \fBseed48\fP() は、\fIXi\fP の値を、 配列の形をした引数である \fIseed16v\fP の中で指定された -48ビットの値に設定する。 \fIXi\fP の前の値は内部バッファーにコピーされ、このバッファーへのポインターが \fBseed48\fP() -によって返される。 -.PP -初期化関数 \fBlcong48\fP() は使用者が \fIXi\fP, \fIa\fP, \fIc\fP の 初期値を指定するための関数である。 -配列の形をした引数の要素はそれぞれ、\fIparam[0\-2]\fP は \fIXi\fP を、 \fIparam[3\-5]\fP は \fIa\fP -を、\fIparam[6]\fP は \fIc\fP を指定するもの である。 \fBlcong48\fP() が呼ばれた後で、 \fBsrand48\fP() か -\fBseed48\fP() を呼ぶと、前述の \fIa\fP と \fIc\fP の 標準値が再び設定される。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBdrand48\fP(), \fBerand48\fP(), \fBlrand48\fP(), \fBnrand48\fP(), \fBmrand48\fP(), -\fBjrand48\fP(), \fBsrand48\fP(), \fBseed48\fP(), \fBlcong48\fP() は、 -乱数生成に使用する状態情報をグローバルに保持する。 そのため、 これらの関数はスレッドセーフではない。 -.SH 準拠 -SVr4, POSIX.1\-2001. -.SH 関連項目 -\fBrand\fP(3), \fBrandom\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/drand48_r.3 b/manual/LDP_man-pages/draft/man3/drand48_r.3 deleted file mode 100644 index 12e35576..00000000 --- a/manual/LDP_man-pages/draft/man3/drand48_r.3 +++ /dev/null @@ -1,111 +0,0 @@ -.\" Copyright 2003 Walter Harms, 2004 Andries Brouwer . -.\" -.\" %%%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 -.\" -.\" Created 2004-10-31. Text taken from a page by Walter Harms, 2003-09-08 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Sat Jan 29 04:28:24 JST 2005 -.\" by Yuichi SATO -.\" -.TH DRAND48_R 3 2013\-09\-09 GNU "Linux Programmer's Manual" -.SH 名前 -drand48_r, erand48_r, lrand48_r, nrand48_r, mrand48_r, jrand48_r, srand48_r, -seed48_r, lcong48_r \- 一様分布する疑似乱数をリエントラント (reentrant) に生成する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint drand48_r(struct drand48_data *\fP\fIbuffer\fP\fB, double *\fP\fIresult\fP\fB);\fP -.sp -\fBint erand48_r(unsigned short \fP\fIxsubi\fP\fB[3]\fP\fI,\fP -.br -\fB struct drand48_data *\fP\fIbuffer\fP\fB, double *\fP\fIresult\fP\fB);\fP -.sp -\fBint lrand48_r(struct drand48_data *\fP\fIbuffer\fP\fB, long int *\fP\fIresult\fP\fB);\fP -.sp -\fBint nrand48_r(unsigned short int \fP\fIxsubi[3]\fP\fB,\fP -.br -\fB struct drand48_data *\fP\fIbuffer\fP\fB, long int *\fP\fIresult\fP\fB);\fP -.sp -\fBint mrand48_r(struct drand48_data *\fP\fIbuffer\fP\fB,long int *\fP\fIresult\fP\fB);\fP -.sp -\fBint jrand48_r(unsigned short int \fP\fIxsubi[3]\fP\fB,\fP -.br -\fB struct drand48_data *\fP\fIbuffer\fP\fB, long int *\fP\fIresult\fP\fB);\fP -.sp -\fBint srand48_r(long int \fP\fIseedval\fP\fB, struct drand48_data *\fP\fIbuffer\fP\fB);\fP -.sp -\fBint seed48_r(unsigned short int \fP\fIseed16v[3]\fP\fB,\fP -.br -\fB struct drand48_data *\fP\fIbuffer\fP\fB);\fP -.sp -\fBint lcong48_r(unsigned short int \fP\fIparam[7]\fP\fB,\fP -.br -\fB struct drand48_data *\fP\fIbuffer\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -.\" .BR drand48_r (), -.\" .BR erand48_r (), -.\" .BR lrand48_r (), -.\" .BR nrand48_r (), -.\" .BR mrand48_r (), -.\" .BR jrand48_r (), -.\" .BR srand48_r (), -.\" .BR seed48_r (), -.\" .BR lcong48_r (): -上記の全ての関数: _SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE -.ad b -.SH 説明 -これらの関数は \fBdrand48\fP(3) で説明されている関数に類似するリエントラントな関数である。 大域的な乱数生成の状態を変更する代わりに、 -これらの関数は指定されたデータ \fIbuffer\fP を使う。 - -最初に使う前に、この構造体は初期化されていなければならない。 初期化は、たとえば 0 で埋めたり、関数 \fBsrand48_r\fP(), -\fBseed48_r\fP(), \fBlcong48_r\fP() のいずれかを呼び出すことによって行われる。 -.SH 返り値 -返り値は 0 である。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBdrand48_r\fP(), \fBerand48_r\fP(), \fBlrand48_r\fP(), \fBnrand48_r\fP(), -\fBmrand48_r\fP(), \fBjrand48_r\fP(), \fBsrand48_r\fP(), \fBseed48_r\fP(), -\fBlcong48_r\fP() はスレッドセーフである。 -.SH 準拠 -これらの関数は GNU による拡張であり、移植性はない。 -.SH 関連項目 -\fBdrand48\fP(3), \fBrand\fP(3), \fBrandom\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/duplocale.3 b/manual/LDP_man-pages/draft/man3/duplocale.3 index fd82c7b3..102b0635 100644 --- a/manual/LDP_man-pages/draft/man3/duplocale.3 +++ b/manual/LDP_man-pages/draft/man3/duplocale.3 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (C) 2014 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) @@ -28,20 +27,20 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH DUPLOCALE 3 2014\-03\-12 Linux "Linux Programmer's Manual" +.TH DUPLOCALE 3 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 duplocale \- ロケールオブジェクトを複製する .SH 書式 .nf \fB#include \fP - +.PP \fBlocale_t duplocale(locale_t \fP\fIlocobj\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBduplocale\fP(): .PD 0 .RS 4 @@ -55,7 +54,7 @@ _GNU_SOURCE .PD .SH 説明 \fBduplocale\fP() 関数は \fIlocobj\fP が参照するロケールオブジェクトの複製を作成する。 - +.PP \fIlocobj\fP が \fBLC_GLOBAL_LOCALE\fP の場合、 \fBduplocale\fP() は \fBsetlocale\fP(3) により判定されたグローバルロケールのコピーを含むロケールオブジェクトを作成する。 .SH 返り値 @@ -76,28 +75,30 @@ POSIX.1\-2008. .IP * 現在のロケールに対するハンドルを取得する。 このハンドルはロケールハンドルを受け取る他の関数 (\fBtoupper_l\fP(3) など) で使用できる。 これを行うには、 以下の呼び出しが返した値を \fBduplocale\fP() に渡せばよい。 - +.IP loc = uselocale((locale_t) 0); - .IP -上記の \fBuselocale\fP(3) の呼び出しは値 \fBLC_GLOBAL_LOCALE\fP を返すことがあり、 この値を -\fBtoupper_l\fP(3) などの関数に渡した場合の動作は不定なので、 この方法は必要である。 \fBduplocale\fP() -を呼び出すことで、確実に \fBLC_GLOBAL_LOCALE\fP が使用可能なロケールオブジェクトに変換することができる。 下記の「例」を参照。 +This technique is necessary, because the above \fBuselocale\fP(3) call may +return the value \fBLC_GLOBAL_LOCALE\fP, which results in undefined behavior if +passed to functions such as \fBtoupper_l\fP(3). Calling \fBduplocale\fP() can be +used to ensure that the \fBLC_GLOBAL_LOCALE\fP value is converted into a usable +locale object. See EXAMPLES, below. .PP \fBduplocale\fP() で作成された各ロケールオブジェクトは \fBfreelocale\fP(3) を使って解放すべきである。 -.SH 例 +.SH EXAMPLES 以下のプログラムでは、 \fBtoupper_l\fP(3) に渡す現在のロケールのハンドルを取得するのに \fBuselocale\fP(3) と \fBduplocale\fP() を使用する。 このプログラムはコマンドライン引き数として文字列を一つ取る。この文字列は、大文字に変換され、標準出力に表示される。 以下は使用例である。 +.PP .in +4n -.nf - +.EX $ \fB./a.out abc\fP ABC -.fi +.EE .in .SS プログラムのソース -.nf +\& +.EX #define _XOPEN_SOURCE 700 #include #include @@ -111,7 +112,6 @@ int main(int argc, char *argv[]) { locale_t loc, nloc; - char *p; if (argc != 2) { fprintf(stderr, "Usage: %s string\en", argv[0]); @@ -130,7 +130,7 @@ main(int argc, char *argv[]) if (nloc == (locale_t) 0) errExit("duplocale"); - for (p = argv[1]; *p; p++) + for (char *p = argv[1]; *p; p++) putchar(toupper_l(*p, nloc)); printf("\en"); @@ -139,11 +139,10 @@ main(int argc, char *argv[]) exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \fBfreelocale\fP(3), \fBnewlocale\fP(3), \fBsetlocale\fP(3), \fBuselocale\fP(3), \fBlocale\fP(5), \fBlocale\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/dysize.3 b/manual/LDP_man-pages/draft/man3/dysize.3 deleted file mode 100644 index f3fd2609..00000000 --- a/manual/LDP_man-pages/draft/man3/dysize.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Copyright 2001 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%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 -.\" -.\" aeb: some corrections -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 NAKANO Takeo all rights reserved. -.\" Translated Sun 6 Jan 2002 by NAKANO Takeo -.\" -.TH DYSIZE 3 2013\-09\-25 GNU "Linux Programmer's Manual" -.SH 名前 -dysize \- 与えた年の日数を返す -.SH 書式 -\fB#include \fP -.sp -\fBint dysize(int \fP\fIyear\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBdysize\fP(): _BSD_SOURCE || _SVID_SOURCE -.SH 説明 -この関数は通常の年には 365 を返し、うるう年には 366 を返す。 うるう年の計算は次の式による: -.sp -(year) %4 == 0 && ((year) %100 != 0 || (year) %400 == 0) -.sp -この式は \fI__isleap(year)\fP マクロで定義されており、 \fI\fP にもある。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBdysize\fP() 関数はスレッドセーフである。 -.SH 準拠 -この関数は SunOS 4.x で生まれた。 -.SH 注意 -.\" The SCO version of this function had a year-2000 problem. -これは互換用の関数に過ぎない。新しいプログラムでは使わないこと。 -.SH 関連項目 -\fBstrftime\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ecvt.3 b/manual/LDP_man-pages/draft/man3/ecvt.3 deleted file mode 100644 index 30113e3a..00000000 --- a/manual/LDP_man-pages/draft/man3/ecvt.3 +++ /dev/null @@ -1,108 +0,0 @@ -.\" 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 19:40:39 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Fri Jun 25 12:10:47 1999 by Andries Brouwer (aeb@cwi.nl) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Hiroaki Nagoya -.\" all rights reserved. -.\" Translated Mon Feb 10 1997 by Hiroaki Nagoya -.\" Updated 2000-01-08 by Kentaro Shirakata -.\" Updated 2009-04-22 by Kentaro Shirakata -.\" -.TH ECVT 3 2014\-08\-19 "" "Linux Programmer's Manual" -.SH 名前 -ecvt, fcvt \- 浮動小数点数の文字列への変換 -.SH 書式 -\fB#include \fP -.sp -\fBchar *ecvt(double \fP\fInumber\fP\fB, int \fP\fIndigits\fP\fB, int *\fP\fIdecpt\fP\fB,\fP -\fBint *\fP\fIsign\fP\fB);\fP -.sp -\fBchar *fcvt(double \fP\fInumber\fP\fB, int \fP\fIndigits\fP\fB, int *\fP\fIdecpt\fP\fB,\fP -\fBint *\fP\fIsign\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBecvt\fP(), \fBfcvt\fP(): -.ad l -.RS 4 -.PD 0 -.TP 4 -glibc 2.12 以降: -.nf -_SVID_SOURCE || - (_XOPEN_SOURCE\ >=\ 500 || - _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) && - !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600) -.fi -.TP 4 -glibc 2.12 より前: -_SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.PD -.RE -.ad b -.SH 説明 -関数 \fBecvt\fP() は \fInumber\fP をヌル文字で終端された \fIndigits\fP 文字の文字列へ変換し、その文字列へのポインターを返す -(\fIndigits\fP が \fIdouble\fP の精度によって決定されるシステム依存の上限値より大きい場合は、 その条件値が \fIndigits\fP -の値となる)。 \fInumber\fP が 0 でなければ、最上位の桁は 0 以外である。 最下位の桁は丸められる。 -文字列には小数点は含まれない。そのかわりに、文字列の先頭からの小数点の 位置が \fI*decpt\fP に保持される。 \fI*decpt\fP -が負の値の場合、小数点が文字列の先頭の左側にあることを意味する。 もし(\fInumber\fPの)符号が負ならば \fI*sign\fP は 0 以外の値に、 -そうでなければ 0 に設定される。 \fInumber\fP が 0 なら、\fI*decpt\fP が 0 か 1 かは未規定である。 -.PP -関数 \fBfcvt\fP() は \fBecvt\fP() と同じ機能を持つが、\fIndigits\fP は小数点以下の文字数を指定する。 -.SH 返り値 -関数 \fBecvt\fP() と \fBfcvt\fP() は \fInumber\fP の ASCII 表現を含む 静的な領域内の文字列へのポインターを返す。 -この文字列は \fBecvt\fP() や \fBfcvt\fP() の呼び出しのたびに上書きされる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBecvt\fP() と \fBfcvt\fP() はスレッドセーフではない。 -.SH 準拠 -SVr2。 POSIX.1\-2001 では「過去の名残 (LEGACY)」と位置付けられている。 POSIX.1\-2008 では \fBecvt\fP() -と \fBfcvt\fP() の仕様が削除され、代わりに \fBsprintf\fP(3) の使用が推奨されている(しかし \fBsnprintf\fP(3) -がより適切かもしれない)。 -.SH 注意 -.\" Linux libc4 and libc5 specified the type of -.\" .I ndigits -.\" as -.\" .IR size_t . -小数点にピリオドを使わないロケールもある。 -.SH 関連項目 -\fBecvt_r\fP(3), \fBgcvt\fP(3), \fBqecvt\fP(3), \fBsetlocale\fP(3), \fBsprintf\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ecvt_r.3 b/manual/LDP_man-pages/draft/man3/ecvt_r.3 deleted file mode 100644 index 257f7de7..00000000 --- a/manual/LDP_man-pages/draft/man3/ecvt_r.3 +++ /dev/null @@ -1,86 +0,0 @@ -.\" Copyright (C) 2002 Andries Brouwer -.\" -.\" %%%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 replaces an earlier man page written by Walter Harms -.\" . -.\" -.\" Corrected return types; from Fabian; 2004-10-05 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Sun Sep 22 09:46:55 2002 -.\" by Akihiro MOTOKI -.\" -.TH ECVT_R 3 2007\-07\-26 GNU "Linux Programmer's Manual" -.SH 名前 -ecvt_r, fcvt_r, qecvt_r, qfcvt_r \- 浮動小数点数の文字列への変換 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint ecvt_r(double \fP\fInumber\fP\fB, int \fP\fIndigits\fP\fB, int *\fP\fIdecpt\fP\fB,\fP -\fB int *\fP\fIsign\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIlen\fP\fB);\fP -.sp -\fBint fcvt_r(double \fP\fInumber\fP\fB, int \fP\fIndigits\fP\fB, int *\fP\fIdecpt\fP\fB,\fP -\fB int *\fP\fIsign\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIlen\fP\fB);\fP -.sp -\fBint qecvt_r(long double \fP\fInumber\fP\fB, int \fP\fIndigits\fP\fB, int *\fP\fIdecpt\fP\fB,\fP -\fB int *\fP\fIsign\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIlen\fP\fB);\fP -.sp -\fBint qfcvt_r(long double \fP\fInumber\fP\fB, int \fP\fIndigits\fP\fB, int *\fP\fIdecpt\fP\fB,\fP -\fB int *\fP\fIsign\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIlen\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBecvt_r\fP(), \fBfcvt_r\fP(), \fBqecvt_r\fP(), \fBqfcvt_r\fP(): -.RS 4 -_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 -.RE -.ad b -.SH 説明 -関数 \fBecvt_r\fP(), \fBfcvt_r\fP(), \fBqecvt_r\fP(), \fBqfcvt_r\fP() は、それぞれ \fBecvt\fP(3), -\fBfcvt\fP(3), \fBqecvt\fP(3), \fBqfcvt\fP(3) と同じであるが、 静的バッファーの代わりに、長さ \fIlen\fP の指定された -\fIbuf\fP に結果を格納する点が異なる。 \fBecvt\fP(3), \fBqecvt\fP(3) を参照のこと。 -.SH 返り値 -これらの関数は成功すると 0 を、それ以外は \-1 を返す。 -.SH 準拠 -これらの関数は GNU による拡張である。 -.SH 注意 -これらの関数は廃止された。代わりに \fBsprintf\fP(3) の使用を推奨する。 -.SH 関連項目 -\fBecvt\fP(3), \fBqecvt\fP(3), \fBsprintf\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/encrypt.3 b/manual/LDP_man-pages/draft/man3/encrypt.3 deleted file mode 100644 index 103a86f4..00000000 --- a/manual/LDP_man-pages/draft/man3/encrypt.3 +++ /dev/null @@ -1,143 +0,0 @@ -.\" Copyright 2000 Nicolás Lichtmaier -.\" Created 2000-07-22 00:52-0300 -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified 2002-07-23 19:21:35 CEST 2002 Walter Harms -.\" -.\" -.\" Modified 2003-04-04, aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2000-2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Sun Sep 24 06:18:14 JST 2000 -.\" by Yuichi SATO -.\" Updated & Modified Sun Sep 7 13:20:43 JST 2003 -.\" by Yuichi SATO -.\" Updated & Modified Sat Jan 17 01:27:31 JST 2004 by Yuichi SATO -.\" -.TH ENCRYPT 3 2013\-07\-22 "" "Linux Programmer's Manual" -.SH 名前 -encrypt, setkey, encrypt_r, setkey_r \- 64 ビットのメッセージを暗号化する -.SH 書式 -\fB#define _XOPEN_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBvoid encrypt(char \fP\fIblock\fP\fB[64], int \fP\fIedflag\fP\fB);\fP -.sp -\fB#define _XOPEN_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBvoid setkey(const char *\fP\fIkey\fP\fB);\fP -.sp -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBvoid setkey_r(const char *\fP\fIkey\fP\fB, struct crypt_data *\fP\fIdata\fP\fB);\fP -.br -\fBvoid encrypt_r(char *\fP\fIblock\fP\fB, int \fP\fIedflag\fP\fB, struct crypt_data -*\fP\fIdata\fP\fB);\fP -.sp -これらの関数は \fI\-lcrypt\fP でリンクする必要がある。 -.SH 説明 -これらの関数は、64 ビットのメッセージの暗号化と復号化を行う。 \fBsetkey\fP() 関数は \fBencrypt\fP() -によって使われる暗号鍵を設定する。 ここで使われる引き数 \fIkey\fP は 64 バイトの配列であり、各バイトは数値 1 または 0 である。 -n=8*i\-1 に対するバイト key[n] は無視されるので、 有効な暗号鍵の長さは 56 ビットになる。 -.PP -\fBencrypt\fP() 関数は、 \fIedflag\fP が 0 の場合は暗号化し、1 が渡された場合は復号化するというように、 -渡されたバッファーを変更する。 引き数 \fIkey\fP と同様に、 \fIblock\fP はエンコードされた実際の値を表現するビットの配列である。 -結果はこの同じ配列を使って返される。 -.PP -これら 2 つの関数はリエントラント (reentrant) ではない。 つまり暗号鍵データは静的な領域に保存される。 関数 \fBsetkey_r\fP() -と \fBencrypt_r\fP() はリエントラントなバージョンである。 これらの関数は暗号鍵データを保持するために以下のような構造体を使う。 -.in +4n -.nf - -struct crypt_data { - char keysched[16 * 8]; - char sb0[32768]; - char sb1[32768]; - char sb2[32768]; - char sb3[32768]; - char crypt_3_buf[14]; - char current_salt[2]; - long int current_saltbits; - int direction; - int initialized; -}; -.fi -.in -.PP -\fBsetkey_r\fP() を呼び出す前には、 \fIdata\->initialized\fP を 0 に設定すること。 -.SH 返り値 -これらの関数は、なにも値を返さない。 -.SH エラー -上記の関数を呼び出す前に \fIerrno\fP を 0 に設定すること。 成功した場合、この値は変更されない。 -.TP -\fBENOSYS\fP -(例えば以前のアメリカ合衆国輸出規制などにより) この関数が提供されていない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBencrypt\fP() と \fBsetkey\fP() はスレッドセーフではない。 -.LP -関数 \fBencrypt_r\fP() と \fBsetkey_r\fP() はスレッドセーフである。 -.SH 準拠 -関数 \fBencrypt\fP() と \fBsetkey\fP() は SVr4, SUSv2, and POSIX.1\-2001 に準拠する。 関数 -\fBencrypt_r\fP() と \fBsetkey_r\fP() は GNU 拡張である。 -.SH 注意 -glibc 2.2 では、これらの関数は DES アルゴリズムを使う。 -.SH 例 -この例を glibc でコンパイルするには libcrypt とリンクする必要がある。 実際に動作させるためには、配列 \fIkey[]\fP と -\fItxt[]\fP に有効なビットパターンを指定しなければならない。 -.sp -.nf -#define _XOPEN_SOURCE -#include -#include - -int -main(void) -{ - char key[64]; /* bit pattern for key */ - char txt[64]; /* bit pattern for messages */ - - setkey(key); - encrypt(txt, 0); /* encode */ - encrypt(txt, 1); /* decode */ -} -.fi -.SH 関連項目 -.\" .BR fcrypt (3) -\fBcbc_crypt\fP(3), \fBcrypt\fP(3), \fBecb_crypt\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/end.3 b/manual/LDP_man-pages/draft/man3/end.3 index aa7ec1f5..7ad0c7e2 100644 --- a/manual/LDP_man-pages/draft/man3/end.3 +++ b/manual/LDP_man-pages/draft/man3/end.3 @@ -33,7 +33,7 @@ .\" all rights reserved. .\" Translated 2008-08-21, Akihiro MOTOKI , LDP v3.05 .\" -.TH END 3 2008\-07\-17 GNU "Linux Programmer's Manual" +.TH END 3 2020\-06\-09 GNU "Linux Programmer's Manual" .SH 名前 etext, edata, end \- プログラムセグメントの終わり .SH 書式 @@ -57,28 +57,28 @@ etext, edata, end \- プログラムセグメントの終わり これらのシンボルは長年ほとんどの UNIX システムで提供されているが、 標準化されてはいない。注意して使うこと。 .SH 注意 プログラムではこれらのシンボルは明示的に宣言しなければならない。 これらはどのヘッダーファイルでも定義されていない。 - +.PP いくつかのシステムでは、これらのシンボルの名前は前にアンダースコアが 付いていて、 \fI_etext\fP, \fI_edata\fP, \fI_end\fP となっている。 Linux でコンパイルされたプログラムでは、 これらのシンボルでも定義される。 - +.PP プログラムの実行開始時に、プログラムブレークは \fI&end\fP の近くのどこか (おそらく次のページの先頭) になる。 しかしながら、 \fBbrk\fP(2) や \fBmalloc\fP(3) でメモリーが割り当てられるに連れて、プログラムブレークは変化していく。 引き数に 0 を指定して \fBsbrk\fP(2) を呼び出すことで、プログラムブレークの現在値を知ることができる。 -.SH 例 +.SH EXAMPLES 下記のプログラムを実行すると、次のような出力が得られる。 +.PP .in +4n -.nf - +.EX $\fB ./a.out\fP First address past: program text (etext) 0x8048568 initialized data (edata) 0x804a01c uninitialized data (end) 0x804a024 -.fi +.EE .in .SS プログラムのソース \& -.nf +.EX #include #include @@ -95,10 +95,9 @@ main(int argc, char *argv[]) exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \fBobjdump\fP(1), \fBreadelf\fP(1), \fBsbrk\fP(2), \fBelf\fP(5) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/endian.3 b/manual/LDP_man-pages/draft/man3/endian.3 index ad7c3927..022b221c 100644 --- a/manual/LDP_man-pages/draft/man3/endian.3 +++ b/manual/LDP_man-pages/draft/man3/endian.3 @@ -35,49 +35,62 @@ .\" all rights reserved. .\" Translated 2012-05-05, Akihiro MOTOKI .\" -.TH ENDIAN 3 2010\-09\-10 GNU "Linux Programmer's Manual" +.TH ENDIAN 3 2020\-11\-01 GNU "Linux Programmer's Manual" .SH 名前 htobe16, htole16, be16toh, le16toh, htobe32, htole32, be32toh, le32toh, htobe64, htole64, be64toh, le64toh \- ホストバイトオーダーと ビッグ/リトルエンディアンバイトオーダーの間で値の変換を行う .SH 書式 .nf -\fB#define _BSD_SOURCE\fP /* feature_test_macros(7) 参照 */ \fB#include \fP - +.PP \fBuint16_t htobe16(uint16_t \fP\fIhost_16bits\fP\fB);\fP \fBuint16_t htole16(uint16_t \fP\fIhost_16bits\fP\fB);\fP \fBuint16_t be16toh(uint16_t \fP\fIbig_endian_16bits\fP\fB);\fP \fBuint16_t le16toh(uint16_t \fP\fIlittle_endian_16bits\fP\fB);\fP - +.PP \fBuint32_t htobe32(uint32_t \fP\fIhost_32bits\fP\fB);\fP \fBuint32_t htole32(uint32_t \fP\fIhost_32bits\fP\fB);\fP \fBuint32_t be32toh(uint32_t \fP\fIbig_endian_32bits\fP\fB);\fP \fBuint32_t le32toh(uint32_t \fP\fIlittle_endian_32bits\fP\fB);\fP - +.PP \fBuint64_t htobe64(uint64_t \fP\fIhost_64bits\fP\fB);\fP \fBuint64_t htole64(uint64_t \fP\fIhost_64bits\fP\fB);\fP \fBuint64_t be64toh(uint64_t \fP\fIbig_endian_64bits\fP\fB);\fP \fBuint64_t le64toh(uint64_t \fP\fIlittle_endian_64bits\fP\fB);\fP .fi +.PP +.RS -4 +glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): +.RE +.PP +\fBhtobe16\fP(), \fBhtole16\fP(), \fBbe16toh\fP(), \fBle16toh\fP(), \fBhtobe32\fP(), +\fBhtole32\fP(), \fBbe32toh\fP(), \fBle32toh\fP(), \fBhtobe64\fP(), \fBhtole64\fP(), +\fBbe64toh\fP(), \fBle64toh\fP(): +.nf + Since glibc 2.19: + _DEFAULT_SOURCE + In glibc up to and including 2.19: + _BSD_SOURCE +.fi .SH 説明 これらの関数は、整数値のバイトエンコーディングを、 使用中の CPU ("ホスト") のバイトオーダーから リトルエンディアンやビッグエンディアンバイトオーダーへの変換や その逆の変換を行う。 - +.PP 各関数の名前に付いている数字 \fInn\fP は、その関数が扱う整数のサイズ (16, 32, 64 ビットのどれか) を示している。 - +.PP 名前が "htobe\fInn\fP" という形の関数は、ホストバイトオーダーから ビッグエンディアンバイトオーダーへの変換を行う。 - +.PP 名前が "htole\fInn\fP" という形の関数は、ホストバイトオーダーから リトルエンディアンバイトオーダーへの変換を行う。 - +.PP 名前が "be\fInn\fPtoh" という形の関数は、ビッグエンディアンバイトオーダー からホストバイトオーダーへの変換を行う。 - +.PP 名前が "le\fInn\fPtoh" という形の関数は、リトルエンディアンバイトオーダー からホストバイトオーダーへの変換を行う。 .SH バージョン @@ -95,31 +108,31 @@ NetBSD, FreeBSD, glibc では "be32toh" となる)。 .SH 注意 これらの関数は、前からある \fBbyteorder\fP(3) 系の関数と同じである。 例えば、 \fBbe32toh\fP() は \fBntohl\fP() と等価である。 - +.PP \fBbyteorder\fP(3) 系の関数のメリットは、これらが 全ての UNIX システムで利用可能な標準関数である点である。 一方で、これらの関数は TCP/IP 処理で使用されることを想定して 設計されたため、このページで説明している 64 ビット版や リトルエンディアン版などが存在しない。 -.SH 例 +.SH EXAMPLES 以下のプログラムは、整数をホストバイトオーダーからリトルエンディアンと ビットエンディアンの両方のバイトオーダーに変換し、その結果を表示する。 ホストバイトオーダーはリトルエンディアンかビットエンディアンのいずれか なので、変換に意味があるのはどちらか一方だけである。 このプログラムを x86\-32 などのリトルエンディアンのシステムで実行した 場合の実行結果は下記のようになる。 +.PP .in +4n -.nf - +.EX $ \fB./a.out\fP x.u32 = 0x44332211 htole32(x.u32) = 0x44332211 htobe32(x.u32) = 0x11223344 -.fi +.EE .in .SS プログラムのソース \& -.nf +.EX #include #include #include @@ -138,16 +151,15 @@ main(int argc, char *argv[]) x.arr[2] = 0x33; x.arr[3] = 0x44; /* Highest\-address byte */ - printf("x.u32 = 0x%x\en", x.u32); - printf("htole32(x.u32) = 0x%x\en", htole32(x.u32)); - printf("htobe32(x.u32) = 0x%x\en", htobe32(x.u32)); + printf("x.u32 = %#x\en", x.u32); + printf("htole32(x.u32) = %#x\en", htole32(x.u32)); + printf("htobe32(x.u32) = %#x\en", htobe32(x.u32)); exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 -\fBbyteorder\fP(3) +\fBbswap\fP(3), \fBbyteorder\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/envz_add.3 b/manual/LDP_man-pages/draft/man3/envz_add.3 deleted file mode 100644 index 35097e87..00000000 --- a/manual/LDP_man-pages/draft/man3/envz_add.3 +++ /dev/null @@ -1,102 +0,0 @@ -.\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" based on the description in glibc source and infopages -.\" -.\" Corrections and additions, aeb -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI, all rights reserved. -.\" Translated Mon Feb 2 2003 by Akihiro MOTOKI -.\" -.TH ENVZ_ADD 3 2014\-05\-28 "" "Linux Programmer's Manual" -.SH 名前 -envz_add, envz_entry, envz_get, envz_merge, envz_remove, envz_strip \- -環境変数文字列の操作 -.SH 書式 -.nf -\fB#include \fP - -\fBerror_t envz_add(char **\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB,\fP -\fB const char *\fP\fIname\fP\fB, const char *\fP\fIvalue\fP\fB);\fP - -\fBchar *envz_entry(const char *\fP\fIenvz\fP\fB, size_t \fP\fIenvz_len\fP\fB, const char *\fP\fIname\fP\fB);\fP - -\fBchar *envz_get(const char *\fP\fIenvz\fP\fB, size_t \fP\fIenvz_len\fP\fB, const char *\fP\fIname\fP\fB);\fP - -\fBerror_t envz_merge(char **\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB,\fP -\fB const char *\fP\fIenvz2\fP\fB, size_t \fP\fIenvz2_len\fP\fB, int \fP\fIoverride\fP\fB);\fP - -\fBvoid envz_remove(char **\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB, const char *\fP\fIname\fP\fB);\fP - -\fBvoid envz_strip(char **\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB);\fP -.fi -.SH 説明 -これらの関数は glibc 固有である。 -.LP -argz vector は長さ情報付きの文字バッファーへのポインターである。 \fBargz_add\fP(3) を参照のこと。 envz vector -は、文字列が "name=value (名前=値)" の形式になっている特別な argz vector である。 最初の \(aq=\(aq -以降はすべて値とみなされる。\(aq=\(aq がなければ、 値は NULL と解釈される。(文字列の一番最後の文字が \(aq=\(aq -の場合、値は空文字列 "" と解釈される。) -.LP -これらの関数は envz vector を操作するためのものである。 -.LP -\fBenvz_add\fP() は、文字列 "\fIname\fP=\fIvalue\fP" (\fIvalue\fP が NULL でない場合) または -"\fIname\fP" (\fIvalue\fP が NULL の場合) を envz vector (\fI*envz\fP,\ \fI*envz_len\fP) -に追加し、 \fI*envz\fP と \fI*envz_len\fP を更新する。 \fIname\fP -と同じ名前を持つエントリーがあった場合、元のエントリーは削除される。 -.LP -\fBenvz_entry\fP() は、envz vector (\fIenvz\fP,\ \fIenvz_len\fP) から名前が \fIname\fP -のエントリーを検索する。 見つかった場合はそのエントリーを返し、見つからなかった場合は NULL を返す。 -.LP -\fBenvz_get\fP() は、envz vector (\fIenvz\fP,\ \fIenvz_len\fP) から名前が \fIname\fP -のエントリーを検索する。 見つかった場合はエントリーの値を返し、見つからなかった場合は NULL を返す。 (値は NULL -の場合もあることに注意すること。名前が \fIname\fP のエントリーに \(aq=\(aq 符号がない場合が該当する。) -.LP -\fBenvz_merge\fP() は、 \fBenvz_add\fP() と同じように \fIenvz2\fP の各エントリーを \fI*envz\fP に追加する。 -\fIoverride\fP が真の場合、 \fIenvz2\fP の値で \fI*envz\fP 内の同じ名前をもつ値は上書きされる。 偽の場合は上書きされない。 -.LP -\fBenvz_remove\fP() は、名前が \fIname\fP のエントリーがあれば (\fI*envz\fP,\ \fI*envz_len\fP) -から削除する。 -.LP -\fBenvz_strip\fP() は、値が NULL のエントリーをすべて削除する。 -.SH 返り値 -メモリー割り当てを行う envz 関数群はすべて \fIerror_t\fP 型の返り値を持つ。 成功した場合は 0 を返し、割り当てエラーが発生した場合は -\fBENOMEM\fP を返す。 -.SH 準拠 -これらの関数は GNU による拡張である。注意して使用すること。 -.SH 例 -.nf -#include -#include -#include - -int -main(int argc, char *argv[], char *envp[]) -{ - int i, e_len = 0; - char *str; - - for (i = 0; envp[i] != NULL; i++) - e_len += strlen(envp[i]) + 1; - - str = envz_entry(*envp, e_len, "HOME"); - printf("%s\en", str); - str = envz_get(*envp, e_len, "HOME"); - printf("%s\en", str); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBargz_add\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/erf.3 b/manual/LDP_man-pages/draft/man3/erf.3 deleted file mode 100644 index 9f1a92d9..00000000 --- a/manual/LDP_man-pages/draft/man3/erf.3 +++ /dev/null @@ -1,123 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Mon Jan 20 20:17:40 JST 1997 -.\" by YOSHINO Takashi -.\" Updated Tue Aug 5 23:16:48 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated & Modified Tue Feb 15 04:46:24 JST 2005 -.\" by Yuichi SATO -.\" -.TH ERF 3 2013\-10\-29 GNU "Linux Programmer's Manual" -.SH 名前 -erf, erff, erfl \- 誤差関数 -.SH 書式 -.nf -\fB#include \fP - -\fBdouble erf(double \fP\fIx\fP\fB);\fP -\fBfloat erff(float \fP\fIx\fP\fB);\fP -\fBlong double erfl(long double \fP\fIx\fP\fB);\fP - -.fi -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBerf\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE || -_POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBerff\fP(), \fBerfl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -\fBerf\fP() は \fIx\fP の誤差関数を返す関数で、以下のように定義されている。 -.TP - erf(x) = 2/sqrt(pi)* integral from 0 to x of exp(\-t*t) dt -.SH 返り値 -成功すると、これらの関数は \fIx\fP の誤差関数を返す。 返り値は [\-1,\ 1] の範囲となる。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が +0 (\-0) の場合、+0 (\-0) が返される。 - -\fIx\fP が正の無限大 (負の無限大) の場合、+1 (\-1) が返される。 - -\fIx\fP が非正規化数の場合、範囲エラー (range error) が発生し、 返り値は 2*x/sqrt(pi) となる。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -範囲エラー (range error): 結果がアンダーフローする (\fIx\fP が非正規化数) -.\" .I errno -.\" is set to -.\" .BR ERANGE . -アンダーフロー浮動小数点例外 (\fBFE_UNDERFLOW\fP) が上がる。 -.PP -.\" FIXME . Is it intentional that these functions do not set errno? -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6785 -これらの関数は \fIerrno\fP を設定しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBerf\fP(), \fBerff\fP(), \fBerfl\fP() はスレッドセーフである。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/erfc.3 b/manual/LDP_man-pages/draft/man3/erfc.3 deleted file mode 100644 index 6509d54e..00000000 --- a/manual/LDP_man-pages/draft/man3/erfc.3 +++ /dev/null @@ -1,116 +0,0 @@ -.\" Copyright 2008, Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2008 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2008-09-15, Akihiro MOTOKI -.\" -.TH ERFC 3 2013\-10\-29 GNU "Linux Programmer's Manual" -.SH 名前 -erfc, erfcf, erfcl \- 相補誤差関数 -.SH 書式 -.nf -\fB#include \fP - -\fBdouble erfc(double \fP\fIx\fP\fB);\fP -\fBfloat erfcf(float \fP\fIx\fP\fB);\fP -\fBlong double erfcl(long double \fP\fIx\fP\fB);\fP - -.fi -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBerfc\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE || -_POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBerfcf\fP(), \fBerfcl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -\fBerfc\fP() 関数は \fIx\fP の相補誤差関数、つまり 1.0 \- erf(x) を返す。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の相補誤差関数を返す。 返り値は [0,2] の範囲となる。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が +0 か \-0 の場合、1 が返される。 - -\fIx\fP が正の無限大の場合、+0 が返される。 - -\fIx\fP が負の無限大の場合、+2 が返される。 - -関数の結果がアンダーフローし、表現できない値となる場合は、 返り値は 0.0 となる。 - -.\" e.g., erfc(27) on x86-32 -関数の結果がアンダーフローするが、 表現できる値 (つまり非正規化数 (subnormal)) となる場合は、 その値が返され、範囲エラー (range -error) が発生する。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -範囲エラー: 結果のアンダーフロー (結果が非正規化数) -.\" .I errno -.\" is set to -.\" .BR ERANGE . -アンダーフロー浮動小数点例外 (\fBFE_UNDERFLOW\fP) が上がる。 -.PP -.\" FIXME . Is it intentional that these functions do not set errno? -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6785 -これらの関数は \fIerrno\fP を設定しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBerfc\fP(), \fBerfcf\fP(), \fBerfcl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD にも準拠している。 -.SH 注意 -関数 \fBerfc\fP(), \fBerfcf\fP(), \fBerfcl\fP() が提供されているのは、 \fIx\fP が大きな値の場合に (erf(x) の値は -1 に近付いていくことで) 1\-erf(x) の計算において精度が失われるのを避けるためである。 -.SH 関連項目 -\fBcerf\fP(3), \fBerf\fP(3), \fBexp\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/err.3 b/manual/LDP_man-pages/draft/man3/err.3 deleted file mode 100644 index 72074d94..00000000 --- a/manual/LDP_man-pages/draft/man3/err.3 +++ /dev/null @@ -1,137 +0,0 @@ -.\" Copyright (c) 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 -.\" -.\" From: @(#)err.3 8.1 (Berkeley) 6/9/93 -.\" $FreeBSD: src/lib/libc/gen/err.3,v 1.11.2.5 2001/08/17 15:42:32 ru Exp $ -.\" -.\" 2011-09-10, mtk, Converted from mdoc to man macros -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2003-03-10, Akihiro MOTOKI -.\" -.TH ERR 3 2013\-12\-30 Linux "Linux Programmer's Manual" -.SH 名前 -err, verr, errx, verrx, warn, vwarn, warnx, vwarnx \- エラーメッセージを整形する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid err(int \fP\fIeval\fP\fB, const char *\fP\fIfmt\fP\fB, ...);\fP -.sp -\fBvoid errx(int \fP\fIeval\fP\fB, const char *\fP\fIfmt\fP\fB, ...);\fP -.sp -\fBvoid warn(const char *\fP\fIfmt\fP\fB, ...);\fP -.sp -\fBvoid warnx(const char *\fP\fIfmt\fP\fB, ...);\fP -.sp -\fB#include \fP -.sp -\fBvoid verr(int \fP\fIeval\fP\fB, const char *\fP\fIfmt\fP\fB, va_list \fP\fIargs\fP\fB);\fP -.sp -\fBvoid verrx(int \fP\fIeval\fP\fB, const char *\fP\fIfmt\fP\fB, va_list \fP\fIargs\fP\fB);\fP -.sp -\fBvoid vwarn(const char *\fP\fIfmt\fP\fB, va_list \fP\fIargs\fP\fB);\fP -.sp -\fBvoid vwarnx(const char *\fP\fIfmt\fP\fB, va_list \fP\fIargs\fP\fB);\fP -.fi -.SH 説明 -\fBerr\fP() 関数群と \fBwarn\fP() 関数群は、エラーメッセージを整形して標準エラー出力に表示する。 -どの関数の場合も、(ディレクトリ部分を省いた)プログラム名、 コロン 1個、スペース 1個が出力される。 \fIfmt\fP 引き数が NULL でない場合、 -\fBprintf\fP(3) と同様に整形が行われ、エラーメッセージが出力される。 出力は改行文字で終わる。 -.PP -関数 \fBerr\fP(), \fBverr\fP(), \fBwarn\fP(), \fBvwarn\fP() は、グローバル変数 \fIerrno\fP に基づいて -\fBstrerror\fP(3) から得たエラーメッセージを出力する。 \fIfmt\fP 引き数が NULL -でない場合は、一個ずつのコロンとスペースに続けて出力する。 -.PP -関数 \fBerrx\fP(), \fBwarnx\fP() はエラーメッセージを付け加えない。 -.PP -関数 \fBerr\fP(), \fBverr\fP(), \fBerrx\fP(), \fBverrx\fP() は返り値を返さないが、引き数 \fIeval\fP の値を -exit status に設定し終了する。 -.SH 準拠 -.\" .SH HISTORY -.\" The -.\" .BR err () -.\" and -.\" .BR warn () -.\" functions first appeared in -.\" 4.4BSD. -これらの関数は非標準の BSD 拡張である。 -.SH 例 -現在の \fIerrno\fP の情報を表示し、終了する: -.in +4n -.nf - -p = malloc(size); -if (p == NULL) - err(1, NULL); -fd = open(file_name, O_RDONLY, 0); -if (fd == \-1) - err(1, "%s", file_name); -.fi -.in -.PP -エラーメッセージを表示し、終了する: -.in +4n -.nf - -if (tm.tm_hour < START_TIME) - errx(1, "too early, wait until %s", start_time_string); -.fi -.in -.PP -エラーを警告表示する: -.in +4n -.nf - -fd = open(raw_device, O_RDONLY, 0); -if (fd == \-1) - warnx("%s: %s: trying the block device", - raw_device, strerror(errno)); -fd = open(block_device, O_RDONLY, 0); -if (fd == \-1) - err(1, "%s", block_device); -.fi -.in -.SH 関連項目 -\fBerror\fP(3), \fBexit\fP(3), \fBperror\fP(3), \fBprintf\fP(3), \fBstrerror\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/errno.3 b/manual/LDP_man-pages/draft/man3/errno.3 deleted file mode 100644 index bd16cea6..00000000 --- a/manual/LDP_man-pages/draft/man3/errno.3 +++ /dev/null @@ -1,500 +0,0 @@ -.\" Copyright (c) 1996 Andries Brouwer (aeb@cwi.nl) -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" 5 Oct 2002, Modified by Michael Kerrisk -.\" Updated for POSIX.1 2001 -.\" 2004-12-17 Martin Schulze , mtk -.\" Removed errno declaration prototype, added notes -.\" 2006-02-09 Kurt Wall, mtk -.\" Added non-POSIX errors -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated 1997-12-24, HIROFUMI Nishizuka -.\" Updated 1999-03-01, NAKANO Takeo -.\" Updated 1999-08-21, NAKANO Takeo -.\" Updated 2003-07-03, Akihiro MOTOKI -.\" Updated 2005-03-15, Akihiro MOTOKI -.\" Updated 2006-02-15, Akihiro MOTOKI, Catch up to LDP v2.23 -.\" Updated 2006-07-14, Akihiro MOTOKI, Catch up to LDP v2.34 -.\" Updated 2008-08-07, Akihiro MOTOKI, Catch up to LDP v3.05 -.\" -.TH ERRNO 3 2015\-01\-22 "" "Linux Programmer's Manual" -.SH 名前 -errno \- 直近に発生したエラーの番号 -.SH 書式 -.\".sp -.\".BI "extern int " errno ; -\fB#include \fP -.SH 説明 -ヘッダーファイル \fI\fP で整数型の変数 \fIerrno\fP が定義されており、 -システムコールやいくつかのライブラリ関数は、エラーが発生した際に この変数にその原因を示す値を設定する。 この値は呼び出しの返り値がエラー -(ほとんどのシステムコールでは \-1 で、ほとんどのライブラリ関数では \-1 か NULL) を示したときに -のみ意味を持つが、ライブラリ関数は成功した場合も \fIerrno\fP を変更することが許されている。 - -有効なエラー番号はいずれも 0 以外の値を持つ。 どのシステムコールもライブラリ関数も \fIerrno\fP を 0 に設定することはない。 - -いくつかのシステムコールやライブラリ関数 (例えば \fBgetpriority\fP(2)) では、成功した場合の有効な返り値として \-1 -が返されることがある。 このような場合、成功なのかエラーなのかを区別するためには、 呼び出しの前に \fIerrno\fP を 0 -に設定しておけばよい。呼び出しの返り値がエラー発生の可能性を 示すものだった場合には、 \fIerrno\fP が 0 以外の値かを見て確認すればよい。 - -\fIerrno\fP は、ISO C standard で \fIint\fP 型の変更可能な左辺値 として定義されており、明示的に宣言を行ってはならない; -\fIerrno\fP はマクロの場合もありえる。 \fIerrno\fP はスレッド毎に値を持つ。 つまりあるスレッドで \fIerrno\fP が設定されても、 -他のスレッドの \fIerrno\fP には影響しない。 - -POSIX.1 で定義されているすべてのエラー名には、 それぞれ異なる値が対応していなければならない。 但し、 \fBEAGAIN\fP と -\fBEWOULDBLOCK\fP は例外で、これらは同じ値を持ってもよい。 - -.\" The following is now -.\" POSIX.1 (2001 edition) lists the following symbolic error names. Of -.\" these, \fBEDOM\fP and \fBERANGE\fP are in the ISO C standard. ISO C -.\" Amendment 1 defines the additional error number \fBEILSEQ\fP for -.\" coding errors in multibyte or wide characters. -.\" -Below is a list of the symbolic error names that are defined on Linux. Some -of these are marked \fIPOSIX.1\fP, indicating that the name is defined by -POSIX.1\-2001, or \fIC99\fP, indicating that the name is defined by C99. -.TP 16 -\fBE2BIG\fP -引き数リストが長過ぎる (POSIX.1) -.TP -\fBEACCES\fP -許可がない (POSIX.1) -.TP -\fBEADDRINUSE\fP -アドレスがすでに使用されている (POSIX.1) -.TP -\fBEADDRNOTAVAIL\fP -.\" EADV is only an error on HURD(?) -アドレスが使用できない (POSIX.1) -.TP -\fBEAFNOSUPPORT\fP -アドレスファミリーがサポートされていない (POSIX.1) -.TP -\fBEAGAIN\fP -リソースが一時的に利用不可 (\fBEWOULDBLOCK\fP と同じ値でもよい) (POSIX.1) -.TP -\fBEALREADY\fP -接続が既に処理中である (POSIX.1) -.TP -\fBEBADE\fP -不正なやり取り (exchange) である -.TP -\fBEBADF\fP -ファイルディスクリプターが不正である (POSIX.1) -.TP -\fBEBADFD\fP -ファイルディスクリプターが不正な状態である -.TP -\fBEBADMSG\fP -メッセージが不正である (POSIX.1) -.TP -\fBEBADR\fP -不正なリクエストディスクリプター -.TP -\fBEBADRQC\fP -不正なリクエストコード -.TP -\fBEBADSLT\fP -.\" EBFONT is defined but appears not to be used by kernel or glibc. -不正なスロット -.TP -\fBEBUSY\fP -リソースが使用中である (POSIX.1) -.TP -\fBECANCELED\fP -操作がキャンセルされた (POSIX.1) -.TP -\fBECHILD\fP -子プロセスが無い (POSIX.1) -.TP -\fBECHRNG\fP -チャンネル番号が範囲外である -.TP -\fBECOMM\fP -送信時に通信エラーが発生した -.TP -\fBECONNABORTED\fP -接続が中止された (POSIX.1) -.TP -\fBECONNREFUSED\fP -接続が拒否された (POSIX.1) -.TP -\fBECONNRESET\fP -接続がリセットされた (POSIX.1) -.TP -\fBEDEADLK\fP -リソースのデッドロックを回避した (POSIX.1) -.TP -\fBEDEADLOCK\fP -\fBEDEADLK\fP の同義語 -.TP -\fBEDESTADDRREQ\fP -宛先アドレスが必要である (POSIX.1) -.TP -\fBEDOM\fP -.\" EDOTDOT is defined but appears to be unused -数学関数で引き数が領域外である (out of domain) -.TP -\fBEDQUOT\fP -.\" POSIX just says "Reserved" -ディスククォータ (quota) を超過した (POSIX.1) -.TP -\fBEEXIST\fP -ファイルが存在する (POSIX.1) -.TP -\fBEFAULT\fP -アドレスが不正である (POSIX.1) -.TP -\fBEFBIG\fP -ファイルが大き過ぎる (POSIX.1) -.TP -\fBEHOSTDOWN\fP -ホストがダウンしている -.TP -\fBEHOSTUNREACH\fP -ホストに到達不能である (POSIX.1) -.TP -\fBEIDRM\fP -識別子が削除された (POSIX.1) -.TP -\fBEILSEQ\fP -不正なバイト列 (POSIX.1, C99) -.TP -\fBEINPROGRESS\fP -操作が実行中である (POSIX.1) -.TP -\fBEINTR\fP -関数呼び出しが割り込まれた (POSIX.1); \fBsignal\fP(7) 参照。 -.TP -\fBEINVAL\fP -引数が無効である (POSIX.1) -.TP -\fBEIO\fP -入出力エラー (POSIX.1) -.TP -\fBEISCONN\fP -ソケットが接続されている (POSIX.1) -.TP -\fBEISDIR\fP -ディレクトリである (POSIX.1) -.TP -\fBEISNAM\fP -名前付きのファイルである -.TP -\fBEKEYEXPIRED\fP -鍵が期限切れとなった -.TP -\fBEKEYREJECTED\fP -鍵がサーバにより拒否された -.TP -\fBEKEYREVOKED\fP -鍵が無効となった -.TP -\fBEL2HLT\fP -停止 (レベル 2) -.TP -\fBEL2NSYNC\fP -同期できていない (レベル 2) -.TP -\fBEL3HLT\fP -停止 (レベル 3) -.TP -\fBEL3RST\fP -停止 (レベル 3) -.TP -\fBELIBACC\fP -必要な共有ライブラリにアクセスできなかった -.TP -\fBELIBBAD\fP -壊れた共有ライブラリにアクセスしようとした -.TP -\fBELIBMAX\fP -リンクしようとした共有ライブラリが多過ぎる -.TP -\fBELIBSCN\fP -a.out のライブラリセクションが壊れている (corrupted) -.TP -\fBELIBEXEC\fP -共有ライブラリを直接実行できなかった -.TP -\fBELOOP\fP -.\" ELNRNG is defined but appears to be unused -シンボリックリンクの回数が多過ぎる (POSIX.1) -.TP -\fBEMEDIUMTYPE\fP -間違ったメディア種別である -.TP -\fBEMFILE\fP -オープンしているファイルが多過ぎる (POSIX.1)。 通常は \fBgetrlimit\fP(2) に説明があるリソース上限 -\fBRLIMIT_NOFILE\fP を超過した場合に発生する。 -.TP -\fBEMLINK\fP -リンクが多過ぎる (POSIX.1) -.TP -\fBEMSGSIZE\fP -メッセージが長過ぎる (POSIX.1) -.TP -\fBEMULTIHOP\fP -.\" POSIX says "Reserved" -マルチホップ (multihop) を試みた (POSIX.1) -.TP -\fBENAMETOOLONG\fP -.\" ENAVAIL is defined, but appears not to be used -ファイル名が長過ぎる (POSIX.1) -.TP -\fBENETDOWN\fP -ネットワークが不通である (POSIX.1) -.TP -\fBENETRESET\fP -接続がネットワーク側から中止された (POSIX.1) -.TP -\fBENETUNREACH\fP -ネットワークが到達不能である (POSIX.1) -.TP -\fBENFILE\fP -.\" ENOANO is defined but appears to be unused. -システム全体でオープンされているファイルが多過ぎる (POSIX.1) -.TP -\fBENOBUFS\fP -.\" ENOCSI is defined but appears to be unused. -使用可能なバッファー空間がない (POSIX.1 (XSI STREAMS option)) -.TP -\fBENODATA\fP -ストリームの読み出しキューの先頭に読み出し可能なメッセージがない (POSIX.1) -.TP -\fBENODEV\fP -そのようなデバイスは無い (POSIX.1) -.TP -\fBENOENT\fP -そのようなファイルやディレクトリは無い (POSIX.1) -.TP -\fBENOEXEC\fP -実行ファイル形式のエラー (POSIX.1) -.TP -\fBENOKEY\fP -要求された鍵が利用できない -.TP -\fBENOLCK\fP -利用できるロックが無い (POSIX.1) -.TP -\fBENOLINK\fP -.\" POSIX says "Reserved" -リンクが切れている (POSIX.1) -.TP -\fBENOMEDIUM\fP -メディアが見つからない -.TP -\fBENOMEM\fP -十分な空きメモリー領域が無い (POSIX.1) -.TP -\fBENOMSG\fP -要求された型のメッセージが存在しない (POSIX.1) -.TP -\fBENONET\fP -マシンがネットワーク上にない -.TP -\fBENOPKG\fP -パッケージがインストールされていない -.TP -\fBENOPROTOOPT\fP -指定されたプロトコルが利用できない (POSIX.1) -.TP -\fBENOSPC\fP -デバイスに空き領域が無い (POSIX.1) -.TP -\fBENOSR\fP -指定されたストリームリソースが存在しない (POSIX.1 (XSI STREAMS option)) -.TP -\fBENOSTR\fP -ストリームではない (POSIX.1 (XSI STREAMS option)) -.TP -\fBENOSYS\fP -関数が実装されていない (POSIX.1) -.TP -\fBENOTBLK\fP -ブロックデバイスが必要である -.TP -\fBENOTCONN\fP -ソケットが接続されていない (POSIX.1) -.TP -\fBENOTDIR\fP -ディレクトリではない (POSIX.1) -.TP -\fBENOTEMPTY\fP -.\" ENOTNAM is defined but appears to be unused. -ディレクトリが空ではない (POSIX.1) -.TP -\fBENOTSOCK\fP -ソケットではない (POSIX.1) -.TP -\fBENOTSUP\fP -操作がサポートされていない (POSIX.1) -.TP -\fBENOTTY\fP -I/O 制御操作が適切でない (POSIX.1) -.TP -\fBENOTUNIQ\fP -名前がネットワークで一意ではない -.TP -\fBENXIO\fP -そのようなデバイスやアドレスはない (POSIX.1) -.TP -\fBEOPNOTSUPP\fP -ソケットでサポートしていない操作である (POSIX.1) -.sp -(Linux では \fBENOTSUP\fP と \fBEOPNOTSUPP\fP は同じ値を持つが、 POSIX.1 -に従えば両者のエラー値は区別されるべきである。) -.TP -\fBEOVERFLOW\fP -指定されたデータ型に格納するには値が大き過ぎる (POSIX.1) -.TP -\fBEPERM\fP -操作が許可されていない (POSIX.1) -.TP -\fBEPFNOSUPPORT\fP -サポートされていないプロトコルファミリーである -.TP -\fBEPIPE\fP -パイプが壊れている (POSIX.1) -.TP -\fBEPROTO\fP -プロトコルエラー (POSIX.1) -.TP -\fBEPROTONOSUPPORT\fP -プロトコルがサポートされていない (POSIX.1) -.TP -\fBEPROTOTYPE\fP -ソケットに指定できないプロトコルタイプである (POSIX.1) -.TP -\fBERANGE\fP -結果が大き過ぎる (POSIX.1, C99) -.TP -\fBEREMCHG\fP -リモートアドレスが変わった -.TP -\fBEREMOTE\fP -オブジェクトがリモートにある -.TP -\fBEREMOTEIO\fP -リモート I/O エラー -.TP -\fBERESTART\fP -システムコールが中断され再スタートが必要である -.TP -\fBEROFS\fP -読み出し専用のファイルシステムである (POSIX.1) -.TP -\fBESHUTDOWN\fP -通信相手がシャットダウンされて送信できない -.TP -\fBESPIPE\fP -無効なシーク (POSIX.1) -.TP -\fBESOCKTNOSUPPORT\fP -サポートされていないソケット種別である -.TP -\fBESRCH\fP -.\" ESRMNT is defined but appears not to be used -そのようなプロセスは無い (POSIX.1) -.TP -\fBESTALE\fP -ファイルハンドルが古い状態になっている (POSIX.1) -.sp -NFS や他のファイルシステムで起こりうる。 -.TP -\fBESTRPIPE\fP -ストリームパイプエラー -.TP -\fBETIME\fP -時間が経過した (POSIX.1 (XSI STREAMS option)) -.sp -(POSIX.1 では "STREAM \fBioctl\fP(2) timeout" と書かれている) -.TP -\fBETIMEDOUT\fP -.\" ETOOMANYREFS is defined, but appears not to be used. -操作がタイムアウトした (POSIX.1) -.TP -\fBETXTBSY\fP -テキストファイルが使用中である (POSIX.1) -.TP -\fBEUCLEAN\fP -Structure needs cleaning -.TP -\fBEUNATCH\fP -プロトコルのドライバが付与 (attach) されていない -.TP -\fBEUSERS\fP -ユーザー数が多過ぎる -.TP -\fBEWOULDBLOCK\fP -操作がブロックされる見込みである (\fBEAGAIN\fP と同じ値でもよい) (POSIX.1) -.TP -\fBEXDEV\fP -不適切なリンク (POSIX.1) -.TP -\fBEXFULL\fP -変換テーブルが一杯である -.SH 注意 -以下はよくやる間違いである。 -.in +4n -.nf - -if (somecall() == \-1) { - printf("somecall() failed\en"); - if (errno == ...) { ... } -} - -.fi -.in -このようにすると、参照している時点では \fIerrno\fP はもはや \fIsomecall\fP() から返された値を保持しているとは限らない -(\fBprintf\fP(3) により変更されているかもしれない)。 ライブラリコールをまたいで \fIerrno\fP -の値を保存したい場合は、以下のように保存しなければならない: -.in +4n -.nf - -if (somecall() == \-1) { - int errsv = errno; - printf("somecall() failed\en"); - if (errsv == ...) { ... } -} -.fi -.in -.PP -昔の C では、 \fI\fP をインクルードするのではなく \fIerrno\fP を手動で (\fIextern int -errno\fP のように) 定義するのが一般的であった。 \fBこのようなことはしないこと\fP。 こうすると、最近のバージョンの C -ライブラリでは正しく動作しないだろう。 しかし、(非常に) 古い UNIX システムでは、 \fI\fP -がなく、宣言が必要なことがあるかもしれない。 -.SH 関連項目 -.\" In the moreutils package -\fBerrno\fP(1), \fBerr\fP(3), \fBerror\fP(3), \fBperror\fP(3), \fBstrerror\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/error.3 b/manual/LDP_man-pages/draft/man3/error.3 deleted file mode 100644 index b6d2b74e..00000000 --- a/manual/LDP_man-pages/draft/man3/error.3 +++ /dev/null @@ -1,93 +0,0 @@ -.\" Copyright (C) 2006 Justin Pryzby -.\" and Copyright (C) 2006 Michael Kerrisk -.\" -.\" %%%LICENSE_START(PERMISSIVE_MISC) -.\" Permission is hereby granted, free of charge, to any person obtaining -.\" a copy of this software and associated documentation files (the -.\" "Software"), to deal in the Software without restriction, including -.\" without limitation the rights to use, copy, modify, merge, publish, -.\" distribute, sublicense, and/or sell copies of the Software, and to -.\" permit persons to whom the Software is furnished to do so, subject to -.\" the following conditions: -.\" -.\" The above copyright notice and this permission notice shall be -.\" included in all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -.\" IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -.\" CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -.\" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -.\" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -.\" %%%LICENSE_END -.\" -.\" References: -.\" glibc manual and source -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Yuichi SATO -.\" all rights reserved. -.\" Translated 2006-08-04 by Yuichi SATO , LDP v2.36 -.\" -.TH ERROR 3 2010\-08\-29 GNU "Linux Programmer's Manual" -.SH 名前 -error, error_at_line, error_message_count, error_one_per_line, -error_print_progname \- glibc のエラー書き出し関数 -.SH 書式 -.nf -\fB#include \fP - -\fBvoid error(int \fP\fIstatus\fP\fB, int \fP\fIerrnum\fP\fB, const char *\fP\fIformat\fP\fB, ...);\fP - -\fBvoid error_at_line(int \fP\fIstatus\fP\fB, int \fP\fIerrnum\fP\fB, const char *\fP\fIfilename\fP\fB,\fP -\fB unsigned int \fP\fIlinenum\fP\fB, const char *\fP\fIformat\fP\fB, ...);\fP - -\fBextern unsigned int \fP\fIerror_message_count\fP\fB;\fP - -\fBextern int \fP\fIerror_one_per_line\fP\fB;\fP - -\fBextern void (*\fP\fIerror_print_progname\fP\fB) (void);\fP -.fi -.SH 説明 -\fBerror\fP() は汎用的なエラー書き出し関数である。 この関数は標準出力 (\fIstdout\fP) に書き出してから、標準エラー出力 -(\fIstderr\fP) に書き出す。 書き出す内容は、プログラム名・コロン・スペース・ \fBprintf\fP(3) 形式の フォーマット文字列 -\fIformat\fP で指定されたメッセージである。 \fIerrnum\fP が 0 以外の場合、2 つ目のコロンとスペースの後に -\fIstrerror(errnum)\fP で指定された文字列も書き出す。 \fIformat\fP に必要な任意の引き数が、引き数リストの \fIformat\fP -の後に続く。 出力の終端には改行文字が付く。 - -\fBerror\fP() で出力されるプログラム名は、大域変数 \fBprogram_invocation_name\fP(3) の値である。 -\fIprogram_invocation_name\fP の初期値は \fImain\fP() の \fIargv[0]\fP の値と等しい。 -この変数の値は変更可能であり、変更すると \fBerror\fP() の出力が変わる。 - -\fIstatus\fP が 0 以外の場合、 \fBerror\fP() は \fBexit\fP(3) -を呼び出して、指定された終了ステータスでプログラムを終了させる。 - -\fBerror_at_line\fP() 関数は、引き数 \fIfilename\fP と \fIlinenum\fP が追加されている以外は、 \fBerror\fP() -と同じである。 生成される出力は、プログラム名の後に コロン・\fIfilename\fP の値・コロン・\fIlinenum\fP の値が書き出される以外は、 -\fBerror\fP() と同じである。 プリプロセッサの値 \fB__LINE__\fP と \fB__FILE__\fP は、 -\fBerror_at_line\fP() を呼び出すときに役に立つ。 その他のプリプロセッサの値も使うことができる。 -例えば、これらの引き数で入力ファイルにおける位置を参照できる。 - -大域変数 \fIerror_one_per_line\fP が 0 以外に設定されている場合、 \fIfilename\fP と \fIlinenum\fP -の値が共に等しい \fBerror_at_line\fP() の呼び出しは、 1 つの (最初の) メッセージの出力にまとめられる。 - -大域変数 \fIerror_message_count\fP は、 \fBerror\fP() と \fBerror_at_line\fP() -で出力されたメッセージの数を表す。 - -大域変数 \fIerror_print_progname\fP に 関数のアドレスが割り当てられている場合 (つまり NULL ではない場合)、 -メッセージの前にプログラム名とコロンを書き出すのではなく、 この関数を呼び出す。 この関数は標準エラー出力 (\fIstderr\fP) -に対しての適切な文字列を書き出さなければならない。 -.SH 準拠 -これらの関数と変数は GNU による拡張であり、 移植性を考えたプログラムでは使用すべきではない。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ether_aton.3 b/manual/LDP_man-pages/draft/man3/ether_aton.3 index 9353e9de..6dc93765 100644 --- a/manual/LDP_man-pages/draft/man3/ether_aton.3 +++ b/manual/LDP_man-pages/draft/man3/ether_aton.3 @@ -38,29 +38,29 @@ .\" all rights reserved. .\" Translated Thu Aug 22 2002 by Akihiro MOTOKI .\" -.TH ETHER_ATON 3 2014\-07\-08 GNU "Linux Programmer's Manual" +.TH ETHER_ATON 3 2017\-09\-15 GNU "Linux Programmer's Manual" .SH 名前 ether_aton, ether_ntoa, ether_ntohost, ether_hostton, ether_line, ether_ntoa_r, ether_aton_r \- Ethernet アドレスの操作用関数 .SH 書式 .nf \fB#include \fP -.sp +.PP \fBchar *ether_ntoa(const struct ether_addr *\fP\fIaddr\fP\fB);\fP -.sp +.PP \fBstruct ether_addr *ether_aton(const char *\fP\fIasc\fP\fB);\fP -.sp +.PP \fBint ether_ntohost(char *\fP\fIhostname\fP\fB, const struct ether_addr *\fP\fIaddr\fP\fB);\fP -.sp +.PP \fBint ether_hostton(const char *\fP\fIhostname\fP\fB, struct ether_addr *\fP\fIaddr\fP\fB);\fP -.sp +.PP \fBint ether_line(const char *\fP\fIline\fP\fB, struct ether_addr *\fP\fIaddr\fP\fB,\fP \fB char *\fP\fIhostname\fP\fB);\fP -.sp +.PP /* GNU 拡張 */ .br \fBchar *ether_ntoa_r(const struct ether_addr *\fP\fIaddr\fP\fB, char *\fP\fIbuf\fP\fB);\fP -.sp +.PP \fBstruct ether_addr *ether_aton_r(const char *\fP\fIasc\fP\fB,\fP \fB struct ether_addr *\fP\fIaddr\fP\fB);\fP .fi @@ -89,13 +89,13 @@ ether_ntoa_r, ether_aton_r \- Ethernet アドレスの操作用関数 \fBether_aton\fP() の リエントラントでスレッドセーフなバージョンであり、 静的なバッファーを使用しない。 .PP \fIether_addr\fP 構造体は \fI\fP で次のように定義されている: -.sp +.PP .in +4n -.nf +.EX struct ether_addr { uint8_t ether_addr_octet[6]; } -.fi +.EE .in .SH 属性 この節で使用されている用語の説明は \fBattributes\fP(7) を参照のこと。 @@ -127,6 +127,5 @@ glibc 2.2.5 以前では、 \fBether_line\fP() の実装はおかしい。 .SH 関連項目 \fBethers\fP(5) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/euidaccess.3 b/manual/LDP_man-pages/draft/man3/euidaccess.3 deleted file mode 100644 index 65dc15bc..00000000 --- a/manual/LDP_man-pages/draft/man3/euidaccess.3 +++ /dev/null @@ -1,89 +0,0 @@ -.\" Copyright (C) 2007 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2007 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2007-06-02, Akihiro MOTOKI -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH EUIDACCESS 3 2013\-09\-25 "" "Linux Programmer's Manual" -.SH 名前 -euidaccess, eaccess \- ファイルへのアクセス権を実効ユーザーでチェックする -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP -.sp -\fBint euidaccess(const char *\fP\fIpathname\fP\fB, int \fP\fImode\fP\fB);\fP -\fBint eaccess(const char *\fP\fIpathname\fP\fB, int \fP\fImode\fP\fB);\fP -.fi -.SH 説明 -\fBaccess\fP(2) と同様、 \fBeuidaccess\fP() は引き数 \fIpathname\fP で指定されたファイルの許可 -(permission) と存在のチェックを行う。 \fBaccess\fP(2) はプロセスの実 (real) ユーザーID / 実グループID -を用いてチェックを行うのに対し、 \fBeuidaccess\fP() は実効 (effective) ID を用いる。 - -\fImode\fP は \fBR_OK\fP, \fBW_OK\fP, \fBX_OK\fP, \fBF_OK\fP の一つ以上から構成されるマスクである。 \fBR_OK\fP, -\fBW_OK\fP, \fBX_OK\fP, \fBF_OK\fP は \fBaccess\fP(2) と同じ意味を持つ。 - -\fBeaccess\fP() は \fBeuidaccess\fP() の同義語であり、他のいくつかのシステムとの互換性のために提供されている。 -.SH 返り値 -成功した場合 (要求した全てについて許可が得られたら)、ゼロが返される。 エラーの場合 (\fImode\fP -の少なくとも一つのビットで要求した許可がなかった場合や、 他のエラーが起こった場合)、\-1 が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -\fBaccess\fP(2) と同じ。 -.SH バージョン -\fBeaccess\fP() 関数は glibc のバージョン 2.4 で追加された。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBeuidaccess\fP() と \fBeaccess\fP() はスレッドセーフである。 -.SH 準拠 -.\" e.g., FreeBSD 6.1. -これらの関数は非標準である。 他のいくつかのシステムには \fBeaccess\fP() 関数がある。 -.SH 注意 -\fI警告\fP: -ある操作を実行する前にこの関数を使ってファイルに対するプロセスのアクセス許可を -確認してから、その情報に基づいて操作を行うと、競合条件が発生する可能性がある。 -これは二つの操作の間でファイルのアクセス許可が変化する場合があるからである。 -一般的には、必要な操作のみを行い、その際に発生したアクセス許可に関するエラーを -処理する方が安全である。 - -この関数は常にシンボリックリンクの展開を行う。 -シンボリックリンクのアクセス許可を確認する必要がある場合は、 -フラグ \fBAT_EACCESS\fP と \fBAT_SYMLINK_NOFOLLOW\fP を付けて -\fBfaccessat\fP(2) を使うこと。 -.SH 関連項目 -\fBaccess\fP(2), \fBchmod\fP(2), \fBchown\fP(2), \fBfaccessat\fP(2), \fBopen\fP(2), -\fBsetgid\fP(2), \fBsetuid\fP(2), \fBstat\fP(2), \fBcredentials\fP(7), -\fBpath_resolution\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/exec.3 b/manual/LDP_man-pages/draft/man3/exec.3 deleted file mode 100644 index 7946b68d..00000000 --- a/manual/LDP_man-pages/draft/man3/exec.3 +++ /dev/null @@ -1,151 +0,0 @@ -.\" Copyright (c) 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 -.\" -.\" @(#)exec.3 6.4 (Berkeley) 4/19/91 -.\" -.\" Converted for Linux, Mon Nov 29 11:12:48 1993, faith@cs.unc.edu -.\" Updated more for Linux, Tue Jul 15 11:54:18 1997, pacman@cqc.com -.\" Modified, 24 Jun 2004, Michael Kerrisk -.\" Added note on casting NULL -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 Masato Taruishi -.\" all rights reserved. -.\" Translated 1998-05-27, Masato Taruishi -.\" Modified 1998-08-08, Fujiwara Teruyoshi -.\" Modified 2000-10-06, Kentaro Shirakata -.\" Modified 2005-02-26, Akihiro MOTOKI -.\" Updated 2010-10-27, Akihiro Motoki , LDP v3.29 -.\" -.TH EXEC 3 2015\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -execl, execlp, execle, execv, execvp, execvpe \- ファイルを実行する -.SH 書式 -\fB#include \fP -.sp -\fBextern char **environ;\fP -.sp -\fBint execl(const char *\fP\fIpath\fP\fB, const char *\fP\fIarg\fP\fB, ...);\fP -.br -\fBint execlp(const char *\fP\fIfile\fP\fB, const char *\fP\fIarg\fP\fB, ...);\fP -.br -\fBint execle(const char *\fP\fIpath\fP\fB, const char *\fP\fIarg\fP\fB,\fP -.br -\fB ..., char * const \fP\fIenvp\fP\fB[]);\fP -.br -\fBint execv(const char *\fP\fIpath\fP\fB, char *const \fP\fIargv\fP\fB[]);\fP -.br -\fBint execvp(const char *\fP\fIfile\fP\fB, char *const \fP\fIargv\fP\fB[]);\fP -.br -\fBint execvpe(const char *\fP\fIfile\fP\fB, char *const \fP\fIargv\fP\fB[],\fP -.br -\fB char *const \fP\fIenvp\fP\fB[]);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBexecvpe\fP(): _GNU_SOURCE -.SH 説明 -\fBexec\fP() ファミリーの関数は現在のプロセスイメージを新しいプロセスイメージで置き 換える。このマニュアルで説明されている関数は -\fBexecve\fP(2) のフロントエンドである。 (現在のプロセスイメージの置き換えについての詳細は \fBexecve\fP(2) -のマニュアルを参照) -.PP -これらの関数の最初の引き数は、実行されるファイルの名前である。 -.PP -関数 \fBexecl\fP(), \fBexeclp\fP(), \fBexecle\fP() の \fIconst char\ *arg\fP とそれに続く省略部分は -\fIarg0\fP, \fIarg1\fP, \&..., \fIargn\fP とみなされる。 これらには、実行されるプログラムで利用可能な引き数のリストを指定する -(引き数のリストは ヌルで終端された文字列へのポインターから構成される)。 慣習として、最初の引き数は、実行されるファイル名 -へのポインターにする。引き数のリストは必ず NULL で終わらなければならず、これらの関数は可変長引き数関数なので、 このポインターは \fI(char\ *) NULL\fP とキャストしなければならない。 -.PP -関数 \fBexecv\fP(), \fBexecvp\fP(), \fBexecvpe\fP() は、利用可能な引き数リスト (ヌルで終端された文字列への -ポインターの配列) を新しいプログラムに渡す。 慣習として、最初の引き数は実行されるファイル名へ のポインターにする。ポインターの配列は必ず NULL -で終わらなければならない。 -.PP -関数 \fBexecle\fP(), \fBexecvpe\fP() では、呼び出し元が引き数 \fIenvp\fP -経由実行されるプログラムの環境を指定することができる。 \fIenvp\fP 引き数は、NULL -で終端された文字列へのポインターの配列であり、ヌルポインターで終わらなければならない。 他の関数では、呼び出し元のプロセスの外部変数 -\fBenviron\fP から新しいプロセス用の環境を与える。 -.SS "execlp() と execvp() の特別な動作" -.PP -関数 \fBexeclp\fP(), \fBexecvp\fP(), \fBexecvpe\fP() は、指定されたファイル名がスラッシュ (/) を含んでいない場合、 -シェルと同じ動作で実行可能なファイルを探索する。 ファイルの検索は、環境変数 \fBPATH\fP -で指定されたコロン区切りのディレクトリのパス名のリストを対象に行われる。 この変数が定義されていない場合、パス名のリストのデフォルト値として、 -カレントディレクトリの後ろに、 \fIconfstr(_CS_PATH)\fP が返すディレクトリのリストをつなげた値が使用される (この -\fBconfstr\fP(3) の呼び出しでは通常 "/bin:/usr/bin" が返される)。 - -指定されたファイル名がスラッシュを含む場合、 \fBPATH\fP は無視され、指定されたパス名のファイルが実行される。 - -さらに、いくつかのエラーは特別に処理される。 - -ファイルが実行ファイルでない場合 (このとき呼び出そうとした \fBexecve\fP(2) はエラー \fBEACCES\fP -で失敗する)、これらの関数は残りの検索パスの検索を続ける。 他にファイルが見つからなくなった場合 \fIerrno\fP に \fBEACCES\fP -を設定し復帰する。 - -ファイルのヘッダーが実行形式として認識できない場合 (このとき呼び出そうとした \fBexecve\fP(2) はエラー \fBENOEXEC\fP -で失敗する)、これらの関数はそのファイルを最初の引き数としたシェル (\fI/bin/sh\fP) を実行する -(これにも失敗した場合、これ以上の検索は行われない)。 -.SH 返り値 -\fBexec\fP() 群の関数が復帰するのは、エラーが発生した場合のみである。 返り値は \-1 で、 \fIerrno\fP にエラーの内容がセットされる。 -.SH エラー -これら全ての関数は失敗する場合がある。その場合、 \fBexecve\fP(2) に対して規定されたエラーが \fIerrno\fP に設定される。 -.SH バージョン -\fBexecvpe\fP() 関数は glibc 2.11 で初めて登場した。 -.SH 準拠 -POSIX.1\-2001, POSIX.1\-2008. - -\fBexecvpe\fP() 関数は GNU による拡張である。 -.SH 注意 -Linux 以外のシステムには、 (環境変数 \fBPATH\fP が定義されていないときの) デフォルトのパスにおいて、カレントディレクトリが -\fI/bin\fP と \fI/usr/bin\fP の後ろに配置されるものもある。 これはトロイの木馬対策のためである。 Linux -では、デフォルトのパスに、昔ながらの「現在のディレクトリを 先に探索」というルールを使っている。 -.PP -ファイルを実行しようとしている間にエラーが発生した時の \fBexeclp\fP() と \fBexecvp\fP() -のふるまいについて歴史的な慣習はあるが、伝統的に文書として記載されておらず、 POSIX 標準でも規定されていない。BSD (またおそらく他のシステム) -では、 \fBETXTBSY\fP が発生した場合、自動的に中断 (sleep) し再試行を行う。 Linux -はそれをハードエラーとして取り扱い即座に復帰する。 -.PP -伝統的に、関数 \fBexeclp\fP() と \fBexecvp\fP() は、上で説明したエラーと、これら 2 つの関数自身が返す \fBENOMEM\fP と -\fBE2BIG\fP 以外の全てのエラーを無視していたが、 今では、上で説明した以外のエラーが発生した場合でも、 返ってくるよう変更された。 -.SH 関連項目 -\fBsh\fP(1), \fBexecve\fP(2), \fBexecveat\fP(2), \fBfork\fP(2), \fBptrace\fP(2), -\fBfexecve\fP(3), \fBenviron\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 55e970c4..00000000 --- a/manual/LDP_man-pages/draft/man3/exit.3 +++ /dev/null @@ -1,110 +0,0 @@ -.\" Copyright (C) 2001 Andries Brouwer . -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HORIMOTO Masafumi -.\" all rights reserved. -.\" Translated 1997-09-10, HORIMOTO Masafumi -.\" Updated & Modified 2001-10-27, Yuichi SATO -.\" Updated & Modified 2001-12-09, Yuichi SATO -.\" Updated & Modified 2005-09-06, Akihiro MOTOKI -.\" Updated 2007-06-18, Akihiro MOTOKI, LDP v2.57 -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" -.TH EXIT 3 2014\-03\-25 Linux "Linux Programmer's Manual" -.SH 名前 -exit \- プロセスの正常終了 -.SH 書式 -.nf -\fB#include \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 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\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\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/exp.3 b/manual/LDP_man-pages/draft/man3/exp.3 deleted file mode 100644 index 0c06c9ba..00000000 --- a/manual/LDP_man-pages/draft/man3/exp.3 +++ /dev/null @@ -1,109 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 1995-08-14 by Arnt Gulbrandsen -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Mon Sep 7 23:27:52 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH EXP 3 2010\-09\-20 "" "Linux Programmer's Manual" -.SH 名前 -exp, expf, expl \- 底が e の指数関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble exp(double \fP\fIx\fP\fB);\fP -.br -\fBfloat expf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double expl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBexpf\fP(), \fBexpl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -\fBexp\fP() 関数は e の \fIx\fP 乗の値を返す (e は自然対数の底)。 -.SH 返り値 -成功すると、これらの関数は e の \fIx\fP 乗を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が正の無限大の場合、正の無限大が返される。 - -\fIx\fP が負の無限大の場合、+0 が返される。 - -結果がアンダーフローする場合、 範囲エラー (range error) が発生し、0 が返される。 - -結果がオーバーフローする場合、範囲エラーが発生し、 各関数はそれぞれ +\fBHUGE_VAL\fP, +\fBHUGE_VALF\fP, -+\fBHUGE_VALL\fP を返す。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 - -以下のエラーが発生する可能性がある。 -.TP -範囲エラー (range error)、オーバーフローの場合 -\fIerrno\fP に \fBERANGE\fP が設定される。 オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 -.TP -範囲エラー (range error)、アンダーフローの場合 -\fIerrno\fP に \fBERANGE\fP が設定される。 アンダーフロー浮動小数点例外 (\fBFE_UNDERFLOW\fP) が上がる。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/exp10.3 b/manual/LDP_man-pages/draft/man3/exp10.3 deleted file mode 100644 index 65c9a2ce..00000000 --- a/manual/LDP_man-pages/draft/man3/exp10.3 +++ /dev/null @@ -1,86 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 1995-08-14 by Arnt Gulbrandsen -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Tue Sep 23 20:30:22 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH EXP10 3 2014\-12\-31 GNU "Linux Programmer's Manual" -.SH 名前 -exp10, exp10f, exp10l \- 基数が 10 の指数関数 -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBdouble exp10(double \fP\fIx\fP\fB);\fP -.br -\fBfloat exp10f(float \fP\fIx\fP\fB);\fP -.br -\fBlong double exp10l(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -\fBexp10\fP() 関数は 10 の \fIx\fP 乗の値を返す。 -.SH 返り値 -成功すると、これらの関数は 10 の \fIx\fP 乗を返す。 - -無限大や NaN の扱いや、オーバーフローとアンダーフローなどの さまざまな特別な状況については、 \fBexp\fP(3) を参照のこと。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 - -これらの関数で発生するエラーについては、 \fBexp\fP(3) を参照のこと。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -これらの関数は GNU による拡張である。 -.SH バグ -.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6787 -バージョン 2.19 より前では、これらの関数の glibc 実装はアンダーフローエラーが発生した場合に \fIerrno\fP に \fBERANGE\fP -を設定しなかった。 -.SH 関連項目 -\fBcbrt\fP(3), \fBexp\fP(3), \fBexp2\fP(3), \fBlog10\fP(3), \fBsqrt\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/exp2.3 b/manual/LDP_man-pages/draft/man3/exp2.3 deleted file mode 100644 index 9bf2006d..00000000 --- a/manual/LDP_man-pages/draft/man3/exp2.3 +++ /dev/null @@ -1,94 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 1995-08-14 by Arnt Gulbrandsen -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Tue Sep 23 20:27:35 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH EXP2 3 2010\-09\-20 "" "Linux Programmer's Manual" -.SH 名前 -exp2, exp2f, exp2l \- 底が 2 の指数関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble exp2(double \fP\fIx\fP\fB);\fP -.br -\fBfloat exp2f(float \fP\fIx\fP\fB);\fP -.br -\fBlong double exp2l(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBexp2\fP(), \fBexp2f\fP(), \fBexp2l\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -\fBexp2\fP() 関数は 2 の \fIx\fP 乗の値を返す。 -.SH 返り値 -成功すると、これらの関数は 2 の \fIx\fP 乗を返す。 - -無限大や NaN の扱いや、オーバーフローとアンダーフローなどの さまざまな特別な状況については、 \fBexp\fP(3) を参照のこと。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 - -これらの関数で発生するエラーについては、 \fBexp\fP(3) を参照のこと。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/expm1.3 b/manual/LDP_man-pages/draft/man3/expm1.3 deleted file mode 100644 index 197f8746..00000000 --- a/manual/LDP_man-pages/draft/man3/expm1.3 +++ /dev/null @@ -1,140 +0,0 @@ -.\" Copyright 1995 Jim Van Zandt -.\" and Copyright 2008, Linux Foundation, written by 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 2002-07-27 Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated Mon May 18 1998 by NAKANO Takeo -.\" Update Tue Sep 23 2003 by Akihiro MOTOKI -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH EXPM1 3 2013\-10\-14 "" "Linux Programmer's Manual" -.SH 名前 -expm1, expm1f, expm1l \- 引き数の指数から 1 を引いた値 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble expm1(double \fP\fIx\fP\fB);\fP -.br -\fBfloat expm1f(float \fP\fIx\fP\fB);\fP -.br -\fBlong double expm1l(long double \fP\fIx\fP\fB);\fP -.sp -.fi -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBexpm1\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBexpm1f\fP(), \fBexpm1l\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -\fBexpm1(\fP\fIx\fP\fB)\fP は以下と等しい値を返す。 -.nf - - exp(x) \- 1 - -.fi -\fIexp(x) \- 1\fP の計算には、\fIx\fP が 0 の近傍で引き算時の桁落ちのために -不正確となるような場合でも正確な値が計算できる方法が用いられる。 -.SH 返り値 -成功すると、これらの関数は \fIexp(x)\ \-\ 1\fP を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が +0 (\-0) の場合、+0 (\-0) が返される。 - -\fIx\fP が正の無限大の場合、正の無限大が返される。 - -\fIx\fP が負の無限大の場合、\-1 が返される。 - -結果がオーバーフローする場合、範囲エラー (range error) が発生し、 各関数はそれぞれ \-\fBHUGE_VAL\fP, -\-\fBHUGE_VALF\fP, \-\fBHUGE_VALL\fP を返す。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -範囲エラー (range error)、オーバーフローの場合 -.\" -.\" POSIX.1 specifies an optional range error (underflow) if -.\" x is subnormal. Glibc does not implement this. -\fIerrno\fP に \fBERANGE\fP が設定される (「バグ」の節も参照)。 オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) -が上がる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBexpm1\fP(), \fBexpm1f\fP(), \fBexpm1l\fP() はスレッドセーフである。 -.SH 準拠 -.\" BSD. -C99, POSIX.1\-2001. -.SH バグ -.\" FIXME . -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6778 -\fIx\fP が負の大きな値の場合 (この場合には関数の結果は \-1 に近付いていく)、 \fBexpm1\fP() -は間違ってアンダーフロー浮動小数点例外を上げることがある。 - -.\" FIXME . -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6814 -.\" e.g., expm1(1e5) through expm1(1.00199970127e5), -.\" but not expm1(1.00199970128e5) and beyond. -\fIx\fP が正の大きな値の場合、 \fBexpm1\fP() は期待通りのオーバーフロー例外だけでなく 間違って不正 (invalid) -浮動小数点例外を上げ、 正の無限大ではなく NaN を返すことがある。 - -.\" It looks like the fix was in 2.11, or possibly 2.12. -.\" I have no test system for 2.11, but 2.12 passes. -.\" From the source (sysdeps/i386/fpu/s_expm1.S) it looks -.\" like the changes were in 2.11. -.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6788 -バージョン 2.11 より前の glibc の実装では、 範囲エラーが発生した場合に、 \fIerrno\fP に \fBERANGE\fP が設定されなかった。 -.SH 関連項目 -\fBexp\fP(3), \fBlog\fP(3), \fBlog1p\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fabs.3 b/manual/LDP_man-pages/draft/man3/fabs.3 deleted file mode 100644 index 19261d17..00000000 --- a/manual/LDP_man-pages/draft/man3/fabs.3 +++ /dev/null @@ -1,99 +0,0 @@ -.\" 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 19:42:04 1993 by Rik Faith (faith@cs.unc.edu) -.\" Added fabsl, fabsf, aeb, 2001-06-07 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Mon Jan 20 20:29:27 JST 1997 -.\" by YOSHINO Takashi -.\" Updated & Modified Sun Jul 1 10:59:51 JST 2001 -.\" by Yuichi SATO -.\" Updated & Modified Mon Jan 10 07:44:31 JST 2005 -.\" by Yuichi SATO -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH FABS 3 2013\-07\-10 "" "Linux Programmer's Manual" -.SH 名前 -fabs, fabsf, fabsl \- 浮動小数点実数の絶対値 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble fabs(double \fP\fIx\fP\fB);\fP -.br -\fBfloat fabsf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double fabsl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBfabsf\fP(), \fBfabsl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -これらの関数は浮動小数点実数 \fIx\fP の絶対値を返す。 -.SH 返り値 -これらの関数は \fIx\fP の絶対値を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が \-0 の場合、+0 が返される。 - -\fIx\fP が負の無限大か正の無限大の場合、正の無限大が返される。 -.SH エラー -エラーは発生しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBfabs\fP(), \fBfabsf\fP(), \fBfabsl\fP() はスレッドセーフである。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fclose.3 b/manual/LDP_man-pages/draft/man3/fclose.3 deleted file mode 100644 index 7cc0c3a0..00000000 --- a/manual/LDP_man-pages/draft/man3/fclose.3 +++ /dev/null @@ -1,97 +0,0 @@ -.\" 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 -.\" -.\" @(#)fclose.3 6.7 (Berkeley) 6/29/91 -.\" -.\" Converted for Linux, Mon Nov 29 15:19:14 1993, faith@cs.unc.edu -.\" -.\" Modified 2000-07-22 by Nicolás Lichtmaier -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Mon Jan 20 18:30:47 JST 1997 -.\" by Takashi Yoshino -.\" Updated Mon Sep 25 01:58:44 JST 2000 -.\" by Kentaro Shirakata -.\" Updated & Modified Tue Apr 3 20:49:00 JST 2001 -.\" by Yuichi SATO -.\" Updated & Modified Mon Jan 10 08:08:29 JST 2005 -.\" by Yuichi SATO -.\" -.TH FCLOSE 3 2015\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -fclose \- ストリームを閉じる -.SH 書式 -\fB#include \fP -.sp -\fBint fclose(FILE *\fP\fIstream\fP\fB);\fP -.SH 説明 -\fBfclose\fP() 関数は、 \fIstream\fP が指すストリームを (バッファーリングされて -いた全ての出力データを \fBfflush\fP(3) を用いて書き込んで) フラッシュし、 -対応するファイルディスクリプターをクローズする。 -.SH 返り値 -関数が正常に終了すると 0 が返される。 正常に終了しなかった場合には \fBEOF\fP が返され、 \fIerrno\fP がエラーを示すために設定される。 -どちらの場合も、そのストリームに対する (\fBfclose\fP() へのさらなる呼び出しを含む) それ以上のアクセスは 未定義の動作を生じさせる。 -.SH エラー -.TP -\fBEBADF\fP -.\" This error cannot occur unless you are mixing ANSI C stdio operations and -.\" low-level file operations on the same stream. If you do get this error, -.\" you must have closed the stream's low-level file descriptor using -.\" something like close(fileno(stream)). -\fIstream\fP の基となるファイルディスクリプターが不正である。 -.PP -\fBfclose\fP() 関数はこれ以外にも \fBclose\fP(2), \fBwrite\fP(2), \fBfflush\fP(3) -のルーチンで失敗することがある。その場合は \fIerrno\fP が、失敗したルーチンで設定された値に設定される。 -.SH 準拠 -C89, C99. -.SH 注意 -\fBfclose\fP() は C ライブラリで提供されたユーザー空間バッファーだけをフラッシュする点に注意すること。 -データを確実に物理的にディスクに記録するためには カーネルバッファーも (\fBsync\fP(2) や \fBfsync\fP(2) を用いて) -フラッシュしなければならない。 -.SH 関連項目 -\fBclose\fP(2), \fBfcloseall\fP(3), \fBfflush\fP(3), \fBfopen\fP(3), \fBsetbuf\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fcloseall.3 b/manual/LDP_man-pages/draft/man3/fcloseall.3 deleted file mode 100644 index feb3fd9d..00000000 --- a/manual/LDP_man-pages/draft/man3/fcloseall.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Copyright (c) 2006 by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2000 Yuichi SATO -.\" all rights reserved. -.\" Translated 2000-06-24, Yuichi SATO -.\" Updated 2007-05-04, Akihiro MOTOKI , LDP v2.46 -.\" -.TH FCLOSEALL 3 2013\-06\-21 GNU "Linux Programmer's Manual" -.SH 名前 -fcloseall \- 開いているすべてのストリームを閉じる -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP -.sp -\fBint fcloseall(void);\fP -.fi -.SH 説明 -\fBfcloseall\fP() 関数は、呼び出し元プロセスが開いているすべてのストリームを閉じる。 ストリームを閉じる前に、 (\fBfflush\fP(3) -と同じように) 各ストリームのバッファーに溜っている出力データは書き出される。 入力バッファー内のデータは破棄される。 - -標準入出力 \fIstdin\fP, \fIstdout\fP, \fIstderr\fP も閉じられる。 -.SH 返り値 -この関数は、すべてのファイルが正常に閉じられた場合 0 を返す。 エラーの場合、 \fBEOF\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBfcloseall\fP() 関数はストリームのロックを行わない。そのため、スレッドセーフではない。 -.SH 準拠 -この関数は GNU 拡張である。 -.SH 関連項目 -\fBclose\fP(2), \fBfclose\fP(3), \fBfflush\fP(3), \fBfopen\fP(3), \fBsetbuf\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fdim.3 b/manual/LDP_man-pages/draft/man3/fdim.3 deleted file mode 100644 index fd27842b..00000000 --- a/manual/LDP_man-pages/draft/man3/fdim.3 +++ /dev/null @@ -1,83 +0,0 @@ -.\" Copyright 2003 Walter Harms, Andries Brouwer -.\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk -.\" -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004-2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Sat Jul 24 10:14:17 JST 2004 -.\" by Yuichi SATO -.\" Updated & Modified Mon Jan 10 08:17:08 JST 2005 by Yuichi SATO -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH FDIM 3 2013\-07\-15 "" "Linux Programmer's Manual" -.SH 名前 -fdim, fdimf, fdiml \- 正の差分を計算する -.SH 書式 -\fB#include \fP -.sp -\fBdouble fdim(double \fP\fIx\fP\fB, double \fP\fIy\fP\fB);\fP -.br -\fBfloat fdimf(float \fP\fIx\fP\fB, float \fP\fIy\fP\fB);\fP -.br -\fBlong double fdiml(long double \fP\fIx\fP\fB, long double \fP\fIy\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBfdimf\fP(), \fBfdiml\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -これらの関数は、二つの引き数間の正の差分 max(\fIx\fP\-\fIy\fP,0) を返す。 -.SH 返り値 -成功すると、これらの関数は正の差分を返す。 - -\fIx\fP か \fIy\fP が NaN の場合、NaN が返される。 - -結果がオーバーフローする場合、範囲エラー (range error) が発生し、 各関数はそれぞれ \fBHUGE_VAL\fP, \fBHUGE_VALF\fP, -\fBHUGE_VALL\fP を返す。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -範囲エラー (range error): 結果のオーバーフロー -.\" .I errno -.\" is set to -.\" .BR ERANGE . -オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 -.PP -.\" FIXME . Is it intentional that these functions do not set errno? -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6796 -これらの関数は \fIerrno\fP を設定しない。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBfdim\fP(), \fBfdimf\fP(), \fBfdiml\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 関連項目 -\fBfmax\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fenv.3 b/manual/LDP_man-pages/draft/man3/fenv.3 index d01e0ec4..dd9f742d 100644 --- a/manual/LDP_man-pages/draft/man3/fenv.3 +++ b/manual/LDP_man-pages/draft/man3/fenv.3 @@ -37,7 +37,7 @@ .\" Updated 2005-02-26, Akihiro MOTOKI .\" Updated 2008-09-16, Akihiro MOTOKI .\" -.TH FENV 3 2014\-04\-01 Linux "Linux Programmer's Manual" +.TH FENV 3 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag, fetestexcept, fegetenv, fegetround, feholdexcept, fesetround, fesetenv, @@ -45,51 +45,43 @@ feupdateenv, feenableexcept, fedisableexcept, fegetexcept \- 浮動小数点の .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint feclearexcept(int \fP\fIexcepts\fP\fB);\fP -.br \fBint fegetexceptflag(fexcept_t *\fP\fIflagp\fP\fB, int \fP\fIexcepts\fP\fB);\fP -.br \fBint feraiseexcept(int \fP\fIexcepts\fP\fB);\fP -.br \fBint fesetexceptflag(const fexcept_t *\fP\fIflagp\fP\fB, int \fP\fIexcepts\fP\fB);\fP -.br \fBint fetestexcept(int \fP\fIexcepts\fP\fB);\fP -.sp +.PP \fBint fegetround(void);\fP -.br \fBint fesetround(int \fP\fIrounding_mode\fP\fB);\fP -.sp +.PP \fBint fegetenv(fenv_t *\fP\fIenvp\fP\fB);\fP -.br \fBint feholdexcept(fenv_t *\fP\fIenvp\fP\fB);\fP -.br \fBint fesetenv(const fenv_t *\fP\fIenvp\fP\fB);\fP -.br \fBint feupdateenv(const fenv_t *\fP\fIenvp\fP\fB);\fP .fi -.sp +.PP \fI\-lm\fP でリンクする。 .SH 説明 これらの 11 個の関数は C99 で定義されており、 浮動小数点の丸めと例外 (オーバーフロー、ゼロによる除算など) の取り扱いを規定する。 .SS 例外 \fIdivide\-by\-zero\fP 例外は、有限の数値に対する演算が、 無限大の答えを生成するような場合に起こる。 -.LP +.PP \fIoverflow\fP 例外は、結果が浮動小数点数値で表記されなければならないのに、 その絶対値が表現可能な浮動小数点数の (有限の) 最大値よりも (ずっと) 大きくなってしまうような場合に起こる。 -.LP +.PP \fIunderflow\fP 例外は、結果が浮動小数点数値で表記されなければならないのに、 その絶対値が正の正規化浮動小数点数の最小値よりも 小さくなってしまう (そして 非正規化数で表現した場合に非常に精度を失ってしまう) ような場合に起こる。 -.LP +.PP \fIinexact\fP 例外は、丸め後の演算結果が、 無限精度の結果と異なるような場合に起こる。 \fIoverflow\fP 例外か \fIunderflow\fP 例外が起きたときには、常にこの例外も起こる。 -.LP +.PP \fIinvalid\fP 例外は、演算結果がうまく定義できない結果を生じるような場合に起こる。 例えば 0/0、無限大 \- 無限大、sqrt(\-1) など。 .SS 例外処理 例外の表し方には 2 つの方法がある。 ひとつは、単一のビットで (例外があったかなかったかを) 表す方法で、 これらのビットは整数のあるビット位置に対応し、ビットの対応付けは 実装依存である。もう一つは、内部構造体を使って表す方法で、 この方法の方が例外に関するより多くの情報 (例えば例外が起こったコードのアドレスなど) が含まれる。 -.LP +.PP \fBFE_DIVBYZERO\fP, \fBFE_INEXACT\fP, \fBFE_INVALID\fP, \fBFE_OVERFLOW\fP, \fBFE_UNDERFLOW\fP の各マクロは、それぞれ対応する例外の処理を 実装がサポートしている場合に定義される。 このとき対応するビットをそれぞれ定義することになるので、 例外処理関数の呼び出しを、例えば \fBFE_OVERFLOW\fP|\fBFE_UNDERFLOW\fP @@ -98,31 +90,31 @@ feupdateenv, feenableexcept, fedisableexcept, fegetexcept \- 浮動小数点の .PP \fBfeclearexcept\fP() 関数は、引き数 \fIexcepts\fP のビット列で指定された例外をクリアする (処理は実装でサポートされている例外についてのみ行われる)。 -.LP +.PP \fBfegetexceptflag\fP() 関数は、引き数 \fIexcepts\fP で指定された例外フラグの状態を \fI*flagp\fP が指す内部オブジェクトに保存する。 -.LP +.PP \fBferaiseexcept\fP() 関数は、 \fIexcepts\fP のビット列で指定された例外のうち、 実装がサポートしているものを発生させる。 -.LP +.PP \fBfesetexceptflag\fP() 関数は、 \fIexcepts\fP で指定された例外に対応するフラグの状態を \fI*flagp\fP の値に設定する。 \fI*flagp\fP の値は、この関数を呼ぶ前に \fBfegetexceptflag\fP() 関数を呼び出して取得しておかなければならない (このとき、 \fBfegetexceptflag\fP() の最後の引き数には、 \fBfesetexceptflag\fP() に渡す \fIexcepts\fP のすべてのビットを含む値を指定すること)。 -.LP +.PP \fBfetestexcept\fP() 関数は、 \fIexcepts\fP 引き数でセットされているビットのうち、 現在設定されている例外に対応するビットが 1 になったワードを返す。 .SS 丸めモード 丸めモードは、結果が仮数部だけで正確に表現できない際に、 浮動小数点操作の結果をどのように扱うかを決めるものである。 さまざまな丸めモードを提供することができる: 最も近い値に丸める (デフォルト)、 (正の無限大に向かって) 大きくなる方向に丸める、 (負の無限大に向かって) 小さくなる方向に丸める、 0 に向けて丸める、である。 - +.PP \fBFE_TONEAREST\fP, \fBFE_UPWARD\fP, \fBFE_DOWNWARD\fP, \fBFE_TOWARDZERO\fP の各マクロは、それぞれ対応する丸めの方向を 実装がサポートしている場合に定義される。 -.LP +.PP \fBfegetround\fP() 関数は現在の丸めモードに対応するマクロを返す。 -.LP +.PP \fBfesetround\fP() 関数は丸めモードを引き数に与えられた値にし、 成功したらゼロを返す。 - +.PP C99 と POSIX.1\-2008 では \fBFLT_ROUNDS\fP という識別子が規定されており、 \fI\fP で定義されている。この識別子は 浮動小数点数の加算についての実装定義された丸め動作を表し、 以下のいずれかの値を持つ。 .IP \-1 @@ -145,16 +137,16 @@ C99 と POSIX.1\-2008 では \fBFLT_ROUNDS\fP という識別子が規定され デフォルトの環境は、 (\fIconst fenv_t\ *\fP 型の) \fBFE_DFL_ENV\fP で示されるものである。 これはプログラムの開始時に構築される環境であり、 ISO C では、丸めモードを最も近い値への丸め (\fBFE_TONEAREST\fP) に設定し、すべての例外をクリアし、不停止 (nonstop) (例外が起きても継続する) モードとするように規定されている。 -.LP +.PP \fBfegetenv\fP() 関数は、現在の浮動小数点環境を、オブジェクト \fI*envp\fP に保存する。 -.LP +.PP \fBfeholdexcept\fP() 関数も同じ動作を行い、 さらに可能であれば、全ての例外フラグをクリアし、 nonstop (例外時にも実行を継続) モードに設定する。 -.LP +.PP \fBfesetenv\fP() 関数は、浮動小数点環境を、オブジェクト \fI*envp\fP から取り出した値に戻す。 このオブジェクトは、有効であることが事前に分かっていなければならない。 例えば、 \fBfegetenv\fP() や \fBfeholdexcept\fP() を呼び出した結果であるとか、 \fBFE_DFL_ENV\fP に等しいとかでなければならない。 この関数の呼び出しは例外を発生しない。 -.LP +.PP \fBfeupdateenv\fP() 関数は、オブジェクト \fI*envp\fP が表現する浮動小数点環境をインストールする。 ただし、現在発生している例外はクリアされない。 この関数を呼んだ後に立っている例外は、 関数を呼ぶ前の値と \fI*envp\fP の値とのビットごとの OR を取ったものになる。 上記と同様に、オブジェクト \fI*envp\fP は、事前に有効であることが分かっていなければならない。 @@ -166,11 +158,35 @@ C99 と POSIX.1\-2008 では \fBFLT_ROUNDS\fP という識別子が規定され .SH バージョン これらの関数は glibc バージョン 2.1 で初めて登場した。 .SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBfeclearexcept\fP(), \fBfegetexceptflag\fP(), \fBfegetexceptflag\fP(), -\fBfesetexceptflag\fP(), \fBfetestexcept\fP(), \fBfegetround\fP(), \fBfesetround\fP(), -\fBfegetenv\fP(), \fBfeholdexcept\fP(), \fBfesetenv\fP(), \fBfeupdateenv\fP(), -\fBfeenableexcept\fP(), \fBfedisableexcept\fP(), and \fBfegetexcept\fP() はスレッドセーフである。 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.nh +.ad l +.TS +allbox; +lb lb lb +lw35 l l. +Interface Attribute Value +T{ +\fBfeclearexcept\fP(), +\fBfegetexceptflag\fP(), +\fBferaiseexcept\fP(), +\fBfesetexceptflag\fP(), +\fBfetestexcept\fP(), +\fBfegetround\fP(), +\fBfesetround\fP(), +\fBfegetenv\fP(), +\fBfeholdexcept\fP(), +\fBfesetenv\fP(), +\fBfeupdateenv\fP(), +\fBfeenableexcept\fP(), +\fBfedisableexcept\fP(), +\fBfegetexcept\fP() +T} Thread safety T{ +MT\-Safe +T} +.TE +.ad +.hy .SH 準拠 IEC 60559 (IEC 559:1989), ANSI/IEEE 854, C99, POSIX.1\-2001. .SH 注意 @@ -181,20 +197,16 @@ IEC 60559 (IEC 559:1989), ANSI/IEEE 854, C99, POSIX.1\-2001. の各ビットの設定方法については定義していない。 バージョン 2.2 以降の glibc は、 \fBfeenableexcept\fP() 関数と \fBfedisableexcept\fP() 関数をサポートしており、 各々の浮動小数点トラップを設定できるようになっている。 また \fBfegetexcept\fP() によって状態の問い合わせもできるようになっている。 -.sp +.PP .nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br +\fB#define _GNU_SOURCE\fP /* See feature_test_macros(7) */ \fB#include \fP -.sp +.PP \fBint feenableexcept(int \fP\fIexcepts\fP\fB);\fP -.br \fBint fedisableexcept(int \fP\fIexcepts\fP\fB);\fP -.br \fBint fegetexcept(void);\fP -.br .fi -.LP +.PP \fBfeenableexcept\fP() 関数と \fBfedisableexcept\fP() 関数は \fIexcepts\fP によって表現される各例外のトラップを有効 (無効) にする。 成功した場合は直前に有効になっていた例外のセットを返す。 失敗した場合は \-1 を返す。 \fBfegetexcept\fP() 関数は現在有効になっている例外全てからなるセットを返す。 @@ -207,6 +219,5 @@ C99 の規定では、 \fBFLT_ROUNDS\fP の値には \fBfesetround\fP() .SH 関連項目 \fBmath_error\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ferror.3 b/manual/LDP_man-pages/draft/man3/ferror.3 deleted file mode 100644 index a0b27a76..00000000 --- a/manual/LDP_man-pages/draft/man3/ferror.3 +++ /dev/null @@ -1,104 +0,0 @@ -.\" 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 -.\" -.\" @(#)ferror.3 6.8 (Berkeley) 6/29/91 -.\" -.\" -.\" Converted for Linux, Mon Nov 29 14:24:40 1993, faith@cs.unc.edu -.\" Added remark on EBADF for fileno, aeb, 2001-03-22 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Fri Dec 26 10:49:26 JST 1997 -.\" by HIROFUMI Nishizuka -.\" Updated Sat May 19 JST 2001 by Kentaro Shirakata -.\" Updated Fri Nov 2 JST 2001 by Kentaro Shirakata -.\" -.TH FERROR 3 2014\-01\-15 "" "Linux Programmer's Manual" -.SH 名前 -clearerr, feof, ferror, fileno \- ストリームステータスのチェックとリセット -.SH 書式 -\fB#include \fP -.sp -\fBvoid clearerr(FILE *\fP\fIstream\fP\fB);\fP - -\fBint feof(FILE *\fP\fIstream\fP\fB);\fP - -\fBint ferror(FILE *\fP\fIstream\fP\fB);\fP - -\fBint fileno(FILE *\fP\fIstream\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBfileno\fP(): _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE -.SH 説明 -関数 \fBclearerr\fP() は \fIstream\fP で示されるストリームの EOF(end\-of\-file) 指示子とエラー指示子をクリアする。 -.PP -関数 \fBfeof\fP() は \fIstream\fP で示されるストリームの EOF 指示子をテストし、 セットされていれば 0 以外の数を返す。 EOF -指示子は、関数 \fBclearerr\fP() によってのみクリアすることができる。 -.PP -関数 \fBferror\fP() は \fIstream\fP で示されるストリームのエラー指示子をテストし、 セットされていれば 0 以外の数を返す。 -エラー指示子は、関数 \fBclearerr\fP() によってのみリセットすることができる。 -.PP -関数 \fBfileno\fP() は、引数 \fIstream\fP を調べ、その整数のディスクリプターを返す。 -.PP -これらの処理を停止せずに行いたいときは、 \fBunlocked_stdio\fP(3) を参照のこと。 -.SH エラー -これらの関数は失敗すべきではなく、また、外部変数 \fIerrno\fP に値をセットしない。 (しかし、 \fBfileno\fP() -関数の場合で、引数が有効なストリームでなかった場合、 関数は \-1 を返し、 \fIerrno\fP に \fBEBADF\fP を設定しなければならない。) -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBclearerr\fP(), \fBfeof\fP(), \fBferror\fP(), \fBfileno\fP() はスレッドセーフである。 -.SH 準拠 -関数 \fBclearerr\fP(), \fBfeof\fP(), \fBferror\fP() は C89, C99, POSIX.1\-2001, -POSIX.1\-2008 に準拠している。 - -関数 \fBfileno\fP() は POSIX.1\-2001 と POSIX.1\-2008 に準拠している。 -.SH 関連項目 -\fBopen\fP(2), \fBfdopen\fP(3), \fBstdio\fP(3), \fBunlocked_stdio\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fexecve.3 b/manual/LDP_man-pages/draft/man3/fexecve.3 deleted file mode 100644 index 119dba2a..00000000 --- a/manual/LDP_man-pages/draft/man3/fexecve.3 +++ /dev/null @@ -1,115 +0,0 @@ -.\" Copyright (c) 2006, 2014, 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-07-31, Akihiro MOTOKI -.\" Updated 2009-02-23, Akihiro MOTOKI , LDP v3.18 -.\" -.TH FEXECVE 3 2015\-01\-22 Linux "Linux Programmer's Manual" -.SH 名前 -fexecve \- ファイルディスクリプターで指定されたプログラムを実行する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint fexecve(int \fP\fIfd\fP\fB, char *const \fP\fIargv\fP\fB[], char *const \fP\fIenvp\fP\fB[]);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBfexecve\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.ad -.PD -.SH 説明 -.\" POSIX.1-2008 specifies the O_EXEC flag for open as an alternative, -.\" but Linux doesn't support this flag yet. -\fBfexecve\fP() は \fBexecve\fP(2) と同じ作業を行う。違うのは、 実行するファイルを、パス名ではなく、 ファイルディスクリプター -\fIfd\fP を用いて指定する点である。 ファイルディスクリプター \fIfd\fP は、読み込み専用でオープンされていなければならず、 -呼び出し元はファイルディスクリプターが参照するファイルに対する 実行許可を持っていなければならない。 -.SH 返り値 -\fBfexecve\fP() は呼び出しに成功した場合、戻ることはない。 エラーの場合、返り値 \-1 で関数が返り、 \fIerrno\fP -が適切に設定される。 -.SH エラー -エラーは \fBexecve\fP(2) と同じだが、以下のエラーが追加になっている: -.TP -\fBEINVAL\fP -\fIfd\fP が有効なファイルディスクリプターでない。または \fIargv\fP が NULL である。または \fIenvp\fP が NULL である。 -.TP -\fBENOSYS\fP -\fI/proc\fP ファイルシステムにアクセスできなかった。 -.SH バージョン -\fBfexecve\fP() は glibc 2.3.2 以降で実装されている。 -.SH 準拠 -POSIX.1\-2008. この関数は POSIX.1\-2001 では規定されておらず、 他のシステムで広く利用できるわけではない。 -POSIX.1\-2008 で規定されている。 -.SH 注意 -.\" FIXME . -.\" With the addition of the execveat(2), fexecve() can be implemented -.\" even where /proc is unavailable. Review future glibc releases to -.\" see if the implementation is changed to use execveat(2). -Linux では、 \fBfexecve\fP() は \fBproc\fP(5) ファイルシステムを使って実装されている。 -そのため、この関数を呼び出す時点では \fI/proc\fP がマウントされて利用可能となっている必要がある。 - -\fBfexecve\fP() の裏にある考えは、呼び出し元が、ファイルを実行する前に実行ファイルの内容を検査 (チェックサムを確認) -できるようにすることである。単に、ファイルをオープンして内容のチェックサムを検査し、それから \fBexecve\fP(2) -を行うのは十分ではない。なぜなら、2 つのステップの間で、ファイル名や、パス名のディレクトリの前の方が入れ換えられる可能性があるからだ -(例えば、シンボリックリンクのリンク先を変更するなど)。\fBfexecve\fP() は、チェックサムの検査と \fBfexecve\fP() -の呼び出しの間で、ファイルの\fI内容\fPを変更できる可能性があるという問題への対策にはならない。この問題に対する対応策は、確実に、ファイルのアクセス許可を設定し、悪意のあるユーザーがファイルを変更できないようにすることである。 - -\fBfexecve\fP() を使用する際の理にかなった方法は、 \fIfd\fP に close\-on\-exec フラグをセットし、 -実行するプログラムを通じてそのファイルディスクリプターが外部にもれないようにすることである。 この方法は 2 つの理由から理にかなっている。 1 -つ目は、 これにより不必要にファイルディスクリプターが消費されるのを防ぐことができる -(実行されるプログラムは普通プログラム自身が参照するファイルを参照する必要はない)。 2 つ目は、 \fBfexecve\fP() が再帰的に使用された場合、 -close\-on\-exec フラグを利用することで、 再帰の各ステップで新しいプログラムに一つ余計にファイルディスクリプターが渡されることによる、 -ファイルディスクリプターの枯渇を防ぐことができる (ただし「バグ」を参照)。 -.SH バグ -\fIfd\fP がスクリプトを参照していて (つまり、 最初の行に文字 \fI#!\fP -で始まるスクリプトインタープリターの指示がある実行テキストファイルである)、 \fIfd\fP に close\-on\-exec フラグがセットされていた場合、 -\fBfexecve\fP() はエラー \fBENOENT\fP で失敗する。 このエラーが起こるのは、 スクリプトインタープリターが実行される時点までに、 -close\-on\-exec フラグにより \fIfd\fP がすでにクローズされてしまっているからである。 そのため、 スクリプトを参照する場合には、 -close\-on\-exec フラグを \fIfd\fP にセットすることはできず、 「注意」の節で説明されている問題が起こり得る。 -.SH 関連項目 -\fBexecve\fP(2), \fBexecveat\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fflush.3 b/manual/LDP_man-pages/draft/man3/fflush.3 deleted file mode 100644 index ed063e8e..00000000 --- a/manual/LDP_man-pages/draft/man3/fflush.3 +++ /dev/null @@ -1,106 +0,0 @@ -.\" 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 -.\" -.\" @(#)fflush.3 5.4 (Berkeley) 6/29/91 -.\" -.\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith@cs.unc.edu -.\" -.\" Modified 2000-07-22 by Nicolás Lichtmaier -.\" Modified 2001-10-16 by John Levon -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997-2000 YOSHINO Takashi and NAKANO Takeo -.\" all rights reserved. -.\" Translated 1997-02-13,YOSHINO Takashi -.\" Update & Modified 1999-03-01, NAKANO Takeo -.\" Update & Modified 2000-09-21, NAKANO Takeo -.\" Updated 2001-11-02, Kentaro Shirakata -.\" Updated 2010-04-10, Akihiro MOTOKI , LDP v3.24 -.\" -.TH FFLUSH 3 2015\-02\-01 GNU "Linux Programmer's Manual" -.SH 名前 -fflush \- ストリームの内容を強制的に出力(フラッシュ)する -.SH 書式 -\fB#include \fP -.sp -\fBint fflush(FILE *\fP\fIstream\fP\fB);\fP -.SH 説明 -出力ストリームに関しては、 \fBfflush\fP() は、ユーザー空間でバッファーリングされているすべてのデータを 指定された出力に書き出す -(フラッシュする)、 もしくはストリーム \fIstream\fP の下位にある書き込み関数を用いてこのストリームを更新する。 - -seek 可能なファイルに関連付けられた入力ストリーム (ディスクファイルは seek 可能だが、 パイプや端末は seek できない) に関しては、 -\fBfflush\fP() は、対応するファイルから取得されたが、アプリケーションからは 読み出されていないバッファーデータを全て破棄する。 - -ストリームは開いた状態のままであり、 この関数によって何の影響も受けない。 -.PP -.\" mtk: POSIX specifies that only output streams are flushed for this case. -.\" Also verified for glibc by experiment. -\fIstream\fP 引数が NULL ならば、 \fBfflush\fP() は開いている\fIすべての\fP出力ストリームをフラッシュする。 -.PP -これらの処理をロックせずに行いたいときは、 \fBunlocked_stdio\fP(3) を参照のこと。 -.SH 返り値 -成功すると 0 が返される。 その他の場合には \fBEOF\fP が返され、 \fIerrno\fP が、エラーに対応した値に設定される。 -.SH エラー -.TP -\fBEBADF\fP -\fIstream\fP は開いているストリームではない。 あるいはストリームは書き込み用ではない。 -.PP -\fBfflush\fP() 関数は \fBwrite\fP(2) に関して規定されているエラーで失敗することもある。 この場合 \fIerrno\fP -もその値に設定される。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBfflush\fP() はスレッドセーフである。 -.SH 準拠 -C89, C99, POSIX.1\-2001, POSIX.1\-2008. - -POSIX.1\-2001 では入力ストリームのフラッシュの動作は規定されていなかったが、 POSIX.1\-2008 では規定されている。 -.SH 注意 -\fBfflush\fP() は、 C ライブラリが与えているユーザー空間のバッファーしかフラッシュしない。 -データが物理的にディスクに保存されることを保証したければ、 カーネルバッファーもフラッシュしなければならない。 これには例えば \fBsync\fP(2) -や \fBfsync\fP(2) を用いる。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ffs.3 b/manual/LDP_man-pages/draft/man3/ffs.3 deleted file mode 100644 index d83973f2..00000000 --- a/manual/LDP_man-pages/draft/man3/ffs.3 +++ /dev/null @@ -1,105 +0,0 @@ -.\" 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 19:39:35 1993 by Rik Faith (faith@cs.unc.edu) -.\" -.\" Modified 2003 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Thu Dec 18 16:26:22 JST 1997 -.\" by HIROFUMI Nishizuka -.\" Updated Wed Jan 9 JST 2002 by Kentaro Shirakata -.\" Updated Mon Sep 1 JST 2003 by Kentaro Shirakata -.\" -.TH FFS 3 2014\-04\-14 GNU "Linux Programmer's Manual" -.SH 名前 -ffs, ffsl, ffsll \- ワードの中で最初にセットされているビットの検出 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint ffs(int \fP\fIi\fP\fB);\fP -.sp -\fB#include \fP -.sp -\fBint ffsl(long int \fP\fIi\fP\fB);\fP -.sp -\fBint ffsll(long long int \fP\fIi\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.PD 0 -.ad l -.sp -\fBffs\fP(): -.RS 4 -.TP 4 -glibc 2.10 以降: -_SVID_SOURCE || _BSD_SOURCE || _POSIX_C_SOURCE\ >=\ 200809L || -_XOPEN_SOURCE\ >=\ 700 || -.TP -glibc 2.10 より前: -none -.RE -.PP -\fBffsl\fP(), \fBffsll\fP(): -.RS 4 -_GNU_SOURCE -.RE -.ad -.PD -.SH 説明 -\fBffs\fP() 関数は、ワード \fIi\fP の中で最初にセットされている (最下位)ビットの位置を返す。 最下位ビットの位置は -1、最上位ビットの位置は例えば 32 や 64 である。 \fBffsll\fP() 関数と \fBffsl\fP() 関数も同様だが、 -異なったサイズの引数をとる。 -.SH 返り値 -これらの関数は、最初にセットされているビットの位置を返し、 \fIi\fP のどのビットもセットされていなければ 0 を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBffs\fP(), \fBffsl\fP(), \fBffsll\fP() はスレッドセーフである。 -.SH 準拠 -\fBffs\fP(): 4.3BSD, POSIX.1\-2001. - -関数 \fBffsl\fP() と \fBffsll\fP() は glibc による拡張である。 -.SH 注意 -BSD システムでは \fI\fP にプロトタイプがある。 -.SH 関連項目 -\fBmemchr\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fgetc.3 b/manual/LDP_man-pages/draft/man3/fgetc.3 deleted file mode 100644 index 9fb4712b..00000000 --- a/manual/LDP_man-pages/draft/man3/fgetc.3 +++ /dev/null @@ -1,87 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" -.\" %%%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 11:12:07 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Fri Sep 8 15:48:13 1995 by Andries Brouwer (aeb@cwi.nl) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.TH FGETC 3 2013\-12\-31 GNU "Linux Programmer's Manual" -.SH 名前 -fgetc, fgets, getc, getchar, ungetc \- 文字と文字列の入力 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint fgetc(FILE *\fP\fIstream\fP\fB);\fP - -\fBchar *fgets(char *\fP\fIs\fP\fB, int \fP\fIsize\fP\fB, FILE *\fP\fIstream\fP\fB);\fP - -\fBint getc(FILE *\fP\fIstream\fP\fB);\fP - -\fBint getchar(void);\fP - -\fBint ungetc(int \fP\fIc\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -.fi -.SH 説明 -\fBfgetc\fP() は、 \fIstream\fP から次の文字を \fIunsigned char\fP として読み、 \fIint\fP -にキャストして返す。ファイルの終わりやエラーとなった場合は \fBEOF\fP を返す。 -.PP -\fBgetc\fP() は \fBfgetc\fP() と同様だが、 \fIstream\fP を複数回評価するマクロとして実装されているかもしれない。 -.PP -\fBgetchar\fP() は \fBgetc(\fP\fIstdin\fP\fB)\fP と同じである。 -.PP -\fBfgets\fP() は \fIstream\fP から最大で \fIsize\fP \- 1 個の文字を読み込み、 \fIs\fP -が指すバッファーに格納する。読み込みは \fBEOF\fP または改行文字を読み込んだ後で停止する。 読み込まれた改行文字はバッファーに格納される。 -終端のヌルバイト (\(aq\e0\(aq) が一つバッファーの中の最後の文字の後に書き込まれる。 -.PP -\fBungetc\fP() は、後の read 操作で読めるように、 \fIc\fP を \fIunsigned char\fP にキャストして \fIstream\fP -に書き戻す。 書き戻された文字は逆順に戻される; 書き戻しとして保証されているのは、一文字だけである。 -.PP -ここで述べた関数や \fIstdio\fP ライブラリの入力関数を同じ入力ストリームに対して互いに混ぜて使うことができる。 -.PP -これらの処理を停止せずに行いたいときは、 \fBunlocked_stdio\fP(3) を参照のこと。 -.SH 返り値 -\fBfgetc\fP(), \fBgetc\fP(), \fBgetchar\fP() は、文字を \fIunsigned char\fP として読んで \fIint\fP -にキャストして返す。ファイルの終わりやエラーの場合は \fBEOF\fP を返す。 -.PP -\fBfgets\fP() は、成功すると \fIs\fP を返し、エラーや 1 文字も読み込んでいないのにファイルの終わりになった 場合に NULL を返す。 -.PP -\fBungetc\fP() は成功すると \fIc\fP を返し、エラーの場合は \fBEOF\fP を返す。 -.SH 準拠 -C89, C99, POSIX.1\-2001. - -入力ストリームのファイルディスクリプターに対して、 \fIstdio\fP ライブラリの入力関数と、低レベル呼び出しの \fBread\fP(2) -を混ぜて呼び出す事は勧められない。 結果がどうなるかは分からず、おそらくあなたの 望んでいる結果にはならないだろう。 -.SH 関連項目 -\fBread\fP(2), \fBwrite\fP(2), \fBferror\fP(3), \fBfgetwc\fP(3), \fBfgetws\fP(3), -\fBfopen\fP(3), \fBfread\fP(3), \fBfseek\fP(3), \fBgetline\fP(3), \fBgets\fP(3), -\fBgetwchar\fP(3), \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fgetgrent.3 b/manual/LDP_man-pages/draft/man3/fgetgrent.3 deleted file mode 100644 index 8e1a4fe9..00000000 --- a/manual/LDP_man-pages/draft/man3/fgetgrent.3 +++ /dev/null @@ -1,91 +0,0 @@ -.\" 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 19:38:44 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated 1997-12-19, HIROFUMI Nishizuka -.\" Updated 2008-08-01, Akihiro MOTOKI -.\" -.TH FGETGRENT 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -fgetgrent \- グループファイルエントリーの取り出し -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -\fB#include \fP -.sp -\fBstruct group *fgetgrent(FILE *\fP\fIstream\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBfgetgrent\fP(): _SVID_SOURCE -.SH 説明 -\fBfgetgrent\fP() 関数は、 \fIstream\fP で参照されるファイルから取り出したグループ情報 -を含む構造体へのポインターを返す。最初に呼び出された時は 最初のエントリーを返し、それ以降は、次のエントリーを返す。 \fIstream\fP -で参照されるファイルは、 \fI/etc/group\fP と同じ形式でなければならない (\fBgroup\fP(5) 参照)。 -.PP -\fIgroup\fP 構造体は \fI\fP で以下のように定義されている: -.sp -.in +4n -.nf -struct group { - char *gr_name; /* グループ名 */ - char *gr_passwd; /* グループのパスワード */ - gid_t gr_gid; /* グループ ID */ - char **gr_mem; /* グループのメンバ名へのポインター - の配列 (配列はヌルで終端する) */ -}; -.fi -.in -.SH 返り値 -\fBfgetgrent\fP() 関数は \fIgroup\fP 構造体へのポインターを返す。 これ以上エントリーが無いか、エラーが発生した場合は NULL -を返す。 エラーの場合、 \fIerrno\fP に原因を示す値が設定される。 -.SH エラー -.TP -\fBENOMEM\fP -\fIgroup\fP 構造体を割り当てるためのメモリーが不十分。 -.SH 準拠 -SVr4. -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fgetpwent.3 b/manual/LDP_man-pages/draft/man3/fgetpwent.3 deleted file mode 100644 index 6ac6a66a..00000000 --- a/manual/LDP_man-pages/draft/man3/fgetpwent.3 +++ /dev/null @@ -1,100 +0,0 @@ -.\" 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 19:37:37 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Mon May 27 22:40:48 1996 by Martin Schulze (joey@linux.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated 1997-12-18, HIROFUMI Nishizuka -.\" Updated 2008-08-01, Akihiro MOTOKI -.\" -.TH FGETPWENT 3 2013\-04\-19 GNU "Linux Programmer's Manual" -.SH 名前 -fgetpwent \- パスワードファイルエントリーの取り出し -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -\fB#include \fP -.sp -\fBstruct passwd *fgetpwent(FILE *\fP\fIstream\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBfgetpwent\fP(): _SVID_SOURCE -.SH 説明 -\fBfgetpwent\fP() 関数は、\fIstream\fP から得られた行を分解したフィールド を含む構造体へのポインターを返す。 -最初に呼び出された時には最初のエントリーを返し、それ以降は 次のエントリーを返す。 \fIstream\fP で参照されるファイルは -\fI/etc/passwd\fP と同じ形式でなければならない (\fBpasswd\fP(5) 参照)。 -.PP -\fIpasswd\fP 構造体は、\fI\fP で以下のように定義されている: -.sp -.in +4n -.nf -struct passwd { - char *pw_name; /* ユーザー名 */ - char *pw_passwd; /* ユーザーのパスワード */ - uid_t pw_uid; /* ユーザー ID */ - gid_t pw_gid; /* グループ ID */ - char *pw_gecos; /* 実名 */ - char *pw_dir; /* ホームディレクトリ */ - char *pw_shell; /* シェルプログラム */ -}; -.fi -.in -.SH 返り値 -\fBfgetpwent\fP() 関数は、 \fIpasswd\fP 構造体へのポインターを返す。 これ以上エントリーが無いか、エラーが発生した場合は NULL -を返す。 エラーの場合、 \fIerrno\fP に原因を示す値が設定される。 -.SH エラー -.TP -\fBENOMEM\fP -\fIpasswd\fP 構造体に割り当てるメモリーが十分なかった。 -.SH ファイル -.TP -\fI/etc/passwd\fP -パスワードデータベースファイル -.SH 準拠 -SVr4. -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fgetwc.3 b/manual/LDP_man-pages/draft/man3/fgetwc.3 deleted file mode 100644 index 380f58d4..00000000 --- a/manual/LDP_man-pages/draft/man3/fgetwc.3 +++ /dev/null @@ -1,70 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification -.\" http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\" Modified Tue Oct 16 23:18:40 BST 2001 by John Levon -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sun Aug 29 15:03:27 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" Updated Sun Dec 26 JST 1999 by Kentaro Shirakata -.\" Updated Fri Nov 2 JST 2001 by Kentaro Shirakata -.\" -.TH FGETWC 3 2013\-04\-19 GNU "Linux Programmer's Manual" -.SH 名前 -fgetwc, getwc \- ワイド文字を FILE ストリームから読み込む -.SH 書式 -.nf -\fB#include \fP -.br -\fB#include \fP -.sp -\fBwint_t fgetwc(FILE *\fP\fIstream\fP\fB);\fP -\fBwint_t getwc(FILE *\fP\fIstream\fP\fB);\fP -.fi -.SH 説明 -\fBfgetwc\fP() 関数は、 \fBfgetc\fP(3) に対応するワイド文字関数である。 この関数は \fIstream\fP からワイド文字を 1 -文字読み込み、これを返す。 ストリームの終端に達するか、\fIferror(stream)\fP が真になった場合には、 この関数は \fBWEOF\fP を返す。 -ワイド文字変換でエラーが発生した場合は、 \fIerrno\fP に \fBEILSEQ\fP をセットし、 \fBWEOF\fP を返す。 -.PP -\fBgetwc\fP() 関数あるいはマクロは、 \fBfgetwc\fP() と全く同じ動作をする。 -この関数はマクロとして実装されるかもしれないので、引き数が複数回評価さ れるかもしれない。この関数を使う理由はもはや存在しない。 -.PP -これらの処理を停止せずに行いたいときは、 \fBunlocked_stdio\fP(3) を参照のこと。 -.SH 返り値 -\fBfgetwc\fP() 関数はストリームの次のワイド文字か、あるいは \fBWEOF\fP を返す。 エラーが起こった場合、 \fIerrno\fP -にエラーの原因を示す値が設定される。 -.SH エラー -通常のエラーに加えて、以下のエラーがある: -.TP -\fBEILSEQ\fP -入力ストリームから取得したデータが、正しい文字でない。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 注意 -\fBfgetwc\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.PP -\fBfopen\fP(3) システムコールに渡す追加情報がない場合には、 \fBfgetwc\fP() が実際 -にはマルチバイトシーケンスをストリームから読み込み、これをワイド文字に 変換すると期待することは適切である。 -.SH 関連項目 -\fBfgetws\fP(3), \fBfputwc\fP(3), \fBungetwc\fP(3), \fBunlocked_stdio\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fgetws.3 b/manual/LDP_man-pages/draft/man3/fgetws.3 deleted file mode 100644 index 7d985cb8..00000000 --- a/manual/LDP_man-pages/draft/man3/fgetws.3 +++ /dev/null @@ -1,62 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification -.\" http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\" Modified Tue Oct 16 23:18:40 BST 2001 by John Levon -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sun Aug 29 15:03:42 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" Updated Sat Oct 27 09:01:41 JST 2001 -.\" by Yuichi SATO -.\" -.TH FGETWS 3 2011\-09\-28 GNU "Linux Programmer's Manual" -.SH 名前 -fgetws \- ワイド文字の文字列を FILE ストリームから読み込む -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *fgetws(wchar_t *\fP\fIws\fP\fB, int \fP\fIn\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -.fi -.SH 説明 -\fBfgetws\fP() 関数は \fBfgets\fP(3) に対応するワイド文字関数である。 この関数は、最大 \fIn\-1\fP 文字のワイド文字を -\fIws\fP が示すワイド文字の配列に読み込み、 終端のヌルワイド文字 (L\(aq\e0\(aq) を追加する。 -この関数は、ワイド文字の改行文字を見つけ、これを格納すると読み込むのを止める。 この関数はストリームの終わりに達した場合も読み込みを止める。 -.PP -プログラマは、\fIws\fP には少なくとも \fIn\fP 文字のワイド文字を 格納できる領域を必ず確保していなければならない。 -.PP -これらの処理を停止せずに行いたいときは、 \fBunlocked_stdio\fP(3) を参照のこと。 -.SH 返り値 -\fBfgetws\fP() は成功すると \fIws\fP を返す。 既にストリームの終わりに達しているか、エラーが起きた場合には NULL を返す。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 注意 -\fBfgetws\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.PP -\fBfopen\fP(3) システムコールに渡す追加の情報がない場合には、 \fBfgetws\fP() -が実際にはマルチバイトシーケンスをストリームから読み込み、 これをワイド文字に変換すると期待することは適切である。 -.PP -この関数は信頼できない。なぜなら、入力に含まれるかもしれない ナルワイド文字を適切に処理することができないからである。 -.SH 関連項目 -\fBfgetwc\fP(3), \fBunlocked_stdio\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/finite.3 b/manual/LDP_man-pages/draft/man3/finite.3 deleted file mode 100644 index 1a01d7a1..00000000 --- a/manual/LDP_man-pages/draft/man3/finite.3 +++ /dev/null @@ -1,124 +0,0 @@ -.\" Copyright 2004 Andries Brouwer . -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2005-02-21, Akihiro MOTOKI -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" Updated 2013-08-16, Akihiro MOTOKI -.\" -.TH FINITE 3 2013\-07\-22 "" "Linux Programmer's Manual" -.SH 名前 -finite, finitef, finitel, isinf, isinff, isinfl, isnan, isnanf, isnanl \- BSD -の浮動小数点分類関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint finite(double \fP\fIx\fP\fB);\fP -.br -\fBint finitef(float \fP\fIx\fP\fB);\fP -.br -\fBint finitel(long double \fP\fIx\fP\fB);\fP -.sp -\fBint isinf(double \fP\fIx\fP\fB);\fP -.br -\fBint isinff(float \fP\fIx\fP\fB);\fP -.br -\fBint isinfl(long double \fP\fIx\fP\fB);\fP -.sp -\fBint isnan(double \fP\fIx\fP\fB);\fP -.br -\fBint isnanf(float \fP\fIx\fP\fB);\fP -.br -\fBint isnanl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBfinite\fP(), \fBfinitef\fP(), \fBfinitel\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE -.RE -\fBisinf\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBisinff\fP(), \fBisinfl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE -.RE -\fBisnan\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE; -.br -or \fIcc\ \-std=c99\fP -.RE -\fBisnanf\fP(), \fBisnanl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 -.RE -.ad b -.SH 説明 -関数 \fBfinite\fP(), \fBfinitef\fP(), \fBfinitel\fP() は、 \fIx\fP が無限大や無効値 (NaN) -のいずれでもない場合に 0 以外の値を返し、 それ以外の場合は 0 を返す。 - -関数 \fBisnan\fP(), \fBisnanf\fP(), and \fBisnanl\fP() 関数は、 \fIx\fP が NaN の場合 0 以外の値を返し、 -それ以外の場合は 0 を返す。 - -関数 \fBisinf\fP(), \fBisinff\fP(), \fBisinfl\fP() は、 \fIx\fP が正の無限大であれば 1 を返し、\fIx\fP -が負の無限大で あれば \-1 を返す。それ以外の場合は 0 を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBfinite\fP(), \fBfinitef\fP(), \fBfinitel\fP(), \fBisinf\fP(), \fBisinff\fP(), -\fBisinfl\fP(), \fBisnan\fP(), \fBisnanf\fP(), \fBisnanl\fP() はスレッドセーフである。 -.SH 注意 -.\" -.\" finite* not on HP-UX; they exist on Tru64. -.\" .SH HISTORY -.\" The -.\" .BR finite () -.\" function occurs in 4.3BSD. -.\" see IEEE.3 in the 4.3BSD manual -これらの関数は廃止された点に注意すること。 C99 では、これらの置き換えとして (どんな型にも適用できる) \fBisfinite\fP(), -\fBisinf\fP(), \fBisnan\fP() というマクロが定義されている。 さらに C99 の \fBisinf\fP() -は返り値に関して弱い意味での保証しかないことにも 注意すること。詳細は \fBfpclassify\fP(3) を参照。 -.SH 関連項目 -\fBfpclassify\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/flockfile.3 b/manual/LDP_man-pages/draft/man3/flockfile.3 deleted file mode 100644 index 26816063..00000000 --- a/manual/LDP_man-pages/draft/man3/flockfile.3 +++ /dev/null @@ -1,101 +0,0 @@ -.\" Copyright (C) 2001 Andries Brouwer . -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001 Yuichi SATO -.\" all rights reserved. -.\" Translated Sun Nov 4 14:09:45 2001 -.\" by Akihiro MOTOKI -.\" -.TH FLOCKFILE 3 2014\-08\-19 "" "Linux Programmer's Manual" -.SH 名前 -flockfile, ftrylockfile, funlockfile \- 標準入出力 FILE のロックを行う -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid flockfile(FILE *\fP\fIfilehandle\fP\fB);\fP -.br -\fBint ftrylockfile(FILE *\fP\fIfilehandle\fP\fB);\fP -.br -\fBvoid funlockfile(FILE *\fP\fIfilehandle\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.ad l -.sp -上記の全ての関数: -.RS 4 -_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE -|| _POSIX_SOURCE -.RE -.ad b -.SH 説明 -標準入出力関数はスレッドセーフである。これは、各 \fIFILE\fP オブジェクトに対し、ロック数 (lockcount) と (ロック数が 0 -でない場合は) 所有者スレッド (owner thread) を管理することで実現される。 ライブラリの呼び出しが行われる毎に、標準入出力関数は -\fIFILE\fP オブジェクトが他のスレッドによってロックされていない状態になるまで待ち、 \fIFILE\fP -オブジェクトをロックし、要求されて入出力を行い、 オブジェクトのロックを解除する。 -.LP -(注: このロックは、 \fBflock\fP(2) や \fBlockf\fP(3) といった関数が行うロックとは全く無関係である。) -.LP -これらのことはすべて C プログラマには見えない部分で行われるが、 より細かい制御ができた方がよい理由が2つあるだろう。一つは、一つのスレッドが -行う一連の入出力動作は一緒に行われ、他のスレッドの入出力によって中断されない 方がよいということであろう。もう一つは、効率を大きく上げるためには -ロックのオーバヘッドを避ける必要があるということであろう。 -.LP -この目的を実現するために、 \fIFILE\fP オブジェクトのロック、一連の入出力動作の実行、 ロックの解除をスレッドが明示的に指示することができる。 -これにより、他のスレッドが途中で入出力を行うのを防止する。 このようなことを行う理由が効率の向上であるならば、 -ロックを行わないバージョンの標準入出力関数を使うこともできる。 例えば、 \fBgetc\fP(3) や \fBputc\fP(3) の代わりに -\fBgetc_unlocked\fP(3) や \fBputc_unlocked\fP(3) を使用する。 -.LP -\fBflockfile\fP() 関数は、\fI*filehandle\fP が他のスレッドにロックされていな い状態になるまで待ったのち、現在のスレッドを -\fI*filehandle\fP のオーナに設 定し、ロック数を加算する。 -.LP -\fBfunlockfile\fP() 関数は、ロック数を減算する。 -.LP -\fBftrylockfile\fP() 関数は \fBflockfile\fP() のブロッキングを行わない バージョンである。他のスレッドが -\fI*filehandle\fP をロックしている時は 何も行わず、そうでない場合は \fI*filehandle\fP の所有権を獲得し、 ロック数を加算する。 -.SH 返り値 -\fBftrylockfile\fP() 関数はロックに成功すると 0 を返し、 失敗した場合は 0 以外の値を返す。 -.SH エラー -なし。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBflockfile\fP(), \fBftrylockfile\fP(), \fBfunlockfile\fP() はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 可用性 -\fB_POSIX_THREAD_SAFE_FUNCTIONS\fP が定義されているときにこれらの関数を使用することができる。 -.SH 関連項目 -\fBunlocked_stdio\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/floor.3 b/manual/LDP_man-pages/draft/man3/floor.3 deleted file mode 100644 index e3845534..00000000 --- a/manual/LDP_man-pages/draft/man3/floor.3 +++ /dev/null @@ -1,100 +0,0 @@ -.\" Copyright 2001 Andries Brouwer . -.\" and Copyright 2008, Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" and Copyright (c) 2008 Akihiro MOTOKI -.\" Translated Mon Jan 20 18:35:18 JST 1997 -.\" by YOSHINO Takashi -.\" Updated & Modified Fri Jul 6 20:37:36 JST 2001 -.\" by Yuichi SATO -.\" Updated & Modified Mon Jan 10 08:45:45 JST 2005 -.\" by Yuichi SATO -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH FLOOR 3 2013\-07\-23 "" "Linux Programmer's Manual" -.SH 名前 -floor, floorf, floorl \- 引き数を越えない最大の整数値 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble floor(double \fP\fIx\fP\fB);\fP -.br -\fBfloat floorf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double floorl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBfloorf\fP(), \fBfloorl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -これらの関数は \fIx\fP より大きくない最大の整数値を返す。 - -例えば、 \fIfloor(0.5)\fP は 0.0 で、 \fIfloor(\-0.5)\fP は \-1.0 である。 -.SH 返り値 -これらの関数は \fIx\fP を越えない最小の整数値を返す。 - -\fIx\fP が整数、+0、\-0、NaN、無限大のいずれかの場合、 \fIx\fP そのものが返される。 -.SH エラー -エラーは発生しない。 POSIX.1\-2001 にはオーバーフローでの範囲エラー (range error) の 記載がある。「注意」の節を参照のこと。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBfloor\fP(), \fBfloorf\fP(), \fBfloorl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠している。 -.SH 注意 -.\" The POSIX.1-2001 APPLICATION USAGE SECTION discusses this point. -SUSv2 と POSIX.1\-2001 にはオーバーフローに関する記述があり、 オーバーフローの場合には、 \fIerrno\fP を \fBERANGE\fP -に設定するか、 \fBFE_OVERFLOW\fP 例外を発生することとされている。 -実際のところ、どの現行のマシンでも結果がオーバーフローを起こすことはないので、 このエラー処理は意味がない。 -(より正確に言うと、オーバーフローは指数部の最大値が 仮数部を表すビットの数より小さい場合にしか起こらない。 IEEE\-754 規格の 32 ビットと -64 ビットの浮動小数では、 指数部の最大値はそれぞれ 128 と 1024 であり、 仮数部のビット数はそれぞれ 24 と 53 である。) -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fma.3 b/manual/LDP_man-pages/draft/man3/fma.3 deleted file mode 100644 index 7d2ee891..00000000 --- a/manual/LDP_man-pages/draft/man3/fma.3 +++ /dev/null @@ -1,118 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk -.\" -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" Modified 2004-11-15, Added further text on FLT_ROUNDS -.\" as suggested by AEB and Fabian Kreutz -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004-2005 Yuichi SATO -.\" and Copyright (c) 2008 Akihiro MOTOKI -.\" Translated Sat Jul 24 10:37:53 JST 2004 -.\" by Yuichi SATO -.\" Updated & Modified Mon Jan 10 09:11:49 JST 2005 by Yuichi SATO -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH FMA 3 2013\-09\-17 "" "Linux Programmer's Manual" -.SH 名前 -fma, fmaf, fmal \- 浮動小数点数の積と和を計算する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble fma(double \fP\fIx\fP\fB, double \fP\fIy\fP\fB, double \fP\fIz\fP\fB);\fP -.br -\fBfloat fmaf(float \fP\fIx\fP\fB, float \fP\fIy\fP\fB, float \fP\fIz\fP\fB);\fP -.br -\fBlong double fmal(long double \fP\fIx\fP\fB, long double \fP\fIy\fP\fB, long double \fP\fIz\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBfma\fP(), \fBfmaf\fP(), \fBfmal\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBfma\fP() 関数は \fIx\fP * \fIy\fP + \fIz\fP を計算する。 結果は、一つの三項演算として現在の丸めモードにしたがって丸められる -(\fBfenv\fP(3) 参照)。 -.SH 返り値 -これらの関数は \fIx\fP * \fIy\fP + \fIz\fP の、一つの三項演算として丸められた値を返す。 - -\fIx\fP か \fIy\fP が NaN の場合、NaN が返される。 - -\fIy\fP の \fIx\fP 倍がちょうど無限大で、 \fIz\fP がそれとは反対の符号の無限大の場合、 領域エラー (domain error) -が発生し、NaN が返される。 - -.\" POSIX.1-2008 allows some possible differences for the following two -.\" domain error cases, but on Linux they are treated the same (AFAICS). -.\" Nevertheless, we'll mirror POSIX.1 and describe the two cases -.\" separately. -.\" POSIX.1 says that a NaN or an implementation-defined value shall -.\" be returned for this case. -\fIx\fP と \fIy\fP のうち一方が無限大で、もう一方が 0 で、 \fIz\fP が NaN でない場合、領域エラーが発生し、NaN が返される。 - -.\" POSIX.1 makes the domain error optional for this case. -\fIx\fP と \fIy\fP のうち一方が無限大で、もう一方が 0 で、 \fIz\fP が NaN の場合、領域エラーが発生し、NaN が返される。 - -\fIy\fP の \fIx\fP 倍が 0 の無限大倍 (もしくはその逆) ではなく、 \fIz\fP が NaN の場合、NaN が返される。 - -結果がオーバーフローする場合、範囲エラー (range error) が発生し、 正しい符号の無限大が返される。 - -結果がアンダーフローする場合、 範囲エラーが発生し、符号付きの 0 が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー: \fIx\fP * \fIy\fP + \fIz\fP か \fIx\fP * \fIy\fP が無効で、\fIz\fP が NaN ではない -.\" .I errno -.\" is set to -.\" .BR EDOM . -不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.TP -範囲エラー (range error): 結果のオーバーフロー -.\" .I errno -.\" is set to -.\" .BR ERANGE . -オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 -.TP -範囲エラー (range error): 結果のアンダーフロー -.\" .I errno -.\" is set to -.\" .BR ERANGE . -アンダーフロー浮動小数点例外 (\fBFE_UNDERFLOW\fP) が上がる。 -.PP -.\" FIXME . Is it intentional that these functions do not set errno? -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6801 -これらの関数は \fIerrno\fP を設定しない。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBfma\fP(), \fBfmaf\fP(), \fBfmal\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 関連項目 -\fBremainder\fP(3), \fBremquo\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fmax.3 b/manual/LDP_man-pages/draft/man3/fmax.3 deleted file mode 100644 index f9238e87..00000000 --- a/manual/LDP_man-pages/draft/man3/fmax.3 +++ /dev/null @@ -1,70 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk -.\" -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004-2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Sat Jul 24 10:45:05 JST 2004 -.\" by Yuichi SATO -.\" Updated & Modified Mon Jan 10 10:11:00 JST 2005 by Yuichi SATO -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH FMAX 3 2013\-09\-17 "" "Linux Programmer's Manual" -.SH 名前 -fmax, fmaxf, fmaxl \- 二つの浮動小数点数の最大値を求める -.SH 書式 -\fB#include \fP -.sp -\fBdouble fmax(double \fP\fIx\fP\fB, double \fP\fIy\fP\fB);\fP -.br -\fBfloat fmaxf(float \fP\fIx\fP\fB, float \fP\fIy\fP\fB);\fP -.br -\fBlong double fmaxl(long double \fP\fIx\fP\fB, long double \fP\fIy\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBfmax\fP(), \fBfmaxf\fP(), \fBfmaxl\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -これらの関数は \fIx\fP と \fIy\fP のうち大きい方の値を返す。 -.SH 返り値 -これらの関数は \fIx\fP と \fIy\fP の最大値を返す。 - -一方の引き数が NaN の場合、もう一方の値が返される。 - -両方の引き数が NaN の場合、NaN が返される。 -.SH エラー -エラーは発生しない。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBfmax\fP(), \fBfmaxf\fP(), \fBfmaxl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 関連項目 -\fBfmin\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fmemopen.3 b/manual/LDP_man-pages/draft/man3/fmemopen.3 deleted file mode 100644 index 032d8bbb..00000000 --- a/manual/LDP_man-pages/draft/man3/fmemopen.3 +++ /dev/null @@ -1,231 +0,0 @@ -.\" Copyright 2005 walter harms (walter.harms@informatik.uni-oldenburg.de), -.\" and Copyright 2005, 2012 Michael Kerrisk -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under the GPL. -.\" %%%LICENSE_END -.\" -.\" 2008-12-04, Petr Baudis : Document open_wmemstream() -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005, 2006 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2005-12-26, Akihiro MOTOKI -.\" Updated 2006-01-20, Akihiro MOTOKI -.\" Updated 2006-07-20, Akihiro MOTOKI -.\" Updated 2008-11-08, Akihiro MOTOKI, LDP v3.13 -.\" Updated 2010-04-18, Akihiro MOTOKI, LDP v3.24 -.\" Updated 2012-05-30, Akihiro MOTOKI -.\" -.TH FMEMOPEN 3 2015\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -fmemopen, open_memstream, open_wmemstream \- メモリーをストリームとしてオープンする -.SH 書式 -.nf -\fB#include \fP - -\fBFILE *fmemopen(void *\fP\fIbuf\fP\fB, size_t \fP\fIsize\fP\fB, const char *\fP\fImode\fP\fB);\fP - -\fBFILE *open_memstream(char **\fP\fIptr\fP\fB, size_t *\fP\fIsizeloc\fP\fB);\fP - -\fB#include \fP - -\fBFILE *open_wmemstream(wchar_t **\fP\fIptr\fP\fB, size_t *\fP\fIsizeloc\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBfmemopen\fP(), \fBopen_memstream\fP(), \fBopen_wmemstream\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.ad -.PD -.SH 説明 -\fBfmemopen\fP() 関数は、ストリームをオープンし、そのストリームに \fImode\fP で指定されたアクセス許可を設定する。 -そのストリームを通じて、 \fIbuf\fP で指定された文字列やメモリーバッファーへの読み書きができる。 このバッファーは少なくとも \fIsize\fP -バイトの長さでなければならない。 -.PP -引き数 \fImode\fP は \fBfopen\fP(3) の場合と同じである。 \fImode\fP で追記モード -(append mode) が指定された場合、ファイル位置の初期値は バッファー中の -最初のヌルバイト (\(aq\e0\(aq) の位置に設定される。 -それ以外の場合は、ファイル位置の初期値はバッファーの先頭になる。 -glibc 2.9 以降では、文字 \(aqb\(aq を \fImode\fP の二番目の文字として指定 -することができる。 この文字は「バイナリ」モードを指定するものである。 -このモードでは、書き込み時に文字列終端のヌルバイトが黙って追加 される -ことはない。また、 \fBfseek\fP(3) \fBSEEK_END\fP は、文字列の長さからの相対値 -ではなく、バッファーの末尾 (\fIsize\fP で指定した値) からの相対値となる。 -.PP -書き込み用にオープンされたストリームをフラッシュ (\fBfflush\fP(3)) やクローズ (\fBfclose\fP(3)) した時に、 -(バッファーに空きがあれば) ヌルバイトがバッファーの末尾に書き込まれる。 このようにするためには、呼び出し元は バッファーに 1バイト余裕を作る -(\fIsize\fP にこの 1バイトを含めた値を指定する) 必要がある。 - -バッファーに \fIsize\fP バイトよりたくさん書き込もうとした場合には、エラーとなる。 (デフォルトでは、このようなエラーが見えるのは -\fIstdio\fP バッファーがフラッシュされた時だけである。 以下の呼び出しを使ってバッファーリングを無効にする方法は、 -出力操作を行った時点でエラーを検出するのに役立つ。 - - setbuf(stdream, NULL); - -別の方法としては、 以下のように、 呼び出し側が明示的に stdio ストリームバッファーとして \fIbuf\fP -を指定し、バッファーの指定時にバッファーのサイズを stdio に教える方法がある。 - - setbuffer(stream, buf, size); - -.\" See http://sourceware.org/bugzilla/show_bug.cgi?id=1995 -.\" and -.\" http://sources.redhat.com/ml/libc-alpha/2006-04/msg00064.html -.PP -読み出し用にオープンされたストリームでは、 バッファー内にヌルバイト (\(aq\e0\(aq) があっても 読み出し操作がファイル末尾 -(end\-of\-file) を返すことはない。 バッファーからの読み出しでファイル末尾が返るのは、 ファイルポインターがバッファーの先頭から -\fIsize\fP バイトを越えて先に進もうとした場合だけである。 -.PP -\fIbuf\fP に NULL が指定された場合、 \fBfmemopen\fP() は動的に \fIsize\fP バイトの長さのバッファーを確保する。 -この方法は、一時バッファーにデータの書き込みを行ってから、 その内容を再度読み出すようなアプリケーションで有用である。 -このバッファーはストリームがクローズされるときに自動的に解放される。 呼び出し元からはこの関数が割り当てた一時バッファーへのポインター値を -知る方法は存在しない点に注意 (下記の \fBopen_memstream\fP() も参照)。 - -\fBopen_memstream\fP() 関数は、バッファーへの書き込み用にストリームをオープンする。 バッファーは (\fBmalloc\fP(3) -を使って) 動的に割り当てられ、必要に応じて自動的に伸長する。 ストリームをクローズした後で、呼び出し元はこのバッファーを \fBfree\fP(3) -すべきである。 - -このストリームが クローズ (\fBfclose\fP(3)) されたりフラッシュ (\fBfflush\fP(3)) された時に、 \fIptr\fP と -\fIsizeloc\fP の値はそれぞれバッファーへのポインターとそのサイズに更新される。 これらの値は、呼び出し元がそのストリームに新たな書き込みを -行わない場合に限り有効である。 ストリームに書き込みを行った際には、これらの変数を参照する前に ストリームを再度フラッシュしなければならない。 - -バッファー末尾のヌルバイトは保持される。 このヌルバイトは \fIsizeloc\fP に格納されるサイズには「含まれない」。 - -ストリームのファイル位置は \fBfseek\fP(3) や \fBfseeko\fP(3) で変更できる。 -すでにデータが書き込まれた領域の末尾より先にファイル位置を動かすと、 その間の領域は 0 で埋められる。 - -\fBopen_wmemstream\fP() は \fBopen_memstream\fP() -と同様だが、バイトではなくワイド文字に対して操作を行う点が異なる。 -.SH 返り値 -成功して終了した場合には、 \fBfmemopen\fP(), \fBopen_memstream\fP(), \fBopen_wmemstream\fP() は -\fIFILE\fP ポインターを返す。 失敗した場合は、 NULL を返し、 \fIerrno\fP にエラーを示す値をセットする。 -.SH バージョン -\fBfmemopen\fP() と \fBopen_memstream\fP() は glibc 1.0.x ですでに利用可能であった。 -\fBopen_wmemstream\fP() は glibc 2.4 以降で利用可能である。 -.SH 準拠 -POSIX.1\-2008. これらの関数は POSIX.1\-2001 では規定れていないが、 Linux 以外のシステムで広く利用可能である。 - -.\" http://austingroupbugs.net/view.php?id=396 -POSIX.1\-2008 では \fImode\fP の \(aqb\(aq は無視されるべきだと規定されて -いる。一方、Technical Corrigendum (正誤表) 1 では、\fImode\fP の -\(aqb\(aq が指定された場合の扱いは実装依存であることを許容するように -標準規格が修正されており、glibc の \(aqb\(aq の扱いは許されている。 -.SH 注意 -これらの関数が返すファイルストリームに対応するファイル ディスクリプターはない (つまり、返されたストリームに対して \fBfileno\fP(3) -を呼び出すとエラーが返ることになる)。 -.SH バグ -.\" http://sourceware.org/bugzilla/show_bug.cgi?id=1996 -バージョン 2.7 より前の glibc では、 \fBopen_memstream\fP() -で作成されたストリームの末尾より先にファイル位置を動かしても、 バッファーが伸長されず、 \fBfseek\fP(3) が失敗し \-1 が返る。 - -.\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=11216 -\fIsize\fP に 0 が指定された場合、 \fBfmemopen\fP() はエラー \fBEINVAL\fP で失敗 -する。この場合にはストリームの作成に成功して、最初の読み出しを行った際に -EOF (end of file) が返される方が、ストリームの扱いの一貫性が増すだろう。 -また、 POSIX.1\-2008 ではこの場合のエラーは規定されていない。 - -.\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=13152 -\fBfmemopen\fP() に追記モード ("a" や "a+") を指定すると、 -ファイル位置の初期値は最初のヌルバイトに設定されるが、(ファイル -オフセットをストリームの末尾以外の位置に再設定した場合)それ以降の -書き込みではストリームの末尾への追記が行われる訳ではない。 - -.\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=13151 -\fBfmemopen\fP() の \fImode\fP 引き数に追記モード ("a" や "a+") を指定し、 -\fIsize\fP 引き数で指定した範囲の \fIbuf\fP 内にヌルバイトがない場合、 -POSIX.1\-2008 では、ファイル位置の初期値はバッファーの末尾の直後の -バイトに設定すべきとされている。しかし、glibc の \fBfmemopen\fP() では -この場合ファイル位置は \-1 に設定される。 - -.\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=12836 -\fBfmemopen\fP() でバイナリモードを指定するには、 -\(aqb\(aq は \fImode\fP の \fI2 文字目\fP でなければならない。 -例えば、 "wb+" は意図通りの効果になるが、 "w+b" はそうではない。 -これは \fBfopen\fP(3) の \fImode\fP の扱いとは異なる。 - -.\" http://sourceware.org/bugzilla/show_bug.cgi?id=6544 -glibc 2.9 での \fBfmemopen\fP() の「バイナリ」モードの追加は、 -ABI (Application Binary Interface) が黙って変更された。 -それ以前の \fBfmemopen\fP() では \fImode\fP 内の \(aqb\(aq は無視されていた。 -.SH 例 -このプログラムは \fBfmemopen\fP() を使って出力バッファーをオープンし、 \fBopen_memstream\fP() -を使って動的にサイズが変化する出力バッファーをオープンしている。 (プログラムの第一コマンドライン引き数から取った) 入力文字列を -スキャンして整数を読み込み、これらの整数の二乗を出力バッファーに書き出す。 このプログラムの実行例は以下のようになる。 -.in +4n -.nf - -$\fB ./a.out \(aq1 23 43\(aq\fP -size=11; ptr=1 529 1849 -.fi -.in -.SS プログラムのソース -\& -.nf -#define _GNU_SOURCE -#include -#include -#include - -#define handle_error(msg) \e - do { perror(msg); exit(EXIT_FAILURE); } while (0) - -int -main(int argc, char *argv[]) -{ - FILE *out, *in; - int v, s; - size_t size; - char *ptr; - - if (argc != 2) { - fprintf(stderr, "Usage: %s \en", argv[0]); - exit(EXIT_FAILURE); - } - - in = fmemopen(argv[1], strlen(argv[1]), "r"); - if (in == NULL) - handle_error("fmemopen"); - - out = open_memstream(&ptr, &size); - if (out == NULL) - handle_error("open_memstream"); - - for (;;) { - s = fscanf(in, "%d", &v); - if (s <= 0) - break; - - s = fprintf(out, "%d ", v * v); - if (s == \-1) - handle_error("fprintf"); - } - fclose(in); - fclose(out); - printf("size=%zu; ptr=%s\en", size, ptr); - free(ptr); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBfopen\fP(3), \fBfopencookie\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fmin.3 b/manual/LDP_man-pages/draft/man3/fmin.3 deleted file mode 100644 index d8b492a9..00000000 --- a/manual/LDP_man-pages/draft/man3/fmin.3 +++ /dev/null @@ -1,70 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk -.\" -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004-2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Sat Jul 24 11:09:37 JST 2004 -.\" by Yuichi SATO -.\" Updated & Modified Mon Jan 10 10:11:00 JST 2005 by Yuichi SATO -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH FMIN 3 2013\-09\-17 "" "Linux Programmer's Manual" -.SH 名前 -fmin, fminf, fminl \- 二つの浮動小数点数の最小値を求める -.SH 書式 -\fB#include \fP -.sp -\fBdouble fmin(double \fP\fIx\fP\fB, double \fP\fIy\fP\fB);\fP -.br -\fBfloat fminf(float \fP\fIx\fP\fB, float \fP\fIy\fP\fB);\fP -.br -\fBlong double fminl(long double \fP\fIx\fP\fB, long double \fP\fIy\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBfmin\fP(), \fBfminf\fP(), \fBfminl\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -これらの関数は \fIx\fP と \fIy\fP のうち小さい方の値を返す。 -.SH 返り値 -これらの関数は \fIx\fP と \fIy\fP の最小値を返す。 - -一方の引き数が NaN の場合、もう一方の値が返される。 - -両方の引き数が NaN の場合、NaN が返される。 -.SH エラー -エラーは発生しない。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBfmin\fP(), \fBfminf\fP(), \fBfminl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 関連項目 -\fBfmax\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fmod.3 b/manual/LDP_man-pages/draft/man3/fmod.3 deleted file mode 100644 index 2202de8c..00000000 --- a/manual/LDP_man-pages/draft/man3/fmod.3 +++ /dev/null @@ -1,114 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" and Copyright (c) 2008 Akihiro MOTOKI -.\" Translated Mon Jan 20 18:39:17 JST 1997 -.\" by YOSHINO Takashi -.\" Updated Wed Oct 15 JST 2003 by Kentaro Shirakata -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH FMOD 3 2012\-03\-15 "" "Linux Programmer's Manual" -.SH 名前 -fmod, fmodf, fmodl \- 浮動小数点剰余関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble fmod(double \fP\fIx\fP\fB, double \fP\fIy\fP\fB);\fP -.br -\fBfloat fmodf(float \fP\fIx\fP\fB, float \fP\fIy\fP\fB);\fP -.br -\fBlong double fmodl(long double \fP\fIx\fP\fB, long double \fP\fIy\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBfmodf\fP(), \fBfmodl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBfmod\fP() 関数は \fIx\fP を \fIy\fP で割った浮動小数点剰余を計算する。 返り値は \fIx\fP \- \fIn\fP * \fIy\fP である。 -ここで、\fIn\fP は \fIx\fP / \fIy\fP の商を ゼロに向かう方向で整数値に丸めたものである。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP\ \-\ \fIn\fP*\fIy\fP を返す。 \fIn\fP は、返り値が \fIx\fP と同じ符号で、その絶対値が \fIy\fP -の絶対値よりも小さくなるような整数である。 - -\fIx\fP か \fIy\fP が NaN の場合、NaN が返される。 - -\fIx\fP が無限大の場合、領域エラー (domain error) が発生し、 NaN が返される。 - -\fIy\fP が 0 の場合、領域エラーが発生し、 NaN が返される。 - -\fIx\fP が +0 (\-0) で \fIy\fP が 0 でない場合、+0 (\-0) が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が無限大である -\fIerrno\fP に \fBEDOM\fP が設定される (「バグ」の節も参照)。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) -が上がる。 -.TP -領域エラー: \fIy\fP がゼロ -.\" POSIX.1 documents an optional underflow error, but AFAICT it doesn't -.\" (can't?) occur -- mtk, Jul 2008 -\fIerrno\fP に \fBEDOM\fP が設定される。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠している。 -.SH バグ -.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6784 -バージョン 2.10 より前の glibc の実装では、 無限大で領域エラーが発生した際に、 \fIerrno\fP に \fBEDOM\fP が設定されなかった。 -.SH 関連項目 -\fBremainder\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fmtmsg.3 b/manual/LDP_man-pages/draft/man3/fmtmsg.3 index a50c45fa..d63f6818 100644 --- a/manual/LDP_man-pages/draft/man3/fmtmsg.3 +++ b/manual/LDP_man-pages/draft/man3/fmtmsg.3 @@ -21,30 +21,28 @@ .\" Translated Sat Jul 24 20:19:54 JST 2004 .\" by Yuichi SATO .\" -.TH FMTMSG 3 2013\-06\-21 "" "Linux Programmer's Manual" +.TH FMTMSG 3 2020\-06\-09 "" "Linux Programmer's Manual" .SH 名前 fmtmsg \- 整形されたエラーメッセージを表示する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint fmtmsg(long \fP\fIclassification\fP\fB, const char *\fP\fIlabel\fP\fB,\fP -.br \fB int \fP\fIseverity\fP\fB, const char *\fP\fItext\fP\fB,\fP -.br \fB const char *\fP\fIaction\fP\fB, const char *\fP\fItag\fP\fB);\fP .fi .SH 説明 この関数は、引き数で記述されたメッセージを、 \fIclassification\fP 引き数で指定されたデバイス上に表示する。 \fIstderr\fP に書き出されるメッセージのフォーマットは、 \fBMSGVERB\fP 環境変数に依存する。 -.LP +.PP \fIlabel\fP 引き数はメッセージの発生源を識別する。 この文字列はコロンで区切られた 2 つの部分から構成されていなければならない。 1 つ目の部分は 10 文字以内でなければならず、 2 つ目の部分は 14 文字以内でなければならない。 -.LP +.PP \fItext\fP 引き数にはエラー条件を記述する。 -.LP +.PP \fIaction\fP 引き数にはエラーから回復するために利用可能なステップを記述する。 これが表示される場合、"TO FIX: " が前に付く。 -.LP +.PP \fItag\fP 引き数はより多くの情報を見つけるためのオンラインドキュメントへの参照である。 これは \fIlabel\fP 値とユニークな識別番号を含んでいるべきである。 .SS ダミー引き数 @@ -54,8 +52,7 @@ fmtmsg \- 整形されたエラーメッセージを表示する は \fI((char\ *)\ 0)\fP と空文字列の別名であり、 \fBMM_NULLSEV\fP は \fBNO_SEV\fP の別名である。 .SS "classification 引き数" \fIclassification\fP 引き数は 4 種類の情報を記述する値の和である。 -.br -.sp +.PP 最初の値は出力チャンネルを定義する。 .TP 12n \fBMM_PRINT\fP @@ -138,20 +135,22 @@ fmtmsg \- 整形されたエラーメッセージを表示する .PP 環境変数 \fBSEV_LEVEL\fP は新しい重大度レベルを導入するのに使用できる。 デフォルトでは、上記の 5 つの重大度レベルのみが利用可能である。 他の数値の場合、 \fBfmtmsg\fP() は何も表示しない。 \fBfmtmsg\fP() を初めて呼び出す前に、ユーザーが \fBSEV_LEVEL\fP を -.sp +.PP .RS SEV_LEVEL=[description[:description[:...]]] .RE -.sp +.PP のような形式でプロセスの環境に設定すると、 \fBfmtmsg\fP() は (標準のレベル 0\-4 に加えて) level に指定された値も受け付け、 そのようなレベルの問題が発生すると指定された printstring を表示する。 各 description は -.sp +.PP .RS severity\-keyword,level,printstring .RE -.sp -という形式である。 -.LP +.PP +then \fBfmtmsg\fP() will also accept the indicated values for the level (in +addition to the standard levels 0\(en4), and use the indicated printstring +when such a level occurs. +.PP severity\-keyword 部は \fBfmtmsg\fP() に使用されないが、存在しなければならない。 level 部は数値を文字列で表したものである。 数値は 4 より大きい値でなければならない。 この値は \fBfmtmsg\fP() の severity 引き数で使用されなければならず、この重大度を選択する。 前もって宣言された重大度を上書きすることはできない。 printstring は、 @@ -159,19 +158,36 @@ severity\-keyword 部は \fBfmtmsg\fP() に使用されないが、存在しな .SH バージョン \fBfmtmsg\fP() は、バージョン 2.1 以降の glibc で提供されている。 .SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lbw23 +l l l. +Interface Attribute Value +T{ +\fBfmtmsg\fP() +T} Thread safety T{ +glibc >= 2.16: MT\-Safe +.br +glibc < 2.16: MT\-Unsafe +T} +.TE +.PP glibc 2.16 より前のバージョンでは、 \fBfmtmsg\fP() 関数は、 保護されていない静的な変数を使うため、 スレッドセーフではない。 - +.PP .\" Modified in commit 7724defcf8873116fe4efab256596861eef21a94 glibc 2.16 以降では、 \fBfmtmsg\fP() 関数はロックを使って静的な変数を保護しており、 スレッドセーフである。 .SH 準拠 -関数 \fBfmtmsg\fP() と \fBaddseverity\fP(3) と環境変数 \fBMSGVERB\fP と \fBSEV_LEVEL\fP は -System V に由来している。 関数 \fBfmtmsg\fP() と環境変数 \fBMSGVERB\fP は POSIX.1\-2001 に記述されている。 +The functions \fBfmtmsg\fP() and \fBaddseverity\fP(3), and environment variables +\fBMSGVERB\fP and \fBSEV_LEVEL\fP come from System V. +.PP +The function \fBfmtmsg\fP() and the environment variable \fBMSGVERB\fP are +described in POSIX.1\-2001 and POSIX.1\-2008. .SH 注意 System V と UnixWare の man ページには、 「これらの関数は "pfmt() と addsev()" または "pfmt(), vpfmt(), lfmt(), vlfmt()" で置き換えられており、 将来は削除される予定である」と書かれている。 -.SH 例 -.nf +.SH EXAMPLES +.EX #include #include #include @@ -202,30 +218,35 @@ main(void) } exit(EXIT_SUCCESS); } -.fi +.EE .PP 出力は -.nf - - util\-linux:mount: ERROR: unknown mount option - TO FIX: See mount(8). util\-linux:mount:017 - -.fi +.PP +.in +4n +.EX +util\-linux:mount: ERROR: unknown mount option +TO FIX: See mount(8). util\-linux:mount:017 +.EE +.in +.PP のようになり、 -.nf - - MSGVERB=text:action; export MSGVERB - -.fi +.PP +.in +4n +.EX +MSGVERB=text:action; export MSGVERB +.EE +.in +.PP を実行すると、次のようになる。 -.nf - - unknown mount option - TO FIX: See mount(8). -.fi +.PP +.in +4n +.EX +unknown mount option +TO FIX: See mount(8). +.EE +.in .SH 関連項目 \fBaddseverity\fP(3), \fBperror\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fnmatch.3 b/manual/LDP_man-pages/draft/man3/fnmatch.3 deleted file mode 100644 index b08745f3..00000000 --- a/manual/LDP_man-pages/draft/man3/fnmatch.3 +++ /dev/null @@ -1,86 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" -.\" %%%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 19:35:54 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Mon Oct 16 00:16:29 2000 following Joseph S. Myers -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated 1998-03-18, NAKANO Takeo -.\" Modified 1998-12-18, NAKANO Takeo -.\" Updated 2006-03-05, Akihiro MOTOKI, catch up to LDP v2.25 -.\" -.TH FNMATCH 3 2000\-10\-15 GNU "Linux Programmer's Manual" -.SH 名前 -fnmatch \- ファイル名またはパス名へのマッチを行う -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint fnmatch(const char *\fP\fIpattern\fP\fB, const char *\fP\fIstring\fP\fB, int \fP\fIflags\fP\fB);\fP -.fi -.SH 説明 -\fBfnmatch\fP() 関数は \fIstrings\fP 引き数が \fIpattern\fP 引き数にマッチするかをチェックする。 \fIpattern\fP -にはシェルのワイルドカードパターンを与える。 -.PP -\fIflags\fP 引き数により動作を変更できる。 \fIflags\fP は以下のフラグのビット毎の OR で指定する。 -.TP -\fBFNM_NOESCAPE\fP -このフラグがセットされていると、バックスラッシュ (\e) をエスケープ文字 ではなく通常の文字として扱う。 -.TP -\fBFNM_PATHNAME\fP -このフラグがセットされていると、 \fIstring\fP 中のスラッシュ (/) を \fIpattern\fP にあるスラッシュそのものにだけマッチさせ、 -アスタリスク (*) や疑問符 (?) のメタキャラクターや、 スラッシュを含むブラケット表現 ([]) にはマッチさせない。 -.TP -\fBFNM_PERIOD\fP -このフラグがセットされていると、 \fIstring\fP の先頭ピリオド (leading period) は \fIpattern\fP -中のピリオドそのものにしかマッチしない。先頭ピリオドとは、 \fIstring\fP の最初の文字位置にあるピリオドのことである。ただし -\fBFNM_PATHNAME\fP フラグが同時にセットされている場合には、スラッシュの直後に続くピリオド も先頭ピリオドとみなされる。 -.TP -\fBFNM_FILE_NAME\fP -これは \fBFNM_PATHNAME\fP に対する GNU での同義語である. -.TP -\fBFNM_LEADING_DIR\fP -このフラグは GNU での拡張である。これがセットされている場合には、 パターンが \fIstring\fP の最初の部分 (にスラッシュを付けたもの) -にマッチすれば、 マッチしたものとみなされる。 このフラグは主として glibc で内部的に使用するもので、そのためにのみ実装されている。 -.TP -\fBFNM_CASEFOLD\fP -このフラグは GNU での拡張である。これがセットされている場合には、 パターンのマッチに大文字小文字が区別されない。 -.SH 返り値 -\fIstring\fP が \fIpattern\fP にマッチすれば 0 を返す。マッチしなかった場合には \fBFNM_NOMATCH\fP -を返す。エラーの場合にはそれ以外の非ゼロ値を返す。 -.SH 準拠 -POSIX.2. \fBFNM_FILE_NAME\fP, \fBFNM_LEADING_DIR\fP, \fBFNM_CASEFOLD\fP フラグは GNU -の拡張である。 -.SH 関連項目 -\fBsh\fP(1), \fBglob\fP(3), \fBscandir\fP(3), \fBwordexp\fP(3), \fBglob\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fopen.3 b/manual/LDP_man-pages/draft/man3/fopen.3 deleted file mode 100644 index 1fc9d35d..00000000 --- a/manual/LDP_man-pages/draft/man3/fopen.3 +++ /dev/null @@ -1,222 +0,0 @@ -.\" 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 -.\" -.\" @(#)fopen.3 6.8 (Berkeley) 6/29/91 -.\" -.\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith@cs.unc.edu -.\" Modified, aeb, 960421, 970806 -.\" Modified, joey, aeb, 2002-01-03 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Thu Feb 13 12:10:38 JST 1997 -.\" by YOSHINO Takashi -.\" Updated & Modified Mon Mar 1 1999 -.\" by NAKANO Takeo -.\" Updated 1999-12-08, Kentaro Shirakata -.\" Updated 2001-12-13, Kentaro Shirakata -.\" Updated 2002-03-23, Kentaro Shirakata -.\" Updated 2005-10-15, Kentaro Shirakata -.\" Updated 2006-07-20, Akihiro MOTOKI -.\" Updated 2012-05-08, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH FOPEN 3 2012\-04\-22 GNU "Linux Programmer's Manual" -.SH 名前 -fopen, fdopen, freopen \- ストリームを開く関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBFILE *fopen(const char *\fP\fIpath\fP\fB, const char *\fP\fImode\fP\fB);\fP - -\fBFILE *fdopen(int \fP\fIfd\fP\fB, const char *\fP\fImode\fP\fB);\fP - -\fBFILE *freopen(const char *\fP\fIpath\fP\fB, const char *\fP\fImode\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBfdopen\fP(): _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE -.SH 説明 -\fBfopen\fP() 関数は、 \fIpath\fP で指定された名前のファイルを開き、ストリームと結びつける。 -.PP -引数 \fImode\fP は、以下に続く文字のひとつから始まる文字列へのポインターであ -る (以下の述べる、追加の文字が後に続くこともある): -.TP -\fBr\fP -テキストファイルを読み出すために開く。 ストリームはファイルの先頭に位置される。 -.TP -\fBr+\fP -読み出しおよび書き込みするために開く。 ストリームはファイルの先頭に位置される。 -.TP -\fBw\fP -ファイルを書き込みのために開く。 ファイルが既に存在する場合には長さゼロに切り詰める。 ファイルがなかった場合には新たに作成する。 -ストリームはファイルの先頭に位置される。 -.TP -\fBw+\fP -読み出しおよび書き込みのために開く。 ファイルが存在していない場合には新たに作成する。 存在している場合には長さゼロに切り詰められる。 -ストリームはファイルの先頭に位置される。 -.TP -\fBa\fP -追加 (ファイルの最後に書き込む) のために開く。 ファイルが存在していない場合には新たに作成する。 ストリームはファイルの最後に位置される。 -.TP -\fBa+\fP -読み出しおよび追加 (ファイルの最後に書き込む) のために開く。 ファイルが存在していない場合には新たに作成する。 -読み出しの初期ファイル位置はファイルの先頭であるが、 書き込みは常にファイルの最後に追加される。 -.PP -\fImode\fP 文字列には文字 \(aqb\(aq を追加指定することができ、 \fImode\fP 文字列の最後の文字として指定する。 上記のうち 2 -文字のモードの場合には 2 つの文字の間に指定することもできる。 これは C89 との互換性のためだけに用意された -ものであり、関数の実行に対してはいかなる影響も持たない。 すなわち、Linux を含む全ての POSIX 準拠システムでは、 この \(aqb\(aq -は無視される。 (その他のシステムではテキストファイルとバイナリファイルを別々に扱うものもあるので、 もしバイナリファイルの入出力を行い、 -そのプログラムが非 UNIX 環境へ移植されると予測するなら、 \(aqb\(aqを付けておくのは良い考えである) -.PP -\fImode\fP の glibc による拡張の詳細については下記の「注意」を参照。 -.PP -すべての生成されたファイルは、 \fBS_IRUSR\fP | \fBS_IWUSR\fP | \fBS_IRGRP\fP | \fBS_IWGRP\fP | -\fBS_IROTH\fP | \fBS_IWOTH\fP (0666) のモードを そのプロセスの umask 値によって修正したモードを持つ -(\fBumask\fP(2) を見よ)。 -.PP -読み出し/書き込みストリームに対しては任意の順序で読み書きを行うことができる。 ただし ANSI C では、 -(入力操作がファイルの末尾に到達した場合を除いて) 出力と入力の間にはファイルの位置決め関数を 挟まなければならないことになっていることに注意されたい -(この条件を満足しない場合には、読み込み操作は、 最後に書き込まれたものでなく、以前に書き込まれた 値を返すことを許されている)。 -したがって、このようなストリームでの読み書き操作の間には \fBfseek\fP(3) または \fBfgetpos\fP(3) 操作を挟んでおくと良いだろう -(Linux では本当に必要となることもときどきある)。 この操作は見かけ上何もしない操作 (no\-op) でも良い (例えば \fIfseek(..., -0L, SEEK_CUR)\fP を その副次的効果である同期のためだけに呼べば良い)。 -.PP -ファイルを追加モード (\fImode\fP の最初の文字を \fBa\fP にする) で開くと、 -このストリームに対する書き込み操作は全て (先に以下の呼び出しを行った -かのように) ファイルの末尾で行われる。 -.nf - - fseek(stream, 0, SEEK_END); -.fi -.PP -\fBfdopen\fP() 関数は、既存のファイルディスクリプター \fIfd\fP にストリームを結びつける。 ストリームの \fImode\fP ("r", -"r+", "w", "w+", "a", "a+" のいずれか) は ファイルディスクリプターのモードと互換のものでなければならない。 -新しいストリームのファイル位置指示子は \fIfd\fP に属している値に設定される。 error と end\-of\-file の各指示子はクリアされる。 -"w" および "w+" モードでのファイルの切り詰めは行われない。 ファイルディスクリプターの複製は行なわれない。 \fBfdopen\fP() -で作成されたストリームが閉じられたときにファイルディスクリプターも 閉じられる。 共有メモリーのオブジェクトへ \fBfdopen\fP() -を行ったときの結果は定義されていない。 -.PP -\fBfreopen\fP() 関数は \fIpath\fP で名前が指定されたファイルを開き、 \fIstream\fP -で指定されたストリームに、そのファイルを結びつける。 もとのストリームは (もし存在する場合には) 閉じられる。 \fImode\fP 引数は -\fBfopen\fP() 関数と同じ形で使われる。 \fBfreopen\fP() 関数の主な用途は、標準テキストストリーム (\fIstderr\fP, -\fIstdin\fP, \fIstdout\fP) と対応付けられているファイルを変更することである。 -.SH 返り値 -\fBfopen\fP(), \fBfdopen\fP(), \fBfreopen\fP() は成功すると \fIFILE\fP 型のポインターを返す。 失敗すると NULL -が返され、 \fIerrno\fP がエラーを示す値にセットされる。 -.SH エラー -.TP -\fBEINVAL\fP -\fBfopen\fP(), \fBfdopen\fP(), \fBfreopen\fP() で与えられた \fImode\fP が不適切である。 -.PP -\fBfopen\fP(), \fBfdopen\fP(), \fBfreopen\fP() 関数は \fBmalloc\fP(3) -ルーチンで規定されているエラーでも失敗することがあり、 その時は対応する値に \fIerrno\fP をセットする。 -.PP -\fBfopen\fP() 関数は \fBopen\fP(2) ルーチンで規定されているエラーでも失敗することがあり、 その時は対応する値に \fIerrno\fP -をセットする。 -.PP -\fBfdopen\fP() 関数は \fBfcntl\fP(2) ルーチンで規定されているエラーでも失敗することがあり、 その時は対応する値に -\fIerrno\fP をセットする。 -.PP -\fBfreopen\fP() 関数は \fBopen\fP(2), \fBfclose\fP(3), \fBfflush\fP(3) -各ルーチンで規定されているエラーでも失敗することがあり、 その時は対応する値に \fIerrno\fP をセットする。 -.SH 準拠 -\fBfopen\fP() 関数と \fBfreopen\fP() 関数は C89に準拠している。 \fBfdopen\fP() 関数は POSIX.1\-1990 -に準拠している。 -.SH 注意 -.SS "glibc での注意" -GNU C ライブラリでは、 \fImode\fP に指定できる文字列として、以下の拡張が行われている: -.TP -\fBc\fP (glibc 2.3.3 以降) -open 操作、それに続く read/write 操作の、 スレッドの取り消しポイント -(cancellation points) を作成しない。 -このフラグは \fBfdopen\fP() では無視される。 -.TP -\fBe\fP (glibc 2.7 以降) -\fBO_CLOEXEC\fP フラグを有効にしてファイルをオープンする。詳細は -\fBopen\fP(2) を参照。このフラグは \fBfdopen\fP() では無視される。 -.TP -\fBm\fP (glibc 2.3 以降) -.\" As at glibc 2.4: -I/O システムコール (\fBread\fP(2), \fBwrite\fP(2)) ではなく、 \fBmmap\fP(2) -を使ってファイルにアクセスしようとする。 \fBmmap\fP(2) を使おうとするのは、読み出し用にオープンするファイルについてだけである。 -.TP -\fBx\fP -.\" Since glibc 2.0? -.\" FIXME . C11 specifies this flag -ファイルを排他的にオープンする (\fBopen\fP(2) の \fBO_EXCL\fP フラグと同様)。 ファイルがすでに存在する場合、 \fBfopen\fP() -は失敗し、 \fIerrno\fP に \fBEEXIST\fP がセットされる。 このフラグは \fBfdopen\fP() では無視される。 -.PP -上記の文字に加えて、 -\fBfopen\fP() と \fBfreopen\fP() では \fImode\fP に -以下の書式を 指定することができる。 - -\fB ,ccs=\fP\fIstring\fP - -指定された \fIstring\fP は、符号化文字集合の名前と解釈され、 -ストリームではワイド文字のストリームとして扱われる。 -内部変換関数で入出力時に文字集合 \fIstring\fP との変換が行われる。 -書式 \fB,ccs=\fP\fIstring\fP が指定されない場合は、 -ストリームをワイド文字のストリームとして扱うかは -最初のファイル操作時に決定される。 -最初のファイル操作がワイド文字操作であった場合は、 -そのストリームはワイド文字のストリームとして扱われ、 -符号化文字集合との変換を行う関数が読み込まれる。 -.SH バグ -.\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=12685 -\fImode\fP の個々のフラグ文字 ("ccs" 指定の前の文字) を解釈する際に、 -glibc の \fBfopen\fP() と \fBfreopen\fP() の実装では、 -\fImode\fP の確認を最大 7 文字しか行わないという制限がある -(バージョン 2.14 より前の glibc では最大 6 文字だが、 -6 文字では "rb+cmxe" などの指定を行うには不十分であった)。 -\fBfdopen\fP() の現在の実装では最大 5 文字の \fImode\fP しか解釈されない。 -.SH 関連項目 -\fBopen\fP(2), \fBfclose\fP(3), \fBfileno\fP(3), \fBfmemopen\fP(3), \fBfopencookie\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fopencookie.3 b/manual/LDP_man-pages/draft/man3/fopencookie.3 index e69491f4..86c582a9 100644 --- a/manual/LDP_man-pages/draft/man3/fopencookie.3 +++ b/manual/LDP_man-pages/draft/man3/fopencookie.3 @@ -28,14 +28,14 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH FOPENCOOKIE 3 2015\-01\-22 Linux "Linux Programmer's Manual" +.TH FOPENCOOKIE 3 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 fopencookie \- 独自のストリームをオープンする .SH 書式 .nf \fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ \fB#include \fP - +.PP \fBFILE *fopencookie(void *\fP\fIcookie\fP\fB, const char *\fP\fImode\fP\fB,\fP \fB cookie_io_functions_t \fP\fIio_funcs\fP\fB);\fP .fi @@ -44,7 +44,7 @@ fopencookie \- 独自のストリームをオープンする この実装はストリームのデータを自分が選んだ場所に格納することができる。 例えば、 \fBfopencookie\fP() は \fBfmemopen\fP(3) を実装するのに使用されている。 \fBfmemopen\fP(3) はメモリー上のバッファーに格納されたデータに対するストリームインターフェースを提供している。 - +.PP 独自のストリームを作成するためには、 プログラマーは以下を行う必要がある。 .IP * 3 ストリームに対する I/O を実行する際に標準 I/O ライブラリが内部で使用する 4 つの "フック" 関数を実装する。 @@ -58,60 +58,60 @@ fopencookie \- 独自のストリームをオープンする .PP \fBfopencookie\fP() 関数は \fBfopen\fP(3) と同様の機能を持つ。 新しいストリームをオープンし、 そのストリームに対して操作を行うのに使用する \fIFILE\fP オブジェクトへのポインターを返す。 - +.PP \fIcookie\fP 引き数は、 新しいストリームに関連付けられる呼び出し元の cookie 構造体へのポインターである。 このポインターは、 標準 I/O ライブラリが以下で説明するフック関数のいずれかを呼び出す際に第 1 引き数として渡される。 - +.PP \fImode\fP 引き数は \fBfopen\fP(3) と同じ意味を持つ。 指定できるモードは \fIr\fP, \fIw\fP, \fIa\fP, \fIr+\fP, \fIw+\fP, \fIa+\fP である。 詳細は \fBfopen\fP(3) を参照。 - +.PP \fIio_funcs\fP 引き数は、 このストリームを実装するのに使用されるプログラマーが定義した関数を指す 4 つのフィールドを持つ構造体である。 この構造体は以下のように定義されている。 +.PP .in +4n -.nf - +.EX typedef struct { cookie_read_function_t *read; cookie_write_function_t *write; cookie_seek_function_t *seek; cookie_close_function_t *close; } cookie_io_functions_t; - -.fi +.EE .in +.PP 4 つのフィールドの詳細は以下のとおりである。 .TP \fIcookie_read_function_t *read\fP この関数はストリームに対する read 操作を実装する。 呼び出される際、 3 つの引き数を受け取る。 - +.IP ssize_t read(void *cookie, char *buf, size_t size); - +.IP 引き数 \fIbuf\fP と \fIsize\fP は、 それぞれ、 入力データを配置できるバッファーとそのバッファーのサイズである。 関数の結果として、 \fIread\fP 関数は \fIbuf\fP にコピーされたバイト数を、 ファイル末尾の場合は 0 を、 エラーの場合は \-1 を返す。 \fIread\fP 関数はストリームのオフセットを適切に更新すべきである。 - +.IP \fI*read\fP がヌルポインターの場合、 独自のストリームからの読み出しは常にファイル末尾 (end of file) を返す。 .TP \fIcookie_write_function_t *write\fP この関数はストリームに対する write 操作を実装する。 呼び出される際、 3 つの引き数を受け取る。 - +.IP ssize_t write(void *cookie, const char *buf, size_t size); - +.IP 引き数 \fIbuf\fP と \fIsize\fP は、 それぞれ、 ストリームへの出力するデータが入ったバッファーとそのバッファーのサイズである。 関数の結果として、 \fIwrite\fP 関数は \fIbuf\fP からコピーされたバイト数を返し、 エラーの場合は \-1 を返す。 (この関数は負の値を返してはならない。) \fIwrite\fP 関数はストリームのオフセットを適切に更新すべきである。 - +.IP \fI*write\fP がヌルポインターの場合、 このストリームへの出力は破棄される。 .TP \fIcookie_seek_function_t *seek\fP この関数はストリームに対する seek 操作を実装する。 呼び出される際、 3 つの引き数を受け取る。 - +.IP int seek(void *cookie, off64_t *offset, int whence); - +.IP \fI*offset\fP 引き数は新しいファイルオフセットを指定する。 新しいオフセットは \fIwhence\fP に以下の値のどれが指定されたかに応じて決まる。 .RS -.TP 10 +.TP \fBSEEK_SET\fP ストリームオフセットを、ストリームの先頭から \fI*offset\fP バイトの位置に設定する。 .TP @@ -123,48 +123,59 @@ typedef struct { .RE .IP 関数が返る前に、 \fIseek\fP 関数はストリームの新しいオフセットを示すように \fI*offset\fP を更新すべきである。 - +.IP 関数の結果として、 \fIseek\fP 関数は成功すると 0 を、 エラーの場合 \-1 を返す。 - +.IP \fI*seek\fP がヌルポインターの場合、 このストリームに対して seek 操作を行うことができない。 .TP \fIcookie_close_function_t *close\fP この関数はストリームをクローズする。 このフック関数では、 このストリームに割り当てられたバッファーを解放するといったことができる。 呼び出される際、 1 つの引き数を受け取る。 - +.IP int close(void *cookie); - +.IP \fIcookie\fP 引き数は \fBfopencookie\fP() の呼び出し時にプログラマーが渡した cookie である。 - +.IP 関数の結果として、 \fIclose\fP 関数は成功すると 0 を、 エラーの場合 \fBEOF\fP を返す。 - +.IP \fI*close\fP が NULL の場合、 ストリームがクローズされる際に特別な操作は何も行われない。 .SH 返り値 .\" .SH ERRORS .\" It's not clear if errno ever gets set... 成功すると \fBfopencookie\fP() は新しいストリームへのポインターを返す。 エラーの場合、 NULL が返される。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBfopencookie\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 この関数は非標準の GNU 拡張である。 -.SH 例 +.SH EXAMPLES 以下のプログラムは、 \fBfmemopen\fP(3) で利用できるのと似た (同じではない) 機能を持つ独自のストリームを実装している。 データがメモリーバッファーに格納されるストリームを実装している。 このプログラムは、 コマンドライン引き数をストリームに書き込み、 それからストリームをたどって 5 文字ごとに 2 文字を読み出して、 それを標準出力に書き込む。 以下のシェルセッションはこのプログラムの使用例である。 +.PP .in +4n -.nf - +.EX $\fB ./a.out \(aqhello world\(aq\fP /he/ / w/ /d/ Reached end of file - -.fi +.EE .in +.PP このプログラムを改良して様々なエラー状況に強くすることもできる (例えば、 オープン済みのストリームに対応する cookie でストリームをオープンしようとした、 すでにクローズされたストリームをクローズしようとした、など)。 .SS プログラムのソース \& -.nf +.EX #define _GNU_SOURCE #include #include @@ -274,9 +285,7 @@ main(int argc, char *argv[]) }; FILE *stream; struct memfile_cookie mycookie; - ssize_t nread; - long p; - int j; + size_t nread; char buf[1000]; /* Set up the cookie before calling fopencookie() */ @@ -299,7 +308,7 @@ main(int argc, char *argv[]) /* Write command\-line arguments to our file */ - for (j = 1; j < argc; j++) + for (int j = 1; j < argc; j++) if (fputs(argv[j], stream) == EOF) { perror("fputs"); exit(EXIT_FAILURE); @@ -307,30 +316,29 @@ main(int argc, char *argv[]) /* Read two bytes out of every five, until EOF */ - for (p = 0; ; p += 5) { + for (long p = 0; ; p += 5) { if (fseek(stream, p, SEEK_SET) == \-1) { perror("fseek"); exit(EXIT_FAILURE); } nread = fread(buf, 1, 2, stream); - if (nread == \-1) { - perror("fread"); - exit(EXIT_FAILURE); - } if (nread == 0) { + if (ferror(stream) != 0) { + fprintf(stderr, "fread failed\en"); + exit(EXIT_FAILURE); + } printf("Reached end of file\en"); break; } - printf("/%.*s/\en", nread, buf); + printf("/%.*s/\en", (int) nread, buf); } exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \fBfclose\fP(3), \fBfmemopen\fP(3), \fBfopen\fP(3), \fBfseek\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fpathconf.3 b/manual/LDP_man-pages/draft/man3/fpathconf.3 deleted file mode 100644 index a0601bb4..00000000 --- a/manual/LDP_man-pages/draft/man3/fpathconf.3 +++ /dev/null @@ -1,124 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" -.\" %%%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 11:12:26 1993 by Rik Faith (faith@cs.unc.edu) -.\" -.\" FIXME Probably all of the following should be documented: -.\" _PC_SYNC_IO, -.\" _PC_ASYNC_IO, -.\" _PC_PRIO_IO, -.\" _PC_SOCK_MAXBUF, -.\" _PC_FILESIZEBITS, -.\" _PC_REC_INCR_XFER_SIZE, -.\" _PC_REC_MAX_XFER_SIZE, -.\" _PC_REC_MIN_XFER_SIZE, -.\" _PC_REC_XFER_ALIGN, -.\" _PC_ALLOC_SIZE_MIN, -.\" _PC_SYMLINK_MAX, -.\" _PC_2_SYMLINKS -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated Fri Mar 20 1998 by NAKANO Takeo -.\" -.TH FPATHCONF 3 2014\-05\-28 GNU "Linux Programmer's Manual" -.SH 名前 -fpathconf, pathconf \- ファイルの設定値を取得する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBlong fpathconf(int \fP\fIfd\fP\fB, int \fP\fIname\fP\fB);\fP -.br -\fBlong pathconf(const char *\fP\fIpath\fP\fB, int \fP\fIname\fP\fB);\fP -.fi -.SH 説明 -\fBfpathconf\fP() はオープンされているファイルディスクリプター \fIfd\fP に対して設定されているオプション \fIname\fP -の値を取得する。 -.PP -\fBpathconf\fP() はファイル名 \fIpath\fP に対して設定されているオプション \fIname\fP の値を取得する。 -.PP -対応するマクロのうち \fI\fP で定義されているものは最小値である。アプリケーションによってはこれらの -値を変更してより有利な動作を行おうとするものがある。この場合でも \fBfpathconf\fP() または \fBpathconf\fP() -は呼び出すことができる。この場合はより大きな値が返ることになろう。 -.PP -\fIname\fP を以下の定数のどれかにすると、対応する設定オプションが返される。 -.TP -\fB_PC_LINK_MAX\fP -ファイルへのリンクの最大数を返す。 \fIfd\fP または \fIpath\fP がディレクトリの場合は、この値はディレクトリ全体に適用される。対応する マクロは -\fB_POSIX_LINK_MAX\fP である。 -.TP -\fB_PC_MAX_CANON\fP -フォーマット付き入力行の最大長を返す。このとき \fIfd\fP または \fIpath\fP は端末を参照していなければならない。 対応するマクロは -\fB_POSIX_MAX_CANON\fP である。 -.TP -\fB_PC_MAX_INPUT\fP -入力行の最大長を返す。このとき \fIfd\fP または \fIpath\fP は端末を参照していなければならない。 対応するマクロは -\fB_POSIX_MAX_INPUT\fP である。 -.TP -\fB_PC_NAME_MAX\fP -ディレクトリ \fIpath\fP または \fIfd\fP 内に、そのプロセスが作成することができるファイル名の最大長を返す。 対応するマクロは -\fB_POSIX_NAME_MAX\fP である。 -.TP -\fB_PC_PATH_MAX\fP -\fIpath\fP または \fIfd\fP がカレントディレクトリの場合、相対パス名の最大長を返す。 対応するマクロは \fB_POSIX_PATH_MAX\fP -である。 -.TP -\fB_PC_PIPE_BUF\fP -パイプ (pipe) バッファーのサイズを返す。このとき \fIfd\fP はパイプか FIFO を参照していなければならず、 \fIpath\fP は FIFO -を参照していなければならない。 対応するマクロは \fB_POSIX_PIPE_BUF\fP である。 -.TP -\fB_PC_CHOWN_RESTRICTED\fP -このファイルに対する \fBchown\fP(2) の呼び出しが許されていない場合には 0 以外の値を返す。 \fIfd\fP または \fIpath\fP -がディレクトリを参照している場合は、この制限はそのディレクトリのすべて のファイルに適用される。 対応するマクロは -\fB_POSIX_CHOWN_RESTRICTED\fP である。 -.TP -\fB_PC_NO_TRUNC\fP -アクセス中のファイル名が \fB_POSIX_NAME_MAX\fP よりも長く、エラーとなる場合には 0 以外の値を返す。 対応するマクロは -\fB_POSIX_NAME_MAX\fP である。 -.TP -\fB_PC_VDISABLE\fP -特殊文字 (special character) の処理が許されていない場合は 0 以外の値を 返す。このとき \fIfd\fP または \fIpath\fP -は端末を参照していなければならない。 -.SH 返り値 -(存在していれば) 制限値が返される。要求されたリソースへのシステムの制 限が存在していなければ \-1 が返され、 \fIerrno\fP -は変更されない。エラーが起こった場合には \-1 が返され、 \fIerrno\fP がエラーに対応した値に設定される。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fIname\fP に \fB_PC_NAME_MAX\fP を入れて返された値よりも長いファイル名を持つファイルが、与えられたディ -レクトリに存在するかもしれない。 -.PP -いくつかの返り値はとても大きくなることがある。これらを使って メモリーの割り当てを行うのは適当ではない。 -.SH 関連項目 -\fBgetconf\fP(1), \fBopen\fP(2), \fBstatfs\fP(2), \fBconfstr\fP(3), \fBsysconf\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fpclassify.3 b/manual/LDP_man-pages/draft/man3/fpclassify.3 deleted file mode 100644 index a8acdb08..00000000 --- a/manual/LDP_man-pages/draft/man3/fpclassify.3 +++ /dev/null @@ -1,121 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" This was done with the help of the glibc manual. -.\" -.\" 2004-10-31, aeb, corrected -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004-2005 Yuichi SATO -.\" all rights reserved. -.\" Translated 2004-07-27, Yuichi SATO -.\" Updated & Modified 2005-01-10, Yuichi SATO -.\" Updated & Modified 2005-09-04, Akihiro MOTOKI -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH FPCLASSIFY 3 2013\-08\-06 "" "Linux Programmer's Manual" -.SH 名前 -fpclassify, isfinite, isnormal, isnan, isinf \- 浮動小数点数の分類マクロ -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint fpclassify(\fP\fIx\fP\fB);\fP -.sp -\fBint isfinite(\fP\fIx\fP\fB);\fP -.sp -\fBint isnormal(\fP\fIx\fP\fB);\fP -.sp -\fBint isnan(\fP\fIx\fP\fB);\fP -.sp -\fBint isinf(\fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.\" I haven't fully grokked the source to determine the FTM requirements; -.\" in part, the following has been tested by experiment. -.ad l -\fBfpclassify\fP(), \fBisfinite\fP(), \fBisnormal\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -\fBisnan\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE || -_POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -\fBisinf\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -浮動小数点数は無限大や NaN のような特別な値を持つことができる。 マクロ \fBfpclassify(\fP\fIx\fP\fB)\fP で \fIx\fP -がどのような種別かを知ることができる。 マクロは任意の浮動小数点数表現を引き数としてとることができる。 結果は以下の値のいずれか一つである: -.TP 14 -\fBFP_NAN\fP -\fIx\fP が "Not a Number" である (数値ではない)。 -.TP -\fBFP_INFINITE\fP -\fIx\fP が正の無限大または負の無限大である。 -.TP -\fBFP_ZERO\fP -\fIx\fP が 0 である。 -.TP -\fBFP_SUBNORMAL\fP -\fIx\fP を正規化形式で表現するには小さすぎる。 -.TP -\fBFP_NORMAL\fP -上記のどれにも当てはまらない場合であり、 値は通常の浮動小数点数であるはずだ。 -.LP -他のマクロは、いくつかの標準的な問いに対して、簡単な答えを提供する。 -.TP 14 -\fBisfinite(\fP\fIx\fP\fB)\fP -以下の場合に 0 以外の値を返す。 -.br -(fpclassify(x) != FP_NAN && fpclassify(x) != FP_INFINITE) -.TP -\fBisnormal(\fP\fIx\fP\fB)\fP -(fpclassify(x) == FP_NORMAL) の場合に 0 以外の値を返す。 -.TP -\fBisnan(\fP\fIx\fP\fB)\fP -(fpclassify(x) == FP_NAN) の場合に 0 以外の値を返す。 -.TP -\fBisinf(\fP\fIx\fP\fB)\fP -\fIx\fP が正の無限大の場合は 1 を、 負の無限大の場合は \-1 を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -マクロ \fBfpclassify\fP(), \fBisfinite\fP(), \fBisnormal\fP(), \fBisnan\fP(), \fBisinf\fP() -はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1. - -\fBisinf\fP() に関して、標準規格で定められているのは、 返り値が 0 以外になるのは引き数が無限大の場合だけということだけである。 -.SH 注意 -glibc 2.01 以前では、 \fBisinf\fP() は \fIx\fP が正の無限大か負の無限大の場合、 0 以外の値 (実際には 1) を返す -(C99 の要求仕様で決まっているのは 0 以外の値を返すということだけである)。 -.SH 関連項目 -\fBfinite\fP(3), \fBINFINITY\fP(3), \fBisgreater\fP(3), \fBsignbit\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fpurge.3 b/manual/LDP_man-pages/draft/man3/fpurge.3 deleted file mode 100644 index ac3ddb04..00000000 --- a/manual/LDP_man-pages/draft/man3/fpurge.3 +++ /dev/null @@ -1,74 +0,0 @@ -.\" Copyright (C) 2001 Andries Brouwer . -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 NAKANO Takeo all rights reserved. -.\" Translated Sat 12 Jan 2002 by NAKANO Takeo -.\" -.TH FPURGE 3 2001\-12\-15 "" "Linux Programmer's Manual" -.SH 名前 -fpurge, __fpurge \- ストリームを一掃 (purge) する -.SH 書式 -.nf -/* unsupported */ -\fB#include \fP -.sp -\fBint fpurge(FILE *\fP\fIstream\fP\fB);\fP -.sp -/* supported */ -\fB#include \fP -.br -\fB#include \fP -.sp -\fBvoid __fpurge(FILE *\fP\fIstream\fP\fB);\fP -.fi -.SH 説明 -\fBfpurge\fP() 関数は、与えられたストリームのバッファーをクリアする。 出力ストリームでこれを行うと、書き出されていない出力は捨てられる。 -入力ストリームでこれを行うと、 下層にあるオブジェクトから読み込まれ \fBgetc\fP(3) による取得を待っている入力が、すべて捨てられる。 これには -\fBungetc\fP(3) によって戻されたテキストも含まれる。 \fBfflush\fP(3) も参照のこと。 -.LP -\fB__fpurge\fP() 関数も全く同じことを行うが、ただし返り値を返さない。 -.SH 返り値 -成功すると \fBfpurge\fP() は 0 を返す。 エラーが起こると \-1 を返し、 \fIerrno\fP を適切な値に設定する。 -.SH エラー -.TP -\fBEBADF\fP -\fIstream\fP がオープンされていない。 -.SH 準拠 -これらの関数は標準ではなく、よって移植性もない。 \fBfpurge\fP() 関数は 4.4BSD で導入されたが、Linux では利用できない。 -\fB__fpurge\fP() 関数は Solaris で導入され、glibc 2.1.95 以降には存在している。 -.SH 注意 -通常は入力バッファーを捨てようとするのは間違っている。 -.SH 関連項目 -.\" .BR fclean (3), -\fBfflush\fP(3), \fBsetbuf\fP(3), \fBstdio_ext\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fputwc.3 b/manual/LDP_man-pages/draft/man3/fputwc.3 deleted file mode 100644 index 7c96c79a..00000000 --- a/manual/LDP_man-pages/draft/man3/fputwc.3 +++ /dev/null @@ -1,69 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sun Aug 29 15:03:11 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" Updated Sat Jan 8 JST 2000 by Kentaro Shirakata -.\" Updated Fri Nov 2 JST 2001 by Kentaro Shirakata -.\" -.TH FPUTWC 3 2013\-04\-19 GNU "Linux Programmer's Manual" -.SH 名前 -fputwc, putwc \- ワイド文字を FILE ストリームに書き込む -.SH 書式 -.nf -\fB#include \fP -.br -\fB#include \fP -.sp -\fBwint_t fputwc(wchar_t \fP\fIwc\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -\fBwint_t putwc(wchar_t \fP\fIwc\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -.fi -.SH 説明 -\fBfputwc\fP() 関数は、 \fBfputc\fP(3) に対応するワイド文字関数である。この 関数は、ワイド文字 \fIwc\fP を -\fIstream\fP に書き込む。 \fIferror(stream)\fP が真になると、この関数は \fBWEOF\fP を返す。 -ワイド文字変換でエラーが発生した場合は、 \fIerrno\fP に \fBEILSEQ\fP をセットし、 \fBWEOF\fP を返す。 -それ以外の場合では、この関数は \fIwc\fP を返す。 -.PP -\fBputwc\fP() 関数あるいはマクロは、 \fBfputwc\fP() と全く同じ動作をする。 -この関数はマクロとして実装されるかもしれないので、引き数が複数回評価さ れるかもしれない。この関数を使う理由はもはや存在しない。 -.PP -これらの処理を停止せずに行いたいときは、 \fBunlocked_stdio\fP(3) を参照のこと。 -.SH 返り値 -\fBfputwc\fP() 関数は、エラーが起きなければ \fIwc\fP を返す。エラーの場合には \fBWEOF\fP が返り、 \fIerrno\fP -にエラーの原因を示す値が設定される。 -.SH エラー -通常のエラーに加えて、以下のエラーがある: -.TP -\fBEILSEQ\fP -\fIwc\fP からストリームの符号への変換に失敗した。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 注意 -\fBfputwc\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.PP -\fBfopen\fP(3) システムコールに渡す追加情報がない場合には、 \fBfputwc\fP() は 実際にはワイド文字 \fIwc\fP -に対応するマルチバイトシーケンスを書き込むと 期待してよい。 -.SH 関連項目 -\fBfgetwc\fP(3), \fBfputws\fP(3), \fBunlocked_stdio\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fputws.3 b/manual/LDP_man-pages/draft/man3/fputws.3 deleted file mode 100644 index 82e5f9fc..00000000 --- a/manual/LDP_man-pages/draft/man3/fputws.3 +++ /dev/null @@ -1,54 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sun Aug 29 15:09:40 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" Updated Fri Nov 2 JST 2001 by Kentaro Shirakata -.\" -.TH FPUTWS 3 2011\-09\-28 GNU "Linux Programmer's Manual" -.SH 名前 -fputws \- ワイド文字の文字列を FILE ストリームに書き込む -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint fputws(const wchar_t *\fP\fIws\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -.fi -.SH 説明 -\fBfputws\fP() 関数は、 \fBfputs\fP(3) に対応するワイド文字関数である。 この関数は、\fIws\fP から始まるワイド文字列を終端の -L'\e0' まで \fIstream\fP に書き出す。ただし終端のヌルワイド文字 (L\(aq\e0\(aq) は含まれない。 -.PP -これらの処理を停止せずに行いたいときは、 \fBunlocked_stdio\fP(3) を参照のこと。 -.SH 返り値 -\fBfputws\fP() は、操作が成功した時には負でない整数値を返す。エラーの時 には \-1 を返す。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 注意 -\fBfputws\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.PP -\fBfopen\fP(3) システムコールに渡す追加情報がない場合には、 \fBfputws\fP() が実際 にはワイド文字の文字列である \fIws\fP -に対応するマルチバイトシーケンス を書き込むと期待することは適切である。 -.SH 関連項目 -\fBfputwc\fP(3), \fBunlocked_stdio\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fread.3 b/manual/LDP_man-pages/draft/man3/fread.3 deleted file mode 100644 index f1977344..00000000 --- a/manual/LDP_man-pages/draft/man3/fread.3 +++ /dev/null @@ -1,95 +0,0 @@ -.\" 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 -.\" -.\" @(#)fread.3 6.6 (Berkeley) 6/29/91 -.\" -.\" Converted for Linux, Mon Nov 29 15:37:33 1993, faith@cs.unc.edu -.\" Sun Feb 19 21:26:54 1995 by faith, return values -.\" Modified Thu Apr 20 20:43:53 1995 by Jim Van Zandt -.\" Modified Fri May 17 10:21:51 1996 by Martin Schulze -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Tue Jan 21 21:57:33 JST 1997 -.\" by YOSHINO Takashi -.\" Updated & Modified Mon Mar 1 1999 -.\" by NAKANO Takeo -.\" Updated Sat Nov 3 JST 2001 by Kentaro Shirakata -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH FREAD 3 2012\-03\-30 GNU "Linux Programmer's Manual" -.SH 名前 -fread, fwrite \- バイナリストリームの入出力 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t fread(void *\fP\fIptr\fP\fB, size_t \fP\fIsize\fP\fB, size_t \fP\fInmemb\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -.sp -\fBsize_t fwrite(const void *\fP\fIptr\fP\fB, size_t \fP\fIsize\fP\fB, size_t \fP\fInmemb\fP\fB,\fP -\fB FILE *\fP\fIstream\fP\fB);\fP -.fi -.SH 説明 -\fBfread\fP() 関数は \fIstream\fP ポインターで指定されたストリームから \fInmemb\fP 個のデータを読み込み、 \fIptr\fP -で与えられた場所に格納する。 個々のデータは \fIsize\fP バイトの長さを持つ。 -.PP -\fBfwrite\fP() 関数は \fIptr\fP で指定された場所から得た \fInmemb\fP 個のデータを、 \fIstream\fP -ポインターで指定されたストリームに書き込む。 個々のデータは \fIsize\fP バイトの長さを持つ。 -.PP -これらの処理を停止せずに行いたいときは、 \fBunlocked_stdio\fP(3) を参照のこと。 -.SH 返り値 -成功すると、 \fBfread\fP() と \fBfwrite\fP() は読み書きを行った要素の個数を返す。 -\fIsize\fP が 1 の場合は、この数字は転送されたバイト数と等しい。 -エラーが生じた場合や、ファイルの末尾 (end\-of\-file) に達した場合、 -返り値は指定した個数よりも小さい値 (または 0) となる。 -.PP -\fBfread\fP() は end\-of\-file とエラーを区別しないので、 どちらが生じたかを判断するためには、 呼び出し側で \fBfeof\fP(3) -と \fBferror\fP(3) とを使用しなければならない。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/frexp.3 b/manual/LDP_man-pages/draft/man3/frexp.3 deleted file mode 100644 index 49fc4e01..00000000 --- a/manual/LDP_man-pages/draft/man3/frexp.3 +++ /dev/null @@ -1,130 +0,0 @@ -.\" 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-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated 1997-01-21, YOSHINO Takashi -.\" Updated 2003-10-15, Kentaro Shirakata -.\" Updated 2005-11-19, Akihiro MOTOKI -.\" -.TH FREXP 3 2013\-08\-06 "" "Linux Programmer's Manual" -.SH 名前 -frexp, frexpf, frexpl \- 浮動小数点実数を小数成分と整数成分に変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble frexp(double \fP\fIx\fP\fB, int *\fP\fIexp\fP\fB);\fP -.br -\fBfloat frexpf(float \fP\fIx\fP\fB, int *\fP\fIexp\fP\fB);\fP -.br -\fBlong double frexpl(long double \fP\fIx\fP\fB, int *\fP\fIexp\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBfrexpf\fP(), \fBfrexpl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBfrexp\fP() 関数は浮動小数点実数 \fIx\fP を正規化小数と指数に分解し、 指数を *\fIexp\fP に格納する。 -.SH 返り値 -\fBfrexp\fP() 関数は正規化小数を返す。 引数 \fIx\fP がゼロでない場合、この正規化小数は \fIx\fP に 2 -の累乗を乗じたものであり、その絶対値は 常に 1/2 以上 1 未満、つまり [0.5,1) となる。 - -\fIx\fP がゼロの場合、正規化小数はゼロになり *\fIexp\fP にはゼロが格納される。 - -\fIx\fP が NaN の場合、NaN が返される。 \fI*exp\fP の値は不定である。 - -\fIx\fP が正の無限大 (負の無限大) の場合、 正の無限大 (負の無限大) が返される。 \fI*exp\fP の値は不定である。 -.SH エラー -エラーは発生しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBfrexp\fP(), \fBfrexpf\fP(), \fBfrexpl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠している。 -.SH 例 -このプログラムを実行すると以下のような結果となる: -.sp -.nf -.in +4n -$\fB ./a.out 2560\fP -frexp(2560, &e) = 0.625: 0.625 * 2^12 = 2560 -$\fB ./a.out \-4\fP -frexp(\-4, &e) = \-0.5: \-0.5 * 2^3 = \-4 -.in -.fi -.SS プログラムのソース -\& -.nf -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - double x, r; - int exp; - - x = strtod(argv[1], NULL); - r = frexp(x, &exp); - - printf("frexp(%g, &e) = %g: %g * %d^%d = %g\en", - x, r, r, FLT_RADIX, exp, x); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBldexp\fP(3), \fBmodf\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fseek.3 b/manual/LDP_man-pages/draft/man3/fseek.3 deleted file mode 100644 index 5514b840..00000000 --- a/manual/LDP_man-pages/draft/man3/fseek.3 +++ /dev/null @@ -1,113 +0,0 @@ -.\" 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 -.\" -.\" @(#)fseek.3 6.11 (Berkeley) 6/29/91 -.\" -.\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith@cs.unc.edu -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated Mon Apr 27 1998 by NAKANO Takeo -.\" -.TH FSEEK 3 2014\-05\-28 GNU "Linux Programmer's Manual" -.SH 名前 -fgetpos, fseek, fsetpos, ftell, rewind \- ストリームの位置を変更する -.SH 書式 -\fB#include \fP -.sp -\fBint fseek(FILE *\fP\fIstream\fP\fB, long \fP\fIoffset\fP\fB, int \fP\fIwhence\fP\fB);\fP - -\fBlong ftell(FILE *\fP\fIstream\fP\fB);\fP - -\fBvoid rewind(FILE *\fP\fIstream\fP\fB);\fP - -\fBint fgetpos(FILE *\fP\fIstream\fP\fB, fpos_t *\fP\fIpos\fP\fB);\fP -.br -\fBint fsetpos(FILE *\fP\fIstream\fP\fB, const fpos_t *\fP\fIpos\fP\fB);\fP -.SH 説明 -\fBfseek\fP() 関数は \fIstream\fP によって指定されたストリームにおいて、ファイル位置表示子 (file position -indicator) をセットする。新たな位置 (バイト単位) は \fIwhence\fP で指定された位置に \fIoffset\fP -バイトを加えることによって与えられる。 \fIwhence\fP が \fBSEEK_SET\fP, \fBSEEK_CUR\fP, \fBSEEK_END\fP -のどれかになっている場合は、それぞれファイルの先頭、現在の位置表示子、 ファイルの末尾からのオフセットが取られる。 \fBfseek\fP() -関数の呼び出しが成功すると、ストリームの end\-of\-file 表示子は クリアされ、それまでに \fBungetc\fP(3) -関数で戻したデータはなかったことになる。 -.PP -\fBftell\fP() 関数は \fIstream\fP によって指定されたストリームにおける、ファイル位置表示子 の現時点での値を与える。 -.PP -\fBrewind\fP() 関数は \fIstream\fP によって指定されたストリームにおいて、ファイル位置表示子 -をファイルの先頭にセットする。この関数は以下と等価である。 -.PP -.RS -(void) fseek(stream, 0L, SEEK_SET) -.RE -.PP -ただし \fBrewind\fP() ではストリームに対するエラー表示子 (error indicator) も同時に クリアされる ( -\fBclearerr\fP(3) を見よ)。 -.PP -\fBfgetpos\fP() 関数と \fBfsetpos\fP() 関数は、それぞれ \fBftell\fP() と \fBfseek\fP() で -\fIwhence\fP に \fBSEEK_SET\fP を指定した場合と同様の機能を、異なるインターフェースで提供する。 \fBfgetpos\fP() -はファイルオフセットの現在の値を \fIpos\fP が参照するオブジェクトに保存し、 \fBfsetpos\fP() はファイルオフセットを \fIpos\fP -に設定する。 UNIX 以外のシステムにおいては、 \fIfpos_t\fP が構造体などの複雑なオブジェクトになっていて、これらのルーチンがテキス -トストリームでファイル位置を変更する方法のうち、移植性のある唯一のもの になっている場合もある。 -.SH 返り値 -\fBrewind\fP() は返り値を持たない。 \fBfgetpos\fP(), \fBfseek\fP(), \fBfsetpos\fP() は成功すると 0 -を返す。 \fBftell\fP() は現在のオフセットを返す。失敗した場合は返り値は \-1 となり、 \fIerrno\fP にエラーを示す値がセットされる。 -.SH エラー -.TP -\fBEBADF\fP -指定した \fIstream\fP がシークできない。 -.TP -\fBEINVAL\fP -\fBfseek\fP() 関数に対して与えた \fIwhence\fP 引数が \fBSEEK_SET\fP, \fBSEEK_END\fP, \fBSEEK_CUR\fP -以外の値であった。 または、更新後のファイルオフセットが負になってしまう。 -.PP -\fBfgetpos\fP(), \fBfseek\fP(), \fBfsetpos\fP(), \fBftell\fP() は、それぞれ \fBfflush\fP(3), -\fBfstat\fP(2), \fBlseek\fP(2), \fBmalloc\fP(3) などのルーチンを呼び出す際に失敗する可能性がある。この場合は -それぞれ対応した \fIerrno\fP が設定される。 -.SH 準拠 -C89, C99. -.SH 関連項目 -\fBlseek\fP(2), \fBfseeko\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fseeko.3 b/manual/LDP_man-pages/draft/man3/fseeko.3 deleted file mode 100644 index bfbaf7b0..00000000 --- a/manual/LDP_man-pages/draft/man3/fseeko.3 +++ /dev/null @@ -1,86 +0,0 @@ -.\" Copyright 2001 Andries Brouwer . -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 NAKANO Takeo all rights reserved. -.\" Translated 2002-01-06, NAKANO Takeo -.\" Updated 2006-01-18, Akihiro MOTOKI -.\" -.TH FSEEKO 3 2014\-10\-02 "" "Linux Programmer's Manual" -.SH 名前 -fseeko, ftello \- ファイル位置を探す/報告する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint fseeko(FILE *\fP\fIstream\fP\fB, off_t \fP\fIoffset\fP\fB, int \fP\fIwhence\fP\fB);\fP -.sp -\fBoff_t ftello(FILE *\fP\fIstream\fP\fB);\fP - -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBfseeko\fP(), \fBftello\fP(): -.br -.RS 4 -.ad l -_FILE_OFFSET_BITS\ ==\ 64 || _POSIX_C_SOURCE\ >=\ 200112L || -_XOPEN_SOURCE\ >=\ 600 -.br -(廃止予定のマクロ _LARGEFILE_SOURCE を指定しても動作する) -.RE -.ad -.SH 説明 -\fBfseeko\fP() 関数および \fBftello\fP() 関数は、 それぞれ \fBfseek\fP(3) および \fBftell\fP(3) -と同一の機能を持つ (\fBfseek\fP(3) を見よ) が、ただし \fBfseeko\fP() 関数の \fIoffset\fP 引数と -\fBftello\fP() の返り値が、 \fIlong\fP ではなく \fIoff_t\fP になっている。 -.LP -いくつかのアーキテクチャーでは、 \fIoff_t\fP と \fIlong\fP の両方が 32 ビット型だが、 -(「どの」ヘッダーファイルをインクルードするよりも前に) \fB_FILE_OFFSET_BITS\fP を値 64 で定義すると、 \fIoff_t\fP が -64 ビット型になる。 -.SH 返り値 -成功した場合、 \fBfseeko\fP() は 0 を、 \fBftello\fP() は現在のオフセットを返す。 失敗した場合、\-1 を返し、 -\fIerrno\fP にエラーを示す値をセットする。 -.SH エラー -\fBfseek\fP(3) の「エラー」の節を参照。 -.SH バージョン -これらの関数はバージョン 2.1 以降の glibc で利用可能である。 -.SH 準拠 -SUSv2, POSIX.1\-2001. -.SH 注意 -これらの関数は System\-V 風のシステムに存在する。 -.SH 関連項目 -\fBfseek\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ftime.3 b/manual/LDP_man-pages/draft/man3/ftime.3 deleted file mode 100644 index 983f8657..00000000 --- a/manual/LDP_man-pages/draft/man3/ftime.3 +++ /dev/null @@ -1,90 +0,0 @@ -.\" 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified Sat Jul 24 14:23:14 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Sun Oct 18 17:31:43 1998 by Andries Brouwer (aeb@cwi.nl) -.\" 2008-06-23, mtk, minor rewrites, added some details -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Thu Dec 25 10:53:32 JST 1997 -.\" by HIROFUMI Nishizuka -.\" -.TH FTIME 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -ftime \- 日付と時間を返す -.SH 書式 -\fB#include \fP -.sp -\fBint ftime(struct timeb *\fP\fItp\fP\fB);\fP -.SH 説明 -この関数は現在の時刻を、紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC)) からの秒数とミリ秒数で返す。 時刻は -\fItp\fP で返され、これは以下のように定義されている: -.sp -.in +4n -.nf -struct timeb { - time_t time; - unsigned short millitm; - short timezone; - short dstflag; -}; -.fi -.in -.LP -ここで、\fItime\fP は紀元 (the Epoch) からの秒数、 \fImillitm\fP は 紀元から \fItime\fP 秒後からのミリ秒数である。 -\fItimezone\fP フィールドはグリニッジから西周りの分で計測される ローカルタイムゾーンである(負数の場合はグリニッジからの東回りの分を 示す)。 -\fIdstflag\fP フィールドは、もし 0 でなければ一年の一部で夏時間が 存在することを示すフラグである。 -.LP -POSIX.1\-2001 では、\fItimezone\fP と \fIdstflag\fP の内容は未定義である; これに頼るのは避けること。 -.SH 返り値 -この関数は常に 0 を返す。 (POSIX.1\-2001 仕様及びいくつかのシステムのドキュメントでは、 エラー時に \-1 を返す。) -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBftime\fP() 関数はスレッドセーフである。 -.SH 準拠 -4.2BSD, POSIX.1\-2001. POSIX.1\-2008 では \fBftime\fP() の仕様が削除されている。 - -この関数は古いものである。使ってはならない。 秒単位の時間で十分なら、 \fBtime\fP(2) が利用できる。 \fBgettimeofday\fP(2) -でマイクロ秒が得られる。 \fBclock_gettime\fP(2) でナノ秒が得られるが、広く利用可能な訳ではない。 -.SH バグ -.LP -.\" .SH HISTORY -.\" The -.\" .BR ftime () -.\" function appeared in 4.2BSD. -初期の glibc2 ではバグがあり、常に \fImillitm\fP フィールドに 0 を返す。 glibc 2.1.1 から再び正常になった。 -.SH 関連項目 -\fBgettimeofday\fP(2), \fBtime\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ftok.3 b/manual/LDP_man-pages/draft/man3/ftok.3 deleted file mode 100644 index ddaf435d..00000000 --- a/manual/LDP_man-pages/draft/man3/ftok.3 +++ /dev/null @@ -1,82 +0,0 @@ -.\" 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 2001-11-28, by Michael Kerrisk, -.\" Changed data type of proj_id; minor fixes -.\" aeb: further fixes; added notes. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated Tue Apr 28 1998 by NAKANO Takeo -.\" Updated Sun 6 Jan 2002 by NAKANO Takeo -.\" -.TH FTOK 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -ftok \- パス名とプロジェクト識別子を System V IPC キーに変換する -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -.fi -.sp -\fBkey_t ftok(const char *\fP\fIpathname\fP\fB, int \fP\fIproj_id\fP\fB);\fP -.SH 説明 -\fBftok\fP() 関数は \fIpathname\fP で与えられたファイル (存在し、アクセス可能でなければならない) のファイル名の識別情報 -(identity) と、 \fIproj_id\fP (0 であってはならない) の低位 8 ビットとを用いて、 \fIkey_t\fP 型の System V -IPC キーを生成する。 このキーは \fBmsgget\fP(2), \fBsemget\fP(2), \fBshmget\fP(2) などでの利用に適している。 -.LP -同じファイルを示すあらゆるパス名と、同じ \fIproj_id\fP に対しては、結果の値は等しくなる。 ファイルが違ったり -(この場合両者は同時に存在しているはず)、 \fIproj_id\fP が異なると、返り値も異なる。 -.SH 返り値 -成功した場合は生成された \fIkey_t\fP の値が返される。 失敗すると \-1 が返され、エラーの内容が \fBerrno\fP -に書き込まれる。この内容はシステムコール \fBstat\fP(2) のものと同じである。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBftok\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -いくつかの古いシステムでは、プロトタイプは以下のようになっていた。 -.sp -.RS -\fBkey_t ftok(char *\fP\fIpathname\fP\fB, char \fP\fIproj_id\fP\fB);\fP -.RE -.PP -現在では \fIproj_id\fP は \fIint\fP だが、依然として 8 ビットしか用いられない。 通常は ASCII キャラクターが -\fIproj_id\fP に用いられる。 \fIproj_id\fP が 0 のときの振る舞いが未定義になっているのは、これが理由である。 -.LP -もちろん \fIkey_t\fP が他と重ならないものであるかどうかは保証されない。 最善の場合の組み合わせを考えても、 \fIproj_id\fP の 1 -バイト、i ノード番号の低位 16 ビット、および デバイス番号の低位 8 ビットなので、結果は 32 ビットに過ぎない。 例えば -\fI/dev/hda1\fP と \fI/dev/sda1\fP それぞれにあるファイルに対して、衝突は容易に起こりうる。 -.SH 関連項目 -\fBmsgget\fP(2), \fBsemget\fP(2), \fBshmget\fP(2), \fBstat\fP(2), \fBsvipc\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fts.3 b/manual/LDP_man-pages/draft/man3/fts.3 deleted file mode 100644 index 8e5be0e5..00000000 --- a/manual/LDP_man-pages/draft/man3/fts.3 +++ /dev/null @@ -1,371 +0,0 @@ -.\" $NetBSD: fts.3,v 1.13.2.1 1997/11/14 02:09:32 mrg Exp $ -.\" -.\" Copyright (c) 1989, 1991, 1993, 1994 -.\" 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 -.\" -.\" @(#)fts.3 8.5 (Berkeley) 4/16/94 -.\" -.\" 2007-12-08, mtk, Converted from mdoc to man macros -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2000 Yuichi SATO -.\" all rights reserved. -.\" Translated Tue Jul 11 19:02:58 JST 2000 -.\" by Yuichi SATO -.\" -.TH FTS 3 2014\-03\-18 Linux "Linux Programmer's Manual" -.SH 名前 -fts, fts_open, fts_read, fts_children, fts_set, fts_close \- ファイル階層をたどる -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -\fB#include \fP -.sp -\fBFTS *fts_open(char * const *\fP\fIpath_argv\fP\fB, int \fP\fIoptions\fP\fB, \fP -\fB int (*\fP\fIcompar\fP\fB)(const FTSENT **, const FTSENT **));\fP -.sp -\fBFTSENT *fts_read(FTS *\fP\fIftsp\fP\fB);\fP -.sp -\fBFTSENT *fts_children(FTS *\fP\fIftsp\fP\fB, int \fP\fIoptions\fP\fB);\fP -.sp -\fBint fts_set(FTS *\fP\fIftsp\fP\fB, FTSENT *\fP\fIf\fP\fB, int \fP\fIoptions\fP\fB);\fP -.sp -\fBint fts_close(FTS *\fP\fIftsp\fP\fB);\fP -.fi -.SH 説明 -fts 関数群は、ファイル階層をたどるために提供されている。 簡単に概略すると次のようになる。 \fBfts_open\fP() 関数は、他の fts -関数群に渡すための、ファイル階層の「ハンドル」を返す。 \fBfts_read\fP() 関数は、ファイル階層中にある 1 -つのファイルを記述する構造体へのポインターを返す。 \fBfts_children\fP() 関数は、階層中のディレクトリにあるファイルを記述する構造体の -リンクリストへのポインターを返す。 一般にディレクトリは、 preorder (正方向:下の階層のディレクトリをたどる前) と postorder -(逆方向:下の階層のディレクトリをすべてたどった後) という、 異なる方向で 2 回たどられる。ファイルは 1 回たどられる。 -ディレクトリ階層を「論理的に」(シンボリックリングが指すファイルを見て) 辿ることも、 物理的に (シンボリックリンク自身を見て) -辿ることも可能である。 また、階層中の移動の道筋を指示すること・ 余分なものを取り除くこと・階層の一部を再びたどることが可能である。 -.PP -2 つの構造体がインクルードファイル \fI\fP で定義されている (さらに typedef されている)。 1 -つ目は、ファイル階層そのものを表現する \fIFTS\fP 構造体である。 2 つ目は、ファイル階層中のファイルを表現する \fIFTSENT\fP 構造体である。 -\fIFTSENT\fP 構造体は通常、ファイル階層中のすべてのファイルに対して返される。 この man ページでは、「ファイル」と 「\fIFTSENT\fP -構造体」を一般に読み変えることができる。 \fIFTSENT\fP 構造体は、少なくとも次のようなフィールドを持っており、 以下でより詳しく説明されている。 -.in +4n -.nf - -typedef struct _ftsent { - unsigned short fts_info; /* FTSENT 構造体のためのフラグ */ - char *fts_accpath; /* アクセスパス */ - char *fts_path; /* ルートパス */ - short fts_pathlen; /* fts_path の長さ */ - char *fts_name; /* ファイル名 */ - short fts_namelen; /* fts_name の長さ */ - short fts_level; /* 深さ (\-1 〜 N) */ - int fts_errno; /* ファイルのエラー番号 */ - long fts_number; /* ローカルな番号 */ - void *fts_pointer; /* ローカルなアドレス番号 */ - struct ftsent *fts_parent; /* 親ディレクトリ */ - struct ftsent *fts_link; /* 次のファイル構造体 */ - struct ftsent *fts_cycle; /* 循環している構造体 */ - struct stat *fts_statp; /* stat(2) の情報 */ -} FTSENT; -.fi -.in -.PP -.\" .Bl -tag -width "fts_namelen" -これらのフィールドは、次のように定義されている。 -.TP 12 -\fIfts_info\fP -.\" .Bl -tag -width FTS_DEFAULT -このフィールドは、返された \fIFTSENT\fP 構造体とファイルを説明する以下のフラグのいずれかを表している。 エラーのないディレクトリ -(\fBFTS_D\fP), の場合は例外として、それ以外のすべてのエントリーは終端である。 つまり、エントリーは再びたどられることもなく、 -それより下の階層がたどられることもない。 -.RS 12 -.TP 12 -\fBFTS_D\fP -preorder でたどられるディレクトリ。 -.TP -\fBFTS_DC\fP -ツリーの中で循環しているディレクトリ。 (\fIFTSENT\fP 構造体の \fIfts_cycle\fP フィールドも同様に埋められる。) -.TP -\fBFTS_DEFAULT\fP -ファイルタイプを表現する \fIFTSENT\fP 構造体が、 \fIfts_info\fP の他のいずれかの値で明示的に説明されていない。 -.TP -\fBFTS_DNR\fP -読み込みができないディレクトリ。 これはエラーの場合の返り値であり、 何がエラーを起こしたかを示すために \fIfts_errno\fP -フィールドが設定される。 -.TP -\fBFTS_DOT\fP -\fBfts_open\fP() へのファイル名として指定されなかった "." または ".." という名前のファイル (\fBFTS_SEEDOT\fP -を参照すること)。 -.TP -\fBFTS_DP\fP -postorder でたどられるディレクトリ。 \fIFTSENT\fP 構造体の内容は、preorder のときに返された状態 (つまり、 -\fIfts_info\fP フィールドが \fBFTS_D\fP に設定されている状態) から変更されない。 -.TP -\fBFTS_ERR\fP -これはエラーの場合の返り値であり、 \fIfts_errno\fP フィールドは、何がエラーを起こしたかを示す値に設定される。 -.TP -\fBFTS_F\fP -通常のファイル。 -.TP -\fBFTS_NS\fP -\fBstat\fP(2) 情報が得られなかったファイル。 \fIfts_statp\fP フィールドの内容は定義されない。 これはエラーの場合の返り値であり、 -\fIfts_errno\fP フィールドは、何がエラーを起こしたかを示す値に設定される。 -.TP -\fBFTS_NSOK\fP -\fBstat\fP(2) 情報が要求されなかったファイル。 \fIfts_statp\fP フィールドの内容は定義されない。 -.TP -\fBFTS_SL\fP -シンボリックリンク。 -.TP -\fBFTS_SLNONE\fP -.\" .El -リンク先の存在しないシンボリックリンク。 \fIfts_statp\fP フィールドの内容は、シンボリックリンクそのもののファイル特性情報を参照する。 -.RE -.TP -\fIfts_accpath\fP -現在のディレクトリからファイルにアクセスするためのパス。 -.TP -\fIfts_path\fP -階層をたどるときのルートからみたファイルの相対的なパス。 このパスには、 \fBfts_open\fP() に指定したパスがプレフィックスとして含まれる。 -.TP -\fIfts_pathlen\fP -\fIfts_path\fP で参照される文字列の長さ。 -.TP -\fIfts_name\fP -ファイルの名前。 -.TP -\fIfts_namelen\fP -\fIfts_name\fP で参照される文字列の長さ。 -.TP -\fIfts_level\fP -階層をたどって、このファイルがみつかった深さ。 \-1 〜 N の数値で表される。 階層をたどるときの出発点 (ルート) の親ディレクトリを表す -\fIFTSENT\fP 構造体では \-1 となる。 また、ルート自身の \fIFTSENT\fP 構造体では 0 になる。 -.TP -\fIfts_errno\fP -関数 \fBfts_children\fP() と \fBfts_read\fP() から返される \fIFTSENT\fP 構造体の \fIfts_info\fP -フィールドが \fBFTS_DNR\fP, \fBFTS_ERR\fP, \fBFTS_NS\fP に設定されている場合、 \fIfts_errno\fP -フィールドにはエラーの原因を示す外部変数 \fIerrno\fP の値が入る。 それ以外の場合、 \fIfts_errno\fP フィールドの内容は定義されない。 -.TP -\fIfts_number\fP -このフィールドは、アプリケーションプログラムから使用するために提供され、 fts 関数群では変更されない。 このフィールドは 0 で初期化される。 -.TP -\fIfts_pointer\fP -このフィールドは、アプリケーションプログラムから使用するために提供され、 fts 関数群では変更されない。 このフィールドは \fBNULL\fP -で初期化される。 -.TP -\fIfts_parent\fP -現在のファイルのすぐ上の階層にあるファイル (つまり、現在のファイルがメンバーになっているディレクトリ) を参照する \fIFTSENT\fP -構造体へのポインター。 最初の出発点に対しても、親となる構造体は与えられる。 しかし、 \fIfts_level\fP, \fIfts_number\fP, -\fIfts_pointer\fP フィールドのみの初期化しか保証されない。 -.TP -\fIfts_link\fP -\fBfts_children\fP() から返される場合、 \fIfts_link\fP フィールドはディレクトリメンバーのヌル終端されたリンクリストの形式で、 -次の構造体を指し示す。 それ以外の場合、 \fIfts_link\fP フィールドは定義されない。 -.TP -\fIfts_cycle\fP -2 つのディレクトリにハードリンクが張られているため、 または、シンボリックリンクがあるディレクトリを指しているために、 -ディレクトリが循環する階層構造を作っている場合 (\fBFTS_DC\fP を参照)、 構造体の \fIfts_cycle\fP フィールドは、階層中で現在の -\fIFTSENT\fP 構造体と同じファイルを参照している \fIFTSENT\fP 構造体を指し示す。 それ以外の場合、 \fIfts_cycle\fP -フィールドは定義されない。 -.TP -\fIfts_statp\fP -.\" .El -このファイルの \fBstat\fP(2) 情報へのポインター。 -.PP -ファイル階層中のすべてのファイルのパスに対して、 ただ 1 つのバッファーが使われる。 したがって、 \fIfts_path\fP と -\fIfts_accpath\fP フィールドは、 \fBfts_read\fP() -によって返された最も新しいファイルに対して「のみ」ヌル終端されることが保証される。 これらのフィールドを、他の \fIFTSENT\fP -構造体で表現されるファイルを参照するために使うには、 \fIFTSENT\fP 構造体の \fIfts_pathlen\fP -フィールドにある情報を使ってパスのバッファーを修正する必要がある。 これらの修正は、さらに \fBfts_read\fP() -を呼び出そうとする場合には、元に戻しておかなければならない。 \fIfts_name\fP フィールドは、常に \fBNUL\fP 終端される。 -.SS fts_open() -\fBfts_open\fP() 関数は、文字列ポインターの配列へのポインターを引き数に取る。 この文字列ポインターは、論理ファイル階層をつくる 1 -つ以上のパスの名前になる。 配列は、 null ポインターで終端されなければならない。 -.PP -.\" .Bl -tag -width "FTS_PHYSICAL" -多くのオプションがあり、少なくとも 1 つ (\fBFTS_LOGICAL\fP または \fBFTS_PHYSICAL\fP) が指定されなければならない。 -オプションは以下の値の論理和をとって選択する。 -.TP 13 -\fBFTS_COMFOLLOW\fP -このオプションは、 \fBFTS_LOGICAL\fP の指定にかかわらず、 ルートパスに指定されたシンボリックリンクをすぐにたどらせる。 -.TP -\fBFTS_LOGICAL\fP -このオプションは、 fts ルーチンにシンボリックリンクそのものではなく、 シンボリックリンクが指しているファイルの \fIFTSENT\fP -構造体を返させる。 このオプションが設定された場合、 \fIFTSENT\fP 構造体がアプリケーションに返されるような -シンボリックリンクのみが、存在しないファイルを参照している。 \fBFTS_LOGICAL\fP または \fBFTS_PHYSICAL\fP のどちらかを、 -\fBfts_open\fP() 関数に与えなければ「ならない」。 -.TP -\fBFTS_NOCHDIR\fP -パフォーマンスの最適化のため、 fts 関数群はファイル階層をたどるときディレクトリを変える。 これには、階層をたどっている間は -アプリケーションがある特定のディレクトリにいるということに 依存できない、という副作用がある。 \fBFTS_NOCHDIR\fP -オプションで最適化を無効にすると、 fts 関数群は現在のディレクトリを変更しない。 \fBFTS_NOCHDIR\fP が指定され、かつ -\fBfts_open\fP() の引き数として絶対パス名が与えられたとき以外、アプリケーションは、 自らカレントディレクトリを変更したり、 -ファイルにアクセスしたりすべきではない、という点に注意すること。 -.TP -\fBFTS_NOSTAT\fP -デフォルトでは、返された \fIFTSENT\fP 構造体は、たどられた各ファイルについてのファイル特徴情報 \fI( statp\fP フィールド) を参照する。 -このオプションは、 fts 関数群が \fIfts_info\fP フィールドを \fBFTS_NSOK\fP に設定し \fIstatp\fP -の内容を定義されないままにすることを許すことにより、 パフォーマンスの最適化に必要なものを緩和する。 -.TP -\fBFTS_PHYSICAL\fP -このオプションは、 fts ルーチンにシンボリックリンクが指しているファイルではなく、 シンボリックリンク自身の \fIFTSENT\fP 構造体を返させる。 -このオプションが設定されると、階層中のすべてのシンボリックリンクの \fIFTSENT\fP 構造体がアプリケーションに返される。 -\fBFTS_LOGICAL\fP または \fBFTS_PHYSICAL\fP のどちらかを \fBfts_open\fP() 関数に与えなければ「ならない」。 -.TP -\fBFTS_SEEDOT\fP -デフォルトでは、 \fBfts_open\fP() のパス引き数として指定されない限り、ファイル階層中にある "." または ".." -という名前のファイルは無視される。 このオプションは、 fts ルーチンにこれらのファイルの \fIFTSENT\fP 構造体を返させる。 -.TP -\fBFTS_XDEV\fP -.\" .El -このオプションは、 fts が下り始めのファイルとは異なるデバイス番号を持っている ディレクトリに下りるのを阻止する。 -.PP -引き数 \fBcompar\fP() は、階層をたどる順番を決めるのに使われるユーザー定義関数を指定する。 この関数は、引き数として \fIFTSENT\fP -構造体のポインターのポインターを 2 つとり、 1 番目の引き数で参照されているファイルが 2 番目の引き数で参照されているファイルより -前にある場合は負の値・同じ場合はゼロ・後にある場合は正の値を 返さなければならない。 \fIFTSENT\fP 構造体の \fIfts_accpath\fP, -\fIfts_path\fP, \fIfts_pathlen\fP フィールドは、この比較に「絶対」使ってはいけない。 \fIfts_info\fP フィールドが -\fBFTS_NS\fP または \fBFTS_NSOK\fP に設定される場合、 \fIfts_statp\fP フィールドはこれらのどちらでもない。 -\fBcompar\fP() 引き数が \fBNULL\fP の場合、ディレクトリをたどる順番は、ルートパスについては \fIpath_argv\fP -のなかでリストされた順番で、 その他のファイルについてはディレクトリ内でリストされた順番となる。 -.SS fts_read() -\fBfts_read\fP() 関数は、階層中のファイルを記述する \fIFTSENT\fP 構造体へのポインターを返す。 (読み込み可能で、循環していない) -ディレクトリは、 1 回は preorder で、もう 1 回は postorder で、少なくとも 2 回たどられる。 他のファイルは、少なくとも 1 -回たどられる。 (ディレクトリ間のハードリンクによって 循環やシンボリックリンクへのシンボリックリンクが起こらない場合、 ファイルは 2 -回以上、ディレクトリは 3 回以上たどられる。) -.PP -階層中のすべてのメンバーが返された場合、 \fBfts_read\fP() は \fBNULL\fP を返し、外部変数 \fIerrno\fP を 0 にする。 -階層中のファイルに関係しないエラーが起こった場合、 \fBfts_read\fP() は \fBNULL\fP を返し、 \fIerrno\fP -をエラーに対応した値にする。 階層中のファイルに関係したエラーが起こった場合、 \fIFTSENT\fP 構造体へのポインターが返され、 \fIerrno\fP -は設定される場合と設定されない場合がある (\fIfts_info\fP を参照すること)。 -.PP -\fBfts_read\fP() によって返される \fIFTSENT\fP 構造体は、同じファイル階層ストリームへの \fBfts_close\fP() -の呼出しの後に上書きされる。 また、同じファイル階層ストリームへの \fBfts_read\fP() -の呼出しの後でも、構造体がディレクトリを表現していない限り上書きされる。 この場合、 \fBfts_read\fP() 関数によって postorder で -\fIFTSENT\fP 構造体が返された後、 \fBfts_read\fP() の呼出しがあるまで、 これらの構造体は上書きされない。 -.SS fts_children() -\fBfts_children\fP() 関数は、 \fIFTSENT\fP 構造体へのポインターを返す。 この構造体は、( \fBfts_read\fP() -で最も新しく返された \fIFTSENT\fP 構造体で表現されるディレクトリにあるファイルの) ヌル終端されたリンクリストの最初のエントリーを記述する。 -このリストは、 \fIFTSENT\fP 構造体の \fIfts_link\fP フィールドを使ってリンクされ、 -ユーザー指定の比較関数がある場合は、それで順序づけられる。 \fBfts_children\fP() の呼出しを繰り返すことで、 -このリンクリストは再生成される。 -.PP -特別な場合として、 \fBfts_read\fP() がファイル階層について呼ばれていない場合、 \fBfts_children\fP() は -\fBfts_open\fP() に指定された論理ディレクトリ (つまり、 \fBfts_open\fP() に指定された引き数) -の中にあるファイルへのポインターを返す。 それ以外の場合で、 \fBfts_read\fP() によって最も新しく返された \fIFTSENT\fP 構造体が -preorder でたどられたディレクトリでない場合や 何も含んでいないディレクトリの場合は、 \fBfts_children\fP() は \fBNULL\fP -を返し、 \fIerrno\fP を 0 にする。 エラーが起こった場合、 \fBfts_children\fP() は \fBNULL\fP を返し、 -\fIerrno\fP をエラーに対応した値にする。 -.PP -\fBfts_children\fP() によって返される \fIFTSENT\fP 構造体は、同じファイル階層ストリームへの -\fBfts_children\fP(), \fBfts_close\fP(), \fBfts_read\fP() の呼出しの後に上書きされる場合がある。 -.PP -.\" .Bl -tag -width FTS_NAMEONLY -\fIoption\fP は、次の値に設定できる。 -.TP 13 -\fBFTS_NAMEONLY\fP -.\" .El -ファイル名のみが必要とされている。 返された構造体のリンクリストの \fIfts_name\fP, \fIfts_namelen\fP フィールド以外の -すべてのフィールドの内容は定義されない。 -.SS fts_set() -.\" .Bl -tag -width FTS_PHYSICAL -関数 \fBfts_set\fP() は、ユーザーアプリケーションが ストリーム \fIftsp\fP のファイル \fIf\fP -について更なる処理を決定すること許す。 \fBfts_set\fP() 関数は、成功した場合は 0 を、エラーが起こった場合は \-1 を返す。 -\fIoption\fP は、次の値のいずれか 1 つに設定されなければならない。 -.TP 13 -\fBFTS_AGAIN\fP -ファイルを再びたどる。すべてのファイルタイプが再びたどられる。 次の \fBfts_read\fP() の呼出しにより、参照されているファイルが返される。 -構造体の \fIfts_stat\fP, \fIfts_info\fP フィールドはこの時に初期化されるが、他のフィールドは変更されない。 このオプションは、 -\fBfts_read\fP() によって最も新しく返されたファイルについてのみ意味を持つ。 通常は、postorder -でディレクトリをたどる場合に使用し、 その下の階層と同様に、 ディレクトリを (preorder と postorder の両方で) 再びたどらせる。 -.TP -\fBFTS_FOLLOW\fP -参照されてるファイルは、シンボリックリンクでなければならない。 参照されているファイルが \fBfts_read\fP() -によって最も新しく返されたものである場合、次の \fBfts_read\fP() の呼出しでは、シンボリックリンクそのものではなく、 -シンボリックリンクが指している先を反映するように \fIfts_info\fP, \fIfts_statp\fP を再び初期化したファイルが返される。 ファイルが -\fBfts_children\fP() によって最も新しく返されたものの 1 つである場合、 \fBfts_read\fP() によって返されたとき、構造体の -\fIfts_info\fP, \fIfts_statp\fP フィールドは、シンボリックリンクそのものではなく、 シンボリックリンクが指している先を反映する。 -どちらの場合でも、シンボリックリンクが指している先がないときは、 返された構造体のフィールドは変更されず、 \fIfts_info\fP フィールドが -\fBFTS_SLNONE\fP に設定される。 -.IP -リンク先がディレクトリの場合、 ファイルが preorder で返された後、下の階層のすべてファイルが返され、 その後で postorder -で返される。 -.TP -\fBFTS_SKIP\fP -.\" .El -このファイルの下の階層はたどられない。 このファイルは、 \fBfts_children\fP() または \fBfts_read\fP() -のどちらかによって最も新しく返されたものの 1 つである。 -.SS fts_close() -\fBfts_close\fP() 関数は、ファイル階層ストリーム \fIftsp\fP を閉じる。そして、現在のディレクトリを \fIftsp\fP を開くために -\fBfts_open\fP() が呼ばれたディレクトリに復元する。 \fBfts_close\fP() 関数は、成功した場合は 0 を、エラーが起こった場合は -\-1 を返す。 -.SH エラー -関数 \fBfts_open\fP() が失敗した場合、 \fIerrno\fP は、ライブラリ関数 \fBopen\fP(2) と \fBmalloc\fP(3) -に対して指定されるエラーに設定される。 -.PP -関数 \fBfts_close\fP() が失敗した場合、 \fIerrno\fP は、ライブラリ関数 \fBchdir\fP(2) と \fBclose\fP(2) -に対して指定されるエラーに設定される。 -.PP -関数 \fBfts_read\fP() と \fBfts_children\fP() が失敗した場合、 \fIerrno\fP は、ライブラリ関数 -\fBchdir\fP(2), \fBmalloc\fP(3), \fBopendir\fP(3), \fBreaddir\fP(3), \fBstat\fP(2) -に対して指定されるエラーに設定される。 -.PP -更に、 \fBfts_children\fP(), \fBfts_open\fP(), \fBfts_set\fP() が失敗した場合、 \fIerrno\fP -が次の値にされる。 -.TP -\fBEINVAL\fP -オプションが無効であった。 -.SH バージョン -これらの関数は、Linux では glibc2 から使用可能である。 -.SH 準拠 -4.4BSD. -.SH バグ -.\" https://sourceware.org/bugzilla/show_bug.cgi?id=15838 -.\" https://sourceware.org/bugzilla/show_bug.cgi?id=11460 -.\" The following statement is years old, and seems no closer to -.\" being true -- mtk -.\" The -.\" .I fts -.\" utility is expected to be included in a future -.\" POSIX.1 -.\" revision. -このマニュアルページで説明した API はいずれも、 LFS API を使うプログラムをコンパイルする場合 -(例えば、\fI\-D_FILE_OFFSET_BITS=64\fP でコンパイルする場合など)、安全ではない。 -.SH 関連項目 -\fBfind\fP(1), \fBchdir\fP(2), \fBstat\fP(2), \fBftw\fP(3), \fBqsort\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ftw.3 b/manual/LDP_man-pages/draft/man3/ftw.3 deleted file mode 100644 index db50dd5f..00000000 --- a/manual/LDP_man-pages/draft/man3/ftw.3 +++ /dev/null @@ -1,276 +0,0 @@ -.\" Copyright (c) 1993 Michael Haardt (michael@moria.de) -.\" and copyright (c) 1999 Andries Brouwer (aeb@cwi.nl) -.\" and copyright (c) 2006 Justin Pryzby -.\" 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified Sun Jul 25 11:02:22 1993 by Rik Faith (faith@cs.unc.edu) -.\" 2006-05-24, Justin Pryzby -.\" document FTW_ACTIONRETVAL; include .SH "RETURN VALUE"; -.\" 2006-05-24, Justin Pryzby and -.\" Michael Kerrisk -.\" reorganized and rewrote much of the page -.\" 2006-05-24, Michael Kerrisk -.\" Added an example program. -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated 1998-04-28, NAKANO Takeo -.\" Updated & Modified 1999-09-14, NAKANO Takeo -.\" Updated & Modified 2005-11-04, Akihiro MOTOKI -.\" Updated 2006-07-26, Akihiro MOTOKI , LDP v2.36 -.\" -.TH FTW 3 2014\-12\-31 Linux "Linux Programmer's Manual" -.SH 名前 -ftw, nftw \- ファイルツリーを歩きまわる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint ftw(const char *\fP\fIdirpath\fP\fB,\fP -\fB int (*\fP\fIfn\fP\fB) (const char *\fP\fIfpath\fP\fB, const struct stat *\fP\fIsb\fP\fB,\fP -\fB int \fP\fItypeflag\fP\fB),\fP -\fB int \fP\fInopenfd\fP\fB);\fP -.sp -\fB#define _XOPEN_SOURCE 500\fP /* feature_test_macros(7) 参照 */ -\fB#define _XOPEN_SOURCE 500\fP -\fB#include \fP -.sp -\fBint nftw(const char *\fP\fIdirpath\fP\fB,\fP -\fB int (*\fP\fIfn\fP\fB) (const char *\fP\fIfpath\fP\fB, const struct stat *\fP\fIsb\fP\fB,\fP -\fB int \fP\fItypeflag\fP\fB, struct FTW *\fP\fIftwbuf\fP\fB),\fP -\fB int \fP\fInopenfd\fP\fB, int \fP\fIflags\fP\fB);\fP -.fi -.SH 説明 -\fBftw\fP() は、 \fIdirpath\fP で指定されたディレクトリ以下のディレクトリツリー全体を歩きまわり、 -ツリー中でエントリーが見付かるごとに、 \fIfn\fP() を呼び出す。 デフォルトでは、ディレクトリそのものが、そのディレクトリにあるファイルや -サブディレクトリよりも先に処理される (行きがけ順探索; preorder traversal)。 - -呼び出し元プロセスが利用可能なファイルディスクリプターを使い切って しまわないようにするため、 \fBftw\fP() -が同時にオープンするディレクトリの最大数を \fInopenfd\fP で指定することができる。 探索の深さがこの値を越えると、 -一つのディレクトリを閉じてから他のディレクトリをオープンし直すこと になるので、 \fBftw\fP() の動作は遅くなる。 \fBftw\fP() -は、ディレクトリツリーの階層 1 レベルにつき、 最大でも一つのファイルディスクリプターしか使用しない。 - -ディレクトリツリーで見つかったエントリー毎に、 \fBftw\fP() は \fIfpath\fP, \fIsb\fP, \fItypeflag\fP の 3つを引き数として -\fIfn\fP() を呼び出す。 \fIfpath\fP はエントリーのパス名である。 \fIdirpath\fP が相対パス名で指定された場合には、 -\fIfpath\fP は \fBftw\fP() が呼び出された時点の呼び出し元プロセスのカレントワーキングディレクトリ からの相対パス名となる。 -\fIdirpath\fP が絶対パス名で指定された場合には、 \fIfpath\fP は絶対パス名となる。 \fIsb\fP は \fIfpath\fP に対する -\fBstat\fP(2) の呼び出しで返される \fIstat\fP 構造体へのポインターである。 \fItypeflag\fP -は整数で、以下の値のいずれか一つである: -.TP -\fBFTW_F\fP -\fIfpath\fP が通常のファイルである -.TP -\fBFTW_D\fP -\fIfpath\fP がディレクトリである -.TP -\fBFTW_DNR\fP -\fIfpath\fP が読み込みできないディレクトリである -.TP -\fBFTW_NS\fP -\fBstat\fP(2) の呼び出しがシンボリックリンクでない \fIfpath\fP で失敗した。 -これのよくある原因は、呼び出し元が親ディレクトリに対する読み込み許可を持っており、 ファイル名 \fIfpath\fP -を見ることができたが、実行許可は持っておらず、 そのため \fBstat\fP(2) ではそのファイルに到達できなかった、というものである。 -.sp -\fIfpath\fP がシンボリックリンクで、かつ \fBstat\fP(2) が失敗した場合、 \fBFTW_NS\fP と \fBFTW_SL\fP (後述) -のどちらが \fItypeflag\fP に渡されるかは未定義であると、POSIX.1\-2001 には書かれている。 -.PP -ツリーの探索を止めたい場合は、 \fIfn\fP() が 0 以外の値を返せば良い (この値は \fBftw\fP() 自身の戻り値となる)。 それ以外の場合は -\fBftw\fP() はツリー全体の探索を続け、すべてのツリーã‚’探索し終えたところで 0 を返す。探索中に (\fBmalloc\fP(3) の失敗などの) -エラーが起こると \-1 を返す。 -.PP -\fBftw\fP() は動的なデータ構造を用いるので、ツリー探索を安全に中断する唯一の方法は 0 以外の値を \fIfn\fP() -の返り値とすることである。割り込みを扱うには、 例えば発生した割り込みをマークしておいて、 0 以外の値を返すようにする -シグナルによりメモリーリークを起こさずに探索を終了できるようにするには、 シグナルハンドラーで \fIfn\fP() -がチェックするグローバルなフラグをセットするようにすればよい。 プログラムを終了させる場合以外は、 \fBlongjmp\fP(3) を使用しないこと。 -.SS nftw() -関数 \fBnftw\fP() は \fBftw\fP() と同じだが、引き数 \fIflags\fP が追加される点と、 \fIfn\fP() の引き数に -\fIftwbuf\fP が追加される点が異なる。 - -この \fIflags\fP 引き数は下記のフラグの 0 個以上の論理和を取ったものである: -.TP -\fBFTW_ACTIONRETVAL\fP (glibc 2.3.3 以降) -このフラグは glibc 固有である。 このフラグをセットすると、 \fBnftw\fP() の \fIfn\fP() の返り値の扱いが変わる。 \fIfn\fP() -は以下の値のいずれか一つを返す必要がある。 -.RS -.TP -\fBFTW_CONTINUE\fP -\fBnftw\fP() は通常通り処理を続ける。 -.TP -\fBFTW_SKIP_SIBLINGS\fP -.\" If \fBFTW_DEPTH\fP -.\" is set, the entry's parent directory is processed next (with -.\" \fIflag\fP set to \fBFTW_DP\fP). -\fIfn\fP() がこの値を返した場合、処理中のエントリーの兄弟 (同じ階層のエントリー) -の処理はスキップされ、親ディレクトリで続きの処理が行われる。 -.TP -\fBFTW_SKIP_SUBTREE\fP -\fIfn\fP() が呼び出されたエントリーがディレクトリ (\fItypeflag\fP が \fBFTW_D\fP) の場合に、この値を返すと \fIfn\fP() -の引き数として渡されたディレクトリ内のエントリーの処理が行われなくなる。 \fBnftw\fP() は処理中のディレクトリの兄弟 (同じ階層のエントリー) -から処理を続ける。 -.TP -\fBFTW_STOP\fP -\fBnftw ()\fP は、返り値 \fBFTW_STOP\fP ですぐに復帰する。 -.PP -他の返り値は将来新しい動作に対応付けられる可能性がある。 \fIfn\fP() は上記のリストにある値以外を返さないようにすべきである。 - -\fI\fP で \fBFTW_ACTIONRETVAL\fP の定義が有効にするためには、 -(「どの」ヘッダーファイルをインクルードするよりも前に) 機能検査マクロ \fB_GNU_SOURCE\fP を定義しなければならない。 -.RE -.TP -\fBFTW_CHDIR\fP -セットされると、ディレクトリの内容を処理する前に そのディレクトリに \fBchdir\fP(2) する。このフラグは、 \fIfpath\fP -が属すディレクトリで何らかの動作を実行する必要がある場合に 便利である。 -(このフラグを指定しても \fIfn\fP の \fIfpath\fP 引き数で渡されるパス名には影響しない。) -.TP -\fBFTW_DEPTH\fP -セットされると、帰りがけ順探索 (post\-order traversal) を行う。 つまり、ディレクトリそのものを引き数とした \fIfn\fP() -呼出しは、そのディレクトリに含まれるファイルとサブディレクトリに 対する処理の「後で」行われる -(デフォルトでは、ディレクトリ自身の処理はディレクトリ内のエントリー より「前に」行なわれる)。 -.TP -\fBFTW_MOUNT\fP -セットされると、同じファイルシステムの中だけを探索対象とする (つまり、マウントポイントをまたぐことはない)。 -.TP -\fBFTW_PHYS\fP -セットされると、シンボリックリンクを辿らない (おそらくこちらが 通常望ましい動作だろう)。セットされていないとシンボリックリンクを -辿るが、同じファイルが二回報告されることはない。 -.sp -\fBFTW_PHYS\fP がセットされずに \fBFTW_DEPTH\fP がセットされると、自分自身に対するシンボリックリンクを配下に持つ -ディレクトリに対して \fIfn\fP() が呼び出されることは決してない。 -.LP -ディレクトリツリーのエントリー毎に、 \fBnftw\fP() は 4つの引き数で \fIfn\fP() を呼び出す。 \fIfpath\fP と \fIsb\fP は -\fBftw\fP() と同じである。 \fItypeflag\fP には、 \fBftw\fP() で取り得る値のいずれか、または以下の値のいずれかが渡される: -.TP -\fBFTW_DP\fP -\fIfpath\fP がディレクトリで、かつ \fIflags\fP で \fBFTW_DEPTH\fP が指定されていた (\fBFTW_DEPTH\fP が -\fIflags\fP に指定されていなかった場合、 ディレクトリに対しては常に \fItypeflag\fP が \fBFTW_D\fP で \fIfn\fP() -が呼び出される)。 \fIfpath\fP 配下のファイルとサブディレクトリは全て処理が終わっている。 -.TP -\fBFTW_SL\fP -.\" To obtain the definition of this constant from -.\" .IR , -.\" either -.\" .B _BSD_SOURCE -.\" must be defined, or -.\" .BR _XOPEN_SOURCE -.\" must be defined with a value of 500 or more. -\fIfpath\fP がシンボリックリンクで、かつ \fBFTW_PHYS\fP が \fIflags\fP に セットされていた。 -.TP -\fBFTW_SLN\fP -\fIfpath\fP がシンボリックリンクで、存在しないファイルを指している (これがセットされるのは \fBFTW_PHYS\fP -がセットされていない場合だけである)。 -.LP -\fBnftw\fP() が \fIfn\fP() を呼び出す際に渡す 4つめの引き数は \fIFTW\fP 型の構造体である。 -.in +4n -.nf - -struct FTW { - int base; - int level; -}; - -.fi -.in -\fIbase\fP は、ファイル名 (basename 要素) の、 \fIfpath\fP で渡されるパス名の中でのオフセットである。 \fIlevel\fP -はディレクトリツリーでの \fIfpath\fP の深さを示す。深さはディレクトリツリーのトップ (root) からの 相対値である (\fIdirpath\fP -は深さ 0 である)。 -.SH 返り値 -これらの関数は、成功すると 0 を、エラーが発生すると \-1 を返す。 - -\fIfn\fP() が 0 以外を返した場合、ディレクトリツリーの探索を終了し、 \fIfn\fP() が返した値を \fBftw\fP() や -\fBnftw\fP() の結果として返す。 - -\fBnftw\fP() が \fBFTW_ACTIONRETVAL\fP フラグ付きで呼ばれた場合、ツリーの探索を終了させるために \fIfn\fP() -が使用できる、非 0 の値は \fBFTW_STOP\fP だけであり、 この値は \fBnftw\fP() の返り値として返される。 -.SH バージョン -\fBnftw\fP() は バージョン 2.1 以降の glibc で利用できる。 -.SH 準拠 -POSIX.1\-2001, SVr4, SUSv1. POSIX.1\-2008 は \fBftw\fP() を廃止予定としている。 -.SH 注意 -POSIX.1\-2001 の注記によると、 \fIfn\fP がカレントワーキングディレクトリを保持しなかった場合の 結果は規定されていないとされている。 -.PP -\fBnftw\fP() 関数と、 \fBftw\fP() における \fBFTW_SL\fP は、SUSv1 で導入された。 -.LP -\fBftw\fP() で \fBFTW_SL\fP を一切使わないシステムや、 存在しないファイルを指しているシンボリックリンクの場合にのみ \fBFTW_SL\fP -を使うシステム、また \fBftw\fP() が全てのシンボリックリンクに対して \fBFTW_SL\fP を使うシステムもある。 -予測可能な動作をさせるためには、 \fBnftw\fP() を使うこと。 -.LP -「stat できるがディレクトリではないオブジェクト」 (ファイル, シンボリックリンク, fifo 等) に対しては、すべて \fBFTW_F\fP -が返される。 - -\fBFTW_ACTIONRETVAL\fP は glibc 固有である。 -.SH 例 -以下のプログラムは、一つ目のコマンドライン引き数を名前に持つパス以下の ディレクトリツリーを探索する。引き数が指定されなかった場合は、 -カレントディレクトリ以下を探索する。 各々のファイルについて様々の情報が表示される。 二番目のコマンドライン引き数に文字を指定することで、 -\fBnftw\fP() を呼び出す際に \fIflags\fP 引き数に渡す値を制御することができる。 -.SS プログラムのソース -.nf -#define _XOPEN_SOURCE 500 -#include -#include -#include -#include -#include - -static int -display_info(const char *fpath, const struct stat *sb, - int tflag, struct FTW *ftwbuf) -{ - printf("%\-3s %2d %7jd %\-40s %d %s\en", - (tflag == FTW_D) ? "d" : (tflag == FTW_DNR) ? "dnr" : - (tflag == FTW_DP) ? "dp" : (tflag == FTW_F) ? "f" : - (tflag == FTW_NS) ? "ns" : (tflag == FTW_SL) ? "sl" : - (tflag == FTW_SLN) ? "sln" : "???", - ftwbuf\->level, (intmax_t) sb\->st_size, - fpath, ftwbuf\->base, fpath + ftwbuf\->base); - return 0; /* To tell nftw() to continue */ -} - -int -main(int argc, char *argv[]) -{ - int flags = 0; - - if (argc > 2 && strchr(argv[2], \(aqd\(aq) != NULL) - flags |= FTW_DEPTH; - if (argc > 2 && strchr(argv[2], \(aqp\(aq) != NULL) - flags |= FTW_PHYS; - - if (nftw((argc < 2) ? "." : argv[1], display_info, 20, flags) - == \-1) { - perror("nftw"); - exit(EXIT_FAILURE); - } - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBstat\fP(2), \fBfts\fP(3), \fBreaddir\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/futimes.3 b/manual/LDP_man-pages/draft/man3/futimes.3 deleted file mode 100644 index 7c4fd87c..00000000 --- a/manual/LDP_man-pages/draft/man3/futimes.3 +++ /dev/null @@ -1,88 +0,0 @@ -.\" Copyright (c) 2006, 2008, 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-07-31, Akihiro MOTOKI -.\" Updated 2008-08-07, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2013-04-03, Akihiro MOTOKI -.\" -.TH FUTIMES 3 2013\-10\-29 Linux "Linux Programmer's Manual" -.SH 名前 -futimes, lutimes \- ファイルのタイムスタンプを変更する -.SH 書式 -.nf -\fB#include \fP - -\fBint futimes(int \fP\fIfd\fP\fB, const struct timeval \fP\fItv\fP\fB[2]);\fP - -\fBint lutimes(const char *\fP\fIfilename\fP\fB, const struct timeval \fP\fItv\fP\fB[2]);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBfutimes\fP(), \fBlutimes\fP(): _BSD_SOURCE -.SH 説明 -\fBfutimes\fP() は \fButimes\fP(2) と同じ方法でファイルのアクセス時刻と修正時刻を変更する。 -違いは、タイムスタンプを変更するファイルを、 パス名ではなく、ファイルディスクリプター \fIfd\fP を用いて指定する点である。 - -\fBlutimes\fP() は \fButimes\fP(2) と同じ方法でファイルのアクセス時刻と修正時刻を変更する。違いは、 \fIfilename\fP -がシンボリックリンクを参照している場合に、リンクの展開を行わず、代わりにシンボリックリンクのタイムスタンプを変更する点である。 -.SH 返り値 -成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -エラーは \fButimes\fP(2) と同じだが、 \fBfutimes\fP() では以下のエラーが追加になっている: -.TP -\fBEBADF\fP -\fIfd\fP が有効なファイルディスクリプターでない。 -.TP -\fBENOSYS\fP -\fI/proc\fP ファイルシステムにアクセスできなかった。 -.PP -\fBlutimes\fP() では以下のエラーが追加になっている: -.TP -\fBENOSYS\fP -カーネルがこの関数をサポートしていない。 Linux 2.6.22 以降が必要である。 -.SH バージョン -\fBfutimes\fP() は glibc 2.3 以降で利用可能である。 \fBlutimes\fP() は glibc 2.6 以降で利用可能であり、 -\fButimensat\fP(2) システムコールを使って実装されている。 \fButimensat\fP(2) はカーネル 2.6.22 -以降でサポートされている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBfutimes\fP() と \fBlutimes\fP() はスレッドセーフである。 -.SH 準拠 -これらの関数はどの標準でも規定されていない。 Linux 以外では、これらは BSD でのみ利用可能である。 -.SH 関連項目 -\fButime\fP(2), \fButimensat\fP(2), \fBsymlink\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/fwide.3 b/manual/LDP_man-pages/draft/man3/fwide.3 index e29b9c4e..4756ebf4 100644 --- a/manual/LDP_man-pages/draft/man3/fwide.3 +++ b/manual/LDP_man-pages/draft/man3/fwide.3 @@ -24,28 +24,26 @@ .\" Translated Tue Jan 11 00:56:36 JST 2000 .\" by HANATAKA Shinya .\" -.TH FWIDE 3 2014\-03\-19 GNU "Linux Programmer's Manual" +.TH FWIDE 3 2016\-03\-15 GNU "Linux Programmer's Manual" .SH 名前 fwide \- FILE ストリームの入出力単位を設定または取得する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint fwide(FILE *\fP\fIstream\fP\fB, int \fP\fImode\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in +.RE .ad l -.sp +.PP \fBfwide\fP(): .RS 4 _XOPEN_SOURCE\ >=\ 500 || _ISOC99_SOURCE || .br -_POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP +_POSIX_C_SOURCE\ >=\ 200112L .RE .ad .SH 説明 @@ -64,7 +62,7 @@ I/O 操作の場合にはバイト単位に、ワイド文字 I/O 操作の場 \fBfwide\fP() 関数はストリームの入出力単位の設定を試みた後にその値を返す。 正の返り値はワイド文字単位を、負の返り値はバイト単位を意味する。 返り値が 0 ならば未決定を意味する。 .SH 準拠 -C99, POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008, C99. .SH 注意 バイト単位のストリームにワイド文字を出力にするには \fBfprintf\fP(3) 関数の \fB%lc\fP 変換や \fB%ls\fP 変換を使用することができる。 @@ -74,6 +72,5 @@ C99, POSIX.1\-2001. .SH 関連項目 \fBfprintf\fP(3), \fBfwprintf\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/gamma.3 b/manual/LDP_man-pages/draft/man3/gamma.3 deleted file mode 100644 index 83c70a30..00000000 --- a/manual/LDP_man-pages/draft/man3/gamma.3 +++ /dev/null @@ -1,90 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" Modified 2003-11-18, aeb: historical remarks -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI -.\" all rights reserved. -.\" historical remarks: Japanese Version Copyright (c) 2005 SAITOH Akira -.\" all rights reserved. -.\" Translated Sun Sep 22 08:34:42 2002 -.\" by Akihiro MOTOKI -.\" Updated & Modified Sat Feb 19 05:50:00 2005 -.\" by SAITOH Akira -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH GAMMA 3 2008\-08\-05 GNU "Linux Programmer's Manual" -.SH 名前 -gamma, gammaf, gammal \- ガンマ関数 (の自然対数) -.SH 書式 -\fB#include \fP -.sp -\fBdouble gamma(double \fP\fIx\fP\fB);\fP -.br -\fBfloat gammaf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double gammal(long double \fP\fIx\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBgamma\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE -.RE -\fBgammaf\fP(), \fBgammal\fP(): -.RS 4 -.\" Also seems to work: -std=c99 -D_XOPEN_SOURCE -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 -.RE -.ad b -.SH 説明 -これらの関数は非推奨である。その代わり、場面に応じて \fBtgamma\fP(3) か \fBlgamma\fP(3) を使うこと。 - -ガンマ関数の定義については、 \fBtgamma\fP(3) を参照のこと。 -.SS *BSD版 -4.4BSD の libm と FreeBSD のいくつかのバージョンには、関数 \fBgamma\fP() -が含まれており、期待通りガンマ関数を計算できる。 -.SS glibc版 -Glibcは、関数 \fBgamma\fP() を含んでいるが、これは \fBlgamma\fP(3) と等価であり、ガンマ関数の自然対数を計算する。 -.SH 返り値 -\fBlgamma\fP(3) を参照。 -.SH エラー -\fBlgamma\fP(3) を参照。 -.SH 準拠 -システムによって振舞いが異なるという歴史的な経緯のため、 この関数はどの標準規格でも規定されていない。 -.SH 注意 -.SS 歴史 -4.2BSDにおいては、関数 \fBgamma\fP() が実際に計算するのは ln(|Gamma(|\fIx\fP|)|) であり、 -Gamma(|\fIx\fP|) の符号が extern int \fIsigngam\fP に格納されていた。 4.3BSDになって関数名が変更され、 -\fBlgamma\fP(3) となり、そのマニュアルページでは -.sp -.in +4n -"「いつの日か gamma の名は復活し、ガンマ関数に冠されるであろう」" -.in -.sp -.\" The FreeBSD man page says about gamma() that it is like lgamma() -.\" except that is does not set signgam. -.\" Also, that 4.4BSD has a gamma() that computes the true gamma function. -という誓いが述べられていた。 これは4.4BSDになって実現され、 \fBgamma\fP() はまさにガンマ関数を計算するようになった。 (もう -\fIsigngam\fP には作用しない。) ところが、これが登場する時期が遅すぎたため、 \fBtgamma\fP(3) -という「本当のガンマ関数」がすでに存在しているのである。 -.SH 関連項目 -\fBlgamma\fP(3), \fBsigngam\fP(3), \fBtgamma\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/gcvt.3 b/manual/LDP_man-pages/draft/man3/gcvt.3 deleted file mode 100644 index 2c735f7c..00000000 --- a/manual/LDP_man-pages/draft/man3/gcvt.3 +++ /dev/null @@ -1,91 +0,0 @@ -.\" 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 19:32:25 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Hiroaki Nagoya -.\" all rights reserved. -.\" Translated Mon Feb 10 1997 by Hiroaki Nagoya -.\" Updated & Modified Wed Feb 16 23:43:45 JST 2005 -.\" by Yuichi SATO -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" Updated 2009-04-24, Akihiro MOTOKI, LDP v3.20 -.\" -.TH GCVT 3 2014\-05\-28 "" "Linux Programmer's Manual" -.SH 名前 -gcvt \- 浮動小数点数を文字列へ変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *gcvt(double \fP\fInumber\fP\fB, int \fP\fIndigit\fP\fB, char *\fP\fIbuf\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBgcvt\fP(): -.ad l -.PD 0 -.RS 4 -.TP 4 -glibc 2.12 以降: -.nf -_SVID_SOURCE || - (_XOPEN_SOURCE\ >=\ 500 || - _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) && - !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600) -.fi -.TP 4 -glibc 2.12 より前: -_SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE && -_XOPEN_SOURCE_EXTENDED -.RE -.PD -.ad b -.SH 説明 -関数 \fBgcvt\fP() は、 \fInumber\fP を、最短の長さのヌル終端された ASCII 文字列へ変換し、変換後の文字列を \fIbuf\fP -に格納する。 \fBprintf\fP(3) の F フォーマットや E フォーマットのように \fIndigit\fP 桁の 有効数字を生成する。 -.SH 返り値 -関数 \fBgcvt\fP() は文字列 \fIbuf\fP へのポインターを返す。 -.SH 準拠 -POSIX.1\-2001 では、 この関数は「過去の名残 (LEGACY)」と位置付けられている。 POSIX.1\-2008 では、 \fBgcvt\fP() -の仕様は削除され、 代わりに \fBsprintf\fP(3) を使用することが推奨されている (\fBsnprintf\fP(3) -の方が適切かもしれないが)。 -.SH 関連項目 -\fBecvt\fP(3), \fBfcvt\fP(3), \fBsprintf\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/get_nprocs_conf.3 b/manual/LDP_man-pages/draft/man3/get_nprocs_conf.3 deleted file mode 100644 index 10f15f78..00000000 --- a/manual/LDP_man-pages/draft/man3/get_nprocs_conf.3 +++ /dev/null @@ -1,91 +0,0 @@ -.\" Copyright (c) 2012, Petr Benas -.\" and Copyright (c) 2012, 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-31, Akihiro MOTOKI -.\" -.TH GET_NPROCS 3 2012\-03\-20 GNU "Linux Programmer's Manual" -.SH 名前 -get_nprocs, get_nprocs_conf \- プロセッサ数を取得する -.SH 書式 -\fB#include \fP -.sp -\fBint get_nprocs(void);\fP -.br -\fBint get_nprocs_conf(void);\fP -.SH 説明 -\fBget_nprocs_conf\fP() 関数は、オペレーティングシステムで -設定されているプロセッサ数を返す。 - -\fBget_nprocs\fP() 関数は、システムで現在利用可能なプロセッサ数を返す。 -(例えば、ホットプラグが可能なシステムでは) -オフラインになっているプロセッサがある場合があるので、 -この数は \fBget_nprocs_conf\fP() が返す数より小さい場合がある。 -.SH 返り値 -「説明」の節で説明した通りである。 -.SH 準拠 -これらの関数は GNU による拡張である。 -.SH 注意 -.\" glibc 2.15 -これらの関数の現在の実装はかなりコストがかかる実装になっている。 -関数が呼ばれる度に \fI/sys\fP ファイルシステム内のファイルをオープンして -解析するようになっているからである。 - -以下の \fBsysconf\fP(3) の呼び出しで、このページに書かれている関数を使った -場合に返されるのと同じ情報を得ることができる。 -.nf - - np = sysconf(_SC_NPROCESSORS_CONF); /* processors configured */ - np = sysconf(_SC_NPROCESSORS_ONLN); /* processors available */ -.fi -.SH 例 -以下の例は、 \fBget_nprocs\fP() と \fBget_nprocs_conf\fP() が -どのように利用できるかを示すものである。 - -.nf -#include -#include - -int -main(int argc, char *argv[]) -{ - printf("This system has %d processors configured and " - "%d processors available.\en", - get_nprocs_conf(), get_nprocs()); - return 0; -} -.fi - -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getaddrinfo.3 b/manual/LDP_man-pages/draft/man3/getaddrinfo.3 index 1d0b0dc0..8b982d25 100644 --- a/manual/LDP_man-pages/draft/man3/getaddrinfo.3 +++ b/manual/LDP_man-pages/draft/man3/getaddrinfo.3 @@ -61,7 +61,7 @@ .\" Updated 2012-05-29, Akihiro MOTOKI .\" Updated 2013-05-01, Akihiro MOTOKI .\" -.TH GETADDRINFO 3 2014\-04\-06 GNU "Linux Programmer's Manual" +.TH GETADDRINFO 3 2020\-11\-01 GNU "Linux Programmer's Manual" .SH 名前 getaddrinfo, freeaddrinfo, gai_strerror \- ネットワークのアドレスとサービスを変換する .SH 書式 @@ -69,25 +69,26 @@ getaddrinfo, freeaddrinfo, gai_strerror \- ネットワークのアドレスと \fB#include \fP \fB#include \fP \fB#include \fP -.sp +.PP \fBint getaddrinfo(const char *\fP\fInode\fP\fB, const char *\fP\fIservice\fP\fB,\fP \fB const struct addrinfo *\fP\fIhints\fP\fB,\fP \fB struct addrinfo **\fP\fIres\fP\fB);\fP -.sp +.PP \fBvoid freeaddrinfo(struct addrinfo *\fP\fIres\fP\fB);\fP -.sp +.PP \fBconst char *gai_strerror(int \fP\fIerrcode\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): .ad l -.in -.sp -\fBgetaddrinfo\fP(), \fBfreeaddrinfo\fP(), \fBgai_strerror\fP(): -.RS 4 -_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE .RE +.PP +\fBgetaddrinfo\fP(), +\fBfreeaddrinfo\fP(), +\fBgai_strerror\fP(): + Since glibc 2.22: _POSIX_C_SOURCE >= 200112L + Glibc 2.21 and earlier: _POSIX_C_SOURCE .ad b .SH 説明 .\" .BR getipnodebyname (3), @@ -100,9 +101,9 @@ _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE の違いに関する依存関係を なくすことができる。 .PP \fBgetaddrinfo\fP() が用いる \fIaddrinfo\fP 構造体は以下のフィールドを含む。 -.sp +.PP .in +4n -.nf +.EX struct addrinfo { int ai_flags; int ai_family; @@ -113,14 +114,14 @@ struct addrinfo { char *ai_canonname; struct addrinfo *ai_next; }; -.fi +.EE .in .PP \fIhints\fP 引き数は \fIaddrinfo\fP 構造体を指し示し、この構造体を用いて \fIres\fP が指すリストに入れて返すソケットアドレス構造体を選択するための基準を指定する。 \fIhints\fP が NULL でない場合、 \fIhints\fP は \fIaddrinfo\fP 構造体を指し示し、その構造体のフィールド \fIai_family\fP, \fIai_socktype\fP, \fIai_protocol\fP で \fBgetaddrinfo\fP() が返すソケットアドレス集合に対する基準を指定する。 -.TP 12 +.TP \fIai_family\fP このフィールドは返されるアドレスの希望のアドレスファミリーを指定する。 このフィールドに指定できる有効な値としては \fBAF_INET\fP と \fBAF_INET6\fP がある。 また、値 \fBAF_UNSPEC\fP を指定すると、 \fBgetaddrinfo\fP() は \fInode\fP と @@ -148,12 +149,14 @@ IPv6 の場合は \fBinet_pton\fP(3) でサポートされている 16 進数 \fBAI_NUMERICHOST\fP フラグが含まれている場合は、 \fInode\fP は数値形式のネットワークアドレスでなければならない。 \fBAI_NUMERICHOST\fP フラグを使うと、時間の掛かる可能性のあるネットワークホストアドレスの検索は すべて抑制される。 .PP -\fIhints.ai_flags\fP に \fBAI_PASSIVE\fP フラグが指定され、かつ \fInode\fP が NULL の場合、 -返されるソケットアドレスは コネクションを \fBaccept\fP(2) するためのソケットを \fBbind\fP(2) するのに適したものとなる。 -返されるソケットアドレスには「ワイルドカードアドレス」 (IPv4 アドレスの場合は \fBINADDR_ANY\fP、 IPv6 アドレスの場合は -\fBIN6ADDR_ANY_INIT\fP) が入る。 ワイルドカードアドレスは、任意のホストのネットワークアドレスで接続を -受け付けようとするアプリケーション (通常はサーバー) で用いられる。 \fInode\fP が NULL でない場合、 \fBAI_PASSIVE\fP -フラグは無視される。 +If the \fBAI_PASSIVE\fP flag is specified in \fIhints.ai_flags\fP, and \fInode\fP is +NULL, then the returned socket addresses will be suitable for \fBbind\fP(2)ing +a socket that will \fBaccept\fP(2) connections. The returned socket address +will contain the "wildcard address" (\fBINADDR_ANY\fP for IPv4 addresses, +\fBIN6ADDR_ANY_INIT\fP for IPv6 address). The wildcard address is used by +applications (typically servers) that intend to accept connections on any +of the host's network addresses. If \fInode\fP is not NULL, then the +\fBAI_PASSIVE\fP flag is ignored. .PP \fIhints.ai_flags\fP に \fBAI_PASSIVE\fP フラグがセットされていない場合、 返されるソケットアドレスは \fBconnect\fP(2), \fBsendto\fP(2), \fBsendmsg\fP(2) での使用に適したものとなる。 \fInode\fP が NULL @@ -174,7 +177,7 @@ IPv6 の場合は \fBinet_pton\fP(3) でサポートされている 16 進数 構造体のリンクリストを初期化し、 \fIres\fP にリストの先頭へのポインターを入れて返す。 このとき、各構造体のネットワークアドレスは \fInode\fP と \fIservice\fP に一致し、 \fIhints\fP で課されたすべての制限を満たすものとなる。 リンクリストの要素は \fIai_next\fP フィールドにより連結される。 - +.PP リンクリストの \fIaddrinfo\fP 構造体は複数個になることもあり、その理由はいくつかある。 ネットワークホストがマルチホームである、 複数のプロトコルでアクセスできる (例えば \fBAF_INET\fP と \fBAF_INET6\fP の両方) 、 複数のソケット種別で同じサービスが利用できる (例えば、ひとつが \fBSOCK_STREM\fP アドレスで、もうひとつが \fBSOCK_DGRAM\fP アドレスである)、がある。 @@ -187,7 +190,7 @@ IPv6 の場合は \fBinet_pton\fP(3) でサポートされている 16 進数 .\" MTK, Aug 05 \fIhints.ai_flags\fP に \fBAI_CANONNAME\fP フラグが含まれている場合、返されるリストの最初の \fIaddrinfo\fP 構造体の \fIai_canonname\fP フィールドはホストの公式な名前を指すように設定される。 - +.PP 返される各々の \fIaddrinfo\fP 構造体の残りのフィールドは以下のように初期化される。 .IP * 2 \fIai_family\fP, \fIai_socktype\fP, \fIai_protocol\fP フィールドはソケット生成パラメーターを返す @@ -212,7 +215,6 @@ IPv6 アドレスが返される。 \fIhints.ai_flags\fP に \fBAI_V4MAPPED\fP .PP \fBfreeaddrinfo\fP() 関数は、 リンクリスト \fIres\fP に対して動的に割り当てられたメモリーを解放する。 .SS "国際化ドメイン名のための getaddrinfo() の拡張" -.PP glibc 2.3.4 から、 \fBgetaddrinfo\fP() は入出力するホスト名を透過的に国際化ドメイン名 (IDN) 形式 (RFC 3490 の \fIInternationalizing Domain Names in Applications (IDNA)\fP を参照のこと) と変換することを選択的に認めるように拡張されている。 4 つの新しいフラグが定義されている: @@ -220,7 +222,7 @@ glibc 2.3.4 から、 \fBgetaddrinfo\fP() は入出力するホスト名を透 \fBAI_IDN\fP このフラグが指定されると、 \fInode\fP で与えられたノード名は必要があれば IDN 形式に変換される。 ソース符号化形式は現在のロケールのものである。 - +.IP .\" Implementation Detail: .\" To minimize effects on system performance the implementation might .\" want to check whether the input string contains any non-ASCII @@ -233,7 +235,7 @@ glibc 2.3.4 から、 \fBgetaddrinfo\fP() は入出力するホスト名を透 \fBAI_CANONIDN\fP \fBAI_CANONNAME\fP が指定されている場合、 \fBgetaddrinfo\fP() は名前の検索に成功した後、 返された \fIaddrinfo\fP 構造体に対応するノードの正規名を返す。 返り値は名前解決機能から返された値の正確なコピーである。 - +.IP .\" .\"Implementation Detail: .\"If no component of the returned name starts with xn\-\- the IDN @@ -250,14 +252,14 @@ glibc 2.3.4 から、 \fBgetaddrinfo\fP() は入出力するホスト名を透 .\" FIXME glibc defines the following additional errors, some which .\" can probably be returned by getaddrinfo(); they need to .\" be documented. -.\" #ifdef __USE_GNU -.\" #define EAI_INPROGRESS -100 /* Processing request in progress. */ -.\" #define EAI_CANCELED -101 /* Request canceled. */ -.\" #define EAI_NOTCANCELED -102 /* Request not canceled. */ -.\" #define EAI_ALLDONE -103 /* All requests done. */ -.\" #define EAI_INTR -104 /* Interrupted by a signal. */ -.\" #define EAI_IDN_ENCODE -105 /* IDN encoding failed. */ -.\" #endif +.\" #ifdef __USE_GNU +.\" #define EAI_INPROGRESS -100 /* Processing request in progress. */ +.\" #define EAI_CANCELED -101 /* Request canceled. */ +.\" #define EAI_NOTCANCELED -102 /* Request not canceled. */ +.\" #define EAI_ALLDONE -103 /* All requests done. */ +.\" #define EAI_INTR -104 /* Interrupted by a signal. */ +.\" #define EAI_IDN_ENCODE -105 /* IDN encoding failed. */ +.\" #endif \fBgetaddrinfo\fP() は成功すると 0 を返し、失敗すると以下の非 0 のエラーコードのいずれかを返す。 .TP \fBEAI_ADDRFAMILY\fP @@ -307,19 +309,38 @@ glibc 2.3.4 から、 \fBgetaddrinfo\fP() は入出力するホスト名を透 \fBgai_strerror\fP() 関数を用いると、これらのエラーコードを人間に可読な文字列に変換できるので、 エラー報告に適するだろう。 .SH ファイル \fI/etc/gai.conf\fP +.SH 属性 +この節で使用されている用語の説明は \fBattributes\fP(7) を参照のこと。 +.TS +allbox; +lbw15 lb lb +l l l. +Interface Attribute Value +T{ +\fBgetaddrinfo\fP() +T} Thread safety MT\-Safe env locale +T{ +\fBfreeaddrinfo\fP(), +\fBgai_strerror\fP() +T} Thread safety MT\-Safe +.TE +.sp 1 .SH 準拠 -POSIX.1\-2001. \fBgetaddrinfo\fP() 関数は RFC 2553 に記載されている。 +POSIX.1\-2001, POSIX.1\-2008. The \fBgetaddrinfo\fP() function is documented in +RFC\ 2553. .SH 注意 \fBgetaddrinfo\fP() は、IPv6 scope\-ID を指定するために \fIaddress\fP\fB%\fP\fIscope\-id\fP 記法をサポートしている。 - +.PP \fBAI_ADDRCONFIG\fP, \fBAI_ALL\fP, \fBAI_V4MAPPED\fP は glibc 2.3.3 以降で利用可能である。 \fBAI_NUMERICSERV\fP は glibc 2.3.4 以降で利用可能である。 - -POSIX.1\-2001 によると、 \fIhints\fP に NULL が指定された場合、 \fIai_flags\fP を 0 とみなすべきとされている。 -GNU C ライブラリでは、この場合に、代わりに \fIai_flags\fP を \fB(AI_V4MAPPED\ |\ AI_ADDRCONFIG)\fP -とみなすようになっている。 この値の方が標準規格の改善になると考えられているからである。 -.SH 例 +.PP +.\" POSIX.1-2001, POSIX.1-2008 +According to POSIX.1, specifying \fIhints\fP as NULL should cause \fIai_flags\fP +to be assumed as 0. The GNU C library instead assumes a value of +\fB(AI_V4MAPPED\ |\ AI_ADDRCONFIG)\fP for this case, since this value is +considered an improvement on the specification. +.SH EXAMPLES .\" getnameinfo.3 refers to this example .\" socket.2 refers to this example .\" bind.2 refers to this example @@ -330,7 +351,7 @@ GNU C ライブラリでは、この場合に、代わりに \fIai_flags\fP を \fBgetnameinfo\fP(3) の使い方を示したものである。 プログラムは UDP データグラムの echo サーバとクライアントである。 .SS サーバのプログラム \& -.nf +.EX #include #include #include @@ -357,7 +378,7 @@ main(int argc, char *argv[]) exit(EXIT_FAILURE); } - memset(&hints, 0, sizeof(struct addrinfo)); + memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */ hints.ai_socktype = SOCK_DGRAM; /* Datagram socket */ hints.ai_flags = AI_PASSIVE; /* For wildcard IP address */ @@ -389,17 +410,17 @@ main(int argc, char *argv[]) close(sfd); } + freeaddrinfo(result); /* No longer needed */ + if (rp == NULL) { /* No address succeeded */ fprintf(stderr, "Could not bind\en"); exit(EXIT_FAILURE); } - freeaddrinfo(result); /* No longer needed */ - /* Read datagrams and echo them back to sender */ for (;;) { - peer_addr_len = sizeof(struct sockaddr_storage); + peer_addr_len = sizeof(peer_addr); nread = recvfrom(sfd, buf, BUF_SIZE, 0, (struct sockaddr *) &peer_addr, &peer_addr_len); if (nread == \-1) @@ -410,7 +431,7 @@ main(int argc, char *argv[]) s = getnameinfo((struct sockaddr *) &peer_addr, peer_addr_len, host, NI_MAXHOST, service, NI_MAXSERV, NI_NUMERICSERV); - if (s == 0) + if (s == 0) printf("Received %zd bytes from %s:%s\en", nread, host, service); else @@ -422,10 +443,10 @@ main(int argc, char *argv[]) fprintf(stderr, "Error sending response\en"); } } -.fi +.EE .SS クライアントのプログラム \& -.nf +.EX #include #include #include @@ -441,7 +462,7 @@ main(int argc, char *argv[]) { struct addrinfo hints; struct addrinfo *result, *rp; - int sfd, s, j; + int sfd, s; size_t len; ssize_t nread; char buf[BUF_SIZE]; @@ -453,7 +474,7 @@ main(int argc, char *argv[]) /* Obtain address(es) matching host/port */ - memset(&hints, 0, sizeof(struct addrinfo)); + memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */ hints.ai_socktype = SOCK_DGRAM; /* Datagram socket */ hints.ai_flags = 0; @@ -482,21 +503,21 @@ main(int argc, char *argv[]) close(sfd); } + freeaddrinfo(result); /* No longer needed */ + if (rp == NULL) { /* No address succeeded */ fprintf(stderr, "Could not connect\en"); exit(EXIT_FAILURE); } - freeaddrinfo(result); /* No longer needed */ - /* Send remaining command\-line arguments as separate datagrams, and read responses from server */ - for (j = 3; j < argc; j++) { + for (int j = 3; j < argc; j++) { len = strlen(argv[j]) + 1; /* +1 for terminating null byte */ - if (len + 1 > BUF_SIZE) { + if (len > BUF_SIZE) { fprintf(stderr, "Ignoring long message in argument %d\en", j); continue; @@ -518,13 +539,12 @@ main(int argc, char *argv[]) exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 .\" .BR getipnodebyaddr (3), .\" .BR getipnodebyname (3), \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getaddrinfo_a.3 b/manual/LDP_man-pages/draft/man3/getaddrinfo_a.3 index e0066745..6b80b0e9 100644 --- a/manual/LDP_man-pages/draft/man3/getaddrinfo_a.3 +++ b/manual/LDP_man-pages/draft/man3/getaddrinfo_a.3 @@ -1,5 +1,6 @@ .\" Copyright (c) 2009 Petr Baudis -.\" and clean-ups and additions (C) 2010 Michael Kerrisk +.\" and clean-ups and additions (C) Copyright 2010 Michael Kerrisk +.\" .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this @@ -31,30 +32,30 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH GETADDRINFO_A 3 2014\-05\-28 GNU "Linux Programmer's Manual" +.TH GETADDRINFO_A 3 2020\-11\-01 GNU "Linux Programmer's Manual" .SH 名前 getaddrinfo_a, gai_suspend, gai_error, gai_cancel \- 非同期のネットワークアドレスとサービスの変換 .SH 書式 .nf \fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ \fB#include \fP -.sp +.PP \fBint getaddrinfo_a(int \fP\fImode\fP\fB, struct gaicb *\fP\fIlist[]\fP\fB,\fP \fB int \fP\fInitems\fP\fB, struct sigevent *\fP\fIsevp\fP\fB);\fP -.sp +.PP \fBint gai_suspend(const struct gaicb * const \fP\fIlist[]\fP\fB, int \fP\fInitems\fP\fB,\fP \fB const struct timespec *\fP\fItimeout\fP\fB);\fP -.sp +.PP \fBint gai_error(struct gaicb *\fP\fIreq\fP\fB);\fP -.sp +.PP \fBint gai_cancel(struct gaicb *\fP\fIreq\fP\fB);\fP -.sp +.PP \fI\-lanl\fP でリンクする。 .fi .SH 説明 \fBgetaddrinfo_a\fP() 関数は \fBgetaddrinfo\fP(3) と同じ処理を実行するが、 複数の名前検索を非同期で実行でき、 検索処理の完了の通知ができる点が異なる。 - +.PP \fImode\fP 引き数は以下の値のいずれかを指定する。 .TP \fBGAI_WAIT\fP @@ -66,24 +67,24 @@ getaddrinfo_a, gai_suspend, gai_error, gai_cancel \- 非同期のネットワー 配列 \fIlist\fP は処理すべき検索要求を指定する。 \fInitems\fP 引き数は \fIlist\fP の要素数を指定する。 要求された検索命令は並列に開始される。 \fIlist\fP の NULL 要素は無視される。 各要求は以下のように定義された \fIgaicb\fP 構造体で規定される。 -.sp +.PP .in +4n -.nf +.EX struct gaicb { const char *ar_name; const char *ar_service; const struct addrinfo *ar_request; struct addrinfo *ar_result; }; -.fi +.EE .in - +.PP この構造体の要素は \fBgetaddrinfo\fP(3) の引き数に対応している。 したがって、 \fIar_name\fP はインターネットホストを示す \fInode\fP 引き数に、 \fIar_service\fP はサービスを示す \fIservice\fP 引き数に対応する。 \fIar_request\fP 要素は、 返されたソケットアドレス構造体を選択する基準を示す \fIhints\fP 引き数に対応する。 最後の \fIar_request\fP は \fIres\fP 引き数に対応する。 この要素を初期化する必要はなく、この要素は要求が解決されると自動的にセットされる。 最後の 2 つの要素が参照している \fIaddrinfo\fP 構造体については \fBgetaddrinfo\fP(3) に説明がある。 - +.PP \fImode\fP に \fBGAI_NOWAIT\fP が指定された場合、 解決した要求に関する通知を \fIsevp\fP 引き数が指す \fIsigevent\fP 構造体を使って受け取ることができる。 この構造体の定義と一般的な説明については \fBsigevent\fP(7) を参照。 \fIsevp\->sigev_notify\fP フィールドには以下の値を指定できる。 @@ -103,7 +104,7 @@ struct gaicb { .PP \fBSIGEV_SIGNAL\fP と \fBSIGEV_THREAD\fP では、 \fIsevp\->sigev_value.sival_ptr\fP が \fIlist\fP を指すようにしておくと役立つことがある。 - +.PP \fBgai_suspend\fP() 関数は呼び出し元のスレッドの実行を中断し、 配列 \fIlist\fP 内の一つ以上の要求が完了するのを待つ。 \fInitems\fP 引き数は配列 \fIlist\fP の大きさを指定する。 呼び出しは以下のいずれかの状況になるまで停止する。 .IP * 3 @@ -117,14 +118,17 @@ struct gaicb { .PP どの要求が完了したかは明示的な通知は行われない。 どの要求が完了したかを知るためには、 要求のリストに対して \fBgai_error\fP() を繰り返し呼び出す必要がある。 - +.PP \fBgai_error\fP() 関数は要求 \fIreq\fP のステータスを返す。 要求がまだ完了していない場合は \fBEAI_INPROGRESS\fP が、 要求が正常に処理された場合は 0 が、 要求を解決できなかった場合はエラーコードが返される。 - -\fBgai_cancel\fP() 関数は要求 \fIreq\fP をキャンセルする。 要求が正常にキャンセルされた場合、 要求のエラーステータスに -\fBEAI_CANCELLED\fP が設定され、 通常の非同期通知が実行される。 要求が現在処理中でキャンセルできない場合もある。 この場合 -\fBgai_cancel\fP() が呼ばれなかったかのように処理が行われる。 \fIreq\fP が NULL の場合、 -そのプロセスが行ったすべての処理中の要求をキャンセルしようとする。 +.PP +The \fBgai_cancel\fP() function cancels the request \fIreq\fP. If the request +has been canceled successfully, the error status of the request will be set +to \fBEAI_CANCELED\fP and normal asynchronous notification will be performed. +The request cannot be canceled if it is currently being processed; in that +case, it will be handled as if \fBgai_cancel\fP() has never been called. If +\fIreq\fP is NULL, an attempt is made to cancel all outstanding requests that +the process has made. .SH 返り値 \fBgetaddrinfo_a\fP() 関数はすべての要求が正常にキューに追加されると 0 を返す。 または、以下のいずれかの 0 でないエラーコードを返す。 @@ -151,44 +155,61 @@ struct gaicb { \fBEAI_INTR\fP シグナルが関数に割り込んだ。 この割り込みは検索要求が完了したことを示すシグナル通知により起こる場合もある。 .PP -\fBgai_error\fP() 関数は、 完了していない検索要求に対して \fBEAI_INPROGRESS\fP を返し、 成功で完了した検索に対して 0 -を返す。 \fBgetaddrinfo\fP(3) が返すエラーコードのいずれかを返す場合もある。 -要求の完了前に明示的に要求がキャンセルされた場合はエラーコード \fBEAI_CANCELLED\fP を返す。 - +The \fBgai_error\fP() function can return \fBEAI_INPROGRESS\fP for an unfinished +look\-up request, 0 for a successfully completed look\-up (as described +above), one of the error codes that could be returned by \fBgetaddrinfo\fP(3), +or the error code \fBEAI_CANCELED\fP if the request has been canceled +explicitly before it could be finished. +.PP \fBgai_cancel\fP() 関数はこれらの値のいずれかを返すことがある。 .TP -\fBEAI_CANCELLED\fP +\fBEAI_CANCELED\fP 要求は正常にキャンセルされた。 .TP -\fBEAI_NOTCANCELLED\fP +\fBEAI_NOTCANCELED\fP 要求はキャンセルされていない。 .TP \fBEAI_ALLDONE\fP 要求はすでに完了している。 .PP \fBgai_strerror\fP(3) 関数を使うと、 これらのエラーコードを、 エラーレポートに適した人間が読みやすい文字列に翻訳してくれる。 +.SH 属性 +この節で使用されている用語の説明は \fBattributes\fP(7) を参照のこと。 +.TS +allbox; +lbw31 lb lb +l l l. +Interface Attribute Value +T{ +\fBgetaddrinfo_a\fP(), +\fBgai_suspend\fP(), +\fBgai_error\fP(), +\fBgai_cancel\fP() +T} Thread safety MT\-Safe +.TE +.sp 1 .SH 準拠 これらの関数は GNU 拡張である。 バージョン 2.2.3 で初めて glibc に登場した。 .SH 注意 \fBgetaddrinfo_a\fP() インターフェースは \fBlio_listio\fP(3) インターフェースの後にモデル化された。 -.SH 例 +.SH EXAMPLES ここでは二つの例を示す。 一つは複数の要求を同期処理で並行して解決する例で、 もう一つは非同期機能を使った複雑な例である。 .SS 同期型の例 以下のプログラムは単に複数のホスト名の解決を並行で行う。 \fBgetaddrinfo\fP(3) を使って順番にホスト名の解決を行うのに比べて速度が向上する。 このプログラムは以下のように使う。 +.PP .in +4n -.nf - +.EX $ \fB./a.out ftp.us.kernel.org enoent.linuxfoundation.org gnu.cz\fP ftp.us.kernel.org: 128.30.2.36 enoent.linuxfoundation.org: Name or service not known gnu.cz: 87.236.197.13 -.fi +.EE .in .PP プログラムのソースコードは以下のとおりである。 -.nf - +.PP +.EX #define _GNU_SOURCE #include #include @@ -198,7 +219,7 @@ gnu.cz: 87.236.197.13 int main(int argc, char *argv[]) { - int i, ret; + int ret; struct gaicb *reqs[argc \- 1]; char host[NI_MAXHOST]; struct addrinfo *res; @@ -208,7 +229,7 @@ main(int argc, char *argv[]) exit(EXIT_FAILURE); } - for (i = 0; i < argc \- 1; i++) { + for (int i = 0; i < argc \- 1; i++) { reqs[i] = malloc(sizeof(*reqs[0])); if (reqs[i] == NULL) { perror("malloc"); @@ -225,7 +246,7 @@ main(int argc, char *argv[]) exit(EXIT_FAILURE); } - for (i = 0; i < argc \- 1; i++) { + for (int i = 0; i < argc \- 1; i++) { printf("%s: ", reqs[i]\->ar_name); ret = gai_error(reqs[i]); if (ret == 0) { @@ -247,14 +268,14 @@ main(int argc, char *argv[]) } exit(EXIT_SUCCESS); } -.fi +.EE .SS 非同期型の例 この例は \fBgetaddrinfo_a\fP() の簡単な対話式のフロントエンドである。 通知機能は使っていない。 .PP セッションの実行例は以下のようになる。 +.PP .in +4n -.nf - +.EX $ \fB./a.out\fP > a ftp.us.kernel.org enoent.linuxfoundation.org gnu.cz > c 2 @@ -269,12 +290,12 @@ $ \fB./a.out\fP [00] ftp.us.kernel.org: 216.165.129.139 [01] enoent.linuxfoundation.org: Name or service not known [02] gnu.cz: 87.236.197.13 -.fi +.EE .in .PP プログラムのソースは以下のとおりである。 - -.nf +.PP +.EX #define _GNU_SOURCE #include #include @@ -309,7 +330,7 @@ add_requests(void) while ((host = strtok(NULL, " "))) { nreqs++; - reqs = realloc(reqs, nreqs * sizeof(reqs[0])); + reqs = realloc(reqs, sizeof(reqs[0]) * nreqs); reqs[nreqs \- 1] = calloc(1, sizeof(*reqs[0])); reqs[nreqs \- 1]\->ar_name = strdup(host); @@ -331,7 +352,7 @@ static void wait_requests(void) { char *id; - int i, ret, n; + int ret, n; struct gaicb const **wait_reqs = calloc(nreqs, sizeof(*wait_reqs)); /* NULL elements are ignored by gai_suspend(). */ @@ -352,7 +373,7 @@ wait_requests(void) return; } - for (i = 0; i < nreqs; i++) { + for (int i = 0; i < nreqs; i++) { if (wait_reqs[i] == NULL) continue; @@ -390,11 +411,11 @@ cancel_requests(void) static void list_requests(void) { - int i, ret; + int ret; char host[NI_MAXHOST]; struct addrinfo *res; - for (i = 0; i < nreqs; i++) { + for (int i = 0; i < nreqs; i++) { printf("[%02d] %s: ", i, reqs[i]\->ar_name); ret = gai_error(reqs[i]); @@ -449,11 +470,10 @@ main(int argc, char *argv[]) } exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \fBgetaddrinfo\fP(3), \fBinet\fP(3), \fBlio_listio\fP(3), \fBhostname\fP(7), \fBip\fP(7), \fBsigevent\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getauxval.3 b/manual/LDP_man-pages/draft/man3/getauxval.3 deleted file mode 100644 index 2b693d05..00000000 --- a/manual/LDP_man-pages/draft/man3/getauxval.3 +++ /dev/null @@ -1,175 +0,0 @@ -.\" Copyright 2012 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 -.\" -.\" See also https://lwn.net/Articles/519085/ -.\" -.\" FIXME glibc 2.18 added AT_HWCAP2, which needs to e documented -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.TH GETAUXVAL 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -getauxval \- 補助ベクトルから値を取得する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBunsigned long getauxval(unsigned long \fP\fItype\fP\fB);\fP -.fi -.SH 説明 -\fBgetauxval\fP() 関数は補助ベクトル (auxiliary vector) から値を取得する。 補助ベクトルは、 -プログラムが実行される際に、 カーネルの ELF バイナリーローダーがユーザー空間にある種の情報を渡すのに使われる仕組みである。 - -補助ベクトルの各エントリーは、 このエントリーを示すタイプとそのタイプの値のペアで構成される。 引き数 \fItype\fP が指定されると、 -\fBgetauxval\fP() は対応する値を返す。 - -それぞれの \fItype\fP に対して返される値の詳細を以下に示す。 すべてのアーキテクチャーですべて \fItype\fP 値が存在するわけではない。 -.TP -\fBAT_BASE\fP -プログラムインタープリター (通常は動的ローダー) のベースアドレス。 -.TP -\fBAT_BASE_PLATFORM\fP -実プラットフォームを示す文字列。 \fBAT_PLATFORM\fP と異なる値の場合がある。 (PowerPC のみ) -.TP -\fBAT_CLKTCK\fP -\fBtimes\fP(2) のカウントが行われる周波数。 この値は \fIsysconf(_SC_CLK_TCK)\fP でも取得できる。 -.TP -\fBAT_DCACHEBSIZE\fP -データキャッシュのブロックサイズ。 -.TP -\fBAT_EGID\fP -このスレッドの実効グループ ID。 -.TP -\fBAT_ENTRY\fP -実行ファイルのエントリーアドレス。 -.TP -\fBAT_EUID\fP -このスレッドの実効ユーザー ID。 -.TP -\fBAT_EXECFD\fP -プログラムのファイルディスクリプター。 -.TP -\fBAT_EXECFN\fP -実行プログラムに使用されたパス名。 -.TP -\fBAT_FLAGS\fP -フラグ (未使用)。 -.TP -\fBAT_FPUCW\fP -使用された FPU 制御ワード (SuperH アーキテクチャーのみ)。 カーネルが実行した FPU 初期化に関する情報を提供するためのものである。 -.TP -\fBAT_GID\fP -このスレッドの実グループ ID。 -.TP -\fBAT_HWCAP\fP -プロセッサーの詳細な機能 (capabilities) を示す複数バイトからなるビットマスクへのポインターである。 -このビットマスクの内容はハードウェア依存である (例えば、 Intel x86 アーキテクチャーに関する詳細はカーネルのソースファイル -\fIarch/x86/include/asm/cpufeature.h\fP を参照)。 同じ情報を人が読みやすい形になっているのが -\fI/proc/cpuinfo\fP である。 -.TP -\fBAT_ICACHEBSIZE\fP -.\" .TP -.\" .BR AT_IGNORE -.\" .TP -.\" .BR AT_IGNOREPPC -.\" .TP -.\" .BR AT_NOTELF -命令キャッシュのブロックサイズ。 -.TP -\fBAT_PAGESZ\fP -システムページサイズ (\fIsysconf(_SC_PAGESIZE)\fP が返す値と同じ)。 -.TP -\fBAT_PHDR\fP -実行プログラムのプログラムヘッダーのアドレス。 -.TP -\fBAT_PHENT\fP -プログラムヘッダーエントリーのサイズ。 -.TP -\fBAT_PHNUM\fP -プログラムヘッダー数。 -.TP -\fBAT_PLATFORM\fP -このプログラムが実行されているハードウェアプラットフォームを特定する文字列へのポインター。 動的リンカーは \fIrpath\fP -値の解釈を行う際にこの値を使用する。 -.TP -\fBAT_RANDOM\fP -ランダム値が入った 16 バイトがあるアドレス。 -.TP -\fBAT_SECURE\fP -この実行ファイルを安全に扱う必要がある場合に 0 以外の値になる。 一番よくある場合としては、 0 以外の値になるのは、 そのプロセスが -set\-user\-ID か set\-group\-ID されたプログラムを実行している場合である。 他の場合としては、 Linux Security -Module が有効になっている場合にも 0 以外の値となる。 この値が 0 以外の場合、 動的リンカーは特定の環境変数の使用を無効化し -(\fBld\-linux.so\fP(8) 参照)、 glibc はそのプロセスの動作を別の観点で変更する (\fBsecure_getenv\fP(3) 参照)。 -.TP -\fBAT_SYSINFO\fP -vDSO のシステムコール関数へのエントリーポイント。すべてのアーキテクチャーで存在するわけではなく、 また必要というわけでもない (例えば -x86\-64 には存在しない)。 -.TP -\fBAT_SYSINFO_EHDR\fP -仮想動的共有オブジェクト (vDSO; virtual Dynamic Shared Object) が入ったページのアドレス。 vDSO は、 -特定のシステムコールの高速な実装を提供するためにカーネルが作成する共有オブジェクトである。 -.TP -\fBAT_UCACHEBSIZE\fP -ユニファイド (unified) キャッシュのブロックサイズ。 -.TP -\fBAT_UID\fP -このスレッドの実ユーザー ID。 -.SH 返り値 -成功すると、 \fBgetauxval\fP() は \fItype\fP に対応する値を返す。 \fItype\fP が見つからない場合には 0 を返す。 -.SH エラー -.TP -\fBENOENT\fP (glibc 2.19 以降) -.\" commit b9ab448f980e296eac21ac65f53783967cc6037b -\fItype\fP に対応するエントリーが補助ベクトルになかった。 -.SH バージョン -\fBgetauxval\fP() 関数は glibc バージョン 2.16 で追加された。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBgetauxval\fP() はスレッドセーフである。 -.SH 準拠 -この関数は非標準で glibc による拡張である。 -.SH 注意 -補助ベクトルの情報を主に使用するのは、 動的ローダー \fBld\-linux.so\fP(8) である。 補助ベクトルは、 -カーネルが動的リンカーが通常もしくは常に必要とするある意味標準的な情報を伝えるための便利で効率的なショートカットである。 いくつかの場合では、 -同じ情報がシステムコール経由でも取得できるが、 補助ベクトルを使う方がコストがかからない。 - -補助ベクトルには、 単に、 プロセスのアドレス空間の引き数リストと環境上に存在するだけである。 プログラム実行時に \fBLD_SHOW_AUXV\fP -環境変数を設定すると、 プログラムに渡された補助ベクトルを表示することができる。 - - $ LD_SHOW_AUXV=1 sleep 1 - -任意のプロセスの補助ベクトルは (ファイルのアクセス許可があれば) \fI/proc/PID/auxv\fP 経由で取得できる。 詳細は \fBproc\fP(5) -を参照。 -.SH バグ -glibc 2.19 で \fBENOENT\fP エラーが追加される前は、 \fItype\fP が見つからなかった場合と \fItype\fP に対応する値が 0 -だった場合を明確に区別する方法がなかった。 -.SH 関連項目 -\fBsecure_getenv\fP(3), \fBvdso\fP(7), \fBld\-linux.so\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getcontext.3 b/manual/LDP_man-pages/draft/man3/getcontext.3 deleted file mode 100644 index 1e6be7d6..00000000 --- a/manual/LDP_man-pages/draft/man3/getcontext.3 +++ /dev/null @@ -1,115 +0,0 @@ -.\" 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 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2013 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2013-03-25, Akihiro MOTOKI -.\" -.TH GETCONTEXT 3 2014\-04\-08 Linux "Linux Programmer's Manual" -.SH 名前 -getcontext, setcontext \- ユーザーコンテキストを取得/設定する -.SH 書式 -\fB#include \fP -.sp -\fBint getcontext(ucontext_t *\fP\fIucp\fP\fB);\fP -.br -\fBint setcontext(const ucontext_t *\fP\fIucp\fP\fB);\fP -.SH 説明 -System V 的な環境では、 \fImcontext_t\fP および \fIucontext_t\fP という 2 つの型と、 -\fBgetcontext\fP(), \fBsetcontext\fP(), \fBmakecontext\fP(3), \fBswapcontext\fP(3) という -4 つの関数が \fI\fP で定義されており、あるプロセス内部で制御下にある複数のスレッド間で、 -ユーザーレベルのコンテキスト切替えができるようになっている。 -.LP -\fImcontext_t\fP 型はマシン依存で、外部からは隠蔽されている。 \fIucontext_t\fP 型は構造体で、少なくとも以下の 4 -つのフィールドを持つ。 -.in +4 -.nf - -typedef struct ucontext { - struct ucontext *uc_link; - sigset_t uc_sigmask; - stack_t uc_stack; - mcontext_t uc_mcontext; - ... -} ucontext_t; - -.fi -.in -\fIsigset_t\fP と \fIstack_t\fP は \fI\fP で定義されている。 ここで \fIuc_link\fP は、 -現在のコンテキストが終了したとき、 続いて切り替わるコンテキストへのポインターである (現在のコンテキストが \fBmakecontext\fP(3) -で生成されたものの場合)。 \fIuc_sigmask\fP はこのコンテキストでブロックされている シグナル群である (\fBsigprocmask\fP(2) -を見よ)。 \fIuc_stack\fP はこのコンテキストが用いているスタックである (\fBsignalstack\fP(2) を見よ)。 -\fIuc_mcontext\fP は保存されているコンテキストの マシン特有の表現形式であり、 ここには呼び出したスレッドのマシンレジスターが格納される。 -.LP -\fBgetcontext\fP() 関数は、 ポインター \fIucp\fP が指す構造体を、 現在アクティブなコンテキストに初期化する。 -.LP -\fBsetcontext\fP() 関数は、ポインター \fIucp\fP が指すユーザーコンテキストをリストアする。 呼び出しに成功すると返らない。 -このコンテキストは、以前に \fBgetcontext\fP() または \fBmakecontext\fP(3) で得られたものか、 -あるいはシグナルの第三引数として与えられたものになる。 -.LP -コンテキストが \fBgetcontext\fP() の呼び出しによって得られていたものの場合は、 -プログラムはこの呼び出しから返った直後からのように実行を継続する。 -.LP -コンテキストが \fBmakecontext\fP(3) の呼び出しによって得られていたものの場合は、 プログラムの実行はその -\fBmakecontext\fP(3) 呼び出しの第二引数で指定された関数 \fIfunc\fP を呼び出すかたちで継続する。 \fIfunc\fP から返ると、 -\fBmakecontext\fP(3) 呼び出しの第一引数で指定されていた \fIucp\fP 構造体の \fIuc_link\fP メンバで継続する。 このメンバが -NULL だった場合は、そのスレッドは終了する。 -.LP -コンテキストがシグナルハンドラーの呼び出しによって得られていたものの場合は、 古い標準によれば -「プログラムの実行はシグナルによって割り込まれた命令の次の命令から継続される」。 しかしこの文は SUSv2 で削除されたので、 -現在の判断は「結果は定義されていない」である。 -.SH 返り値 -成功すると、 \fBgetcontext\fP() は 0 を返し、 \fBsetcontext\fP() は返らない。 失敗すると、両者とも \-1 -を返し、\fIerrno\fP をエラーに応じて設定する。 -.SH エラー -定義されていない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBgetcontext\fP() と \fBsetcontext\fP() はスレッドセーフである。 -.SH 準拠 -SUSv2, POSIX.1\-2001. POSIX.1\-2008 では、移植性の問題から \fBgetcontext\fP() の仕様が削除された。 -代わりに、アプリケーションを POSIX スレッドを使って書き直すことが 推奨されている。 -.SH 注意 -このメカニズムの最古の実装は、 \fBsetjmp\fP(3)/\fBlongjmp\fP(3) 機構であった。 -これらにはシグナルコンテキストの取り扱いが定義されていなかったので、 次の段階では \fBsigsetjmp\fP(3)/\fBsiglongjmp\fP(3) -のペアが現われた。 現在の機構ではずっと細かな制御ができる。 一方 \fBgetcontext\fP() から返ったとき、 これが最初の呼び出しであったか、 -それとも \fBsetcontext\fP() 呼び出しからのものであるかを 区別する容易な方法がなくなってしまった。 -ユーザーは「しおり」機構を自分で作らなければならない。 レジスター変数は (レジスターはリストアされてしまうので) これをやってくれない。 -.LP -シグナルが発生すると、 現在のユーザーコンテキストは保存され、 シグナルハンドラー用のコンテキストがカーネルによって生成される。 今後はハンドラーに -\fBlongjmp\fP(3) を使わせないこと: この関数のコンテキスト下での動作は定義されていない。 代わりに \fBsiglongjmp\fP(3) か -\fBsetcontext\fP() を使うこと。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getcwd.3 b/manual/LDP_man-pages/draft/man3/getcwd.3 deleted file mode 100644 index c6a7db52..00000000 --- a/manual/LDP_man-pages/draft/man3/getcwd.3 +++ /dev/null @@ -1,167 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" -.\" %%%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 21 22:35:42 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 18 Mar 1996 by Martin Schulze (joey@infodrom.north.de): -.\" Corrected description of getwd(). -.\" Modified Sat Aug 21 12:32:12 MET 1999 by aeb - applied fix by aj -.\" Modified Mon Dec 11 13:32:51 MET 2000 by aeb -.\" Modified Thu Apr 22 03:49:15 CEST 2002 by Roger Luethi -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 IMAMURA Nobutaka -.\" all rights reserved. -.\" Translated Fri Feb 14 12:40:22 JST 1997 -.\" by IMAMURA Nobutaka -.\" Modified Thu Dec 8 05:08:44 JST 1999 -.\" by Kentaro Shirakata -.\" Modified Sun Mar 12 21:08:44 JST 2000 -.\" by HANATAKA Shinya -.\" Updated 2001-01-29 by Kentaro Shirakata -.\" Updated 2002-03-23 by Kentaro Shirakata -.\" Updated 2002-10-17 by Kentaro Shirakata -.\" Updated 2007-01-01 by Kentaro Shirakata -.\" Updated 2008-08-21, Akihiro MOTOKI , LDP v3.07 -.\" -.TH GETCWD 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -getcwd, getwd, get_current_dir_name \- カレントワーキングディレクトリ名の取得 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *getcwd(char *\fP\fIbuf\fP\fB, size_t \fP\fIsize\fP\fB);\fP -.sp -\fBchar *getwd(char *\fP\fIbuf\fP\fB);\fP -.sp -\fBchar *get_current_dir_name(void);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.sp -.in -\fBget_current_dir_name\fP(): -.RS -_GNU_SOURCE -.RE -.sp -\fBgetwd\fP(): -.ad l -.RS 4 -.PD 0 -.TP 4 -glibc 2.12 以降: -.nf -_BSD_SOURCE || - (_XOPEN_SOURCE\ >=\ 500 || - _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) && - !(_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700) -.TP 4 -.fi -glibc 2.12 より前: _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.PD -.RE -.ad b -.SH 説明 -これらの関数は、呼び出したプロセスのカレントワーキングディレクトリの 絶対パス名 (absolute pathname) が入った文字列を返す。 -返される文字列はヌルで終端される。 パス名は関数の結果として返され、引数 \fIbuf\fP がある場合は \fIbuf\fP 経由でも返される。 - -\fBgetcwd\fP() 関数はカレントワーキングディレクトリの絶対パス名を \fIbuf\fP で示された \fIsize\fP 長の配列にコピーする。 -.PP -終端のヌルバイトも含めた、カレントワーキングディレクトリの 絶対パス名の長さが \fIsize\fP バイトを超えている場合は、返り値として NULL が返り -\fIerrno\fP に \fBERANGE\fP がセットされる。 アプリケーションはこのエラーをチェックし、 -必要に応じてより長いバッファーを用意すべきである。 -.PP -POSIX.1\-2001 標準の拡張として、 glibc では \fIbuf\fP が NULL の場合、 \fBgetcwd\fP() は必要なバッファーを -\fBmalloc\fP(3) を用いて動的に割り当てる。 この場合、 \fIsize\fP が 0 の場合を除き、バッファーの長さは \fIsize\fP となる。 -\fIsize\fP が 0 の場合には必要な大きさが確保される。 呼び出し側で、返されたバッファーを \fBfree\fP(3) すべきである。 - -\fBget_current_dir_name\fP() はカレントワーキングディレクトリの絶対パス名を収めるのに 十分な大きさの配列を -\fBmalloc\fP(3) で獲得する。環境変数 \fBPWD\fP が設定されておりその値が正しければ、その値が返される。 -呼び出し側で、返されたバッファーを \fBfree\fP(3) すべきである。 - -\fBgetwd\fP() は \fBmalloc\fP(3) によるメモリー獲得を一切行なわない。 \fIbuf\fP 引数は少なくとも \fBPATH_MAX\fP -バイトの長さを持つ配列へのポインターである必要がある。 終端のヌルバイトも含めた、カレントワーキングディレクトリの 絶対パス名の長さが -\fBPATH_MAX\fP バイトを超えている場合、 NULL が返され、 \fIerrno\fP に \fBENAMETOOLONG\fP が設定される。 -(システムによっては、 \fBPATH_MAX\fP は必ずしもコンパイル時に決まる定数ではない点に注意すること。 -また、ファイルシステムに依存する場合もある。 \fBpathconf\fP(3) を参照。) 移植性とセキュリティ上の理由から、 \fBgetwd\fP() -の利用は推奨されない。 -.SH 返り値 -成功すると、これらの関数はカレントワーキングディレクトリの絶対パス名 が入った文字列へのポインターを返す。 \fBgetcwd\fP() と -\fBgetwd\fP() の場合、返り値は \fIbuf\fP と同じ値になる。 - -失敗した場合、これらの関数は NULL を返し、 \fIerrno\fP にエラーを示す値を設定する。 \fIbuf\fP が指す配列の内容は未定義である。 -.SH エラー -.TP -\fBEACCES\fP -ファイル名の構成要素に対する読み込みあるいは検索の権限がない。 -.TP -\fBEFAULT\fP -\fIbuf\fP が不正なアドレスを指している。 -.TP -\fBEINVAL\fP -\fIsize\fP 引数が 0 かつ、 \fIbuf\fP 引数がヌルポインターでない。 -.TP -\fBEINVAL\fP -\fBgetwd\fP(): \fIbuf\fP が NULL である。 -.TP -\fBENAMETOOLONG\fP -\fBgetwd\fP(): 絶対パス名が入ったヌル終端された文字列の長さが \fBPATH_MAX\fP バイトを超えている。 -.TP -\fBENOENT\fP -カレントワーキングディレクトリが削除されている。 -.TP -\fBERANGE\fP -\fIsize\fP 引数の値がワーキングディレクトリの絶対パス名の長さより小さい。 長さには文字列の終端バイトも含まれる。 -より大きい配列を確保してもう一度実行する必要がある。 -.SH 準拠 -\fBgetcwd\fP() は POSIX.1\-2001 に準拠している。 POSIX.1\-2001 は、 \fIbuf\fP が NULL の場合の -\fBgetcwd\fP() の動作を規定しないままとしている。 - -\fBgetwd\fP() は POSIX.1\-2001 に存在しているが、「過去の名残(LEGACY)」とされている。 POSIX.1\-2008 では、 -\fBgetwd\fP() の仕様が削除されている。 代わりに \fBgetcwd\fP() を使うこと。 POSIX.1\-2001 は \fBgetwd\fP() -に関するエラーを定義していない。 - -\fBget_current_dir_name\fP() は GNU 拡張である。 -.SH 注意 -Linux では (2.1.92 以降)、 \fBgetcwd\fP() はシステムコールである。 古いシステムでは \fI/proc/self/cwd\fP -を参照する。 システムコールも proc ファイルシステムもない場合、 一般的な実装が呼び出される。 この場合においてのみ、(Linux では) -この関数は \fBEACCES\fP で失敗する可能性がある。 -.LP -これらの関数はしばしばカレントワーキングディレクトリの位置を保存し、 後で戻ってくるために利用される。 -未使用のファイルディスクリプターが十分ある場合は、 現在のディレクトリ (".") を開いて \fBfchdir\fP(2) -を呼び出すほうが普通は高速で信頼性がある。 特に Linux 以外のプラットフォームの場合はそうである。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getdate.3 b/manual/LDP_man-pages/draft/man3/getdate.3 deleted file mode 100644 index 2d779fbb..00000000 --- a/manual/LDP_man-pages/draft/man3/getdate.3 +++ /dev/null @@ -1,241 +0,0 @@ -.\" Copyright 2001 walter harms (walter.harms@informatik.uni-oldenburg.de) -.\" and Copyright 2008, Linux Foundation, written by 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, 2001-12-26, aeb -.\" 2008-09-07, mtk, Various rewrites; added an example program. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 NAKANO Takeo -.\" and Copyright (c) 2008, Akihiro MOTOKI all rights reserved. -.\" -.TH GETDATE 3 2014\-06\-13 "" "Linux Programmer's Manual" -.SH 名前 -getdate, getdate_r \- 日付と時刻の文字列を要素別の時刻に変換する -.SH 書式 -\fB#include \fP -.sp -\fBstruct tm *getdate(const char *\fP\fIstring\fP\fB);\fP -.sp -\fBextern int getdate_err;\fP -.sp -\fB#include \fP -.sp -\fBint getdate_r(const char *\fP\fIstring\fP\fB, struct tm *\fP\fIres\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBgetdate\fP(): -.ad l -.RS 4 -_XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.RE -.br -\fBgetdate_r\fP(): -.ad l -.RS 4 -_GNU_SOURCE -.RE -.ad -.SH 説明 -\fBgetdate\fP() 関数は、 \fIstring\fP が指すバッファーに格納された文字列表現の日付と時刻を、 要素別の時刻 (broken\-down -time) に変換する。 要素別の時刻は \fItm\fP 構造体に格納され、この構造体へのポインターが関数の結果として返される。 この \fItm\fP -構造体は静的なメモリー領域にあり、 \fBgetdate\fP() のそれ以降の呼び出しで上書きされるかもされない。 - -(\fIformat\fP 引き数でフォーマットを指定する) \fBstrptime\fP(3) とは違い、 \fBgetdate\fP() は環境変数 -\fBDATEMSK\fP で指定されたフルパス名のファイルに書いてあるフォーマットを用いる。 - -マッチの際には大文字小文字を区別しない。 パターン中でも変換される文字列中でも、余分な空白文字は無視される。 - -パターンに指定できる変換指定は、 \fBstrptime\fP(3) のものと同じである。 POSIX.1\-2001 -では一つの変換指定が追加で規定されている。 -.TP -\fB%Z\fP -タイムゾーンの名前。 glibc では実装されていない。 -.LP -\fB%Z\fP が指定された場合、要素別の時刻を格納する構造体は、 指定されたタイムゾーンにおける現在時刻に対応する値で初期化される。 -指定されていない場合、この構造体は現在のローカルタイムに対応する 要素別の時刻で初期化される (\fBlocaltime\fP(3) -を呼び出した場合と同じ)。 -.LP -曜日だけが指定された場合、 今日または今日以降で、 その曜日に合致する最初の日が採用される。 -.LP -(年なしで) 月だけが指定された場合、 今月または今月以降で、 その月に合致する最初の月が採用される。 -.LP -時・分・秒がいずれも指定されなかった場合、 現在の時・分・秒が採用される。 -.LP -日付の指定がなかったが、時間 (hour) だけ指定された場合は、 現在の時間またはそれ以降で、その指定に合致する最初の時間が採用される。 - -\fBgetdate_r\fP() は GNU 拡張で \fBgetdate\fP() のリエントラント版を提供している。 \fBgetdate_r\fP() -では、エラーを報告するのにグローバル変数を使用したり、 要素別の時刻を返すのに静的なバッファーを使用したりせず、 -エラーを関数の返り値経由で報告し、要素別の時刻を 引き数 \fIres\fP が指し示す呼び出し側で割り当てたバッファーに格納して返す。 -.SH 返り値 -成功すると、 \fBgetdate\fP() は \fIstruct tm\fP へのポインターを返す。 失敗すると NULL を返し、グローバル変数 -\fIgetdate_err\fP に以下に示すエラー番号のいずれか一つを設定する。 \fIerrno\fP の変更については規定されていない。 - -成功すると、 \fBgetdate_r\fP() は 0 を返す。 失敗すると、以下に示すエラー番号のいずれか一つを返す。 -.SH エラー -以下のエラーが、 (\fBgetdate\fP() では) \fIgetdate_err\fP 経由で返され、 (\fBgetdate_r\fP() では) -関数の返り値として返される。 -.TP 4n -\fB1\fP -環境変数 \fBDATEMASK\fP が未定義、またはその値が空文字列である。 -.TP -\fB2\fP -\fBDATEMSK\fP で指定されたテンプレートファイルを読み込み用にオープンできない。 -.TP -\fB3\fP -.\" stat() -ファイルのステータス情報が取得できない。 -.TP -\fB4\fP -テンプレートファイルが通常のファイルでない。 -.TP -\fB5\fP -テンプレートファイルの読み込み中にエラーが起こった。 -.TP -\fB6\fP -.\" Error 6 doesn't seem to occur in glibc -メモリーの割り当てに失敗した (メモリーが足りない)。 -.TP -\fB7\fP -入力にマッチしたファイルに、行が含まれていない。 -.TP -\fB8\fP -入力指定が正しくない。 -.SH 環境変数 -.TP -\fBDATEMSK\fP -書式パターンを含むファイル。 -.TP -\fBTZ\fP, \fBLC_TIME\fP -\fBstrptime\fP(3) が用いる変数。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBgetdate\fP() 関数はスレッドセーフではない。 -.LP -\fBgetdate_r\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -POSIX.1\-2001 仕様では、 \fBstrptime\fP(3) については \fB%E\fP や \fB%O\fP -といった修正子を用いた変換指定を規定しているが、 \fBgetdate\fP() についてはこのような修飾子の規定はない。 glibc では、 -\fBgetdate\fP() は \fBstrptime\fP(3) を用いて実装されており、 両者では全く同じ変換が両者でサポートされている。 -.SH 例 -以下のプログラムは、コマンドライン引き数のそれぞれについて \fBgetdate\fP() を呼び出し、それぞれについて返された \fItm\fP -構造体のフィールド値を表示する。 次のシェルセッションは、プログラムの動作例である。 - -.in +4n -.nf -$\fB TFILE=$PWD/tfile\fP -$\fB echo \(aq%A\(aq > $TFILE \fP # Full name of the day of the week -$\fB echo \(aq%T\(aq >> $TFILE\fP # ISO date (YYYY\-MM\-DD) -$\fB echo \(aq%F\(aq >> $TFILE\fP # Time (HH:MM:SS) -$\fB date\fP -$\fB export DATEMSK=$TFILE\fP -$\fB ./a.out Tuesday \(aq2009\-12\-28\(aq \(aq12:22:33\(aq\fP -Sun Sep 7 06:03:36 CEST 2008 -Call 1 ("Tuesday") succeeded: - tm_sec = 36 - tm_min = 3 - tm_hour = 6 - tm_mday = 9 - tm_mon = 8 - tm_year = 108 - tm_wday = 2 - tm_yday = 252 - tm_isdst = 1 -Call 2 ("2009\-12\-28") succeeded: - tm_sec = 36 - tm_min = 3 - tm_hour = 6 - tm_mday = 28 - tm_mon = 11 - tm_year = 109 - tm_wday = 1 - tm_yday = 361 - tm_isdst = 0 -Call 3 ("12:22:33") succeeded: - tm_sec = 33 - tm_min = 22 - tm_hour = 12 - tm_mday = 7 - tm_mon = 8 - tm_year = 108 - tm_wday = 0 - tm_yday = 250 - tm_isdst = 1 -.fi -.in -.SS プログラムのソース -\& -.nf -#define _GNU_SOURCE -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - struct tm *tmp; - int j; - - for (j = 1; j < argc; j++) { - tmp = getdate(argv[j]); - - if (tmp == NULL) { - printf("Call %d failed; getdate_err = %d\en", - j, getdate_err); - continue; - } - - printf("Call %d (\e"%s\e") succeeded:\en", j, argv[j]); - printf(" tm_sec = %d\en", tmp\->tm_sec); - printf(" tm_min = %d\en", tmp\->tm_min); - printf(" tm_hour = %d\en", tmp\->tm_hour); - printf(" tm_mday = %d\en", tmp\->tm_mday); - printf(" tm_mon = %d\en", tmp\->tm_mon); - printf(" tm_year = %d\en", tmp\->tm_year); - printf(" tm_wday = %d\en", tmp\->tm_wday); - printf(" tm_yday = %d\en", tmp\->tm_yday); - printf(" tm_isdst = %d\en", tmp\->tm_isdst); - } - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBtime\fP(2), \fBlocaltime\fP(3), \fBsetlocale\fP(3), \fBstrftime\fP(3), \fBstrptime\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getdirentries.3 b/manual/LDP_man-pages/draft/man3/getdirentries.3 deleted file mode 100644 index 782b7b57..00000000 --- a/manual/LDP_man-pages/draft/man3/getdirentries.3 +++ /dev/null @@ -1,69 +0,0 @@ -.\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu) -.\" Portions extracted from /usr/include/dirent.h are: -.\" Copyright 1991, 1992 Free Software Foundation -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated Thu Apr 30 1998 by NAKANO Takeo -.\" -.TH GETDIRENTRIES 3 2014\-06\-13 GNU "Linux Programmer's Manual" -.SH 名前 -getdirentries \- ディレクトリのエントリーをファイルシステムに依存しない形式で取得する -.SH 書式 -\fB#include \fP -.sp -\fBssize_t getdirentries(int \fP\fIfd\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fInbytes\fP \fB, -off_t *\fP\fIbasep\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBgetdirentries\fP(): _BSD_SOURCE || _SVID_SOURCE -.SH 説明 -\fIfd\fP で指定されたディレクトリからエントリーを読み、 \fIbuf\fP に格納する。最大で \fInbytes\fP が読み込まれる。読み込みはオフセット -\fI*basep\fP から開始され、読み込み終了時には \fI*basep\fP は新しい位置に更新される。 -.SH 返り値 -\fBgetdirentries\fP() は読み込んだバイト数を返すか、ディレクトリの最後にきた場合は 0 を返す。 エラーが起こったら \-1 を返し、 -\fIerrno\fP をエラーに対応する値にセットする。 -.SH エラー -詳細は Linux のライブラリソースコードを読んでほしい。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBgetdirentries\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001 にはない。 BSD に存在し、他にもいくつかのシステムにもある。 代わりに \fBopendir\fP(3) と -\fBreaddir\fP(3) を使用すること。 -.SH 関連項目 -\fBlseek\fP(2), \fBopen\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getdtablesize.3 b/manual/LDP_man-pages/draft/man3/getdtablesize.3 deleted file mode 100644 index e443ab53..00000000 --- a/manual/LDP_man-pages/draft/man3/getdtablesize.3 +++ /dev/null @@ -1,89 +0,0 @@ -.\" Copyright 1993 Rickard E. Faith (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 2002-04-15 by Roger Luethi and aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2013 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2013-03-25, Akihiro MOTOKI -.\" -.TH GETDTABLESIZE 3 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -getdtablesize \- ディスクリプターテーブルのサイズを取得する -.SH 書式 -\fB#include \fP -.sp -\fBint getdtablesize(void);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBgetdtablesize\fP(): -.ad l -.RS 4 -.PD 0 -.TP 4 -glibc 2.12 以降: -.nf -_BSD_SOURCE || - !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600) -.TP 4 -.fi -glibc 2.12 より前: _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.PD -.RE -.ad b -.SH 説明 -\fBgetdtablesize\fP() は 1 つのプロセスのオープンできるファイル数の最大値を返す。 -返り値はファイルディスクリプターの取り得る最大値より 1 大きい値である。 -.SH 返り値 -プロセス毎にオープンできるファイル数の現在の制限値。 -.SH エラー -Linux では、 \fBgetdtablesize\fP() は \fBgetrlimit\fP(2) で説明されているエラーを返すことがある。 -下記の「注意」を参照のこと。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBgetdtablesize\fP() 関数はスレッドセーフである。 -.SH 準拠 -SVr4, 4.4BSD (\fBgetdtablesize\fP() 関数は 4.2BSD で最初に現われた)。 これは POSIX.1\-2001 -で規定されていないので、 移植性のあるアプリケーションはこの呼び出しの代わりに \fIsysconf(_SC_OPEN_MAX)\fP を使うべきである。 -.SH 注意 -.\" The libc4 and libc5 versions return -.\" .B OPEN_MAX -.\" (set to 256 since Linux 0.98.4). -\fBgetdtablesize\fP() は libc のライブラリ関数として実装されている。glibc 版は \fBgetrlimit\fP(2) -を呼び出して、現在の \fBRLIMIT_NOFILE\fP を返す。 呼び出しに失敗した場合は \fBOPEN_MAX\fP を返す。 -.SH 関連項目 -\fBclose\fP(2), \fBdup\fP(2), \fBgetrlimit\fP(2), \fBopen\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getenv.3 b/manual/LDP_man-pages/draft/man3/getenv.3 deleted file mode 100644 index 33633dbd..00000000 --- a/manual/LDP_man-pages/draft/man3/getenv.3 +++ /dev/null @@ -1,109 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright (C) 2007, 2012 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's "POSIX Programmer's Guide" (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified Sat Jul 24 19:30:29 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Fri Feb 14 21:47:50 1997 by Andries Brouwer (aeb@cwi.nl) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Taro Morioka -.\" all rights reserved. -.\" Translated Tue 08 04 06:00:00 JST 1997 -.\" by Tarho Morioka (t-morioka@nri.co.jp) -.\" Modified 2003-09-27 by NAKANO Takeo -.\" Updated 2008-08-07, Akihiro MOTOKI , LDP v3.05 -.\" Updated 2013-05-07, Akihiro MOTOKI -.\" -.TH GETENV 3 2012\-08\-14 GNU "Linux Programmer's Manual" -.SH 名前 -getenv, secure_getenv \- 環境変数を得る -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *getenv(const char *\fP\fIname\fP\fB);\fP - -\fBchar *secure_getenv(const char *\fP\fIname\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBsecure_getenv\fP(): _GNU_SOURCE -.SH 説明 -関数 \fBgetenv\fP() は、環境リストから名前が \fIname\fP の環境変数を検索し、対応する \fIvalue\fP 文字列へのポインターを返す。 - -GNU 固有の \fBsecure_getenv\fP() 関数は \fBgetenv\fP() と同様だが、 "secure execution" -(「安全な実行」) が必要な場合には NULL を返す点が異なる。 "secure execution" が必要となるのは、 -呼び出し元プロセスにより実行されるプログラムがロードされる際に、 以下の条件のいずれか一つが成立する場合である。 -.IP * 3 -プロセスの実効ユーザー ID がプロセスの実ユーザー ID と一致しない場合、またはプロセスの実効グループ ID がプロセスの実グループ ID -と一致しない場合 (通常、この状況になるのは、 set\-user\-ID プログラムか set\-group\-ID プログラムを実行した場合である)。 -.IP * -実行ファイルで実効ケーパビリティビットがセットされている場合。 -.IP * -プロセスの許可ケーパビリティセットが空でない場合。 -.PP -Linux セキュリティモジュールにより要求された場合にも "secure execution" は必要となる。 - -\fBsecure_getenv\fP() 関数は、 set\-user\-ID プログラムや set\-group\-ID -プログラムが実行環境を偶然信用してしまった場合に起こり得る脆弱性を、 汎用ライブラリで回避するために使うことを意図して作られた。 -.SH 返り値 -関数 \fBgetenv\fP() は、環境における値 value へのポインターを返す。 \fIname\fP にマッチする環境変数が存在しないときには -NULL を返す。 -.SH バージョン -\fBsecure_getenv\fP() は glibc 2.17 で初めて登場した。 -.SH 準拠 -\fBgetenv\fP(): SVr4, POSIX.1\-2001, 4.3BSD, C89, C99. - -\fBsecure_getenv\fP() は GNU による拡張である。 -.SH 注意 -環境リストの文字列は \fIname=value\fP という形式をしている。 - -通常の実装では、 \fBgetenv\fP() は環境リスト内の文字列へのポインターを返す。 -呼び出し元はこの文字列を変更しないように注意しなければならない。 この文字列を変更すると、そのプロセスの環境を変化させることになるからである。 - -\fBgetenv\fP() の実装はリエントラント (再入可能) であることを要求されていない。 \fBgetenv\fP() -の返り値により参照される文字列は静的に割り当てられてもよく、 文字列の内容は後続の \fBgetenv\fP(), \fBputenv\fP(3), -\fBsetenv\fP(3), \fBunsetenv\fP(3) の呼び出しにより変更されることがある。 - -\fBsecure_getenv\fP() の "secure execution" モードは、 カーネルからユーザー空間に渡される補助ベクトル -(auxiliary vector) の \fBAT_SECURE\fP フラグにより制御される。 -.SH 関連項目 -\fBclearenv\fP(3), \fBgetauxval\fP(3), \fBputenv\fP(3), \fBsetenv\fP(3), \fBunsetenv\fP(3), -\fBcapabilities\fP(7), \fBenviron\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getfsent.3 b/manual/LDP_man-pages/draft/man3/getfsent.3 deleted file mode 100644 index 9d63ec98..00000000 --- a/manual/LDP_man-pages/draft/man3/getfsent.3 +++ /dev/null @@ -1,106 +0,0 @@ -.\" Copyright (C) 2002 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 -.\" -.\" Inspired by a page written by Walter Harms. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 NAKANO Takeo all rights reserved. -.\" Translated Wed 7 Aug 2002 by NAKANO Takeo -.\" -.TH GETFSENT 3 2002\-02\-28 Linux "Linux Programmer's Manual" -.SH 名前 -getfsent, getfsspec, getfsfile, setfsent, endfsent \- fstab エントリーの処理 -.SH 書式 -\fB#include \fP -.sp -\fBvoid endfsent(void);\fP -.sp -\fBstruct fstab *getfsent(void);\fP -.sp -\fBstruct fstab *getfsfile(const char *\fP\fImount_point\fP\fB);\fP -.sp -\fBstruct fstab *getfsspec(const char *\fP\fIspecial_file\fP\fB);\fP -.sp -\fBint setfsent(void);\fP -.SH 説明 -これらの関数は \fI/etc/fstab\fP ファイルから情報を読み込む。\fIfstab\fP 構造体は次のように定義されている。 -.LP -.in +4n -.nf -struct fstab { - char *fs_spec; /* block device name */ - char *fs_file; /* mount point */ - char *fs_vfstype; /* file\-system type */ - char *fs_mntops; /* mount options */ - const char *fs_type; /* rw/rq/ro/sw/xx option */ - int fs_freq; /* dump frequency, in days */ - int fs_passno; /* pass number on parallel dump */ -}; -.fi -.in -.PP -*BSD システムの場合、 \fIfs_type\fP フィールドには、5 つの文字列 "rw", "rq", "ro", "sw", "xx" -のいずれかが入る (それぞれ read\-write, quota 付き read\-write, read\-only, swap, ignore)。 - -関数 \fBsetfsent\fP() は呼び出されると fstab ファイルをオープンし、 最初の行に移動する。 -.LP -関数 \fBgetfsent\fP() は fstab ファイルから次の行をパースする (必要な場合はファイルをオープンする)。 -.LP -関数 \fBendfsent\fP() は呼び出されると fstab ファイルをクローズする。 -.LP -関数 \fBgetfsspec\fP() は fstab ファイルを先頭から検索し、 \fIfs_spec\fP フィールドが \fIspecial_file\fP -引数にマッチするエントリーが見つかったら、その最初のものを返す。 -.LP -関数 \fBgetfsfile\fP() は fstab ファイルを先頭から検索し、 \fIfs_file\fP フィールドが \fImount_point\fP -引数にマッチするエントリーが見つかったら、その最初のものを返す。 -.SH 返り値 -.\" .SH HISTORY -.\" The -.\" .BR getfsent () -.\" function appeared in 4.0BSD; the other four functions appeared in 4.3BSD. -成功すると、 \fBgetfsent\fP(), \fBgetfsfile\fP(), \fBgetfsspec\fP() の各関数は \fIfstab\fP -構造体へのポインターを返し、 \fBsetfsent\fP() 関数は 1 を返す。 失敗するとこれらの関数は NULL を返し、 end\-of\-file -になったら 0 を返す。 -.SH 準拠 -POSIX.1\-2001 にはこれらの関数は存在しない。 これらの関数をもつ OS はいくつかあり、 例えば *BSD, SunOS, Digital -UNIX, AIX 等である (AIX には \fBgetfstype\fP() もある)。 HP\-UX にも同名の関数群があるが、 HP\-UX のものは -\fIfstab\fP 構造体ではなく \fIchecklist\fP 構造体を用いる。 またこれらの関数の呼び出しは obsolete で、 -\fBgetmntent\fP(3) に取って代わられている。 -.SH 注意 -これらの関数はスレッドセーフではない。 -.LP -Linux ではブロックスペシャルデバイスを複数の場所にマウントでき、 また複数のデバイスが同じマウントポイントを共有できる -(この場合はそのマウントポイントに最後にマウントされたデバイスが意味を持つ) が、 \fBgetfsfile\fP() と \fBgetfsspec\fP() -はマッチした最初のエントリーしか返さないので、 これらの 2 つの関数は Linux での利用には適していない。 -.SH 関連項目 -\fBgetmntent\fP(3), \fBfstab\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getgrent.3 b/manual/LDP_man-pages/draft/man3/getgrent.3 deleted file mode 100644 index 195142b0..00000000 --- a/manual/LDP_man-pages/draft/man3/getgrent.3 +++ /dev/null @@ -1,154 +0,0 @@ -.\" 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 19:29:54 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated 1997-12-19, HIROFUMI Nishizuka -.\" Updated & Modified 2004-05-30, Yuichi SATO -.\" Updated & Modified 2005-09-06, Akihiro MOTOKI -.\" -.TH GETGRENT 3 2014\-10\-02 "" "Linux Programmer's Manual" -.SH 名前 -getgrent, setgrent, endgrent \- グループファイルエントリーの取得 -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -.sp -\fBstruct group *getgrent(void);\fP -.sp -\fBvoid setgrent(void);\fP -.sp -\fBvoid endgrent(void);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.PD 0 -.ad l -\fBsetgrent\fP(): -.RS 4 -_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || -.br -/* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L -.RE -.sp -\fBgetgrent\fP(), \fBendgrent\fP(): -.RS 4 -_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.RE -.PD -.ad b -.SH 説明 -\fBgetgrent\fP() 関数は、グループデータベースから取得したエントリーを 要素毎に分解し、各要素を格納した構造体へのポインターを返す -(グループデータベースの例: ローカルのグループファイル \fI/etc/group\fP, NIS, LDAP)。 \fBgetgrent\fP() -は、最初に呼び出された時は最初のエントリーを返し、 それ以降は呼び出される毎に次のエントリーを返す。 -.PP -\fBsetgrent\fP() 関数を使うと、もう一度読み込めるように、 グループデータベースの先頭に戻る。 -.PP -\fBendgrent\fP() 関数は、全ての処理が終わった後にグループ データベースをクローズする。 -.PP -\fIgroup\fP 構造体は \fI\fP で以下のように定義されている: -.sp -.in +4n -.nf -struct group { - char *gr_name; /* グループ名 */ - char *gr_passwd; /* グループのパスワード */ - gid_t gr_gid; /* グループ ID */ - char **gr_mem; /* グループのメンバ名へのポインター - の配列 (配列はヌルで終端する) */ -}; -.fi -.in -.PP -この構造体のフィールドの詳細は \fBgroup\fP(5) を参照のこと。 -.SH 返り値 -\fBgetgrent\fP() 関数は \fIgroup\fP 構造体へのポインターを返す。 これ以上エントリーが無いか、エラーが発生した場合は NULL -を返す。 -.LP -エラーが発生すると、 \fIerrno\fP が適切に設定される。 この関数の呼び出し後に \fIerrno\fP をチェックしたい場合は、呼び出し前に -\fIerrno\fP を 0 に設定しておかないといけない。 - -返り値は静的な領域を指しており、その後の \fBgetgrent\fP(), \fBgetgrgid\fP(3), \fBgetgrnam\fP(3) -の呼び出しで上書きされるかもしれない。 (返されたポインターを \fBfree\fP(3) に渡さないこと。) -.SH エラー -.TP -\fBEAGAIN\fP -サービスが一時的に利用できなかったこと。あとでもう一度試してほしい。 NSS バックエンドの場合、glibc -では、バックエンドとの通信中に一時的なエラーが発生したことを示す。 このエラーは直るかもしれないので、あとでもう一度試すよう提案している。 -.TP -\fBEINTR\fP -シグナルが捕捉された。 -.TP -\fBEIO\fP -I/O エラー。 -.TP -\fBEMFILE\fP -呼び出したプロセスが既にファイルをオープンし過ぎている。 -.TP -\fBENFILE\fP -システム上にオープンされたファイルが多過ぎる。 -.TP -.\" not in POSIX -\fBENOENT\fP -必要な入力ファイルが見つからなかった。 NSS バックエンドの場合、glibc では、このエラーはバックエンドが正しく設定されていないことを示す。 -.TP -\fBENOMEM\fP -.\" not in POSIX -\fIgroup\fP 構造体を割り当てるためのメモリーが不十分。 -.TP -\fBERANGE\fP -与えられたバッファー空間が不十分である。 -.SH ファイル -.TP -\fI/etc/group\fP -ローカルのグループデータベースファイル -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBgetgrent\fP() 関数はスレッドセーフではない。 -.LP -関数 \fBsetgrent\fP() と \fBendgrent\fP() はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001. -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getgrent_r.3 b/manual/LDP_man-pages/draft/man3/getgrent_r.3 deleted file mode 100644 index f1993c97..00000000 --- a/manual/LDP_man-pages/draft/man3/getgrent_r.3 +++ /dev/null @@ -1,164 +0,0 @@ -.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl) -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Thu Jul 29 02:26:07 JST 2004 -.\" by Yuichi SATO -.\" -.TH GETGRENT_R 3 2015\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -getgrent_r, fgetgrent_r \- グループファイルエントリーをリエントラント (reentrant) に取り出す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint getgrent_r(struct group *\fP\fIgbuf\fP\fB, char *\fP\fIbuf\fP\fB,\fP -.br -\fB size_t \fP\fIbuflen\fP\fB, struct group **\fP\fIgbufp\fP\fB);\fP -.sp -\fBint fgetgrent_r(FILE *\fP\fIstream\fP\fB, struct group *\fP\fIgbuf\fP\fB, char *\fP\fIbuf\fP\fB,\fP -.br -\fB size_t \fP\fIbuflen\fP\fB, struct group **\fP\fIgbufp\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.\" FIXME . The FTM requirements seem inconsistent here. File a glibc bug? -\fBgetgrent_r\fP(): _GNU_SOURCE -.br -\fBfgetgrent_r\fP(): _SVID_SOURCE -.SH 説明 -関数 \fBgetgrent_r\fP() と \fBfgetgrent_r\fP() は \fBgetgrent\fP(3) と \fBfgetgrent\fP(3) -のリエントラント版である。 前者は、 \fBsetgrent\fP(3) によって初期化されたストリームから、次のグループファイルのエントリーを読み込む。 -後者は、 \fIstream\fP から次のグループファイルのエントリーを読み込む。 -.PP -\fIgroup\fP 構造体は \fI\fP で以下のように定義されている: -.sp -.in +4n -.nf -struct group { - char *gr_name; /* グループ名 */ - char *gr_passwd; /* グループのパスワード */ - gid_t gr_gid; /* グループ ID */ - char **gr_mem; /* グループのメンバ名へのポインター - の配列 (配列はヌルで終端する) */ -}; -.fi -.in -.PP -この構造体のフィールドの詳細は \fBgroup\fP(5) を参照のこと。 -.PP -リエントラントでない関数は静的な格納領域へのポインターを返す。 この静的な格納領域には、更にグループ名・パスワード・ メンバへのポインターが含まれる。 -ここで説明されているリエントラントな関数は、 呼び出し側から提供されるバッファーにグループ名など全てを返す。 最初の引き数として \fIstruct -group\fP を保持できるバッファー \fIgbuf\fP がある。 次にその他の文字列を保持できるサイズ \fIbuflen\fP のバッファー \fIbuf\fP -がある。 これらの関数の結果 (ストリームから読み込まれた \fIstruct group\fP) は、 提供されたバッファー \fI*gbuf\fP -に格納され、この \fIstruct group\fP へのポインターは \fI*gbufp\fP に返される。 -.SH 返り値 -成功した場合、これらの関数は 0 を返し、 *\fIgbufp\fP は \fIstruct group\fP へのポインターとなる。 -エラーの場合、これらの関数はエラー値を返し、 *\fIgbufp\fP は NULL になる。 -.SH エラー -.TP -\fBENOENT\fP -次のエントリーがない。 -.TP -\fBERANGE\fP -十分なバッファー空間が与えられていない。 もっと大きなバッファーで再度実行すること。 -.SH 準拠 -これらの関数は GNU 拡張であり、POSIX 版の関数 \fBgetpwnam_r\fP(3) の形式に似せてある。 -他のシステムでは以下のプロトタイプが使われている。 -.sp -.nf -.in +4n -struct group *getgrent_r(struct group *grp, char *buf, - int buflen); -.in -.fi -.sp -より良いものでは、以下のようになっている。 -.sp -.nf -.in +4n -int getgrent_r(struct group *grp, char *buf, int buflen, - FILE **gr_fp); -.in -.fi -.SH 注意 -関数 \fBgetgrent_r\fP() は本当のリエントラントではない。 なぜなら、ストリームの読み込み位置を -他の全てのスレッドと共有しているためである。 -.SH 例 -.nf -#define _GNU_SOURCE -#include -#include -#include -#define BUFLEN 4096 - -int -main(void) -{ - struct group grp, *grpp; - char buf[BUFLEN]; - int i; - - setgrent(); - while (1) { - i = getgrent_r(&grp, buf, BUFLEN, &grpp); - if (i) - break; - printf("%s (%d):", grpp\->gr_name, grpp\->gr_gid); - for (i = 0; ; i++) { - if (grpp\->gr_mem[i] == NULL) - break; - printf(" %s", grpp\->gr_mem[i]); - } - printf("\en"); - } - endgrent(); - exit(EXIT_SUCCESS); -} -.fi -.\" perhaps add error checking - should use strerror_r -.\" #include -.\" #include -.\" if (i) { -.\" if (i == ENOENT) -.\" break; -.\" printf("getgrent_r: %s", strerror(i)); -.\" exit(EXIT_FAILURE); -.\" } -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getgrnam.3 b/manual/LDP_man-pages/draft/man3/getgrnam.3 deleted file mode 100644 index 621ebfbc..00000000 --- a/manual/LDP_man-pages/draft/man3/getgrnam.3 +++ /dev/null @@ -1,186 +0,0 @@ -.\" 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-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2003-11-15 by aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated 1997-12-19, HIROFUMI Nishizuka -.\" Updated & Modefied 1999-02-26, Shouichi Saito -.\" Updated & Modified 2004-06-05, Yuichi SATO -.\" Updated & Modified 2005-09-06, Akihiro MOTOKI -.\" Updated 2008-12-24, Akihiro MOTOKI, LDP v3.14 -.\" Updated 2012-05-01, Akihiro MOTOKI -.\" Updated 2013-07-17, Akihiro MOTOKI -.\" Updated 2013-08-16, Akihiro MOTOKI -.\" -.TH GETGRNAM 3 2014\-08\-19 "" "Linux Programmer's Manual" -.SH 名前 -getgrnam, getgrnam_r, getgrgid, getgrgid_r \- グループファイルエントリーの取り出し -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -.sp -\fBstruct group *getgrnam(const char *\fP\fIname\fP\fB);\fP -.sp -\fBstruct group *getgrgid(gid_t \fP\fIgid\fP\fB);\fP -.sp -\fBint getgrnam_r(const char *\fP\fIname\fP\fB, struct group *\fP\fIgrp\fP\fB,\fP -.br -\fB char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB, struct group **\fP\fIresult\fP\fB);\fP -.sp -\fBint getgrgid_r(gid_t \fP\fIgid\fP\fB, struct group *\fP\fIgrp\fP\fB,\fP -.br -\fB char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB, struct group **\fP\fIresult\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.ad l -.in -.sp -\fBgetgrnam_r\fP(), \fBgetgrgid_r\fP(): -.RS 4 -_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE -|| _POSIX_SOURCE -.RE -.ad b -.SH 説明 -\fBgetgrnam\fP() 関数は、グループ名 \fIname\fP にマッチするグループデータベースのエントリーを -要素毎に分解し、各要素を格納した構造体へのポインターを返す (パスワードデータベースの例: ローカルのグループファイル \fI/etc/group\fP, -NIS, LDAP)。 -.PP -\fBgetgrgid\fP() 関数は、グループ ID \fIuid\fP にマッチするグループデータベースのエントリーを -要素毎に分解し、各要素を格納した構造体へのポインターを返す。 -.PP -\fIgroup\fP 構造体は \fI\fP で以下のように定義されている: -.sp -.in +4n -.nf -struct group { - char *gr_name; /* グループ名 */ - char *gr_passwd; /* グループのパスワード */ - gid_t gr_gid; /* グループ ID */ - char **gr_mem; /* グループのメンバ名へのポインター - の配列 (配列はヌルで終端する) */ -}; -.fi -.in -.PP -この構造体のフィールドの詳細は \fBgroup\fP(5) を参照のこと。 -.PP -\fBgetgrnam_r\fP() と \fBgetgrgid_r\fP() 関数は、それぞれ \fBgetgrnam\fP() と -\fBgetgrgid\fP() と同じ情報を取得するが、取得した \fIgroup\fP 構造体を -\fIgrp\fP が指す領域に格納する。\fIgroup\fP 構造体のメンバーが指す文字列は、 -サイズ \fIbuflen\fP のバッファー \fIbuf\fP に格納される。成功した場合 -\fI*gbufp\fP には結果へのポインターが格納される。エントリーが見つからなかった -場合やエラーが発生した場合には \fI*result\fP には NULL が入る。 -.PP -呼び出し - - sysconf(_SC_GETGR_R_SIZE_MAX) - -は、 \fIerrno\fP を変更せずに \-1 を返すか、 \fIbuf\fP の初期サイズの推奨値を -返す。(このサイズが小さすぎる場合、呼び出しは \fBERANGE\fP で失敗し、この -場合には呼び出し側はバッファーを大きくしてから再度呼び出すことができる。) -.SH 返り値 -\fBgetgrnam\fP() と \fBgetgrgid\fP() 関数は、 \fIgroup\fP 構造体へのポインターを返す。 -マッチするエントリーが見つからなかった場合や、 エラーが発生した場合は NULL を返す。 エラーが起こった場合、 \fIerrno\fP -が適切に設定される。 呼び出しの後で \fIerrno\fP をチェックしたい場合は、 呼び出しの前に (この値を) 0 に設定しておくべきである。 -.LP -返り値は静的な領域を指しており、その後の \fBgetgrent\fP(3), \fBgetgrgid\fP(), \fBgetgrnam\fP() -の呼び出しで上書きされるかもしれない。 (返されたポインターを \fBfree\fP(3) に渡さないこと。) -.LP -成功すると、 \fBgetgrnam_r\fP() と \fBgetgrgid_r\fP() は 0 を返し、 \fI*result\fP に \fIgrp\fP -を設定する。 マッチするグループエントリーが見つからなかった場合には、 0 を返し、 \fI*result\fP に NULL を設定する。 -エラーの場合、エラー番号を返し、 \fI*result\fP に NULL を設定する。 -.SH エラー -.TP -\fB0\fP または \fBENOENT\fP または \fBESRCH\fP または \fBEBADF\fP または \fBEPERM\fP または ... -指定された \fIname\fP または \fIgid\fP が見つからなかった。 -.TP -\fBEINTR\fP -シグナルが捕捉された。 -.TP -\fBEIO\fP -I/O エラー。 -.TP -\fBEMFILE\fP -呼び出し元プロセスがオープンしているファイル数が すでに上限 (\fBOPEN_MAX\fP) であった。 -.TP -\fBENFILE\fP -システムでオープンされているファイル数がすでに上限であった。 -.TP -\fBENOMEM\fP -.\" not in POSIX -.\" to allocate the group structure, or to allocate buffers -\fIgroup\fP 構造体を割り当てるためのメモリーが不十分。 -.TP -\fBERANGE\fP -与えられたバッファー空間が不十分である。 -.SH ファイル -.TP -\fI/etc/group\fP -ローカルのグループデータベースファイル -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBgetgrnam\fP() と \fBgetgrgid\fP() はスレッドセーフではない。 -.LP -関数 \fBgetgrnam_r\fP() と \fBgetgrgid_r\fP() はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001. -.SH 注意 -.\" more precisely: -.\" AIX 5.1 - gives ESRCH -.\" OSF1 4.0g - gives EWOULDBLOCK -.\" libc, glibc up to version 2.6, Irix 6.5 - give ENOENT -.\" glibc since version 2.7 - give 0 -.\" FreeBSD 4.8, OpenBSD 3.2, NetBSD 1.6 - give EPERM -.\" SunOS 5.8 - gives EBADF -.\" Tru64 5.1b, HP-UX-11i, SunOS 5.7 - give 0 -上記の「返り値」以下の記述は POSIX.1\-2001 に拠る。 この標準は「(エントリーが) 見つからないこと」をエラーとしていないので、 -そのような場合に \fIerrno\fP がどのような値になるかを定めていない。 そのため、エラーを認識することは不可能である。 POSIX -に準拠して、エントリーが見つからない場合は \fIerrno\fP を変更しないようにすべきである、と主張する人もいるかもしれない。 様々な UNIX -系のシステムで試してみると、そのような場合には 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK, EPERM -といった様々な値が返される。 他の値が返されるかもしれない。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getgrouplist.3 b/manual/LDP_man-pages/draft/man3/getgrouplist.3 deleted file mode 100644 index 6d9e2cd5..00000000 --- a/manual/LDP_man-pages/draft/man3/getgrouplist.3 +++ /dev/null @@ -1,162 +0,0 @@ -.\" Copyright (C) 2008, Linux Foundation, written by Michael Kerrisk -.\" -.\" -.\" A few pieces remain from an earlier version written in -.\" 2002 by Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated 2004-08-07, Yuichi SATO -.\" Updated 2008-08-11, Akihiro MOTOKI , LDP v3.05 -.\" -.TH GETGROUPLIST 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -getgrouplist \- ユーザーが所属するグループのリストを取得する -.SH 書式 -\fB#include \fP -.sp -\fBint getgrouplist(const char *\fP\fIuser\fP\fB, gid_t \fP\fIgroup\fP\fB,\fP -.br -\fB gid_t *\fP\fIgroups\fP\fB, int *\fP\fIngroups\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBgetgrouplist\fP(): _BSD_SOURCE -.SH 説明 -\fBgetgrouplist\fP() 関数は、グループデータベース (\fBgroup\fP(5) 参照) を調べて、 \fIuser\fP -が所属するグループのリストを取得する。 見つかったグループのうち最大 \fI*ngroups\fP 個のグループが、配列 \fIgroups\fP -に格納されて返される。 - -引き数 \fIgroup\fP がグループデータベースに \fIuser\fP が所属するグループがなかった場合、 \fBgetgrouplist\fP() -が返すグループのリストに引き数 \fIgroup\fP も追加される。 通常は、この引き数にはユーザー \fIuser\fP -のパスワードレコードに書かれているグループ ID を指定する。 - -引き数 \fIngroups\fP は、値渡しと結果の両方に使用される引き数 (value\-result argument) であり、 リターン時には、常に -\fIgroup\fP も含めた \fIuser\fP が所属するグループ数が格納される。 この値は \fIgroups\fP -に格納されたグループ数より大きくなる可能性がある。 -.SH 返り値 -\fIuser\fP が所属しているグループ数が \fI*ngroups\fP 以下の場合、 \fI*ngroups\fP の値が返される。 - -指定されたユーザーが \fI*ngroups\fP より多くのグループに所属している場合、 \fBgetgrouplist\fP() は \-1 を返す。 -この場合、 \fI*ngroups\fP で返される値を使って、バッファーのサイズを変更してから、 \fBgetgrouplist\fP() -をもう一度呼び出すことができる。 -.SH バージョン -この関数は glibc 2.2.4 から存在する。 -.SH 準拠 -この関数は非標準である。ほとんどの BSD に存在する。 -.SH バグ -バージョン 2.3.3 より前の glibc では、 この関数の実装にはバッファーオーバーフローのバグがあり、 \fIuser\fP が所属するグループ数が -\fI*ngroups\fP より多い場合であっても、 \fIuser\fP が所属するグループの全リストを配列 \fIgroups\fP に格納してしまう。 -.SH 例 -.PP -以下のプログラムは、一つ目のコマンドライン引き数で指定された名前のユーザー が所属するグループのリストを表示する。 二番目のコマンドライン引き数には、 -\fBgetgrouplist\fP() に渡す \fIngroups\fP の値を指定する。 -以下のシェルのセッションはこのプログラムの使用例を示したものである。 -.in +4n -.nf - -$\fB ./a.out cecilia 0\fP -getgrouplist() returned \-1; ngroups = 3 -$\fB ./a.out cecilia 3\fP -ngroups = 3 -16 (dialout) -33 (video) -100 (users) -.fi -.in -.SS プログラムのソース -\& -.nf -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - int j, ngroups; - gid_t *groups; - struct passwd *pw; - struct group *gr; - - if (argc != 3) { - fprintf(stderr, "Usage: %s \en", argv[0]); - exit(EXIT_FAILURE); - } - - ngroups = atoi(argv[2]); - - groups = malloc(ngroups * sizeof (gid_t)); - if (groups == NULL) { - perror("malloc"); - exit(EXIT_FAILURE); - } - - /* Fetch passwd structure (contains first group ID for user) */ - - pw = getpwnam(argv[1]); - if (pw == NULL) { - perror("getpwnam"); - exit(EXIT_SUCCESS); - } - - /* Retrieve group list */ - - if (getgrouplist(argv[1], pw\->pw_gid, groups, &ngroups) == \-1) { - fprintf(stderr, "getgrouplist() returned \-1; ngroups = %d\en", - ngroups); - exit(EXIT_FAILURE); - } - - /* Display list of retrieved groups, along with group names */ - - fprintf(stderr, "ngroups = %d\en", ngroups); - for (j = 0; j < ngroups; j++) { - printf("%d", groups[j]); - gr = getgrgid(groups[j]); - if (gr != NULL) - printf(" (%s)", gr\->gr_name); - printf("\en"); - } - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBgetgroups\fP(2), \fBsetgroups\fP(2), \fBgetgrent\fP(3), \fBgroup_member\fP(3), -\fBgroup\fP(5), \fBpasswd\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/gethostbyname.3 b/manual/LDP_man-pages/draft/man3/gethostbyname.3 deleted file mode 100644 index 9b4f9d51..00000000 --- a/manual/LDP_man-pages/draft/man3/gethostbyname.3 +++ /dev/null @@ -1,291 +0,0 @@ -.\" 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-05-22, David Metcalfe -.\" Modified 1993-07-25, Rik Faith (faith@cs.unc.edu) -.\" Modified 1997-02-16, Andries Brouwer (aeb@cwi.nl) -.\" Modified 1998-12-21, Andries Brouwer (aeb@cwi.nl) -.\" Modified 2000-08-12, Andries Brouwer (aeb@cwi.nl) -.\" Modified 2001-05-19, Andries Brouwer (aeb@cwi.nl) -.\" Modified 2002-08-05, Michael Kerrisk -.\" Modified 2004-10-31, Andries Brouwer -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998-2000 NAKANO Takeo all rights reserved. -.\" Translated 1998-04-30, NAKANO Takeo -.\" Modified 1998-12-06, NAKANO Takeo -.\" Updated & Modified 1999-10-12, NAKANO Takeo -.\" Updated & Modified 2001-07-01, Yuichi SATO -.\" Updated & Modified 2002-01-03, Yuichi SATO -.\" Updated & Modified 2003-11-27, Yuichi SATO -.\" Updated & Modified 2005-01-10, Yuichi SATO -.\" Updated 2006-01-18, Akihiro MOTOKI -.\" Updated 2007-06-11, Akihiro MOTOKI, LDP v2.54 -.\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05 -.\" -.TH GETHOSTBYNAME 3 2014\-03\-11 "" "Linux Programmer's Manual" -.SH 名前 -gethostbyname, gethostbyaddr, sethostent, gethostent, endhostent, h_errno, -herror, hstrerror, gethostbyaddr_r, gethostbyname2, gethostbyname2_r, -gethostbyname_r, gethostent_r \- ネットワーク上のホストのエントリーを取得する -.SH 書式 -.nf -\fB#include \fP -\fBextern int h_errno;\fP -.sp -\fBstruct hostent *gethostbyname(const char *\fP\fIname\fP\fB);\fP -.sp -\fB#include \fP /* AF_INET を使う場合 */ -\fBstruct hostent *gethostbyaddr(const void *\fP\fIaddr\fP\fB,\fP -\fB socklen_t \fP\fIlen\fP\fB, int \fP\fItype\fP\fB);\fP -.sp -\fBvoid sethostent(int \fP\fIstayopen\fP\fB);\fP -.sp -\fBvoid endhostent(void);\fP -.sp -\fBvoid herror(const char *\fP\fIs\fP\fB);\fP -.sp -\fBconst char *hstrerror(int \fP\fIerr\fP\fB);\fP -.sp -/* System V/POSIX 拡張 */ -.br -\fBstruct hostent *gethostent(void);\fP -.sp -/* GNU 拡張 */ -.br -\fBstruct hostent *gethostbyname2(const char *\fP\fIname\fP\fB, int \fP\fIaf\fP\fB);\fP -.sp -\fBint gethostent_r(\fP -\fB struct hostent *\fP\fIret\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB,\fP -\fB struct hostent **\fP\fIresult\fP\fB, int *\fP\fIh_errnop\fP\fB);\fP -.sp -\fBint gethostbyaddr_r(const void *\fP\fIaddr\fP\fB, socklen_t \fP\fIlen\fP\fB, int \fP\fItype\fP\fB,\fP -\fB struct hostent *\fP\fIret\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB,\fP -\fB struct hostent **\fP\fIresult\fP\fB, int *\fP\fIh_errnop\fP\fB);\fP -.sp -\fBint gethostbyname_r(const char *\fP\fIname\fP\fB,\fP -\fB struct hostent *\fP\fIret\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB,\fP -\fB struct hostent **\fP\fIresult\fP\fB, int *\fP\fIh_errnop\fP\fB);\fP -.sp -\fBint gethostbyname2_r(const char *\fP\fIname\fP\fB, int \fP\fIaf,\fP -\fB struct hostent *\fP\fIret\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB,\fP -\fB struct hostent **\fP\fIresult\fP\fB, int *\fP\fIh_errnop\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.PD 0 -.ad l -\fBgethostbyname2\fP(), \fBgethostent_r\fP(), \fBgethostbyaddr_r\fP(), -\fBgethostbyname_r\fP(), \fBgethostbyname2_r\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE -.RE - -\fBherror\fP(), \fBhstrerror\fP(): -.RS 4 -.TP 4 -glibc 2.8 以降: -_BSD_SOURCE || _SVID_SOURCE -.TP -glibc 2.8 より前: -なし -.RE - -\fBh_errno\fP: -.RS 4 -.TP 4 -glibc 2.12 以降: -_BSD_SOURCE || _SVID_SOURCE || - (_POSIX_C_SOURCE < 200809L && _XOPEN_SOURCE < 700) -.TP -glibc 2.12 より前: -なし -.RE -.ad b -.PD -.SH 説明 -関数 \fBgethostbyname*\fP(), \fBgethostbyaddr*\fP(), \fBherror\fP(), \fBhstrerror\fP -は過去のものである。 アプリケーションは、代わりに \fBgetaddrinfo\fP(3), \fBgetnameinfo\fP(3), -\fBgai_strerror\fP(3) を使用すること。 - -\fBgethostbyname\fP() 関数は与えられたホスト名 \fIname\fP に対応する構造体 \fIhostent\fP を返す。 \fIname\fP -にはホスト名、ドット区切りの IPv4 アドレス (\fBinet_addr\fP(3) 参照)、コロン区切りの IPv6 アドレス -(おそらくドット区切りでも大丈夫) のいずれかを指定する (IPv6 アドレスの記述方法については RFC\ 1884 を参考にしてほしい)。 -\fIname\fP が IPv4 か IPv6 のアドレスだった場合、 名前解決 (lookup) は行われない。その場合には、 -\fBgethostbyname\fP() は \fIname\fP をそのまま \fIhostent\fP 構造体の \fIh_name\fP フィールドにコピーし、 -さらに \fIname\fP を \fIstruct in_addr\fP 形式で表したデータを \fIhostent\fP 構造体の \fIh_addr_list[0]\fP -フィールドに入れて、その \fIhostent\fP 構造体を返す。 \fIname\fP がドットで終了していて、かつ環境変数 \fBHOSTALIASES\fP -が設定されている場合、まず \fBHOSTALIASES\fP で指定されているエイリアスファイルから \fIname\fP のエントリーが検索される -(ファイルのフォーマットについては \fBhostname\fP(7) を参照のこと)。 \fIname\fP -がドットで終了していなければ、現在のドメインとその親ドメインが検索される。 -.PP -\fBgethostbyaddr\fP() 関数は与えられたホストアドレス \fIaddr\fP (長さ \fIlen\fP、 タイプ \fItype\fP) -に対応する構造体 \fIhostent\fP を返す。 用いることのできるタイプは \fBAF_INET\fP と \fBAF_INET6\fP である。 -ホストアドレス引き数はアドレスタイプに依存した 構造体へのポインターである。 例えば、アドレスタイプ \fBAF_INET\fP に対しては -(\fBinet_addr\fP(3) の呼び出しで得られる) \fIstruct in_addr *\fP である。 -.PP -\fBsethostent\fP() 関数は、ネームサーバへの接続形態を指定する。 \fIstayopen\fP が真 (1) -ならば、ネームサーバへの問い合わせには、 接続された TCP ソケットを用い、連続した問い合わせの間に接続を維持する。 -偽ならばネームサーバへの問い合わせに UDP データグラムを用いる。 -.PP -\fBendhostent\fP() 関数はネームサーバへの問い合わせに用いた TCP 接続の利用を終了する。 -.PP -(廃止予定の) \fBherror\fP() 関数は現在の \fIh_errno\fP に対応するエラーメッセージを標準エラー \fIstderr\fP に出力する。 -.PP -(廃止予定の) \fBhstrerror\fP() 関数はエラー番号 (通常は \fIh_errno\fP) を引き数に取り、 -対応するエラーメッセージ文字列を返す。 -.PP -.\" (See -.\" .BR resolv+ (8)). -\fBgethostbyname\fP() と \fBgethostbyaddr\fP() によって実行されるドメイン名の問い合わせでは、ネームサーバ -\fBnamed\fP(8)、 \fI/etc/hosts\fP のデータ行、および Network Information Service (NIS または -YP) が組み合わせて使用される。何が使用されるかは、 \fI/etc/host.conf\fP の \fIorder\fP 行の内容により決まる。 -デフォルトでは、まず \fBnamed\fP(8) に問い合わせを行い、次いで \fI/etc/hosts\fP を参照する。 -.PP -\fIhostent\fP 構造体は \fI\fP で以下のように定義されている: -.sp -.in +4n -.nf -.ne 7 -struct hostent { - char *h_name; /* official name of host */ - char **h_aliases; /* alias list */ - int h_addrtype; /* host address type */ - int h_length; /* length of address */ - char **h_addr_list; /* list of addresses */ -} -#define h_addr h_addr_list[0] /* 過去との互換性のため */ -.fi -.in -.PP -\fIhostent\fP 構造体のメンバは以下の通り。 -.TP -\fIh_name\fP -ホストの正式名 (official name)。 -.TP -\fIh_aliases\fP -ホストの別名の配列。配列はヌルポインターで終端される。 -.TP -\fIh_addrtype\fP -アドレスのタイプ。現在はすべて \fBAF_INET\fP または \fBAF_INET6\fP である。 -.TP -\fIh_length\fP -バイト単位で表したアドレスの長さ。 -.TP -\fIh_addr_list\fP -ホストのネットワークアドレスへのポインターの配列。 配列はヌルポインターで終端される。 ネットワークアドレスはネットワークバイトオーダ形式である。 -.TP -\fIh_addr\fP -\fIh_addr_list\fP の最初のアドレス。過去との互換性を保つためのものである。 -.SH 返り値 -\fBgethostbyname\fP() および \fBgethostbyaddr\fP() 関数は \fIhostent\fP -構造体を返す。エラーが起こったらヌルポインターを返す。エラーの際には \fIh_errno\fP 変数がエラーの番号を保持する。 返り値が NULL -でない場合、静的データをポインターで指していることもある。 以下の「注意」を参照すること。 -.SH エラー -\fIh_errno\fP 変数は以下の値を取りうる。 -.TP -\fBHOST_NOT_FOUND\fP -指定したホストが見つからない。 -.TP -\fBNO_ADDRESS または NO_DATA\fP -指定した名前は有効だが IP アドレスを持っていない。 -.TP -\fBNO_RECOVERY\fP -ネームサーバの復旧不能なエラーが起こった。 -.TP -\fBTRY_AGAIN\fP -authoritative なネームサーバで一時的なエラーが起こった。 時間をおいてもう一度試すこと。 -.SH ファイル -.TP -\fI/etc/host.conf\fP -名前解決の設定ファイル -.TP -\fI/etc/hosts\fP -ホストのデータベースファイル -.TP -\fI/etc/nsswitch.conf\fP -ネームサービス切替設定 -.SH 準拠 -POSIX.1\-2001 では、 \fBgethostbyname\fP(), \fBgethostbyaddr\fP(), \fBsethostent\fP(), -\fBendhostent\fP(), \fBgethostent\fP(), \fIh_errno\fP が規定されており、 \fBgethostbyaddr\fP() と -\fBgethostbyname\fP() は廃止予定であるとされている。 POSIX.1\-2008 では \fBgethostbyname\fP(), -\fBgethostbyaddr\fP(), \fIh_errno\fP の仕様が削除されている。 代わりに、 \fBgetaddrinfo\fP(3) と -\fBgetnameinfo\fP(3) の使用が推奨されている。 -.SH 注意 -\fBgethostbyname\fP() および \fBgethostbyaddr\fP() 関数は静的データへのポインターを返す。 -このポインターは、その後の呼び出しで上書きされるかもしれない。 \fIhostent\fP -構造体はポインターを含んでいるので、構造体のコピーだけでは不十分である; より深いコピーが必要である。 -.LP -オリジナルの BSD の実装では、 \fBgethostbyname\fP() の \fIlen\fP 引き数は \fIint\fP であった。 SUSv2 -標準はバグが多く、 \fBgethostbyaddr\fP() の \fIlen\fP パラメーターを \fIsize_t\fP 型として宣言している。 -(これは誤りで、 \fIsize_t\fP 型ではなく \fIint\fP 型でなければならない。 POSIX.1\-2001 ではこれを \fIsocklen_t\fP -としているが、これは OK。) \fBaccept\fP(2) も参照。 -.LP -\fBgethostbyaddr\fP() の BSD のプロトタイプは、最初の引き数として \fIconst char\ *\fP を使う。 -.SS "System V/POSIX 拡張" -.\" e.g., Linux, FreeBSD, UnixWare, HP-UX -.\" e.g., FreeBSD, AIX -POSIX では、 \fBgethostent\fP() が必須とされている。 この関数はホストデータベースの次のエントリーを返す。 DNS/BIND -を使う場合はあまり意味を持たないが、 ホストデータベースが 1 行ずつ読み込まれるファイルである場合は意味がある。 -多くのシステムでは、この名前のルーチンはファイル \fI/etc/hosts\fP を読み込む。 DNS -サポートなしでライブラリがビルドされた場合にのみ利用可能である。 glibc 版は ipv6 エントリーを無視する。 この関数はリエントラント -(reentrant) ではなく、 glibc にはリエントラント版の \fBgethostent_r\fP() が追加された。 -.SS "GNU 拡張" -glibc2 には \fBgethostbyname2\fP() もあり、 \fBgethostbyname\fP() と同じように動作するが、 -こちらはアドレスが属するアドレスファミリーを指定することができる。 -.LP -glibc2 にはリエントラントな \fBgethostent_r\fP(), \fBgethostbyaddr_r\fP(), -\fBgethostbyname_r\fP() と \fBgethostbyname2_r\fP() もある。 呼び出し側は、成功時に結果が格納される -\fIhostent\fP 構造体 \fIret\fP と、大きさ \fIbuflen\fP の一時的な作業バッファー \fIbuf\fP を提供する。 -コール終了後、成功した場合 \fIresult\fP は結果を指している。 エラーの場合、またはエントリーが見つからなかった場合、 \fIresult\fP は -NULL になる。 これらの関数は、成功した場合 0 を返し、失敗の場合は 0 以外のエラー番号を返す。 -これらの関数のリエントラントでないバージョンが返すエラーに加えて、 これらの関数は、 \fIbuf\fP が小さすぎた場合に \fBERANGE\fP -を返す。この場合はもっと大きなバッファーを用意して 関数呼び出しを再度行うべきである。 大域変数 \fIh_errno\fP -は変更されないが、エラー番号を格納する変数のアドレスが \fIh_errnop\fP に渡される。 -.SH バグ -.\" http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=482973 -\fBgethostbyname\fP() は、16進数表現のドット区切りの IPv4 アドレス文字列の要素を認識しない。 -.SH 関連項目 -.\" .BR getipnodebyaddr (3), -.\" .BR getipnodebyname (3), -.\" .BR resolv+ (8) -\fBgetaddrinfo\fP(3), \fBgetnameinfo\fP(3), \fBinet\fP(3), \fBinet_ntop\fP(3), -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/gethostid.3 b/manual/LDP_man-pages/draft/man3/gethostid.3 deleted file mode 100644 index 6bae9fe0..00000000 --- a/manual/LDP_man-pages/draft/man3/gethostid.3 +++ /dev/null @@ -1,103 +0,0 @@ -.\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu) -.\" -.\" Updated with additions from Mitchum DSouza -.\" Portions Copyright 1993 Mitchum DSouza -.\" -.\" %%%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 00:22:35 EDT 1996 by Eric S. Raymond -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 SUTO, Mitsuaki -.\" all rights reserved. -.\" Translated 1997-06-27, SUTO, Mitsuaki -.\" Modified 1999-05-21, HANATAKA Shinya -.\" -.TH GETHOSTID 3 2010\-09\-20 Linux "Linux Programmer's Manual" -.SH 名前 -gethostid, sethostid \- 現在のホストの固有の識別子を取得/設定する -.SH 書式 -\fB#include \fP -.sp -\fBlong gethostid(void);\fP -.br -\fBint sethostid(long \fP\fIhostid\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -.br -\fBgethostid\fP(): -.RS 4 -_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.RE -\fBsethostid\fP(): -.RS 4 -_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500) -.RE -.ad b -.SH 説明 -\fBgethostid\fP() と \fBsethostid\fP() は、それぞれ、現在使用しているホストに固有の 32 ビットの識別子の -取得/設定を行う。 この 32 ビットの識別子は、現在存在している全ての UNIX システム の中で唯一になるように決められる。通常は -\fBgethostbyname\fP(3) により返されるローカルマシンの Internet アドレスが代わりに使用され、 -普通は識別子をあえて設定する必要はない。 - -\fBsethostid\fP() はスーパーユーザーしか使用できない。 -.SH 返り値 -\fBgethostid\fP() は、 \fBsethostid\fP() によって設定された、現在使用しているホストの 32 ビットの識別子の値を返す。 - -成功すると、 \fBsethostid\fP() は 0 を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 -.SH エラー -\fBsethostid\fP() は以下のエラーで失敗する可能性がある。 -.TP -\fBEACCES\fP -呼び出し元がホスト ID を保存するのに使用されるファイルへの 書き込み許可を持っていなかった。 -.TP -\fBEPERM\fP -呼び出し元プロセスの実効 UID/GID が対応する実 UID/GID と同じではない。 -.SH 準拠 -4.2BSD。4.4BSD ではこれらの関数はなくなった。 SVr4 には \fBgethostid\fP() は含まれているが、 -\fBsethostid\fP() は含まれていない。 POSIX.1\-2001 では、 \fBgethostid\fP() は規定されているが、 -\fBsethostid\fP() は規定されていない。 -.SH 注意 -.\" libc5 used /etc/hostid; libc4 didn't have these functions -glibc の実装では、 \fIhostid\fP はファイル \fI/etc/hostid\fP に保存される (バージョン 2.2 より前の glibc では、 -\fI/var/adm/hostid\fP が使用されていた)。 - -glibc の実装では、ホスト ID を保存したファイルを オープンできなかった場合、 \fBgethostid\fP() は -\fBgethostname\fP(2) を使ってホスト名を入手し、そのホスト名を \fBgethostbyname_r\fP(3) に渡しホストの IPv4 -アドレスを取得して、 その IPv4 アドレスのビット入れ替えを行った値を返す。 -.SH バグ -識別子が世界中で一意であることを保証することはできない。 -.SH 関連項目 -\fBhostid\fP(1), \fBgethostbyname\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getifaddrs.3 b/manual/LDP_man-pages/draft/man3/getifaddrs.3 index 7fc62795..e78ebad0 100644 --- a/manual/LDP_man-pages/draft/man3/getifaddrs.3 +++ b/manual/LDP_man-pages/draft/man3/getifaddrs.3 @@ -43,25 +43,25 @@ .\" all rights reserved. .\" Translated 2013-07-31, Akihiro MOTOKI .\" -.TH GETIFADDRS 3 2014\-02\-26 GNU "Linux Programmer's Manual" +.TH GETIFADDRS 3 2020\-11\-01 GNU "Linux Programmer's Manual" .SH 名前 getifaddrs, freeifaddrs \- インターフェースのアドレスを取得する .SH 書式 .nf \fB#include \fP \fB#include \fP -.sp +.PP \fBint getifaddrs(struct ifaddrs **\fP\fIifap\fP\fB);\fP -.sp +.PP \fBvoid freeifaddrs(struct ifaddrs *\fP\fIifa\fP\fB);\fP .fi .SH 説明 \fBgetifaddrs\fP() 関数は、ローカルシステムのネットワークインターフェース情報を表す構造体の連結リストを作成し、 リストの先頭の要素のアドレスを \fI*ifap\fP に格納する。 リストは \fIifaddrs\fP 構造体で構成される。 \fIifaddrs\fP 構造体は以下のように定義されている。 -.sp +.PP .in +4n -.nf +.EX struct ifaddrs { struct ifaddrs *ifa_next; /* Next item in list */ char *ifa_name; /* Name of interface */ @@ -78,7 +78,7 @@ struct ifaddrs { #define ifa_dstaddr ifa_ifu.ifu_dstaddr void *ifa_data; /* Address\-specific data */ }; -.fi +.EE .in .PP \fIifa_next\fP フィールドにはリストの次の構造体へのポインターが格納される。 この要素がリストの最後の場合には NULL が入る。 @@ -116,16 +116,31 @@ struct ifaddrs { \fBgetifaddrs\fP() 関数は glibc 2.3 で初めて登場したが、 glibc 2.3.3 より前のバージョンの実装では IPv4 アドレスだけがサポートされていた。 IPv6 のサポートは glibc 2.3.3 で追加された。 IPv4 以外のアドレスファミリーが \fBgetifaddrs\fP で利用できるのは、 netlink をサポートするカーネルの場合だけである。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lbw27 lb lb +l l l. +Interface Attribute Value +T{ +\fBgetifaddrs\fP(), +\fBfreeifaddrs\fP() +T} Thread safety MT\-Safe +.TE +.sp 1 .SH 準拠 .\" , but the BSD-derived documentation generally .\" appears to be confused and obsolete on this point. .\" i.e., commonly it still says one of them will be NULL, even if .\" the ifa_ifu union is already present -POSIX.1\-2001 にはない。 この関数は BSDi で初めて登場し、 BSD 系のシステムに存在するが、 -ドキュメント上はかなり動作が異なり、アドレス毎ではなくインターフェース毎に 1 エントリーを返す。 このことは、 -インターフェースがアドレスを持たない場合には \fIifa_addr\fP や他のフィールドは実際に NULL になり、 インターフェースに IP -アドレスが割り当てられている場合には リンクレベルのアドレスは返されない、ということを意味する。 また、 \fIifa_broadaddr\fP と -\fIifa_dstaddr\fP のどちらを選択するかを決める方法は、 システムにより異なる。 +Not in POSIX.1. This function first appeared in BSDi and is present on the +BSD systems, but with slightly different semantics documented\(emreturning +one entry per interface, not per address. This means \fIifa_addr\fP and other +fields can actually be NULL if the interface has no address, and no +link\-level address is returned if the interface has an IP address assigned. +Also, the way of choosing either \fIifa_broadaddr\fP or \fIifa_dstaddr\fP differs +on various systems. .SH 注意 Linux では、 返されるアドレスは通常インターフェースに割り当てられた IPv4 アドレスと IPv6 アドレスになるが、 これ以外にインターフェース毎に一つ \fBAF_PACKET\fP アドレスも返される。 \fBAF_PACKET\fP アドレスには、 @@ -133,12 +148,12 @@ Linux では、 返されるアドレスは通常インターフェースに割 \fI\fP で定義される \fIstruct rtnl_link_stats\fP (Linux 2.4 以前では \fI\fP で定義される \fIstruct net_device_stats\fP) へのポインターが格納される。 この構造体には、インターフェースの様々な属性や統計情報が入る。 -.SH 例 +.SH EXAMPLES 以下のプログラムは \fBgetifaddrs\fP(), \fBfreeifaddrs\fP(), \fBgetnameinfo\fP(3) の使用例である。 以下はこのプログラムをあるシステムで実行した際の出力である。 +.PP .in +4n -.nf - +.EX $ \fB./a.out\fP lo AF_PACKET (17) tx_packets = 524; rx_packets = 524 @@ -157,11 +172,11 @@ lo AF_INET6 (10) address: <::1> wlp3s0 AF_INET6 (10) address: -.fi +.EE .in .SS プログラムのソース \& -.nf +.EX #define _GNU_SOURCE /* To get defns of NI_MAXSERV and NI_MAXHOST */ #include #include @@ -174,8 +189,8 @@ wlp3s0 AF_INET6 (10) int main(int argc, char *argv[]) { - struct ifaddrs *ifaddr, *ifa; - int family, s, n; + struct ifaddrs *ifaddr; + int family, s; char host[NI_MAXHOST]; if (getifaddrs(&ifaddr) == \-1) { @@ -186,7 +201,8 @@ int main(int argc, char *argv[]) /* Walk through linked list, maintaining head pointer so we can free list later */ - for (ifa = ifaddr, n = 0; ifa != NULL; ifa = ifa\->ifa_next, n++) { + for (struct ifaddrs *ifa = ifaddr; ifa != NULL; + ifa = ifa\->ifa_next) { if (ifa\->ifa_addr == NULL) continue; @@ -230,10 +246,9 @@ int main(int argc, char *argv[]) freeifaddrs(ifaddr); exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \fBbind\fP(2), \fBgetsockname\fP(2), \fBsocket\fP(2), \fBpacket\fP(7), \fBifconfig\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getipnodebyname.3 b/manual/LDP_man-pages/draft/man3/getipnodebyname.3 index 18dfb9a3..8ea747ed 100644 --- a/manual/LDP_man-pages/draft/man3/getipnodebyname.3 +++ b/manual/LDP_man-pages/draft/man3/getipnodebyname.3 @@ -33,7 +33,7 @@ .\" Translated Sun Jan 14 2001 by NAKANO Takeo .\" Updated Tue Nov 26 2002 by Kentaro Shirakata .\" -.TH GETIPNODEBYNAME 3 2010\-09\-04 Linux "Linux Programmer's Manual" +.TH GETIPNODEBYNAME 3 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 getipnodebyname, getipnodebyaddr, freehostent \- ネットワークホストの名前とアドレスの取得 .SH 書式 @@ -41,24 +41,24 @@ getipnodebyname, getipnodebyaddr, freehostent \- ネットワークホストの \fB#include \fP \fB#include \fP \fB#include \fP -.sp +.PP \fBstruct hostent *getipnodebyname(const char *\fP\fIname\fP\fB, int \fP\fIaf\fP\fB,\fP \fB int \fP\fIflags\fP\fB, int *\fP\fIerror_num\fP\fB);\fP -.sp +.PP \fBstruct hostent *getipnodebyaddr(const void *\fP\fIaddr\fP\fB, size_t \fP\fIlen\fP\fB,\fP \fB int \fP\fIaf\fP\fB, int *\fP\fIerror_num\fP\fB);\fP -.sp +.PP \fBvoid freehostent(struct hostent *\fP\fIip\fP\fB);\fP .fi .SH 説明 これらの関数は非推奨である (glibc では利用できない)。 代わりに \fBgetaddrinfo\fP(3) と \fBgetnameinfo\fP(3) を使うこと。 -.LP +.PP \fBgetipnodebyname\fP() と \fBgetipnodebyaddr\fP() は、ネットワークホストの名前とアドレスを返す。 これらの関数は、以下の構造体へのポインターを返す。 -.sp +.PP .in +4n -.nf +.EX struct hostent { char *h_name; char **h_aliases; @@ -66,8 +66,8 @@ struct hostent { int h_length; char **h_addr_list; }; +.EE .in -.fi .PP これらの関数は、 IPv4 ネットワークアドレスファミリーにしかアクセスできない \fBgethostbyname\fP(3) や \fBgethostbyaddr\fP(3) を置き換えるものである。 \fBgetipnodebyname\fP() 関数と @@ -159,6 +159,5 @@ RFC\ 2553. .SH 関連項目 \fBgetaddrinfo\fP(3), \fBgetnameinfo\fP(3), \fBinet_ntop\fP(3), \fBinet_pton\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getline.3 b/manual/LDP_man-pages/draft/man3/getline.3 deleted file mode 100644 index 55a203ef..00000000 --- a/manual/LDP_man-pages/draft/man3/getline.3 +++ /dev/null @@ -1,133 +0,0 @@ -.\" Copyright (c) 2001 John Levon -.\" Based in part on GNU libc documentation -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001 Yuichi SATO -.\" all rights reserved. -.\" Translated 2001-11-09, Yuichi SATO -.\" Updated 2006-07-20, Akihiro MOTOKI , LDP v2.34 -.\" Updated 2010-04-18, Akihiro MOTOKI, LDP v3.24 -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH GETLINE 3 2015\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -getline, getdelim \- 区切り文字までの文字列入力を読み込む -.SH 書式 -.nf -\fB#include \fP -.sp -\fBssize_t getline(char **\fP\fIlineptr\fP\fB, size_t *\fP\fIn\fP\fB, FILE *\fP\fIstream\fP\fB);\fP - -\fBssize_t getdelim(char **\fP\fIlineptr\fP\fB, size_t *\fP\fIn\fP\fB, int \fP\fIdelim\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBgetline\fP(), \fBgetdelim\fP(): -.PD 0 -.RS 4 -.TP 4 -glibc 2.10 以降: -_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700 -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.PD -.ad -.SH 説明 -\fBgetline\fP() は \fIstream\fP から 1 行全てを読み込み、テキストが含まれているバッファーのアドレスを \fI*lineptr\fP -に格納する。 バッファーはヌル文字 (\e0) で終端される。 改行文字が見つかった場合は、改行文字もバッファーに格納される。 - -\fI*lineptr\fP が NULL にセットされ、 \fI*n\fP が呼び出し前に 0 にセットされた場合、 \fBgetline\fP() -は行の内容を格納するためのバッファーを確保する。 このバッファーは、 \fBgetline\fP() -が失敗した場合であっても、ユーザーのプログラムで解放すべきである。 - -別の方法として、 \fBgetline\fP() を呼び出す際に、 \fI*lineptr\fP に \fBmalloc\fP(3) で確保した大きさ \fI*n\fP -バイトのバッファーへのポインターを入れて渡すこともできる。 読み込んだ行を保持するのに十分なバッファーがない場合、 \fBgetline\fP() は -\fBrealloc\fP(3) を使ってバッファーのサイズを変更し、必要に応じて \fI*lineptr\fP と \fI*n\fP を更新する。 - -どちらの場合でも、呼び出しに成功したときには、 \fI*lineptr\fP と \fI*n\fP -がバッファーのアドレスと割り当てたサイズを反映した値に更新される。 - -\fBgetdelim\fP() は \fBgetline\fP() と同じように動作するが、改行文字以外の区切り文字を引き数 \fIdelim\fP -に指定することができる。 \fBgetline\fP() と同様に、ファイル終端に達するまでに入力行に区切り文字が見付からない場合は、 -区切り文字をバッファーに追加しない。 -.SH 返り値 -成功した場合、 \fBgetline\fP() と \fBgetdelim\fP() は読み込んだ文字数を返す。 -文字数には区切り文字は含まれるが、終端に使うヌルバイト (\(aq\e0\(aq) は含まれない。 -この値によって、読み込んだ行に含まれるヌルバイトを操作することができる。 - -どちらの関数も、行の読み込みに失敗した場合には \-1 を返す (ファイルの終端に達した場合にも \-1 を返す)。 エラーが発生した場合には、 -\fIerrno\fP にエラーの原因を示す値が設定される。 -.SH エラー -.TP -\fBEINVAL\fP -引き数が不正である (\fIn\fP または \fIlineptr\fP が NULL である。 もしくは \fIstream\fP が有効でない)。 -.SH 準拠 -\fBgetline\fP() と \fBgetdelim\fP() は、どちらも元は GNU による拡張であったが、 POSIX.1\-2008 -で標準化された。 -.SH 例 -.nf -#define _GNU_SOURCE -#include -#include - -int -main(void) -{ - FILE *stream; - char *line = NULL; - size_t len = 0; - ssize_t read; - - stream = fopen("/etc/motd", "r"); - if (stream == NULL) - exit(EXIT_FAILURE); - - while ((read = getline(&line, &len, stream)) != \-1) { - printf("Retrieved line of length %zu :\en", read); - printf("%s", line); - } - - free(line); - fclose(stream); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBread\fP(2), \fBfgets\fP(3), \fBfopen\fP(3), \fBfread\fP(3), \fBscanf\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getloadavg.3 b/manual/LDP_man-pages/draft/man3/getloadavg.3 deleted file mode 100644 index fd23ac16..00000000 --- a/manual/LDP_man-pages/draft/man3/getloadavg.3 +++ /dev/null @@ -1,77 +0,0 @@ -.\" Copyright (c) 1989, 1991, 1993 -.\" The Regents of the University of California. All rights reserved. -.\" -.\" %%%LICENSE_START(BSD_3_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. 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 -.\" -.\" @(#)getloadavg.3 8.1 (Berkeley) 6/4/93 -.\" -.\" 2007-12-08, mtk, Converted from mdoc to man macros -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 NAKANO Takeo all rights reserved. -.\" Translated Sun 6 Jan 2002 by NAKANO Takeo -.\" -.TH GETLOADAVG 3 2014\-04\-01 Linux "Linux Programmer's Manual" -.SH 名前 -getloadavg \- get system load averages -.SH 書式 -.nf -\fB#define _BSD_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP -.sp -\fBint getloadavg(double \fP\fIloadavg[]\fP\fB, int \fP\fInelem\fP\fB);\fP -.fi -.SH 説明 -\fBgetloadavg\fP() 関数はシステムの実行キューに入っているプロセスの数を、 様々な期間について平均した値を返す。 \fInelem\fP -個までのサンプル値を取得し、 \fIloadavg\fP[] の連続する要素に代入する。 システムが提供するサンプル数は 3 個までで、 それぞれ最近 1, -5, 15 分の平均を表している。 -.SH 返り値 -.\" .SH HISTORY -.\" The -.\" BR getloadavg () -.\" function appeared in -.\" 4.3BSD Reno . -負荷平均が取得できないと \-1 を返す。 取得できた場合は、実際に取得したサンプル値の数を返す。 -.SH バージョン -この関数は glibc のバージョン 2.2 以降で利用可能である。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBgetloadavg\fP() はスレッドセーフである。 -.SH 準拠 -.\" mdoc seems to have a bug - there must be no newline here -POSIX.1\-2001 にはない。 BSD 系と Solaris に存在する。 -.SH 関連項目 -\fBuptime\fP(1), \fBproc\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getlogin.3 b/manual/LDP_man-pages/draft/man3/getlogin.3 deleted file mode 100644 index e15335dd..00000000 --- a/manual/LDP_man-pages/draft/man3/getlogin.3 +++ /dev/null @@ -1,151 +0,0 @@ -.\" Copyright 1995 James R. Van Zandt -.\" -.\" %%%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 Tue Sep 19 01:49:29 1995, aeb: moved from man2 to man3 -.\" added ref to /etc/utmp, added BUGS section, etc. -.\" modified 2003 Walter Harms, aeb - added getlogin_r, note on stdin use -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated 1998-03-01, NAKANO Takeo -.\" Updated & Modified 1999-08-21, NAKANO Takeo -.\" Updated & Modified 2005-03-18, Akihiro MOTOKI -.\" Updated 2013-03-25, Akihiro MOTOKI -.\" Updated 2013-07-24, Akihiro MOTOKI -.\" -.TH GETLOGIN 3 2013\-04\-19 GNU "Linux Programmer's Manual" -.SH 名前 -getlogin, getlogin_r, cuserid \- ユーザー名を取得する -.SH 書式 -\fB#include \fP -.sp -\fBchar *getlogin(void);\fP -.br -\fBint getlogin_r(char *\fP\fIbuf\fP\fB, size_t \fP\fIbufsize\fP\fB);\fP -.sp -\fB#include \fP -.sp -\fBchar *cuserid(char *\fP\fIstring\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBgetlogin_r\fP(): _REENTRANT || _POSIX_C_SOURCE\ >=\ 199506L -.br -\fBcuserid\fP(): _XOPEN_SOURCE -.SH 説明 -\fBgetlogin\fP() は、現在のプロセスの制御端末にログインしているユーザー名の文字列への -ポインターを返す。ユーザー名が決定できない場合はヌルポインターを返す。 文字列は静的領域に割り当てられており、この後でこの関数や -\fBcuserid\fP() が呼び出された際に上書きされることがある。 -.PP -\fBgetlogin_r\fP() は、上記の同じユーザー名を、大きさ \fIbufsize\fP の配列 \fIbuf\fP に入れて返す。 -.PP -\fBcuserid\fP() は、現在のプロセスの実効ユーザーID に対応するユーザー名の 文字列へのポインターを返す。 \fIstring\fP -がヌルポインター以外の場合、\fIstring\fP は少なくとも \fBL_cuserid\fP 文字を保持できる配列でなければならない。 \fIstring\fP が -ヌルポインターの場合には、静的領域に置かれた文字列への ポインターが返される。この文字列は静的領域に割り当てられており、後で この関数や -\fBgetlogin\fP() が呼び出された際に上書きされることがある。 -.PP -マクロ \fBL_cuserid\fP は integer の定数で、ユーザー名を保持するために 必要な配列の長さを示す。 \fBL_cuserid\fP は -\fBstdio.h\fP で宣言されて いる。 -.PP -これらの関数を使うと、プログラムを実行しているユーザー (\fBcuserid\fP()) や このセッションにログインしているユーザー -(\fBgetlogin\fP()) を明確に特定することができる (ただし set\-user\-ID プログラムでは、状況が違うこともある)。 -.PP -たいていの目的では、ユーザーの特定には環境変数 \fBLOGNAME\fP を調べ るほうが便利である。LOGNAME 変数はユーザーが自由に設定できるので -より柔軟な対応が可能になる。 -.SH 返り値 -\fBgetlogin\fP() は成功した場合はユーザー名へのポインターを返す。 失敗した場合は NULL を返し、 \fIerrno\fP -にエラーの原因を示す値を設定する。 \fBgetlogin_r\fP() は成功すると 0 を返し、失敗すると 0 以外を返す。 -.SH エラー -POSIX では以下のエラーが規定されている: -.TP -\fBEMFILE\fP -呼び出し元プロセスがオープンしているファイル数がすでにプロセスあたりの 上限に達している。 -.TP -\fBENFILE\fP -システム全体でオープンしているファイル数がすでに上限に達している。 -.TP -\fBENXIO\fP -呼び出し元プロセスには制御端末がない。 -.TP -\fBERANGE\fP -(getlogin_r) (終端のヌルバイト (\(aq\e0\(aq) も含めた) ユーザー名の長さが \fIbufsize\fP よりも長い。 -.LP -Linux/glibc には以下のエラーもある。 -.TP -\fBENOENT\fP -utmp ファイルに対応するエントリーがなかった。 -.TP -\fBENOMEM\fP -passwd 構造体を割り当てるのに十分なメモリーがない。 -.TP -\fBENOTTY\fP -標準入力が端末を参照していない (「バグ」の節を参照)。 -.SH ファイル -.TP -\fI/etc/passwd\fP -パスワードデータベースのファイル -.TP -\fI/var/run/utmp\fP -(伝統的には \fI/etc/utmp\fP が使われている; libc の中には \fI/var/adm/utmp\fP を使うものもある) -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBgetlogin\fP() 関数はスレッドセーフではない。 -.LP -\fBgetlogin_r\fP() 関数はスレッドセーフである。 -.LP -\fBcuserid\fP() 関数は、例外付きのスレッドセーフである。 パラメーター NULL で呼び出した場合はスレッドセーフではない。 -.SH 準拠 -\fBgetlogin\fP() と \fBgetlogin_r\fP() は POSIX.1\-2001 で規定されている。 - -System V にも \fBcuserid\fP() があるが、 これは実効ユーザー ID ではなく、実ユーザー ID を使用する。 -\fBcuserid\fP() 関数は 1988 年版の POSIX には含まれていたが、 1990 年版では削除された。 SUSv2 -に存在したが、POSIX.1\-2001 で削除された。 -.LP -OpenBSD には \fBgetlogin\fP() と \fBsetlogin\fP() があり、 セッションに対応したユーザー名がある。制御端末がない -セッションの場合であっても、対応するユーザー名がある。 -.SH バグ -残念ながら、 \fBgetlogin\fP() をだますのはそれほど難しいことではない。別のプログラムが utmp ファイルを -壊してしまうと、全く動作しないこともある。またログイン名の最初の 8 文字 -しか返さないことも多い。また、プログラムの制御端末に現在ログインしているユーザーは、プログラムを実行したユーザーでない場合もある。 -セキュリティの絡む用途には \fBgetlogin\fP() を用いるべきではない。 -.LP -glibc は POSIX 仕様には従っておらず、 \fI/dev/tty\fP ではなく \fI標準入力 (stdin)\fP を使う。これはバグである。 -(SunOS 5.8 や HP\-UX 11.11 や FreeBSD 4.8 といった他の最近のシステムはいずれも、 \fI標準入力\fP -がリダイレクトされた場合でもログイン名を返す。) -.LP -\fBcuserid\fP() が何を行っているのか、実際のところを知っている者は誰もいない; 移植性が求められるプログラムでは \fBcuserid\fP() -は使うべきではない。 というかどんなプログラムでも使うべきではない: 代わりに \fIgetpwuid(geteuid())\fP を用いるべきである -(これが意図していることならば、だが)。 \fBcuserid\fP() は「使わない」こと。 -.SH 関連項目 -\fBgeteuid\fP(2), \fBgetuid\fP(2), \fButmp\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getmntent.3 b/manual/LDP_man-pages/draft/man3/getmntent.3 deleted file mode 100644 index 8cd6a226..00000000 --- a/manual/LDP_man-pages/draft/man3/getmntent.3 +++ /dev/null @@ -1,143 +0,0 @@ -.\" 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 21:46:57 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 961109, 031115, aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated 1998-03-01, NAKANO Takeo -.\" Updated 2000-09-03, Kentaro Shirakata -.\" Updated 2005-03-18, Akihiro MOTOKI -.\" -.TH GETMNTENT 3 2015\-01\-22 "" "Linux Programmer's Manual" -.SH 名前 -getmntent, setmntent, addmntent, endmntent, hasmntopt, getmntent_r \- -ファイルシステム記述ファイルのエントリーを取得する -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -.sp -\fBFILE *setmntent(const char *\fP\fIfilename\fP\fB, const char *\fP\fItype\fP\fB);\fP -.sp -\fBstruct mntent *getmntent(FILE *\fP\fIstream\fP\fB);\fP -.sp -\fBint addmntent(FILE *\fP\fIstream\fP\fB, const struct mntent *\fP\fImnt\fP\fB);\fP -.sp -\fBint endmntent(FILE *\fP\fIstreamp\fP\fB);\fP -.sp -\fBchar *hasmntopt(const struct mntent *\fP\fImnt\fP\fB, const char *\fP\fIopt\fP\fB);\fP -.sp -/* GNU による拡張 */ -\fB#include \fP -.sp -\fBstruct mntent *getmntent_r(FILE *\fP\fIstreamp\fP\fB, struct mntent *\fP\fImntbuf\fP\fB,\fP -\fB char *\fP\fIbuf\fP\fB, int \fP\fIbuflen\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBgetmntent_r\fP(): _BSD_SOURCE || _SVID_SOURCE -.SH 説明 -これらのルーチンは、ファイルシステムを記述したファイル \fI/etc/fstab\fP と、マウントされているファイルシステムを記述したファイル -\fI/etc/mtab\fP にアクセスするために用いられる。 -.PP -\fBsetmntent\fP() 関数は、ファイルシステムの記述ファイル \fIfilename\fP をオープンして、 -そのファイルポインターを返す。このファイルポインターは \fBgetmntent\fP() によって用いられる。引き数 \fItype\fP -は要求するアクセス形式で、 \fBfopen\fP(3) の \fImode\fP 引き数と同じ値を取ることができる。 -.PP -\fBgetmntent\fP() 関数は \fIstream\fP からファイルシステムの記述ファイルの次の行を読み込み、 -読み込んだ行をフィールドに分割した内容を収めた構造体へのポインターを返す。 ポインターはメモリーの静的な領域を指しており、この領域は -\fBgetmntent\fP() を次に呼び出したときに上書きされてしまう。 -.PP -\fBaddmntent\fP() 関数は \fImntent\fP 構造体 \fImnt\fP の内容を、オープンされている \fIstream\fP の最後に追加する。 -.PP -\fBendmntent\fP() 関数はファイルシステムの記述ファイルに関連付けられている \fIstream\fP を閉じる。 -.PP -\fBhasmntopt\fP() 関数は \fImntent\fP 構造体 \fImnt\fP の \fImnt_opts\fP フィールド (下記 参照) をスキャンし、 -\fIopt\fP に一致する部分文字列があるかを調べる。 有効なマウントオプションについては \fI\fP と -\fBmount\fP(8) を参照のこと。 -.PP -リエントラントな関数 \fBgetmntent_r\fP() は \fBgetmntent\fP() と同じだが、 ユーザーが用意した \fI*mntbuf\fP に -\fIstruct mount\fP を格納し、その構造体の各エントリーが指し示す文字列を ユーザーが用意した大きさ \fIbuflen\fP の配列 \fIbuf\fP -に書き込む。 -.PP -\fImntent\fP 構造体は \fI\fP で以下のように定義されている。 -.sp -.in +4n -.nf -struct mntent { - char *mnt_fsname; /* name of mounted file system */ - char *mnt_dir; /* file system path prefix */ - char *mnt_type; /* mount type (see mntent.h) */ - char *mnt_opts; /* mount options (see mntent.h) */ - int mnt_freq; /* dump frequency in days */ - int mnt_passno; /* pass number on parallel fsck */ -}; -.fi -.in - -mtab や fstab ファイルでは、各フィールドは空白で区切られているので、 スペース、タブ、改行、バックスラッシュの 4文字をこれらのファイルで -使いたい場合で、かつ \fImntent\fP 構造体の 4つの文字列メンバーのいずれかに対応するフィールド内で -使いたい場合には、8進のエスケープ表記を使って表現する: スペース (\e040), タブ (\e011), 改行 (\e012), バックスラッシュ -(\e134)。 \fBaddmntent\fP() と \fBgetmntent\fP() は、文字列表現から エスケープ表現への変換、およびその逆を行う。 -.SH 返り値 -\fBgetmntent\fP() と \fBgetmntent_r\fP() は \fImntent\fP 構造体へのポインターを返す。 失敗した場合は NULL -を返す。 -.PP -\fBaddmntent\fP() 関数は成功したら 0 を返し、失敗したら 1 を返す。 -.PP -\fBendmntent\fP() 関数はつねに 1 を返す。 -.PP -\fBhasmntopt\fP() 関数は、マッチした場合は部分文字列へのアドレスを返し、 マッチしなければ NULL を返す。 -.SH ファイル -.nf -/etc/fstab ファイルシステム記述ファイル -/etc/mtab マウントされたファイルシステムの記述ファイル -.fi -.SH 準拠 -リエントラントでない関数は SunOS 4.1.3 由来のものである。 \fBgetmntent_r\fP() 関数は HPUX 10 -で導入されたが、このバージョンでは int を返す。 上記に示したプロトタイプは glibc 独自のものである。 -.SH 注意 -System V にも \fBgetmntent\fP() 関数はあるが、 呼び出し手順が異なり、返される構造体も異なる。 System V では -\fI/etc/mnttab\fP が用いられる。 4.4BSD と Digital UNIX には \fBgetmntinfo\fP() があるが、 -システムコール \fBgetfsstat\fP() のラッパー関数である。 -.SH 関連項目 -\fBfopen\fP(3), \fBfstab\fP(5), \fBmount\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getnameinfo.3 b/manual/LDP_man-pages/draft/man3/getnameinfo.3 index 87c3a039..13f3d795 100644 --- a/manual/LDP_man-pages/draft/man3/getnameinfo.3 +++ b/manual/LDP_man-pages/draft/man3/getnameinfo.3 @@ -18,50 +18,54 @@ .\" Updated 2008-08-11, Akihiro MOTOKI, LDP v3.05 .\" Updated 2010-04-10, Akihiro MOTOKI, LDP v3.24 .\" -.TH GETNAMEINFO 3 2014\-05\-28 GNU "Linux Programmer's Manual" +.TH GETNAMEINFO 3 2020\-06\-09 GNU "Linux Programmer's Manual" .SH 名前 getnameinfo \- アドレスから名前への変換をプロトコルに依存しないかたちで行う .SH 書式 .nf \fB#include \fP \fB#include \fP -.sp -\fBint getnameinfo(const struct sockaddr *\fP\fIsa\fP\fB, socklen_t \fP\fIsalen\fP\fB,\fP +.PP +\fBint getnameinfo(const struct sockaddr *\fP\fIaddr\fP\fB, socklen_t \fP\fIaddrlen\fP\fB,\fP \fB char *\fP\fIhost\fP\fB, socklen_t \fP\fIhostlen\fP\fB,\fP \fB char *\fP\fIserv\fP\fB, socklen_t \fP\fIservlen\fP\fB, int \fP\fIflags\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): .ad l -.in -.sp -\fBgetnameinfo\fP(): _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || -_POSIX_SOURCE +.RE +.PP +\fBgetnameinfo\fP(): + Since glibc 2.22: _POSIX_C_SOURCE >= 200112L + Glibc 2.21 and earlier: _POSIX_C_SOURCE .ad b .SH 説明 \fBgetnameinfo\fP() 関数は、 \fBgetaddrinfo\fP(3) の逆の動作を行う。つまり、プロトコルに依存しないかたちで ソケットアドレスから対応するホスト名とサービスへの変換を行う。 この関数は \fBgethostbyaddr\fP(3) と \fBgetservbyport\fP(3) の機能を一つにしたものだが、 これらの関数と違い、 \fBgetnameinfo\fP(3) はリエントラントであり、IPv4 と IPv6 の差分に依存しないかたちで プログラムを書くことができる。 - -\fIsa\fP 引き数は、 IP アドレスとポート番号の情報を保持している 汎用的なソケットアドレス構造体 (\fIsockaddr_in\fP 型または -\fIsockaddr_in6\fP 型) へのポインターである。 \fIsalen\fP は \fIsa\fP のサイズである。 \fIhost\fP と \fIserv\fP -引き数は、(それぞれサイズが \fIhostlen\fP と \fIservlen\fP の) 呼び出し側で確保されたバッファーへのポインターであり、 -ホスト名とサービス名を含むヌル終端された文字列が それぞれのバッファーに格納される。 - +.PP +The \fIaddr\fP argument is a pointer to a generic socket address structure (of +type \fIsockaddr_in\fP or \fIsockaddr_in6\fP) of size \fIaddrlen\fP that holds the +input IP address and port number. The arguments \fIhost\fP and \fIserv\fP are +pointers to caller\-allocated buffers (of size \fIhostlen\fP and \fIservlen\fP +respectively) into which \fBgetnameinfo\fP() places null\-terminated strings +containing the host and service names respectively. +.PP ホスト名が不要であることをこの関数に伝えるには、 \fIhost\fP に NULL を指定するか、 \fIhostlen\fP に 0 を指定する。同様に、サービス名が不要な場合は、 \fIserv\fP に NULL を指定するか、 \fIservlen\fP に 0 を指定する。 しかし、ホスト名とサービス名の両方を不要だと指定することはできない (いずれか一方は要求すること)。 - +.PP \fIflags\fP 引き数で \fBgetnameinfo\fP() の動作を変えることができる。指定できる値は以下の通り: .TP \fBNI_NAMEREQD\fP 指定すると、ホスト名が決定できなかった場合にエラーを返す。 .TP \fBNI_DGRAM\fP -指定すると、ストリームベース (TCP) でなくデータグラムベース (UDP) のサービスを対象にする。数は少ないが、 UDP と TCP -で違うサービスを提供しているポート (512\-514) に対して必要となる。 +If set, then the service is datagram (UDP) based rather than stream (TCP) +based. This is required for the few ports (512\(en514) that have different +services for UDP and TCP. .TP \fBNI_NOFQDN\fP 指定すると、ローカルなホストには fully qualified domain name (FQDN) の ホスト名の部分のみを返す。 @@ -71,13 +75,12 @@ _POSIX_SOURCE .\" .BR inet_ntop () .\" instead of .\" .BR gethostbyaddr (). -.\" POSIX.1-2003 has NI_NUMERICSCOPE, but glibc doesn't have it. +.\" POSIX.1-2001 TC1 has NI_NUMERICSCOPE, but glibc doesn't have it. 指定すると、数値形式のホスト名が返される。 (指定しなくても、ノードの名前が決定できない場合は数値形式が返ることがある)。 .TP \fBNI_NUMERICSERV\fP 指定すると、数値形式のサービス名 (例えばポート番号) が返される (指定しなくても、サービス名が決定できない場合は数値形式が返ることがある)。 .SS "国際化ドメイン名のための getnameinfo() の拡張" -.PP glibc 2.3.4 から、 \fBgetnameinfo\fP() に拡張が行われ、ホスト名と 国際化ドメイン名 (Internationalized Domain Name; IDN) 形式との間で 透過的な変換ができるようになっている (IDN 形式については RFC 3490 の \fIInternationalizing Domain Names in Applications (IDNA)\fP @@ -95,16 +98,19 @@ Domain Name; IDN) 形式との間で 透過的な変換ができるようにな .\" FIXME glibc defines the following additional errors, some which .\" can probably be returned by getnameinfo(); they need to .\" be documented. -.\" #ifdef __USE_GNU -.\" #define EAI_INPROGRESS -100 /* Processing request in progress. */ -.\" #define EAI_CANCELED -101 /* Request canceled. */ -.\" #define EAI_NOTCANCELED -102 /* Request not canceled. */ -.\" #define EAI_ALLDONE -103 /* All requests done. */ -.\" #define EAI_INTR -104 /* Interrupted by a signal. */ -.\" #define EAI_IDN_ENCODE -105 /* IDN encoding failed. */ -.\" #endif -成功すると 0 が返り、(要求されていれば) ノードとサービスの名前がヌル終端された文字列の形式でそれぞれの指定バッファーに返される -(バッファーの長さにあうように縮められるかもしれない)。 エラーの場合は、以下の 0 以外のエラーコードが返される: +.\" +.\" #ifdef __USE_GNU +.\" #define EAI_INPROGRESS -100 /* Processing request in progress. */ +.\" #define EAI_CANCELED -101 /* Request canceled. */ +.\" #define EAI_NOTCANCELED -102 /* Request not canceled. */ +.\" #define EAI_ALLDONE -103 /* All requests done. */ +.\" #define EAI_INTR -104 /* Interrupted by a signal. */ +.\" #define EAI_IDN_ENCODE -105 /* IDN encoding failed. */ +.\" #endif +On success, 0 is returned, and node and service names, if requested, are +filled with null\-terminated strings, possibly truncated to fit the specified +buffer lengths. On error, one of the following nonzero error codes is +returned: .TP \fBEAI_AGAIN\fP 指定された名前が現時点では解決できなかった。 後で再試行してみること。 @@ -133,62 +139,76 @@ Domain Name; IDN) 形式との間で 透過的な変換ができるようにな .PP \fBgai_strerror\fP(3) 関数を使うと、 これらのエラーコードを、 エラーレポートに適した人間が読みやすい文字列に翻訳してくれる。 .SH ファイル -/etc/hosts +\fI/etc/hosts\fP .br -/etc/nsswitch.conf +\fI/etc/nsswitch.conf\fP .br -/etc/resolv.conf +\fI/etc/resolv.conf\fP .SH バージョン \fBgetnameinfo\fP() は、glibc バージョン 2.1 以降で提供されている。 +.SH 属性 +この節で使用されている用語の説明は \fBattributes\fP(7) を参照のこと。 +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBgetnameinfo\fP() +T} Thread safety MT\-Safe env locale +.TE +.sp 1 .SH 準拠 -RFC\ 2553, POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008, RFC\ 2553. .SH 注意 適切なバッファーサイズを選択できるように、 \fI\fP に以下の定数が定義されている。 +.PP .in +4n -.nf - +.EX #define NI_MAXHOST 1025 #define NI_MAXSERV 32 -.fi +.EE .in - -glibc 2.8 以降では、機能検査マクロ \fB_BSD_SOURCE\fP, \fB_SVID_SOURCE\fP, \fB_GNU_SOURCE\fP -のいずれかが定義された場合にのみ、これらの定義が公開される。 +.PP +Since glibc 2.8, these definitions are exposed only if suitable feature test +macros are defined, namely: \fB_GNU_SOURCE\fP, \fB_DEFAULT_SOURCE\fP (since glibc +2.19), or (in glibc versions up to and including 2.19) \fB_BSD_SOURCE\fP or +\fB_SVID_SOURCE\fP. .PP 前者は、最近のバージョンの BIND のヘッダーファイル \fI\fP 中の定数 \fBMAXDNAME\fP と同じ値である。 後者は、割り当て済の数値について記した現在の RFC に 列挙されてサービスから推量した値である。 - +.PP glibc バージョン 2.2 より前では、 引き数 \fIhostlen\fP, \fIservlen\fP の型は \fIsize_t\fP であった。 -.SH 例 +.SH EXAMPLES 以下のコードは、指定されたソケットアドレスに対する ホストとサービスの数値表式を取得しようと試みる。 特定のアドレスファミリーに対する参照情報は 一切ハードコードされていないことに着目してほしい。 - +.PP .in +4n -.nf -struct sockaddr *sa; /* input */ -socklen_t len; /* input */ +.EX +struct sockaddr *addr; /* input */ +socklen_t addrlen; /* input */ char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV]; -if (getnameinfo(sa, len, hbuf, sizeof(hbuf), sbuf, +if (getnameinfo(addr, addrlen, hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0) printf("host=%s, serv=%s\en", hbuf, sbuf); -.fi +.EE .in - +.PP 以下ではソケットアドレスに 逆向きのアドレスマッピングが存在するかをチェックしている。 - +.PP .in +4n -.nf -struct sockaddr *sa; /* input */ -socklen_t len; /* input */ +.EX +struct sockaddr *addr; /* input */ +socklen_t addrlen; /* input */ char hbuf[NI_MAXHOST]; -if (getnameinfo(sa, len, hbuf, sizeof(hbuf), +if (getnameinfo(addr, addrlen, hbuf, sizeof(hbuf), NULL, 0, NI_NAMEREQD)) printf("could not resolve hostname"); else printf("host=%s\en", hbuf); -.fi +.EE .in .PP \fBgetnameinfo\fP() を使ったプログラム例が \fBgetaddrinfo\fP(3) に記載されている。 @@ -197,21 +217,20 @@ else \fBsocket\fP(2), \fBgetaddrinfo\fP(3), \fBgethostbyaddr\fP(3), \fBgetservbyname\fP(3), \fBgetservbyport\fP(3), \fBinet_ntop\fP(3), \fBhosts\fP(5), \fBservices\fP(5), \fBhostname\fP(7), \fBnamed\fP(8) - -R. Gilligan, S. Thomson, J. Bound and W. Stevens, \fIBasic Socket Interface -Extensions for IPv6\fP, RFC\ 2553, March 1999. - +.PP +R.\& Gilligan, S.\& Thomson, J.\& Bound and W.\& Stevens, \fIBasic Socket +Interface Extensions for IPv6\fP, RFC\ 2553, March 1999. +.PP Tatsuya Jinmei and Atsushi Onoe, \fIAn Extension of Format for IPv6 Scoped Addresses\fP, internet draft, work in progress .UR ftp://ftp.ietf.org\:/internet\-drafts\:/draft\-ietf\-ipngwg\-scopedaddr\-format\-02.txt .UE . - +.PP Craig Metz, \fIProtocol Independence Using the Sockets API\fP, Proceedings of the freenix track: 2000 USENIX annual technical conference, June 2000 .ad l .UR http://www.usenix.org\:/publications\:/library\:/proceedings\:/usenix2000\:/freenix\:/metzprotocol.html .UE . .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getnetent.3 b/manual/LDP_man-pages/draft/man3/getnetent.3 deleted file mode 100644 index 345f47b4..00000000 --- a/manual/LDP_man-pages/draft/man3/getnetent.3 +++ /dev/null @@ -1,119 +0,0 @@ -.\" 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 21:48:06 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated 1998-03-01, NAKANO Takeo -.\" Modified 1998-06-22, NAKANO Takeo -.\" Updated 2008-09-19, Akihiro MOTOKI -.\" -.TH GETNETENT 3 2008\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -getnetent, getnetbyname, getnetbyaddr, setnetent, endnetent \- -ネットワークエントリーを取得する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBstruct netent *getnetent(void);\fP -.sp -\fBstruct netent *getnetbyname(const char *\fP\fIname\fP\fB);\fP -.sp -\fBstruct netent *getnetbyaddr(uint32_t \fP\fInet\fP\fB, int \fP\fItype\fP\fB);\fP -.sp -\fBvoid setnetent(int \fP\fIstayopen\fP\fB);\fP -.sp -\fBvoid endnetent(void);\fP -.fi -.SH 説明 -\fBgetnetent\fP() 関数はネットワークデータベースから次のエントリーを読み込み、 そのエントリーを \fInetent\fP -構造体の要素別のフィールドに格納し、 その構造体を返す。 必要であれば、データベースへの接続がオープンされる。 -.PP -\fBgetnetbyname\fP() 関数は、ネットワーク名 \fIname\fP にマッチするエントリーを データベースから探し、そのエントリーを収めた -\fInetent\fP 構造体を返す。 -.PP -\fBgetnetbyaddr\fP() 関数は、\fItype\fP 型のネットワーク番号 \fInet\fP にマッチするエントリーを -データベースから探し、そのエントリーを収めた \fInetent\fP 構造体を返す。 \fInet\fP 引き数はホストバイトオーダでなければならない。 -.PP -\fBsetnetent\fP() 関数はデータベースへの接続をオープンし、 次の読み込みエントリーを先頭のエントリーに設定する。 \fIstayopen\fP -が 0 でない場合、 一つ一つの \fBgetnet*\fP() 関数の呼び出し間でデータベースへの接続をクローズしない。 -.PP -\fBendnetent\fP() 関数はデータベースへの接続をクローズする。 -.PP -\fInetent\fP 構造体は \fI\fP で以下のように定義されている。 -.sp -.in +4n -.nf -struct netent { - char *n_name; /* official network name */ - char **n_aliases; /* alias list */ - int n_addrtype; /* net address type */ - uint32_t n_net; /* network number */ -} -.fi -.in -.PP -\fInetent\fP 構造体のメンバは以下の通り。 -.TP -\fIn_name\fP -ネットワークの正式名 (official name)。 -.TP -\fIn_aliases\fP -ネットワークの別名からなるリスト。 リストはヌルで終端される。 -.TP -\fIn_addrtype\fP -ネットワーク番号の形式。現在は \fBAF_INET\fP のみ。 -.TP -\fIn_net\fP -ホストバイトオーダ形式のネットワーク番号。 -.SH 返り値 -\fBgetnetent\fP(), \fBgetnetbyname\fP(), \fBgetnetbyaddr\fP() 関数は、静的に割り当てられた -\fInetent\fP 構造体へのポインターを返す。 エラーが起こったり、ファイルの末尾に達した場合はヌルポインターを返す。 -.SH ファイル -.TP -\fI/etc/networks\fP -ネットワークデータベースファイル -.SH 準拠 -4.3BSD, POSIX.1\-2001. -.SH 注意 -バージョン 2.2 より前の glibc では、 \fBgetnetbyaddr\fP() の引き数 \fInet\fP は \fIlong\fP 型だった。 -.SH 関連項目 -.\" .BR networks (5) -\fBgetnetent_r\fP(3), \fBgetprotoent\fP(3), \fBgetservent\fP(3) -.br -RFC\ 1101 -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getnetent_r.3 b/manual/LDP_man-pages/draft/man3/getnetent_r.3 index d601b619..d36b5cb0 100644 --- a/manual/LDP_man-pages/draft/man3/getnetent_r.3 +++ b/manual/LDP_man-pages/draft/man3/getnetent_r.3 @@ -33,38 +33,41 @@ .\" all rights reserved. .\" Translated 2012-05-06, Akihiro MOTOKI .\" -.TH GETNETENT_R 3 2010\-09\-10 GNU "Linux Programmer's Manual" +.TH GETNETENT_R 3 2017\-09\-15 GNU "Linux Programmer's Manual" .SH 名前 getnetent_r, getnetbyname_r, getnetbyaddr_r \- ネットワークエントリーを 取得する (リエントラント版) .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint getnetent_r(struct netent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP \fB size_t \fP\fIbuflen\fP\fB, struct netent **\fP\fIresult\fP\fB,\fP \fB int *\fP\fIh_errnop\fP\fB);\fP -.sp +.PP \fBint getnetbyname_r(const char *\fP\fIname\fP\fB,\fP \fB struct netent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP \fB size_t \fP\fIbuflen\fP\fB, struct netent **\fP\fIresult\fP\fB,\fP \fB int *\fP\fIh_errnop\fP\fB);\fP -.sp +.PP \fBint getnetbyaddr_r(uint32_t \fP\fInet\fP\fB, int \fP\fItype\fP\fB,\fP \fB struct netent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP \fB size_t \fP\fIbuflen\fP\fB, struct netent **\fP\fIresult\fP\fB,\fP \fB int *\fP\fIh_errnop\fP\fB);\fP -.sp +.PP .fi -.in -4n +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): .ad l -.in -.sp -\fBgetnetent_r\fP(), \fBgetnetbyname_r\fP(), \fBgetnetbyaddr_r\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE .RE +.PP +\fBgetnetent_r\fP(), +\fBgetnetbyname_r\fP(), +\fBgetnetbyaddr_r\fP(): + Since glibc 2.19: + _DEFAULT_SOURCE + Glibc 2.19 and earlier: + _BSD_SOURCE || _SVID_SOURCE .ad b .SH 説明 関数 \fBgetnetent_r\fP(), \fBgetnetbyname_r\fP(), \fBgetnetbyaddr_r\fP() は、 @@ -73,11 +76,11 @@ _BSD_SOURCE || _SVID_SOURCE \fInetent\fP 構造体の返し方と、関数呼び出し時の引き数と返り値が異なる。 このマニュアルページでは、リエントラントでない関数との違いだけを 説明する。 - +.PP これらの関数は、関数の結果として静的に割り当てられた \fInetent\fP 構造体 へのポインターを返すのではなく、 \fInetent\fP 構造体を \fIresult_buf\fP が 指す場所にコピーする。 - +.PP .\" I can find no information on the required/recommended buffer size; .\" the nonreentrant functions use a 1024 byte buffer -- mtk. 配列 \fIbuf\fP は、返される \fInetent\fP 構造体が指す文字列フィールドを格納 @@ -87,11 +90,11 @@ _BSD_SOURCE || _SVID_SOURCE \fIbuf\fP が小さすぎる場合、関数呼び出しはエラー \fBERANGE\fP で失敗し、 呼び出し側ではもっと大きなバッファーで再度呼び出す必要がある (ほとんどの アプリケーションでは、長さ 1024 バイトのバッファーで十分なはずである)。 - +.PP 関数呼び出しでネットワークレコードの取得に成功すると、 \fI*result\fP は \fIresult_buf\fP を指すように設定される。 それ以外の場合は \fI*result\fP に NULL が設定される。 - +.PP .\" getnetent.3 doesn't document any use of h_errno, but nevertheless .\" the nonreentrant functions no seem to set h_errno. \fIh_errnop\fP が指すバッファーは、リエントラントでない関数では @@ -99,7 +102,7 @@ _BSD_SOURCE || _SVID_SOURCE .SH 返り値 成功すると、これらの関数は 0 を返す。エラーの場合、「エラー」の節の リストにある正のエラー番号のいずれかを返す。 - +.PP エラーの場合、レコードが見つからなかった場合 (\fBgetnetbyname_r\fP(), \fBgetnetbyaddr_r\fP()) やこれ以上レコードがない場合 (\fBgetnetent_r\fP())、 \fIresult\fP には NULL が設定される。 @@ -111,6 +114,21 @@ _BSD_SOURCE || _SVID_SOURCE \fBERANGE\fP \fIbuf\fP が小さすぎる。もっと大きなバッファーにして (または \fIbuflen\fP を増やして) 再度呼び出すこと。 +.SH 属性 +この節で使用されている用語の説明は \fBattributes\fP(7) を参照のこと。 +.ad l +.TS +allbox; +lbw17 lb lb +l l l. +Interface Attribute Value +T{ +\fBgetnetent_r\fP(), +\fBgetnetbyname_r\fP(), +\fBgetnetbyaddr_r\fP() +T} Thread safety MT\-Safe locale +.TE +.ad .SH 準拠 これらの関数は GNU による拡張である。 他のシステムにも同様の名前の関数が存在する場合があるが、 @@ -118,6 +136,5 @@ _BSD_SOURCE || _SVID_SOURCE .SH 関連項目 \fBgetnetent\fP(3), \fBnetworks\fP(5) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getopt.3 b/manual/LDP_man-pages/draft/man3/getopt.3 index 818df05c..20b3ed65 100644 --- a/manual/LDP_man-pages/draft/man3/getopt.3 +++ b/manual/LDP_man-pages/draft/man3/getopt.3 @@ -1,4 +1,5 @@ .\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) +.\" and Copyright 2006-2008, Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this @@ -56,36 +57,36 @@ .\" Updated & Modified 2007-05-01, Akihiro MOTOKI, LDP v2.46 .\" Updated 2008-08-11, Akihiro MOTOKI, LDP v3.05 .\" -.TH GETOPT 3 2015\-02\-01 GNU "Linux Programmer's Manual" +.TH GETOPT 3 2020\-06\-09 GNU "Linux Programmer's Manual" .SH 名前 getopt, getopt_long, getopt_long_only, optarg, optind, opterr, optopt \- コマンドラインオプションを解釈する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint getopt(int \fP\fIargc\fP\fB, char * const \fP\fIargv[]\fP\fB,\fP \fB const char *\fP\fIoptstring\fP\fB);\fP -.sp +.PP \fBextern char *\fP\fIoptarg\fP\fB;\fP \fBextern int \fP\fIoptind\fP\fB, \fP\fIopterr\fP\fB, \fP\fIoptopt\fP\fB;\fP -.sp +.PP \fB#include \fP -.sp +.PP \fBint getopt_long(int \fP\fIargc\fP\fB, char * const \fP\fIargv[]\fP\fB,\fP \fB const char *\fP\fIoptstring\fP\fB,\fP \fB const struct option *\fP\fIlongopts\fP\fB, int *\fP\fIlongindex\fP\fB);\fP -.sp +.PP \fBint getopt_long_only(int \fP\fIargc\fP\fB, char * const \fP\fIargv[]\fP\fB,\fP \fB const char *\fP\fIoptstring\fP\fB,\fP \fB const struct option *\fP\fIlongopts\fP\fB, int *\fP\fIlongindex\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): .ad l -.in -.sp +.RE +.PP \fBgetopt\fP(): _POSIX_C_SOURCE\ >=\ 2 || _XOPEN_SOURCE .br \fBgetopt_long\fP(), \fBgetopt_long_only\fP(): _GNU_SOURCE @@ -116,23 +117,39 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 とそれに続くセミコロンが入っていると、 \fB\-W foo\fP は長いオプション \fB\-\-foo\fP と同じように扱われる (POSIX.2 は \fB\-W\fP オプションを実装依存の拡張として予約している)。 この動作は GNU による拡張であり、glibc 2 以前のライブラリでは 利用できない。 .PP -デフォルトでは \fBgetopt\fP() は \fIargv\fP をスキャンする際に順序を変更し、 オプション以外の要素を最後に移動する。 他にも 2 -つのモードが実装されている。 \fIoptstring\fP の先頭文字が \(aq+\(aq であるか、環境変数 \fBPOSIXLY_CORRECT\fP -が設定されている場合には、オプションを対象とする動作は、 非オプションの引き数が現れた段階で終了する。 \fIoptstring\fP の先頭文字が -\(aq\-\(aq である場合には、 オプションでない \fIargv\fP 要素は、 文字コード 1 のオプションであるかのように扱われる -(これを用いるプログラムは、 オプションや \fIargv\fP 要素を任意の順序で受け入れ、かつそれらの順序が 意味を持つように書かれている必要がある)。 -"\-\-" は特殊な引き数で、スキャンのモードによらず、 オプションのスキャンを強制的に終了させる。 -.PP -認識できないオプション文字があると、 \fBgetopt\fP() はエラーメッセージを標準エラー出力 \fIstderr\fP に表示し、 その文字を -\fIoptopt\fP に保存して \(aq?\(aq を返す。 呼び出したプログラムで \fIopterr\fP を 0 にしておけば、 -エラーメッセージの表示を抑制できる。 +By default, \fBgetopt\fP() permutes the contents of \fIargv\fP as it scans, so +that eventually all the nonoptions are at the end. Two other scanning modes +are also implemented. If the first character of \fIoptstring\fP is \(aq+\(aq +or the environment variable \fBPOSIXLY_CORRECT\fP is set, then option +processing stops as soon as a nonoption argument is encountered. If the +first character of \fIoptstring\fP is \(aq\-\(aq, then each nonoption +\fIargv\fP\-element is handled as if it were the argument of an option with +character code 1. (This is used by programs that were written to expect +options and other \fIargv\fP\-elements in any order and that care about the +ordering of the two.) The special argument "\-\-" forces an end of +option\-scanning regardless of the scanning mode. .PP -\fBgetopt\fP() は \fIargv\fP の中に \fIoptstring\fP にないオプション文字を見つけた場合、 -またはオプション引き数が足りないことが分かった場合、 \&\(aq?\(aq を返して外部変数 \fIoptopt\fP をそのオプション文字に設定する。 -\fIoptstring\fP の (上で説明したオプションで指定できる \&\(aq+\(aq または \(aq\-\(aq 後に続く) 最初の文字が コロン -(\(aq:\(aq) のとき、 \fBgetopt\fP() はオプション引き数が足りない場合に \(aq?\(aq ではなく \(aq:\(aq -を返す。 エラーを見つけた場合で、かつ \fIoptstring\fP の最初の文字がコロンでなく、 かつ外部変数 \fIopterr\fP が 0 でない場合 -(これがデフォルト)、 \fBgetopt\fP() はエラーメッセージを表示する。 +While processing the option list, \fBgetopt\fP() can detect two kinds of +errors: (1) an option character that was not specified in \fIoptstring\fP and +(2) a missing option argument (i.e., an option at the end of the command +line without an expected argument). Such errors are handled and reported as +follows: +.IP * 3 +By default, \fBgetopt\fP() prints an error message on standard error, places +the erroneous option character in \fIoptopt\fP, and returns \(aq?\(aq as the +function result. +.IP * +If the caller has set the global variable \fIopterr\fP to zero, then +\fBgetopt\fP() does not print an error message. The caller can determine that +there was an error by testing whether the function return value is +\(aq?\(aq. (By default, \fIopterr\fP has a nonzero value.) +.IP * +.\" +If the first character (following any optional \(aq+\(aq or \(aq\-\(aq +described above) of \fIoptstring\fP is a colon (\(aq:\(aq), then \fBgetopt\fP() +likewise does not print an error message. In addition, it returns \(aq:\(aq +instead of \(aq?\(aq to indicate a missing option argument. This allows the +caller to distinguish the two different types of errors. .SS "getopt_long() と getopt_long_only()" \fBgetopt_long\fP() 関数は、長いオプション (2 つのダッシュ "\-\-" で始まるオプション) を 受け入れることを除いて \fBgetopt\fP() と同じように動作する (プログラムに長いオプションだけが渡された場合、 \fIoptstring\fP は NULL @@ -142,16 +159,16 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 .PP \fIlongopts\fP は \fIstruct option\fP の要素からなる配列の、先頭要素へのポインターである。 \fIstruct option\fP は \fI\fP で以下のように定義されている。 +.PP .in +4n -.nf -.sp +.EX struct option { const char *name; int has_arg; int *flag; int val; }; -.fi +.EE .in .PP それぞれのフィールドの意味は以下の通り。 @@ -199,19 +216,34 @@ struct option { この変数は \fBbash\fP(1) 2.0 が glibc と通信するために用いられた。 どの引き数がワイルドカードを展開した結果で、 したがってオプションとみなすべきでないかを知らせるものである。 この機能は \fBbash\fP(1) のバージョン 2.01 で削除されたが、glibc にはまだ残っている。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lbw24 lb lb +l l l. +Interface Attribute Value +T{ +\fBgetopt\fP(), +\fBgetopt_long\fP(), +\fBgetopt_long_only\fP() +T} Thread safety MT\-Unsafe race:getopt env +.TE .SH 準拠 .TP \fBgetopt\fP(): -環境変数 \fBPOSIXLY_CORRECT\fP が設定されている場合は POSIX.2 と POSIX.1\-2001 に準拠する。 他の場合は -\fIargv\fP の要素は本当の意味での定数にはならない。 なぜなら順序が変更されてしまうからである。 -ただしそれらは、プロトタイプでは定数であるかのようにしてある。 これは他のシステムとの互換性のためである。 - +POSIX.1\-2001, POSIX.1\-2008, and POSIX.2, provided the environment variable +\fBPOSIXLY_CORRECT\fP is set. Otherwise, the elements of \fIargv\fP aren't really +\fIconst\fP, because these functions permute them. Nevertheless, \fIconst\fP is +used in the prototype to be compatible with other systems. +.IP \fIoptstring\fP で \(aq+\(aq や \(aq\-\(aq を使うのは GNU による拡張である. - -古い実装のいくつかでは、 \fBgetopt\fP() は \fI\fP で宣言されていた。 SUSv1 では、 -\fI\fP か \fI\fP のどちらかで 宣言してもよかった。 POSIX.1\-2001 -では、 \fBgetopt\fP の宣言を \fI\fP で行うのは「過去の名残」であるとされた。 POSIX.1\-2001 では -\fI\fP で宣言を行うことを認めていない。 +.IP +On some older implementations, \fBgetopt\fP() was declared in +\fI\fP. SUSv1 permitted the declaration to appear in either +\fI\fP or \fI\fP. POSIX.1\-1996 marked the use +of \fI\fP for this purpose as LEGACY. POSIX.1\-2001 does not +require the declaration to appear in \fI\fP. .TP \fBgetopt_long\fP(), \fBgetopt_long_only\fP(): これらの関数は GNU による拡張である。 @@ -221,15 +253,12 @@ struct option { \fBPOSIXLY_CORRECT\fP の値を変更したりする場合には、 \fIoptind\fP を伝統的な 1 ではなく 0 にリセットすることで \fBgetopt\fP() を再初期化しなければならない (0 にリセットすることで、 \fBPOSIXLY_CORRECT\fP や \fIoptstring\fP の GNU 拡張機能のチェックを行う内部初期化ルーチンが起動される)。 -.SH バグ -POSIX.2 における \fBgetopt\fP() の仕様には技術的な問題があり、 その内容は POSIX.2 Interpretation 150 -に記されている。 GNU による実装では (おそらく他のすべての実装でも)、 仕様と異なる正しい動作をするように実装されている。 -.SH 例 +.SH EXAMPLES .SS getopt() 以下に示す簡単なサンプルプログラムでは、 二種類のプログラムオプションを扱うのに \fBgetopt\fP() を使用している。一つは値を伴わない \fI\-n\fP で、もう一つは対応する値が必要な \fI\-t val\fP である。 -.nf -.sp +.PP +.EX #include #include #include @@ -273,11 +302,11 @@ main(int argc, char *argv[]) exit(EXIT_SUCCESS); } -.fi +.EE .SS getopt_long() 以下は、 \fBgetopt_long\fP() の使用法を、ほぼすべての機能について示したプログラムの例である。 -.nf -.sp +.PP +.EX #include /* for printf */ #include /* for exit */ #include @@ -355,10 +384,9 @@ main(int argc, char **argv) { exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \fBgetopt\fP(1), \fBgetsubopt\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getpass.3 b/manual/LDP_man-pages/draft/man3/getpass.3 index 8009270d..b4f12503 100644 --- a/manual/LDP_man-pages/draft/man3/getpass.3 +++ b/manual/LDP_man-pages/draft/man3/getpass.3 @@ -34,18 +34,18 @@ .\" Updated 2013-03-26, Akihiro MOTOKI .\" Updated 2013-07-22, Akihiro MOTOKI .\" -.TH GETPASS 3 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH GETPASS 3 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 getpass \- パスワードを取得する .SH 書式 \fB#include \fP -.sp +.PP \fBchar *getpass(const char *\fP\fIprompt\fP\fB);\fP -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBgetpass\fP(): .ad l .RS 4 @@ -53,10 +53,9 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 .TP 4 glibc 2.2.2 以降: .nf -_BSD_SOURCE || - (_XOPEN_SOURCE\ >=\ 500 || - _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) && - !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600) +_XOPEN_SOURCE && ! (_POSIX_C_SOURCE\ >=\ 200112L) + || /* Glibc since 2.19: */ _DEFAULT_SOURCE + || /* Glibc versions <= 2.19: */ _BSD_SOURCE .fi .TP 4 glibc 2.2.2 より前: @@ -87,8 +86,16 @@ echo をオフにし、一行 (「パスワード」) を読み込み、端末 .\" function appeared in Version 7 AT&T UNIX. \fI/dev/tty\fP .SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBgetpass\fP() 関数はスレッドセーフではない。 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBgetpass\fP() +T} Thread safety MT\-Unsafe term +.TE .SH 準拠 SUSv2 には存在するが、過去の名残 (LEGACY) と位置付けられている。 POSIX.1\-2001 で削除された。 .SH 注意 @@ -112,7 +119,7 @@ SUSv2 には存在するが、過去の名残 (LEGACY) と位置付けられて .\" are transmitted as part of the password. .\" Since libc 5.4.19 also line editing is disabled, so that also .\" backspace and the like will be seen as part of the password. -.PP +. GNU C ライブラリの実装では、 \fI/dev/tty\fP がオープンできない場合は \fIprompt\fP は \fIstderr\fP に書き出され、パスワードは \fIstdin\fP から読み込まれた。 パスワードの長さには制限はなく、 行編集も無効にはされなかった。 .PP @@ -130,6 +137,5 @@ SUSv2 によれば、 \fBPASS_MAX\fP の値が 8 以下の場合は、この値 .SH 関連項目 \fBcrypt\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getprotoent.3 b/manual/LDP_man-pages/draft/man3/getprotoent.3 deleted file mode 100644 index 96d78534..00000000 --- a/manual/LDP_man-pages/draft/man3/getprotoent.3 +++ /dev/null @@ -1,111 +0,0 @@ -.\" 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 19:26:03 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated Fri Mar 15 1998 by NAKANO Takeo -.\" Updated 2008-09-19, Akihiro MOTOKI -.\" -.TH GETPROTOENT 3 2008\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -getprotoent, getprotobyname, getprotobynumber, setprotoent, endprotoent \- -プロトコルのエントリーを取得する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBstruct protoent *getprotoent(void);\fP -.sp -\fBstruct protoent *getprotobyname(const char *\fP\fIname\fP\fB);\fP -.sp -\fBstruct protoent *getprotobynumber(int \fP\fIproto\fP\fB);\fP -.sp -\fBvoid setprotoent(int \fP\fIstayopen\fP\fB);\fP -.sp -\fBvoid endprotoent(void);\fP -.fi -.SH 説明 -\fBgetprotoent\fP() 関数は、プロトコルのデータベース (\fBprotocols\fP(5) 参照) から次のエントリーを読み込み、 -そのエントリーを \fIprotoent\fP 構造体の要素別のフィールドに格納し、 その構造体を返す。 必要であれば、データベースへの接続がオープンされる。 -.PP -\fBgetprotobyname\fP() 関数は、プロトコル名 \fIname\fP にマッチするエントリーを データベースから探し、そのエントリーを収めた -\fIprotoent\fP 構造体を返す。 必要であれば、データベースへの接続がオープンされる。 -.PP -\fBgetprotobynumber\fP() 関数は、プロトコル番号 \fInumber\fP にマッチするエントリーを -データベースから探し、そのエントリーを収めた \fIprotoent\fP 構造体を返す。 必要であれば、データベースへの接続がオープンされる。 -.PP -\fBsetprotoent\fP() 関数はデータベースへの接続をオープンし、 次の読み込みエントリーを先頭のエントリーに設定する。 -\fIstayopen\fP が 0 でない場合、 一つ一つの \fBgetproto*\fP() 関数の呼び出し間でデータベースへの接続をクローズしない。 -.PP -\fBendprotoent\fP() 関数はデータベースへの接続をクローズする。 -.PP -\fIprotoent\fP 構造体は \fI\fP で以下のように定義されている。 -.sp -.in +4n -.nf -struct protoent { - char *p_name; /* official protocol name */ - char **p_aliases; /* alias list */ - int p_proto; /* protocol number */ -} -.fi -.in -.PP -\fIprotoent\fP 構造体のメンバーは以下の通り。 -.TP -\fIp_name\fP -プロトコルの正式名 (official name)。 -.TP -\fIp_aliases\fP -プロトコルの別名のリスト。 リストはヌルで終端される。 -.TP -\fIp_proto\fP -プロトコルの番号 -.SH 返り値 -\fBgetprotoent\fP(), \fBgetprotobyname\fP(), \fBgetprotobynumber\fP() 関数は、静的に割り当てられた -\fIprotoent\fP 構造体へのポインターを返す。 エラーが起こったり、ファイルの最後に達した場合は NULL を返す。 -.SH ファイル -.PD 0 -.TP -\fI/etc/protocols\fP -プロトコルのデータベースファイル -.PD -.SH 準拠 -4.3BSD, POSIX.1\-2001. -.SH 関連項目 -\fBgetnetent\fP(3), \fBgetprotoent_r\fP(3), \fBgetservent\fP(3), \fBprotocols\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getprotoent_r.3 b/manual/LDP_man-pages/draft/man3/getprotoent_r.3 index 3138ad0c..037da5e2 100644 --- a/manual/LDP_man-pages/draft/man3/getprotoent_r.3 +++ b/manual/LDP_man-pages/draft/man3/getprotoent_r.3 @@ -33,35 +33,38 @@ .\" all rights reserved. .\" Translated 2012-05-06, Akihiro MOTOKI .\" -.TH GETPROTOENT_R 3 2010\-09\-10 GNU "Linux Programmer's Manual" +.TH GETPROTOENT_R 3 2020\-11\-01 GNU "Linux Programmer's Manual" .SH 名前 getprotoent_r, getprotobyname_r, getprotobynumber_r \- プロトコル エントリーを取得する (リエントラント版) .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint getprotoent_r(struct protoent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP \fB size_t \fP\fIbuflen\fP\fB, struct protoent **\fP\fIresult\fP\fB);\fP -.sp +.PP \fBint getprotobyname_r(const char *\fP\fIname\fP\fB,\fP \fB struct protoent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP \fB size_t \fP\fIbuflen\fP\fB, struct protoent **\fP\fIresult\fP\fB);\fP -.sp +.PP \fBint getprotobynumber_r(int \fP\fIproto\fP\fB,\fP \fB struct protoent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP \fB size_t \fP\fIbuflen\fP\fB, struct protoent **\fP\fIresult\fP\fB);\fP -.sp +.PP .fi -.in -4n +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): .ad l -.in -.sp -\fBgetprotoent_r\fP(), \fBgetprotobyname_r\fP(), \fBgetprotobynumber_r\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE .RE +.PP +\fBgetprotoent_r\fP(), +\fBgetprotobyname_r\fP(), +\fBgetprotobynumber_r\fP(): + Since glibc 2.19: + _DEFAULT_SOURCE + Glibc 2.19 and earlier: + _BSD_SOURCE || _SVID_SOURCE .ad b .SH 説明 関数 \fBgetprotoent_r\fP(), \fBgetprotobyname_r\fP(), @@ -70,11 +73,11 @@ _BSD_SOURCE || _SVID_SOURCE \fIprotoent\fP 構造体の返し方と、関数呼び出し時の引き数と返り値が異なる。 このマニュアルページでは、リエントラントでない関数との違いだけを 説明する。 - +.PP これらの関数は、関数の結果として静的に割り当てられた \fIprotoent\fP 構造体 へのポインターを返すのではなく、 \fIprotoent\fP 構造体を \fIresult_buf\fP が 指す場所にコピーする。 - +.PP .\" I can find no information on the required/recommended buffer size; .\" the nonreentrant functions use a 1024 byte buffer. .\" The 1024 byte value is also what the Solaris man page suggests. -- mtk @@ -85,14 +88,14 @@ _BSD_SOURCE || _SVID_SOURCE \fIbuf\fP が小さすぎる場合、関数呼び出しはエラー \fBERANGE\fP で失敗し、 呼び出し側ではもっと大きなバッファーで再度呼び出す必要がある (ほとんどの アプリケーションでは、長さ 1024 バイトのバッファーで十分なはずである)。 - +.PP 関数呼び出しでプロトコルレコードの取得に成功すると、 \fI*result\fP は \fIresult_buf\fP を指すように設定される。 それ以外の場合は \fI*result\fP に NULL が設定される。 .SH 返り値 成功すると、これらの関数は 0 を返す。エラーの場合、「エラー」の節の リストにある正のエラー番号のいずれかを返す。 - +.PP エラーの場合、レコードが見つからなかった場合 (\fBgetprotobyname_r\fP(), \fBgetprotobyaddr_r\fP()) やこれ以上レコードがない場合 (\fBgetprotoent_r\fP())、\fIresult\fP には NULL が設定される。 @@ -104,11 +107,27 @@ _BSD_SOURCE || _SVID_SOURCE \fBERANGE\fP \fIbuf\fP が小さすぎる。もっと大きなバッファーにして (または \fIbuflen\fP を増やして) 再度呼び出すこと。 +.SH 属性 +この節で使用されている用語の説明は \fBattributes\fP(7) を参照のこと。 +.TS +allbox; +lbw20 lb lb +l l l. +Interface Attribute Value +T{ +\fBgetprotoent_r\fP(), +.br +\fBgetprotobyname_r\fP(), +.br +\fBgetprotobynumber_r\fP() +T} Thread safety MT\-Safe locale +.TE +.sp 1 .SH 準拠 これらの関数は GNU による拡張である。 他のシステムにも同様の名前の関数が存在する場合があるが、 通常は関数の引き数が異なる。 -.SH 例 +.SH EXAMPLES 以下のプログラムは、 \fBgetprotobyname_r\fP() を使って、最初のコマンド ライン引き数で指定された名前のプロトコルのレコードを取得する。 二番目のコマンドライン引き数 (整数値) が指定された場合は、 @@ -116,9 +135,9 @@ _BSD_SOURCE || _SVID_SOURCE \fBgetprotobyname_r\fP() がエラー \fBERANGE\fP で失敗すると、プログラムは より大きなバッファーサイズで再度 \fBgetprotobyname_r\fP を呼び出す。 下記のシェルのセッションは、実行例を示している。 +.PP .in +4n -.nf - +.EX $\fB ./a.out tcp 1\fP ERANGE! Retrying with larger buffer getprotobyname_r() returned: 0 (success) (buflen=78) @@ -127,11 +146,11 @@ $\fB ./a.out xxx 1\fP ERANGE! Retrying with larger buffer getprotobyname_r() returned: 0 (success) (buflen=100) Call failed/record not found -.fi +.EE .in .SS プログラムのソース \& -.nf +.EX #define _GNU_SOURCE #include #include @@ -149,7 +168,6 @@ main(int argc, char *argv[]) struct protoent result_buf; struct protoent *result; char buf[MAX_BUF]; - char **p; if (argc < 2) { printf("Usage: %s proto\-name [buflen]\en", argv[0]); @@ -197,16 +215,15 @@ main(int argc, char *argv[]) printf("p_name=%s; p_proto=%d; aliases=", result_buf.p_name, result_buf.p_proto); - for (p = result_buf.p_aliases; *p != NULL; p++) + for (char **p = result_buf.p_aliases; *p != NULL; p++) printf("%s ", *p); printf("\en"); exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \fBgetprotoent\fP(3), \fBprotocols\fP(5) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getpt.3 b/manual/LDP_man-pages/draft/man3/getpt.3 deleted file mode 100644 index 6a1a82ac..00000000 --- a/manual/LDP_man-pages/draft/man3/getpt.3 +++ /dev/null @@ -1,54 +0,0 @@ -.\" This man page was written by Jeremy Phelps . -.\" -.\" %%%LICENSE_START(FREELY_REDISTRIBUTABLE) -.\" Redistribute and modify at will. -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Tue Jul 8 01:44:54 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH GETPT 3 2014\-04\-01 GNU "Linux Programmer's Manual" -.SH 名前 -getpt \- 擬似端末マスタ (PTM) をオープンする -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP -.sp -\fBint getpt(void);\fP -.fi -.SH 説明 -\fBgetpt\fP() は、擬似端末マスタをオープンし、そのファイルディスクリプターを返す。 これは、 Linux システムにおいては -.nf - - open(/dev/ptmx, O_RDWR | O_NOCTTY); - -.fi -と等価である。但し、 GNU Libc を使用していても、 擬似端末マスタがどこか他の場所にあるシステムもある。 -.SH 返り値 -成功した場合、 \fBgetpt\fP() はオープンしたファイルのディスクリプターを返す。 そうでない場合、\-1 を返し、 \fIerrno\fP -にエラーを示す値がセットされる。 -.SH エラー -\fBgetpt\fP() は \fBopen\fP(2) で説明されている種々のエラーで失敗する可能性がある。 -.SH バージョン -\fBgetpt\fP() は、バージョン 2.1 以降の glibc で提供されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBgetpt\fP() 関数はスレッドセーフである。 -.SH 準拠 -\fBgetpt\fP() は glibc 独自である。代わりに \fBposix_openpt\fP(3) を使用すること。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getpw.3 b/manual/LDP_man-pages/draft/man3/getpw.3 deleted file mode 100644 index 790a7cea..00000000 --- a/manual/LDP_man-pages/draft/man3/getpw.3 +++ /dev/null @@ -1,111 +0,0 @@ -.\" 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 19:23:25 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Mon May 27 21:37:47 1996 by Martin Schulze (joey@linux.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated 1997-12-19, HIROFUMI Nishizuka -.\" Modified 1999-12-08, Kentaro Shirakata -.\" Modified 2005-09-04, Akihiro MOTOKI -.\" Modified 2008-07-23, Kentaro Shirakata -.\" -.TH GETPW 3 2015\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -getpw \- パスワード行エントリーを取得する -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP -\fB#include \fP -.sp -\fBint getpw(uid_t \fP\fIuid\fP\fB, char *\fP\fIbuf\fP\fB);\fP -.fi -.SH 説明 -\fBgetpw\fP() 関数は、バッファー \fIbuf\fP に指定ユーザー ID \fIuid\fP の パスワード行エントリーを取得する。 -返されるバッファーは、以下の形式の行を含む。 -.sp -.RS -\fBname:passwd:uid:gid:gecos:dir:shell\fP -.RE -.PP -\fIpasswd\fP 構造体は、\fI\fP で以下のように定義されている: -.sp -.in +4n -.nf -struct passwd { - char *pw_name; /* ユーザー名 */ - char *pw_passwd; /* ユーザーのパスワード */ - uid_t pw_uid; /* ユーザー ID */ - gid_t pw_gid; /* グループ ID */ - char *pw_gecos; /* ユーザー情報 */ - char *pw_dir; /* ホームディレクトリ */ - char *pw_shell; /* シェルプログラム */ -}; -.fi -.in -.PP -この構造体のフィールドの詳細は \fBpasswd\fP(5) を参照のこと。 -.SH 返り値 -\fBgetpw\fP() 関数は、成功した場合 0 を返す; エラーが発生した場合 \-1 を返し、エラーを 示すために \fIerrno\fP がセットされる。 - -\fIuid\fP がパスワードデータベースに見つからない場合、 \fBgetpw\fP() は \-1 を返し、 \fIerrno\fP に 0 を設定し、 \fIbuf\fP -は変更しない。 -.SH エラー -.TP -\fB0\fP または \fBENOENT\fP -\fIuid\fP に対応するユーザーがいない。 -.TP -\fBEINVAL\fP -\fIbuf\fP が NULL。 -.TP -\fBENOMEM\fP -\fIpasswd\fP 構造体に割り当てるメモリーが十分なかった。 -.SH ファイル -.TP -\fI/etc/passwd\fP -パスワードデータベースファイル -.SH 準拠 -SVr2 -.SH バグ -\fBgetpw\fP() 関数は、与えられたバッファー \fIbuf\fP がオーバーフローするかもしれないので危険である。 この関数は -\fBgetpwuid\fP(3) によって古いものとなった。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getpwent.3 b/manual/LDP_man-pages/draft/man3/getpwent.3 deleted file mode 100644 index daed86a4..00000000 --- a/manual/LDP_man-pages/draft/man3/getpwent.3 +++ /dev/null @@ -1,141 +0,0 @@ -.\" 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 19:22:14 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Mon May 27 21:37:47 1996 by Martin Schulze (joey@linux.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated 1997-12-18, HIROFUMI Nishizuka -.\" Updated 2005-09-06, Akihiro MOTOKI -.\" -.TH GETPWENT 3 2013\-06\-21 GNU "Linux Programmer's Manual" -.SH 名前 -getpwent, setpwent, endpwent \- パスワードファイルのエントリーの取得 -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -.sp -\fBstruct passwd *getpwent(void);\fP -.sp -\fBvoid setpwent(void);\fP -.sp -\fBvoid endpwent(void);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBgetpwent\fP(), \fBsetpwent\fP(), \fBendpwent\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.RE -.ad b -.SH 説明 -\fBgetpwent\fP() 関数は、パスワードデータベースから取得したエントリーを 要素毎に分解し、各要素を格納した構造体へのポインターを返す -(パスワードデータベースの例: ローカルのパスワードファイル \fI/etc/passwd\fP, NIS, LDAP)。 \fBgetpwent\fP() -は、最初に呼び出された時は最初のエントリーを返し、それ以降は 呼び出される毎に次のエントリーを返す。 -.PP -\fBsetpwent\fP() 関数を使うと、パスワードデータベースの先頭に戻る。 -.PP -\fBendpwent\fP() 関数は、全ての処理が終わった後にパスワード データベースをクローズする。 -.PP -\fIpasswd\fP 構造体は、\fI\fP で以下のように定義されている: -.sp -.in +4n -.nf -struct passwd { - char *pw_name; /* ユーザー名 */ - char *pw_passwd; /* ユーザーのパスワード */ - uid_t pw_uid; /* ユーザー ID */ - gid_t pw_gid; /* グループ ID */ - char *pw_gecos; /* ユーザー情報 */ - char *pw_dir; /* ホームディレクトリ */ - char *pw_shell; /* シェルプログラム */ -}; -.fi -.in -.PP -この構造体のフィールドの詳細は \fBpasswd\fP(5) を参照のこと。 -.SH 返り値 -\fBgetpwent\fP() 関数は \fIpasswd\fP 構造体へのポインターを返す。 これ以上エントリーが無いか、エラーが発生した場合は NULL -を返す。 エラーが発生すると、 \fIerrno\fP が適切に設定される。 この関数の呼び出し後に \fIerrno\fP をチェックしたい場合は、呼び出し前に -\fIerrno\fP を 0 に設定しておかないといけない。 - -返り値は静的な領域を指しており、その後の \fBgetpwent\fP(), \fBgetpwnam\fP(3), \fBgetpwuid\fP(3) -の呼び出しで上書きされるかもしれない。 (返されたポインターを \fBfree\fP(3) に渡さないこと。) -.SH エラー -.TP -\fBEINTR\fP -シグナルが捕捉された。 -.TP -\fBEIO\fP -I/O エラー。 -.TP -\fBEMFILE\fP -呼び出し元プロセスがオープンしているファイル数が すでに上限 (\fBOPEN_MAX\fP) であった。 -.TP -\fBENFILE\fP -システムでオープンされているファイル数がすでに上限であった。 -.TP -\fBENOMEM\fP -.\" not in POSIX -.\" to allocate the passwd structure, or to allocate buffers -\fIpasswd\fP 構造体に割り当てるメモリーが十分なかった。 -.TP -\fBERANGE\fP -与えられたバッファー空間が不十分である。 -.SH ファイル -.TP -\fI/etc/passwd\fP -ローカルのパスワードデータベースファイル -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBgetpwent\fP() 関数はスレッドセーフではない。 -.LP -関数 \fBsetpwent\fP() と \fBendpwent\fP() はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001. \fIpw_gecos\fP フィールドは POSIX では規定されていないが、 -ほとんどの実装に存在する。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getpwent_r.3 b/manual/LDP_man-pages/draft/man3/getpwent_r.3 deleted file mode 100644 index 8a55252f..00000000 --- a/manual/LDP_man-pages/draft/man3/getpwent_r.3 +++ /dev/null @@ -1,161 +0,0 @@ -.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl) -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Sun Aug 8 00:53:40 JST 2004 -.\" by Yuichi SATO -.\" -.TH GETPWENT_R 3 2015\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -getpwent_r, fgetpwent_r \- パスワードファイルのエントリーを リエントラントで取り出す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint getpwent_r(struct passwd *\fP\fIpwbuf\fP\fB, char *\fP\fIbuf\fP\fB,\fP -.br -\fB size_t \fP\fIbuflen\fP\fB, struct passwd **\fP\fIpwbufp\fP\fB);\fP -.sp -\fBint fgetpwent_r(FILE *\fP\fIstream\fP\fB, struct passwd *\fP\fIpwbuf\fP\fB, char *\fP\fIbuf\fP\fB,\fP -.br -\fB size_t \fP\fIbuflen\fP\fB, struct passwd **\fP\fIpwbufp\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBgetpwent_r\fP(), _BSD_SOURCE || _SVID_SOURCE -.br -\fBfgetpwent_r\fP(): _SVID_SOURCE -.SH 説明 -関数 \fBgetpwent_r\fP() と \fBfgetpwent_r\fP() は \fBgetpwent\fP(3) と \fBfgetpwent\fP(3) -のリエントラント (reentrant) 版である。 前者は、 \fBsetpwent\fP(3) -によって初期化されたストリームから、次のパスワードエントリーを読み込む。 後者は、 \fIstream\fP から次のパスワードエントリーを読み込む。 -.PP -\fIpasswd\fP 構造体は、\fI\fP で以下のように定義されている: -.sp -.in +4n -.nf -struct passwd { - char *pw_name; /* ユーザー名 */ - char *pw_passwd; /* ユーザーのパスワード */ - uid_t pw_uid; /* ユーザー ID */ - gid_t pw_gid; /* グループ ID */ - char *pw_gecos; /* ユーザー情報 */ - char *pw_dir; /* ホームディレクトリ */ - char *pw_shell; /* シェルプログラム */ -}; -.fi -.in -.PP -この構造体のフィールドの詳細は \fBpasswd\fP(5) を参照のこと。 - -リエントラントでない関数は静的な格納領域へのポインターを返す。 この静的な格納領域には、更にユーザー名・パスワード・gecos フィールド・ -ホームディレクトリ・シェルへのポインターが含まれる。 ここで説明されているリエントラント版の関数は、 -呼び出し側から提供されるバッファーにユーザー名など全てを返す。 最初の引き数として \fIstruct passwd\fP を保持できるバッファー -\fIpwbuf\fP がある。 次にその他の文字列を保持できるサイズ \fIbuflen\fP のバッファー \fIbuf\fP がある。 これらの関数の結果 -(ストリームから読み込まれた \fIstruct passwd\fP) は、 提供されたバッファー \fI*pwbuf\fP に格納され、この \fIstruct -passwd\fP へのポインターは \fI*pwbufp\fP に返される。 -.SH 返り値 -成功した場合、これらの関数は 0 を返し、 \fI*pwbufp\fP は \fIstruct passwd\fP へのポインターとなる。 -エラーの場合、これらの関数はエラー値を返し、 \fI*pwbufp\fP は NULL になる。 -.SH エラー -.TP -\fBENOENT\fP -次のエントリーがない。 -.TP -\fBERANGE\fP -十分なバッファー空間が与えられていない。 もっと大きなバッファーで再度実行すること。 -.SH 準拠 -これらの関数は GNU 拡張であり、POSIX 版の関数 \fBgetpwnam_r\fP(3) の形式に似せてある。 -他のシステムでは以下のプロトタイプが使われている。 -.sp -.nf -.in +4n -struct passwd * -getpwent_r(struct passwd *pwd, char *buf, int buflen); -.in -.fi -.sp -より良いものでは、以下のようになっている。 -.sp -.nf -.in +4n -int -getpwent_r(struct passwd *pwd, char *buf, int buflen, - FILE **pw_fp); -.in -.fi -.SH 注意 -関数 \fBgetpwent_r\fP() は本当のリエントラントではない。 なぜなら、ストリームの読み込み位置を -他の全てのスレッドと共有しているためである。 -.SH 例 -.nf -#define _GNU_SOURCE -#include -#include -#define BUFLEN 4096 - -int -main(void) -{ - struct passwd pw, *pwp; - char buf[BUFLEN]; - int i; - - setpwent(); - while (1) { - i = getpwent_r(&pw, buf, BUFLEN, &pwp); - if (i) - break; - printf("%s (%d)\etHOME %s\etSHELL %s\en", pwp\->pw_name, - pwp\->pw_uid, pwp\->pw_dir, pwp\->pw_shell); - } - endpwent(); - exit(EXIT_SUCCESS); -} -.fi -.\" perhaps add error checking - should use strerror_r -.\" #include -.\" #include -.\" if (i) { -.\" if (i == ENOENT) -.\" break; -.\" printf("getpwent_r: %s", strerror(i)); -.\" exit(EXIT_SUCCESS); -.\" } -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getpwnam.3 b/manual/LDP_man-pages/draft/man3/getpwnam.3 deleted file mode 100644 index 63116afa..00000000 --- a/manual/LDP_man-pages/draft/man3/getpwnam.3 +++ /dev/null @@ -1,249 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's "POSIX Programmer's Guide" (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 1996-05-27 by Martin Schulze (joey@linux.de) -.\" Modified 2003-11-15 by aeb -.\" 2008-11-07, mtk, Added an example program for getpwnam_r(). -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated 1997-12-18, HIROFUMI Nishizuka -.\" Updated & Modified 2004-01-06, Yuichi SATO -.\" Updated & Modified 2005-09-06, Akihiro MOTOKI -.\" Updated & Modified 2005-10-08, Akihiro MOTOKI -.\" Updated 2008-12-24, Akihiro MOTOKI, LDP v3.14 -.\" Updated 2012-05-01, Akihiro MOTOKI -.\" Updated 2013-08-16, Akihiro MOTOKI -.\" -.TH GETPWNAM 3 2013\-07\-22 GNU "Linux Programmer's Manual" -.SH 名前 -getpwnam, getpwnam_r, getpwuid, getpwuid_r \- パスワードファイルのエントリーの取得 -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -.sp -\fBstruct passwd *getpwnam(const char *\fP\fIname\fP\fB);\fP -.sp -\fBstruct passwd *getpwuid(uid_t \fP\fIuid\fP\fB);\fP -.sp -\fBint getpwnam_r(const char *\fP\fIname\fP\fB, struct passwd *\fP\fIpwd\fP\fB,\fP -.br -\fB char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB, struct passwd **\fP\fIresult\fP\fB);\fP -.sp -\fBint getpwuid_r(uid_t \fP\fIuid\fP\fB, struct passwd *\fP\fIpwd\fP\fB,\fP -.br -\fB char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB, struct passwd **\fP\fIresult\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBgetpwnam_r\fP(), \fBgetpwuid_r\fP(): -.RS 4 -_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE -|| _POSIX_SOURCE -.RE -.ad b -.SH 説明 -\fBgetpwnam\fP() 関数は、ユーザー名 \fIname\fP にマッチするパスワードデータベースのエントリーを -要素毎に分解し、各要素を格納した構造体へのポインターを返す (パスワードデータベースの例: ローカルのパスワードファイル \fI/etc/passwd\fP, -NIS, LDAP)。 -.PP -\fBgetpwuid\fP() 関数は、ユーザー ID \fIuid\fP にマッチするパスワードデータベースのエントリーを -要素毎に分解し、各要素を格納した構造体へのポインターを返す。 -.PP -\fIpasswd\fP 構造体は、\fI\fP で以下のように定義されている: -.sp -.in +4n -.nf -struct passwd { - char *pw_name; /* ユーザー名 */ - char *pw_passwd; /* ユーザーのパスワード */ - uid_t pw_uid; /* ユーザー ID */ - gid_t pw_gid; /* グループ ID */ - char *pw_gecos; /* ユーザー情報 */ - char *pw_dir; /* ホームディレクトリ */ - char *pw_shell; /* シェルプログラム */ -}; -.fi -.in -.PP -これらのフィールドの詳しい情報については \fBpasswd\fP(5) を参照のこと。 -.PP -\fBgetpwnam_r\fP() と \fBgetpwuid_r\fP() 関数は、それぞれ\fBgetpwnam\fP() と -\fBgetpwuid\fP() と同じ情報を取得するが、取得した \fIpasswd\fP 構造体を -\fIpwd\fP が指す領域に格納する。\fIpasswd\fP 構造体のメンバーが指す文字列は、 -サイズ \fIbuflen\fP のバッファー \fIbuf\fP に格納される。成功した場合 -\fI*result\fP には結果へのポインターが格納される。エントリーが見つからなかった -場合やエラーが発生した場合には \fI*result\fP には NULL が入る。 -.PP -呼び出し - - sysconf(_SC_GETPW_R_SIZE_MAX) - -は、 \fIerrno\fP を変更せずに \-1 を返すか、 \fIbuf\fP の初期サイズの推奨値を -返す。(このサイズが小さすぎる場合、呼び出しは \fBERANGE\fP で失敗し、この -場合には呼び出し側はバッファーを大きくしてから再度呼び出すことができる。) -.SH 返り値 -\fBgetpwnam\fP() と \fBgetpwuid\fP() 関数は、 \fIpasswd\fP 構造体へのポインターを返す。 -一致するエントリーが見つからなかった場合や、エラーが発生した場合は NULL を返す。 エラーが起こった場合、 \fIerrno\fP が適切に設定される。 -呼び出しの後で \fIerrno\fP をチェックしたい場合は、 呼び出しの前に (この値を) 0 に設定しておくべきである。 -.LP -返り値は静的な領域を指しており、その後の \fBgetpwent\fP(3), \fBgetpwnam\fP(), \fBgetpwuid\fP() -の呼び出しで上書きされるかもしれない。 (返されたポインターを \fBfree\fP(3) に渡さないこと。) -.LP -成功すると、 \fBgetpwnam_r\fP() と \fBgetpwuid_r\fP() は 0 を返し、 \fI*result\fP に \fIpwd\fP -を設定する。 マッチするパスワードエントリーが見つからなかった場合には、 0 を返し、 \fI*result\fP に NULL を設定する。 -エラーの場合、エラー番号を返し、 \fI*result\fP に NULL を設定する。 -.SH エラー -.TP -\fB0\fP または \fBENOENT\fP または \fBESRCH\fP または \fBEBADF\fP または \fBEPERM\fP または ... -指定された \fIname\fP または \fIuid\fP が見つからなかった。 -.TP -\fBEINTR\fP -シグナルが捕捉された。 -.TP -\fBEIO\fP -I/O エラー。 -.TP -\fBEMFILE\fP -呼び出し元プロセスがオープンしているファイル数が すでに上限 (\fBOPEN_MAX\fP) であった。 -.TP -\fBENFILE\fP -システムでオープンされているファイル数がすでに上限であった。 -.TP -\fBENOMEM\fP -.\" not in POSIX -.\" This structure is static, allocated 0 or 1 times. No memory leak. (libc45) -\fIpasswd\fP 構造体に割り当てるメモリーが十分なかった。 -.TP -\fBERANGE\fP -与えられたバッファー空間が不十分である。 -.SH ファイル -.TP -\fI/etc/passwd\fP -ローカルのパスワードデータベースファイル -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBgetpwnam\fP() と \fBgetpwuid\fP() はスレッドセーフではない。 -.LP -関数 \fBgetpwnam_r\fP() と \fBgetpwuid_r\fP() はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001. \fIpw_gecos\fP フィールドは POSIX では規定されていないが、 -ほとんどの実装に存在する。 -.SH 注意 -.\" more precisely: -.\" AIX 5.1 - gives ESRCH -.\" OSF1 4.0g - gives EWOULDBLOCK -.\" libc, glibc up to version 2.6, Irix 6.5 - give ENOENT -.\" glibc since version 2.7 - give 0 -.\" FreeBSD 4.8, OpenBSD 3.2, NetBSD 1.6 - give EPERM -.\" SunOS 5.8 - gives EBADF -.\" Tru64 5.1b, HP-UX-11i, SunOS 5.7 - give 0 -上記の「返り値」以下の記述は POSIX.1\-2001 に拠る。 この標準は「(エントリーが) 見つからないこと」をエラーとしていないので、 -そのような場合に \fIerrno\fP がどのような値になるかを定めていない。 そのため、エラーを認識することは不可能である。 POSIX -に準拠して、エントリーが見つからない場合は \fIerrno\fP を変更しないようにすべきである、と主張する人もいるかもしれない。 様々な UNIX -系のシステムで試してみると、そのような場合には 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK, EPERM -といった様々な値が返される。 他の値が返されるかもしれない。 - -フィールド \fIpw_dir\fP には、ユーザーの作業ディレクトリ名の初期値が格納される。 ログインプロセスは、このフィールドの値を使って、 -ログインシェルの \fBHOME\fP 環境変数を初期化する。 アプリケーションが、ユーザーのホームディレクトリを決定する場合には、 -(\fIgetpwuid(getuid())\->pw_dir\fP の値ではなく) \fBHOME\fP の値を検査するようにすべきである。 -なぜなら、このようにすることで、ユーザーがログインセッション中で 「ホームディレクトリ」の意味を変更できるようになるからである。 -別のユーザーのホームディレクトリ (の初期値) を知るには \fIgetpwnam("username")\->pw_dir\fP -か同様の方法を使う必要がある。 -.SH 例 -以下のプログラムは \fBgetpwnam_r\fP() の使用例を示したもので、コマンドライン引き数で渡されたユーザー名に対する -完全なユーザー名とユーザー ID を探すものである。 - -.nf -#include -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - struct passwd pwd; - struct passwd *result; - char *buf; - size_t bufsize; - int s; - - if (argc != 2) { - fprintf(stderr, "Usage: %s username\en", argv[0]); - exit(EXIT_FAILURE); - } - - bufsize = sysconf(_SC_GETPW_R_SIZE_MAX); - if (bufsize == \-1) /* 値を決定できなかった */ - bufsize = 16384; /* 十分大きな値にすべき */ - - buf = malloc(bufsize); - if (buf == NULL) { - perror("malloc"); - exit(EXIT_FAILURE); - } - - s = getpwnam_r(argv[1], &pwd, buf, bufsize, &result); - if (result == NULL) { - if (s == 0) - printf("Not found\en"); - else { - errno = s; - perror("getpwnam_r"); - } - exit(EXIT_FAILURE); - } - - printf("Name: %s; UID: %ld\en", pwd.pw_gecos, (long) pwd.pw_uid); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getrpcent.3 b/manual/LDP_man-pages/draft/man3/getrpcent.3 deleted file mode 100644 index 2bbf6653..00000000 --- a/manual/LDP_man-pages/draft/man3/getrpcent.3 +++ /dev/null @@ -1,90 +0,0 @@ -.\" This page was taken from the 4.4BSD-Lite CDROM (BSD license) -.\" -.\" %%%LICENSE_START(BSD_ONELINE_CDROM) -.\" This page was taken from the 4.4BSD-Lite CDROM (BSD license) -.\" %%%LICENSE_END -.\" -.\" @(#)getrpcent.3n 2.2 88/08/02 4.0 RPCSRC; from 1.11 88/03/14 SMI -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 2000-01-11, HANATAKA Shinya -.\" Updated 2008-09-19, Akihiro MOTOKI -.\" -.TH GETRPCENT 3 2014\-05\-28 "" "Linux Programmer's Manual" -.SH 名前 -getrpcent, getrpcbyname, getrpcbynumber, setrpcent, endrpcent \- RPC -エントリーを取得する -.SH 書式 -.nf -\fB#include \fP - -\fBstruct rpcent *getrpcent(void);\fP - -\fBstruct rpcent *getrpcbyname(const char *\fP\fIname\fP\fB);\fP - -\fBstruct rpcent *getrpcbynumber(int \fP\fInumber\fP\fB);\fP - -\fBvoid setrpcent(int \fP\fIstayopen\fP\fB);\fP - -\fBvoid endrpcent(void);\fP -.fi -.SH 説明 -.LP -\fBgetrpcent\fP(), \fBgetrpcbyname\fP(), \fBgetrpcbynumber\fP() -はそれぞれ以下の構造体へのポインターを返す。 この構造体は RPC プログラム番号データベース の各行のフィールドを含んでいる。 -.in +4n -.nf - -struct rpcent { - char *r_name; /* name of server for this RPC program */ - char **r_aliases; /* alias list */ - long r_number; /* RPC program number */ -}; -.fi -.in -.LP -この構造体のメンバーは以下の通り。 -.RS 4 -.TP 12 -\fIr_name\fP -この RPC プログラムのサーバの名前 -.TP -\fIr_aliases\fP -RPC プログラムの別名のリスト。ゼロで終端されている。 -.TP -\fIr_number\fP -このサービスの RPC プログラム番号。 -.RE -.LP -\fBgetrpcent\fP() はファイルの次のエントリーを読み込む。必要ならばデータベースへの接続がオープンされる。 -.LP -\fBsetrpcent\fP() はデータベースへの接続をオープンし、 次の読み込みエントリーを先頭のエントリーに設定する。 \fIstayopen\fP が -0 でない場合、 一つ一つの \fBgetrpc*\fP() 関数の呼び出し間でデータベースへの接続をクローズしない。 -.LP -\fBendrpcent\fP() はデータベースへの接続をクローズする。 -.LP -\fBgetrpcbyname\fP() と \fBgetrpcbynumber\fP() はファイルの最初から一致する RPC プログラム名かプログラム番号が -見つかるか、ファイルの最後 (end\-of\-file) に到達するまで、順番に 探していく。 -.SH 返り値 -成功すると、 \fBgetrpcent\fP(), \fBgetrpcbyname\fP(), \fBgetrpcbynumber\fP() は、静的に割り当てられた -\fIrpcent\fP 構造体へのポインターを返す。 EOF か エラーに遭遇した場合には NULL を返す。 -.SH ファイル -.TP -\fI/etc/rpc\fP -RPC プログラム番号データベース -.SH 準拠 -POSIX.1\-2001 にはない。 BSD 系、Solaris や他の多くのシステムに存在する。 -.SH バグ -全ての情報は静的領域に格納される。 保存するためには全てをコピーする必要がある。 -.SH 関連項目 -\fBgetrpcent_r\fP(3), \fBrpc\fP(5), \fBrpcinfo\fP(8), \fBypserv\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getrpcent_r.3 b/manual/LDP_man-pages/draft/man3/getrpcent_r.3 deleted file mode 100644 index f8fc1eae..00000000 --- a/manual/LDP_man-pages/draft/man3/getrpcent_r.3 +++ /dev/null @@ -1,115 +0,0 @@ -.\" Copyright 2008, Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-06, Akihiro MOTOKI -.\" -.TH GETRPCENT_R 3 2010\-09\-10 GNU "Linux Programmer's Manual" -.SH 名前 -getrpcent_r, getrpcbyname_r, getrpcbynumber_r \- RPC エントリーを -取得する (リエントラント版) -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint getrpcent_r(struct rpcent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP -\fB size_t \fP\fIbuflen\fP\fB, struct rpcent **\fP\fIresult\fP\fB);\fP -.sp -\fBint getrpcbyname_r(const char *\fP\fIname\fP\fB,\fP -\fB struct rpcent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP -\fB size_t \fP\fIbuflen\fP\fB, struct rpcent **\fP\fIresult\fP\fB);\fP -.sp -\fBint getrpcbynumber_r(int \fP\fInumber\fP\fB,\fP -\fB struct rpcent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP -\fB size_t \fP\fIbuflen\fP\fB, struct rpcent **\fP\fIresult\fP\fB);\fP -.sp -.fi -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.ad l -.in -.sp -\fBgetrpcent_r\fP(), \fBgetrpcbyname_r\fP(), \fBgetrpcbynumber_r\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE -.RE -.ad b -.SH 説明 -関数 \fBgetrpcent_r\fP(), \fBgetrpcbyname_r\fP(), \fBgetrpcbynumber_r\fP() は、 -それぞれ \fBgetrpcent\fP(3), \fBgetrpcbyname\fP(3), \fBgetrpcbynumber\fP(3) の -リエントラント版である。 -\fIrpcent\fP 構造体の返し方と、関数呼び出し時の引き数と返り値が異なる。 -このマニュアルページでは、リエントラントでない関数との違いだけを -説明する。 - -これらの関数は、関数の結果として静的に割り当てられた \fIrpcent\fP 構造体 -へのポインターを返すのではなく、 \fIrpcent\fP 構造体を \fIresult_buf\fP が -指す場所にコピーする。 - -.\" I can find no information on the required/recommended buffer size; -.\" the nonreentrant functions use a 1024 byte buffer -- mtk. -配列 \fIbuf\fP は、返される \fIrpcent\fP 構造体が指す文字列フィールドを -格納するのに使用される (リエントラントでない関数の場合は、 -これらの文字列は静的な領域に格納される)。 -この配列の大きさは \fIbuflen\fP で指定される。 -\fIbuf\fP が小さすぎる場合、関数呼び出しはエラー \fBERANGE\fP で失敗し、 -呼び出し側ではもっと大きなバッファーで再度呼び出す必要がある (ほとんどの -アプリケーションでは、長さ 1024 バイトのバッファーで十分なはずである)。 - -関数呼び出しで RPC レコードの取得に成功すると、 -\fI*result\fP は \fIresult_buf\fP を指すように設定される。 -それ以外の場合は \fI*result\fP に NULL が設定される。 -.SH 返り値 -成功すると、これらの関数は 0 を返す。エラーの場合、「エラー」の節の -リストにある正のエラー番号のいずれかを返す。 - -エラーの場合、レコードが見つからなかった場合 (\fBgetrpcbyname_r\fP(), -\fBgetrpcbyaddr_r\fP()) やこれ以上レコードがない場合 (\fBgetrpcent_r\fP())、 -\fIresult\fP には NULL が設定される。 -.SH エラー -.TP -\fBENOENT\fP -(\fBgetrpcent_r\fP()) データベースにこれ以上レコードがない。 -.TP -\fBERANGE\fP -\fIbuf\fP が小さすぎる。もっと大きなバッファーにして -(または \fIbuflen\fP を増やして) 再度呼び出すこと。 -.SH 準拠 -これらの関数は GNU による拡張である。 -他のシステムにも同様の名前の関数が存在する場合があるが、 -通常は関数の引き数が異なる。 -.SH 関連項目 -\fBgetrpcent\fP(3), \fBrpc\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getrpcport.3 b/manual/LDP_man-pages/draft/man3/getrpcport.3 deleted file mode 100644 index 5380cc5a..00000000 --- a/manual/LDP_man-pages/draft/man3/getrpcport.3 +++ /dev/null @@ -1,39 +0,0 @@ -.\" This page was taken from the 4.4BSD-Lite CDROM (BSD license) -.\" -.\" %%%LICENSE_START(BSD_ONELINE_CDROM) -.\" This page was taken from the 4.4BSD-Lite CDROM (BSD license) -.\" %%%LICENSE_END -.\" -.\" @(#)getrpcport.3r 2.2 88/08/02 4.0 RPCSRC; from 1.12 88/02/26 SMI -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:56:31 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH GETRPCPORT 3 2014\-05\-28 "" "Linux Programmer's Manual" -.SH 名前 -getrpcport \- RPC ポート番号を取得する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint getrpcport(const char *\fP\fIhost\fP\fB, unsigned long \fP\fIprognum\fP\fB, unsigned long \fP\fIversnum\fP\fB, unsigned \fP\fIproto\fP\fB);\fP -.fi -.SH 説明 -\fBgetrpcport\fP() は \fIhost\fP 上で \fIproto\fP プロトコルを使用しているバージョン \fIversnum\fP の RPC -プログラム \fIprognum\fP のポート番号を返す。 ポートマッパーと連絡が取れない場合や \fIprognum\fP が登録されていない場合には 0 -を返す。 \fIprognum\fP が登録されているが、バージョン \fIversnum\fP -でない場合にも、そのプログラムが実際に登録されていることを示すために (そのプログラムのバージョンの)ポート番号を返す。 -バージョンの不一致は最初にそのサービスを呼び出した時に検出される。 -.SH 準拠 -POSIX.1\-2001 にはない。 BSD 系、Solaris や他の多くのシステムに存在する。 -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/gets.3 b/manual/LDP_man-pages/draft/man3/gets.3 deleted file mode 100644 index 1f41b7c9..00000000 --- a/manual/LDP_man-pages/draft/man3/gets.3 +++ /dev/null @@ -1,85 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" -.\" %%%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 11:12:07 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Fri Sep 8 15:48:13 1995 by Andries Brouwer (aeb@cwi.nl) -.\" Modified 2013-12-31, David Malcolm -.\" Split gets(3) into its own page; fgetc() et al. move to fgetc(3) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 IMAMURA Nobutaka -.\" all rights reserved. -.\" Translated 1997-02-14, IMAMURA Nobutaka -.\" Updated 1999-08-29, Kentaro Shirakata -.\" Updated 2001-11-02, Kentaro Shirakata -.\" Updated 2005-09-06, Akihiro MOTOKI -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH GETS 3 2014\-01\-24 GNU "Linux Programmer's Manual" -.SH 名前 -gets \- 標準入力からの文字列を取得する (非推奨) -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *gets(char *\fP\fIs\fP\fB);\fP -.fi -.SH 説明 -\fIこの関数は使用しないこと\fP。 - -\fBgets\fP() は、改行文字か \fBEOF\fP までの 1行を \fIstdin\fP から読み込み \fIs\fP が指すバッファーに格納する -(末尾の改行文字や \fBEOF\fP はヌルバイト (\(aq\e0\(aq) に置き換えられる)。 バッファーオーバーランのチェックは行われない -(下記の「バグ」を参照)。 -.SH 返り値 -\fBgets\fP() は、成功すると \fIs\fP を返し、エラーや 1 文字も読み込んでいないのにファイルの終わりになった 場合に NULL を返す。 -しかし、バッファーの行き過ぎのチェックが行われないため、この関数が返るという保証はない。 -.SH 準拠 -C89, C99, POSIX.1\-2001. - -LSB は \fBgets\fP() を非推奨としている。 -POSIX.1\-2008 では \fBgets\fP() に廃止予定の印が付けられている。 -ISO C11 では \fBgets\fP)() の規定が C 言語から削除されている。 -glibc バージョン 2.16 以降では、機能検査マクロ \fB_ISOC11_SOURCE\fP が定義された -場合、glibc ヘッダーファイルでは \fBgets\fP)() の宣言が公開されない。 -.SH バグ -\fBgets\fP() は絶対に使用してはならない。 前もってデータを知ることなしに \fBgets\fP() が何文字読むかを知ることはできず、 -\fBgets\fP() がバッファーの終わりを越えて書き込み続けるため、 \fBgets\fP() を使うのは極めて危険である。 -これを利用してコンピュータのセキュリティが破られてきた。 代わりに \fBfgets\fP() を使うこと。 - -詳しい情報については、CWE\-242 (別名 "Use of Inherently Dangerous Function" -(「本質的に危険な関数を使う」)) を参照。 http://cwe.mitre.org/data/definitions/242.html -で参照できる。 -.SH 関連項目 -\fBread\fP(2), \fBwrite\fP(2), \fBferror\fP(3), \fBfgetc\fP(3), \fBfgets\fP(3), -\fBfgetwc\fP(3), \fBfgetws\fP(3), \fBfopen\fP(3), \fBfread\fP(3), \fBfseek\fP(3), -\fBgetline\fP(3), \fBgetwchar\fP(3), \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getservent.3 b/manual/LDP_man-pages/draft/man3/getservent.3 deleted file mode 100644 index f64d718a..00000000 --- a/manual/LDP_man-pages/draft/man3/getservent.3 +++ /dev/null @@ -1,121 +0,0 @@ -.\" 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 19:19:11 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Wed Oct 18 20:23:54 1995 by Martin Schulze -.\" Modified Mon Apr 22 01:50:54 1996 by Martin Schulze -.\" 2001-07-25 added a clause about NULL proto (Martin Michlmayr or David N. Welton) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated Fri Mar 15 1998 by NAKANO Takeo -.\" Updated Thu 16 Aug 2001 by NAKANO Takeo -.\" Updated 2008-09-19, Akihiro MOTOKI -.\" -.TH GETSERVENT 3 2008\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -getservent, getservbyname, getservbyport, setservent, endservent \- -サービスのエントリーを取得する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBstruct servent *getservent(void);\fP -.sp -\fBstruct servent *getservbyname(const char *\fP\fIname\fP\fB, const char *\fP\fIproto\fP\fB);\fP -.sp -\fBstruct servent *getservbyport(int \fP\fIport\fP\fB, const char *\fP\fIproto\fP\fB);\fP -.sp -\fBvoid setservent(int \fP\fIstayopen\fP\fB);\fP -.sp -\fBvoid endservent(void);\fP -.fi -.SH 説明 -\fBgetservent\fP() 関数はサービスのデータベース (\fBservices\fP(5) 参照) から次のエントリーを読み込み、 -そのエントリーを \fIservent\fP 構造体の要素別のフィールドに格納し、 その構造体を返す。 必要であれば、データベースへの接続がオープンされる。 -.PP -\fBgetservbyname\fP() 関数は、 プロトコル \fIproto\fP を用いるサービスの名前 \fIname\fP -にマッチするエントリーをデータベースから探し、 そのエントリーを収めた \fIservent\fP 構造体を返す。 \fIproto\fP が NULL -の場合は、任意のプロトコルにマッチする。 必要であれば、データベースへの接続がオープンされる。 -.PP -\fBgetservbyport\fP() 関数は、 プロトコル \fIproto\fP を用いるサービスのポート番号 \fIport\fP -にマッチするエントリーをデータベースから探し、 そのエントリーの内容を収めた \fIservent\fP 構造体を返す (ポート番号 \fIport\fP -はネットワークバイトオーダで指定する)。 \fIproto\fP が NULL の場合は任意のプロトコルにマッチする。 -必要であれば、データベースへの接続がオープンされる。 -.PP -\fBsetservent\fP() 関数はデータベースへの接続をオープンし、 次の読み込みエントリーを先頭のエントリーに設定する。 \fIstayopen\fP -が 0 でない場合、 一つ一つの \fBgetserv*\fP() 関数の呼び出し間でデータベースへの接続をクローズしない。 -.PP -\fBendservent\fP() 関数はデータベースへの接続をクローズする。 -.PP -\fIservent\fP 構造体は \fI\fP で以下のように定義されている。 -.sp -.in +4n -.nf -struct servent { - char *s_name; /* official service name */ - char **s_aliases; /* alias list */ - int s_port; /* port number */ - char *s_proto; /* protocol to use */ -} -.fi -.in -.PP -\fIservent\fP 構造体のメンバーは以下の通り。 -.TP -\fIs_name\fP -サービスの正式名 (official name)。 -.TP -\fIs_aliases\fP -サービスの別名のリスト。 リストはヌルで終端される。 -.TP -\fIs_port\fP -サービスのポート番号。ネットワークバイトオーダで指定される。 -.TP -\fIs_proto\fP -このサービスと共に用いるプロトコルの名前。 -.SH 返り値 -\fBgetservent\fP(), \fBgetservbyname\fP(), \fBgetservbyport\fP() 関数は、 静的に割り当てられた -\fIservent\fP 構造体へのポインターを返す。 エラーが起こったり、ファイルの末尾に達した場合は NULL を返す。 -.SH ファイル -.TP -\fI/etc/services\fP -サービスのデータベースファイル -.SH 準拠 -4.3BSD, POSIX.1\-2001. -.SH 関連項目 -\fBgetnetent\fP(3), \fBgetprotoent\fP(3), \fBgetservent_r\fP(3), \fBservices\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getservent_r.3 b/manual/LDP_man-pages/draft/man3/getservent_r.3 index b339861d..a44ea503 100644 --- a/manual/LDP_man-pages/draft/man3/getservent_r.3 +++ b/manual/LDP_man-pages/draft/man3/getservent_r.3 @@ -33,35 +33,38 @@ .\" all rights reserved. .\" Translated 2012-05-06, Akihiro MOTOKI .\" -.TH GETSERVENT_R 3 2010\-09\-10 GNU "Linux Programmer's Manual" +.TH GETSERVENT_R 3 2020\-11\-01 GNU "Linux Programmer's Manual" .SH 名前 getservent_r, getservbyname_r, getservbyport_r \- サービスエントリーを 取得する (リエントラント版) .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint getservent_r(struct servent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP \fB size_t \fP\fIbuflen\fP\fB, struct servent **\fP\fIresult\fP\fB);\fP -.sp +.PP \fBint getservbyname_r(const char *\fP\fIname\fP\fB, const char *\fP\fIproto\fP\fB,\fP \fB struct servent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP \fB size_t \fP\fIbuflen\fP\fB, struct servent **\fP\fIresult\fP\fB);\fP -.sp +.PP \fBint getservbyport_r(int \fP\fIport\fP\fB, const char *\fP\fIproto\fP\fB,\fP \fB struct servent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP \fB size_t \fP\fIbuflen\fP\fB, struct servent **\fP\fIresult\fP\fB);\fP -.sp +.PP .fi -.in -4n +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): .ad l -.in -.sp -\fBgetservent_r\fP(), \fBgetservbyname_r\fP(), \fBgetservbyport_r\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE .RE +.PP +\fBgetservent_r\fP(), +\fBgetservbyname_r\fP(), +\fBgetservbyport_r\fP(): + Since glibc 2.19: + _DEFAULT_SOURCE + Glibc 2.19 and earlier: + _BSD_SOURCE || _SVID_SOURCE .ad b .SH 説明 関数 \fBgetservent_r\fP(), \fBgetservbyname_r\fP(), \fBgetservbyport_r\fP() は、 @@ -70,11 +73,11 @@ _BSD_SOURCE || _SVID_SOURCE \fIservent\fP 構造体の返し方と、関数呼び出し時の引き数と返り値が異なる。 このマニュアルページでは、リエントラントでない関数との違いだけを 説明する。 - +.PP これらの関数は、関数の結果として静的に割り当てられた \fIservent\fP 構造体 へのポインターを返すのではなく、 \fIservent\fP 構造体を \fIresult_buf\fP が 指す場所にコピーする。 - +.PP .\" I can find no information on the required/recommended buffer size; .\" the nonreentrant functions use a 1024 byte buffer -- mtk. 配列 \fIbuf\fP は、返される \fIservent\fP 構造体が指す文字列フィールドを @@ -84,14 +87,14 @@ _BSD_SOURCE || _SVID_SOURCE \fIbuf\fP が小さすぎる場合、関数呼び出しはエラー \fBERANGE\fP で失敗し、 呼び出し側ではもっと大きなバッファーで再度呼び出す必要がある (ほとんどの アプリケーションでは、長さ 1024 バイトのバッファーで十分なはずである)。 - +.PP 関数呼び出しでサービスレコードの取得に成功すると、 \fI*result\fP は \fIresult_buf\fP を指すように設定される。 それ以外の場合は \fI*result\fP に NULL が設定される。 .SH 返り値 成功すると、これらの関数は 0 を返す。エラーの場合、「エラー」の節の リストにある正のエラー番号のいずれかを返す。 - +.PP エラーの場合、レコードが見つからなかった場合 (\fBgetservbyname_r\fP(), \fBgetservbyaddr_r\fP()) やこれ以上レコードがない場合 (\fBgetservent_r\fP())、 \fIresult\fP には NULL が設定される。 @@ -103,11 +106,26 @@ _BSD_SOURCE || _SVID_SOURCE \fBERANGE\fP \fIbuf\fP が小さすぎる。もっと大きなバッファーにして (または \fIbuflen\fP を増やして) 再度呼び出すこと。 +.SH 属性 +この節で使用されている用語の説明は \fBattributes\fP(7) を参照のこと。 +.ad l +.TS +allbox; +lbw18 lb lb +l l l. +Interface Attribute Value +T{ +\fBgetservent_r\fP(), +\fBgetservbyname_r\fP(), +\fBgetservbyport_r\fP() +T} Thread safety MT\-Safe locale +.TE +.ad .SH 準拠 これらの関数は GNU による拡張である。 他のシステムにも同様の名前の関数が存在する場合があるが、 通常は関数の引き数が異なる。 -.SH 例 +.SH EXAMPLES 以下のプログラムは、 \fBgetservbyport_r\fP() を使って、コマンド ライン引き数で指定されたポート番号とプロトコル名を持つ サービスレコードを取得する。 @@ -116,9 +134,9 @@ _BSD_SOURCE || _SVID_SOURCE \fBgetservbyport_r\fP() がエラー \fBERANGE\fP で失敗すると、プログラムは より大きなバッファーサイズで再度 \fBgetservbyport_r\fP を呼び出す。 下記のシェルのセッションは実行例を示している。 +.PP .in +4n -.nf - +.EX $\fB ./a.out 7 tcp 1\fP ERANGE! Retrying with larger buffer getservbyport_r() returned: 0 (success) (buflen=87) @@ -126,11 +144,11 @@ s_name=echo; s_proto=tcp; s_port=7; aliases= $\fB ./a.out 77777 tcp\fP getservbyport_r() returned: 0 (success) (buflen=1024) Call failed/record not found -.fi +.EE .in .SS プログラムのソース \& -.nf +.EX #define _GNU_SOURCE #include #include @@ -149,7 +167,6 @@ main(int argc, char *argv[]) struct servent *result; char buf[MAX_BUF]; char *protop; - char **p; if (argc < 3) { printf("Usage: %s port\-num proto\-name [buflen]\en", argv[0]); @@ -202,16 +219,15 @@ main(int argc, char *argv[]) printf("s_name=%s; s_proto=%s; s_port=%d; aliases=", result_buf.s_name, result_buf.s_proto, ntohs(result_buf.s_port)); - for (p = result_buf.s_aliases; *p != NULL; p++) + for (char **p = result_buf.s_aliases; *p != NULL; p++) printf("%s ", *p); printf("\en"); exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \fBgetservent\fP(3), \fBservices\fP(5) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getspnam.3 b/manual/LDP_man-pages/draft/man3/getspnam.3 deleted file mode 100644 index a249a01e..00000000 --- a/manual/LDP_man-pages/draft/man3/getspnam.3 +++ /dev/null @@ -1,190 +0,0 @@ -.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl) and -.\" Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated 2004-08-20, Yuichi SATO -.\" Updated 2013-03-25, Akihiro MOTOKI -.\" Updated 2013-07-17, Akihiro MOTOKI -.\" -.TH GETSPNAM 3 2015\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -getspnam, getspnam_r, getspent, getspent_r, setspent, endspent,fgetspent, -fgetspent_r, sgetspent, sgetspent_r, putspent, lckpwdf, ulckpwdf \- shadow -パスワードファイルのエントリーを取得する -.SH 書式 -.nf -/* 一般的な shadow パスワードファイル API */ -.br -\fB#include \fP -.sp -\fBstruct spwd *getspnam(const char *\fP\fIname\fP\fB);\fP -.sp -\fBstruct spwd *getspent(void);\fP -.sp -\fBvoid setspent(void);\fP -.sp -\fBvoid endspent(void);\fP -.sp -\fBstruct spwd *fgetspent(FILE *\fP\fIstream\fP\fB);\fP -.sp -\fBstruct spwd *sgetspent(const char *\fP\fIs\fP\fB);\fP -.sp -\fBint putspent(const struct spwd *\fP\fIp\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -.sp -\fBint lckpwdf(void);\fP -.sp -\fBint ulckpwdf(void);\fP -.sp -/* GNU 版における拡張 */ -.br -\fB#include \fP -.sp -\fBint getspent_r(struct spwd *\fP\fIspbuf\fP\fB,\fP -.br -\fB char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB, struct spwd **\fP\fIspbufp\fP\fB);\fP -.sp -\fBint getspnam_r(const char *\fP\fIname\fP\fB, struct spwd *\fP\fIspbuf\fP\fB,\fP -.br -\fB char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB, struct spwd **\fP\fIspbufp\fP\fB);\fP -.sp -\fBint fgetspent_r(FILE *\fP\fIstream\fP\fB, struct spwd *\fP\fIspbuf\fP\fB,\fP -.br -\fB char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB, struct spwd **\fP\fIspbufp\fP\fB);\fP -.sp -\fBint sgetspent_r(const char *\fP\fIs\fP\fB, struct spwd *\fP\fIspbuf\fP\fB,\fP -.br -\fB char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB, struct spwd **\fP\fIspbufp\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBgetspent_r\fP(), \fBgetspnam_r\fP(), \fBfgetspent_r\fP(), \fBsgetspent_r\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE -.RE -.ad b -.SH 説明 -昔は暗号化されたパスワードをパスワードファイルに 見えるように公開しておいても安全だと考えられていた。 Julianne Frances Haugh は -shadow パスワードスイートを実装した。 これは暗号化されたパスワードを、root のみが読むことができる shadow パスワードデータベース -(例えば、 ローカルの shadow パスワードファイル \fI/etc/shadow\fP, NIS, LDAP) に保持する。 -.LP -.\" FIXME . I've commented out the following for the -.\" moment. The relationship between PAM and nsswitch.conf needs -.\" to be clearly documented in one place, which is pointed to by -.\" the pages for the user, group, and shadow password functions. -.\" (Jul 2005, mtk) -.\" -.\" This shadow password setup has been superseded by PAM -.\" (pluggable authentication modules), and the file -.\" .I /etc/nsswitch.conf -.\" now describes the sources to be used. -以下で説明する関数は、伝統的なパスワードデータベースに対する 関数に似ている (例えば \fBgetpwnam\fP(3) や \fBgetpwent\fP(3) -を参照)。 -.LP -\fBgetspnam\fP() 関数は、ユーザー名 \fIname\fP にマッチする shadow パスワードデータベースのエントリーを -要素毎に分解し、各要素を格納した構造体へのポインターを返す。 -.LP -.\" some systems require a call of setspent() before the first getspent() -.\" glibc does not -\fBgetspent\fP() 関数は shadow パスワードデータベースにおける次のエントリーへのポインターを返す。 入力ストリームにおける位置は、 -\fBsetspent\fP() で初期化される。 読み込みが終わった後に、 \fBendspent\fP() を呼び出すと、リソースを解放できる。 -.LP -\fBfgetspent\fP() 関数は \fBgetspent\fP() に似ているが、 \fBsetspent\fP() -で暗黙のうちにオープンされるストリームではなく、与えられたストリームを使う。 -.LP -\fBsgetspent\fP() 関数は与えられた文字列 \fIs\fP を解析し struct \fIspwd\fP に格納する。 -.LP -\fBputspent\fP() 関数は与えられた struct \fIspwd\fP \fI*p\fP の内容を shadow パスワードファイル形式のテキスト行で -\fIstream\fP に書き出す。 空文字列として、 値が NULL の文字列エントリーと値が \-1 の数値エントリーが 書き出される。 -.LP -\fBlckpwdf\fP() 関数は、 shadow パスワードデータベースを 多重同時アクセスから守るためのものである。 この関数はロックの獲得を試み、 -成功した場合は 0 を返す。 失敗した場合 (15 秒以内にロックが取得できなかった場合) は \-1 を返す。 \fBulckpwdf\fP() -関数はロックを再び解放する。 shadow パスワードファイルへの直接アクセスから 保護する手段がない点に注意すること。 \fBlckpwdf\fP() -を使うプログラムだけがロックを通知できる。 -.LP -.\" Also in libc5 -.\" SUN doesn't have sgetspent() -これらの関数はオリジナルの shadow API を構成していた関数であり、 いろいろなシステムで広く利用可能である。 -.SS リエントラント版 -パスワードデータベースに対するリエントラント版と同じように、 glibc には shadow パスワードファイルに対してリエントラント版がある。 -\fBgetspnam_r\fP() 関数は \fBgetspnam\fP() と似ているが、取得した shadow パスワード構造体を \fIspbuf\fP -が指す領域に格納する。 shadow パスワード構造体は文字列群へのポインターを含み、 これらの文字列群はサイズ \fIbuflen\fP のバッファー -\fIbuf\fP に格納される。 \fI*spbufp\fP には (成功した場合は) 結果へのポインターが格納され、 -(エントリーが見つからなかった場合またはエラーが起こった場合は) NULL が格納される。 -.LP -関数 \fBgetspent_r\fP(), \fBfgetspent_r\fP(), \fBsgetspent_r\fP() -はそれぞれリエントラントでないバージョンと同様の機能を持つ。 -.LP -.\" SUN doesn't have sgetspent_r() -glibc でないシステムにもこれらと同じ名前の関数があるが、 プロトタイプが異なることも多い。 -.SS 構造体 -shadow パスワード構造体は \fI\fP で以下のように定義されている: -.sp -.in +4n -.nf -struct spwd { - char *sp_namp; /* ログイン名 */ - char *sp_pwdp; /* 暗号化されたパスワード */ - long sp_lstchg; /* 最終更新日 - (1970\-01\-01 00:00:00 +0000 (UTC) - からの日数) */ - long sp_min; /* 変更が出来るようになるまでの最短日数 */ - long sp_max; /* 変更をしなくてもよい最長日数 */ - long sp_warn; /* パスワードが期限切れになる前に - ユーザーに変更の警告を出す日数 */ - long sp_inact; /* パスワードが期限切れになってから - アカウントが無効になるまでの日数 */ - long sp_expire; /* アカウントが無効になる日付 - (1970\-01\-01 00:00:00 +0000 (UTC) - からの日数) */ - unsigned long sp_flag; /* 予約フィールド */ -}; -.fi -.in -.SH 返り値 -ポインターを返す関数は、これ以上エントリーがない場合や 処理中にエラーが発生した場合 NULL を返す。 \fIint\fP を返り値として持つ関数は、 -成功した場合 0 を返し、失敗した場合、 \-1 を返し、 \fIerrno\fP にエラーの原因を示す値を設定する。 -.LP -リエントラント版でない関数では、返り値が静的な領域を指しており、 引き続いてこれらの関数を呼び出した場合に上書きされる可能性がある。 -.LP -リエントラント版の関数は、成功した場合に 0 を返す。 エラーの場合は、エラー番号が返される。 -.SH エラー -.TP -\fBEACCES\fP -呼び出し元が shadow パスワードファイルにアクセスする許可を持っていない。 -.TP -\fBERANGE\fP -与えられたバッファーが小さすぎる。 -.SH ファイル -.TP -\fI/etc/shadow\fP -ローカルの shadow パスワードデータベースファイル -.TP -\fI/etc/.pwd.lock\fP -ロックファイル -.LP -インクルードファイル \fI\fP は定数 \fB_PATH_SHADOW\fP を定義している。 これは shadow -パスワードファイルのパス名である。 -.SH 準拠 -shadow パスワードデータベースと関連 API は POSIX.1\-2001 には記載されていない。しかしながら、多くの他のシステムでも 同様の -API が提供されている。 -.SH 関連項目 -\fBgetgrnam\fP(3), \fBgetpwnam\fP(3), \fBgetpwnam_r\fP(3), \fBshadow\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getsubopt.3 b/manual/LDP_man-pages/draft/man3/getsubopt.3 deleted file mode 100644 index 8ffc1384..00000000 --- a/manual/LDP_man-pages/draft/man3/getsubopt.3 +++ /dev/null @@ -1,192 +0,0 @@ -.\" Copyright (C) 2007 Michael Kerrisk -.\" and Copyright (C) 2007 Justin Pryzby -.\" -.\" %%%LICENSE_START(PERMISSIVE_MISC) -.\" Permission is hereby granted, free of charge, to any person obtaining -.\" a copy of this software and associated documentation files (the -.\" "Software"), to deal in the Software without restriction, including -.\" without limitation the rights to use, copy, modify, merge, publish, -.\" distribute, sublicense, and/or sell copies of the Software, and to -.\" permit persons to whom the Software is furnished to do so, subject to -.\" the following conditions: -.\" -.\" The above copyright notice and this permission notice shall be -.\" included in all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -.\" IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -.\" CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -.\" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -.\" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2007 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2007-06-02, Akihiro MOTOKI -.\" -.TH GETSUBOPT 3 2014\-04\-08 GNU "Linux Programmer's Manual" -.SH 名前 -getsubopt \- 文字列中のサブオプション引き数の解釈を行う -.SH 書式 -\fB#include \fP - -\fBint getsubopt(char **\fP\fIoptionp\fP\fB, char * const *\fP\fItokens\fP\fB, char -**\fP\fIvaluep\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBgetsubopt\fP(): -.ad l -.RS 4 -.PD 0 -_XOPEN_SOURCE\ >= 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.br -|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L -.PD -.RE -.ad -.SH 説明 -\fBgetsubopt\fP() は、 \fIoptionp\fP で与えられたカンマ区切りのサブオプションリストを解析する。 -(このようなサブオプションリストは \fBgetopt\fP(3) を使ってコマンドラインを解釈した場合に現れることが多い。 例えば、 -\fBmount\fP(8) の \fI\-o\fP オプションを見るとよい。) それぞれのサブオプションには対応する値を指定することができる。 -サブオプションの名前と対応する値は等号 (\(aq=\(aq) で区切られる。 例えば、以下のような文字列を \fIoptionp\fP に渡すことができる。 -.sp -.in +4n -\fBro,name=xyz\fP -.in - -\fItokens\fP 引き数はトークンへのポインターの配列へのポインターで、 配列は NULL で終端される。 \fBgetsubopt\fP() -はこのトークンを \fIoptionp\fP 内で探す。 それぞれのトークンは、NULL 終端された 1文字以上の文字列で、 -他のトークンと区別できる必要がある。 また、等号とカンマを含んではならない。 - -\fBgetsubopt\fP() は呼び出されるたびに、 \fIoptionp\fP 中の次の未処理のサブオプションの情報を返す。 -サブオプション内に等号があった場合、最初の等号は そのサブオプションの名前と値の区切りと解釈される。 区切りから次のカンマ -(最後のサブオプションの場合、文字列の末尾) までが、サブオプションの値となる。 サブオプションの名前が \fItokens\fP -内の名前と一致し、値を表す文字列が見つかった場合、 \fBgetsubopt\fP() は \fI*valuep\fP を値を表す文字列のアドレスに設定する。 -\fIoptionp\fP 中の最初のカンマはヌルバイトで上書きされる。そのため、 \fI*valuep\fP はそのサブオプションの「値の文字列」そのものとなる。 - -サブオプションが認識されたが、値を表す文字列が見つからなかった場合、 *\fIvaluep\fP は NULL に設定される。 - -\fBgetsubopt\fP() が返る時、 \fIoptionp\fP は次のサブオプションを指している。 ちょうど最後のサブオプションが処理された場合は、 -文字列末尾のヌルバイト (\(aq\e0\(aq) を指している。 -.SH 返り値 -\fIoptionp\fP 内でサブオプションが見つかった場合、 \fBgetsubopt\fP() は最初のサブオプションにマッチする \fItokens\fP -の要素の添字を返す。 見つからなかった場合、\-1 を返す。この場合、 \fI*valuep\fP は \fIname\fP\fB[=\fP\fIvalue\fP\fB]\fP -の文字列全体となる。 - -\fI*optionp\fP は変更されるので、 \fBgetsubopt\fP() を呼び出す前の最初のサブオプションは \fBgetsubopt\fP() -を呼び出し後のサブオプションと必ずしも同じとは限らない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBgetsubopt\fP() はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 - -\fBgetsubopt\fP() は、文字列 *\fIoptionp\fP 中に見つけたカンマを上書きするので、文字列 \fI*optionp\fP -は書き込み可能でなければならず、 文字列定数にすることはできない。 -.SH 例 -以下のプログラムは "\-o" オプションに続いてサブオプションがあることを 期待している。 - -.nf -#define _XOPEN_SOURCE 500 -#include -#include -#include - -int -main(int argc, char **argv) -{ - enum { - RO_OPT = 0, - RW_OPT, - NAME_OPT - }; - char *const token[] = { - [RO_OPT] = "ro", - [RW_OPT] = "rw", - [NAME_OPT] = "name", - NULL - }; - char *subopts; - char *value; - int opt; - - int readonly = 0; - int readwrite = 0; - char *name = NULL; - int errfnd = 0; - - while ((opt = getopt(argc, argv, "o:")) != \-1) { - switch (opt) { - case \(aqo\(aq: - subopts = optarg; - while (*subopts != \(aq\e0\(aq && !errfnd) { - - switch (getsubopt(&subopts, token, &value)) { - case RO_OPT: - readonly = 1; - break; - - case RW_OPT: - readwrite = 1; - break; - - case NAME_OPT: - if (value == NULL) { - fprintf(stderr, "Missing value for " - "suboption \(aq%s\(aq\en", token[NAME_OPT]); - errfnd = 1; - continue; - } - - name = value; - break; - - default: - fprintf(stderr, "No match found " - "for token: /%s/\en", value); - errfnd = 1; - break; - } - } - if (readwrite && readonly) { - fprintf(stderr, "Only one of \(aq%s\(aq and \(aq%s\(aq can be " - "specified\en", token[RO_OPT], token[RW_OPT]); - errfnd = 1; - } - break; - - default: - errfnd = 1; - } - } - - if (errfnd || argc == 1) { - fprintf(stderr, "\enUsage: %s \-o \en", argv[0]); - fprintf(stderr, "suboptions are \(aqro\(aq, \(aqrw\(aq, " - "and \(aqname=\(aq\en"); - exit(EXIT_FAILURE); - } - - /* Remainder of program... */ - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBgetopt\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getttyent.3 b/manual/LDP_man-pages/draft/man3/getttyent.3 deleted file mode 100644 index 5b77749b..00000000 --- a/manual/LDP_man-pages/draft/man3/getttyent.3 +++ /dev/null @@ -1,80 +0,0 @@ -.\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Fri Aug 20 03:27:22 JST 2004 -.\" by Yuichi SATO -.\" -.TH GETTTYENT 3 2013\-07\-22 GNU "Linux Programmer's Manual" -.SH 名前 -getttyent, getttynam, setttyent, endttyent \- ttys ファイルのエントリーを取得する -.SH 書式 -\fB#include \fP -.sp -\fBstruct ttyent *getttyent(void);\fP -.sp -\fBstruct ttyent *getttynam(const char *\fP\fIname\fP\fB);\fP -.sp -\fBint setttyent(void);\fP -.sp -\fBint endttyent(void);\fP -.SH 説明 -これらの関数はファイル \fB_PATH_TTYS\fP (例えば \fI/etc/ttys\fP) へのインターフェースを提供する。 - -関数 \fBsetttyent\fP() はファイルをオープンする。 また既にオープンされている場合は、巻き戻す。 - -関数 \fBendttyent\fP() はファイルをクローズする。 - -関数 \fBgetttynam\fP() は指定された端末名についてファイルを検索する。 この関数は (以下で説明されている) \fIttyent\fP -構造体へのポインターを返す。 - -関数 \fBgetttyent\fP() は (もし必要であれば) ファイル \fB_PATH_TTYS\fP をオープンし、最初のエントリーを返す。 -ファイルが既にオープンされている場合は、次のエントリーを返す。 \fIttyent\fP 構造体は以下の通りである。 -.in +4n -.nf - -struct ttyent { - char *ty_name; /* 端末デバイス名 */ - char *ty_getty; /* 実行するコマンド。通常は getty */ - char *ty_type; /* termcap のための端末タイプ */ - int ty_status; /* 状態フラグ */ - char *ty_window; /* ウィンドウマネージャを起動するコマンド */ - char *ty_comment; /* コメントフィールド */ -}; -.fi -.in - -\fIty_status\fP は以下のいずれか値をとることができる。 -.br -.nf - -#define TTY_ON 0x01 /* ログインを有効にする (ty_getty プログラムを開始する) */ -#define TTY_SECURE 0x02 /* ユーザー ID 0 でのログインを許可する */ -.fi -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBgetttyent\fP() は静的変数へのポインターを返す。そのため、スレッドセーフではない。 -.LP -関数 \fBsetttyent\fP() と \fBendttyent\fP() は静的変数を使用する。そのため、スレッドセーフではない。 -.LP -関数 \fBgetttynam\fP() はスレッドセーフではない関数 \fBgetttyent\fP() を呼び出す。そのため、スレッドセーフではない。 -.SH 準拠 -POSIX.1\-2001 にはない。 BSD 系に存在し、おそらく他のシステムにもあるだろう。 -.SH 注意 -Linux では、ファイル \fI/etc/ttys\fP と上で説明した関数は使われていない。 -.SH 関連項目 -\fBttyname\fP(3), \fBttyslot\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getumask.3 b/manual/LDP_man-pages/draft/man3/getumask.3 index 229d06e8..9de798be 100644 --- a/manual/LDP_man-pages/draft/man3/getumask.3 +++ b/manual/LDP_man-pages/draft/man3/getumask.3 @@ -34,7 +34,7 @@ .\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI all rights reserved. .\" Translated Thu 05 Dec 2002 by Akihiro MOTOKI .\" -.TH GETUMASK 3 2010\-09\-10 GNU "Linux Programmer's Manual" +.TH GETUMASK 3 2017\-09\-15 GNU "Linux Programmer's Manual" .SH 名前 getumask \- ファイル作成マスクを取得する .SH 書式 @@ -43,30 +43,31 @@ getumask \- ファイル作成マスクを取得する \fB#include \fP .br \fB#include \fP -.sp +.PP \fBmode_t getumask(void);\fP .SH 説明 この関数は現在のファイル作成マスクを返す。 基本的には以下と等価である。 +.PP .in +4n -.nf - +.EX mode_t getumask(void) { mode_t mask = umask( 0 ); umask(mask); return mask; } - -.fi +.EE .in +.PP ドキュメントによると、この関数は スレッドセーフである (\fBumask\fP(2) ライブラリコールとロックを共有する) 点が異なる。 .SH 準拠 ドキュメントに書いてあるだけの GNU 拡張である。 .SH 注意 -バージョン 2.9 時点の glibc では、 この関数についての記載はあるが、まだ実装されていない。 +This function is documented in the glibc manual, but, as at glibc version +2.24, it is not implemented on Linux. (See \fBumask\fP(2) for a thread\-safe +method of discovering a process's umask.) .SH 関連項目 \fBumask\fP(2) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getusershell.3 b/manual/LDP_man-pages/draft/man3/getusershell.3 deleted file mode 100644 index f6da6d78..00000000 --- a/manual/LDP_man-pages/draft/man3/getusershell.3 +++ /dev/null @@ -1,120 +0,0 @@ -.\" 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 19:17:53 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 ISHIOKA Takashi -.\" all rights reserved. -.\" Translated Mon Sep 8 15:02:18 1997 -.\" by ISHIOKA Takashi -.\"O .SH NAME -.\"O getusershell, setusershell, endusershell \- get permitted user shells -.\"O .SH SYNOPSIS -.\"O Feature Test Macro Requirements for glibc (see -.\"O .BR feature_test_macros (7)): -.\"O .SH DESCRIPTION -.\"O The -.\"O .BR getusershell () -.\"O function returns the next line from the file -.\"O \fI/etc/shells\fP, opening the file if necessary. -.\"O The line should contain -.\"O the pathname of a valid user shell. -.\"O If \fI/etc/shells\fP does not exist or -.\"O is unreadable, -.\"O .BR getusershell () -.\"O behaves as if \fI/bin/sh\fP and -.\"O \fI/bin/csh\fP were listed in the file. -.\"O The -.\"O .BR setusershell () -.\"O function rewinds \fI/etc/shells\fP. -.\"O The -.\"O .BR endusershell () -.\"O function closes \fI/etc/shells\fP. -.\"O .SH "RETURN VALUE" -.\"O The -.\"O .BR getusershell () -.\"O function returns a NULL pointer on end-of-file. -.\"O .SH FILES -.\"O .SH "CONFORMING TO" -.\"O .SH "SEE ALSO" -.\" -.TH GETUSERSHELL 3 2013\-06\-21 GNU "Linux Programmer's Manual" -.SH 名前 -getusershell, setusershell, endusershell \- 許可されたユーザーシェルを得る -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *getusershell(void);\fP -.sp -\fBvoid setusershell(void);\fP -.sp -\fBvoid endusershell(void);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBgetusershell\fP(), \fBsetusershell\fP(), \fBendusershell\fP(): -.RS 4 -_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500) -.RE -.ad b -.SH 説明 -\fBgetusershell\fP() 関数は \fI/etc/shells\fP ファイルから (開く必要があればこのファイルを開いてから) -現在行の次の一行を返す。 返された行の中身は有効なユーザーシェルのうちの一つのパス名である。 (訳注. 一行に付き一つのシェルのパス名が書かれている。) -もし \fI/etc/shells\fP が存在しないか、読み込み不可の場合には、 \fBgetusershell\fP() は \fI/bin/sh\fP と -\fI/bin/csh\fP がファイルに記されているかのようにふるまう。 -.PP -\fBsetusershell\fP() 関数は \fI/etc/shells\fP ファイルの ファイルポインターを先頭に戻す。 -.PP -\fBendusershell\fP() 関数は \fI/etc/shells\fP ファイルを閉じる。 -.SH 返り値 -\fBgetusershell\fP() 関数はファイルの終端では NULL を返す。 -.SH ファイル -.nf -/etc/shells -.fi -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBgetusershell\fP(), \fBsetusershell\fP(), \fBendusershell\fP() はスレッドセーフではない。 -.SH 準拠 -4.3BSD. -.SH 関連項目 -\fBshells\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getutent.3 b/manual/LDP_man-pages/draft/man3/getutent.3 deleted file mode 100644 index 856aa70a..00000000 --- a/manual/LDP_man-pages/draft/man3/getutent.3 +++ /dev/null @@ -1,229 +0,0 @@ -.\" Copyright 1995 Mark D. Roth (roth@uiuc.edu) -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" References consulted: -.\" Linux libc source code -.\" Solaris manpages -.\" -.\" Modified Thu Jul 25 14:43:46 MET DST 1996 by Michael Haardt -.\" -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated 1998-03-15, NAKANO Takeo -.\" Updated 2001-10-16, Kentaro Shirakata -.\" Updated 2002-01-03, Kentaro Shirakata -.\" Updated 2005-03-18, Akihiro MOTOKI -.\" Updated 2008-08-11, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH GETUTENT 3 2014\-08\-19 "" "Linux Programmer's Manual" -.SH 名前 -getutent, getutid, getutline, pututline, setutent, endutent, utmpname \- utmp -ファイルのエントリーにアクセスする -.SH 書式 -\fB#include \fP -.sp -\fBstruct utmp *getutent(void);\fP -.br -\fBstruct utmp *getutid(const struct utmp *\fP\fIut\fP\fB);\fP -.br -\fBstruct utmp *getutline(const struct utmp *\fP\fIut\fP\fB);\fP -.sp -\fBstruct utmp *pututline(const struct utmp *\fP\fIut\fP\fB);\fP -.sp -\fBvoid setutent(void);\fP -.br -\fBvoid endutent(void);\fP -.sp -\fBint utmpname(const char *\fP\fIfile\fP\fB);\fP -.SH 説明 -新しいアプリケーションでは、これらの関数の "utmpx" 版を使用すべきである。 これらは POSIX.1 で規定されている。「準拠」の節を参照。 - -\fButmpname\fP() は、他の utmp 関数がアクセスする (utmp フォーマットの) ファイルの名前を指定する。他の関数を使う前に -\fButmpname\fP() を使って ファイル名の指定を行わなかった場合は、 \fI\fP で 定義されている -\fB_PATH_UTMP\fP がファイル名とみなされる。 -.PP -\fBsetutent\fP() は、ファイルポインターを utmp ファイルの先頭に移動する。 -一般的には、他の関数を使う前にこの関数を呼び出しておくと良いだろう。 -.PP -\fBendutent\fP() は utmp ファイルをクローズする。ユーザーコードで -他の関数を使ってこのファイルにアクセスを行った時は、最後にこの関数を 呼び出すべきである。 -.PP -\fBgetutent\fP() は utmp ファイルの現在のファイル位置から一行読み込み、 行の各フィールドの内容を収めた構造体へのポインターを返す。 -この構造体の定義は \fButmp\fP(5) に書かれている。 -.PP -\fBgetutid\fP() は、 utmp ファイル中の現在の位置から順方向 (末尾に向かう方向) へ \fIut\fP に基く検索を行う。 -\fIut\fP\->ut_type が \fBRUN_LVL\fP, \fBBOOT_TIME\fP, \fBNEW_TIME\fP, \fBOLD_TIME\fP の -いずれかなら、 \fBgetutid\fP() は \fBut_type\fP フィールドが \fIut\fP\->ut_type -に一致する最初のエントリーを探す。 \fIut\fP\->ut_type が \fBINIT_PROCESS\fP, \fBLOGIN_PROCESS\fP, -\fBUSER_PROCESS\fP, \fBDEAD_PROCESS\fP のいずれかなら、 \fBgetutid\fP() は \fIut_id\fP フィールドが -\fIut\fP\->ut_id に 一致する最初のエントリーを探す。 -.PP -\fBgetutline\fP() は、 utmp ファイルの現在の位置から末尾に向かって検索を行う。 \fIut_type\fP が -\fBUSER_PROCESS\fP または \fBLOGIN_PROCESS\fP で、 \fIut_line\fP フィールドが \fIut\fP\->ut_line -にマッチする最初の行を返す。 -.PP -\fBpututline\fP() は \fIutmp\fP 構造体 \fIut\fP の内容を utmp ファイルに書き出す。 \fBpututline\fP() は -\fBgetutid\fP() を用いて、新たなエントリーを 挿入するのにふさわしい場所を探す。 \fIut\fP を挿入するふさわしい場所が -見つからない場合は、新たなエントリーをファイルの末尾に追加する。 -.SH 返り値 -\fBgetutent\fP(), \fBgetutid\fP(), \fBgetutline\fP() は、成功すると \fIstruct utmp\fP -へのポインターを返す。 失敗すると NULL を返す (レコードが見つからなかった場合も失敗となる)。 この \fIstruct utmp\fP -は静的な記憶領域に確保され、次にこれらの関数を 呼び出した際に上書きされるかもしれない。 - -\fBpututline\fP() は成功すると \fIut\fP を返す。失敗すると NULL を返す。 - -\fButmpname\fP() は、新しい名前の格納に成功すると 0 を返し、失敗すると \-1 を返す。 - -エラーが発生した場合、これらの関数は \fIerrno\fP にエラーの原因を示す値を設定する。 -.SH エラー -.TP -\fBENOMEM\fP -メモリー不足。 -.TP -\fBESRCH\fP -レコードが見つからなかった。 -.PP -関数 \fBsetutent\fP(), \fBpututline\fP(), \fBgetut*\fP() は \fBopen\fP(2) -に書かれている理由でも失敗することがある。 -.SH ファイル -/var/run/utmp 現在ログイン中のユーザーのデータベース -.br -/var/log/wtmp 過去のユーザーログインのデータベース -.SH 準拠 -XPG2, SVr4. -.LP -XPG2 と SVID 2 では、 \fBpututline\fP() 関数は値を返さないとされており、 (AIX, HP\-UX などの) -多くのシステムではそうなっている。 HP\-UX では、上述の \fBpututline\fP() と同じプロトタイプを持つ 新しい関数 -\fB_pututline\fP() が導入されている。 -.LP -現在では、Linux 以外のシステムでは、これらの関数は全て廃止されている。 SUSv1 の後に出てきた POSIX.1\-2001 -では、もはやこれらの関数はなく、 代わりに以下のものを使う。 -.sp -\fB#include \fP -.sp -\fBstruct utmpx *getutxent(void);\fP -.br -\fBstruct utmpx *getutxid(const struct utmpx *);\fP -.br -\fBstruct utmpx *getutxline(const struct utmpx *);\fP -.br -\fBstruct utmpx *pututxline(const struct utmpx *);\fP -.br -\fBvoid setutxent(void);\fP -.br -\fBvoid endutxent(void);\fP -.PP -これらの関数は glibc により提供されており、 "x" がない関数と同じ処理を行うが、 \fIstruct utmpx\fP を使用する。 Linux -では、この構造体の定義は \fIstruct utmp\fP と同じになっている。 完全を期すために、glibc では \fButmpxname\fP() -も提供している。この関数は POSIX.1 では規定されていない。 -.PP -Linux 以外のシステムでは、 \fIutmpx\fP 構造体は \fIutmp\fP 構造体の上位集合 (superset) になっていて、 -追加のフィールドがあったり、既存のフィールドのサイズが大きくなっていたり するものもある。複数のファイルが使用されている場合もあり、多くの場合 -\fI/var/*/utmpx\fP と \fI/var/*/wtmpx\fP というファイルが使われる。 -.LP -一方、 Linux glibc では複数の \fIutmpx\fP ファイル は使われていない。 -\fIutmp\fP 構造体が十分に大きいからである。 -上記の名前に "x" が付いた関数は "x" が付いていない対応する関数の別名と -なっている (例えば \fIgetutxent\fP() は \fIgetutent\fP() の別名である)。 -.SH 注意 -.SS "glibc での注意" -上記の関数群はスレッドセーフではない。 glibc にはリエントラント版 (reentrant) が追加されている。 -.sp -.nf -\fB#define _GNU_SOURCE\fP /* or _SVID_SOURCE or _BSD_SOURCE; -\& \fBfeature_test_macros\fP(7) 参照 */ -\fB#include \fP -.sp -\fBint getutent_r(struct utmp *\fP\fIubuf\fP\fB, struct utmp **\fP\fIubufp\fP\fB);\fP -.sp -\fBint getutid_r(struct utmp *\fP\fIut\fP\fB,\fP -\fB struct utmp *\fP\fIubuf\fP\fB, struct utmp **\fP\fIubufp\fP\fB);\fP -.sp -\fBint getutline_r(struct utmp *\fP\fIut\fP\fB,\fP -\fB struct utmp *\fP\fIubuf\fP\fB, struct utmp **\fP\fIubufp\fP\fB);\fP -.fi -.sp -これらの関数は GNU での拡張であり、末尾の _r をとった名前の関数と 同様の機能を持つ。 \fIubuf\fP -パラメーターは結果を格納する場所を指定する。 成功すると 0 を返し、結果へのポインターを \fI*ubufp\fP に書き込む。エラーの場合 \-1 を返す。 -上記の関数に対応する utmpx 版は存在しない (POSIX.1 ではこれらの関数を規定されていない)。 -.SH 例 -以下の例では、 utmp のレコードの追加・削除を行っている。このコードは、 擬似端末 (pseudo terminal) -から実行されることを想定している。 実際のアプリケーションでは \fBgetpwuid\fP(3) と \fBttyname\fP(3) -の戻り値を検査するべきである。 -.PP -.nf -#include -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - struct utmp entry; - - system("echo before adding entry:;who"); - - entry.ut_type = USER_PROCESS; - entry.ut_pid = getpid(); - strcpy(entry.ut_line, ttyname(STDIN_FILENO) + strlen("/dev/")); - /* only correct for ptys named /dev/tty[pqr][0\-9a\-z] */ - strcpy(entry.ut_id, ttyname(STDIN_FILENO) + strlen("/dev/tty")); - time(&entry.ut_time); - strcpy(entry.ut_user, getpwuid(getuid())\->pw_name); - memset(entry.ut_host, 0, UT_HOSTSIZE); - entry.ut_addr = 0; - setutent(); - pututline(&entry); - - system("echo after adding entry:;who"); - - entry.ut_type = DEAD_PROCESS; - memset(entry.ut_line, 0, UT_LINESIZE); - entry.ut_time = 0; - memset(entry.ut_user, 0, UT_NAMESIZE); - setutent(); - pututline(&entry); - - system("echo after removing entry:;who"); - - endutent(); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBgetutmp\fP(3), \fButmp\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getutmp.3 b/manual/LDP_man-pages/draft/man3/getutmp.3 deleted file mode 100644 index 82c079fd..00000000 --- a/manual/LDP_man-pages/draft/man3/getutmp.3 +++ /dev/null @@ -1,75 +0,0 @@ -.\" Copyright (c) 2008, Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-08, Akihiro MOTOKI -.\" -.TH GETUTMP 3 2014\-04\-08 Linux "Linux Programmer's Manual" -.SH 名前 -getutmp, getutmpx \- utmp 構造体から utmpx 構造体、その逆のコピーを行う -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP - -\fB void getutmp(const struct utmpx *\fP\fIux\fP\fB, struct utmp *\fP\fIu\fP\fB);\fP -\fB void getutmpx(const struct utmp *\fP\fIu\fP\fB, struct utmpx *\fP\fIux\fP\fB);\fP -.fi -.SH 説明 -\fBgetutmp\fP() 関数は、 \fIux\fP が指す \fIutmpx\fP 構造体の各フィールドを、 -\fIu\fP が指す \fIutmp\fP 構造体の対応するフィールドにコピーする。 -\fBgetutmpx\fP() 関数は逆の操作を行う。 -.SH 返り値 -これらの関数は値を返さない。 -.SH バージョン -これらの関数は glibc バージョン 2.1.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBgetutmp\fP() と \fBgetutmpx\fP() はスレッドセーフである。 -.SH 準拠 -これらの関数は非標準である。 -Linux 以外にも、これらの関数が存在するシステムもいくつかある -(Solaris や NetBSD など)。 -.SH 注意 -.\" e.g., on Solaris, the utmpx structure is rather larger than utmp. -これらの関数が存在する一番の目的は、 -\fIutmp\fP 構造体と \fIutmpx\fP 構造体が異なるフィールドを持たり、 -対応するフィールドの大きさが異なっている、他のシステムとの -互換性のためである。 -Linux では、これらの構造体は同じフィールドを持っており、 -各フィールドのサイズも同じである。 -.SH 関連項目 -\fButmpdump\fP(1), \fBgetutent\fP(3), \fButmp\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getw.3 b/manual/LDP_man-pages/draft/man3/getw.3 deleted file mode 100644 index 793448fa..00000000 --- a/manual/LDP_man-pages/draft/man3/getw.3 +++ /dev/null @@ -1,88 +0,0 @@ -.\" Copyright (c) 1995 by Jim Van Zandt -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Wed Dec 24 12:33:19 JST 1997 -.\" by HIROFUMI Nishizuka -.\" Updated Sun Jun 18 16:38:02 JST 2000 -.\" by Kentaro Shirakata -.\" -.TH GETW 3 2010\-09\-26 GNU "Linux Programmer's Manual" -.SH 名前 -getw, putw \- ワード(int)の入出力 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint getw(FILE *\fP\fIstream\fP\fB);\fP - -\fBint putw(int \fP\fIw\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBgetw\fP(), \fBputw\fP(): -.ad l -.PD 0 -.RS 4 -.TP 4 -glibc 2.3.3 以降: -_SVID_SOURCE || _BSD_SOURCE || -.br -(_XOPEN_SOURCE && - !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600)) -.TP -glibc 2.3.3 より前: -_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE -.RE -.PD -.ad -.SH 説明 -\fBgetw\fP() は \fIstream\fP からワード (\fIint\fP型) を読み込む。 この関数は、SVr4 との互換性のために提供されている。 -この関数の代わりに \fBfread\fP(3) を使用することを勧める。 -.P -\fBputw\fP() は \fIstream\fP にワード \fIw\fP (\fIint\fP型) を書き込む。 この関数は SVr4 -との互換性のために提供されているが、この関数の代わりに \fBfwrite\fP(3) を使用することを勧める。 -.SH 返り値 -通常、 \fBgetw\fP() は読み込んだワードを返し、 \fBputw\fP() は 0 を返す。 エラーが発生した場合、これらの関数は \fBEOF\fP -を返す。 -.SH 準拠 -SVr4, SUSv2. POSIX.1\-2001 には存在しない。 -.SH バグ -エラーの時に返される値は、正しいデータとして返されることもある。 \fBferror\fP(3) を用いると、この二つの場合を区別することが出来る。 -.SH 関連項目 -\fBferror\fP(3), \fBfread\fP(3), \fBfwrite\fP(3), \fBgetc\fP(3), \fBputc\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/getwchar.3 b/manual/LDP_man-pages/draft/man3/getwchar.3 deleted file mode 100644 index 22ae2b97..00000000 --- a/manual/LDP_man-pages/draft/man3/getwchar.3 +++ /dev/null @@ -1,57 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification -.\" http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:56:29 JST 2000 -.\" by HANATAKA Shinya -.\" Updated Sat Nov 3 JST 2001 by Kentaro Shirakata -.\" -.TH GETWCHAR 3 1999\-07\-25 GNU "Linux Programmer's Manual" -.SH 名前 -getwchar \- 標準入力よりワイド文字を読み込む -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwint_t getwchar(void);\fP -.fi -.SH 説明 -\fBgetwchar\fP() 関数は \fBgetchar\fP(3) 関数のワイド文字版である。 \fBstdin\fP からワイド文字を読み込んでそれを返す。 -ストリームの最後に達している場合や \fIferror(stdin)\fP が真の場合には \fBWEOF\fP を返す。ワイド文字変換でエラーが起こった場合には -\fIerrno\fP に \fBEILSEQ\fP を設定して \fBWEOF\fP を返す。 -.PP -これらの処理を停止せずに行いたいときは、 \fBunlocked_stdio\fP(3) を参照のこと。 -.SH 返り値 -\fBgetwchar\fP() 関数は標準入力の次のワイド文字を返すか、 \fBWEOF\fP を返す。 -.SH 準拠 -C99. -.SH 注意 -\fBgetwchar\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存している。 -.PP -\fBgetwchar\fP() が実際には標準入力からマルチバイト列を読み込んで ワイド文字に変換することを期待しても良い。 -.SH 関連項目 -\fBfgetwc\fP(3), \fBunlocked_stdio\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/glob.3 b/manual/LDP_man-pages/draft/man3/glob.3 deleted file mode 100644 index e638e048..00000000 --- a/manual/LDP_man-pages/draft/man3/glob.3 +++ /dev/null @@ -1,207 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" -.\" %%%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 11:12:17 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Mon May 13 23:08:50 1996 by Martin Schulze (joey@linux.de) -.\" Modified 11 May 1998 by Joseph S. Myers (jsm28@cam.ac.uk) -.\" Modified 990912 by aeb -.\" 2007-10-10 mtk -.\" Added description of GLOB_TILDE_NOMATCH -.\" Expanded the description of various flags -.\" Various wording fixes. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 Ken Wakasa all rights reserved. -.\" Translated 1998-06-24, Ken Wakasa -.\" Updated 1999-01-04, Kentaro Shirakata -.\" Updated 2008-02-12, Akihiro MOTOKI , LDP v2.77 -.\" -.TH GLOB 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -glob, globfree \- パターンにマッチするパス名を見付ける。glob() によっ て確保されたメモリー領域を解放する。 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint glob(const char *\fP\fIpattern\fP\fB, int \fP\fIflags\fP\fB,\fP -.br -\fB int (*\fP\fIerrfunc\fP\fB) (const char *\fP\fIepath\fP\fB, int \fP\fIeerrno\fP\fB),\fP -.br -\fB glob_t *\fP\fIpglob\fP\fB);\fP -.br -\fBvoid globfree(glob_t *\fP\fIpglob\fP\fB);\fP -.fi -.SH 説明 -\fBglob\fP() 関数はシェルが用いているルール (\fBglob\fP(7) 参照) に基づいてパターン \fIpattern\fP -にマッチするすべてのパス名を検索する。 チルダ (~) の展開やパラメーター置換は行われない。それらを行いたい場合は \fBwordexp\fP(3) -を使うとよい。 -.PP -\fBglobfree\fP() 関数は前に呼ばれた \fBglob\fP() により動的に確保された記憶領域を解放する。 -.PP -\fBglob\fP() の結果は \fIpglob\fP がポイントする構造体に返される。 \fIpglob\fP は \fIglob_t\fP 型の構造体である。 -\fIglob_t\fP 型は \fI\fP 内で宣言されており、以下の要素を含んでいる。これらの要素は POSIX.2 で定義 -されている (さらに多くの要素が拡張として入っているかもしれない)。 -.PP -.br -.in +4n -.nf -typedef struct { - size_t gl_pathc; /* 今までにマッチしたパスの数 */ - char **gl_pathv; /* マッチしたパス名のリスト */ - size_t gl_offs; /* \fIgl_pathv\fP 内に確保するスロット数 */ -} glob_t; -.fi -.in -.PP -結果は動的に確保された記憶領域に入れられる。 -.PP -パラメーター \fIflags\fP には以下の示す定数のうち、指定したいものをビットごとの OR で与える (一つも 指定しなくてもよい)。これによって -\fBglob\fP() の動作を変更できる。 -.TP -\fBGLOB_ERR\fP -(例えば、ディレクトリに読み取り許可属性が無い場合などで) 読み取りエラーが発生した際に関数から戻る。 デフォルトでは、エラーに関わらず -読み取り可能なディレクトリを全てについて読み取りを実行しようとする。 -.TP -\fBGLOB_MARK\fP -ディレクトリに対応する各々のパスにスラッシュを付加する。 -.TP -\fBGLOB_NOSORT\fP -返されるパス名のソートを行わない。 ソートを行わない理由は、処理時間を節約するためだけである。 デフォルトでは、返されるパス名はソートされる。 -.TP -\fBGLOB_DOOFFS\fP -\fIpglob\->pathv\fP の文字列リストの先頭に \fIpglob\->gl_offs\fP スロット分の領域を予約する。 -予約されたスロットにはヌルポインターが入る。 -.TP -\fBGLOB_NOCHECK\fP -マッチするパターンがなければ、元のパターンを返す。 デフォルトでは、 \fBglob\fP() はマッチするパターンがなければ -\fBGLOB_NOMATCH\fP を返す。 -.TP -\fBGLOB_APPEND\fP -この呼び出しでの結果を直前の \fBglob\fP() の呼び出しで返された結果のベクトルに追加する。最初の \fBglob\fP() -の呼び出しの際にはこのフラグを設定してはいけない。 -.TP -\fBGLOB_NOESCAPE\fP -バックスラッシュ (\(aq\e\(aq) をエスケープ用文字として使用できない。 通常は、バックスラッシュを使って、次に続く文字をクォートすることで、 -特別な意味を持つメタキャラクターを無効することができる。 -.PP -\fIflags\fP には以下に示すものも指定できる。 これらは GNU で拡張されたもので、POSIX.2 では定義されていない。 -.TP -\fBGLOB_PERIOD\fP -先頭のピリオドがメタキャラクターにマッチできるようにする。 デフォルトでは、メタキャラクターは先頭のピリオドにはマッチできない。 -.TP -\fBGLOB_ALTDIRFUNC\fP -ファイルシステムにアクセスする際に、通常のライブラリ関数の代わりに 代替関数 \fIpglob\->gl_closedir\fP, -\fIpglob\->gl_readdir\fP, \fIpglob\->gl_opendir\fP, \fIpglob\->gl_lstat\fP, -\fIpglob\->gl_stat\fP が用いられる。 -.TP -\fBGLOB_BRACE\fP -\fB{a,b}\fP という形式の \fBcsh\fP(1) スタイルの括弧表現を展開する。 括弧表現は入れ子にすることができる。 -したがって、例えば、"{foo/{,cat,dog},bar}" というパターンを 指定した場合に得られる結果は、 4つの文字列 "foo/", -"foo/cat", "foo/dog", "bar" のそれぞれについて \fBglob\fP() を呼び出した場合と同じになる。 -.TP -\fBGLOB_NOMAGIC\fP -パターンにメタキャラクターが含まれていない場合、 マッチ結果として指定されたパターンだけを返す。 -パターンで指定された名前のファイルが存在しない場合であっても、 そのパターンが返される。 -.TP -\fBGLOB_TILDE\fP -チルダの展開を行う。 チルダ (\(aq~\(aq) がパターン内の唯一の文字の場合か、先頭のチルダの直後の文字が スラッシュ (\(aq/\(aq) -の場合、チルダを呼び出し者のホームディレクトリで置換する。 先頭のチルダにユーザー名が続く場合 (例えば "~andrea/bin")、 -チルダとユーザー名をそのユーザーのホームディレクトリで置換する。 ユーザー名が無効な場合やホームディレクトリが決定できない場合は、 置換は実行されない。 -.TP -\fBGLOB_TILDE_CHECK\fP -このフラグを指定すると \fBGLOB_TILDE\fP と同様の振舞いをする。 \fBGLOB_TILDE\fP との違いは、ユーザー名が無効だった場合や -ホームディレクトリが決定できなかった場合に、 パターン自身を使用するのではなく、 \fBglob\fP() がエラーを示す \fBGLOB_NOMATCH\fP -を返すことである。 -.TP -\fBGLOB_ONLYDIR\fP -このフラグは、 \fBglob\fP() に対する「ヒント」であり、 呼び出し側がパターンにマッチするディレクトリにしか興味がないことを知らせる。 -実装においてファイルの種別情報を簡単に決定できる場合は、ディレクトリでない ファイルは呼び出し側に返されない。しかしながら、呼び出し側では、返された -ファイルリストがディレクトリかどうかを確認しなければならない。 (このフラグが存在するのは、呼び出し側がディレクトリにしか興味がない際に -性能を最適化する目的のためだけである。) -.PP -\fIerrfunc\fP が NULL でなければ、 エラーが起こった場合には関数 \fIerrfunc\fP が呼び出される。関数の引数には、失敗したパス名 -\fIepath\fP と \fIerrno\fP (\fBopendir\fP(3), \fBreaddir\fP(3), \fBstat\fP(2). -のいずれかによってセットされた値) が与えられる。 \fIerrfunc\fP が 0 以外の値を返すかもしくは \fBGLOB_ERR\fP がセットされた場合 -\fBglob\fP() は \fIerrfunc\fP の呼び出し後に終了する。 -.PP -呼び出しが成功して戻った場合 \fIpglob\->gl_pathc\fP にはマッチしたパス名が含まれ、 \fIpglob\->gl_pathv\fP -はマッチしたパス名へのポインターのリストへのポインターとなる。 ポインターのリストはヌルポインターで終端される。 -.PP -\fBglob\fP() を何度か続けて呼び出すことができる。その際2回目以降の呼び出しでは \fBGLOB_APPEND\fP フラグが \fIflags\fP -に設定されていなければならない。 -.PP -GNU の拡張として、 \fIpglob\->gl_flags\fP には指定したフラグがセットされる。もし一つでもメタキャラクターが見付かれば -このフラグと \fBGLOB_MAGCHAR\fP との \fBOR\fP を取った結果がセットされる。 -.SH 返り値 -呼び出しが成功して完了すると \fBglob\fP() は 0 を返す。 それ以外の返り値は以下の通り: -.TP -\fBGLOB_NOSPACE\fP -メモリーを使い果たした -.TP -\fBGLOB_ABORTED\fP -読み取りエラー -.TP -\fBGLOB_NOMATCH\fP -一つもマッチしなかった -.SH 準拠 -POSIX.2, POSIX.1\-2001. -.SH 注意 -glibc 2.1 では、 \fIgl_pathc\fP と \fIgl_offs\fP は POSIX.2 で指定されているように \fIsize_t\fP -として宣言されている。 glibc 2.0 では、 \fIint\fP として宣言されている。 -.SH バグ -\fBglob\fP() 関数はその中で呼び出している \fBmalloc\fP(3) や \fBopendir\fP(3) -などの関数の呼び出しで失敗が起こると失敗する。 これにより \fIerrno\fP にそのエラーコードが入る。 -.SH 例 -使用法の一例を以下に示す。以下はシェルで -.sp -.in +4n -ls \-l *.c ../*.c -.in -.sp -をタイプした場合をシミュレートしている。 -.nf -.in +4n - -glob_t globbuf; - -globbuf.gl_offs = 2; -glob("*.c", GLOB_DOOFFS, NULL, &globbuf); -glob("../*.c", GLOB_DOOFFS | GLOB_APPEND, NULL, &globbuf); -globbuf.gl_pathv[0] = "ls"; -globbuf.gl_pathv[1] = "\-l"; -execvp("ls", &globbuf.gl_pathv[0]); -.in -.fi -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/gnu_get_libc_version.3 b/manual/LDP_man-pages/draft/man3/gnu_get_libc_version.3 deleted file mode 100644 index 67b4609d..00000000 --- a/manual/LDP_man-pages/draft/man3/gnu_get_libc_version.3 +++ /dev/null @@ -1,85 +0,0 @@ -.\" Copyright (c) 2008, Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2008 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2008-08-21, Akihiro MOTOKI , LDP v3.04 -.\" -.TH GNU_GET_LIBC_VERSION 3 2012\-08\-26 Linux "Linux Programmer's Manual" -.SH 名前 -gnu_get_libc_version, gnu_get_libc_release \- glibc のバージョンと リリース状態を取得する -.SH 書式 -.nf -\fB#include \fP - -\fBconst char *gnu_get_libc_version(void);\fP -\fBconst char *gnu_get_libc_release(void);\fP -.fi -.SH 説明 -\fBgnu_get_libc_version\fP() 関数は、システムで利用可能な glibc のバージョンを特定する文字列を返す。 - -\fBgnu_get_libc_release\fP() 関数は、システムで利用可能な glibc バージョンのリリース状態を示す 文字列を返す。 -\fIstable\fP といった文字列が返される。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -これらの関数は glibc 固有である。 -.SH 例 -下記のプログラムを実行すると、次のような出力が得られる。 -.in +4n -.nf - -$\fB ./a.out\fP -GNU libc version: 2.8 -GNU libc release: stable -.fi -.in -.SS プログラムのソース -\& -.nf -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - printf("GNU libc version: %s\en", gnu_get_libc_version()); - printf("GNU libc release: %s\en", gnu_get_libc_release()); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBconfstr\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/grantpt.3 b/manual/LDP_man-pages/draft/man3/grantpt.3 deleted file mode 100644 index 3b43ef64..00000000 --- a/manual/LDP_man-pages/draft/man3/grantpt.3 +++ /dev/null @@ -1,59 +0,0 @@ -.\" %%%LICENSE_START(PUBLIC_DOMAIN) -.\" This page is in the public domain. - aeb -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Tue Jul 8 01:56:27 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH GRANTPT 3 2008\-06\-14 GNU "Linux Programmer's Manual" -.SH 名前 -grantpt \- スレーブ擬似端末へのアクセスを許可する -.SH 書式 -.nf -\fB#define _XOPEN_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBint grantpt(int \fP\fIfd\fP\fB);\fP -.fi -.SH 説明 -\fBgrantpt\fP() 関数は、 \fIfd\fP で参照されたマスタ擬似端末に対応するスレーブ擬似端末デバイス のモードと所有者を変更する。 -スレーブのユーザーID は呼び出したプロセスの実 UID に設定される。 グループID として設定される値は規定されていない (例えば \fItty\fP -になる)。 スレーブのモードは 0620 (crw\-\-w\-\-\-\-) に設定される。 -.PP -\fBSIGCHLD\fP シグナルを捕捉するためにシグナルハンドラーが設定されている場合の \fBgrantpt\fP() の動作は規定されていない。 -.SH 返り値 -成功した場合、 \fBgrantpt\fP() は 0 を返す。そうでない場合、\-1 を返し、 \fIerrno\fP に適切な値がセットされる。 -.SH エラー -.TP -\fBEACCES\fP -対応するスレーブ擬似端末にアクセスできなかった。 -.TP -\fBEBADF\fP -引き数 \fIfd\fP が有効なオープンされたファイルディスクリプターでない。 -.TP -\fBEINVAL\fP -引き数 \fIfd\fP は有効だが、マスタ擬似端末に対応するものではない。 -.SH バージョン -\fBgrantpt\fP() は、バージョン 2.1 以降の glibc で提供されている。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -これは UNIX 98 擬似端末 (pseudoterminal) 仕様の一部である。 \fBpts\fP(4) を参照のこと。 -多くのシステムでは、この関数は "pt_chown" と呼ばれる set\-user\-ID された 補助バイナリを用いて実装されている。 Linux の -devpts では、このような補助バイナリを必要としない。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/group_member.3 b/manual/LDP_man-pages/draft/man3/group_member.3 index fa640a91..ed69cf47 100644 --- a/manual/LDP_man-pages/draft/man3/group_member.3 +++ b/manual/LDP_man-pages/draft/man3/group_member.3 @@ -32,13 +32,13 @@ group_member \- プロセスがグループに属しているかを検査する .SH 書式 \fB#include \fP -.sp +.PP \fBint group_member(gid_t \fP\fIgid\fP\fB);\fP -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBgroup_member\fP(): _GNU_SOURCE .SH 説明 \fBgroup_member\fP() 関数は、 呼び出し元の補助グループ ID (\fBgetgroups\fP(2) が返す値) のいずれかが \fIgid\fP @@ -51,6 +51,5 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 .SH 関連項目 \fBgetgid\fP(2), \fBgetgroups\fP(2), \fBgetgrouplist\fP(3), \fBgroup\fP(5) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/gsignal.3 b/manual/LDP_man-pages/draft/man3/gsignal.3 deleted file mode 100644 index e79dc1a7..00000000 --- a/manual/LDP_man-pages/draft/man3/gsignal.3 +++ /dev/null @@ -1,75 +0,0 @@ -.\" Copyright (C) 2002 Andries Brouwer -.\" -.\" %%%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 replaces an earlier man page written by Walter Harms -.\" . -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI, all rights reserved. -.\" Translated Mon Feb 2 2003 by Akihiro MOTOKI -.\" -.TH GSIGNAL 3 2007\-07\-26 "" "Linux Programmer's Manual" -.SH 名前 -gsignal, ssignal \- ソフトウェアシグナル機能 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBtypedef void (*sighandler_t)(int);\fP -.sp -\fBint gsignal(int \fP\fIsignum\fP\fB);\fP -.sp -\fBsighandler_t ssignal(int \fP\fIsignum\fP\fB, sighandler_t \fP\fIaction\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBgsignal\fP(), \fBssignal\fP(): _SVID_SOURCE -.SH 説明 -Linux ではこれらの関数を使用しないこと。 過去に間違いがあり、Linux では \fBgsignal\fP() と \fBssignal\fP() -はそれぞれ \fBraise\fP(3) と \fBsignal\fP(2) の別名になっている。 -.LP -一方、System V 風のシステムでは、これらの関数で、 従来の \fBsignal\fP(2) や \fBkill\fP(2) の関数群とは完全に独立な、 -ソフトウェアシグナリングを実現している。 \fBssignal\fP() 関数は、番号 \fIsignum\fP のソフトウェアシグナルが -\fBgsignal\fP() 関数を使って発生された時にとるべきアクションを定義する。 \fBgsignal\fP() -の返り値は、一つ前に指定されていたアクション、もしくは \fBSIG_DFL\fP である。 \fBgsignal\fP() は以下のような動作を行う: -\fIsignum\fP に対してアクションが指定されていないか、アクション \fBSIG_DFL\fP が指定されていた場合、何もせずに 0 を返す。 -\fIsignum\fP に対して アクション \fBSIG_IGN\fP が指定されていた場合、何もせずに 1 を返す。 それ以外の場合、アクションを -\fBSIG_DFL\fP にリセットし、引き数に \fIsignum\fP を指定してアクション関数を呼び出して、アクション関数の返り値を返す。 -\fIsignum\fP がとり得る値の範囲は実装により異なる (多くの場合 1〜15 か 1〜17 である)。 -.SH 準拠 -これらの関数は、AIX, DG/UX, HP\-UX, SCO, Solaris, Tru64 で使用可能である。 -これらのシステムのほとんどで廃止されたことになっており、 Linux の libc および glibc では正しく実装されていない。 -\fBgsignal_r\fP() と \fBssignal_r\fP() が実装されているシステムもある。 -.SH 関連項目 -\fBkill\fP(2), \fBsignal\fP(2), \fBraise\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/hash.3 b/manual/LDP_man-pages/draft/man3/hash.3 index 7f57175c..05d3f0ae 100644 --- a/manual/LDP_man-pages/draft/man3/hash.3 +++ b/manual/LDP_man-pages/draft/man3/hash.3 @@ -47,7 +47,7 @@ .\" Updated 2008-02-10, Akihiro MOTOKI , LDP v2.77 .\" Updated 2012-05-01, Akihiro MOTOKI .\" -.TH HASH 3 2012\-04\-23 "" "Linux Programmer's Manual" +.TH HASH 3 2017\-09\-15 "" "Linux Programmer's Manual" .UC 7 .SH 名前 hash \- hash データベースへのアクセスメソッド @@ -62,7 +62,7 @@ hash \- hash データベースへのアクセスメソッド ついて説明している。バージョン 2.2 以降の glibc では、もはやこれらの インターフェースは提供されていない。おそらく、このページではなく、 \fIlibdb\fP ライブラリが提供する API をお探しなのだろう。 - +.PP ルーチン \fBdbopen\fP(3) はデータベースファイルに対するライブラリインターフェースである。 サポートされているファイルフォーマットのひとつに hash ファイルがある。 データベースへのアクセスメソッドに関する一般的な記述は \fBdbopen\fP(3) に書かれている。 このマニュアルページでは hash 特有の情報についてのみ記述する。 @@ -71,9 +71,9 @@ hash データ構造は、拡張可能な動的ハッシュスキームである .PP \fBdbopen\fP(3) に渡される hash アクセスメソッドに特有のデータ構造体は、 \fI\fP インクルードファイルで以下のように定義されている。 +.PP .in +4n -.nf - +.EX typedef struct { unsigned int bsize; unsigned int ffactor; @@ -82,7 +82,7 @@ typedef struct { uint32_t (*hash)(const void *, size_t); int lorder; } HASHINFO; -.fi +.EE .in .PP この構造体の要素を以下に示す。 @@ -116,8 +116,9 @@ hash 関数では パフォーマンスが低いこともあるかもしれな ファイルが既に存在している (または \fBO_TRUNC\fP フラグが指定されていない) と、 \fIbsize\fP, \fIffactor\fP, \fIlorder\fP, \fInelem\fP に指定された値は無視され、 ハッシュが作られた時に使った値が使われる。 .PP -hash 関数が指定されると、 \fIhash_open\fP はデータベースが作られた時に指定されていた hash 関数と今回指定された hash -関数が同じかどうかを調べ、 同じでない場合には失敗する。 +If a hash function is specified, \fIhash_open\fP attempts to determine if the +hash function specified is the same as the one with which the database was +created, and fails if it is not. .PP \fBdbm\fP(3), と \fBndbm\fP(3) に記述されているルーチンへの過去互換を取るためのインターフェイスが 存在する。しかしこれらのインターフェイスは以前のファイルフォー マットとは互換性がない。 @@ -128,13 +129,12 @@ hash 関数が指定されると、 \fIhash_open\fP はデータベースが作 バイトオーダーとしてはビッグエンディアンとリトルエンディアンのみが サポートされている。 .SH 関連項目 \fBbtree\fP(3), \fBdbopen\fP(3), \fBmpool\fP(3), \fBrecno\fP(3) - +.PP \fIDynamic Hash Tables\fP, Per\-Ake Larson, Communications of the ACM, April 1988. - +.PP \fIA New Hash Package for UNIX\fP, Margo Seltzer, USENIX Proceedings, Winter 1991. .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/hsearch.3 b/manual/LDP_man-pages/draft/man3/hsearch.3 deleted file mode 100644 index 51c8ed61..00000000 --- a/manual/LDP_man-pages/draft/man3/hsearch.3 +++ /dev/null @@ -1,223 +0,0 @@ -.\" Copyright 1993 Ulrich Drepper (drepper@karlsruhe.gmd.de) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" References consulted: -.\" SunOS 4.1.1 man pages -.\" Modified Sat Sep 30 21:52:01 1995 by Jim Van Zandt -.\" Remarks from dhw@gamgee.acad.emich.edu Fri Jun 19 06:46:31 1998 -.\" Modified 2001-12-26, 2003-11-28, 2004-05-20, aeb -.\" 2008-09-02, mtk: various additions and rewrites -.\" 2008-09-03, mtk, restructured somewhat, in part after suggestions from -.\" Timothy S. Nelson -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 George Momma, -.\" Copyright (c) 2001-2005 Yuichi SATO, -.\" and Copyright (c) 2008 Akihiro MOTOKI -.\" Translated 1998-05-23, George Momma -.\" Updated & Modified 2001-10-15, Yuichi SATO -.\" Updated & Modified 2002-01-03, Yuichi SATO -.\" Updated & Modified 2004-01-17, Yuichi SATO -.\" Updated & Modified 2005-01-10, Yuichi SATO -.\" Updated 2008-09-20, Akihiro MOTOKI -.\" -.TH HSEARCH 3 2014\-01\-05 GNU "Linux Programmer's Manual" -.SH 名前 -hcreate, hdestroy, hsearch, hcreate_r, hdestroy_r, hsearch_r \- ハッシュテーブルの管理 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint hcreate(size_t \fP\fInel\fP\fB);\fP -.sp -\fBENTRY *hsearch(ENTRY \fP\fIitem\fP\fB, ACTION \fP\fIaction\fP\fB);\fP -.sp -\fBvoid hdestroy(void);\fP -.sp -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBint hcreate_r(size_t \fP\fInel\fP\fB, struct hsearch_data *\fP\fIhtab\fP\fB);\fP -.sp -\fBint hsearch_r(ENTRY \fP\fIitem\fP\fB, ACTION \fP\fIaction\fP\fB, ENTRY **\fP\fIretval\fP\fB,\fP -\fB struct hsearch_data *\fP\fIhtab\fP\fB);\fP -.sp -\fBvoid hdestroy_r(struct hsearch_data *\fP\fIhtab\fP\fB);\fP -.fi -.SH 説明 -\fBhcreate\fP(), \fBhsearch\fP(), \fBhdestroy\fP() の 3 つの関数を利用すると、キー (文字列) -と対応するデータから構成される エントリーを格納できるハッシュ検索テーブルを作成、管理することができる。 -これらの関数を使って、一度に使用できるのは一つのハッシュテーブルだけである。 - -\fBhcreate_r\fP(), \fBhsearch_r\fP(), \fBhdestroy_r\fP() の 3 -つの関数はリエントラント版で、これらを利用すると、 一つのプログラムで同時に複数のハッシュテーブルを使うことができる。 最後の引き数 \fIhtab\fP -は関数の操作対象となるテーブルを示す構造体へのポインターである。 プログラマはこの構造体をブラックボックスとして扱うべきである -(つまり、この構造体のフィールドに直接アクセスしたり変更したり しないこと)。 - -.\" e.g., in glibc it is raised to the next higher prime number -最初に、 \fBhcreate\fP() 関数によってハッシュテーブルを作成しなければならない。 引き数 \fInel\fP -でテーブルの最大エントリー数を指定する (この最大値は後で変更することはできないので、よく考えて選択すること)。 -作成されるハッシュテーブルの性能を向上させるために、 関数内部の実装によりこの値は増やされる場合もある。 - -\fBhcreate_r\fP() 関数は \fBhcreate\fP() と同じ動作をするが、構造体 \fI*htab\fP -で示されるテーブルを対象として動作する。 \fIhtab\fP が指し示す構造体は、 \fBhcreate_r\fP() を初めて呼び出す前に 0 -で埋めておかなければならない。 - -\fBhdestroy\fP() 関数は、 \fBhcreate\fP() で作成されたハッシュテーブルが占有していたメモリーを解放する。 -ハッシュテーブルによって占有されていたメモリーを解放し、 新しいテーブルを作成できるようにする。 \fBhdestroy\fP() を呼び出すと、その後は -\fBhcreate\fP() を使って新しいハッシュテーブルを作成することができる。 \fBhdestroy_r\fP() 関数は、同様の処理を、それ以前に -\fBhcreate_r\fP() を使って作成した \fI*htab\fP で示されるハッシュテーブルに対して実行する。 - -\fBhsearch\fP() 関数は、\fIitem\fP と同じキーを持つ項目をハッシュテーブルから -検索し、項目が見つかった場合にはその項目へのポインターを返す (「同じ」かどうかは \fBstrcmp\fP(3) を使って判定する)。 - -引き数 \fIitem\fP は \fBENTRY\fP 型であり、\fI\fP の中で 以下のように定義されている。 -.in +4n -.sp -.nf -typedef struct entry { - char *key; - void *data; -} ENTRY; -.in -.fi -.sp -フィールド \fIkey\fP は検索キーとなるヌル終端された文字列を指す。 フィールド \fIdata\fP は、このキーに対応するデータを指す。 - -検索が失敗した後の動作は、引き数 \fIaction\fP により決まる。 この引き数には \fBENTER\fP か \fBFIND\fP -のいずれかの値を指定しなければならない。 \fBENTER\fP は \fIitem\fP のコピーを挿入することを -(関数の結果として新しいハッシュテーブルエントリーへのポインターを返す)、 \fBFIND\fP は NULL を返すことを意味する (\fIaction\fP が -\fBFIND\fP の場合、 \fIdata\fP は無視される)。 - -\fBhsearch_r\fP() 関数は \fBhsearch\fP() と同様だが、 \fI*htab\fP で示されるハッシュテーブルに対して処理を行う。 -\fBhsearch_r\fP() 関数が \fBhsearch\fP() と異なるのは、見つかった項目へのポインターを、 関数の結果としてではなく、 -\fI*retval\fP に格納して返す点である。 -.SH 返り値 -\fBhcreate\fP() と \fBhcreate_r\fP() は、成功した場合 0 以外の値を返す。 エラーの場合 0 を返し、 \fIerrno\fP -にエラーの原因を示す値を設定する。 - -成功すると、 \fBhsearch\fP() は、ハッシュテーブル内のエントリーへのポインターを返す。 エラーの場合、 \fBhsearch\fP() は -NULL を返す。 エラーとなるのは、 \fIaction\fP が \fBENTER\fP でハッシュテーブルがいっぱいの場合か、 \fIaction\fP が -\fBFIND\fP で \fIitem\fP がハッシュテーブル内に 見つからない場合である。 \fBhsearch_r\fP() は、成功すると 0 -以外を返し、エラーの場合 0 を返す。 エラーの場合、 これら二つの関数は \fIerrno\fP にエラーの原因を示す値を設定する。 -.SH エラー -.LP -\fBhcreate_r\fP() と \fBhdestroy_r\fP() は以下の理由で失敗する可能性がある。 -.TP -\fBEINVAL\fP -\fIhtab\fP が NULL である。 -.PP -\fBhsearch\fP() と \fBhsearch_r\fP() は以下の理由で失敗する可能性がある。 -.TP -\fBENOMEM\fP -\fIaction\fP が \fBENTER\fP で、 \fIkey\fP がテーブル内に見つからず、 テーブルに新しいエントリーを追加する余地がなかった。 -.TP -\fBESRCH\fP -\fIaction\fP が \fBFIND\fP で、 \fIkey\fP がテーブル内に見つからなかった。 -.PP -POSIX.1\-2001 が規定しているのは、エラー \fBENOMEM\fP だけである。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBhcreate\fP(), \fBhsearch\fP(), \fBhdestroy\fP() -はテーブルを格納するのにグローバル空間を使用する。そのため、これらの関数はスレッドセーフではない。 -.LP -関数 \fBhcreate_r\fP(), \fBhsearch_r\fP(), \fBhdestroy_r\fP() はスレッドセーフである。 -.SH 準拠 -関数 \fBhcreate\fP(), \fBhsearch\fP(), \fBhdestroy\fP() は SVr4 から導入されたもので、POSIX.1\-2001 -に記述されている。 関数 \fBhcreate_r\fP, \fBhsearch_r\fP, \fBhdestroy_r\fP は GNU の拡張である。 -.SH 注意 -通常、ハッシュテーブルの実装は、衝突を最小限にするために テーブルに十分な空き領域がある場合に効率がよくなる。 このため、普通は、 \fInel\fP -を、呼び出し側がテーブルに格納しようと思っている エントリーの最大数より少なくとも 25% は大きな値にすべきである。 - -\fBhdestroy\fP() と \fBhdestroy_r\fP() は、ハッシュテーブルのエントリーの要素である \fIkey\fP と \fIdata\fP -が指すバッファーを解放しない (これができないのは、これらのバッファーが動的に割り当てられたのかを 知ることができないからである)。 -これらのバッファーを解放する必要がある場合、 プログラムでは、これらのバッファーを解放できるように管理用のデータ構造を -設けて、これを管理しなければならない (解放が必要となる理由は、たいていは、プログラム自身と生存期間が同じ -ハッシュテーブルを一つだけ作成するのではなく、そのプログラムでは複数の ハッシュテーブルを繰り返して作成したり破棄したりするからであろう)。 -.SH バグ -SVr4 と POSIX.1\-2001 の規定では、 \fIaction\fP は検索が失敗したときにだけ意味を持つとなっている。 -よって、検索が成功した場合、\fIaction\fP の値が \fBENTER\fP でも 何もすべきではない。 (バージョン 2.3 より前の) libc と -glibc の実装はこの規格に違反しており、 この状況で、指定された \fIkey\fP に対応する \fIdata\fP が更新される。 - -ハッシュテーブルエントリーの追加はできるが、削除ができない。 -.SH 例 -.PP -次のプログラムは、ハッシュテーブルに 24 個の項目を挿入し、 それからそのうちのいくつかを表示する。 -.nf - -#include -#include -#include - -static char *data[] = { "alpha", "bravo", "charlie", "delta", - "echo", "foxtrot", "golf", "hotel", "india", "juliet", - "kilo", "lima", "mike", "november", "oscar", "papa", - "quebec", "romeo", "sierra", "tango", "uniform", - "victor", "whisky", "x\-ray", "yankee", "zulu" -}; - -int main() -{ - ENTRY e, *ep; - int i; - - hcreate(30); - - for (i = 0; i < 24; i++) { - e.key = data[i]; - /* データは、ポインターではなく、単なる整数値である。 */ - e.data = (void *) i; - ep = hsearch(e, ENTER); - /* エラーは起こらないはずである。 */ - if (ep == NULL) { - fprintf(stderr, "entry failed\en"); - exit(EXIT_FAILURE); - } - } - - for (i = 22; i < 26; i++) { - /* テーブルにある 2 つのエントリーを表示し、 - あとの 2 つがテーブルにないことを示す。 */ - e.key = data[i]; - ep = hsearch(e, FIND); - printf("%9.9s \-> %9.9s:%d\en", e.key, - ep ? ep\->key : "NULL", ep ? (int)(ep\->data) : 0); - } - hdestroy(); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBbsearch\fP(3), \fBlsearch\fP(3), \fBmalloc\fP(3), \fBtsearch\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/hypot.3 b/manual/LDP_man-pages/draft/man3/hypot.3 deleted file mode 100644 index 724358fe..00000000 --- a/manual/LDP_man-pages/draft/man3/hypot.3 +++ /dev/null @@ -1,131 +0,0 @@ -.\" 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-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kenji Kajiwara -.\" all rights reserved. -.\" Translated Mon Jul 15 18:20:00 JST 1996 -.\" by Kenji Kajiwara -.\" Proof Reading: Takashi Yoshino -.\" Updated & Modified Sun Jun 6 05:30:45 JST 2004 -.\" by Yuichi SATO -.\" Updated & Modified Sat Jan 15 02:32:55 JST 2005 by Yuichi SATO -.\" Updated 2008-09-18, Akihiro MOTOKI -.\" -.TH HYPOT 3 2010\-09\-20 "" "Linux Programmer's Manual" -.SH 名前 -hypot, hypotf, hypotl \- ユークリッド距離関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble hypot(double \fP\fIx\fP\fB, double \fP\fIy\fP\fB);\fP -.br -\fBfloat hypotf(float \fP\fIx\fP\fB, float \fP\fIy\fP\fB);\fP -.br -\fBlong double hypotl(long double \fP\fIx\fP\fB, long double \fP\fIy\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBhypot\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE || -_POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBhypotf\fP(), \fBhypotl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -\fBhypot\fP() 関数は sqrt(\fIx\fP*\fIx\fP+\fIy\fP*\fIy\fP) の値を返す。 これは 直角を挟む 2 辺の長さが \fIx\fP と -\fIy\fP である直角三角形の斜辺の長さ、 すなわち、原点と点 (\fIx\fP,\fIy\fP) との距離である。 - -.\" e.g., hypot(DBL_MIN, DBL_MIN) does the right thing, as does, say -.\" hypot(DBL_MAX/2.0, DBL_MAX/2.0). -計算の中間ステップでは、必要以上のオーバーフローやアンダーフローが 起きないようにして計算が実行される。 -.SH 返り値 -成功すると、これらの関数は、 直角を挟む 2 辺の長さが \fIx\fP と \fIy\fP である直角三角形の斜辺の長さを返す。 - -\fIx\fP か \fIy\fP が無限大の場合、正の無限大が返される。 - -\fIx\fP か \fIy\fP の一方が NaN で、もう一方が無限大でない場合、 NaN が返される。 - -結果がオーバーフローする場合、範囲エラー (range error) が発生し、 各関数はそれぞれ \fBHUGE_VAL\fP, \fBHUGE_VALF\fP, -\fBHUGE_VALL\fP を返す。 - -.\" Actually, could the result not be subnormal if both arguments -.\" are subnormal? I think not -- mtk, Jul 2008 -両方の引き数が非正規化数 (subnormal) で、結果も非正規化数 (subnormal) の場合、 範囲エラーが発生し、正しい結果が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -範囲エラー (range error): 結果のオーバーフロー -\fIerrno\fP に \fBERANGE\fP が設定される。 オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 -.TP -範囲エラー (range error): 結果のアンダーフロー -.\" .I errno -.\" is set to -.\" .BR ERANGE . -アンダーフロー浮動小数点例外 (\fBFE_UNDERFLOW\fP) が上がる。 -.IP -.\" FIXME . Is it intentional that these functions do not set errno? -.\" They do set errno for the overflow case. -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6795 -これらの関数は、この場合に \fIerrno\fP を設定しない。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD にも準拠している。 -.SH 関連項目 -\fBcabs\fP(3), \fBsqrt\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/iconv.3 b/manual/LDP_man-pages/draft/man3/iconv.3 deleted file mode 100644 index 0505d831..00000000 --- a/manual/LDP_man-pages/draft/man3/iconv.3 +++ /dev/null @@ -1,126 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" OpenGroup's Single UNIX specification -.\" http://www.UNIX-systems.org/online.html -.\" -.\" 2000-06-30 correction by Yuichi SATO -.\" 2000-11-15 aeb, fixed prototype -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2000 Yuichi SATO -.\" all rights reserved. -.\" Translated 2000-07-11, Yuichi SATO -.\" Updated 2008-09-14, Akihiro MOTOKI , LDP v3.09 -.\" Updated 2012-05-30, Akihiro MOTOKI -.\" -.TH ICONV 3 2014\-06\-13 GNU "Linux Programmer's Manual" -.SH 名前 -iconv \- 文字セット変換を行う -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t iconv(iconv_t \fP\fIcd\fP\fB,\fP -\fB char **\fP\fIinbuf\fP\fB, size_t *\fP\fIinbytesleft\fP\fB,\fP -\fB char **\fP\fIoutbuf\fP\fB, size_t *\fP\fIoutbytesleft\fP\fB);\fP -.fi -.SH 説明 -\fBiconv\fP() 関数は、ある文字エンコーディングの文字シーケンス列を別の文字 -エンコーディングの文字シーケンスに変換する。\fIcd\fP 引き数は変換ディスク -リプタ (conversion descriptor) であり、以前は \fBiconv_open\fP(3) を呼び出 -すことで生成されていた。変換ディスクリプターは \fBiconv\fP() が変換に使用す -る文字エンコーディングを定義するものである。 \fIinbuf\fP 引き数は入力シー -ケンスの先頭バイトを指す変数のアドレスであり、\fIinbytesleft\fP は入力シー -ケンスのバッファーのバイト数を示す。\fIoutbuf\fP 引き数は出力バッファーで利用 -できる先頭バイトを指す変数のアドレスであり、 \fIoutbytesleft\fP は出力 -バッファーのバイト数を示す。 -.PP -主に使われるのは、 「\fIinbuf\fP が NULL でなく、かつ \fI*inbuf\fP が NULL でない」 という場合である。 この場合、 -\fBiconv\fP() 関数は、 \fI*inbuf\fP で始まるマルチバイト文字列を \fI*outbuf\fP で始まるマルチバイト文字列に変換する。 -\fI*inbuf\fP を先頭として最大 \fI*inbytesleft\fP バイトが読み込まれ、 \fI*outbuf\fP を先頭として最大 -\fI*outbytesleft\fP バイトが書き出される。 -.PP -\fBiconv\fP() 関数は 1 度に 1 つのマルチバイト文字を変換する。 そして、各文字変換毎に、変換された入力バイトの数だけ \fI*inbuf\fP -を増加させ、\fI*inbytesleft\fP を減少させる。 また、変換された出力バイトの数だけ \fI*outbuf\fP -を増加させ、\fI*outbytesleft\fP を減少させる。 さらに、\fIcd\fP に含まれる変換状態を更新する。 -入力の文字エンコーディングがが状態を持つ場合、 \fBiconv\fP() 関数は入力バイトの列に対して変換にも対応しており、 -バイト出力を伴わずに変換状態を更新することができる。 変換は、次の 4 つの場合に停止する。 -.IP 1. 3 -入力に無効なマルチバイト文字列があった場合。この場合、 -関数は \fIerrno\fP を \fBEILSEQ\fP に設定し、 \fI(size_t)\ \-1\fP を返す。 -\fI*inbuf\fP は、無効なマルチバイト文字列の先頭を指したままになる。 -.IP 2. -入力バイト文字列が完全に変換され、\fI*inbytesleft\fP が 0 になった場合。 -この場合、 \fBiconv\fP() は呼出しの間に非可逆変換が行われた回数を返す。 -.IP 3. -入力に不完全なマルチバイト文字列があり、入力バイト文字列がその後で終了 -している場合。この場合、関数は、\fIerrno\fP を \fBEINVAL\fP に設定し、 -\fI(size_t)\ \-1\fP を返す。 \fI*inbuf\fP は、不完全なマルチバイト文字列の先頭 -を指したままにされる。 -.IP 4. -出力バッファーに次の変換された文字列のための空きがない場合。 この場合、 -\fIerrno\fP が \fBE2BIG\fP に設定され、 \fI(size_t)\ \-1\fP が返される。 -.PP -別のケースとしては、 「\fIinbuf\fP が NULL、または \fI*inbuf\fP が NULL である。 しかし、\fIoutbuf\fP が NULL -でなく、かつ \fI*outbuf\fP が NULL でない」 という場合がある。 この場合、 \fBiconv\fP() 関数は、\fIcd\fP -の変換状態を初期状態にして、 対応するシフト文字列を \fI*outbuf\fP に保存しようとする。 最大 \fI*outbytesleft\fP -バイトが、\fI*outbuf\fP を始めとして書き出される。 このリセットされた文字列に対して、出力バッファーに空きがない場合、 この関数は -\fIerrno\fP を \fBE2BIG\fP に設定し、 \fI(size_t)\ \-1\fP を返す。 それ以外の場合、この関数は、書き込まれたバイトの数だけ -\fI*outbuf\fP を増加させ、\fI*outbytesleft\fP を減少させる。 -.PP -3 番目のケースしては、 「\fIinbuf\fP が NULL、または \fI*inbuf\fP が NULL である。 かつ、\fIoutbuf\fP が -NULL、または \fI*outbuf\fP が NULL である」 という場合がある。 この場合、 \fBiconv\fP() 関数は、\fIcd\fP -の変換状態を初期状態にする。 -.SH 返り値 -\fBiconv\fP() 関数は、呼出しの間に非可逆な方法で変換された文字数を返す。 つまり、可逆変換はカウントされない。 エラーの場合、この関数は -\fIerrno\fP を設定し、 \fI(size_t)\ \-1\fP を返す。 -.SH エラー -他のいろいろなエラーのうちから、以下のエラーが起こりうる。 -.TP -\fBE2BIG\fP -\fI*outbuf\fP に十分な空きがない。 -.TP -\fBEILSEQ\fP -入力に無効なマルチバイト文字列があった。 -.TP -\fBEINVAL\fP -入力に不完全なマルチバイト文字列があった。 -.SH バージョン -この関数はバージョン 2.1 以降の glibc で利用可能である。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBiconv\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fIinbuf\fP と \fIoutbuf\fP は \fIchar\ **\fP 型だが、これらの変数が指す -オブジェクトが C の文字列、つまり文字の配列として解釈されることを意味 -するわけではない。文字バイトシーケンスの解釈は変換関数の内部で行われる。 -エンコーディングによっては、バイト 0 もマルチバイト文字の有効な -構成要素の場合がある。 - -\fBiconv\fP() の呼び出し元は、 \fBiconv\fP() に渡すポインターが、 -必要な文字集合の文字にアクセスするのに適したものとなっていることを -保証しなければならない。これには、アライメントに関して厳しい制限が -あるプラットフォームにおいて正しいアライメントになっていることを -保証するといったことも含まれる。 -.SH 関連項目 -\fBiconv_close\fP(3), \fBiconv_open\fP(3), \fBiconvconfig\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/iconv_close.3 b/manual/LDP_man-pages/draft/man3/iconv_close.3 deleted file mode 100644 index ca895f16..00000000 --- a/manual/LDP_man-pages/draft/man3/iconv_close.3 +++ /dev/null @@ -1,48 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2000 Yuichi SATO -.\" all rights reserved. -.\" Translated Tue Jul 11 19:02:58 JST 2000 -.\" by Yuichi SATO -.\" -.TH ICONV_CLOSE 3 2008\-08\-11 GNU "Linux Programmer's Manual" -.SH 名前 -iconv_close \- 文字セット変換のためのディスクリプターを解放する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint iconv_close(iconv_t \fP\fIcd\fP\fB);\fP -.fi -.SH 説明 -\fBiconv_close\fP() 関数は、 \fBiconv_open\fP(3) を使って以前に割り当てられた 変換ディスクリプター \fIcd\fP -を解放する。 -.SH 返り値 -成功した場合、 \fBiconv_close\fP() 関数は 0 を返す。 エラーの場合、この関数は \fIerrno\fP を設定し \-1 を返す。 -.SH バージョン -この関数はバージョン 2.1 以降の glibc で利用可能である。 -.SH 準拠 -UNIX98, POSIX.1\-2001. -.SH 関連項目 -\fBiconv\fP(3), \fBiconv_open\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/iconv_open.3 b/manual/LDP_man-pages/draft/man3/iconv_open.3 deleted file mode 100644 index e0b85832..00000000 --- a/manual/LDP_man-pages/draft/man3/iconv_open.3 +++ /dev/null @@ -1,77 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" OpenGroup's Single UNIX specification -.\" http://www.UNIX-systems.org/online.html -.\" -.\" 2007-03-31 Bruno Haible, Describe the glibc/libiconv //TRANSLIT -.\" and //IGNORE extensions for 'tocode'. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2000 Yuichi SATO -.\" all rights reserved. -.\" Translated Tue Jul 11 19:02:58 JST 2000 -.\" by Yuichi SATO -.\" Updated 2007-06-01, Akihiro MOTOKI , LDP v2.50 -.\" -.TH ICONV_OPEN 3 2008\-08\-11 GNU "Linux Programmer's Manual" -.SH 名前 -iconv_open \- 文字セット変換のためのディスクリプターを割り当てる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBiconv_t iconv_open(const char *\fP\fItocode\fP\fB, const char *\fP\fIfromcode\fP\fB);\fP -.fi -.SH 説明 -\fBiconv_open\fP() 関数は、文字エンコーディング \fIfromcode\fP から 文字エンコーディング \fItocode\fP -へのバイト文字列変換に適した 変換ディスクリプターを割り当てる。 -.PP -\fIfromcode\fP と \fItocode\fP に使うことのできる値と、 サポートされる組み合わせは、システムに依存する。 GNU C -ライブラリでは、使うことのできる値は \fIiconv \-\-list\fP コマンドでリストされ、 リストされたすべての値の組み合わせがサポートされる。 -さらに、 GNU C ライブラリと GNU libiconv ライブラリでは、 以下の接尾辞がサポートされている。 -.TP -//TRANSLIT -\fItocode\fP の後ろに文字列 "//TRANSLIT" が付いている場合、 翻訳 (transliteration) が有効になる。この場合、 -変換先の文字セットで表現できない文字を、その文字と同じように見える 文字 (複数文字の場合もある) で表現することができる。 -.TP -//IGNORE -\fItocode\fP の後ろに文字列 "//IGNORE" が付いている場合、 変換先の文字セットで表現できない文字は黙って無視される。 -.PP -この関数を読んで得られた変換ディスクリプターは、 \fBiconv\fP(3) で 何度でも使うことができる。 これは \fBiconv_close\fP(3) -を使って解放されるまで有効である。 -.PP -変換ディスクリプターは変換状態を持つ。 \fBiconv_open\fP() を用いて生成された後、変換状態は初期状態である。 \fBiconv\fP(3) -を使うことにより、ディスクリプターの変換状態が変更される。 (変換ディスクリプターはマルチスレッドで 同時に使うことができないことを意味している。) -変換状態を初期状態に戻すには、 \fIinbuf\fP 引き数を NULL として \fBiconv\fP(3) を用いること。 -.SH 返り値 -\fBiconv_open\fP() 関数は、新たに割り当てられた変換ディスクリプターを返す。 エラーの場合、この関数は \fIerrno\fP を設定し、 -\fI(iconv_t)\ \-1\fP を返す。 -.SH エラー -他のいろいろなエラーのうち、以下のエラーが起こりうる。 -.TP -\fBEINVAL\fP -\fIfromcode\fP から \fItocode\fP への変換は、この実装ではサポートされていない。 -.SH バージョン -この関数はバージョン 2.1 以降の glibc で利用可能である。 -.SH 準拠 -UNIX98, POSIX.1\-2001. -.SH 関連項目 -\fBiconv\fP(1), \fBiconv\fP(3), \fBiconv_close\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/if_nameindex.3 b/manual/LDP_man-pages/draft/man3/if_nameindex.3 deleted file mode 100644 index 3cbd5d14..00000000 --- a/manual/LDP_man-pages/draft/man3/if_nameindex.3 +++ /dev/null @@ -1,127 +0,0 @@ -.\" Copyright (c) 2012 YOSHIFUJI Hideaki -.\" and Copyright (c) 2012 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2013 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2013-05-22, Akihiro MOTOKI -.\" -.TH IF_NAMEINDEX 3 2012\-11\-21 GNU "Linux Programmer's Manual" -.SH 名前 -if_nameindex, if_freenameindex \- ネットワークインターフェースの名前とインデックスを取得する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBstruct if_nameindex *if_nameindex(void);\fP -\fBvoid if_freenameindex(struct if_nameindex *\fP\fIptr\fP\fB);\fP -.fi -.SH 説明 -\fBif_nameindex\fP() 関数は \fIif_nameindex\fP 構造体の配列を返す。 -各構造体にはローカルシステムのネットワークインターフェースのいずれかの情報が入る。 \fIif_nameindex\fP -構造体には少なくとも以下のフィールドがある。 -.sp -.in +4n -.nf - unsigned int if_index; /* インターフェースのインデックス (1, 2, ...) */ - char *if_name; /*ヌル終端された名前 ("eth0" など) */ -.fi -.in -.PP -\fIif_index\fP フィールドにはインターフェースのインデックスが入る。 \fIifa_name\fP -フィールドはヌル終端されたインターフェース名を指す。 配列の最後は、 \fIif_index\fP が 0 で \fIifa_name\fP が NULL -のエントリーで示される。 -.PP -\fBif_nameindex\fP() が返すデータ構造体は動的に確保される。 必要なくなった際には \fBif_freenameindex\fP() -で解放すべきである。 -.SH 返り値 -成功した場合には \fBif_nameindex\fP() は配列へのポインターを返す。エラー時には NULL が返され、 \fIerrno\fP -が適切に設定される。 -.SH エラー -\fBif_nameindex\fP() が失敗した場合には以下の \fIerrno\fP が設定される。 -.TP -\fBENOBUFS\fP -利用可能なリソースが十分にない。 -.PP -\fBif_nameindex\fP() は、 \fBsocket\fP(2), \fBbind\fP(2), \fBioctl\fP(2), -\fBgetsockname\fP(2), \fBrecvmsg\fP(2), \fBsendto\fP(2), \fBmalloc\fP(3) -に対して規定されているエラーのいずれかで失敗する場合がある。 -.SH バージョン -\fBif_nameindex\fP() 関数は glibc 2.1 で初めて登場したが、 glibc 2.3.4 より前のバージョンの実装では IPv4 -アドレスを持つインターフェースのみをサポートしていた。 IPv4 アドレスを持たないインターフェースがサポートされているのは、 netlink -をサポートするカーネルにおいてのみである。 -.SH 準拠 -RFC\ 3493, POSIX.1\-2001. - -この関数は BSDi 初めて登場した。 -.SH 例 -以下のプログラムはこのページで説明した関数の使い方を示している。このプログラムが生成する出力は以下のようになる。 - -.in +4n -.nf -$ \fB./a.out\fP\fI -1: lo -2: wlan0 -3: em1\fP -.fi -.in -.SS プログラムのソース -.nf -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - struct if_nameindex *if_ni, *i; - - if_ni = if_nameindex(); - if (if_ni == NULL) { - perror("if_nameindex"); - exit(EXIT_FAILURE); - } - - for (i = if_ni; ! (i\->if_index == 0 && i\->if_name == NULL); i++) - printf("%u: %s\en", i\->if_index, i\->if_name); - - if_freenameindex(if_ni); - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBgetsockopt\fP(2), \fBsetsockopt\fP(2), \fBgetifaddrs\fP(3), \fBif_indextoname\fP(3), -\fBif_nametoindex\fP(3), \fBifconfig\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/if_nametoindex.3 b/manual/LDP_man-pages/draft/man3/if_nametoindex.3 deleted file mode 100644 index 1879f5c3..00000000 --- a/manual/LDP_man-pages/draft/man3/if_nametoindex.3 +++ /dev/null @@ -1,78 +0,0 @@ -.\" Copyright (c) 2012 YOSHIFUJI Hideaki -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2013 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2013-05-22, Akihiro MOTOKI -.\" -.TH IF_NAMETOINDEX 3 2014\-04\-01 GNU "Linux Programmer's Manual" -.SH 名前 -if_nametoindex, if_indextoname \- ネットワークインターフェースの名前とインデックスのマッピングを行う -.SH 書式 -.nf -\fB#include \fP -.sp -\fBunsigned int if_nametoindex(const char *\fP\fIifname\fP\fB);\fP -.sp -\fBchar *if_indextoname(unsigned int ifindex, char *\fP\fIifname\fP\fB);\fP -.fi -.SH 説明 -\fBif_nametoindex\fP() 関数は、 名前が \fIifname\fP のネットワークインターフェースのインデックスを返す。 - -\fBif_indextoname\fP() 関数は、 インターフェースのインデックスが \fIifindex\fP -に対応するネットワークインターフェースの名前を返す。 名前は \fIifname\fP が指すバッファーに格納される。 バッファーは少なくとも -\fBIF_NAMESIZE\fP バイトの領域が必要である。 -.SH 返り値 -成功した場合、 \fBif_nametoindex\fP() はネットワークインターフェースのインデックス番号を返す。エラーの場合、 0 を返し、 -\fIerrno\fP を適切に設定にする。 - -成功した場合には \fBif_indextoname\fP() は \fIifname\fP を返す。エラー時には NULL が返され、 \fIerrno\fP -が適切に設定される。 -.SH エラー -\fBif_indextoname\fP() は以下の \fIerrno\fP で失敗する場合がある。 -.TP -\fBENXIO\fP -インデックスに対応するインターフェースがない。 -.PP -\fBif_nametoindex\fP() と \fBif_indextoname\fP() は、 \fBsocket\fP(2) と \fBioctl\fP(2) -に対して規定されているエラーのいずれかで失敗する場合がある。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBif_nametoindex\fP() と \fBif_indextoname\fP() はスレッドセーフである。 -.SH 準拠 -RFC\ 3493, POSIX.1\-2001. - -この関数は BSDi 初めて登場した。 -.SH 関連項目 -\fBgetifaddrs\fP(3), \fBif_nameindex\fP(3), \fBifconfig\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ilogb.3 b/manual/LDP_man-pages/draft/man3/ilogb.3 deleted file mode 100644 index 94973526..00000000 --- a/manual/LDP_man-pages/draft/man3/ilogb.3 +++ /dev/null @@ -1,129 +0,0 @@ -.\" Copyright 2004 Andries Brouwer . -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" Inspired by a page by Walter Harms created 2002-08-10 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Yuichi SATO -.\" and Copyright (c) 2008 Akihiro MOTOKI -.\" Translated Sat Jan 29 05:17:36 JST 2005 -.\" by Yuichi SATO -.\" Updated 2008-09-18, Akihiro MOTOKI -.\" -.TH ILOGB 3 2014\-12\-31 "" "Linux Programmer's Manual" -.SH 名前 -ilogb, ilogbf, ilogbl \- 浮動小数点数の指数部を整数として取得する -.SH 書式 -\fB#include \fP -.sp -\fBint ilogb(double \fP\fIx\fP\fB);\fP -.br -\fBint ilogbf(float \fP\fIx\fP\fB);\fP -.br -\fBint ilogbl(long double \fP\fIx\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBilogb\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBilogbf\fP(), \fBilogbl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -これらの関数は引き数の指数部を符号付き整数として返す。 エラーが起らなかった場合、これらの関数は、対応する \fBlogb\fP(3) 関数を \fIint\fP -でキャストしたものと等価である。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の指数部を符号付き整数として返す。 - -.\" the POSIX.1 spec for logb() says logb() gives pole error for this -.\" case, but for ilogb() it says domain error. -.\" glibc: The numeric value is either `INT_MIN' or `-INT_MAX'. -\fIx\fP がゼロの場合、領域エラー (domain error) が発生し、 \fBFP_ILOGB0\fP が返される。 - -.\" glibc: The numeric value is either `INT_MIN' or `INT_MAX'. -.\" On i386, FP_ILOGB0 and FP_ILOGBNAN have the same value. -\fIx\fP が NaN の場合、領域エラー (domain error) が発生し、 \fBFP_ILOGBNAN\fP が返される。 - -.\" -.\" POSIX.1-2001 also says: -.\" If the correct value is greater than {INT_MAX}, {INT_MAX} -.\" shall be returned and a domain error shall occur. -.\" -.\" If the correct value is less than {INT_MIN}, {INT_MIN} -.\" shall be returned and a domain error shall occur. -\fIx\fP が負の無限大か正の無限大の場合、 領域エラー (domain error) が発生し、 \fBINT_MAX\fP が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー: \fIx\fP が 0 か NaN -不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がり、 \fIerrno\fP に \fBEDOM\fP が設定される -(ただし、「バグ」を参照)。 -.IP -.TP -領域エラー (domain error): \fIx\fP が無限大である -不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がり、 \fIerrno\fP に \fBEDOM\fP が設定される -(ただし、「バグ」を参照)。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBilogb\fP(), \fBilogbf\fP(), \fBilogbl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH バグ -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6794 -バージョン 2.16 より前では、これらの関数の glibc 実装には以下のバグが存在した。 -.IP * 3 -\fIx\fP が 0 か NaN の場合の領域エラーで、\fIerrno\fP が設定されなかったり、(アーキテクチャーによっては) -浮動小数点例外が上がらなかった。 -.IP * 3 -\fIx\fP が無限大の場合の領域エラーで、\fIerrno\fP が設定されず、浮動小数点例外が上がらなかった。 -.SH 関連項目 -\fBlog\fP(3), \fBlogb\fP(3), \fBsignificand\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/index.3 b/manual/LDP_man-pages/draft/man3/index.3 deleted file mode 100644 index f6760cc7..00000000 --- a/manual/LDP_man-pages/draft/man3/index.3 +++ /dev/null @@ -1,74 +0,0 @@ -.\" 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 Mon Apr 12 12:54:34 1993, David Metcalfe -.\" Modified Sat Jul 24 19:13:52 1993, Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Fri Dec 12 12:41:35 JST 1997 -.\" by HIROFUMI Nishizuka -.\" -.TH INDEX 3 2014\-04\-01 GNU "Linux Programmer's Manual" -.SH 名前 -index, rindex \- 文字列中の文字の位置を示す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *index(const char *\fP\fIs\fP\fB, int \fP\fIc\fP\fB);\fP -.sp -\fBchar *rindex(const char *\fP\fIs\fP\fB, int \fP\fIc\fP\fB);\fP -.fi -.SH 説明 -\fBindex\fP() 関数は、文字列 \fIs\fP 中に最初に文字 \fIc\fP が 現れた位置へのポインターを返す。 -.PP -\fBrindex\fP() 関数は、文字列 \fIs\fP 中に最後に文字 \fIc\fP が 現れた位置へのポインターを返す。 -.PP -文字列を終端するヌルバイト (\(aq\e0\(aq) は、文字列の一部とみなされる。 -.SH 返り値 -\fBindex\fP() と \fBrindex\fP() 関数は、一致した文字へのポインターか、 もし文字が見つからない場合は NULL を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBindex\fP() と \fBrindex\fP() はスレッドセーフである。 -.SH 準拠 -4.3BSD; POSIX.1\-2001 では「過去の名残 (LEGACY)」と位置付けられている。 POSIX.1\-2008 では -\fBindex\fP() と \fBrindex\fP() の仕様が削除されている。 代わりに、 \fBstrchr\fP(3) と \fBstrrchr\fP(3) -の使用が推奨されている。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/inet.3 b/manual/LDP_man-pages/draft/man3/inet.3 index a3a11819..026943d6 100644 --- a/manual/LDP_man-pages/draft/man3/inet.3 +++ b/manual/LDP_man-pages/draft/man3/inet.3 @@ -54,7 +54,7 @@ .\" Updated 2007-05-01, Akihiro MOTOKI , LDP v2.46 .\" Updated 2008-08-13, Akihiro MOTOKI, LDP v3.05 .\" -.TH INET 3 2014\-05\-28 GNU "Linux Programmer's Manual" +.TH INET 3 2020\-12\-21 GNU "Linux Programmer's Manual" .SH 名前 inet_aton, inet_addr, inet_network, inet_ntoa, inet_makeaddr, inet_lnaof, inet_netof \- インターネットアドレス操作ルーチン @@ -63,27 +63,33 @@ inet_netof \- インターネットアドレス操作ルーチン \fB#include \fP \fB#include \fP \fB#include \fP -.sp +.PP \fBint inet_aton(const char *\fP\fIcp\fP\fB, struct in_addr *\fP\fIinp\fP\fB);\fP -.sp +.PP \fBin_addr_t inet_addr(const char *\fP\fIcp\fP\fB);\fP -.sp +.PP \fBin_addr_t inet_network(const char *\fP\fIcp\fP\fB);\fP -.sp +.PP \fBchar *inet_ntoa(struct in_addr \fP\fIin\fP\fB);\fP -.sp +.PP \fBstruct in_addr inet_makeaddr(in_addr_t \fP\fInet\fP\fB, in_addr_t \fP\fIhost\fP\fB);\fP -.sp +.PP \fBin_addr_t inet_lnaof(struct in_addr \fP\fIin\fP\fB);\fP -.sp +.PP \fBin_addr_t inet_netof(struct in_addr \fP\fIin\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBinet_aton\fP(), \fBinet_ntoa\fP(): _BSD_SOURCE || _SVID_SOURCE +.RE +.PP +\fBinet_aton\fP(), \fBinet_ntoa\fP(): +.nf + Since glibc 2.19: + _DEFAULT_SOURCE + In glibc up to and including 2.19: + _BSD_SOURCE || _BSD_SOURCE +.fi .SH 説明 \fBinet_aton\fP() は、インターネットホストのアドレス \fIcp\fP を、 IPv4 の数値とドットによる表記から (ネットワークバイトオーダの) バイナリ値へ 変換し、変換結果を \fIinp\fP が指している構造体に格納する。 アドレスが有効な場合 0 @@ -108,7 +114,7 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 notation)\fP と呼ぶ。 また、10 進数 4 つだけを使った形式を \fIIPv4 のドット区切りの 10 進数表記 (IPv4 dotted\-decimal notation)\fP と呼ぶ (\fIIPv4 のドット区切り 4 分割表記 (IPv4 dotted\-decimal notation)\fP と呼ぶこともある)。 - +.PP \fBinet_aton\fP() は渡された文字列が正常に解釈できた場合 1 を返し、 文字列が不正な場合 0 を返す (エラーの場合に \fBerrno\fP はセット\fIされない\fP)。 .PP @@ -133,26 +139,50 @@ notation)\fP と呼ぶこともある)。 ネットワーク番号 \fInet\fP と、ローカルアドレス \fIhost\fP を 組み合わせて生成した、インターネットホストアドレスを ネットワークバイトオーダで返す。 \fIhost\fP, \fInet\fP はともにホストバイトオーダである。 .PP -\fBinet_ntoa\fP(), \fBinet_makeaddr\fP(), \fBinet_lnaof\fP(), \fBinet_netof\fP() -で使用する構造体 \fIin_addr\fP は \fI\fP で次のように定義されている: -.sp +The structure \fIin_addr\fP as used in \fBinet_ntoa\fP(), \fBinet_makeaddr\fP(), +\fBinet_lnaof\fP(), and \fBinet_netof\fP() is defined in +\fI\fP as: +.PP .in +4n -.nf +.EX typedef uint32_t in_addr_t; struct in_addr { in_addr_t s_addr; }; -.fi +.EE .in +.SH 属性 +この節で使用されている用語の説明は \fBattributes\fP(7) を参照のこと。 +.TS +allbox; +lbw30 lb lb +l l l. +Interface Attribute Value +T{ +\fBinet_aton\fP(), +\fBinet_addr\fP(), +.br +\fBinet_network\fP(), +\fBinet_ntoa\fP() +T} Thread safety MT\-Safe locale +T{ +\fBinet_makeaddr\fP(), +\fBinet_lnaof\fP(), +.br +\fBinet_netof\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 -4.3BSD. \fBinet_addr\fP(), \fBinet_ntoa\fP() は POSIX.1\-2001 で規定されている。 -\fBinet_aton\fP() は POSIX.1\-2001 で規定されていないが、ほとんどのシステムで利用可能である。 +\fBinet_addr\fP(), \fBinet_ntoa\fP(): POSIX.1\-2001, POSIX.1\-2008, 4.3BSD. +.PP +\fBinet_aton\fP() is not specified in POSIX.1, but is available on most +systems. .SH 注意 -i386 ではホストバイトオーダは Least Significant Byte (LSB) first (リトルエンディアン) だが、 -インターネットで使われるネットワークバイトオーダは Most Significant Byte (MSB) first (ビッグエンディアン) -である点に注意すること。 - +On x86 architectures, the host byte order is Least Significant Byte first +(little endian), whereas the network byte order, as used on the Internet, is +Most Significant Byte first (big endian). +.PP \fBinet_lnaof\fP(), \fBinet_netof\fP(), \fBinet_makeaddr\fP() は過去の名残であり、渡されたアドレスが \fIクラスフルネットワークアドレス (classful network addresses)\fP であると仮定して処理を行う。 クラスフルネットワークアドレスでは、以下にあるように、 IPv4 ネットワークアドレスをバイト境界でネットワーク部とホスト部に分割する。 @@ -171,20 +201,20 @@ Class C .PP クラスフルネットワークアドレスは現在では廃止され、 クラスレスドメイン間ルーチン (CIDR) に取って代わられた。 CIDR では、アドレスを任意のビット境界 (バイト境界ではない) で ネットワーク部とホスト部に分割する。 -.SH 例 +.SH EXAMPLES 以下は \fBinet_aton\fP() と \fBinet_ntoa\fP() の使用例である。このように実行する。 +.PP .in +4n -.nf - +.EX $\fB ./a.out 226.000.000.037\fP # Last byte is in octal 226.0.0.31 $\fB ./a.out 0x7f.1 \fP # First byte is in hex 127.0.0.1 -.fi +.EE .in .SS プログラムのソース \& -.nf +.EX #define _BSD_SOURCE #include #include @@ -208,12 +238,11 @@ main(int argc, char *argv[]) printf("%s\en", inet_ntoa(addr)); exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \fBbyteorder\fP(3), \fBgetaddrinfo\fP(3), \fBgethostbyname\fP(3), \fBgetnameinfo\fP(3), \fBgetnetent\fP(3), \fBinet_net_pton\fP(3), \fBinet_ntop\fP(3), \fBinet_pton\fP(3), \fBhosts\fP(5), \fBnetworks\fP(5) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/inet_net_pton.3 b/manual/LDP_man-pages/draft/man3/inet_net_pton.3 index f1121954..9534636e 100644 --- a/manual/LDP_man-pages/draft/man3/inet_net_pton.3 +++ b/manual/LDP_man-pages/draft/man3/inet_net_pton.3 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (C) 2014 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) @@ -28,26 +27,26 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH INET_NET_PTON 3 2014\-05\-28 Linux "Linux Programmer's Manual" +.TH INET_NET_PTON 3 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 inet_net_pton, inet_net_ntop \- インターネットのネットワーク番号の変換 .SH 書式 .nf \fB#include \fP - +.PP \fBint inet_net_pton(int \fP\fIaf\fP\fB, const char *\fP\fIpres\fP\fB,\fP \fB void *\fP\fInetp\fP\fB, size_t \fP\fInsize\fP\fB);\fP \fBchar *inet_net_ntop(int \fP\fIaf\fP\fB, const void *\fP\fInetp\fP\fB, int \fP\fIbits\fP\fB,\fP \fB char *\fP\fIpres\fP\fB, size_t \fP\fIpsize\fP\fB);\fP .fi -.sp +.PP \fI\-lresolv\fP でリンクする。 -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBinet_net_pton\fP(), \fBinet_net_ntop\fP(): .ad l .RS 4 @@ -63,29 +62,29 @@ _BSD_SOURCE || _SVID_SOURCE .ad b .SH 説明 これらの関数は (印字可能な) 表記形式とネットワーク形式 (バイナリー形式) 間の変換を行う。 - +.PP どちらの関数でも \fIaf\fP は変換を行うアドレスファミリーを指定する。 サポートされている値は \fBAF_INET\fP だけである。 .SS inet_net_pton() \fBinet_net_pton\fP() 関数は、 表記形式でインターネットネットワーク番号を格納した NULL 終端された文字列である \fIpres\fP をネットワーク形式に変換する。 ネットワークバイトオーダーの変換結果は \fInetp\fP が指すバッファーに格納される (\fInetp\fP 引き数は通常 \fIin_addr\fP 構造体を指している)。 \fInsize\fP 引き数は \fInetp\fP で利用可能なバイト数を示す。 - +.PP 成功すると \fBinet_net_pton\fP() は \fInetp\fP に格納した結果のネットワーク番号フィールドのビット数を返す。 入力の表記形式と返り値に関する議論は「注意」の節を参照。 - +.PP \fI注意\fP: \fInetp\fP が指すバッファーは \fBinet_net_pton\fP() の呼び出し前に 0 で埋めるべきである。 呼び出しではネットワーク番号で必要なバイトだけが書き込まれ、 そのバイト数は完全なネットワークアドレスのバイト数よりも少ないこともある。 .SS inet_net_ntop() \fBinet_net_ntop\fP() 関数は \fInetp\fP が指すバッファーのネットワーク番号を表記形式に変換する。 \fI*netp\fP はネットワークバイトオーダーでの値として解釈される。 \fIbits\fP 引き数は \fI*netp\fP のネットワーク番号のビット数を指定する。 - +.PP NULL 終端された表記形式の文字列は \fIpres\fP が指すバッファーに格納される。 \fIpsize\fP 引き数は \fIpres\fP で利用可能なバイト数を指定する。 表記形式は CIDR 形式、 つまり、 ネットワークアドレスを表すドット区切りの 10 進数に、 スラッシュとネットワーク番号のビットサイズが続く形式である。 .SH 返り値 成功すると \fBinet_net_pton\fP() はネットワーク番号のビット数を返す。 エラーの場合、 \-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 - +.PP 成功すると \fBinet_net_ntop\fP() は \fIpres\fP を返す。 エラーの場合、 NULL を返し、 \fIerrno\fP にエラーを示す値がセットされる。 .SH エラー @@ -103,24 +102,24 @@ NULL 終端された表記形式の文字列は \fIpres\fP が指すバッファ .SH 注意 .SS "inet_net_pton() の入力の表記形式" ネットワーク番号は、 16 進数値、またはドット区切りの 10 進数表記で指定できる。 - +.PP .\" If the hexadecimal string is short, the remaining nibbles are zeroed. 先頭に "0x" か "0X" がある場合 16 進数値となる。 16 進数はネットワークバイトオーダーの左から右へ半オクテット (4 ビット) ずつ順番に埋められる。 - +.PP ドット区切りの 10 進数表記では、 最大 4 つのオクテットをドット区切りの 10 進数で指定する。 したがって、 以下の形式を指定できる。 - +.PP a.b.c.d a.b.c a.b a - +.PP .\" Reading other man pages, some other implementations treat .\" 'c' in a.b.c as a 16-bit number that populates right-most two bytes .\" 'b' in a.b as a 24-bit number that populates right-most three bytes 各部分は 0 から 255 の範囲の数字で、ネットワーク番号の各バイトに左から右にネットワークバイトオーダー (ビッグエンディアン) で順番に埋められる。 省略された部分があれば、 対応するネットワーク番号のバイトは 0 となる。 - +.PP 16 進数とドット区切りの 10 進数形式のどちらの場合も、 ネットワーク番号の後ろにスラッシュと 0 から 32 の範囲の数字をオプションで付けることができる。 この数字はネットワーク番号のビット単位のサイズを示すものである。 .SS "inet_net_pton() の返り値" @@ -140,64 +139,64 @@ NULL 終端された表記形式の文字列は \fIpres\fP が指すバッファ .PP 上記の手順から得られる \fIbits\fP の値が 8 以上だが、 ネットワーク番号で指定されたオクテット数が \fIbits/8\fP より大きい場合、 \fIbits\fP には実際に指定されたオクテット数を 8 倍した値が設定される。 -.SH 例 +.SH EXAMPLES 以下のプログラムは \fBinet_net_pton\fP() と \fBinet_net_ntop\fP() の使用例を示すものである。 \fBinet_net_pton\fP() を使って、 コマンドラインの最初の引き数で渡された表記形式のネットワークアドレスをバイナリー形式に変換し、 \fIinet_net_pton\fP() の返り値を出力する。 それから \fBinet_net_ntop\fP() を使ってバイナリー形式を表記形式に再度戻して、結果の文字列を出力する。 - +.PP \fBinet_net_pton\fP() が \fInetp\fP 引き数のすべてのバイトに書き込むわけではないことを示すため、 プログラムにはオプションで 2 番目のコマンドライン引き数を指定することができ、 その引き数の数字を使って \fBinet_net_pton\fP() を呼び出す前にバッファーを初期化する。 出力の最終行として、 ユーザーがどのバイトが \fBinet_net_pton\fP() によって変更されなかったかを確認できるように、 プログラムは \fBinet_net_pton\fP() が返したバッファーの全バイトを表示する。 - +.PP この実行例では、 \fBinet_net_pton\fP() が推測したネットワーク番号のビット数を表示する。 - +.PP .in +4n -.nf +.EX $ \fB./a.out 193.168\fP inet_net_pton() returned: 24 inet_net_ntop() yielded: 193.168.0/24 Raw address: c1a80000 -.fi +.EE .in - +.PP \fBinet_net_pton\fP() が結果のバッファーの未使用バイトを 0 埋めしないことを確認する。 - +.PP .in +4n -.nf +.EX $ \fB./a.out 193.168 0xffffffff\fP inet_net_pton() returned: 24 inet_net_ntop() yielded: 193.168.0/24 Raw address: c1a800ff -.fi +.EE .in - +.PP 表記形式の文字列で渡されたバイト数が推測した値より大きい場合、 \fBinet_net_pton\fP() が推測するネットワーク番号のサイズを広げることを確認する。 - +.PP .in +4n -.nf +.EX $ \fB./a.out 193.168.1.128\fP inet_net_pton() returned: 32 inet_net_ntop() yielded: 193.168.1.128/32 Raw address: c1a80180 -.fi +.EE .in - +.PP ネットワーク番号のサイズが明示的に指定すると、推測されるネットワーク番号のサイズが上書きされる (ただし、 明示的に指定された残りのバイトは \fBinet_net_pton\fP() で使用され、結果のバッファーに書き込まれる)。 - +.PP .in +4n -.nf +.EX $ \fB./a.out 193.168.1.128/24\fP inet_net_pton() returned: 24 inet_net_ntop() yielded: 193.168.1/24 Raw address: c1a80180 -.fi +.EE .in .SS プログラムのソース -.nf +.EX /* "\-lresolv" でリンクする */ #include @@ -254,10 +253,9 @@ main(int argc, char *argv[]) exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \fBinet\fP(3), \fBnetworks\fP(5) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/inet_ntop.3 b/manual/LDP_man-pages/draft/man3/inet_ntop.3 index 0547ed06..37eae3cf 100644 --- a/manual/LDP_man-pages/draft/man3/inet_ntop.3 +++ b/manual/LDP_man-pages/draft/man3/inet_ntop.3 @@ -34,13 +34,13 @@ .\" Updated 2005-02-26, Akihiro MOTOKI .\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05 .\" -.TH INET_NTOP 3 2008\-11\-11 Linux "Linux Programmer's Manual" +.TH INET_NTOP 3 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 inet_ntop \- IPv4/IPv6 アドレスをバイナリ形式からテキスト形式に変換する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBconst char *inet_ntop(int \fP\fIaf\fP\fB, const void *\fP\fIsrc\fP\fB,\fP \fB char *\fP\fIdst\fP\fB, socklen_t \fP\fIsize\fP\fB);\fP .fi @@ -72,18 +72,29 @@ inet_ntop \- IPv4/IPv6 アドレスをバイナリ形式からテキスト形式 .TP \fBENOSPC\fP 変換されたアドレス文字列の長さが \fIsize\fP で指定されたサイズを超過してしまう。 +.SH 属性 +この節で使用されている用語の説明は \fBattributes\fP(7) を参照のこと。 +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBinet_ntop\fP() +T} Thread safety MT\-Safe locale +.TE +.sp 1 .SH 準拠 .\" 2.1.3: size_t, 2.1.91: socklen_t -POSIX.1\-2001. RFC\ 2553 では最後の引き数 \fIsize\fP のプロトタイプを \fIsize_t\fP -型と定義している。多くのシステムでは RFC\ 2553 にしたがっている。 glibc 2.0 と 2.1 では \fIsize_t\fP だが、 -glibc 2.2 以降では \fIsocklen_t\fP となっている。 +POSIX.1\-2001, POSIX.1\-2008. Note that RFC\ 2553 defines a prototype where +the last argument \fIsize\fP is of type \fIsize_t\fP. Many systems follow RFC\ 2553. Glibc 2.0 and 2.1 have \fIsize_t\fP, but 2.2 and later have +\fIsocklen_t\fP. .SH バグ \fBAF_INET6\fP は IPv4 がマップされた IPv6 アドレスを IPv6 形式に変換してしまう。 -.SH 例 +.SH EXAMPLES \fBinet_pton\fP(3) を参照。 .SH 関連項目 \fBgetnameinfo\fP(3), \fBinet\fP(3), \fBinet_pton\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/inet_pton.3 b/manual/LDP_man-pages/draft/man3/inet_pton.3 index 40823464..24baaea8 100644 --- a/manual/LDP_man-pages/draft/man3/inet_pton.3 +++ b/manual/LDP_man-pages/draft/man3/inet_pton.3 @@ -34,18 +34,20 @@ .\" Translated 2001-01-14, NAKANO Takeo .\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05 .\" -.TH INET_PTON 3 2008\-06\-18 Linux "Linux Programmer's Manual" +.TH INET_PTON 3 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 inet_pton \- IPv4/IPv6 アドレスをテキスト形式からバイナリ形式に変換する .SH 書式 .nf \fB#include \fP - +.PP \fBint inet_pton(int \fP\fIaf\fP\fB, const char *\fP\fIsrc\fP\fB, void *\fP\fIdst\fP\fB);\fP .fi .SH 説明 -この関数は文字列 \fIsrc\fP を、アドレスファミリー \fIaf\fP のネットワークアドレス構造体に変換し、 \fIdst\fP にコピーする。 \fIaf\fP -引き数は \fBAF_INET\fP か \fBAF_INET6\fP のどちらかでなければならない。 +This function converts the character string \fIsrc\fP into a network address +structure in the \fIaf\fP address family, then copies the network address +structure to \fIdst\fP. The \fIaf\fP argument must be either \fBAF_INET\fP or +\fBAF_INET6\fP. \fIdst\fP is written in network byte order. .PP 現在サポートされているアドレスファミリーは以下の通りである。 .TP @@ -78,8 +80,19 @@ IPv6 アドレスの表現方法の詳細については RFC 2373 を参照の 成功する (ネットワークアドレスが正常に変換される) と、 \fBinet_pton\fP() は 1 を返す。 \fIsrc\fP が指定されたアドレスファミリーに対する 正しいネットワークアドレス表記でない場合には、 0 を返す。 \fIaf\fP がサポートされているアドレスファミリーでない場合には、 \-1 を返し、 \fIerrno\fP に \fBEAFNOSUPPORT\fP を設定する。 +.SH 属性 +この節で使用されている用語の説明は \fBattributes\fP(7) を参照のこと。 +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBinet_pton\fP() +T} Thread safety MT\-Safe locale +.TE .SH 準拠 -POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008. .SH 注意 \fBinet_aton\fP(3) や \fBinet_addr\fP(3) と異なり、 \fBinet_pton\fP() は IPv6 アドレスに対応している。 一方で、 \fBinet_pton\fP() が受け付ける IPv4 アドレスはドット区切りの 10 進数表記だけである。 @@ -89,22 +102,22 @@ POSIX.1\-2001. .SH バグ \fBAF_INET6\fP は IPv4 アドレスを認識しない。 代わりに IPv4 アドレスをマッピングした IPv6 アドレスを \fIsrc\fP に与えなければならない。 -.SH 例 +.SH EXAMPLES 以下のプログラムは \fBinet_pton\fP() と \fBinet_ntop\fP(3) の使用例を示すものである。 実行すると以下のようになる。 +.PP .in +4n -.nf - +.EX $\fB ./a.out i6 0:0:0:0:0:0:0:0\fP :: $\fB ./a.out i6 1:0:0:0:0:0:0:8\fP 1::8 $\fB ./a.out i6 0:0:0:0:0:FFFF:204.152.189.116\fP ::ffff:204.152.189.116 -.fi +.EE .in .SS プログラムのソース \& -.nf +.EX #include #include #include @@ -143,10 +156,9 @@ main(int argc, char *argv[]) exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \fBgetaddrinfo\fP(3), \fBinet\fP(3), \fBinet_ntop\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/initgroups.3 b/manual/LDP_man-pages/draft/man3/initgroups.3 deleted file mode 100644 index 6c47ddbe..00000000 --- a/manual/LDP_man-pages/draft/man3/initgroups.3 +++ /dev/null @@ -1,86 +0,0 @@ -.\" 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-24 by Rik Faith -.\" Modified 2004-10-10 by aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 -.\" ISHIKAWA Mutsumi, all rights reserved. -.\" Translated 1998-05-23, ISHIKAWA Mutsumi -.\" Updated 2002-01-09, Kentaro Shirakata -.\" Updated 2005-02-26, Akihiro MOTOKI -.\" -.TH INITGROUPS 3 2007\-07\-26 GNU "Linux Programmer's Manual" -.SH 名前 -initgroups \- 追加のグループアクセスリストの初期化 -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -.sp -\fBint initgroups(const char *\fP\fIuser\fP\fB, gid_t \fP\fIgroup\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBinitgroups\fP(): _BSD_SOURCE -.SH 説明 -\fBinitgroups\fP() 関数はグループデータベース \fI/etc/group\fP を読み 込んで、\fIuser\fP -が所属している全てのグループを使って、グループアク セスリストを初期化する。さらに、\fIgroup\fP に示されるグループもグルー -プアクセスリストに追加される。 - -\fIuser\fP 引数は NULL であってはならない。 -.SH 返り値 -\fBinitgroups\fP() 関数は、成功すると 0 を返す。 エラーの場合は \-1 を返し、 \fIerrno\fP を適切に設定する。 -.SH エラー -.TP -\fBENOMEM\fP -グループ情報構造体を配置するためのメモリーが不足している。 -.TP -\fBEPERM\fP -呼出しプロセスが十分な特権を持っていない。 この関数の裏で実行されるシステムコール \fBsetgroups\fP(2) も参照のこと。 -.SH ファイル -.nf -\fI/etc/group\fP グループデータベースファイル -.fi -.SH 準拠 -SVr4, 4.3BSD. -.SH 関連項目 -\fBgetgroups\fP(2), \fBsetgroups\fP(2), \fBcredentials\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/insque.3 b/manual/LDP_man-pages/draft/man3/insque.3 deleted file mode 100644 index c278eb9c..00000000 --- a/manual/LDP_man-pages/draft/man3/insque.3 +++ /dev/null @@ -1,232 +0,0 @@ -.\" peter memishian -- meem@gnu.ai.mit.edu -.\" $Id: insque.3,v 1.2 1996/10/30 21:03:39 meem Exp meem $ -.\" and Copyright (c) 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 -.\" -.\" References consulted: -.\" Linux libc source code (5.4.7) -.\" Solaris 2.x, OSF/1, and HP-UX manpages -.\" Curry's "UNIX Systems Programming for SVR4" (O'Reilly & Associates 1996) -.\" -.\" Changed to POSIX, 2003-08-11, aeb+wh -.\" mtk, 2010-09-09: Noted glibc 2.4 bug, added info on circular -.\" lists, added example program -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 AKAMATSU Kazuo -.\" all rights reserved. -.\" Translated Thu Jan 7 16:00 JST 1999 -.\" by AKAMATSU Kazuo -.\" Updated Sun Sep 14 JST 2003 by Kentaro Shirakata -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH INSQUE 3 2014\-08\-19 "" "Linux Programmer's Manual" -.SH 名前 -insque, remque \- キューにアイテムを挿入/削除する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid insque(void *\fP\fIelem\fP\fB, void *\fP\fIprev\fP\fB);\fP - -\fBvoid remque(void *\fP\fIelem\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBinsque\fP(), \fBremque\fP(): -.RS 4 -_SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.RE -.ad -.SH 説明 -関数 \fBinsque\fP() と \fBremque\fP() は双方向連結リスト (doubly\-linked list) を -操作する。リスト中のそれぞれの要素は、最初の二つの要素がそれぞれ次と前への -ポインターであるような構造体である。 -リンクリストは、線形 (linear) か環状 (circular) のどちらかになる -(線形の場合には、リストの末尾では次へのポインターが NULL になり、 -リストの先頭では前へのポインターが NULL になる)。 - -\fBinsque\fP() 関数は \fIelem\fP で示される要素を \fIprev\fP で示される -要素の直後に挿入する。 - -リストが線形の場合、\fIinsque(elem, NULL)\fP を呼び出すと、 -リストの最初の要素を挿入することができる。 -この呼び出しを行うと \fIelem\fP の次へのポインターと前へのポインターに -共に NULL が設定される。 - -リストが環状の場合、呼び出す側が、最初の要素の次へのポインターと前へのポインター -が自分自身を指し、また \fBinsque\fP() の呼び出しで \fIprev\fP 引き数が最初の要素 -を指すように保証しなければならない。 - -\fBremque\fP() 関数は \fIelem\fP で示される要素を双方向連結リストから取り除く。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -伝統的に (SunOS, Linux libc 4,5 では) これらの関数の引き数は \fIstruct qelem -*\fP型であり、これは以下のように定義されている。 - -.in +4n -.nf -struct qelem { - struct qelem *q_forw; - struct qelem *q_back; - char q_data[1]; -}; -.fi -.in - -この定義は \fI\fP をインクルードする前に \fB_GNU_SOURCE\fP を定義することで得られる。 - -.\" Linux libc4 and libc 5 placed them -.\" in \fI\fP. -これらの関数のプロトタイプの置かれる場所は、UNIX の種類により異なる。 -上記は POSIX 版である。 \fI\fP にあるシステムもある。 -.SH バグ -glibc 2.4 以前では \fIprev\fP に NULL を指定することができなかった。 -その結果、線形のリストを作成するためには、 -呼び出し側は、最初の呼び出しで、リストの最初の 2 つの要素を持ち、 -各要素の次へのポインターと前へのポインターを適切に初期化したリストを -作成しなければならなかった。 -.SH 例 -次のプログラムは \fBinsque\fP() の使用法を示したものである。 -下記はプログラムの実行例である。 -.in +4n -.nf - -$ \fB./a.out \-c a b c\fP -Traversing completed list: - a - b - c -That was a circular list -.fi -.in -.SS プログラムのソース -\& -.nf -#include -#include -#include -#include - -struct element { - struct element *forward; - struct element *backward; - char *name; -}; - -static struct element * -new_element(void) -{ - struct element *e; - - e = malloc(sizeof(struct element)); - if (e == NULL) { - fprintf(stderr, "malloc() failed\en"); - exit(EXIT_FAILURE); - } - - return e; -} - -int -main(int argc, char *argv[]) -{ - struct element *first, *elem, *prev; - int circular, opt, errfnd; - - /* The "\-c" command\-line option can be used to specify that the - list is circular */ - - errfnd = 0; - circular = 0; - while ((opt = getopt(argc, argv, "c")) != \-1) { - switch (opt) { - case 'c': - circular = 1; - break; - default: - errfnd = 1; - break; - } - } - - if (errfnd || optind >= argc) { - fprintf(stderr, "Usage: %s [\-c] string...\en", argv[0]); - exit(EXIT_FAILURE); - } - - /* Create first element and place it in the linked list */ - - elem = new_element(); - first = elem; - - elem\->name = argv[optind]; - - if (circular) { - elem\->forward = elem; - elem\->backward = elem; - insque(elem, elem); - } else { - insque(elem, NULL); - } - - /* Add remaining command\-line arguments as list elements */ - - while (++optind < argc) { - prev = elem; - - elem = new_element(); - elem\->name = argv[optind]; - insque(elem, prev); - } - - /* Traverse the list from the start, printing element names */ - - printf("Traversing completed list:\en"); - elem = first; - do { - printf(" %s\en", elem\->name); - elem = elem\->forward; - } while (elem != NULL && elem != first); - - if (elem == first) - printf("That was a circular list\en"); - - exit(EXIT_SUCCESS); -} -.fi -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/intro.3 b/manual/LDP_man-pages/draft/man3/intro.3 index 09051f30..e3238543 100644 --- a/manual/LDP_man-pages/draft/man3/intro.3 +++ b/manual/LDP_man-pages/draft/man3/intro.3 @@ -33,18 +33,18 @@ .\" all rights reserved. .\" Translated 2008-02-10, Akihiro MOTOKI .\" -.TH INTRO 3 2010\-11\-11 Linux "Linux Programmer's Manual" +.TH INTRO 3 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 intro \- ライブラリ関数の紹介 .SH 説明 マニュアルの 3 章では、システムコールを実装した 2 章で説明された ライブラリ関数 (システムコールのラッパー) を除いた 全てのライブラリ関数について説明している。 - +.PP この章で説明している関数の多くは標準 C ライブラリ (\fIlibc\fP) のものである。 また、いくつかの関数は、他のライブラリ (例えば、数学ライブラリの \fIlibm\fP やリアルタイムライブラリ \fIlibrt )\fP のものである。後者の場合は、マニュアルページに、 必要なライブラリとリンクするために必要なリンカーオプションが 示されている (例えば、前述のライブラリの場合はそれぞれ \fI\-lm\fP や \fI\-lrt\fP である)。 - +.PP .\" .\" There .\" are various function groups which can be identified by a letter which @@ -83,8 +83,8 @@ intro \- ライブラリ関数の紹介 .SH 関連項目 \fBintro\fP(2), \fBerrno\fP(3), \fBcapabilities\fP(7), \fBcredentials\fP(7), \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) +\fBpath_resolution\fP(7), \fBpthreads\fP(7), \fBsignal\fP(7), \fBstandards\fP(7), +\fBsystem_data_types\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/isalpha.3 b/manual/LDP_man-pages/draft/man3/isalpha.3 index 10b69bf7..7e865282 100644 --- a/manual/LDP_man-pages/draft/man3/isalpha.3 +++ b/manual/LDP_man-pages/draft/man3/isalpha.3 @@ -40,7 +40,7 @@ .\" Updated 2005-02-26, Akihiro MOTOKI .\" Updated 2007-05-01, Akihiro MOTOKI, LDP v2.46 .\" -.TH ISALPHA 3 2014\-03\-18 GNU "Linux Programmer's Manual" +.TH ISALPHA 3 2017\-09\-15 GNU "Linux Programmer's Manual" .SH 名前 isalnum, isalpha, isascii, isblank, iscntrl, isdigit, isgraph, islower, isprint, ispunct, isspace, isupper, isxdigit, isalnum_l, isalpha_l, @@ -49,7 +49,7 @@ ispunct_l, isspace_l, isupper_l, isxdigit_l \- 文字を分類する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint isalnum(int \fP\fIc\fP\fB);\fP \fBint isalpha(int \fP\fIc\fP\fB);\fP \fBint iscntrl(int \fP\fIc\fP\fB);\fP @@ -61,10 +61,10 @@ ispunct_l, isspace_l, isupper_l, isxdigit_l \- 文字を分類する \fBint isspace(int \fP\fIc\fP\fB);\fP \fBint isupper(int \fP\fIc\fP\fB);\fP \fBint isxdigit(int \fP\fIc\fP\fB);\fP - +.PP \fBint isascii(int \fP\fIc\fP\fB);\fP \fBint isblank(int \fP\fIc\fP\fB);\fP - +.PP \fBint isalnum_l(int \fP\fIc\fP\fB, locale_t \fP\fIlocale\fP\fB);\fP \fBint isalpha_l(int \fP\fIc\fP\fB, locale_t \fP\fIlocale\fP\fB);\fP \fBint isblank_l(int \fP\fIc\fP\fB, locale_t \fP\fIlocale\fP\fB);\fP @@ -77,28 +77,27 @@ ispunct_l, isspace_l, isupper_l, isxdigit_l \- 文字を分類する \fBint isspace_l(int \fP\fIc\fP\fB, locale_t \fP\fIlocale\fP\fB);\fP \fBint isupper_l(int \fP\fIc\fP\fB, locale_t \fP\fIlocale\fP\fB);\fP \fBint isxdigit_l(int \fP\fIc\fP\fB, locale_t \fP\fIlocale\fP\fB);\fP - +.PP \fBint isascii_l(int \fP\fIc\fP\fB, locale_t \fP\fIlocale\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP .ad l \fBisascii\fP(): .RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE -.br +_XOPEN_SOURCE + || /* Glibc since 2.19: */ _DEFAULT_SOURCE + || /* Glibc versions <= 2.19: */ _SVID_SOURCE .RE - +.PP \fBisblank\fP(): .RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -または \fIcc\ \-std=c99\fP +_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L .RE - +.PP \fBisalnum_l\fP(), \fBisalpha_l\fP(), \fBisblank_l\fP(), \fBiscntrl_l\fP(), \fBisdigit_l\fP(), \fBisgraph_l\fP(), \fBislower_l\fP(), \fBisprint_l\fP(), \fBispunct_l\fP(), \fBisspace_l\fP(), \fBisupper_l\fP(), \fBisxdigit_l\fP(): @@ -112,7 +111,7 @@ glibc 2.10 より前: _GNU_SOURCE .RE .PD - +.PP \fBisascii_l\fP(): .PD 0 .RS 4 @@ -128,11 +127,11 @@ _GNU_SOURCE .SH 説明 これらの関数は、指定したロケールに従って \fIc\fP を分類する。 \fIc\fP は \fIunsigned char\fP か \fBEOF\fP でなければならない。 "_l" が後ろに付かない関数は現在のロケールに基づいてチェックを行う。 - +.PP "_l" で終わる関数は、ロケールオブジェクト \fIlocale\fP で指定されたロケールに基づいてチェックを行う。 \fIlocale\fP が特別なロケールオブジェクト \fBLC_GLOBAL_LOCALE\fP (\fBduplocale\fP(3) 参照) の場合や、 \fIlocale\fP が有効なオブジェクトロケールハンドルでない場合、 これらの関数の動作は未定義である。 - +.PP 以下のリストでは、 "_l" が後ろに付かない関数の動作を説明する。 "_l" で終わる関数は、現在のロケールではなく、ロケールオブジェクト \fIlocale\fP を使う点だけが異なる。 .TP @@ -181,43 +180,80 @@ _GNU_SOURCE \fB0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F\fP の文字であるかどうかを調べることと等価である。 .SH 返り値 文字 \fIc\fP が調べた文字の種類に合っていれば 0 以外を返す。 そうでなければ 0 を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -.\" FIXME . need a thread-safety statement about the *_l functions -関数 \fBisalnum\fP(), \fBisalpha\fP(), \fBisascii\fP(), \fBisblank\fP(), \fBiscntrl\fP(), -\fBisdigit\fP(), \fBisgraph\fP(), \fBislower\fP(), \fBisprint\fP(), \fBispunct\fP(), -\fBisspace\fP(), \fBisupper\fP(), \fBisxdigit\fP() はスレッドセーフである。 .SH バージョン \fBisalnum_l\fP(), \fBisalpha_l\fP(), \fBisblank_l\fP(), \fBiscntrl_l\fP(), \fBisdigit_l\fP(), \fBisgraph_l\fP(), \fBislower_l\fP(), \fBisprint_l\fP(), \fBispunct_l\fP(), \fBisspace_l\fP(), \fBisupper_l\fP(), \fBisxdigit_l\fP(), \fBisascii_l\fP() は glibc 2.3 以降で利用可能である。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.ad l +.TS +allbox; +lbw32 lb lb +l l l. +Interface Attribute Value +T{ +\fBisalnum\fP(), +\fBisalpha\fP(), +\fBisascii\fP(), +\fBisblank\fP(), +\fBiscntrl\fP(), +\fBisdigit\fP(), +\fBisgraph\fP(), +\fBislower\fP(), +\fBisprint\fP(), +\fBispunct\fP(), +\fBisspace\fP(), +\fBisupper\fP(), +\fBisxdigit\fP() +T} Thread safety MT\-Safe +.TE +.ad +.\" FIXME: need a thread-safety statement about the *_l functions .SH 準拠 C89 では \fBisalnum\fP(), \fBisalpha\fP(), \fBiscntrl\fP(), \fBisdigit\fP(), \fBisgraph\fP(), \fBislower\fP(), \fBisprint\fP(), \fBispunct\fP(), \fBisspace\fP(), \fBisupper\fP(), \fBisxdigit\fP() が規定されているが、 \fBisascii\fP() と \fBisblank\fP() は規定されていない。 POSIX.1\-2001 でもこれらの関数は規定されており、\fBisascii\fP() と \fBisblank\fP() も規定されている (\fBisascii\fP() は XSI 拡張)。 C99 では、ここで挙げた関数のうち \fBisascii\fP() 以外の全てが規定されている。 - +.PP POSIX.1\-2008 では \fBisascii\fP() は廃止予定とされている。ローカライズするアプリケーションで移植性がある形では使用できない点に注意すること。 - +.PP POSIX.1\-2008 では \fBisalnum_l\fP(), \fBisalpha_l\fP(), \fBisblank_l\fP(), \fBiscntrl_l\fP(), \fBisdigit_l\fP(), \fBisgraph_l\fP(), \fBislower_l\fP(), \fBisprint_l\fP(), \fBispunct_l\fP(), \fBisspace_l\fP(), \fBisupper_l\fP(), \fBisxdigit_l\fP() が規定されている。 - +.PP \fBisascii_l\fP() は GNU 拡張である。 .SH 注意 +The standards require that the argument \fIc\fP for these functions is either +\fBEOF\fP or a value that is representable in the type \fIunsigned char\fP. If +the argument \fIc\fP is of type \fIchar\fP, it must be cast to \fIunsigned char\fP, +as in the following example: +.PP +.in +4n +.EX +char c; +\&... +res = toupper((unsigned char) c); +.EE +.in +.PP +This is necessary because \fIchar\fP may be the equivalent of \fIsigned char\fP, +in which case a byte where the top bit is set would be sign extended when +converting to \fIint\fP, yielding a value that is outside the range of +\fIunsigned char\fP. +.PP ある文字がどの種類に入るかということは、現在のロケールに依存する。 たとえば、デフォルトの \fBC\fP ロケールでは \fBisupper\fP() は A のウムラウトを認識できないので、それが大文字だということがわからない。 .SH 関連項目 \fBiswalnum\fP(3), \fBiswalpha\fP(3), \fBiswblank\fP(3), \fBiswcntrl\fP(3), \fBiswdigit\fP(3), \fBiswgraph\fP(3), \fBiswlower\fP(3), \fBiswprint\fP(3), \fBiswpunct\fP(3), \fBiswspace\fP(3), \fBiswupper\fP(3), \fBiswxdigit\fP(3), -\fBnewlocale\fP(3), \fBsetlocale\fP(3), \fBuselocale\fP(3), \fBtoascii\fP(3), -\fBtolower\fP(3), \fBtoupper\fP(3), \fBascii\fP(7), \fBlocale\fP(7) +\fBnewlocale\fP(3), \fBsetlocale\fP(3), \fBtoascii\fP(3), \fBtolower\fP(3), +\fBtoupper\fP(3), \fBuselocale\fP(3), \fBascii\fP(7), \fBlocale\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/isatty.3 b/manual/LDP_man-pages/draft/man3/isatty.3 deleted file mode 100644 index ba373f77..00000000 --- a/manual/LDP_man-pages/draft/man3/isatty.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" Copyright 2008, Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Hiroaki Nagoya -.\" all rights reserved. -.\" Translated Mon Feb 10 1997 by Hiroaki Nagoya -.\" -.TH ISATTY 3 2014\-01\-27 Linux "Linux Programmer's Manual" -.SH 名前 -isatty \- ファイルディスクリプターが端末を参照しているかをチェックする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint isatty(int \fP\fIfd\fP\fB);\fP -.fi -.SH 説明 -\fBisatty\fP() 関数は、 \fIfd\fP が端末を参照するオープンされたファイルディスクリプターかどうかを チェックする。 -.SH 返り値 -\fBisatty\fP() は、 \fIfd\fP が端末を参照するオープンされたファイルディスクリプターであれば 1 を返す。 そうでなければ 0 を返し、 -\fIerrno\fP にエラーを示す値を設定する。 -.SH エラー -.TP -\fBEBADF\fP -\fIfd\fP が有効なファイルディスクリプターではない。 -.TP -\fBEINVAL\fP -.\" FIXME . File a bug for this? -\fIfd\fP が端末以外のファイルを参照している。 POSIX.1\-2001 では、この場合にエラー \fBENOTTY\fP を返すと規定されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBisatty\fP() 関数はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001. -.SH 関連項目 -\fBfstat\fP(2), \fBttyname\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/isfdtype.3 b/manual/LDP_man-pages/draft/man3/isfdtype.3 index c95dd75e..c05292f4 100644 --- a/manual/LDP_man-pages/draft/man3/isfdtype.3 +++ b/manual/LDP_man-pages/draft/man3/isfdtype.3 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (C) 2014 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) @@ -28,21 +27,21 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH ISFDTYPE 3 2014\-03\-13 Linux "Linux Programmer's Manual" +.TH ISFDTYPE 3 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 isfdtype \- ファイルディスクリプターのファイル種別を検査する .SH 書式 .nf \fB#include \fP \fB#include \fP - +.PP \fBint isfdtype(int \fP\fIfd\fP\fB, int \fP\fIfdtype\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBisfdtype\fP(): .ad l .RS 4 @@ -74,6 +73,5 @@ Tru64 UNIX に存在し、おそらく他のシステムにも存在する (Open .SH 関連項目 \fBfstat\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/isgreater.3 b/manual/LDP_man-pages/draft/man3/isgreater.3 deleted file mode 100644 index 25c5da82..00000000 --- a/manual/LDP_man-pages/draft/man3/isgreater.3 +++ /dev/null @@ -1,108 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" 2002-07-27 Walter Harms -.\" this was done with the help of the glibc manual -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004-2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Fri Aug 20 04:03:26 JST 2004 -.\" by Yuichi SATO -.\" Updated & Modified Sat Jan 15 02:32:55 JST 2005 by Yuichi SATO -.\" Updated 2008-09-18, Akihiro MOTOKI -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" -.TH ISGREATER 3 2014\-01\-27 "" "Linux Programmer's Manual" -.SH 名前 -isgreater, isgreaterequal, isless, islessequal, islessgreater, isunordered \- -NaN に対して例外を発生せずに、浮動小数点数の大小関係の判定を行う -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint isgreater(\fP\fIx\fP\fB, \fP\fIy\fP\fB);\fP -.sp -\fBint isgreaterequal(\fP\fIx\fP\fB, \fP\fIy\fP\fB);\fP -.sp -\fBint isless(\fP\fIx\fP\fB, \fP\fIy\fP\fB);\fP -.sp -\fBint islessequal(\fP\fIx\fP\fB, \fP\fIy\fP\fB);\fP -.sp -\fBint islessgreater(\fP\fIx\fP\fB, \fP\fIy\fP\fB);\fP -.sp -\fBint isunordered(\fP\fIx\fP\fB, \fP\fIy\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -ここで説明する全ての関数: -.RS -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -(\fB<\fP、「小なり」のような) 通常の関係操作 (relation operations) は、 -オペランドの一方が NaN の場合には失敗する。 これは例外の原因になる。 -これを避けるため、C99 では以下のリストに示すマクロを定義している。 - -これらのマクロでは、引き数を 1 回だけ評価することが保証されている。 -引き数には実数の浮動小数点数型を指定しなければならない。 -(注意: これらのマクロの引き数に整数値を渡さないこと。なぜなら -整数値の引き数は実数の浮動小数点型に変換されないからである。) -.TP -\fBisgreater\fP() -\fI(x)\ >\ (y)\fP を決定する。 \fIx\fP または \fIy\fP が NaN でも例外を発生しない。 -.TP -\fBisgreaterequal\fP() -\fI(x)\ >=\ (y)\fP を決定する。 \fIx\fP または \fIy\fP が NaN でも例外を発生しない。 -.TP -\fBisless\fP() -\fI(x)\ <\ (y)\fP を決定する。 \fIx\fP または \fIy\fP が NaN でも例外を発生しない。 -.TP -\fBislessequal\fP() -\fI(x)\ <=\ (y)\fP を決定する。 \fIx\fP または \fIy\fP が NaN でも例外を発生しない。 -.TP -\fBislessgreater\fP() -\fI(x)\ < (y) || (x) >\ (y)\fP を決定する。 \fIx\fP または \fIy\fP が NaN でも例外を発生しない。 -このマクロは \fIx\ !=\ y\fP と等価ではない。 なぜなら、この評価式は \fIx\fP または \fIy\fP が NaN の場合に true -となるためである。 -.TP -\fBisunordered\fP() -引き数が unordered かどうか、つまり引き数の少なくとも一方が NaN かどうか を判定する。 -.SH 返り値 -\fBisunordered\fP() 以外のマクロは関係操作の結果を返す。 一方の引き数が NaN の場合、これらのマクロは 0 を返す。 - -\fBisunordered\fP() は \fIx\fP か \fIy\fP が NaN の場合 1 を、 それ以外の場合 0 を返す。 -.SH エラー -エラーは発生しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -マクロ \fBisgreater\fP(), \fBisgreaterequal\fP(), \fBisless\fP(), \fBislessequal\fP(), -\fBislessgreater\fP(), \fBisunordered\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 注意 -これらの関数は全てのハードウェアでサポートされているわけではない。 サポートされていない場合は、マクロでエミュレートされる。 -エミュレートされる場合は、性能上での不利となる。 NaN について心配しなくて構わない場合は、 これらの関数を使わないこと。 -.SH 関連項目 -\fBfpclassify\fP(3), \fBisnan\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/iswalnum.3 b/manual/LDP_man-pages/draft/man3/iswalnum.3 deleted file mode 100644 index a33c6aae..00000000 --- a/manual/LDP_man-pages/draft/man3/iswalnum.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Mon Aug 30 21:33:06 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" Updated Sun Dec 26 19:31:08 JST 1999 -.\" by Kentaro Shirakata -.\" -.TH ISWALNUM 3 2014\-01\-28 GNU "Linux Programmer's Manual" -.SH 名前 -iswalnum \- 英数字ワイド文字かどうかを調べる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint iswalnum(wint_t \fP\fIwc\fP\fB);\fP -.fi -.SH 説明 -\fBiswalnum\fP() 関数は、 \fBisalnum\fP(3) に対応するワイド文字関数である。 この関数は、あるワイド文字が文字クラス -"alnum" に属するかどうかを調べ る。 -.PP -ワイド文字クラス "alnum" は、ワイド文字クラス "graph" のサブクラスであ り、したがってワイド文字クラス "print" -のサブクラスでもある。 -.PP -ワイド文字クラス "print" のサブクラスなので、ワイド文字クラス "alnum" はワイド文字クラス "cntrl" と共通部分を持たない。 -.PP -ワイド文字クラス "graph" のサブクラスなので、ワイド文字クラス "alnum" はワイド文字クラス "space" とそのサブクラスである -"blank" と共通 部分を持たない。 -.PP -ワイド文字クラス "alnum" は、ワイド文字クラス "punct" と共通部分を持たない。 -.PP -ワイド文字クラス "alnum" は、ワイド文字クラス "alpha" と "digit" の和 集合である。したがって、このクラスはワイド文字クラス -"xdigit" も含む。 -.PP -ワイド文字クラス "alnum" は、少なくとも \(aqA\(aq から \(aqZ\(aq, \(aqa\(aq から \(aqz\(aq -までの文字と \(aq0\(aq から \(aq9\(aq までの数字を 常に含む。 -.SH 返り値 -\fBiswalnum\fP() 関数は、\fIwc\fP が文字クラス "alnum" に属するワイド文字 ならば 0 でない値を返す。それ以外の場合には 0 -を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBiswalnum\fP() 関数は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -C99. -.SH 注意 -\fBiswalnum\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.SH 関連項目 -\fBisalnum\fP(3), \fBiswctype\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/iswalpha.3 b/manual/LDP_man-pages/draft/man3/iswalpha.3 deleted file mode 100644 index 083c8eb7..00000000 --- a/manual/LDP_man-pages/draft/man3/iswalpha.3 +++ /dev/null @@ -1,72 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Wed Aug 31 22:40:19 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" Updated Sun Dec 26 19:31:18 JST 1999 -.\" by Kentaro Shirakata -.\" -.TH ISWALPHA 3 2014\-01\-28 GNU "Linux Programmer's Manual" -.SH 名前 -iswalpha \- 英字ワイド文字かどうかを調べる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint iswalpha(wint_t \fP\fIwc\fP\fB);\fP -.fi -.SH 説明 -\fBiswalpha\fP() 関数は \fBisalpha\fP(3) に対応するワイド文字関数である。 この関数は \fIwc\fP -がワイド文字かどうかを調べる。 -.PP -ワイド文字クラス "alpha" は、ワイド文字クラス "alnum" のサブクラスであ る。したがって、ワイド文字クラス "graph" -とワイド文字クラス "print" の サブクラスでもある。 -.PP -ワイド文字クラス "print" のサブクラスなので、ワイド文字クラス "alpha" はワイド文字クラス "cntrl" と共通部分を持たない。 -.PP -ワイド文字クラス "graph" のサブクラスなので、ワイド文字クラス "alpha" はワイド文字クラス "space" とそのサブクラスである -"blank" と共通 部分を持たない。 -.PP -ワイド文字クラス "alnum" のサブクラスなので、ワイド文字クラス "alpha" はワイド文字クラス "punct" と共通部分を持たない。 -.PP -ワイド文字クラス "alpha" は、ワイド文字クラス "digit" と共通部分を持たない。 -.PP -ワイド文字クラス "alpha" は、ワイド文字クラス "upper" と "lower" を含 む。 -.PP -ワイド文字クラス "alpha" は、少なくとも \(aqA\(aq から \(aqZ\(aq, \(aqa\(aq から \(aqz\(aq -までの文字を常に含む。 -.SH 返り値 -\fBiswalpha\fP() 関数は、\fIwc\fP がワイド文字クラス "alpha" に属する ワイド文字ならば 0 でない値を返す。それ以外の場合には -0 を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBiswalpha\fP() 関数は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -C99. -.SH 注意 -\fBiswalpha\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.SH 関連項目 -\fBisalpha\fP(3), \fBiswctype\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/iswblank.3 b/manual/LDP_man-pages/draft/man3/iswblank.3 deleted file mode 100644 index a0bb725d..00000000 --- a/manual/LDP_man-pages/draft/man3/iswblank.3 +++ /dev/null @@ -1,76 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Wed Sep 1 22:40:19 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" Updated Sun Dec 26 19:31:26 JST 1999 -.\" by Kentaro Shirakata -.\" -.TH ISWBLANK 3 2014\-02\-10 GNU "Linux Programmer's Manual" -.SH 名前 -iswblank \- 空白ワイド文字かどうかを調べる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint iswblank(wint_t \fP\fIwc\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBiswblank\fP(): -.RS -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBiswblank\fP() 関数は、 \fBisblank\fP(3) に対応するワイド文字関数である。 この関数は、\fIwc\fP がワイド文字クラス -"blank" に属するワイド文字かど うかを調べる。 -.PP -ワイド文字クラス "blank" はワイド文字クラス "space" のサブクラスである。 -.PP -ワイド文字クラス "space" のサブクラスなので、ワイド文字クラス "blank" はワイド文字クラス "graph" -とは共通部分を持たず、したがってそのサブクラス である "alnum", "alpha", "upper", "lower", "digit", -"xdigit", "punct" とも共通部分を持たない。 -.PP -ワイド文字クラス "blank" は、少なくとも空白文字と制御文字 \(aq\et\(aq を常に 含む。 -.SH 返り値 -\fBiswblank\fP() 関数は、\fIwc\fP がワイド文字クラス "blank" に属する ワイド文字ならば 0 でない値を返す。それ以外の場合には -0 を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBiswblank\fP() 関数は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fBiswblank\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.SH 関連項目 -\fBisblank\fP(3), \fBiswctype\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/iswcntrl.3 b/manual/LDP_man-pages/draft/man3/iswcntrl.3 deleted file mode 100644 index fd9a1e92..00000000 --- a/manual/LDP_man-pages/draft/man3/iswcntrl.3 +++ /dev/null @@ -1,58 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Wed Sep 1 22:51:30 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH ISWCNTRL 3 2014\-02\-10 GNU "Linux Programmer's Manual" -.SH 名前 -iswcntrl \- ワイド制御文字かどうかを調べる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint iswcntrl(wint_t \fP\fIwc\fP\fB);\fP -.fi -.SH 説明 -\fBiswcntrl\fP() 関数は、 \fBiscntrl\fP(3) に対応するワイド文字関数である。 この関数は、\fIwc\fP がワイド文字クラス -"cntrl" に属するワイド文字かど うかを調べる。 -.PP -ワイド文字クラス "cntrl" はワイド文字クラス "print" とは共通部分を持た ず、したがってそのサブクラスである "graph", -"alpha", "upper", "lower", "digit", "xdigit", "punct" とも共通部分を持たない。 -.PP -unsigned char 型である \fIc\fP に対しては、\fIiscntrl(c)\fP は暗黙的に \fIiswcntrl(btowc(c))\fP を行う。 -.SH 返り値 -関数 \fBiswcntrl\fP() は、\fIwc\fP がワイド文字クラス "cntrl" に属する ワイド文字ならば 0 -でない値を返す。そうでない場合には 0 を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBiswcntrl\fP() 関数は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -C99. -.SH 注意 -\fBiswcntrl\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.SH 関連項目 -\fBiscntrl\fP(3), \fBiswctype\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/iswctype.3 b/manual/LDP_man-pages/draft/man3/iswctype.3 deleted file mode 100644 index 08cb265a..00000000 --- a/manual/LDP_man-pages/draft/man3/iswctype.3 +++ /dev/null @@ -1,57 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Thu Sep 2 21:47:20 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH ISWCTYPE 3 2014\-02\-26 GNU "Linux Programmer's Manual" -.SH 名前 -iswctype \- ワイド文字の分類 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint iswctype(wint_t \fP\fIwc\fP\fB, wctype_t \fP\fIdesc\fP\fB);\fP -.fi -.SH 説明 -\fIwc\fP が \fIdesc\fP で指示された文字属性を持つ (言い換えると、\fIdesc\fP で指示 された文字クラスに属する) ワイド文字ならば、 -\fBiswctype\fP() 関数は 0 で ない値を返す。それ以外の場合にはこの関数は 0 を返す。\fIwc\fP が \fBWEOF\fP ならば 0 -が返される。 -.PP -\fIdesc\fP は \fBwctype\fP(3) 関数が返す文字属性指示子でなければならない。 -.SH 返り値 -\fBiswctype\fP() 関数は、\fIwc\fP が指示された属性を持つならば 0 でない 値を返す。そうでなければ 0 を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBiswctype\fP() 関数はスレッドセーフである。 -.SH 準拠 -C99. -.SH 注意 -\fBiswctype\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.SH 関連項目 -\fBiswalnum\fP(3), \fBiswalpha\fP(3), \fBiswblank\fP(3), \fBiswcntrl\fP(3), -\fBiswdigit\fP(3), \fBiswgraph\fP(3), \fBiswlower\fP(3), \fBiswprint\fP(3), -\fBiswpunct\fP(3), \fBiswspace\fP(3), \fBiswupper\fP(3), \fBiswxdigit\fP(3), -\fBwctype\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/iswdigit.3 b/manual/LDP_man-pages/draft/man3/iswdigit.3 deleted file mode 100644 index aacf2e7e..00000000 --- a/manual/LDP_man-pages/draft/man3/iswdigit.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Thu Sep 2 21:56:46 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" Updated Sun Dec 26 19:31:32 JST 1999 -.\" by Kentaro Shirakata -.\" -.TH ISWDIGIT 3 1999\-07\-25 GNU "Linux Programmer's Manual" -.SH 名前 -iswdigit \- 数字ワイド文字であるかどうかを調べる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint iswdigit(wint_t \fP\fIwc\fP\fB);\fP -.fi -.SH 説明 -\fBiswdigit\fP() 関数は、 \fBisdigit\fP(3) に対応するワイド文字関数である。 この関数は、\fIwc\fP がワイド文字クラス -"digit" に属するワイド文字かど うかを調べる。 -.PP -ワイド文字クラス "digit" はワイド文字クラス "xdigit" のサブクラスであ る。したがってワイド文字クラス "alnum" -や、その親クラスである "graph", さらにその親クラスである "print" のサブクラスでもある。 -.PP -ワイド文字クラス "print" のサブクラスなので、ワイド文字クラス "digit" はワイド文字クラス "cntrl" と共通部分を持たない。 -.PP -ワイド文字クラス "graph" のサブクラスなので、ワイド文字クラス "digit" はワイド文字クラス "space" とそのサブクラスである -"blank" と共通 部分を持たない。 -.PP -ワイド文字クラス "alnum" のサブクラスなので、ワイド文字クラス "digit" はワイド文字クラス "punct" と共通部分を持たない。 -.PP -ワイド文字クラス "digit" は、ワイド文字クラス "alpha" と共通部分を持た ない。したがって、そのサブクラスである "lower", -"upper" とも共通部分を 持たない。 -.PP -ワイド文字クラス "digit" は必ず、\(aq0\(aq から \(aq9\(aq までの 数字だけからなる。 -.SH 返り値 -\fBiswdigit\fP() 関数は、\fIwc\fP がワイド文字クラス "digit" に属するワ イド文字ならば 0 でない値を返す。それ以外の場合には -0 を返す。 -.SH 準拠 -C99. -.SH 注意 -\fBiswdigit\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.SH 関連項目 -\fBisdigit\fP(3), \fBiswctype\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/iswgraph.3 b/manual/LDP_man-pages/draft/man3/iswgraph.3 deleted file mode 100644 index 7db799e2..00000000 --- a/manual/LDP_man-pages/draft/man3/iswgraph.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sat Sep 4 21:22:34 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" Updated Sun Dec 26 19:31:38 JST 1999 -.\" by Kentaro Shirakata -.\" -.TH ISWGRAPH 3 1999\-07\-25 GNU "Linux Programmer's Manual" -.SH 名前 -iswgraph \- グラフィックワイド文字かどうかを調べる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint iswgraph(wint_t \fP\fIwc\fP\fB);\fP -.fi -.SH 説明 -\fBiswgraph\fP() 関数は、 \fBisgraph\fP(3) に対応するワイド文字関数である。 この関数は、\fIwc\fP がワイド文字クラス -"graph" に属するワイド文字かど うかを調べる。 -.PP -ワイド文字クラス "graph" は、ワイド文字クラス "space" と共通部分を持た ない。したがって、そのサブクラスである "blank" -とも共通部分を 持たない。 -.PP -ワイド文字クラス "graph" は、ワイド文字クラス "print" のサブクラスであ る。 -.PP -.\" Note: UNIX98 (susv2/xbd/locale.html) says that "graph" and "space" may -.\" have characters in common, except U+0020. But C99 (ISO/IEC 9899:1999 -.\" section 7.25.2.1.10) says that "space" and "graph" are disjoint. -ワイド文字クラス "print" のサブクラスなので、ワイド文字クラス "graph" はワイド文字クラス "cntrl" とは共通部分を持たない。 -.PP -ワイド文字クラス "graph" は、ワイド文字クラス "print" に属する文字のう ち空白文字を除く全てのワイド文字を含んでいる。したがって、 -ワイド文字クラス "graph" にはワイド文字クラス "almun" と "punct" が含 まれる。 -.SH 返り値 -\fBiswgraph\fP() 関数は、\fIwc\fP がワイド文字クラス "graph" に属するワ イド文字ならば 0 でない値を返す。そうでなければ 0 -を返す。 -.SH 準拠 -C99. -.SH 注意 -\fBiswgraph\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.SH 関連項目 -\fBisgraph\fP(3), \fBiswctype\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/iswlower.3 b/manual/LDP_man-pages/draft/man3/iswlower.3 deleted file mode 100644 index 66aad863..00000000 --- a/manual/LDP_man-pages/draft/man3/iswlower.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sat Sep 4 21:40:16 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" Updated Sat Jan 8 01:52:20 JST 2000 -.\" by Kentaro Shirakata -.\" -.TH ISWLOWER 3 1999\-07\-25 GNU "Linux Programmer's Manual" -.SH 名前 -iswlower \- 小文字ワイド文字かどうかを調べる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint iswlower(wint_t \fP\fIwc\fP\fB);\fP -.fi -.SH 説明 -\fBiswlower\fP() 関数は、 \fBislower\fP(3) に対応するワイド文字関数である。 この関数は、\fIwc\fP が文字クラス -"lower" に属するワイド文字かどうかを 調べる。 -.PP -ワイド文字クラス "lower" はワイド文字クラス "alpha" のサブクラスであり、 したがってワイド文字クラス "alnum" -とその親クラスである "graph", さらに その親クラスである "print" のサブクラスでもある。 -.PP -ワイド文字クラス "print" のサブクラスなので、ワイド文字クラス "lower" はワイド文字クラス "cntrl" と共通部分を持たない。 -.PP -ワイド文字クラス "graph" のサブクラスなので、ワイド文字クラス "lower" はワイド文字クラス "space" とそのサブクラスである -"blank" と共通 部分を持たない。 -.PP -ワイド文字クラス "alnum" のサブクラスなので、ワイド文字クラス "lower" はワイド文字クラス "punct" と共通部分を持たない。 -.PP -ワイド文字クラス "alpha" のサブクラスなので、ワイド文字クラス "lower" はワイド文字クラス "digit" と共通部分を持たない。 -.PP -ワイド文字クラス "lower" は少なくとも、\fIwc\fP と \fItowlower(wc)\fP が等しくなり、かつ \fItowupper(wc)\fP -と異なるような文字を含む。 -.PP -ワイド文字クラス "lower" は少なくとも \(aqa\(aq から \(aqz\(aq を必ず含む。 -.SH 返り値 -\fBiswlower\fP() 関数は、\fIwc\fP がワイド文字クラス "lower" に属するワ イド文字ならば 0 でない値を返す。そうでなければ 0 -を返す。 -.SH 準拠 -C99. -.SH 注意 -\fBiswlower\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.PP -この関数で Unicode 文字を扱うのはあまり適切でない。 なぜなら、Unicode には、大文字 (upper case)・小文字 (lower -case)・ タイトル文字 (title case) という 3 つの "case" が含まれているからである。 -.SH 関連項目 -\fBislower\fP(3), \fBiswctype\fP(3), \fBtowlower\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/iswprint.3 b/manual/LDP_man-pages/draft/man3/iswprint.3 deleted file mode 100644 index 19fd0dc5..00000000 --- a/manual/LDP_man-pages/draft/man3/iswprint.3 +++ /dev/null @@ -1,53 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sat Sep 4 23:03:32 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH ISWPRINT 3 1999\-07\-25 GNU "Linux Programmer's Manual" -.SH 名前 -iswprint \- 印字可能ワイド文字かどうかを調べる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint iswprint(wint_t \fP\fIwc\fP\fB);\fP -.fi -.SH 説明 -\fBiswprint\fP() 関数は、 \fBisprint\fP(3) に対応するワイド文字関数である。 この関数は、\fIwc\fP がワイド文字クラス -"print" に属するワイド文字かど うかを調べる。 -.PP -ワイド文字クラス "print" は、ワイド文字クラス "cntrl" と共通部分を持た ない。 -.PP -ワイド文字クラス "print" は、ワイド文字クラス "graph" を含む。 -.SH 返り値 -\fBiswprint\fP() 関数は、\fIwc\fP がワイド文字クラス "print" に属するワ イド文字ならば 0 でない値を返す。そうでなければ 0 -を返す。 -.SH 準拠 -C99. -.SH 注意 -\fBiswprint\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.SH 関連項目 -\fBisprint\fP(3), \fBiswctype\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/iswpunct.3 b/manual/LDP_man-pages/draft/man3/iswpunct.3 deleted file mode 100644 index 31513683..00000000 --- a/manual/LDP_man-pages/draft/man3/iswpunct.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sun Sep 5 21:47:49 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" Updated Sun Dec 26 19:31:52 JST 1999 -.\" by Kentaro Shirakata -.\" -.TH ISWPUNCT 3 1999\-07\-25 GNU "Linux Programmer's Manual" -.SH 名前 -iswpunct \- 句読点・記号ワイド文字かどうかを調べる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint iswpunct(wint_t \fP\fIwc\fP\fB);\fP -.fi -.SH 説明 -\fBiswpunct\fP() 関数は、 \fBispunct\fP(3) に対応するワイド文字関数である。 この関数は、\fIwc\fP がワイド文字クラス -"punct" に属するワイド文字かど うかを調べる。 -.PP -ワイド文字クラス "punct" はワイド文字クラス "graph" のサブクラスである。 したがって、ワイド文字クラス "print" -のサブクラスでもある。 -.PP -ワイド文字クラス "punct" はワイド文字クラス "alnum" と共通部分を持たな い。したがって、そのサブクラスである "alpha", -"upper", "lower", "digit", "xdigit" とも共通部分を持たない。 -.PP -ワイド文字 "print" のサブクラスなので、ワイド文字クラス "punct" は ワイド文字クラス "cntrl" と共通部分を持たない。 -.PP -ワイド文字クラス "graph" のサブクラスなので、ワイド文字クラス "punct" はワイド文字クラス "space" とそのサブクラスである -"blank" と共通 部分を持たない。 -.SH 返り値 -\fBiswpunct\fP() 関数は、\fIwc\fP がワイド文字クラス "punct" に属する ワイド文字ならば 0 でない値を返す。そうでなければ 0 -を返す。 -.SH 準拠 -C99. -.SH 注意 -\fBiswpunct\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.PP -この関数の名前は Unicode 文字を扱う際には正しくない。なぜなら、ワイド 文字クラス "punct" -は句読点文字と記号文字(数学記号、貨幣記号など)の両 方を含むからである。 -.SH 関連項目 -\fBispunct\fP(3), \fBiswctype\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/iswspace.3 b/manual/LDP_man-pages/draft/man3/iswspace.3 deleted file mode 100644 index cddf4b7d..00000000 --- a/manual/LDP_man-pages/draft/man3/iswspace.3 +++ /dev/null @@ -1,62 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sun Sep 5 22:05:50 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" Updated Sun Dec 26 19:31:58 JST 1999 -.\" by Kentaro Shirakata -.\" -.TH ISWSPACE 3 1999\-07\-25 GNU "Linux Programmer's Manual" -.SH 名前 -iswspace \- 空白ワイド文字かどうかを調べる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint iswspace(wint_t \fP\fIwc\fP\fB);\fP -.fi -.SH 説明 -\fBiswspace\fP() 関数は、 \fBisspace\fP(3) に対応するワイド文字関数である。 この関数は、\fIwc\fP がワイド文字クラス -"space" に属するワイド文字かど うかを調べる。 -.PP -.\" Note: UNIX98 (susv2/xbd/locale.html) says that "space" and "graph" may -.\" have characters in common, except U+0020. But C99 (ISO/IEC 9899:1999 -.\" section 7.25.2.1.10) says that "space" and "graph" are disjoint. -ワイド文字クラス "space" はワイド文字クラス "graph" と共通部分を持たない。 したがって、そのサブクラスである "alnum", -"alpha", "upper", "lower", "digit", "xdigit", "punct" とも共通部分を持たない。 -.PP -ワイド文字クラス "space" はワイド文字クラス "blank" を含む。 -.PP -ワイド文字クラス "space" は少なくとも、空白文字および制御文字 \(aq\ef\(aq, \(aq\en\(aq, \(aq\er\(aq, -\(aq\et\(aq, \(aq\ev\(aq を必ず含む。 -.SH 返り値 -\fBiswspace\fP() 関数は、\fIwc\fP がワイド文字クラス "space" に含まれる ならば 0 でない値を返す。そうでなければ 0 -を返す。 -.SH 準拠 -C99. -.SH 注意 -\fBiswspace\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.SH 関連項目 -\fBisspace\fP(3), \fBiswctype\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/iswupper.3 b/manual/LDP_man-pages/draft/man3/iswupper.3 deleted file mode 100644 index 0f377d67..00000000 --- a/manual/LDP_man-pages/draft/man3/iswupper.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sun Sep 5 22:21:05 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" Updated Sun Dec 26 19:32:06 JST 1999 -.\" by Kentaro Shirakata -.\" -.TH ISWUPPER 3 1999\-07\-25 GNU "Linux Programmer's Manual" -.SH 名前 -iswupper \- 大文字ワイド文字かどうかを調べる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint iswupper(wint_t \fP\fIwc\fP\fB);\fP -.fi -.SH 説明 -\fBiswupper\fP() 関数は、 \fBisupper\fP(3) に対応するワイド文字関数である。 この関数は、\fIwc\fP がワイド文字クラス -"upper" に属するワイド文字かど うかを調べる。 -.PP -ワイド文字クラス "upper" はワイド文字クラス "alpha" のサブクラスであり、 したがってワイド文字クラス "alnum" -とその親クラスである "graph", さらに その親クラスである "print" のサブクラスでもある。 -.PP -ワイド文字クラス "print" のサブクラスなので、ワイド文字クラス "upper" はワイド文字クラス "cntrl" と共通部分を持たない。 -.PP -ワイド文字クラス "graph" のサブクラスなので、ワイド文字クラス "upper" はワイド文字クラス "space" とそのサブクラスである -"blank" と共通 部分を持たない。 -.PP -ワイド文字クラス "alnum" のサブクラスなので、ワイド文字クラス "upper" はワイド文字クラス "punct" と共通部分を持たない。 -.PP -ワイド文字クラス "alpha" のサブクラスなので、ワイド文字クラス "upper" はワイド文字クラス "digit" と共通部分を持たない。 -.PP -ワイド文字クラス "upper" は少なくとも、\fIwc\fP と \fItowupper(wc)\fP が等しくなり、かつ \fItowupper(wc)\fP -と異なるような文字を含む。 -.PP -ワイド文字クラス "upper" は少なくとも \(aqA\(aq から \(aqZ\(aq を必ず含む。 -.SH 返り値 -\fBiswupper\fP() 関数は、\fIwc\fP がワイド文字クラス "upper" に属するワイド文字ならば 0 でない値を返す。そうでなければ 0 -を返す。 -.SH 準拠 -C99. -.SH 注意 -\fBiswupper\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.PP -この関数で Unicode 文字を扱うのはあまり適切でない。 なぜなら、Unicode には、大文字 (upper case)・小文字 (lower -case)・ タイトル文字 (title case) という 3 つの "case" が含まれているからである。 -.SH 関連項目 -\fBisupper\fP(3), \fBiswctype\fP(3), \fBtowupper\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/iswxdigit.3 b/manual/LDP_man-pages/draft/man3/iswxdigit.3 deleted file mode 100644 index b18b7ba0..00000000 --- a/manual/LDP_man-pages/draft/man3/iswxdigit.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sun Sep 5 22:21:05 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" Updated Sun Dec 26 19:32:14 JST 1999 -.\" by Kentaro Shirakata -.\" -.TH ISWXDIGIT 3 1999\-07\-25 GNU "Linux Programmer's Manual" -.SH 名前 -iswxdigit \- 16 進数ワイド文字かどうかを調べる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint iswxdigit(wint_t \fP\fIwc\fP\fB);\fP -.fi -.SH 説明 -\fBiswxdigit\fP() 関数は、 \fBisxdigit\fP(3) に対応するワイド文字関数である。 この関数は、\fIwc\fP がワイド文字クラス -"xdigit" に属するワイド文字か どうかを調べる。 -.PP -ワイド文字クラス "xdigit" は、ワイド文字クラス "alnum" のサブクラスで ある。したがって、ワイド文字クラス "graph" -とワイド文字クラス "print" のサブクラスでもある。 -.PP -ワイド文字クラス "print" のサブクラスなので、ワイド文字クラス "xdigit" はワイド文字クラス "cntrl" と共通部分を持たない。 -.PP -ワイド文字クラス "graph" のサブクラスなので、ワイド文字クラス "xdigit" はワイド文字クラス "space" とそのサブクラスである -"blank" と共通 部分を持たない。 -.PP -ワイド文字クラス "alnum" のサブクラスなので、ワイド文字クラス "xdigit" はワイド文字クラス "punct" と共通部分を持たない。 -.PP -ワイド文字クラス "xdigit" は少なくとも、文字 \(aqA\(aq から \(aqF\(aq, \(aqa\(aq から \(aqf\(aq -と数字 \(aq0\(aq から \(aq9\(aq を必ず含む。 -.SH 返り値 -\fBiswxdigit\fP() 関数は、\fIwc\fP がワイド文字クラス "xdigit" に属する ワイド文字ならば 0 でない値を返す。そうでなければ -0 を返す。 -.SH 準拠 -C99. -.SH 注意 -\fBiswxdigit\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.SH 関連項目 -\fBiswctype\fP(3), \fBisxdigit\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/j0.3 b/manual/LDP_man-pages/draft/man3/j0.3 deleted file mode 100644 index 9f45e954..00000000 --- a/manual/LDP_man-pages/draft/man3/j0.3 +++ /dev/null @@ -1,128 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified Sat Jul 24 19:08:17 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-08-25, aeb -.\" Modified 2004-11-12 as per suggestion by Fabian Kreutz/AEB -.\" 2008-07-24, mtk, moved yxx() material into separate y0.3 page -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 Ishii Tatsuo all rights reserved. -.\" Translated Sun May 24 1998 by Ishii Tatsuo -.\" Updated 2002-09-24 by Akihiro MOTOKI -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH J0 3 2014\-01\-18 "" "Linux Programmer's Manual" -.SH 名前 -j0, j0f, j0l, j1, j1f, j1l, jn, jnf, jnl \- 第一種ベッセル関数 -.SH 書式 -.nf -\fB#include \fP -.sp -.fi -\fBdouble j0(double \fP\fIx\fP\fB);\fP -.br -\fBdouble j1(double \fP\fIx\fP\fB);\fP -.br -\fBdouble jn(int \fP\fIn\fP\fB, double \fP\fIx\fP\fB);\fP -.sp -\fBfloat j0f(float \fP\fIx\fP\fB);\fP -.br -\fBfloat j1f(float \fP\fIx\fP\fB);\fP -.br -\fBfloat jnf(int \fP\fIn\fP\fB, float \fP\fIx\fP\fB);\fP -.sp -\fBlong double j0l(long double \fP\fIx\fP\fB);\fP -.br -\fBlong double j1l(long double \fP\fIx\fP\fB);\fP -.br -\fBlong double jnl(int \fP\fIn\fP\fB, long double \fP\fIx\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBj0\fP(), \fBj1\fP(), \fBjn\fP(): -.RS 4 -_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE -.RE -.br -\fBj0f\fP(), \fBj0l\fP(), \fBj1f\fP(), \fBj1l\fP(), \fBjnf\fP(), \fBjnl\fP(): -.RS 4 -.\" Also seems to work: -std=c99 -D_XOPEN_SOURCE -_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 600 -.RE -.ad b -.SH 説明 -関数 \fBj0\fP(), \fBj1\fP() はそれぞれ \fIx\fP の0次、1次の 第一種ベッセル関数の値を返す。 関数 \fBjn\fP() は \fIx\fP の -\fIn\fP 次の 第一種ベッセル関数の値を返す。 -.PP -関数 \fBj0f\fP(), \fBj1f\fP(), \fBjnf\fP() は、 \fIfloat\fP 型を引数に取り、返り値として返す。 関数 \fBj0l\fP(), -\fBj1l\fP(), and \fBjnl\fP() は、 \fIlong double\fP 型を引数に取り、返り値として返す。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP に対する第一種ベッセル関数の値を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP の絶対値が大き過ぎる場合や結果がアンダーフローする場合、 範囲エラー (range error) が発生し、返り値が 0 となる。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -範囲エラー: 結果のアンダーフローや、\fIx\fP の絶対値が大き過ぎる -.\" An underflow floating-point exception -.\" .RB ( FE_UNDERFLOW ) -.\" is raised. -\fIerrno\fP に \fBERANGE\fP が設定される。 -.PP -.\" FIXME . Is it intentional that these functions do not raise exceptions? -.\" e.g., j0(1.5e16) -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6805 -これらの関数は、 \fBfetestexcept\fP(3) でチェックできる例外を上げない。 -.SH 準拠 -\fIdouble\fP 型の値を返す関数は、SVr4, 4.3BSD, POSIX.1\-2001 に準拠する。 それ以外は非標準の関数で、BSD -にも存在する。 -.SH バグ -\-8 から 8 までの \fIx\fP の値について \fBj0\fP(), \fBj1\fP(), \fBjn\fP() が返す値には、最大で 2e\-16 の誤差がある。 -.SH 関連項目 -\fBy0\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/key_setsecret.3 b/manual/LDP_man-pages/draft/man3/key_setsecret.3 deleted file mode 100644 index c99fba02..00000000 --- a/manual/LDP_man-pages/draft/man3/key_setsecret.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" I had no way the check the functions out -.\" be careful -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI all rights reserved. -.\" Translated Mon Jan 27 2003 by Akihiro MOTOKI -.\" -.TH KEY_SETSECRET 3 2014\-05\-28 "" "Linux Programmer's Manual" -.SH 名前 -key_decryptsession, key_encryptsession, key_setsecret, key_gendes, -key_secretkey_is_set \- rpc 鍵サーバデーモンとのインターフェース -.SH 書式 -\fB#include \fP -.sp -\fBint key_decryptsession(char *\fP\fIremotename\fP\fB,\fP \fBdes_block -*\fP\fIdeskey\fP\fB);\fP -.sp -\fBint key_encryptsession(char *\fP\fIremotename\fP\fB,\fP \fBdes_block -*\fP\fIdeskey\fP\fB);\fP -.sp -\fBint key_gendes(des_block *\fP\fIdeskey\fP\fB);\fP -.sp -\fBint key_setsecret(char *\fP\fIkey\fP\fB);\fP -.sp -\fBint key_secretkey_is_set(void);\fP -.SH 説明 -これらの関数は RPC の安全な認証機構 (AUTH_DES) で使用される。 ユーザープログラムでこれらの関数を使用する必要はない。 - -関数 \fBkey_decryptsession\fP() は(リモート)サーバのネット名を用いて、復号用の DES 鍵を取得する。 -サーバの公開鍵と、呼び出し元プロセスの実効 UID に対応する秘密鍵が使用される。 - -関数 \fBkey_encryptsession\fP() は \fBkey_decryptsession\fP() の逆の処理を行う。 -サーバの公開鍵と、呼び出し元プロセスの実効 UID に対応する秘密鍵で DES 鍵を暗号する。 - -関数 \fBkey_gendes\fP() は、鍵サーバに安全な通信を行うための鍵を要求するために使用される。 - -関数 \fBkey_setsecret\fP() は、呼び出し元プロセスの実効 UID に対して鍵を設定するために使用される。 - -関数 \fBkey_secretkey_is_set\fP() は、呼び出し元プロセスの実効 UID に対して鍵が設定されているかどうかを -調べるために使用される。 -.SH 返り値 -これらの関数は成功した場合 1 を、失敗した場合 0 を返す。 -.SH 注意 -ここでは 2 種類の暗号方式が登場することに注意すること。 一つは公開鍵と秘密鍵を使用する非対称鍵暗号であり、 もう一つは対称鍵暗号である 64 ビット -DES である。 -.PP -これらの関数は Linux/Doors\-project の成果の一部だったが、 現在までに該当箇所はすべて破棄された。 -.SH 関連項目 -\fBcrypt\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ldexp.3 b/manual/LDP_man-pages/draft/man3/ldexp.3 deleted file mode 100644 index acbde888..00000000 --- a/manual/LDP_man-pages/draft/man3/ldexp.3 +++ /dev/null @@ -1,113 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2004-10-31 by aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Thu Feb 13 23:14:00 JST 1997 -.\" by YOSHINO Takashi -.\" Updated & Modified Sun Jun 6 10:35:26 JST 2004 -.\" by Yuichi SATO -.\" Updated & Modified Sat Jan 15 05:40:56 JST 2005 by Yuichi SATO -.\" Updated 2008-09-18, Akihiro MOTOKI -.\" -.TH LDEXP 3 2013\-08\-19 "" "Linux Programmer's Manual" -.SH 名前 -ldexp, ldexpf, ldexpl \- 浮動小数点実数と 2 の整数乗との積を計算する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble ldexp(double \fP\fIx\fP\fB, int \fP\fIexp\fP\fB);\fP -.br -\fBfloat ldexpf(float \fP\fIx\fP\fB, int \fP\fIexp\fP\fB);\fP -.br -\fBlong double ldexpl(long double \fP\fIx\fP\fB, int \fP\fIexp\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBldexpf\fP(), \fBldexpl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBldexp\fP() 関数は、浮動小数点実数 \fIx\fP と 2 の \fIexp\fP 乗との積を返す。 -.SH 返り値 -成功すると、これらの関数は \fIx * (2^exp)\fP を返す。 - -\fIexp\fP がゼロの場合、 \fIx\fP が返される。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が正の無限大 (負の無限大) の場合、正の無限大 (負の無限大) が返される。 - -結果がアンダーフローする場合、 範囲エラー (range error) が発生し、0 が返される。 - -結果がオーバーフローする場合、 範囲エラー (range error) が発生し、 各関数はそれぞれ \fBHUGE_VAL\fP, -\fBHUGE_VALF\fP, \fBHUGE_VALL\fP を返す。符号は \fIx\fP と同じになる。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -範囲エラー (range error)、オーバーフローの場合 -\fIerrno\fP に \fBERANGE\fP が設定される。 オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 -.TP -範囲エラー (range error)、アンダーフローの場合 -\fIerrno\fP に \fBERANGE\fP が設定される。 アンダーフロー浮動小数点例外 (\fBFE_UNDERFLOW\fP) が上がる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBldexp\fP(), \fBldexpf\fP(), \fBldexpl\fP() はスレッドセーフである。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/lgamma.3 b/manual/LDP_man-pages/draft/man3/lgamma.3 index 3a292cb2..3c9ef84c 100644 --- a/manual/LDP_man-pages/draft/man3/lgamma.3 +++ b/manual/LDP_man-pages/draft/man3/lgamma.3 @@ -22,80 +22,80 @@ .\" by SAITOH Akira .\" Updated 2008-09-18, Akihiro MOTOKI .\" -.TH LGAMMA 3 2014\-01\-18 "" "Linux Programmer's Manual" +.TH LGAMMA 3 2017\-09\-15 "" "Linux Programmer's Manual" .SH 名前 lgamma, lgammaf, lgammal, lgamma_r, lgammaf_r, lgammal_r, signgam \- ガンマ関数の対数を計算する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBdouble lgamma(double \fP\fIx\fP\fB);\fP -.br \fBfloat lgammaf(float \fP\fIx\fP\fB);\fP -.br \fBlong double lgammal(long double \fP\fIx\fP\fB);\fP -.sp +.PP \fBdouble lgamma_r(double \fP\fIx\fP\fB, int *\fP\fIsignp\fP\fB);\fP -.br \fBfloat lgammaf_r(float \fP\fIx\fP\fB, int *\fP\fIsignp\fP\fB);\fP -.br \fBlong double lgammal_r(long double \fP\fIx\fP\fB, int *\fP\fIsignp\fP\fB);\fP -.sp +.PP \fBextern int \fP\fIsigngam\fP\fB;\fP .fi -.sp +.PP \fI\-lm\fP でリンクする。 -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP .ad l \fBlgamma\fP(): .RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE || -_POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP +_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE + || /* Since glibc 2.19: */ _DEFAULT_SOURCE + || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .RE .br \fBlgammaf\fP(), \fBlgammal\fP(): .RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP +_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L + || /* Since glibc 2.19: */ _DEFAULT_SOURCE + || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .RE \fBlgamma_r\fP(), \fBlgammaf_r\fP(), \fBlgammal_r\fP(): .RS 4 -_BSD_SOURCE || _SVID_SOURCE +/* Since glibc 2.19: */ _DEFAULT_SOURCE + || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .RE \fIsigngam\fP: .RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE +_XOPEN_SOURCE + || /* Since glibc 2.19: */ _DEFAULT_SOURCE + || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .RE .ad b .SH 説明 ガンマ関数の定義については、 \fBtgamma\fP(3) を参照のこと。 .PP -関数 \fBlgamma\fP() は、ガンマ関数の絶対値の自然対数を返す。 ガンマ関数の符号は、 \fI\fP で宣言されている -extern int \fIsigngam\fP に格納される。 格納される値は、ガンマ関数が正または 0 の場合 1、 負の場合 \-1 である。 +The \fBlgamma\fP(), \fBlgammaf\fP(), and \fBlgammal\fP() functions return the +natural logarithm of the absolute value of the Gamma function. The sign of +the Gamma function is returned in the external integer \fIsigngam\fP declared +in \fI\fP. It is 1 when the Gamma function is positive or +zero, \-1 when it is negative. .PP \fIsigngam\fP という固定された場所を使うことはスレッドセーフではないので、 関数 \fBlgamma_r\fP(), \fBlgammaf_r\fP(), \fBlgammal_r\fP() が導入された。 これらの関数では、符号は引き数 \fIsignp\fP 経由で返される。 .SH 返り値 成功すると、これらの関数は Gamma(x) の自然対数を返す。 - +.PP \fIx\fP が NaN の場合、NaN が返される。 - +.PP \fIx\fP が 1 か 2 の場合、+0 が返される。 - +.PP \fIx\fP が正の無限大か負の無限大の場合、正の無限大が返される。 - +.PP \fIx\fP が正でない整数の場合、極エラー (pole error) が発生し、 各関数はそれぞれ +\fBHUGE_VAL\fP, +\fBHUGE_VALF\fP, +\fBHUGE_VALL\fP を返す。 - +.PP .\" e.g., lgamma(DBL_MAX) 結果がオーバーフローする場合、範囲エラー (range error) が発生し、 各関数はそれぞれ \fBHUGE_VAL\fP, \fBHUGE_VALF\fP, \fBHUGE_VALL\fP, を返す。この際、数学的に正しい符号が付与される。 @@ -113,8 +113,10 @@ extern int \fIsigngam\fP に格納される。 格納される値は、ガンマ .\" exception for various cases. \fIerrno\fP に \fBERANGE\fP が設定される。 オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 .SH 準拠 -関数 \fBlgamma\fP() は C99 と POSIX.1\-2001 で規定されている。 \fIsigngam\fP は POSIX.1\-2001 -で規定されているが、C99 にはない。 関数 \fBlgamma_r\fP() は非標準だが、いくつかの他のシステムにも存在する。 +The \fBlgamma\fP() functions are specified in C99, POSIX.1\-2001, and +POSIX.1\-2008. \fIsigngam\fP is specified in POSIX.1\-2001 and POSIX.1\-2008, but +not in C99. The \fBlgamma_r\fP() functions are nonstandard, but present on +several other systems. .SH バグ .\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6777 glibc 2.9 とそれ以前のバージョンでは、 極エラーが発生した場合、POSIX で要求されている \fBERANGE\fP ではなく \fBEDOM\fP が @@ -123,6 +125,5 @@ glibc 2.9 とそれ以前のバージョンでは、 極エラーが発生した .SH 関連項目 \fBtgamma\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/lio_listio.3 b/manual/LDP_man-pages/draft/man3/lio_listio.3 index 10a39945..558fd5e9 100644 --- a/manual/LDP_man-pages/draft/man3/lio_listio.3 +++ b/manual/LDP_man-pages/draft/man3/lio_listio.3 @@ -32,24 +32,24 @@ .\" Translated 2012-05-05, Akihiro MOTOKI .\" Updated 2012-05-29, Akihiro MOTOKI .\" -.TH LIO_LISTIO 3 2012\-05\-08 "" "Linux Programmer's Manual" +.TH LIO_LISTIO 3 2020\-04\-11 "" "Linux Programmer's Manual" .SH 名前 lio_listio \- リストの I/O リクエストを開始する .SH 書式 .nf \fB#include \fP - +.PP \fBint lio_listio(int \fP\fImode\fP\fB, struct aiocb *const \fP\fIaiocb_list\fP\fB[],\fP \fB int \fP\fInitems\fP\fB, struct sigevent *\fP\fIsevp\fP\fB);\fP - +.PP \fI\-lrt\fP でリンクする。 .fi .SH 説明 \fBlio_listio\fP() 関数は、配列 \fIaiocb_list\fP で指定された I/O 操作の リストをそれぞれ開始する。 - +.PP \fImode\fP 引き数には以下のいずれかの値を指定する。 -.TP 12 +.TP \fBLIO_WAIT\fP 全ての操作が完了するまで、呼び出しは停止 (block) する。 \fIsevp\fP 引き数は無視される。 @@ -64,11 +64,11 @@ I/O 操作は処理を行うためのキューに入れられ、呼び出しは の配列である。指定された操作の実行順序は規定されていない。 \fInitems\fP 引き数は、配列 \fIaiocb_list\fP の大きさを指定する。 \fIaiocb_list\fP 内のヌルポインターは無視される。 - +.PP \fIaiocb_list\fP の各制御ブロックでは、 \fIaio_lio_opcode\fP フィールドで開始する I/O 操作を指定する。 \fIaio_lio_opcode\fP には以下の値が指定できる。 -.TP 10 +.TP \fBLIO_READ\fP 読み出し操作を開始する。操作はキューに入れられ、 この制御ブロックを指定して \fBaio_read\fP(3) の呼び出しが行われる。 @@ -89,11 +89,11 @@ I/O 操作は処理を行うためのキューに入れられ、呼び出しは \fImode\fP が \fBLIO_NOWAIT\fP の場合、 \fBlio_listio\fP() は全ての操作が 正常にキューに入れられた場合に 0 を返す。 そうでない場合は、\-1 が返り、 \fIerrno\fP にエラーを示す値が設定される。 - +.PP \fImode\fP が \fBLIO_WAIT\fP の場合、 \fBlio_listio\fP() は全ての操作が 正常に完了した場合に 0 を返す。 そうでない場合は、\-1 が返り、 \fIerrno\fP にエラーを示す値が設定される。 - +.PP \fBlio_listio\fP() の返り値から得られる情報は、関数呼び出し自体に関する ものだけであり、個々の I/O 操作に関する情報は得られない。 個々の I/O 操作は失敗することがあるが、これにより他の I/O 操作が完了 @@ -113,16 +113,16 @@ I/O 操作は処理を行うためのキューに入れられ、呼び出しは \fInitems\fP で指定された数の I/O 操作を行うと、 非同期 I/O 操作の数が上限 \fBAIO_MAX\fP を超えてしまう状況であった。 .TP +\fBEINTR\fP +\fImode\fP was \fBLIO_WAIT\fP and a signal was caught before all I/O operations +completed; see \fBsignal\fP(7). (This may even be one of the signals used for +asynchronous I/O completion notification.) +.TP \fBEINVAL\fP .\" Doesn't happen in glibc(?) \fImode\fP が不正であるか、 \fInitems\fP が上限 \fBAIO_LISTIO_MAX\fP を超えている。 .TP -\fBEINTR\fP -\fImode\fP が \fBLIO_WAIT\fP で、全ての I/O 操作が完了する前にシグナルが -捕捉された (非同期 I/O の完了通知に使用されるシグナルの場合もこれに -該当する)。 -.TP \fBEIO\fP .\" e.g., ioa_reqprio or aio_lio_opcode was invalid \fIaiocb_list\fP で指定された操作の中に失敗したものがあった。 @@ -135,6 +135,18 @@ I/O 操作は処理を行うためのキューに入れられ、呼び出しは どの I/O 操作も開始されていない。 .SH バージョン The \fBlio_listio\fP() 関数は glibc 2.1 以降で利用できる。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBlio_listio\fP() +T} Thread safety MT\-Safe +.TE +.sp 1 .SH 準拠 POSIX.1\-2001, POSIX.1\-2008. .SH 注意 @@ -144,13 +156,12 @@ I/O 操作の実行中は制御ブロックを変更してはならない。デ のバッファー領域に I/O 操作の実行中にアクセスしてはならない。さもないと、 どのような結果になるか分からない。また、関係するメモリー領域も有効な状態 のままにしておかなければならない。 - +.PP 同じ \fIaiocb\fP 構造体を指定して同時に複数の I/O 操作を行った場合、 どのような結果になるかは不定である。 .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/localeconv.3 b/manual/LDP_man-pages/draft/man3/localeconv.3 deleted file mode 100644 index 1fa4a621..00000000 --- a/manual/LDP_man-pages/draft/man3/localeconv.3 +++ /dev/null @@ -1,69 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" -.\" %%%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 19:01:20 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Tue May 26 00:11:13 JST 1998 -.\" by YOSHINO Takashi -.\" Updated 2013-07-24, Akihiro MOTOKI -.\" -.TH LOCALECONV 3 2013\-06\-21 GNU "Linux Programmer's Manual" -.SH 名前 -localeconv \- 数値に関する書式情報を得る -.SH 書式 -.nf -\fB#include \fP -.sp -\fBstruct lconv *localeconv(void);\fP -.fi -.SH 説明 -\fBlocaleconv\fP() 関数は、現在のロケール情報を表す \fIstruct lconv\fP へのポインターを返す。 この構造体は -\fBlocale\fP(7) で説明されており、ロケールカテゴリー \fBLC_NUMERIC\fP と \fBLC_MONETARY\fP -に関連するすべての値を含んでいる。 この関数を用いるプログラムは、おそらく同時に \fBprintf\fP(3) や \fBstrfmon\fP(3) -のような関数も用いるだろう。 これらの関数は、現在使用されているロケールに従った動作をする。 -.SH 返り値 -\fBlocaleconv\fP() 関数は、情報が格納された \fIstruct lconv\fP へのポインターを返す。 -この構造体は静的に割り当てられる場合があり (glibc では「そうだ」)、後の呼び出しで上書きされる可能性がある。 POSIX -では、呼び出し元はこの構造体の内容を変更すべきではないとされている。 \fBlocaleconv\fP() 関数は常に成功する。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBlocaleconv\fP() 関数はスレッドセーフではない。この関数は、後の呼び出しで上書きされる可能性がある構造体へのポイントを返すからである。 -.SH 準拠 -C89, C99 -.SH バグ -\fBprintf\fP(3) グループの関数は現在のロケールを反映するかもしれないし、 しないかもしれない。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/lockf.3 b/manual/LDP_man-pages/draft/man3/lockf.3 deleted file mode 100644 index d752b199..00000000 --- a/manual/LDP_man-pages/draft/man3/lockf.3 +++ /dev/null @@ -1,124 +0,0 @@ -.\" Copyright 1997 Nicolás Lichtmaier -.\" Created Thu Aug 7 00:44:00 ART 1997 -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Added section stuff, aeb, 2002-04-22. -.\" Corrected include file, drepper, 2003-06-15. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2000-2002 Yuichi SATO -.\" all rights reserved. -.\" Translated Tue Jul 11 19:02:58 JST 2000 -.\" by Yuichi SATO -.\" Updated & Modified Mon Jul 15 02:10:29 JST 2002 by Yuichi SATO -.\" Updated 2010-04-18, Akihiro MOTOKI , LDP v3.24 -.\" -.TH LOCKF 3 2014\-06\-13 GNU "Linux Programmer's Manual" -.SH 名前 -lockf \- オープンされたファイルに対する POSIX ロックの適用・テスト・解除を行う -.SH 書式 -\fB#include \fP -.sp -\fBint lockf(int \fP\fIfd\fP\fB, int \fP\fIcmd\fP\fB, off_t \fP\fIlen\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBlockf\fP(): -.ad l -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.RE -.ad -.SH 説明 -オープンされたファイルのセクションに対して、 POSIX ロックの適用・テスト・解除をする。 ファイルは \fIfd\fP で指定される。 \fIfd\fP -は書き込みのためにオープンしたファイルディスクリプターである。 アクションは \fIcmd\fP で指定される。 \fIpos\fP を現在のファイル位置とすると、 -\fIlen\fP が正の場合、セクションはバイト位置 \fIpos\fP..\fIpos\fP+\fIlen\fP\-1 となり、 \fIlen\fP -が負の場合、セクションはバイト位置 \fIpos\fP\-\fIlen\fP..\fIpos\fP\-1 となる。 \fIlen\fP が 0 -の場合、セクションは現在のファイル位置から無限大までとなる (つまり現在の、あるいは変更された場合は将来の、ファイル終端位置まで)。 -どの場合においても、セクションは以前のファイル終端よりも拡大されうる。 -.LP -Linux では、 \fBlockf\fP() は単に \fBfcntl\fP(2) のロックへのインターフェースである。 多くの他のシステムで -\fBlockf\fP() はこのように実装されているが、 POSIX.1\-2001 では \fBlockf\fP() と \fBfcntl\fP(2) -のロックとの関係は規定されていない。 おそらく、移植性が必要なアプリケーションでは、 \fBlockf\fP() と \fBfcntl\fP(2) -のロックを混ぜて呼び出すのは避けるべきであろう。 -.LP -有効なオプションを以下に挙げる。 -.TP -\fBF_LOCK\fP -ファイルの指定されたセクションに排他ロックを設定する。 そのセクション (の一部) が既にロックされていた場合、 -前のロックが解除されるまで関数の呼び出しがブロックされる。 このセクションが前にロックされているセクションと重なった場合、 2 -つのセクションは結合される。 ロックを保持しているプロセスが、 そのファイルのファイルディスクリプターをクローズすると、 ファイルロックは解放される。 -子プロセスはロックを継承しない。 -.TP -\fBF_TLOCK\fP -\fBF_LOCK\fP と同様であるが、ファイルが既にロックされている場合、 関数の呼び出しはブロックを行わずにエラーを返す。 -.TP -\fBF_ULOCK\fP -ファイルの指定されたセクションのロックを解除する。 これによりロックされたセクションが 2 つに分割されるかもしれない。 -.TP -\fBF_TEST\fP -次のようにロックのテストをする。 指定されたセクションがロックされていないか、 このプロセスによりロックされている場合、0 を返す。 -他のプロセスがロックを保持している場合、\-1 を返し、 \fIerrno\fP を \fBEAGAIN\fP (いくつかの他のシステムでは \fBEACCES\fP) -に設定する。 -.SH 返り値 -成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEACCES\fP か \fBEAGAIN\fP -ロックされたファイルに対して、 \fBF_TLOCK\fP または \fBF_TEST\fP が指定されている。 -または、ファイルが他のプロセスによりメモリーマップされており、 指定された操作が禁止されている。 -.TP -\fBEBADF\fP -\fIfd\fP がオープンされたファイルのディスクリプターではない。 または、 \fIcmd\fP が \fBF_LOCK\fP か \fBF_TLOCK\fP で、 -\fIfd\fP が書き込み可能なファイルディスクリプターでない。 -.TP -\fBEDEADLK\fP -コマンドが \fBF_LOCK\fP であり、このロック操作を行うとデッドロックが発生してしまう。 -.TP -\fBEINVAL\fP -\fIcmd\fP に無効な操作が指定された。 -.TP -\fBENOLCK\fP -非常に多くのセグメントロックが開かれ、ロックテーブルが一杯である。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBlockf\fP() 関数はスレッドセーフである。 -.SH 準拠 -SVr4, POSIX.1\-2001. -.SH 関連項目 -\fBfcntl\fP(2), \fBflock\fP(2) - -Linux カーネルソースの \fIDocumentation/filesystems\fP ディレクトリにある \fIlocks.txt\fP と -\fImandatory\-locking.txt\fP (以前のカーネルでは、これらのファイルは \fIDocumentation\fP ディレクトリ直下にあり、 -\fImandatory\-locking.txt\fP は \fImandatory.txt\fP という名前であった。) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/log.3 b/manual/LDP_man-pages/draft/man3/log.3 deleted file mode 100644 index d603b8f5..00000000 --- a/manual/LDP_man-pages/draft/man3/log.3 +++ /dev/null @@ -1,113 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 1995-08-14 by Arnt Gulbrandsen -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Wed Aug 6 00:35:20 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH LOG 3 2010\-09\-20 "" "Linux Programmer's Manual" -.SH 名前 -log, logf, logl \- 自然対数関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble log(double \fP\fIx\fP\fB);\fP -.br -\fBfloat logf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double logl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBlogf\fP(), \fBlogl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBlog\fP() 関数は \fIx\fP の自然対数を返す。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の自然対数を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が 1 の場合、+0 が返される。 - -\fIx\fP が正の無限大の場合、正の無限大が返される。 - -\fIx\fP が 0 の場合、極エラー (pole error) が発生し、 各関数はそれぞれ \-\fBHUGE_VAL\fP, \-\fBHUGE_VALF\fP, -\-\fBHUGE_VALL\fP を返す。 - -\fIx\fP が負の場合 (負の無限大も含む)、領域エラー (domain error) が発生し、 NaN (not a number) が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が負である -\fIerrno\fP に \fBEDOM\fP が設定される。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.TP -極エラー (pole error): \fIx\fP が 0 である -\fIerrno\fP に \fBERANGE\fP が設定される。 0 による除算 (divide\-by\-zero) 浮動小数点例外 -(\fBFE_DIVBYZERO\fP) が上がる。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠している。 -.SH バグ -glibc 2.5 以前では、 NaN に対して \fBlog\fP() をとると、間違って不正浮動小数点例外 (\fBFE_INVALID\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/log10.3 b/manual/LDP_man-pages/draft/man3/log10.3 deleted file mode 100644 index 92d2f549..00000000 --- a/manual/LDP_man-pages/draft/man3/log10.3 +++ /dev/null @@ -1,94 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 1995-08-14 by Arnt Gulbrandsen -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Wed Aug 6 00:35:20 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH LOG10 3 2010\-09\-20 "" "Linux Programmer's Manual" -.SH 名前 -log10, log10f, log10l \- 底が 10 の対数関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble log10(double \fP\fIx\fP\fB);\fP -.br -\fBfloat log10f(float \fP\fIx\fP\fB);\fP -.br -\fBlong double log10l(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBlog10f\fP(), \fBlog10l\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBlog10\fP() 関数は \fIx\fP の常用対数 (底が 10 の対数) を返す。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の常用対数 (底が 10 の対数) を返す。 - -\fIx\fP が 0、1、負、無限大、NaN などのさまざまな特別な状況については、 \fBlog\fP(3) を参照のこと。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 - -これらの関数で発生するエラーについては、 \fBlog\fP(3) を参照のこと。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/log1p.3 b/manual/LDP_man-pages/draft/man3/log1p.3 deleted file mode 100644 index 6d189f98..00000000 --- a/manual/LDP_man-pages/draft/man3/log1p.3 +++ /dev/null @@ -1,131 +0,0 @@ -.\" Copyright 1995 Jim Van Zandt -.\" and Copyright 2008, Linux Foundation, written by 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 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Wed Aug 6 00:35:20 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH LOG1P 3 2014\-02\-28 "" "Linux Programmer's Manual" -.SH 名前 -log1p, log1pf, log1pl \- 引き数に 1 を加えた値の対数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble log1p(double \fP\fIx\fP\fB);\fP -.br -\fBfloat log1pf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double log1pl(long double \fP\fIx\fP\fB);\fP -.sp -.fi -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBlog1p\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBlog1pf\fP(), \fBlog1pl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -\fIlog1p(x)\fP は以下と等価な値を返す。 -.nf - - log (1 + \fIx\fP) - -.fi -\fIx\fP の値が 0 に近い場合でも正確に計算できる方法が用いられる。 -.SH 返り値 -成功すると、これらの関数は \fI(1\ +\ x)\fP の自然対数を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が正の無限大の場合、正の無限大が返される。 - -\fIx\fP が \-1 の場合、極エラー (pole error) が発生し、 各関数はそれぞれ \-\fBHUGE_VAL\fP, \-\fBHUGE_VALF\fP, -\-\fBHUGE_VALL\fP を返す。 - -.\" POSIX.1 specifies a possible range error if x is subnormal -.\" glibc 2.8 doesn't do this -\fIx\fP が \-1 より小さい場合 (負の無限大も含む)、 領域エラー (domain error) が発生し、 NaN (not a number) -が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が \-1 より小さい -.\" .I errno -.\" is set to -.\" .BR EDOM . -不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.TP -極エラー (pole error): \fIx\fP が \-1 である -.\" .I errno -.\" is set to -.\" .BR ERANGE . -0 による除算 (divide\-by\-zero) 浮動小数点例外 (\fBFE_DIVBYZERO\fP) が上がる。 -.PP -.\" FIXME . Is it intentional that these functions do not set errno? -.\" log(), log2(), log10() do set errno -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6792 -これらの関数は \fIerrno\fP を設定しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBlog1p\fP(), \fBlog1pf\fP(), \fBlog1pl\fP() はスレッドセーフである。 -.SH 準拠 -.\" BSD -C99, POSIX.1\-2001. -.SH 関連項目 -\fBexp\fP(3), \fBexpm1\fP(3), \fBlog\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/log2.3 b/manual/LDP_man-pages/draft/man3/log2.3 deleted file mode 100644 index d800c176..00000000 --- a/manual/LDP_man-pages/draft/man3/log2.3 +++ /dev/null @@ -1,96 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 1995-08-14 by Arnt Gulbrandsen -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004-2005 Yuichi SATO -.\" all rights reserved. -.\" Translated 2004-08-20, Yuichi SATO -.\" Updated & Modified 2005-01-16, Yuichi SATO -.\" Updated & Modified 2005-09-06, Akihiro MOTOKI -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH LOG2 3 2010\-09\-12 "" "Linux Programmer's Manual" -.SH 名前 -log2, log2f, log2l \- 底が 2 の対数関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble log2(double \fP\fIx\fP\fB);\fP -.br -\fBfloat log2f(float \fP\fIx\fP\fB);\fP -.br -\fBlong double log2l(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBlog2\fP(), \fBlog2f\fP(), \fBlog2l\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -\fBlog2\fP() 関数は底を 2 とする \fIx\fP の対数を返す。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の底を 2 とする対数を返す。 - -\fIx\fP が 0、1、負、無限大、NaN などのさまざまな特別な状況については、 \fBlog\fP(3) を参照のこと。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 - -これらの関数で発生するエラーについては、 \fBlog\fP(3) を参照のこと。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/logb.3 b/manual/LDP_man-pages/draft/man3/logb.3 deleted file mode 100644 index 0cee7dce..00000000 --- a/manual/LDP_man-pages/draft/man3/logb.3 +++ /dev/null @@ -1,121 +0,0 @@ -.\" Copyright 2004 Andries Brouwer . -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" Inspired by a page by Walter Harms created 2002-08-10 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Sat Jan 29 06:47:42 JST 2005 -.\" by Yuichi SATO -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH LOGB 3 2014\-02\-28 "" "Linux Programmer's Manual" -.SH 名前 -logb, logbf, logbl \- 浮動小数点数の指数を取得する -.SH 書式 -\fB#include \fP -.sp -\fBdouble logb(double \fP\fIx\fP\fB);\fP -.br -\fBfloat logbf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double logbl(long double \fP\fIx\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBlogb\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBlogbf\fP(), \fBlogbl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -これらの関数は、 \fIx\fP の浮動小数点の内部表現から指数部を抽出し、浮動小数点数値として返す。 \fI\fP -で定義されている整数定数 \fBFLT_RADIX\fP は、システムの浮動小数点表現で使用されている基数を表す。 \fBFLT_RADIX\fP が 2 の場合、 -\fBlogb(\fP\fIx\fP\fB)\fP は \fBfloor(log2(\fP\fIx\fP\fB))\fP と等しいが、後者の方がたぶん高速である。 -.LP -\fIx\fP が非正規化数の場合、 \fBlogb\fP() は \fIx\fP が正規化された場合の指数を返す。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の指数部を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が 0 の場合、極エラー (pole error) が発生し、 各関数はそれぞれ \-\fBHUGE_VAL\fP, \-\fBHUGE_VALF\fP, -\-\fBHUGE_VALL\fP を返す。 - -\fIx\fP が負の無限大か正の無限大の場合、正の無限大が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -極エラー (pole error): \fIx\fP が 0 である -.\" .I errno -.\" is set to -.\" .BR ERANGE . -0 による除算 (divide\-by\-zero) 浮動小数点例外 (\fBFE_DIVBYZERO\fP) が上がる。 -.PP -.\" FIXME . Is it intentional that these functions do not set errno? -.\" log(), log2(), log10() do set errno -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6793 -.\" -.\" .SH HISTORY -.\" The -.\" .BR logb () -.\" function occurs in 4.3BSD. -.\" see IEEE.3 in the 4.3BSD manual -これらの関数は \fIerrno\fP を設定しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBlogb\fP(), \fBlogbf\fP(), \fBlogbl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 関連項目 -\fBilogb\fP(3), \fBlog\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/login.3 b/manual/LDP_man-pages/draft/man3/login.3 deleted file mode 100644 index 437b3fe2..00000000 --- a/manual/LDP_man-pages/draft/man3/login.3 +++ /dev/null @@ -1,85 +0,0 @@ -.\" Derived from text written by Martin Schulze (or taken from glibc.info) -.\" and text written by Paul Thompson - both copyright 2002. -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004-2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Thu Aug 26 06:04:53 JST 2004 -.\" by Yuichi SATO -.\" Updated & Modified Sat Jan 15 06:38:41 JST 2005 by Yuichi SATO -.\" -.TH LOGIN 3 2004\-05\-06 GNU "Linux Programmer's Manual" -.SH 名前 -login, logout \- utmp と wtmp エントリーを書き込む -.SH 書式 -\fB#include \fP -.sp -\fBvoid login(const struct utmp *\fP\fIut\fP\fB);\fP -.sp -\fBint logout(const char *\fP\fIut_line\fP\fB);\fP -.sp -\fI\-lutil\fP でリンクする。 -.SH 説明 -utmp ファイルは現在システムを使用しているユーザーを記録する。 wtmp ファイルはすべてのログインとログアウトを記録する。 \fButmp\fP(5) -を参照すること。 -.LP -関数 \fBlogin\fP() は与えられた \fIstruct utmp\fP \fIut\fP を utmp と wtmp ファイルの両方に書き込む。 -.LP -関数 \fBlogout\fP() は utmp ファイルにあるエントリーをクリアする。 -.SS "GNU 版の詳細" -より正確には、 \fBlogin\fP() は引き数 \fIut\fP 構造体をとり、(もし存在するならば) フィールド \fIut\->ut_type\fP を -\fBUSER_PROCESS\fP という値にし、(もし存在するならば) フィールド \fIut\->ut_pid\fP を呼び出し元プロセスのプロセス -ID の値にする。 次にフィールド \fIut\->ut_line\fP の値を設定しようとする。 -この関数は、標準入力・標準出力・標準エラー出力の中から端末である最初のものをとり、対応するパス名から先頭の \fI/dev/\fP を引いたものを -このフィールドに格納して、この構造体を utmp ファイルに書き込む。 一方、端末名が見つからない場合は、このフィールドは "???" とされて、 -この構造体は utmp ファイルに書き込まれない。 その後にこの構造体は wtmp ファイルに書き込まれる。 -.LP -\fBlogout\fP() 関数は utmp ファイルから \fIut_line\fP 引き数にマッチするエントリーを探す。 レコードが見つかった場合、 -\fIut_name\fP と \fIut_host\fP フィールドをクリアして、 \fIut_tv\fP タイムスタンプフィールドを更新し、 (もし存在するならば) -\fIut_type\fP フィールドを \fBDEAD_PROCESS\fP に更新する。 -.SH 返り値 -エントリーをデータベースに書き込むのに成功した場合、 \fBlogout\fP() 関数は 1 を返す。 またエラーが起こった場合、0 を返す。 -.SH ファイル -.TP -\fI/var/run/utmp\fP -ユーザーアカウントデータベース。 \fI\fP における \fB_PATH_UTMP\fP で設定されている。 -.TP -\fI/var/log/wtmp\fP -ユーザーアカウントログファイル。 \fI\fP における \fB_PATH_WTMP\fP で設定されている。 -.SH 準拠 -POSIX.1\-2001 にはない。 BSD 系に存在する。 -.SH 注意 -\fIstruct utmp\fP のメンバ \fIut_user\fP は、BSD では \fIut_name\fP という名前である点に注意すること。 そのため -\fIut_name\fP は \fI\fP において \fIut_user\fP のエイリアスとして定義されている。 -.SH 関連項目 -\fBgetutent\fP(3), \fButmp\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/lrint.3 b/manual/LDP_man-pages/draft/man3/lrint.3 deleted file mode 100644 index ba4d058c..00000000 --- a/manual/LDP_man-pages/draft/man3/lrint.3 +++ /dev/null @@ -1,113 +0,0 @@ -.\" Copyright 2001 Andries Brouwer . -.\" and Copyright 2008, Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001, 2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Sun Jul 8 11:59:22 JST 2001 -.\" by Yuichi SATO -.\" Updated & Modified Sat Jan 15 22:39:05 JST 2005 -.\" by Yuichi SATO -.\" Updated 2008-09-18, Akihiro MOTOKI -.\" -.TH LRINT 3 2014\-01\-18 "" "Linux Programmer's Manual" -.SH 名前 -lrint, lrintf, lrintl, llrint, llrintf, llrintl \- 最も近い整数値に丸める -.SH 書式 -.nf -\fB#include \fP -.sp -\fBlong int lrint(double \fP\fIx\fP\fB);\fP -.br -\fBlong int lrintf(float \fP\fIx\fP\fB);\fP -.br -\fBlong int lrintl(long double \fP\fIx\fP\fB);\fP -.sp -\fBlong long int llrint(double \fP\fIx\fP\fB);\fP -.br -\fBlong long int llrintf(float \fP\fIx\fP\fB);\fP -.br -\fBlong long int llrintl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -上記の全ての関数: -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -これらの関数は、現在の丸め方向に基づき、最も近い整数に引き数を丸める (現在の丸め方向については \fBfesetround\fP(3) を参照)。 - -\fBrint\fP(3) 系の関数と違い、これらの関数の返り値の型は引き数の型と異なる点に注意すること。 -.SH 返り値 -これらの関数は丸めた整数値を返す。 - -.\" The return value is -(LONG_MAX - 1) or -(LLONG_MAX -1) -\fIx\fP が NaN か無限大の場合、もしくは丸めた値が大き過ぎて \fIlong\fP (\fBll*\fP 関数の場合には \fIlong long\fP) -に格納できない場合、 領域エラー (domain error) が発生し、返り値は不定となる。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が NaN か無限大、もしくは丸めた値が大き過ぎる -.\" .I errno -.\" is set to -.\" .BR EDOM . -不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.PP -.\" FIXME . Is it intentional that these functions do not set errno? -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6798 -これらの関数は \fIerrno\fP を設定しない。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBlrint\fP(), \fBlrintf\fP(), \fBlrintl\fP(), \fBllrint\fP(), \fBllrintf\fP(), -\fBllrintl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/lround.3 b/manual/LDP_man-pages/draft/man3/lround.3 deleted file mode 100644 index 7af6e1d7..00000000 --- a/manual/LDP_man-pages/draft/man3/lround.3 +++ /dev/null @@ -1,115 +0,0 @@ -.\" Copyright 2001 Andries Brouwer . -.\" and Copyright 2008, Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001, 2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Sat Jul 14 11:21:46 JST 2001 -.\" by Yuichi SATO -.\" Updated & Modified Sun Jan 16 06:26:19 JST 2005 -.\" by Yuichi SATO -.\" Updated 2008-09-18, Akihiro MOTOKI -.\" -.TH LROUND 3 2013\-08\-26 "" "Linux Programmer's Manual" -.SH 名前 -lround, lroundf, lroundl, llround, llroundf, llroundl \- (0 から遠い方の) -最も近い整数値に丸める -.SH 書式 -.nf -\fB#include \fP -.sp -\fBlong int lround(double \fP\fIx\fP\fB);\fP -.br -\fBlong int lroundf(float \fP\fIx\fP\fB);\fP -.br -\fBlong int lroundl(long double \fP\fIx\fP\fB);\fP -.sp -\fBlong long int llround(double \fP\fIx\fP\fB);\fP -.br -\fBlong long int llroundf(float \fP\fIx\fP\fB);\fP -.br -\fBlong long int llroundl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -上記の全ての関数: -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -これらの関数は最も近い整数に引き数を丸める。 現在の丸め方向に関係なく、 0 から遠い方の最も近い整数に引き数は丸められる (現在の丸め方向については -\fBfenv\fP(3) 参照)。 - -関数 \fBround\fP(3), \fBceil\fP(3) と違い、これらの関数の返り値の型は引き数の型と異なる点に注意すること。 -.SH 返り値 -これらの関数は丸めた整数値を返す。 - -.\" The return value is -(LONG_MAX - 1) or -(LLONG_MAX -1) -\fIx\fP が NaN か無限大の場合、もしくは丸めた値が大き過ぎて \fIlong\fP (\fBll*\fP 関数の場合には \fIlong long\fP) -に格納できない場合、 領域エラー (domain error) が発生し、返り値は不定となる。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が NaN か無限大、もしくは丸めた値が大き過ぎる -.\" .I errno -.\" is set to -.\" .BR EDOM . -不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.PP -.\" FIXME . Is it intentional that these functions do not set errno? -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6797 -これらの関数は \fIerrno\fP を設定しない。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBlround\fP(), \fBlroundf\fP(), \fBlroundl\fP(), \fBllround\fP(), \fBllroundf\fP(), -\fBllroundl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/lsearch.3 b/manual/LDP_man-pages/draft/man3/lsearch.3 deleted file mode 100644 index 20365461..00000000 --- a/manual/LDP_man-pages/draft/man3/lsearch.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" Copyright 1995 Jim Van Zandt -.\" -.\" %%%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 -.\" -.\" Corrected prototype and include, aeb, 990927 -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 Ueyama Rui -.\" all rights reserved. -.\" Translated 1998-05-23, Ueyama Rui -.\" Updated 2005-02-26, Akihiro MOTOKI -.\" -.TH LSEARCH 3 1999\-09\-27 GNU "Linux Programmer's Manual" -.SH 名前 -lfind, lsearch \- 配列を線形検索する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid *lfind(const void *\fP\fIkey\fP\fB, const void *\fP\fIbase\fP\fB, size_t *\fP\fInmemb\fP\fB,\fP -\fB size_t \fP\fIsize\fP\fB, int(*\fP\fIcompar\fP\fB)(const void *, const void *));\fP -.sp -\fBvoid *lsearch(const void *\fP\fIkey\fP\fB, void *\fP\fIbase\fP\fB, size_t *\fP\fInmemb\fP\fB,\fP -\fB size_t \fP\fIsize\fP\fB, int(*\fP\fIcompar\fP\fB)(const void *, const void *));\fP -.fi -.SH 説明 -\fBlfind\fP() と \fBlsearch\fP() は、 \fIsize\fP バイトの要素 \fI*nmemb\fP 個からなる配列 \fIbase\fP から、 -\fIkey\fP を線形検索する。比較を行うのは \fIcompar\fP が参照している関数で、 これは 2つの引き数を持ち、1つめの引き数が \fIkey\fP -を、2つめの引き数は配列メンバーを指す。また \fIcompar\fP は、 \fIkey\fP が配列のメンバーとマッチしたなら 0、そうでなければ 0 -以外を返すことが期待されている。 -.PP -\fBlsearch\fP() は、マッチする要素を見つけられなかったとき、 配列の最後に \fIkey\fP をつけ加える。そして \fI*nmemb\fP を 1 -ふやす。 したがって、この関数を使用する際には、マッチする要素が存在するか、 もしくは配列に要素を追加するための領域があるか、を把握しておく必要がある。 -.SH 返り値 -\fBlfind\fP() の返り値は、配列のマッチしたメンバーへのポインターである。 もしマッチするメンバーが見つからないと NULL を返す。 -\fBlsearch\fP() の返り値も、配列のマッチしたメンバーへのポインターである。 マッチするメンバーが見つからなかったときは、 -新たにつけ加えたメンバーへのポインターを返す。 -.SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001. libc には libc\-4.6.27 以降で実装されている。 -.SH バグ -関数の名前の選び方がよくない。 -.SH 関連項目 -\fBbsearch\fP(3), \fBhsearch\fP(3), \fBtsearch\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/lseek64.3 b/manual/LDP_man-pages/draft/man3/lseek64.3 deleted file mode 100644 index 6d0de040..00000000 --- a/manual/LDP_man-pages/draft/man3/lseek64.3 +++ /dev/null @@ -1,133 +0,0 @@ -.\" Copyright 2004 Andries Brouwer . -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Sun Jan 30 03:23:04 JST 2005 -.\" by Yuichi SATO -.\" -.TH LSEEK64 3 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -lseek64 \- ファイルの 64 ビットの読み書きオフセットの位置を変える -.SH 書式 -\fB#define _LARGEFILE64_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.br -\fB#include \fP -.sp -\fBoff64_t lseek64(int \fP\fIfd\fP\fB, off64_t \fP\fIoffset\fP\fB, int \fP\fIwhence\fP\fB);\fP -.SH 説明 -\fBlseek\fP(2) 関数ファミリーは、ファイルディスクリプター \fIfd\fP に関連するオープンされたファイルのオフセットを、 -ファイルの開始位置・現在位置・終端から \fIoffset\fP の位置へ変更する。 これは \fIwhence\fP がそれぞれ \fBSEEK_SET\fP, -\fBSEEK_CUR\fP, \fBSEEK_END\fP の場合に対応する。 -.LP -更に詳しい説明・返り値・エラーは、 \fBlseek\fP(2) を参照すること。 -.PP -4 つのインターフェースが使用可能である: \fBlseek\fP(2), \fBlseek64\fP(), \fBllseek\fP(2) と元となるシステムコール -\fB_llseek\fP(2) である。 -.SS lseek -プロトタイプ: -.nf -.sp -.in +4n -\fBoff_t lseek(int \fP\fIfd\fP\fB, off_t \fP\fIoffset\fP\fB, int \fP\fIwhence\fP\fB);\fP -.in -.fi -.sp -\fBlseek\fP(2) は型 \fIoff_t\fP を使う。 これは 32 ビットアーキテクチャー上では 32 ビット符号付き型である。 ただし、 -.nf -.sp -.in +4n -#define _FILE_OFFSET_BITS 64 -.in -.sp -.fi -を定義してコンパイルした場合は 64 ビット符号付き型である。 -.SS lseek64 -プロトタイプ: -.nf -.sp -.in +4n -\fBoff64_t lseek64(int \fP\fIfd\fP\fB, off64_t \fP\fIoffset\fP\fB, int \fP\fIwhence\fP\fB);\fP -.in -.fi -.sp -ライブラリルーチン \fBlseek64\fP() は \fIoff_t\fP が 32 ビット型であっても 64 ビット型を使う。 このプロトタイプ (と型 -\fIoff64_t\fP) は、以下の定義をしてコンパイルした場合にのみ使用可能である。 -.nf -.sp -.in +4n -#define _LARGEFILE64_SOURCE -.in -.sp -.fi -.\" in glibc 2.0.94, not in 2.0.6 -関数 \fBlseek64\fP() は glibc 2.1 以降で使用可能であり、 \fBllseek\fP() のエイリアスとして定義されている。 -.SS llseek -プロトタイプ: -.nf -.sp -.in +4n -\fBloff_t llseek(int \fP\fIfd\fP\fB, loff_t \fP\fIoffset\fP\fB, int \fP\fIwhence\fP\fB);\fP -.in -.fi -.sp -.\" in libc 5.0.9, not in 4.7.6 -型 \fIloff_t\fP は 64 ビット符号付き型である。 ライブラリルーチン \fBllseek\fP() は glibc で利用可能であり、 -特別な定義なしに動作する。 しかしながら、 glibc のヘッダーはプロトタイプを供していない。 ユーザーは上記のプロトタイプまたはそれと同等のものを、 -自身のソースに追加しなければならない。 このデータがないことによって \fBe2fsck\fP(8) -のコンパイルが失敗するという苦情がユーザーから出たので、 glibc 2.1.3 では以下のようなリンク時の警告が追加された。 -.sp -.in +4n -"the \`llseek\' function may be dangerous; use \`lseek64\' instead." -.in -.sp -これにより、警告なしでコンパイルしたい場合には、この関数を使用不可にできる。 -.SS _llseek -上記の全ての関数は、このシステムコールに基づいて実装される。 プロトタイプは以下の通り: -.nf -.sp -.in +4n -\fBint _llseek(int \fP\fIfd\fP\fB, off_t \fP\fIoffset_hi\fP\fB, off_t \fP\fIoffset_lo\fP\fB,\fP -\fB loff_t *\fP\fIresult\fP\fB, int \fP\fIwhence\fP\fB);\fP -.in -.fi -.sp -更に詳しい情報は、 \fBllseek\fP(2) を参照すること。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBlseek64\fP() はスレッドセーフである。 -.SH 関連項目 -\fBllseek\fP(2), \fBlseek\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/makecontext.3 b/manual/LDP_man-pages/draft/man3/makecontext.3 deleted file mode 100644 index 7f273d68..00000000 --- a/manual/LDP_man-pages/draft/man3/makecontext.3 +++ /dev/null @@ -1,181 +0,0 @@ - -.\" Copyright (C) 2001 Andries Brouwer (aeb@cwi.nl) -.\" and Copyright (C) 2006 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 -.\" -.\" 2006-08-02, mtk, Added example program -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001 NAKANO Takeo all rights reserved. -.\" Translated Sat Dec 15 2001 by NAKANO Takeo -.\" Updated 2008-12-24, Akihiro MOTOKI , LDP v3.15 -.\" -.TH MAKECONTEXT 3 2014\-05\-28 GNU "Linux Programmer's Manual" -.SH 名前 -makecontext, swapcontext \- ユーザーコンテキストを操作する -.SH 書式 -\fB#include \fP -.sp -\fBvoid makecontext(ucontext_t *\fP\fIucp\fP\fB, void (*\fP\fIfunc\fP\fB)(),\fP \fBint -\fP\fIargc\fP\fB, ...);\fP -.sp -\fBint swapcontext(ucontext_t *\fP\fIoucp\fP\fB, const ucontext_t *\fP\fIucp\fP\fB);\fP -.SH 説明 -System V 的な環境では、 \fBmcontext_t\fP および \fBucontext_t\fP という 2 つの型と、 -\fBgetcontext\fP(3), \fBsetcontext\fP(3), \fBmakecontext\fP(), \fBswapcontext\fP() という -4 つの関数が \fI\fP で定義されており、あるプロセス内部で制御下にある複数のスレッド間で、 -ユーザーレベルのコンテキスト切替えができるようになっている。 -.LP -これらの型と、最初の 2 つの関数については、 \fBgetcontext\fP(3) を参照のこと。 -.LP -\fBmakecontext\fP() 関数は、ポインター \fIucp\fP が指すコンテキストを変更する (\fIucp\fP は以前の -\fBgetcontext\fP(3) 呼び出しで得られたものである)。 \fBmakecontext\fP() -を起動する前には、呼び出し者は、このコンテキスト用に 新しいスタックを確保し、そのアドレスを \fIucp\->uc_stack\fP に代入し、 -さらに後継のコンテキストを定義し、そのアドレスを \fIucp\->uc_link\fP に 代入しなければならない。 - -このコンテキストが将来 (\fBsetcontext\fP(3) または \fBswapcontext\fP() によって) 有効にされると、関数 -\fIfunc\fP が呼ばれ、 引き数として \fIargc\fP 以降の整数 (\fIint\fP) 引き数の列が渡される。 呼び出し者は \fIargc\fP -にこれらの引き数の個数を指定しなければならない。 この関数が戻ると、後継のコンテキストが有効になる。 後継コンテキストのポインターが NULL -の場合、そのスレッドが終了する。 -.LP -\fBswapcontext\fP() 関数は現在のコンテキストを ポインター \fIoucp\fP が指す構造体に保存し、 ポインター \fIucp\fP -が指すコンテキストを有効にする。 -.SH 返り値 -成功すると、 \fBswapcontext\fP() は返らない (しかし後に \fIoucp\fP が有効になった場合には返ることがある。 このときには -\fBswapcontext\fP() は 0 を返すように見える。) 失敗すると、 \fBswapcontext\fP() は \-1 を返し、 -\fIerrno\fP をエラーに応じて設定する。 -.SH エラー -.TP -\fBENOMEM\fP -スタックに割り当てる空間が残っていない。 -.SH バージョン -\fBmakecontext\fP() と \fBswapcontext\fP() は、バージョン 2.1 以降の glibc で提供されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBmakecontext\fP() と \fBswapcontext\fP() はスレッドセーフである。 -.SH 準拠 -SUSv2, POSIX.1\-2001. POSIX.1\-2008 では、移植性の問題から \fBmakecontext\fP() と -\fBswapcontext\fP() の仕様が削除されている。 代わりに、アプリケーションを POSIX スレッドを使って書き直すことが 推奨されている。 -.SH 注意 -\fIucp\->uc_stack\fP の解釈は \fBsigaltstack\fP(2) の場合と同じである。 すなわちこの構造体には、 -スタックとして用いられるメモリー領域の開始アドレスと長さが含まれ、 これはスタックが伸びる方向がどちらであるかには関係しない。 -したがって、ユーザープログラムはこの件については心配しなくてよい。 - -\fIint\fP とポインター型が同じ大きさであるアーキテクチャーでは (x86\-32 はその例であり、両方の型とも 32 ビットである)、 -\fBmakecontext\fP() の \fIargc\fP 以降の引き数としてポインターを渡してもうまく動くかもしれない。 -しかしながら、このようにすると、移植性は保証されず、 標準に従えば動作は未定義であり、ポインターが \fIint\fP -よりも大きいアーキテクチャーでは正しく動作しないことだろう。 それにも関わらず、バージョン 2.8 以降の glibc では、 -\fBmakecontext\fP() に変更が行われ、(x86\-64 などの) いくつかの 64 ビットアーキテクチャーで -引き数としてポインターを渡すことができるようになっている。 -.SH 例 -.PP -以下のサンプルプログラムは、 \fBgetcontext\fP(3), \fBmakecontext\fP(), \fBswapcontext\fP() -の使用方法の例を示すものである。 このプログラムを実行すると、以下のような出力が得られる: -.in +4n -.nf - -$\fB ./a.out\fP -main: swapcontext(&uctx_main, &uctx_func2) -func2: started -func2: swapcontext(&uctx_func2, &uctx_func1) -func1: started -func1: swapcontext(&uctx_func1, &uctx_func2) -func2: returning -func1: returning -main: exiting -.fi -.in -.SS プログラムのソース -\& -.nf -#include -#include -#include - -static ucontext_t uctx_main, uctx_func1, uctx_func2; - -#define handle_error(msg) \e - do { perror(msg); exit(EXIT_FAILURE); } while (0) - -static void -func1(void) -{ - printf("func1: started\en"); - printf("func1: swapcontext(&uctx_func1, &uctx_func2)\en"); - if (swapcontext(&uctx_func1, &uctx_func2) == \-1) - handle_error("swapcontext"); - printf("func1: returning\en"); -} - -static void -func2(void) -{ - printf("func2: started\en"); - printf("func2: swapcontext(&uctx_func2, &uctx_func1)\en"); - if (swapcontext(&uctx_func2, &uctx_func1) == \-1) - handle_error("swapcontext"); - printf("func2: returning\en"); -} - -int -main(int argc, char *argv[]) -{ - char func1_stack[16384]; - char func2_stack[16384]; - - if (getcontext(&uctx_func1) == \-1) - handle_error("getcontext"); - uctx_func1.uc_stack.ss_sp = func1_stack; - uctx_func1.uc_stack.ss_size = sizeof(func1_stack); - uctx_func1.uc_link = &uctx_main; - makecontext(&uctx_func1, func1, 0); - - if (getcontext(&uctx_func2) == \-1) - handle_error("getcontext"); - uctx_func2.uc_stack.ss_sp = func2_stack; - uctx_func2.uc_stack.ss_size = sizeof(func2_stack); - /* Successor context is f1(), unless argc > 1 */ - uctx_func2.uc_link = (argc > 1) ? NULL : &uctx_func1; - makecontext(&uctx_func2, func2, 0); - - printf("main: swapcontext(&uctx_main, &uctx_func2)\en"); - if (swapcontext(&uctx_main, &uctx_func2) == \-1) - handle_error("swapcontext"); - - printf("main: exiting\en"); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBsigaction\fP(2), \fBsigaltstack\fP(2), \fBsigprocmask\fP(2), \fBgetcontext\fP(3), -\fBsigsetjmp\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/makedev.3 b/manual/LDP_man-pages/draft/man3/makedev.3 deleted file mode 100644 index 14319d7c..00000000 --- a/manual/LDP_man-pages/draft/man3/makedev.3 +++ /dev/null @@ -1,78 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-08, Akihiro MOTOKI -.\" -.TH MAKEDEV 3 2014\-05\-28 Linux "Linux Programmer's Manual" -.SH 名前 -makedev, major, minor \- デバイス番号の操作 -.SH 書式 -.nf -\fB#define _BSD_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP - -\fBdev_t makedev(unsigned int \fP\fImaj\fP\fB, unsigned int \fP\fImin\fP\fB);\fP - -\fBunsigned int major(dev_t \fP\fIdev\fP\fB);\fP -\fBunsigned int minor(dev_t \fP\fIdev\fP\fB);\fP -.fi -.SH 説明 -デバイス ID は、メジャー ID とマイナー ID の二つの部分から構成される。 -メジャー ID はデバイスクラスの識別に使用され、マイナー ID は -そのクラス内の特定のデバイスインスタンスの識別に使用される。 -デバイス ID は \fIdev_t\fP 型を用いて表現される。 - -\fBmakedev\fP() は、指定されたメジャー ID とマイナー ID を組み合わせて -デバイス ID を生成し、関数の結果として返す。 -このデバイス ID は \fBmknod\fP(2) などに渡すことができる。 - -関数 \fBmajor\fP() と \fBminor\fP() は \fBmakedev\fP() と反対の処理を行う。 -つまり、device ID を渡すと、それぞれメジャー ID 部分とマイナー ID 部分 -を返す。これらのマクロは、例えば、 \fBstat\fP(2) が返す構造体に含まれる -デバイス ID を分解する場合などで役に立つ。 -.SH 準拠 -.\" The BSDs, HP-UX, Solaris, AIX, Irix -関数 \fBmakedev\fP(), \fBmajor\fP(), \fBminor\fP() は -POSIX.1 では規定されていないが、他の多くのシステムにも存在する。 -.SH 注意 -これらのインターフェースはマクロとして定義されている。 -glibc 2.3.3 以降では、これらは GNU 固有の 3 つの関数 -\fBgnu_dev_makedev\fP(), \fBgnu_dev_major\fP(), \fBgnu_dev_minor\fP() の -エイリアス (別名) となっている。後者の名前がエクスポートされるが、 -以前から使われている前者の名前の方が移植性がある。 -.SH 関連項目 -\fBmknod\fP(2), \fBstat\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mallinfo.3 b/manual/LDP_man-pages/draft/man3/mallinfo.3 deleted file mode 100644 index d28ca0b6..00000000 --- a/manual/LDP_man-pages/draft/man3/mallinfo.3 +++ /dev/null @@ -1,240 +0,0 @@ -'\" t -.\" Copyright (c) 2012 by 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 MALLINFO 3 2012\-05\-06 Linux "Linux Programmer's Manual" -.SH 名前 -mallinfo \- メモリー割り当て情報を取得する -.SH 書式 -\fB#include \fP - -\fBstruct mallinfo mallinfo(void);\fP -.SH 説明 -\fBmallinfo\fP() 関数は、 \fBmalloc\fP(3) や一連の関数により実行されたメモリー -割り当てに関する情報を格納した構造体のコピーを返す。 -この構造体は以下のように定義されている。 -.PP -.in +4n -.nf -struct mallinfo { - int arena; /* Non\-mmapped space allocated (bytes) */ - int ordblks; /* Number of free chunks */ - int smblks; /* Number of free fastbin blocks */ - int hblks; /* Number of mmapped regions */ - int hblkhd; /* Space allocated in mmapped regions (bytes) */ - int usmblks; /* Maximum total allocated space (bytes) */ - int fsmblks; /* Space in freed fastbin blocks (bytes) */ - int uordblks; /* Total allocated space (bytes) */ - int fordblks; /* Total free space (bytes) */ - int keepcost; /* Top\-most, releasable space (bytes) */ -}; -.fi -.in -.PP -\fImallinfo\fP 構造体の各フィールドには以下の情報が格納される。 -.TP 10 -\fIarena\fP -\fBmmap\fP(2) 以外の手段で割り当てられた総メモリー量 (例えばヒープに割り当てられたメモリー) 。 -この数字には使用中のブロックやフリーリスト上のブロックも含まれる。 -.TP -\fIordblks\fP -通常の (つまり fastbin ではない) 未使用ブロック数。 -.TP -\fIsmblks\fP -fastbin 未使用ブロック数 (\fBmallopt\fP(3) 参照)。 -.TP -\fIhblks\fP -\fBmmap\fP(2) を使って現在割り当てられているブロック数 (\fBmallopt\fP(3) の \fBM_MMAP_THRESHOLD\fP -の議論を参照)。 -.TP -\fIhblkhd\fP -\fBmmap\fP(2) を使って現在割り当てられているブロックのバイト数。 -.TP -\fIusmblks\fP -割り当てた空間の最高点 ("highwater mark")、 つまり、 これまでの中での最大の割り当て量。 -このフィールドはスレッド化されていない環境でのみ収集される。 -.TP -\fIfsmblks\fP -fastbin フリーブロックの総バイト数。 -.TP -\fIuordblks\fP -使用中の割り当てメモリーで使われているバイト数。 -.TP -\fIfordblks\fP -フリーブロックの総バイト数。 -.TP -\fIkeepcost\fP -.\" .SH VERSIONS -.\" Available already in glibc 2.0, possibly earlier -ヒープの一番上にある解放可能な未使用の空間の大きさ。 この値は \fBmalloc_trim\fP(3) で理想的な場合に解放できる最大のバイト数である -(理想的というのは、 ページ境界の制限などを無視した場合である。 -.SH 準拠 -この関数は POSIX や C 標準では規定されていない。 多くの System V 由来のシステムに同様の関数が存在し、 SVID -では同様の関数が規定されていた。 -.SH バグ -.\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=208 -.\" See the 24 Aug 2011 mail by Paul Pluzhnikov: -.\" "[patch] Fix mallinfo() to accumulate results for all arenas" -.\" on libc-alpha@sourceware.org -\fBこれらの情報はメインのメモリー割り当て領域に対するもののみである。\fP 他の領域の割り当ては対象にならない。 -他の領域の情報も取得できる別の手段については \fBmalloc_stats\fP(3) や \fBmalloc_info\fP(3) を参照。 - -\fImallinfo\fP 構造体の各フィールドは \fIint\fP 型である。 しかし、 いくつかの内部管理用の値は \fIlong\fP 型の場合もあるので、 -報告される値が一周してしまい、 不正確になる可能性がある。 -.SH 例 -以下のプログラムは \fBmallinfo\fP() を利用して、 メモリーブロックの割り当て、解放のそれぞれ前後でメモリー割り当ての統計情報を取得する。 -統計情報は標準出力に表示される。 - -最初の 2 つのコマンドライン引き数は \fBmalloc\fP(3) で割り当てるブロック数とサイズを指定する。 - -残りの 3 つの引き数は、どの割り当てられたブロックを \fBfree\fP(3) で解放すべきかを指定する。 これらの 3 つの引き数の指定は任意で、 -最初のものから順に以下の情報を指定する。 1 つ目の引き数は、 ブロックを解放するループで使用するステップサイズを指定する (デフォルト値は 1 で、 -1 は指定した範囲のすべてのブロックを解放することを意味する)。 2 つ目の引き数は、 解放する先頭ブロックの場所番号を指定する (デフォルト値は 0 -で、 0 は先頭の割り当て済みブロックを意味する)。 3 つ目の引き数は、 解放する最終ブロックの場所番号よりひとつ大きい値を指定する -(デフォルト値は最大ブロック番号よりもひとつ大きい値である)。 これらの 3 つの引き数が省略された場合、 -デフォルトではすべての割り当てられたブロックが解放される。 - -以下のプログラムの実行例では、 100 バイトの割り当てを 1000 回実行し、 割り当てたブロックの 2 つに 1 つを解放する。 -.PP -.in +4n -.nf -$ \fB./a.out 1000 100 2\fP -============== Before allocating blocks ============== -Total non\-mmapped bytes (arena): 0 -# of free chunks (ordblks): 1 -# of free fastbin blocks (smblks): 0 -# of mapped regions (hblks): 0 -Bytes in mapped regions (hblkhd): 0 -Max. total allocated space (usmblks): 0 -Free bytes held in fastbins (fsmblks): 0 -Total allocated space (uordblks): 0 -Total free space (fordblks): 0 -Topmost releasable block (keepcost): 0 - -============== After allocating blocks ============== -Total non\-mmapped bytes (arena): 135168 -# of free chunks (ordblks): 1 -# of free fastbin blocks (smblks): 0 -# of mapped regions (hblks): 0 -Bytes in mapped regions (hblkhd): 0 -Max. total allocated space (usmblks): 0 -Free bytes held in fastbins (fsmblks): 0 -Total allocated space (uordblks): 104000 -Total free space (fordblks): 31168 -Topmost releasable block (keepcost): 31168 - -============== After freeing blocks ============== -Total non\-mmapped bytes (arena): 135168 -# of free chunks (ordblks): 501 -# of free fastbin blocks (smblks): 0 -# of mapped regions (hblks): 0 -Bytes in mapped regions (hblkhd): 0 -Max. total allocated space (usmblks): 0 -Free bytes held in fastbins (fsmblks): 0 -Total allocated space (uordblks): 52000 -Total free space (fordblks): 83168 -Topmost releasable block (keepcost): 31168 -.fi -.in -.SS プログラムのソース -\& -.nf -#include -#include "tlpi_hdr.h" - -static void -display_mallinfo(void) -{ - struct mallinfo mi; - - mi = mallinfo(); - - printf("Total non\-mmapped bytes (arena): %d\en", mi.arena); - printf("# of free chunks (ordblks): %d\en", mi.ordblks); - printf("# of free fastbin blocks (smblks): %d\en", mi.smblks); - printf("# of mapped regions (hblks): %d\en", mi.hblks); - printf("Bytes in mapped regions (hblkhd): %d\en", mi.hblkhd); - printf("Max. total allocated space (usmblks): %d\en", mi.usmblks); - printf("Free bytes held in fastbins (fsmblks): %d\en", mi.fsmblks); - printf("Total allocated space (uordblks): %d\en", mi.uordblks); - printf("Total free space (fordblks): %d\en", mi.fordblks); - printf("Topmost releasable block (keepcost): %d\en", mi.keepcost); -} - -int -main(int argc, char *argv[]) -{ -#define MAX_ALLOCS 2000000 - char *alloc[MAX_ALLOCS]; - int numBlocks, j, freeBegin, freeEnd, freeStep; - size_t blockSize; - - if (argc < 3 || strcmp(argv[1], "\-\-help") == 0) - usageErr("%s num\-blocks block\-size [free\-step [start\-free " - "[end\-free]]]\en", argv[0]); - - numBlocks = atoi(argv[1]); - blockSize = atoi(argv[2]); - freeStep = (argc > 3) ? atoi(argv[3]) : 1; - freeBegin = (argc > 4) ? atoi(argv[4]) : 0; - freeEnd = (argc > 5) ? atoi(argv[5]) : numBlocks; - - printf("============== Before allocating blocks ==============\en"); - display_mallinfo(); - - for (j = 0; j < numBlocks; j++) { - if (numBlocks >= MAX_ALLOCS) - fatal("Too many allocations"); - - alloc[j] = malloc(blockSize); - if (alloc[j] == NULL) - errExit("malloc"); - } - - printf("\en============== After allocating blocks ==============\en"); - display_mallinfo(); - - for (j = freeBegin; j < freeEnd; j += freeStep) - free(alloc[j]); - - printf("\en============== After freeing blocks ==============\en"); - display_mallinfo(); - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -.ad l -.nh -\fBmmap\fP(2), \fBmalloc\fP(3), \fBmalloc_info\fP(3), \fBmalloc_stats\fP(3), -\fBmalloc_trim\fP(3), \fBmallopt\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/malloc.3 b/manual/LDP_man-pages/draft/man3/malloc.3 deleted file mode 100644 index 6af74acd..00000000 --- a/manual/LDP_man-pages/draft/man3/malloc.3 +++ /dev/null @@ -1,156 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" -.\" %%%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 19:00:59 1993 by Rik Faith (faith@cs.unc.edu) -.\" Clarification concerning realloc, iwj10@cus.cam.ac.uk (Ian Jackson), 950701 -.\" Documented MALLOC_CHECK_, Wolfram Gloger (wmglo@dent.med.uni-muenchen.de) -.\" 2007-09-15 mtk: added notes on malloc()'s use of sbrk() and mmap(). -.\" -.\" FIXME . Review http://austingroupbugs.net/view.php?id=374 -.\" to see what changes are required on this page. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated 1998-08-12, NAKANO Takeo -.\" Modified 1998-12-18, NAKANO Takeo -.\" Modified 2000-08-23, NAKANO Takeo -.\" Modified 2001-05-19, Kentaro Shirakata -.\" Modified 2001-12-13, Kentaro Shirakata -.\" Modified 2005-03-15, Akihiro MOTOKI -.\" Modified 2007-10-12, Akihiro MOTOKI, LDP v2.66 -.\" -.TH MALLOC 3 2014\-05\-21 GNU "Linux Programmer's Manual" -.SH 名前 -malloc, free, calloc, realloc \- 動的なメモリーの割り当てと解放を行う -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid *malloc(size_t \fP\fIsize\fP\fB);\fP -\fBvoid free(void \fP\fI*ptr\fP\fB);\fP -\fBvoid *calloc(size_t \fP\fInmemb\fP\fB, size_t \fP\fIsize\fP\fB);\fP -\fBvoid *realloc(void \fP\fI*ptr\fP\fB, size_t \fP\fIsize\fP\fB);\fP -.fi -.SH 説明 -.PP -.\" glibc does this: -\fBmalloc\fP() 関数は \fIsize\fP バイトを割り当て、 割り当てられたメモリーに対する -ポインターを返す。\fIメモリーの内容は初期化されない\fP。 \fIsize\fP が 0 の場合、 -\fBmalloc\fP() は NULL または \fBfree\fP() に後で渡しても問題の起こらない -一意なポインター値を返す。 -.PP -\fBfree\fP() 関数はポインター \fIptr\fP が指すメモリー空間を解放する。このポインターは、 -以前に呼び出された \fBmalloc\fP(), \fBcalloc\fP(), \fBrealloc\fP() のいずれかが返した値で -なければならない。これ以外のポインターを指定したり、すでに \fIfree(ptr)\fP が実行 -されていたりした場合の動作は定義されていない。 -\fIptr\fP が NULL の場合には、何の動作も行われない。 -.PP -.\" glibc does this: -\fBcalloc\fP() 関数は \fIsize\fP バイトの要素 \fInmemb\fP 個からなる配列にメモリーを -割り当て、割り当てられたメモリーに対するポインターを返す。 メモリーの内容は数値ゼロ -(全ビットが 0 のバイト) にセットされる。 \fInmemb\fP か \fIsize\fP が 0 の場合、 -\fBcalloc\fP() は NULL または \fBfree\fP() に後で渡しても問題の起こらない一意な -ポインター値を返す。 -.PP -\fBrealloc\fP() は、ポインター \fIptr\fP が示すメモリーブロックのサイズを \fIsize\fP バイト -に変更する。領域の先頭から、新旧のサイズの小さい方の位置までの範囲の内容は -変更されない。新しいサイズが前のサイズよりも大きい場合、追加されたメモリーは -初期化 \fIされない\fP。 -\fIptr\fP が NULL の場合には \fImalloc(size)\fP と等価である。 -\fIsize\fP が 0 で \fIptr\fP が NULL でない場合には、 \fIfree(ptr)\fP と等価である。 -\fIptr\fP が NULL 以外の場合、 \fIptr\fP は以前に呼び出された \fBmalloc\fP(), \fBcalloc\fP(), -\fBrealloc\fP() のいずれかが返した値でなければならない。 -\fIptr\fP が指す領域が移動されていた場合は \fIfree(ptr)\fP が実行される。 -.SH 返り値 -関数 \fBcalloc\fP() と \fBmalloc\fP() は、割り当てられたメモリーへのポインターを返す。 -割り当てられたメモリーは、あらゆる組み込み型に対応できるようにアラインメントされる。 エラーの場合、これらの関数は NULL を返す。 \fIsize\fP -が 0 で呼び出した \fBmalloc\fP() や、\fInmemb\fP か \fIsize\fP が 0 で呼び出した \fBcalloc\fP() が成功した場合にも -NULL が返される。 -.PP -\fBfree\fP() 関数は値を返さない。 -.PP -\fBrealloc\fP() 関数は新たに割り当てられたメモリーへのポインターを返す。 これはあらゆる組み込み型に対応できるようにアラインメントされており、 -\fIptr\fP とは異なることもある。割り当て要求に失敗した場合は NULL が返る。 \fIsize\fP が 0 の場合には、NULL もしくは -\fBfree\fP() に渡すことができるポインターが返る。 \fBrealloc\fP() が失敗した場合には、元のブロックは変更されない。 -つまり、解放されたり移動されたりはしない。 -.SH 準拠 -C89, C99. -.SH 注意 -デフォルトでは、Linux は楽観的メモリー配置戦略を用いている。つまり、 -\fBmalloc\fP() が NULL でない値を返しても、そのメモリーが実際に利用可能であること -が保証されない。システムがメモリー不足状態になったとき、メモリー不足解決器 (OOM -killer) によって一つまたは複数のプロセスが削除される。 -詳しい情報は、\fBproc\fP(5) の \fI/proc/sys/vm/overcommit_memory\fP と -\fIproc/sys/vm/oom_adj\fP、および Linux カーネルのソースファイルの -\fIDocumentation/vm/overcommit\-accounting\fP を参照のこと。 - -通常、 \fBmalloc\fP() は、ヒープからメモリーを割り当て、必要に応じてヒープのサイズを \fBsbrk\fP(2) を使って調節する。 -\fBMMAP_THRESHOLD\fP バイトよりも大きなメモリーブロックを割り当てる場合、 glibc の \fBmalloc\fP() 実装は -\fBmmap\fP(2) を使ってプライベートな無名マッピング (anonymous mapping) として メモリーを割り当てる。 デフォルトでは -\fBMMAP_THRESHOLD\fP は 128 kB だが、 \fBmallopt\fP(3) を使って調整できる。 \fBmmap\fP(2) -を使って行われたメモリー割り当ては \fBRLIMIT_DATA\fP リソース上限の影響を受けない (\fBgetrlimit\fP(2) 参照)。 - -マルチスレッドアプリケーションでのデータ破損を回避するため、内部では mutexを -使用して、これらの関数で利用されるメモリー管理用のデータ構造を保護している。 -複数のスレッドが同時にメモリーの確保や解放を行うようなマルチスレッドアプリケー -ションでは、これらの mutex の衝突が起こり得る。マルチスレッドアプリケーション -でのメモリー割り当て処理にスケーラビリティを持たせるために、glibc では mutex の -衝突が検出された際には追加の \fIメモリー割り当て領域\fP を作成する。 -追加領域の各々は、(\fBbrk\fP(2) や \fBmmap\fP(2) を使って) システムにより内部的に -割り当てられた大きな領域で、それぞれ独自の mutex により管理されている。 - -UNIX 98 標準では、 \fBmalloc\fP(), \fBcalloc\fP(), \fBrealloc\fP() は実行に失敗したときに \fIerrno\fP を -\fBENOMEM\fP に設定することになっている。 Glibc ではこれが守られていることを仮定している (またこれらのルーチンの glibc -バージョンはこのことを守っている)。 個人的に別の malloc の実装を使っていて、その malloc が\fIerrno\fP -を設定しない場合には、失敗した際に \fIerrno\fP にエラーの理由を設定しないライブラリルーチンがあるかもしれない。 -.LP -\fBmalloc\fP(), \fBcalloc\fP(), \fBrealloc\fP(), \fBfree\fP() における事故は、 ほとんどの場合はヒープの破壊 -(corruption) が原因である。 例えば、割り当てられた領域をオーバーフローする、 同じポインターに二度 free する、などがこれにあたる。 -.PP -\fBmalloc\fP 実装は、環境変数で動作を調整できる。 詳細は \fBmallopt\fP(3) を参照のこと。 -.SH 関連項目 -.\" http://g.oswego.edu/dl/html/malloc.html -.\" A Memory Allocator - by Doug Lea -.\" -.\" http://www.bozemanpass.com/info/linux/malloc/Linux_Heap_Contention.html -.\" Linux Heap, Contention in free() - David Boreham -.\" -.\" http://www.citi.umich.edu/projects/linux-scalability/reports/malloc.html -.\" malloc() Performance in a Multithreaded Linux Environment - -.\" Check Lever, David Boreham -.\" -.ad l -.nh -\fBbrk\fP(2), \fBmmap\fP(2), \fBalloca\fP(3), \fBmalloc_get_state\fP(3), -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/malloc_get_state.3 b/manual/LDP_man-pages/draft/man3/malloc_get_state.3 deleted file mode 100644 index 58b532e2..00000000 --- a/manual/LDP_man-pages/draft/man3/malloc_get_state.3 +++ /dev/null @@ -1,79 +0,0 @@ -.\" Copyright (c) 2012 by 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 MALLOC_GET_STATE 3 2014\-06\-13 GNU "Linux Programmer's Manual" -.SH 名前 -malloc_get_state, malloc_set_state \- malloc 実装の状態を保存/復元する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid* malloc_get_state(void);\fP - -\fBint malloc_set_state(void *\fP\fIstate\fP\fB);\fP -.fi -.SH 説明 -\fBmalloc_get_state\fP() 関数は \fBmalloc\fP(3) 内部のすべての管理用変数を記録する (ただし、 ヒープの実際の内容と -\fBmalloc_hook\fP(3) 関数ポインターの状態は記録されない)。 状態は \fBmalloc\fP(3) で動的に確保されたシステム依存の -opaque な (内部構造は分からない) データ構造体に記録され、 関数の結果としてそのデータ構造体へのポインターが返される -(このメモリーは呼び出し元が責任をもって \fBfree\fP(3) する必要がある)。 - -\fBmalloc_set_state\fP() 関数は、 \fBmalloc\fP(3) 内部のすべての管理用変数を \fIstate\fP が指す opaque -なデータ構造体から復元する。 -.SH 返り値 -成功すると、 \fBmalloc_get_state\fP() は新しく割り当てられたデータ構造体へのポインターを返す。 エラーの場合 -(例えば、データ構造体に必要なメモリーが割り当てられなかったなど)、 \fBmalloc_get_state\fP() は NULL を返す。 - -.\" if(ms->magic != MALLOC_STATE_MAGIC) return -1; -.\" /* Must fail if the major version is too high. */ -.\" if((ms->version & ~0xffl) > (MALLOC_STATE_VERSION & ~0xffl)) return -2; -成功すると、 \fBmalloc_set_state\fP() は 0 を返す。 実装が \fIstate\fP -が正しく作成されたデータ構造体を指していないと検出した場合、 \fBmalloc_set_state\fP() は \-1 を返す。 \fIstate\fP -が参照するデータ構造体のバージョンがこの実装が認識するバージョンよりも新しいと実装が検出した場合、 \fBmalloc_set_state\fP() は \-2 -を返す。 -.SH 準拠 -これらの関数は GNU による拡張である。 -.SH 注意 -これらの関数が役に立つのは、 この \fBmalloc\fP(3) の実装が共有ライブラリの一部として使用され、 -ヒープの内容が何か他の方法で保存/復元される場合である。 この手法は GNU Emacs が「ダンプ」関数 ("dumping" function) -を実装するのに使用されている。 - -.\" i.e., calls __malloc_check_init() -.\" i.e., malloc checking is not already in use -.\" and the caller requested malloc checking -これらの関数がフック関数ポインターの保存と復元を行うことはない。 ただし、 2 つ例外がある。 \fBmalloc_get_state\fP() -が呼び出された際に malloc チェック (\fBmallopt\fP(3) 参照) が使用中の場合、 \fBmalloc_set_state\fP() -は可能なら malloc チェックフックをリセットする。 また、 保存された状態の malloc チェックが使用中でないが、 呼び出し元が malloc -チェックを要求していた場合、 フックは 0 にリセットされる。 -.SH 関連項目 -\fBmalloc\fP(3), \fBmallopt\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index 0bb91364..b9c7eaf0 100644 --- a/manual/LDP_man-pages/draft/man3/malloc_hook.3 +++ b/manual/LDP_man-pages/draft/man3/malloc_hook.3 @@ -18,45 +18,47 @@ .\" Updated 2013-05-01, Akihiro MOTOKI .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH MALLOC_HOOK 3 2010\-10\-13 GNU "Linux Programmer's Manual" +.TH MALLOC_HOOK 3 2020\-11\-01 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 \fP -.sp +.PP \fBvoid *(*__malloc_hook)(size_t \fP\fIsize\fP\fB, const void *\fP\fIcaller\fP\fB);\fP -.sp +.PP \fBvoid *(*__realloc_hook)(void *\fP\fIptr\fP\fB, size_t \fP\fIsize\fP\fB, const void *\fP\fIcaller\fP\fB);\fP -.sp +.PP \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 +.PP \fBvoid (*__free_hook)(void *\fP\fIptr\fP\fB, const void *\fP\fIcaller\fP\fB);\fP -.sp +.PP \fBvoid (*__malloc_initialize_hook)(void);\fP -.sp +.PP \fBvoid (*__after_morecore_hook)(void);\fP .fi .SH 説明 GNU C ライブラリでは、適切なフック関数 (hook function) を指定することで \fBmalloc\fP(3), \fBrealloc\fP(3), \fBfree\fP(3) の動作を変更することができる。例えば、動的にメモリー割り当てを行う プログラムのデバッグにこれらのフックを使うことができる。 -.LP +.PP 変数 \fB__malloc_initialize_hook\fP は malloc の実装が初期化される際に一度だけ呼ばれる関数へのポインターである。 この変数は書き換え可能 (weak) であり、アプリケーション内で 以下のような定義で上書きできる: -.nf - - void (*__malloc_initialize_hook)(void) = my_init_hook; - -.fi +.PP +.in +4n +.EX +void (*__malloc_initialize_hook)(void) = my_init_hook; +.EE +.in +.PP なお、関数 \fImy_init_hook\fP() で全てのフックの初期化をすることができる。 -.LP +.PP \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 +.PP 変数 \fB__after_morecore_hook\fP は、領域の追加要求があり \fBsbrk\fP(2) が呼ばれた後で毎回呼び出される関数へのポインターである。 .SH 準拠 @@ -64,12 +66,15 @@ GNU C ライブラリでは、適切なフック関数 (hook function) を指定 .SH 注意 .\" https://bugzilla.redhat.com/show_bug.cgi?id=450187 .\" http://sourceware.org/bugzilla/show_bug.cgi?id=9957 -マルチスレッドプログラムでは、 これらのフック関数の使用は安全ではなく、 今では非推奨である。 プログラマは、 "malloc" や "free" -のような関数を定義して公開して、 関連する関数を呼び出すようにすべきである。 -.SH 例 +The use of these hook functions is not safe in multithreaded programs, and +they are now deprecated. From glibc 2.24 onwards, the +\fB__malloc_initialize_hook\fP variable has been removed from the API. +Programmers should instead preempt calls to the relevant functions by +defining and exporting functions such as "malloc" and "free". +.SH EXAMPLES これらの変数の使い方の簡単な例を以下に示す。 -.sp -.nf +.PP +.EX #include #include @@ -104,20 +109,18 @@ my_malloc_hook(size_t size, const void *caller) /* 現在設定されているフック (underlying hook) を保存する */ old_malloc_hook = __malloc_hook; - /* printf() は malloc() を呼び出す可能性があるので - ここでもガードを行う (元々のフックのままにしておく) */ - printf("malloc(%u) called from %p returns %p\en", - (unsigned int) size, caller, result); + /* printf() might call malloc(), so protect it too. */ + printf("malloc(%zu) called from %p returns %p\en", + size, caller, result); /* ユーザーが使おうとするフックを再設定する */ __malloc_hook = my_malloc_hook; return result; } -.fi +.EE .SH 関連項目 \fBmallinfo\fP(3), \fBmalloc\fP(3), \fBmcheck\fP(3), \fBmtrace\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 42221431..00000000 --- a/manual/LDP_man-pages/draft/man3/malloc_info.3 +++ /dev/null @@ -1,233 +0,0 @@ -.\" Copyright (c) 2012 by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2013 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2013-07-22, Akihiro MOTOKI -.\" Updated 2013-07-31, Akihiro MOTOKI -.\" -.TH MALLOC_INFO 3 2015\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -malloc_info \- malloc の状態をストリームに出力する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint malloc_info(int \fP\fIoptions\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -.fi -.SH 説明 -\fBmalloc_info\fP() 関数は、 呼び出し元のメモリー割り当て実装の現在の状態を表す XML 文字列を出力する。 文字列は、 -ファイルストリーム \fIstream\fP に出力される。 出力された文字列には、 全ての割り当て領域の情報が含まれる (\fBmalloc\fP(3) 参照)。 - -現在の実装では、 \fIoptions\fP は 0 でなければならない。 -.SH 返り値 -\fBmalloc_info\fP() は、成功すると 0 を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP にエラーの原因を示す値を設定する。 -.SH エラー -.TP -\fBEINVAL\fP -\fIoptions\fP が 0 でなかった。 -.SH バージョン -\fBmalloc_info\fP() は glibc バージョン 2.10 で追加された。 -.SH 準拠 -この関数は GNU による拡張である。 -.SH 注意 -メモリー割り当て情報は (C の構造体ではなく) XML 文字列として提供される。 これは、 この情報は時間をたつと (内部で使用している実装によって) -変わる可能性があるからである。 出力される XML 文字列にはバージョンフィールドが付いている。 - -\fBopen_memstream\fP(3) 関数を使うと、 \fBmalloc_info\fP() の出力を、 -ファイルではなくメモリー内のバッファーに直接送ることができる。 - -\fBmalloc_info\fP() 関数は、 \fBmalloc_stats\fP(3) と \fBmallinfo\fP(3) の不備を解決するために設定された。 -.SH 例 -以下のプログラムは最大で 4 つのコマンドライン引数を取り、 最初の 3 つは必須である。 最初の引数は、このプログラムが生成するスレッド数を指定する。 -メインスレッドを含む全てのスレッドが第 2 引数で指定した数のメモリーブロックの割り当てを行う。 第 3 引数は割り当てるブロックのサイズを制御する。 -メインスレッドはこのサイズのブロックを作成し、 このプログラムが生成する 2 番目のスレッドはこのサイズの 2 倍のサイズのブロックを、 3 -番目のスレッドはこのサイズの 3 倍のサイズのブロックを割り当て、 以下同様である。 - -このプログラムは \fBmalloc_info\fP() を 2 回呼び出し、メモリー割り当て状態を表示する。 -最初の呼び出しはスレッドの生成もメモリーの割り当ても行われる前に実行される。 2 -回目の呼び出しは全てのスレッドがメモリー割り当てを行った後に実行される。 - -以下の例では、 コマンドライン引数で、 追加でスレッドを一つ生成し、メインスレッドと追加のスレッドの両方が 10000 -個のメモリーブロックを割り当てるように指定している。 メモリーブロックの割り当て後の \fBmalloc_info\fP() では、 2 -つの割り当て領域の状態が表示されている。 -.in +4 -.nf - -$ \fBgetconf GNU_LIBC_VERSION\fP -glibc 2.13 -$ \fB./a.out 1 10000 100\fP -============ Before allocating blocks ============ - - - - - - - - - - - - - - - - - - - -============ After allocating blocks ============ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -.fi -.in -.SS プログラムのソース -.nf - -#include -#include -#include -#include -#include - -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index e2d854bd..00000000 --- a/manual/LDP_man-pages/draft/man3/malloc_stats.3 +++ /dev/null @@ -1,60 +0,0 @@ -'\" t -.\" Copyright (c) 2012 by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2013 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2013-05-07, Akihiro MOTOKI -.\" -.TH MALLOC_STATS 3 2012\-05\-06 Linux "Linux Programmer's Manual" -.SH 名前 -malloc_stats \- メモリー割り当ての統計を表示する -.SH 書式 -\fB#include \fP - -\fBvoid malloc_stats(void);\fP -.SH 説明 -.\" .SH VERSIONS -.\" Available already in glibc 2.0, possibly earlier -\fBmalloc_stats\fP() 関数は \fBmalloc\fP(3) や関連する関数により割り当てられたメモリーに関する統計を (標準エラーに) -出力する。 各領域 (割り当てエリア) について、 この関数は割り当てられているメモリーの総量と現在の割り当てが使用している総バイト数を出力する -(これらの二つの値は \fBmallinfo\fP(3) で取得できる \fIarena\fP と \fIuordblks\fP フィールドに対応している)。 -また、この関数は、 すべての領域のこれら二つの統計情報の合計値と、 \fBmmap\fP(2) -を使って同時に割り当てられたブロック数とバイト数の最大値を表示する。 -.SH 準拠 -この関数は GNU による拡張である。 -.SH 注意 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/malloc_trim.3 b/manual/LDP_man-pages/draft/man3/malloc_trim.3 deleted file mode 100644 index 69ff911e..00000000 --- a/manual/LDP_man-pages/draft/man3/malloc_trim.3 +++ /dev/null @@ -1,67 +0,0 @@ -'\" t -.\" Copyright (c) 2012 by 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 MALLOC_TRIM 3 2014\-05\-28 Linux "Linux Programmer's Manual" -.SH 名前 -malloc_trim \- ヒープの一番上から未使用メモリーを解放する -.SH 書式 -\fB#include \fP - -\fBint malloc_trim(size_t \fP\fIpad\fP\fB);\fP -.SH 説明 -\fBmalloc_trim\fP() 関数は (適切な引き数で \fBsbrk\fP(2) を呼び出して) ヒープの一番上の未使用メモリーの解放を試みる。 - -\fIpad\fP 引き数は、 ヒープの一番上から切り詰める際に残す未使用領域の量を指定する。 この引き数が 0 の場合、 -ヒープの一番上の最小量のメモリーだけを維持できる (つまり 1 ページかそれ未満)。 0 以外の引き数を指定すると、 -ヒープの一番上にある程度の量の未使用領域を残し、 将来の割り当てを \fBsbrk\fP(2) でヒープを拡張せずに行えるようにできる。 -.SH 返り値 -\fBmalloc_trim\fP() 関数はメモリーが実際に解放されシステムに戻された場合に 1 を返し、 どのメモリーも解放できなかった場合は 0 -を返す。 -.SH エラー -.\" .SH VERSIONS -.\" Available already in glibc 2.0, possibly earlier -エラーは定義されていない。 -.SH 準拠 -この関数は GNU による拡張である。 -.SH 注意 -この関数は、 特定の状況では \fBfree\fP(3) により自動的に呼び出される。 \fBmallopt\fP(3) の \fBM_TOP_PAD\fP と -\fBM_TRIM_THRESHOLD\fP の議論を参照。 - -この関数は、 ヒープの一番上以外の場所にある未使用メモリーを解放することはできない。 - -.\" malloc/malloc.c::mTRIm(): -.\" return result | (av == &main_arena ? sYSTRIm (pad, av) : 0); -この関数はメイン領域のメモリーだけを解放する。 -.SH 関連項目 -\fBsbrk\fP(2), \fBmalloc\fP(3), \fBmallopt\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/malloc_usable_size.3 b/manual/LDP_man-pages/draft/man3/malloc_usable_size.3 deleted file mode 100644 index a3079ecd..00000000 --- a/manual/LDP_man-pages/draft/man3/malloc_usable_size.3 +++ /dev/null @@ -1,59 +0,0 @@ -.\" Copyright (c) 2012 by 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 MALLOC_USABLE_SIZE 3 2014\-06\-13 GNU "Linux Programmer's Manual" -.SH 名前 -malloc_usable_size \- ヒープから確保したメモリーブロックのサイズを取得する -.SH 書式 -\fB#include \fP - -\fBsize_t malloc_usable_size (void *\fP\fIptr\fP\fB);\fP -.SH 説明 -\fBmalloc_usable_size\fP() 関数は、 \fIptr\fP が指すブロックで使用可能なバイト数を返す。 \fIptr\fP -は、\fBmalloc\fP(3) や同様の関数で割り当てられたメモリーブロックへのポインターである。 -.SH 返り値 -\fBmalloc_usable_size\fP() は \fIptr\fP が指す割り当て済みメモリーブロックで使用可能なバイト数を返す。 \fIptr\fP が -NULL の場合、 0 が返される。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBmalloc_usable_size\fP() 関数はスレッドセーフである。 -.SH 準拠 -この関数は GNU による拡張である。 -.SH 注意 -\fBmalloc_usable_size\fP() が返す値は、 要求された割り当てサイズよりも大きい場合がある。 -これは、メモリーアラインメントと最小サイズの制約のためである。 この超過バイトをアプリケーションは悪影響なしで上書きすることができるが、 -これを行うのはプログラミングマナーとしてはよいこととは言えない。 アプリケーションの超過バイトの量は、内部の実装に依存する。 - -この関数の主な使用目的はデバッグと内部調査である。 -.SH 関連項目 -\fBmalloc\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/matherr.3 b/manual/LDP_man-pages/draft/man3/matherr.3 index 10a874e1..4d86e737 100644 --- a/manual/LDP_man-pages/draft/man3/matherr.3 +++ b/manual/LDP_man-pages/draft/man3/matherr.3 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (c) 2008, Linux Foundation, written by Michael Kerrisk .\" .\" @@ -34,39 +33,39 @@ .\" all rights reserved. .\" Translated 2012-05-08, Akihiro MOTOKI .\" -.TH MATHERR 3 2014\-06\-13 Linux "Linux Programmer's Manual" +.TH MATHERR 3 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 matherr \- SVID 数学ライブラリの例外処理 .SH 書式 .nf -\fB#define _SVID_SOURCE\fP /* feature_test_macros(7) 参照 */ \fB#include \fP - +.PP \fBint matherr(struct exception *\fP\fIexc\fP\fB);\fP - +.PP \fBextern _LIB_VERSION_TYPE _LIB_VERSION;\fP .fi -.sp +.PP \fI\-lm\fP でリンクする。 .SH 説明 +.\" glibc commit 813378e9fe17e029caf627cab76fe23eb46815fa +\fINote\fP: the mechanism described in this page is no longer supported by +glibc. Before glibc 2.27, it had been marked as obsolete. Since glibc +2.27, the mechanism has been removed altogether. New applications should +use the techniques described in \fBmath_error\fP(7) and \fBfenv\fP(3). This page +documents the \fBmatherr\fP() mechanism as an aid for maintaining and porting +older applications. +.PP System V Interface Definition (SVID) では、各種の数学関数は数学的な 例外を検出した場合に \fBmatherr\fP() を呼ばれる関数を起動すべきである、 と規定されている。この関数は数学関数が返る前に呼び出される。 \fBmatherr\fP() が返った後に、システムは数学関数に戻り、 それから呼び出し元に返る。 - -\fBmatherr\fP() の仕組みは glibc によりサポートされているが、 -現在は廃止予定の扱いである。 -新しくアプリケーションを作成する際には、 -\fBmath_error\fP(7) と \fBfenv\fP(3) で説明されている手法を使用すべきである。 -このマニュアルページでは、古いアプリケーションを保守したり移植する際の -助けとなるよう、 glibc の \fBmatherr\fP() の仕組みについて説明する。 - +.PP \fBmatherr\fP() を使用するためには、 プログラマは (\fIどの\fPヘッダーファイルをインクルードするよりも前に) \fB_SVID_SOURCE\fP 機能検査マクロを定義し、値 \fB_SVID_\fP をグローバル変数 \fB_LIB_VERSION\fP に代入しなければならない。 - +.PP デフォルト版の \fBmatherr\fP() がシステムによって提供されている。 デフォルト版は何も行わず、0 を返す (このことの重要性については 下記を参照)。プログラマが \fBmatherr\fP() を定義することで、 @@ -74,9 +73,9 @@ System V Interface Definition (SVID) では、各種の数学関数は数学的 プログラマが定義した関数は例外が発生した際に起動される。 この関数は引き数 1 個で起動され、その引き数は以下に示す \fIexception\fP 構造体へのポインターである。 - +.PP .in +4n -.nf +.EX struct exception { int type; /* Exception type */ char *name; /* Name of function causing exception */ @@ -84,7 +83,7 @@ struct exception { double arg2; /* 2nd argument to function */ double retval; /* Function return value */ } -.fi +.EE .in .PP \fItype\fP フィールドは以下の値のいずれかである。 @@ -119,15 +118,15 @@ Partial loss of significance が発生した。 .PP フィールド \fIarg1\fP と \fIarg2\fP は関数に渡された引き数である (引き数を一つしか取らない関数の場合は \fIarg2\fP は不定となる)。 - +.PP \fIretval\fP フィールドはその数学関数が呼び出し元に返そうとしている返り値 を示す。プログラマが定義した \fBmatherr\fP() でこのフィールドを変更する ことで、その数学関数の返り値を変更することができる。 - +.PP \fBmatherr\fP() 関数が 0 を返した場合、 システムは \fIerrno\fP を上記の通り設定し、標準エラー出力に エラーメッセージを表示することがある (下記参照)。 - +.PP \fBmatherr\fP() 関数が 0 以外の値を返した場合、 システムは \fIerrno\fP を設定せず、エラーメッセージの表示も行わない。 .SS "matherr() を利用している数学関数" @@ -135,25 +134,26 @@ Partial loss of significance が発生した。 "Type" 列 は \fBmatherr\fP() が呼び出される際に \fIexc\->type\fP に 設定される値を示す。 "Result" 列は \fIexc\->retval\fP に 設定されるデフォルトの返り値を示す。 - +.PP "Msg?" 列と "errno" 列は \fBmatherr\fP() が 0 を返した場合のデフォルトの 動作を示す。 "Msg?" 列に "y" が入っている場合、システムは標準エラー 出力にエラーメッセージを表示する。 - +.PP 以下の表では、下記の記法と省略形を使用している。 +.PP .RS -.nf - -x 関数の最初の引き数 -y 関数の二番目の引き数 -fin 引き数の値が無限大 -neg 引き数が負の値 -int 引き数が整数値 -o/f 結果のオーバーフロー -u/f 結果のアンダーフロー -|x| x の絶対値 -X_TLOSS \fI\fP で定義される定数 -.fi +.TS +l l. +x first argument to function +y second argument to function +fin finite value for argument +neg negative value for argument +int integral value for argument +o/f result overflowed +u/f result underflowed +|x| absolute value of x +X_TLOSS is a constant defined in \fI\fP +.TE .RE .\" Details below from glibc 2.8's sysdeps/ieee754/k_standard.c .\" A subset of cases were test by experimental programs. @@ -227,9 +227,17 @@ fmod(x,0) DOMAIN x y EDOM remainder(x,0) DOMAIN NAN y EDOM .TE .SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBmatherr\fP() 関数はスレッドセーフである。 -.SH 例 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBmatherr\fP() +T} Thread safety MT\-Safe +.TE +.SH EXAMPLES 以下のサンプルプログラムは \fBlog\fP(3) を呼び出した際の \fBmatherr\fP() の使用法を示したものである。 最初の引き数は \fBlog\fP(3) に渡す浮動小数点数である。 @@ -240,24 +248,24 @@ remainder(x,0) DOMAIN NAN y EDOM \fBmatherr\fP() からの返り値として使用される。 省略可能な第三引き数を指定した場合、 \fBmatherr\fP() は 数学関数の返り値として代わりに引き数で指定した値を割り当てる。 - +.PP 以下の実行例では、 \fBlog\fP(3) に引き数 0.0 が渡しているが、 \fBmatherr\fP() は使用しない。 - +.PP .in +4n -.nf +.EX $\fB ./a.out 0.0\fP errno: Numerical result out of range x=\-inf -.fi +.EE .in - +.PP 以下の実行例では、 \fBmatherr\fP() が呼び出され、返り値 0 が返される。 - +.PP .in +4n -.nf +.EX $\fB ./a.out 0.0 0\fP matherr SING exception in log() function args: 0.000000, 0.000000 @@ -265,41 +273,41 @@ matherr SING exception in log() function log: SING error errno: Numerical argument out of domain x=\-340282346638528859811704183484516925440.000000 -.fi +.EE .in - +.PP メッセージ "log: SING error" は C ライブラリによって出力されている。 - +.PP 次の実行例では、 \fBmatherr\fP() が呼び出され、0 以外の返り値が返される。 - +.PP .in +4n -.nf +.EX $\fB ./a.out 0.0 1\fP matherr SING exception in log() function args: 0.000000, 0.000000 retval: \-340282346638528859811704183484516925440.000000 x=\-340282346638528859811704183484516925440.000000 -.fi +.EE .in - +.PP この場合は、C ライブラリはメッセージを出力しておらず、 \fIerrno\fP は設定されていない。 - +.PP 次の実行例では、 \fBmatherr\fP() が呼び出され、 数学関数の返り値が変更され、0 以外の返り値が返されている。 - +.PP .in +4n -.nf +.EX $\fB ./a.out 0.0 1 12345.0\fP matherr SING exception in log() function args: 0.000000, 0.000000 retval: \-340282346638528859811704183484516925440.000000 x=12345.000000 -.fi +.EE .in .SS プログラムのソース \& -.nf +.EX #define _SVID_SOURCE #include #include @@ -361,10 +369,9 @@ main(int argc, char *argv[]) printf("x=%f\en", x); exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \fBfenv\fP(3), \fBmath_error\fP(7), \fBstandards\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mblen.3 b/manual/LDP_man-pages/draft/man3/mblen.3 deleted file mode 100644 index e7899d94..00000000 --- a/manual/LDP_man-pages/draft/man3/mblen.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:56:22 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH MBLEN 3 2013\-06\-21 GNU "Linux Programmer's Manual" -.SH 名前 -mblen \- 次のマルチバイト文字のバイト数を返す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint mblen(const char *\fP\fIs\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fIs\fP が NULL でなければ、 \fBmblen\fP() 関数は \fIs\fP から始まる最大 \fIn\fP バイトのマルチバイト文字列を検査して、 -次の完全なマルチバイト文字を取り出す。これには \fBmblen\fP() 関数のみが使用する静的で名前のないシフト状態が使用される。 -マルチバイト文字がヌルワイド文字でなければ \fIs\fP から消費される バイト数を返す。マルチバイト文字がヌルワイド文字ならば 0 を返す。 -.PP -\fIs\fP から始まる \fIn\fP バイトが完全なマルチバイト文字を含んで いなければ、 \fBmblen\fP() は \-1 を返す。マルチバイト文字列 -に冗長なシフトシーケンスが含まれていると、 \fIn\fP が \fIMB_CUR_MAX\fP 以上の場合にも このようなことが起こりえる。 -.PP -\fIs\fP から始まるマルチバイト文字列が次の完全な文字の前に 不正なマルチバイト列を含んでいる場合にも、 \fBmblen\fP() は \-1 を返す。 -.PP -.\" The Dinkumware doc and the Single UNIX specification say this, but -.\" glibc doesn't implement this. -\fIs\fP が NULL ならば、 \fBmblen\fP() 関数はこの関数のみが -使用するシフト状態を初期化状態に戻し、シフト状態を使用した文字符号の場合に はゼロ以外を、文字符号がシフト状態を持たない場合にはゼロを返す。 -.SH 返り値 -\fBmblen\fP() 関数は \fIs\fP から始まるマルチバイト列を検査して ヌルワイド文字以外を確認した場合にはそのバイト数を返す。 -ヌルワイド文字を確認した場合にはゼロを返す。不正なマルチバイト列に 遭遇した場合や完全なマルチバイト文字を解析できなかった場合には \-1 を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBmblen\fP() 関数はスレッドセーフではない。 -.SH 準拠 -C99. -.SH 注意 -\fBmblen\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存している。 -.PP -\fBmbrlen\fP(3) 関数は同じ機能のより良いインターフェースを提供する。 -.SH 関連項目 -\fBmbrlen\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mbrlen.3 b/manual/LDP_man-pages/draft/man3/mbrlen.3 deleted file mode 100644 index b28de7a1..00000000 --- a/manual/LDP_man-pages/draft/man3/mbrlen.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:56:19 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH MBRLEN 3 2013\-06\-21 GNU "Linux Programmer's Manual" -.SH 名前 -mbrlen \- 次のマルチバイト文字の長さをバイト数で返す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t mbrlen(const char *\fP\fIs\fP\fB, size_t \fP\fIn\fP\fB, mbstate_t *\fP\fIps\fP\fB);\fP -.fi -.SH 説明 -\fBmbrlen\fP() 関数は \fIs\fP から始まるマルチバイト文字列を 最大 \fIn\fP バイト調べて次の完全なマルチバイト文字を取り出す。 -同時にシフト状態 \fI*ps\fP を更新する。 マルチバイト文字がナルワイド文字でなければ \fIs\fP から -消費するバイト数を返す。ナルワイド文字ならばシフト状態 \fI*ps\fP を 初期状態に戻して、0 を返す。 -.PP -\fIs\fP から始まる \fIn\fP バイトの文字列が完全なマルチバイト文字を含んで いない場合には \fBmbrlen\fP() は \fI(size_t)\ \-2\fP を返す。 マルチバイト文字列に冗長なシフトシーケンスを含まれていると \fIn\fP >= \fIMB_CUR_MAX\fP -の時にもこのようなことが起こりえる。 -.PP -\fIs\fP から始まるマルチバイト文字列が、次の完全な文字の前に 不正なマルチバイト列を含んでいる場合には、 \fBmbrlen\fP() は -\fI(size_t)\ \-1\fP を返し \fIerrno\fP に \fBEILSEQ\fP が設定される。 この場合の \fI*ps\fP への影響は未定義である。 -.PP -\fIps\fP が NULL ならば、代りに \fBmbrlen\fP() 関数のみが使用する静的で名前のない状態が使用される。 -.SH 返り値 -ナルワイド文字以外の文字を確認した場合には、 \fBmbrlen\fP() 関数は \fIs\fP から始まるマルチバイト列から使用したバイト数を返す。 -ナルワイド文字が確認された場合にはゼロを返す。 不正なマルチバイト列に遭遇した場合には \fI(size_t)\ \-1\fP を返し \fIerrno\fP に -\fBEILSEQ\fP を設定する。 完全なマルチバイト文字を解析できなかった場合には \fI(size_t)\ \-2\fP を返す。 これは \fIn\fP -を増さなければならないことを意味する。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBmbrlen\fP() 関数は、例外付きのスレッドセーフである。 \fIps\fP パラメーターが NULL で呼び出された場合はスレッドセーフではない。 -.SH 準拠 -C99. -.SH 注意 -\fBmbrlen\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存している。 -.SH 関連項目 -\fBmbrtowc\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mbrtowc.3 b/manual/LDP_man-pages/draft/man3/mbrtowc.3 deleted file mode 100644 index e14c63ef..00000000 --- a/manual/LDP_man-pages/draft/man3/mbrtowc.3 +++ /dev/null @@ -1,84 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification -.\" http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:56:16 JST 2000 -.\" by HANATAKA Shinya -.\" Updated Thu Dec 13 JST 2001 by Kentaro Shirakata -.\" -.TH MBRTOWC 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -mbrtowc \- マルチバイト列をワイド文字に変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t mbrtowc(wchar_t *\fP\fIpwc\fP\fB, const char *\fP\fIs\fP\fB, size_t \fP\fIn\fP\fB, mbstate_t *\fP\fIps\fP\fB);\fP -.fi -.SH 説明 -この関数が用いられる場合、通常 \fIs\fP が NULL でなく \fIpwc\fP も NULL で ない。この場合は、 \fBmbrtowc\fP() 関数は -\fIs\fP から始まる最大 \fIn\fP バイトの マルチバイト文字を検査して、次の完全なマルチバイト文字列を取り出し、 それをワイド文字に変換して -\fI*pwc\fP に格納する。 同時にシフト状態 \fI*ps\fP を更新する。 変換したワイド文字が L\(aq\e0\(aq (ヌルワイド文字) -でなければ、 \fIs\fP から消費するバイト数を返す。 変換したワイド文字が L\(aq\e0\(aq の場合にはシフト状態 \fI*ps\fP を -初期状態に戻して 0 を返す。 -.PP -\fIs\fP から始まる \fIn\fP バイトが完全なマルチバイト文字を含んでいない 場合には、 \fBmbrtowc\fP() は \fI(size_t)\ \-2\fP -を返す。 マルチバイト文字列に冗長なシフトシーケンスが含まれていると、 \fIn\fP >= \fIMB_CUR_MAX\fP -の時にもこのようなことが起こりえる。 -.PP -\fIs\fP から始まるマルチバイト文字列が、次の完全な文字の前に 不正なマルチバイト列を含んでいる場合には、 \fBmbrtowc\fP() は -\fI(size_t)\ \-1\fP を返し、\fIerrno\fP に \fBEILSEQ\fP を設定する。 この場合は \fI*ps\fP への影響は未定義である。 -.PP -\fIs\fP が NULL でなく \fIpwc\fP が NULL の場合は \fBmbrtowc\fP() 関数は -上記と同様に動作するが、変換したワイド文字はメモリーには書き込まれない。 -.PP -puts \fI*ps\fP in the initial state and returns 0. 三番目の場合として \fIs\fP が NULL の場合、 -\fIpwc\fP と \fIn\fP は 無視される。 \fI*ps\fP が表現する変換状態が不完全なマルチバイト文字変換を示している場合は、 -\fBmbrtowc\fP() 関数は \fI(size_t)\ \-1\fP を返し、 \fIerrno\fP に \fBEILSEQ\fP をセットし、 \fI*ps\fP -は未定義状態のままにする。 さもなければ、 \fBmbrtowc\fP() 関数は \fI*ps\fP を初期状態にして 0 を返す。 -.PP -上記の全ての場合において、\fIps\fP が NULL ならば代わりに \fBmbrtowc\fP() 関数のみが使用する静的で名前のない状態が使用される。 -さもなければ、\fI*ps\fP は有効な \fImbstate_t\fP オブジェクトで なければならない。 \fImbstate_t\fP オブジェクトである -\fIa\fP はゼロで埋めることによって 初期状態に初期化できる。以下に例を示す。 -.sp -.in +4n -memset(&a, 0, sizeof(a)); -.in -.SH 返り値 -L\(aq\e0\(aq 以外のワイド文字を認識した場合には \fBmbrtowc\fP() 関数は \fIs\fP -から始まるマルチバイト列から解析したバイト数を返す。 L\(aq\e0\(aq ワイド文字を認識した場合には 0 を返す。 -不正なマルチバイト列に遭遇した場合には \fI(size_t)\ \-1\fP を返し、 \fIerrno\fP に \fBEILSEQ\fP -を設定する。完全なマルチバイト文字を 解析できなかった場合には \fI(size_t)\ \-2\fP を返し \fIn\fP を増加させる必要があることを示す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBmbrtowc\fP() 関数は、例外付きのスレッドセーフである。 \fIps\fP パラメーターが NULL で呼び出された場合はスレッドセーフではない。 -.SH 準拠 -C99. -.SH 注意 -\fBmbrtowc\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存している。 -.SH 関連項目 -\fBmbsinit\fP(3), \fBmbsrtowcs\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mbsinit.3 b/manual/LDP_man-pages/draft/man3/mbsinit.3 deleted file mode 100644 index bf24149f..00000000 --- a/manual/LDP_man-pages/draft/man3/mbsinit.3 +++ /dev/null @@ -1,77 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:56:13 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH MBSINIT 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -mbsinit \- 初期シフト状態かどうかを検査する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint mbsinit(const mbstate_t *\fP\fIps\fP\fB);\fP -.fi -.SH 説明 -文字をマルチバイト表現とワイド文字表現の間で変換する場合には \fImbstate_t\fP 型の変換状態を使用する。文字列の変換は有限状態マシン -を使用する。いくらかの文字の変換を完了した後に、残りの文字を処理する ために状態を保存しておく必要があるかもしれない。このような変換状態は -ISO\-2022 や UTF\-7 のような符号を扱うのに必要とされる。 -.PP -初期状態とは文字列の変換を開始する時の状態である。状態には二種類が 存在し、一つは \fBmbsrtowcs\fP(3) のようなマルチバイトをワイド文字に -変換する関数で使用される。もう一つは \fBwcsrtombs\fP(3) のような ワイド文字をマルチバイトに変換する関数で使用される。しかし両方とも -\fImbstate_t\fP に格納され、初期状態として同じ表現を持つ。 -.PP -8ビット符号においては全ての状態は初期状態と等価である。 UTF\-8, EUC\-*, BIG5, SJIS のような多バイト符号においてワイド文字から -多バイト文字への変換関数は非初期状態にはならない。 しかし \fBmbrtowc\fP(3) のような多バイト文字からワイド文字への変換関数では -文字の解釈の途中で非初期状態となる場合がある。 -.PP -初期状態の \fImbstate_t\fP を作成する方法の一つは、それをゼロに設定することである: -.nf - - mbstate_t state; - memset(&state,0,sizeof(mbstate_t)); -.fi -.PP -Linux においては以下の方法でも同様であるが、コンパイラーの警告が 生成されるかもしれない。 -.nf - - mbstate_t state = { 0 }; -.fi -.PP -\fBmbsinit\fP() は \fI*ps\fP が初期状態に一致するかどうかを検査する。 -.SH 返り値 -\fBmbsinit\fP() は \fI*ps\fP が初期状態の場合や NULL の場合には ゼロ以外を返す。それ以外の場合にはゼロを返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBmbsinit\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 注意 -\fBmbsinit\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存している。 -.SH 関連項目 -\fBmbrlen\fP(3), \fBmbrtowc\fP(3), \fBwcrtomb\fP(3), \fBmbsrtowcs\fP(3), \fBwcsrtombs\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mbsnrtowcs.3 b/manual/LDP_man-pages/draft/man3/mbsnrtowcs.3 deleted file mode 100644 index 044f2f8b..00000000 --- a/manual/LDP_man-pages/draft/man3/mbsnrtowcs.3 +++ /dev/null @@ -1,95 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:56:10 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH MBSNRTOWCS 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -mbsnrtowcs \- マルチバイト文字列をワイド文字列に変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t mbsnrtowcs(wchar_t *\fP\fIdest\fP\fB, const char **\fP\fIsrc\fP\fB,\fP -\fB size_t \fP\fInms\fP\fB, size_t \fP\fIlen\fP\fB, mbstate_t *\fP\fIps\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBmbsnrtowcs\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.ad -.PD -.SH 説明 -\fBmbsnrtowcs\fP() 関数は \fBmbsrtowcs\fP(3) 関数に似ているが 変換するバイト数が \fI*src\fP から始まる -\fInms\fP バイトに制限されている 点が異なっている。 -.PP -\fIdest\fP が NULL でなければ \fBmbsnrtowcs\fP() 関数は \fI*src\fP からのマルチバイト文字列の最大 \fInms\fP までを -\fIdest\fP からのワイド文字列に変換する。 最大 \fIlen\fP 文字のワイド文字が \fIdest\fP に書き込まれる。 同時にシフト状態 \fI*ps\fP -を更新する。 変換は \fImbrtowc(dest, *src, n, ps)\fP -を、この呼び出しが成功する限り、繰り返し実行したのと実質的に同様である。 ここでの \fIn\fP は正の数であり、繰り返しごとに \fIdest\fP が 1 -増加させられ、 \fI*src\fP が消費したバイト数だけ増加させられる。変換は以下の三つの いずれかの条件で停止する: -.IP 1. 3 -不正なマルチバイト列に遭遇した。この場合には \fI*src\fP は不正な マルチバイト列を指すようにして、 \fI(size_t)\ \-1\fP -を返し、\fIerrno\fP に \fBEILSEQ\fP を設定する。 -.IP 2. -\fInms\fP 制限によって強制的に停止するか、\fIlen\fP 文字の L\(aq\e0\(aq 以外の ワイド文字を \fIdest\fP -に格納した場合。この場合は \fI*src\fP は 次に変換されるマルチバイト列を指すようにして、\fIdest\fP に書き込まれた ワイド文字の数を返す。 -.IP 3. -マルチバイト文字列が終端のヌルワイド文字 (\(aq\e0\(aq) まで含めて完全に変換された場合。 (この時、副作用として \fI*ps\fP -が初期状態に戻される。) この場合は \fI*src\fP には NULL が設定され、 \fIdest\fP に書き込まれた文字数 (終端の -ヌルワイド文字は含まれない) を返す。 -.PP -\fIdest\fP が NULL の場合、\fIlen\fP は無視され、上記と同様の変換が -行われるが、変換されたワイド文字はメモリーに書き込まれず、変換先の上限 が存在しない。 -.PP -上記のどちらの場合でも、\fIps\fP が NULL ならば、 代りに \fBmbsnrtowcs\fP() 関数のみが使用する静的で名前のない状態が使用される。 -.PP -プログラマーは \fIdest\fP に最低でも \fIlen\fP ワイド文字を書き込むこ とができる空間があることを保証しなければならない。 -.SH 返り値 -\fBmbsnrtowcs\fP() 関数はワイド文字列に変換完了したワイド文字の数を返す。 -終端のナルワイド文字は含まない。不正なマルチバイト列に遭遇した場合には \fI(size_t)\ \-1\fP を返し、\fIerrno\fP に \fBEILSEQ\fP -を設定する。 -.SH 準拠 -POSIX.1\-2008. -.SH 注意 -\fBmbsnrtowcs\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存している。 -.PP -\fIps\fP に NULL を渡した際の動作はマルチスレッドセーフでない。 -.SH 関連項目 -\fBiconv\fP(3), \fBmbrtowc\fP(3) \fBmbsinit\fP(3), \fBmbsrtowcs\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mbsrtowcs.3 b/manual/LDP_man-pages/draft/man3/mbsrtowcs.3 deleted file mode 100644 index f94acc8d..00000000 --- a/manual/LDP_man-pages/draft/man3/mbsrtowcs.3 +++ /dev/null @@ -1,75 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:56:08 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH MBSRTOWCS 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -mbsrtowcs \- マルチバイト文字列をワイド文字列に変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t mbsrtowcs(wchar_t *\fP\fIdest\fP\fB, const char **\fP\fIsrc\fP\fB,\fP -\fB size_t \fP\fIlen\fP\fB, mbstate_t *\fP\fIps\fP\fB);\fP -.fi -.SH 説明 -\fIdest\fP が NULL でなければ、 \fBmbsrtowcs\fP() 関数は マルチバイト文字列 \fI*src\fP を \fIdest\fP -から始まるワイド文字列に 変換する。\fIdest\fP には最大で \fIlen\fP 文字のワイド文字が 書き込まれる。同時にシフト状態 \fI*ps\fP -を更新する。 変換は \fImbrtowc(dest, *src, n, ps)\fP を、この呼び出しが成功する限り繰り返し実行したのと実質的に同様である。 -ここで \fIn\fP は正の数であり、繰り返しごとに \fIdest\fP が 1 増加させられ、 \fI*src\fP -が消費したバイト数だけ増加させられる。変換は以下の三つの いずれかの条件で停止する: -.IP 1. 3 -不正なマルチバイト列に遭遇した。この場合には \fI*src\fP は不正な マルチバイト列を指すようにして、 \fI(size_t)\ \-1\fP -を返し、\fIerrno\fP に \fBEILSEQ\fP を設定する。 -.IP 2. -\fIlen\fP 文字の L\(aq\e0\(aq 以外のワイド文字を \fIdest\fP に格納した場合。 この場合は \fI*src\fP -は次に変換されるマルチバイト列を指すようにして、 \fIdest\fP に書き込まれたワイド文字の数を返す。 -.IP 3. -マルチバイト文字列が終端のヌルワイド文字 (\(aq\e0\(aq) まで含めて完全に 変換された場合。この時、副作用として \fI*ps\fP -が初期状態に戻される。 この場合は \fI*src\fP には NULL が設定され、終端のヌルワイド文字を除いて \fIdest\fP -に書き込まれた文字数を返す。 -.PP -\fIdest\fP が NULL の場合、\fIlen\fP は無視され、上記と同様の変換が -行われるが、変換されたワイド文字はメモリーに書き込まれず、変換先の上限 が存在しない。 -.PP -上記のどちらの場合でも、\fIps\fP が NULL ならば、 代りに \fBmbsrtowcs\fP() 関数のみが使用する静的で名前のない状態が使用される。 -.PP -プログラマーは \fIdest\fP に最低でも \fIlen\fP ワイド文字を書き込むこ とができる空間があることを保証しなければならない。 -.SH 返り値 -\fBmbsrtowcs\fP() 関数はワイド文字列に変換完了したワイド文字の数を返す。 -終端のナルワイド文字は含まない。不正なマルチバイト列に遭遇した場合には \fI(size_t)\ \-1\fP を返し、\fIerrno\fP に \fBEILSEQ\fP -を設定する。 -.SH 準拠 -C99. -.SH 注意 -\fBmbsrtowcs\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存している。 -.PP -\fIps\fP に NULL を渡した際の動作はマルチスレッドセーフでない。 -.SH 関連項目 -\fBiconv\fP(3), \fBmbrtowc\fP(3), \fBmbsinit\fP(3), \fBmbsnrtowcs\fP(3), \fBmbstowcs\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mbstowcs.3 b/manual/LDP_man-pages/draft/man3/mbstowcs.3 deleted file mode 100644 index 75e791c3..00000000 --- a/manual/LDP_man-pages/draft/man3/mbstowcs.3 +++ /dev/null @@ -1,176 +0,0 @@ -'\" t -*- coding: UTF-8 -*- -.\" Copyright (c) Bruno Haible -.\" and Copyright 2014 Michael Kerrisk -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:56:04 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH MBSTOWCS 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -mbstowcs \- マルチバイト文字列をワイド文字列に変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t mbstowcs(wchar_t *\fP\fIdest\fP\fB, const char *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fIdest\fP が NULL でなければ \fBmbstowcs\fP() 関数は マルチバイト文字列 \fI*src\fP を \fIdest\fP -から始まるワイド文字列に 変換する。\fIdest\fP には最大で \fIn\fP 文字のワイド文字が 書き込まれる。変換は初期状態で開始され、 -以下の三つのいずれかの条件で停止する: -.IP 1. 3 -不正なマルチバイト列に遭遇した。この場合には \fI(size_t)\ \-1\fP を返す。 -.IP 2. -\fIn\fP 文字の L\(aq\e0\(aq 以外のワイド文字を \fIdest\fP に格納した場合。 この場合は \fI*src\fP -が次に変換されるマルチバイト列を指すようにして、 \fIdest\fP に書き込まれたワイド文字の数を返す。しかしこの指している 場所のシフト状態は失われる。 -.IP 3. -マルチバイト文字列が終端のヌルワイド文字 (\(aq\e0\(aq) まで含めて完全に 変換された場合。この場合は終端のヌルワイド文字を除いて -\fIdest\fP に書き込まれた文字数を返す。 -.PP -プログラマーは \fIdest\fP に最低でも \fIn\fP ワイド文字を書き込むこ とができる空間があることを保証しなければならない。 -.PP -\fIdest\fP が NULL の場合、\fIn\fP は無視され、上記と同様の変換が 行われるが、変換されたワイド文字はメモリーに書き込まれず、変換先の上限 -が存在しない。 -.PP -上記の 2. の場合を避けるためにプログラマーは \fIn\fP が \fImbstowcs(NULL,src,0)+1\fP 以上であることを保証すべきである。 -.SH 返り値 -\fBmbstowcs\fP() 関数はワイド文字列に変換完了したワイド文字の数を返す。 -終端のヌルワイド文字は含まない。不正なマルチバイト列に遭遇した場合には \fI(size_t)\ \-1\fP を返す。 -.SH 準拠 -C99. -.SH 注意 -\fBmbstowcs\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存している。 -.PP -\fBmbsrtowcs\fP(3) 関数は同じ機能のより良いインターフェースを提供する。 -.SH 例 -下記のプログラムは \fBmbstowcs\fP() といくつかのワイド文字分類関数の使用方法を示したものである。実行例は以下のようになる。 -.in +4n -.nf - -$ ./t_mbstowcs de_DE.UTF\-8 Grüße! -Length of source string (excluding terminator): - 8 bytes - 6 multibyte characters - -Wide character string is: Grüße! (6 characters) - G alpha upper - r alpha lower - ü alpha lower - ß alpha lower - e alpha lower - ! !alpha -.fi -.in -.SS プログラムのソース -.nf -#include -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - size_t mbslen; /* Number of multibyte characters in source */ - wchar_t *wcs; /* Pointer to converted wide character string */ - wchar_t *wp; - - if (argc < 3) { - fprintf(stderr, "Usage: %s \en", argv[0]); - exit(EXIT_FAILURE); - } - - /* Apply the specified locale */ - - if (setlocale(LC_ALL, argv[1]) == NULL) { - perror("setlocale"); - exit(EXIT_FAILURE); - } - - /* Calculate the length required to hold argv[2] converted to - a wide character string */ - - mbslen = mbstowcs(NULL, argv[2], 0); - if (mbslen == (size_t) \-1) { - perror("mbstowcs"); - exit(EXIT_FAILURE); - } - - /* Describe the source string to the user */ - - printf("Length of source string (excluding terminator):\en"); - printf(" %zu bytes\en", strlen(argv[2])); - printf(" %zu multibyte characters\en\en", mbslen); - - /* Allocate wide character string of the desired size. Add 1 - to allow for terminating null wide character (L\(aq\e0\(aq). */ - - wcs = calloc(mbslen + 1, sizeof(wchar_t)); - if (wcs == NULL) { - perror("calloc"); - exit(EXIT_FAILURE); - } - - /* Convert the multibyte character string in argv[2] to a - wide character string */ - - if (mbstowcs(wcs, argv[2], mbslen + 1) == (size_t) \-1) { - perror("mbstowcs"); - exit(EXIT_FAILURE); - } - - printf("Wide character string is: %ls (%zu characters)\en", - wcs, mbslen); - - /* Now do some inspection of the classes of the characters in - the wide character string */ - - for (wp = wcs; *wp != 0; wp++) { - printf(" %lc ", (wint_t) *wp); - - if (!iswalpha(*wp)) - printf("!"); - printf("alpha "); - - if (iswalpha(*wp)) { - if (iswupper(*wp)) - printf("upper "); - - if (iswlower(*wp)) - printf("lower "); - } - - putchar(\(aq\en\(aq); - } - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBmblen\fP(3), \fBmbsrtowcs\fP(3), \fBmbtowc\fP(3), \fBwctomb\fP(3), \fBwcstombs\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mbtowc.3 b/manual/LDP_man-pages/draft/man3/mbtowc.3 deleted file mode 100644 index 46b12546..00000000 --- a/manual/LDP_man-pages/draft/man3/mbtowc.3 +++ /dev/null @@ -1,70 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:56:02 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH MBTOWC 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -mbtowc \- マルチバイト列をワイド文字に変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint mbtowc(wchar_t *\fP\fIpwc\fP\fB, const char *\fP\fIs\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -この関数が用いられる場合、通常 \fIs\fP が NULL でなく \fIpwc\fP も NULL でない。この場合は \fBmbtowc\fP() 関数は -\fIs\fP から始まる 最大 \fIn\fP バイトのマルチバイト文字列を検査して、次の完全なマルチバイト 文字を取り出し、それをワイド文字に変換して -\fI*pwc\fP に格納する。 同時に mbtowc 関数のみが使用する内部状態を更新する。\fIs\fP がヌルバイト (\(aq\e0\(aq) -以外を指している場合は、\fIs\fP から消費するバイト数を返す。 \fIs\fP がヌルバイトを指している場合には 0 を返す。 -.PP -\fIs\fP から始まる \fIn\fP バイトが完全なマルチバイト文字を含んで いない場合や不正なマルチバイト列を含んでいる場合には \fBmbtowc\fP() -は \-1 を返す。マルチバイト文字列に冗長なシフトシーケンスが 含まれていると \fIn\fP >= \fIMB_CUR_MAX\fP -の場合もこのようなことが 起こりえる。 -.PP -\fIs\fP が NULL でなく \fIpwc\fP が NULL の場合は \fBmbtowc\fP() 関数は -上記と同様に動作するが、変換したワイド文字はメモリーには書き込まれない。 -.PP -.\" The Dinkumware doc and the Single UNIX specification say this, but -.\" glibc doesn't implement this. -三番目の場合として \fIs\fP が NULL の場合は \fIpwc\fP と \fIn\fP は 無視される。 \fBmbtowc\fP() -関数のみが使用するシフト状態は初期状態に 戻される。そして文字符号がシフト状態に依存するならばゼロ以外を、文字符号が 状態によらないならばゼロを返す。 -.SH 返り値 -\fIs\fP が NULL でなければ \fBmbtowc\fP() 関数は \fIs\fP から消費した バイト数を、\fIs\fP がヌル文字を指している場合はゼロを、 -変換に失敗した場合は \-1 を返す。 -.PP -\fIs\fP が NULL ならば \fBmbtowc\fP() 関数は文字符号がシフト状態に依存 していればゼロ以外を、状態によらなければゼロを返す。 -.SH 準拠 -C99. -.SH 注意 -\fBmbtowc\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存している。 -.PP -この関数はマルチスレッドでは安全ではない。 \fBmbrtowc\fP(3) 関数は 同じ機能のより良いインターフェースを提供する。 -.SH 関連項目 -\fBMB_CUR_MAX\fP(3), \fBmblen\fP(3), \fBmbrtowc\fP(3), \fBmbstowcs\fP(3), \fBwctomb\fP(3), -\fBwcstombs\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/memccpy.3 b/manual/LDP_man-pages/draft/man3/memccpy.3 deleted file mode 100644 index 78e246ed..00000000 --- a/manual/LDP_man-pages/draft/man3/memccpy.3 +++ /dev/null @@ -1,86 +0,0 @@ -.\" 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:57:24 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Ueyama Rui -.\" all rights reserved. -.\" Translated Tue Feb 21 0:48:30 JST 1997 -.\" by Ueyama Rui -.\"O .SH NAME -.\"O memccpy \- copy memory area -.\"O .SH SYNOPSIS -.\"O .SH DESCRIPTION -.\"O The -.\"O .BR memccpy () -.\"O function copies no more than \fIn\fP bytes from -.\"O memory area \fIsrc\fP to memory area \fIdest\fP, stopping when the -.\"O character \fIc\fP is found. -.\"O If the memory areas overlap, the results are undefined. -.\"O .SH "RETURN VALUE" -.\"O The -.\"O .BR memccpy () -.\"O function returns a pointer to the next character -.\"O in \fIdest\fP after \fIc\fP, or NULL if \fIc\fP was not found in the -.\"O first \fIn\fP characters of \fIsrc\fP. -.\"O .SH "CONFORMING TO" -.\"O .SH "SEE ALSO" -.\" -.TH MEMCCPY 3 2014\-03\-10 GNU "Linux Programmer's Manual" -.SH 名前 -memccpy \- メモリー領域をコピーする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid *memccpy(void *\fP\fIdest\fP\fB, const void *\fP\fIsrc\fP\fB, int \fP\fIc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBmemccpy\fP() は、メモリー領域 \fIsrc\fP からメモリー領域 \fIdest\fP に 最大で \fIn\fP バイトのコピーを行う。 \fIn\fP -バイトコピーする前に文字 \fIc\fP が見つかると、 そこでコピーを中止する。 - -コピー元とコピー先のメモリー領域が重なっている場合、 結果は不定である。 -.SH 返り値 -\fBmemccpy\fP() は、\fIdest\fP 中に見つかった \fIc\fP の 次にあるキャラクター型の変数を指すポインターを返す。 -見つからなかった場合、NULL を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBmemccpy\fP() 関数はスレッドセーフである。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/memchr.3 b/manual/LDP_man-pages/draft/man3/memchr.3 deleted file mode 100644 index 8ccde51b..00000000 --- a/manual/LDP_man-pages/draft/man3/memchr.3 +++ /dev/null @@ -1,112 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright (c) 2008 Linux Foundation, written by 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 Mon Apr 12 12:49:57 1993, David Metcalfe -.\" Modified Sat Jul 24 18:56:22 1993, Rik Faith (faith@cs.unc.edu) -.\" Modified Wed Feb 20 21:09:36 2002, Ian Redfern (redferni@logica.com) -.\" 2008-07-09, mtk, add rawmemchr() -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated 1997-12-16, HIROFUMI Nishizuka -.\" Updated & Modified 2002-03-24, Yuichi SATO -.\" Updated & Modified 2003-11-27, Yuichi SATO -.\" Updated 2008-08-11, Akihiro MOTOKI -.\" Updated 2012-05-01, Akihiro MOTOKI -.\" -.TH MEMCHR 3 2015\-01\-10 "" "Linux Programmer's Manual" -.SH 名前 -memchr, memrchr, rawmemchr \- 文字を探すためにメモリーをスキャンする -.SH 書式 -.nf -\fB#include \fP - -\fBvoid *memchr(const void *\fP\fIs\fP\fB, int \fP\fIc\fP\fB, size_t \fP\fIn\fP\fB);\fP - -\fBvoid *memrchr(const void *\fP\fIs\fP\fB, int \fP\fIc\fP\fB, size_t \fP\fIn\fP\fB);\fP - -\fBvoid *rawmemchr(const void *\fP\fIs\fP\fB, int \fP\fIc\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBmemrchr\fP(): \fBrawmemchr\fP(): _GNU_SOURCE -.SH 説明 -\fBmemchr\fP() 関数は、ポインター \fIs\fP が指し示すメモリー領域の先頭の -\fIn\fP バイトから最初に登場する文字 \fIc\fP を探す。 -\fIc\fP と \fIs\fP が指し示すメモリー領域の各バイトは両方とも -\fIunsigned char\fP と解釈される。 -.PP -\fBmemrchr\fP() 関数は \fBmemchr\fP() 関数に似ているが、 先頭から順方向に探すのではなく、 ポインター \fIs\fP が指し示す -\fIn\fP バイトのメモリーブロックの 末尾から逆向きに探す。 - -\fBrawmemchr\fP() 関数は \fBmemchr\fP() と同様だが、 \fIc\fP が \fIs\fP が指す場所 -から始まるメモリー領域のどこかにあることを前提にして (つまり、プログラマ -はそのことを知っている)、最適化した方法で \fIc\fP の検索を実行する (すなわ -ち、検索範囲の上限を示す引き数も使用されない)。\fIc\fP が見つからなかった -場合、その結果はどうなるか分からない。次に示す呼び出しは、文字列終端の -ヌルバイトの位置を特定する高速な手段である。 -.in +4n -.nf - -char *p = rawmemchr(s,\ \(aq\e0\(aq); -.fi -.in -.SH 返り値 -\fBmemchr\fP() 関数と \fBmemrchr\fP() 関数は一致する文字へのポインターを返し、 もし文字が指定メモリー領域に現れない場合は -NULL を返す。 - -\fBrawmemchr\fP() 関数はマッチするバイトが見つかった場合はマッチしたバイトへのポインターを返す。 -マッチするバイトが見つからなかった場合、結果は不定である。 -.SH バージョン -\fBrawmemchr\fP() は glibc バージョン 2.1 で初めて登場した。 - -\fBmemrchr\fP() は glibc バージョン 2.2 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBmemchr\fP(), \fBmemrchr\fP(), \fBrawmemchr\fP() はスレッドセーフである。 -.SH 準拠 -\fBmemchr\fP() 関数は SVr4, 4.3BSD, C89, C99, POSIX.1\-2001 に準拠する。 - -\fBmemrchr\fP() 関数は GNU 拡張であり、glibc 2.1.91 から使用可能である。 - -\fBrawmemchr\fP() 関数は GNU 拡張であり、glibc 2.1 から使用可能である。 -.SH 関連項目 -\fBffs\fP(3), \fBindex\fP(3), \fBmemmem\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 3a93a803..00000000 --- a/manual/LDP_man-pages/draft/man3/memcmp.3 +++ /dev/null @@ -1,79 +0,0 @@ -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Wed Dec 17 12:12:15 JST 1997 -.\" by HIROFUMI Nishizuka -.\" Updated 2013-05-04, Akihiro MOTOKI -.\" -.TH MEMCMP 3 2014\-12\-31 "" "Linux Programmer's Manual" -.SH 名前 -memcmp \- メモリー領域を比較する -.SH 書式 -.nf -\fB#include \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、 正の整数を返す。 - -0 でない値の場合、 \fIs1\fP と \fIs2\fP で値が異なった最初のバイトの値の差で符号は決定される (バイトは \fIunsigned char\fP -で解釈される)。 - -\fIn\fP が 0 の場合、返り値は 0 となる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBmemcmp\fP() 関数はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, C89, C99, POSIX.1\-2001. -.SH 注意 -.PP -暗号化された秘密などセキュリティ的に重要なデータの比較には \fBmemcmp\fP() を使用しないこと。 必要な CPU -時間は値が等しいバイトの量に依存するからである。 その代わり、 一定時間で比較を実行する関数が必要である。 いくつかのオペレーティングシステムでは -(例えば NetBSD の \fBconsttime_memequal\fP() などの) 関数が提供されているが、 このような関数は POSIX -では規定されていない。 Linux では、 このような関数自体を実装する必要があるかもしれない。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/memcpy.3 b/manual/LDP_man-pages/draft/man3/memcpy.3 deleted file mode 100644 index 190e444c..00000000 --- a/manual/LDP_man-pages/draft/man3/memcpy.3 +++ /dev/null @@ -1,66 +0,0 @@ -.\" 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:41:09 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Ueyama Rui -.\" all rights reserved. -.\" Translated Tue Feb 21 0:49:30 JST 1997 -.\" by Ueyama Rui -.\" -.TH MEMCPY 3 2014\-03\-17 "" "Linux Programmer's Manual" -.SH 名前 -memcpy \- メモリー領域をコピーする。 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid *memcpy(void *\fP\fIdest\fP\fB, const void *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBmemcpy\fP() はメモリー領域 \fIsrc\fP の先頭 \fIn\fP バイトを メモリー領域 \fIdest\fP にコピーする。コピー元の領域と -コピー先の領域が重なってはならない。重なっている場合は \fBmemmove\fP(3) を使うこと。 -.SH 返り値 -\fBmemcpy\fP() は \fIdest\fP へのポインターを返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBmemcpy\fP() 関数はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, C89, C99, POSIX.1\-2001. -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/memfrob.3 b/manual/LDP_man-pages/draft/man3/memfrob.3 deleted file mode 100644 index 7e22ee49..00000000 --- a/manual/LDP_man-pages/draft/man3/memfrob.3 +++ /dev/null @@ -1,70 +0,0 @@ -.\" 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:54:45 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 -.\" ISHIKAWA Mutsumi, all rights reserved. -.\" Translated Sat May 23 15:22:35 JST 1998 -.\" by ISHIKAWA Mutsumi -.\" -.TH MEMFROB 3 2014\-03\-17 GNU "Linux Programmer's Manual" -.SH 名前 -memfrob \- メモリーエリアの操作 (暗号化) -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP -.sp -\fBvoid *memfrob(void *\fP\fIs\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBmemfrob\fP() 関数は、メモリーエリア \fIs\fP の最初の \fIn\fP バイトの それぞれの文字を 42 -との排他的論理をとることによって暗号化する。 変換後のデータは、暗号化されているメモリーエリアに (再度) \fBmemfrob\fP() -関数を施すことで、元に戻すことができる。 -.PP -この関数は妥当な暗号化ルーチンであるとは言えないことに注意して欲しい。 XOR -をとる定数を固定しているので、せいぜい、文字列を隠す程度の用途にしか向いていない。 -.SH 返り値 -\fBmemfrob\fP() 関数は、暗号化されたメモリーエリアへのポインターを返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBmemfrob\fP() 関数はスレッドセーフである。 -.SH 準拠 -\fBmemfrob\fP() 関数は GNU C ライブラリに固有である。 -.SH 関連項目 -\fBstrfry\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/memmem.3 b/manual/LDP_man-pages/draft/man3/memmem.3 deleted file mode 100644 index 46e836f9..00000000 --- a/manual/LDP_man-pages/draft/man3/memmem.3 +++ /dev/null @@ -1,87 +0,0 @@ -.\" 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 -.\" 386BSD man pages -.\" Modified Sat Jul 24 18:50:48 1993 by Rik Faith (faith@cs.unc.edu) -.\" Interchanged 'needle' and 'haystack'; added history, aeb, 980113. -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Wed Dec 17 12:11:20 JST 1997 -.\" by HIROFUMI Nishizuka -.\" -.TH MEMMEM 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -memmem \- 部分文字列の位置を示す -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP -.sp -\fBvoid *memmem(const void *\fP\fIhaystack\fP\fB, size_t \fP\fIhaystacklen\fP\fB,\fP -\fB const void *\fP\fIneedle\fP\fB, size_t \fP\fIneedlelen\fP\fB);\fP -.fi -.SH 説明 -\fBmemmem\fP() 関数は、 \fIhaystacklen\fP の大きさを持つメモリー領域 \fIhaystack\fP の中で \fIneedlelen\fP -の大きさを持つ部分文字列 \fIneedle\fP が 最初に現れる位置を見つける。 -.SH 返り値 -\fBmemmem\fP() 関数は、部分文字列の開始を指すポインターを返し、もし部分文字列が 見つからない場合は NULL を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBmemmem\fP() 関数はスレッドセーフである。 -.SH 準拠 -この関数は GNU による拡張である。 -.SH バグ -.\" This function was broken in Linux libraries up to and including libc 5.0.9; -.\" there the -.\" .IR needle -.\" and -.\" .I haystack -.\" arguments were interchanged, -.\" and a pointer to the end of the first occurrence of -.\" .I needle -.\" was returned. -.\" -.\" Both old and new libc's have the bug that if -.\" .I needle -.\" is empty, -.\" .I haystack\-1 -.\" (instead of -.\" .IR haystack ) -.\" is returned. -glibc 2.0 では、 \fIneedle\fP が空の場合、 \fBmemmem\fP() は \fIhaystack\fP の最後のバイトへのポインターを返す。 -これは glibc 2.1 で修正されている。 -.SH 関連項目 -\fBstrstr\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/memmove.3 b/manual/LDP_man-pages/draft/man3/memmove.3 deleted file mode 100644 index 48475b50..00000000 --- a/manual/LDP_man-pages/draft/man3/memmove.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" 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:49:59 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Ueyama Rui -.\" all rights reserved. -.\" Translated Tue Feb 21 0:50:30 JST 1997 -.\" by Ueyama Rui -.\" Updated 2007-06-13, Akihiro MOTOKI , LDP v2.55 -.\" -.TH MEMMOVE 3 2014\-03\-17 GNU "Linux Programmer's Manual" -.SH 名前 -memmove \- メモリー領域をコピーする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid *memmove(void *\fP\fIdest\fP\fB, const void *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBmemmove\fP() は、メモリー領域 \fIsrc\fP の先頭 \fIn\fP バイトを メモリー領域 \fIdest\fP にコピーする。コピー元とコピー先の -領域が重なっていてもよい。 最初に \fIsrc\fP のバイトが \fIsrc\fP とも \fIdest\fP -とも重ならない一時的な配列にコピーされてから、一時的な配列から \fIdest\fP にバイトのコピーが行われたかのように、コピーが行われる。 -.SH 返り値 -\fBmemmove\fP() は \fIdest\fP へのポインターを返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBmemmove\fP() 関数はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, C89, C99, POSIX.1\-2001. -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mempcpy.3 b/manual/LDP_man-pages/draft/man3/mempcpy.3 deleted file mode 100644 index fa91e9d3..00000000 --- a/manual/LDP_man-pages/draft/man3/mempcpy.3 +++ /dev/null @@ -1,70 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" Heavily based on glibc infopages, copyright Free Software Foundation -.\" -.\" aeb, 2003, polished a little -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Sat Aug 28 07:40:33 JST 2004 -.\" by Yuichi SATO -.\" -.TH MEMPCPY 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -mempcpy, wmempcpy \- メモリー領域をコピーする -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBvoid *mempcpy(void *\fP\fIdest\fP\fB, const void *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.sp -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBwchar_t *wmempcpy(wchar_t *\fP\fIdest\fP\fB, const wchar_t *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBmempcpy\fP() 関数は \fBmemcpy\fP(3) 関数とほぼ同一である。 この関数は、 \fIsrc\fP で始まるオブジェクトから \fIn\fP -バイトを、 \fIdest\fP で指されるオブジェクトにコピーする。 ただし \fIdest\fP の値を返すのではなく、 -最後に書き込まれたバイトの後に続くバイトへのポインターを返す。 -.PP -この関数はいくつかのオブジェクトが 連続的なメモリーの場所にコピーされるような状況で役に立つ。 -.PP -\fBwmempcpy\fP() 関数はこの関数と同じであるが、 \fIwchar_t\fP 型の引き数をとり、 \fIn\fP ワイド文字列をコピーする。 -.SH 返り値 -\fIdest\fP + \fIn\fP. -.SH バージョン -\fBmempcpy\fP() は glibc バージョン 2.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBmempcpy\fP() と \fBwmempcpy\fP() はスレッドセーフである。 -.SH 準拠 -この関数は GNU による拡張である。 -.SH 例 -.nf -void * -combine (void *o1, size_t s1, void *o2, size_t s2) -{ - void *result = malloc(s1 + s2); - if (result != NULL) - mempcpy(mempcpy(result, o1, s1), o2, s2); - return result; -.fi -.SH 関連項目 -\fBmemccpy\fP(3), \fBmemcpy\fP(3), \fBmemmove\fP(3), \fBwmemcpy\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/memset.3 b/manual/LDP_man-pages/draft/man3/memset.3 deleted file mode 100644 index ac9cad42..00000000 --- a/manual/LDP_man-pages/draft/man3/memset.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" 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:49:23 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Ueyama Rui -.\" all rights reserved. -.\" Translated Tue Feb 21 0:51:30 JST 1997 -.\" by Ueyama Rui -.\" -.TH MEMSET 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -memset \- ある一定のバイトでメモリー領域を埋める。 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid *memset(void *\fP\fIs\fP\fB, int \fP\fIc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBmemset\fP() は \fIs\fP で示されるメモリー領域の先頭から \fIn\fP バイトを \fIc\fP で埋める。 -.SH 返り値 -\fBmemset\fP() は \fIs\fP へのポインターを返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBmemset\fP() 関数はスレッドセーフである。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mkdtemp.3 b/manual/LDP_man-pages/draft/man3/mkdtemp.3 deleted file mode 100644 index 1456a26a..00000000 --- a/manual/LDP_man-pages/draft/man3/mkdtemp.3 +++ /dev/null @@ -1,93 +0,0 @@ -.\" Copyright 2001 John Levon -.\" Based on mkstemp(3), Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and GNU libc documentation -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001 Yuichi SATO -.\" all rights reserved. -.\" Translated Sun Oct 21 03:28:34 JST 2001 -.\" by Yuichi SATO -.\" -.TH MKDTEMP 3 2014\-06\-13 GNU "Linux Programmer's Manual" -.SH 名前 -mkdtemp \- 他と重ならない一時的なディレクトリを作成する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *mkdtemp(char *\fP\fItemplate\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBmkdtemp\fP(): -.br -.ad l -.RS 4 -.PD 0 -_BSD_SOURCE -.br -|| /* Since glibc 2.10: */ -.RS 4 -(_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700) -.ad -.PD -.RE -.RE -.SH 説明 -\fBmkdtemp\fP() 関数は、他と重ならない名前の一時的なディレクトリを \fItemplate\fP から作成する。 \fItemplate\fP の後から -6 文字は XXXXXX でなければならない。 この部分はディレクトリ名を他と重ならなくするための 文字列で置き換えられる。 ディレクトリは許可属性を -0700 として作成される。 \fItemplate\fP は変更されるので、文字列定数にしてはならず、文字配列にすべきである。 -.SH 返り値 -成功した場合、 \fBmkdtemp\fP() 関数は 変更された template 文字列へのポインターを返す。 失敗した場合は、NULL を返して、 -\fIerrno\fP を適切に設定する。 -.SH エラー -.TP -\fBEINVAL\fP -\fItemplate\fP の最後の 6 文字が XXXXXX でない。この場合、\fItemplate\fP は変更されない。 -.PP -\fIerrno\fP に設定される他の値については、 \fBmkdir\fP(2) を参照すること。 -.SH バージョン -glibc 2.1.91 以降で利用可能。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBmkdtemp\fP() はスレッドセーフである。 -.SH 準拠 -.\" As at 2006, this function is being considered for a revision of POSIX.1 -.\" Also in NetBSD 1.4. -POSIX.1\-2008. この関数は BSD に存在する。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index 90e673c8..46ed1f02 100644 --- a/manual/LDP_man-pages/draft/man3/mkfifo.3 +++ b/manual/LDP_man-pages/draft/man3/mkfifo.3 @@ -39,33 +39,33 @@ .\" Updated 2008-07-30 by Kentaro Shirakata .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH MKFIFO 3 2014\-03\-24 GNU "Linux Programmer's Manual" +.TH MKFIFO 3 2020\-08\-13 GNU "Linux Programmer's Manual" .SH 名前 mkfifo, mkfifoat \- FIFOスペシャルファイル(名前付きパイプ)を作成する .SH 書式 .nf \fB#include \fP \fB#include \fP -.sp +.PP \fBint mkfifo(const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB);\fP -.sp + \fB#include \fP/* AT_* 定数の定義 */ \fB#include \fP -.sp +.PP \fBint mkfifoat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBmkfifoat\fP(): .PD 0 .ad l .RS 4 .TP 4 glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L +_POSIX_C_SOURCE\ >=\ 200809L .TP glibc 2.10 より前: _ATFILE_SOURCE @@ -73,9 +73,10 @@ _ATFILE_SOURCE .ad .PD .SH 説明 -\fBmkfifo\fP() は名前 \fIpathname\fP を持つFIFOスペシャルファイルを作成 する。FIFOの許可モードは \fImode\fP -で指定され、プロセスの \fBumask\fP によって通常の方式で変更を受ける: 作成されたファイルの許可 モードは \fB(\fP\fImode\fP\fB & -~umask)\fP となる。 +\fBmkfifo\fP() makes a FIFO special file with name \fIpathname\fP. \fImode\fP +specifies the FIFO's permissions. It is modified by the process's \fBumask\fP +in the usual way: the permissions of the created file are \fB(\fP\fImode\fP\fB & +\(tiumask)\fP. .PP FIFOスペシャルファイルはパイプに似ているが、作成のされ方のみが異なって いる。FIFOスペシャルファイルは名前のない通信路ではなく、 \fBmkfifo\fP() の呼び出しによりファイルシステムの中に加えられる。 @@ -86,14 +87,14 @@ FIFOスペシャルファイルはパイプに似ているが、作成のされ FIFOスペシャルファイルをブロックせずに扱う方法については \fBfifo\fP(7) を参照のこと。 .SS mkfifoat() \fBmkfifoat\fP() システムコールは \fBmkfifo\fP() と全く同様に動作するが、以下で説明する点が異なる。 - +.PP \fIpathname\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fIdirfd\fP が参照するディレクトリに対する相対パスと解釈される (\fBmkfifo\fP() に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。 - +.PP \fIpathname\fP で指定されたパス名が相対パスで、 \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBmkfifo\fP() と同様に) \fIpathname\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 - +.PP \fIpathname\fP で指定されたパス名が絶対パスの場合、 \fIdirfd\fP は無視される。 .SH 返り値 成功した場合 \fBmkfifo\fP() と \fBmkfifoat\fP() は 0 を返す。 エラーの場合 \-1 を返す (また \fIerrno\fP @@ -138,16 +139,24 @@ FIFOスペシャルファイルをブロックせずに扱う方法について \fBmkfifoat\fP() は glibc 2.4 で追加された。これは、カーネル 2.6.16 以降の Linux で利用できる \fBmknodat\fP(2) を使って実装されている。 .SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBmkfifo\fP() と \fBmkfifoat\fP() はスレッドセーフである。 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lbw20 lb lb +l l l. +Interface Attribute Value +T{ +\fBmkfifo\fP(), +\fBmkfifoat\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 \fBmkfifo\fP(): POSIX.1\-2001, POSIX.1\-2008. - +.PP \fBmkfifoat\fP(): POSIX.1\-2008. .SH 関連項目 \fBmkfifo\fP(1), \fBclose\fP(2), \fBopen\fP(2), \fBread\fP(2), \fBstat\fP(2), \fBumask\fP(2), \fBwrite\fP(2), \fBfifo\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mkstemp.3 b/manual/LDP_man-pages/draft/man3/mkstemp.3 deleted file mode 100644 index 427e046f..00000000 --- a/manual/LDP_man-pages/draft/man3/mkstemp.3 +++ /dev/null @@ -1,168 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright (C) 2008, 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified Sat Jul 24 18:48:48 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 980310, aeb -.\" Modified 990328, aeb -.\" 2008-06-19, mtk, Added mkostemp(); various other changes -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyuki Tanisako -.\" all rights reserved. -.\" Translated 1997-05-17, Kazuyuki Tanisako -.\" Modified 1997-05-27, Kazuyuki Tanisako -.\" Modified 1998-02-05, Kazuyuki Tanisako -.\" Modified 1998-09-27, Kazuyuki Tanisako -.\" Modified 1999-04-10, Kazuyuki Tanisako -.\" Updated 2001-01-17, Kentaro Shirakata -.\" Updated 2005-02-26, Akihiro MOTOKI -.\" Updated 2008-08-10, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2012-04-27, Akihiro MOTOKI -.\" Updated 2012-05-01, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH MKSTEMP 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -mkstemp, mkostemp, mkstemps, mkostemps \- 他と重ならない名前を持つ一時ファイルを作成する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint mkstemp(char *\fP\fItemplate\fP\fB);\fP -.sp -\fBint mkostemp(char *\fP\fItemplate\fP\fB, int \fP\fIflags\fP\fB);\fP -.sp -\fBint mkstemps(char *\fP\fItemplate\fP\fB, int \fP\fIsuffixlen\fP\fB);\fP -.sp -\fBint mkostemps(char *\fP\fItemplate\fP\fB, int \fP\fIsuffixlen\fP\fB, int \fP\fIflags\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBmkstemp\fP(): -.ad l -.RS 4 -.PD 0 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.br -|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200112L -.PD -.RE -.ad b -.PP -\fBmkostemp\fP(): _GNU_SOURCE -.br -\fBmkstemps\fP(): _BSD_SOURCE || _SVID_SOURCE -.br -\fBmkostemps\fP(): _GNU_SOURCE -.SH 説明 -関数 \fBmkstemp\fP() は引数 \fItemplate\fP から他と重ならない一時ファイル名を生成し、 そのファイルの作成とオープンを行い、 -そのファイルに対するオープン済みのファイルディスクリプターを返す。 - -引数 \fItemplate\fP で指示する文字列の後ろの 6 文字は XXXXXX である必要がある。 -この部分がファイル名を他と重ならないようにする文字で置き換えられる。 \fItemplate\fP は書き換えられるため、文字列定数ではなく文字配列として -宣言するようにしなければならない。 - -ファイルは許可モード 0600 で作成され、所有者のみが読み書き可能である。返されるファイルディスクリプターで、このファイルへの読み書き両方のアクセスが -可能である。 呼び出し者がそのファイルを作成するプロセスであることを保証するために、 ファイルは \fBopen\fP(2) の \fBO_EXCL\fP -フラグ付きでオープンされる。 - -.\" Reportedly, FreeBSD -\fBmkostemp\fP() 関数は \fBmkstemp\fP() と同様だが、 \fIflags\fP に \fBO_APPEND\fP, \fBO_CLOEXEC\fP, -\fBO_SYNC\fP のビットを指定できる点が異なる (意味は \fBopen\fP(2) と同じである)。ファイルを作成する際、 \fBmkostemp\fP() -は \fBopen\fP(2) に渡す \fIflags\fP 引き数に \fBO_RDWR\fP, \fBO_CREAT\fP, \fBO_EXCL\fP を含める。そのため、 -\fBmkostemp\fP() に渡す \fIflags\fP 引き数にこれらの値を含める必要はなく、システムによってはエラーが発生する点に注意すること。 - -\fBmkstemps\fP() 関数は \fBmkstemp\fP() と同様だが、 \fItemplate\fP 内の文字列に長さ -が \fIsuffixlen\fP 文字の接尾辞 (suffix) が含まれる点が異なる。 -したがって、 \fItemplate\fP は \fIprefixXXXXXXsuffix\fP の形式となる。 -文字列 XXXXXX の部分は \fBmkstemp\fP() により更新される。 - -\fBmkostemps\fP() と \fBmkstemps\fP() の関係は、 -\fBmkostemp\fP() と \fBmkstemp\fP() の関係と同じである。 -.SH 返り値 -成功すると、これらの関数は一時ファイルのファイルディスクリプターを返す。 エラーの場合は、\-1 を返し、 \fIerrno\fP を適切に設定する。 -.SH エラー -.TP -\fBEEXIST\fP -すでに同じ名前を持つファイルが存在した。 \fItemplate\fP の内容は不定である。 -.TP -\fBEINVAL\fP -\fBmkstemp\fP() と \fBmkostemp\fP() の場合: -\fItemplate\fP の最後の 6 文字が XXXXXX でなかった。 -この場合、\fItemplate\fP は変更されない。 -.sp -\fBmkstemps\fP() と \fBmkostemps\fP() の場合: -\fItemplate\fP の長さが \fI(6 + suffixlen)\fP 文字より短い、または -\fItemplate\fP の接尾辞の直前の 6 文字が XXXXXX ではなかった。 -.PP -これらの関数は \fBopen\fP(2) に書かれているエラーのいずれかで失敗することもある。 -.SH バージョン -\fBmkostemp\fP() は glibc 2.7 以降で利用できる。 -\fBmkstemps\fP() と \fBmkostemps\fP() は glibc 2.11 以降で利用できる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBmkstemp\fP(), \fBmkostemp\fP(), \fBmkstemps\fP(), \fBmkostemps\fP() はスレッドセーフである。 -.SH 準拠 -\fBmkstemp\fP(): 4.3BSD, POSIX.1\-2001. - -.\" mkstemps() appears to be at least on the BSDs, Mac OS X, Solaris, -.\" and Tru64. -\fBmkstemps\fP(): 標準化されていないが、他のいくつかのシステムにも存在する。 - -\fBmkostemp\fP() と \fBmkostemps\fP(): glibc による拡張。 -.SH 注意 -glibc バージョン 2.06 以前では、ファイルは許可モード 0666 で作成され、全てのユーザーが読み書き可能であった。この古い動作は、 -セキュリティ上のリスクになり得る。特に、他の UNIX では許可モードとして 0600 -を使うため、プログラムを移植する際、この細かな違いを見落とす可能性があるからだ。 POSIX.1\-2008 では、ファイルを許可モード 0600 -で作成することが必須要件として追加された。 - -.\" -.\" The prototype for -.\" .BR mktemp () -.\" is in -.\" .I -.\" for libc4, libc5, glibc1; glibc2 follows POSIX.1 and has the prototype in -.\" .IR . -より一般的には、 \fBmkstemp\fP() の POSIX 規定ではファイルモードについて何も述べていない。 従って、アプリケーションは -\fBmkstemp\fP() (や \fBmkostemp\fP()) を呼び出す前にファイルモード生成マスク (\fBumask\fP(2) 参照) -が適切に設定されているか確認するべきである。 -.SH 関連項目 -\fBmkdtemp\fP(3), \fBmktemp\fP(3), \fBtempnam\fP(3), \fBtmpfile\fP(3), \fBtmpnam\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mktemp.3 b/manual/LDP_man-pages/draft/man3/mktemp.3 deleted file mode 100644 index 39d2c89e..00000000 --- a/manual/LDP_man-pages/draft/man3/mktemp.3 +++ /dev/null @@ -1,107 +0,0 @@ -.\" 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:48:06 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Fri Jun 23 01:26:34 1995 by Andries Brouwer (aeb@cwi.nl) -.\" (prompted by Scott Burkett ) -.\" Modified Sun Mar 28 23:44:38 1999 by Andries Brouwer (aeb@cwi.nl) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyuki Tanisako -.\" all rights reserved. -.\" Translated Sat Apr 10 02:12:40 JST 1999 -.\" by Kazuyuki Tanisako -.\" -.TH MKTEMP 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -mktemp \- 他と重ならないテンポラリファイル名を作成する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *mktemp(char *\fP\fItemplate\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBmktemp\fP(): -.ad l -.PD 0 -.RS 4 -.TP 4 -glibc 2.12 以降: -_BSD_SOURCE || _SVID_SOURCE || - (_XOPEN_SOURCE\ >=\ 500 || - _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) && - !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600) -.TP -glibc 2.12 より前: -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.RE -.PD -.ad b -.SH 説明 -\fI決してこの関数は使用しないこと\fP。「注意」を参照。 - -関数 \fBmktemp\fP() は引数 \fItemplate\fP から他と重ならない テンポラリファイル名を作成する。引数 \fItemplate\fP -で指示する文字配列 の後6文字は XXXXXX である必要がある。この部分がファイル名を他と 重ならないにするような文字で置き換えられる。 -\fItemplate\fP は書き換えられるため、文字列定数ではなく文字配列として宣言するように しなければならない。 -.SH 返り値 -関数 \fBmktemp\fP() は常に \fItemplate\fP を戻す。 一意な名前が作成された場合、 \fItemplate\fP の最後の 6 バイトに -他と重ならない名前 (それまでに出ていない名前) になるような値が格納される。 一意な名前が作成できなかった場合には、 \fItemplate\fP -には空文字列がセットされ、 \fIerrno\fP にエラーを示す値がセットされる。 -.SH エラー -.TP -\fBEINVAL\fP -引数 \fItemplate\fP で指示された文字列の後6文字が XXXXXX でない。 -.SH 準拠 -.\" .SH NOTES -.\" The prototype is in -.\" .I -.\" for libc4, libc5, glibc1; glibc2 follows the Single UNIX Specification -.\" and has the prototype in -.\" .IR . -4.3BSD, POSIX.1\-2001. POSIX.1\-2008 では \fBmktemp\fP() の仕様が削除されている。 -.SH バグ -\fBmktemp\fP() を決して使わないこと。4.3BSD 系の実装や XXXXXX を プロセス ID -と1文字により置き換える方式ではせいぜい26の名前を返す ことができるにすぎない。 -この名前は簡単に推測できることや、その名前がすでに存在しているかどうか テストして、そのファイルをオープンする間に競合がある事から、 -\fBmktemp\fP() を使うのは毎回セキュリティリスクをおかすことになる。 この競合は \fBmkstemp\fP(3) を使うことで避けられる。 -.SH 関連項目 -\fBmkstemp\fP(3), \fBtempnam\fP(3), \fBtmpfile\fP(3), \fBtmpnam\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/modf.3 b/manual/LDP_man-pages/draft/man3/modf.3 deleted file mode 100644 index 4be9d5d6..00000000 --- a/manual/LDP_man-pages/draft/man3/modf.3 +++ /dev/null @@ -1,96 +0,0 @@ -.\" 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-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Tue Feb 17 11:01:38 JST 1998 -.\" by YOSHINO Takashi -.\" Updated Sun Sep 14 JST 2003 by Kentaro Shirakata -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH MODF 3 2013\-06\-21 "" "Linux Programmer's Manual" -.SH 名前 -modf, modff, modfl \- 浮動小数点実数から、符号付き整数と小数部分を取り出す関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble modf(double \fP\fIx\fP\fB, double *\fP\fIiptr\fP\fB);\fP -.br -\fBfloat modff(float \fP\fIx\fP\fB, float *\fP\fIiptr\fP\fB);\fP -.br -\fBlong double modfl(long double \fP\fIx\fP\fB, long double *\fP\fIiptr\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBmodf\fP(), \fBmodfl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBmodf\fP() 関数は、引数 \fIx\fP を整数部分と小数部分に分割する。 このとき、ふたつの値はともに \fIx\fP と同じ符号を持つ。 整数部分は -\fIiptr\fP が指す場所に格納される。 -.SH 返り値 -\fBmodf\fP() 関数は \fIx\fP の小数部分を返す。 - -\fIx\fP が NaN の場合、NaN が返され、 \fI*iptr\fP に NaN が設定される。 - -\fIx\fP が正の無限大 (負の無限大) の場合、 +0 (\-0) が返され、 \fI*iptr\fP に正の無限大 (負の無限大) が設定される。 -.SH エラー -エラーは発生しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBmodf\fP(), \fBmodff\fP(), \fBmodfl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠している。 -.SH 関連項目 -\fBfrexp\fP(3), \fBldexp\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mpool.3 b/manual/LDP_man-pages/draft/man3/mpool.3 index 99fbce1f..6ff91063 100644 --- a/manual/LDP_man-pages/draft/man3/mpool.3 +++ b/manual/LDP_man-pages/draft/man3/mpool.3 @@ -46,7 +46,7 @@ .\" Proofed Tue Aug 19 1999 by NAKANO Takeo .\" Updated 2012-05-01, Akihiro MOTOKI .\" -.TH MPOOL 3 2012\-04\-26 "" "Linux Programmer's Manual" +.TH MPOOL 3 2017\-09\-15 "" "Linux Programmer's Manual" .UC 7 .SH 名前 mpool \- 共有メモリーバッファープール @@ -54,21 +54,21 @@ mpool \- 共有メモリーバッファープール .nf \fB#include \fP \fB#include \fP -.sp +.PP \fBMPOOL *mpool_open(DBT *\fP\fIkey\fP\fB, int \fP\fIfd\fP\fB, pgno_t \fP\fIpagesize\fP\fB, pgno_t \fP\fImaxcache\fP\fB);\fP -.sp +.PP \fBvoid mpool_filter(MPOOL *\fP\fImp\fP\fB, void (*pgin)(void *, pgno_t, void *),\fP \fB void (*\fP\fIpgout\fP\fB)(void *, pgno_t, void *),\fP \fB void *\fP\fIpgcookie\fP\fB);\fP -.sp +.PP \fBvoid *mpool_new(MPOOL *\fP\fImp\fP\fB, pgno_t *\fP\fIpgnoaddr\fP\fB);\fP -.sp +.PP \fBvoid *mpool_get(MPOOL *\fP\fImp\fP\fB, pgno_t \fP\fIpgno\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP -.sp +.PP \fBint mpool_put(MPOOL *\fP\fImp\fP\fB, void *\fP\fIpgaddr\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP -.sp +.PP \fBint mpool_sync(MPOOL *\fP\fImp\fP\fB);\fP -.sp +.PP \fBint mpool_close(MPOOL *\fP\fImp\fP\fB);\fP .fi .SH 説明 @@ -77,7 +77,7 @@ mpool \- 共有メモリーバッファープール ついて説明している。バージョン 2.2 以降の glibc では、もはやこれらの インターフェースは提供されていない。おそらく、このページではなく、 \fIlibdb\fP ライブラリが提供する API をお探しなのだろう。 - +.PP \fImpool\fP は、ファイルに対するページ指向のバッファー管理を実装した ライブラリインターフェイスである。 .PP 関数 \fBmpool_open\fP() はメモリープールを初期化する。 \fIkey\fP 引数はバイト文字列であり、バッファーを共有したい複数プロセス間 @@ -133,10 +133,9 @@ NULL が返され、 \fIerrno\fP がセットされる。 関数 \fBmpool_close\fP() は失敗するとライブラリルーチン \fBfree\fP(3) で指定されているエラーに応じた \fIerrno\fP をセットする。 .SH 準拠 -POSIX.1\-2001 にはない。 BSD 系に存在する。 +Not in POSIX.1. Present on the BSDs. .SH 関連項目 \fBbtree\fP(3), \fBdbopen\fP(3), \fBhash\fP(3), \fBrecno\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mq_close.3 b/manual/LDP_man-pages/draft/man3/mq_close.3 deleted file mode 100644 index 004a7535..00000000 --- a/manual/LDP_man-pages/draft/man3/mq_close.3 +++ /dev/null @@ -1,70 +0,0 @@ -'\" t -.\" Copyright (C) 2006 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-04-23, Akihiro MOTOKI -.\" -.TH MQ_CLOSE 3 2014\-06\-13 Linux "Linux Programmer's Manual" -.SH 名前 -mq_close \- メッセージキュー記述子をクローズする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint mq_close(mqd_t \fP\fImqdes\fP\fB);\fP -.fi -.sp -\fI\-lrt\fP でリンクする。 -.SH 説明 -\fBmq_close\fP() はメッセージキュー記述子 (message queue descriptor) \fImqdes\fP をクローズする。 - -呼び出し元のプロセスが \fImqdes\fP 経由でこのメッセージキューに通知要求 (notification request) -を設定している場合、通知要求は削除され、他のプロセスがそのキューに 対して通知要求を設定できるようになる。 -.SH 返り値 -成功すると、 \fBmq_close\fP() は 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 -.SH エラー -.TP -\fBEBADF\fP -\fImqdes\fP に指定されたディスクリプターが不正である。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBmq_close\fP() はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -プロセス終了時、もしくは \fBexecve\fP(2) 実行時に、全てのオープンされたメッセージキューは自動的にクローズされる。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mq_getattr.3 b/manual/LDP_man-pages/draft/man3/mq_getattr.3 deleted file mode 100644 index 441dfed0..00000000 --- a/manual/LDP_man-pages/draft/man3/mq_getattr.3 +++ /dev/null @@ -1,174 +0,0 @@ -'\" t -.\" Copyright (C) 2006 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-04-23, Akihiro MOTOKI -.\" Updated 2008-11-09, Akihiro MOTOKI, LDP v3.13 -.\" -.TH MQ_GETATTR 3 2014\-10\-02 Linux "Linux Programmer's Manual" -.SH 名前 -mq_getattr, mq_setattr \- メッセージキューの属性を設定/取得する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint mq_getattr(mqd_t \fP\fImqdes\fP\fB, struct mq_attr *\fP\fIattr\fP\fB);\fP - -\fBint mq_setattr(mqd_t \fP\fImqdes\fP\fB, const struct mq_attr *\fP\fInewattr\fP\fB,\fP -\fB struct mq_attr *\fP\fIoldattr\fP\fB);\fP -.fi -.sp -\fI\-lrt\fP でリンクする。 -.SH 説明 -\fBmq_getattr\fP() と \fBmq_setattr\fP() は、記述子 \fImqdes\fP -で参照されるメッセージキューの属性の取得と変更をそれぞれ行う。 - -\fBmq_getattr\fP() は、 \fIattr\fP が指すバッファーに \fImq_attr\fP -構造体を格納して返す。この構造体は以下のように定義されている: -.in +4n -.nf - -struct mq_attr { - long mq_flags; /* フラグ: 0 か O_NONBLOCK */ - long mq_maxmsg; /* キューの最大メッセージ数 */ - long mq_msgsize; /* 最大メッセージサイズ (バイト単位) */ - long mq_curmsgs; /* キューに現在入っているメッセージ数 */ -}; -.fi -.in -.PP -\fImq_flags\fP フィールドには、オープンメッセージキュー記述 (open message queue description) -に関連付けられているフラグが格納される。 このフィールドは \fBmq_open\fP(3) でキューが作成される際に初期化される。 -このフィールドに現れるフラグは \fBO_NONBLOCK\fP だけである。 - -\fImq_maxmsg\fP と \fImq_msgsize\fP フィールドは \fBmq_open\fP(3) でメッセージキューが作成される際にセットされる。 -\fImq_maxmsg\fP フィールドは、 \fBmq_send\fP(3) を使ってキューに入れることができるメッセージ数の上限である。 -\fImq_msgsize\fP フィールドは、キューに入れることができるメッセージの 上限サイズである。 これらのフィールドはどちらも 0 -より大きな値でなければならない。 これらのフィールドに設定できる値の上限は \fI/proc\fP ファイルにより決まる。 \fI/proc\fP ファイルの詳細は -\fBmq_overview\fP(7) に説明されている。 - -\fImq_curmsgs\fP フィールドはキューに現在格納されているメッセージ数を返す。 - -\fBmq_setattr\fP() は、 \fInewattr\fP が指す \fImq_attr\fP -構造体で与えられた情報を使って、メッセージキューの属性を設定する。 変更することができる属性は、 \fImq_flags\fP の \fBO_NONBLOCK\fP -フラグの設定だけである。 \fInewattr\fP の他のフィールドは無視される。 \fIoldattr\fP フィールドが NULL 以外の場合、 -\fBmq_getattr\fP() が返すのと同じ情報を格納した \fImq_attr\fP 構造体を \fIoldattr\fP が指すバッファーに入れて返す。 -.SH 返り値 -成功すると、 \fImq_getattr ()\fP と \fImq_setattr ()\fP は 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP -にエラーを示す値を設定する。 -.SH エラー -.TP -\fBEBADF\fP -\fImqdes\fP に指定されたディスクリプターが不正である。 -.TP -\fBEINVAL\fP -\fInewattr\->mq_flags\fP に \fBO_NONBLOCK\fP 以外のビットがセットされていた。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBmq_getattr\fP() と \fBmq_setattr\fP() はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -Linux では、 \fBmq_getattr\fP() と \fBmq_setattr\fP() はライブラリ関数であり、 -\fBmq_getsetattr\fP(2) システムコールを用いて実装されている。 -.SH 例 -下記のプログラムを使うと、 \fIattr\fP 引き数に NULL を指定して \fBmq_open\fP(3) -を呼び出した際に作成されるメッセージキューに割り当てられるデフォルトの \fImq_maxmsg\fP と \fImq_msgsize\fP の値を表示できる。 -このプログラムの実行例を以下に示す。 - -.in +4n -.nf -$ \fB./a.out /testq\fP -Maximum # of messages on queue: 10 -Maximum message size: 8192 -.fi -.in - -Linux 3.5 以降では、 (\fBmq_overview\fP(7) に説明がある) 以下の \fI/proc\fP -ファイルを使ってデフォルト値を制御できる。 - -.in +4n -.nf -$ \fBuname \-sr\fP -Linux 3.8.0 -$ \fBcat /proc/sys/fs/mqueue/msg_default\fP -10 -$ \fBcat /proc/sys/fs/mqueue/msgsize_default\fP -8192 -.fi -.in -.SS プログラムのソース -\& -.nf -#include -#include -#include -#include -#include -#include - -#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \e - } while (0) - -int -main(int argc, char *argv[]) -{ - mqd_t mqd; - struct mq_attr attr; - - if (argc != 2) { - fprintf(stderr, "Usage: %s mq\-name\en", argv[0]); - exit(EXIT_FAILURE); - } - - mqd = mq_open(argv[1], O_CREAT | O_EXCL, S_IRUSR | S_IWUSR, NULL); - if (mqd == (mqd_t) \-1) - errExit("mq_open"); - - if (mq_getattr(mqd, &attr) == \-1) - errExit("mq_getattr"); - - printf("Maximum # of messages on queue: %ld\en", attr.mq_maxmsg); - printf("Maximum message size: %ld\en", attr.mq_msgsize); - - if (mq_unlink(argv[1]) == \-1) - errExit("mq_unlink"); - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mq_notify.3 b/manual/LDP_man-pages/draft/man3/mq_notify.3 index 9d1f3785..26376975 100644 --- a/manual/LDP_man-pages/draft/man3/mq_notify.3 +++ b/manual/LDP_man-pages/draft/man3/mq_notify.3 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (C) 2006 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) @@ -34,21 +33,22 @@ .\" Updated 2010-04-18, Akihiro MOTOKI, LDP v3.24 .\" Updated 2010-10-27, Akihiro Motoki, LDP v3.29 .\" -.TH MQ_NOTIFY 3 2014\-04\-06 Linux "Linux Programmer's Manual" +.TH MQ_NOTIFY 3 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 mq_notify \- メッセージ到着時に通知を行うよう登録する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint mq_notify(mqd_t \fP\fImqdes\fP\fB, const struct sigevent *\fP\fInotification\fP\fB);\fP .fi -.sp +.PP \fI\-lrt\fP でリンクする。 .SH 説明 -\fBmq_notify\fP() を使うと、ディスクリプター \fImqdes\fP で参照される空のメッセージキューに新しくメッセージが到着した時に -非同期の通知 (notification) の配送が行われるように登録したり、 その解除を行ったりできる。 - +\fBmq_notify\fP() allows the calling process to register or unregister for +delivery of an asynchronous notification when a new message arrives on the +empty message queue referred to by the message queue descriptor \fImqdes\fP. +.PP \fIsevp\fP 引き数は \fIsigevent\fP 構造体へのポインターである。 この構造体の定義と一般的な詳細については \fBsigevent\fP(7) を参照。 .PP @@ -72,17 +72,17 @@ mq_notify \- メッセージ到着時に通知を行うよう登録する \fBsigevent\fP(7) を参照。 .PP 一つのメッセージキューから通知を受信するように登録できるプロセスは 一つだけである。 - +.PP \fIsevp\fP が NULL で、かつ呼び出し元のプロセスがこのメッセージキューからの 通知を受信するに現在登録している場合、登録を削除する。 これ以降、別のプロセスがこのメッセージキューから通知を受信するように 登録できるようになる。 - +.PP メッセージ通知は、それまで空のキューに新しいメッセージが到着した 場合にのみ行われる。 \fBmq_notify\fP() が呼び出された時にそのキューが空でない場合、 そのキューが空になり、その後新しいメッセージが到着した時に 初めて通知が行われることになる。 - +.PP 別のプロセスやスレッドが \fBmq_receive\fP(3) を使って、空のキューからメッセージの読み出しを待っている場合、 メッセージ通知の登録は全て無視される。 メッセージは \fBmq_receive\fP(3) を呼び出しているプロセスやスレッドに配送され、 メッセージ通知の登録は効力を持ったままとなる。 - +.PP 通知は一度だけ行われる。通知が送られた後は、通知要求の登録は削除され、 別のプロセスがメッセージ通知を受信するように登録できるようになる。 通知を受けたプロセスが次の通知も受信したい場合は、 \fBmq_notify\fP() を使ってその後の通知も受けるように要求することができる。 \fBmq_notify\fP() を再度呼び出すのは、読み出していないメッセージを全部読み出して キューが空になる前にすべきである @@ -93,7 +93,7 @@ mode) に設定しておくとよい)。 .SH エラー .TP \fBEBADF\fP -\fImqdes\fP に指定されたディスクリプターが不正である。 +The message queue descriptor specified in \fImqdes\fP is invalid. .TP \fBEBUSY\fP 別のプロセスがすでに このメッセージキューに対する通知を受信するように登録している。 @@ -108,13 +108,38 @@ mode) に設定しておくとよい)。 .\" Linux does not do this POSIX.1\-2008 では、 \fIsevp\fP が NULL で、呼び出し元のプロセスがキュー \fImqdes\fP に関する通知を受信するように登録されていない場合、エラー \fBEINVAL\fP を生成するような実装を行っても「よい」ことになっている。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBmq_notify\fP() +T} Thread safety MT\-Safe +.TE +.sp 1 .SH 準拠 POSIX.1\-2001. -.SH 例 +.SH 注意 +.\" +.SS "C library/kernel differences" +In the glibc implementation, the \fBmq_notify\fP() library function is +implemented on top of the system call of the same name. When \fIsevp\fP is +NULL, or specifies a notification mechanism other than \fBSIGEV_THREAD\fP, the +library function directly invokes the system call. For \fBSIGEV_THREAD\fP, +much of the implementation resides within the library, rather than the +kernel. (This is necessarily so, since the thread involved in handling the +notification is one that must be managed by the C library POSIX threads +implementation.) The implementation involves the use of a raw \fBnetlink\fP(7) +socket and creates a new thread for each notification that is delivered to +the process. +.SH EXAMPLES 以下のプログラムは、 コマンドライン引き数で指定された名前のメッセージキューへの 通知要求を登録し、通知はスレッドの作成によって行われる。 そのスレッドは、そのキューからメッセージを一つ読み出してから、 プロセスを終了する関数を実行する。 .SS プログラムのソース -.nf +.EX #include #include #include @@ -174,11 +199,10 @@ main(int argc, char *argv[]) pause(); /* プロセスはスレッド関数により終了される */ } -.fi +.EE .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mq_open.3 b/manual/LDP_man-pages/draft/man3/mq_open.3 deleted file mode 100644 index 455ae1ae..00000000 --- a/manual/LDP_man-pages/draft/man3/mq_open.3 +++ /dev/null @@ -1,151 +0,0 @@ -'\" t -.\" Copyright (C) 2006 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-04-23, Akihiro MOTOKI -.\" -.TH MQ_OPEN 3 2014\-12\-31 Linux "Linux Programmer's Manual" -.SH 名前 -mq_open \- メッセージキューをオープンする -.SH 書式 -.nf -\fB#include \fP /* For O_* constants */ -\fB#include \fP /* For mode constants */ -\fB#include \fP -.sp -\fBmqd_t mq_open(const char *\fP\fIname\fP\fB, int \fP\fIoflag\fP\fB);\fP -\fBmqd_t mq_open(const char *\fP\fIname\fP\fB, int \fP\fIoflag\fP\fB, mode_t \fP\fImode\fP\fB,\fP -\fB struct mq_attr *\fP\fIattr\fP\fB);\fP -.fi -.sp -\fI\-lrt\fP でリンクする。 -.SH 説明 -\fBmq_open\fP() は、新しい POSIX メッセージキューを作成するか、既存のキューを オープンする。キューは \fIname\fP で識別される。 -\fIname\fP の構成の詳細については \fBmq_overview (7)\fP を参照。 - -\fIoflag\fP 引き数には、関数呼び出しの操作を制御するフラグを指定する (oflag の値の定義は \fI\fP -のインクルードにより得られる)。 \fIoflag\fP には、以下のうちいずれか一つを必ず指定しなければならない。 -.TP -\fBO_RDONLY\fP -メッセージの受信専用としてキューをオープンする。 -.TP -\fBO_WRONLY\fP -メッセージの送信専用としてキューをオープンする。 -.TP -\fBO_RDWR\fP -メッセージの送受信両用としてキューをオープンする。 -.PP -0 個以上の下記のフラグを、ビット単位の OR (論理和) で \fIoflag\fP に追加で指定できる。 -.TP -\fBO_CLOEXEC\fP (Linux 2.6.26 以降) -.\" commit 269f21344b23e552c21c9e2d7ca258479dcd7a0a -メッセージキュー記述子に close\-on\-exec フラグをセットする。 なぜこのフラグが有用かについての議論は \fBopen\fP(2) を参照。 -.TP -\fBO_CREAT\fP -.\" In reality the filesystem IDs are used on Linux. -存在しない場合、メッセージキューを作成する。 メッセージキューの所有者 (ユーザー ID) とグループ所有権 (グループ ID) は、 -それぞれ呼び出し元プロセスの実効ユーザー ID と実効グループ ID に設定される。 -.TP -\fBO_EXCL\fP -\fBO_CREAT\fP が \fIoflag\fP に指定され、かつ指定された名前 \fIname\fP を持つキューがすでに存在する場合、エラー \fBEEXIST\fP -で失敗する。 -.TP -\fBO_NONBLOCK\fP -非停止 (nonblocking) モードでキューをオープンする。 \fBmq_receive\fP(3) と \fBmq_send\fP(3) は、通常は停止 -(block) する状況において、エラー \fBEAGAIN\fP で失敗するようになる。 -.PP -\fIoflag\fP に \fBO_CREAT\fP を指定する場合、追加で 2つの引き数を与える必要がある。 \fImode\fP -引き数は、新しいキューに適用される許可設定 (permission) を、 \fBopen\fP(2) と同じように指定する (許可ビットのシンボル定義は -\fI\fP のインクルードにより得られる)。 許可設定はプロセスの umask でマスクされる。 - -\fIattr\fP 引き数は、キューの属性を指定する。詳細は、 \fBmq_getattr\fP(3) を参照。 \fIattr\fP が NULL -の場合、キューは実装で定義されたデフォルト属性で作成される。 Linux 3.5 以降では、2 つの \fI/proc\fP -ファイルがあり、これらのデフォルト値を制御できる。 詳細は \fBmq_overview\fP(7) を参照。 -.SH 返り値 -成功すると、 \fBmq_open\fP() はメッセージキュー記述子 (message queue descriptor) を返す。 -メッセージキュー記述子は他のメッセージキュー関連の関数で使用される。 エラーの場合、 \fBmq_open\fP() は \fI(mqd_t)\ \-1\fP -を返し、 \fIerrno\fP にエラーを示す値を設定する。 -.SH エラー -.TP -\fBEACCES\fP -キューは存在するが、呼び出し元が指定されたモードでそのキュー をオープンする許可を持たない。 -.TP -\fBEACCES\fP -.\" Note that this isn't consistent with the same case for sem_open() -\fIname\fP にスラッシュが 2 個以上含まれていた。 -.TP -\fBEEXIST\fP -\fIoflag\fP に \fBO_CREAT\fP と \fBO_EXCL\fP の両方が指定されたが、指定された名前 \fIname\fP を持つキューがすでに存在する。 -.TP -\fBEINVAL\fP -\fIoflag\fP に \fBO_CREAT\fP が指定され、かつ \fIattr\fP が NULL 以外だが、 \fIattr\->mq_maxmsg\fP か -\fIattr\->mq_msqsize\fP が不正であった。 これらのフィールドは両方とも 0 より大きくなければならない。 -プロセスが特権を持たない (\fBCAP_SYS_RESOURCE\fP ケーパビリティを持たない) 場合、 \fIattr\->mq_maxmsg\fP と -\fIattr\->mq_msgsize\fP は、それぞれ上限 \fImsg_max\fP、 \fImsgsize_max\fP 以下でなければならない。 -また、特権プロセスの場合でも、 \fIattr\->mq_maxmsg\fP は \fBHARD_MAX\fP 上限を超えることはできない。 -(これらの上限に関する詳細は \fBmq_overview\fP(7) を参照。) -.TP -\fBEMFILE\fP -そのプロセスがオープンしているファイルとメッセージキューの数が プロセス毎の上限に達している。 -.TP -\fBENAMETOOLONG\fP -\fIname\fP が長過ぎる。 -.TP -\fBENFILE\fP -システム全体でオープンしているファイルとメッセージキューの合計数が システム上限に達している。 -.TP -\fBENOENT\fP -\fBO_CREAT\fP フラグが \fIoflag\fP に指定されなかったが、指定された名前 \fIname\fP を持つキューが存在しない。 -.TP -\fBENOENT\fP -.\" Note that this isn't consistent with the same case for sem_open() -\fIname\fP が "/" だけで、その後ろに他の文字が続いていなかった。 -.TP -\fBENOMEM\fP -十分なメモリーがない。 -.TP -\fBENOSPC\fP -新しいメッセージキューを作成するのに十分な空間がない。 このエラーはおそらく \fIqueues_max\fP 上限に抵触したため起こったのだろう。 -\fBmq_overview\fP(7) を参照。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBmq_open\fP() はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH バグ -2.6.14 より前のカーネルには、 プロセスの umask が \fImode\fP で指定された許可設定に適用されなかった。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mq_receive.3 b/manual/LDP_man-pages/draft/man3/mq_receive.3 deleted file mode 100644 index 9d26a188..00000000 --- a/manual/LDP_man-pages/draft/man3/mq_receive.3 +++ /dev/null @@ -1,128 +0,0 @@ -'\" t -.\" Copyright (C) 2006 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-04-23, Akihiro MOTOKI -.\" Updated 2008-11-09, Akihiro MOTOKI, LDP v3.13 -.\" -.TH MQ_RECEIVE 3 2014\-06\-03 Linux "Linux Programmer's Manual" -.SH 名前 -mq_receive, mq_timedreceive \- メッセージキューからメッセージを受信する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBssize_t mq_receive(mqd_t \fP\fImqdes\fP\fB, char *\fP\fImsg_ptr\fP\fB,\fP -\fB size_t \fP\fImsg_len\fP\fB, unsigned int *\fP\fImsg_prio\fP\fB);\fP -.sp -\fB#include \fP -\fB#include \fP -.sp -\fBssize_t mq_timedreceive(mqd_t \fP\fImqdes\fP\fB, char *\fP\fImsg_ptr\fP\fB,\fP -\fB size_t \fP\fImsg_len\fP\fB, unsigned int *\fP\fImsg_prio\fP\fB,\fP -\fB const struct timespec *\fP\fIabs_timeout\fP\fB);\fP -.fi -.sp -\fI\-lrt\fP でリンクする。 -.sp -.ad l -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBmq_timedreceive\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _POSIX_C_SOURCE\ >=\ 200112L -.RE -.ad -.SH 説明 -\fBmq_receive\fP() は、記述子 \fImqdes\fP で参照されるメッセージキューから最も高い優先度を持つ -最も古いメッセージを削除し、そのメッセージを \fImsg_ptr\fP が指すバッファーに格納する。 \fImsg_len\fP 引き数は、 \fImsg_ptr\fP -が指すバッファーの大きさを示す。この値はキューの \fImq_msgsize\fP 属性以上でなければならない (\fBmq_getattr\fP(3) 参照)。 -\fImsg_prio\fP が NULL 以外の場合、 \fImsg_prio\fP が指すバッファーに受信したメッセージの優先度が格納される。 - -キューが空の場合、デフォルトでは、 \fBmq_receive\fP() は、新しいメッセージが届くか、関数呼び出しがシグナルハンドラーにより -中断されるまで、停止 (block) する。 メッセージキュー記述 (message queue description) で -\fBO_NONBLOCK\fP フラグが有効になっている場合は、 \fBmq_receive\fP() はエラー \fBEAGAIN\fP ですぐに失敗する。 - -\fBmq_timedreceive\fP() は \fBmq_receive\fP() と全く同じ動作をするが、 -メッセージキューが空で、メッセージキュー記述で \fBO_NONBLOCK\fP フラグが有効になっていない場合に、この呼び出しが停止する時間の上限を -\fIabs_timeout\fP が指す構造体で指定する点が異なる。この上限は、タイムアウトの時刻を、 時刻紀元 (Epoch; 1970\-01\-01 -00:00:00 +0000 (UTC)) からの経過時間 (秒とナノ秒の組) で指定する。タイムアウト時刻は以下の構造体で指定する: -.sp -.in +4n -.nf -struct timespec { - time_t tv_sec; /* 秒 */ - long tv_nsec; /* ナノ秒 */ -}; - -.fi -.in -メッセージがキューになく、関数呼び出し時にすでにタイムアウト時刻が 過ぎている場合、 \fBmq_timedreceive\fP() はすぐに返る。 -.SH 返り値 -成功すると、 \fBmq_receive\fP() と \fBmq_timedreceive\fP() は受信したメッセージのバイト数を返す。 -エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 -.SH エラー -.TP -\fBEAGAIN\fP -キューが空で、かつ \fImqdes\fP で参照されるメッセージキュー記述で \fBO_NONBLOCK\fP フラグがセットされていた。 -.TP -\fBEBADF\fP -\fImqdes\fP で指定された記述子が不正である。 -.TP -\fBEINTR\fP -関数呼び出しがシグナルハンドラーにより中断された。 \fBsignal\fP(7) 参照。 -.TP -\fBEINVAL\fP -関数呼び出しは停止するはずであったが、 \fIabs_timeout\fP が不正であった。 \fIabs_timeout\fP が不正とは、 \fItv_sec\fP -が 0 未満、もしくは \fItv_nsec\fP が 0 未満か 1,000,000,000 より大きい、ということである。 -.TP -\fBEMSGSIZE\fP -\fImsg_len\fP がメッセージキューの \fImq_msgsize\fP 属性よりも小さかった。 -.TP -\fBETIMEDOUT\fP -メッセージが転送される前に関数呼び出しがタイムアウトした。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBmq_receive\fP() と \fBmq_timedreceive\fP() はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -Linux では、 \fBmq_timedreceive\fP() はシステムコールである。 \fBmq_receive\fP() はライブラリ関数で、 -\fBmq_timedreceive\fP() システムコールを用いて実装されている。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mq_send.3 b/manual/LDP_man-pages/draft/man3/mq_send.3 deleted file mode 100644 index 2a40bbe9..00000000 --- a/manual/LDP_man-pages/draft/man3/mq_send.3 +++ /dev/null @@ -1,131 +0,0 @@ -'\" t -.\" Copyright (C) 2006 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-04-23, Akihiro MOTOKI -.\" Updated 2008-11-09, Akihiro MOTOKI, LDP v3.13 -.\" -.TH MQ_SEND 3 2014\-06\-03 Linux "Linux Programmer's Manual" -.SH 名前 -mq_send, mq_timedsend \- メッセージキューにメッセージを送信する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint mq_send(mqd_t \fP\fImqdes\fP\fB, const char *\fP\fImsg_ptr\fP\fB,\fP -\fB size_t \fP\fImsg_len\fP\fB, unsigned int \fP\fImsg_prio\fP\fB);\fP -.sp -\fB#include \fP -\fB#include \fP -.sp -\fBint mq_timedsend(mqd_t \fP\fImqdes\fP\fB, const char *\fP\fImsg_ptr\fP\fB,\fP -\fB size_t \fP\fImsg_len\fP\fB, unsigned int \fP\fImsg_prio\fP\fB,\fP -\fB const struct timespec *\fP\fIabs_timeout\fP\fB);\fP -.fi -.sp -\fI\-lrt\fP でリンクする。 -.sp -.ad l -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBmq_timedsend\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _POSIX_C_SOURCE\ >=\ 200112L -.RE -.ad -.SH 説明 -\fBmq_send\fP() は、記述子 \fImqdes\fP で参照されるメッセージキューに \fImsg_ptr\fP が指すメッセージを追加する。 -\fImsg_len\fP 引き数は、 \fImsg_ptr\fP が指すメッセージの長さを示す。この長さはキューの \fImq_msgsize\fP -属性以下でなければならない。 長さが 0 のメッセージも認められている。 - -\fImsg_prio\fP 引き数は、メッセージの優先度を指定する負でない整数である。 -メッセージは優先度の降順でキューに格納され、同じ優先度の新しいメッセージは 同じ優先度の古いメッセージの後ろに格納される。 - -メッセージキューがすでに一杯の場合 (すなわち、キューに入っているメッセージ数がキューの \fImq_maxmsg\fP 属性と等しい場合)、デフォルトでは、 -\fBmq_send ()\fP は、メッセージをキューイングするのに十分な空間ができるか、 関数呼び出しがシグナルハンドラーにより中断されるまで、停止 -(block) する。 メッセージキュー記述 (message queue description) で \fBO_NONBLOCK\fP -フラグが有効になっている場合は、 \fBmq_send\fP() はエラー \fBEAGAIN\fP ですぐに失敗する。 - -\fBmq_timedsend\fP() は \fBmq_send\fP() と全く同じ動作をするが、 メッセージキューが一杯で、メッセージキュー記述で -\fBO_NONBLOCK\fP フラグが有効になっていない場合に、この呼び出しが停止する時間の上限を \fIabs_timeout\fP -が指す構造体で指定する点が異なる。この上限は、タイムアウトの時刻を 時刻紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 -(UTC)) からの経過時間 (秒とナノ秒の組) で指定する。タイムアウト時刻は以下の構造体で指定する: -.sp -.in +4n -.nf -struct timespec { - time_t tv_sec; /* 秒 */ - long tv_nsec; /* ナノ秒 */ -}; - -.fi -.in -メッセージキューが一杯で、関数呼び出し時にすでにタイムアウト時刻が 過ぎている場合、 \fBmq_timedsend\fP() はすぐに返る。 -.SH 返り値 -成功すると、 \fBmq_send\fP() と \fBmq_timedsend\fP() は 0 を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP -にエラーを示す値を設定する。 -.SH エラー -.TP -\fBEAGAIN\fP -キューが一杯で、かつ \fImqdes\fP で参照されるメッセージキュー記述で \fBO_NONBLOCK\fP フラグがセットされていた。 -.TP -\fBEBADF\fP -\fImqdes\fP で指定された記述子が不正である。 -.TP -\fBEINTR\fP -関数呼び出しがシグナルハンドラーにより中断された。 \fBsignal\fP(7) 参照。 -.TP -\fBEINVAL\fP -関数呼び出しは停止するはずであったが、 \fIabs_timeout\fP が不正であった。 \fIabs_timeout\fP が不正とは、 \fItv_sec\fP -が 0 未満、もしくは \fItv_nsec\fP が 0 未満か 1,000,000,000 より大きい、ということである。 -.TP -\fBEMSGSIZE\fP -\fImsg_len\fP がメッセージキューの \fImq_msgsize\fP 属性よりも大きかった。 -.TP -\fBETIMEDOUT\fP -メッセージが転送される前に関数呼び出しがタイムアウトした。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBmq_send\fP() と \fBmq_timedsend\fP() はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -Linux では、 \fBmq_timedsend\fP() はシステムコールである。 \fBmq_send\fP() はライブラリ関数で、 -\fBmq_timedsend\fP() システムコールを用いて実装されている。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/mq_unlink.3 b/manual/LDP_man-pages/draft/man3/mq_unlink.3 deleted file mode 100644 index 47553456..00000000 --- a/manual/LDP_man-pages/draft/man3/mq_unlink.3 +++ /dev/null @@ -1,72 +0,0 @@ -'\" t -.\" Copyright (C) 2006 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-04-23, Akihiro MOTOKI -.\" -.TH MQ_UNLINK 3 2014\-06\-13 Linux "Linux Programmer's Manual" -.SH 名前 -mq_unlink \- メッセージキューを削除する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint mq_unlink(const char *\fP\fIname\fP\fB);\fP -.fi -.sp -\fI\-lrt\fP でリンクする。 -.SH 説明 -\fBmq_unlink\fP() は指定されたメッセージキュー \fIname\fP を削除する。 メッセージキュー名は直ちに削除される。 -キュー自体は、そのキューをオープンした他のすべてのプロセスが そのキューを参照する記述子をクローズした時点で破棄される。 -.SH 返り値 -成功すると、 \fBmq_unlink\fP() は 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 -.SH エラー -.TP -\fBEACCES\fP -呼び出し元プロセスがこのメッセージキューを削除 (unlink) する 許可を持たない。 -.TP -\fBENAMETOOLONG\fP -\fIname\fP が長過ぎる。 -.TP -\fBENOENT\fP -指定された名前 \fIname\fP を持つメッセージキューが存在しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBmq_unlink\fP() はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/nan.3 b/manual/LDP_man-pages/draft/man3/nan.3 deleted file mode 100644 index 7521044a..00000000 --- a/manual/LDP_man-pages/draft/man3/nan.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" Based on glibc infopages -.\" -.\" Corrections by aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI all rights reserved. -.\" Translated Thu 05 Dec 2002 by Akihiro MOTOKI -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH NAN 3 2010\-09\-20 GNU "Linux Programmer's Manual" -.SH 名前 -nan, nanf, nanl \- 無効値 ('Not a Number') を返す -.SH 書式 -\fB#include \fP -.sp -\fBdouble nan(const char *\fP\fItagp\fP\fB);\fP -.br -\fBfloat nanf(const char *\fP\fItagp\fP\fB);\fP -.br -\fBlong double nanl(const char *\fP\fItagp\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBnan\fP(), \fBnanf\fP(), \fBnanl\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -これらの関数は、SIGFPE シグナルなしの無効値 (NaN) を示す表現を返す (どの表現を使用するかは \fItagp\fP で指定する)。SIGFPE -シグナルなしの NaN をサポートしていない実装では 0 を返す。 -.LP -\fInan("char\-sequence")\fP を呼び出すのは、以下と等価である。 -.nf - - strtod("NAN(char\-sequence)", NULL); -.fi -.PP -同様に、 \fBnanf\fP() や \fBnanl\fP() を呼び出すのは、 \fBstrtof\fP() や \fBstrtold\fP() -を呼ぶのと同じである。 -.PP -引き数 \fItagp\fP の使い方は規定されていない。 IEEE 754 準拠のシステムでは、NaN にも複数の表現が存在し、 \fItagp\fP -はその選択に使用される。 他のシステムでは、何の意味もないかもしれない。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/netlink.3 b/manual/LDP_man-pages/draft/man3/netlink.3 index 49ce39c8..e8cc02ca 100644 --- a/manual/LDP_man-pages/draft/man3/netlink.3 +++ b/manual/LDP_man-pages/draft/man3/netlink.3 @@ -25,21 +25,14 @@ netlink \- netlink マクロ .SH 書式 .nf \fB#include \fP -.br \fB#include \fP -.sp +.PP \fBint NLMSG_ALIGN(size_t \fP\fIlen\fP\fB);\fP -.br \fBint NLMSG_LENGTH(size_t \fP\fIlen\fP\fB);\fP -.br \fBint NLMSG_SPACE(size_t \fP\fIlen\fP\fB);\fP -.br \fBvoid *NLMSG_DATA(struct nlmsghdr *\fP\fInlh\fP\fB);\fP -.br \fBstruct nlmsghdr *NLMSG_NEXT(struct nlmsghdr *\fP\fInlh\fP\fB, int \fP\fIlen\fP\fB);\fP -.br \fBint NLMSG_OK(struct nlmsghdr *\fP\fInlh\fP\fB, int \fP\fIlen\fP\fB);\fP -.br \fBint NLMSG_PAYLOAD(struct nlmsghdr *\fP\fInlh\fP\fB, int \fP\fIlen\fP\fB);\fP .fi .SH 説明 @@ -79,6 +72,5 @@ Netlink メッセージが途切れておらず、かつ解釈可能な形の場 .SH 関連項目 \fBlibnetlink\fP(3), \fBnetlink\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/nextafter.3 b/manual/LDP_man-pages/draft/man3/nextafter.3 deleted file mode 100644 index bc5abbd1..00000000 --- a/manual/LDP_man-pages/draft/man3/nextafter.3 +++ /dev/null @@ -1,127 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk -.\" -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" Based on glibc infopages -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI all rights reserved. -.\" Translated Mon Jan 27 2003 by Akihiro MOTOKI -.\" Updated 2008-09-18, Akihiro MOTOKI -.\" -.TH NEXTAFTER 3 2013\-09\-02 GNU "Linux Programmer's Manual" -.SH 名前 -nextafter, nextafterf, nextafterl, nexttoward, nexttowardf, nexttowardl \- -浮動小数点数の操作 -.SH 書式 -\fB#include \fP -.sp -\fBdouble nextafter(double \fP\fIx\fP\fB, double \fP\fIy\fP\fB);\fP -.br -\fBfloat nextafterf(float \fP\fIx\fP\fB, float \fP\fIy\fP\fB);\fP -.br -\fBlong double nextafterl(long double \fP\fIx\fP\fB, long double \fP\fIy\fP\fB);\fP -.sp -\fBdouble nexttoward(double \fP\fIx\fP\fB, long double \fP\fIy\fP\fB);\fP -.br -\fBfloat nexttowardf(float \fP\fIx\fP\fB, long double \fP\fIy\fP\fB);\fP -.br -\fBlong double nexttowardl(long double \fP\fIx\fP\fB, long double \fP\fIy\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBnextafter\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBnextafterf\fP(), \fBnextafterl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBnexttoward\fP(), \fBnexttowardf\fP(), \fBnexttowardl\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -関数 \fBnextafter\fP(), \fBnextafterf\fP(), \fBnextafterl\fP() は、\fIy\fP に向かう方向で \fIx\fP -のすぐ次の浮動小数点数表現を返す。 \fIy\fP が \fIx\fP より小さい場合、 \fIx\fP より小さい最大の浮動小数点表現の値を返す。 - -\fIx\fP が \fIy\fP と等しい場合、\fIy\fP が返される。 - -関数 \fBnexttoward\fP(), \fBnexttowardf\fP(), \fBnexttowardl\fP() は、2 番目の引き数が \fIlong -double\fP 型である点以外、 対応する \fBnextafter\fP() 関数と同じはたらきをする。 -.SH 返り値 -成功すると、これらの関数は \fIy\fP に向かう方向で \fIx\fP の すぐ次の浮動小数点数表現を返す。 - -\fIx\fP が \fIy\fP と等しい場合、 (\fIx\fP と同じ型にキャストされた) \fIy\fP が返される。 - -\fIx\fP か \fIy\fP が NaN の場合、NaN が返される。 - -.\" e.g., DBL_MAX -\fIx\fP が有限値で 結果がオーバーフローする場合、 範囲エラー (range error) が発生し、 各関数はそれぞれ \fBHUGE_VAL\fP, -\fBHUGE_VALF\fP, \fBHUGE_VALL\fP を返す。返り値には数学的に正しい符号が付与される。 - -\fIx\fP が \fIy\fP と同じではなく、正しい関数の結果が非正規化数かゼロかアンダーフローの場合、 範囲エラーが発生し、 (表現可能な場合には) -正しい値が、(そうでない場合には) 0.0 が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -範囲エラー (range error): 結果のオーバーフロー -.\" e.g., nextafter(DBL_MAX, HUGE_VAL); -.\" .I errno -.\" is set to -.\" .BR ERANGE . -オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 -.TP -範囲エラー: 結果が非正規化数かアンダーフロー -.\" e.g., nextafter(DBL_MIN, 0.0); -.\" .I errno -.\" is set to -.\" .BR ERANGE . -アンダーフロー浮動小数点例外 (\fBFE_UNDERFLOW\fP) が上がる。 -.PP -.\" FIXME . Is it intentional that these functions do not set errno? -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6799 -これらの関数は \fIerrno\fP を設定しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBnextafter\fP(), \fBnextafterf\fP(), \fBnextafterl\fP(), \fBnexttoward\fP(), -\fBnexttowardf\fP(), \fBnexttowardl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. この関数は IEC 559 で定義されている (また IEEE 754/IEEE 854 -では付録で推奨関数として定義されている)。 -.SH バグ -glibc バージョン 2.5 以前では、アンダーフローが発生した際に、 これらの関数はアンダーフロー浮動小数点例外 (\fBFE_UNDERFLOW\fP) -を上がない。 -.SH 関連項目 -\fBnearbyint\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/nl_langinfo.3 b/manual/LDP_man-pages/draft/man3/nl_langinfo.3 deleted file mode 100644 index 0aafda8c..00000000 --- a/manual/LDP_man-pages/draft/man3/nl_langinfo.3 +++ /dev/null @@ -1,124 +0,0 @@ -.\" Copyright (c) 2001 Markus Kuhn -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 manual -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" -.\" Corrected prototype, 2002-10-18, aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001 -.\" UCHIDA Norihiro all rights reserved. -.\" Translated Sun Jul 15 2001 -.\" by UCHIDA Norihiro -.\" -.TH NL_LANGINFO 3 2014\-05\-28 GNU "Linux Programmer's Manual" -.SH 名前 -nl_langinfo \- 言語とロケールの情報を問い合わせる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *nl_langinfo(nl_item \fP\fIitem\fP\fB);\fP -.fi -.SH 説明 -\fBnl_langinfo\fP() 関数は、 \fBlocaleconv\fP(3) より柔軟なロケール情報へのアクセス方法を提供する。 -ロケールカテゴリーの個々の要素や追加の要素を問い合わせることができる。 -.PP -\fI\fP に定数として定義されていて、 \fIitem\fP に指定できるロケール要素の例を以下に示す: -.TP -\fBCODESET\fP\ (LC_CTYPE) -選択されたロケールで用いられる文字エンコード名を示す文字列を返す。 文字エンコード名としては、"UTF\-8" や -"ISO\-8859\-1"、"ANSI_X3.4\-1968" (これは US\-ASCII という名前の方がよく知られている) などがある。 -この文字列は、"locale charmap" を実行して得られるものと同じである。 文字エンコード名のリストを得るには、"locale \-m" -を実行するとよい。 参考: \fBlocale\fP(1) -.TP -\fBD_T_FMT\fP\ (LC_TIME) -ロケール固有の時間と日付を表現するときに、 \fBstrftime\fP(3) で使用できる書式付き文字列を返す。 -.TP -\fBD_FMT\fP\ (LC_TIME) -ロケール固有の日付を表現するときに、 \fBstrftime\fP(3) で使用できる書式付き文字列を返す。 -.TP -\fBT_FMT\fP\ (LC_TIME) -ロケール固有の時間を表現するときに、 \fBstrftime\fP(3) で使用できる書式付き文字列を返す。 -.TP -\fBDAY_\fP{1\(en7} (LC_TIME) -曜日名 (週の \fIn\fP 番目の日の名前) を返す。[警告: この要素はアメリカの 慣習に従って DAY_1 が 日曜日となる。国際的な慣習 (ISO -8601) では月曜日が 週の最初の日である。] -.TP -\fBABDAY_\fP{1\(en7} (LC_TIME) -曜日 (週の \fIn\fP 番目の日) の省略名を返す。 -.TP -\fBMON_\fP{1\(en12} (LC_TIME) -\fIn\fP 番目の月の名前を返す。 -.TP -\fBABMON_\fP{1\(en12} (LC_TIME) -\fIn\fP 番目の月の省略名を返す。 -.TP -\fBRADIXCHAR\fP\ (LC_NUMERIC) -基数記号 (小数点やコンマなど) を返す。 -.TP -\fBTHOUSEP\fP\ (LC_NUMERIC) -千の位 (3 桁の数値) の区切り文字を返す。 -.TP -\fBYESEXPR\fP\ (LC_MESSAGES) -yes/no の質問に対する肯定の応答を認識するために、 \fBregex\fP(3) 関数で使用できる正規表現を返す。 -.TP -\fBNOEXPR\fP\ (LC_MESSAGES) -yes/no の質問に対する否定の応答を認識するために \fBregex\fP(3) 関数で使用できる正規表現を返す。 -.TP -\fBCRNCYSTR\fP\ (LC_MONETARY) -通貨記号を返す。 記号が数値の前に配置される場合は、"\-" が通貨記号に前置される。 数値の後に記号が配置される場合は "+" が、 -記号が基数文字と置き換わる場合は "." が前置される。 -.PP -上記のリストは、要求できる定義のごく一部である。 詳細なリストは、 \fIGNU C ライブラリリファレンスマニュアル\fP を参照してほしい。 -.SH 返り値 -適切なカテゴリーのロケールが \fBsetlocale\fP(3) によって選択されていない場合は、 \fBnl_langinfo\fP() は "C" -ロケールのときに相当する文字列へのポインターを返す。 -.PP -無効な \fIitem\fP の場合は、空文字列へのポインターが返される。 -.PP -このポインターは静的なデータ領域を指し、その内容は次回の \fBnl_langinfo\fP() や \fBsetlocale\fP(3) -の呼び出しによって書き替わることがある。 -.SH 準拠 -SUSv2, POSIX.1\-2001. -.SH 例 -以下のプログラムは、環境変数に基いて文字型 (character type) と数値のロケール を設定し、端末の文字集合と基数文字の問い合わせを行う。 -.LP -.nf -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - setlocale(LC_CTYPE, ""); - setlocale(LC_NUMERIC, ""); - printf("%s\en", nl_langinfo(CODESET)); - printf("%s\en", nl_langinfo(RADIXCHAR)); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBlocale\fP(1), \fBlocaleconv\fP(3), \fBsetlocale\fP(3), \fBcharsets\fP(7), -\fBlocale\fP(7) -.br -GNU C ライブラリリファレンスマニュアル -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/offsetof.3 b/manual/LDP_man-pages/draft/man3/offsetof.3 index 9d784d46..89e40ac1 100644 --- a/manual/LDP_man-pages/draft/man3/offsetof.3 +++ b/manual/LDP_man-pages/draft/man3/offsetof.3 @@ -35,38 +35,39 @@ .\" all rights reserved. .\" Translated 2006-07-25, Akihiro MOTOKI, Catch up to LDP v2.34 .\" -.TH OFFSETOF 3 2014\-04\-06 GNU "Linux Programmer's Manual" +.TH OFFSETOF 3 2020\-11\-01 GNU "Linux Programmer's Manual" .SH 名前 offsetof \- 構造体のメンバーのオフセットを返す .SH 書式 .nf \fB#include \fP -.sp +.PP \fBsize_t offsetof(\fP\fItype\fP\fB, \fP\fImember\fP\fB);\fP .fi .SH 説明 \fBoffsetof\fP() マクロは、フィールド \fImember\fP の 構造体 \fItype\fP の先頭からのオフセットを返す。 - +.PP このマクロが有用なのは、 構造体を構成するフィールドのサイズは実装によって変化するし、 コンパイラによりフィールド間に挿入するパディングのバイト数も 違う可能性があるからである。 その結果、あるエレメントのオフセットは必ずしもそれより前の エレメントのサイズの合計とはならない。 - +.PP \fImember\fP がバイト境界に位置していない場合 (すなわち、ビットフィールドの場合) には、 コンパイラでエラーが発生する。 .SH 返り値 \fBoffsetof\fP() は、指定された \fImember\fP の指定された \fItype\fP の中でのオフセットを、バイト単位で返す。 .SH 準拠 -C89, C99, POSIX.1\-2001. -.SH 例 +POSIX.1\-2001, POSIX.1\-2008, C89, C99. +.SH EXAMPLES Linux/i386 システムで、 \fBgcc\fP(1) のデフォルトオプションで コンパイルされた場合、下記のプログラムは以下のような出力を返す。 +.PP .in +4n -.nf - +.EX $\fB ./a.out\fP offsets: i=0; c=4; d=8 a=16 sizeof(struct s)=16 -.fi +.EE +.in .SS プログラムのソース \& -.nf +.EX #include #include #include @@ -83,15 +84,14 @@ main(void) /* 出力はコンパイラ依存である */ - printf("offsets: i=%zd; c=%zd; d=%zd a=%zd\en", + printf("offsets: i=%zu; c=%zu; d=%zu a=%zu\en", offsetof(struct s, i), offsetof(struct s, c), offsetof(struct s, d), offsetof(struct s, a)); - printf("sizeof(struct s)=%zd\en", sizeof(struct s)); + printf("sizeof(struct s)=%zu\en", sizeof(struct s)); exit(EXIT_SUCCESS); } -.fi +.EE .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/on_exit.3 b/manual/LDP_man-pages/draft/man3/on_exit.3 deleted file mode 100644 index 418f3e3d..00000000 --- a/manual/LDP_man-pages/draft/man3/on_exit.3 +++ /dev/null @@ -1,79 +0,0 @@ -.\" 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-04-02, David Metcalfe -.\" Modified 1993-07-25, Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Seiichi Yoshida -.\" all rights reserved. -.\" Translated 1997-02-14, Seiichi Yoshida -.\" Updated 2002-09-27, Kentaro Shirakata -.\" Updated 2005-02-26, Akihiro MOTOKI -.\" Updated 2008-12-26, Akihiro MOTOKI, LDP v3.15 -.\" -.TH ON_EXIT 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -on_exit \- プロセスが正常に終了した際に呼ばれる関数を登録する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint on_exit(void (*\fP\fIfunction\fP\fB)(int , void *), void *\fP\fIarg\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBon_exit\fP(): _BSD_SOURCE || _SVID_SOURCE -.SH 説明 -\fBon_exit\fP() 関数は、指定された関数 \fIfunction\fP を、プロセスが -正常に終了した際に呼ばれる関数として登録する。正常な終了とは、 \fBexit\fP(3) またはプログラムの \fImain\fP() 関数の中の -return 命令による終了である。 関数 \fIfunction\fP には、直近の \fBexit\fP(3) の呼び出しで渡された status 引数と -\fBon_exit\fP() の \fIarg\fP 引数が渡される。 - -同じ関数を複数回登録してもよい。 登録された関数は登録 1 回につき 1 回呼び出される。 - -\fBfork\fP(2) で作成された場合、子プロセスは親プロセスの登録のコピーを継承する。 -\fBexec\fP(3) ファミリーの関数の場合、呼び出しに成功すると、 全ての登録が削除される。 -.SH 返り値 -\fBon_exit\fP() 関数は、成功したら 0 を、そうでなければ 0 以外を返す。 -.SH 準拠 -この関数は SunOS 4 由来であるが、 glibc にも存在する。 Solaris (SunOS 5) -にはもはや存在しない。移植性が必要なアプリケーションではこの関数の使用は避け、代わりに標準の \fBatexit\fP(3) を使うこと。 -.SH 関連項目 -\fB_exit\fP(2), \fBatexit\fP(3), \fBexit\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/opendir.3 b/manual/LDP_man-pages/draft/man3/opendir.3 deleted file mode 100644 index 411cd719..00000000 --- a/manual/LDP_man-pages/draft/man3/opendir.3 +++ /dev/null @@ -1,125 +0,0 @@ -.\" 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:46:01 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 11 June 1995 by Andries Brouwer (aeb@cwi.nl) -.\" 2007-07-30 Ulrich Drepper : document fdopendir(). -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Seiichi Yoshida -.\" all rights reserved. -.\" Translated Fri Feb 14 14:53:20 JST 1997 -.\" by Seiichi Yoshida -.\" Updated & Modified Thu Feb 17 00:37:46 JST 2005 -.\" by Yuichi SATO -.\" -.TH OPENDIR 3 2010\-06\-20 GNU "Linux Programmer's Manual" -.SH 名前 -opendir, fdopendir \- ディレクトリをオープンする -.SH 書式 -.nf -\fB#include \fP -.br -\fB#include \fP -.sp -\fBDIR *opendir(const char *\fP\fIname\fP\fB);\fP -\fBDIR *fdopendir(int \fP\fIfd\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBfdopendir\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.ad -.PD -.SH 説明 -\fBopendir\fP() 関数はディレクトリ \fIname\fP に対応する ディレクトリストリームをオープンし、そのストリームへのポインターを返す。 -ストリームの位置はディレクトリの先頭のエントリーに設定される。 - -\fBfdopendir\fP() 関数は \fBopendir\fP() と同様だが、オープン済みのファイルディスクリプター \fIfd\fP -により参照されるディレクトリに対する ディレクトリストリームを返す。 \fBfdopendir\fP() の呼び出しが成功した後は、 \fIfd\fP -は実装の内部で使用される。アプリケーションは \fIfd\fP を他の場面で使用すべきではない。 -.SH 返り値 -関数 \fBopendir\fP() と \fBfdopendir\fP() はディレクトリストリームへのポインターを返す。 エラーの場合は、NULL -が返されて、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEACCES\fP -アクセス権限がない。 -.TP -\fBEBADF\fP -\fIfd\fP が読み出し用にオープンされた、有効なファイルディスクリプターではない。 -.TP -\fBEMFILE\fP -プロセスが使用中のファイルディスクリプターが多すぎる。 -.TP -\fBENFILE\fP -システムでオープンされているファイルが多すぎる。 -.TP -\fBENOENT\fP -ディレクトリが存在しないか、または \fIname\fP が空文字列である。 -.TP -\fBENOMEM\fP -操作を完了するのに十分なメモリーがない。 -.TP -\fBENOTDIR\fP -\fIname\fP はディレクトリではない。 -.SH バージョン -\fBfdopendir\fP() は glibc 2.4 以降で利用可能である。 -.SH 準拠 -\fBopendir\fP() は SVr4 と 4.3BSD に存在し、 POSIX.1\-2001 で規定されている。 \fBfdopendir\fP() は -POSIX.1\-2008 で規定されている。 -.SH 注意 -ディレクトリストリームに対応するファイルディスクリプターは \fBdirfd\fP(3) を使用して得ることができる。 - -\fBopendir\fP() 関数は、 \fIDIR *\fP の背後にあるファイルディスクリプターの close\-on\-exec フラグを設定する。 -\fBfdopendir\fP() 関数は、ファイルディスクリプターの close\-on\-exec フラグの設定を変更しない。 \fBfdopendir\fP() -の呼び出しが成功した際に、ファイルディスクリプター \fIfd\fP の close\-on\-exec を設定するかどうかは、 POSIX.1\-200x -では規定されていない。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/openpty.3 b/manual/LDP_man-pages/draft/man3/openpty.3 deleted file mode 100644 index a4d20815..00000000 --- a/manual/LDP_man-pages/draft/man3/openpty.3 +++ /dev/null @@ -1,112 +0,0 @@ -.\" Copyright (c) OpenBSD Group -.\" All rights reserved. -.\" -.\" %%%LICENSE_START(BSD_3_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. 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 -.\" -.\" Converted into a manpage again by Martin Schulze -.\" -.\" Added -lutil remark, 030718 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 Yuichi SATO -.\" all rights reserved. -.\" Translated Tue Jan 22 21:42:05 JST 2002 -.\" by Yuichi SATO -.\" Updated Mon Mar 8 2003 by Akihiro MOTOKI -.\" Updated Sun Sep 14 2003 by Akihiro MOTOKI -.\" -.TH OPENPTY 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -openpty, login_tty, forkpty \- 端末ユーティリティ関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint openpty(int *\fP\fIamaster\fP\fB, int *\fP\fIaslave\fP\fB, char *\fP\fIname\fP\fB,\fP -\fB const struct termios *\fP\fItermp\fP\fB,\fP -\fB const struct winsize *\fP\fIwinp\fP\fB);\fP -.sp -\fBpid_t forkpty(int *\fP\fIamaster\fP\fB, char *\fP\fIname\fP\fB,\fP -\fB const struct termios *\fP\fItermp\fP\fB,\fP -\fB const struct winsize *\fP\fIwinp\fP\fB);\fP -.sp -\fB#include \fP -.sp -\fBint login_tty(int \fP\fIfd\fP\fB);\fP -.sp -\fI\-lutil\fP でリンクする。 -.fi -.SH 説明 -\fBopenpty\fP() 関数は、使用可能な疑似端末 (pseudoterminal) を見つけて、 マスタとスレーブのファイルディスクリプターを -\fIamaster\fP と \fIaslave\fP に入れて返す。 \fIname\fP が NULL でない場合、スレーブのファイル名が \fIname\fP -に返される。 \fItermp\fP が NULL でない場合、スレーブの端末パラメーターは \fItermp\fP の値に設定される。 \fIwinp\fP が -NULL でない場合、スレーブのウインドウサイズは \fIwinp\fP に設定される。 - -\fBlogin_tty\fP() 関数は、端末 \fIfd\fP にログインする準備をする (\fIfd\fP は実際の端末デバイスでも、 \fBopenpty\fP() -で返される疑似端末のスレーブでもよい)。 具体的には、新しいセッションを作成し、 \fIfd\fP を呼び出し元のプロセスの制御端末とし、 -呼び出し元の標準入力・標準出力・標準エラーのストリームを \fIfd\fP に設定した後、 \fIfd\fP をクローズする。 - -\fBforkpty\fP() 関数は \fBopenpty\fP(), \fBfork\fP(2), \fBlogin_tty\fP() -を組み合わせ、疑似端末を操作する新しいプロセスを生成する。 疑似端末のマスタ側のファイルディスクリプターは \fIamaster\fP に返され、 -\fIname\fP が NULL でない場合には、スレーブのファイル名が \fIname\fP に返される。 \fItermp\fP と \fIwinp\fP -引き数は、NULL でなければ、 疑似端末のスレーブ側の端末属性とウインドウサイズを決定する。 -.SH 返り値 -\fBopenpty\fP(), \fBlogin_tty\fP(), \fBforkpty\fP() の呼び出しが成功しなかった場合、 \-1 が返されて、 -\fIerrno\fP はエラーを示す値に設定される。 成功した場合、 \fBopenpty\fP(), \fBlogin_tty\fP() および -\fBforkpty\fP() の子プロセスは 0 を返し、 \fBforkpty\fP() の親プロセスは子プロセスのプロセス ID を返す。 -.SH エラー -以下の場合に \fBopenpty\fP() は失敗する: -.TP -\fBENOENT\fP -使用可能な端末がない。 -.LP -\fBioctl\fP(2) が \fIfd\fP を呼び出し元のプロセスの制御端末に設定するのに失敗した場合、 \fBlogin_tty\fP() は失敗する。 -.LP -\fBopenpty\fP() または \fBfork\fP(2) のどちらかが失敗した場合、 \fBforkpty\fP() は失敗する。 -.SH 準拠 -これらは BSD の関数であり、 glibc2 に存在する。 POSIX での標準化はされていない。 -.SH 注意 -glibc 2.8 で、 \fBopenpty\fP() と \fBforkpty\fP() の構造体へのポインターの引き数に \fBconst\fP -修飾子が追加された。 - -2.0.92 より前のバージョンの glibc では、 \fBopenpty\fP() は BSD 疑似端末ペアのファイルディスクリプターを返す。 -2.0.92 以降の glibc では、 \fBopenpty\fP() はまず Unix 98 疑似端末ペアをオープンしようとし、それに失敗した場合に -BSD 疑似端末ペアのオープンへと移行する。 -.SH バグ -誰も \fIname\fP に対してどのくらい大きさを予約しておけばいいか分からない。 したがって、NULL でない \fIname\fP を引き数として -\fBopenpty\fP() や \fBforkpty\fP() を呼び出すのは安全であるとは言えない。 -.SH 関連項目 -\fBfork\fP(2), \fBttyname\fP(3), \fBpty\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/perror.3 b/manual/LDP_man-pages/draft/man3/perror.3 deleted file mode 100644 index 380766e3..00000000 --- a/manual/LDP_man-pages/draft/man3/perror.3 +++ /dev/null @@ -1,104 +0,0 @@ -.\" Copyright (c) 1994 Michael Haardt (michael@moria.de), 1994-06-04 -.\" Copyright (c) 1995 Michael Haardt -.\" (michael@cantor.informatik.rwth-aachen.de), 1995-03-16 -.\" Copyright (c) 1996 Andries Brouwer (aeb@cwi.nl), 1996-01-13 -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" 1996-01-13 aeb: merged in some text contributed by Melvin Smith -.\" (msmith@falcon.mercer.peachnet.edu) and various other changes. -.\" Modified 1996-05-16 by Martin Schulze (joey@infodrom.north.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 TACHIBANA Akira -.\" all rights reserved. -.\" Translated 1998-05-28, TACHIBANA Akira -.\" Updated 2001-12-21, Kentaro Shirakata -.\" Updated 2005-03-15, Akihiro MOTOKI -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH PERROR 3 2014\-05\-28 "" "Linux Programmer's Manual" -.SH 名前 -perror \- システムエラーメッセージを出力する -.SH 書式 -\fB#include \fP -.sp -\fBvoid perror(const char *\fP\fIs\fP\fB);\fP -.sp -\fB#include \fP -.sp -\fBconst char * const \fP\fIsys_errlist\fP\fB[];\fP -.br -\fBint \fP\fIsys_nerr\fP\fB;\fP -.br -\fBint \fP\fIerrno\fP\fB; /* 実際にこのように宣言されているわけではない。 errno(3) 参照 */\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fIsys_errlist\fP, \fIsys_nerr\fP: _BSD_SOURCE -.SH 説明 -関数 \fBperror\fP() は、システムコールやライブラリ関数の呼び出しにおいて、最後に発生した -エラーに関する説明メッセージを生成し、標準エラー出力に出力する。 (\fIs\fP が NULL でなく、 \fI*s\fP がヌルバイト -(\(aq\e0\(aq) でない場合には) 引き数の文字列 \fIs\fP がまず出力され、続いてコロン、空白が出力され、 -それからメッセージと改行が出力される。 - -このメッセージを最大限活用するためには、引き数文字列にエラーが発生した 関数名を入れておくとよい。 エラー番号は外部変数 \fIerrno\fP -から取得される。 \fIerrno\fP はエラーが発生した時に設定され、 成功した呼び出しではクリアされない。 - -大域変数のエラーリスト \fIsys_errlist\fP[] は \fIerrno\fP を添字とする配列で、この -配列から改行無しのエラーメッセージが取得される。 テーブルでの最大のメッセージ -番号は \fIsys_nerr\fP \-1 となる。 このテーブルを直接参照する際には注意すること。 -なぜなら、新しいエラー番号が \fIsys_errlist\fP[] に追加済とは限らないからである。 -現在では、\fIsys_errlist\fP[] の使用は非推奨となっている。 - -システムコールが失敗した場合、通常、返り値として \-1 が返り、 \fIerrno\fP にエラーを識別する値が設定される (設定されるエラー番号は -\fI\fP に記載されている)。 多くのライブラリ関数も同様の動作となる。 関数 \fBperror\fP() -は、このエラーコードの可読なメッセージへの変換を行う。 \fIerrno\fP は、ライブラリ呼び出しが成功した後には未定義であることに注意が必要である: -その呼び出し自身は成功したとしても、内部で呼び出した他のライブラリ関数が 失敗して、その結果をこの変数に設定することがあるからだ。 -よって、失敗した呼び出しの直後に \fBperror\fP() を呼ばない場合には \fIerrno\fP の値を 保存しておかなければならない。 -.SH 準拠 -関数 \fBperror\fP() と外部変数 \fIerrno\fP (\fBerrno\fP(3) 参照) は C89, 4.3BSD, POSIX.1\-2001 -に準拠している。 外部変数 \fIsys_nerr\fP と \fIsys_errlist\fP は BSD に準拠している。 -.SH 注意 -.\" and only when _BSD_SOURCE is defined. -.\" When -.\" .B _GNU_SOURCE -.\" is defined, the symbols -.\" .I _sys_nerr -.\" and -.\" .I _sys_errlist -.\" are provided. -外部変数 \fIsys_nerr\fP と \fIsys_errlist\fP は glibc で定義されているが、 \fI\fP -に含まれている。 -.SH 関連項目 -\fBerr\fP(3), \fBerrno\fP(3), \fBerror\fP(3), \fBstrerror\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/popen.3 b/manual/LDP_man-pages/draft/man3/popen.3 deleted file mode 100644 index fe3f5196..00000000 --- a/manual/LDP_man-pages/draft/man3/popen.3 +++ /dev/null @@ -1,138 +0,0 @@ -.\" Copyright 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 -.\" -.\" @(#)popen.3 6.4 (Berkeley) 4/30/91 -.\" -.\" Converted for Linux, Mon Nov 29 14:45:38 1993, faith@cs.unc.edu -.\" Modified Sat May 18 20:37:44 1996 by Martin Schulze (joey@linux.de) -.\" Modified 7 May 1998 by Joseph S. Myers (jsm28@cam.ac.uk) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Takashi Yoshino -.\" all rights reserved. -.\" Translated 1997-01-21, Takashi Yoshino -.\" Modified 2007-05-03, Akihiro MOTOKI -.\" Modified 2008-11-09, Akihiro MOTOKI, LDP v3.13 -.\" -.TH POPEN 3 2013\-04\-19 GNU "Linux Programmer's Manual" -.SH 名前 -popen, pclose \- プロセスとの入力/出力用のパイプストリーム -.SH 書式 -.nf -\fB#include \fP -.sp -\fBFILE *popen(const char *\fP\fIcommand\fP\fB, const char *\fP\fItype\fP\fB);\fP -.sp -\fBint pclose(FILE *\fP\fIstream\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.ad l -.in -.sp -\fBpopen\fP(), \fBpclose\fP(): -.RS 4 -_POSIX_C_SOURCE\ >=\ 2 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE -.RE -.ad b -.SH 説明 -\fBpopen\fP() 関数は、プロセスをオープンする。具体的には、 パイプを生成し、フォークを行い、シェルを起動する。 -定義から分かるように、パイプは一方向なので、 \fItype\fP 引き数には読み込みか書き込みのどちらか一方だけを指定できる (両方は指定できない)。 -生成されるストリームは、この指定に対応して、読み取り専用または 書き込み専用のいずれかとなる。 -.PP -\fIcommand\fP 引き数は、シェルのコマンドラインを含むヌル終端された文字列へのポインターである。 このコマンドは \fB\-c\fP フラグを用いて -\fI/bin/sh\fP に渡される。 コマンドの解釈は (もし必要ならば) シェルによって行われる。 \fItype\fP -引き数は、ヌル終端された文字列へのポインターで、 読み込みを示す文字 \(aqr\(aq か、書き込みを示す文字 \(aqw\(aq の -どちらか一方を指定しなければならない。 glibc 2.9 以降では、この引き数に文字 \(aqe\(aq を追加で指定できる。 文字 -\(aqe\(aq を指定すると、 対応するファイルディスクリプターにおいて、 close\-on\-exec フラグ (\fBFD_CLOEXEC\fP) -がセットされる。 これが役に立つ理由については、 \fBopen\fP(2) の \fBO_CLOEXEC\fP フラグの説明を参照のこと。 -.PP -\fBpopen\fP() からの返り値は、通常の標準 I/O ストリームと同じであるが、 \fBfclose\fP(3) ではなく \fBpclose\fP() -で閉じなくてはならないことだけが異なる。 このストリームへ書き込んだ結果はコマンドの標準入力に書き込まれる。 そして、コマンドの標準出力は、 -コマンドそのものが置き換わってしまわない限り、 \fBpopen\fP() を呼んだプロセスの標準出力と同じことになる。 逆に、 -ストリームからの読み込みは、 そのコマンドの標準出力を読み込むことになる。 そして、そのコマンドの標準入力は \fBpopen\fP() -を呼んだプロセスの標準入力と同一である。 -.PP -デフォルトでは、 \fBpopen\fP() の出力ストリームは完全にバッファーリングされることに注意しよう。 -.PP -\fBpclose\fP() 関数は、(パイプに) 関連づけられたプロセスが終了するのを待ち、 \fBwait4\fP(2) -によって返されたコマンドの終了状態を返す。 -.SH 返り値 -\fBpopen\fP() 関数は、 \fBfork\fP(2) または \fBpipe\fP(2) 呼び出しが失敗した場合や、 -メモリー割り当てができなかった場合、 NULL を返す。 -.PP -.\" These conditions actually give undefined results, so I commented -.\" them out. -.\" .I stream -.\" is not associated with a "popen()ed" command, if -.\".I stream -.\" already "pclose()d", or if -\fBpclose\fP() 関数は、 \fBwait4\fP(2) がエラーを返したり、何か他のエラーが見つかった場合、 \-1 を返す。 その場合、 -\fIerrno\fP にエラーの原因を示す値が設定される。 -.SH エラー -\fBpopen\fP() 関数は、メモリーアロケーションに失敗しても \fIerrno\fP をセットしない。 \fBpopen\fP() が中で呼び出す -\fBfork\fP(2) や \fBpipe\fP(2) が失敗した場合には、 \fIerrno\fP が適切にセットされる。 引き数 \fItype\fP -が無効であり、この状態が検知された場合には、 \fIerrno\fP が \fBEINVAL\fP にセットされる。 -.PP -\fBpclose\fP() が、子プロセスの状態を取得できなかった場合、 \fIerrno\fP が \fBECHILD\fP にセットされる。 -.SH 準拠 -POSIX.1\-2001. - -\fItype\fP に指定できる \(aqe\(aq は Linux での拡張である。 -.SH バグ -読み込みのために開かれたコマンドの標準入力は \fBpopen\fP(), を呼んだプロセスと一緒に、その読み取り位置を共有する。 -そのため、もとのプロセスがバッファーリングされた読み取りを終了したら、 そのコマンドの入力位置は予想されたものには なっていないかもしれない。 -同様に、書き込みのために開かれたコマンドからの出力は、 もとのプロセスの出力と混ざり合うことになるかもしれない。 後者は \fBpopen\fP() の前に -\fBfflush\fP(3) を呼び出すことによって回避可能である。 -.PP -.\" .SH HISTORY -.\" A -.\" .BR popen () -.\" and a -.\" .BR pclose () -.\" function appeared in Version 7 AT&T UNIX. -シェルの実行の失敗は、 シェルがコマンドの実行に失敗したことや、 コマンドがすぐに終了してしまったことと、区別がつかない。 唯一のヒントは終了状態が -127 になることである。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/posix_fallocate.3 b/manual/LDP_man-pages/draft/man3/posix_fallocate.3 deleted file mode 100644 index d893bbdf..00000000 --- a/manual/LDP_man-pages/draft/man3/posix_fallocate.3 +++ /dev/null @@ -1,103 +0,0 @@ -.\" Copyright (c) 2006, 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Yuichi SATO -.\" all rights reserved. -.\" Translated 2006-07-13, Yuichi SATO . LDP v2.29 -.\" Updated 2010-04-11, Akihiro MOTOKI , LDP v3.24 -.\" -.TH POSIX_FALLOCATE 3 2015\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -posix_fallocate \- ファイルのスペースを確保する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint posix_fallocate(int \fP\fIfd\fP\fB, off_t \fP\fIoffset\fP\fB, off_t \fP\fIlen\fP\fB);\fP -.fi -.sp -.ad l -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBposix_fallocate\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _POSIX_C_SOURCE\ >=\ 200112L -.RE -.ad -.SH 説明 -関数 \fBposix_fallocate\fP() は、ディスクリプター \fIfd\fP で参照されるファイルに対して、ディスクスペースを確実に確保する。 -ディスクスペースは \fIoffset\fP から始まる \fIlen\fP バイトの範囲のバイトである。 \fBposix_fallocate\fP() -の呼び出しが成功した後、指定された範囲のバイトに対する書き込みは、 ディスクスペースの不足で失敗しないことが保証される。 - -ファイルのサイズが \fIoffset\fP+\fIlen\fP より小さい場合、ファイルはこのサイズになるように拡大される。 -それ以外の場合、ファイルサイズは変わらない。 -.SH 返り値 -\fBposix_fallocate\fP() は成功した場合、0 を返す。 失敗した場合、エラー番号を返す。 \fIerrno\fP -が設定されない点に注意すること。 -.SH エラー -.TP -\fBEBADF\fP -\fIfd\fP が有効なファイルディスクリプターでないか、 書き込み用としてオープンされていない。 -.TP -\fBEFBIG\fP -\fIoffset+len\fP が最大ファイルサイズを超えている。 -.TP -\fBEINVAL\fP -\fIoffset\fP が 0 未満だったか、 \fIlen\fP が 0 以下だった。 -.TP -\fBENODEV\fP -\fIfd\fP が通常のファイルとして参照されていない。 -.TP -\fBENOSPC\fP -\fIfd\fP が参照するファイルを含むデバイスに十分な空き領域がない。 -.TP -\fBESPIPE\fP -\fIfd\fP がパイプを参照している。 -.SH バージョン -\fBposix_fallocate\fP() は glibc 2.1.94 以降で利用可能である。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBposix_fallocate\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. - -POSIX.1\-2008 では、 \fIlen\fP が 0 の場合、もしくは \fIoffset\fP が 0 未満の場合、 \fBEINVAL\fP -エラーを返すものとされている。 POSIX.1\-2001 では、 \fIlen\fP が 0 未満の場合、もしくは \fIoffset\fP が 0 未満の場合、 -\fBEINVAL\fP エラーを返すものとされている。また、 \fIlen\fP が 0 の場合、 \fBEINVAL\fP エラーを返してもよいとされている。 -.SH 注意 -glibc の実装では、 \fBposix_fallocate\fP() は \fBfallocate\fP() を使って実装されている。 -.SH 関連項目 -\fBfallocate\fP(1), \fBfallocate\fP(2), \fBlseek\fP(2), \fBposix_fadvise\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/posix_memalign.3 b/manual/LDP_man-pages/draft/man3/posix_memalign.3 deleted file mode 100644 index 2c84e2e4..00000000 --- a/manual/LDP_man-pages/draft/man3/posix_memalign.3 +++ /dev/null @@ -1,193 +0,0 @@ -.\" Copyright (c) 2001 by John Levon -.\" Based in part on GNU libc documentation. -.\" -.\" %%%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 -.\" -.\" 2001-10-11, 2003-08-22, aeb, added some details -.\" 2012-03-23, Michael Kerrisk -.\" Document pvalloc() and aligned_alloc() -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2001-11-05, Akihiro MOTOKI -.\" Updated 2003-09-05, Akihiro MOTOKI, catch up to v1.60 -.\" Updated 2005-11-19, Akihiro MOTOKI -.\" Updated 2010-04-18, Akihiro MOTOKI, LDP v3.24 -.\" Updated 2012-05-01, Akihiro MOTOKI -.\" Updated 2012-05-08, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH POSIX_MEMALIGN 3 2013\-09\-02 GNU "Linux Programmer's Manual" -.SH 名前 -posix_memalign, aligned_alloc, memalign, valloc, pvalloc \- アラインメント -されたメモリーの割り当てを行う -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint posix_memalign(void **\fP\fImemptr\fP\fB, size_t \fP\fIalignment\fP\fB, size_t \fP\fIsize\fP\fB);\fP -\fBvoid *aligned_alloc(size_t \fP\fIalignment\fP\fB, size_t \fP\fIsize\fP\fB);\fP -\fBvoid *valloc(size_t \fP\fIsize\fP\fB);\fP -.sp -\fB#include \fP -.sp -\fBvoid *memalign(size_t \fP\fIalignment\fP\fB, size_t \fP\fIsize\fP\fB);\fP -\fBvoid *pvalloc(size_t \fP\fIsize\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBposix_memalign\fP(): _POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600 -.sp -\fBaligned_alloc\fP(): _ISOC11_SOURCE -.sp -\fBvalloc\fP(): -.br -.PD 0 -.RS 4 -.TP 4 -glibc 2.12 以降: -.nf -_BSD_SOURCE || - (_XOPEN_SOURCE\ >=\ 500 || - _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) && - !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600) -.br -.fi -.TP -glibc 2.12 より前: -_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.ad b -.br -((非標準の) ヘッダーファイル \fI\fP も -\fBvalloc\fP() の宣言も公開する。機能検査マクロは不要である。 -.RE -.PD -.SH 説明 -.\" glibc does this: -関数 \fBposix_memalign\fP() は、 \fIsize\fP バイトのメモリーを割り当て、割り当てられたメモリーのアドレスを -\fI*memptr\fP に設定する。 割り当てられたメモリーのアドレスは \fIalignment\fP の倍数になっているはずである。 -\fIalignment\fP は 2 のべき乗で、かつ \fIsizeof(void\ *)\fP の倍数でなければならない。 \fIsize\fP が 0 の場合、 -\fI*memptr\fP には NULL か一意なポインター値が書かれる。 このポインター値は、後で \fBfree\fP(3) に問題なく渡すことができる。 - -.\" The behavior of memalign() for size==0 is as for posix_memalign() -.\" but no standards govern this. -廃止された関数である \fBmemalign\fP() は、 \fIsize\fP バイトのメモリーを割り当て、 -割り当てられたメモリーへのポインターを返す。 メモリーのアドレスは \fIalignment\fP -の倍数になっているはずである。 \fIalignment\fP は 2 のべき乗でなければならない。 - -関数 \fBaligned_alloc\fP() は \fBmemalign\fP() と同じだが、\fIsize\fP が \fIalignment\fP -の倍数でなければならないという追加の制限がある点が異なる。 - -廃止された関数である \fBvalloc\fP() は \fIsize\fP バイトのメモリーを割り当て、割り当てられたメモリーへのポインターを返す。 -メモリーのアドレスはページサイズの倍数になっているはずである。 これは \fImemalign(sysconf(_SC_PAGESIZE),size)\fP -と等価である。 - -廃止された関数 \fBpvalloc\fP() は \fBvalloc\fP() と同様だが、 -割り当てられるサイズがシステムのページサイズの倍数に切り上げられる。 - -これらの関数はいずれもメモリーのゼロクリアを行わない。 -.SH 返り値 -\fBaligned_alloc\fP(), \fBmemalign\fP(), \fBvalloc\fP(), \fBpvalloc\fP() は割り当てられた -メモリーへのポインターを返す。 割り当てに失敗した場合は NULL を返す。 - -\fBposix_memalign\fP() は成功した場合は 0 を返し、 失敗した場合は次のセクションに記載されたエラー値のいずれかを返す。 -\fBposix_memalign\fP() の呼び出し後は \fIerrno\fP の値は不定である。 -.SH エラー -.TP -\fBEINVAL\fP -\fIalignment\fP 引き数が 2 のべき乗でなかったか、 \fIsizeof(void\ *)\fP の倍数でなかった。 -.TP -\fBENOMEM\fP -割り当て要求を満たすのに十分なメモリーがなかった。 -.SH バージョン -関数 \fBmemalign\fP(), \fBvalloc\fP(), \fBpvalloc\fP() は -すべての Linux libc ライブラリで使用可能である。 - -関数 \fBaligned_alloc\fP() は glibc バージョン 2.16 で追加された。 - -関数 \fBposix_fallocate\fP() は glibc 2.1.91 以降で利用可能である。 -.SH 準拠 -関数 \fBvalloc\fP() は 3.0BSD で登場した。4.3BSD では廃止されたと記載されており、 -SUSv2 では過去の名残だと記載されている。 POSIX.1\-2001 には存在しない。 - -関数 \fBpvalloc\fP() は GNU による拡張である。 - -関数 \fBmemalign\fP() は SunOS 4.1.3 で登場したが、4.4BSD にはない。 - -関数 \fBposix_memalign\fP() は POSIX.1d に由来する。 - -.\" -関数 \fIaligned_alloc\fP() は C11 標準で規定されている。 -.SS ヘッダー -\fBposix_memalign\fP() の宣言を \fI\fP で行うことに関しては、 皆の意見が一致している。 - -いくつかのシステムでは、 \fBmemalign\fP() は \fI\fP ではなく -\fI\fP で宣言されている。 - -SUSv2 によると、 \fBvalloc\fP() は \fI\fP で宣言される。 libc4,5 -や glibc では \fI\fP で宣言されており、 さらに適切な機能検査 -マクロが定義された場合には \fI\fP でも宣言される(上記を参照)。 -.SH 注意 -多くのシステムでは、アラインメントに関して制限がある。例えば、 ブロックデバイスに対するダイレクト I/O に使用するバッファーには -アラインメントに関する制限がある。 POSIX では、どんなアラインメントが必要かを知るために -\fIpathconf(path,_PC_REC_XFER_ALIGN)\fP コールを規定している。ここで \fBposix_memalign\fP() -を使うと、この必要条件を満たすことができる。 - -\fBposix_memalign\fP() は \fIalignment\fP が上で詳細に述べた必要条件を満たすか -どうかを確かめる。 \fBmemalign\fP() は \fIalignment\fP 引き数が正しいかどうかの -確認を行わないかもしれない。 - -.\" Other systems allow passing the result of -.\" .IR valloc () -.\" to -.\" .IR free (3), -.\" but not to -.\" .IR realloc (3). -POSIX では \fBposix_memalign\fP() によって獲得したメモリーは \fBfree\fP(3) を -使って解放することができる必要がある。 いくつかのシステムでは -\fBmemalign\fP() や\fBvalloc\fP() で割り当てられたメモリーを再利用する手段が -提供されていない(なぜなら \fBfree\fP(3) に渡すことができるのは -\fBmalloc\fP(3) から受け取ったポインターだけだが、例えば \fBmemalign\fP() は -\fBmalloc\fP(3) を呼び出し、得た値をアラインメントしてしまうからである)。 -glibc の実装では、 ここに述べた関数のいずれで獲得したメモリーも -\fBfree\fP(3) で再利用することができる。 - -glibc の \fBmalloc\fP(3) は常に 8 バイトにアラインメントされたメモリーアドレスを -返すので、ここで述べた関数が必要になるのは 8 バイトよりも大きなアラインメント -が必要な場合だけである。 -.SH 関連項目 -\fBbrk\fP(2), \fBgetpagesize\fP(2), \fBfree\fP(3), \fBmalloc\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/posix_openpt.3 b/manual/LDP_man-pages/draft/man3/posix_openpt.3 deleted file mode 100644 index f781a3d5..00000000 --- a/manual/LDP_man-pages/draft/man3/posix_openpt.3 +++ /dev/null @@ -1,104 +0,0 @@ -.\" Copyright (C) 2004 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Sun Jan 30 08:55:16 JST 2005 -.\" by Yuichi SATO -.\" Updated 2012-05-01, Akihiro MOTOKI -.\" -.TH POSIX_OPENPT 3 2014\-06\-03 "" "Linux Programmer's Manual" -.SH 名前 -posix_openpt \- 疑似端末 (pseudoterminal) デバイスをオープンする -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -.sp -\fBint posix_openpt(int \fP\fIflags\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBposix_openpt\fP(): _XOPEN_SOURCE\ >=\ 600 -.ad b -.SH 説明 -\fBposix_openpt\fP() 関数は使用されていない疑似端末マスタデバイスをオープンし、 -そのデバイスを参照するために使うファイルディスクリプターを返す。 - -\fIflags\fP 引き数は、以下のフラグのうち 0 個以上の OR をとったビットマスクである。 -.TP -\fBO_RDWR\fP -読み書きのためにデバイスをオープンする。 普通はこのフラグを指定する。 -.TP -\fBO_NOCTTY\fP -このデバイスをプロセスの制御端末としない。 -.SH 返り値 -成功した場合、 \fBposix_openpt\fP() は負ではないファイルディスクリプターを返す。 -これは使用されていないディスクリプターのうち最小の値である。 失敗した場合、\-1 が返されて、エラーを示すために \fIerrno\fP が設定される。 -.SH エラー -\fBopen\fP(2) を参照すること。 -.SH バージョン -\fBposix_openpt\fP() の glibc でのサポートはバージョン 2.2.1 以降で提供されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBposix_openpt\fP() 関数はスレッドセーフである。 -.SH 準拠 -\fBposix_openpt\fP() は UNIX 98 疑似端末サポート (\fBpts\fP(4) を参照) の一部である。 この関数は -POSIX.1\-2001 で指定されている。 -.SH 注意 -\fBposix_openpt\fP() 関数は POSIX において最近作られたものである。 -System V (別名 UNIX 98) 疑似端末をサポートする UNIX 実装の中には、 -この関数を持たないものもあるが、以下のようにして簡単に実装できる: -.in +4n -.nf - -int -posix_openpt(int flags) -{ - return open("/dev/ptmx", flags); -} -.fi -.in -.PP -\fBposix_openpt\fP() を呼び出すと、対応する擬似端末スレーブデバイスのパス -名が生成される。スレーブデバイスのパス名は \fBptsname\fP(3) を使って取得 -できる。スレーブデバイスのパス名はマスターデバイスがオープンされている -間だけ存在する。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pow.3 b/manual/LDP_man-pages/draft/man3/pow.3 deleted file mode 100644 index 2aa5411a..00000000 --- a/manual/LDP_man-pages/draft/man3/pow.3 +++ /dev/null @@ -1,198 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 1995-08-14 by Arnt Gulbrandsen -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003, 2008 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Mon Sep 7 23:27:52 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2008-09-18, Akihiro MOTOKI -.\" -.TH POW 3 2014\-12\-31 "" "Linux Programmer's Manual" -.SH 名前 -pow, powf, powl \- 累乗関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble pow(double \fP\fIx\fP\fB, double \fP\fIy\fP\fB);\fP -.br -\fBfloat powf(float \fP\fIx\fP\fB, float \fP\fIy\fP\fB);\fP -.br -\fBlong double powl(long double \fP\fIx\fP\fB, long double \fP\fIy\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBpowf\fP(), \fBpowl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBpow\fP() 関数は \fIx\fP の \fIy\fP 乗の値を返す。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の \fIy\fP 乗の値を返す。 - -.\" The domain error is generated at least as far back as glibc 2.4 -\fIx\fP が 0 未満の有限値で \fIy\fP が整数でない有限値の場合、領域エラー (domain error) が発生し、 NaN が返される。 - -.\" The range error is generated at least as far back as glibc 2.4 -結果がオーバーフローする場合、 範囲エラー (range error) が発生し、 各関数はそれぞれ \fBHUGE_VAL\fP, -\fBHUGE_VALF\fP, \fBHUGE_VALL\fP を返す。返り値には数学的に正しい符号が付与される。 - -.\" POSIX.1 does not specify the sign of the zero, -.\" but http://sources.redhat.com/bugzilla/show_bug.cgi?id=2678 -.\" points out that the zero has the wrong sign in some cases. -結果がアンダーフローし、その値が表現可能でない場合、 範囲エラーが発生し、 0.0 が返される。 - -以下で規定されていない場合で、 \fIx\fP か \fIy\fP が NaN の場合、返り値は NaN となる。 - -\fIx\fP が +1 の場合、 (\fIy\fP が NaN であったとしても) 返り値は 1.0 となる。 - -\fIy\fP が 0 の場合、 (\fIx\fP が NaN であったとしても) 返り値は 1.0 となる。 - -\fIx\fP が +0 (\-0) で \fIy\fP が 0 より大きな奇数の場合、返り値は +0 (\-0) となる。 - -\fIx\fP が 0 で、 \fIy\fP が 0 より大きく奇数でない場合、返り値は +0 となる。 - -\fIx\fP が \-1 で、 \fIy\fP が正の無限大か負の無限大の場合、返り値は 1.0 となる。 - -\fIx\fP の絶対値が 1 未満で、 \fIy\fP が負の無限大の場合、返り値は正の無限大となる。 - -\fIx\fP 絶対値が 1 より大きく、 \fIy\fP が負の無限大の場合、返り値は +0 となる。 - -\fIx\fP の絶対値が 1 未満で、 \fIy\fP が正の無限大の場合、返り値は +0 となる。 - -\fIx\fP の絶対値が 1 より大きく、 \fIy\fP が正の無限大の場合、返り値は正の無限大となる。 - -\fIx\fP が負の無限大で、 \fIy\fP が 0 より小さい奇数の場合、返り値は \-0 となる。 - -\fIx\fP が負の無限大で、 \fIy\fP が 0 より小さく奇数でない場合、返り値は +0 となる。 - -\fIx\fP が負の無限大で、 \fIy\fP が 0 より大きい奇数の場合、返り値は負の無限大となる。 - -\fIx\fP が負の無限大で、 \fIy\fP が 0 より大きく奇数でない場合、返り値は正の無限大となる。 - -\fIx\fP が正の無限大で、 \fIy\fP が 0 未満の場合、返り値は +0 となる。 - -\fIx\fP が正の無限大で、 \fIy\fP が 0 より大きい場合、返り値は正の無限大となる。 - -\fIx\fP が +0 か \-0 で、 \fIy\fP が 0 より小さい奇数の場合、 極エラー (pole error) が発生し、返り値は -\fBHUGE_VAL\fP, \fBHUGE_VALF\fP, \fBHUGE_VALL\fP となる。 \fIx\fP と同じ符号が付与される。 - -.\" The pole error is generated at least as far back as glibc 2.4 -\fIx\fP が +0 か \-0 で、 \fIy\fP が 0 より小さく奇数でない場合、 極エラーが発生し、 返り値は \fB+\fPHUGE_VAL\fB,\fP -\fB+\fPHUGE_VALF\fB,\fP \fB+\fPHUGE_VALL となる。 -.SH エラー -.\" FIXME . review status of this error -.\" longstanding bug report for glibc: -.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=369 -.\" For negative x, and -large and +large y, glibc 2.8 gives incorrect -.\" results -.\" pow(-0.5,-DBL_MAX)=nan -.\" EDOM FE_INVALID nan; fail-errno fail-except fail-result; -.\" FAIL (expected: range-error-overflow (ERANGE, FE_OVERFLOW); +INF) -.\" -.\" pow(-1.5,-DBL_MAX)=nan -.\" EDOM FE_INVALID nan; fail-errno fail-except fail-result; -.\" FAIL (expected: range-error-underflow (ERANGE, FE_UNDERFLOW); +0) -.\" -.\" pow(-0.5,DBL_MAX)=nan -.\" EDOM FE_INVALID nan; fail-errno fail-except fail-result; -.\" FAIL (expected: range-error-underflow (ERANGE, FE_UNDERFLOW); +0) -.\" -.\" pow(-1.5,DBL_MAX)=nan -.\" EDOM FE_INVALID nan; fail-errno fail-except fail-result; -.\" FAIL (expected: range-error-overflow (ERANGE, FE_OVERFLOW); +INF) -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー: \fIx\fP が負で、\fIy\fP が整数でない有限値 -\fIerrno\fP に \fBEDOM\fP が設定される。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.TP -極エラー: \fIx\fP がゼロで、\fIy\fP が負 -\fIerrno\fP に \fBERANGE\fP が設定される (「バグ」の節も参照)。 0 による除算 (divide\-by\-zero) 浮動小数点例外 -(\fBFE_DIVBYZERO\fP) が上がる。 -.TP -範囲エラー: 結果がオーバーフロー -\fIerrno\fP に \fBERANGE\fP が設定される。 オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 -.TP -範囲エラー: 結果がアンダーフロー -\fIerrno\fP に \fBERANGE\fP が設定される。 アンダーフロー浮動小数点例外 (\fBFE_UNDERFLOW\fP) が上がる。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠している。 -.SH バグ -.\" -.\" https://sourceware.org/bugzilla/show_bug.cgi?id=13932 -64 ビットでは、 \fBpow\fP は、特定の (ごく稀な) 入力に対して、その直近の似たような数字の場合と比べて 10000 倍以上遅くなることがある。 -これは \fBpow\fP() でのみ起こることであり、 \fBpowf\fP() や \fBpowl\fP() では起こらない。 - -.\" -.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6776 -.\" or possibly 2.9, I haven't found the source code change -.\" and I don't have a 2.9 system to test -glibc 2.9 とそれ以前のバージョンでは、 極エラーが発生した場合、POSIX で要求されている \fBERANGE\fP ではなく \fBEDOM\fP が -\fIerrno\fP に設定される。 バージョン 2.10 以降の glibc では、正しい動作をする。 - -.\" see bug http://sources.redhat.com/bugzilla/show_bug.cgi?id=3866 -.\" and http://sources.redhat.com/bugzilla/show_bug.cgi?id=369 -\fIx\fP が負の場合、大きな正負の値の \fIy\fP が与えられると、関数の結果が NaN となり、 \fIerrno\fP に \fBEDOM\fP が設定され、 -不正浮動小数点例外 (\fBFE_INVALID\fP) が発生する。 例えば、 \fBpow\fP() では、 \fIy\fP の絶対値が約 9.223373e18 -より大きい場合にこの状況となる。 - -.\" FIXME . Actually, 2.3.2 is the earliest test result I have; so yet -.\" to confirm if this error occurs only in 2.3.2. -glibc バージョン 2.3.2 以前では、 アンダーフローやアンダーフローのエラーが発生する場合、 glibc の \fBpow\fP() -は、オーバーフロー例外やアンダーフロー例外を上げるだけでなく、 不正浮動小数点例外 (\fBFE_INVALID\fP) を間違って発生する。 -.SH 関連項目 -\fBcbrt\fP(3), \fBcpow\fP(3), \fBsqrt\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pow10.3 b/manual/LDP_man-pages/draft/man3/pow10.3 deleted file mode 100644 index b493b8b1..00000000 --- a/manual/LDP_man-pages/draft/man3/pow10.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Copyright 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Sun Jan 30 14:07:37 JST 2005 -.\" by Yuichi SATO -.\" -.TH POW10 3 2008\-08\-11 "" "Linux Programmer's Manual" -.SH 名前 -pow10, pow10f, pow10l \- 底が 10 の累乗関数 -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP -.sp -\fBdouble pow10(double \fP\fIx\fP\fB);\fP -.br -\fBfloat pow10f(float \fP\fIx\fP\fB);\fP -.br -\fBlong double pow10l(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -\fBpow10\fP() 関数は 10 の \fIx\fP 乗の値を返す。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -これは GNU による拡張である。 -.SH 注意 -これらの関数は \fBexp10\fP(3) でリストされている関数と同一である。 -.SH 関連項目 -\fBexp10\fP(3), \fBpow\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 44888f71..00000000 --- a/manual/LDP_man-pages/draft/man3/printf.3 +++ /dev/null @@ -1,575 +0,0 @@ -.\" 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 -.\" . -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi all rights reserved. -.\" Translated 1998-02-17, YOSHINO Takashi -.\" Updated 2000-10-02, Kentaro Shirakata -.\" Updated 2001-01-29, Kentaro Shirakata -.\" Updated 2002-01-03, Kentaro Shirakata -.\" Updated 2002-10-17, Kentaro Shirakata -.\" Updated 2005-03-15, Akihiro MOTOKI -.\" Updated 2006-07-20, Akihiro MOTOKI -.\" Updated 2008-02-10, Akihiro MOTOKI , LDP v2.77 -.\" Updated 2009-03-03, Akihiro MOTOKI , LDP v3.19 -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH PRINTF 3 2014\-07\-08 GNU "Linux Programmer's Manual" -.SH 名前 -printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf \- -指定された書式に変換して出力を行う -.SH 書式 -\fB#include \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 \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 -または \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 -には文字列を終端するヌルバイト (\(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" -成功時には、上記の関数は書き込まれた文字数を返す (文字列の最後を示すために使用するヌルバイトは数に含まれない)。 - -\fBsnprintf\fP() と \fBvsnprintf\fP() は、 \fIsize\fP バイトを越える文字数を書き込まない (\fIsize\fP -には文字列を終端するヌルバイト (\(aq\e0\(aq) も含まれる)。 この制限によって出力が切り詰められた場合には、 -もし十分なスペースがあれば書き込まれたであろう文字の個数 (文字列を終端するヌルバイトを除く) を返す。 従って、返り値が \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 -変換値をフィールド境界で左揃えにする (デフォルトは右揃えである)。 変換された値は 左側ではなく右側を空白文字やゼロで埋められる。 \fB\-\fP と -\fB\&0\fP の両方が指定された場合には、 \fB\-\fP が優先される。 -.TP -\&\fB' '\fP -(1個の半角スペース) 符号付き変換で生成された正の数字の前に空白 (または空文字列) が置かれる。 -.TP -\fB+\fP -符号付き変換によって出力される数字の前に、常に符号 (+ か \-) が置かれる。 デフォルトでは、符号は負の数字の場合のみ付与される。 \fB+\fP -と半角スペースの 両方が使われている場合には、 \fB+\fP が優先される。 -.PP -上記の 5 つのフラグは C99 標準で定義されている。 Single UNIX Specified では、さらにもう一つフラグ文字が規定されている。 -.TP -\fB\(aq\fP -10進数変換 (\fBi\fP, \fBd\fP, \fBu\fP, \fBf\fP, \fBF\fP, \fBg\fP, \fBG\fP) において、ロケール情報に指定があれば 1000 -単位の区切り文字を出力する。 \fBgcc\fP(1) の多くのバージョンは、このオプションを解釈することができず、 警告を出力することに注意せよ。 -(\fI%\(aqF\fP は SUSv2 には含まれていなかったが、 SUSv3 で追加された。 -.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 -.\" .TP -.\" .B q -.\" ("quad". 4.4BSD and Linux libc5 only. -.\" Don't use.) -\fBa\fP, \fBA\fP, \fBe\fP, \fBE\fP, \fBf\fP, \fBF\fP, \fBg\fP, \fBG\fP 変換に対応する引き数が \fIlong double\fP -であることを示す。 (C99 では %LF を使うことを認めているが、SUSv2 では認められていない。) これは \fBll\fP の同義語である。 -.TP -\fBj\fP -整数変換に対応する引き数が \fIintmax_t\fP か \fIuintmax_t\fP で、 \fBn\fP 変換に対応する引き数が \fIintmax_t\fP -へのポインターであることを示す。 -.TP -\fBz\fP -.\" (Linux libc5 has -.\" .B Z -.\" with this meaning. -.\" Don't use it.) -整数変換に対応する引き数が \fIsize_t\fP か \fIssize_t\fP で、 \fBn\fP 変換に対応する引き数が \fIsize_t\fP -へのポインターであることを示す。 -.TP -\fBt\fP -整数変換に対応する引き数が \fIptrdiff_t\fP で、 \fBn\fP 変換に対応する引き数が \fIptrdiff_t\fP へのポインターであることを示す。 -.PP -SUSv3 では上記のすべてが規定されている。 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 に関する文字列表現を行ってもよいことになっている。 SUSv3 では \fBF\fP -の規定が追加された。 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 にはないが SUSv3 で追加された) -\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 型で文字型の配列へのポインター (文字列へのポインター) であることが -期待されている。配列中の文字は、終端の ヌルバイト (\(aq\e0\(aq) が出てくるまで出力される (終端文字は出力されない)。 -精度が指定されていると、指定された字数以上は出力されない。 精度が指定された場合には、終端バイトが存在する必要はない。 -精度が指定されていなかったり、精度の値が配列の大きさより大きい場合には、 配列は終端のヌルバイトを含んでいなければならない。 - -\fBl\fP 修飾子が指定されている場合、 引き数は \fIconst wchar_t\ *\fP 型でワイド文字の配列へのポインターであることが期待されている。 -配列中のワイド文字は (1文字毎に \fBwcrtomb\fP(3) を呼び出して) マルチバイト文字に変換される (最初のワイド文字の変換の前に -\fBwcrtomb\fP() のシフト状態を初期状態に戻してから変換は行われる)。 マルチバイト文字への変換は、文字列を終端するヌルワイド文字が -出てくるまで行われ、終端ヌルワイド文字も含めて変換される。 結果のマルチバイト文字列は、終端のヌルバイトが出てくるまで 出力される -(終端のヌルバイトは出力されない)。 精度が指定された場合、指定されたバイト数以上には出力されない。 -但し、マルチバイト文字の一部分だけが出力されることはない。 精度は「バイト」数を指定するものであり、「ワイド文字」数や -「画面での位置」を指定するものではないことに注意。 精度が指定されていて、さらに出力が配列の末尾に達する前に出力バイト数が -精度の値を超える場合だけは、配列はヌルワイド文字で終端されていなくてもよい。 それ以外の場合は、必ず配列はヌルワイド文字で終端されていなければならない。 -.TP -\fBC\fP -(C99, C11 にはないが SUSv2, SUSv3, SUSv4 にはある) \fBlc\fP と同じ。使ってはならない。 -.TP -\fBS\fP -(C99, C11 にはないが SUSv2, SUSv3, SUSv4 にはある) \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 -.\" .PP -.\" Linux libc4 knows about the five C standard flags. -.\" It knows about the length modifiers \fBh\fP, \fBl\fP, \fBL\fP, -.\" and the conversions -.\" \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, and \fBX\fP, -.\" where \fBF\fP is a synonym for \fBf\fP. -.\" Additionally, it accepts \fBD\fP, \fBO\fP, and \fBU\fP as synonyms -.\" for \fBld\fP, \fBlo\fP, and \fBlu\fP. -.\" (This is bad, and caused serious bugs later, when -.\" support for \fB%D\fP disappeared.) -.\" No locale-dependent radix character, -.\" no thousands' separator, no NaN or infinity, no "%m$" and "*m$". -.\" .PP -.\" Linux libc5 knows about the five C standard flags and the \(aq flag, -.\" locale, "%m$" and "*m$". -.\" It knows about the length modifiers \fBh\fP, \fBl\fP, \fBL\fP, -.\" \fBZ\fP, and \fBq\fP, but accepts \fBL\fP and \fBq\fP -.\" both for \fIlong double\fP and for \fIlong long int\fP (this is a bug). -.\" It no longer recognizes \fBF\fP, \fBD\fP, \fBO\fP, and \fBU\fP, -.\" but adds the conversion character -.\" .BR m , -.\" which outputs -.\" .IR strerror(errno) . -.\" .PP -.\" glibc 2.0 adds conversion characters \fBC\fP and \fBS\fP. -\fBsnprintf\fP() の返り値を見ると、 SUSv2 と C99 標準は互いに矛盾している。 SUSv2 では、 \fBsnprintf\fP() -が \fIsize\fP=0 で呼び出された場合、 1 未満の値を何か返り値とするように規定している。 一方 C99 では、このような場合 \fIstr\fP を -NULL とし、返り値として (通常通り) 出力バッファーが十分な大きさが あった場合に出力されるであろう文字数を返す。 SUSv3 やそれ以降では -C99 の \fBsnprintf\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 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 バグ -.\" .PP -.\" Linux libc4.[45] does not have a -.\" .BR snprintf (), -.\" but provides a libbsd that contains an -.\" .BR snprintf () -.\" equivalent to -.\" .BR sprintf (), -.\" that is, one that ignores the -.\" .I size -.\" argument. -.\" Thus, the use of -.\" .BR snprintf () -.\" with early libc4 leads to serious security problems. -\fBsprintf\fP() と \fBvsprintf\fP() は勝手に十分に長い文字列領域があると仮定するので、呼び出し側は -実際の領域からあふれないように注意しなければならない。 しかし、これを保証することが不可能な場合が多い。 -生成される文字列の長さはロケール依存であり、予測が難しいことに注意。 代わりに \fBsnprintf\fP() と \fBvsnprintf\fP() -(または \fBasprintf\fP(3) と \fBvasprintf\fP(3)) を使うこと。 -.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 -#include -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 -fprintf(stdout, "%s, %s %d, %.2d:%.2d\en", - weekday, month, day, hour, min); -.fi -.in -.PP -日 \- 月 \- å¹´ の順序で表示を行う国も多い。 従って、国際版では書式で指定された順番で 引き数を表示できなければならない。 -.in +4n -.nf - -#include -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 の両方で正しく動作するコード): -.nf - -#include -#include -#include - -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; - - p = malloc(size); - if (p == 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) { - free(p); - 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 */ - - - np = realloc(p, size); - if (np == NULL) { - free(p); - return NULL; - } else { - p = np; - } - } -} -.fi -.PP -バージョン 2.0.6 より前の glibc で切り詰めが起こった場合、切り詰めは適切に処理されず、エラーとして扱われる。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/profil.3 b/manual/LDP_man-pages/draft/man3/profil.3 deleted file mode 100644 index 3602749d..00000000 --- a/manual/LDP_man-pages/draft/man3/profil.3 +++ /dev/null @@ -1,78 +0,0 @@ -.\" Copyright 1993 Rickard E. Faith (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 Fri Jun 23 01:35:19 1995 Andries Brouwer -.\" (prompted by Bas V. de Bakker ) -.\" Corrected (and moved to man3), 980612, aeb -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated San Feb 23 20:40:50 JST 1997 -.\" by HANATAKA Shinya -.\" Modified Sun Jun 21 17:30:21 JST 1998 -.\" by HANATAKA Shinya -.\" Updated & Modified Thu Feb 17 00:57:49 JST 2005 -.\" by Yuichi SATO -.\" -.TH PROFIL 3 2014\-07\-08 Linux "Linux Programmer's Manual" -.SH 名前 -profil \- 実行時間プロファイル (profile) -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint profil(unsigned short *\fP\fIbuf\fP\fB, size_t \fP\fIbufsiz\fP\fB,\fP -\fB size_t \fP\fIoffset\fP\fB, unsigned int \fP\fIscale\fP\fB);\fP -.sp -.fi -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBprofil\fP(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500) -.SH 説明 -このルーティンはプログラムのどこの部分で時間を費やしているかを調べる 手段を提供する。引き数 \fIbuf\fP は \fIbufsiz\fP -バイトのメモリーを指している。仮想の 10 ミリ秒ごとに、ユーザーの プログラムカウンター (PC) が検査される: \fIoffset\fP -が引かれ、その結果が \fIscale\fP 倍され 65536 で割られる。 結果が \fIbufsiz\fP より小さい場合は \fIbuf\fP -の対応するエントリーがインクリメントされる。 \fIbuf\fP が NULL ならば、プロファイル (profile) は無効にされる。 -.SH 返り値 -常に 0 が返される。 -.SH 準拠 -SVr4 のコールに似ている (しかし POSIX.1\-2001 ではない)。 -.SH バグ -\fBprofil\fP() は \fBITIMER_PROF\fP インターバルタイマーも使用しているプログラムでは使用できない -(\fBsetitimer\fP(2) 参照)。 - -本当のカーネルプロファイルはより正確な結果を与える。 libc 4.4 にはシステムコール profil を提供するための -カーネルパッチが含まれていた。 -.SH 関連項目 -\fBgprof\fP(1), \fBsprof\fP(1), \fBsetitimer\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/program_invocation_name.3 b/manual/LDP_man-pages/draft/man3/program_invocation_name.3 index e9148fd1..8bfa4ca1 100644 --- a/manual/LDP_man-pages/draft/man3/program_invocation_name.3 +++ b/manual/LDP_man-pages/draft/man3/program_invocation_name.3 @@ -30,7 +30,7 @@ .\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. .\" Translated 2006-03-13, Akihiro MOTOKI .\" -.TH INVOCATION_NAME 3 2006\-04\-29 GNU "Linux Programmer's Manual" +.TH INVOCATION_NAME 3 2017\-09\-15 GNU "Linux Programmer's Manual" .SH 名前 program_invocation_name, program_invocation_short_name \- プログラムの起動に使われた名前を取得する @@ -38,18 +38,18 @@ program_invocation_name, program_invocation_short_name \- .nf \fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ \fB#include \fP - +.PP \fBextern char *\fP\fIprogram_invocation_name\fP\fB;\fP \fBextern char *\fP\fIprogram_invocation_short_name\fP\fB;\fP .fi .SH 説明 \fIprogram_invocation_name\fP は、呼び出し元プログラムの起動に使用された名前を保持する。 内容は \fImain\fP() の \fIargv[0]\fP の値と同じだが、 \fIprogram_invocation_name\fP の方はスコープがグローバルである点が異なる。 - +.PP \fIprogram_invocation_short_name\fP は、呼び出し元プログラムの起動に使用された名前の basename 部分を 保持する。つまり、この変数の内容は、最後のスラッシュ (/) とそれより前の 部分がある場合、 \fIprogram_invocation_name\fP からこの部分を削除したものとなる。 - +.PP これらの変数は glibc のランタイムスタートアップコードで 自動的に初期化される。 .SH 準拠 これらの変数は GNU の拡張であり、 移植性が必要なプログラムでは使用すべきでない。 @@ -58,6 +58,5 @@ Linux 独自のファイル \fI/proc/[number]/cmdline\fP でも同様の情報 .SH 関連項目 \fBproc\fP(5) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 681a7a11..00000000 --- a/manual/LDP_man-pages/draft/man3/psignal.3 +++ /dev/null @@ -1,97 +0,0 @@ -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Fri Dec 26 13:19:15 JST 1997 -.\" by HIROFUMI Nishizuka -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH PSIGNAL 3 2010\-10\-06 GNU "Linux Programmer's Manual" -.SH 名前 -psignal, psiginfo \- シグナルメッセージを表示 -.SH 書式 -.nf -\fB#include \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 が不正ならば、表示される -メッセージは未知のシグナルを示す。 - -\fBpsiginfo\fP() 関数は \fBpsignal\fP() と同じだが、 \fIpinfo\fP に書かれたシグナルの情報を表示する点が異なる。 -\fIpinfo\fP は有効な \fIsiginfo_t\fP 構造体を指している必要がある。 \fBpsiginfo\fP() は、 シグナルの説明だけでなく、 -シグナルの送信元やそのシグナルに関連するその他の情報も表示する (例えば、ハードウェアが発生したシグナルの関連メモリーアドレス、 \fBSIGCHLD\fP -の子プロセス ID、 \fIkill\fP(2) や \fBsigqueue\fP(3) を使って送信されたシグナルの送信元プロセスのユーザー ID とプロセス -ID など)。 - -配列 \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 -特定の状況で、末尾の改行が出力されない。 -.IP * -.\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=12108 -.\" Reportedly now fixed; check glibc 2.13 -リアルタイムシグナルの場合に、追加の詳細情報が表示されない。 -.SH 関連項目 -\fBsigaction\fP(2), \fBperror\fP(3), \fBstrsignal\fP(3), \fBsignal\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_attr_init.3 b/manual/LDP_man-pages/draft/man3/pthread_attr_init.3 deleted file mode 100644 index 91e78b9e..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_attr_init.3 +++ /dev/null @@ -1,301 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-03, Akihiro MOTOKI -.\" -.TH PTHREAD_ATTR_INIT 3 2008\-11\-11 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_attr_init, pthread_attr_destroy \- -スレッド属性オブジェクトの初期化と破棄を行う -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_attr_init(pthread_attr_t *\fP\fIattr\fP\fB);\fP -\fBint pthread_attr_destroy(pthread_attr_t *\fP\fIattr\fP\fB);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -\fBpthread_attr_init\fP() 関数は \fIattr\fP が指すスレッド属性オブジェクト -(thread attributes object) をデフォルトの属性値で初期化する。 -この呼び出しの後、オブジェクトの各属性は (関連項目に載っている) 種々の -関数を使って設定することができ、このオブジェクトはスレッドの作成を行う -\fBpthread_create\fP(3) の呼び出しにおいて使用することができる (一つの -オブジェクトを複数の \fBpthread_create\fP(3) に渡してもよい)。 - -すでに初期化されているスレッド属性オブジェクトに対して -\fBpthread_attr_init\fP() を呼び出した場合、 -どのような動作になるかは不定である。 - -スレッド属性オブジェクトがもはや必要なくなった際には、 -そのオブジェクトは \fBpthread_attr_destroy\fP() 関数を使って破棄すべきである。 -スレッド属性オブジェクトを破棄しても、 -そのオブジェクトを使って作成されたスレッドには影響はない。 - -いったん破棄したスレッド属性オブジェクトは、 -\fBpthread_attr_init\fP() を使って再初期化することができる。 -破棄したスレッド属性オブジェクトをこれ以外の用途で -使った場合の結果は不定である。 -.SH 返り値 -成功すると、これらの関数は 0 を返す。 -エラーの場合、0 以外のエラー番号を返す。 -.SH エラー -POSIX.1\-2001 では \fBpthread_attr_init\fP() にはエラー \fBENOMEM\fP が -記載されている。 -Linux では、これらの関数は常に成功する -(ただし、移植性や将来も動作することを保証したいアプリケーションでは -正のエラーの返り値を処理するようにすべきである)。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fIpthread_attr_t\fP 型の内部構造は意識すべきではない。 -pthreads 関数経由以外でのオブジェクトへのアクセスは移植性がなく、 -どのような結果が得られるかも分からない。 -.SH 例 -下記のプログラムは、\fBpthread_attr_init\fP() と種々の関連関数を使って、 -スレッド属性オブジェクトの初期化を行い、 -そのオブジェクトを使ってスレッドを一つ作成する。 -作成されたスレッドは、作成後に \fBpthread_getattr_np\fP(3) 関数 -(非標準の GNU 拡張) を使ってスレッドの属性を取得し、 -取得した属性を表示する。 - -コマンドライン引き数なしでプログラムを実行した場合、 -\fBpthread_create\fP(3) の \fIattr\fP 引き数には NULL が渡される。 -この場合、スレッドはデフォルトの属性で作成される。 -このプログラムを NPTL スレッド実装が使われている Linux/x86\-32 で -動作させると、以下のような出力が得られる。 - -.in +4n -.nf -.\" Results from glibc 2.8, SUSE 11.0; Oct 2008 -$\fB ulimit \-s\fP # No stack limit ==> default stack size is 2MB -unlimited -$\fB ./a.out\fP -Thread attributes: - Detach state = PTHREAD_CREATE_JOINABLE - Scope = PTHREAD_SCOPE_SYSTEM - Inherit scheduler = PTHREAD_INHERIT_SCHED - Scheduling policy = SCHED_OTHER - Scheduling priority = 0 - Guard size = 4096 bytes - Stack address = 0x40196000 - Stack size = 0x201000 bytes -.fi -.in - -コマンドライン引き数でスタックサイズが与えられた場合、 -このプログラムは、スレッド属性オブジェクトを初期化し、 -そのオブジェクトの各種属性を設定し、 -\fBpthread_create\fP(3) の呼び出しでこのオブジェクトへのポインターを渡す。 -このプログラムを NPTL スレッド実装が使われている Linux/x86\-32 で -動作させると、以下のような出力が得られる。 - -.in +4n -.nf -.\" Results from glibc 2.8, SUSE 11.0; Oct 2008 -$\fB ./a.out 0x3000000\fP -posix_memalign() allocated at 0x40197000 -Thread attributes: - Detach state = PTHREAD_CREATE_DETACHED - Scope = PTHREAD_SCOPE_SYSTEM - Inherit scheduler = PTHREAD_EXPLICIT_SCHED - Scheduling policy = SCHED_OTHER - Scheduling priority = 0 - Guard size = 0 bytes - Stack address = 0x40197000 - Stack size = 0x3000000 bytes -.fi -.in -.SS プログラムのソース -\& -.nf -#define _GNU_SOURCE /* To get pthread_getattr_np() declaration */ -#include -#include -#include -#include -#include - -#define handle_error_en(en, msg) \e - do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0) - -static void -display_pthread_attr(pthread_attr_t *attr, char *prefix) -{ - int s, i; - size_t v; - void *stkaddr; - struct sched_param sp; - - s = pthread_attr_getdetachstate(attr, &i); - if (s != 0) - handle_error_en(s, "pthread_attr_getdetachstate"); - printf("%sDetach state = %s\en", prefix, - (i == PTHREAD_CREATE_DETACHED) ? "PTHREAD_CREATE_DETACHED" : - (i == PTHREAD_CREATE_JOINABLE) ? "PTHREAD_CREATE_JOINABLE" : - "???"); - - s = pthread_attr_getscope(attr, &i); - if (s != 0) - handle_error_en(s, "pthread_attr_getscope"); - printf("%sScope = %s\en", prefix, - (i == PTHREAD_SCOPE_SYSTEM) ? "PTHREAD_SCOPE_SYSTEM" : - (i == PTHREAD_SCOPE_PROCESS) ? "PTHREAD_SCOPE_PROCESS" : - "???"); - - s = pthread_attr_getinheritsched(attr, &i); - if (s != 0) - handle_error_en(s, "pthread_attr_getinheritsched"); - printf("%sInherit scheduler = %s\en", prefix, - (i == PTHREAD_INHERIT_SCHED) ? "PTHREAD_INHERIT_SCHED" : - (i == PTHREAD_EXPLICIT_SCHED) ? "PTHREAD_EXPLICIT_SCHED" : - "???"); - - s = pthread_attr_getschedpolicy(attr, &i); - if (s != 0) - handle_error_en(s, "pthread_attr_getschedpolicy"); - printf("%sScheduling policy = %s\en", prefix, - (i == SCHED_OTHER) ? "SCHED_OTHER" : - (i == SCHED_FIFO) ? "SCHED_FIFO" : - (i == SCHED_RR) ? "SCHED_RR" : - "???"); - - s = pthread_attr_getschedparam(attr, &sp); - if (s != 0) - handle_error_en(s, "pthread_attr_getschedparam"); - printf("%sScheduling priority = %d\en", prefix, sp.sched_priority); - - s = pthread_attr_getguardsize(attr, &v); - if (s != 0) - handle_error_en(s, "pthread_attr_getguardsize"); - printf("%sGuard size = %d bytes\en", prefix, v); - - s = pthread_attr_getstack(attr, &stkaddr, &v); - if (s != 0) - handle_error_en(s, "pthread_attr_getstack"); - printf("%sStack address = %p\en", prefix, stkaddr); - printf("%sStack size = 0x%x bytes\en", prefix, v); -} - -static void * -thread_start(void *arg) -{ - int s; - pthread_attr_t gattr; - - /* pthread_getattr_np() is a non\-standard GNU extension that - retrieves the attributes of the thread specified in its - first argument */ - - s = pthread_getattr_np(pthread_self(), &gattr); - if (s != 0) - handle_error_en(s, "pthread_getattr_np"); - - printf("Thread attributes:\en"); - display_pthread_attr(&gattr, "\et"); - - exit(EXIT_SUCCESS); /* Terminate all threads */ -} - -int -main(int argc, char *argv[]) -{ - pthread_t thr; - pthread_attr_t attr; - pthread_attr_t *attrp; /* NULL or &attr */ - int s; - - attrp = NULL; - - /* If a command\-line argument was supplied, use it to set the - stack\-size attribute and set a few other thread attributes, - and set attrp pointing to thread attributes object */ - - if (argc > 1) { - int stack_size; - void *sp; - - attrp = &attr; - - s = pthread_attr_init(&attr); - if (s != 0) - handle_error_en(s, "pthread_attr_init"); - - s = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); - if (s != 0) - handle_error_en(s, "pthread_attr_setdetachstate"); - - s = pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED); - if (s != 0) - handle_error_en(s, "pthread_attr_setinheritsched"); - - stack_size = strtoul(argv[1], NULL, 0); - - s = posix_memalign(&sp, sysconf(_SC_PAGESIZE), stack_size); - if (s != 0) - handle_error_en(s, "posix_memalign"); - - printf("posix_memalign() allocated at %p\en", sp); - - s = pthread_attr_setstack(&attr, sp, stack_size); - if (s != 0) - handle_error_en(s, "pthread_attr_setstack"); - } - - s = pthread_create(&thr, attrp, &thread_start, NULL); - if (s != 0) - handle_error_en(s, "pthread_create"); - - if (attrp != NULL) { - s = pthread_attr_destroy(attrp); - if (s != 0) - handle_error_en(s, "pthread_attr_destroy"); - } - - pause(); /* Terminates when other thread calls exit() */ -} -.fi -.SH 関連項目 -.ad l -.nh -\fBpthread_attr_setaffinity_np\fP(3), \fBpthread_attr_setdetachstate\fP(3), -\fBpthread_attr_setguardsize\fP(3), \fBpthread_attr_setinheritsched\fP(3), -\fBpthread_attr_setschedparam\fP(3), \fBpthread_attr_setschedpolicy\fP(3), -\fBpthread_attr_setscope\fP(3), \fBpthread_attr_setstack\fP(3), -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_attr_setaffinity_np.3 b/manual/LDP_man-pages/draft/man3/pthread_attr_setaffinity_np.3 index 8a1ba539..a1a1d87d 100644 --- a/manual/LDP_man-pages/draft/man3/pthread_attr_setaffinity_np.3 +++ b/manual/LDP_man-pages/draft/man3/pthread_attr_setaffinity_np.3 @@ -33,7 +33,7 @@ .\" all rights reserved. .\" Translated 2012-05-03, Akihiro MOTOKI .\" -.TH PTHREAD_ATTR_SETAFFINITY_NP 3 2014\-05\-28 Linux "Linux Programmer's Manual" +.TH PTHREAD_ATTR_SETAFFINITY_NP 3 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 pthread_attr_setaffinity_np, pthread_attr_getaffinity_np \- スレッド属性オブジェクトの CPU affinity 属性の設定/取得を行う @@ -41,12 +41,12 @@ pthread_attr_setaffinity_np, pthread_attr_getaffinity_np \- .nf \fB#define _GNU_SOURCE\fP /* See feature_test_macros(7) */ \fB#include \fP - +.PP \fBint pthread_attr_setaffinity_np(pthread_attr_t *\fP\fIattr\fP\fB,\fP \fB size_t \fP\fIcpusetsize\fP\fB, const cpu_set_t *\fP\fIcpuset\fP\fB);\fP \fBint pthread_attr_getaffinity_np(const pthread_attr_t *\fP\fIattr\fP\fB,\fP \fB size_t \fP\fIcpusetsize\fP\fB, cpu_set_t *\fP\fIcpuset\fP\fB);\fP -.sp +.PP \fI\-pthread\fP でコンパイルしてリンクする。 .fi .SH 説明 @@ -55,15 +55,15 @@ pthread_attr_setaffinity_np, pthread_attr_getaffinity_np \- \fIcpuset\fP で指定された値に設定する。 この属性により、スレッド属性オブジェクト \fIattr\fP を使って 作成されたスレッドの CPU affinity マスクが決定される。 - +.PP \fBpthread_attr_getaffinity_np\fP() 関数は、 \fIattr\fP が参照する スレッド属性オブジェクトの CPU affinity マスク属性を \fIcpuset\fP が指すバッファーに入れて返す。 - +.PP \fIcpusetsize\fP 引き数は \fIcpuset\fP が指すバッファーの (バイト単位の) 大きさである。通常は、この引き数には \fIsizeof(cpu_set_t)\fP を 指定することだろう。 - +.PP CPU affinity マスクの詳細については、 \fBsched_setaffinity\fP(2) を参照してほしい。 CPU 集合の操作や取得を行う際に利用できるマクロ群の説明は @@ -92,6 +92,19 @@ CPU 集合の操作や取得を行う際に利用できるマクロ群の説明 (\fBpthread_attr_setaffinity_np\fP()) メモリーを割り当てることができなかった。 .SH バージョン これらの関数は glibc バージョン 2.3.4 以降で提供されている。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lbw30 lb lb +l l l. +Interface Attribute Value +T{ +\fBpthread_attr_setaffinity_np\fP(), +\fBpthread_attr_getaffinity_np\fP() +T} Thread safety MT\-Safe +.TE +.sp 1 .SH 準拠 これらの関数は非標準の GNU による拡張である。 そのため、名前に "_np" (nonportable; 移植性がない) という接尾辞が @@ -105,6 +118,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_attr_setdetachstate.3 b/manual/LDP_man-pages/draft/man3/pthread_attr_setdetachstate.3 deleted file mode 100644 index 99dcab96..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_attr_setdetachstate.3 +++ /dev/null @@ -1,105 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-03, Akihiro MOTOKI -.\" -.TH PTHREAD_ATTR_SETDETACHSTATE 3 2014\-05\-28 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_attr_setdetachstate, pthread_attr_getdetachstate \- -スレッド属性オブジェクトの detach state 属性の設定/取得を行う -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_attr_setdetachstate(pthread_attr_t *\fP\fIattr\fP\fB, int \fP\fIdetachstate\fP\fB);\fP -\fBint pthread_attr_getdetachstate(const pthread_attr_t *\fP\fIattr\fP\fB, int *\fP\fIdetachstate\fP\fB);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -\fBpthread_attr_setdetachstate\fP() 関数は、 -\fIattr\fP が参照するスレッド属性オブジェクトの detach state 属性を -\fIdetachstate\fP で指定された値に設定する。 -detach state 属性により、スレッド属性オブジェクト \fIattr\fP を使って -作成されるスレッドが、 join 可能な状態で作成されるか、 -detached (切り離された) 状態で作成されるかが決定される。 - -\fIdetachstate\fP には以下の値を指定できる。 -.TP -\fBPTHREAD_CREATE_DETACHED\fP -\fIattr\fP を使って作成されるスレッドは detached 状態で作成される。 -.TP -\fBPTHREAD_CREATE_JOINABLE\fP -\fIattr\fP を使って作成されるスレッドは join 可能な状態で作成される。 -.PP -新規に初期化されたスレッド属性オブジェクトの detach state 属性の -デフォルト設定は \fBPTHREAD_CREATE_JOINABLE\fP である。 - -\fBpthread_attr_getdetachstate\fP() は、 -スレッド属性オブジェクト \fIattr\fP の detach state 属性を -\fIdetachstate\fP が指すバッファーに入れて返す。 -.SH 返り値 -成功すると、これらの関数は 0 を返す。 -エラーの場合、0 以外のエラー番号を返す。 -.SH エラー -\fBpthread_attr_setdetachstate\fP() は以下のエラーで失敗する場合がある。 -.TP -\fBEINVAL\fP -無効な値が \fIdetachstate\fP で指定された。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBpthread_attr_setdetachstate\fP() と \fBpthread_attr_getdetachstate\fP() -はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -detached 状態のスレッド、join 可能状態のスレッドの詳細については、 -\fBpthread_create\fP(3) を参照。 - -join 可能状態で作成されたスレッドは、最終的に -\fBpthread_join\fP(3) を使って join するか、 -\fBpthread_detach\fP(3) を使って切り離すか、 -のどちらかを行うべきである。 - -detached 状態で作成されたスレッドのスレッド ID を指定して、 -\fBpthread_detach\fP(3) や \fBpthread_join\fP(3) を後から呼び出すのは -エラーである。 -.SH 例 -\fBpthread_attr_init\fP(3) を参照。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_attr_setguardsize.3 b/manual/LDP_man-pages/draft/man3/pthread_attr_setguardsize.3 deleted file mode 100644 index acbe8f81..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_attr_setguardsize.3 +++ /dev/null @@ -1,141 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-03, Akihiro MOTOKI -.\" -.TH PTHREAD_ATTR_SETGUARDSIZE 3 2014\-05\-28 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_attr_setguardsize, pthread_attr_getguardsize \- -スレッド属性オブジェクトの guard size 属性の設定/取得を行う -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_attr_setguardsize(pthread_attr_t *\fP\fIattr\fP\fB, size_t \fP\fIguardsize\fP\fB);\fP -\fBint pthread_attr_getguardsize(const pthread_attr_t *\fP\fIattr\fP\fB, size_t *\fP\fIguardsize\fP\fB);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -\fBpthread_attr_setguardsize\fP() 関数は、 -\fIattr\fP が参照するスレッド属性オブジェクトの guard size 属性を -\fIguardsize\fP で指定された値に設定する。 - -\fIguardsize\fP が 0 より大きい場合、 -\fIattr\fP を使って新しく作成された各スレッドに対して、 -システムはスレッドのスタックの末尾に少なくとも \fIguardsize\fP バイトの -追加領域を割り当てる。この追加領域はスタックに対するガード領域として -機能する (ただし「バグ」の節も参照)。 - -\fIguardsize\fP が 0 の場合、 -\fIattr\fP を使って新しく作成されたスレッドはガード領域を持たない。 - -デフォルトの guard size はシステムのページサイズと同じである。 - -(\fBpthread_attr_setstack\fP(3) や \fBpthread_attr_setstackaddr\fP(3)を使って) -\fIattr\fP でスタックアドレス属性が設定されている場合には、呼び出し側がそ -のスレッドのスタックを割り当てていることを意味するので、guard size 属性 -は無視される (すなわち、システムによるガード領域の作成は行われない)。 -この場合、スタックオーバーフローが起こらないように対処するのはアプリ -ケーション側の責任となる (おそらく \fBmprotect\fP(2) を使って、割り当て -られたスタックの最後に手動でガード領域を定義することになるだろう)。 - -\fBpthread_attr_getguardsize\fP() は、 -スレッド属性オブジェクト \fIattr\fP の guard size 属性を -\fIguardsize\fP が指すバッファーに入れて返す。 -.SH 返り値 -成功すると、これらの関数は 0 を返す。 -エラーの場合、0 以外のエラー番号を返す。 -.SH エラー -POSIX.1\-2001 では、エラー \fBEINVAL\fP が - \fIattr\fP か \fIguardsize\fP が無効な場合に対して規定されている。 -Linux では、これらの関数は常に成功する -(ただし、移植性や将来も動作することを保証したいアプリケーションでは -正のエラーの返り値を処理するようにすべきである)。 -.SH バージョン -これらの関数は glibc バージョン 2.1 以降で提供されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBpthread_attr_setguardsize\fP() と \fBpthread_attr_getguardsize\fP() -はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -ガード領域は、読み出し/書き込みアクセスが行われないように保護がかけ -られた仮想メモリーページで構成で構成される。スレッドがスタックをガード -領域までオーバーフローさせた場合、ほとんどのハードウェアアーキテクチャー -では、スレッドに \fBSIGSEGV\fP シグナルが送られ、オーバーフローが発生した -ことが通知される。ガード領域はページ境界から開始され、ガード領域の -大きさはスレッド作成時に内部的にシステムのページサイズに切り上げられる -(その場合も \fBpthread_attr_getguardsize\fP() では -\fBpthread_attr_setguardsize\fP() で設定された guard size が返される)。 - -多くのスレッドを作成するアプリケーションで、かつ、スタックオーバーフロー -が決して発生しないことが分かっている場合には、guard size を 0 に設定 -することで、メモリーを節約できることもある。 - -スレッドがスタックに大きなデータ構造を割り当てる場合には、 -スタックオーバーフローを検出するためには、デフォルトサイズよりも -大きな guard size を選ぶ必要があるかもしれない。 -.SH バグ -glibc 2.8 の時点では、 NPTL スレッド実装ではガード領域はスタックサイズ -で割り当てられる領域の中に含まれている。一方、POSIX.1 では、スタックの -末尾に追加の領域を割り当てることが求められている。 -(このため、ガード領域が大きすぎて、 -実際のスタック用の場所がなくなってしまう場合、 -\fBpthread_create\fP(3) で \fBEINVAL\fP エラーが発生することになる。) - -.\" glibc includes the guardsize within the allocated stack size, -.\" which looks pretty clearly to be in violation of POSIX. -.\" -.\" Filed bug, 22 Oct 2008: -.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6973 -.\" -.\" Older reports: -.\" https//bugzilla.redhat.com/show_bug.cgi?id=435337 -.\" Reportedly, LinuxThreads did the right thing, allocating -.\" extra space at the end of the stack: -.\" http://sourceware.org/ml/libc-alpha/2008-05/msg00086.html -廃止予定の LinuxThreads 実装では、 -POSIX.1 で求められている通りの動作で、 -ガード領域がスタックの末尾に追加の領域が割り当てられる。 -.SH 例 -\fBpthread_getattr_np\fP(3) を参照。 -.SH 関連項目 -\fBmmap\fP(2), \fBmprotect\fP(2), \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_attr_setinheritsched.3 b/manual/LDP_man-pages/draft/man3/pthread_attr_setinheritsched.3 deleted file mode 100644 index 066b018c..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_attr_setinheritsched.3 +++ /dev/null @@ -1,122 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-03, Akihiro MOTOKI -.\" Updated 2013-07-17, Akihiro MOTOKI -.\" Updated 2013-07-31, Akihiro MOTOKI -.\" -.TH PTHREAD_ATTR_SETINHERITSCHED 3 2014\-05\-21 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_attr_setinheritsched, pthread_attr_getinheritsched \- スレッド属性オブジェクトの -inherit\-scheduler 属性の設定/取得を行う -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_attr_setinheritsched(pthread_attr_t *\fP\fIattr\fP\fB,\fP -\fB int \fP\fIinheritsched\fP\fB);\fP -\fBint pthread_attr_getinheritsched(const pthread_attr_t *\fP\fIattr\fP\fB,\fP -\fB int *\fP\fIinheritsched\fP\fB);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -\fBpthread_attr_setinheritsched\fP() 関数は、 \fIattr\fP が参照するスレッド属性オブジェクトの -inherit\-scheduler 属性を \fIinheritsched\fP で指定された値に設定する。 inherit\-scheduler -属性により、スレッド属性オブジェクト \fIattr\fP を使って作成されるスレッドが、呼び出したスレッドのスケジューリング属性を継承するか、 -\fIattr\fP からスケジューリング属性を取得するかが決定される。 - -次に挙げるスケジューリング属性は inherit\-scheduler 属性の影響を受ける: スケジューリングポリシー -(\fBpthread_attr_setschedpolicy\fP(3))、 スケジューリング優先度 -(\fBpthread_attr_setschedparam\fP(3))、 contention scope -(\fBpthread_attr_setscope\fP(3))。 - -以下の値を \fIinheritsched\fP に指定できる。 -.TP -\fBPTHREAD_INHERIT_SCHED\fP -\fIattr\fP を使って作成されたスレッドは、 -スレッドを作成するスレッドからスケジューリング属性を継承する。 -\fIattr\fP 内のスケジューリング属性は無視される。 -.TP -\fBPTHREAD_EXPLICIT_SCHED\fP -.\" FIXME Document the defaults for scheduler settings -\fIattr\fP を使って作成されたスレッドは、スレッド属性オブジェクトで -指定された値からスケジューリング属性を取得する。 -.PP -新たに初期化されたスレッド属性オブジェクトの inherit\-scheduler 属性のデフォルト設定は -\fBPTHREAD_INHERIT_SCHED\fP である。 - -\fBpthread_attr_getinheritsched\fP() は、 スレッド属性オブジェクト \fIattr\fP の -inherit\-scheduler 属性を \fIinheritsched\fP が指すバッファーに入れて返す。 -.SH 返り値 -成功すると、これらの関数は 0 を返す。 -エラーの場合、0 以外のエラー番号を返す。 -.SH エラー -\fBpthread_attr_setinheritsched\fP() は以下のエラーで失敗する場合がある。 -.TP -\fBEINVAL\fP -\fIinheritsched\fP に無効な値が指定された。 -.PP -.\" .SH VERSIONS -.\" Available since glibc 2.0. -POSIX.1\-2001 では、 \fBpthread_attr_setinheritsched\fP() に関して -エラー \fBENOTSUP\fP ("サポートされていない値を属性に設定しようとした") -も追加で規定されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBpthread_attr_setinheritsched\fP() と \fBpthread_attr_getinheritsched\fP() -はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH バグ -.\" FIXME . Track status of the following bug: -.\" http://sourceware.org/bugzilla/show_bug.cgi?id=7007 -glibc 2.8 の時点では、スレッド属性オブジェクトが \fBpthread_attr_init\fP(3) を使って初期化された場合、 -スレッド属性オブジェクトのスケジューリングポリシーが \fBSCHED_OTHER\fP に、 スケジューリング優先度が 0 に設定される。一方、その後 -inherit\-scheduler 属性に \fBPTHREAD_EXPLICIT_SCHED\fP -が設定されると、このスレッド属性オブジェクトを使って作成されたスレッドでは、スレッドを作成するスレッドのスケジューリング属性が間違って継承されてしまう。 -\fBpthread_create\fP(3) を呼び出す前にスケジューリングポリシー属性かスケジューリング優先度属性のどちらかが明示的に設定された場合には、 -このバグは発生しない。 -.SH 例 -\fBpthread_setschedparam\fP(3) を参照。 -.SH 関連項目 -.ad l -.nh -\fBpthread_attr_init\fP(3), \fBpthread_attr_setschedparam\fP(3), -\fBpthread_attr_setschedpolicy\fP(3), \fBpthread_attr_setscope\fP(3), -\fBpthread_create\fP(3), \fBpthread_setschedparam\fP(3), -\fBpthread_setschedprio\fP(3), \fBpthreads\fP(7), \fBsched\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_attr_setschedparam.3 b/manual/LDP_man-pages/draft/man3/pthread_attr_setschedparam.3 deleted file mode 100644 index 7167545f..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_attr_setschedparam.3 +++ /dev/null @@ -1,114 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-03, Akihiro MOTOKI -.\" Updated 2013-07-17, Akihiro MOTOKI -.\" Updated 2013-07-31, Akihiro MOTOKI -.\" -.TH PTHREAD_ATTR_SETSCHEDPARAM 3 2014\-05\-21 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_attr_setschedparam, pthread_attr_getschedparam \- -スレッド属性オブジェクトのスケジューリングパラメーター属性の設定/取得を行う -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_attr_setschedparam(pthread_attr_t *\fP\fIattr\fP\fB,\fP -\fB const struct sched_param *\fP\fIparam\fP\fB);\fP -\fBint pthread_attr_getschedparam(const pthread_attr_t *\fP\fIattr\fP\fB,\fP -\fB struct sched_param *\fP\fIparam\fP\fB);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -\fBpthread_attr_setschedparam\fP() 関数は、 -\fIattr\fP が参照するスレッド属性オブジェクトのスケジューリング -パラメーター属性を \fIparam\fP が指すバッファーで指定された値に設定する。 -これらの属性により、スレッド属性オブジェクト \fIattr\fP を使って -作成されるスレッドのスケジューリングパラメーターが決定される。 - -\fBpthread_attr_getschedparam\fP() は、 -スレッド属性オブジェクト \fIattr\fP のスケジューリングパラメーター属性を -\fIparam\fP が指すバッファーに入れて返す。 - -スケジューリングパラメーターは以下の構造体で管理される。 - -.in +4n -.nf -struct sched_param { - int sched_priority; /* Scheduling priority */ -}; -.fi -.in - -見て分かる通り、サポートされているスケジューリングパラメーターは一つだけである。各スケジューリングポリシーで許可されるスケジューリング優先度の詳細については、\fBsched\fP(7) -を参照のこと。 - -\fBpthread_create\fP(3) を呼び出した際に \fBpthread_attr_setschedparam\fP() -で行ったパラメーター設定を有効にするには、 呼び出し側で \fBpthread_attr_setinheritsched\fP(3) を使って -属性オブジェクト \fIattr\fP の inherit\-scheduler 属性を \fBPTHREAD_EXPLICIT_SCHED\fP -に設定しておかなければならない。 -.SH 返り値 -成功すると、これらの関数は 0 を返す。 -エラーの場合、0 以外のエラー番号を返す。 -.SH エラー -.\" .SH VERSIONS -.\" Available since glibc 2.0. -POSIX.1 では、 -\fBpthread_attr_setschedparam\fP() について -\fBEINVAL\fP と \fBENOTSUP\fP が規定されている。 -Linux では、これらの関数は常に成功する -(ただし、移植性や将来も動作することを保証したいアプリケーションでは -正のエラーの返り値を処理するようにすべきである)。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBpthread_attr_setschedparam\fP() と \fBpthread_attr_getschedparam\fP() -はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -Linux でサポートされているスレッドのスケジューリングポリシーのリストに -ついては、 \fBpthread_attr_setschedpolicy\fP(3) を参照。 -.SH 例 -\fBpthread_setschedparam\fP(3) を参照。 -.SH 関連項目 -.ad l -.nh -\fBsched_get_priority_min\fP(2), \fBpthread_attr_init\fP(3), -\fBpthread_attr_setinheritsched\fP(3), \fBpthread_attr_setschedpolicy\fP(3), -\fBpthread_create\fP(3), \fBpthread_setschedparam\fP(3), -\fBpthread_setschedprio\fP(3), \fBpthreads\fP(7), \fBsched\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_attr_setschedpolicy.3 b/manual/LDP_man-pages/draft/man3/pthread_attr_setschedpolicy.3 deleted file mode 100644 index 1acdccfe..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_attr_setschedpolicy.3 +++ /dev/null @@ -1,102 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-03, Akihiro MOTOKI -.\" Updated 2013-07-31, Akihiro MOTOKI -.\" -.TH PTHREAD_ATTR_SETSCHEDPOLICY 3 2014\-05\-21 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_attr_setschedpolicy, pthread_attr_getschedpolicy \- スレッド属性 -オブジェクトのスケジューリングポリシー属性の設定/取得を行う -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_attr_setschedpolicy(pthread_attr_t *\fP\fIattr\fP\fB, int \fP\fIpolicy\fP\fB);\fP -\fBint pthread_attr_getschedpolicy(const pthread_attr_t *\fP\fIattr\fP\fB, int \fP\fI*policy\fP\fB);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -\fBpthread_attr_setschedpolicy\fP() 関数は、 -\fIattr\fP が参照するスレッド属性オブジェクトのスケジューリング -ポリシー属性を \fIpolicy\fP で指定された値に設定する。 -この属性により、スレッド属性オブジェクト \fIattr\fP を使って -作成されるスレッドのスケジューリングポリシーが決定される。 - -.\" FIXME . pthread_setschedparam() places no restriction on the policy, -.\" but pthread_attr_setschedpolicy() restricts policy to RR/FIFO/OTHER -.\" http://sourceware.org/bugzilla/show_bug.cgi?id=7013 -\fIpolicy\fP に指定できる値は \fBSCHED_FIFO\fP, \fBSCHED_RR\fP, \fBSCHED_OTHER\fP である。それぞれの意味は -\fBsched\fP(7) で説明している通りである。 - -\fBpthread_attr_getschedpolicy\fP() は、 -スレッド属性オブジェクト \fIattr\fP のスケジューリングポリシー属性を -\fIpolicy\fP が指すバッファーに入れて返す。 - -\fBpthread_create\fP(3) を呼び出した際に \fBpthread_attr_setschedpolicy\fP() -で行ったポリシー設定を有効にするには、 呼び出し側で \fBpthread_attr_setinheritsched\fP(3) を使って 属性オブジェクト -\fIattr\fP の inherit\-scheduler 属性を \fBPTHREAD_EXPLICIT_SCHED\fP に設定しておかなければならない。 -.SH 返り値 -成功すると、これらの関数は 0 を返す。 -エラーの場合、0 以外のエラー番号を返す。 -.SH エラー -\fBpthread_attr_setschedpolicy\fP() は以下のエラーで失敗する場合がある。 -.TP -\fBEINVAL\fP -\fIpolicy\fP に無効な値が指定された。 -.PP -.\" .SH VERSIONS -.\" Available since glibc 2.0. -POSIX.1\-2001 では、 \fBpthread_attr_setschedpolicy\fP() に関して -エラー \fBENOTSUP\fP ("サポートされていない値を属性に設定しようとした") -も追加で規定されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBpthread_attr_setschedpolicy\fP() と \fBpthread_attr_getschedpolicy\fP() -はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 例 -\fBpthread_setschedparam\fP(3) を参照。 -.SH 関連項目 -.ad l -.nh -\fBpthread_attr_init\fP(3), \fBpthread_attr_setinheritsched\fP(3), -\fBpthread_attr_setschedparam\fP(3), \fBpthread_create\fP(3), -\fBpthread_setschedparam\fP(3), \fBpthread_setschedprio\fP(3), \fBpthreads\fP(7), -\fBsched\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_attr_setscope.3 b/manual/LDP_man-pages/draft/man3/pthread_attr_setscope.3 deleted file mode 100644 index 19bd82e9..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_attr_setscope.3 +++ /dev/null @@ -1,123 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-04, Akihiro MOTOKI -.\" Updated 2013-07-17, Akihiro MOTOKI -.\" Updated 2013-07-31, Akihiro MOTOKI -.\" -.TH PTHREAD_ATTR_SETSCOPE 3 2014\-05\-28 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_attr_setscope, pthread_attr_getscope \- -スレッド属性オブジェクトの contention scope 属性の設定/取得を行う -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_attr_setscope(pthread_attr_t *\fP\fIattr\fP\fB, int \fP\fIscope\fP\fB);\fP -\fBint pthread_attr_getscope(const pthread_attr_t *\fP\fIattr\fP\fB, int *\fP\fIscope\fP\fB);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -\fBpthread_attr_setscope\fP() 関数は、 -\fIattr\fP が参照するスレッド属性オブジェクトの contention scope -属性を \fIscope\fP で指定された値に設定する。 -contention scope 属性により、 -スレッドが CPU などのリソースを取り合うスレッド集合が規定される。 -POSIX.1\-2001 では \fIscope\fP に指定する値として 2 つの値が規定されている。 -.TP -\fBPTHREAD_SCOPE_SYSTEM\fP -スレッドは、同じスケジューリング割り当てドメイン (一つ以上のプロセッサ -のグループ) にある、システム上の全てのプロセスの自分以外の全ての -スレッドとリソースを取り合う。 -\fBPTHREAD_SCOPE_SYSTEM\fP のスレッドは、スケジューリングポリシーと -優先度に基づき、互いに相対的にスケジューリングされる。 -.TP -\fBPTHREAD_SCOPE_PROCESS\fP -スレッドは、contention scope が \fBPTHREAD_SCOPE_PROCESS\fP で作成された -同じプロセスの自分以外の全てのスレッドとリソースを取り合う。 -\fBPTHREAD_SCOPE_PROCESS\fP のスレッドは、スケジューリングポリシーと優先度 -に基づき、同じプロセスの他のスレッドと相対的にスケジューリングされる。 -POSIX.1\-2001 では、これらのスレッドがシステム上の他のプロセスのスレッド -や同じプロセス内の contention scope が \fBPTHREAD_SCOPE_SYSTEM\fP で作成 -された他のスレッドとどのようにリソースを取り合うかは、 -規定されないままになっている。 -.PP -POSIX.1\-2001 で求められているのは、スレッド実装がこれらの contention scope のうち少なくとも 1 -つをサポートすることだけである。 Linux は \fBPTHREAD_SCOPE_SYSTEM\fP をサポートしているが、 -\fBPTHREAD_SCOPE_PROCESS\fP はサポートしていない。 - -複数の contention scope をサポートしているシステムで、 \fBpthread_create\fP(3) を呼び出した際に -\fBpthread_attr_setscope\fP() で行ったパラメーター設定を有効にするには、 呼び出し側で -\fBpthread_attr_setinheritsched\fP(3) を使って 属性オブジェクト \fIattr\fP の inherit\-scheduler -属性を \fBPTHREAD_EXPLICIT_SCHED\fP に設定しておかなければならない。 - -\fBpthread_attr_getscope\fP() は、 -スレッド属性オブジェクト \fIattr\fP の contention scope 属性を -\fIscope\fP が指すバッファーに入れて返す。 -.SH 返り値 -成功すると、これらの関数は 0 を返す。 -エラーの場合、0 以外のエラー番号を返す。 -.SH エラー -\fBpthread_attr_setscope\fP() は以下のエラーで失敗する場合がある。 -.TP -\fBEINVAL\fP -\fIscope\fP に無効な値が指定された。 -.TP -\fBENOTSUP\fP -\fIscope\fP に値 \fBPTHREAD_SCOPE_PROCESS\fP が指定された。 -この値は Linux でサポートされていない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBpthread_attr_setscope\fP() と \fBpthread_attr_getscope\fP() はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fBPTHREAD_SCOPE_SYSTEM\fP contention scope では、通常は、一つの -ユーザー空間スレッドは一つのカーネルスケジューリングエンティティに -直接結び付けられる。 -Linux では、廃止予定の LinuxThreads 実装も新しい NPTL 実装もこれに -該当し、両方とも 1:1 で結び付けられるスレッド実装となっている。 - -POSIX.1\-2001 では、 contention scope 属性のデフォルト値は -実装時で定義されるものと規定されている。 -.SH 関連項目 -.ad l -.nh -\fBpthread_attr_init\fP(3), \fBpthread_attr_setaffinity_np\fP(3), -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_attr_setstack.3 b/manual/LDP_man-pages/draft/man3/pthread_attr_setstack.3 deleted file mode 100644 index aeae74b2..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_attr_setstack.3 +++ /dev/null @@ -1,139 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-03, Akihiro MOTOKI -.\" -.TH PTHREAD_ATTR_SETSTACK 3 2014\-05\-28 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_attr_setstack, pthread_attr_getstack \- -スレッド属性オブジェクトのスタック属性の設定/取得を行う -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_attr_setstack(pthread_attr_t *\fP\fIattr\fP\fB,\fP -\fB void *\fP\fIstackaddr\fP\fB, size_t \fP\fIstacksize\fP\fB);\fP -\fBint pthread_attr_getstack(const pthread_attr_t *\fP\fIattr\fP\fB,\fP -\fB void **\fP\fIstackaddr\fP\fB, size_t *\fP\fIstacksize\fP\fB);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBpthread_attr_getstack\fP(), \fBpthread_attr_setstack\fP(): -.RS 4 -_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600 -.RE -.ad b -.SH 説明 -\fBpthread_attr_setstack\fP() 関数は、 -\fIattr\fP が参照するスレッド属性オブジェクトのスタックアドレス属性と -スタックサイズ属性をそれぞれ \fIstackaddr\fP と \fIstacksize\fP で -指定された値に設定する。 -これらの属性により、スレッド属性オブジェクト \fIattr\fP を使って -作成されるスレッドが使用すべきスタックの位置とサイズが指定される。 - -\fIstackaddr\fP は、呼び出し側で割り当てた、大きさが \fIstacksize\fP バイトの -バッファー内の指定できる最小のアドレスバイトを指すべきである。 -割り当てられたバッファーのページは読み書き両方が可能なページとなっている -べきである。 - -\fBpthread_attr_getstack\fP() 関数は、 -スレッド属性オブジェクト \fIattr\fP のスタックアドレス属性と -スタックサイズ属性をそれぞれ \fIstackaddr\fP と \fIstacksize\fP が -指すバッファーに入れて返す。 -.SH 返り値 -成功すると、これらの関数は 0 を返す。 -エラーの場合、0 以外のエラー番号を返す。 -.SH エラー -\fBpthread_attr_setstack\fP() は以下のエラーで失敗する場合がある。 -.TP -\fBEINVAL\fP -\fIstacksize\fP が \fBPTHREAD_STACK_MIN\fP (16384) よりも小さい。 -システムによっては、 \fIstackaddr\fP か -\fIstackaddr\ +\ stacksize\fP のアライメントが適切でない場合にも -このエラーが発生する。 -.PP -POSIX.1\-2001 では エラー \fBEACCES\fP も規定されており、 -このエラーは \fIstackaddr\fP と \fIstacksize\fP で規定されるスタック領域に -呼び出し側から読み書き両方のアクセスができない状況を表す。 -.SH バージョン -これらの関数は glibc バージョン 2.2 以降で提供されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBpthread_attr_setstack\fP() と \fBpthread_attr_getstack\fP() はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -これらの関数は、スレッドのスタックが特定の場所に配置されることを保証 -しなければならないアプリケーションのために提供されている。 -ほとんどのアプリケーションでは、このようなことは必要なく、 -これらの関数を使うのは避けるべきである。 -(アプリケーションが単にスタックサイズだけをデフォルトの値から変更する -必要がある場合には \fBpthread_attr_setstacksize\fP(3) を使うこと) - -アプリケーションが \fBpthread_attr_setstack\fP() を利用する際には、 -スタックの割り当てに責任を持つ必要がある。 -\fBpthread_attr_setguardsize\fP(3) を使って設定された -guard size の値は無視される。 -必要と思われる場合は、アプリケーションが責任を持ってガード領域 (読み書 -きが行われないように保護された 1 個かそれ以上のページ) の割り当てを行い、 -スタックオーバーフローの可能性に対処するようにする必要がある。 - -\fIstackaddr\fP に指定するアドレスは適切なアライメントとなっているべきである。 -完全な移植性を持たせるためには、 -ページ境界 (\fIsysconf(_SC_PAGESIZE)\fP) に揃えること。 -割り当てには \fBposix_memalign\fP(3) を使うとよい。 -たいていは、 \fIstacksize\fP はシステムのページサイズの倍数とすべきである。 - -一つの \fIattr\fP を使って複数のスレッドを作成する場合、 -\fBpthread_create\fP(3) の次の呼び出しを行う前に、 -呼び出し側でスタックアドレス属性を変更しなければならない。 -さもなければ、複数のスレッドがスタックとして同じメモリー領域を -使おうとするため、訳の分からない状況が発生してしまう。 -.SH 例 -\fBpthread_attr_init\fP(3) を参照。 -.SH 関連項目 -.ad l -.nh -\fBmmap\fP(2), \fBmprotect\fP(2), \fBposix_memalign\fP(3), \fBpthread_attr_init\fP(3), -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_attr_setstackaddr.3 b/manual/LDP_man-pages/draft/man3/pthread_attr_setstackaddr.3 deleted file mode 100644 index 72633cba..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_attr_setstackaddr.3 +++ /dev/null @@ -1,100 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-03, Akihiro MOTOKI -.\" -.TH PTHREAD_ATTR_SETSTACKADDR 3 2014\-05\-28 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_attr_setstackaddr, pthread_attr_getstackaddr \- -スレッド属性オブジェクトのスタックアドレス属性の設定/取得を行う -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_attr_setstackaddr(pthread_attr_t *\fP\fIattr\fP\fB, void *\fP\fIstackaddr\fP\fB);\fP -\fBint pthread_attr_getstackaddr(const pthread_attr_t *\fP\fIattr\fP\fB, void **\fP\fIstackaddr\fP\fB);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -これらの関数は廃止予定であり、\fB使用しないこと\fP。 -代わりに \fBpthread_attr_setstack\fP(3) と \fBpthread_attr_getstack\fP(3) を使うこと。 - -\fBpthread_attr_setstackaddr\fP() 関数は、 -\fIattr\fP が参照するスレッド属性オブジェクトのスタックアドレス -属性を \fIstackaddr\fP で指定された値に設定する。 -この属性により、スレッド属性オブジェクト \fIattr\fP を使って -作成されるスレッドが使用すべきスタックの位置が指定される。 - -\fIstackaddr\fP は呼び出し側が割り当てたバッファー (大きさは -少なくとも \fBPTHREAD_STACK_MIN\fP バイト)を指すべきである。 -割り当てられたバッファーのページは読み書き両方が可能なページと -なっているべきである。 - -\fBpthread_attr_getstackaddr\fP() は、 -スレッド属性オブジェクト \fIattr\fP のスタックアドレス属性を -\fIstackaddr\fP が指すバッファーに入れて返す。 -.SH 返り値 -成功すると、これらの関数は 0 を返す。 -エラーの場合、0 以外のエラー番号を返す。 -.SH エラー -エラーは定義されていない (ただし、アプリケーションは正のエラーの -返り値を処理するようにすべきである)。 -.SH バージョン -これらの関数は glibc バージョン 2.1 以降で提供されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBpthread_attr_setstackaddr\fP() と \fBpthread_attr_getstackaddr\fP() -はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001 では、これらの関数が規定されているが、廃止予定となっている。 -POSIX.1\-2008 では、これらの関数の規定は削除されている。 -.SH 注意 -\fIこれらの関数を使用しないこと!\fP これらの関数は移植性がある形では使用で -きない。なぜなら、これらの関数ではスタック領域がどちらの方向に伸びるの -かを指定する手段が提供されていないからである。 -例えば、スタックが下向き (アドレスが小さい方向) に伸びるアーキテクチャー -では、\fIstackaddr\fP には割り当てられたスタック領域の\fI最も大きな\fPアドレ -スの次のアドレスを指定する。一方、スタックが上向き (アドレスが大きい -方向) に伸びるアーキテクチャーでは、\fIstackaddr\fP には割り当てられた -スタック領域の\fI最も小さい\fPアドレスを指定する。これに対して、 -\fBpthread_attr_setstack\fP(3) と \fBpthread_attr_getstack\fP(3) が使用する -\fIstackaddr\fP は、常に割り当てられたスタック領域の最も小さいアドレス -へのポインターである (\fIstacksize\fP 引き数はスタックの範囲を指定する)。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_attr_setstacksize.3 b/manual/LDP_man-pages/draft/man3/pthread_attr_setstacksize.3 deleted file mode 100644 index 4738bde6..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_attr_setstacksize.3 +++ /dev/null @@ -1,107 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-03, Akihiro MOTOKI -.\" -.TH PTHREAD_ATTR_SETSTACKSIZE 3 2014\-05\-28 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_attr_setstacksize, pthread_attr_getstacksize \- -スレッド属性オブジェクトのスタックサイズ属性の設定/取得を行う -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_attr_setstacksize(pthread_attr_t *\fP\fIattr\fP\fB, size_t \fP\fIstacksize\fP\fB);\fP -\fBint pthread_attr_getstacksize(const pthread_attr_t *\fP\fIattr\fP\fB, size_t *\fP\fIstacksize\fP\fB);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -\fBpthread_attr_setstacksize\fP() 関数は、 -\fIattr\fP が参照するスレッド属性オブジェクトのスタックアドレス -属性を \fIstacksize\fP で指定された値に設定する。 - -スタックサイズ属性により、 -スレッド属性オブジェクト \fIattr\fP を使って作成されたスレッド -に割り当てられる最小サイズ (バイト単位) が決定される。 - -\fBpthread_attr_getstacksize\fP() は、 -スレッド属性オブジェクト \fIattr\fP のスタックアドレス属性を -\fIstacksize\fP が指すバッファーに入れて返す。 -.SH 返り値 -成功すると、これらの関数は 0 を返す。 -エラーの場合、0 以外のエラー番号を返す。 -.SH エラー -\fBpthread_attr_setstacksize\fP() は以下のエラーで失敗する場合がある。 -.TP -\fBEINVAL\fP -スタックサイズが \fBPTHREAD_STACK_MIN\fP (16384) バイト未満である。 -.PP -.\" e.g., MacOS -いくつかのシステムでは、 \fBpthread_attr_setstacksize\fP() は -\fIstacksize\fP がシステムのページサイズの倍数でない場合にも -エラー \fBEINVAL\fP で失敗する。 -.SH バージョン -これらの関数は glibc バージョン 2.1 以降で提供されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBpthread_attr_setstacksize\fP() と \fBpthread_attr_getstacksize\fP() -はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -新しいスレッドのデフォルトのスタックサイズの詳細については -\fBpthread_create\fP(3) を参照。 - -スレッドのスタックサイズは、スレッド作成時点では固定である。 -メインスレッドだけがスタックを動的に伸ばすことができる。 - -\fBpthread_attr_setstack\fP(3) 関数を使うと、 -アプリケーションは、スレッドが使用するスタックとして、 -呼び出し側で割り当てたスタックのサイズと場所を指定できる。 -.SH バグ -glibc 2.8 の時点では、指定された \fIstacksize\fP が \fBSTACK_ALIGN\fP -(ほとんどのアーキテクチャーでは 16 バイト) の倍数でない場合、 -\fIstacksize\fP は\fI小さくなる方向に\fPに丸められる。 -これは POSIX.1\-2001 に違反している。 -POSIX.1\-2001 では、割り当てらたスタックの大きさは -少なくとも \fIstacksize\fP バイトになると書かれている。 -.SH 例 -\fBpthread_create\fP(3) を参照。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_cancel.3 b/manual/LDP_man-pages/draft/man3/pthread_cancel.3 index bd265dbd..707e08c8 100644 --- a/manual/LDP_man-pages/draft/man3/pthread_cancel.3 +++ b/manual/LDP_man-pages/draft/man3/pthread_cancel.3 @@ -33,15 +33,15 @@ .\" all rights reserved. .\" Translated 2012-05-03, Akihiro MOTOKI .\" -.TH PTHREAD_CANCEL 3 2008\-11\-17 Linux "Linux Programmer's Manual" +.TH PTHREAD_CANCEL 3 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 pthread_cancel \- スレッドにキャンセル要求を送る .SH 書式 .nf \fB#include \fP - +.PP \fBint pthread_cancel(pthread_t \fP\fIthread\fP\fB);\fP -.sp +.PP \fI\-pthread\fP でコンパイルしてリンクする。 .fi .SH 説明 @@ -49,14 +49,14 @@ pthread_cancel \- スレッドにキャンセル要求を送る を送信する。対象のスレッドがキャンセル要求に反応するかどうか、いつ反応 するかは対象のスレッドの制御下にある 2 つの属性、cancelability \fIstate\fP と \fItype\fPにより決まる。 - +.PP あるスレッドの cancelability state は \fBpthread_setcancelstate\fP(3) で 設定され、\fIenabled\fP と \fIdisabled\fP のいずれとなる (\fIenabled\fP が新しい スレッドのデフォルト値である)。スレッドがキャンセルを無効にしていた場合、 キャンセル要求はそのスレッドがキャンセルを有効にするまでキューに入れら れたままになる。スレッドがキャンセルを有効にしていた場合、 cancelability type によって、いつキャンセルが発生するかが決まる。 - +.PP スレッドのキャンセル種別 (cancelability type) は \fBpthread_setcanceltype\fP(3) で設定され、\fIasynchronous\fP か \fIdeferred\fP のいずれかとなる(\fIdeferred\fP が新しいスレッドのデフォルト値である)。 @@ -67,7 +67,7 @@ cancelability type によって、いつキャンセルが発生するかが決 (cancellation point)\fP となっている関数を次に呼び出すまでキャンセルが 遅延される。取り消しポイントに設定されていたり設定 したりできる関数のリストは \fBpthreads\fP(7) に記載している。 - +.PP キャンセル要求が実行されると、 \fIthread\fP では以下のステップが (この順序で) 行われる。 .IP 1. 3 @@ -98,31 +98,43 @@ cancelability type によって、いつキャンセルが発生するかが決 .\" .SH VERSIONS .\" Available since glibc 2.0 ID が \fIthread\fP のスレッドが見つからなかった。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBpthread_cancel\fP() +T} Thread safety MT\-Safe +.TE +.sp 1 .SH 準拠 -POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008. .SH 注意 Linux では、キャンセルはシグナルを使って実装されている。NPTL スレッド実装では、 最初のリアルタイムシグナル (つまり、シグナル 32)がこのために使用される。 LinuxThreads では、リアルタイムシグナルが利用可能な場合は2 番目のリアルタイム シグナルが使用され、そうでない場合は \fBSIGUSR2\fP が使用される。 -.SH 例 +.SH EXAMPLES 以下のプログラムは、スレッドを一つ作成してから、そのスレッドをキャンセルする。 メインスレッドはキャンセルされたスレッドをジョインし、 キャンセルされたスレッドの終了ステータスが \fBPTHREAD_CANCELED\fP かどうかを 確認する。以下のシェルセッションはこのプログラムを実行した際の実行例である。 - +.PP .in +4n -.nf +.EX $ ./a.out thread_func(): started; cancellation disabled main(): sending cancellation request thread_func(): about to enable cancellation main(): thread was canceled -.fi +.EE .in .SS プログラムのソース \& -.nf +.EX #include #include #include @@ -194,7 +206,7 @@ main(void) printf("main(): thread wasn\(aqt canceled (shouldn\(aqt happen!)\en"); exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 .ad l .nh @@ -202,6 +214,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_cleanup_push.3 b/manual/LDP_man-pages/draft/man3/pthread_cleanup_push.3 index 015ff8b3..4b439534 100644 --- a/manual/LDP_man-pages/draft/man3/pthread_cleanup_push.3 +++ b/manual/LDP_man-pages/draft/man3/pthread_cleanup_push.3 @@ -33,18 +33,18 @@ .\" all rights reserved. .\" Translated 2012-06-04, Akihiro MOTOKI .\" -.TH PTHREAD_CLEANUP_PUSH 3 2008\-11\-24 Linux "Linux Programmer's Manual" +.TH PTHREAD_CLEANUP_PUSH 3 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 pthread_cleanup_push, pthread_cleanup_pop \- スレッドの キャンセルクリーンアップハンドラーの push/pop を行う .SH 書式 .nf \fB#include \fP - +.PP \fBvoid pthread_cleanup_push(void (*\fP\fIroutine\fP\fB)(void *),\fP \fB void *\fP\fIarg\fP\fB);\fP \fBvoid pthread_cleanup_pop(int \fP\fIexecute\fP\fB);\fP -.sp +.PP \fI\-pthread\fP でコンパイルしてリンクする。 .fi .SH 説明 @@ -53,15 +53,15 @@ pthread_cleanup_push, pthread_cleanup_pop \- スレッドの キャンセルされた場合 (や以下で説明する他の種々の状況において) 自動的に 実行される関数である。例えば、mutex のロック解除を行い、プロセス内の 他のスレッドが利用できるようにする関数などが考えられる。 - +.PP \fBpthread_cleanup_push\fP() 関数は、 \fIroutine\fP をクリーンアップ ハンドラーのスタックの一番上にプッシュする。 \fIroutine\fP が後で 起動される際には、 \fIarg\fP が関数の引き数と渡される。 - +.PP \fBpthread_cleanup_pop\fP() 関数は、クリーンアップハンドラーの スタックの一番上のルーチンを削除する。 \fIexecute\fP が 0 以外の場合にはそのルーチンを追加で実行する。 - +.PP キャンセルクリーンアップハンドラーは、以下に示す場合に スタックから取り出され実行される。 .IP 1. 3 @@ -85,7 +85,7 @@ POSIX.1 では、 \fBpthread_cleanup_push\fP() と \fBpthread_cleanup_pop\fP() なり、かつ文法的に同じネストレベル (nesting level) になることを保証 しなければならない。 (言い換えると、クリーンアップハンドラーは、コード の特定のセクションの実行の中でのみ設定するものであると言える。) - +.PP \fBlongjmp\fP(3) (\fBsiglongjmp\fP(3)) の呼び出しは、 \fBpthread_cleanup_push\fP() や \fBpthread_cleanup_pop\fP() の呼び出しが対と なる呼び出しがない状態で行われた場合には、どのような結果になるかは不定 @@ -100,22 +100,35 @@ POSIX.1 では、 \fBpthread_cleanup_push\fP() と \fBpthread_cleanup_pop\fP() .\" SH VERSIONS .\" Available since glibc 2.0 エラーはない。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lbw23 lb lb +l l l. +Interface Attribute Value +T{ +\fBpthread_cleanup_push\fP(), +\fBpthread_cleanup_pop\fP() +T} Thread safety MT\-Safe +.TE +.sp 1 .SH 準拠 -POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008. .SH 注意 Linux では、関数 \fBpthread_cleanup_push\fP() と \fBpthread_cleanup_pop\fP() は、それぞれ \(aq\fB{\fP\(aq と \(aq\fB}\fP\(aq を含むテキストに展開する マクロとして実装されている。このことは、これらの関数を対で呼び出した スコープ内で宣言された変数は、そのスコープの中でしか参照できない ということを意味している。 - +.PP .\" The text was actually added in the 2004 TC2 POSIX.1 には、括弧を含む \fBpthread_cleanup_push\fP() と \fBpthread_cleanup_pop\fP() のブロックをそのままにしたままで、 \fIreturn\fP, \fIbreak\fP, \fIcontinue\fP, \fIgoto\fP を使った場合の影響は 不定であると書かれている。 移植性が必要なアプリケーションではこれを行うのは避けるべきである。 -.SH 例 +.SH EXAMPLES 以下のプログラムは、このページで説明した関数の簡単な使用例を示すもので ある。このプログラムは \fBpthread_cleanup_push\fP() と \fBpthread_cleanup_pop\fP() で囲まれたループを実行するスレッドを作成する。 @@ -124,12 +137,12 @@ POSIX.1 には、括弧を含む \fBpthread_cleanup_push\fP() と つのスレッドにキャンセル要求を送ったり、もう一つのスレッドがループを 抜けて (\fIreturn\fP を呼び出して) 正常終了するようにグローバル変数を 設定したりする。 - +.PP 以下のシェルセッションでは、メインスレッドはもう一つのスレッドに キャンセル要求を送信する。 - +.PP .in +4n -.nf +.EX $ \fB./a.out\fP New thread started cnt = 0 @@ -137,51 +150,51 @@ cnt = 1 Canceling thread Called clean\-up handler Thread was canceled; cnt = 0 -.fi +.EE .in - +.PP 上記の実行例から、スレッドがキャンセルされ、 キャンセルクリーンアップハンドラーが呼び出され、 グローバル変数 \fIcnt\fP の値が 0 にリセットされていることが確認できる。 - +.PP 次の実行例では、メインプログラムはグローバル変数を設定して、 もう一つのスレッドが正常終了するようにしている。 - +.PP .in +4n -.nf +.EX $ \fB./a.out x\fP New thread started cnt = 0 cnt = 1 Thread terminated normally; cnt = 2 -.fi +.EE .in - +.PP 上記では、 (\fIcleanup_pop_arg\fP が 0 なので) クリーンアップハンドラーは 実行されておらず、その結果 \fIcnt\fP の値はリセットされていないことが 分かる。 - +.PP 次の実行例では、メインプログラムはグローバル変数を設定して、 もう一つのスレッドが正常終了するようにし、さらに \fIcleanup_pop_arg\fP に 0 以外の値を渡している。 - +.PP .in +4n -.nf +.EX $ \fB./a.out x 1\fP New thread started cnt = 0 cnt = 1 Called clean\-up handler Thread terminated normally; cnt = 0 -.fi +.EE .in - +.PP 上記では、スレッドはキャンセルされていないが、クリーンアップハンドラーが 実行されていないことが分かる。これは \fBpthread_cleanup_pop\fP() の引き数 に 0 以外を渡したからである。 .SS プログラムのソース \& -.nf +.EX #include #include #include @@ -262,11 +275,10 @@ main(int argc, char *argv[]) printf("Thread terminated normally; cnt = %d\en", cnt); exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_cleanup_push_defer_np.3 b/manual/LDP_man-pages/draft/man3/pthread_cleanup_push_defer_np.3 index 9d92fc57..85c845a0 100644 --- a/manual/LDP_man-pages/draft/man3/pthread_cleanup_push_defer_np.3 +++ b/manual/LDP_man-pages/draft/man3/pthread_cleanup_push_defer_np.3 @@ -33,25 +33,25 @@ .\" all rights reserved. .\" Translated 2012-06-04, Akihiro MOTOKI .\" -.TH PTHREAD_CLEANUP_PUSH_DEFER_NP 3 2014\-05\-28 Linux "Linux Programmer's Manual" +.TH PTHREAD_CLEANUP_PUSH_DEFER_NP 3 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 pthread_cleanup_push_defer_np, pthread_cleanup_pop_restore_np \- cancelability type を保持したままでスレッドのキャンセルクリーンアップハンドラーの push/pop を行う .SH 書式 .nf \fB#include \fP - +.PP \fBvoid pthread_cleanup_push_defer_np(void (*\fP\fIroutine\fP\fB)(void *),\fP \fB void *\fP\fIarg\fP\fB);\fP \fBvoid pthread_cleanup_pop_restore_np(int \fP\fIexecute\fP\fB);\fP .fi -.sp +.PP \fI\-pthread\fP を付けてコンパイルとリンクを行う。 -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP .ad l \fBpthread_cleanup_push_defer_np\fP(), \fBpthread_cleanup_pop_defer_np\fP(): .RS 4 @@ -61,7 +61,7 @@ _GNU_SOURCE .SH 説明 これらの関数は \fBpthread_cleanup_push\fP(3) と \fBpthread_cleanup_pop\fP(3) と同じだが、このページで説明する点が異なる。 - +.PP \fBpthread_cleanup_push\fP(3) と同様に、 \fBpthread_cleanup_push_defer_np\fP() は \fIroutine\fP をそのスレッドの クリーンアップハンドラーのスタックに追加する。これに加えて、 @@ -71,33 +71,33 @@ _GNU_SOURCE これにより、この関数が呼び出される前のスレッドの cancelability type が "asynchronous" であったとしても、キャンセルクリーンアップが行われること が保証される。 - +.PP \fBpthread_cleanup_pop\fP(3) と同様に、 \fBpthread_cleanup_pop_restore_np\fP() はそのスレッドのキャンセル クリーンアップハンドラーのスタックから一番上にあるクリーンアップハンドラー を取り出す。これに加えて、そのスレッドの cancelability type を、対応 する \fBpthread_cleanup_push_defer_np\fP() が呼ばれた時点の値に戻す。 - +.PP 呼び出し側では、これらの関数の呼び出しが同じ関数の中で対となり、かつ 文法的に同じネストレベル (nesting level) になることを保証しなければ ならない。 \fBpthread_cleanup_push\fP(3) で説明されている他の制限も 適用される。 - +.PP 以下の一連の呼び出し - +.PP .in +4n -.nf +.EX pthread_cleanup_push_defer_np(routine, arg); pthread_cleanup_pop_restore_np(execute); -.fi +.EE .in - +.PP と以下は等価である (但し、上の方がより簡潔で効率的である)。 - +.PP .\" As far as I can see, LinuxThreads reverses the two substeps .\" in the push and pop below. .in +4n -.nf +.EX int oldtype; pthread_cleanup_push(routine, arg); @@ -105,7 +105,7 @@ pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &oldtype); \&... pthread_setcanceltype(oldtype, NULL); pthread_cleanup_pop(execute); -.fi +.EE .in .\" SH VERSIONS .\" Available since glibc 2.0 @@ -117,6 +117,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_create.3 b/manual/LDP_man-pages/draft/man3/pthread_create.3 deleted file mode 100644 index 4af83a63..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_create.3 +++ /dev/null @@ -1,334 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-04, Akihiro MOTOKI -.\" -.TH PTHREAD_CREATE 3 2014\-05\-28 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_create \- 新しいスレッドを作成する -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_create(pthread_t *\fP\fIthread\fP\fB, const pthread_attr_t *\fP\fIattr\fP\fB,\fP -\fB void *(*\fP\fIstart_routine\fP\fB) (void *), void *\fP\fIarg\fP\fB);\fP -.fi -.sp -\fI\-pthread\fP を付けてコンパイルとリンクを行う。 -.SH 説明 -\fBpthread_create\fP() 関数は、呼び出したプロセス内に新しいスレッドを作成する。 -新しいスレッドの実行は、 \fIstart_routine\fP() を起動することで開始される。 -\fIstart_routine\fP() は引き数を一つだけ取り、 -\fIarg\fP が \fIstart_routine\fP() の引き数として渡される。 - -新しく作成されたスレッドは、以下のいずれかで終了する。 -.IP * 2 -スレッドが \fBpthread_exit\fP(3) を呼び出す。 -\fBpthread_exit\fP(3) を呼び出す際には終了ステータス値を指定する。 -この値は \fBpthread_join\fP(3) を呼び出した同じプロセス内の -別のスレッドで参照できる。 -.IP * -スレッドが \fIstart_routine\fP() から返る。これは、 -\fIreturn\fP 文に渡した値で \fBpthread_exit\fP(3) を呼び出すのと等価である。 -.IP * -スレッドがキャンセルされる (\fBpthread_cancel\fP(3) 参照)。 -.IP * -プロセス内のいずれかのスレッドで \fBexit\fP(3) が呼ばれるか、 -メインスレッドで \fImain\fP() 内で return が実行される。 -この場合は、プロセス内の全てのスレッドが終了される。 -.PP -\fIattr\fP 引き数は \fIpthread_attr_t\fP 構造体へのポインターであり、 -\fIpthread_attr_t\fP 構造体の内容を使用して、スレッド作成時に -新しいスレッドの属性が決定される。 -この構造体は \fBpthread_attr_init\fP(3) や関連の関数を使って初期化される。 -\fIattr\fP が NULL の場合、新しいスレッドはデフォルトの属性で作成される。 - -成功した場合は、 \fBpthread_create\fP() は返る前に新しいスレッドの ID を -\fIthread\fP が指すバッファーに格納する。この ID は、これ以降に他の -pthreads 関数の呼び出しでスレッドを参照するのに使用される。 - -新しいスレッドは、スレッドを作成したスレッドのシグナルマスク -(\fBpthread_sigmask\fP(3) 参照) のコピーを継承する。 -新しいスレッドの処理待ちシグナル (\fBsigpending\fP(2)) の集合は空となる。 -新しいスレッドはスレッドを作成したスレッドの代替シグナルスタック -(\fBsigaltstack\fP(2)) を継承しない。 - -新しいスレッドは呼び出したスレッドの浮動小数点環境 (\fBfenv\fP(3)) -を継承する。 - -.\" CLOCK_THREAD_CPUTIME_ID in clock_gettime(2) -新しいスレッドの CPU 時間時計の初期値は 0 である -(\fBpthread_getcpuclockid\fP(3) 参照)。 -.SS "Linux 固有の詳細" -新しいスレッドは、呼び出したスレッドの -ケーパビリティセット (\fBcapabilities\fP(7) 参照) と -CPU affinity マスク (\fBsched_setaffinity\fP(2) 参照) の -コピーをを継承しない。 -.SH 返り値 -成功すると、 \fBpthread_create\fP() は 0 を返す。 -エラーの場合は、エラー番号が返され、 \fI*thread\fP の内容は不定である。 -.SH エラー -.TP -\fBEAGAIN\fP -別のスレッドを作成するのに十分なリソースがない。 -.TP -\fBEAGAIN\fP -.\" NOTE! The following should match the description in fork(2) -システムで設定されたスレッド数の上限に達していた。 このエラーの原因となる上限値はいくつかある。 実ユーザー ID -当たりのプロセス数とスレッド数の上限である、ソフトリソース上限 \fBRLIMIT_NPROC\fP に達していた (\fBsetrlimit\fP(2) -で設定できる)。 カーネルのシステム全体のプロセスとスレッドの数の上限値である \fI/proc/sys/kernel/threads\-max\fP -が達していた (\fBproc\fP(5) 参照)。 PID の最大値 \fI/proc/sys/kernel/pid_max\fP に達していた -(\fBproc\fP(5) 参照)。 -.TP -\fBEINVAL\fP -\fIattr\fP で指定された設定が不正である。 -.TP -.\" FIXME . Test the following -\fBEPERM\fP -\fIattr\fP に指定されたスケジューリングポリシーとパラメーターを -設定する許可がない。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fBpthread_create\fP() が \fI*thread\fP で返すスレッド ID についての -詳しい情報は \fBpthread_self\fP(3) を参照のこと。 -リアルタイムスケジューリングポリシーが使用されない限り、 -\fBpthread_create\fP() の呼び出し後に、 -どのスレッドが\(em呼び出したスレッドか新しいスレッドか\(em -次に実行されるかは決まっていない。 - -スレッドは \fIjoin 可能\fPか \fIdetached (切り離された状態)\fP のどちらかに -することができる。スレッドが join 可能な場合、別のスレッドが -\fBpthread_join\fP(3) を使って終了したスレッドを待ち、終了ステータスを取得 -することができる。終了した join 可能なスレッドは join された場合にのみ、 -そのスレッドの最後に残ったリソースが解放されシステムに戻される。 -detached 状態のスレッドが終了すると、そのスレッドのリソースは自動的に -システムに戻される。detached 状態のスレッドを join して、その終了 -ステータスを取得することはできない。スレッドを detached 状態にするのは、 -その終了ステータスをアプリケーションが気にする必要がないある種の -デーモン (daemon) スレッドでは有用である。 -デフォルトでは、新しいスレッドは join 可能な状態で作成される。 -(\fBpthread_attr_setdetachstate\fP(3) を使って) \fIattr\fP でスレッドが -detached 状態で作成されるように設定されていない限り、join 可能な状態で -作成される。 - -.\" FIXME . Perhaps some of the following detail should be in -.\" a future pthread_attr_setstacksize(3) page. -Linux/x86\-32 では、新しいスレッドのデフォルトのスタックサイズは 2MB で -ある。NPTL スレッド実装の下では、\fIプログラム開始時の\fP \fBRLIMIT_STACK\fP -ソフトリソース上限が"unlimited" 以外の場合、その値が新しいスレッドのデ -フォルトのスタックサイズとなる。 -\fBpthread_attr_setstacksize\fP(3) を使って、スレッドを作成する際の -\fIattr\fP 引き数に明示的にスタックサイズ属性を設定することで、 -デフォルト値以外のスタックサイズを得ることができる。 -.SH バグ -廃止予定の LinuxThreads 実装では、プロセス内の各スレッドは異なる -プロセス ID を持つ。これは POSIX スレッドの規格に違反しており、 -他の多くの標準非準拠の点の原因になっている。 -\fBpthreads\fP(7) を参照のこと。 -.SH 例 -以下のプログラムは、 \fBpthread_create\fP() や -pthreads API の他のいろいろな関数の使用例を示している。 - -以下の実行例は、 NPTL スレッド実装が提供されているシステムでのもので、 -スタックサイズがデフォルト値の "stack size" リソース上限で指定される値 -になる。 - -.in +4n -.nf -$\fB ulimit \-s\fP -8192 # The stack size limit is 8 MB (0x800000 bytes) -$\fB ./a.out hola salut servus\fP -Thread 1: top of stack near 0xb7dd03b8; argv_string=hola -Thread 2: top of stack near 0xb75cf3b8; argv_string=salut -Thread 3: top of stack near 0xb6dce3b8; argv_string=servus -Joined with thread 1; returned value was HOLA -Joined with thread 2; returned value was SALUT -Joined with thread 3; returned value was SERVUS -.fi -.in - -次の実行例では、プログラム内で、作成されるスレッドに対して -(\fBpthread_attr_setstacksize\fP(3) を使って1MB のスタックサイズを -明示的に設定している。 - -.in +4n -.nf -$\fB ./a.out \-s 0x100000 hola salut servus\fP -Thread 1: top of stack near 0xb7d723b8; argv_string=hola -Thread 2: top of stack near 0xb7c713b8; argv_string=salut -Thread 3: top of stack near 0xb7b703b8; argv_string=servus -Joined with thread 1; returned value was HOLA -Joined with thread 2; returned value was SALUT -Joined with thread 3; returned value was SERVUS -.fi -.in -.SS プログラムのソース -\& -.nf -#include -#include -#include -#include -#include -#include -#include - -#define handle_error_en(en, msg) \e - do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0) - -#define handle_error(msg) \e - do { perror(msg); exit(EXIT_FAILURE); } while (0) - -struct thread_info { /* Used as argument to thread_start() */ - pthread_t thread_id; /* ID returned by pthread_create() */ - int thread_num; /* Application\-defined thread # */ - char *argv_string; /* From command\-line argument */ -}; - -/* Thread start function: display address near top of our stack, - and return upper\-cased copy of argv_string */ - -static void * -thread_start(void *arg) -{ - struct thread_info *tinfo = arg; - char *uargv, *p; - - printf("Thread %d: top of stack near %p; argv_string=%s\en", - tinfo\->thread_num, &p, tinfo\->argv_string); - - uargv = strdup(tinfo\->argv_string); - if (uargv == NULL) - handle_error("strdup"); - - for (p = uargv; *p != \(aq\e0\(aq; p++) - *p = toupper(*p); - - return uargv; -} - -int -main(int argc, char *argv[]) -{ - int s, tnum, opt, num_threads; - struct thread_info *tinfo; - pthread_attr_t attr; - int stack_size; - void *res; - - /* The "\-s" option specifies a stack size for our threads */ - - stack_size = \-1; - while ((opt = getopt(argc, argv, "s:")) != \-1) { - switch (opt) { - case \(aqs\(aq: - stack_size = strtoul(optarg, NULL, 0); - break; - - default: - fprintf(stderr, "Usage: %s [\-s stack\-size] arg...\en", - argv[0]); - exit(EXIT_FAILURE); - } - } - - num_threads = argc \- optind; - - /* Initialize thread creation attributes */ - - s = pthread_attr_init(&attr); - if (s != 0) - handle_error_en(s, "pthread_attr_init"); - - if (stack_size > 0) { - s = pthread_attr_setstacksize(&attr, stack_size); - if (s != 0) - handle_error_en(s, "pthread_attr_setstacksize"); - } - - /* Allocate memory for pthread_create() arguments */ - - tinfo = calloc(num_threads, sizeof(struct thread_info)); - if (tinfo == NULL) - handle_error("calloc"); - - /* Create one thread for each command\-line argument */ - - for (tnum = 0; tnum < num_threads; tnum++) { - tinfo[tnum].thread_num = tnum + 1; - tinfo[tnum].argv_string = argv[optind + tnum]; - - /* The pthread_create() call stores the thread ID into - corresponding element of tinfo[] */ - - s = pthread_create(&tinfo[tnum].thread_id, &attr, - &thread_start, &tinfo[tnum]); - if (s != 0) - handle_error_en(s, "pthread_create"); - } - - /* Destroy the thread attributes object, since it is no - longer needed */ - - s = pthread_attr_destroy(&attr); - if (s != 0) - handle_error_en(s, "pthread_attr_destroy"); - - /* Now join with each thread, and display its returned value */ - - for (tnum = 0; tnum < num_threads; tnum++) { - s = pthread_join(tinfo[tnum].thread_id, &res); - if (s != 0) - handle_error_en(s, "pthread_join"); - - printf("Joined with thread %d; returned value was %s\en", - tinfo[tnum].thread_num, (char *) res); - free(res); /* Free memory allocated by thread */ - } - - free(tinfo); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -.ad l -.nh -\fBgetrlimit\fP(2), \fBpthread_attr_init\fP(3), \fBpthread_cancel\fP(3), -\fBpthread_detach\fP(3), \fBpthread_equal\fP(3), \fBpthread_exit\fP(3), -\fBpthread_getattr_np\fP(3), \fBpthread_join\fP(3), \fBpthread_self\fP(3), -\fBpthreads\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_detach.3 b/manual/LDP_man-pages/draft/man3/pthread_detach.3 deleted file mode 100644 index 09336ca4..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_detach.3 +++ /dev/null @@ -1,96 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-04, Akihiro MOTOKI -.\" -.TH PTHREAD_DETACH 3 2008\-11\-27 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_detach \- スレッドを切り離す (detach する) -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_detach(pthread_t \fP\fIthread\fP\fB);\fP -.fi -.sp -\fI\-pthread\fP を付けてコンパイルとリンクを行う。 -.SH 説明 -\fBpthread_detach\fP() 関数は \fIthread\fP で識別されるスレッドに -detached (切り離された状態) という印を付ける。 -detached 状態のスレッドが終了すると、 -別のスレッドが終了されたスレッドを join しなくても、 -そのスレッドのリソースは自動的に解放されてシステムに戻される。 - -すでに detach 状態のスレッドを detach しようとした場合に -どのような結果となるかは規定されていない。 -.SH 返り値 -成功すると、\fBpthread_detach\fP() は 0 を返す。 -エラーの場合、エラー番号を返す。 -.SH エラー -.TP -\fBEINVAL\fP -\fIthread\fP が join 可能なスレッドではない。 -.TP -\fBESRCH\fP -ID が \fIthread\fP のスレッドが見つからなかった。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -いったんスレッドを detached 状態にすると、 -そのスレッドを \fBpthread_join\fP(3) で join したり、 -もう一度 join 可能にしたりすることはできない。 - -\fBpthread_attr_setdetachstate\fP(3) を使って -\fBpthread_create\fP(3) の \fIattr\fP 引き数の detached 属性を設定することで、 -新しいスレッドを detached 状態で作成することができる。 - -detached 属性は、スレッドが終了した際のシステムの動作を決めるだけである。 -プロセスが \fBexit\fP(3) を使って終了した場合に、そのスレッドが終了され -なくなるようなことはない (なお、メインスレッドが return した場合も -プロセスが \fBexit\fP(3) を使って終了した場合と全く同じである)。 - -アプリケーションが作成した各スレッドについて、そのスレッドが使用して -いるシステムリソースを解放できるように、\fBpthread_join\fP(3) か -\fBpthread_detach\fP() のどちらかを呼び出すべきである (ただし、プロセスが -終了するときには、全てのスレッドのリソースが解放される)。 -.SH 例 -以下の文は、呼び出したスレッド自身を detach する。 - - pthread_detach(pthread_self()); -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_equal.3 b/manual/LDP_man-pages/draft/man3/pthread_equal.3 deleted file mode 100644 index 80f9cbf3..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_equal.3 +++ /dev/null @@ -1,69 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-03, Akihiro MOTOKI -.\" -.TH PTHREAD_EQUAL 3 2014\-05\-23 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_equal \- スレッド ID を比較する -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_equal(pthread_t \fP\fIt1\fP\fB, pthread_t \fP\fIt2\fP\fB);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -\fBpthread_equal\fP() 関数は 2 つのスレッド識別子の比較を行う。 -.SH 返り値 -\fBpthread_equal\fP() は、2 つのスレッド ID が等しければ 0 以外の値を返し、 -そうでなければ 0 を返す。 -.SH エラー -この関数は常に成功する。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBpthread_equal\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fBpthread_equal\fP() 関数が必要なのは、 -スレッド ID はその内部構造を意識すべきではないためである。 -アプリケーションが 2 つの \fIpthread_t\fP の値を直接比較する場合、 -移植性を確保できる形で比較する方法はない。 -.SH 関連項目 -\fBpthread_create\fP(3), \fBpthread_self\fP(3), \fBpthreads\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_exit.3 b/manual/LDP_man-pages/draft/man3/pthread_exit.3 deleted file mode 100644 index 181dff7b..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_exit.3 +++ /dev/null @@ -1,105 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-04, Akihiro MOTOKI -.\" -.TH PTHREAD_EXIT 3 2014\-05\-23 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_exit \- 呼び出したスレッドを終了する -.SH 書式 -.nf -\fB#include \fP - -\fBvoid pthread_exit(void *\fP\fIretval\fP\fB);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -\fBpthread_exit\fP() 関数は、呼び出したスレッドを終了し、 -\fIretval\fP 経由で値を返す。 -この値は (そのスレッドが join 可能な場合に) \fBpthread_join\fP(3) を -呼び出した同じプロセス内の別のスレッドが参照できる値と同じである。 - -\fBpthread_cleanup_push\fP(3) で設定されたクリーンアップハンドラーのうち、 -まだ pop (取り出されていない) ハンドラーを (push されたのと逆の順序で) -取り出して実行する。そのスレッドがスレッド固有のデータを持っている -場合は、クリーンアップハンドラーが実行された後に、スレッド固有のデータ -に対応するデストラクタ (destructor) 関数が呼び出される (呼び出し順序 -は規定されていない)。 - -スレッドが終了する際に、プロセスの共有リソース (例えば、mutex、状態変数 -(condition variables)、セマフォ、ファイルディスクリプター)が解放される。 -\fBatexit\fP(3) を使って登録された関数は呼び出されない。 - -プロセスの最後のスレッドが終了すると、そのプロセスは、終了ステータス 0 -で \fBexit\fP(3) を呼び出した場合と全く同じように終了する。したがって、 -プロセスの共有リソースは解放され、\fBatexit\fP(3) を使って登録された関数 -が呼び出される。 -.SH 返り値 -この関数は呼び出し側には返らない。 -.SH エラー -この関数は常に成功する。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBpthread_exit\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -メインスレッド以外のスレッドの開始関数 (start function) がreturn を -行うと、暗黙のうちに \fBpthread_exit\fP() が呼び出され、 -関数の返り値がスレッドの終了ステータスとして使用される。 - -他のスレッドが実行を継続できるように、メインスレッドは \fBexit\fP(3) では -なく \fBpthread_exit\fP() を呼び出して終了すべきである。 - -\fIretval\fP が指す値は、呼び出したスレッドのスタックに置くべきではない。 -呼び出したスレッドが終了した後は、そのスタックの内容が不定となるから -である。 -.SH バグ -.\" Linux 2.6.27 -.\" FIXME . review a later kernel to see if this gets fixed -.\" http://thread.gmane.org/gmane.linux.kernel/611611 -.\" http://marc.info/?l=linux-kernel&m=122525468300823&w=2 -現在のところ、停止 (stop) されたスレッドグループを、すでに終了した -(dead) スレッドグループリーダーで \fBwait\fP(2) する場合の、 -カーネル実装の論理には制限がある。 -この制限は、すでにスレッドグループリーダーが \fBpthread_exit\fP() を -呼び出しているようなフォアグラウンドプロセスにストップシグナルが送信 -された場合に、端末がロックされてしまう、といった問題として表に見える -場合がある。 -.SH 関連項目 -\fBpthread_create\fP(3), \fBpthread_join\fP(3), \fBpthreads\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_getattr_np.3 b/manual/LDP_man-pages/draft/man3/pthread_getattr_np.3 index 43e46475..abd1034e 100644 --- a/manual/LDP_man-pages/draft/man3/pthread_getattr_np.3 +++ b/manual/LDP_man-pages/draft/man3/pthread_getattr_np.3 @@ -33,16 +33,16 @@ .\" all rights reserved. .\" Translated 2012-05-03, Akihiro MOTOKI .\" -.TH PTHREAD_GETATTR_NP 3 2010\-09\-10 Linux "Linux Programmer's Manual" +.TH PTHREAD_GETATTR_NP 3 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 pthread_getattr_np \- 作成されたスレッドの属性を取得する .SH 書式 .nf \fB#define _GNU_SOURCE\fP /* See feature_test_macros(7) */ \fB#include \fP - +.PP \fBint pthread_getattr_np(pthread_t \fP\fIthread\fP\fB, pthread_attr_t *\fP\fIattr\fP\fB);\fP -.sp +.PP \fI\-pthread\fP でコンパイルしてリンクする。 .fi .SH 説明 @@ -50,7 +50,7 @@ pthread_getattr_np \- 作成されたスレッドの属性を取得する \fIattr\fP が参照するスレッド属性オブジェクトを初期化し、 そのオブジェクトに実行中のスレッド \fIthread\fP の実際の属性値を 格納して返す。 - +.PP 返される属性値は、\fBpthread_create\fP(3) でスレッドを作成する際に 使われた\fIattr\fP オブジェクトで渡された属性値と異なる場合がある。 特に、以下の属性は異なる場合がある。 @@ -70,7 +70,7 @@ guard size. スタックアドレスが設定されていなかった場合、 返されたスレッド属性オブジェクトではスレッドの実装がそのスレッドに 割り当てた実際のスタックアドレスが報告される。 - +.PP \fBpthread_getattr_np\fP() が返したスレッド属性オブジェクトが 必要なくなった際には、 \fBpthread_attr_destroy\fP(3) を使って そのオブジェクトを破棄すべきである。 @@ -91,11 +91,24 @@ guard size. サポートされていない場合には \fBgetrlimit\fP(2) でエラーが発生する。 .SH バージョン この関数は glibc バージョン 2.2.3 以降で利用できる。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.ad l +.TS +allbox; +lbw20 lb lb +l l l. +Interface Attribute Value +T{ +\fBpthread_getattr_np\fP() +T} Thread safety MT\-Safe +.TE +.ad .SH 準拠 この関数は非標準の GNU による拡張である。 そのため、名前に "_np" (nonportable; 移植性がない) という接尾辞が 付いている。 -.SH 例 +.SH EXAMPLES 以下のプログラムは \fBpthread_getattr_np\fP() の使用例を示したものである。 このプログラムは、スレッドを作成し、それから \fBpthread_getattr_np\fP() を使ってそのスレッドの属性 guard size、 @@ -103,28 +116,28 @@ guard size. コマンドライン引き数での指定で、スレッドを作成する際に 上記の属性にデフォルト値以外の値を設定することができる。 下記のシェルのセッションはこのプログラムの使用例である。 - +.PP 最初の実行例は、デフォルトの属性でスレッドが作成されている (x86\-32 システム上で実行)。 - +.PP .in +4n -.nf -$\fB ulimit \-s\fP # No stack limit ==> default stack size is 2MB +.EX +$\fB ulimit \-s\fP # No stack limit ==> default stack size is 2 MB unlimited $\fB ./a.out\fP Attributes of created thread: Guard size = 4096 bytes Stack address = 0x40196000 (EOS = 0x40397000) Stack size = 0x201000 (2101248) bytes -.fi +.EE .in - +.PP 次の実行例では、guard size が指定された場合、 guard size はシステムのページサイズの倍数に切り上げられることが分かる (x86\-32 ではシステムのページサイズは 4096 バイトである)。 - +.PP .in +4n -.nf +.EX $\fB ./a.out \-g 4097\fP Thread attributes object after initializations: Guard size = 4097 bytes @@ -135,9 +148,8 @@ Attributes of created thread: Guard size = 8192 bytes Stack address = 0x40196000 (EOS = 0x40397000) Stack size = 0x201000 (2101248) bytes -.fi +.EE .in - .\".in +4n .\".nf .\"$ ./a.out \-s 0x8000 @@ -152,11 +164,12 @@ Attributes of created thread: .\" Stack size = 0x8000 (32768) bytes .\".fi .\".in +.PP 最後の実行例では、プログラムでスレッド用のスタックを手動で割り当てている。 この場合には、guard size 属性は無視される。 - +.PP .in +4n -.nf +.EX $\fB ./a.out \-g 4096 \-s 0x8000 \-a\fP Allocated thread stack at 0x804d000 @@ -169,11 +182,11 @@ Attributes of created thread: Guard size = 0 bytes Stack address = 0x804d000 (EOS = 0x8055000) Stack size = 0x8000 (32768) bytes -.fi +.EE .in .SS プログラムのソース \& -.nf +.EX #define _GNU_SOURCE /* To get pthread_getattr_np() declaration */ #include #include @@ -194,7 +207,7 @@ display_stack_related_attributes(pthread_attr_t *attr, char *prefix) s = pthread_attr_getguardsize(attr, &guard_size); if (s != 0) handle_error_en(s, "pthread_attr_getguardsize"); - printf("%sGuard size = %d bytes\en", prefix, guard_size); + printf("%sGuard size = %zu bytes\en", prefix, guard_size); s = pthread_attr_getstack(attr, &stack_addr, &stack_size); if (s != 0) @@ -203,7 +216,7 @@ display_stack_related_attributes(pthread_attr_t *attr, char *prefix) if (stack_size > 0) printf(" (EOS = %p)", (char *) stack_addr + stack_size); printf("\en"); - printf("%sStack size = 0x%x (%d) bytes\en", + printf("%sStack size = %#zx (%zu) bytes\en", prefix, stack_size, stack_size); } @@ -249,8 +262,8 @@ get_thread_attributes_from_cl(int argc, char *argv[], pthread_attr_t *attrp) { int s, opt, allocate_stack; - long stack_size, guard_size; - void *stack_addr; + size_t stack_size, guard_size; + void *stack_addr; pthread_attr_t *ret_attrp = NULL; /* Set to attrp if we initialize a thread attributes object */ allocate_stack = 0; @@ -336,7 +349,7 @@ main(int argc, char *argv[]) pause(); /* Terminates when other thread calls exit() */ } -.fi +.EE .SH 関連項目 .ad l .nh @@ -347,6 +360,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_getcpuclockid.3 b/manual/LDP_man-pages/draft/man3/pthread_getcpuclockid.3 deleted file mode 100644 index 812754a8..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_getcpuclockid.3 +++ /dev/null @@ -1,179 +0,0 @@ -.\" Copyright (c) 2009 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-03, Akihiro MOTOKI -.\" -.TH PTHREAD_GETCPUCLOCKID 3 2014\-05\-23 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_getcpuclockid \- スレッドの CPU 時間時計の ID を取得する -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP - -\fBint pthread_getcpuclockid(pthread_t \fP\fIthread\fP\fB, clockid_t *\fP\fIclock_id\fP\fB);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -.\" The clockid is constructed as follows: -.\" *clockid = CLOCK_THREAD_CPUTIME_ID | (pd->tid << CLOCK_IDFIELD_SIZE) -.\" where CLOCK_IDFIELD_SIZE is 3. -\fBpthread_getcpuclockid\fP() 関数は、 -スレッド \fIthread\fP の CPU 時間時計のクロック ID を返す。 -.SH 返り値 -成功すると、この関数は 0 を返す。 -エラーの場合、 0 以外のエラー番号を返す。 -.SH エラー -.TP -\fBENOENT\fP -.\" CLOCK_THREAD_CPUTIME_ID not defined -.\" -.\" Looking at nptl/pthread_getcpuclockid.c an ERANGE error would -.\" be possible if kernel thread IDs took more than 29 bits (which -.\" they currently cannot). -スレッド単位の CPU 時間時計はこのシステムではサポートされていない。 -.TP -\fBESRCH\fP -ID が \fIthread\fP のスレッドが見つからなかった。 -.SH バージョン -この関数は glibc バージョン 2.2 以降で利用できる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBpthread_getcpuclockid\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fIthread\fP が呼び出したスレッドを参照している場合、 -クロック ID \fBCLOCK_THREAD_CPUTIME_ID\fP が指定されていれば、 -\fBclock_gettime\fP(2) と \fBclock_settime\fP(2) が操作するのと同じ時計 -を参照する ID が返される。 -.SH 例 -以下のプログラムは、スレッドを作成し、それから -\fBclock_gettime\fP(2) を使ってプロセス全体の CPU 時間を取得し、 -\fBpthread_getcpuclockid\fP(3) を使って 2 つのスレッドが消費した -スレッド毎の CPU 時間を取得する。 -下記のシェルのセッションは実行例である。 - -.in +4n -.nf -$ \fB./a.out\fP -Main thread sleeping -Subthread starting infinite loop -Main thread consuming some CPU time... -Process total CPU time: 1.368 -Main thread CPU time: 0.376 -Subthread CPU time: 0.992 -.fi -.in -.SS プログラムのソース -\& -.nf -/* "\-lrt" でリンクする */ - -#include -#include -#include -#include -#include -#include -#include - -#define handle_error(msg) \e - do { perror(msg); exit(EXIT_FAILURE); } while (0) - -#define handle_error_en(en, msg) \e - do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0) - -static void * -thread_start(void *arg) -{ - printf("Subthread starting infinite loop\en"); - for (;;) - continue; -} - -static void -pclock(char *msg, clockid_t cid) -{ - struct timespec ts; - - printf("%s", msg); - if (clock_gettime(cid, &ts) == \-1) - handle_error("clock_gettime"); - printf("%4ld.%03ld\en", ts.tv_sec, ts.tv_nsec / 1000000); -} - -int -main(int argc, char *argv[]) -{ - pthread_t thread; - clockid_t cid; - int j, s; - - s = pthread_create(&thread, NULL, thread_start, NULL); - if (s != 0) - handle_error_en(s, "pthread_create"); - - printf("Main thread sleeping\en"); - sleep(1); - - printf("Main thread consuming some CPU time...\en"); - for (j = 0; j < 2000000; j++) - getppid(); - - pclock("Process total CPU time: ", CLOCK_PROCESS_CPUTIME_ID); - - s = pthread_getcpuclockid(pthread_self(), &cid); - if (s != 0) - handle_error_en(s, "pthread_getcpuclockid"); - pclock("Main thread CPU time: ", cid); - - /* The preceding 4 lines of code could have been replaced by: - pclock("Main thread CPU time: ", CLOCK_THREAD_CPUTIME_ID); */ - - s = pthread_getcpuclockid(thread, &cid); - if (s != 0) - handle_error_en(s, "pthread_getcpuclockid"); - pclock("Subthread CPU time: 1 ", cid); - - exit(EXIT_SUCCESS); /* Terminates both threads */ -} -.fi -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_join.3 b/manual/LDP_man-pages/draft/man3/pthread_join.3 deleted file mode 100644 index 4c2164a8..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_join.3 +++ /dev/null @@ -1,112 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-04, Akihiro MOTOKI -.\" -.TH PTHREAD_JOIN 3 2008\-11\-27 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_join \- 終了したスレッドを join する -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_join(pthread_t \fP\fIthread\fP\fB, void **\fP\fIretval\fP\fB);\fP -.fi -.sp -\fI\-pthread\fP を付けてコンパイルとリンクを行う。 -.SH 説明 -\fBpthread_join\fP() 関数は、\fIthread\fP で指定されたスレッドが -終了するのを待つ。そのスレッドがすでに終了している場合、 -\fBpthread_join\fP() はすぐに返る。 -\fIthread\fP で指定されたスレッドは join 可能でなければならない。 - -\fIretval\fP が NULL でない場合、 \fBpthread_join\fP() は対象スレッドの終了 -ステータス (すなわち、対象スレッドが \fBpthread_exit\fP(3) に渡した値) を -\fI*retval\fP が指す場所にコピーする。対象スレッドがキャンセルされた場合、 -\fI*retval\fP には \fBPTHREAD_CANCELED\fP が格納される。 - -複数のスレッドが同時に同じスレッドを join しようとした場合、その結果 -は不定である。\fBpthread_join\fP() を呼び出しているスレッドがキャンセル -された場合、対象スレッドは join 可能のままとなる (detached 状態には -ならない)。 -.SH 返り値 -成功すると、 \fBpthread_join\fP() は 0 を返す。 -エラーの場合、エラー番号を返す。 -.SH エラー -.TP -\fBEDEADLK\fP -.\" The following verified by testing on glibc 2.8/NPTL: -.\" The following verified by testing on glibc 2.8/NPTL: -デッドロックが検出された (例えば、二つのスレッドが互いに join しようと -した場合)、または \fIthread\fP に呼び出したスレッドが指定されている。 -.TP -\fBEINVAL\fP -\fIthread\fP が join 可能なスレッドではない。 -.TP -\fBEINVAL\fP -.\" POSIX.1-2001 does not specify this error case. -別のスレッドがすでにこのスレッドの join 待ちである。 -.TP -\fBESRCH\fP -ID が \fIthread\fP のスレッドが見つからなかった。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fBpthread_join\fP() の呼び出しが成功した場合は、 -呼び出し側には、対象スレッドが終了していることが保証される。 - -すでに join されたスレッドを join した場合の結果は不定である。 - -join 可能なスレッド (detached 状態でないスレッド) の join に失敗した場合、 -"ゾンビスレッド (zombie thread)" が生成される。 -各ゾンビスレッドはシステムリソースをいくらかは消費し、 -ゾンビスレッドがたくさん生成されてしまうと、 -新しいスレッド (やプロセス) がそれ以上作成できなくなってしまうので、 -このようなことが起きるのは避けること。 - -pthreads には、 \fIwaitpid(\-1,\ &status,\ 0)\fP、つまり -"終了されたスレッドのどれかを join する" といった機能はない。 -この機能が必要だと思うような場合には、おそらく -自分のアプリケーションの設計を考え直す必要があるだろう。 - -プロセス内の全てのスレッドは対等であり、 -どのスレッドでもプロセス内の他のスレッドを join できる。 -.SH 例 -\fBpthread_create\fP(3) を参照。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_kill.3 b/manual/LDP_man-pages/draft/man3/pthread_kill.3 deleted file mode 100644 index f5869da2..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_kill.3 +++ /dev/null @@ -1,93 +0,0 @@ -.\" Copyright (c) 2009 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-04, Akihiro MOTOKI -.\" -.TH PTHREAD_KILL 3 2014\-05\-13 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_kill \- スレッドにシグナルを送信する -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_kill(pthread_t \fP\fIthread\fP\fB, int \fP\fIsig\fP\fB);\fP -.fi -.sp -\fI\-pthread\fP を付けてコンパイルとリンクを行う。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBpthread_kill\fP(): -.RS 4 -_POSIX_C_SOURCE\ >=\ 199506L || _XOPEN_SOURCE\ >=\ 500 -.RE -.ad b -.SH 説明 -\fBpthread_kill\fP() 関数は、呼び出したスレッドと同じプロセスの -スレッド \fIthread\fP にシグナル \fIsig\fP を送信する。 -シグナルは非同期に \fIthread\fP へ直接送られる。 - -\fIsig\fP が 0 の場合、シグナルは送信されないが、エラーチェックだけは実行される。 -.SH 返り値 -成功すると、 \fBpthread_kill\fP() は 0 を返す。 -エラーの場合、エラー番号を返し、シグナルの送信は行わない。 -.SH エラー -.TP -\fBEINVAL\fP -無効なシグナルが指定された。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBpthread_kill\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2008. -.SH 注意 -シグナルの配送はプロセス全体で行われる。 -シグナルハンドラーが設定されている場合、 -そのハンドラーがスレッド \fIthread\fP で起動されるが、 -シグナルの配送が "stop", "continue", "terminate" のいずれかの場合、 -シグナルに対するアクションはプロセス全体に影響がある。 - -POSIX.1\-2008 では、 スレッドが終了した後にそのスレッド ID が使用されたことを検出した場合に、 \fBpthread_kill\fP() -はエラー \fBESRCH\fP を返すことを推奨されている。 glibc の実装では、無効なスレッド ID を検出できる場合にはこのエラーを返す。 しかし、 -POSIX では、 終了したスレッド ID を使おうとした場合の動作は不定であり、 \fBpthread_kill\fP() で無効なスレッド ID -を使おうとした場合には、 例えば、 セグメンテーションフォールトになる可能性もある点に注意すること。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_kill_other_threads_np.3 b/manual/LDP_man-pages/draft/man3/pthread_kill_other_threads_np.3 deleted file mode 100644 index 0649b3ef..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_kill_other_threads_np.3 +++ /dev/null @@ -1,78 +0,0 @@ -.\" Copyright (c) 2009 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-04, Akihiro MOTOKI -.\" -.TH PTHREAD_KILL_OTHER_THREADS_NP 3 2014\-05\-13 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_kill_other_threads_np \- プロセス内の他の全スレッドを終了する -.SH 書式 -.nf -\fB#include \fP - -\fBvoid pthread_kill_other_threads_np(void);\fP -.fi -.SH 説明 -.\" .SH VERSIONS -.\" Available since glibc 2.0 -\fBpthread_kill_other_threads_np\fP() は、 -LinuxThreads スレッド実装においてのみ効果がある。 -LinuxThreads スレッド実装では、この関数を呼び出すと -アプリケーション内の全てのスレッドがすぐに終了される。 -終了対象のスレッドの cancelability state と cancelability type は -無視され、それらのスレッドのクリーンアップハンドラーは呼び出されない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBpthread_kill_other_threads_np\fP() 関数はスレッドセーフである。 -.SH 準拠 -この関数は非標準の GNU による拡張である。 -そのため、名前に "_np" (nonportable; 移植性がない) という接尾辞が -付いている。 -.SH 注意 -\fBpthread_kill_other_threads_np\fP() は、 -スレッドが \fBexecve\fP(2) や同様の関数を呼び出す直前に -呼ばれることを目的として用意されている。 -この関数は、(廃止予定の) LinuxThreads スレッド実装における、 -\fBexecve\fP(2) の際にアプリケーションの他のスレッドが自動的に -終了されないという制限を解決するために設計された。 - -NPTL スレッド実装では、 \fBpthread_kill_other_threads_np\fP() は存在するが、 -何もしない(NPTL 実装は \fBexecve\fP(2) の際に適切な動作をするので、 -何もする必要がないということだ)。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_rwlockattr_setkind_np.3 b/manual/LDP_man-pages/draft/man3/pthread_rwlockattr_setkind_np.3 index bdde8180..2fcdc968 100644 --- a/manual/LDP_man-pages/draft/man3/pthread_rwlockattr_setkind_np.3 +++ b/manual/LDP_man-pages/draft/man3/pthread_rwlockattr_setkind_np.3 @@ -6,7 +6,7 @@ .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this -.\" manual under the conditions for verbat`im copying, provided that the +.\" 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. .\" @@ -27,26 +27,26 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH PTHREAD_RWLOCKATTR_SETKIND_NP 3 2014\-10\-15 "Linux Programmer's Manual" +.TH PTHREAD_RWLOCKATTR_SETKIND_NP 3 2020\-08\-13 "Linux Programmer's Manual" .SH 名前 pthread_rwlockattr_setkind_np, pthread_rwlockattr_getkind_np \- スレッドの読み書きロック属性オブジェクトの読み書きロック種別の設定、取得を行う .SH 書式 .nf \fB#include \fP - +.PP \fBint pthread_rwlockattr_setkind_np(pthread_rwlockattr_t *\fP\fIattr\fP\fB,\fP \fB int \fP\fIpref\fP\fB);\fP \fBint pthread_rwlockattr_getkind_np(const pthread_rwlockattr_t *\fP\fIattr\fP\fB,\fP \fB int *\fP\fIpref\fP\fB);\fP -.sp +.PP \fI\-pthread\fP でコンパイルしてリンクする。 -.sp +.PP .fi -.in -4n +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBpthread_rwlockattr_setkind_np\fP(), \fBpthread_rwlockattr_getkind_np\fP(): .br .RS 4 @@ -65,7 +65,33 @@ Specification では、 読み出し側がロックをかけようとした際 たとえ書き込み側が待っていたとしても、読み出し側が要求したロックを受け取ることを意味する。 読み出し側がいる限り、書き込み側は待つことになる。 .TP \fBPTHREAD_RWLOCK_PREFER_WRITER_NP\fP -これは \fBPTHREAD_RWLOCK_PREFER_READER_NP\fP の書き込みロック版である。 ただし「バグ」を参照のこと。 +.\" --- +.\" Here is the relevant wording: +.\" +.\" A thread may hold multiple concurrent read locks on rwlock (that is, +.\" successfully call the pthread_rwlock_rdlock() function n times). If +.\" so, the thread must perform matching unlocks (that is, it must call +.\" the pthread_rwlock_unlock() function n times). +.\" +.\" By making write-priority work correctly, I broke the above requirement, +.\" because I had no clue that recursive read locks are permissible. +.\" +.\" If a thread which holds a read lock tries to acquire another read lock, +.\" and now one or more writers is waiting for a write lock, then the algorithm +.\" will lead to an obvious deadlock. The reader will be suspended, waiting for +.\" the writers to acquire and release the lock, and the writers will be +.\" suspended waiting for every existing read lock to be released. +.\" --- +.\" https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_rwlock_rdlock.html +.\" https://sourceware.org/legacy-ml/libc-alpha/2000-01/msg00055.html +.\" https://sourceware.org/bugzilla/show_bug.cgi?id=7057 +This is intended as the write lock analog of +\fBPTHREAD_RWLOCK_PREFER_READER_NP\fP. This is ignored by glibc because the +POSIX requirement to support recursive read locks would cause this option to +create trivial deadlocks; instead use +\fBPTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP\fP which ensures the +application developer will not take recursive read locks thus avoiding +deadlocks. .TP \fBPTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP\fP ロック種別をこの値に設定すると、 読み出しロックが再帰的に行われない限りは、 書き込み側の待ちを避けることができる。 @@ -73,28 +99,21 @@ Specification では、 読み出し側がロックをかけようとした際 \fBpthread_rwlockattr_getkind_np\fP() 関数は、 \fIattr\fP が参照する読み書きロック属性オブジェクトのロック種別属性の値をポインター \fIpref\fP に入れて返す。 .SH 返り値 -成功すると、これらの関数は 0 を返す。 有効なポインター引き数が渡された場合、 \fBpthread_rwlockattr_getkind_np\fP() -は常に成功する。 エラーの場合、 \fBpthread_rwlockattr_setkind_np\fP() は 0 以外のエラー番号を返す。 +On success, these functions return 0. Given valid pointer arguments, +\fBpthread_rwlockattr_getkind_np\fP() always succeeds. On error, +\fBpthread_rwlockattr_setkind_np\fP() returns a nonzero error number. .SH エラー .TP \fBEINVAL\fP \fIpref\fP にサポート外の値が指定された。 -.SH バグ -.\" http://sourceware.org/bugzilla/show_bug.cgi?id=7057 -読み書きロック種別の値を \fBPTHREAD_RWLOCK_PREFER_WRITER_NP\fP に設定することは、 値を -\fBPTHREAD_RWLOCK_PREFER_READER_NP\fP に設定するのと同じ動作となる。 -読み出しスレッドがロックを保持する限り、書き込みロックを保持しているスレッドは停止することになる。 ロック種別を -\fBPTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP\fP に設定すると、 -書き込み側が動作できるようになるが、変数名から分かるように、 書き込み側はロックを再帰的に行うことはできない。 .SH バージョン 関数 \fBpthread_rwlockattr_getkind_np\fP() と \fBpthread_rwlockattr_setkind_np\fP() は glibc 2.1 で初めて登場した。 .SH 準拠 -これらの関数は非標準の GNU による拡張である。 そのため、名前に "_np" (non\-portable; 移植性がない) -という接尾辞が付いている。 +These functions are non\-standard GNU extensions; hence the suffix "_np" +(nonportable) in the names. .SH 関連項目 \fBpthreads\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_self.3 b/manual/LDP_man-pages/draft/man3/pthread_self.3 deleted file mode 100644 index 059b54de..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_self.3 +++ /dev/null @@ -1,84 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-04, Akihiro MOTOKI -.\" -.TH PTHREAD_SELF 3 2014\-05\-13 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_self \- 呼び出したスレッドの ID を取得する -.SH 書式 -.nf -\fB#include \fP - -\fBpthread_t pthread_self(void);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -\fBpthread_self\fP() 関数は、呼び出したスレッドの ID を返す。 -得られる ID は、このスレッドが作成された \fBpthread_create\fP(3) の -呼び出しで \fI*thread\fP で返されるのと同じ値である。 -.SH 返り値 -この関数は常に成功し、呼び出したスレッドの ID を返す。 -.SH エラー -この関数は常に成功する。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBpthread_self\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -POSIX.1 では、スレッド ID を表現するのに使用する型は、 -スレッド実装が完全に自由に選択してよいことになっている。 -例えば、スレッド ID を表現するのに数値型を使っても構造体を使ってもよい。 -そのため、移植性を確保しつつ、 C 言語の等価演算子 (\fB==\fP) を使って、 -\fIpthread_t\fP 型の変数の比較を行うことはできない。 -代わりに \fBpthread_equal\fP(3) を使うこと。 - -スレッド識別子はその内部構造を意識すべきではない。 -pthreads 関数以外でスレッド ID を利用しようとした場合、 -移植性がなくなり、どのような結果が得られるかも分からない。 - -スレッド ID の一意性が保証されるのは、あるプロセス内においてのみである。 -終了したスレッドが join されたり、 -切り離された (detached) スレッドが終了されたりした後は、 -そのスレッド ID は再利用されることがある。 - -\fBpthread_self\fP() が返すスレッド ID は、 -\fBgettid\fP(2) が返すカーネルスレッド ID とは違うものである。 -.SH 関連項目 -\fBpthread_create\fP(3), \fBpthread_equal\fP(3), \fBpthreads\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_setaffinity_np.3 b/manual/LDP_man-pages/draft/man3/pthread_setaffinity_np.3 deleted file mode 100644 index 6dd563aa..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_setaffinity_np.3 +++ /dev/null @@ -1,191 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-03, Akihiro MOTOKI -.\" -.TH PTHREAD_SETAFFINITY_NP 3 2014\-05\-23 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_setaffinity_np, pthread_getaffinity_np \- スレッドの -CPU affinity の設定/取得を行う -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* See feature_test_macros(7) */ -\fB#include \fP - -\fBint pthread_setaffinity_np(pthread_t \fP\fIthread\fP\fB, size_t \fP\fIcpusetsize\fP\fB,\fP -\fB const cpu_set_t *\fP\fIcpuset\fP\fB);\fP -\fBint pthread_getaffinity_np(pthread_t \fP\fIthread\fP\fB, size_t \fP\fIcpusetsize\fP\fB,\fP -\fB cpu_set_t *\fP\fIcpuset\fP\fB);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -\fBpthread_setaffinity_np\fP() 関数は、スレッド \fIthread\fP の CPU affinity -マスクに \fIcpuset\fP が指す CPU 集合を設定する。呼び出しが成功し、 -そのスレッドが現在 \fIcpuset\fP で指定された CPU 上でが実行されていない -場合は、スレッドは指定された CPU のいずれかに移動される。 - -\fBpthread_getaffinity_np\fP() 関数は、スレッド \fIthread\fP の CPU affinity -マスクを、\fIcpuset\fP が指すバッファーに入れて返す。 - -CPU affinity マスクの詳細については、 -\fBsched_setaffinity\fP(2) を参照してほしい。 -CPU 集合の操作や取得を行う際に利用できるマクロ群の説明は -\fBCPU_SET\fP(3) を参照してほしい。 - -引き数 \fIcpusetsize\fP は \fIcpuset\fP が指すバッファーの長さ (バイト単位) で -ある。通常は、この引き数には \fIsizeof(cpu_set_t)\fP を指定する -(\fBCPU_SET\fP(3) に書かれているマクロを使って CPU 集合を動的に -割り当てている場合には、別の値になることもある)。 -.SH 返り値 -成功すると、これらの関数は 0 を返す。 -エラーの場合、0 以外のエラー番号を返す。 -.SH エラー -.TP -\fBEFAULT\fP -指定されたメモリーアドレスが無効である。 -.TP -\fBEINVAL\fP -(\fBpthread_setaffinity_np\fP()) affinity ビットマスク \fImask\fP に、 -その時点でシステム上に物理的に存在して、かつそのスレッドに対して許可 -されているプロセッサが一つも含まれていない。 -スレッドに対してどのプロセッサの利用が許可されるかは、\fBcpuset\fP(7) で -説明されている "cpuset" 機構に適用される制限に基づいて決まる。 -.TP -\fBEINVAL\fP -.\" FIXME . ? -.\" Loic Domaigne commented: it seems that in the future the -.\" kernel developers want to make cpumask_t dynamic, so -.\" CONFIG_NR_CPUS might become obsolete in the future. -.\" cpumask_t -.\" The raw sched_getaffinity() system call returns the size (in bytes) -.\" of the cpumask_t type. -(\fBpthread_setaffinity_np\fP()) \fIcpuset\fP が、カーネルがサポートする CPU -集合に含まれない CPU を指定していた。(カーネルの設定オプション -\fBCONFIG_NR_CPUS\fP により、CPU 集合を表現するのに使われるカーネルの -データ型がサポートする CPU 集合の範囲が定義される。) -.TP -\fBEINVAL\fP -(\fBpthread_getaffinity_np\fP()) \fIcpusetsize\fP がカーネルが使用する -affinity マスクの大きさよりも小さい。 -.TP -\fBESRCH\fP -ID が \fIthread\fP のスレッドが見つからなかった。 -.SH バージョン -これらの関数は glibc バージョン 2.3.4 以降で提供されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBpthread_setaffinity_np\fP() と \fBpthread_getaffinity_np\fP() はスレッドセーフである。 -.SH 準拠 -これらの関数は非標準の GNU による拡張である。 -そのため、名前に "_np" (nonportable; 移植性がない) という接尾辞が -付いている。 -.SH 注意 -\fBpthread_setaffinity_np\fP() を呼び出した後、 -そのスレッドが実際に実行される CPU 集合は、 -\fIcpuset\fP 引き数で指定された集合と -システムに実際に存在する CPU 集合の共通部分になる。 -また、 \fBcpuset\fP(7) で説明されている "cpuset" 機構が使われている場合 -には、そのスレッドが実行される CPU 集合がシステムによってさらに制限 -される場合がある。そのスレッドが実行される実際の CPU 集合に対する -これらの制限は、カーネルにより黙って適用される。 - -これらの関数は、システムコール \fBsched_setaffinity\fP(2) と -\fBsched_getaffinity\fP(2) を使って実装されている。 - -(このバージョンだけであるが) glibc 2.3.3 では、 -これらの関数は \fIcpusetsize\fP 引き数を持っていなかった。 -内部で呼ばれるシステムコールに渡される CPU セットの大きさは -常に \fIsizeof(cpu_set_t)\fP であった。 - -\fBpthread_create\fP(3) で作成される新しいスレッドは、 -作成者の CPU affinity マスクを継承する。 -.SH 例 -以下のプログラムでは、メインスレッドは -\fBpthread_setaffinity_np\fP() を使って自分の CPU affinity マスクに -CPU 0 から 7 が含まれるように設定し -(システム上には 0 から 7 に対応する CPU が全て存在するとは限らない)、 -その後で \fBpthread_getaffinity_np\fP() を使って -スレッドに実際に設定された CPU affinity マスクを確認している。 - -.nf -#define _GNU_SOURCE -#include -#include -#include -#include - -#define handle_error_en(en, msg) \e - do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0) - -int -main(int argc, char *argv[]) -{ - int s, j; - cpu_set_t cpuset; - pthread_t thread; - - thread = pthread_self(); - - /* Set affinity mask to include CPUs 0 to 7 */ - - CPU_ZERO(&cpuset); - for (j = 0; j < 8; j++) - CPU_SET(j, &cpuset); - - s = pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset); - if (s != 0) - handle_error_en(s, "pthread_setaffinity_np"); - - /* Check the actual affinity mask assigned to the thread */ - - s = pthread_getaffinity_np(thread, sizeof(cpu_set_t), &cpuset); - if (s != 0) - handle_error_en(s, "pthread_getaffinity_np"); - - printf("Set returned by pthread_getaffinity_np() contained:\en"); - for (j = 0; j < CPU_SETSIZE; j++) - if (CPU_ISSET(j, &cpuset)) - printf(" CPU %d\en", j); - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBsched_setaffinity\fP(2), \fBpthread_attr_setaffinity_np\fP(3), -\fBpthread_self\fP(3), \fBsched_getcpu\fP(3), \fBcpuset\fP(7), \fBpthreads\fP(7), -\fBsched\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_setcancelstate.3 b/manual/LDP_man-pages/draft/man3/pthread_setcancelstate.3 deleted file mode 100644 index 8cfc97df..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_setcancelstate.3 +++ /dev/null @@ -1,149 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-31, Akihiro MOTOKI -.\" -.TH PTHREAD_SETCANCELSTATE 3 2014\-05\-13 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_setcancelstate, pthread_setcanceltype \- cancelability state と -cancelability type を設定する -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_setcancelstate(int \fP\fIstate\fP\fB, int *\fP\fIoldstate\fP\fB);\fP -\fBint pthread_setcanceltype(int \fP\fItype\fP\fB, int *\fP\fIoldtype\fP\fB);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -\fBpthread_setcancelstate\fP() は、呼び出したスレッドの -cancelability state に \fIstate\fP で指定された -値を設定する。変更前のスレッドの cancelability state は -\fIoldstate\fP が指すバッファーで返される。 -\fIstate\fP 引き数には以下の値のいずれか一つを指定しなければならない。 -.TP -\fBPTHREAD_CANCEL_ENABLE\fP -スレッドは取り消し可能 (cancelable) である。 -これが全ての新しく作成されるスレッドでのデフォルトの -cancelability state である。これには最初のスレッドも含まれる。 -スレッドの cancelability type により、取り消し可能なスレッドが -取り消し要求にいつ反応するかが決まる。 -.TP -\fBPTHREAD_CANCEL_DISABLE\fP -スレッドは取り消しできない。取り消し要求を受信した際は、 -取り消し可能に設定されるまでその要求はブロックされる。 -.PP -\fBpthread_setcanceltype\fP() は、呼び出したスレッドの -cancelability type に \fItype\fP で指定された値を設定する。 -変更前のスレッドの cancelability type は -\fIoldtype\fP が指すバッファーで返される。 -\fItype\fP 引き数には以下の値のいずれか一つを指定しなければならない。 -.TP -\fBPTHREAD_CANCEL_DEFERRED\fP -そのスレッドが次に取り消しポイント (cancellation point) の関数を -呼び出すまで取り消し要求が遅延される。これが全ての新しく作成される -スレッドでのデフォルトの cancelability type である。 -これには最初のスレッドも含まれる。 -.TP -\fBPTHREAD_CANCEL_ASYNCHRONOUS\fP -スレッドはいつでも取り消すことができる (通常はすぐにキャンセルされるが、 -システムがそのことを保証しているわけではない)。 -.PP -これらの関数により実行される「設定と取得」操作 (set\-and\-get operation) は、 -同じ関数を呼び出したプロセス内の他のスレッドがあっても、 -アトミックに行われる。 -.SH 返り値 -成功すると、これらの関数は 0 を返す。 -エラーの場合、0 以外のエラー番号を返す。 -.SH エラー -\fBpthread_setcancelstate\fP() は以下のエラーで失敗する場合がある。 -.TP -\fBEINVAL\fP -\fIstate\fP に無効な値が指定された。 -.PP -\fBpthread_setcanceltype\fP() は以下のエラーで失敗する場合がある。 -.TP -\fBEINVAL\fP -.\" .SH VERSIONS -.\" Available since glibc 2.0 -\fItype\fP に無効な値が指定された。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBpthread_setcancelstate\fP() と \fBpthread_setcanceltype\fP() はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -スレッドが取り消された場合に何が起こるかの詳細については -\fBpthread_cancel\fP(3) を参照。 - -取り消し要求により中断されてはならない重要なアクションをスレッドが -実行する場合、短い時間だけ cancelability を無効にするのは有用である。 -長い時間 cancelability を無効にしたり、長い時間停止 (block) される -可能性のある操作の前後で cancelability を無効にしたりする際には -注意すること。なぜなら、無効にしてしまうと、キャンセル要求に対して -スレッドが応答しない状態になってしまうからである。 -.SS 非同期キャンセル -cancelability type を \fBPTHREAD_CANCEL_ASYNCHRONOUS\fP -に設定して役に立つことはめったにない。スレッドは\fIいつでも\fPキャンセルすることができることになるので、スレッドが安全にリソースの確保 (例えば -\fBmalloc\fP(3) でメモリーを割り当てる) や -mutex、セマフォ、ロックなどの獲得を行うことができない。アプリケーションは、スレッドがキャンセルされる際に、これらのリソースがどのような状態にあるかを知る術はないので、リソースの確保が安全ではなくなる。つまり、キャンセルが起こったのが、リソースの確保前なのか、確保中なのか、確保後なのかが分からない。さらに、関数呼び出しの最中にキャンセルが発生すると、いくつかの内部データ構造 -(例えば、\fBmalloc\fP(3) 関連の関数が管理している未使用ブロックのリンクリスト) -が一貫性のない状態のままになってしまう可能性がある。その結果、クリーンアップハンドラーが役に立たないものになってしまう。 - -非同期で安全にキャンセルできる関数は \fIasync\-cancel\-safe functions\fP と呼ばれる。 POSIX.1\-2001 -で、非同期で安全にキャンセルできるように求められている関数は \fBpthread_cancel\fP(3), -\fBpthread_setcancelstate\fP(), \fBpthread_setcanceltype\fP() だけである。 -一般的には、それ以外のライブラリ関数は、非同期にキャンセルできるスレッドから安全に呼び出すことはできない。 - -非同期でのキャンセルが有効な数少ない状況としては、純粋に計算だけを行うループに入っているスレッドをキャンセルするといった場面がある。 -.SS 移植性に関する注意 -.\" It looks like at least Solaris, FreeBSD and Tru64 support this. -Linux のスレッド実装では、 \fBpthread_setcancelstate\fP() の \fIoldstate\fP -引き数に NULL を指定することを認めている。 NULL が指定された場合、 -変更前の cancelability state の情報が呼び出し側に返されない。 -他の多くの実装でも \fIoldstate\fP 引き数に NULL を指定することを認めて -いるが、 POSIX.1\-2001 ではこの点については規定されていない。 -したがって、移植性が必要なアプリケーションでは常に \fIoldstate\fP に -NULL 以外の値を指定するようにすべきである。 -\fBpthread_setcanceltype\fP() の \fIoldtype\fP 引き数についても、 -全く同じことが言える。 -.SH 例 -\fBpthread_cancel\fP(3) を参照。 -.SH 関連項目 -\fBpthread_cancel\fP(3), \fBpthread_cleanup_push\fP(3), \fBpthread_testcancel\fP(3), -\fBpthreads\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_setconcurrency.3 b/manual/LDP_man-pages/draft/man3/pthread_setconcurrency.3 deleted file mode 100644 index 85918abb..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_setconcurrency.3 +++ /dev/null @@ -1,105 +0,0 @@ -.\" Copyright (c) 2009 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-31, Akihiro MOTOKI -.\" -.TH PTHREAD_SETCONCURRENCY 3 2014\-05\-23 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_setconcurrency, pthread_getconcurrency \- 並列処理レベルの設定/取得を行う -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_setconcurrency(int \fP\fInew_level\fP\fB);\fP -\fBint pthread_getconcurrency(void);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -\fBpthread_setconcurrency\fP() 関数は、アプリケーションが希望する -並列処理レベル (concurrency level) をスレッド実装に通知する。 -希望する並列処理レベルは \fInew_level\fP で指定する。 -スレッド実装はこの情報をヒントとしてのみ利用する。 -POSIX.1 では、 \fBpthread_setconcurrency\fP() の呼び出した結果、 -どのような並列度になるべきかは規定されていない。 - -\fInew_level\fP に 0 を指定すると、スレッド実装は並列処理レベルを -実装側で適切とみなしたレベルに設定するようになる。 - -\fBpthread_getconcurrency\fP() は、このプロセスの concurrency level -の現在値を返す。 -.SH 返り値 -成功すると、 \fBpthread_setconcurrency\fP() は 0 を返す。 -エラーの場合、 0 以外のエラー番号を返す。 - -\fBpthread_getconcurrency\fP() は常に成功し、最後の -\fBpthread_getconcurrency\fP() の呼び出しで設定された -concurrency level を返す。 \fBpthread_getconcurrency\fP() が -それまでに一度も呼び出されていない場合は 0 が返る。 -.SH エラー -\fBpthread_setconcurrency\fP() は以下のエラーで失敗する場合がある。 -.TP -\fBEINVAL\fP -\fInew_level\fP が負である。 -.PP -POSIX.1\-2001 には、エラー \fBEAGAIN\fP も記載されている -(「\fInew_level\fP に指定された値を適用すると、システムリソースが -超過してしまう」)。 -.SH バージョン -これらの関数は glibc バージョン 2.1 以降で利用できる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBpthread_setconcurrency\fP() と \fBpthread_getconcurrency\fP() はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -デフォルトの concurrency level は 0 である。 - -並列処理レベルが意味を持つのは M:N スレッド実装の場合のみである。 -M:N スレッド実装では、ある瞬間において、あるプロセスのユーザーレベルスレッ -ドの集合のサブ集合が、そのサブ集合のサイズよりも少ない数のカーネルの -スケジューリング実体 (kernel\-scheduling entity) に結び付けられる。 -並列処理レベルを設定すると、そのアプリケーションの効率的な実行に必要な -カーネルのスケジューリング実体の数のヒントを、アプリケーションはシステ -ムに伝えることができる。 - -LinuxThreads と NPTL のどちらも 1:1 スレッド実装であり、 -並列処理レベルを設定しても何の意味もない。 -言い換えると、 Linux では、これらの関数は、 -他のシステムとの互換性のためだけに存在し、 -プログラムの実行には何の影響も与えないということである。 -.SH 関連項目 -\fBpthread_attr_setscope\fP(3), \fBpthreads\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index 44a5b568..8f0dc050 100644 --- a/manual/LDP_man-pages/draft/man3/pthread_setname_np.3 +++ b/manual/LDP_man-pages/draft/man3/pthread_setname_np.3 @@ -34,7 +34,7 @@ .\" Translated 2013-05-06, Akihiro MOTOKI .\" Updated 2013-07-17, Akihiro MOTOKI .\" -.TH PTHREAD_SETNAME_NP 3 2014\-05\-28 Linux "Linux Programmer's Manual" +.TH PTHREAD_SETNAME_NP 3 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 pthread_setname_np, pthread_getname_np \- スレッド名の設定/取得を行う .SH 書式 @@ -45,7 +45,7 @@ pthread_setname_np, pthread_getname_np \- スレッド名の設定/取得を行 \fBint pthread_getname_np(pthread_t \fP\fIthread\fP\fB,\fP \fB char *\fP\fIname\fP\fB, size_t \fP\fIlen\fP\fB);\fP .fi -.sp +.PP \fI\-pthread\fP を付けてコンパイルとリンクを行う。 .SH 説明 デフォルトでは、 \fBpthread_create\fP() で作成されたすべてのスレッドはプログラム名を継承する。 @@ -53,7 +53,7 @@ pthread_setname_np, pthread_getname_np \- スレッド名の設定/取得を行 スレッド固有の名前はマルチスレッドアプリケーションのデバッグに便利である。 スレッド名は意味のある C 言語の文字列である。 その長さは 16 文字に限定されており、 終端のヌルバイト (\(aq\e0\(aq) も 16 文字に含まれる。 \fIthread\fP 引き数で名前を変更するスレッドを指定する。 \fIname\fP には新しい名前を指定する。 - +.PP \fBpthread_getname_np\fP() 関数を使うと、 スレッド名を取得することができる。 \fIthread\fP 引き数は名前を取得するスレッドを指定する。 バッファー \fIname\fP はスレッド名を返すのに使用される。 \fIlen\fP には \fIname\fP の大きさをバイトで指定する。 \fIname\fP で指定されたバッファーの大きさは最低でも 16 文字とすべきである。 @@ -76,27 +76,41 @@ pthread_setname_np, pthread_getname_np \- スレッド名の設定/取得を行 で説明されているエラーのいずれかで失敗する。 .SH バージョン これらの関数は glibc バージョン 2.12 で初めて登場した。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lbw21 lb lb +l l l. +Interface Attribute Value +T{ +\fBpthread_setname_np\fP(), +\fBpthread_getname_np\fP() +T} Thread safety MT\-Safe +.TE +.sp 1 .SH 準拠 これらの関数は非標準の GNU による拡張である。 +そのため、名前に "_np" (nonportable; 移植性がない) という接尾辞が +付いている。 .SH 注意 \fBpthread_setname_np\fP() は内部で \fI/proc\fP ファイルシステムのスレッド固有の \fIcomm\fP ファイル (\fI/proc/self/task/[tid]/comm\fP) に書き込みを行う。 \fBpthread_getname_np\fP() はこのファイルから読み出しを行う。 -.SH 例 -.PP +.SH EXAMPLES 以下のプログラムは、 \fBpthread_setname_np\fP() と \fBpthread_getname_np\fP() の使用例を示している。 - +.PP 以下のシェルセッションは、このプログラムの実行例である。 +.PP .in +4n -.nf - +.EX $\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 +\fB\(haZ\fP # Suspend the program [1]+ Stopped ./a.out -$ \fBps H \-C a.out \-o 'pid tid cmd comm'\fP +$ \fBps H \-C a.out \-o \(aqpid tid cmd comm\(aq\fP PID TID CMD COMMAND 5990 5990 ./a.out a.out 5990 5991 ./a.out THREADFOO @@ -104,11 +118,11 @@ $ \fBcat /proc/5990/task/5990/comm\fP a.out $ \fBcat /proc/5990/task/5991/comm\fP THREADFOO -.fi +.EE .in .SS プログラムのソース \& -.nf +.EX #define _GNU_SOURCE #include #include @@ -120,8 +134,8 @@ THREADFOO #define NAMELEN 16 #define errExitEN(en, msg) \e - do { errno = en; perror(msg); exit(EXIT_FAILURE); \e - } while (0) + do { errno = en; perror(msg); \e + exit(EXIT_FAILURE); } while (0) static void * threadfunc(void *parm) @@ -165,12 +179,11 @@ main(int argc, char **argv) printf("Done\en"); exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 .ad l .nh \fBprctl\fP(2), \fBpthread_create\fP(3), \fBpthreads\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_setschedparam.3 b/manual/LDP_man-pages/draft/man3/pthread_setschedparam.3 index 0d09a4b8..a149aeda 100644 --- a/manual/LDP_man-pages/draft/man3/pthread_setschedparam.3 +++ b/manual/LDP_man-pages/draft/man3/pthread_setschedparam.3 @@ -33,45 +33,45 @@ .\" all rights reserved. .\" Translated 2012-05-04, Akihiro MOTOKI .\" -.TH PTHREAD_SETSCHEDPARAM 3 2014\-12\-31 Linux "Linux Programmer's Manual" +.TH PTHREAD_SETSCHEDPARAM 3 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 pthread_setschedparam, pthread_getschedparam \- スレッドの スケジューリングポリシーとパラメーターを設定/取得する .SH 書式 .nf \fB#include \fP - +.PP \fBint pthread_setschedparam(pthread_t \fP\fIthread\fP\fB, int \fP\fIpolicy\fP\fB,\fP \fB const struct sched_param *\fP\fIparam\fP\fB);\fP \fBint pthread_getschedparam(pthread_t \fP\fIthread\fP\fB, int *\fP\fIpolicy\fP\fB,\fP \fB struct sched_param *\fP\fIparam\fP\fB);\fP -.sp +.PP \fI\-pthread\fP でコンパイルしてリンクする。 .fi .SH 説明 \fBpthread_setschedparam\fP() 関数は、スレッド \fIthread\fP の スケジューリングポリシーとスケジューリングパラメーターを設定する。 - +.PP .\" FIXME . pthread_setschedparam() places no restriction on the policy, .\" but pthread_attr_setschedpolicy() restricts policy to RR/FIFO/OTHER .\" http://sourceware.org/bugzilla/show_bug.cgi?id=7013 \fIpolicy\fP は \fIthread\fP の新しいスケジューリングポリシーを指定する。 \fIpolicy\fP に指定できる値とその意味は \fBsched\fP(7) で説明されている。 - +.PP \fIparam\fP が指す構造体は \fIthread\fP の新しいスケジューリングパラメーターを 指定する。スケジューリングパラメーターは以下の構造体で管理される。 - +.PP .in +4n -.nf +.EX struct sched_param { int sched_priority; /* Scheduling priority */ }; -.fi +.EE .in - +.PP 見て分かる通り、サポートされているスケジューリングパラメーターは一つだけである。各スケジューリングポリシーで許可されるスケジューリング優先度の詳細については、\fBsched\fP(7) を参照のこと。 - +.PP .\" FIXME . nptl/pthread_setschedparam.c has the following .\" /* If the thread should have higher priority because of some .\" PTHREAD_PRIO_PROTECT mutexes it holds, adjust the priority. */ @@ -110,22 +110,31 @@ ID が \fIthread\fP のスレッドが見つからなかった。 .PP .\" .SH VERSIONS .\" Available since glibc 2.0 -POSIX.1\-2001 では、 \fBpthread_setschedparam\fP() に関して -エラー \fBENOTSUP\fP ("サポートされていない値をスケジューリングポリシーや -パラメーターに設定しようとした") も追加で規定されている。 +POSIX.1 also documents an \fBENOTSUP\fP ("attempt was made to set the policy or +scheduling parameters to an unsupported value") error for +\fBpthread_setschedparam\fP(). .SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBpthread_setschedparam\fP() と \fBpthread_getschedparam\fP() はスレッドセーフである。 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lbw24 lb lb +l l l. +Interface Attribute Value +T{ +\fBpthread_setschedparam\fP(), +\fBpthread_getschedparam\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 -POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008. .SH 注意 スレッドのスケジューリングポリシーや優先度を変更するために必要な許可や変更した場合の影響、および各スケジューリングポリシーで認められる優先度の範囲の詳細については、 \fBsched\fP(7) を参照。 -.SH 例 +.SH EXAMPLES 以下のプログラムは \fBpthread_setschedparam\fP() と \fBpthread_getschedparam\fP() やスケジューリングに関連する pthreads の 他のいろいろな関数の使用例を示すものである。 - +.PP 以下の実行例では、メインスレッドは、自分のスケジューリングポリシーを 優先度 10 の \fBSCHED_FIFO\fP を設定し、スレッド属性オブジェクトを スケジューリングポリシー属性 \fBSCHED_RR\fP とスケジューリング優先度 @@ -137,9 +146,9 @@ POSIX.1\-2001. オブジェクトからスケジューリング属性を取得して使うことを意味する。 それから、このスレッド属性オブジェクトを使ってスレッドを作成し、 作成したスレッドのスケジューリングポリシーと優先度を表示する。 +.PP .in +4n -.nf - +.EX $ \fBsu\fP # Need privilege to set real\-time scheduling policies Password: # \fB./a.out \-mf10 \-ar20 \-i e\fP @@ -152,21 +161,21 @@ Scheduler settings in \(aqattr\(aq Scheduler attributes of new thread policy=SCHED_RR, priority=20 -.fi +.EE .in - +.PP 上記の出力では、スケジューリングポリシーと優先度がスレッド属性 オブジェクトで指定された値から取られていることが分かる。 - +.PP 次の実行例は前のものと同じだが、 inherit scheduler 属性が \fBPTHREAD_INHERIT_SCHED\fP に設定される点が異なる。 \fBPTHREAD_INHERIT_SCHED\fP は、そのスレッド属性オブジェクトを使って作成 されたスレッドは、スレッド属性オブジェクトからスケジューリング属性を 無視し、代わりに呼び出したスレッドからスケジューリング属性を取得する ことを意味する。 - +.PP .in +4n -.nf +.EX # \fB./a.out \-mf10 \-ar20 \-i i\fP Scheduler settings of main thread policy=SCHED_FIFO, priority=10 @@ -177,19 +186,19 @@ Scheduler settings in \(aqattr\(aq Scheduler attributes of new thread policy=SCHED_FIFO, priority=10 -.fi +.EE .in - +.PP 上記の出力では、スケジューリングポリシーと優先度が、 スレッド属性オブジェクトからではなく、 スレッドを作成したスレッドから取れれていることが分かる。 - +.PP なお、 \fI\-i\ i\fP を省略した場合でも、 \fBPTHREAD_INHERIT_SCHED\fP が inherit scheduler 属性のデフォルト値なので、 出力は同じになる。 .SS プログラムのソース \& -.nf +.EX /* pthreads_sched_test.c */ #include @@ -395,7 +404,7 @@ main(int argc, char *argv[]) exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 .ad l .nh @@ -404,6 +413,5 @@ main(int argc, char *argv[]) \fBpthread_attr_setschedpolicy\fP(3), \fBpthread_create\fP(3), \fBpthread_self\fP(3), \fBpthread_setschedprio\fP(3), \fBpthreads\fP(7), \fBsched\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_setschedprio.3 b/manual/LDP_man-pages/draft/man3/pthread_setschedprio.3 deleted file mode 100644 index b0eba3c4..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_setschedprio.3 +++ /dev/null @@ -1,97 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-04, Akihiro MOTOKI -.\" -.TH PTHREAD_SETSCHEDPRIO 3 2014\-05\-28 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_setschedprio \- スレッドのスケジューリング優先度を設定する -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_setschedprio(pthread_t \fP\fIthread\fP\fB, int \fP\fIprio\fP\fB);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -.\" FIXME . nptl/pthread_setschedprio.c has the following -.\" /* If the thread should have higher priority because of some -.\" PTHREAD_PRIO_PROTECT mutexes it holds, adjust the priority. */ -.\" Eventually (perhaps after writing the mutexattr pages), we -.\" may want to add something on the topic to this page. -.\" nptl/pthread_setschedparam.c has a similar case. -\fBpthread_setschedprio\fP() 関数は、スレッド \fIthread\fP のスケジューリング -優先度に \fIprio\fP で指定された値を設定する -(一方、\fBpthread_setschedparam\fP(3) はスレッドのスケジューリングポリシー -と優先度の両方を変更する)。 -.SH 返り値 -成功すると、この関数は 0 を返す。 -エラーの場合、0 以外のエラー番号を返す。 -\fBpthread_setschedprio\fP() が失敗した場合、 \fIthread\fP の -スケジューリング優先度は変更されない。 -.SH エラー -.TP -\fBEINVAL\fP -指定されたスレッドのスケジューリングポリシーでは、 \fIprio\fP は無効である。 -.TP -\fBEPERM\fP -呼び出し側が、指定された優先度を設定するのに必要な特権を持っていない。 -.TP -\fBESRCH\fP -ID が \fIthread\fP のスレッドが見つからなかった。 -.PP -POSIX.1\-2001 では、 \fBpthread_setschedprio\fP() に関して -エラー \fBENOTSUP\fP ("サポートされていない値を優先度 -に設定しようとした") も追加で規定されている。 -.SH バージョン -この関数は glibc バージョン 2.3.4 以降で利用できる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBpthread_setschedprio\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -スレッドのスケジューリング優先度を変更するために必要な許可や変更した場合の影響、および各スケジューリングポリシーで認められる優先度の範囲の詳細については、 -\fBsched\fP(7) を参照。 -.SH 関連項目 -.ad l -.nh -\fBgetrlimit\fP(2), \fBsched_get_priority_min\fP(2), \fBpthread_attr_init\fP(3), -\fBpthread_attr_setinheritsched\fP(3), \fBpthread_attr_setschedparam\fP(3), -\fBpthread_attr_setschedpolicy\fP(3), \fBpthread_create\fP(3), \fBpthread_self\fP(3), -\fBpthread_setschedparam\fP(3), \fBpthreads\fP(7), \fBsched\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_sigmask.3 b/manual/LDP_man-pages/draft/man3/pthread_sigmask.3 deleted file mode 100644 index f08fc5c8..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_sigmask.3 +++ /dev/null @@ -1,157 +0,0 @@ -.\" Copyright (c) 2009 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-04, Akihiro MOTOKI -.\" -.TH PTHREAD_SIGMASK 3 2014\-05\-19 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_sigmask \- 禁止するシグナルマスクの確認と変更を行う -.SH 書式 -.nf -\fB#include \fP - -\fBint pthread_sigmask(int \fP\fIhow\fP\fB, const sigset_t *\fP\fIset\fP\fB, sigset_t *\fP\fIoldset\fP\fB);\fP -.fi -.sp -\fI\-pthread\fP を付けてコンパイルとリンクを行う。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBpthread_sigmask\fP(): -.RS 4 -_POSIX_C_SOURCE\ >=\ 199506L || _XOPEN_SOURCE\ >=\ 500 -.RE -.ad b -.SH 説明 -\fBpthread_sigmask\fP() 関数は \fBsigprocmask\fP(2) と全く同様だが、 -マルチスレッドプログラムでの利用が POSIX.1\-2001 で明示的に規定されて -いる点が異なる。他の違いはこのマニュアルページで説明する。 - -この関数の引き数と動作の説明は \fBsigprocmask\fP(2) を参照。 -.SH 返り値 -成功すると、 \fBpthread_sigmask\fP() は 0 を返す。 -エラーの場合、エラー番号を返す。 -.SH エラー -\fBsigprocmask\fP(2) を参照。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBpthread_sigmask\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -新しいスレッドは、スレッドを作成したスレッドのシグナルマスクのコピーを -継承する。 -.SH 例 -以下のプログラムは、メインスレッドでシグナルのいくつかを禁止 (block) -するように設定を行い、 \fBsigwait\fP(3) 経由でそれらのシグナルを集める -専用のスレッドを作成する。 -下記のシェルのセッションはその利用例を示したものである。 - -.in +4n -.nf -$\fB ./a.out &\fP -[1] 5423 -$\fB kill \-QUIT %1\fP -Signal handling thread got signal 3 -$\fB kill \-USR1 %1\fP -Signal handling thread got signal 10 -$\fB kill \-TERM %1\fP -[1]+ Terminated ./a.out -.fi -.in -.SS プログラムのソース -\& -.nf -#include -#include -#include -#include -#include -#include - -/* Simple error handling functions */ - -#define handle_error_en(en, msg) \e - do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0) - -static void * -sig_thread(void *arg) -{ - sigset_t *set = arg; - int s, sig; - - for (;;) { - s = sigwait(set, &sig); - if (s != 0) - handle_error_en(s, "sigwait"); - printf("Signal handling thread got signal %d\en", sig); - } -} - -int -main(int argc, char *argv[]) -{ - pthread_t thread; - sigset_t set; - int s; - - /* Block SIGQUIT and SIGUSR1; other threads created by main() - will inherit a copy of the signal mask. */ - - sigemptyset(&set); - sigaddset(&set, SIGQUIT); - sigaddset(&set, SIGUSR1); - s = pthread_sigmask(SIG_BLOCK, &set, NULL); - if (s != 0) - handle_error_en(s, "pthread_sigmask"); - - s = pthread_create(&thread, NULL, &sig_thread, (void *) &set); - if (s != 0) - handle_error_en(s, "pthread_create"); - - /* Main thread carries on to create other threads and/or do - other work */ - - pause(); /* Dummy pause so we can test program */ -} -.fi -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_sigqueue.3 b/manual/LDP_man-pages/draft/man3/pthread_sigqueue.3 deleted file mode 100644 index 56700d0d..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_sigqueue.3 +++ /dev/null @@ -1,93 +0,0 @@ -.\" Copyright (c) 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 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-04, Akihiro MOTOKI -.\" -.TH PTHREAD_SIGQUEUE 3 2014\-05\-28 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_sigqueue \- スレッドに対するシグナルとデータをキューに入れる -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP - -\fBint pthread_sigqueue(pthread_t \fP\fIthread\fP\fB, int \fP\fIsig\fP\fB,\fP -\fB const union sigval \fP\fIvalue\fP\fB);\fP -.fi -.sp -\fI\-pthread\fP を付けてコンパイルとリンクを行う。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBpthread_sigqueue\fP(): _GNU_SOURCE -.SH 説明 -\fBpthread_sigqueue\fP() 関数は \fBsigqueue\fP(3) と同様の処理を実行するが、 -プロセスにシグナルを送信するのではなく、呼び出したスレッドと -同じプロセス内のスレッドにシグナルを送信する。 - -\fIthread\fP 引き数は、呼び出し側と同じプロセスのスレッドの ID である。 -\fIsig\fP 引き数は送信するシグナルを指定する。 -\fIvalue\fP 引き数はシグナルと一緒に渡すデータを指定する。 -詳細は \fBsigqueue\fP(3) を参照。 -.SH 返り値 -成功すると、 \fBpthread_sigmask\fP() は 0 を返す。 -エラーの場合、エラー番号を返す。 -.SH エラー -.TP -\fBEAGAIN\fP -キューに入れられるシグナル数が上限に達していた -(詳しい情報は (\fBsignal\fP(7) を参照)。 -.TP -\fBEINVAL\fP -\fIsig\fP が無効であった。 -.TP -\fBENOSYS\fP -\fBpthread_sigqueue\fP() がこのシステムではサポートされていない。 -.TP -\fBESRCH\fP -\fIthread\fP が無効である。 -.SH バージョン -\fBpthread_sigqueue\fP() 関数は glibc 2.11 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBpthread_sigqueue\fP() 関数はスレッドセーフである。 -.SH 準拠 -この関数は GNU による拡張である。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_testcancel.3 b/manual/LDP_man-pages/draft/man3/pthread_testcancel.3 deleted file mode 100644 index f3a26870..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_testcancel.3 +++ /dev/null @@ -1,76 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-04, Akihiro MOTOKI -.\" -.TH PTHREAD_TESTCANCEL 3 2014\-05\-19 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_testcancel \- 処理待ちの取り消し要求の配送を要求する -.SH 書式 -.nf -\fB#include \fP - -\fBvoid pthread_testcancel(void);\fP -.sp -\fI\-pthread\fP でコンパイルしてリンクする。 -.fi -.SH 説明 -\fBpthread_testcancel\fP() を呼び出すと、呼び出したスレッド内に取り消し -ポイント (cancellation point) が作成される。 -これにより、これ以外には取り消しポイントを含まないコードを実行して -いるスレッドが取り消し要求に対応することができるようになる。 - -(\fBpthread_setcancelstate\fP(3) を使って) キャンセルが無効になっている -場合や処理待ちの取り消し要求がない場合は、\fBpthread_testcancel\fP() を -呼び出しても何の影響もない。 -.SH 返り値 -この関数は値を返さない。この関数の呼び出しの結果、呼び出したスレッドが -キャンセルされた場合、この関数が返ることはない。 -.SH エラー -.\" SH VERSIONS -.\" Available since glibc 2.0 -この関数は常に成功する。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBpthread_testcancel\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 例 -\fBpthread_cleanup_push\fP(3) を参照。 -.SH 関連項目 -\fBpthread_cancel\fP(3), \fBpthread_cleanup_push\fP(3), -\fBpthread_setcancelstate\fP(3), \fBpthreads\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_tryjoin_np.3 b/manual/LDP_man-pages/draft/man3/pthread_tryjoin_np.3 deleted file mode 100644 index 855cc568..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_tryjoin_np.3 +++ /dev/null @@ -1,125 +0,0 @@ -.\" Copyright (c) 2008 Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-04, Akihiro MOTOKI -.\" -.TH PTHREAD_TRYJOIN_NP 3 2015\-01\-10 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_tryjoin_np, pthread_timedjoin_np \- 終了したスレッドの join を -試みる -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* See feature_test_macros(7) */ -\fB#include \fP - -\fBint pthread_tryjoin_np(pthread_t \fP\fIthread\fP\fB, void **\fP\fIretval\fP\fB);\fP - -\fBint pthread_timedjoin_np(pthread_t \fP\fIthread\fP\fB, void **\fP\fIretval\fP\fB,\fP -\fB const struct timespec *\fP\fIabstime\fP\fB);\fP -.fi -.sp -\fI\-pthread\fP を付けてコンパイルとリンクを行う。 -.SH 説明 -これらの関数は \fBpthread_join\fP(3) と同じように動作するが、 -このページで説明する違いがある。 - -\fBpthread_tryjoin_np\fP() 関数は、スレッド \fIthread\fP の非停止 -(nonblocking) での join を実行し、スレッドの終了ステータスを -\fI*retval\fP に入れて返す。\fIthread\fP がまだ終了していない場合は、 -\fBpthread_join\fP(3) のように停止 (block) せずに、エラーを返す。 - -\fBpthread_timedjoin_np\fP() 関数は、タイムアウト付きの join を行う。 -\fIthread\fP がまだ終了していない場合、 \fIabstime\fP で指定された最大時間 -まで停止する。 \fIthread\fP が終了する前にタイムアウト時間が経過した場合は、 -エラーを返す。\fIabstime\fP 引き数は以下に示す構造体であり、 -Epoch (時刻紀元; \fBtime\fP(2) 参照) から測った絶対時刻を指定する。 - -.in +4n -.nf -struct timespec { - time_t tv_sec; /* seconds */ - long tv_nsec; /* nanoseconds */ -}; -.fi -.in -.SH 返り値 -成功すると、これらの関数は 0 を返す。 -エラーの場合、エラー番号を返す。 -.SH エラー -これらの関数は \fBpthread_join\fP(3) と同じエラーで失敗する。 -\fBpthread_tryjoin_np\fP() はさらに以下のエラーで失敗する場合がある。 -.TP -\fBEBUSY\fP -呼び出しを行った時点では \fIthread\fP はまだ終了していない。 -.PP -\fBpthread_timedjoin_np\fP() はさらに以下のエラーで失敗する場合がある。 -.TP -\fBETIMEDOUT\fP -\fIthread\fP が終了する前に呼び出しがタイムアウトとなった。 -.TP -\fBEINVAL\fP -\fIabstime\fP の値が無効である (\fItv_sec\fP が 0 より小さいか、 \fItv_nsec\fP 1e9 がより大きい)。 -.PP -\fBpthread_timedjoin_np\fP() がエラー \fBEINTR\fP を返すことはない。 -.SH バージョン -これらの関数は glibc バージョン 2.3.3 で初めて登場した。 -.SH 準拠 -これらの関数は非標準の GNU による拡張である。 -そのため、名前に "_np" (nonportable; 移植性がない) という接尾辞が -付いている。 -.SH 例 -以下のコードは、最大 5 秒まで join を待つ。 - -.nf - struct timespec ts; - int s; - - ... - - if (clock_gettime(CLOCK_REALTIME, &ts) == \-1) { - /* Handle error */ - } - - ts.tv_sec += 5; - - s = pthread_timedjoin_np(thread, NULL, &ts); - if (s != 0) { - /* Handle error */ - } -.fi -.SH 関連項目 -\fBclock_gettime\fP(2), \fBpthread_exit\fP(3), \fBpthread_join\fP(3), \fBpthreads\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/pthread_yield.3 b/manual/LDP_man-pages/draft/man3/pthread_yield.3 deleted file mode 100644 index 4e5e14b3..00000000 --- a/manual/LDP_man-pages/draft/man3/pthread_yield.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Copyright (c) 2009 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-04, Akihiro MOTOKI -.\" -.TH PTHREAD_YIELD 3 2014\-05\-13 Linux "Linux Programmer's Manual" -.SH 名前 -pthread_yield \- プロセッサを明け渡す (yield) -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* See feature_test_macros(7) */ -\fB#include \fP - -\fBint pthread_yield(void);\fP -.fi -.sp -\fI\-pthread\fP を付けてコンパイルとリンクを行う。 -.SH 説明 -\fBpthread_yield\fP() を呼び出すと、呼び出したスレッドは CPU を手放す。 -スレッドはそのスレッドの静的優先度の実行キューの末尾に回り、 -別のスレッドが実行されるようにスケジューリングされる。 -詳細は \fBsched_yield\fP(2) を参照。 -.SH 返り値 -成功すると、 \fBpthread_yield\fP() は 0 を返す。 -エラーの場合、エラー番号を返す。 -.SH エラー -Linux では、この関数の呼び出しは常に成功する -(ただし、移植性や将来も動作することを保証したいアプリケーションでは -正のエラーの返り値を処理するようにすべきである)。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBpthread_yield\fP() 関数はスレッドセーフである。 -.SH 準拠 -.\" e.g., the BSDs, Tru64, AIX, and Irix. -この関数は非標準だが、他のいくつかのシステムにも存在する。 -代わりに、標準化されている \fBsched_yield\fP(2) を使うこと。 -.SH 注意 -Linux では、この関数は \fBsched_yield\fP(2) を呼び出す形で実装されている。 -.SH 関連項目 -\fBsched_yield\fP(2), \fBpthreads\fP(7), \fBsched\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ptsname.3 b/manual/LDP_man-pages/draft/man3/ptsname.3 deleted file mode 100644 index 9a986d6c..00000000 --- a/manual/LDP_man-pages/draft/man3/ptsname.3 +++ /dev/null @@ -1,78 +0,0 @@ -.\" %%%LICENSE_START(PUBLIC_DOMAIN) -.\" This page is in the public domain. - aeb -.\" %%%LICENSE_END -.\" -.\" 2004-12-17, mtk, added description of ptsname_r() + ERRORS -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2003-07-08, Akihiro MOTOKI -.\" Updated 2005-02-27, Akihiro MOTOKI -.\" -.TH PTSNAME 3 2013\-06\-21 "" "Linux Programmer's Manual" -.SH 名前 -ptsname, ptsname_r \- スレーブ擬似端末の名前を取得する -.SH 書式 -.nf -\fB#define _XOPEN_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBchar *ptsname(int \fP\fIfd\fP\fB);\fP -.sp -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBint ptsname_r(int \fP\fIfd\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB);\fP -.fi -.SH 説明 -\fBptsname\fP() 関数は \fIfd\fP で参照されるマスタ擬似端末 (pts) デバイスに対応する スレーブ擬似端末デバイスの名前を返す。 - -\fBptsname_r\fP() 関数は \fBptsname\fP() のリエントラントなバージョンである。 -この関数は、スレーブ疑似端末デバイスの名前を、ヌルで終端された文字列の形で \fIbuf\fP で指定されたバッファーに格納して返す。 \fIbuflen\fP -引き数には \fIbuf\fP のバイト数を指定する。 -.SH 返り値 -成功の場合、 \fBptsname\fP() は静的記憶領域の文字列へのポインターを返す。 この記憶領域はこの後の \fBptsname\fP() -の呼び出しで上書きされる。 このポインターを free してはいけない。 エラーの場合は NULL を返す。 - -.\" In fact the errno value is also returned as the function -.\" result -- MTK, Dec 04 -成功の場合、 \fBptsname_r\fP() は 0 を返す。 エラーの場合、0 以外の値を返し、 \fIerrno\fP をエラーを示す値に設定する。 -.SH エラー -.TP -\fBEINVAL\fP -(\fBptsname_r\fP() のみ) \fIbuf\fP が NULL である。 -.TP -\fBENOTTY\fP -\fIfd\fP がマスタ疑似端末デバイスを参照していない。 -.TP -\fBERANGE\fP -(\fBptsname_r\fP() のみ) \fIbuf\fP が小さすぎる。 -.SH バージョン -\fBptsname\fP() は、バージョン 2.1 以降の glibc で提供されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBptsname\fP() 関数はスレッドセーフではない。 -.LP -\fBptsname_r\fP() 関数はスレッドセーフである。 -.SH 準拠 -\fBptsname\fP() は UNIX 98 疑似端末仕様の一部である (\fBpts\fP(4) を参照のこと)。この関数は POSIX.1\-2001 -で規定されている。 - -\fBptsname_r\fP() は Linux による拡張である。 この関数についての記載があるものとして Tru64 と HP\-UX があるが、 -これらの OS での実装ではエラーの場合 \-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 -移植を考慮したプログラムではこの関数の使用は避けること。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/putenv.3 b/manual/LDP_man-pages/draft/man3/putenv.3 deleted file mode 100644 index abba792f..00000000 --- a/manual/LDP_man-pages/draft/man3/putenv.3 +++ /dev/null @@ -1,109 +0,0 @@ -.\" 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 -.\" Single UNIX Specification, Version 2 -.\" Modified Thu Apr 8 15:00:12 1993, David Metcalfe -.\" Modified Sat Jul 24 18:44:45 1993, Rik Faith (faith@cs.unc.edu) -.\" Modified Fri Feb 14 21:47:50 1997 by Andries Brouwer (aeb@cwi.nl) -.\" Modified Mon Oct 11 11:11:11 1999 by Andries Brouwer (aeb@cwi.nl) -.\" Modified Wed Nov 10 00:02:26 1999 by Andries Brouwer (aeb@cwi.nl) -.\" Modified Sun May 20 22:17:20 2001 by Andries Brouwer (aeb@cwi.nl) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated 1997-12-19, HIROFUMI Nishizuka -.\" Updated 2000-06-18, Kentaro Shirakata -.\" Updated 2005-11-19, Akihiro MOTOKI -.\" -.TH PUTENV 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -putenv \- 環境変数の変更または追加 -.SH 書式 -.nf -\fB#include \fP -.sp -.\" Not: const char * -\fBint putenv(char *\fP\fIstring\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBputenv\fP(): _SVID_SOURCE || _XOPEN_SOURCE -.SH 説明 -\fBputenv\fP() 関数は、環境変数の追加または値の変更を行う。 引数 \fIstring\fP は \fIname\fP=\fIvalue\fP -という形式を取る。 \fIname\fP が環境に存在しない場合は \fIstring\fP が環境に追加される。 \fIname\fP が環境に存在する場合は -\fIname\fP の値は \fIvalue\fP に変更される。 \fIstring\fP が指している文字列は環境の一部となるので、 -文字列を変更すると環境も変更される。 -.SH 返り値 -\fBputenv\fP() 関数は、成功すると 0 を返し、エラーの場合は 0 以外の値を返す。エラーが発生した場合、 \fIerrno\fP -に原因を示す値が設定される。 -.SH エラー -.TP -\fBENOMEM\fP -新しい環境を割り当てるのに十分な空きがない。 -.SH 準拠 -SVr4, POSIX.1\-2001, 4.3BSD. -.SH 注意 -.\" .LP -.\" Description for libc4, libc5, glibc: -.\" If the argument \fIstring\fP is of the form \fIname\fP, -.\" and does not contain an \(aq=\(aq character, then the variable \fIname\fP -.\" is removed from the environment. -.\" If -.\" .BR putenv () -.\" has to allocate a new array \fIenviron\fP, -.\" and the previous array was also allocated by -.\" .BR putenv (), -.\" then it will be freed. -.\" In no case will the old storage associated -.\" to the environment variable itself be freed. -\fBputenv\fP() はリエントラントであることを求められていない。 glibc 2.0 ではリエントラントではない。 glibc 2.1 -ではリエントラントである。 -.LP -バージョン 2.1.2 以降では、 glibc の実装は SUSv2 に準拠している。 \fBputenv\fP() で与えられたポインター -\fIstring\fP が使われる。 この文字列は環境の一部となり、後で変更すると環境も変わる。 (従って、 \fBputenv\fP() -を自動変数を引数として呼び出し、 \fIstring\fPが環境の一部のままで呼び出した関数から return するとエラーになる) しかし、glibc -バージョン 2.0 から 2.1.1 まででは違っており、文字列のコピーが使われる。 これはメモリーリークを引き起こすだけでなく、 SUSv2 -にも違反している。 -.LP -4.4BSD バージョンでは、glibc 2.0 と同様にコピーを使う。 -.LP -SUSv2 ではプロトタイプから \fIconst\fP が取り除かれており、 glibc 2.1.3 もそのようになっている。 -.SH 関連項目 -\fBclearenv\fP(3), \fBgetenv\fP(3), \fBsetenv\fP(3), \fBunsetenv\fP(3), \fBenviron\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/putgrent.3 b/manual/LDP_man-pages/draft/man3/putgrent.3 deleted file mode 100644 index 383058c6..00000000 --- a/manual/LDP_man-pages/draft/man3/putgrent.3 +++ /dev/null @@ -1,52 +0,0 @@ -.\" Copyright 2003 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Sat Aug 28 14:07:20 JST 2004 -.\" by Yuichi SATO -.\" -.TH PUTGRENT 3 2015\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -putgrent \- グループデータベースエントリーをファイルに書き込む -.SH 書式 -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBint putgrent(const struct group *\fP\fIgrp\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -.SH 説明 -\fBputgrent\fP() 関数は \fBfgetgrent\fP(3) の逆である。 この関数は与えられた \fIstruct group\fP を -\fIstream\fP に書き込む。 グループメンバのリストは、 NULL で終端されるか、 NULL で初期化されなければならない。 -.sp -\fIstruct group\fP は以下のように定義される: -.sp -.in +4n -.nf -struct group { - char *gr_name; /* グループ名 */ - char *gr_passwd; /* グループパスワード */ - gid_t gr_gid; /* グループ ID */ - char **gr_mem; /* グループメンバ */ -}; -.fi -.in -.SH 返り値 -この関数は、成功した場合は 0 を返し、エラーの場合は 0 以外の値を返す。 -.SH 準拠 -この関数は GNU による拡張である。 -.SH 関連項目 -\fBfgetgrent\fP(3), \fBgetgrent\fP(3), \fBgroup\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/putpwent.3 b/manual/LDP_man-pages/draft/man3/putpwent.3 deleted file mode 100644 index 51569dcc..00000000 --- a/manual/LDP_man-pages/draft/man3/putpwent.3 +++ /dev/null @@ -1,90 +0,0 @@ -.\" 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:43:46 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Thu Dec 18 17:43:46 JST 1997 -.\" by HIROFUMI Nishizuka -.\" -.TH PUTPWENT 3 2013\-04\-19 GNU "Linux Programmer's Manual" -.SH 名前 -putpwent \- パスワードファイルエントリーの書き込み -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -\fB#include \fP -.sp -\fBint putpwent(const struct passwd *\fP\fIp\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBputpwent\fP(): _SVID_SOURCE -.SH 説明 -\fBputpwent\fP() 関数は、構造体 \fIp\fP からのパスワードエントリーを \fIstream\fP に結びつけられたファイルに書き込む。 -.PP -\fIpasswd\fP 構造体は、\fI\fP で以下のように定義されている: -.sp -.in +4n -.nf -struct passwd { - char *pw_name; /* ユーザー名 */ - char *pw_passwd; /* ユーザーのパスワード */ - uid_t pw_uid; /* ユーザー ID */ - gid_t pw_gid; /* グループ ID */ - char *pw_gecos; /* 本名 */ - char *pw_dir; /* ホームディレクトリ */ - char *pw_shell; /* シェルプログラム */ -}; -.fi -.in -.SH 返り値 -\fBputpwent\fP() 関数は、成功した場合 0 を返す。 エラーが発生した場合 \-1 を返し、 \fIerrno\fPに原因を示す値が設定される。 -.SH エラー -.TP -\fBEINVAL\fP -無効な(NULL)引数が渡された。 -.SH 準拠 -SVr4. -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/puts.3 b/manual/LDP_man-pages/draft/man3/puts.3 deleted file mode 100644 index c23f36c1..00000000 --- a/manual/LDP_man-pages/draft/man3/puts.3 +++ /dev/null @@ -1,88 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" -.\" %%%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 18:42:59 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Wed Dec 24 12:33:40 JST 1997 -.\" by HIROFUMI Nishizuka -.\" Updated Fri Nov 2 JST 2001 by Kentaro Shirakata -.\" -.TH PUTS 3 2014\-01\-11 GNU "Linux Programmer's Manual" -.SH 名前 -fputc, fputs, putc, putchar, puts \- 文字と文字列の出力 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint fputc(int \fP\fIc\fP\fB, FILE *\fP\fIstream\fP\fB);\fP - -\fBint fputs(const char *\fP\fIs\fP\fB, FILE *\fP\fIstream\fP\fB);\fP - -\fBint putc(int \fP\fIc\fP\fB, FILE *\fP\fIstream\fP\fB);\fP - -\fBint putchar(int \fP\fIc\fP\fB);\fP - -\fBint puts(const char *\fP\fIs\fP\fB);\fP -.fi -.SH 説明 -\fBfputc\fP() は、キャラクター \fIc\fP を \fIunsigned char\fP にキャストし、 \fIstream\fP に書き込む。 -.PP -\fBfputs\fP() は、文字列 \fIs\fP を \fIstream\fP に書き込む。 文字列終端のヌルバイト (\(aq\e0\(aq) は出力しない。 -.PP -\fBputc\fP() は、 \fIstream\fP を一度以上評価するマクロとして実装されているかも知れないという点を除き、 \fBfputc\fP() -と同じである。 -.PP -\fBputchar(\fP\fIc\fP\fB)\fP は、 \fBputc(\fP\fIc\fP\fB,\fP\fIstdout\fP\fB)\fP と同じである。 -.PP -\fBputs\fP() は、文字列 \fIs\fP と改行を \fIstdout\fP に書き込む。 -.PP -ここで説明された関数はお互いに混在して使用することができ、また、 \fIstdio\fP ライブラリに含まれる他の出力関数を同じ出力ストリームに対して -呼び出す事が出来る。 -.PP -これらの処理を停止せずに行いたいときは、 \fBunlocked_stdio\fP(3) を参照のこと。 -.SH 返り値 -\fBfputc\fP(), \fBputc\fP(), \fBputchar\fP() は \fIunsigned char\fP として書き込まれた文字を \fIint\fP -にキャストして返す。 エラーが発生した場合は \fBEOF\fP を返す。 -.PP -\fBputs\fP() と \fBfputs\fP() は、成功すると負ではない数を、エラーが発生した場合は \fBEOF\fP を返す。 -.SH 準拠 -C89, C99. -.SH バグ -\fIstdio\fP ライブラリに含まれる出力関数と、同じ出力ストリームに結びつけられた ファイルディスクリプターに対する \fBwrite\fP(2) -の低レベル呼び出しを混在して 使用することは賢明ではない。 その結果は定義されておらず、望む結果が得られない可能性が高い。 -.SH 関連項目 -\fBwrite\fP(2), \fBferror\fP(3), \fBfgets\fP(3), \fBfopen\fP(3), \fBfputwc\fP(3), -\fBfputws\fP(3), \fBfseek\fP(3), \fBfwrite\fP(3), \fBputwchar\fP(3), \fBscanf\fP(3), -\fBunlocked_stdio\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/putwchar.3 b/manual/LDP_man-pages/draft/man3/putwchar.3 deleted file mode 100644 index 4ab831e5..00000000 --- a/manual/LDP_man-pages/draft/man3/putwchar.3 +++ /dev/null @@ -1,57 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification -.\" http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:55:58 JST 2000 -.\" by HANATAKA Shinya -.\" Updated Sat Nov 3 JST 2001 by Kentaro Shirakata -.\" -.TH PUTWCHAR 3 1999\-07\-25 GNU "Linux Programmer's Manual" -.SH 名前 -putwchar \- ワイド文字を標準出力へ書き出す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwint_t putwchar(wchar_t \fP\fIwc\fP\fB);\fP -.fi -.SH 説明 -\fBputwchar\fP() 関数は \fBputchar\fP() のワイド文字版である。 この関数は \fIwc\fP を \fIstdout\fP -へと書き出す。\fIferror(stdout)\fP が 真ならば \fBWEOF\fP を返す。ワイド文字の変換に失敗した場合には \fIerrno\fP に -\fBEILSEQ\fP を設定して \fBWEOF\fP を返す。それ以外の場合は \fIwc\fP を返す。 -.PP -これらの処理を停止せずに行いたいときは、 \fBunlocked_stdio\fP(3) を参照のこと。 -.SH 返り値 -エラーが起きなかった場合、 \fBputwchar\fP() 関数は \fIwc\fP を返す。 エラーが起きた場合は \fBWEOF\fP を返す。 -.SH 準拠 -C99. -.SH 注意 -\fBputwchar\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存している。 -.PP -\fBputwchar\fP() が実際にはワイド文字 \fIwc\fP と等価なマルチバイト文字を 書き出すことを期待してもよい。 -.SH 関連項目 -\fBfputwc\fP(3), \fBunlocked_stdio\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/qecvt.3 b/manual/LDP_man-pages/draft/man3/qecvt.3 deleted file mode 100644 index f9c332a9..00000000 --- a/manual/LDP_man-pages/draft/man3/qecvt.3 +++ /dev/null @@ -1,91 +0,0 @@ -.\" Copyright (C) 2002 Andries Brouwer -.\" -.\" %%%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 replaces an earlier man page written by Walter Harms -.\" . -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Sun Sep 22 10:42:23 2002 -.\" by Akihiro MOTOKI -.\" -.TH QECVT 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -qecvt, qfcvt, qgcvt \- 浮動小数点数の文字列への変換 -.SH 書式 -\fB#include \fP -.sp -\fBchar *qecvt(long double \fP\fInumber\fP\fB, int \fP\fIndigits\fP\fB, int -*\fP\fIdecpt\fP\fB,\fP \fBint *\fP\fIsign\fP\fB);\fP -.sp -\fBchar *qfcvt(long double \fP\fInumber\fP\fB, int \fP\fIndigits\fP\fB, int -*\fP\fIdecpt\fP\fB,\fP \fBint *\fP\fIsign\fP\fB);\fP -.sp -\fBchar *qgcvt(long double \fP\fInumber\fP\fB, int \fP\fIndigit\fP\fB, char *\fP\fIbuf\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBqecvt\fP(), \fBqfcvt\fP(), \fBqgcvt\fP(): _SVID_SOURCE -.ad b -.\" FIXME . The full FTM picture looks to have be something like the -.\" following mess: -.\" glibc 2.20 onward -.\" _DEFAULT_SOURCE -.\" glibc 2.18 to glibc 2.19 -.\" _BSD_SOURCE || _SVID_SOURCE -.\" glibc 2.10 to glibc 2.17 -.\" _SVID_SOURCE || (_XOPEN_SOURCE >= 500 || -.\" (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) && -.\" ! (_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700)) -.\" Before glibc 2.10: -.\" _SVID_SOURCE || _XOPEN_SOURCE >= 500 || -.\" (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) -.SH 説明 -関数 \fBqecvt\fP(), \fBqfcvt\fP(), \fBqgcvt\fP() は、それぞれ \fBecvt\fP(3), \fBfcvt\fP(3), -\fBgcvt\fP(3) と同じである。 引き数 \fInumber\fP が \fIlong double\fP 型である点だけが異なる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBqecvt\fP() と \fBqfcvt\fP() はスレッドセーフではない。 -.LP -関数 \fBqgcvt\fP() はスレッドセーフである。 -.SH 準拠 -.\" Not supported by libc4 and libc5. -SVr4. 多くの一般的な UNIX には実装されていないが、SunOS には実装されている。 glibc ではサポートされている。 -.SH 注意 -これらの関数は廃止された。代わりに \fBsnprintf\fP(3) の使用を推奨する。 -.SH 関連項目 -\fBecvt\fP(3), \fBecvt_r\fP(3), \fBgcvt\fP(3), \fBsprintf\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/qsort.3 b/manual/LDP_man-pages/draft/man3/qsort.3 deleted file mode 100644 index 44ac5167..00000000 --- a/manual/LDP_man-pages/draft/man3/qsort.3 +++ /dev/null @@ -1,138 +0,0 @@ -.\" 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-03-29, David Metcalfe -.\" Modified 1993-07-24, Rik Faith (faith@cs.unc.edu) -.\" 2006-01-15, mtk, Added example program. -.\" Modified 2012-03-08, Mark R. Bannister -.\" and Ben Bacarisse -.\" Document qsort_r() -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated 1997-01-21, YOSHINO Takashi -.\" Updated & Modified 2004-06-06, Yuichi SATO -.\" Updated 2006-01-18, Akihiro MOTOKI -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH QSORT 3 2012\-03\-08 "" "Linux Programmer's Manual" -.SH 名前 -qsort, qsort_r \- 配列を並べ変える -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid qsort(void *\fP\fIbase\fP\fB, size_t \fP\fInmemb\fP\fB, size_t \fP\fIsize\fP\fB,\fP -\fB int (*\fP\fIcompar\fP\fB)(const void *, const void *));\fP -.sp -\fBvoid qsort_r(void *\fP\fIbase\fP\fB, size_t \fP\fInmemb\fP\fB, size_t \fP\fIsize\fP\fB,\fP -\fB int (*\fP\fIcompar\fP\fB)(const void *, const void *, void *),\fP -\fB void *\fP\fIarg\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBqsort_r\fP(): _GNU_SOURCE -.ad b -.SH 説明 -\fBqsort\fP() 関数は、 \fInmemb\fP 個の大きさ \fIsize\fP の要素をもつ配列を並べ変える。 \fIbase\fP -引き数は配列の先頭へのポインターである。 -.PP -\fIcompar\fP をポインターとする比較関数によって、 配列の中身は昇順 (値の大きいものほど後に並ぶ順番) に並べられる。 -比較関数の引き数は比較されるふたつのオブジェクトのポインターである。 -.PP -比較関数は、第一引き数が第二引き数に対して、 1) 小さい、2) 等しい、3) 大きいのそれぞれに応じて、 1) ゼロより小さい整数、2) ゼロ、3) -ゼロより大きい整数の いずれかを返さなければならない。 二つの要素の比較結果が等しいとき、 並べ変えた後の配列では、これら二つの順序は規定されていない。 -.PP -\fBqsort_r\fP() 関数は \fBqsort\fP() と同じだが、比較関数 \fIcompar\fP が第 3 引き数を -取る点が異なる。ポインターが \fIarg\fP 経由で比較関数に渡される。 -これにより、比較関数は任意の引き数を渡すためにグローバル変数を使う必要がなくなり、 -そのため、リエントラント (再入可能) で安全にスレッドで使用できるようになる。 -.SH 返り値 -関数 \fBqsort\fP() と \fBqsort_r\fP() は値を返さない。 -.SH バージョン -\fBqsort_r\fP() は glibc バージョン 2.8 で追加された。 -.SH 準拠 -\fBqsort\fP() 関数は SVr4, 4.3BSD, C89, C99 に準拠している。 -.SH 注意 -\fBqsort\fP() の \fIcompar\fP 引き数に使用するのに適しているライブラリルーチンと -しては \fBalphasort\fP(3), \fBversionsort\fP(3) がある。 C の文字列を比較する場合、 -以下の例にあるように比較関数で \fBstrcmp\fP(3) を呼び出すこともできる。 -.SH 例 -使用例については、 \fBbsearch\fP(3) にある例を参照すること。 - -以下のプログラムに別の使用例を示す。このプログラムは、 コマンドライン引き数で指定された文字列の並び換えを行う。 -.sp -.nf -#include -#include -#include - -static int -cmpstringp(const void *p1, const void *p2) -{ - /* この関数の実際の引き数は "char 型へのポインターのポインター" だが、 - strcmp(3) の引き数は "char 型へのポインター" である。 - そこで、以下のようにキャストをしてからポインターの逆参照を行う。*/ - - return strcmp(* (char * const *) p1, * (char * const *) p2); -} - -int -main(int argc, char *argv[]) -{ - int j; - - if (argc < 2) { - fprintf(stderr, "Usage: %s ...\en", argv[0]); - exit(EXIT_FAILURE); - } - - qsort(&argv[1], argc \- 1, sizeof(char *), cmpstringp); - - for (j = 1; j < argc; j++) - puts(argv[j]); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBsort\fP(1), \fBalphasort\fP(3), \fBstrcmp\fP(3), \fBversionsort\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/raise.3 b/manual/LDP_man-pages/draft/man3/raise.3 deleted file mode 100644 index d9b4147f..00000000 --- a/manual/LDP_man-pages/draft/man3/raise.3 +++ /dev/null @@ -1,85 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" and Copyright (C) 2008 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 Sat Jul 24 18:40:56 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 1995 by Mike Battersby (mib@deakin.edu.au) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated 1997-12-25, HIROFUMI Nishizuka -.\" Updated 2008-08-08, Akihiro MOTOKI , LDP v3.05 -.\" Updated 2012-05-04, Akihiro MOTOKI -.\" -.TH RAISE 3 2014\-03\-10 GNU "Linux Programmer's Manual" -.SH 名前 -raise \- 呼び出し元にシグナルを送る -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint raise(int \fP\fIsig\fP\fB);\fP -.fi -.SH 説明 -\fBraise\fP() 関数は、呼び出し元のプロセスもしくはスレッドにシグナルを送る。 シングルスレッドのプログラムでは、以下と等価である。 -.sp -.in +4n -.nf -kill(getpid(), sig); -.fi -.in -.PP -マルチスレッドのプログラムでは、以下と等価である。 -.sp -.in +4n -.nf -pthread_kill(pthread_self(), sig); -.fi -.in -.PP -シグナルに起因してシグナルハンドラーが呼び出される場合には、 \fBraise\fP() が返るのは必ずシグナルハンドラーが返った後になる。 -.SH 返り値 -成功した場合は 0 を、失敗した場合は 0 以外の値を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBraise\fP() 関数はスレッドセーフである。 -.SH 準拠 -C89, C99, POSIX.1\-2001. -.SH 注意 -.\" 2.3.2 used the obsolete tkill(), if available. -glibc バージョン 2.3.3 以降では、カーネルが \fBtgkill\fP(2) システムコールをサポートしている場合は\fBraise\fP() は -\fBtgkill\fP(2) を使って実装されている。古いバージョンの glibc では、\fBraise\fP() は \fBkill\fP(2) -を使って実装されている。 -.SH 関連項目 -\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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/rand.3 b/manual/LDP_man-pages/draft/man3/rand.3 deleted file mode 100644 index a2937a1f..00000000 --- a/manual/LDP_man-pages/draft/man3/rand.3 +++ /dev/null @@ -1,168 +0,0 @@ -.\" 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-03-29, David Metcalfe -.\" Modified 1993-04-28, Lars Wirzenius -.\" Modified 1993-07-24, Rik Faith (faith@cs.unc.edu) -.\" Modified 1995-05-18, Rik Faith (faith@cs.unc.edu) to add -.\" better discussion of problems with rand on other systems. -.\" (Thanks to Esa Hyyti{ (ehyytia@snakemail.hut.fi).) -.\" Modified 1998-04-10, Nicolás Lichtmaier -.\" with contribution from Francesco Potorti -.\" Modified 2003-11-15, aeb, added rand_r -.\" 2010-09-13, mtk, added example program -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi all rights reserved. -.\" Translated 1997-01-21, YOSHINO Takashi -.\" Updated 2000-09-24, Kentaro Shirakata -.\" Updated 2005-03-15, Akihiro MOTOKI -.\" Updated 2008-08-08, Akihiro MOTOKI , LDP v3.05 -.\" -.TH RAND 3 2014\-01\-18 "" "Linux Programmer's Manual" -.SH 名前 -rand, srand \- 乱数を生成する関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint rand(void);\fP -.sp -\fBint rand_r(unsigned int *\fP\fIseedp\fP\fB);\fP -.sp -\fBvoid srand(unsigned int \fP\fIseed\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBrand_r\fP(): _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE -.SH 説明 -\fBrand\fP() 関数は 0 以上 \fBRAND_MAX\fP 以下 -(数学的に書くと [0,\ \fBRAND_MAX\fP]) の範囲の疑似乱数整数を返す。 -.PP -\fBsrand\fP() 関数は、 \fBrand\fP() 関数で作られる疑似乱数整数系列の新しい種として、 その引き数の値を使用する。 -これらの関数を使用して作られた疑似乱数系列は、 同じ値を引き数として \fBsrand\fP() を呼ぶことで、 再現することが可能である。 -.PP -種の値が与えられない場合には、 \fBrand\fP() 関数は 自動的に 1 を種とする。 -.PP -\fBrand\fP() 関数は再入可能 (reentrant) ではない、つまりスレッドセーフではない。 -この関数には隠し状態があり、呼び出される度にこの隠し状態が変更されるからである。 -ちょうどこの隠し状態が次の呼び出し時の乱数の種として使われるようなものである。 -実際にはもう少し複雑かもしれないが。 -スレッドを使用するアプリケーションで再現可能な動作をさせたい場合には、 -この状態を明示的に指定できなければならない。これを行うには、 -再入可能な \fBrand_r\fP() 関数を使用する。 - -\fBrand\fP() と同様、 \fBrand_r\fP() は [0,\ \fBRAND_MAX\fP] の範囲の疑似乱数整数を返す。 -\fIseedp\fP 引き数は、\fBrand_r\fP() の呼び出し間で状態を保持するために使用される -\fIunsigned int\fP へのポインターである。 -\fIseedp\fP が指す整数に同じ初期値を \fBrand_r\fP() を呼び出し、 -呼び出し間でその値が変更されなければ、同じ疑似乱数系列が得られる。 - -\fBrand_r\fP() の \fIseedp\fP 引き数が指す値により提供される状態は非常に小さな空間 -なので、この関数は弱い疑似乱数生成器になってしまう。 -代わりに \fBdrand48_r\fP(3) を使ってみるとよい。 -.SH 返り値 -関数 \fBrand\fP() と \fBrand_r\fP() は 0 以上 \fBRAND_MAX\fP 以下の数を返す。 -関数 \fBsrand\fP() は値を返さない。 -.SH 準拠 -関数 \fBrand\fP() と \fBsrand\fP() は SVr4, 4.3BSD, C89, C99, POSIX.1\-2001 に準拠している。 -関数 \fBrand_r\fP() は POSIX.1\-2001 に由来する。 POSIX.1\-2008 は、 \fBrand_r\fP() -を廃止予定としている。 -.SH 注意 -\fBrand\fP() と \fBsrand\fP() の Linux C Library 版は、 \fBrandom\fP(3) と \fBsrandom\fP(3) -の両関数と同じ乱数生成 アルゴリズムを使用している。そのため、下位のビットは上位のビットと 同じくらいにランダムである。 しかし、旧版の -\fBrand\fP() の実装や、他のシステムの現在の実装では、下位のビットが上位のビットほど -ランダムになっていない。移植性を高める場合でも、精度の高い乱数が必要な アプリケーションではこの関数は使用してはいけない (代わりに -\fBrandom\fP(3) を使うこと)。 -.SH 例 -POSIX 1003.1\-2003 では、 \fBrand\fP() と \fBsrand\fP() -の実装例として以下を挙げている。これは、異なる2つのマシンで同じ乱数系列が 必要な場合には便利であろう。 -.sp -.in +4n -.nf -static unsigned long next = 1; - -/* RAND_MAX を 32767 と仮定 */ -int myrand(void) { - next = next * 1103515245 + 12345; - return((unsigned)(next/65536) % 32768); -} - -void mysrand(unsigned int seed) { - next = seed; -} -.fi -.in -.PP -以下のプログラムを使うと、特定の乱数の種が与えられた場合に -\fBrand\fP() が生成する疑似乱数系列を表示することができる。 -.in +4n -.nf - -#include -#include - -int -main(int argc, char *argv[]) -{ - int j, r, nloops; - unsigned int seed; - - if (argc != 3) { - fprintf(stderr, "Usage: %s \en", argv[0]); - exit(EXIT_FAILURE); - } - - seed = atoi(argv[1]); - nloops = atoi(argv[2]); - - srand(seed); - for (j = 0; j < nloops; j++) { - r = rand(); - printf("%d\en", r); - } - - exit(EXIT_SUCCESS); -} -.fi -.in -.SH 関連項目 -\fBdrand48\fP(3), \fBrandom\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/random.3 b/manual/LDP_man-pages/draft/man3/random.3 deleted file mode 100644 index 5ef469b0..00000000 --- a/manual/LDP_man-pages/draft/man3/random.3 +++ /dev/null @@ -1,130 +0,0 @@ -.\" 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 Mar 28 00:25:51 1993, David Metcalfe -.\" Modified Sat Jul 24 18:13:39 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Sun Aug 20 21:47:07 2000, aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated 1997-01-21, YOSHINO Takashi -.\" Updated 2008-08-08, Akihiro MOTOKI -.\" Updated 2013-07-24, Akihiro MOTOKI -.\" -.TH RANDOM 3 2015\-02\-01 GNU "Linux Programmer's Manual" -.SH 名前 -random, srandom, initstate, setstate \- 乱数を生成する関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBlong int random(void);\fP - -\fBvoid srandom(unsigned int \fP\fIseed\fP\fB);\fP - -\fBchar *initstate(unsigned int \fP\fIseed\fP\fB, char *\fP\fIstate\fP\fB, size_t \fP\fIn\fP\fB);\fP -.br -\fBchar *setstate(char *\fP\fIstate\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBrandom\fP(), \fBsrandom\fP(), \fBinitstate\fP(), \fBsetstate\fP(): -.RS 4 -_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.RE -.ad -.SH 説明 -\fBrandom\fP() 関数は、非線形加法フィードバックを用いた乱数生成関数である。 この関数は、0 から \fBRAND_MAX\fP -までの疑似乱数を返す。 そのために 31 個のロング整数からなるデフォルトの表を使用する。 この乱数を生成する関数の周期はとても長く、およそ \fI16\ *\ ((2^31)\ \-\ 1)\fP である。 -.PP -\fBsrandom\fP() 関数は、 \fBrandom\fP() で返される疑似乱数整数系列の種を設定する。 そのためには新しい種を引数にして -\fBsrandom\fP() を呼べばよい。 \fBrandom\fP() で生成される系列は、 引数に同じ種の値を用いて \fBsrandom\fP() -を呼ぶことで再現可能である。 種の値が与えられない場合には \fBrandom\fP() 関数は、自動的に 1 を種に設定する。 -.PP -\fBinitstate\fP() 関数は、 \fBrandom\fP() で使用される状態配列 \fIstate\fP を初期化する。 \fBinitstate\fP() -では、状態配列の大きさ \fIn\fP は 使用する関数の乱数生成の性能の程度を決定するために使用される \(em 状態配列が大きい程、乱数の性能はよくなる。 -\fIseed\fP は初期化のための種である。 これは乱数系列の開始位置を決定するものであり、 この値を指定することで同一の開始位置から乱数の生成を -再開することができる。 -.PP -\fBsetstate\fP() 関数は、 \fBrandom\fP() で使用される状態配列を変更する。 状態配列 \fIstate\fP は、 -\fBinitstate\fP() または \fBsetstate\fP() が 次に呼び出されるまで、乱数の生成に使用される。 \fIstate\fP は -\fBinitstate\fP() を用いて最初に初期化されているか、 以前に呼び出した \fBsetstate\fP() の結果でなければならない。 -.SH 返り値 -関数 \fBrandom\fP() と \fBrand_r\fP() は 0 以上 \fBRAND_MAX\fP 以下の数を返す。 -関数 \fBsrandom\fP() は値を返さない。 - -関数 \fBinitstate\fP() は、変更前の状態配列へのポインターを返す。エラーの場合、 \fIerrno\fP に原因を示す値が設定される。 - -関数 \fBsetstate\fP() は、成功すると 0 を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP にエラーの原因を示す値が設定される。 -.SH エラー -.TP -\fBEINVAL\fP -\fBsetstate\fP() の引き数 \fIstate\fP が NULL であった。 -.TP -\fBEINVAL\fP -\fBinitstate\fP() で8バイトよりも小さい状態配列を指定した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBrandom\fP(), \fBsrandom\fP(), \fBinitstate\fP(), \fBsetstate\fP() はスレッドセーフである。 -.SH 準拠 -4.3BSD, POSIX.1\-2001. -.SH 注意 -状態配列 \fIn\fP の大きさの現在の「最適」値は 8、32、64、128、256 バイトである。 -その他の量を指定した場合には、指定した量を越えない上述の値に 最も近い値になる。 8 バイト未満の量を指定した場合にはエラーの原因となる。 -.PP -複数のスレッドが \fBrandom\fP() を使うような状況では、この関数を使用すべきではない。 その場合には \fBrandom_r\fP(3) -を使うこと。 -.PP -乱数の生成は複雑な話題である。 \fINumerical Recipes in C: The Art of Scientific Computing\fP -(William H. Press, Brian P. Flannery, Saul A. Teukolsky, William -T. Vetterling; New York: Cambridge University Press, 2007, 3rd ed.) -では実用的な乱数生成を論点とした優れた議論が第 7 章 (乱数) で展開されている。 -.PP -より理論的な議論については Donald E. Knuth の \fIThe Art of Computer Programming\fP, volume 2 -(Seminumerical Algorithms), 2nd ed.; Reading, Massachusetts: Addison\-Wesley -Publishing Company, 1981 の第 3 章 (乱数) を見よ。ここでは、 たくさんの実用的な話題についても深く網羅されている。 -.SH バグ -.\" http://sourceware.org/bugzilla/show_bug.cgi?id=15380 -POSIX では、エラー時に \fBinitstate\fP() は NULL を返すべきとされている。 glibc の実装では、エラー時に \fIerrno\fP -は仕様通りに設定されるが、関数の返り値は NULL ではない。 -.SH 関連項目 -\fBdrand48\fP(3), \fBgetrandom\fP(2), \fBrand\fP(3), \fBrandom_r\fP(3), \fBsrand\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/random_r.3 b/manual/LDP_man-pages/draft/man3/random_r.3 deleted file mode 100644 index a9684dd2..00000000 --- a/manual/LDP_man-pages/draft/man3/random_r.3 +++ /dev/null @@ -1,104 +0,0 @@ -.\" Copyright 2008 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2008 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2008-08-21, Akihiro MOTOKI , LDP v3.04 -.\" -.TH RANDOM_R 3 2014\-03\-25 GNU "Linux Programmer's Manual" -.SH 名前 -random_r, srandom_r, initstate_r, setstate_r \- リエントラントな 乱数生成器 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint random_r(struct random_data *\fP\fIbuf\fP\fB, int32_t *\fP\fIresult\fP\fB);\fP - -\fBint srandom_r(unsigned int \fP\fIseed\fP\fB, struct random_data *\fP\fIbuf\fP\fB);\fP - -\fBint initstate_r(unsigned int \fP\fIseed\fP\fB, char *\fP\fIstatebuf\fP\fB,\fP -\fB size_t \fP\fIstatelen\fP\fB, struct random_data *\fP\fIbuf\fP\fB);\fP -.br -\fBint setstate_r(char *\fP\fIstatebuf\fP\fB, struct random_data *\fP\fIbuf\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBrandom_r\fP(), \fBsrandom_r\fP(), \fBinitstate_r\fP(), \fBsetstate_r\fP(): -.RS 4 -_SVID_SOURCE || _BSD_SOURCE -.RE -.ad b -.SH 説明 -これらの関数は、 \fBrandom\fP(3) で説明されている関数のリエントラント版で、等価な機能を持つ。 -これらは、独立した再現可能な乱数列を各スレッドが得る必要があるような マルチスレッドプログラムでの使用に適している。 - -\fBrandom_r\fP() 関数は \fBrandom\fP(3) と同様だが、 大域変数 (global variable) -で管理される状態情報を使うのではなく、 \fIbuf\fP が指す引き数に格納された状態情報を使う。 生成された乱数は引き数 \fIresult\fP -に格納されて返される。 - -\fBsrandom_r\fP() 関数は \fBsrandom\fP(3) と同様だが、 大域変数で管理される状態に対応する乱数生成器の種ではなく、 -\fIbuf\fP が指すオブジェクトで管理される状態に対応する乱数生成器の種を 初期化する。 - -\fBinitstate_r\fP() 関数は \fBinitstate\fP(3) と同様だが、大域変数で管理される状態を初期化するのではなく、 \fIbuf\fP -が指すオブジェクト内の状態を初期化する。 - -\fBsetstate_r\fP() 関数は \fBsetstate\fP(3) と同様だが、大域変数で管理される状態を変更するのではなく、 \fIbuf\fP -が指すオブジェクト内の状態を変更する。 -.SH 返り値 -これらの関数はすべて、成功すると 0 を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP にエラーの原因を示す値がセットされる。 -.SH エラー -.TP -\fBEINVAL\fP -8 バイトより小さい状態配列が \fBinitstate_r\fP() に指定された。 -.TP -\fBEINVAL\fP -\fBsetstate_r\fP() の引き数 \fIstatebuf\fP か \fIbuf\fP が NULL であった。 -.TP -\fBEINVAL\fP -\fBrandom_r\fP() の引き数 \fIbuf\fP か \fIresult\fP が NULL であった。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBrandom_r\fP(), \fBsrandom_r\fP(), \fBinitstate_r\fP(), \fBsetstate_r\fP() -はスレッドセーフである。 -.SH 準拠 -.\" These functions appear to be on Tru64, but don't seem to be on -.\" Solaris, HP-UX, or FreeBSD. -これらの関数は非標準で glibc による拡張である。 -.SH 関連項目 -\fBdrand48\fP(3), \fBrand\fP(3), \fBrandom\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/rcmd.3 b/manual/LDP_man-pages/draft/man3/rcmd.3 deleted file mode 100644 index cffeea7b..00000000 --- a/manual/LDP_man-pages/draft/man3/rcmd.3 +++ /dev/null @@ -1,177 +0,0 @@ -.\" $NetBSD: rcmd.3,v 1.9 1996/05/28 02:07:39 mrg Exp $ -.\" -.\" Copyright (c) 1983, 1991, 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 -.\" -.\" @(#)rcmd.3 8.1 (Berkeley) 6/4/93 -.\" -.\" Contributed as Linux man page by David A. Holland, 970908 -.\" I have not checked whether the Linux situation is exactly the same. -.\" -.\" 2007-12-08, mtk, Converted from mdoc to man macros -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved. -.\" Translated Mon Mar 1 1999 by NAKANO Takeo -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2012-05-05, Akihiro MOTOKI -.\" -.TH RCMD 3 2014\-05\-28 Linux "Linux Programmer's Manual" -.SH 名前 -rcmd, rresvport, iruserok, ruserok, rcmd_af, rresvport_af, iruserok_af, -ruserok_af \- リモートコマンドにストリームを返す関数群 -.SH 書式 -.nf -\fB#include \ \ \fP/* Or on some systems */ -.sp -\fBint rcmd(char **\fP\fIahost\fP\fB, unsigned short \fP\fIinport\fP\fB, const char *\fP\fIlocuser\fP\fB, \fP -\fB const char *\fP\fIremuser\fP\fB, const char *\fP\fIcmd\fP\fB, int *\fP\fIfd2p\fP\fB);\fP -.sp -\fBint rresvport(int *\fP\fIport\fP\fB);\fP -.sp -\fBint iruserok(uint32_t \fP\fIraddr\fP\fB, int \fP\fIsuperuser\fP\fB, \fP -\fB const char *\fP\fIruser\fP\fB, const char *\fP\fIluser\fP\fB);\fP -.sp -\fBint ruserok(const char *\fP\fIrhost\fP\fB, int \fP\fIsuperuser\fP\fB, \fP -\fB const char *\fP\fIruser\fP\fB, const char *\fP\fIluser\fP\fB);\fP -.sp -\fBint rcmd_af(char **\fP\fIahost\fP\fB, unsigned short \fP\fIinport\fP\fB, const char *\fP\fIlocuser\fP\fB, \fP -\fB const char *\fP\fIremuser\fP\fB, const char *\fP\fIcmd\fP\fB, int *\fP\fIfd2p\fP\fB,\fP -\fB sa_family_t \fP\fIaf\fP\fB);\fP -.sp -\fBint rresvport_af(int *\fP\fIport\fP\fB, sa_family_t \fP\fIaf\fP\fB);\fP -.sp -\fBint iruserok_af(const void *\fP\fIraddr\fP\fB, int \fP\fIsuperuser\fP\fB, \fP -\fB const char *\fP\fIruser\fP\fB, const char *\fP\fIluser\fP\fB, sa_family_t \fP\fIaf\fP\fB);\fP -.sp -\fBint ruserok_af(const char *\fP\fIrhost\fP\fB, int \fP\fIsuperuser\fP\fB, \fP -\fB const char *\fP\fIruser\fP\fB, const char *\fP\fIluser\fP\fB, sa_family_t \fP\fIaf\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBrcmd\fP(), \fBrcmd_af\fP(), \fBrresvport\fP(), \fBrresvport_af\fP(), -\fBiruserok\fP(), \fBiruserok_af\fP(), \fBruserok\fP(), \fBruserok_af\fP(): -_BSD_SOURCE -.SH 説明 -\fBrcmd\fP() 関数は、スーパーユーザーがリモートマシンでコマンドを実行する -ために 用いられる。このとき特権ポート番号をもとにした認証スキームが 用 -いられる。 \fBrresvport\fP() 関数は、特権ポート空間のアドレスを持つソケッ -トの ディスクリプターを返す。 \fBiruserok\fP() 関数と \fBruserok\fP() 関数は、 -\fBrcmd\fP() でサービス要求を行ったクライアントの認証を行うために サーバー -が用いる関数である。 以上の 4 つの関数は、 \fBrshd\fP(8) サーバーによって -(他の関数とともに) 利用される。 -.SS rcmd() -.PP -\fBrcmd\fP() 関数は \fBgethostbyname\fP(3) を用いて \fI*ahost\fP の参照を行う。ホストが存在しない場合は \-1 -を返す。 見つかった場合は \fI*ahost\fP にホストの標準名 (standard name) をセットして、 予約されているインターネットポート -\fIinport\fP 経由でサーバーへの接続を確立する。 -.PP -接続に成功したら、インターネットドメインに存在するタイプ \fBSOCK_STREAM\fP のソケットが呼び出しもとに返される。 -このソケットの相手側はリモートコマンドの \fIstdin\fP および \fIstdout\fP に接続される。 \fIfd2p\fP -がゼロでない場合は、制御プロセスへの接続がもう一つ用意され、 そのディスクリプターが \fI*fd2p\fP にセットされる。 -制御プロセスはリモートコマンドからの標準エラー出力 (unit 2) を このチャンネルに返す。 また制御プロセスはこの接続から受け取ったバイトデータを -UNIX シグナルの番号として扱い、リモートコマンドのプロセス グループへとシグナルを送る。 \fIfd2p\fP がゼロの場合は、 \fIstderr\fP -(リモートコマンドの unit 2) は \fIstdout\fP と一緒にまとめられる。またこの場合はリモートプロセスへ -任意のシグナルを送ることはできなくなる。 ただし帯域外 (out\-of\-band) データを用いれば、 -リモートプロセスの注意を引くことはできるかもしれない。 -.PP -プロトコルの詳細は \fBrshd\fP(8) に記述されている。 -.SS rresvport() -.PP -.\" -\fBrresvport\fP() 関数は特権ポートにバインドされたソケットを取得するために -用いられる。 このソケットは \fBrcmd\fP() などの関数での利用に適している。 -インターネットポートの特権ポートは、 0 から 1023 の範囲である。特権プロ -セス (\fBCAP_NET_BIND_SERVICE\fP) だけが特権ポートをバインドすることができ -る。 glibc の実装では、この関数は特権ポートの検索範囲を 512 から 1023 -までの範囲に制限している。 \fIport\fP 引き数は入出力両用で使用される。呼び -出し時にこの引き数で渡された値は特権ポートを巡回検索する際の開始ポイン -トとして使用され、(成功で) 返る際にはこの引き数にバインドされたポート -番号が格納される。 -.SS "iruserok() と ruserok()" -.PP -\fBiruserok\fP() と \fBruserok\fP() 関数は、まず以下の引数を取る: リモートホスト (\fBiruserok\fP() は IP -アドレスで、 \fBruserok\fP() はホスト名で指定)、 2 つのユーザー名、ローカルユーザーの名前が -スーパーユーザーのものであるかどうかを示すフラグ、である。 もしユーザーが\fBスーパーユーザーではない\fP場合は、これらの関数は -\fI/etc/hosts.equiv\fP ファイルをチェックする。ファイルが見つからなかったり、 内容のチェックに失敗した場合には、 -ローカルユーザーのホームディレクトリにある \fI.rhosts\fP ファイルをチェックして、サービス要求が許可されているかどうか調べる。 -.PP -このファイルが存在しなかったり、 通常ファイル (regular file) ではなかったり、 指定ユーザーまたはスーパーユーザー以外の所有だったり、 -所有者以外から書き込み可能だったりした場合には、 このチェックは自動的に失敗する。 マシンの名前が \fIhosts.equiv\fP にリストされていたり、 -ホストとリモートユーザーの名前が \fI.rhosts\fP ファイルに書かれていた場合には 0 が返される。 それ以外の場合には、 -\fBiruserok\fP() と \fBruserok\fP() は \-1 を返す。 (\fBgethostname\fP(2) によって取得される) -ローカルドメインがリモートのドメインと同じ場合は、 マシンの名前だけを指定すればよい。 -.PP -リモートホストの IP アドレスがわかっている場合は、 \fBruserok\fP() よりも \fBiruserok\fP()\fBを用いる方が良いだろう。\fP -\fBruserok\fP() はリモートホストの所属するドメインの DNS サーバーが信頼できなくても 使用できるからである。 -.SS "*_af() 版" -上記で述べた関数は全て IPv4 (\fBAF_INET\fP) ソケットで動作する。 -"_af" 版では追加の引き数があり、この引き数でソケットアドレス -ファミリーを指定できる。これらの関数では、 \fIaf\fP 引き数には -\fBAF_INET\fP か \fBAF_INET6\fP が指定できる。 -\fBrcmd_af\fP() では追加で \fBAF_UNSPEC\fP も指定できる。 -.SH 返り値 -\fBrcmd\fP() 関数は成功すると有効なソケットディスクリプターを返す。 失敗すると \-1 を返し、標準エラー出力に診断メッセージを 表示する。 -.PP -\fBrresvport\fP() 関数は、成功するとバインドされた有効なソケットディスクリプターを返す。 失敗すると \-1 を返し、グローバル変数 -\fIerrno\fP をエラーの原因に対応する値にセットする。 エラーコード \fBEAGAIN\fP -は、この関数においては「すべてのネットワークポートが使用中」 という意味を表す。 - -\fBruserok\fP() と \fBiruserok\fP() の返り値については、上述の説明を参照。 -.SH バージョン -関数 \fBiruserok_af\fP(), \fBrcmd_af\fP(), \fBrresvport_af\fP(), -\fBruserok_af\fP() は glibc バージョン 2.2 以降で提供されている。 -.SH 準拠 -POSIX.1\-2001 にはない。 BSD 系、Solaris や他の多くのシステムに存在する。 -これらの関数は 4.2BSD で登場した。 "_af" が付くバージョンはより最近に -追加されたもので、あまり多くのシステムには存在しない。 -.SH バグ -.\" Bug filed 25 Nov 2007: -.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=5399 -\fBiruserok\fP() と \fBiruserok_af\fP() は glibc バージョン 2.12 以降のヘッダー -でのみ宣言されている。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/re_comp.3 b/manual/LDP_man-pages/draft/man3/re_comp.3 deleted file mode 100644 index ea0781b3..00000000 --- a/manual/LDP_man-pages/draft/man3/re_comp.3 +++ /dev/null @@ -1,75 +0,0 @@ -.\" Copyright (C), 1995, Graeme W. Wilford. (Wilf.) -.\" -.\" %%%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 -.\" -.\" Wed Jun 14 16:10:28 BST 1995 Wilf. (G.Wilford@@ee.surrey.ac.uk) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Thu Dec 18 15:06:31 JST 1997 -.\" by HIROFUMI Nishizuka -.\" -.TH RE_COMP 3 2014\-05\-28 GNU "Linux Programmer's Manual" -.SH 名前 -re_comp, re_exec \- BSD の正規表現関数 -.SH 書式 -\fB#define _REGEX_RE_COMP\fP -.br -\fB#include \fP -.br -\fB#include \fP -.sp -\fBchar *re_comp(const char *\fP\fIregex\fP\fB);\fP -.sp -\fBint re_exec(const char *\fP\fIstring\fP\fB);\fP -.SH 説明 -\fBre_comp\fP() は、 \fIregex\fP で示されるヌルで終端された正規表現をコンパイルするために使用される。 -コンパイルされたパターンは静的な領域を使用しており、そのパターンバッファー は以降の \fBre_comp\fP() の使用によって上書きされる。 もし -\fIregex\fP が NULL ならば何の操作も行われず、パターンバッファーの内容は 置き換えられない。 - -\fBre_exec\fP() は、 \fIstring\fP が指すヌルで終端された文字列が前回コンパイルされた \fIregex\fP -にマッチするかどうかを評価するために使用される。 -.SH 返り値 -\fBre_comp\fP() は、 \fIregex\fP のコンパイルに成功した場合 NULL を返し、 -それ以外の場合は適切なエラーメッセージへのポインターを返す。 - -\fBre_exec\fP() は、一致した場合 1 を、失敗した場合 0 を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBre_comp\fP() と \fBre_exec\fP() はスレッドセーフではない。 -.SH 準拠 -4.3BSD. -.SH 注意 -これらの関数は廃止予定である。代わりに \fBregcomp\fP(3) に書かれている関数を使用すべきである。 -.SH 関連項目 -\fBregcomp\fP(3), \fBregex\fP(7), GNU regex manual -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/readdir.3 b/manual/LDP_man-pages/draft/man3/readdir.3 deleted file mode 100644 index 8110d72c..00000000 --- a/manual/LDP_man-pages/draft/man3/readdir.3 +++ /dev/null @@ -1,198 +0,0 @@ -.\" 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 16:09:49 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 11 June 1995 by Andries Brouwer (aeb@cwi.nl) -.\" Modified 22 July 1996 by Andries Brouwer (aeb@cwi.nl) -.\" 2007-07-30 Ulrich Drepper , mtk: -.\" Rework discussion of nonstandard structure fields. -.\" 2008-09-11, mtk, Document readdir_r(). -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated 1997-12-24, HIROFUMI Nishizuka -.\" Updated & Modified 2002-03-24, Yuichi SATO -.\" Updated & Modified 2005-01-16, Yuichi SATO -.\" Updated & Modified 2005-09-06, Akihiro MOTOKI -.\" Updated 2008-08-11, Akihiro MOTOKI , LDP v3.05 -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH READDIR 3 2013\-06\-21 "" "Linux Programmer's Manual" -.SH 名前 -readdir, readdir_r \- ディレクトリを読み込む -.SH 書式 -.nf -\fB#include \fP -.sp -\fBstruct dirent *readdir(DIR *\fP\fIdirp\fP\fB);\fP -.sp -\fBint readdir_r(DIR *\fP\fIdirp\fP\fB, struct dirent *\fP\fIentry\fP\fB, struct dirent **\fP\fIresult\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.ad l -.in -.sp -\fBreaddir_r\fP(): -.RS 4 -_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE -|| _POSIX_SOURCE -.RE -.ad b -.SH 説明 -\fBreaddir\fP() 関数は、\fIdirp\fP が指すディレクトリストリームの中で、 次のディレクトリエントリーを表す \fIdirent\fP -構造体へのポインターを返す。 ディレクトリストリームの末尾に達した場合や、 エラーが発生した場合は、 NULL を返す。 -.PP -Linux では \fIdirent\fP 構造体は以下のように定義されている。 -.PP -.in +4n -.nf -struct dirent { - ino_t d_ino; /* inode 番号 */ - off_t d_off; /* オフセットではない; 注意を参照 */ - unsigned short d_reclen; /* このレコードの長さ */ - unsigned char d_type; /* ファイル種別。全ファイルシステム */ - でサポートされているわけではない */ - char d_name[256]; /* ファイル名 */ -}; -.fi -.in -.PP -\fIdirent\fP 構造体のフィールドで POSIX.1 で要求されているのは、 \fId_name\fP[] と (XSI 拡張での) \fId_ino\fP -だけである。 \fId_name\fP[] はその大きさも規定されておらず、 このフィールドには最大で \fBNAME_MAX\fP 個の文字と、それに続く終端の -ヌルバイト (\(aq\e0\(aq)が格納される。 他のフィールドは非標準であり、全てのシステムに存在するわけではない。 -詳細については、下記の「注意」を参照のこと。 -.PP -\fBreaddir\fP() によって返されるデータは、それ以降の同じストリームに対する \fBreaddir\fP() -の呼び出しによって上書きされる可能性がある。 - -\fBreaddir_r\fP() 関数は \fBreaddir\fP() のリエントラント版である。 この関数はディレクトリストリーム \fIdirp\fP -から次のディレクトリエントリーを読み込み、 \fIentry\fP が指す呼び出し元が割り当てたバッファーにそのエントリーを格納して返す -(このバッファーの割り当てについては「注意」の節を参照のこと)。 返されるエントリーへのポインターが \fI*result\fP -に格納される。ディレクトリストリームの末尾に達した場合は、 NULL が \fI*result\fP に格納される。 -.SH 返り値 -成功すると、 \fBreaddir\fP() は \fIdirent\fP 構造体へのポインターを返す。 (この構造体は静的に割り当てられているかもしれない。 -このポインターを \fBfree\fP(3) しようとしないこと。) ディレクトリストリームの末尾に達した場合には、NULL が返され、 \fIerrno\fP -は変化しない。 エラーが発生した場合、NULL が返され、 \fIerrno\fP が適切に設定される。 - -成功すると、 \fBreaddir_r\fP() 関数は 0 を返す。 エラーの場合、(「エラー」の節のリストに載っている) 正のエラー番号を返す。 -ディレクトリストリームの末尾に達した場合、 \fBreaddir_r\fP() は返り値として 0 を返し、 \fI*result\fP に NULL -を格納する。 -.SH エラー -.TP -\fBEBADF\fP -ディレクトリストリームディスクリプター \fIdirp\fP が無効である。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBreaddir\fP() 関数はスレッドセーフではない。 -.LP -\fBreaddir_r\fP() 関数はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001. -.SH 注意 -フィールド \fId_name\fP と \fId_ino\fP だけが POSIX.1\-2001 で規定されている。 -残りのフィールドは多くのシステムに存在するが、全てのシステムに 存在するわけではない。 glibc では、プログラムが POSIX.1 -で定義されていないフィールドが 利用できるかをチェックすることができる。 チェックするには、マクロ \fB_DIRENT_HAVE_D_NAMLEN\fP, -\fB_DIRENT_HAVE_D_RECLEN\fP, \fB_DIRENT_HAVE_D_OFF\fP, \fB_DIRENT_HAVE_D_TYPE\fP -が定義されているかをテストすればよい。 - -.\" https://lwn.net/Articles/544298/ -\fId_off\fP で返される値は \fBtelldir\fP(3) が返す値と同じで、ディレクトリストリーム内の現在の位置を示す。 -フィールドの型や名前はこうなっていますが、最近のファイルシステムでは \fId_off\fP -フィールドが何らかのディレクトリオフセットであることはめったいにない。アプリケーションプログラムでは、必ずこの値を内容を意識せず単なる値として扱うべきであり、その内容について前提を持つべきではない。 - -\fId_type\fP フィールドは、Linux 以外では、 主に BSD 系のシステムにだけ存在する。 このフィールドを使うと、 -その後の動作がファイルの種別により決まる場合に、 \fBlstat\fP(2) を呼び出すコストを避けることができる。 機能検査マクロ -\fB_BSD_SOURCE\fP が定義された場合、glibc は \fId_type\fP で返される値として以下のマクロ定数を定義する。 -.TP 12 -\fBDT_BLK\fP -ブロックデバイスである。 -.TP -\fBDT_CHR\fP -キャラクターデバイスである。 -.TP -\fBDT_DIR\fP -ディレクトリである。 -.TP -\fBDT_FIFO\fP -名前付きパイプ (FIFO) である。 -.TP -\fBDT_LNK\fP -シンボリックリンクである。 -.TP -\fBDT_REG\fP -通常のファイルである。 -.TP -\fBDT_SOCK\fP -UNIX ドメインソケットである。 -.TP -\fBDT_UNKNOWN\fP -.\" The glibc manual says that on some systems this is the only -.\" value returned -ファイルタイプが不明である。 -.PP -ファイル種別を決定できなかった場合には、 \fId_type\fP に \fBDT_UNKNOWN\fP が入る。 - -.\" kernel 2.6.27 -.\" The same sentence is in getdents.2 -現在のところ、 \fId_type\fP でファイルタイプを返す機能が完全にサポートされているのは、 いくつかのファイルシステムにおいてのみである -(Btrfs, ext2, ext3, ext4 はサポートしている)。 どのアプリケーションも、 \fBDT_UNKNOWN\fP -が返された際に適切に処理できなければならない。 - -POSIX.1 では \fId_name\fP フィールドのサイズは規定されておらず、 \fIdirent\fP 構造体の \fId_name\fP -の後ろに他の非標準のフィールドがあるかもしれないので、 移植性が必要なアプリケーションで \fBreaddir_r\fP() を使う場合は \fIentry\fP -に渡すバッファーを次のようにして割り当てるべきである。 -.in +4n -.nf - -name_max = pathconf(dirpath, _PC_NAME_MAX); -if (name_max == \-1) /* 上限が定義されていない、またはエラー */ - name_max = 255; /* 適当な値を入れる */ -len = offsetof(struct dirent, d_name) + name_max + 1; -entryp = malloc(len); - -.fi -.in -(POSIX.1 では \fIstruct dirent\fP の最後のフィールドが \fId_name\fP であることを要求している。) -.SH 関連項目 -\fBgetdents\fP(2), \fBread\fP(2), \fBclosedir\fP(3), \fBdirfd\fP(3), \fBftw\fP(3), -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/realpath.3 b/manual/LDP_man-pages/draft/man3/realpath.3 index 07129f5c..7719ac29 100644 --- a/manual/LDP_man-pages/draft/man3/realpath.3 +++ b/manual/LDP_man-pages/draft/man3/realpath.3 @@ -41,25 +41,28 @@ .\" Updated 2012-05-29, Akihiro MOTOKI .\" Updated 2013-03-27, Akihiro MOTOKI .\" -.TH REALPATH 3 2014\-10\-02 "" "Linux Programmer's Manual" +.TH REALPATH 3 2017\-09\-15 "" "Linux Programmer's Manual" .SH 名前 realpath \- 正規化された絶対パス名を返す .SH 書式 .nf \fB#include \fP \fB#include \fP -.sp +.PP \fBchar *realpath(const char *\fP\fIpath\fP\fB, char *\fP\fIresolved_path\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBrealpath\fP(): .ad l .RS 4 -_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +.\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +_XOPEN_SOURCE\ >=\ 500 + || /* Glibc since 2.19: */ _DEFAULT_SOURCE + || /* Glibc versions <= 2.19: */ _BSD_SOURCE .RE .ad .SH 説明 @@ -67,7 +70,7 @@ _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTEND \fI/../\fP による参照や余分な \(aq/\(aq を解決して、正規化された絶対パス名を生成する。 得られた絶対パス名は、最大で \fBPATH_MAX\fP バイトのヌル終端された文字列として、 \fIresolved_path\fP により参照されるバッファーに格納される。 結果として返るパスの中には、シンボリックリンクや \fI/./\fP, \fI/../\fP といった要素は含まれない。 - +.PP .\" Even if we use resolved_path == NULL, then realpath() will still .\" return ENAMETOOLONG if the resolved pathname would exceed PATH_MAX .\" bytes -- MTK, Dec 04 @@ -80,7 +83,7 @@ _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTEND 呼び出し元は、 \fBfree\fP(3) を使ってこのバッファーを解放すべきである。 .SH 返り値 エラーがなかった場合、 \fBrealpath\fP() は \fIresolved_path\fP へのポインターを返す。 - +.PP それ以外の場合は NULL が返り、配列 \fIresolved_path\fP の内容は不定となり、 \fIerrno\fP にエラーの内容を示す値がセットされる。 .SH エラー @@ -105,11 +108,25 @@ _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTEND \fBENOENT\fP 指定されたファイルが存在しない。 .TP +\fBENOMEM\fP +Out of memory. +.TP \fBENOTDIR\fP パスのディレクトリ要素が、ディレクトリでない。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBrealpath\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 4.4BSD, POSIX.1\-2001. - +.PP POSIX.1\-2001 では \fIresolved_path\fP が NULL の場合の動作は実装に依存するとしている。 POSIX.1\-2008 では、このマニュアルページに書かれている動作が規定されている。 .SH 注意 @@ -117,9 +134,9 @@ POSIX.1\-2001 では \fIresolved_path\fP が NULL の場合の動作は実装に \fBMAXPATHLEN\fP である。SUSv2 では \fBPATH_MAX\fP と \fBNAME_MAX\fP が規定されており、 これらは \fI\fP で定義されているか、 \fBpathconf\fP(3) 関数から得られる。以下のようなソースコードになっていることが多い。 -.LP +.PP .in +4n -.nf +.EX #ifdef PATH_MAX path_max = PATH_MAX; #else @@ -127,11 +144,10 @@ POSIX.1\-2001 では \fIresolved_path\fP が NULL の場合の動作は実装に if (path_max <= 0) path_max = 4096; #endif -.fi +.EE .in -.LP -(バグの章も参照のこと。) -.LP +.PP +.\".PP .\" 2012-05-05, According to Casper Dik, the statement about .\" Solaris was not true at least as far back as 1997, and .\" may never have been true. @@ -145,6 +161,7 @@ POSIX.1\-2001 では \fIresolved_path\fP が NULL の場合の動作は実装に .\" .BR realpath () .\" is given in \fI\fP in libc4 and libc5, .\" but in \fI\fP everywhere else. +(バグの章も参照のこと。) .SS "GNU による拡張" 呼び出しが \fBEACCES\fP か \fBENOENT\fP で失敗し \fIresolved_path\fP が NULL でない場合、読むことができない、もしくは存在しない \fIpath\fP のディレクトリ要素 (prefix) が \fIresolved_path\fP @@ -168,6 +185,5 @@ POSIX.1\-2001 では \fIresolved_path\fP が NULL の場合の動作は実装に \fBrealpath\fP(1), \fBreadlink\fP(2), \fBcanonicalize_file_name\fP(3), \fBgetcwd\fP(3), \fBpathconf\fP(3), \fBsysconf\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/recno.3 b/manual/LDP_man-pages/draft/man3/recno.3 index f00f9913..e66be945 100644 --- a/manual/LDP_man-pages/draft/man3/recno.3 +++ b/manual/LDP_man-pages/draft/man3/recno.3 @@ -46,7 +46,7 @@ .\" Proofed Tue Aug 19 1999 by NAKANO Takeo .\" Updated 2012-05-01, Akihiro MOTOKI .\" -.TH RECNO 3 2012\-04\-23 "" "Linux Programmer's Manual" +.TH RECNO 3 2017\-09\-15 "" "Linux Programmer's Manual" .UC 7 .SH 名前 recno \- レコード番号データベースへのアクセスメソッド @@ -61,7 +61,7 @@ recno \- レコード番号データベースへのアクセスメソッド ついて説明している。バージョン 2.2 以降の glibc では、もはやこれらの インターフェースは提供されていない。おそらく、このページではなく、 \fIlibdb\fP ライブラリが提供する API をお探しなのだろう。 - +.PP ルーチン \fBdbopen\fP(3) はデータベースファイルに対するライブラリインターフェースである。 サポートされているファイルフォーマットの一つに、 レコード番号ファイル (record number file: recno file) がある。 データベースへのアクセスメソッドに関する一般的な記述は \fBdbopen\fP(3), に書かれている。 このマニュアルページでは recno 特有の情報についてのみ記述する。 @@ -74,7 +74,7 @@ recno \- レコード番号データベースへのアクセスメソッド インクルードファイルで次のように定義されている。 .PP .in +4n -.nf +.EX typedef struct { unsigned long flags; unsigned int cachesize; @@ -84,7 +84,7 @@ typedef struct { unsigned char bval; char *bfname; } RECNOINFO; -.fi +.EE .in .PP この構造体の要素を以下に示す。 @@ -153,11 +153,10 @@ recno アクセスメソッドのファイルに関連づけられる メタデ バイトオーダーとしてはビッグエンディアンとリトルエンディアンのみが サポートされている。 .SH 関連項目 \fBbtree\fP(3), \fBdbopen\fP(3), \fBhash\fP(3), \fBmpool\fP(3) - +.PP \fIDocument Processing in a Relational Database System\fP, Michael Stonebraker, Heidi Stettner, Joseph Kalash, Antonin Guttman, Nadene Lynn, Memorandum No. UCB/ERL M82/32, May 1982. .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/regex.3 b/manual/LDP_man-pages/draft/man3/regex.3 deleted file mode 100644 index d8c8e8af..00000000 --- a/manual/LDP_man-pages/draft/man3/regex.3 +++ /dev/null @@ -1,196 +0,0 @@ -.\" Copyright (C), 1995, Graeme W. Wilford. (Wilf.) -.\" -.\" %%%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 -.\" -.\" Wed Jun 14 16:10:28 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) -.\" Tiny change in formatting - aeb, 950812 -.\" Modified 8 May 1998 by Joseph S. Myers (jsm28@cam.ac.uk) -.\" -.\" show the synopsis section nicely -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 Takatsugu Nokubi -.\" all rights reserved. -.\" Translated 1998-06-30, Takatsugu Nokubi -.\" Updated & Modified 2001-11-05, Yuichi SATO -.\" Updated & Modified 2005-02-24, Yuichi SATO -.\" Updated 2008-08-02, Akihiro MOTOKI , LDP v3.05 -.\" Updated 2013-03-27, Akihiro MOTOKI -.\" -.TH REGEX 3 2013\-02\-11 GNU "Linux Programmer's Manual" -.SH 名前 -regcomp, regexec, regerror, regfree \- POSIX regex 関数 -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP - -\fBint regcomp(regex_t *\fP\fIpreg\fP\fB, const char *\fP\fIregex\fP\fB, int \fP\fIcflags\fP\fB);\fP - -\fBint regexec(const regex_t *\fP\fIpreg\fP\fB, const char *\fP\fIstring\fP\fB, size_t \fP\fInmatch\fP\fB,\fP -\fB regmatch_t \fP\fIpmatch[]\fP\fB, int \fP\fIeflags\fP\fB);\fP - -\fBsize_t regerror(int \fP\fIerrcode\fP\fB, const regex_t *\fP\fIpreg\fP\fB, char *\fP\fIerrbuf\fP\fB,\fP -\fB size_t \fP\fIerrbuf_size\fP\fB);\fP - -\fBvoid regfree(regex_t *\fP\fIpreg\fP\fB);\fP -.fi -.SH 説明 -.SS "POSIX regex コンパイル" -\fBregcomp\fP() は、正規表現をコンパイルして、 \fBregexec\fP() での検索処理に適合する形態にする。 - -\fBregcomp\fP() はパターンを記憶するバッファーへのポインター \fIpreg\fP、 ヌル文字で終端された文字列 \fIregex\fP、 -そしてコンパイルの形式を決めるためのフラグ \fIcflag\fP を引数に伴う。 - -全ての正規表現検索は、コンパイルされたパターンによって行わなければならない。 よって、 \fBregexec\fP() に指定するのは、必ず -(\fBregcomp\fP() によってコンパイルされた) パターンバッファーへのアドレスでなければならない。 - -\fIcflags\fP には以下に示す定数一つ以上のビットごとの OR (bitwise\-or) を指定する。 -.TP -\fBREG_EXTENDED\fP -\fIregex\fP に \fBPOSIX\fP 拡張正規表現を使用する。もしこのフラグが設定されない場合、 \fBPOSIX\fP 標準正規表現が使われる。 -.TP -\fBREG_ICASE\fP -大文字小文字の違いを無視する。このフラグを指定してコンパイルされた パターンバッファーを用いて \fBregexec\fP() -関数を呼び出すと、大文字小文字の区別を付けずに検索が行われる。 -.TP -\fBREG_NOSUB\fP -マッチの場所を報告しない。渡されたパターンバッファーがこのフラグを設定してコンパイルされていた場合、 \fBregexec\fP() の引き数 -\fInmatch\fP, \fIpmatch\fP が無視される。 -.TP -\fBREG_NEWLINE\fP -全ての文字にマッチするオペレータに改行をマッチさせない。 - -改行を含まない非マッチング文字リスト (\fB[^...]\fP) に改行をマッチさせない。 - -\fBregexec\fP() の実行時に指定するフラグ \fIeflags\fP に \fBREG_NOTBOL\fP -を含むかどうかにかかわらず、行頭にマッチするオペレータ (\fB^\fP) を改行直後の空文字列にマッチさせる。 - -\fIeflags\fP に \fBREG_NOTEOL\fP を含むかどうかにかかわらず、行末にマッチするオペレータ (\fB$\fP) -を改行直前の空文字列にマッチさせる。 -.SS "POSIX regex マッチング" -\fBregexec\fP() は、 プリコンパイルされたパターンバッファー \fIpreg\fP をヌル文字で終端された文字列にマッチさせる。 -\fInmatch\fP と \fIpmatch\fP はマッチングの位置に関する情報を取得するのに用いられる。 \fIeflags\fP には -\fBREG_NOTBOL\fP と \fBREG_NOTEOL\fP のどちらか、もしくは両方のビットごとの \fBOR\fP (bitwise\-\fBor\fP) -を指定し、以下で説明するようにマッチング動作を変化させる。 -.TP -\fBREG_NOTBOL\fP -行頭にマッチするオペレータは、必ずマッチに失敗する (コンパイル時のフラグ \fBREG_NEWLINE\fP の項目も参照)。 -このフラグは、複数行にまたがる文字列を \fBregexec\fP() で検索する際に、文字列の先頭を行の先頭として解釈させない場合に用いる。 -.TP -\fBREG_NOTEOL\fP -行末にマッチするオペレータは、必ずマッチに失敗する (コンパイル時のフラグ \fBREG_NEWLINE\fP の項目も参照)。 -.SS バイトオフセット -パターンバッファーのコンパイル時に \fBREG_NOSUB\fP が設定されない場合は、マッチング位置情報を得ることができる。 \fIpmatch\fP -は、少なくとも \fInmatch\fP の大きさを持つように指定しなければならない。 \fBregexec\fP() -の実行によって、それらに部分文字列マッチング位置情報が代入される。 \fIi\fP 番目の括弧で始まる部分正規表現のオフセットは \fIpmatch[i]\fP -に格納される。正規表現全体のマッチアドレスは \fIpmatch[0]\fP に格納される。 (\fIN\fP 個の部分正規表現のマッチのオフセットを返すためには、 -\fInmatch\fP は最低限 \fIN+1\fP でなければならない点に注意すること。) 未使用の構造体要素には \-1 が値として代入される。 - -\fIpmatch\fP の型である \fIregmatch_t\fP 構造体は、 \fI\fP 内で定義される。 - -.in +4n -.nf -typedef struct { - regoff_t rm_so; - regoff_t rm_eo; -} regmatch_t; -.fi -.in - -構造体要素 \fIrm_so\fP の値が \-1 でない場合、それは文字列内での次の最大のマッチング部分の開始 オフセット位置を示す。それに対し、構造体要素 -\fIrm_eo\fP はマッチング部分の終了オフセット位置を示し、 マッチング部分の直後の文字のオフセット位置が使用される。 -.SS "POSIX エラーレポート" -\fBregerror\fP() は、 \fBregcomp\fP() と \fBregexec\fP() -の実行によって得られるエラーコードから、エラーメッセージ文字列を 得るのに用いられる。 - -\fBregerror\fP() はエラーコード \fIerrcode\fP、 パターンバッファー \fIpreg\fP、 文字列バッファーへのポインター -\fIerrbuf\fP、 文字列バッファーのサイズ \fIerrbuf_size\fP を引数にとる。 -この関数は、ヌル文字で終端されたエラーメッセージ文字列を格納するのに必要な \fIerrbuf\fP のサイズを返す。もし \fIerrbuf\fP と -\fIerrbuf_size\fP の両方が非 0 値であれば、 \fIerrbuf\fP には最初の \fIerrbuf_size \- 1\fP -文字分にエラーメッセージと終端のヌルバイト (\(aq\e0\(aq) が収まるように代入される。 -.SS "POSIX パターンバッファー解放" -引数にコンパイルされたパターンバッファー \fIpreg\fP を与えて \fBregfree\fP() を呼び出すと、 \fBregcomp\fP() -によるコンパイル時にパターンバッファーに割り当てられたメモリーが解放される。 -.SH 返り値 -\fBregcomp\fP() は、コンパイルの成功時には 0 を返し、失敗時にはエラーコードを返す。 - -\fBregexec\fP() は、マッチングの成功時には 0 を返し、失敗時には \fBREG_NOMATCH\fP を返す。 -.SH エラー -\fBregcomp\fP() は以下のエラーを返す。 -.TP -\fBREG_BADBR\fP -無効な後方参照オペレータの使用。 -.TP -\fBREG_BADPAT\fP -グループやリストなどの、パターンオペレータの無効な使用。 -.TP -\fBREG_BADRPT\fP -\(aq*\(aq が最初の文字としてくるような、無効な繰り返しオペレータの使用。 -.TP -\fBREG_EBRACE\fP -インターバルオペレータ \fB{}\fP (brace interval operators) が閉じていない。 -.TP -\fBREG_EBRACK\fP -リストオペレータ \fB[]\fP (bracket list operators) が閉じていない。 -.TP -\fBREG_ECOLLATE\fP -照合順序の要素 (collating element) として有効ではない。 (訳注) 詳細は \fBregex\fP(7) を参照。 -.TP -\fBREG_ECTYPE\fP -未知のキャラクタークラス名。 -.TP -\fBREG_EEND\fP -未定義エラー。これは POSIX.2 には定義されていない。 -.TP -\fBREG_EESCAPE\fP -正規表現がバックスラッシュで終っている。 -.TP -\fBREG_EPAREN\fP -グループオペレータ \fB()\fP (parenthesis group operators) が閉じていない。 -.TP -\fBREG_ERANGE\fP -無効な範囲オペレータの使用。 例えば、範囲の終了位置が開始位置よりも前にあるような場合。 -.TP -\fBREG_ESIZE\fP -正規表現のコンパイルに、64Kb 以上のパターンバッファーが必要。 これは POSIX.2 には定義されていない。 -.TP -\fBREG_ESPACE\fP -regex ルーチンがメモリーを使いはたしている。 -.TP -\fBREG_ESUBREG\fP -サブエクスプレッション \e\fB(...\e\fP) (subexpression) への無効な後方参照。 -.SH 準拠 -POSIX.1\-2001. -.SH 関連項目 -\fBgrep\fP(1), \fBregex\fP(7) -.br -glibc マニュアルのセクション \fIRegular Expression Matching\fP -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/remainder.3 b/manual/LDP_man-pages/draft/man3/remainder.3 deleted file mode 100644 index 763433e5..00000000 --- a/manual/LDP_man-pages/draft/man3/remainder.3 +++ /dev/null @@ -1,155 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-08-10 Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" Modified 2003-11-18, 2004-10-05 aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" and Copyright (c) 2008 Akihiro MOTOKI -.\" Translated 2004-09-02, Yuichi SATO -.\" Updated 2005-02-26, Akihiro MOTOKI -.\" Modified 2005-02-26, Yuichi SATO -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH REMAINDER 3 2010\-09\-20 "" "Linux Programmer's Manual" -.SH 名前 -drem, dremf, dreml, remainder, remainderf, remainderl \- 浮動小数点剰余関数 -.SH 書式 -.nf -\fB#include \fP -.sp -/* C99 版 */ -\fBdouble remainder(double \fP\fIx\fP\fB, double \fP\fIy\fP\fB);\fP -\fBfloat remainderf(float \fP\fIx\fP\fB, float \fP\fIy\fP\fB);\fP -\fBlong double remainderl(long double \fP\fIx\fP\fB, long double \fP\fIy\fP\fB);\fP -.sp -/* 廃止された別名 */ -\fBdouble drem(double \fP\fIx\fP\fB, double \fP\fIy\fP\fB);\fP -\fBfloat dremf(float \fP\fIx\fP\fB, float \fP\fIy\fP\fB);\fP -\fBlong double dreml(long double \fP\fIx\fP\fB, long double \fP\fIy\fP\fB);\fP -.sp -.fi -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBremainder\fP(): -.RS 4 -_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBremainderf\fP(), \fBremainderl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBdrem\fP(), \fBdremf\fP(), \fBdreml\fP(): -.RS 4 -_SVID_SOURCE || _BSD_SOURCE -.RE -.ad b -.SH 説明 -\fBremainder\fP() 関数は \fIx\fP を \fIy\fP で割った余りを計算する。 返り値は \fIx\fP\-\fIn\fP*\fIy\fP である。 ここで -\fIn\fP は \fIx\ /\ y\fP の値を最も近い整数に丸めたものである。 \fIx\fP\-\fIn\fP*\fIy\fP の絶対値が 0.5 の場合、偶数になるように -\fIn\fP が選ばれる。 - -これらの関数は、現在の丸めモードの影響を受けない (丸めモードについては \fBfenv\fP(3) を参照)。 -.LP -\fBdrem\fP() 関数はこれと全く同じ動作をする。 -.SH 返り値 -成功すると、これらの関数は浮動小数点の剰余 \fIx\fP\-\fIn\fP*\fIy\fP を返す。 返り値が 0 の場合、その符号は \fIx\fP と同じになる。 - -\fIx\fP か \fIy\fP が NaN の場合、NaN が返される。 - -\fIx\fP が無限大で \fIy\fP が NaN でない場合、 領域エラー (domain error) が発生し、NaN が返される。 - -.\" FIXME . Instead, glibc gives a domain error even if x is a NaN -.\" Interestingly, remquo(3) does not have the same problem. -\fIy\fP がゼロで \fIx\fP が NaN でない場合、 領域エラー (domain error) が発生し、NaN が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が無限大で \fIy\fP が NaN ではない -.\" .I errno -.\" is set to -.\" .BR EDOM . -不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.IP -.\" FIXME . Is it intentional that these functions do not set errno? -.\" They do set errno for the y == 0 case, below. -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6783 -これらの関数は、この場合に \fIerrno\fP を設定しない。 -.TP -.\" [XXX see bug above] and \fIx\fP is not a NaN -領域エラー: \fIy\fP がゼロ -\fIerrno\fP に \fBEDOM\fP が設定される。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.SH 準拠 -.\" IEC 60559. -関数 \fBremainder\fP(), \fBremainderf\fP(), \fBremainderl\fP() は C99 と POSIX.1\-2001 -で規定されている。 - -関数 \fBdrem\fP() は 4.3BSD に由来する。 \fIfloat\fP と \fIlong double\fP 版の \fBdremf\fP() と -\fBdreml\fP() は、Tru64 や glibc2 のようないくつかのシステムに存在する。 これらの関数の使用は避けて、 -\fBremainder\fP() などを使用すること。 -.SH バグ -呼び出し - - remainder(nan(""), 0); - -.\" FIXME . this bug occurs as at glibc 2.8. -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6779 -を行うと、期待通り Nan が返るが、誤って領域エラーが発生する。 正しくはエラーなしの Nan となるべきである。 -.SH 例 -"remainder(29.0, 3.0)" を呼び出すと \-1 を返す。 -.SH 関連項目 -\fBdiv\fP(3), \fBfmod\fP(3), \fBremquo\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/remove.3 b/manual/LDP_man-pages/draft/man3/remove.3 deleted file mode 100644 index c6e51ac4..00000000 --- a/manual/LDP_man-pages/draft/man3/remove.3 +++ /dev/null @@ -1,87 +0,0 @@ -.\" This file is derived from unlink.2, which has the following copyright: -.\" -.\" This manpage is Copyright (C) 1992 Drew Eckhardt; -.\" 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 -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 Ueyama Rui -.\" all rights reserved. -.\" Translated Wed Feb 20 15:01:46 JST 1998 -.\" by Ueyama Rui -.\" Updated Sat Dec 11 JST 1999 by Kentaro Shirakata -.\" Updated Mon Feb 17 JST 2003 by Kentaro Shirakata -.\" -.TH REMOVE 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -remove \- ファイルやディレクトリを削除する -.SH 書式 -\fB#include \fP -.sp -\fBint remove(const char *\fP\fIpathname\fP\fB);\fP -.SH 説明 -\fBremove\fP() はファイルシステムからファイル名を削除する。 ファイルに対しては \fBunlink\fP(2) を、ディレクトリに対しては -\fBrmdir\fP(2) を呼び出す。 - -もしその名前が ファイルへの最後のリンクで、かつ、どのプロセスもそのファイルを 開いていないなら、ファイルも削除する。ファイルの占めていた -領域は他で使うことができるようになる。 - -名前がファイルへの最後のリンクであっても、どこかのプロセスが そのファイルを開いているなら、ファイルの最後のファイルディスクリプター (file -descriptor) が閉じられるまでファイルは存在し続ける。 - -名前が指しているのがシンボリックリンクなら、そのリンクを削除する。 - -名前が指しているのがソケット、FIFO、デバイスの場合、名前は削除されるが、 そのソケットなどを開いているプロセスはそのまま使い続けることができる。 -.SH 返り値 -成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -発生するエラーは \fBunlink\fP(2) および \fBrmdir\fP(2) と同じものである。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBremove\fP() はスレッドセーフである。 -.SH 準拠 -.\" .SH NOTES -.\" Under libc4 and libc5, -.\" .BR remove () -.\" was an alias for -.\" .BR unlink (2) -.\" (and hence would not remove directories). -C89, C99, 4.3BSD, POSIX.1\-2001. -.SH バグ -NFS プロトコルに内在する問題により、まだ使用中のファイルが想定外に消えてしまうことがありえる。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/remquo.3 b/manual/LDP_man-pages/draft/man3/remquo.3 deleted file mode 100644 index 0d502acc..00000000 --- a/manual/LDP_man-pages/draft/man3/remquo.3 +++ /dev/null @@ -1,101 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk -.\" -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" based on glibc infopages -.\" polished, aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Yuichi SATO -.\" and Copyright (c) 2008 Akihiro MOTOKI -.\" Translated Tue Feb 1 06:39:08 JST 2005 -.\" by Yuichi SATO -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH REMQUO 3 2014\-05\-10 GNU "Linux Programmer's Manual" -.SH 名前 -remquo, remquof, remquol \- 商の一部と剰余を求める -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble remquo(double \fP\fIx\fP\fB, double \fP\fIy\fP\fB, int *\fP\fIquo\fP\fB);\fP -.br -\fBfloat remquof(float \fP\fIx\fP\fB, float \fP\fIy\fP\fB, int *\fP\fIquo\fP\fB);\fP -.br -\fBlong double remquol(long double \fP\fIx\fP\fB, long double \fP\fIy\fP\fB, int *\fP\fIquo\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBremquo\fP(), \fBremquof\fP(), \fBremquol\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -これらの関数は \fIx\fP を \fIy\fP で割ったときの商の一部と剰余を計算する。 商のいくつかのビットが \fIquo\fP ポインターを使って格納される。 -剰余は関数の結果として返される。 - -剰余の値は \fBremainder\fP(3) 関数で計算されるものと同じである。 - -\fIquo\fP ポインターを使って格納される値には、 \fIx\ /\ y\fP の符号と最低でも商の下位 3 ビットが含まれる。 - -.\" A possible application of this function might be the computation -.\" of sin(x). Compute remquo(x, pi/2, &quo) or so. -.\" -.\" glibc, UnixWare: return 3 bits -.\" MacOS 10: return 7 bits -たとえば \fIremquo(29.0,\ 3.0)\fP は \-1.0 を返し、 (訳注: quo の指しているものには) 2 が格納される。 -実際の商が整数値にならない点に注意すること。 -.SH 返り値 -成功すると、これらの関数は \fBremainder\fP(3) に書かれている同様の関数と同じ値を返す。 - -\fIx\fP か \fIy\fP が NaN の場合、NaN が返される。 - -\fIx\fP が無限大で \fIy\fP が NaN でない場合、 領域エラー (domain error) が発生し、NaN が返される。 - -\fIy\fP がゼロで \fIx\fP が NaN でない場合、 領域エラー (domain error) が発生し、NaN が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が無限大か \fIy\fP が 0 で、 他の引き数が NaN でない -.\" .I errno -.\" is set to -.\" .BR EDOM . -不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.PP -.\" FIXME . Is it intentional that these functions do not set errno? -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6802 -これらの関数は \fIerrno\fP を設定しない。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBremquo\fP(), \fBremquof\fP(), \fBremquol\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 関連項目 -\fBfmod\fP(3), \fBlogb\fP(3), \fBremainder\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 97b8788a..00000000 --- a/manual/LDP_man-pages/draft/man3/resolver.3 +++ /dev/null @@ -1,197 +0,0 @@ -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 Shinji Orito all rights reserved. -.\" Translated Mon May 25 21:27:03 JST 1998 -.\" by Shinji Orito -.\" Updated & Modified Thu Feb 17 03:58:45 JST 2005 -.\" by Yuichi SATO -.\" Updated 2012-05-05, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH RESOLVER 3 2014\-05\-28 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 \fP -\fB#include \fP -\fB#include \fP -\fBextern struct __res_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, const unsigned char *\fP\fIdata\fP\fB, int \fP\fIdatalen\fP\fB,\fP -\fBconst unsigned char *\fP\fInewrr\fP\fB, unsigned char *\fP\fIbuf\fP\fB, int \fP\fIbuflen\fP\fB);\fP -.RE -.sp -\fBint res_send(const unsigned char *\fP\fImsg\fP\fB, int \fP\fImsglen\fP\fB,\fP -.RS -\fBunsigned char *\fP\fIanswer\fP\fB, int \fP\fIanslen\fP\fB);\fP -.RE -.sp -\fBint dn_comp(const 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(const unsigned char *\fP\fImsg\fP\fB, const unsigned char *\fP\fIeomorig\fP\fB,\fP -.RS -\fBconst unsigned 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\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\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. -デバッグ情報を表示する。このオプションは、 glibc がデバッグを有効にしてコンパイルされている場合にのみ利用できる。 デフォルトでは glibc -のデバッグは有効になっていない。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/rewinddir.3 b/manual/LDP_man-pages/draft/man3/rewinddir.3 deleted file mode 100644 index d6101b9d..00000000 --- a/manual/LDP_man-pages/draft/man3/rewinddir.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" 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:29:11 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 11 June 1995 by Andries Brouwer (aeb@cwi.nl) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Wed Dec 24 12:34:00 JST 1997 -.\" by HIROFUMI Nishizuka -.\" -.TH REWINDDIR 3 2013\-09\-02 "" "Linux Programmer's Manual" -.SH 名前 -rewinddir \- ディレクトリストリームの初期化 -.SH 書式 -.nf -\fB#include \fP -.sp -\fB#include \fP -.sp -\fBvoid rewinddir(DIR *\fP\fIdirp\fP\fB);\fP -.fi -.SH 説明 -\fBrewinddir\fP() 関数は、ディレクトリストリーム \fIdirp\fP の位置を ディレクトリの先頭に初期化する。 -.SH 返り値 -\fBrewinddir\fP() 関数は、値を返さない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBrewinddir\fP() 関数はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001. -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/rexec.3 b/manual/LDP_man-pages/draft/man3/rexec.3 index 34fd6442..8813312a 100644 --- a/manual/LDP_man-pages/draft/man3/rexec.3 +++ b/manual/LDP_man-pages/draft/man3/rexec.3 @@ -49,24 +49,31 @@ .\" Updated 2012-05-05, Akihiro MOTOKI .\" Updated 2013-07-24, Akihiro MOTOKI .\" -.TH REXEC 3 2014\-05\-28 Linux "Linux Programmer's Manual" +.TH REXEC 3 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 rexec, rexec_af \- リモートコマンドへのストリームを返す .SH 書式 .nf -\fB#define _BSD_SOURCE\fP /* feature_test_macros(7) 参照 */ \fB#include \fP -.sp -\fBint rexec(char **\fP\fIahost\fP\fB, int \fP\fIinport\fP\fB, const char *\fP\fIuser\fP\fB, \fP +.PP +\fBint rexec(char **\fP\fIahost\fP\fB, int \fP\fIinport\fP\fB, const char *\fP\fIuser\fP\fB,\fP \fB const char *\fP\fIpasswd\fP\fB, const char *\fP\fIcmd\fP\fB, int *\fP\fIfd2p\fP\fB);\fP -.sp -\fBint rexec_af(char **\fP\fIahost\fP\fB, int \fP\fIinport\fP\fB, const char *\fP\fIuser\fP\fB, \fP +.PP +\fBint rexec_af(char **\fP\fIahost\fP\fB, int \fP\fIinport\fP\fB, const char *\fP\fIuser\fP\fB,\fP \fB const char *\fP\fIpasswd\fP\fB, const char *\fP\fIcmd\fP\fB, int *\fP\fIfd2p\fP\fB,\fP \fB sa_family_t \fP\fIaf\fP\fB);\fP .fi +.PP +\fBrexec\fP(), \fBrexec_af\fP(): +.nf + Since glibc 2.19: + _DEFAULT_SOURCE + In glibc up to and including 2.19: + _BSD_SOURCE +.fi .SH 説明 このインターフェースは \fBrcmd\fP(3) によって置き換えられた。 - +.PP \fBrexec\fP() 関数は \fBgethostbyname\fP(3) を使ってホスト \fI*ahost\fP を探す。ホストが存在しない場合は \-1 を返し、それ以外の場合には \fI*ahost\fP にそのホストの標準的な名前を設定する。 ユーザー名とパスワードの両方が指定された場合には、これらは 接続先のホストへの認証に利用される。そうでない場合には、 適切な情報を入手するために、環境変数と、そのユーザーの ホームディレクトリの @@ -77,14 +84,19 @@ rexec, rexec_af \- リモートコマンドへのストリームを返す 参照)、この構造体には必要なポートが入っている。 接続に使用されるプロトコルについての詳細は \fBrexecd\fP(8) に書かれている (訳注: 現在のところ存在しない)。 .PP -接続に成功すると、インターネットドメインの \fBSOCK_STREAM\fP 型のソケットが返され、そのソケットはリモートコマンドの -標準入力および標準出力となる。 \fIfd2p\fP が 0 以外の場合、制御プロセスへの補助チャンネルがセットアップされ、 -補助チャンネルのディスクリプターが \fI*fd2p\fP に書かれる。 制御プロセスはコマンドからの診断メッセージ出力 (ファイルディスクリプター 2) -をこのチャンネルで返す。また、このチャンネル経由で UNIX のシグナル番号を示すバイトを受信する。受信したシグナルは -コマンドが属すプロセスグループに転送される。 診断情報にはリモートの認証失敗は含まれない。なぜなら、認証の確認が行われた -後で補助チャンネルの接続はセットアップされるからである。 \fIfd2p\fP が 0 の場合、標準エラー (リモートコマンドのファイルディスクリプター 2) -は 標準出力と同様に扱われ、リモートプロセスに任意のシグナルを送るための 手段は提供されない。但し、リモートプロセスに対してトリガーをかけるために、 -帯域外データ (out\-of\-band data) を使うことはできる。 +If the connection succeeds, a socket in the Internet domain of type +\fBSOCK_STREAM\fP is returned to the caller, and given to the remote command as +\fIstdin\fP and \fIstdout\fP. If \fIfd2p\fP is nonzero, then an auxiliary channel to +a control process will be setup, and a file descriptor for it will be placed +in \fI*fd2p\fP. The control process will return diagnostic output from the +command (unit 2) on this channel, and will also accept bytes on this channel +as being UNIX signal numbers, to be forwarded to the process group of the +command. The diagnostic information returned does not include remote +authorization failure, as the secondary connection is set up after +authorization has been verified. If \fIfd2p\fP is 0, then the \fIstderr\fP (unit +2 of the remote command) will be made the same as the \fIstdout\fP and no +provision is made for sending arbitrary signals to the remote process, +although you may be able to get its attention by using out\-of\-band data. .SS rexec_af() \fBrexec\fP() 関数は IPv4 (\fBAF_INET\fP) 上で動作する。 これに対して、 \fBrexec_af\fP() 関数は追加の引き数 \fIaf\fP があり、 @@ -94,12 +106,21 @@ rexec, rexec_af \- リモートコマンドへのストリームを返す .SH バージョン \fBrexec_af\fP() 関数は glibc バージョン 2.9 で追加された。 .SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBrexec\fP() と \fBrexec_af\fP() はスレッドセーフではない。 +この節で使用されている用語の説明は \fBattributes\fP(7) を参照のこと。 +.TS +allbox; +lbw19 lb lb +l l l. +Interface Attribute Value +T{ +\fBrexec\fP(), +\fBrexec_af\fP() +T} Thread safety MT\-Unsafe +.TE .SH 準拠 -これらの関数は POSIX.1\-2001 にはない。\fBrexec\fP() 関数は 4.2BSD で始めて -登場し、BSD 系、Solaris や他の多くのシステムに存在する。\fBrexec_af\fP() -関数はもっと新しく、それほど広く使われているわけではない。 +These functions are not in POSIX.1. The \fBrexec\fP() function first appeared +in 4.2BSD, and is present on the BSDs, Solaris, and many other systems. The +\fBrexec_af\fP() function is more recent, and less widespread. .SH バグ \fBrexec\fP() 関数はネットワークに暗号化されていないパスワードを送信する。 .PP @@ -108,6 +129,5 @@ rexec, rexec_af \- リモートコマンドへのストリームを返す .SH 関連項目 \fBrcmd\fP(3), \fBrexecd\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/rint.3 b/manual/LDP_man-pages/draft/man3/rint.3 deleted file mode 100644 index b2d25937..00000000 --- a/manual/LDP_man-pages/draft/man3/rint.3 +++ /dev/null @@ -1,124 +0,0 @@ -.\" Copyright 2001 Andries Brouwer . -.\" and Copyright 2008, Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" and Copyright (c) 2008 Akihiro MOTOKI -.\" Translated Tue Jan 21 20:52:09 JST 1997 -.\" by YOSHINO Takashi -.\" Updated & Modified Fri Jul 6 20:42:59 JST 2001 -.\" by Yuichi SATO -.\" Updated & Modified Sun Jan 16 07:40:37 JST 2005 -.\" by Yuichi SATO -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH RINT 3 2013\-08\-26 "" "Linux Programmer's Manual" -.SH 名前 -nearbyint, nearbyintf, nearbyintl, rint, rintf, rintl \- 最も近い整数に丸める -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble nearbyint(double \fP\fIx\fP\fB);\fP -.br -\fBfloat nearbyintf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double nearbyintl(long double \fP\fIx\fP\fB);\fP -.sp -\fBdouble rint(double \fP\fIx\fP\fB);\fP -.br -\fBfloat rintf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double rintl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBnearbyint\fP(), \fBnearbyintf\fP(), \fBnearbyintl\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _POSIX_C_SOURCE\ >=\ 200112L || -_ISOC99_SOURCE; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBrint\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBrintf\fP(), \fBrintl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -関数 \fBnearbyint\fP(), \fBnearbyintf\fP(), and \fBnearbyintl\fP() は、現在の丸め方向 -(\fBfesetround\fP(3) 参照) で引き数を浮動小数点形式の整数に丸める。 \fIinexact\fP 例外を出さない。 -.LP -関数 \fBrint\fP(), \fBrintf\fP(), and \fBrintl\fP() も同じような動作をするが、 結果が引き数と異なる場合に -\fIinexact\fP 例外 (\fBFE_INEXACT\fP) を出す (この例外は \fBfetestexcept\fP(3) 経由で確認可能)。 -.SH 返り値 -これらの関数は丸めた整数値を返す。 - -\fIx\fP が整数、+0、\-0、NaN、無限のいずれかの場合、 \fIx\fP そのものが返される。 -.SH エラー -エラーは発生しない。 POSIX.1\-2001 にはオーバーフローでの範囲エラー (range error) の 記載がある。「注意」の節を参照のこと。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBnearbyint\fP(), \fBnearbyintf\fP(), \fBnearbyintl\fP(), \fBrint\fP(), \fBrintf\fP(), -\fBrintl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 注意 -SUSv2 と POSIX.1\-2001 にはオーバーフローに関する記述があり、 オーバーフローの場合には、 \fIerrno\fP を \fBERANGE\fP -に設定するか、 \fBFE_OVERFLOW\fP 例外を発生することとされている。 -実際のところ、どの現行のマシンでも結果がオーバーフローを起こすことはないので、 このエラー処理は意味がない。 -(より正確に言うと、オーバーフローは指数部の最大値が 仮数部を表すビットの数より小さい場合にしか起こらない。 IEEE\-754 規格の 32 ビットと -64 ビットの浮動小数では、 指数部の最大値はそれぞれ 128 と 1024 であり、 仮数部のビット数はそれぞれ 24 と 53 である。) - -丸めた値を整数型に格納した場合には、おそらくこの関数ではなく \fBlrint\fP(3) に載っている関数のどれかを使いたいのだろう。 -.SH 関連項目 -\fBceil\fP(3), \fBfloor\fP(3), \fBlrint\fP(3), \fBround\fP(3), \fBtrunc\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/round.3 b/manual/LDP_man-pages/draft/man3/round.3 deleted file mode 100644 index ae436f3d..00000000 --- a/manual/LDP_man-pages/draft/man3/round.3 +++ /dev/null @@ -1,102 +0,0 @@ -.\" Copyright 2001 Andries Brouwer . -.\" and Copyright 2008, Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001, 2005 Yuichi SATO -.\" and Copyright (c) 2008 Akihiro MOTOKI -.\" Translated Fri Jul 13 20:33:41 JST 2001 -.\" by Yuichi SATO -.\" Updated & Modified Sun Jan 16 07:59:12 JST 2005 -.\" by Yuichi SATO -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH ROUND 3 2013\-06\-21 "" "Linux Programmer's Manual" -.SH 名前 -round, roundf, roundl \- 最も近い整数値に丸める (2 つの整数の中間値の場合は 0 から遠い方に丸める) -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble round(double \fP\fIx\fP\fB);\fP -.br -\fBfloat roundf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double roundl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBround\fP(), \fBroundf\fP(), \fBroundl\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -これらの関数は \fIx\fP を最も近い整数値に丸める。 2 つの整数の中間値の場合は、 \fBrint\fP(3) のように最も近い偶数に丸めたりせずに、 -(現在の丸め方向に関係なく) 0 から遠い方に丸める (丸め方向については \fBfenv\fP(3) を参照)。 - -例えば、 \fIround(0.5)\fP は 1.0 で、 \fIround(\-0.5)\fP は \-1.0 である。 -.SH 返り値 -これらの関数は丸めた整数値を返す。 - -\fIx\fP が整数、+0、\-0、NaN、無限のいずれかの場合、 \fIx\fP そのものが返される。 -.SH エラー -エラーは発生しない。 POSIX.1\-2001 にはオーバーフローでの範囲エラー (range error) の 記載がある。「注意」の節を参照のこと。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBround\fP(), \fBroundf\fP(), \fBroundl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 注意 -.\" The POSIX.1-2001 APPLICATION USAGE SECTION discusses this point. -POSIX.1\-2001 にはオーバーフローに関する記述があり、 オーバーフローの場合には、 \fIerrno\fP を \fBERANGE\fP に設定するか、 -\fBFE_OVERFLOW\fP 例外を発生することとされている。 実際のところ、どの現行のマシンでは結果がオーバーフローを起こすことはないので、 -このエラー処理は意味がない。 (より正確に言うと、オーバーフローは指数部の最大値が 仮数部を表すビットの数より小さい場合にしか起こらない。 -IEEE\-754 規格の 32 ビットと 64 ビットの浮動小数では、 指数部の最大値はそれぞれ 128 と 1024 であり、 -仮数部のビット数はそれぞれ 24 と 53 である。) - -丸めた値を整数型に格納した場合には、おそらくこの関数ではなく \fBlround\fP(3) に載っている関数のどれかを使いたいのだろう。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/rpc.3 b/manual/LDP_man-pages/draft/man3/rpc.3 deleted file mode 100644 index 51ef066b..00000000 --- a/manual/LDP_man-pages/draft/man3/rpc.3 +++ /dev/null @@ -1,695 +0,0 @@ -.\" This page was taken from the 4.4BSD-Lite CDROM (BSD license) -.\" -.\" %%%LICENSE_START(BSD_ONELINE_CDROM) -.\" This page was taken from the 4.4BSD-Lite CDROM (BSD license) -.\" %%%LICENSE_END -.\" -.\" @(#)rpc.3n 2.4 88/08/08 4.0 RPCSRC; from 1.19 88/06/24 SMI -.\" -.\" 2007-12-30, mtk, Convert function prototypes to modern C syntax -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 4 20:48:23 JST 2000 -.\" by HANATAKA Shinya -.\" Updated & Modified Sun Oct 21 01:07:09 JST 2001 -.\" by Yuichi SATO -.\" -.TH RPC 3 2013\-09\-26 "" "Linux Programmer's Manual" -.SH 名前 -rpc \- 遠隔手続き呼び出し(RPC)のためのライブラリルーティン -.SH 書式と説明 -.\" .LP -.\" We don't have an rpc_secure.3 page at the moment -- MTK, 19 Sep 05 -.\" Routines that are used for Secure RPC (DES authentication) are described in -.\" .BR rpc_secure (3). -.\" Secure RPC can be used only if DES encryption is available. -これらのルーティンは C プログラムでネットワークを通して 他のマシンにアクセスするプロシージャーを作成することを可能にする。 -最初にクライアントはデータパケットをサーバに送るために プロシージャーを呼び出す。 サーバはパケットを受け取ると、配分ルーチンを呼び出して -要求されたサービスに実行し、返答を送り返す。 最後にプロシージャーコールはクライアントへと戻る。 -.LP -これらのルーティンを使用するには、ヘッダーファイル \fI\fP をインクルードすること。 - -下記のプロトタイプでは次の型を使用している。 -.in +4n -.nf - -\fBtypedef int \fP\fIbool_t\fP\fB;\fP - -\fBtypedef bool_t (*\fP\fIxdrproc_t\fP\fB) (XDR *, void *, ...);\fP - -\fBtypedef bool_t (*\fP\fIresultproc_t\fP\fB) (caddr_t \fP\fIresp\fP\fB,\fP -\fB struct sockaddr_in *\fP\fIraddr\fP\fB);\fP -.fi -.in -.LP -型 \fIAUTH\fP, \fICLIENT\fP, \fISVCXPRT\fP, \fIXDR\fP の宣言についてはヘッダーファイルを参照。 -.LP -.nf -\fBvoid auth_destroy(AUTH *\fP\fIauth\fP\fB);\fP -.fi -.IP -このマクロは \fIauth\fP に関連付けられた認証情報を破壊する。破壊は通常は私的なデータ構造の 破棄を含んでいる。 \fBauth_destroy\fP() -を呼び出した後に \fIauth\fP を使用することは未定義である。 -.LP -.nf -\fBAUTH *authnone_create(void);\fP -.fi -.IP -各リモートプロシージャーコールで使用できない仮の認証情報として渡される RPC 認証ハンドルを作成して返す。 これは RPC -で使用されるデフォルトの認証である。 -.LP -.nf -\fBAUTH *authunix_create(char *\fP\fIhost\fP\fB, int \fP\fIuid\fP\fB, int \fP\fIgid\fP\fB,\fP -\fB int \fP\fIlen\fP\fB, int *\fP\fIaup_gids\fP\fB);\fP -.fi -.IP -認証情報を含んだ RPC 認証ハンドルを作成して返す。 \fIhost\fP パラメーターは情報が作成されたマシンの名前である。 \fIuid\fP -はそのユーザーのユーザー -.SM ID -、 \fIgid\fP はそのユーザーの現在のグループ -.SM ID -である。 \fIlen\fP と -\fIaup_gids\fP はそのユーザーが所属するグループの配列を参照している。 他のユーザーになりすますことは簡単である。 -.LP -.nf -\fBAUTH *authunix_create_default(void);\fP -.fi -.IP -適切なパラメーターで \fBauthunix_create\fP() を呼び出す。 -.LP -.nf -\fBint callrpc(char *\fP\fIhost\fP\fB, unsigned long \fP\fIprognum\fP\fB,\fP -\fB unsigned long \fP\fIversnum\fP\fB, unsigned long \fP\fIprocnum\fP\fB,\fP -\fB xdrproc_t \fP\fIinproc\fP\fB, char *\fP\fIin\fP\fB,\fP -\fB xdrproc_t \fP\fIoutproc\fP\fB, char *\fP\fIout\fP\fB);\fP -.fi -.IP -マシン \fIhost\fP 上で \fIprognum\fP, \fIversnum\fP, \fIprocnum\fP に関連付けられたリモートプロシージャーを呼び出す。 -パラメーター \fIin\fP はプロシージャーの引き数のアドレスであり \fIout\fP は結果を格納するアドレスである。 \fIinproc\fP -はプロシージャーのパラメーターをエンコードするのに使用され、 \fIoutproc\fP は結果をデコードするのに使用される。 -このルーティンは成功した場合にはゼロを返す。失敗した場合には \fBenum clnt_stat\fP を整数にキャストした値を返す。 -\fBclnt_perrno\fP() ルーティンが失敗の状態をメッセージに変換するのに使用できる。 -.IP -警告: このルーティンでリモートプロシージャーを呼び出すと通信には UDP/IP が使用される。この際の制限については -\fBclntudp_create\fP() を参照すること。このルーティンを使用して認証や時間切れの制御を することはできない。 -.LP -.nf -\fBenum clnt_stat clnt_broadcast(unsigned long \fP\fIprognum\fP\fB,\fP -\fB unsigned long \fP\fIversnum\fP\fB, unsigned long \fP\fIprocnum\fP\fB,\fP -\fB xdrproc_t \fP\fIinproc\fP\fB, char *\fP\fIin\fP\fB,\fP -\fB xdrproc_t \fP\fIoutproc\fP\fB, char *\fP\fIout\fP\fB,\fP -\fB resultproc_t \fP\fIeachresult\fP\fB);\fP -.fi -.IP -\fBcallrpc\fP() と同様であるが、メッセージがローカルのブロードキャストネットワーク -全体へとブロードキャストされる点が異っている。回答を受け取る度に このルーティンは以下の形式の \fBeachresult\fP() を呼び出す。 -.IP -.in +4n -.nf -\fBeachresult(char *\fP\fIout\fP\fB, struct sockaddr_in *\fP\fIaddr\fP\fB);\fP -.fi -.in -.IP -ここで \fIout\fP は \fBclnt_broadcast\fP() に渡される \fIout\fP -と同じであるが、リモートプロシージャーからの出力がデコードされている 点のみが異っている。 \fIaddr\fP -は結果を送って来たマシンのアドレスを指している。 \fBeachresult\fP() がゼロを返した場合、 \fBclnt_broadcast\fP() -はさらなる回答を待つ。そうでなければ適切な状態で終了する。 -.IP -警告: ブロードキャストソケットはデータリンク層の最大転送単位に 制限されている。イーサネットの場合、最大値は 1500 バイトである。 -.LP -.nf -\fBenum clnt_stat clnt_call(CLIENT *\fP\fIclnt\fP\fB, unsigned long \fP\fIprocnum\fP\fB,\fP -\fB xdrproc_t \fP\fIinproc\fP\fB, char *\fP\fIin\fP\fB,\fP -\fB xdrproc_t \fP\fIoutproc\fP\fB, char *\fP\fIout\fP\fB,\fP -\fB struct timeval \fP\fItout\fP\fB);\fP -.fi -.IP -このマクロはクライアントハンドル \fIclnt\fP に関連付けられた \fIprocnum\fP リモートプロシージャーを呼び出す。 クライアントハンドルは -\fBclnt_create\fP() のような -.SM RPC -クライアント作成ルーティンによって得られる。 パタメータ \fIin\fP -はプロシージャーの引き数のアドレスである。 \fIout\fP はプロシージャーの返り値を格納するアドレスである。 \fIinproc\fP -はプロシージャーのパラメーターをエンコードするのに使用される。 \fIoutproc\fP はプロシージャーの返り値をデコードするのに使用される。 -\fItout\fP は結果が返されるのを待つ時間である。 -.LP -.nf -\fBclnt_destroy(CLIENT *\fP\fIclnt\fP\fB);\fP -.fi -.IP -このマクロはクライアントの RPC ハンドルを破壊する。破壊には通常は \fIclnt\fP 自身も含めて私的なデータ構造体の破棄が含まれている。 -\fBclnt_destroy\fP() の呼び出しの後に \fIclnt\fP を使用することは未定義である。 RPC -ライブラリが関連するソケットをオープンした場合には、 それも閉じられる。それ以外の場合にはソケットはオープンされたままである。 -.LP -.nf -\fBCLIENT *clnt_create(char *\fP\fIhost\fP\fB, unsigned long \fP\fIprog\fP\fB,\fP -\fB unsigned long \fP\fIvers\fP\fB, char *\fP\fIproto\fP\fB);\fP -.fi -.IP -一般的なクライアントの作成ルーティンである。 \fIhost\fP はサーバのあるリモートホストの名前を指定する。 \fIproto\fP -どのような通信プロトコルを使用するかを指定する。現在ここに 使用できる値は \(lqudp\(rq と \(lqtcp\(rq である。 -デフォルトの時間切れが設定されるが、 \fBclnt_control\fP() を使用して変更可能である。 -.IP -警告: UDP を使用した場合には欠点がある。 UDP に基づいた RPC メッセージは 最大でも 8 KByte のエンコードデータしか保持する -ことができないため、大きな引き数や巨大な結果を取るプロシージャーに は使用することができない。 -.LP -.nf -\fBbool_t clnt_control(CLIENT *\fP\fIcl\fP\fB, int \fP\fIreq\fP\fB, char *\fP\fIinfo\fP\fB);\fP -.fi -.IP -このマクロは各種クライアントについて情報を変更したり、取得したり するのに使用する。 \fIreq\fP は操作の種類を指定する。 \fIinfo\fP -は情報へのポインターである。 UDP と TCP どちらの場合も使用可能な \fIreq\fP の値と、その引き数の型、およびその内容は以下の通りである: -.IP -.in +4n -.nf -\fBCLSET_TIMEOUT\fP \fIstruct timeval\fP // 時間切れを設定する -\fBCLGET_TIMEOUT\fP \fIstruct timeval\fP // 時間切れを取得する -.fi -.in -.IP -注意: \fBclnt_control\fP() を使用して時間切れを設定した場合にはそれ以後は \fBclnt_call\fP() -に渡される時間切れパラメーターは全て無視される。 -.IP -.in +4n -.nf -\fBCLGET_SERVER_ADDR\fP \fIstruct sockaddr_in \fP // サーバアドレスを取得する -.fi -.in -.IP -以下の操作は UDP の場合にのみ有効である: -.IP -.in +4n -.nf -\fBCLSET_RETRY_TIMEOUT\fP \fIstruct timeval\fP // 再送間隔を設定する -\fBCLGET_RETRY_TIMEOUT\fP \fIstruct timeval\fP // 再送間隔を取得する -.fi -.in -.IP -再送間隔は次に要求を再送する前に "UDP RPC" がサーバの回答を待つ時間である。 -.LP -.nf -\fBclnt_freeres(CLIENT * \fP\fIclnt\fP\fB, xdrproc_t \fP\fIoutproc\fP\fB, char *\fP\fIout\fP\fB);\fP -.fi -.IP -このマクロは RPC 呼び出しの結果のデコードの際に RPC/XDR システムによって割当てられたデータを解放する。 パラメーター \fIout\fP -は結果のアドレスである。 \fIoutproc\fP は結果を記述している XDR ルーティンである。 このルーティンは結果の解放に成功した場合には 1 -を返す。 失敗した場合にはゼロを返す。 -.LP -.nf -\fBvoid clnt_geterr(CLIENT *\fP\fIclnt\fP\fB, struct rpc_err *\fP\fIerrp\fP\fB);\fP -.fi -.IP -このマクロはクライアントハンドルのエラー構造体を \fIerrp\fP アドレスで指定された構造体へコピーする。 -.LP -.nf -\fBvoid clnt_pcreateerror(char *\fP\fIs\fP\fB);\fP -.fi -.IP -標準エラー出力に、なぜクライアント RPC ハンドルの作成が できなかったかについてのメッセージを表示する。 メッセージの前に文字列 \fIs\fP -とコロン(:)が表示される。 \fBclnt_create\fP(), \fBclntraw_create\fP(), \fBclnttcp_create\fP(), -\fBclntudp_create\fP() の呼び出しが失敗した時に使用すること。 -.LP -.nf -\fBvoid clnt_perrno(enum clnt_stat \fP\fIstat\fP\fB);\fP -.fi -.IP -標準エラー出力に \fIstat\fP によって指示されるエラー状態に対応するメッセージを表示する。 \fBcallrpc\fP() の後に使用すること。 -.LP -.nf -\fBclnt_perror(CLIENT *\fP\fIclnt\fP\fB, char *\fP\fIs\fP\fB);\fP -.fi -.IP -標準エラー出力に、なぜ RPC 呼び出しが失敗したかについてのメッセージを表示する。 \fIclnt\fP はコールに使用したハンドルである。 -メッセージの前に文字列 \fIs\fP とコロン(:)が表示される。 \fBclnt_call\fP() が失敗した後に使用すること。 -.LP -.nf -\fBchar *clnt_spcreateerror(char *\fP\fIs\fP\fB);\fP -.fi -.IP -\fBclnt_pcreateerror\fP() と同様であるが、標準エラー出力へ表示するかわりに文字列を返す点が異っている。 -.IP -バグ: 静的な領域へのポインターを返すため、呼び出しごとに上書きされる。 -.LP -.nf -\fBchar *clnt_sperrno(enum clnt_stat \fP\fIstat\fP\fB);\fP -.fi -.IP -\fBclnt_perrno\fP() と同じ引き数を取るが、なぜ RPC 呼び出しが失敗したかについてのメッセージを標準エラー出力に表示する -かわりに、メッセージを格納している文字列へのポインターを返す。 文字列は NEWLINE(改行) で終っている。 -.IP -\fBclnt_sperrno\fP() はプログラムが標準エラー出力を持っていない場合(プログラムがサーバとし -て走っている場合にはよくありえる)や、プログラマーがメッセージを \fBprintf\fP(3) で出力することを望まない場合や、メッセージの形式が -\fBclnt_perrno\fP() がサポートするものとは異っている場合などに \fBclnt_perrno\fP() のかわりに使用される。 注意: -\fBclnt_sperror\fP() や \fBclnt_spcreaterror\fP() とは違って \fBclnt_sperrno\fP() -は静的データへのポインターを返す。しかし呼び出しごとに上書きされることはない。 -.LP -.nf -\fBchar *clnt_sperror(CLIENT *\fP\fIrpch\fP\fB, char *\fP\fIs\fP\fB);\fP -.fi -.IP -\fBclnt_perror\fP() と同様であるが、標準エラー出力に表示する代りに (\fBclnt_sperrno\fP() のように) -文字列へのポインターを返す点が異っている。 -.IP -バグ: 静的な領域へのポインターを返すため、呼び出しごとに上書きされる。 -.LP -.nf -\fBCLIENT *clntraw_create(unsigned long \fP\fIprognum\fP\fB, unsigned long \fP\fIversnum\fP\fB);\fP -.fi -.IP -このルーティンはリモートプログラム \fIprognum\fP、 バージョン \fIversnum\fP のための擬似 RPC -クライアントを作成する。メッセージをサービスに渡すために使用する 通信は実際にはそのプロセスのアドレス空間にあるバッファーである。 それで、対応する -RPC サーバが同じアドレス空間の中にいなければならない。 \fBsvcraw_create\fP() を参照すること。 これにより RPC -のシミュレーションや、カーネルインターフェースに影響されずに 応答時間などの RPC オーバヘッドの獲得ができる。 失敗した場合にはこのルーティンは -NULL を返す。 -.LP -.nf -\fBCLIENT *clnttcp_create(struct sockaddr_in *\fP\fIaddr\fP\fB,\fP -\fB unsigned long \fP\fIprognum\fP\fB, unsigned long \fP\fIversnum\fP\fB,\fP -\fB int *\fP\fIsockp\fP\fB, unsigned int \fP\fIsendsz\fP\fB, unsigned int \fP\fIrecvsz\fP\fB);\fP -.fi -.IP -.\"The following inline font conversion is necessary for the hyphen indicator -このルーティンはリモートプログラム \fIprognum\fP、 バージョン \fIversnum\fP のための RPC -クライアントを作成する。クライアントは通信に TCP/IP を使用する。リモートプログラムはインターネットアドレスの \fI*addr\fP にある。 -\fIaddr\->sin_port\fP がゼロならば、実際にリモートプログラムが listen -しているポートが設定される。(この情報のためにリモートの \fBportmap\fP サービスが利用される。) パラメーター \fIsockp\fP -はソケットである。もしこれが \fBRPC_ANYSOCK\fP に設定されている場合は、このルーティンが新しいソケットをオープンして \fIsockp\fP -に設定する。 TCP に基づいた RPC はバッファーされた I/O を使用するため、ユーザーはパラメーター \fIsendsz\fP と \fIrecvsz\fP -を使用して送信バッファーと受信バッファーのサイズを指定することができる。 ゼロを指定した場合には適切なデフォルトが選択される。 -このルーティンは失敗した場合は NULL を返す。 -.LP -.nf -\fBCLIENT *clntudp_create(struct sockaddr_in *\fP\fIaddr\fP\fB,\fP -\fB unsigned long \fP\fIprognum\fP\fB, unsigned long \fP\fIversnum\fP\fB,\fP -\fB struct timeval \fP\fIwait\fP\fB, int *\fP\fIsockp\fP\fB);\fP -.fi -.IP -このルーティンはリモートプログラム \fIprognum\fP、 バージョン \fIversnum\fP のための RPC -クライアントを作成する。クライアントは通信に UDP/IP を使用する。リモートプログラムはインターネットアドレスの \fI*addr\fP にある。 -\fIaddr\->sin_port\fP がゼロならば、実際にリモートプログラムが listen -しているポートが設定される。(この情報のためにリモートの \fBportmap\fP サービスが利用される。) パラメーター \fIsockp\fP -はソケットである。もしこれが \fBRPC_ANYSOCK\fP に設定されている場合は、このルーティンが新しいソケットをオープンして \fIsockp\fP -に設定する。 UDP 通信は回答があるか、時間切れが起こるまで \fBwait\fP 間隔で呼び出しメッセージを再送する。時間切れが起こるまでの合計時間は -\fBclnt_call\fP() で指定する。 -.IP -警告: UDP に基づいた RPC メッセージは最大でも 8 Kbyte までのエンコードされたデータしか -保持できないため、この通信は大きな引き数や巨大な結果を取る プロシージャーには使用できない。 -.LP -.nf -\fBCLIENT *clntudp_bufcreate(struct sockaddr_in *\fP\fIaddr\fP\fB,\fP -\fB unsigned long \fP\fIprognum\fP\fB, unsigned long \fP\fIversnum\fP\fB,\fP -\fB struct timeval \fP\fIwait\fP\fB, int *\fP\fIsockp\fP\fB,\fP -\fB unsigned int \fP\fIsendsize\fP\fB, unsigned int \fP\fIrecosize\fP\fB);\fP -.fi -.IP -このルーティンはリモートプログラム \fIprognum\fP、 バージョン \fIversnum\fP のための RPC -クライアントを作成する。クライアントは通信に UDP/IP を使用する。リモートプログラムはインターネットアドレスの \fI*addr\fP にある。 -\fIaddr\->sin_port\fP がゼロならば、実際にリモートプログラムが listen -しているポートが設定される。(この情報のためにリモートの \fBportmap\fP サービスが利用される。) パラメーター \fIsockp\fP -はソケットである。もしこれが \fBRPC_ANYSOCK\fP に設定されている場合は、このルーティンが新しいソケットをオープンして \fIsockp\fP -に設定する。 UDP 通信は回答があるか、時間切れが起こるまで \fBwait\fP 間隔で呼び出しメッセージを再送する。時間切れが起こるまでの合計時間は -\fBclnt_call\fP() で指定する。 -.IP -これを使用すると UDP に基づいた RPC メッセージにおいて送信パケットや 受信パケットの最大サイズを指定することが可能になる。 -.LP -.nf -\fBvoid get_myaddress(struct sockaddr_in *\fP\fIaddr\fP\fB);\fP -.fi -.IP -このマシンの IP アドレスを \fI*addr\fP に格納する。 \fI/etc/hosts\fP を扱うライブラリルーティンは使用しない。ポート番号は常に -\fBhtons(PMAPPORT)\fP に設定される。 -.LP -.nf -\fBstruct pmaplist *pmap_getmaps(struct sockaddr_in *\fP\fIaddr\fP\fB);\fP -.fi -.IP -\fBportmap\fP サービスのためのユーザーインターフェースであり、 IP アドレス \fI*addr\fP にあるホストの現在の RPC -プログラムからポート番号へのマッピングの一覧を返す。 このルーティンが NULL を返す場合もある。 `\fBrpcinfo \-p\fP' -コマンドはこのルーティンを使用している。 -.LP -.nf -\fBunsigned short pmap_getport(struct sockaddr_in *\fP\fIaddr\fP\fB,\fP -\fB unsigned long \fP\fIprognum\fP\fB, unsigned long \fP\fIversnum\fP\fB,\fP -\fB unsigned int \fP\fIprotocol\fP\fB);\fP -.fi -.IP -\fBportmap\fP サービスのためのユーザーインターフェースで、 プログラム番号 \fIprognum\fP、 バージョン \fIversnum\fP、 -関連付けられた通信プロトコル \fIprotocol\fP をサポートするサービスが待っているポート番号を返す。 \fIprotocol\fP の値はほとんどの場合 -IPPROTO_UDP か IPPROTO_TCP である。 返り値ゼロはマッピングが存在しないか、 RPC システムがリモートの \fBportmap\fP -サービスの参照に失敗したことを意味する。後者の場合は大域変数 \fIrpc_createerr\fP が RPC 状態を保持している。 -.LP -.nf -\fBenum clnt_stat pmap_rmtcall(struct sockaddr_in *\fP\fIaddr\fP\fB,\fP -\fB unsigned long \fP\fIprognum\fP\fB, unsigned long \fP\fIversnum\fP\fB,\fP -\fB unsigned long \fP\fIprocnum\fP\fB,\fP -\fB xdrproc_t \fP\fIinproc\fP\fB, char *\fP\fIin\fP\fB,\fP -\fB xdrproc_t \fP\fIoutproc\fP\fB, char *\fP\fIout\fP\fB,\fP -\fB struct timeval \fP\fItout\fP\fB, unsigned long *\fP\fIportp\fP\fB);\fP -.fi -.IP -\fBportmap\fP サービスのためのユーザーインターフェースで、 IP アドレス \fI*addr\fP のホストの \fBportmap\fP を参照して、 -RPC 呼び出しを生成し、そのホスト上のプロシージャーを呼び出す。 パラメーター \fI*portp\fP -はプロシージャーが成功した場合にはプログラムのポート番号に修正される。 他のパラメーターの定義については \fBcallrpc\fP() や -\fBclnt_call\fP() で説明してある。 このプロシージャーは \(lqping\(rq のみに使用すべきである。 -\fBclnt_broadcast\fP() も参照すること。 -.LP -.nf -\fBbool_t pmap_set(unsigned long \fP\fIprognum\fP\fB, unsigned long \fP\fIversnum\fP\fB,\fP -\fB unsigned int \fP\fIprotocol\fP\fB, unsigned short \fP\fIport\fP\fB);\fP -.fi -.IP -\fBportmap\fP サービスのためのユーザーインターフェースで、 [\fIprognum\fP,\fIversnum\fP,\fIprotocol\fP] -の組み合わせと \fIport\fP との間のマッピングを、そのマシン上の \fBportmap\fP サービスに登録する。 \fIprotocol\fP -はほとんどの場合 \fBIPPROTO_UDP\fP か \fBIPPROTO_TCP\fP のどちらかである。 このルーティンは成功した場合には 1 -を返す。失敗した場合にはゼロを返す。 \fBsvc_register\fP() によって自動的に実行される。 -.LP -.nf -\fBbool_t pmap_unset(unsigned long \fP\fIprognum\fP\fB, unsigned long \fP\fIversnum\fP\fB);\fP -.fi -.IP -\fBportmap\fP サービスのためのユーザーインターフェースで、 [\fIprognum\fP,\fIversnum\fP,\fI*\fP] の組み合わせと -\fBports\fP の間のマッピングをそのマシン上の \fBportmap\fP サービスから削除する。このルーティンは成功した場合は 1 を返す。 -失敗した場合には 0 を返す。 -.LP -.nf -\fBint registerrpc(unsigned long \fP\fIprognum\fP\fB, unsigned long \fP\fIversnum\fP\fB,\fP -\fB unsigned long \fP\fIprocnum\fP\fB, char *(*\fP\fIprocname\fP\fB)(char *),\fP -\fB xdrproc_t \fP\fIinproc\fP\fB, xdrproc_t \fP\fIoutproc\fP\fB);\fP -.fi -.IP -RPC サービスパッケージを使用して \fIprocname\fP プロシージャーを登録する。プログラム \fIprognum\fP、 バージョン -\fIversnum\fP、 プロシージャー \fIprocnum\fP への要求が届いた場合、 \fIprocname\fP -がパラメーターへのポインターを持って呼び出される。 \fIprogname\fP は静的な結果へのポインターを返す必要がある。 \fIinproc\fP -はパラメーターをデコードするために使用される。 \fIoutproc\fP は結果をエンコードするために使用される。 -このルーティンは登録に成功した場合にはゼロを返す。 失敗した場合には \-1 を返す。 -.IP -警告: この形式で登録されたリモートプロシージャーは UDP/IP 通信を使用する。制限に関しては \fBsvcudp_create\fP() -を参照すること。 -.LP -.nf -\fBstruct rpc_createerr \fP\fIrpc_createerr\fP\fB;\fP -.fi -.IP -成功しなかった RPC クライアント生成ルーティンによって設定される大域変数。 \fBclnt_pcreateerror\fP() -ルーティンが理由を表示するために使用する。 -.LP -.nf -\fBvoid svc_destroy(SVCXPRT *\fP\fIxprt\fP\fB);\fP -.fi -.IP -このマクロは通信ハンドル \fIxprt\fP の RPC サービスを破壊する。破壊には通常、 \fIxprt\fP -を含めて、私的なデータ構造体の破棄が含まれている。 このルーティンを呼び出した後に \fIxprt\fP を使用することは未定義である。 -.LP -.nf -\fBfd_set \fP\fIsvc_fdset\fP\fB;\fP -.fi -.IP -RPC サービス側のファイルディスクリプターのビットマスクを反映した大域変数。 \fBselect\fP(2) -システムコールのパラメーターのために利用できる。これは、サービスの実装者が \fBsvc_run\fP() -を呼び出さずに、独自の非同期イベント処理を用いる場合にのみ意味がある。 この変数は読み込み専用で (そのまま \fBselect\fP(2) -へ渡してはならない!)、 \fBsvc_getreqset\fP() 呼び出しや生成ルーティンの後に変更されているかもしれない。 -.LP -.nf -\fBint \fP\fIsvc_fds\fP\fB;\fP -.fi -.IP -\fBsvc_fdset\fP に似ているが、32 ディスクリプターに制限されている。 このインターフェースは \fBsvc_fdset\fP -によって置き換えられた。 -.LP -.nf -\fBsvc_freeargs(SVCXPRT *\fP\fIxprt\fP\fB, xdrproc_t \fP\fIinproc\fP\fB, char *\fP\fIin\fP\fB);\fP -.fi -.IP -このマクロはサービスプロシージャーが \fBsvc_getargs\fP() を使用して引き数をデコードした時に RPC/XDR -システムによって割り当てられたデータを解放する。 このルーティンは解放に成功した場合には 1 を返す。 失敗した場合にはゼロを返す。 -.LP -.nf -\fBsvc_getargs(SVCXPRT *\fP\fIxprt\fP\fB, xdrproc_t \fP\fIinproc\fP\fB, char *\fP\fIin\fP\fB);\fP -.fi -.IP -このマクロは RPC サービス通信ハンドル \fIxprt\fP に関連付けられた RPC 要求の引き数をデコードする。パラメーター \fIin\fP -は引き数の格納されたアドレスである。 \fIinproc\fP は引き数をデコードするための XDR ルーティンである。 -このルーティンはデコードに成功した場合は 1 を返す。 失敗した場合はゼロを返す。 -.LP -.nf -\fBstruct sockaddr_in *svc_getcaller(SVCXPRT *\fP\fIxprt\fP\fB);\fP -.fi -.IP -RPC サービス通信ハンドル \fIxprt\fP に関連付けられたプロシージャーの呼び出し元のネットワークアドレスを 取得するための標準的な手段。 -.LP -.nf -\fBvoid svc_getreqset(fd_set *\fP\fIrdfds\fP\fB);\fP -.fi -.IP -このルーティンはサービスの実装者が \fBsvc_run\fP() を呼び出さず、独自の非同期イベント処理を実装する場合にのみ意味がある。 これは -\fBselect\fP(2) システムコールが RPC ソケットに RPC 要求が到着したと返した場合にのみ呼び出される。 \fIrdfds\fP -は結果の読み込みファイルディスクリプターのビットマスクである。 このルーティンは \fIrdfds\fP -の値に関連付けられた全てのソケットのサービスが行なわれた時に 返ってくる。 -.LP -.nf -\fBvoid svc_getreq(int \fP\fIrdfds\fP\fB);\fP -.fi -.IP -\fBsvc_getreqset\fP() に似ているがディスクリプターの数が 32 に制限されている。 このインターフェースは -\fBsvc_getreqset\fP() によって置き換えられた。 -.LP -.nf -\fBbool_t svc_register(SVCXPRT *\fP\fIxprt\fP\fB, unsigned long \fP\fIprognum\fP\fB,\fP -\fB unsigned long \fP\fIversnum\fP\fB,\fP -\fB void (*\fP\fIdispatch\fP\fB)(svc_req *, SVCXPRT *),\fP -\fB unsigned long \fP\fIprotocol\fP\fB);\fP -.fi -.IP -\fIprognum\fP と \fIversnum\fP をサービス配分プロシージャー \fIdispatch\fP で関連付ける。 \fIprotocol\fP -がゼロの場合、サービスは \fBportmap\fP サービスには登録されない。 \fIprotocol\fP がゼロ以外の場合、 -[\fIprognum\fP,\fIversnum\fP,\fIprotocol\fP] の組み合わせと \fIxprt\->xp_port\fP -とのマッピングがローカルの \fBportmap\fP サービスに登録される。(一般的に \fIprotocol\fP はゼロ、 \fBIPPROTO_UDP\fP、 -\fBIPPROTO_TCP\fP のどれかである。) プロシージャー \fIdispatch\fP は以下の形式である: -.in +4n -.nf - -dispatch(struct svc_req *request, SVCXPRT *xprt); -.fi -.in -.IP -\fBsvc_register\fP() ルーティンは成功した場合は 1 を返す。失敗した場合はゼロを返す。 -.LP -.nf -\fBvoid svc_run(void);\fP -.fi -.IP -このルーティンは戻ってこない。これは -.SM RPC -要求の到着を待ち、どれかが届いた場合に \fBsvc_getreq\fP() -を使用して適切なサービスプロシージャーを呼び出す。 このプロシージャーは通常は \fBselect\fP(2) システムコールから返るのを待っている。 -.LP -.nf -\fBbool_t svc_sendreply(SVCXPRT *\fP\fIxprt\fP\fB, xdrproc_t \fP\fIoutproc\fP\fB, char *\fP\fIout\fP\fB);\fP -.fi -.IP -RPC サービス配分ルーティンによってリモートプロシージャーコールの結果を 返すために呼び出される。 パラメーター \fIxprt\fP -はその要求に関連付けられた通信ハンドルである。 \fIoutproc\fP は結果をエンコードするために使用する XDR ルーティンである。 \fIout\fP -は結果のアドレスである。このルーティンは成功した場合は 1 を返す。 失敗した場合はゼロを返す。 -.LP -.nf -\fBvoid svc_unregister(unsigned long \fP\fIprognum\fP\fB, unsigned long \fP\fIversnum\fP\fB);\fP -.fi -.IP -配分ルーティンから [\fIprognum\fP,\fIversnum\fP] および [\fIprognum\fP,\fIversnum\fP,\fI*\fP] -の組み合わせからポート番号へのマッピングを全て削除する。 -.LP -.nf -\fBvoid svcerr_auth(SVCXPRT *\fP\fIxprt\fP\fB, enum auth_stat \fP\fIwhy\fP\fB);\fP -.fi -.IP -認証エラーによりリモートプロシージャーコールの実行を拒否された 場合にサービス配分ルーティンによって呼び出される。 -.LP -.nf -\fBvoid svcerr_decode(SVCXPRT *\fP\fIxprt\fP\fB);\fP -.fi -.IP -パラメーターのデコードに失敗した場合に サービス配分ルーティンによって呼び出される。 \fBsvc_getargs\fP() も参照すること。 -.LP -.nf -\fBvoid svcerr_noproc(SVCXPRT *\fP\fIxprt\fP\fB);\fP -.fi -.IP -要求のあったプロシージャー番号が実装されていない場合に サービス配分ルーティンより呼び出される。 -.LP -.nf -\fBvoid svcerr_noprog(SVCXPRT *\fP\fIxprt\fP\fB);\fP -.fi -.IP -RPC パッケージに要求されたプログラムが登録されていない場合に呼び出される。 サービスの実装には通常、このルーティンは必要ない。 -.LP -.nf -\fBvoid svcerr_progvers(SVCXPRT *\fP\fIxprt\fP\fB);\fP -.fi -.IP -RPC パッケージに要求されたバージョンのプログラムが登録されていない場合に 呼び出される。サービスの実装には通常、このルーティンは必要ない。 -.LP -.nf -\fBvoid svcerr_systemerr(SVCXPRT *\fP\fIxprt\fP\fB);\fP -.fi -.IP -特定のプロトコルによってカバーされていなシステムエラーが 検出された場合にサービス配分ルーティンによって呼び出される。 -例えば、サービスがそれ以上、記憶装置を割り当てることができない場合には このルーティンが呼び出されるかもしれない。 -.LP -.nf -\fBvoid svcerr_weakauth(SVCXPRT *\fP\fIxprt\fP\fB);\fP -.fi -.IP -認証パラメーターが足りないためにリモートプロシージャーコールの実行を 拒否された場合にサービス配分ルーティンによって呼び出される。 このルーティンは -\fBsvcerr_auth(xprt, AUTH_TOOWEAK)\fP を呼び出す。 -.LP -.nf -\fBSVCXPRT *svcfd_create(int \fP\fIfd\fP\fB, unsigned int \fP\fIsendsize\fP\fB,\fP -\fB unsigned int \fP\fIrecvsize\fP\fB);\fP -.fi -.IP -任意のオープンされたディスクリプター上にサービスを作成する。 典型的に、ディスクリプターは TCP -のようなストリームプロトコルで接続されたソケットである。 \fIsendsize\fP と \fIrecvsize\fP -には送信バッファーと受信バッファーの大きさを指定する。もしゼロが指定された 場合は適切なデフォルトが選択される。 -.LP -.nf -\fBSVCXPRT *svcraw_create(void);\fP -.fi -.IP -このルーティンは擬似 RPC サービス通信を生成して、そのポインターを返す。 通信は実際にはそのプロセスのアドレス空間にあるバッファーなので 対応する -RPC クライアントは同じアドレス空間にいる必要がある。 \fBclntraw_create\fP() を参照すること。 このルーティンで RPC -のシミュレーションや、カーネルインターフェースに影響されずに応答時間などの RPC オーバヘッドを取得ができる。このルーティンは失敗した場合は NULL -を返す。 -.LP -.nf -\fBSVCXPRT *svctcp_create(int \fP\fIsock\fP\fB, unsigned int \fP\fIsend_buf_size\fP\fB,\fP -\fB unsigned int \fP\fIrecv_buf_size\fP\fB);\fP -.fi -.IP -このルーティンは TCP/IP に基づく RPC サービス通信を作成し、それへのポインターを返す。 通信はソケット \fIsock\fP に結びつけられる。 -\fIsock\fP は \fBRPC_ANYSOCK\fP でも良い。この場合は新しいソケットが作成される。 もしソケットがローカルな TCP ポートに bind -されていない場合は、 このルーティンが適当なポートに bind する。 補完された場合、\fIxprt\->xp_sock\fP には通信のソケット -ディスクリプターが、\fIxprt\->xp_port\fP には通信のポート番号が 設定される。 このルーティンは失敗した場合は NULL を返す。 -TCP に基づいた RPC はバッファーされた I/O を使用するため、 ユーザーはバッファーの大きさを指定できる。 -ゼロを指定した場合は適切なデフォルトが選択される。 -.LP -.nf -\fBSVCXPRT *svcudp_bufcreate(int \fP\fIsock\fP\fB, unsigned int \fP\fIsendsize\fP\fB,\fP -\fB unsigned int \fP\fIrecosize\fP\fB);\fP -.fi -.IP -このルーティンは UDP/IP に基づいた RPC サービス通信を作成し、 そのポインターを返す。通信はソケット \fIsock\fP に関連付けられる。 -\fIsock\fP は \fBRPC_ANYSOCK\fP でも良い。この場合は新しいソケットが作成される。 ソケットがローカルの UDP ポートに bind -されていない場合には このルーティンは適当なポートに bind する。 補完された場合、\fIxprt\->xp_sock\fP に通信のソケットの -ディスクリプターが、\fIxprt\->xp_port\fP に通信のポート番号が 設定される。このルーティンは失敗した場合には NULL を返す。 -.IP -これを使用すると UDP に基づいた RPC メッセージにおいて送信パケットや 受信パケットの最大サイズを指定することが可能になる。 -.LP -.nf -\fBSVCXPRT *svcudp_create(int \fP\fIsock\fP\fB);\fP -.fi -.IP -送信パケットと受信パケットのサイズを同じデフォルトの値 \fISZ\fP に指定した \fIsvcudp_bufcreate(sock,SZ,SZ)\fP -と等価である。 -.LP -.nf -\fBbool_t xdr_accepted_reply(XDR *\fP\fIxdrs\fP\fB, struct accepted_reply *\fP\fIar\fP\fB);\fP -.fi -.IP -RPC 応答メッセージをエンコードするのに使用する。このルーティンは RPC パッケージを用いずに -RPC\-形式のメッセージを作成しようとする場合に便利である。 -.LP -.nf -\fBbool_t xdr_authunix_parms(XDR *\fP\fIxdrs\fP\fB, struct authunix_parms *\fP\fIaupp\fP\fB);\fP -.fi -.IP -UNIX 形式の証明書を記述するために使用する。このルーティンは RPC 認証パッケージを使用せずにこれらの証明書を作成しようとする場合に便利である。 -.LP -.nf -\fBvoid xdr_callhdr(XDR *\fP\fIxdrs\fP\fB, struct rpc_msg *\fP\fIchdr\fP\fB);\fP -.fi -.IP -RPC 呼び出しのヘッダーメッセージを記述するために使用する。 このルーティンは RPC パッケージを使用せずに -RPC\-形式のメッセージを作成しようとする場合に便利である。 -.LP -.nf -\fBbool_t xdr_callmsg(XDR *\fP\fIxdrs\fP\fB, struct rpc_msg *\fP\fIcmsg\fP\fB);\fP -.fi -.IP -RPC 呼び出しメッセージを記述するのに使用する。 このルーティンは RPC パッケージを使用せずに -RPC\-形式のメッセージを作成しようとする場合に便利である。 -.LP -.nf -\fBbool_t xdr_opaque_auth(XDR *\fP\fIxdrs\fP\fB, struct opaque_auth *\fP\fIap\fP\fB);\fP -.fi -.IP -PRC 認証情報メッセージを記述するために使用する。 このルーティンは RPC パッケージを使用せずに -RPC\-形式のメッセージを作成しようとする場合に便利である。 -.LP -.nf -\fBbool_t xdr_pmap(XDR *\fP\fIxdrs\fP\fB, struct pmap *\fP\fIregs\fP\fB);\fP -.fi -.IP -各種の \fBportmap\fP プロシージャーへのパラメーターを外部的に記述するために使用する。 このルーティンは \fBpmap\fP -インターフェースを使用せずに、これらのパラメーターを 作成したい場合に便利である。 -.LP -.nf -\fBbool_t xdr_pmaplist(XDR *\fP\fIxdrs\fP\fB, struct pmaplist **\fP\fIrp\fP\fB);\fP -.fi -.IP -ポートのマッピングのリストを外部的に記述するために使用する。 このルーティンは \fBpmap\fP インターフェースを使用せずに、これらのパラメーターを -作成したい場合に便利である。 -.LP -.nf -\fBbool_t xdr_rejected_reply(XDR *\fP\fIxdrs\fP\fB, struct rejected_reply *\fP\fIrr\fP\fB);\fP -.fi -.IP -RPC 応答メッセージを記述するために使用する。このルーティンは RPC パッケージを使用せずに、 -RPC\-形式のメッセージを作成したい場合に便利である。 -.LP -.nf -\fBbool_t xdr_replymsg(XDR *\fP\fIxdrs\fP\fB, struct rpc_msg *\fP\fIrmsg\fP\fB);\fP -.fi -.IP -RPC 応答メッセージを記述するために使用する。 このルーティンは RPC パッケージを使用せずに、 RPC -形式のメッセージを作成したい場合に便利である。 -.LP -.nf -\fBvoid xprt_register(SVCXPRT *\fP\fIxprt\fP\fB);\fP -.fi -.IP -RPC サービス通信ハンドルを生成した後に、それら自身を RPC サービスパッケージに登録する必要がある。 このルーティンは大域変数 -\fIsvc_fds\fP を修正する。サービスの実装者は通常、このルーティンは必要ない。 -.LP -.nf -\fBvoid xprt_unregister(SVCXPRT *\fP\fIxprt\fP\fB);\fP -.fi -.IP -RPC サービス通信ハンドルを破壊する前に、それを RPC 通信パッケージから登録解除する必要がある。 このルーティンは大域変数 \fIsvc_fds\fP -を修正する。サービスの実装者は通常、このルーティンは必要ない。 -.SH 関連項目 -.\" We don't have an rpc_secure.3 page in the set at the moment -- MTK, 19 Sep 05 -.\" .BR rpc_secure (3), -\fBxdr\fP(3) - -以下のマニュアル: -.RS -Remote Procedure Calls: Protocol Specification -.br -Remote Procedure Call Programming Guide -.br -rpcgen Programming Guide -.br -.RE - -\fIRPC: Remote Procedure Call Protocol Specification\fP, RFC\ 1050, Sun -Microsystems, Inc., USC\-ISI. -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/rpmatch.3 b/manual/LDP_man-pages/draft/man3/rpmatch.3 deleted file mode 100644 index 88f3d5e2..00000000 --- a/manual/LDP_man-pages/draft/man3/rpmatch.3 +++ /dev/null @@ -1,110 +0,0 @@ -.\" Copyright (C) 2006 Justin Pryzby -.\" -.\" %%%LICENSE_START(PERMISSIVE_MISC) -.\" Permission is hereby granted, free of charge, to any person obtaining -.\" a copy of this software and associated documentation files (the -.\" "Software"), to deal in the Software without restriction, including -.\" without limitation the rights to use, copy, modify, merge, publish, -.\" distribute, sublicense, and/or sell copies of the Software, and to -.\" permit persons to whom the Software is furnished to do so, subject to -.\" the following conditions: -.\" -.\" The above copyright notice and this permission notice shall be -.\" included in all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -.\" IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -.\" CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -.\" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -.\" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -.\" %%%LICENSE_END -.\" -.\" References: -.\" glibc manual and source -.\" -.\" 2006-05-19, mtk, various edits and example program -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-07-31, Akihiro MOTOKI -.\" -.TH RPMATCH 3 2007\-07\-26 GNU "Linux Programmer's Manual" -.SH 名前 -rpmatch \- 質問への応答が肯定か否定かを判定する -.SH 書式 -.nf -\fB#include \fP - -\fBint rpmatch(const char *\fP\fIresponse\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBrpmatch\fP(): _SVID_SOURCE -.SH 説明 -\fBrpmatch\fP() は yes/no の質問に対するユーザーからの応答を処理する。 国際化 (I18N) に対応している。 - -\fIresponse\fP にはユーザーからの応答を格納したヌル終端文字列が入っている必要がある。 たいていは、 \fBfgets\fP(3) や -\fBgetline\fP(3) で取り込んだものであろう。 - -プログラムが \fBsetlocale\fP(3) を呼び出して環境変数の変更を有効にした場合、 環境変数 \fBLANG\fP, \fBLC_MESSAGES\fP, -\fBLC_ALL\fP が ユーザーの言語設定として考慮される。 - -ロケールに関わらず、\fB^[Yy]\fP にマッチする応答は常に肯定だと解釈され、 \fB^[Nn]\fP にマッチする応答は常に否定だと解釈される。 -.SH 返り値 -\fIresponse\fP を検査した後、 \fBrpmatch\fP() は否定的な応答 ("no") と認識した場合は 0 を返し、 肯定的な応答 -("yes") と認識した場合は 1 を返す。 \fIresponse\fP の値を解釈できなかった場合は \-1 を返す。 -.SH エラー -返り値 \-1 が返った場合、入力が不正であったか、他の何らかのエラーが あったことを意味する。返り値が 0 以外かどうかを確認するだけでは -十分ではない。 - -\fBrpmatch\fP() は、 \fBregcomp\fP(3) や \fBregexec\fP(3) が失敗する理由のどれかで失敗することがある。 -エラーの原因を \fIerrno\fP や他の何かで知ることはできないが、 \fIerrno\fP は正規表現エンジンの失敗の原因を示している (但し、このケースと -\fIresponse\fP の値を認識できずに失敗した場合を区別することはできない)。 -.SH 準拠 -.\" It is available on at least AIX 5.1 and FreeBSD 6.0. -\fBrpmatch\fP() はどの標準でも必須となっていないが、 Linux 以外にも利用できるシステムもいくつかは存在する。 -.SH バグ -\fBrpmatch\fP() の実装は \fIresponse\fP の最初の 1 文字だけを見ているようである。その結果、 "nyes" は 0 を返し、 -"ynever; not in a million years" は 1 を返すことになる。 入力文字列をもっと厳密に解釈した方がよいだろう。 例えば、 -(\fBregex\fP(7) で説明されている拡張正規表現を使って) \fB^([yY]|yes|YES)$\fP や \fB^([nN]|no|NO)$\fP -で解釈するなど。 -.SH 例 -以下のプログラムは、コマンドライン引き数で 指定された文字列を \fBrpmatch\fP() に渡した場合の結果を表示する。 -.nf - -#define _SVID_SOURCE -#include -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - if (argc != 2 || strcmp(argv[1], "\-\-help") == 0) { - fprintf(stderr, "%s response\en", argv[0]); - exit(EXIT_FAILURE); - } - - setlocale(LC_ALL, ""); - printf("rpmatch() returns: %d\en", rpmatch(argv[1])); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBfgets\fP(3), \fBgetline\fP(3), \fBnl_langinfo\fP(3), \fBregcomp\fP(3), -\fBsetlocale\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/rtime.3 b/manual/LDP_man-pages/draft/man3/rtime.3 index b5b6f1c7..bf19ca2d 100644 --- a/manual/LDP_man-pages/draft/man3/rtime.3 +++ b/manual/LDP_man-pages/draft/man3/rtime.3 @@ -20,22 +20,22 @@ .\" Translated Thu Sep 2 07:40:48 JST 2004 .\" by Yuichi SATO .\" -.TH RTIME 3 2014\-05\-28 GNU "Linux Programmer's Manual" +.TH RTIME 3 2020\-12\-21 GNU "Linux Programmer's Manual" .SH 名前 rtime \- リモートマシンから時刻を取得する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint rtime(struct sockaddr_in *\fP\fIaddrp\fP\fB, struct rpc_timeval *\fP\fItimep\fP\fB,\fP \fB struct rpc_timeval *\fP\fItimeout\fP\fB);\fP .fi .SH 説明 この関数は RFC\ 868 に記述されているタイムサーバプロトコルを使用し、 リモートマシンから時刻を取得する。 -.LP +.PP タイムサーバプロトコルは 00:00:00 UTC, 1 Jan 1900 から秒数を提供するので、 この関数は適切な定数値を引くことにより、 提供された値を Unix における時刻紀元 (1970\-01\-01 00:00:00 +0000 (UTC)) から秒数に変換する。 -.LP +.PP \fItimeout\fP が NULL でない場合、udp/time ソケット (ポート 37) が使用される。 それ以外の場合、tcp/time ソケット (ポート 37) が使用される。 .SH 返り値 @@ -51,31 +51,42 @@ rtime \- リモートマシンから時刻を取得する \fBETIMEDOUT\fP timeout で定義された待ち時間の期限が切れた。 .SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBrtime\fP() 関数はスレッドセーフである。 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBrtime\fP() +T} Thread safety MT\-Safe +.TE .SH 注意 IPv4 のみがサポートされている。 -.LP +.PP +.\" .PP +.\" Libc5 uses the prototype +.\" .PP +.\" .nf +.\" int rtime(struct sockaddr_in *, struct timeval *, struct timeval *); +.\" .fi +.\" .PP +.\" and requires +.\" .I +.\" instead of +.\" .IR . \fIin.timed\fP のバージョンによっては TCP しかサポートしていないものもある。 \fIuse_tcp\fP を 1 に設定して、例にあるプログラムを試すこと。 -.LP -libc5 はプロトタイプ -.nf - - int rtime(struct sockaddr_in *, struct timeval *, struct timeval *); - -.fi -を使い、 \fI\fP の代わりに \fI\fP を必要とする。 .SH バグ glibc 2.2.5 以前の \fBrtime\fP() は、64 ビットマシンで正確に動作しない。 -.SH 例 +.SH EXAMPLES この例ではポート 37 がアップされてオープンされている必要がある。 \fI/etc/inetd.conf\fP の time エントリーがコメントアウトされていないことを確認してほしい。 - +.PP このプログラムは "linux" というコンピュータに接続する。 "localhost" を使った場合は動作しない。 結果はコンピュータ "linux" のローカル時刻である。 -.sp -.nf +.PP +.EX #include #include #include @@ -111,12 +122,11 @@ main(void) exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 .\" .BR netdate (1), .\" .BR rdate (1), \fBntpdate\fP(1), \fBinetd\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/rtnetlink.3 b/manual/LDP_man-pages/draft/man3/rtnetlink.3 index a7b105a6..5fd46661 100644 --- a/manual/LDP_man-pages/draft/man3/rtnetlink.3 +++ b/manual/LDP_man-pages/draft/man3/rtnetlink.3 @@ -21,7 +21,7 @@ .\" by Shouichi Saito .\" Proofed Fri Aug 20 1999 by NAKANO Takeo .\" -.TH RTNETLINK 3 2014\-09\-06 GNU "Linux Programmer's Manual" +.TH RTNETLINK 3 2020\-11\-01 GNU "Linux Programmer's Manual" .SH 名前 rtnetlink \- rtnetlink メッセージを操作するマクロ .SH 書式 @@ -32,21 +32,21 @@ rtnetlink \- rtnetlink メッセージを操作するマクロ \fB#include \fP .br \fB#include \fP - +.PP \fBrtnetlink_socket = socket(AF_NETLINK, int \fP\fIsocket_type\fP\fB, NETLINK_ROUTE);\fP -.sp +.PP \fBint RTA_OK(struct rtattr *\fP\fIrta\fP\fB, int \fP\fIrtabuflen\fP\fB);\fP -.sp +.PP \fBvoid *RTA_DATA(struct rtattr *\fP\fIrta\fP\fB);\fP -.sp +.PP \fBunsigned int RTA_PAYLOAD(struct rtattr *\fP\fIrta\fP\fB);\fP -.sp +.PP \fBstruct rtattr *RTA_NEXT(struct rtattr *\fP\fIrta\fP\fB, unsigned int \fP\fIrtabuflen\fP\fB);\fP -.sp +.PP \fBunsigned int RTA_LENGTH(unsigned int \fP\fIlength\fP\fB);\fP -.sp +.PP \fBunsigned int RTA_SPACE(unsigned int \fP\fIlength\fP\fB);\fP .SH 説明 全ての \fBrtnetlink\fP(7) メッセージは \fBnetlink\fP(7) メッセージヘッダーと追加属性からなる。 @@ -70,44 +70,46 @@ NETLINK_ROUTE);\fP これらのマクロは非標準で、Linux での拡張である。 .SH バグ このマニュアルは完全ではない。 -.SH 例 +.SH EXAMPLES .\" FIXME . ? would be better to use libnetlink in the EXAMPLE code here デバイスの MTU をセットする rtnetlink メッセージを生成する -.nf - #include +.PP +.in +4n +.EX +#include - ... +\&... - struct { - struct nlmsghdr nh; - struct ifinfomsg if; - char attrbuf[512]; - } req; +struct { + struct nlmsghdr nh; + struct ifinfomsg if; + char attrbuf[512]; +} req; - struct rtattr *rta; - unsigned int mtu = 1000; +struct rtattr *rta; +unsigned int mtu = 1000; - int rtnetlink_sk = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE); +int rtnetlink_sk = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE); - memset(&req, 0, sizeof(req)); - req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifinfomsg)); - req.nh.nlmsg_flags = NLM_F_REQUEST; - req.nh.nlmsg_type = RTM_NEWLINK; - req.if.ifi_family = AF_UNSPEC; - req.if.ifi_index = INTERFACE_INDEX; - req.if.ifi_change = 0xffffffff; /* ??? */ - rta = (struct rtattr *)(((char *) &req) + - NLMSG_ALIGN(req.nh.nlmsg_len)); - rta\->rta_type = IFLA_MTU; - rta\->rta_len = RTA_LENGTH(sizeof(unsigned int)); - req.n.nlmsg_len = NLMSG_ALIGN(req.nh.nlmsg_len) + - RTA_LENGTH(sizeof(mtu)); - memcpy(RTA_DATA(rta), &mtu, sizeof(mtu)); - send(rtnetlink_sk, &req, req.nh.nlmsg_len, 0); -.fi +memset(&req, 0, sizeof(req)); +req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.if)); +req.nh.nlmsg_flags = NLM_F_REQUEST; +req.nh.nlmsg_type = RTM_NEWLINK; +req.if.ifi_family = AF_UNSPEC; +req.if.ifi_index = INTERFACE_INDEX; +req.if.ifi_change = 0xffffffff; /* ??? */ +rta = (struct rtattr *)(((char *) &req) + + NLMSG_ALIGN(req.nh.nlmsg_len)); +rta\->rta_type = IFLA_MTU; +rta\->rta_len = RTA_LENGTH(sizeof(mtu)); +req.nh.nlmsg_len = NLMSG_ALIGN(req.nh.nlmsg_len) + + RTA_LENGTH(sizeof(mtu)); +memcpy(RTA_DATA(rta), &mtu, sizeof(mtu)); +send(rtnetlink_sk, &req, req.nh.nlmsg_len, 0); +.EE +.in .SH 関連項目 \fBnetlink\fP(3), \fBnetlink\fP(7), \fBrtnetlink\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/scalb.3 b/manual/LDP_man-pages/draft/man3/scalb.3 index b8361753..7d5e0ee7 100644 --- a/manual/LDP_man-pages/draft/man3/scalb.3 +++ b/manual/LDP_man-pages/draft/man3/scalb.3 @@ -36,61 +36,66 @@ .\" by Yuichi SATO .\" Updated 2008-09-16, Akihiro MOTOKI .\" -.TH SCALB 3 2013\-03\-23 "" "Linux Programmer's Manual" +.TH SCALB 3 2020\-06\-09 "" "Linux Programmer's Manual" .SH 名前 scalb, scalbf, scalbl \- 浮動小数点数に整数である基数の累乗を掛ける (廃止予定) .SH 書式 \fB#include \fP -.sp +.PP \fBdouble scalb(double \fP\fIx\fP\fB, double \fP\fIexp\fP\fB);\fP .br \fBfloat scalbf(float \fP\fIx\fP\fB, float \fP\fIexp\fP\fB);\fP .br \fBlong double scalbl(long double \fP\fIx\fP\fB, long double \fP\fIexp\fP\fB);\fP -.sp +.PP \fI\-lm\fP でリンクする。 -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP .ad l \fBscalb\fP(): .RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +.\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +_XOPEN_SOURCE\ >=\ 500 + || /* Since glibc 2.19: */ _DEFAULT_SOURCE + || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .RE .br \fBscalbf\fP(), \fBscalbl\fP(): .RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 +_XOPEN_SOURCE\ >=\ 600 + || /* Since glibc 2.19: */ _DEFAULT_SOURCE + || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .RE .ad b .SH 説明 これらの関数は最初の引き数 \fIx\fP に \fBFLT_RADIX\fP の \fIexp\fP 乗を掛ける (\fBFLT_RADIX\fP はおそらく 2 である)。つまり、以下の式の値を返す。 +.PP .nf - x * FLT_RADIX ** exp .fi - +.PP .\" not in /usr/include but in a gcc lib \fBFLT_RADIX\fP の定義は \fI\fP をインクルードすることで得られる。 .SH 返り値 成功すると、これらの関数は \fIx\fP * \fBFLT_RADIX\fP ** \fIexp\fP を返す。 - +.PP \fIx\fP か \fIexp\fP が NaN の場合、NaN が返される。 - +.PP \fIx\fP が正の無限大 (負の無限大) で \fIexp\fP が負の無限大でない場合、正の無限大 (負の無限大) が返される。 - +.PP \fIx\fP が +0 (\-0) で \fIexp\fP が正の無限大でない場合、+0 (\-0) が返される。 - +.PP \fIx\fP がゼロで \fIexp\fP が正の無限大の場合、領域エラー (domain error) が発生し、 NaN が返される。 - +.PP \fIx\fP が無限大で \fIexp\fP が負の無限大の場合、領域エラー (domain error) が発生し、 NaN が返される。 - +.PP 結果がオーバーフローする場合、 範囲エラー (range error) が発生し、 各関数はそれぞれ \fBHUGE_VAL\fP, \fBHUGE_VALF\fP, \fBHUGE_VALL\fP を返す。符号は \fIx\fP と同じになる。 - +.PP 結果がアンダーフローする場合、範囲エラーが発生し、 各関数は 0 を返す。符号は \fIx\fP と同じになる。 .SH エラー これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 @@ -98,39 +103,42 @@ _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 以下のエラーが発生する可能性がある。 .TP 領域エラー (domain error): \fIx\fP が 0 で \fIexp\fP が正の無限大、または \fIx\fP が正の無限大で \fIexp\fP が負の無限大 -.\" .I errno -.\" is set to -.\" .BR EDOM . -不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 +\fIerrno\fP に \fBEDOM\fP が設定される。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 .TP 範囲エラー (range error)、オーバーフローの場合 -.\" .I errno -.\" is set to -.\" .BR ERANGE . -オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 +\fIerrno\fP に \fBERANGE\fP が設定される。 オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 .TP 範囲エラー (range error)、アンダーフローの場合 -.\" .I errno -.\" is set to -.\" .BR ERANGE . -アンダーフロー浮動小数点例外 (\fBFE_UNDERFLOW\fP) が上がる。 -.PP -.\" FIXME . Is it intentional that these functions do not set errno? -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6803 -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6804 -これらの関数は \fIerrno\fP を設定しない。 +\fIerrno\fP に \fBERANGE\fP が設定される。 アンダーフロー浮動小数点例外 (\fBFE_UNDERFLOW\fP) が上がる。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lbw28 lb lb +l l l. +Interface Attribute Value +T{ +\fBscalb\fP(), +\fBscalbf\fP(), +\fBscalbl\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 \fBscalb\fP() は POSIX.1\-2001 で規定されているが、廃止予定とされている。 POSIX.1\-2008 では \fBscalb\fP() の仕様は削除されており、代わりに \fBscalbln\fP(3), \fBscalblnf\fP(3), \fBscalblnl\fP(3) の使用が推奨されている。 \fBscalb\fP() 関数は 4.3BSD に由来する。 - +.PP .\" Looking at header files: scalbf() is present on the .\" BSDs, Tru64, HP-UX 11, Irix 6.5; scalbl() is on HP-UX 11 and Tru64. \fBscalbf\fP() と \fBscalbl\fP() は標準化されていない。 それにも関わらず、 \fBscalbf\fP() はいくつかの他のシステムに存在する。 +.SH バグ +.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6803 +.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6804 +Before glibc 2.20, these functions did not set \fIerrno\fP for domain and range +errors. .SH 関連項目 \fBldexp\fP(3), \fBscalbln\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/scalbln.3 b/manual/LDP_man-pages/draft/man3/scalbln.3 deleted file mode 100644 index 3fb16d76..00000000 --- a/manual/LDP_man-pages/draft/man3/scalbln.3 +++ /dev/null @@ -1,143 +0,0 @@ -.\" Copyright 2004 Andries Brouwer . -.\" and Copyright 2008, Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-05, Akihiro MOTOKI -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH SCALBLN 3 2013\-06\-21 "" "Linux Programmer's Manual" -.SH 名前 -scalbn, scalbnf, scalbnl, scalbln, scalblnf, scalblnl \- -浮動小数点数に基数の整数乗を掛ける -.SH 書式 -\fB#include \fP -.sp -\fBdouble scalbln(double \fP\fIx\fP\fB, long int \fP\fIexp\fP\fB);\fP -.br -\fBfloat scalblnf(float \fP\fIx\fP\fB, long int \fP\fIexp\fP\fB);\fP -.br -\fBlong double scalblnl(long double \fP\fIx\fP\fB, long int \fP\fIexp\fP\fB);\fP -.sp -\fBdouble scalbn(double \fP\fIx\fP\fB, int \fP\fIexp\fP\fB);\fP -.br -\fBfloat scalbnf(float \fP\fIx\fP\fB, int \fP\fIexp\fP\fB);\fP -.br -\fBlong double scalbnl(long double \fP\fIx\fP\fB, int \fP\fIexp\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBscalbln\fP(), \fBscalblnf\fP(), \fBscalblnl\fP(): -.RS -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.br -\fBscalbn\fP(), \fBscalbnf\fP(), \fBscalbnl\fP(): -.RS -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad b -.SH 説明 -これらの関数は最初の引き数 \fIx\fP に \fBFLT_RADIX\fP の \fIexp\fP 乗を掛ける (\fBFLT_RADIX\fP はおそらく 2 -である)。つまり、以下の式の値を返す。 -.nf - - x * FLT_RADIX ** exp -.fi - -.\" not in /usr/include but in a gcc lib -\fBFLT_RADIX\fP の定義は \fI\fP をインクルードすることで得られる。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP * \fBFLT_RADIX\fP ** \fIexp\fP を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が正の無限大 (負の無限大) の場合、正の無限大 (負の無限大) が返される。 - -\fIx\fP が +0 (\-0) の場合、+0 (\-0) が返される。 - -結果がオーバーフローする場合、 範囲エラー (range error) が発生し、 各関数はそれぞれ \fBHUGE_VAL\fP, -\fBHUGE_VALF\fP, \fBHUGE_VALL\fP を返す。符号は \fIx\fP と同じになる。 - -結果がアンダーフローする場合、範囲エラーが発生し、 各関数は 0 を返す。符号は \fIx\fP と同じになる。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -範囲エラー (range error)、オーバーフローの場合 -.\" .I errno -.\" is set to -.\" .BR ERANGE . -オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 -.TP -範囲エラー (range error)、アンダーフローの場合 -.\" .I errno -.\" is set to -.\" .BR ERANGE . -アンダーフロー浮動小数点例外 (\fBFE_UNDERFLOW\fP) が上がる。 -.PP -.\" FIXME . Is it intentional that these functions do not set errno? -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6803 -これらの関数は \fIerrno\fP を設定しない。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBscalbn\fP(), \fBscalbnf\fP(), \fBscalbnl\fP(), \fBscalbln\fP(), \fBscalblnf\fP(), -\fBscalblnl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 注意 -これらの関数は、 \fBscalb\fP(3) に説明がある廃止予定の関数群とは二番目の -引き数の型が異なる。このページで説明する関数群は、二番目の引き数の型が -整数である。これに対して \fBscalb\fP(3) に説明がある関数群は、二番目の -引き数の型が \fIdouble\fP である。 - -\fBFLT_RADIX\fP が 2 の場合 (これが普通だが)、 -その場合は \fBscalbn\fP() は \fBldexp\fP(3) と等価である。 -.SH 関連項目 -\fBldexp\fP(3), \fBscalb\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/scandir.3 b/manual/LDP_man-pages/draft/man3/scandir.3 deleted file mode 100644 index f989bd98..00000000 --- a/manual/LDP_man-pages/draft/man3/scandir.3 +++ /dev/null @@ -1,228 +0,0 @@ -.\" 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:26:16 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Thu Apr 11 17:11:33 1996 by Andries Brouwer (aeb@cwi.nl): -.\" Corrected type of compar routines, as suggested by -.\" Miguel Barreiro (enano@avalon.yaix.es). Added example. -.\" Modified Sun Sep 24 20:15:46 2000 by aeb, following Petter Reinholdtsen. -.\" Modified 2001-12-26 by aeb, following Joey. Added versionsort. -.\" -.\" The pieces on scandirat(3) were copyright and licensed as follows. -.\" -.\" Copyright (c) 2012, Mark R. Bannister -.\" based on text in mkfifoat.3 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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 Hiroaki Nagoya all rights reserved. -.\" Translated Thu May 28 1998 by Hiroaki Nagoya -.\" Updated & Modified Sat Jan 19 18:22:21 JST 2002 -.\" by Yuichi SATO -.\" Updated & Modified Sun Jan 16 08:12:04 JST 2005 -.\" by Yuichi SATO -.\" -.TH SCANDIR 3 2014\-05\-28 GNU "Linux Programmer's Manual" -.SH 名前 -scandir, scandirat, alphasort, versionsort \- ディレクトリを走査する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint scandir(const char *\fP\fIdirp\fP\fB, struct dirent ***\fP\fInamelist\fP\fB,\fP -.RS -\fBint (*\fP\fIfilter\fP\fB)(const struct dirent *),\fP -\fBint (*\fP\fIcompar\fP\fB)(const struct dirent **, const struct dirent **));\fP -.RE -.sp -\fBint alphasort(const struct dirent **\fP\fIa\fP\fB, const struct dirent **\fP\fIb\fP\fB);\fP -.sp -\fBint versionsort(const struct dirent **\fP\fIa\fP\fB, const struct dirent **\fP\fIb\fP\fB);\fP - -\fB#include \fP /* AT_* 定数の定義 */ -\fB#include \fP -.sp -.fi -\fBint scandirat(int \fP\fIdirfd\fP\fB, const char *\fP\fIdirp\fP\fB,\fP \fBstruct dirent -***\fP\fInamelist\fP\fB,\fP -.nf -.RS -\fBint (*\fP\fIfilter\fP\fB)(const struct dirent *),\fP -\fBint (*\fP\fIcompar\fP\fB)(const struct dirent **, const struct dirent **));\fP -.RE -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBscandir\fP(), \fBalphasort\fP(): -.br -.RS 4 -.PD 0 -.ad b -_BSD_SOURCE || _SVID_SOURCE -.br -|| /* glibc 2.10 以降: */ -.RS 4 -(_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700) -.RE -.PD -.RE -.sp -\fBversionsort\fP(): _GNU_SOURCE -.sp -\fBscandirat\fP(): _GNU_SOURCE -.SH 説明 -関数 \fBscandir\fP() はディレクトリ \fIdirp\fP を走査し、 ディレクトリの各エントリーを引き数として \fBfilter\fP() -を呼び出す。 \fBfilter\fP() が 0 以外の値を返すエントリーは \fBmalloc\fP(3) によって 確保された文字列に保存され、比較関数 -\fBcompar\fP() を用いて \fBqsort\fP(3) によりソートされ、 \fBmalloc\fP(3) により確保された配列 -\fInamelist\fP にまとめられる。 \fIfilter\fP が NULL ならば、すべてのエントリーが選択される。 -.LP -比較関数 \fIcompar\fP() には \fBalphasort\fP() 関数と \fBversionsort\fP() 関数を使うことができる。 -\fBalphasort\fP() は \fBstrcoll\fP(3) を用いてディレクトリエントリーをソートし、 \fBversionsort\fP() -は文字列 \fI(*a)\->d_name\fP と \fI(*b)\->d_name\fP に対して \fBstrverscmp\fP(3) を用いる。 -.SS scandirat() -\fBscandirat\fP() 関数は \fBscandir\fP() と全く同様の動作をする。差分についてはここで説明する。 - -\fIdirp\fP で指定されたパス名が相対パスの場合、ファイルディスクリプター \fIdirfd\fP が参照するディレクトリからの相対パスと解釈される -(これに対して、\fBscandir\fP() の場合は、相対パス名は、呼び出したプロセスのカレントワーキングディレクトリからの相対パスと解釈される)。 - -\fIdirp\fP が相対パスで \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 \fIdirp\fP は (\fBscandir\fP() と同様に) -呼び出したプロセスのカレントワーキングディレクトリからの相対パスと解釈される。 - -\fIdirp\fP が絶対パスの場合、\fIdirfd\fP は無視される。 -.PP -\fBscandirat\fP() が必要な理由については \fBopenat\fP(2) を参照すること。 -.SH 返り値 -\fBscandir\fP() 関数は、選択されたディレクトリのエントリー数を返す。 エラーの場合、 \-1 を返し、 \fIerrno\fP -にエラーの原因を示す値を設定する。 -.PP -関数 \fBalphasort\fP() と \fBversionsort\fP() は 1 番目の引き数が 2 番目の引き数に対して、 -[小さい/等しい/大きい] かに応じて、0 より [小さい/等しい/大きい] 値を返す。 -.SH エラー -.TP -\fBENOENT\fP -\fIdirp\fP で指定されたパスが存在しない。 -.TP -\fBENOMEM\fP -操作を完了するのに十分なメモリーがない。 -.TP -\fBENOTDIR\fP -\fIdirp\fP で指定されたパスがディレクトリではない。 -.PP -\fBscandirat\fP() では追加で以下のエラーも発生する: -.TP -\fBEBADF\fP -\fIdirfd\fP が有効なファイルディスクリプターではない。 -.TP -\fBENOTDIR\fP -\fIdirp\fP が相対パスで、\fIdirfd\fP がディレクトリ以外のファイルを参照している -ファイルディスクリプターである。 -.SH バージョン -\fBversionsort\fP() は、glibc バージョン 2.1 で追加された。 - -\fBscandirat\fP() は glibc バージョン 2.15 で追加された。 -.SH 準拠 -\fBalphasort\fP(), \fBscandir\fP(): 4.3BSD, POSIX.1\-2008. - -.\" .LP -.\" The functions -.\" .BR scandir () -.\" and -.\" .BR alphasort () -.\" are from 4.3BSD, and have been available under Linux since libc4. -.\" Libc4 and libc5 use the more precise prototype -.\" .sp -.\" .nf -.\" int alphasort(const struct dirent ** a, -.\" const struct dirent **b); -.\" .fi -.\" .sp -.\" but glibc 2.0 returns to the imprecise BSD prototype. -\fBversionsort\fP() と \fBscandirat\fP() は GNU 拡張である。 -.SH 注意 -glibc 2.1 以降では \fBalphasort\fP() は \fBstrcoll\fP(3) を呼び出す。 \fBalphasort\fP() は以前は -\fBstrcmp\fP(3) を使っていた。 -.SH 例 -.nf -#define _SVID_SOURCE -/* カレントディレクトリのファイルを逆順に出力する */ -#include - -int -main(void) -{ - struct dirent **namelist; - int n; - - n = scandir(".", &namelist, NULL, alphasort); - if (n < 0) - perror("scandir"); - else { - while (n\-\-) { - printf("%s\en", namelist[n]\->d_name); - free(namelist[n]); - } - free(namelist); - } -} -.fi -.SH 関連項目 -\fBclosedir\fP(3), \fBfnmatch\fP(3), \fBopendir\fP(3), \fBreaddir\fP(3), -\fBrewinddir\fP(3), \fBseekdir\fP(3), \fBstrcmp\fP(3), \fBstrcoll\fP(3), -\fBstrverscmp\fP(3), \fBtelldir\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index e9e66622..116f8522 100644 --- a/manual/LDP_man-pages/draft/man3/scanf.3 +++ b/manual/LDP_man-pages/draft/man3/scanf.3 @@ -67,34 +67,32 @@ .\" Updated 2013-05-04, Akihiro MOTOKI .\" Updated 2013-07-22, Akihiro MOTOKI .\" -.TH SCANF 3 2014\-01\-11 GNU "Linux Programmer's Manual" +.TH SCANF 3 2020\-08\-13 GNU "Linux Programmer's Manual" .SH 名前 scanf, fscanf, sscanf, vscanf, vsscanf, vfscanf \- 書式付き入力変換 .SH 書式 .nf \fB#include \fP - +.PP \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 \fP +\fB#include \fP +.PP \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 +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in +.RE .ad l -.sp +.PP \fBvscanf\fP(), \fBvsscanf\fP(), \fBvfscanf\fP(): .RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -または \fIcc \-std=c99\fP +_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L .ad .RE .SH 説明 @@ -102,10 +100,10 @@ _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; (conversion specifications)\fP を含めることができ、変換指定があれば、その変換の結果は \fIformat\fP に続く \fIpointer\fP 引き数が指す場所に格納される。 それぞれの \fIpointer\fP 引き数の型は、対応する変換指定が返す値に 適合していなければならない。 - +.PP \fIformat\fP 中の変換指定の個数が \fIpointer\fP 引き数の数より多かった場合の結果は未定義である。 \fIpointer\fP 引き数の数が変換指定の個数よりも多かった場合、 余分な \fIpointer\fP 引き数の評価は行われるが、それ以外は行われず無視される。 - +.PP \fBscanf\fP() 関数は標準入力ストリーム \fIstdin\fP からの入力を読み込む。 \fBfscanf\fP() はストリームポインター \fIstream\fP からの入力を読み込む。 \fBsscanf\fP() は文字列ポインター \fIstr\fP で示された文字列からの入力を読み込む。 .PP @@ -118,7 +116,7 @@ _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; ものである。ある命令の処理が失敗すると、入力はそれ以上読み込まれず、 \fBscanf\fP() は返る。「失敗」は \fI「入力の失敗」 (input failure)\fP と \fI「一致の失敗」 (matching failure)\fP のいずれかである。 入力の失敗は入力文字が使用できなかったことを意味し、 一致の失敗は入力が不適切であったこと (下記参照) を意味する。 - +.PP 命令は以下のいずれかである: .TP \(bu @@ -141,6 +139,13 @@ failure)\fP と \fI「一致の失敗」 (matching failure)\fP のいずれか \fIpointer\fP 引き数は必要なく、 \fBscanf\fP() が返す代入が成功した数にこの指定は含まれない。 .TP \(bu +For decimal conversions, an optional quote character (\(aq). This specifies +that the input number may include thousands' separators as defined by the +\fBLC_NUMERIC\fP category of the current locale. (See \fBsetlocale\fP(3).) The +quote character may precede or follow the \(aq*\(aq assignment\-suppression +character. +.TP +\(bu 文字 \(aqm\(aq (省略可能)。これは文字列変換 (\fI%s\fP, \fI%c\fP, \fI%[\fP) とともに使用され、これを使うと 呼び出し元が入力を保持する対応するバッファーを確保する必要がなくなる。 代わりに \fBscanf\fP() が必要な大きさのバッファーを確保し、このバッファーのアドレスを 対応する \fIpointer\fP 引き数に代入する。 \fIpointer\fP 引き数は @@ -154,8 +159,10 @@ failure)\fP と \fI「一致の失敗」 (matching failure)\fP のいずれか も格納されるが、最大フィールド幅にはこの終端バイトは含まれない。 .TP \(bu -\fI「型修飾子」 (type modifier characters)\fP (省略可能)。 例えば、型修飾子 \fBl\fP を \fB%d\fP -などの整数変換と一緒に使うと、対応する \fIpointer\fP 引き数が \fIint\fP ではなく \fIlong int\fP を参照していることを指定できる。 +An optional \fItype modifier character\fP. For example, the \fBl\fP type modifier +is used with integer conversions such as \fB%d\fP to specify that the +corresponding \fIpointer\fP argument refers to a \fIlong\fP rather than a pointer +to an \fIint\fP. .TP \(bu \fI「変換指定」\fP : 実行すべき入力変換の種類を指定する。 @@ -170,8 +177,9 @@ failure)\fP と \fI「一致の失敗」 (matching failure)\fP のいずれか 変換指定には、以下の \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 へのポインターであることを示す。 +Indicates that the conversion will be one of \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, +\fBX\fP, or \fBn\fP and the next pointer is a pointer to a \fIshort\fP or \fIunsigned +short\fP (rather than \fIint\fP). .TP \fBhh\fP \fBh\fP と同じだが、次のポインターが \fIsigned char\fP か \fIunsigned char\fP へのポインターであることを示す。 @@ -182,11 +190,13 @@ failure)\fP と \fI「一致の失敗」 (matching failure)\fP のいずれか .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 -とともに使用すると、 パラメーターはそれぞれワイド文字やワイド文字列へのポインターであると みなされる。 +Indicates either that the conversion will be one of \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, +\fBx\fP, \fBX\fP, or \fBn\fP and the next pointer is a pointer to a \fIlong\fP or +\fIunsigned long\fP (rather than \fIint\fP), or that the conversion will be one of +\fBe\fP, \fBf\fP, or \fBg\fP and the next pointer is a pointer to \fIdouble\fP (rather +than \fIfloat\fP). Specifying two \fBl\fP characters is equivalent to \fBL\fP. If +used with \fB%c\fP or \fB%s\fP, the corresponding parameter is considered as a +pointer to a wide character or wide\-character string respectively. .TP \fBL\fP .\" MTK, Jul 05: The following is no longer true for modern @@ -214,12 +224,17 @@ failure)\fP と \fI「一致の失敗」 (matching failure)\fP のいずれか (但し、先頭のホワイトスペース文字は捨てられる)、 変数への代入は生じない。 .TP \fBd\fP +.\" .TP +.\" .B D +.\" Equivalent to +.\" .IR ld ; +.\" this exists only for backward compatibility. +.\" (Note: thus only in libc4 +.\" In libc5 and glibc the +.\" .B %D +.\" is silently ignored, causing old programs to fail mysteriously.) 符号つきの 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進数として読み込まれる。 @@ -232,7 +247,9 @@ failure)\fP と \fI「一致の失敗」 (matching failure)\fP のいずれか 符号なしの 10進の整数に対応する。 次のポインターは \fIunsigned int\fP へのポインターでなければならない。 .TP \fBx\fP -符号なしの 16 進の整数に対応する。 次のポインターは \fIunsigned int\fP へのポインターでなければならない。 +Matches an unsigned hexadecimal integer (that may optionally begin with a +prefix of \fI0x\fP or \fI0X\fP, which is discarded); the next pointer must be a +pointer to \fIunsigned int\fP. .TP \fBX\fP \fBx\fP と同一である。 @@ -253,9 +270,11 @@ failure)\fP と \fI「一致の失敗」 (matching failure)\fP のいずれか (C99) \fBf\fP と同一である。 .TP \fBs\fP -ホワイトスペースではない文字で構成された文字列に対応する。 次のポインターは文字の配列へのポインターでなければならず、 -その文字配列は、入力された文字列と (自動的に追加される) 終端のヌルバイト (\(aq\e0\(aq) を格納するのに十分な大きさでなければならない。 -文字列の入力は、ホワイトスペースが入力されるか、最大フィールド幅に 達するか、のどちらかが起こると停止される。 +Matches a sequence of non\-white\-space characters; the next pointer must be a +pointer to the initial element of a character array that is long enough to +hold the input sequence and the terminating null byte (\(aq\e0\(aq), which +is added automatically. The input string stops at white space or at the +maximum field width, whichever occurs first. .TP \fBc\fP \fI「最大フィールド幅」\fP (デフォルトは 1) で指定された幅の文字の列に対応する。 次のポインターは \fIchar\fP @@ -264,33 +283,45 @@ failure)\fP と \fI「一致の失敗」 (matching failure)\fP のいずれか フォーマット文の中で明示的にスペースを使用すれば良い。 .TP \fB\&[\fP -格納された文字列のうちから取り出された、 指定された文字の集合で構成される空ではない文字の列に対応する。 次のポインターは \fIchar\fP -へのポインターでなければならず、 そこには文字列中のすべての文字と終端のヌルバイト を格納するための十分な領域がなければならない。 -通常行われる先頭のホワイトスペースの読み飛ばしは行われない。 この文字列は特別な集合の中の文字で構成されている。 この集合は 開き括弧 \fB[\fP -と閉じ括弧 \fB]\fP の間の文字で定義される。 開き括弧のあとの最初の文字が曲アクセント記号 (\fB^\fP) -の場合、集合はこれらの文字を含まないものとなる。 閉じ括弧を集合に含ませるためには、この文字を開き括弧または -曲アクセント記号のあとの最初の文字にすればよい。 つまり、他の位置に閉じ括弧を置くと文字の集合が終る。 ハイフン \fB\-\fP もまた特殊文字である。 -二つの異なる文字の間に置かれた時、この文字は、 その間にある全ての文字を集合に加える。 ハイフン自体を含ませるためには、 -括弧が閉じる前の最後の一文字をハイフンにすればよい。 例えば、 \fB[^]0\-9\-]\fP は「閉じ括弧、0 〜 9、ハイフンの 3 -種類を除く全ての文字」の集合を意味する。 この文字列は 集合に含まれていない (曲アクセントの場合には含まれる) 文字の -出現または確保された領域が使い切られた時に終了する。 +Matches a nonempty sequence of characters from the specified set of accepted +characters; the next pointer must be a pointer to \fIchar\fP, and there must be +enough room for all the characters in the string, plus a terminating null +byte. The usual skip of leading white space is suppressed. The string is +to be made up of characters in (or not in) a particular set; the set is +defined by the characters between the open bracket \fB[\fP character and a +close bracket \fB]\fP character. The set \fIexcludes\fP those characters if the +first character after the open bracket is a circumflex (\fB\(ha\fP). To +include a close bracket in the set, make it the first character after the +open bracket or the circumflex; any other position will end the set. The +hyphen character \fB\-\fP is also special; when placed between two other +characters, it adds all intervening characters to the set. To include a +hyphen, make it the last character before the final close bracket. For +instance, \fB[\(ha]0\-9\-]\fP means the set "everything except close bracket, +zero through nine, and hyphen". The string ends with the appearance of a +character not in the (or, with a circumflex, in) set or when the field width +runs out. .TP \fBp\fP -(\fBprintf\fP(3) の \fB%p\fP で印字されるような) ポインター値に対応する。 次のポインターは \fIvoid\fP -へのポインターへのポインターでなければならない。 +Matches a pointer value (as printed by \fB%p\fP in \fBprintf\fP(3)); the next +pointer must be a pointer to a pointer to \fIvoid\fP. .TP \fBn\fP -どんな入力も必要としない。 そのかわりに、 入力からここまで消費された文字数が次のポインターで指定された場所に 格納される。 このポインターは -\fIint\fP へのポインターでなければならない。 変換を抑制するのであれば \fB*\fP 代入抑制文字を使って抑制することができるのだが、 -この変換指定子は変換では「ない」。 C 言語の標準規格では「実行の完了時に返される代入の回数は \fB%n\fP 命令の実行では増加しない」となっているが、 -正誤表の内容はこれと矛盾するようである。おそらく、 \fB%n\fP 変換が返り値に与える影響についてはどのような仮定もしないのが 賢明であろう。 +Nothing is expected; instead, the number of characters consumed thus far +from the input is stored through the next pointer, which must be a pointer +to \fIint\fP. This is \fInot\fP a conversion and does \fInot\fP increase the count +returned by the function. The assignment can be suppressed with the \fB*\fP +assignment\-suppression character, but the effect on the return value is +undefined. Therefore \fB%*n\fP conversions should not be used. .SH 返り値 -これらの関数は、一致と代入が成功した入力要素の個数を返す。 返される値は渡された変換の個数よりも少ないこともあり、 最初に一致の失敗があった場合には 0 -になることもある。 - -最初の変換が成功する前に入力の最後に達して、一致の失敗が起こった場合には、 \fBEOF\fP が返される。また、 読み込みエラーが発生した場合にも -\fBEOF\fP が返される。読み込みエラーの場合には、そのストリームの エラー指示子がセットされ (\fBferror\fP(3) 参照)、 \fIerrno\fP -にエラーを示す値がセットされる。 +On success, these functions return the number of input items successfully +matched and assigned; this can be fewer than provided for, or even zero, in +the event of an early matching failure. +.PP +The value \fBEOF\fP is returned if the end of input is reached before either +the first successful conversion or a matching failure occurs. \fBEOF\fP is +also returned if a read error occurs, in which case the error indicator for +the stream (see \fBferror\fP(3)) is set, and \fIerrno\fP is set to indicate the +error. .SH エラー .TP \fBEAGAIN\fP @@ -313,6 +344,25 @@ failure)\fP と \fI「一致の失敗」 (matching failure)\fP のいずれか .TP \fBERANGE\fP 整数変換の結果が、対応する整数型に格納できるサイズを越えてしまう。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lbw20 lb lb +l l l. +Interface Attribute Value +T{ +\fBscanf\fP(), +\fBfscanf\fP(), +.br +\fBsscanf\fP(), +\fBvscanf\fP(), +.br +\fBvsscanf\fP(), +\fBvfscanf\fP() +T} Thread safety MT\-Safe locale +.TE +.sp 1 .SH 準拠 \fBfscanf\fP(), \fBscanf\fP(), \fBsscanf\fP() 関数は C89, C99, POSIX.1\-2001 に準拠している。 これらの標準では、エラー \fBERANGE\fP は規定されていない。 @@ -328,7 +378,7 @@ failure)\fP と \fI「一致の失敗」 (matching failure)\fP のいずれか allocation conversion specifier) を (非標準の拡張として) サポートしている。この機能は少なくとも glibc 2.0 の時点ではすでに存在している。 したがって、以下のようにして、 \fBscanf\fP() に入力文字列に対してバッファーを割り当てさせることができる。割り当てられたバッファーは \fI*buf\fP で返される。 - +.PP char *buf; scanf("%as", &buf); .PP @@ -339,10 +389,10 @@ allocation conversion specifier) を (非標準の拡張として) サポート \fBa\fP 修飾子は \fIgcc \-std=c99\fP や \fIgcc \-D_ISOC99_SOURCE\fP でコンパイルしたプログラムでは (\fB_GNU_SOURCE\fP も同時に指定していない場合) 利用できない点に注意。この場合、 \fBa\fP は (上述の通り) 浮動小数点数を示す変換指定子と解釈される。 - +.PP \fBm\fP 修飾子への対応はバージョン 2.7 以降の glibc で追加されている。新しいプログラムでぇあ \fBa\fP の代わりに \fBm\fP を使用すべきである。 - +.PP POSIX で標準化されているだけでなく、 \fBm\fP 修飾子には \fBa\fP を利用する場合に比べて以下のような利点がある。 .IP * 2 \fB%c\fP 変換指定子にも適用できる (例えば \fB%3mc\fP)。 @@ -361,12 +411,12 @@ Linux 上でははっきりと定義された振る舞いをするかもしれ と組み合わせる場合には、 \fBL\fP の代わりに \fBq\fP を使用した方が良い。 .PP \fBq\fP の使用方法は 4.4BSD と同じではない。 4.4BSD では \fBq\fP は \fBL\fP と同等に浮動小数の変換に使用される。 -.SH 例 +.SH EXAMPLES 動的割り当て変換指定子を使用するには、長さ修飾子として \fBm\fP を指定する (つまり、全体としては \fB%ms\fP や \fB%m[\fP\fIrange\fP\fB]\fP となる)。以下の例にあるように、呼び出し側は返された文字列を \fBfree\fP(3) しなければならない。 +.PP .in +4n -.nf - +.EX char *p; int n; @@ -380,7 +430,7 @@ if (n == 1) { } else { fprintf(stderr, "No matching characters\en"); } -.fi +.EE .in .PP 上記の例にあるように、 \fBscanf\fP() が文字列の読み込みに成功した場合にだけ、 \fBfree\fP(3) を呼び出す必要がある。 @@ -388,6 +438,5 @@ if (n == 1) { \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sched_getcpu.3 b/manual/LDP_man-pages/draft/man3/sched_getcpu.3 index f731b405..e95a8149 100644 --- a/manual/LDP_man-pages/draft/man3/sched_getcpu.3 +++ b/manual/LDP_man-pages/draft/man3/sched_getcpu.3 @@ -34,20 +34,20 @@ .\" Translated 2008-08-21, Akihiro MOTOKI , LDP v3.04 .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH SCHED_GETCPU 3 2014\-05\-10 Linux "Linux Programmer's Manual" +.TH SCHED_GETCPU 3 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 sched_getcpu \- 呼び出したスレッドが実行されている CPU を知る .SH 書式 .nf \fB#include \fP - +.PP \fBint sched_getcpu(void);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBsched_getcpu\fP(): .ad l .RS 4 @@ -74,31 +74,38 @@ _BSD_SOURCE || _SVID_SOURCE .SH バージョン この関数は glibc 2.6 以降で利用可能である。 .SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBsched_getcpu\fP() 関数はスレッドセーフである。 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBsched_getcpu\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 \fBsched_getcpu\fP() は glibc 固有である。 .SH 注意 呼び出し +.PP .in +4n -.nf - +.EX cpu = sched_getcpu(); - -.fi +.EE .in +.PP は、以下の \fBgetcpu\fP(2) 呼び出しと等価である。 +.PP .in +4n -.nf - +.EX int c, s; s = getcpu(&c, NULL, NULL); cpu = (s == \-1) ? s : c; -.fi +.EE .in .SH 関連項目 \fBgetcpu\fP(2), \fBsched\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/seekdir.3 b/manual/LDP_man-pages/draft/man3/seekdir.3 deleted file mode 100644 index 8dd3c8e2..00000000 --- a/manual/LDP_man-pages/draft/man3/seekdir.3 +++ /dev/null @@ -1,79 +0,0 @@ -.\" 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:25:21 1993 by Rik Faith (faith@cs.unc.edu) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Wed Dec 24 12:34:12 JST 1997 -.\" by HIROFUMI Nishizuka -.\" Updated 2009-04-24, Akihiro MOTOKI , LDP v3.20 -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" -.TH SEEKDIR 3 2013\-09\-09 "" "Linux Programmer's Manual" -.SH 名前 -seekdir \- 次の readdir() 呼び出しのために、ディレクトリストリーム中の位置を 設定する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid seekdir(DIR *\fP\fIdirp\fP\fB, long \fP\fIloc\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBseekdir\fP(): _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE -.SH 説明 -\fBseekdir\fP() 関数は、次の \fBreaddir\fP(3) 呼び出しの開始位置である、 ディレクトリストリームの中での位置を設定する。 -\fIloc\fP 引き数には、それ以前の \fBtelldir\fP(3) の呼び出しで返された値を渡すべきである。 -.SH 返り値 -\fBseekdir\fP() 関数は、値を返さない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBseekdir\fP() 関数はスレッドセーフである。 -.SH 準拠 -4.3BSD, POSIX.1\-2001. -.SH 注意 -バージョン 2.1.1 以前の glibc では、 \fIloc\fP 引き数の型は \fIoff_t\fP であった。 POSIX.1\-2001 では -\fIlong\fP と規定されており、glibc 2.1.2 以降では \fIlong\fP -になっている。この引き数の値に前提を置く際には気を付けないといけない理由については \fBtelldir\fP(3) を参照のこと。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sem_close.3 b/manual/LDP_man-pages/draft/man3/sem_close.3 deleted file mode 100644 index eba8f4d3..00000000 --- a/manual/LDP_man-pages/draft/man3/sem_close.3 +++ /dev/null @@ -1,65 +0,0 @@ -'\" t -.\" Copyright (C) 2006 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-04-18, Akihiro MOTOKI -.\" -.TH SEM_CLOSE 3 2012\-05\-13 Linux "Linux Programmer's Manual" -.SH 名前 -sem_close \- 名前付きセマフォをクローズする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint sem_close(sem_t *\fP\fIsem\fP\fB);\fP -.fi -.sp -\fI\-pthread\fP とリンクする。 -.SH 説明 -\fBsem_close\fP() は \fIsem\fP が参照する名前付きセマフォをクローズし、 このセマフォ用に呼び出し元プロセスにシステムが割り当てていた -リソースを解放できるようにする。 -.SH 返り値 -成功すると、 \fBsem_close\fP() は 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値をセットする。 -.SH エラー -.TP -\fBEINVAL\fP -\fIsem\fP は有効なセマフォではない。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -オープンされたすべての名前付きセマフォは、プロセス終了時、もしくは \fBexecve\fP(2) 実行時に自動的にクローズされる。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sem_destroy.3 b/manual/LDP_man-pages/draft/man3/sem_destroy.3 deleted file mode 100644 index 532c6524..00000000 --- a/manual/LDP_man-pages/draft/man3/sem_destroy.3 +++ /dev/null @@ -1,74 +0,0 @@ -'\" t -.\" Copyright (C) 2006 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-04-18, Akihiro MOTOKI -.\" -.TH SEM_DESTROY 3 2014\-03\-03 Linux "Linux Programmer's Manual" -.SH 名前 -sem_destroy \- 名前なしセマフォを破棄する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint sem_destroy(sem_t *\fP\fIsem\fP\fB);\fP -.fi -.sp -\fI\-pthread\fP とリンクする。 -.SH 説明 -\fBsem_destroy\fP() は \fIsem\fP が指すアドレスにある名前なしセマフォを破棄する。 - -\fBsem_destroy\fP() を使って破棄するのは、 \fBsem_init\fP(3) で初期化したセマフォだけにすべきである。 - -他のプロセスやスレッドが (\fBsem_wait\fP(3) で) 待ち状態になっているセマフォを破棄した場合の挙動は定義されていない。 - -すでに破棄されたセマフォを、 \fBsem_init\fP(3) を使って再初期化される前に使用した場合、その結果は未定義である。 -.SH 返り値 -成功すると、 \fBsem_destroy\fP() は 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値をセットする。 -.SH エラー -.TP -\fBEINVAL\fP -\fIsem\fP は有効なセマフォではない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBsem_destroy\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -.\" But not on NPTL, where sem_destroy () is a no-op.. -名前なしセマフォは、そのセマフォが置かれているメモリーが解放される前に、 \fBsem_destroy\fP() -を使って破棄しておくべきである。これを行わなかった場合、実装によっては リソースのリークが起こりえる。 -.SH 関連項目 -\fBsem_init\fP(3), \fBsem_post\fP(3), \fBsem_wait\fP(3), \fBsem_overview\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sem_getvalue.3 b/manual/LDP_man-pages/draft/man3/sem_getvalue.3 deleted file mode 100644 index 684edab9..00000000 --- a/manual/LDP_man-pages/draft/man3/sem_getvalue.3 +++ /dev/null @@ -1,70 +0,0 @@ -'\" t -.\" Copyright (C) 2006 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-04-18, Akihiro MOTOKI -.\" -.TH SEM_GETVALUE 3 2014\-03\-03 Linux "Linux Programmer's Manual" -.SH 名前 -sem_getvalue \- セマフォの値を取得する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint sem_getvalue(sem_t *\fP\fIsem\fP\fB, int *\fP\fIsval\fP\fB);\fP -.fi -.sp -\fI\-pthread\fP とリンクする。 -.SH 説明 -\fBsem_getvalue\fP() は、 \fIsem\fP が指すセマフォの現在の値を \fIsval\fP で指す整数に格納する。 - -POSIX.1\-2001 によると、 1つ以上のプロセスかスレッドが \fBsem_wait\fP(3) でセマフォのロック待ちで停止している場合、 -\fIsval\fP で返される値は 0 もしくは負の値のいずれかとなる。 負の値の場合、その絶対値は \fBsem_wait\fP(3) -で現在停止しているプロセスかスレッドの合計数に等しい。 Linux は前者の動作 (0 を返す動作) を採用している。 -.SH 返り値 -成功すると、 \fBsem_getvalue\fP() は 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値をセットする。 -.SH エラー -.TP -\fBEINVAL\fP -\fIsem\fP は有効なセマフォではない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBsem_getvalue\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fBsem_getvalue\fP() が返るときには、すでにセマフォの値は変化している可能性がある。 -.SH 関連項目 -\fBsem_post\fP(3), \fBsem_wait\fP(3), \fBsem_overview\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sem_init.3 b/manual/LDP_man-pages/draft/man3/sem_init.3 deleted file mode 100644 index ec3d8f36..00000000 --- a/manual/LDP_man-pages/draft/man3/sem_init.3 +++ /dev/null @@ -1,84 +0,0 @@ -'\" t -.\" Copyright (C) 2006 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-04-18, Akihiro MOTOKI -.\" -.TH SEM_INIT 3 2014\-03\-10 Linux "Linux Programmer's Manual" -.SH 名前 -sem_init \- 名前なしセマフォを初期化する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint sem_init(sem_t *\fP\fIsem\fP\fB, int \fP\fIpshared\fP\fB, unsigned int \fP\fIvalue\fP\fB);\fP -.fi -.sp -\fI\-pthread\fP とリンクする。 -.SH 説明 -\fBsem_init\fP() は、 \fIsem\fP が指すアドレスにある名前なしセマフォを初期化する。 \fIvalue\fP -引き数はそのセマフォの初期値を指定する。 - -\fIpshared\fP 引き数は、このセマフォがプロセス内のスレッド間で共有されるのか、 プロセス間で共有されるのか、を示す。 - -\fIpshared\fP が 0 の場合、セマフォはプロセス内のスレッド間で共有される。 セマフォはすべてのスレッドから参照可能なアドレスに配置すべきである -(例えば、大域変数や、ヒープ上に動的に割り当てられた変数など)。 - -\fIpshared\fP が 0 以外の場合、セマフォはプロセス間で共有される。セマフォは 共有メモリー領域に配置すべきである -(\fBshm_open\fP(3), \fBmmap\fP(2), \fBshmget\fP(2) 参照)。 (\fBfork\fP(2) -で生成された子プロセスは親プロセスのメモリーマッピングを継承するため、 子プロセスもセマフォにアクセスできる。) -共有メモリー領域にアクセスできるプロセスならば、どのプロセスでも \fBsem_post\fP(3) や \fBsem_wait\fP(3) -などを使ってセマフォを操作できる。 - -すでに初期化済のセマフォを初期化した場合の挙動は定義されていない。 -.SH 返り値 -成功すると、 \fBsem_init\fP() は 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値をセットする。 -.SH エラー -.TP -\fBEINVAL\fP -\fIvalue\fP が \fBSEM_VALUE_MAX\fP を超えている。 -.TP -\fBENOSYS\fP -\fIpshared\fP が 0 以外だが、システムがプロセス共有セマフォをサポートしていない (\fBsem_overview\fP(7) 参照)。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBsem_init\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -妙なことに、POSIX.1\-2001 は \fBsem_init\fP() が成功した場合に返すべき値を規定していない。 POSIX.1\-2008 -ではこれが修正され、成功時には 0 を返すことが規定された。 -.SH 関連項目 -\fBsem_destroy\fP(3), \fBsem_post\fP(3), \fBsem_wait\fP(3), \fBsem_overview\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sem_open.3 b/manual/LDP_man-pages/draft/man3/sem_open.3 deleted file mode 100644 index 33862ceb..00000000 --- a/manual/LDP_man-pages/draft/man3/sem_open.3 +++ /dev/null @@ -1,110 +0,0 @@ -'\" t -.\" Copyright (C) 2006 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-04-18, Akihiro MOTOKI -.\" Updated 2009-02-23, Akihiro MOTOKI , LDP v3.19 -.\" -.TH SEM_OPEN 3 2012\-05\-13 Linux "Linux Programmer's Manual" -.SH 名前 -sem_open \- 名前付きセマフォを初期化し、オープンする -.SH 書式 -.nf -\fB#include \fP /* For O_* constants */ -\fB#include \fP /* For mode constants */ -\fB#include \fP -.sp -\fBsem_t *sem_open(const char *\fP\fIname\fP\fB, int \fP\fIoflag\fP\fB);\fP -\fBsem_t *sem_open(const char *\fP\fIname\fP\fB, int \fP\fIoflag\fP\fB, \fP -\fB mode_t \fP\fImode\fP\fB, unsigned int \fP\fIvalue\fP\fB);\fP -.fi -.sp -\fI\-pthread\fP とリンクする。 -.SH 説明 -\fBsem_open\fP() は、新規の POSIX セマフォを作成するか、既存のセマフォのオープンを行う。 セマフォは \fIname\fP で識別される。 -\fIname\fP の構成の詳細は \fBsem_overview\fP(7) を参照。 - -.\" In reality the filesystem IDs are used on Linux. -\fIoflag\fP 引き数には、 \fBsem_open\fP() の動作を制御するフラグを指定する (oflag の値の定義は -\fI\fP のインクルードにより得られる)。 \fIoflag\fP に \fBO_CREAT\fP -が指定されると、まだ存在しない場合にはそのセマフォが作成される。 セマフォの所有者 (ユーザー ID)、グループ所有権 (グループ ID) には、 -それぞれ呼び出し元プロセスの実効 UID、実効 GID が設定される。 \fIoflag\fP に \fBO_CREAT\fP と \fBO_EXCL\fP -の両方が指定された場合、指定された名前 \fIname\fP のセマフォがすでに存在するとエラーが返される。 -.PP -\fIoflag\fP に \fBO_CREAT\fP を指定する場合、さらに引き数が 2 つ必要である。 \fImode\fP 引き数は、 \fBopen\fP(2) -と同じように、新しいセマフォに設定されるアクセス許可 (permission) を 指定する。許可設定はプロセスの umask でマスクされる -(許可ビットのシンボル定義は \fI\fP のインクルードにより得られる)。 -セマフォにアクセスしようとするユーザーは、読み出し許可と書き込み許可の 両方を得る必要がある。 \fIvalue\fP -引き数は新しいセマフォの初期値を指定する。 \fBO_CREAT\fP が指定され、指定した名前 \fIname\fP のセマフォがすでに存在する場合、 -\fImode\fP と \fIvalue\fP は無視される。 -.SH 返り値 -成功すると、 \fBsem_open\fP() は新しいセマフォのアドレスを返す。 このアドレスは他のセマフォ関連の関数を呼び出す際に使用される。 -エラーの場合、 \fBsem_open\fP() は \fBSEM_FAILED\fP を返し、 \fIerrno\fP にエラーを示す値をセットする。 -.SH エラー -.TP -\fBEACCES\fP -そのセマフォが存在するが、呼び出し元にはそのセマフォをオープンする 許可がない。 -.TP -\fBEEXIST\fP -\fIoflag\fP に \fBO_CREAT\fP と \fBO_EXCL\fP の両方が指定されたが、 \fIname\fP という名前のセマフォはすでに存在する。 -.TP -\fBEINVAL\fP -\fIvalue\fP が \fBSEM_VALUE_MAX\fP よりも大きい。 -.TP -\fBEINVAL\fP -\fIname\fP が "/" だけで構成され、その後ろに他の文字が続いていなかった。 -.TP -\fBEMFILE\fP -オープンされたファイル数がすでにそのプロセスにおける上限に達している。 -.TP -\fBENAMETOOLONG\fP -\fIname\fP が長すぎる。 -.TP -\fBENFILE\fP -オープンされたファイル総数がシステム全体での上限に達している。 -.TP -\fBENOENT\fP -.\" this error can occur if we have a name of the (nonportable) form -.\" /dir/name, and the directory /dev/shm/dir does not exist. -\fIoflag\fP に \fBO_CREAT\fP フラグが指定されておらず、 \fIname\fP という名前のセマフォも存在しない。 または、 -\fBO_CREAT\fP が指定されたが、 \fIname\fP が適切な形式ではなかった。 -.TP -\fBENOMEM\fP -十分なメモリーがない。 -.SH 準拠 -POSIX.1\-2001. -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sem_post.3 b/manual/LDP_man-pages/draft/man3/sem_post.3 deleted file mode 100644 index 40b20226..00000000 --- a/manual/LDP_man-pages/draft/man3/sem_post.3 +++ /dev/null @@ -1,74 +0,0 @@ -'\" t -.\" Copyright (C) 2006 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-04-18, Akihiro MOTOKI -.\" -.TH SEM_POST 3 2014\-02\-26 Linux "Linux Programmer's Manual" -.SH 名前 -sem_post \- セマフォのロックを解除する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint sem_post(sem_t *\fP\fIsem\fP\fB);\fP -.fi -.sp -\fI\-pthread\fP とリンクする。 -.SH 説明 -\fBsem_post\fP() は、 \fIsem\fP が指すセマフォの値を 1 増やす (ロックを解除する)。その結果、 セマフォの値は 0 -より大きな値に変化し、 \fBsem_wait\fP(3) で停止している別のプロセスやスレッドが呼び起こされ、 セマフォをロックできるようになる。 -.SH 返り値 -成功すると、 \fBsem_post\fP() は 0 を返す。エラーの場合、セマフォの値は変更せずに、 \-1 を返し、 \fIerrno\fP -にエラーを示す値をセットする。 -.SH エラー -.TP -\fBEINVAL\fP -\fIsem\fP は有効なセマフォではない。 -.TP -\fBEOVERFLOW\fP -.\" Added in POSIX.1-2008 TC1 (Austin Interpretation 213) -一つのセマフォで使用できる最大値を超えてしまうところであった。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBsem_post\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fBsem_post\fP() は async\-signal\-safe である。 つまり、シグナルハンドラーの中でも安全に呼び出すことができる。 -.SH 例 -\fBsem_wait\fP(3) 参照。 -.SH 関連項目 -\fBsem_getvalue\fP(3), \fBsem_wait\fP(3), \fBsem_overview\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sem_unlink.3 b/manual/LDP_man-pages/draft/man3/sem_unlink.3 deleted file mode 100644 index 973cd69d..00000000 --- a/manual/LDP_man-pages/draft/man3/sem_unlink.3 +++ /dev/null @@ -1,72 +0,0 @@ -'\" t -.\" Copyright (C) 2006 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-04-18, Akihiro MOTOKI -.\" -.TH SEM_UNLINK 3 2014\-02\-26 Linux "Linux Programmer's Manual" -.SH 名前 -sem_unlink \- 名前付きセマフォを削除する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint sem_unlink(const char *\fP\fIname\fP\fB);\fP -.fi -.sp -\fI\-pthread\fP とリンクする。 -.SH 説明 -\fBsem_unlink\fP() は、 \fIname\fP で参照される名前付きセマフォを削除する。 セマフォの名前は直ちに削除される。 -このセマフォをオープンしている他のすべてのプロセスがセマフォを 閉じて初めてセマフォの削除が行われる。 -.SH 返り値 -成功すると、 \fBsem_unlink\fP() は 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値をセットする。 -.SH エラー -.TP -\fBEACCES\fP -呼び出し元にはこのセマフォを削除する許可がない。 -.TP -\fBENAMETOOLONG\fP -\fIname\fP が長すぎる。 -.TP -\fBENOENT\fP -指定された名前 \fIname\fP のセマフォが存在しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBsem_unlink\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sem_wait.3 b/manual/LDP_man-pages/draft/man3/sem_wait.3 index d53c7cda..629f09c5 100644 --- a/manual/LDP_man-pages/draft/man3/sem_wait.3 +++ b/manual/LDP_man-pages/draft/man3/sem_wait.3 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (C) 2006 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) @@ -32,52 +31,52 @@ .\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. .\" Translated 2006-04-18, Akihiro MOTOKI .\" -.TH SEM_WAIT 3 2014\-02\-26 Linux "Linux Programmer's Manual" +.TH SEM_WAIT 3 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 sem_wait, sem_timedwait, sem_trywait \- セマフォをロックする .SH 書式 .nf \fB#include \fP -.sp +.PP \fBint sem_wait(sem_t *\fP\fIsem\fP\fB);\fP -.sp +.PP \fBint sem_trywait(sem_t *\fP\fIsem\fP\fB);\fP -.sp +.PP \fBint sem_timedwait(sem_t *\fP\fIsem\fP\fB, const struct timespec *\fP\fIabs_timeout\fP\fB);\fP .fi -.sp +.PP \fI\-pthread\fP とリンクする。 -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBsem_timedwait\fP(): _POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600 +.RE +.PP +\fBsem_timedwait\fP(): _POSIX_C_SOURCE\ >=\ 200112L .SH 説明 \fBsem_wait\fP() は \fIsem\fP が指すセマフォの値を 1 減らす (ロックする)。 セマフォの値が 0 より大きい場合、減算が実行され、関数は直ちに復帰する。 セマフォの現在値が 0 の場合には、減算を実行できるようになる (つまり、セマフォの値が 0 より大きな値になる) まで、もしくは シグナルハンドラーによって呼び出しが中断されるまで、 関数呼び出しは停止 (block) する。 - +.PP \fBsem_trywait\fP() は \fBsem_wait\fP() と同じだが、セマフォ値の減算をすぐに実行できなかった場合に、 停止 (block) するのではなくエラーで復帰する (\fIerrno\fP に \fBEAGAIN\fP がセットされる) 点が異なる。 - +.PP \fBsem_timedwait\fP() は \fBsem_wait\fP() と同じだが、セマフォ値の減算をすぐに実行できなかった場合に 関数呼び出しが停止する時間の上限を \fIabs_timeout\fP で指定する点が異なる。 \fIabs_timeout\fP 引き数は、タイムアウト時刻を指定する構造体へのポインターである。 この構造体には、タイムアウト時刻を時刻紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC)) からの 経過時間 (秒+ナノ秒) で指定する。 構造体は以下のように定義されている: - -.nf +.PP .in +4n +.EX struct timespec { time_t tv_sec; /* Seconds */ long tv_nsec; /* Nanoseconds [0 .. 999999999] */ }; +.EE .in -.fi .PP 関数呼び出し時点ですでにタイムアウトに指定した時刻が過ぎており、 かつセマフォをすぐにロックできなかった場合は、 \fBsem_timedwait\fP() はタイムアウトエラー (\fIerrno\fP に \fBETIMEDOUT\fP がセットされる) で失敗する。 - +.PP セマフォ操作がすぐに実行できるときは、 \fIabs_timeout\fP がどんな値であっても \fBsem_timedwait\fP() が失敗することは決してない。さらにいうと、この場合には \fIabs_timeout\fP の正当性の検査は行われない。 .SH 返り値 @@ -105,24 +104,28 @@ struct timespec { .\" was detected", but this does not occur on Linux(?). セマフォのロックに成功する前に時間切れとなった。 .SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBsem_wait\fP(), \fBsem_trywait\fP(), \fBsem_timedwait\fP() はスレッドセーフである。 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lbw26 lb lb +l l l. +Interface Attribute Value +T{ +\fBsem_wait\fP(), +\fBsem_trywait\fP(), +\fBsem_timedwait\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 -POSIX.1\-2001. -.SH 注意 -.\" sem_wait() is always interrupted on most other implementations, -.\" but on FreeBSD 5.4 SA_RESTART does cause restarting. -シグナルハンドラーは、 \fBsigaction\fP(2) の \fBSA_RESTART\fP -フラグを使用しているかどうかに関わらず、これらの関数の呼び出しが 停止している場合、シグナルハンドラーにより常に中断される。 -.SH 例 -.PP +POSIX.1\-2001, POSIX.1\-2008. +.SH EXAMPLES 以下に示す (ちょっとした) プログラムは名前なしセマフォの操作を行う。 プログラムはコマンドライン引き数を 2 つ取る。 最初の引き数には、 \fBSIGALRM\fP シグナルを生成するためのアラームタイマーの設定に使われる値を 秒単位で指定する。このシグナルハンドラーは、 \fImain()\fP 内で \fBsem_timedwait\fP() を使って待っているセマフォを、 \fBsem_post\fP(3) を使って加算する。 2番目の引き数には、 \fBsem_timedwait\fP() に渡すタイムアウトまでの時間を秒単位で指定する。 - +.PP .in +4n -.nf +.EX $\fB ./a.out 2 3\fP About to call sem_timedwait() sem_post() from handler @@ -130,11 +133,11 @@ sem_timedwait() succeeded $\fB ./a.out 2 1\fP About to call sem_timedwait() sem_timedwait() timed out -.fi +.EE .in .SS プログラムのソース \& -.nf +.EX #include #include #include @@ -209,11 +212,10 @@ main(int argc, char *argv[]) exit((s == 0) ? EXIT_SUCCESS : EXIT_FAILURE); } -.fi +.EE .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/setaliasent.3 b/manual/LDP_man-pages/draft/man3/setaliasent.3 deleted file mode 100644 index 86fd7185..00000000 --- a/manual/LDP_man-pages/draft/man3/setaliasent.3 +++ /dev/null @@ -1,130 +0,0 @@ -.\" Copyright 2003 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" Polished a bit, added a little, aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Sun Sep 5 20:44:27 JST 2004 -.\" by Yuichi SATO -.\" -.TH SETALIASENT 3 2003\-09\-09 GNU "Linux Programmer's Manual" -.SH 名前 -setaliasent, endaliasent, getaliasent, getaliasent_r, getaliasbyname, -getaliasbyname_r \- エイリアスエントリーを読み込む -.SH 書式 -\fB#include \fP -.sp -\fBvoid setaliasent(void);\fP -.sp -\fBvoid endaliasent(void);\fP -.sp -\fBstruct aliasent *getaliasent(void);\fP -.sp -\fBint getaliasent_r(struct aliasent *\fP\fIresult\fP\fB,\fP -.br -\fB char *\fP\fIbuffer\fP\fB, size_t \fP\fIbuflen\fP\fB, struct aliasent **\fP\fIres\fP\fB);\fP -.sp -\fBstruct aliasent *getaliasbyname(const char *\fP\fIname\fP\fB);\fP -.sp -\fBint getaliasbyname_r(const char *\fP\fIname\fP\fB, struct aliasent -*\fP\fIresult\fP\fB,\fP -.br -\fB char *\fP\fIbuffer\fP\fB, size_t \fP\fIbuflen\fP\fB, struct aliasent **\fP\fIres\fP\fB);\fP -.SH 説明 -ネームサービススイッチ (Name Service Switch, NSS) で 利用可能なデータベースの 1 つとして、 -メールエイリアスを保持するエイリアスデータベースがある。 (どのデータベースがサポートされているかを調べるには、 getent \-\-help -を実行すること。) エイリアスデータベースにアクセスするために、 6 つの関数が提供されている。 -.PP -\fBgetaliasent\fP() 関数はエイリアスデータベースから取り出した グループ情報を含む構造体へのポインターを返す。 1 -回目に関数が呼ばれたときには、最初のエントリーを返す; それ以降はその後のエントリーを返す。 -.PP -\fBsetaliasent\fP() 関数はファイルポインターをエイリアスデータベースの先頭に巻き戻す。 -.PP -\fBendaliasent\fP() 関数はエイリアスデータベースをクローズする。 -.PP -\fBgetaliasent_r\fP() 関数は上記の関数のリエントラント版である。 要求された構造体は第 1 引き数に格納されるが、 -プログラマは他の引き数も埋めてやる必要がある。 充分な領域が与えられないと、この関数は失敗する。 -.PP -関数 \fBgetaliasbyname\fP() は name 引き数をとり、エイリアスデータベースを検索する。 エントリーは \fIstruct -aliasent\fP へのポインターとして返される。 -.PP -\fBgetaliasbyname_r\fP() は上記の関数のリエントラント版である。 要求された構造体は第 2 引き数に格納されるが、 -プログラマは他の引き数も埋めてやる必要がある。 充分な領域が与えられないと、この関数は失敗する。 -.PP -\fIstruct aliasent\fP は \fI\fP で定義されている。 -.in +4n -.nf - -struct aliasent { - char *alias_name; /* エイリアス名 */ - size_t alias_members_len; - char **alias_members; /* エイリアス名のリスト */ - int alias_local; -}; -.fi -.in -.SH 返り値 -関数 \fBgetaliasent_r\fP() と \fBgetaliasbyname_r\fP() は、エラーの場合に 0 以外の値を返す。 -.SH ファイル -デフォルトのエイリアスデータベースは、ファイル \fI/etc/aliases\fP である。 これは \fI/etc/nsswitch.conf\fP -ファイルで変更できる。 -.SH 準拠 -このルーチンは glibc 固有のものである。 NeXT システムには同様のルーチンがある。 -.in +4n -.nf - -#include - -void alias_setent(void); -void alias_endent(void); -alias_ent *alias_getent(void); -alias_ent *alias_getbyname(char *name); -.fi -.in -.SH 例 -以下の例は \fIgcc example.c \-o example\fP でコンパイルできる。 これはエイリアスデータベースにある全ての名前をダンプする。 -.sp -.nf -#include -#include -#include -#include - -int -main(void) -{ - struct aliasent *al; - setaliasent(); - for (;;) { - al = getaliasent(); - if (al == NULL) - break; - printf("Name: %s\en", al\->alias_name); - } - if (errno) { - perror("reading alias"); - exit(EXIT_FAILURE); - } - endaliasent(); - exit(EXIT_SUCCESS); -.fi -.SH 関連項目 -.\" -.\" /etc/sendmail/aliases -.\" Yellow Pages -.\" newaliases, postalias -\fBgetgrent\fP(3), \fBgetpwent\fP(3), \fBgetspent\fP(3), \fBaliases\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/setbuf.3 b/manual/LDP_man-pages/draft/man3/setbuf.3 deleted file mode 100644 index e27bb5a3..00000000 --- a/manual/LDP_man-pages/draft/man3/setbuf.3 +++ /dev/null @@ -1,166 +0,0 @@ -.\" Copyright (c) 1980, 1991 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 -.\" -.\" @(#)setbuf.3 6.10 (Berkeley) 6/29/91 -.\" -.\" Converted for Linux, Mon Nov 29 14:55:24 1993, faith@cs.unc.edu -.\" Added section to BUGS, Sun Mar 12 22:28:33 MET 1995, -.\" Thomas.Koenig@ciw.uni-karlsruhe.de -.\" Correction, Sun, 11 Apr 1999 15:55:18, -.\" Martin Vicente -.\" Correction, 2000-03-03, Andreas Jaeger -.\" Added return value for setvbuf, aeb, -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 ishikawa, keisuke -.\" all rights reserved. -.\" Translated Thu Jan 7 00:03:12 JST 1999 -.\" by ishikawa, keisuke -.\" Updated Sat May 19 JST 2001 by Kentaro Shirakata -.\" Updated & Modified Sun Jul 1 15:48:32 JST 2001 -.\" by Yuichi SATO -.\" -.TH SETBUF 3 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -setbuf, setbuffer, setlinebuf, setvbuf \- ストリームのバッファーリングの操作 -.SH 書式 -.nf -\fB#include \fP - -\fBvoid setbuf(FILE *\fP\fIstream\fP\fB, char *\fP\fIbuf\fP\fB);\fP - -\fBvoid setbuffer(FILE *\fP\fIstream\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIsize\fP\fB);\fP - -\fBvoid setlinebuf(FILE *\fP\fIstream\fP\fB);\fP - -\fBint setvbuf(FILE *\fP\fIstream\fP\fB, char *\fP\fIbuf\fP\fB, int \fP\fImode\fP\fB, size_t \fP\fIsize\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBsetbuffer\fP(), \fBsetlinebuf\fP(): _BSD_SOURCE -.SH 説明 -バッファーリングには unbuffered, block buffered, line buffered の3つのタイプが -ある。出力ストリームのタイプが unbuffered の場合、データを書き込むとすぐに出 力先ファイルに書き込まれるかターミナルに表示される。block -buffered の場合、文 字の読み書きはブロック単位でいっぺんに行われる。line buffered の場合、 -新しい行が出力されるか、ターミナルデバイスに接続しているストリーム (通常、\fIstdin\fP) から新しい行が入力されるまで文字がたくわえられる。 -ブロックを強制的に出力するには \fBfflush\fP(3) 関数を使う。 (\fBfclose\fP(3) を参照のこと) 通常、ファイルはすべて -block buffered である。ファイルに対して 初めて入出力処理を行うと \fBmalloc\fP(3) が呼び出されバッファーが獲得される。もし -ストリームが (通常、 \fIstdout\fP がそうであるように) ターミナルを参照する場合には、ファイルは line buffered と -なる。標準エラー出力 \fIstderr\fP はデフォルトでは常に unbuffered である。 -.PP -\fBsetvbuf\fP() 関数は、オープンしている任意のストリームに対してバッファーを変更できる。 引き数 \fImode\fP は、次の 3 -つのマクロのうちいずれかである: -.RS -.TP -\fB_IONBF\fP -unbuffered -.TP -\fB_IOLBF\fP -line buffered -.TP -\fB_IOFBF\fP -fully buffered -.RE -.PP -unbuffered のファイルを除き、 \fIbuf\fP 引数は \fIsize\fP -バイト以上の大きさのバッファーを指していなければならない。このバッファーは現在の バッファーの代わりに用いられる。もし、引数 \fIbuf\fP が NULL -ならば、モードだけが変更される。 新しいバッファーは次に読み書きした際に割り当てられる。 \fBsetvbuf\fP() -関数は、ストリームをオープンした後、 そのストリームに対して何らかの操作をする前にのみ使用できる。 -.PP -他の 3 つの関数は \fBsetvbuf\fP() の呼び出しに単純に置き換えることができる。 \fBsetbuf\fP() 関数は、 -.PP -.in +4n -setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ); -.in -.PP -と全く同等だし、 \fBsetbuffer\fP() 関数は、バッファーサイズがデフォルト値 \fBBUFSIZ\fP -ではなく引数で与えられる点以外は同じである。 \fBsetlinebuf\fP() 関数は以下と同じである。 -.PP -.in +4n -setvbuf(stream, NULL, _IOLBF, 0); -.in -.SH 返り値 -\fBsetvbuf\fP() 関数は、成功した場合 0 を返す。 失敗した場合、0 以外の値を返す (失敗とは、 \fImode\fP -が不正な場合またはリクエストが条件を満たさない場合である)。 \fBsetvbuf\fP() 関数が失敗した場合は \fIerrno\fP を設定することもある。 - -その他の関数は値を返さない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBsetbuf\fP(), \fBsetbuffer\fP(), \fBsetlinebuf\fP(), \fBsetvbuf\fP() はスレッドセーフである。 -.SH 準拠 -\fBsetbuf\fP() 関数および \fBsetvbuf\fP() 関数は C89 と C99 に準拠している。 -.SH バグ -.\" The -.\" .BR setbuffer () -.\" and -.\" .BR setlinebuf () -.\" functions are not portable to versions of BSD before 4.2BSD, and -.\" are available under Linux since libc 4.5.21. -.\" On 4.2BSD and 4.3BSD systems, -.\" .BR setbuf () -.\" always uses a suboptimal buffer size and should be avoided. -.P -\fIstream\fP を閉じる時 (プログラムを終了する際にもこれは起きる) には、 \fIbuf\fP -が指し示す空間とが存在していることを保証しなければならない。 例えば、次のような使い方は許されない: -.nf -.sp -#include - -int -main(void) -{ - char buf[BUFSIZ]; - setbuf(stdin, buf); - printf("Hello, world!\en"); - return 0; -} -.fi -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/setenv.3 b/manual/LDP_man-pages/draft/man3/setenv.3 deleted file mode 100644 index cf12c934..00000000 --- a/manual/LDP_man-pages/draft/man3/setenv.3 +++ /dev/null @@ -1,108 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright (C) 2004, 2007 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified Sat Jul 24 18:20:58 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Fri Feb 14 21:47:50 1997 by Andries Brouwer (aeb@cwi.nl) -.\" Modified 9 Jun 2004, Michael Kerrisk -.\" Changed unsetenv() prototype; added EINVAL error -.\" Noted nonstandard behavior of setenv() if name contains '=' -.\" 2005-08-12, mtk, glibc 2.3.4 fixed the "name contains '='" bug -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated 1997-12-19, HIROFUMI Nishizuka -.\" Updated & Modified 2005-02-17, Yuichi SATO -.\" Updated & Modified 2005-10-02, Akihiro MOTOKI -.\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2010-04-10, Akihiro MOTOKI, LDP v3.24 -.\" -.TH SETENV 3 2013\-10\-11 GNU "Linux Programmer's Manual" -.SH 名前 -setenv \- 環境変数を変更または追加する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint setenv(const char *\fP\fIname\fP\fB, const char *\fP\fIvalue\fP\fB, int \fP\fIoverwrite\fP\fB);\fP -.sp -\fBint unsetenv(const char *\fP\fIname\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBsetenv\fP(), \fBunsetenv\fP(): -.RS 4 -_BSD_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600 -.RE -.ad b -.SH 説明 -\fBsetenv\fP() 関数は、\fIname\fP が存在しない場合 環境変数 \fIname\fP に値 \fIvalue\fP を設定し、環境に追加する。 -\fIname\fP が環境に存在する場合、\fIoverwrite\fP が 0 以外ならば その値を \fIvalue\fP に変更し、\fIoverwrite\fP が -0 ならば \fIname\fP の値を変更しない (\fBsetenv\fP() は成功のステータスを返す)。 この関数は、 (\fBputenv\fP(3) -と違い) \fIname\fP と \fIvalue\fP により参照される文字列のコピーを行う。 -.PP -\fBunsetenv\fP() 関数は、変数 \fIname\fP を環境から削除する。 \fIname\fP -が環境にない場合、この関数は成功し、環境は変更されない。 -.SH 返り値 -\fBsetenv\fP() 関数は、成功すると 0 を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP にエラーの原因を示す値がセットされる。 - -\fBunsetenv\fP() 関数は、成功すると 0 を返す。 エラーの場合は \-1 を返し、 \fIerrno\fP を設定してエラーの原因を示す。 -.SH エラー -.TP -\fBEINVAL\fP -\fIname\fP が NULL であるか、長さが 0 の文字列を指しているか、 \(aq=\(aq 文字が含まれている。 -.TP -\fBENOMEM\fP -環境に新しい変数を追加するのに十分なメモリーがない。 -.SH 準拠 -4.3BSD, POSIX.1\-2001. -.SH 注意 -POSIX.1\-2001 は、 \fBsetenv\fP() や \fBunsetenv\fP() がリエントラント (再入可能) であることを要求していない。 - -glibc 2.2.2 以前では、 \fBunsetenv\fP() は 返り値が \fIvoid\fP のプロトタイプであった。 もっと最近の glibc -版は、「書式」セクションで示しているように POSIX.1\-2001 互換のプロトタイプである。 -.SH バグ -POSIX.1\-2001 では 「\fIname\fP に \(aq=\(aq 文字が含まれる場合、 \fBsetenv\fP() はエラー \fBEINVAL\fP -で失敗すべきである」と述べられている。 しかし 2.3.4 より前のバージョンの glibc では、 \fIname\fP に \(aq=\(aq -文字が含まれるのを許している。 -.SH 関連項目 -\fBclearenv\fP(3), \fBgetenv\fP(3), \fBputenv\fP(3), \fBenviron\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/setjmp.3 b/manual/LDP_man-pages/draft/man3/setjmp.3 deleted file mode 100644 index 270856a3..00000000 --- a/manual/LDP_man-pages/draft/man3/setjmp.3 +++ /dev/null @@ -1,93 +0,0 @@ -.\" Written by Michael Haardt, Fri Nov 25 14:51:42 MET 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Added sigsetjmp, Sun Mar 2 22:03:05 EST 1997, jrv@vanzandt.mv.com -.\" Modifications, Sun Feb 26 14:39:45 1995, faith@cs.unc.edu -.\" " -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 Seiiti Obara -.\" all rights reserved. -.\" Translated 1998-05-27, Seiiti Obara -.\" Updated 1999-12-11, Kentaro Shirakata -.\" Modified 2007-12-20, Akihiro MOTOKI -.\" Updated 2009-02-12, Kentaro Shirakata -.\" -.TH SETJMP 3 2014\-01\-07 "" "Linux Programmer's Manual" -.SH 名前 -setjmp, sigsetjmp \- 非局所的なジャンプのために、スタックコンテキスト (stack context) を保存する -.SH 書式 -\fB#include \fP -.sp -.nf -\fBint setjmp(jmp_buf \fP\fIenv\fP\fB);\fP - -\fBint sigsetjmp(sigjmp_buf \fP\fIenv\fP\fB, int \fP\fIsavesigs\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBsetjmp\fP(): 「注意」参照。 -.br -\fBsigsetjmp\fP(): _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || -_POSIX_C_SOURCE -.SH 説明 -\fBsetjmp\fP() と \fBlongjmp\fP(3) は、プログラムの低レベルなサブルーチン -において、エラーや割り込みが発生した時の処理に便利である。 \fBsetjmp\fP() は、 \fBlongjmp\fP(3) によって使われる \fIenv\fP -に スタックコンテキスト/スタック環境を保存する。 \fBsetjmp\fP() を呼び出した 関数が返るときに、そのスタックコンテキストは無効になる。 -.P -\fBsigsetjmp\fP() も \fBsetjmp\fP() と同様である。 \fIsavesigs\fP が 0 以外の場合、 -このプロセスの現在のシグナルマスクも \fIenv\fP に保存され、 このシグナルは後で \fBsiglongjmp\fP(3) がこの \fIenv\fP -で実行された際に復元される。 -.SH 返り値 -直接返ってくるときは、 \fBsetjmp\fP() と \fBsigsetjmp\fP() は 0 を返し、保存したコンテキストを使って -\fBlongjmp\fP(3) や \fBsiglongjmp\fP(3) から返ってくるときは 0 以外を返す。 -.SH 準拠 -\fBsetjmp\fP() は C89, C99, POSIX.1\-2001 で規定されている。 \fBsigsetjmp\fP() は -POSIX.1\-2001 で規定されている。 -.SH 注意 -POSIX は、 (\fBlongjmp\fP() 中で後で復元できるように) \fBsetjmp\fP() がシグナルマスクを保存すべきかどうかを規定していない。 -System V では保存しない。 4.3BSD では保存する; 4.3BSD にはシグナルコンテキストを保存しない関数 \fB_setjmp\fP もある。 -バージョン 2.19 より前の glibc を使う Linux では、 \fBsetjmp\fP() はデフォルトでは System V の振る舞いに従うが、 -\fB_BSD_SOURCE\fP 機能検査マクロが定義され、 \fB_POSIX_SOURCE\fP, \fB_POSIX_C_SOURCE\fP, -\fB_XOPEN_SOURCE\fP, \fB_XOPEN_SOURCE_EXTENDED\fP, \fB_GNU_SOURCE\fP, \fB_SVID_SOURCE\fP -のいずれも定義されていない時は BSD の振る舞いとなる。 glibc 2.19 以降では、 \fI\fP は -System V 版の \fBsetjmp\fP() のみを公開するようになっている。 BSD の動作を必要とするプログラムでは、 \fBsetjmp\fP() -の呼び出しを、 \fIsavesigs\fP 引き数に 0 以外の値を渡す \fBsigsetjmp\fP() に置き換えるべきである。 - -移植性のある形でシグナルマスクを保存および復元したいのなら、 \fBsigsetjmp\fP() と \fBsiglongjmp\fP(3) を使うこと。 -.P -\fBsetjmp\fP() や \fBsigsetjmp\fP() を使うと、プログラムは理解しづらく、保守しにくいものになる。 -別の方法が可能なら、それを使うべきである。 -.SH 関連項目 -\fBlongjmp\fP(3), \fBsiglongjmp\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/setlocale.3 b/manual/LDP_man-pages/draft/man3/setlocale.3 index 11f8f228..1623f757 100644 --- a/manual/LDP_man-pages/draft/man3/setlocale.3 +++ b/manual/LDP_man-pages/draft/man3/setlocale.3 @@ -44,13 +44,13 @@ .\" by Kentaro Shirakata .\" Updated Sat Oct 12 2002 by NAKANO Takeo .\" -.TH SETLOCALE 3 2014\-05\-28 GNU "Linux Programmer's Manual" +.TH SETLOCALE 3 2017\-09\-15 GNU "Linux Programmer's Manual" .SH 名前 setlocale \- 現在のロケール (locale) を設定する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBchar *setlocale(int \fP\fIcategory\fP\fB, const char *\fP\fIlocale\fP\fB);\fP .fi .SH 説明 @@ -95,23 +95,27 @@ LC_TIME 日付と時刻の表示方法 と同じ名前の環境変数 (上記の表を参照) が検査され、最後に環境変数 \fBLANG\fP が検査される。 最初に見つかった環境変数を使用する。 その値がロケール指定として正しくなければ、ロケールは変更されず、 \fBsetlocale\fP() は NULL を返す。 .PP -\fB"C"\fP ロケールや \fB"POSIX"\fP ロケールは互換性のあるロケールである。 この \fBLC_CTYPE\fP の部分は 7 ビット ASCII -文字集合に相当している。 +The locale \fB"C"\fP or \fB"POSIX"\fP is a portable locale; it exists on all +conforming systems. .PP -ロケール名の書式は、通常 \fIlanguage\fP[_\fIterritory\fP][.\fIcodeset\fP][@\fImodifier\fP] というものである。 -ここで \fIlanguage\fP は ISO 639 の言語コードである。 \fIterritory\fP は ISO 3166 の国名コードである。 -\fIcodeset\fP は \fBISO\-8859\-1\fP や \fBUTF\-8\fP のような文字集合や文字符号化識別子である。 -サポートされているロケールの一覧を得るには、 "locale \-a" を実行してみよ (\fBlocale\fP(1) 参照のこと)。 +A locale name is typically of the form +\fIlanguage\fP[_\fIterritory\fP][.\fIcodeset\fP][@\fImodifier\fP], where \fIlanguage\fP is +an ISO 639 language code, \fIterritory\fP is an ISO 3166 country code, and +\fIcodeset\fP is a character set or encoding identifier like \fBISO\-8859\-1\fP or +\fBUTF\-8\fP. For a list of all supported locales, try "locale \-a" (see +\fBlocale\fP(1)). .PP \fIlocale\fP が NULL ならば、現在のロケールを問い合わせるのみで変更はしない。 .PP main プログラムの起動時には、 互換性のある \fB"C"\fP ロケールがデフォルトで選択される。 プログラムをすべてのロケールに対して互換にしたければ、 プログラムの初期化の後に -.nf - - setlocale(LC_ALL, ""); - -.fi +.PP +.in +4n +.EX +setlocale(LC_ALL, ""); +.EE +.in +.PP を呼び出し、ロケール依存の情報には \fBlocaleconv\fP(3) の返り値を用い、 \fBMB_CUR_MAX > 1\fP の場合には文字列の操作には多バイト文字、ワイド文字関数を使用し、 文字列の比較には \fBstrcoll\fP(3), \fBwcscoll\fP(3) や \fBstrxfrm\fP(3), \fBwcsxfrm\fP(3) を用いる。 @@ -119,13 +123,28 @@ main プログラムの起動時には、 互換性のある \fB"C"\fP ロケー \fBsetlocale\fP() の呼び出しに成功すると、 そのロケール集合に対応する内部文字列 (opaque string) を返す。 この文字列は静的な記憶域に割り当てられているかもしれない。 この返って来た文字列を、カテゴリー指定と共に、 のちの setlocale の呼び出しに指定すれば、 プロセスのその部分のロケールが復元される。 設定に失敗した場合には、返り値は NULL になる。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lbw26 +l l l. +Interface Attribute Value +T{ +\fBsetlocale\fP() +T} Thread safety MT\-Unsafe const:locale env +.TE +.sp 1 .SH 準拠 -C89, C99, POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008, C89, C99. +.PP +The C standards specify only the categories \fBLC_ALL\fP, \fBLC_COLLATE\fP, +\fBLC_CTYPE\fP, \fBLC_MONETARY\fP, \fBLC_NUMERIC\fP, and \fBLC_TIME\fP. POSIX.1 adds +\fBLC_MESSAGES\fP. The remaining categories are GNU extensions. .SH 関連項目 \fBlocale\fP(1), \fBlocaledef\fP(1), \fBisalpha\fP(3), \fBlocaleconv\fP(3), \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/setlogmask.3 b/manual/LDP_man-pages/draft/man3/setlogmask.3 deleted file mode 100644 index 960cf4ab..00000000 --- a/manual/LDP_man-pages/draft/man3/setlogmask.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" Copyright (C) 2001 Andries Brouwer . -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Sat Nov 3 01:46:03 JST 2001 -.\" by Akihiro MOTOKI -.\" -.TH SETLOGMASK 3 2001\-10\-05 "" "Linux Programmer's Manual" -.SH 名前 -setlogmask \- ログの優先度マスクを設定する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint setlogmask(int \fP\fImask\fP\fB);\fP -.fi -.SH 説明 -プロセスにはログ優先度マスク(log priority mask)が用意されていて、 これを用いて \fBsyslog\fP(3) -が呼び出された場合にログ記録を行うかどうかを決定する。 他のすべての関数が呼び出された場合はログ記録が行われない。 \fImask\fP -の各ビットは優先度に対応しており、対応するビットが 1 にセットされている 優先度に対してログ収集(logging)が有効になる。 -マスクの初期値は、すべての優先度に対してログ収集が有効になるような値である。 -.LP -\fBsetlogmask\fP() 関数は、呼び出し元のプロセスに対するログマスクを設定し、 変更前のマスクを返す。 \fImask\fP 引き数が 0 -ならば、現在のログマスクは変更されない。 -.LP -以下の8レベルの優先度が定義されている(優先度の高い順): \fBLOG_EMERG\fP, \fBLOG_ALERT\fP, \fBLOG_CRIT\fP, -\fBLOG_ERR\fP, \fBLOG_WARNING\fP, \fBLOG_NOTICE\fP, \fBLOG_INFO\fP, \fBLOG_DEBUG\fP。 優先度 -\fIp\fP に対応するビット列は \fILOG_MASK(p)\fP によって求められる。 優先度 \fIp\fP 以上のすべての優先度 (\fIp\fP を含む) -のマスクビットを 求めることができるマクロ \fILOG_UPTO(p)\fP を使用できるシステムもある。 -.SH 返り値 -変更前のログ優先度マスクの値を返す。 -.SH エラー -.\" .SH NOTES -.\" The glibc logmask handling was broken in versions before glibc 2.1.1. -なし。 -.SH 準拠 -POSIX.1\-2001. POSIX.1\-2001 での説明には欠陥があることに注意すること。 -.SH 関連項目 -\fBcloselog\fP(3), \fBopenlog\fP(3), \fBsyslog\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/setnetgrent.3 b/manual/LDP_man-pages/draft/man3/setnetgrent.3 deleted file mode 100644 index abd8045d..00000000 --- a/manual/LDP_man-pages/draft/man3/setnetgrent.3 +++ /dev/null @@ -1,84 +0,0 @@ -.\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" based on glibc infopages -.\" polished - aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2005-02-20, Akihiro MOTOKI -.\" -.TH SETNETGRENT 3 2014\-05\-28 GNU "Linux Programmer's Manual" -.SH 名前 -setnetgrent, endnetgrent, getnetgrent, getnetgrent_r, innetgr \- -ネットワークグループのエントリーを操作する -.SH 書式 -.nf -\fB#include \fP - -\fBint setnetgrent(const char *\fP\fInetgroup\fP\fB);\fP - -\fBvoid endnetgrent(void);\fP - -\fBint getnetgrent(char **\fP\fIhost\fP\fB, char **\fP\fIuser\fP\fB, char **\fP\fIdomain\fP\fB);\fP - -\fBint getnetgrent_r(char **\fP\fIhost\fP\fB, char **\fP\fIuser\fP\fB,\fP -\fB char **\fP\fIdomain\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB);\fP - -\fBint innetgr(const char *\fP\fInetgroup\fP\fB, const char *\fP\fIhost\fP\fB,\fP -\fB const char *\fP\fIuser\fP\fB, const char *\fP\fIdomain\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBsetnetgrent\fP(), \fBendnetgrent\fP(), \fBgetnetgrent\fP(), \fBgetnetgrent_r\fP(), -\fBinnetgr\fP(): _BSD_SOURCE || _SVID_SOURCE -.ad b -.SH 説明 -\fInetgroup\fP は SunOS で考案されたものである。ネットグループのデータベースの エントリーは、 3 つの文字列のリスト -(\fIhostname\fP, \fIusername\fP, \fIdomainname\fP) もしくはネットグループ名である。 -前記のリストの各要素は空であってもよい。 空は何とでも一致することを意味する。 本ページで説明する関数を使うことで、ネットグループのデータベースに -アクセスすることができる。どのデータベースが検索されるかは \fI/etc/nsswitch.conf\fP ファイルで定義されている。 -.PP -\fBsetnetgrent\fP() コールは、この後で呼ばれる \fBgetnetgrent\fP() コールが検索するネットグループを定める。 -\fBgetnetgrent\fP() 関数はネットグループの次のエントリーを取得し、 \fIhost\fP, \fIuser\fP, \fIdomain\fP -にポインターを入れて返る。ヌルポインターは、対応するエントリーがどんな文字列とも一致することを意味する。 -得られたポインターは、ネットグループ関係の関数のいずれかが呼ばれるまでの 間だけ有効である。この問題を避けるためには GNU 拡張の関数 -\fBgetnetgrent_r\fP() を使うとよい。この関数は呼び出し側が用意したバッファーに -文字列を格納する。割り当て済のバッファーを全て解放するには \fBendnetgrent\fP() を使用する。 -.PP -ほとんどの場合、 (\fIhostname\fP, \fIusername\fP, \fIdomainname\fP) -の3要素の組がネットグループのメンバーかどうかを確認したいだけであろう。 \fBinnetgr\fP() -関数を使うと、上記の3つの関数を呼び出さずにこの目的を達成できる。 もう一度書いておくが、NULL ポインターはワイルドカードであり、 -あらゆる文字列と一致する。この関数はスレッドセーフである。 -.SH 返り値 -これらの関数は成功すると 1 を、失敗すると 0 を返す。 -.SH ファイル -\fI/etc/netgroup\fP -.br -\fI/etc/nsswitch.conf\fP -.SH 準拠 -.\" getnetgrent_r() is on Solaris 8 and AIX 5.1, but not the BSDs. -これらの関数は POSIX.1\-2001 にはないが、 setnetgrent (), endnetgrent (), getnetgrent (), -innetgr () はほとんどの UNIX システムで利用可能である。 \fBgetnetgrent_r\fP() -は広く他のシステムで利用できるわけではない。 -.SH 注意 -BSD の実装では \fBsetnetgrent\fP() は void を返す。 -.SH 関連項目 -\fBsethostent\fP(3), \fBsetprotoent\fP(3), \fBsetservent\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/shm_open.3 b/manual/LDP_man-pages/draft/man3/shm_open.3 deleted file mode 100644 index b8d79d41..00000000 --- a/manual/LDP_man-pages/draft/man3/shm_open.3 +++ /dev/null @@ -1,168 +0,0 @@ -.\" Copyright (C) 2002 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 -.\" -.\" FIXME . Add an example to this page -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI, all rights reserved. -.\" Translated Mon Feb 2 2003 by Akihiro MOTOKI -.\" Updated 2009-02-23, Akihiro MOTOKI , LDP v3.19 -.\" -.TH SHM_OPEN 3 2015\-01\-22 Linux "Linux Programmer's Manual" -.SH 名前 -shm_open, shm_unlink \- POSIX 共有メモリーオブジェクトの作成/オープン/削除を行う -.SH 書式 -\fB#include \fP -.br -\fB#include \fP /* mode 定数用 */ -.br -\fB#include \fP /* O_* 定数の定義用 */ -.sp -\fBint shm_open(const char *\fP\fIname\fP\fB, int \fP\fIoflag\fP\fB, mode_t \fP\fImode\fP\fB);\fP -.sp -\fBint shm_unlink(const char *\fP\fIname\fP\fB);\fP -.sp -\fI\-lrt\fP でリンクする。 -.SH 説明 -\fBshm_open\fP() は、POSIX 共有メモリーオブジェクトを新規に作成/オープンしたり、 すでに存在するオブジェクトをオープンしたりする。 -POSIX 共有メモリーオブジェクトは、実際には、関係のないプロセスが 共有メモリーの同じ領域を \fBmmap\fP(2) -するために使用することができる手段である。 \fBshm_unlink\fP() は、逆の操作、つまり以前に \fBshm_open\fP() -で作成されたオブジェクトの削除を行う。 -.LP -.\" glibc allows the initial slash to be omitted, and makes -.\" multiple initial slashes equivalent to a single slash. -.\" This differs from the implementation of POSIX message queues. -.\" glibc allows subdirectory components in the name, in which -.\" case the subdirectory must exist under /dev/shm, and allow the -.\" required permissions if a user wants to create a shared memory -.\" object in that subdirectory. -\fBshm_open\fP() の動作は \fBopen\fP(2) とよく似ている。 \fIname\fP -で作成したりオープンしたりする共有メモリーオブジェクトを指定する。 移植性を持たせるためには、共有メモリーオブジェクトは \fI/somename\fP -という形式の名前で識別し、 その名前は、最大で \fBNAME_MAX\fP (すなわち 255) 文字のヌル終端された文字列で、 -スラッシュで始まり、スラッシュ以外の文字が 1 文字以上続く形式 にすべきである。 -.LP -\fIoflag\fP はビットマスクで、 \fBO_RDONLY\fP と \fBO_RDWR\fP のいずれか一方と、以下に述べる他のフラグの論理和をとったもの -を指定する。 -.TP 1.1i -\fBO_RDONLY\fP -読み出しアクセス用にオブジェクトをオープンする。 このフラグを指定してオープンされた共有メモリーオブジェクトは、 読み出し (\fBPROT_READ\fP) -アクセスでのみ \fBmmap\fP(2) することができる。 -.TP -\fBO_RDWR\fP -読み書きアクセス用にオブジェクトをオープンする。 -.TP -\fBO_CREAT\fP -.\" In truth it is actually the filesystem IDs on Linux, but these -.\" are nearly always the same as the effective IDs. (MTK, Jul 05) -存在しない場合、共有メモリーオブジェクトを作成する。 オブジェクトのユーザーとグループの所有権は、 呼び出し元プロセスの対応する実効 ID が使われ、 -オブジェクトの許可ビットは \fImode\fP の下位 9 ビットに基づいて設定される。ただし、 ファイルモード作成マスク (\fBumask\fP(2) -参照) に設定されている値は、新規オブジェクトに関してはクリアされる。 \fImode\fP を定義するために使用できるマクロ定数(群)は -\fBopen\fP(2) に記載されている (これらの定数のシンボル定義は \fI\fP -のインクルードにより得られる)。 -.sp -新規に作成された共有メモリーオブジェクトは長さ 0 で初期化される。 オブジェクトの大きさは \fBftruncate\fP(2) を使って設定できる。 -共有メモリーオブジェクトとして新規に確保されたバイトは自動的に 0 に初期化される。 -.TP -\fBO_EXCL\fP -\fBO_CREAT\fP が一緒に指定されており、 \fIname\fP で指定された共有メモリーオブジェクトが既に存在した場合、 エラーを返す。 -オブジェクトの存在確認と、存在しなかった場合のオブジェクト作成は、 必ず一連の操作として実行される (performed atomically)。 -.TP -\fBO_TRUNC\fP -共有メモリーオブジェクトがすでに存在した場合、 そのオブジェクトを 0 バイトに切り詰める。 -.LP -これらのフラグ値の定義は \fI\fP のインクルードにより得られる。 -.LP -成功して完了した場合、 \fBshm_open\fP() は共有メモリーオブジェクトを参照する新しいファイルディスクリプターを返す。 -このファイルディスクリプターは、そのプロセス内で過去にオープンされていない ファイルディスクリプターの中で最も小さな数になることが保証される。 -\fBFD_CLOEXEC\fP フラグ (\fBfcntl\fP(2) を参照) が、このファイルディスクリプターに設定される。 - -通常、これらのファイルディスクリプターは、この後続けて実行される \fBftruncate\fP(2) (新規に作成されたオブジェクトの場合のみ) と -\fBmmap\fP(2) の呼び出しに使用される。 \fBmmap\fP(2) を呼び出した後は、ファイルディスクリプターをクローズしてもよく、 -クローズしてもメモリーマッピングに影響を与えることはない。 - -\fBshm_unlink\fP() の動作は \fBunlink\fP(2) とよく似ている: -共有メモリーオブジェクト名を削除し、すべてのプロセスが処理対象の オブジェクトをアンマップした時点でオブジェクトの割り当てを解除し、 -対応するメモリー領域の内容を破棄する。 \fBshm_unlink\fP() が成功した後で、同じ \fIname\fP を持つオブジェクトに対して -\fBshm_open\fP() を行うと、 (\fBO_CREAT\fP が指定されていない場合) 失敗する。 (\fBO_CREAT\fP -が指定されている場合、新しく別のオブジェクトが作成される)。 -.SH 返り値 -成功した場合、 \fBshm_open\fP() は非負のファイルディスクリプターを返す。 失敗した場合、 \fBshm_open\fP() は \-1 を返す。 -\fBshm_unlink\fP() は、成功した場合 0 を、エラーが起こった場合 \-1 を返す。 -.SH エラー -失敗した場合、エラーの原因を示すため \fIerrno\fP が設定される。 \fIerrno\fP に設定される値は以下の通りである: -.TP -\fBEACCES\fP -共有メモリーオブジェクトを \fBshm_unlink\fP() する権限がなかった。 -.TP -\fBEACCES\fP -指定された \fImode\fP で \fIname\fP を \fBshm_open\fP() する権限がなかった。もしくは、 \fBO_TRUNC\fP -が指定されたが、呼び出し元にはそのオブジェクトに対する書き込み権限が なかった。 -.TP -\fBEEXIST\fP -\fBO_CREAT\fP と \fBO_EXCL\fP の両方が \fBshm_open\fP() に指定されたが、 \fIname\fP -で指定された共有メモリーオブジェクトが既に存在した。 -.TP -\fBEINVAL\fP -\fBshm_open\fP() に与えられた \fIname\fP 引き数が不正であった。 -.TP -\fBEMFILE\fP -プロセスがオープン可能なファイル数の上限にすでに達していた。 -.TP -\fBENAMETOOLONG\fP -\fIname\fP の長さが \fBPATH_MAX\fP を越えている。 -.TP -\fBENFILE\fP -ファイルシステムでオープンできるファイル数の上限に達した。 -.TP -\fBENOENT\fP -存在していない \fIname\fP のオブジェクトを \fBshm_open\fP() しようとしたが、 \fBO_CREAT\fP が指定されていなかった。 -.TP -\fBENOENT\fP -存在しない \fIname\fP のオブジェクトを \fBshm_unlink\fP() しようとした。 -.SH バージョン -これらの関数は glibc 2.2 以降で提供されている。 -.SH 準拠 -POSIX.1\-2001. -.LP -POSIX.1\-2001 には、新規に作成される共有メモリーオブジェクトのグループ所有権は、 呼び出し元プロセスの実効グループ ID か -「システムのデフォルトのグループ ID」 のどちらかに設定される、と書かれている。 -.SH 注意 -.LP -POSIX は \fBO_RDONLY\fP と \fBO_TRUNC\fP が一緒に指定された場合の動作を未定義にしている。Linux では、 -既存の共有メモリーオブジェクトに対する切り詰め (truncate) は成功する。 しかし、他の UNIX システムでも同じであるとは限らない。 -.LP -Linux 2.4 における POSIX 共有メモリーオブジェクトの実装は 専用のファイルシステムを使用する。そのファイルシステムは通常 -\fI/dev/shm\fP にマウントされる。 -.SH 関連項目 -\fBclose\fP(2), \fBfchmod\fP(2), \fBfchown\fP(2), \fBfcntl\fP(2), \fBfstat\fP(2), -\fBftruncate\fP(2), \fBmemfd_create\fP(2), \fBmmap\fP(2), \fBopen\fP(2), \fBumask\fP(2), -\fBshm_overview\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/siginterrupt.3 b/manual/LDP_man-pages/draft/man3/siginterrupt.3 deleted file mode 100644 index dbc53866..00000000 --- a/manual/LDP_man-pages/draft/man3/siginterrupt.3 +++ /dev/null @@ -1,90 +0,0 @@ -.\" 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:40:51 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Sun Apr 14 16:20:34 1996 by Andries Brouwer (aeb@cwi.nl) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Sun May 24 13:44:00 JST 1998 -.\" by HANATAKA Shinya -.\" -.TH SIGINTERRUPT 3 2014\-06\-13 "" "Linux Programmer's Manual" -.SH 名前 -siginterrupt \- シグナルでシステムコールに割り込むことを許す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint siginterrupt(int \fP\fIsig\fP\fB, int \fP\fIflag\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBsiginterrupt\fP(): -.ad l -.RS 4 -_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.br -|| /* glibc 2.12 以降: */ _POSIX_C_SOURCE\ >=\ 200809L -.RE -.ad -.SH 説明 -\fBsiginterrupt\fP() 関数は、システムコールがシグナル \fIsig\fP によって割り込まれた後、再実行の際の振る舞いを変更する。 -\fIflag\fP 引き数が偽 (0) ならば、システムコールが指定した シグナル \fIsig\fP によって割り込まれた後に、そのシステムコールは -再実行される。これは Linux においてデフォルトの動作である。 -.PP -\fIflag\fP 引き数が真 (1) でデータの転送が全く行なわれていないならば、 シグナル \fIsig\fP でシステムコールは中断されて、\-1 が返され、 -\fIerrno\fP に \fBEINTR\fP が設定される。 -.PP -\fIflag\fP 引き数が真 (1) でデータの転送が開始されていれば、 システムコールは中断され、それまでに実際に転送されたデータ の量が返される。 -.SH 返り値 -\fBsiginterrupt\fP() 関数は成功した場合 0 を返す。 シグナル番号 \fIsig\fP が不正な場合、 \-1 を返し、 \fIerrno\fP -にエラーの原因を示す値を設定する。 -.SH エラー -.TP -\fBEINVAL\fP -指定したシグナル番号が不正である。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBsiginterrupt\fP() 関数は保護されていないグローバル変数を使用しているので、スレッドセーフではない。 -.SH 準拠 -4.3BSD, POSIX.1\-2001. POSIX.1\-2008 は、 \fBsiginterrupt\fP() を廃止予定としている。 代わりに、 -\fBsigaction\fP(2) に \fBSA_RESTART\fP フラグを指定して使うことを推奨している。 -.SH 関連項目 -\fBsignal\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/signbit.3 b/manual/LDP_man-pages/draft/man3/signbit.3 deleted file mode 100644 index 964ed9a2..00000000 --- a/manual/LDP_man-pages/draft/man3/signbit.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk -.\" -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" Based on glibc infopages, copyright Free Software Foundation -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Sun Sep 22 09:46:55 2002 -.\" by Akihiro MOTOKI -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH SIGNBIT 3 2013\-07\-04 GNU "Linux Programmer's Manual" -.SH 名前 -signbit \- 浮動小数点実数の符号 (sign) を調べる -.SH 書式 -\fB#include \fP -.sp -\fBint signbit(\fP\fIx\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBsignbit\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBsignbit\fP() は、あらゆる種類の浮動小数点実数に対して 適用可能な汎用的なマクロである。 \fIx\fP -の値の符号ビットがセットされている場合、非 0 の値を返す。 -.PP -このマクロは \fIx < 0.0\fP と全く同じではない。 なぜなら、IEEE 754 の浮動小数点表現では 0 も符号を持つからである。 -\fI\-0.0 < 0.0\fP という比較結果は偽 (false) だが、 \fIsignbit (\-0.0)\fP は 非 0 の値を返す。 - -NaN と無限大には符号ビットがある。 -.SH 返り値 -\fBsignbit\fP() マクロは \fIx\fP の符号が負の場合 0 以外を返し、そうでない場合 0 を返す。 -.SH エラー -エラーは発生しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBsignbit\fP() マクロはスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. この関数は IEC 559 で定義されている (また IEEE 754/IEEE 854 -では付録で推奨関数として定義されている)。 -.SH 関連項目 -\fBcopysign\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/significand.3 b/manual/LDP_man-pages/draft/man3/significand.3 deleted file mode 100644 index e72d5fa3..00000000 --- a/manual/LDP_man-pages/draft/man3/significand.3 +++ /dev/null @@ -1,61 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" heavily based on glibc infopages, copyright Free Software Foundation -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Tue Feb 1 07:40:41 JST 2005 -.\" by Yuichi SATO -.\" -.TH SIGNIFICAND 3 2009\-02\-04 GNU "Linux Programmer's Manual" -.SH 名前 -significand, significandf, significandl \- 浮動小数点数の仮数 (mantissa) を取得する -.SH 書式 -\fB#include \fP -.sp -\fBdouble significand(double \fP\fIx\fP\fB);\fP -.br -\fBfloat significandf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double significandl(long double \fP\fIx\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBsignificand\fP(), \fBsignificandf\fP(), \fBsignificandl\fP(): -.RS 4 -_SVID_SOURCE || _BSD_SOURCE -.RE -.ad b -.SH 説明 -\fBsignificand\fP() 関数は \fIx\fP の仮数を [1,2) の範囲にして返す。 これは、以下と等しい。 -.sp -.in +4n -scalb(x, (double) \-ilogb(x)) -.in -.PP -この関数は主に IEEE 754 への準拠を調べる標準テストで使われる。 -.SH 準拠 -.\" .SH HISTORY -.\" This function came from BSD. -これらの関数は非標準である。。 \fIdouble\fP 版は他の多くのシステムでも利用可能である。 -.SH 関連項目 -\fBilogb\fP(3), \fBscalb\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sigpause.3 b/manual/LDP_man-pages/draft/man3/sigpause.3 deleted file mode 100644 index 9964f611..00000000 --- a/manual/LDP_man-pages/draft/man3/sigpause.3 +++ /dev/null @@ -1,89 +0,0 @@ -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-03-03, HANATAKA Shinya -.\" Updated 2005-12-05, Akihiro MOTOKI -.\" Catch up to LDP man-pages 2.16 -.\" Rename sigpause.2 to sigpause.3, and modified a little. -.\" -.TH SIGPAUSE 3 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -sigpause \- ブロックされたシグナルをアトミックに解放して割り込みを待つ -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint sigpause(int \fP\fIsigmask\fP\fB); /* BSD (ただし「備考」を参照) */\fP -.sp -\fBint sigpause(int \fP\fIsig\fP\fB); /* System V / UNIX 95 */\fP -.fi -.SH 説明 -この関数を使わないこと。 代わりに \fBsigsuspend\fP(2) を使うこと。 -.LP -関数 \fBsigpause\fP() はシグナルを待つように設計されている。 この関数はプロセスのシグナルマスク (ブロックされたシグナルのセット) -を変更し、 シグナルが到着するのを待つ。 シグナルが到着すると、シグナルマスクは元に戻される。 -.SH 返り値 -\fBsigpause\fP() が返った場合、この関数はシグナルによって割り込まれている。 返り値は \-1 で、 \fIerrno\fP は \fBEINTR\fP -に設定される。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBsigpause\fP() 関数はスレッドセーフである。 -.SH 準拠 -System V 版の \fBsigpause\fP() は POSIX.1\-2001 で標準化されている。 -.SH 注意 -.SS 歴史 -.\" __xpg_sigpause: UNIX 95, spec 1170, SVID, SVr4, XPG -この関数の古典的な BSD 版は 4.2BSD で登場した。 この関数はプロセスのシグナルマスクを \fIsigmask\fP に設定する。 UNIX 95 -では BSD 版と互換性のない System V 版のこの関数が標準化された。 UNIX 95 版は、指定されたシグナル \fIsig\fP -をプロセスのシグナルマスクから削除するだけである。 同じ名前で互換性のない 2 つの関数があるという不幸な事態は、 \fB\%sigsuspend\fP(2) -関数によって解消された。 この関数は (\fIint\fP の代わりに) \fBsigset_t\ *\fP 引き数をとる。 -.SS "Linux での注意" -Linux では、このルーチンは Sparc (sparc64) アーキテクチャーでのみ システムコールとなっている。 - -.\" Libc4 and libc5 know only about the BSD version. -.\" -.\" -.\" For the BSD version, one usually uses a zero -.\" .I sigmask -.\" to indicate that no signals are to be blocked. -機能検査マクロ \fB_BSD_SOURCE\fP が定義され、 \fB_POSIX_SOURCE\fP, \fB_POSIX_C_SOURCE\fP, -\fB_XOPEN_SOURCE\fP, \fB_GNU_SOURCE\fP, \fB_SVID_SOURCE\fP のいずれも定義されていない場合、 glibc は -BSD 版を使う。 それ以外の場合には、System V 版を使用する (宣言を得るためには \fB_XOPEN_SOURCE\fP -が定義されていなければならない)。 glibc 2.19 以降では、 \fI\fP では System V -版だけが公開される。 BSD 版の \fBsigpause\fP() を使用していたアプリケーションは \fBsigsuspend\fP(2) -を使用するように修正すべきである。 -.SH 関連項目 -\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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sigqueue.3 b/manual/LDP_man-pages/draft/man3/sigqueue.3 deleted file mode 100644 index a391da06..00000000 --- a/manual/LDP_man-pages/draft/man3/sigqueue.3 +++ /dev/null @@ -1,123 +0,0 @@ -.\" Copyright (c) 2002 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 -.\" -.\" added note on self-signaling, aeb, 2002-06-07 -.\" added note on CAP_KILL, mtk, 2004-06-16 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002, 2005 Yuichi SATO -.\" all rights reserved. -.\" Translated 2002-08-06, Yuichi SATO -.\" Updated & Modified 2005-01-08, Yuichi SATO -.\" Updated 2007-09-08, Akihiro MOTOKI , LDP v2.64 -.\" Updated 2013-05-04, Akihiro MOTOKI -.\" -.TH SIGQUEUE 3 2013\-12\-16 Linux "Linux Programmer's Manual" -.SH 名前 -sigqueue \- シグナルとデータをプロセスに送る -.SH 書式 -\fB#include \fP -.sp -\fBint sigqueue(pid_t \fP\fIpid\fP\fB, int \fP\fIsig\fP\fB, const union sigval -\fP\fIvalue\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBsigqueue\fP(): _POSIX_C_SOURCE\ >=\ 199309L -.SH 説明 -\fBsigqueue\fP() は \fIsig\fP で指定されたシグナルを、PID が \fIpid\fP であるプロセスに送る。 シグナルを送るのに必要な権限は -\fBkill\fP(2) と同じである。 \fBkill\fP(2) と同様に、ヌルシグナル (0) を使って 指定した PID -のプロセスが存在するかをチェックすることができる。 -.PP -\fIvalue\fP 引き数はシグナルと一緒に送るデータの付属アイテムを指定する。 \fIvalue\fP は (整数またはポインターの値であり) -以下のような型である。 -.sp -.in +4n -.nf -union sigval { - int sival_int; - void *sival_ptr; -}; -.fi -.in - -受取先のプロセスに、このシグナルに対するハンドラーを (\fBsigaction\fP(2) に \fBSA_SIGINFO\fP を指定して) -インストールしておくと、 そのハンドラーの第 2 引き数に渡される \fIsiginfo_t\fP 構造体の \fIsi_value\fP -フィールドによって、このデータを取得できる。 さらに、この構造体の \fIsi_code\fP フィールドは \fBSI_QUEUE\fP に設定される。 -.SH 返り値 -成功した場合、 \fBsigqueue\fP() は 0 を返す。 これは受け取り側プロセスの待ち行列に シグナルが正しく入れられたことを示す。 -失敗した場合は \-1 が返され、 \fIerrno\fP がエラーを表す値に設定される。 -.SH エラー -.TP -\fBEAGAIN\fP -待ち行列に入れられるシグナルの最大数に達した (より詳しい情報は \fBsignal\fP(7) を参照すること)。 -.TP -\fBEINVAL\fP -\fIsig\fP が不正である。 -.TP -\fBEPERM\fP -このプロセスには、受け取り側プロセスにシグナルを送る権限がない。 必要な権限については、 \fBkill\fP(2) を参照すること。 -.TP -\fBESRCH\fP -\fIpid\fP にマッチする PID のプロセスがない。 -.SH バージョン -このシステムコールは Linux 2.2 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBsigqueue\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -この関数を呼び出したプロセスにこの関数がシグナルを送ったときに、 シグナルが呼び出し側スレッドにブロックされず、 かつ -(シグナルがブロックされなかった、または \fBsigwait\fP(3) を使用するのを待っていることにより) -このシグナルを扱うスレッドが何もない場合は、 この関数がリターンする前に、少なくとも そのスレッドに対してシグナルが配送されていなければならない。 - -Linux では、この関数は \fBrt_sigqueueinfo\fP(2) システムコールを使って実装されている。 両者には 3 -番目の引き数に違いがあり、 \fBrt_sigqueueinfo\fP(2) では 3 番目の引き数は \fIsiginfo_t\fP 構造体である。 -\fIsiginfo_t\fP 構造体は、シグナルを受信するプロセスのシグナルハンドラーに渡されたり、 シグナル受信プロセスの -\fBsigtimedwait\fP(2) システムコールから返されたりする。 glibc の \fBsigqueue\fP() ラッパー関数内部では、 -この引き数 \fIuinfo\fP は以下のように初期化される。 -.in +4n -.nf - -uinfo.si_signo = sig; /* Argument supplied to sigqueue() */ -uinfo.si_code = SI_QUEUE; -uinfo.si_pid = getpid(); /* Process ID of sender */ -uinfo.si_uid = getuid(); /* Real UID of sender */ -uinfo.si_value = val; /* Argument supplied to sigqueue() */ -.fi -.in -.SH 関連項目 -\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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sigset.3 b/manual/LDP_man-pages/draft/man3/sigset.3 index e1a998b7..1be95561 100644 --- a/manual/LDP_man-pages/draft/man3/sigset.3 +++ b/manual/LDP_man-pages/draft/man3/sigset.3 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (c) 2005 by Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) @@ -32,38 +31,39 @@ .\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved. .\" Translated 2005-12-04, Akihiro MOTOKI .\" -.TH SIGSET 3 2010\-09\-20 Linux "Linux Programmer's Manual" +.TH SIGSET 3 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 sigset, sighold, sigrelse, sigignore \- System V 版シグナル API .SH 書式 \fB#include \fP -.sp +.PP \fBtypedef void (*sighandler_t)(int);\fP -.sp +.PP \fBsighandler_t sigset(int \fP\fIsig\fP\fB, sighandler_t \fP\fIdisp\fP\fB);\fP -.sp +.PP \fBint sighold(int \fP\fIsig\fP\fB);\fP -.sp +.PP \fBint sigrelse(int \fP\fIsig\fP\fB);\fP -.sp +.PP \fBint sigignore(int \fP\fIsig\fP\fB);\fP -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP .ad l \fBsigset\fP(), \fBsighold\fP(), \fBsigrelse\fP(), \fBsigignore\fP(): .br .RS 4 -_XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +.\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +_XOPEN_SOURCE\ >=\ 500 .RE .ad .SH 説明 これらの関数は、昔ながらの System V 版シグナル API を使用しているプログラム に対して互換性のあるインターフェースを glibc で提供するものである。 この API は過去のものであり、新しいアプリケーションでは POSIX シグナル API (\fBsigaction\fP(2), \fBsigprocmask\fP(2) など) を使用すべきである。 - +.PP 関数 \fBsigset\fP() はシグナル \fIsig\fP のシグナルハンドラーの動作を変更する。 \fIdisp\fP 引き数には、シグナルハンドラー関数のアドレスか、 以下の定数のいずれか一つを指定できる。 .TP @@ -84,48 +84,64 @@ _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED シグナル \fBSIGKILL\fP と \fBSIGSTOP\fP に対する動作は変更できない。 .PP 関数 \fBsighold\fP() は、呼び出し元プロセスのシグナルマスクに \fIsig\fP を追加する。 - +.PP 関数 \fBsigrelse\fP() は、呼び出し元プロセスのシグナルマスクから \fIsig\fP を削除する。 - +.PP 関数 \fBsigignore\fP() は、 \fIsig\fP の動作を \fBSIG_IGN\fP に設定する。 .SH 返り値 \fBsigset\fP() は成功すると、 呼び出し前に \fIsig\fP がブロックされていた場合には \fBSIG_HOLD\fP を返し、 ブロックされていなかった場合には 変更前のそのシグナルの動作を返す。 エラーの場合、 \fBsigset\fP() は \-1 を返し、 \fIerrno\fP にエラーを示す値をセットする。 但し、以下の「バグ」の節も参照のこと。 - +.PP 関数 \fBsighold\fP(), \fBsigrelse\fP(), \fBsigignore\fP() は成功すると 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値をセットする。 .SH エラー \fBsigset\fP() に関しては、 \fBsigaction\fP(2) と \fBsigprocmask\fP(2) の「エラー」の節を参照。 - +.PP \fBsighold\fP() と \fBsigrelse\fP() に関しては、 \fBsigprocmask\fP(2) の「エラー」の節を参照。 - +.PP \fBsigignore\fP() に関しては、 \fBsigaction\fP(2) の「エラー」の節を参照。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lbw23 lb lb +l l l. +Interface Attribute 値 +T{ +\fBsigset\fP(), +\fBsighold\fP(), +.br +\fBsigrelse\fP(), +\fBsigignore\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 -SVr4, POSIX.1\-2001. これらの関数は廃止予定である。新しいプログラムでは使用しないこと。 POSIX.1\-2008 は、 -\fBsighold\fP(), \fBsigignore\fP(), \fBsigpause\fP(), \fBsigrelse\fP(), \fBsigset\fP() -を廃止予定としている。 代わりに、 \fBsigaction\fP(2), \fBsigprocmask\fP(2), \fBpthread_sigmask\fP(3), -\fBsigsuspend\fP(2) の使用が推奨されている。 +SVr4, POSIX.1\-2001, POSIX.1\-2008. These functions are obsolete: do not use +them in new programs. POSIX.1\-2008 marks \fBsighold\fP(), \fBsigignore\fP(), +\fBsigpause\fP(3), \fBsigrelse\fP(), and \fBsigset\fP() as obsolete, recommending +the use of \fBsigaction\fP(2), \fBsigprocmask\fP(2), \fBpthread_sigmask\fP(3), and +\fBsigsuspend\fP(2) instead. .SH 注意 これらの関数は glibc 2.1 で登場した。 - +.PP \fIsighandler_t\fP 型は GNU による拡張であり、この man page で \fBsigset\fP() のプロトタイプをより読みやすくするために使われているだけである。 - +.PP 関数 \fBsigset\fP() は信頼性のあるシグナル処理機構を提供する (\fIsa_mask\fP を 0 で \fBsigaction\fP(2) を呼び出したときと同様)。 - +.PP System V では、関数 \fBsignal\fP() が提供する処理機構は信頼性のないものである (\fIsa_mask\fP を \fISA_RESETHAND | SA_NODEFER\fP として \fBsigaction\fP(2) を呼び出したときと同様)。 BSD では、 \fBsignal\fP() は信頼性のある処理機構を提供する。 POSIX.1\-2001 では、 \fBsignal\fP() のこの点は規定しないままとなっている。 さらなる詳細については \fBsignal\fP(2) を参照。 - +.PP BSD と System V のどちらのシステムでも シグナルを待つために、 \fBsigpause\fP(3) という名前の関数が提供されているが、 この関数の引き数は両方のシステムで異なる。 詳細は \fBsigpause\fP(3) を参照。 .SH バグ 2.2 より前のバージョンの glibc では、 \fIdisp\fP に \fBSIG_HOLD\fP 以外の値が指定された場合、 \fIsig\fP のブロック解除を行っていなかった。 - +.PP .\" See http://sourceware.org/bugzilla/show_bug.cgi?id=1951 2.3.5 以前の全てのバージョンの glibc では、 \fBsigset\fP() が変更前のシグナルの動作を正しく返さない場合が 2つある。 一つめは、 \fIdisp\fP に \fBSIG_HOLD\fP が指定されると、成功した場合 \fBsigset\fP() は常に \fBSIG_HOLD\fP @@ -137,5 +153,5 @@ 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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sigsetops.3 b/manual/LDP_man-pages/draft/man3/sigsetops.3 deleted file mode 100644 index 95348762..00000000 --- a/manual/LDP_man-pages/draft/man3/sigsetops.3 +++ /dev/null @@ -1,129 +0,0 @@ -.\" Copyright (c) 1994 Mike Battersby -.\" -.\" %%%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 aeb, 960721 -.\" 2005-11-21, mtk, added descriptions of sigisemptyset(), sigandset(), -.\" and sigorset() -.\" 2007-10-26 mdw added wording that a sigset_t must be initialized -.\" prior to use -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1998-05-24, HANATAKA Shinya -.\" Updated 2005-12-05, Akihiro MOTOKI, Catch up to LDP man-pages 2.16 -.\" Updated 2008-02-09, Akihiro MOTOKI , LDP v2.77 -.\" -.TH SIGSETOPS 3 2014\-04\-14 Linux "Linux Programmer's Manual" -.SH 名前 -sigemptyset, sigfillset, sigaddset, sigdelset, sigismember \- POSIX シグナル集合の操作 -.SH 書式 -\fB#include \fP -.sp -\fBint sigemptyset(sigset_t *\fP\fIset\fP\fB);\fP -.sp -\fBint sigfillset(sigset_t *\fP\fIset\fP\fB);\fP -.sp -\fBint sigaddset(sigset_t *\fP\fIset\fP\fB, int \fP\fIsignum\fP\fB);\fP -.sp -\fBint sigdelset(sigset_t *\fP\fIset\fP\fB, int \fP\fIsignum\fP\fB);\fP -.sp -\fBint sigismember(const sigset_t *\fP\fIset\fP\fB, int \fP\fIsignum\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBsigemptyset\fP(), \fBsigfillset\fP(), \fBsigaddset\fP(), \fBsigdelset\fP(), -\fBsigismember\fP(): -.RS 4 -_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE -.RE -.ad b -.SH 説明 -これらの関数は POSIX シグナル集合(signal set)を操作するため使用する。 -.PP -\fBsigemptyset\fP() は \fIset\fP で与えられたシグナル集合を空に初期化し、シグナルが一つも 含まれていない状態にする。 -.PP -\fBsigfillset\fP() は \fIset\fP で与えられたシグナル集合が全てのシグナルを含むようにする。 -.PP -\fBsigaddset\fP() と \fBsigdelset\fP() は \fIset\fP に \fIsignum\fP -シグナルをそれぞれ加えたり、削除したりする。 -.PP -\fBsigismember\fP() は \fIsignum\fP が \fIset\fP に含まれているかどうかをテストする。 -.PP -\fIsigset_t\fP 型のオブジェクトは、関数 \fBsigaddset\fP(), \fBsigdelset\fP(), \fBsigismember\fP() -や後述の glibc の追加関数 (\fBsigisemptyset\fP(), \fBsigandset\fP(), \fBsigorset\fP()) に渡す前に、 -\fBsigemptyset\fP() か \fBsigfillset\fP() を呼び出して初期化しなければならない。 -初期化しなかった場合の結果は未定義である。 -.SH 返り値 -\fBsigemptyset\fP(), \fBsigfillset\fP(), \fBsigaddset\fP(), \fBsigdelset\fP() は成功すれば 0 -を、エラーの場合は \-1 を返す。 -.PP -\fBsigismember\fP() は \fIsignum\fP が \fIset\fP のメンバの場合 1 を返し、メンバでない場合 0 を返す。 -エラーの場合、\-1 を返す。 - -エラーの場合、 \fIerrno\fP にエラーの原因を示す値を設定する。 -.SH エラー -.TP -\fBEINVAL\fP -\fIsig\fP が有効なシグナルではない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBsigemptyset\fP(), \fBsigfillset\fP(), \fBsigaddset\fP(), \fBsigdelset\fP(), -\fBsigismember\fP(), \fBsigisemptyset\fP(), \fBsigorset\fP(), \fBsigandset\fP() -はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -.SS "glibc での注意" -\fB_GNU_SOURCE\fP 機能検査マクロが定義されていると、 \fI\fP でシグナル集合を操作する 3 -つの関数が追加で公開される。 - -.nf -\fBint sigisemptyset(const sigset_t *\fP\fIset\fP\fB);\fP -\fBint sigorset(sigset_t *\fP\fIdest\fP\fB, const sigset_t *\fP\fIleft\fP\fB,\fP -\fB const sigset_t *\fP\fIright\fP\fB);\fP -\fBint sigandset(sigset_t *\fP\fIdest\fP\fB, const sigset_t *\fP\fIleft\fP\fB,\fP -\fB const sigset_t *\fP\fIright\fP\fB);\fP -.fi - -\fBsigisemptyset\fP() は \fIset\fP にシグナルが一つも含まれていなければ 1 を返し、 それ以外は 0 を返す。 - -\fBsigorset\fP() は集合 \fIleft\fP と \fIright\fP の和集合を \fIdest\fP に設定する。 \fBsigandset\fP() は集合 -\fIleft\fP と \fIright\fP の積集合を \fIdest\fP に設定する。 どちらの関数も成功すると 0 を返し、失敗時には \-1 を返す。 -.PP -これらの関数は非標準であり、(他にも同様の関数を提供しているシステムも いくつかはあるが) 移植性を考慮したアプリケーションでは使用を避けるべき -である。 -.SH 関連項目 -\fBsigaction\fP(2), \fBsigpending\fP(2), \fBsigprocmask\fP(2), \fBsigsuspend\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sigvec.3 b/manual/LDP_man-pages/draft/man3/sigvec.3 index 8eee314b..e8452844 100644 --- a/manual/LDP_man-pages/draft/man3/sigvec.3 +++ b/manual/LDP_man-pages/draft/man3/sigvec.3 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (c) 2005 by Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) @@ -32,67 +31,73 @@ .\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved. .\" Translated 2005-12-04, Akihiro MOTOKI .\" -.TH SIGVEC 3 2014\-12\-31 Linux "Linux Programmer's Manual" +.TH SIGVEC 3 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 sigvec, sigblock, sigsetmask, siggetmask, sigmask \- BSD 版シグナル API .SH 書式 \fB#include \fP -.sp +.PP \fBint sigvec(int \fP\fIsig\fP\fB, const struct sigvec *\fP\fIvec\fP\fB, struct sigvec *\fP\fIovec\fP\fB);\fP -.sp +.PP \fBint sigmask(int \fP\fIsignum\fP\fB);\fP -.sp +.PP \fBint sigblock(int \fP\fImask\fP\fB);\fP -.sp +.PP \fBint sigsetmask(int \fP\fImask\fP\fB);\fP -.sp +.PP \fBint siggetmask(void);\fP -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -上記の全ての関数: _BSD_SOURCE +.RE +.PP +All functions shown above: + Since glibc 2.19: + _DEFAULT_SOURCE + Glibc 2.19 and earlier: + _BSD_SOURCE .SH 説明 これらの関数は、昔ながらの BSD 版シグナル API を使用しているプログラム に対して互換性のあるインターフェースを glibc で提供するものである。 この API は過去のものであり、新しいアプリケーションでは POSIX シグナル API (\fBsigaction\fP(2), \fBsigprocmask\fP(2) など) を使用すべきである。 - +.PP 関数 \fBsigvec\fP() は、(POSIX の \fBsigaction\fP(2) と同様に) シグナル \fIsig\fP の動作の設定・取得を行う。 \fIvec\fP は、NULL 以外の場合、 \fIsig\fP の新しい動作を定義した \fIsigvec\fP 構造体へのポインターである。 \fIovec\fP は、NULL 以外の場合、 \fIsig\fP の変更前の動作を返すために使用される \fIsigvec\fP 構造体へのポインターである。 \fIsig\fP の動作を変更せずに現在の動作を取得するためには、 \fIvec\fP に NULL を指定し、 \fIovec\fP に NULL でないポインターを指定すればよい。 - +.PP シグナル \fBSIGKILL\fP と \fBSIGSTOP\fP に対する動作は変更できない。 - +.PP \fIsigvec\fP 構造体は以下の通りである: +.PP .in +4n -.nf - +.EX struct sigvec { void (*sv_handler)(int); /* Signal disposition */ int sv_mask; /* Signals to be blocked in handler */ int sv_flags; /* Flags */ }; - -.fi +.EE .in +.PP \fIsv_handler\fP フィールドはシグナルの動作を指定するもので、 シグナルハンドラー関数のアドレスか、 \fBSIG_DFL\fP と \fBSIG_IGN\fP のいずれかを指定できる。 \fBSIG_DFL\fP はシグナルに適用されるデフォルトの動作を意味し、 \fBSIG_IGN\fP はシグナルを無視することを意味する。 - +.PP \fIsv_handler\fP にシグナルハンドラーのアドレスを指定した場合、 \fIsv_mask\fP はハンドラーが実行中にブロックされるべきシグナルのマスクを指定する。 また、ハンドラーを起動したシグナル自身はブロックされる。 \fBSIGKILL\fP か \fBSIGSTOP\fP をブロックしようとした場合には、黙って無視される。 - +.PP \fIsv_handler\fP にシグナルハンドラーのアドレスを指定した場合、 \fIsv_flags\fP フィールドはハンドラーが呼ばれた際の挙動を制御するフラグを指定する。 このフィールドには、0 か、以下のフラグを 1個以上指定できる: .TP \fBSV_INTERRUPT\fP -シグナルハンドラーが停止中のシステムコールを中断した場合、 ハンドラーから復帰しても、システムコールは再開されず、 エラー \fBEINTR\fP -で失敗する。 このフラグを指定しなかった場合、システムコールは デフォルトで再開される。 +If the signal handler interrupts a blocking system call, then upon return +from the handler the system call s not be restarted: instead it fails with +the error \fBEINTR\fP. If this flag is not specified, then system calls are +restarted by default. .TP \fBSV_RESETHAND\fP シグナルハンドラーを呼び出す前にシグナルの動作を デフォルトにリセットする。 このフラグを指定しなかった場合、もう一度 \fBsigvec\fP() @@ -104,12 +109,14 @@ struct sigvec { .PP マクロ \fBsigmask\fP() は \fIsignum\fP に対する「シグナルマスク」を構成して返す。 例えば、以下のようなコードを使うと、 \fBsigvec\fP() に渡す \fIvec.sv_mask\fP を初期化できる。 -.nf - - vec.sv_mask = sigmask(SIGQUIT) | sigmask(SIGABRT); - /* Block SIGQUIT and SIGABRT during - handler execution */ -.fi +.PP +.in +4n +.EX +vec.sv_mask = sigmask(SIGQUIT) | sigmask(SIGABRT); + /* Block SIGQUIT and SIGABRT during + handler execution */ +.EE +.in .PP \fBsigblock\fP() 関数は、 \fImask\fP にあるシグナルをプロセスのシグナルマスクに追加し (POSIX の \fIsigprocmask(SIG_BLOCK)\fP と同様)、変更前のプロセスのシグナルマスクを返す。 \fBSIGKILL\fP や \fBSIGSTOP\fP @@ -121,34 +128,45 @@ struct sigvec { \fBsiggetmask\fP() 関数はプロセスの現在のシグナルマスクを返す。この関数は \fIsigblock(0)\fP と等価である。 .SH 返り値 \fBsigvec\fP() 関数は成功すると 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値をセットする。 - +.PP \fBsigblock\fP() と \fBsigsetmask\fP() は変更前のシグナルマスクを返す。 - +.PP \fBsigmask\fP() マクロは \fIsignum\fP のシグナルマスクを返す。 .SH エラー \fBsigaction\fP(2) と \fBsigprocmask\fP(2) の「エラー」の節を参照。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBsigvec\fP(), \fBsigblock\fP(), \fBsigsetmask\fP(), \fBsiggetmask\fP() はスレッドセーフである。 -.LP -\fBsigmask\fP() マクロはスレッドセーフである。 .SH バージョン バージョン 2.21 以降では、 GNU C ライブラリはもはや \fBsigvec\fP() 関数を ABI の一部として公開しなくなった。 (後方互換性を保証するために、glibc のシンボルのバージョン付け機構により、 古いバージョンのライブラリとリンクされたバイナリに対してはこのインターフェースが引き続き公開されている。) +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lbw32 lb lb +l l l. +Interface Attribute 値 +T{ +\fBsigvec\fP(), +\fBsigmask\fP(), +\fBsigblock\fP(), +\fBsigsetmask\fP(), +\fBsiggetmask\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 これらの関数のうち \fBsiggetmask\fP() 以外の全ては 4.3BSD にあった。 \fBsiggetmask\fP() の出自ははっきりしない。 これらの関数は廃止予定であり、新しいプログラムでは使用しないこと。 .SH 注意 -4.3BSD では、信頼性のあるシグナル処理機構を提供する (\fIvec.sv_mask\fP を 0 で \fBsigvec\fP() -を呼び出したときと同様)。 System V が提供する処理機構は信頼性のないものである。 POSIX.1\-2001 では、 \fBsignal\fP() -のこの点は規定しないままとなっている。 さらなる詳細については \fBsignal\fP(2) を参照。 - +On 4.3BSD, the \fBsignal\fP() function provided reliable semantics (as when +calling \fBsigvec\fP() with \fIvec.sv_mask\fP equal to 0). On System V, +\fBsignal\fP() provides unreliable semantics. POSIX.1 leaves these aspects of +\fBsignal\fP() unspecified. See \fBsignal\fP(2) for further details. +.PP BSD と System V のどちらのシステムでも シグナルを待つために、 \fBsigpause\fP(3) という名前の関数が提供されているが、 この関数の引き数は両方のシステムで異なる。 詳細は \fBsigpause\fP(3) を参照。 .SH 関連項目 \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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sigwait.3 b/manual/LDP_man-pages/draft/man3/sigwait.3 deleted file mode 100644 index 21f33152..00000000 --- a/manual/LDP_man-pages/draft/man3/sigwait.3 +++ /dev/null @@ -1,84 +0,0 @@ -.\" Copyright (c) 2008, Linux Foundation, written by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2008 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2008-08-21, Akihiro MOTOKI , LDP v3.04 -.\" -.TH SIGWAIT 3 2013\-12\-16 Linux "Linux Programmer's Manual" -.SH 名前 -sigwait \- シグナルを待つ -.SH 書式 -.nf -\fB#include \fP - -\fB int sigwait(const sigset_t *\fP\fIset\fP\fB, int *\fP\fIsig\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBsigwait\fP(): _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE -.ad b -.SH 説明 -\fBsigwait\fP() 関数は、シグナル集合 \fIset\fP で指定されたシグナルの一つが処理待ち (pending) になるまで、 -呼び出したスレッドの実行を中断する。 この関数はそのシグナルを受け取り (つまり、処理待ちのシグナルのリスト -からそのシグナルを削除し)、そのシグナル番号を \fIsig\fP に格納して返す。 - -\fBsigwait\fP() の動作は \fBsigwaitinfo\fP(2) と同じだが、以下の点が異なる。 -.IP * 2 -\fBsigwait\fP() は、シグナルの内容を表す \fIsiginfo_t\fP 構造体を返すのではなく、単にシグナル番号を返す。 -.IP * -返り値が \fBsigwaitinfo\fP(2) とは異なる。 -.SH 返り値 -成功すると、 \fBsigwait\fP() は 0 を返す。 エラーの場合、(「エラー」の節のリストにある) 正のエラー番号を返す。 -.SH エラー -.TP -\fBEINVAL\fP -.\" Does not occur for glibc. -\fIset\fP に無効なシグナル番号が入っている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBsigwait\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fBsigwait\fP() は \fBsigtimedwait\fP(2) を使って実装されている。 -.SH 例 -\fBpthread_sigmask\fP(3) を参照。 -.SH 関連項目 -\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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sin.3 b/manual/LDP_man-pages/draft/man3/sin.3 deleted file mode 100644 index b79d8f5b..00000000 --- a/manual/LDP_man-pages/draft/man3/sin.3 +++ /dev/null @@ -1,112 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kenji Kajiwara and Kentaro Ogawa -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 17:42:24 JST -.\" by Kenji Kajiwara and Kentaro Ogawa -.\" Proof Reading: Takashi Yoshino -.\" Updated & Modified Thu Feb 17 22:27:53 JST 2005 -.\" by Yuichi SATO -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH SIN 3 2013\-12\-16 "" "Linux Programmer's Manual" -.SH 名前 -sin, sinf, sinl \- 正弦 (サイン) 関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble sin(double \fP\fIx\fP\fB);\fP -.br -\fBfloat sinf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double sinl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBsinf\fP(), \fBsinl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBsin\fP() 関数は \fIx\fP の正弦 (サイン) の値を返す。 \fIx\fP はラジアン単位で指定する。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の正弦を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -.\" -.\" POSIX.1 allows an optional range error for subnormal x -.\" glibc 2.8 doesn't do this -\fIx\fP が正の無限大か負の無限大の場合、 領域エラー (domain error) が発生し、NaN が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が無限大である -\fIerrno\fP に \fBEDOM\fP が設定される (「バグ」の節も参照)。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) -が上がる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBsin\fP(), \fBsinf\fP(), \fBsinl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠している。 -.SH バグ -.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6781 -バージョン 2.10 より前の glibc の実装では、 領域エラーが発生した際に、 \fIerrno\fP に \fBEDOM\fP が設定されなかった。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sincos.3 b/manual/LDP_man-pages/draft/man3/sincos.3 deleted file mode 100644 index 468e7d18..00000000 --- a/manual/LDP_man-pages/draft/man3/sincos.3 +++ /dev/null @@ -1,75 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk -.\" -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Tue Sep 9 04:06:20 JST 2003 -.\" by Akihiro MOTOKI -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH SINCOS 3 2013\-12\-23 GNU "Linux Programmer's Manual" -.SH 名前 -sincos, sincosf, sincosl \- 正弦と余弦を同時に計算する -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP -.sp -\fBvoid sincos(double \fP\fIx\fP\fB, double *\fP\fIsin\fP\fB, double *\fP\fIcos\fP\fB);\fP -.br -\fBvoid sincosf(float \fP\fIx\fP\fB, float *\fP\fIsin\fP\fB, float *\fP\fIcos\fP\fB);\fP -.br -\fBvoid sincosl(long double \fP\fIx\fP\fB, long double *\fP\fIsin\fP\fB, long double *\fP\fIcos\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.SH 説明 -アプリケーションの中には、同じ角度 \fIx\fP について正弦と余弦の両方の計算が必要なものがある。 この関数は両者を同時に計算し、その結果を -\fI*sin\fP と \fI*cos\fP に格納する。 - -\fIx\fP が NaN の場合、 \fI*sin\fP と \fI*cos\fP に NaN が返される。 - -\fIx\fP が正の無限大か負の無限大の場合、 領域エラー (domain error) が発生し、 \fI*sin\fP と \fI*cos\fP に NaN -が返される。 -.SH 返り値 -これらの関数は \fIvoid\fP を返す。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が無限大である -.\" .I errno -.\" is set to -.\" .BR EDOM . -不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.PP -.\" FIXME . Is it intentional that these functions do not set errno? -.\" sin() and cos() also don't set errno; bugs have been raised for -.\" those functions. -.\" See https://www.sourceware.org/bugzilla/show_bug.cgi?id=15467 -これらの関数は \fIerrno\fP を設定しない。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBsincos\fP(), \fBsincosf\fP(), \fBsincosl\fP() はスレッドセーフである。 -.SH 準拠 -この関数は GNU による拡張である。 -.SH 関連項目 -\fBcos\fP(3), \fBsin\fP(3), \fBtan\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sinh.3 b/manual/LDP_man-pages/draft/man3/sinh.3 deleted file mode 100644 index ca8dbc8a..00000000 --- a/manual/LDP_man-pages/draft/man3/sinh.3 +++ /dev/null @@ -1,114 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 1996-06-08 by aeb -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kenji Kajiwara and Kentaro Ogawa -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 17:54:30 JST -.\" by Kenji Kajiwara and Kentaro Ogawa -.\" Updated & Modified Thu Feb 17 22:50:25 JST 2005 -.\" by Yuichi SATO -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH SINH 3 2010\-09\-20 "" "Linux Programmer's Manual" -.SH 名前 -sinh, sinhf, sinhl \- 双曲線正弦 (ハイパボリックサイン) 関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble sinh(double \fP\fIx\fP\fB);\fP -.br -\fBfloat sinhf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double sinhl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBsinhf\fP(), \fBsinhl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBsinh\fP() 関数は双曲線正弦 (ハイパボリックサイン) 関数の値を返す。 数学的には以下のように定義されている。 -.nf - - sinh(x) = (exp(x) \- exp(\-x)) / 2 -.fi -.SH 返り値 -成功すると、これらの関数は \fIx\fP の双曲線正弦を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が +0 (\-0) の場合、+0 (\-0) が返される。 - -\fIx\fP が正の無限大 (負の無限大) の場合、正の無限大 (負の無限大) が返される。 - -.\" -.\" POSIX.1-2001 documents an optional range error (underflow) -.\" for subnormal x; -.\" glibc 2.8 does not do this. -結果がオーバーフローする場合、 範囲エラー (range error) が発生し、 各関数はそれぞれ \fBHUGE_VAL\fP, -\fBHUGE_VALF\fP, \fBHUGE_VALL\fP を返す。符号は \fIx\fP と同じになる。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -範囲エラー (range error): 結果のオーバーフロー -\fIerrno\fP に \fBERANGE\fP が設定される。 オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sleep.3 b/manual/LDP_man-pages/draft/man3/sleep.3 deleted file mode 100644 index e100f18f..00000000 --- a/manual/LDP_man-pages/draft/man3/sleep.3 +++ /dev/null @@ -1,63 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" -.\" %%%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 18:16:02 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Tue Jan 21 20:46:24 JST 1997 -.\" by YOSHINO Takashi -.\" -.TH SLEEP 3 2010\-02\-03 GNU "Linux Programmer's Manual" -.SH 名前 -sleep \- 指定の秒数の間だけ休止する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBunsigned int sleep(unsigned int \fP\fIseconds\fP\fB);\fP -.fi -.SH 説明 -\fBsleep\fP() は、呼び出したスレッドを \fIseconds\fP 秒間または無視されないシグナルが到着するまで休止する。 -.SH 返り値 -要求された時間が過ぎた場合はゼロを返す。 呼び出しがシグナルハンドラーに割り込まれた場合は、 休止の残り時間を返す。 -.SH 準拠 -POSIX.1\-2001. -.SH バグ -\fBsleep\fP() は \fBSIGALRM\fP を用いて実装されている。そのため、 \fBalarm\fP(2) と \fBsleep\fP() -を混ぜて使用するのは、まずい考えである。 -.PP -休止中にシグナルハンドラーから \fBlongjmp\fP(3) を使用することや \fBSIGALRM\fP -のハンドリングを変更することは、定義されていない結果を生む。 -.SH 関連項目 -\fBalarm\fP(2), \fBnanosleep\fP(2), \fBsignal\fP(2), \fBsignal\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sockatmark.3 b/manual/LDP_man-pages/draft/man3/sockatmark.3 deleted file mode 100644 index 489f150e..00000000 --- a/manual/LDP_man-pages/draft/man3/sockatmark.3 +++ /dev/null @@ -1,120 +0,0 @@ -.\" Copyright (c) 2006, 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Yuichi SATO -.\" all rights reserved. -.\" Translated 2006-08-01 by Yuichi SATO , LDP v2.36 -.\" -.TH SOCKATMARK 3 2014\-02\-28 Linux "Linux Programmer's Manual" -.SH 名前 -sockatmark \- どのソケットに帯域外 (out\-of\-band) マークが付けられているかを調べる -.SH 書式 -\fB#include \fP -.sp -\fBint sockatmark(int \fP\fIsockfd\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBsockatmark\fP(): _POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600 -.ad b -.SH 説明 -\fBsockatmark\fP() はファイルディスクリプター \fIsockfd\fP で参照されるソケットに帯域外マークが付けられているか否かを返す。 -ソケットにマークが付けられている場合は、1 が返される。 ソケットにマークが付けられていない場合は、0 が返される。 -この関数は帯域外マークを削除しない。 -.SH 返り値 -\fBsockatmark\fP() の呼び出しが成功した場合、ソケットに帯域外マークが 付けられていれば 1 を返し、付けられていなければ 0 を返す。 -エラーの場合は \-1 が返され、エラーを表す \fIerrno\fP が設定される。 -.SH エラー -.TP -\fBEBADF\fP -\fIsockfd\fP が有効なファイルディスクリプターでない。 -.TP -\fBEINVAL\fP -.\" POSIX.1 says ENOTTY for this case -\fIsockfd\fP は \fBsockatmark\fP() が適用できないファイルディスクリプターである。 -.SH バージョン -\fBsockatmark\fP() は glibc バージョン 2.2.4 で追加された。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBsockatmark\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fBsockatmark\fP() が 1 を返す場合、帯域外データは \fBMSG_OOB\fP を指定した \fBrecv\fP(2) で読み込むことができる。 - -帯域外データは、いくつかのストリームソケットプロトコルでしか サポートされていない。 - -\fBsockatmark\fP() は \fBSIGURG\fP シグナルのハンドラーから安全に呼び出すことができる。 - -\fBsockatmark\fP() は \fBSIOCATMARK\fP \fBioctl\fP(2) 操作を使って実装されている。 -.SH バグ -glibc 2.4 より前のバージョンでは、 \fBsockatmark\fP() は動作しない。 -.SH 例 -以下のコードは、 \fBSIGURG\fP シグナルを受け取った後にマークまでの全てのデータを読み込んで (破棄し)、 -マークされたデータのバイトを読み込むのに使用できる。 -.nf - - char buf[BUF_LEN]; - char oobdata; - int atmark, s; - - for (;;) { - atmark = sockatmark(sockfd); - if (atmark == \-1) { - perror("sockatmark"); - break; - } - - if (atmark) - break; - - s = read(sockfd, buf, BUF_LEN) <= 0); - if (s == \-1) - perror("read"); - if (s <= 0) - break; - } - - if (atmark == 1) { - if (recv(sockfd, &oobdata, 1, MSG_OOB) == \-1) { - perror("recv"); - ... - } - } -.fi -.SH 関連項目 -\fBfcntl\fP(2), \fBrecv\fP(2), \fBsend\fP(2), \fBtcp\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sqrt.3 b/manual/LDP_man-pages/draft/man3/sqrt.3 deleted file mode 100644 index 9f6fb01a..00000000 --- a/manual/LDP_man-pages/draft/man3/sqrt.3 +++ /dev/null @@ -1,103 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kenji Kajiwara -.\" all rights reserved. -.\" Translated Mon Jul 15 18:40:00 JST 1996 -.\" by Kenji Kajiwara -.\" Proof Reading: Takashi Yoshino -.\" Updated Sun Sep 14 JST 2003 by Kentaro Shirakata -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH SQRT 3 2010\-09\-20 "" "Linux Programmer's Manual" -.SH 名前 -sqrt, sqrtf, sqrtl \- 平方根関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble sqrt(double \fP\fIx\fP\fB);\fP -.br -\fBfloat sqrtf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double sqrtl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBsqrtf\fP(), \fBsqrtl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBsqrt\fP() 関数は \fIx\fP の平方根のうち負でない方の値を返す。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の平方根を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が +0 (\-0) の場合、+0 (\-0) が返される。 - -\fIx\fP が正の無限大の場合、正の無限大が返される。 - -\fIx\fP が 0 未満の場合、領域エラー (domain error) が発生し、 NaN が返される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が 0 未満 -\fIerrno\fP に \fBEDOM\fP が設定される。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/statvfs.3 b/manual/LDP_man-pages/draft/man3/statvfs.3 deleted file mode 100644 index c426f42b..00000000 --- a/manual/LDP_man-pages/draft/man3/statvfs.3 +++ /dev/null @@ -1,152 +0,0 @@ -.\" Copyright (C) 2003 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 -.\" -.\" The pathconf note is from Walter Harms -.\" This is not a system call on Linux -.\" -.\" Modified 2004-06-23 by Michael Kerrisk -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004-2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Tue Jun 29 23:36:41 JST 2004 -.\" by Yuichi SATO -.\" Updated & Modified Sun Jan 9 22:50:29 JST 2005 by Yuichi SATO -.\" -.TH STATVFS 3 2013\-09\-26 Linux "Linux Programmer's Manual" -.SH 名前 -statvfs, fstatvfs \- ファイルシステムの統計を取得する -.SH 書式 -\fB#include \fP -.sp -\fBint statvfs(const char *\fP\fIpath\fP\fB, struct statvfs *\fP\fIbuf\fP\fB);\fP -.br -\fBint fstatvfs(int \fP\fIfd\fP\fB, struct statvfs *\fP\fIbuf\fP\fB);\fP -.SH 説明 -関数 \fBstatvfs\fP() はマウントされたファイルシステムについての情報を返す。 \fIpath\fP -はマウントされたファイルシステム中の任意のファイルのパス名である。 \fIbuf\fP は、だいたい以下のように定義されている \fIstatvfs\fP -構造体へのポインターである: - -.in +4n -.nf -struct statvfs { - unsigned long f_bsize; /* ファイルシステムのブロックサイズ */ - unsigned long f_frsize; /* フラグメントサイズ */ - fsblkcnt_t f_blocks; /* ファイルシステムのサイズ (f_frsize 単位) */ - fsblkcnt_t f_bfree; /* 解放されているブロック数 */ - fsblkcnt_t f_bafvail; /* 非特権ユーザー用に解放されているブロック数 */ - fsfilcnt_t f_files; /* inode 数 */ - fsfilcnt_t f_ffree; /* 解放されている inode の数 */ - fsfilcnt_t f_favail; /* 非特権ユーザー用に解放されている inode の数 */ - unsigned long f_fsid; /* ファイルシステム ID */ - unsigned long f_flag; /* マウントフラグ */ - unsigned long f_namemax; /* ファイル名の長さの最大値 */ -}; -.fi -.in - -ここで、型 \fIfsblkcnt_t\fP と \fIfsfilcnt_t\fP は \fI\fP で定義されている。 -かつて、これらは共に \fIunsigned long\fP であった。 - -フィールド \fIf_flag\fP は (マウントフラグの) ビットマスクである (マウントフラグについては、 \fBmount\fP(8) を参照すること)。 -POSIX で定義されているビットは以下の通り: -.TP -\fBST_RDONLY\fP -読み込み専用のファイルシステム。 -.TP -\fBST_NOSUID\fP -\fBexec\fP(3) に無視される set\-user\-id/set\-group\-ID ビット。 -.LP -返された構造体の全てのメンバが全てのファイルシステムで 意味のある値であるか否かは、指定されていない。 - -\fBfstatvfs\fP() は、ディスクリプター \fIfd\fP で参照されるオープンされたファイルについて、同じ情報を返す。 -.SH 返り値 -成功した場合、0 が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。 -.SH エラー -.TP -\fBEACCES\fP -(\fBstatvfs\fP() の場合) \fIpath\fP のディレクトリ部分に検索許可が与えられていない (\fBpath_resolution\fP(7) -も参照すること)。 -.TP -\fBEBADF\fP -(\fBfstatvfs\fP() の場合) \fIfd\fP が有効なオープンファイルディスクリプターではない。 -.TP -\fBEFAULT\fP -\fIbuf\fP または \fIpath\fP が無効なアドレスを指している。 -.TP -\fBEINTR\fP -この呼び出しがシグナルで中断された。 -.TP -\fBEIO\fP -ファイルシステムからの読み込みの間に I/O エラーが発生した。 -.TP -\fBELOOP\fP -(\fBstatvfs\fP() の場合) \fIpath\fP にシンボリックリンクが多すぎる。 -.TP -\fBENAMETOOLONG\fP -(\fBstatvfs\fP() の場合) \fIpath\fP が長すぎる。 -.TP -\fBENOENT\fP -(\fBstatvfs\fP() の場合) \fIpath\fP で参照されるファイルが存在しない。 -.TP -\fBENOMEM\fP -十分なカーネルメモリーがない。 -.TP -\fBENOSYS\fP -ファイルシステムがこの呼び出しをサポートしていない。 -.TP -\fBENOTDIR\fP -(\fBstatvfs\fP() の場合) \fIpath\fP のディレクトリ部分がディレクトリでない。 -.TP -\fBEOVERFLOW\fP -いくつかの値が大き過ぎて、返り値の構造体で表現できない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBstatvfs\fP() と \fBfstatvfs\fP()はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -Linux カーネルには、このライブラリコールをサポートするために、 \fBstatfs\fP(2), \fBfstatfs\fP(2) システムコールがある。 - -現在の glibc の実装において、 -.sp -.nf - pathconf(path, _PC_REC_XFER_ALIGN); - pathconf(path, _PC_ALLOC_SIZE_MIN); - pathconf(path, _PC_REC_MIN_XFER_SIZE); -.fi -.sp -は、それぞれ \fIstatvfs(path,buf)\fP の返り値の \fIf_frsize\fP, \fIf_frsize\fP, \fIf_bsize\fP -フィールドを使う。 -.SH 関連項目 -\fBstatfs\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 0560a72d..00000000 --- a/manual/LDP_man-pages/draft/man3/stdarg.3 +++ /dev/null @@ -1,217 +0,0 @@ -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated Fri Mar 22 1998 by NAKANO Takeo -.\" Updated Tue Oct 16 2001 by Kentaro Shirakata -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH STDARG 3 2013\-12\-10 "" "Linux Programmer's Manual" -.SH 名前 -stdarg, va_start, va_arg, va_end, va_copy \- 個数、型が可変な引数リスト -.SH 書式 -\fB#include \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\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() -\fBva_copy\fP() マクロは (初期化済みの) 可変長引き数リスト \fIsrc\fP を \fIdest\fP にコピーする。動作は、 \fIlast\fP -引き数に \fIdest\fP を渡して \fBva_start\fP() を \fIdest\fP に適用し、それから \fIsrc\fP -が現在の状態に達するまでに呼び出したのと同じ回数だけ \fBva_arg\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 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -マクロ \fBva_start\fP(), \fBva_arg\fP(), \fBva_end\fP(), \fBva_copy\fP() はスレッドセーフである。 -.SH 準拠 -\fBva_start\fP(), \fBva_arg\fP(), \fBva_end\fP() マクロは C89 準拠である。 \fBva_copy\fP() は C99 -で定義されている。 -.SH 注意 -これらのマクロは、以前から用いられてきた同等のマクロ群と 互換では\fIない\fP。過去のものと互換なバージョンは、 インクルードファイル -\fI\fP に存在する。 -.PP -歴史的なセットアップは以下のとおりである。 -.in +4n -.nf - -#include - -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 -#include - -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/stdin.3 b/manual/LDP_man-pages/draft/man3/stdin.3 index 3e0183f9..47b27eb4 100644 --- a/manual/LDP_man-pages/draft/man3/stdin.3 +++ b/manual/LDP_man-pages/draft/man3/stdin.3 @@ -20,26 +20,29 @@ .\" Translated 1998-03-22, NAKANO Takeo .\" Updated 2005-09-04, Akihiro MOTOKI .\" -.TH STDIN 3 2008\-07\-14 Linux "Linux Programmer's Manual" +.TH STDIN 3 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 stdin, stdout, stderr \- 標準入出力ストリーム .SH 書式 .nf \fB#include \fP - +.PP \fBextern FILE *\fP\fIstdin\fP\fB;\fP \fBextern FILE *\fP\fIstdout\fP\fB;\fP \fBextern FILE *\fP\fIstderr\fP\fB;\fP .fi .SH 説明 -標準の環境では、 UNIX プログラムは起動時に、オープンされているストリー ムを 3 つ与えられる。それぞれ入力用、出力用、診断メッセージやエラーメッ -セージの表示用のものである。これらは通常ユーザーの端末 (\fBtty\fP(4) を見よ) に接続されているが、親プロセスでの選択・設定によってファイル -や他のデバイスに関連づけられていることもある (\fBsh\fP(1) の「リダイレクション」セクションも参照のこと)。 +Under normal circumstances every UNIX program has three streams opened for +it when it starts up, one for input, one for output, and one for printing +diagnostic or error messages. These are typically attached to the user's +terminal (see \fBtty\fP(4)) but might instead refer to files or other devices, +depending on what the parent process chose to set up. (See also the +"Redirection" section of \fBsh\fP(1).) .PP 入力ストリームは "standard input" と呼ばれる。出力ストリームは "standard output"、エラーストリームは "standard error" と呼ばれる。 これらの用語を短縮したものがそれぞれのファイルを示すシンボルとなる。つ まり \fIstdin\fP, \fIstdout\fP, \fIstderr\fP である。 - +.PP これらのシンボルは \fBstdio\fP(3) のマクロで、 FILE へのポインター型である。したがって \fBfprintf\fP(3) や \fBfread\fP(3) などの関数とともに用いることができる。 .PP @@ -77,6 +80,5 @@ UNIX の raw ファ イルインターフェース (\fBread\fP(2) や \fBlseek\ .SH 関連項目 \fBcsh\fP(1), \fBsh\fP(1), \fBopen\fP(2), \fBfopen\fP(3), \fBstdio\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/stdio.3 b/manual/LDP_man-pages/draft/man3/stdio.3 deleted file mode 100644 index 939e2d70..00000000 --- a/manual/LDP_man-pages/draft/man3/stdio.3 +++ /dev/null @@ -1,185 +0,0 @@ -.\" Copyright (c) 1990, 1991 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 -.\" -.\" @(#)stdio.3 6.5 (Berkeley) 5/6/91 -.\" -.\" Converted for Linux, Mon Nov 29 16:07:22 1993, faith@cs.unc.edu -.\" Modified, 2001-12-26, aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Mon Jan 20 23:06:18 JST 1997 -.\" by YOSHINO Takashi -.\" Updated & Modified Thu Feb 14 21:39:49 JST 2002 -.\" by Yuichi SATO -.\" Updated & Modified Sun Sep 7 14:36:19 JST 2003 -.\" by Yuichi SATO -.\" Updated & Modified Sat Jan 17 03:18:29 JST 2004 by Yuichi SATO -.\" -.TH STDIO 3 2001\-12\-26 "" "Linux Programmer's Manual" -.SH 名前 -stdio \- 標準入出力ライブラリ関数 -.SH 書式 -\fB#include \fP -.sp -\fBFILE *\fP\fIstdin\fP\fB;\fP -.br -\fBFILE *\fP\fIstdout\fP\fB;\fP -.br -\fBFILE *\fP\fIstderr\fP\fB;\fP -.SH 説明 -標準入出力ライブラリは、簡単かつ効果のよい、 バッファーリングされたストリーム入出力インターフェースを提供する。 -入力と出力は論理データストリームに割り付けられ、 入出力の物理的な特徴は隠蔽される。 このライブラリに属する関数とマクロを以下に挙げる。 -より詳しい情報は個々の man ページから得ることができる。 -.PP -ファイルを \fIオープン (open) する\fP ことによって、 ストリームは外部ファイル (通常は物理デバイス) に連結される。 -この操作には新しくファイルを作成することも含まれる。 既存のファイルと同じ名前のファイルを新たに作ると、 もとのファイルの中身が捨てられてしまう。 -ファイルが位置指定リクエストをサポートしている (ディスクファイルなどが相当する。逆の例としては端末が挙げられる) 場合、 そのストリームに連結された -\fIファイル位置指示子 (file position indicator)\fP は、追加モードで開かれない限りファイルの先頭 (0 バイト目) -に位置する。 追加モードを使用した場合、 位置指示子をファイルの先頭に置かれるか末尾に置かれるかは規定されていない。 位置指示子は、 -以降の読み書きや位置指定リクエストによって変更される。 すべての入力は、 \fBfgetc\fP(3) -関数を次々に呼び出して文字を読み込んだかのように行われる。 一方すべての出力は、 \fBfputc\fP(3) -関数を次々に呼び出して文字を書き込んだかのように行われる。 -.PP -ファイルを \fIクローズ (close) する\fP ことによって、そのファイルはストリームから切り離される。 -出力ストリームは、そのストリームがファイルから切り離される前にフラッシュされる (書き込まれていないすべてのバッファーの内容がホスト環境に転送される)。 -\fIFILE\fP オブジェクトへのポインターの値は、 ファイルを閉じた後では不確定になる (ゴミになってしまう)。 -.PP -ファイルはその後 (同じまたは別のプログラムによって) 再びオープンされることもあり、 その内容が修正されたり変更されたりする -(そのファイルで先頭への位置移動が可能であれば)。 main 関数がもとの呼び出し側に返ったり、 \fBexit\fP(3) 関数が呼ばれた場合、 -プログラムの終了の前に 現在開いているすべてのファイルは閉じられる (その結果、すべての出力ストリームはフラッシュされる)。 プログラムの停止に -\fBabort\fP(3) のような他の方法を用いた場合には、 ファイルが正しく閉じられる保証はない。 -.PP -プログラムの起動時に 3 個のテキストストリームが予め定義されており、 それらは明示的に開く必要がない。 \fI標準入力 (standard -input)\fP (通常の入力を読み取るのに使う)、 \fI標準出力 (standard output)\fP (通常の出力を書き込むのに使う)、 -\fI標準エラー出力 (standard error)\fP (診断出力を書き込むのに使う) である。 これらのストリームは \fIstdin\fP, -\fIstdout\fP, \fIstderr\fP と短縮して表現される。 オープンされたときには、 標準エラーストリームは -完全にはバッファーリングされていない。 標準入力ストリームと標準出力ストリームは、 ストリームがインタラクティブなデバイスを参照していなければ、 -完全にバッファーリングされている。 -.PP -端末デバイスを参照する出力ストリームは、 デフォルトでは常に行単位でバッファーリングされている。 -ただしそのようなストリームにおけるバッファー内の出力は、 端末デバイスを参照している入力ストリームからの読み込みがあるたびに、 自動的に書き込まれる。 -出力端末に行の一部を書き込んだ後で大量の計算を行う場合、 出力が表示されるように、計算に取りかかる前に標準出力に対して \fBfflush\fP(3) -を実行する必要がある。 -.PP -\fIstdio\fP ライブラリは \fBlibc\fP ライブラリの一部であり、ルーチンは コンパイラー \fBcc\fP(1) と \fBpc\fP(1) -によって必要な時に自動的に読み込まれる。 後述する man ページ中の「書式」の節には、 どのインクルードファイルを使用しなければならないか、 -その関数のコンパイラー宣言はどのようなものか、 どのような外部変数が関係するのかが示されている。 -.PP -.\" Not on Linux: .BR fropen , -.\" Not on Linux: .BR fwopen , -\fBBUFSIZ\fP, \fBEOF\fP, \fBFILENAME_MAX\fP, \fBFOPEN_MAX\fP, \fBL_cuserid\fP, -\fBL_ctermid\fP, \fBL_tmpnam\fP, \fBNULL\fP, \fBSEEK_END\fP, \fBSEEK_SET\fP, \fBSEEK_CUR\fP, -\fBTMP_MAX\fP, \fBclearerr\fP, \fBfeof\fP, \fBferror\fP, \fBfileno\fP, \fBgetc\fP, \fBgetchar\fP, -\fBputc\fP, \fBputchar\fP, \fBstderr\fP, \fBstdin\fP, \fBstdout\fP はマクロとして定義されている。 -これらの名前は、現在の定義を \fB#undef\fP で削除しない限り、再利用することはできない。 マクロ関数の関数版として、 \fBfeof\fP, -\fBferror\fP, \fBclearerr\fP, \fBfileno\fP, \fBgetc\fP, \fBgetchar\fP, \fBputc\fP, \fBputchar\fP -がある。 マクロの定義が明示的に消去されている場合には、 これらを使用することになるだろう。 -.SS 関数のリスト -.TS -; -lb lb -lb l. -関数 説明 -_ -clearerr ストリームの状態の確認とリセット -fclose ストリームをクローズする -fdopen ストリームをオープンする -feof ストリームの状態の確認とリセット -ferror ストリームの状態の確認とリセット -fflush ストリームをフラッシュする -fgetc 次の文字または語を入力ストリームから取得する -fgetpos ストリームの位置指示子を移動する -fgets 行を入力ストリームから取得する -fileno 引き数であるストリームの整数値のディスクリプターを返す -fopen ストリームをオープンする -fprintf 書式付き出力変換 -fpurge ストリームをフラッシュする -fputc 文字または語をストリームに出力する -fputs 行をストリームに出力する -fread バイナリーストリーム入出力 -freopen ストリームをオープンする -fscanf 書式付き入力変換 -fseek ストリームの位置指示子を移動する -fsetpos ストリームの位置指示子を移動する -ftell ストリームの位置指示子を移動する -fwrite バイナリーストリーム入出力 -getc 次の文字または語を入力ストリームから取得する -getchar 次の文字または語を入力ストリームから取得する -gets 行を入力ストリームから取得する -getw 次の文字または語を入力ストリームから取得する -mktemp 他と重ならないテンポラリファイル名を作る -perror システムエラーメッセージ -printf 書式付き出力変換 -putc 文字または語をストリームに出力する -putchar 文字または語をストリームに出力する -puts 行をストリームに出力する -putw 文字または語をストリームに出力する -remove ディレクトリエントリーを削除する -rewind ストリームの位置指示子を移動する -scanf 書式付き入力変換 -setbuf ストリームのバッファーリングの操作 -setbuffer ストリームのバッファーリングの操作 -setlinebuf ストリームのバッファーリングの操作 -setvbuf ストリームのバッファーリングの操作 -sprintf 書式付き出力変換 -sscanf 書式付き入力変換 -strerror システムエラーメッセージ -sys_errlist システムエラーメッセージ -sys_nerr システムエラーメッセージ -tempnam テンポラリファイルの操作 -tmpfile テンポラリファイルの操作 -tmpnam テンポラリファイルの操作 -ungetc 入力ストリームへ 1 文字戻す -vfprintf 書式付き出力変換 -vfscanf 書式付き入力変換 -vprintf 書式付き出力変換 -vscanf 書式付き入力変換 -vsprintf 書式付き出力変換 -vsscanf 書式付き入力変換 -.TE -.SH 準拠 -\fIstdio\fP ライブラリは C89 に準拠している。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/stdio_ext.3 b/manual/LDP_man-pages/draft/man3/stdio_ext.3 deleted file mode 100644 index f8516680..00000000 --- a/manual/LDP_man-pages/draft/man3/stdio_ext.3 +++ /dev/null @@ -1,182 +0,0 @@ -.\" Copyright (C) 2001 Andries Brouwer . -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI all rights reserved. -.\" Translated Nov 2 2002 by Akihiro MOTOKI -.\"O .SH NAME -.\"O __fbufsize, __flbf, __fpending, __fpurge, __freadable, -.\"O __freading, __fsetlocking, __fwritable, __fwriting, _flushlbf \- -.\"O interfaces to stdio FILE structure -.\"O .SH SYNOPSIS -.\"O .SH DESCRIPTION -.\"O Solaris introduced routines to allow portable access to the -.\"O internals of the -.\"O .I FILE -.\"O structure, and glibc also implemented these. -.\"O The -.\"O .BR __fbufsize () -.\"O function returns the size of the buffer currently used -.\"O by the given stream. -.\"O The -.\"O .BR __fpending () -.\"O function returns the number of bytes in the output buffer. -.\"O For wide-oriented streams the unit is wide characters. -.\"O This function is undefined on buffers in reading mode, -.\"O or opened read-only. -.\"O The -.\"O .BR __flbf () -.\"O function returns a nonzero value if the stream is line-buffered, -.\"O and zero otherwise. -.\"O The -.\"O .BR __freadable () -.\"O function returns a nonzero value if the stream allows reading, -.\"O and zero otherwise. -.\"O The -.\"O .BR __fwritable () -.\"O function returns a nonzero value if the stream allows writing, -.\"O and zero otherwise. -.\"O The -.\"O .BR __freading () -.\"O function returns a nonzero value if the stream is read-only, or -.\"O if the last operation on the stream was a read operation, -.\"O and zero otherwise. -.\"O The -.\"O .BR __fwriting () -.\"O function returns a nonzero value if the stream is write-only (or -.\"O append-only), or if the last operation on the stream was a write -.\"O operation, and zero otherwise. -.\"O The -.\"O .BR __fsetlocking () -.\"O function can be used to select the desired type of locking on the stream. -.\"O It returns the current type. -.\"O The -.\"O .I type -.\"O argument can take the following three values: -.\"O Perform implicit locking around every operation on the given stream -.\"O (except for the *_unlocked ones). -.\"O This is the default. -.\"O The caller will take care of the locking (possibly using -.\"O .BR flockfile (3) -.\"O in case there is more than one thread), and the stdio routines -.\"O will not do locking until the state is reset to -.\"O .BR FSETLOCKING_INTERNAL . -.\"O Don't change the type of locking. -.\"O (Only return it.) -.\"O The -.\"O .BR _flushlbf () -.\"O function flushes all line-buffered streams. -.\"O (Presumably so that -.\"O output to a terminal is forced out, say before reading keyboard input.) -.\"O The -.\"O .BR __fpurge () -.\"O function discards the contents of the stream's buffer. -.\"O .SH "SEE ALSO" -.\" -.TH STDIO_EXT 3 2013\-06\-21 "" "Linux Programmer's Manual" -.SH 名前 -__fbufsize, __flbf, __fpending, __fpurge, __freadable, __freading, -__fsetlocking, __fwritable, __fwriting, _flushlbf \- 標準入出力ファイル構造体へのインターフェース -.SH 書式 -\fB#include \fP -.br -\fB#include \fP -.sp -\fBsize_t __fbufsize(FILE *\fP\fIstream\fP\fB);\fP -.br -\fBsize_t __fpending(FILE *\fP\fIstream\fP\fB);\fP -.br -\fBint __flbf(FILE *\fP\fIstream\fP\fB);\fP -.br -\fBint __freadable(FILE *\fP\fIstream\fP\fB);\fP -.br -\fBint __fwritable(FILE *\fP\fIstream\fP\fB);\fP -.br -\fBint __freading(FILE *\fP\fIstream\fP\fB);\fP -.br -\fBint __fwriting(FILE *\fP\fIstream\fP\fB);\fP -.br -\fBint __fsetlocking(FILE *\fP\fIstream\fP\fB, int \fP\fItype\fP\fB);\fP -.br -\fBvoid _flushlbf(void);\fP -.br -\fBvoid __fpurge(FILE *\fP\fIstream\fP\fB);\fP -.SH 説明 -Solaris では、 \fIFILE\fP 構造体の内部へポータブルなかたちで アクセスできる手段が導入されており、これらは glibc -でも実装されている。 -.LP -\fB__fbufsize\fP() 関数は、指定されたストリームが使用しているバッファーサイズを返す。 -.LP -\fB__fpending\fP() 関数は、出力バッファーに入っているデータのバイト数を返す。 -ワイドキャラクターを扱うストリームの場合、ワイドキャラクター単位で計算される。 バッファーが読み出しモードの場合や読み出し専用で開かれている場合の -この関数の振舞いは未定義である。 -.LP -\fB__flbf\fP() 関数は、ストリームがラインバッファーの場合は 0 以外を、 それ以外の場合は 0 を返す。 -.LP -\fB__freadable\fP() 関数は、ストリームが読み出し可能な場合は 0 以外を、 それ以外の場合は 0 を返す。 -.LP -\fB__fwritable\fP() 関数は、ストリームが書き込み可能な場合は 0 以外を、 それ以外の場合は 0 を返す。 -.LP -\fB__freading\fP() 関数は、ストリームが読み出し専用の場合、またはストリームに対する直前の操作が 読み出し操作であった場合は 0 -以外を返し、それ以外の場合は 0 を返す。 -.LP -\fB__fwriting\fP() 関数は、ストリームが書き込み専用(もしくは追加専用)の場合、 -またはストリームに対する直前の操作が書き込み操作であった場合は 0 以外を返し、 それ以外の場合は 0 を返す。 -.LP -\fB__fsetlocking\fP() 関数は、ストリームのロック形式を選択するために使用できる。 返り値は、現在のロック形式である。 \fItype\fP -引き数は以下の 3 種類の値をとることができる : -.TP -\fBFSETLOCKING_INTERNAL\fP -指定されたストリームに対して操作が行われる度に、操作の前後で 明示的に指示しなくてもストリームのロック処理を行う (但し、*_unlocked -関数を使用した場合は例外である)。 これがデフォルトのロック形式である。 -.TP -\fBFSETLOCKING_BYCALLER\fP -関数の呼び出し元でロックの面倒をみる。 (おそらく、複数のスレッドが存在する状況では \fBflockfile\fP(3) を使うことになるだろう) -ロック形式が \fBFSETLOCKING_INTERNAL\fP にリセットされるまでは標準入出力関連の関数はロック処理を行わない。 -.TP -\fBFSETLOCKING_QUERY\fP -ロック形式の変更を行わない。(現在の形式を返すだけである) -.LP -\fB_flushlbf\fP() 関数は、すべてのラインバッファー (line\-buffered) タイプのストリームの 内容を出力(フラッシュ)する。 -(当然ながら、端末への出力が強制的に行われることになるので、 キーボードからの入力を読みこむ前にこの関数を呼んだ方がいいだろう) -.LP -\fB__fpurge\fP() 関数は、ストリームのバッファーの内容を廃棄する。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fB__fbufsize\fP(), \fB__fpending\fP(), \fB__fpurge\fP(), \fB__fsetlocking\fP() は、 -ストリームのロックを行わない。 そのため、スレッドセーフではない。 -.LP -関数 \fB__flbf\fP(), \fB__freadable\fP(), \fB__freading\fP(), \fB__fwritable\fP(), -\fB__fwriting\fP(), \fB_flushlbf\fP() はスレッドセーフである。 -.SH 関連項目 -\fBflockfile\fP(3), \fBfpurge\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/stpcpy.3 b/manual/LDP_man-pages/draft/man3/stpcpy.3 deleted file mode 100644 index b3fab4b2..00000000 --- a/manual/LDP_man-pages/draft/man3/stpcpy.3 +++ /dev/null @@ -1,104 +0,0 @@ -.\" Copyright 1995 James R. Van Zandt -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Fri Dec 26 13:14:47 JST 1997 -.\" by HIROFUMI Nishizuka -.\" -.TH STPCPY 3 2014\-05\-10 GNU "Linux Programmer's Manual" -.SH 名前 -stpcpy \- 文字列をコピーし、コピーした文字列の終りへのポインターを返す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *stpcpy(char *\fP\fIdest\fP\fB, const char *\fP\fIsrc\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBstpcpy\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.ad -.PD -.SH 説明 -\fBstpcpy\fP() 関数は、\fIsrc\fP で指された文字列を (文字列を終端するヌルバイト (\(aq\e0\(aq) を含めて) \fIdest\fP -で指された配列にコピーする。 文字列は重複してはならず、コピー先の文字列 \fIdest\fP はコピーを受け取る のに十分大きくなくてはならない。 -.SH 返り値 -\fBstpcpy\fP() は、文字列 \fIdest\fP の始まりではなく \fB終り\fPを指すポインター (すなわち、文字列を終端するヌルバイト) を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBstpcpy\fP() 関数はスレッドセーフである。 -.SH 準拠 -この関数は POSIX.1\-2008 に追加された。 それ以前は、この関数は C や POSIX.1 標準の一部でも UNIX -システムの慣習的なものでもなかった。 この関数は Lattice C AmigaDOS コンパイラで初めて登場し、それは少なくとも 1986 -年時点ではそうであった。 その後、 1989 年に GNU fileutils と GNU textutils に登場し、 1992 年までには GNU -C ライブラリにも存在していた。 この関数は BSD 系にも存在する。 -.SH バグ -この関数はバッファー \fIdest\fP の範囲を行き過ぎてしまう可能性がある。 -.SH 例 -例として、このプログラムは \fBfoo\fP と \fBbar\fP を連結して \fBfoobar\fP を作るために \fBstpcpy\fP() -を使用し、その後表示する。 -.nf - -#define _GNU_SOURCE -#include -#include - -int -main(void) -{ - char buffer[20]; - char *to = buffer; - - to = stpcpy(to, "foo"); - to = stpcpy(to, "bar"); - printf("%s\en", buffer); -} -.fi -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/stpncpy.3 b/manual/LDP_man-pages/draft/man3/stpncpy.3 deleted file mode 100644 index 04a1f0d8..00000000 --- a/manual/LDP_man-pages/draft/man3/stpncpy.3 +++ /dev/null @@ -1,75 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" -.\" Corrected, aeb, 990824 -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:55:50 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH STPNCPY 3 2014\-05\-10 GNU "Linux Programmer's Manual" -.SH 名前 -stpncpy \- 固定長の文字列をコピーして、その最後へのポインターを返す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *stpncpy(char *\fP\fIdest\fP\fB, const char *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBstpncpy\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.ad -.PD -.SH 説明 -\fBstpncpy\fP() 関数は \fIsrc\fP が指している文字列から終端のヌルバイト (\(aq\e0\(aq) を含めて最大 \fIn\fP バイトを -\fIdest\fP にコピーする。長さ \fIstrlen(src)\fP が \fIn\fP より小さい場合には \fIdest\fP の残りの 部分にはヌルバイト -(\(aq\e0\(aq) 文字が埋められる。 長さ \fIstrlen(src)\fP が \fIn\fP 以上ならば、 \fIdest\fP -が指す文字列はヌルで終端されていない。 -.PP -二つの文字列は重なってはならない。 -.PP -プログラマーは \fIdest\fP に少なくとも \fIn\fP バイトの空きがあることを 保証しなければならない。 -.SH 返り値 -\fBstpncpy\fP() は \fIdest\fP の終端のヌルバイトを指すポインターを返すか、 \fIdest\fP がヌルバイトで終端されていない場合には -\fIdest\fP+\fIn\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBstpncpy\fP() 関数はスレッドセーフである。 -.SH 準拠 -この関数は POSIX.1\-2008 に追加された。 それ以前は GNU による拡張であった。 この関数は 1993 年に GNU C -ライブラリのバージョン 1.07 で初めて登場した。 -.SH 関連項目 -\fBstrncpy\fP(3), \fBwcpncpy\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strcasecmp.3 b/manual/LDP_man-pages/draft/man3/strcasecmp.3 deleted file mode 100644 index 304bf602..00000000 --- a/manual/LDP_man-pages/draft/man3/strcasecmp.3 +++ /dev/null @@ -1,74 +0,0 @@ -.\" 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:12:45 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Thu Dec 25 10:54:13 JST 1997 -.\" by HIROFUMI Nishizuka -.\" -.TH STRCASECMP 3 2014\-05\-10 "" "Linux Programmer's Manual" -.SH 名前 -strcasecmp, strncasecmp \- 二つの文字列を大文字小文字を区別せず比較する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint strcasecmp(const char *\fP\fIs1\fP\fB, const char *\fP\fIs2\fP\fB);\fP -.sp -\fBint strncasecmp(const char *\fP\fIs1\fP\fB, const char *\fP\fIs2\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBstrcasecmp\fP() 関数は、二つの文字列 \fIs1\fP と \fIs2\fP を、 大文字小文字を区別せずに比較する。 \fIs1\fP が \fIs2\fP -よりも小さいか、同じか、大きいかによってそれぞれ 負の整数、0、正の整数を返す。 -.PP -\fBstrncasecmp\fP() 関数も同様であるが、 \fIs1\fP の最初の \fIn\fP バイトだけを -比較する点だけが異なる。 -.SH 返り値 -\fBstrcasecmp\fP() と \fBstrncasecmp\fP() 関数は、\fIs1\fP (または、その最初の \fIn\fP バイト)が \fIs2\fP -よりも小さいか、 同じか、大きいかにより、それぞれ負の整数、0、正の整数を返す。 -.SH 準拠 -4.4BSD, POSIX.1\-2001. -.SH 注意 -関数 \fBstrcasecmp\fP() と \fBstrncasecmp\fP() は 4.4BSD で初めて登場し、 そのときは -\fI\fP に宣言があった。 このような、過去との互換性確保のため、 機能検査マクロ -\fB_DEFAULT_SOURCE\fP (glibc 2.19 以前では \fB_BSD_SOURCE\fP) が定義された際に、 glibc -のヘッダーファイル \fI\fP でもこれらの関数が宣言されている。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 300cff21..00000000 --- a/manual/LDP_man-pages/draft/man3/strcat.3 +++ /dev/null @@ -1,124 +0,0 @@ -.\" 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 + mtk -.\" Improve discussion of strncat(). -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Mon Jan 20 22:47:14 JST 1997 -.\" by YOSHINO Takashi -.\" Updated & Modified Fri Feb 18 00:30:00 JST 2005 -.\" by Yuichi SATO -.\" Updated 2007-07-04, Akihiro MOTOKI , LDP v2.58 -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH STRCAT 3 2014\-01\-20 GNU "Linux Programmer's Manual" -.SH 名前 -strcat, strncat \- 二つの文字列を連結する -.SH 書式 -.nf -\fB#include \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 説明 -\fBstrcat\fP() 関数は、\fIdest\fP 文字列の後に \fIsrc\fP 文字列を付け加える。 その際に、\fIdest\fP -の最後にある終端のヌルバイト (\(aq\e0\(aq) は上書きされ、新たに生成された文字列の末尾に終端のヌルバイトが付与される。 二つの文字列 -\fIsrc\fP と \fIdest\fP は重なってはならない。 また、文字列 \fIdest\fP は、連結後の結果を格納するのに 十分な大きさでなければならない。 -\fIdest\fP が十分な大きさでない場合、プログラムがどのような動作をするか分からない。 -バッファーオーバーランはセキュアなプログラムを攻撃する際に好んで使われる方法である。 -.PP -\fBstrncat\fP() も同様だが、以下の点が異なる。 -.IP * 3 -\fIsrc\fP のうち最大 \fIn\fP バイトが使用される。 -.IP * -\fIsrc\fP が \fIn\fP バイト以上の場合、 -\fIsrc\fP はヌル終端されている必要はない。 -.PP -\fBstrcat\fP() と同じく、\fIdest\fP に格納される結果の文字列は常にヌル終端される。 -.PP -\fIsrc\fP が \fIn\fP バイト以上の場合、 \fBstrncat\fP() は \fIdest\fP に \fIn+1\fP -バイトを書き込む (\fIsrc\fP からの \fIn\fP バイトと終端のヌルバイトである)。 -したがって、\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 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBstrcat\fP() と \fBstrncat\fP() はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, C89, C99. -.SH 注意 -いくつかのシステム (BSD、Solaris など) では以下の関数が提供されている。 - - size_t strlcat(char *dest, const char *src, size_t size); - -.\" https://lwn.net/Articles/506530/ -この関数は、ヌル終端された文字列 \fIsrc\fP を文字列 \fIdest\fP に追加する。 具体例には、 \fIsize\fP が \fIstrlen(dest)\fP -より大きい場合には最大で \fIsize\-strlen(dest)\-1\fP バイトを \fIsrc\fP からコピーし、 結果の末尾に終端のヌルバイトを追加する。 -この関数では \fBstrcat\fP() のバッファーオーバーランが発生するという問題が修正されているが、 \fIsize\fP -が小さすぎた場合にはデータが失われる問題には、 依然として呼び出し側で対処する必要がある。 この関数は \fBstrlcat\fP() -が作成しようとした文字列の長さを返す。 返り値が \fIsize\fP 以上の場合、 データロスが発生している。 データロスが問題となる場合は、 -呼び出し側で、 呼び出し前に引き数をチェックするか、 この関数の返り値を検査するかのいずれかをしなければならない。 \fBstrlcat\fP() は -glibc には存在せず、 POSIX による標準化もされていないが、 Linux では \fIlibbsd\fP ライブラリ経由で利用できる。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strchr.3 b/manual/LDP_man-pages/draft/man3/strchr.3 deleted file mode 100644 index c7c34c68..00000000 --- a/manual/LDP_man-pages/draft/man3/strchr.3 +++ /dev/null @@ -1,95 +0,0 @@ -.\" 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 Mon Apr 12 12:51:24 1993, David Metcalfe -.\" 2006-05-19, Justin Pryzby -.\" Document strchrnul(3). -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Tue Dec 16 10:29:05 JST 1997 -.\" by HIROFUMI Nishizuka -.\" Updated & Modified 2001-10-16, Yuichi SATO -.\" Updated 2006-07-20, Akihiro MOTOKI -.\" Updated 2012-05-01, Akihiro MOTOKI -.\" -.TH STRCHR 3 2014\-01\-20 GNU "Linux Programmer's Manual" -.SH 名前 -strchr, strrchr, strchrnul \- 文字列中の文字の位置を特定する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *strchr(const char *\fP\fIs\fP\fB, int \fP\fIc\fP\fB);\fP -.sp -\fBchar *strrchr(const char *\fP\fIs\fP\fB, int \fP\fIc\fP\fB);\fP -.sp -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP -.sp -\fBchar *strchrnul(const char *\fP\fIs\fP\fB, int \fP\fIc\fP\fB);\fP -.fi -.SH 説明 -\fBstrchr\fP() 関数は、文字列 \fIs\fP 中に最初に文字 \fIc\fP が現れた位置へのポインターを返す。 -.PP -\fBstrrchr\fP() 関数は、文字列 \fIs\fP 中に最後に文字 \fIc\fP が現れた位置へのポインターを返す。 -.PP -\fBstrchrnul\fP() 関数は \fBstrchr\fP() と同様だが、 \fIc\fP が \fIs\fP 中に見つからなかった場合に、返り値として -NULL でなく、\fIs\fP の末尾のヌルバイトへのポインターを返す点が異なる。 -.PP -ここでいう「文字」は「バイト」の意味なので、 これらの関数はワイド文字やマルチバイト文字では動作しない。 -.SH 返り値 -\fBstrchr\fP() と \fBstrrchr\fP() 関数は一致した文字へのポインターを返し、もし -文字が見つからない場合は NULL を返す。終端のヌルバイトは文字列の一部と -みなされ、\fIc\fP に \(aq\e0\(aq が指定された場合には、これらの関数は -終端のヌルバイトへのポインターを返す。 - -\fBstrchrnul\fP() 関数は一致した文字へのポインターを返す。 文字が見つからない場合は、\fIs\fP の末尾のヌルバイトへの ポインター -(つまり \fIs+strlen(s)\fP) を返す。 -.SH バージョン -\fBstrchrnul\fP() は glibc バージョン 2.1.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBstrchr\fP(), \fBstrrchr\fP(), \fBstrchrnul\fP() はスレッドセーフである。 -.SH 準拠 -\fBstrchr\fP() と \fBstrrchr\fP() は SVr4, 4.3BSD, C89, C99 に準拠している。 -\fBstrchrnul\fP() は GNU 拡張である。 -.SH 関連項目 -\fBindex\fP(3), \fBmemchr\fP(3), \fBrindex\fP(3), \fBstring\fP(3), \fBstrlen\fP(3), -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strcmp.3 b/manual/LDP_man-pages/draft/man3/strcmp.3 deleted file mode 100644 index b67ead34..00000000 --- a/manual/LDP_man-pages/draft/man3/strcmp.3 +++ /dev/null @@ -1,76 +0,0 @@ -.\" 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:08:52 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2001-08-31, aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Mon Jan 20 22:42:02 JST 1997 -.\" by YOSHINO Takashi -.\" Updated Fri Oct 12 JST 2001 by Akihiro MOTOKI -.\" -.TH STRCMP 3 2014\-01\-20 "" "Linux Programmer's Manual" -.SH 名前 -strcmp, strncmp \- 二つの文字列を比べる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint strcmp(const char *\fP\fIs1\fP\fB, const char *\fP\fIs2\fP\fB);\fP -.sp -\fBint strncmp(const char *\fP\fIs1\fP\fB, const char *\fP\fIs2\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBstrcmp\fP() 関数は二つの文字列 \fIs1\fP と \fIs2\fP を較べる。 この関数は、 \fIs1\fP が \fIs2\fP に較べて -1)小さい、2)等しい、3)大きい場合に、 ゼロよりも 1)小さい、2)等しい、3)大きい整数を返す。 -.PP -\fBstrncmp\fP() 関数は、\fIs1\fP と \fIs2\fP の最初の \fIn\fP バイトだけを比較する -ことを除けば、strcmp()と同様である。 -.SH 返り値 -\fBstrcmp\fP() 関数と \fBstrncmp\fP() 関数は整数を返す。 -この整数は、ゼロよりも、1)小さい、2)等しい、3)大きいのいずれかである。 それぞれは、\fIs1\fP(または、この文字列の最初の \fIn\fP バイト)が -\fIs2\fP よりも、1)小さい、2)等しい、3)大きいに対応している。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBstrcmp\fP() と \fBstrncmp\fP() はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, C89, C99. -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strcoll.3 b/manual/LDP_man-pages/draft/man3/strcoll.3 deleted file mode 100644 index 5a0b39a3..00000000 --- a/manual/LDP_man-pages/draft/man3/strcoll.3 +++ /dev/null @@ -1,67 +0,0 @@ -.\" 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:40:44 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated 1997-12-26, HIROFUMI Nishizuka -.\" Modified 2007-05-28, Akihiro MOTOKI , LDP v2.48 -.\" -.TH STRCOLL 3 2010\-09\-20 GNU "Linux Programmer's Manual" -.SH 名前 -strcoll \- 現在のロケールを使用して二つの文字列を比較する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint strcoll(const char *\fP\fIs1\fP\fB, const char *\fP\fIs2\fP\fB);\fP -.fi -.SH 説明 -\fBstrcoll\fP() 関数は二つの文字列 \fIs1\fP と \fIs2\fP を比較する。 この関数は、\fIs1\fP が \fIs2\fP -よりも小さいか、等しいか、大きいかによって それぞれ負の整数、0、正の整数を返す。 比較は、プログラムの現在のロケールの \fBLC_COLLATE\fP -カテゴリーに応じて 解釈された文字列に基づいて行われる (\fBsetlocale\fP(3) 参照)。 -.SH 返り値 -\fBstrcoll\fP() 関数は、\fIs1\fP が \fIs2\fP よりも小さいか、等しいか、 大きいかによって、それぞれ負の整数、0、正の整数を返す。 -どちらの文字列も現在のロケールに応じて解釈されたものが使用される。 -.SH 準拠 -SVr4, 4.3BSD, C89, C99. -.SH 注意 -\fIPOSIX\fP および \fIC\fP ロケールにおいては、 \fBstrcoll\fP() は \fBstrcmp\fP(3) と等価である。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 7481acc6..00000000 --- a/manual/LDP_man-pages/draft/man3/strcpy.3 +++ /dev/null @@ -1,146 +0,0 @@ -.\" 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 + mtk -.\" Improve discussion of strncpy(). -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Mon Jan 20 22:35:40 JST 1997 -.\" by YOSHINO Takashi -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH STRCPY 3 2014\-05\-21 GNU "Linux Programmer's Manual" -.SH 名前 -strcpy, strncpy \- 文字列をコピーする -.SH 書式 -.nf -\fB#include \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 説明 -\fBstrcpy\fP() 関数は \fIsrc\fP が指す文字列を末尾のヌルバイト (\(aq\e0\(aq) も含めて \fIdest\fP -が指すバッファーにコピーする。 二つの文字列は重なってはならない。受け側の文字列 \fIdest\fP は -コピーを受け取るのに十分な大きさでなければならない。 \fIバッファーオーバーランに気を付けること!\fP (「バグ」の節を参照) -.PP -\fBstrncpy\fP() 関数も同様だが、 \fIsrc\fP のうち最大でも \fIn\fP バイトしかコピーされない点が異なる。 \fB警告\fP: \fIsrc\fP -の最初の \fIn\fP バイトの中にヌルバイトがない場合、 \fIdest\fP に格納される文字列はヌルで終端されないことになる。 -.PP -\fIsrc\fP の長さが \fIn\fP よりも短い場合、 \fBstrncpy\fP() は \fIdest\fP に追加のヌルバイトを書き込み、全部で \fIn\fP -バイトが書き込まれるようにする。 -.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 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBstrcpy\fP() と \fBstrncpy\fP() はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, C89, C99. -.SH 注意 -\fBstrncpy\fP() は効率的でなく間違いを起こしやすいと考えるプログラマもいるだろう。 プログラマが \fIdest\fP の大きさが \fIsrc\fP -の長さよりも 大きいことを知っている (つまり、そのことをチェックするコードを 書いている) 場合は、 \fBstrcpy()\fP を使うことができる。 - -\fBstrncpy\fP() の正しい (かつ意図された) 用途は、 C 文字列の固定長バッファーへのコピーを、 バッファーがオーバーフローしないことと、 -宛先バッファーの未使用バイトが 0 で埋められることの両方を保証しつつ行うことである。 (宛先バッファーを 0 で埋めるのは、 たいていの場合、 -バッファーを媒体に書き込んだり、別のプロセスにプロセス間通信を用いて送信したりした場合に情報洩れを防ぐためである)。 - -\fIsrc\fP の最初の \fIn\fP バイトに終端のヌルバイトがない場合、 \fBstrncpy\fP() は \fIdest\fP -に終端されていない文字列を生成する。 \fIbuf\fP の長さが \fIbuflen\fP の場合、以下のようにして強制的に終端することができる。 -.in +4n -.nf - -strncpy(buf, str, buflen \- 1); -if (buflen > 0) - buf[buflen \- 1]= \(aq\e0\(aq; -.fi -.in -.PP -.\" -(もちろん、上記の方法では、 \fIsrc\fP に入っている情報が \fIbuflen\ \-\ 1\fP バイトよりも多い場合には、 \fIdest\fP -へのコピー時に情報が失われるという事実は無視している。) -.SS strlcpy() -いくつかのシステム (BSD、Solaris など) では以下の関数が提供されている。 - - 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/ -この関数は \fBstrncpy\fP() と同様だが、 最大でも \fIsize\-1\fP バイトしか \fIdest\fP にコピーをせず、 -末尾への終端のヌルバイトの追加が必ず行われ、 宛先バッファー (の未使用部分) へのヌルバイトの書き込みが行われない。 この関数では -\fBstrcpy\fP() や \fBstrncpy\fP() の持つ問題のいくつかが修正されているが、 \fIsize\fP -が小さすぎた場合にはデータが失われる問題には、 依然として呼び出し側で対処する必要がある。 この関数の返り値は \fIsrc\fP の長さである。 -これにより、 末尾の切り詰めが行われたかを簡単に検出することができる。 返り値が \fIsize\fP 以上の場合には、 末尾の切り詰めが発生している。 -データロスが問題となる場合は、 呼び出し側で、 呼び出し前に引き数をチェックするか、 この関数の返り値を検査するかのいずれかをしなければならない。 -\fBstrlcpy\fP() は glibc には存在せず、 POSIX による標準化もされていないが、 Linux では \fIlibbsd\fP -ライブラリ経由で利用できる。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strdup.3 b/manual/LDP_man-pages/draft/man3/strdup.3 deleted file mode 100644 index 23c4a10e..00000000 --- a/manual/LDP_man-pages/draft/man3/strdup.3 +++ /dev/null @@ -1,115 +0,0 @@ -.\" 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:41:34 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Wed Oct 17 01:12:26 2001 by John Levon -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Mon Jan 20 22:31:05 JST 1997 -.\" by YOSHINO Takashi -.\" Updated Fri Nov 2 JST 2001 by Kentaro Shirakata -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH STRDUP 3 2013\-04\-19 GNU "Linux Programmer's Manual" -.SH 名前 -strdup, strndup, strdupa, strndupa \- 文字列を複製する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *strdup(const char *\fP\fIs\fP\fB);\fP -.sp -\fBchar *strndup(const char *\fP\fIs\fP\fB, size_t \fP\fIn\fP\fB);\fP -.br -\fBchar *strdupa(const char *\fP\fIs\fP\fB);\fP -.br -\fBchar *strndupa(const char *\fP\fIs\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.PD 0 -.ad l -.sp -\fBstrdup\fP(): -.RS 4 -_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.br -|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L -.RE -.PP -\fBstrndup\fP(): -.RS 4 -.TP 4 -glibc 2.10 以降: -_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700 -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.PP -\fBstrdupa\fP(), \fBstrndupa\fP(): _GNU_SOURCE -.ad -.PD -.SH 説明 -\fBstrdup\fP() 関数は、文字列 \fIs\fPの複製である 新しい文字列へのポインターを返す。 新しい文字列のためのメモリーは -\fBmalloc\fP(3) で得ている。 そして、 \fBfree\fP(3) で解放することができる。 - -\fBstrndup\fP() 関数は同様であるが、最大で \fIn\fP バイトを複製する。 -\fIs\fP が \fIn\fP よりも長い場合、\fIn\fP バイトだけが複製され、 -終端のヌルバイト (\(aq\e0\(aq)) が追加される。 - -\fBstrdupa\fP() と \fBstrndupa\fP() も同様だが、バッファーの確保に -\fBalloca\fP(3) を使用する点が異なる。 -これらが使用できるのは GNU GCC ツール群を使う場合だけであり、 -\fBalloca\fP(3) で説明されているのと同じ制限がある。 -.SH 返り値 -成功すると、 \fBstrdup\fP() 関数は複製された文字列へのポインターを返す。 十分なメモリーが確保できなかった場合には、 NULL を返し、 -\fIerrno\fP にエラーの原因を示す値を設定する。 -.SH エラー -.TP -\fBENOMEM\fP -複製された文字列を割り当てる十分なメモリーが確保できなかった。 -.SH 準拠 -.\" 4.3BSD-Reno, not (first) 4.3BSD. -\fBstrdup\fP() は SVr4, 4.3BSD, POSIX.1\-2001 準拠である。 \fBstrndup\fP() は -POSIX.1\-2008 準拠である。 \fBstrdupa\fP(), \fBstrndupa\fP() は GNU 拡張である。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strerror.3 b/manual/LDP_man-pages/draft/man3/strerror.3 deleted file mode 100644 index 4c59524d..00000000 --- a/manual/LDP_man-pages/draft/man3/strerror.3 +++ /dev/null @@ -1,167 +0,0 @@ -.\" Copyright (C) 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright (C) 2005, 2014 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified Sat Jul 24 18:05:30 1993 by Rik Faith -.\" Modified Fri Feb 16 14:25:17 1996 by Andries Brouwer -.\" Modified Sun Jul 21 20:55:44 1996 by Andries Brouwer -.\" Modified Mon Oct 15 21:16:25 2001 by John Levon -.\" Modified Tue Oct 16 00:04:43 2001 by Andries Brouwer -.\" Modified Fri Jun 20 03:04:30 2003 by Andries Brouwer -.\" 2005-12-13, mtk, Substantial rewrite of strerror_r() description -.\" Addition of extra material on portability and standards. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated 1997-01-20, YOSHINO Takashi -.\" Updated & Modified 2001-11-03, Yuichi SATO -.\" Updated 2005-12-26, Akihiro MOTOKI -.\" Updated 2007-09-06, Akihiro MOTOKI , LDP v2.64 -.\" Updated 2012-05-02, Akihiro MOTOKI -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH STRERROR 3 2014\-03\-18 "" "Linux Programmer's Manual" -.SH 名前 -strerror, strerror_r, strerror_l \- エラー番号を説明する文字列を返す。 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *strerror(int \fP\fIerrnum\fP\fB);\fP -.sp -\fBint strerror_r(int \fP\fIerrnum\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB);\fP - /* XSI\-compliant */ -.sp -\fBchar *strerror_r(int \fP\fIerrnum\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB);\fP - /* GNU\-specific */ - -\fBchar *strerror_l(int \fP\fIerrnum\fP\fB, locale_t \fP\fIlocale\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.ad l -.sp -\fBstrerror_r\fP(): -.RS 4 -次の場合には XSI 準拠のバージョンが提供される: -.br -(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600) && !\ _GNU_SOURCE -.br -それ以外の場合、GNU バージョンが提供される。 -.RE -.ad -.SH 説明 -.\" -\fBstrerror\fP() 関数は、引き数 \fIerrnum\fP で渡されたエラーコードについての説明が入った文字列へのポインターを返す。 -可能であるならば、適切な言語を選択するために、 現在のロケールの \fBLC_MESSAGES\fP を使う。(例えば、 \fIerrnum\fP が -\fBEINVAL\fP の場合、説明として "Invalid argument" が返される。) この文字列は、アプリケーションで変更してはならないが、 -これ以降に行われる \fBstrerror\fP() や \fBstrerror_l\fP() の呼び出しで変更されても構わない。 \fBperror\fP(3) -などの、これ以外のライブラリ関数ではこの文字列は変更されない。 -.SS strerror_r() -\fBstrerror_r\fP() 関数は \fBstrerror\fP() と似ているが、スレッドセーフである。 -この関数には二種類のバージョンが存在し、 POSIX.1\-2001 で規定された XSI -準拠のバージョン (glibc 2.3.4 以降で利用可能だが、glibc 2.13 までは -POSIX 準拠ではない) と、 GNU 仕様のバージョン (glibc 2.0 以降で利用可能) -である。 「書式」の節に記載された機能検査マクロの場合には、 XSI 準拠の -バージョンが提供される。それ以外の場合には GNU 仕様のバージョンが提供さ -れる。機能検査マクロが一つも明示的に定義されない場合、 (glibc 2.4 以降 -では) デフォルトで \fB_POSIX_SOURCE\fP は値 200112l で定義され、その結果 -XSI 準拠のバージョンの \fBstrerror_r\fP() がデフォルトで提供される。 - -移植性が必要なアプリケーションでは、 XSI 準拠の \fBstrerror_r\fP() を使う方がよい。 この関数は、ユーザーから提供される長さ -\fIbuflen\fP のバッファー \fIbuf\fP にエラー文字列を返す。 - -.\" -GNU 仕様の \fBstrerror_r\fP() は、 エラーメッセージを格納した文字列へのポインターを返す。 返り値は、 この関数が \fIbuf\fP -に格納した文字列へのポインターか、 何らかの (不変な) 静的な文字列へのポインター、 のいずれかとなる (後者の場合は \fIbuf\fP -は使用されない)。 \fIbuf\fP に文字列が格納される場合は、 最大で \fIbuflen\fP バイトが格納される (\fIbuflen\fP -が小さ過ぎたときには文字列は切り詰められ、 \fIerrnum\fP は不定である)。 文字列には必ず終端ヌル文字 (\(aq\e0\(aq) が含まれる。 -.SS strerror_l() -\fBstrerror_l\fP() は \fBstrerror\fP() と同様だが、 \fIerrnum\fP を \fIlocale\fP -で指定されたロケールのロケール依存のエラーメッセージにマッピングする。 \fIlocale\fP が特別なロケールオブジェクト -\fBLC_GLOBAL_LOCALE\fP の場合、もしくは \fIlocale\fP が有効なロケールオブジェクトハンドルでない場合は、 -\fBstrerror_l\fP() の動作は未定義である。 -.SH 返り値 -関数 \fBstrerror\fP(), \fBstrerror_l\fP() と GNU 固有の関数 \fBstrerror_r\fP() -はエラー内容を説明する文字列を返す。 エラー番号が未知の場合は "Unknown error nnn" という メッセージを返す。 - -XSI 準拠の \fBstrerror_r\fP() 関数は成功すると 0 を返す。エラーの場合には、 -(glibc 2.13 以降では) (正の) エラー番号が返され、(バージョン 2.13 より前 -の glibc では) \-1 が返され、 \fIerrno\fP にエラーを示す値がセットされる。 - -POSIX.1\-2001 と POSIX.1\-2008 では、 \fBstrerror\fP() や \fBstrerror_l\fP() が成功した場合は -\fIerrno\fP -を変更せずに元のままにしなければならないとされている。関数のどの返り値もエラーを示すために予約されていないので、エラーをチェックしたいアプリケーションは呼び出しを行う前に -\fIerrno\fP を 0 に初期化し、呼び出しの後で \fIerrno\fP をチェックすべき点に注意すること。 -.SH エラー -.TP -\fBEINVAL\fP -\fIerrnum\fP の値が有効なエラー番号ではない。 -.TP -\fBERANGE\fP -エラーコードを説明する文字列のために、充分な領域が確保できなかった。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBstrerror\fP() 関数はスレッドセーフではない。 -.LP -.\" FIXME . Need a thread-safety statement about strerror_l() -\fBstrerror_r\fP() 関数はスレッドセーフである。 -.SH バージョン -\fBstrerror_l\fP() 関数は glibc 2.6 で初めて登場した。 -.SH 準拠 -\fBstrerror\fP() は POSIX.1\-2001, POSIX.1\-2008, C89, C99 で規定されている。 -\fBstrerror_r\fP() は POSIX.1\-2001 と POSIX.1\-2008 で規定されている。 - -\fBstrerror_l\fP() は POSIX.1\-2008 で規定されている。 - -GNU 仕様の \fBstrerror_r\fP() 関数は非標準の拡張である。 - -.\" e.g., Solaris 8, HP-UX 11 -.\" e.g., FreeBSD 5.4, Tru64 5.1B -POSIX.1\-2001 は、 \fBstrerror\fP() がエラーに遭遇した場合に \fIerrno\fP をセッ -トすることを認めているが、エラー発生時に関数の結果として どんな値を返す -べきかを規定してない。 あるシステムでは、 エラー番号が未知の場合、 -\fBstrerror\fP() は NULL を返す。 他のシステムでは、 エラー番号が未知の場 -合、 \fBstrerror\fP() は "Error nnn occurred" といった文字列を返し、 -\fIerrno\fP に \fBEINVAL\fP をセットする。 C99 と POSIX.1\-2008 では、返り値が -NULL 以外になることが求められている。 -.SH 関連項目 -\fBerr\fP(3), \fBerrno\fP(3), \fBerror\fP(3), \fBperror\fP(3), \fBstrsignal\fP(3), -\fBlocale\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strfmon.3 b/manual/LDP_man-pages/draft/man3/strfmon.3 deleted file mode 100644 index 87f90082..00000000 --- a/manual/LDP_man-pages/draft/man3/strfmon.3 +++ /dev/null @@ -1,129 +0,0 @@ -.\" Copyright (c) 2000 Andries Brouwer (aeb@cwi.nl) -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001 NAKANO Takeo all rights reserved. -.\" Translated Thu Fri 08 2001 by NAKANO Takeo -.\" -.TH STRFMON 3 2000\-12\-05 Linux "Linux Programmer's Manual" -.SH 名前 -strfmon \- 金額の値を文字列に変換する -.SH 書式 -\fB#include \fP -.sp -\fBssize_t strfmon(char *\fP\fIs\fP\fB, size_t \fP\fImax\fP\fB, const char -*\fP\fIformat\fP\fB,\fP \fB...);\fP -.SH 説明 -\fBstrfmon\fP() 関数は、指定された数量を \fIformat\fP で指定されたフォーマットにしたがって整形し、 結果をサイズ \fImax\fP -の文字配列 \fIs\fP に書きこむ。 -.PP -\fIformat\fP 中の通常の文字は、変換されずにそのまま \fIs\fP にコピーされる。変換指定は \(aq%\(aq 文字で始まる。 -この直後には、以下のフラグを 0 個以上続けることができる。 -.TP -\fB=\fP\fIf\fP -1 バイト文字 \fIf\fP を数値埋め文字 (numeric fill character) にする (左精度と共に用いる。以下を参照)。 -指定されないと、スペース文字が用いられる。 -.TP -\fB^\fP -現在のロケールで定義されているであろうグループ化文字 (grouping character) -を一切使わない。デフォルトではグループ化は有効になっている。 -.TP -\fB(\fP または \fB+\fP -( フラグは、負の数値を括弧で括ることを意味する。 + フラグは符号をデフォルトのように取り扱うことを意味する -(すなわち数値の前にロケールの符号マークが置かれる。 例えば正ならなにもなく、負なら \(aq\-\(aq を置く、など)。 -.TP -\fB!\fP -通貨シンボルを省略する。 -.TP -\fB\-\fP -すべてのフィールドを左詰めにする。デフォルトは右詰め。 -.LP -次の位置には、フィールドの幅を指定できる。 10 進の数値文字列で、フィールドの最小幅をバイト単位で指定する。 デフォルトは 0。 -結果がこの幅よりも狭くなった場合には、 不足分がスペースで埋められる (左詰めフラグが指定されていなければ左側が埋められる)。 -.LP -次の位置には、"#" に 10 進数値文字列を続けた形式で、 左精度 (left precision) を指定できる。 通貨の基数点 (radix) -より左側の数値の桁数がこの指定より小さい場合は、 数値埋め文字で左側が埋められる。 このフィールド幅の指定では、グループ化文字はカウントされない。 -.LP -次の位置には、"." に 10 進数値文字列を続けた形式で、 右精度 (right precision) を指定できる。 -整形される数値は、整形前にこの桁数に丸められる。 デフォルトではカレントロケールの \fIfrac_digits\fP と -\fIint_frac_digits\fP の指定を用いる。 右精度が 0 の場合は、基数点文字 (radix character) は印字されない -(ここでの基数点文字は \fBLC_MONETARY\fP で定義されており、 \fBLC_NUMERIC\fP の指定とは異なっていてもよい)。 -.LP -最後に、変換指定は変換文字 (conversion character) で終了しなければならない。 変換文字には以下の 3 つがある。 -.TP -\fB%\fP -(この場合は指定全体が "%%" でなければならない。) 結果の文字列に \(aq%\(aq 文字を書きこむ。 -.TP -\fBi\fP -\fIdouble\fP 型の引き数ひとつが、 ロケールの国際通貨フォーマット (international currency format) -を用いて変換される。 -.TP -\fBn\fP -\fIdouble\fP 型の引き数ひとつが、 ロケールの国内通貨フォーマット (national currency format) を用いて変換される。 -.SH 返り値 -\fBstrfmon\fP() 関数は、結果の文字列が終端のヌルバイトを含めて配列 \fIs\fP に収まった場合には、 \fIs\fP -に書きこまれた文字数を返す。ヌルバイトは文字数に入らない。 それ以外の場合には、 \fIerrno\fP に \fBE2BIG\fP を設定して \-1 を返す。 -この場合の配列の内容は未定義である。 -.SH 準拠 -POSIX.1\-2001 にはない。 他のいくつかのシステムに存在する。 -.SH 例 -次のような関数コール -.in +4n -.nf - -strfmon(buf, sizeof(buf), "[%^=*#6n] [%=*#6i]", - 1234.567, 1234.567); - -.fi -.in -は、オランダのロケールでは以下のような出力になる。 -.in +4n - -[ fl **1234,57] [ NLG **1 234,57] - -.in -(fl は "florijnen" の意。NLG は Netherlands Guilder。) グループ化文字を用いると非常に醜くなる。 -同時に間違いなく混乱の原因にもなってしまうだろう。 これは数値の半分以下の幅であるべきだが、 数値と同じだけの幅を取ってしまうからである。 -ひどいことに、 "fl" の前後にはスペースが入ってしまい、 また "NLG" の前には 1 つ、後には 2 つのスペースが置かれている。 -これはロケールファイルのバグであろう。 イタリア、オーストラリア、スイス、ポルトガルの 各ロケールでの結果は以下のようになる。 -.in +4n - -[ L. **1235] [ ITL **1.235] -.br -[ $**1234.57] [ AUD **1,234.57] -.br -[Fr. **1234,57] [CHF **1.234,57] -.br -[ **1234$57Esc] [ **1.234$57PTE ] -.in -.SH 関連項目 -\fBsetlocale\fP(3), \fBsprintf\fP(3), \fBlocale\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strfry.3 b/manual/LDP_man-pages/draft/man3/strfry.3 deleted file mode 100644 index 2a84ec0c..00000000 --- a/manual/LDP_man-pages/draft/man3/strfry.3 +++ /dev/null @@ -1,62 +0,0 @@ -.\" 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:39:43 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 Akihiro Motoki all rights reserved. -.\" Translated Mon May 25 1998 by Akihiro Motoki -.\" -.TH STRFRY 3 2010\-09\-20 GNU "Linux Programmer's Manual" -.SH 名前 -strfry \- 文字列をランダムに並べ変える -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBchar *strfry(char *\fP\fIstring\fP\fB);\fP -.fi -.SH 説明 -\fBstrfry\fP() 関数は、文字列 \fIstring\fP の内容をランダムに並び換える。 並び換えは、 \fBrand\fP(3) -関数を用いて、文字列中の各文字を無作為に 交換することで実現される。結果は、文字列 \fIstring\fP のアナグラムである。 -.SH 返り値 -\fBstrfry\fP() 関数は、ランダムに並び換えられた文字列へのポインターを返す。 -.SH 準拠 -\fBstrfry\fP() 関数は GNU C ライブラリに特有である。 -.SH 関連項目 -\fBmemfrob\fP(3), \fBstring\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strftime.3 b/manual/LDP_man-pages/draft/man3/strftime.3 deleted file mode 100644 index 401289d7..00000000 --- a/manual/LDP_man-pages/draft/man3/strftime.3 +++ /dev/null @@ -1,369 +0,0 @@ -.\" 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 -.\" GNU texinfo documentation on glibc date/time functions. -.\" Modified Sat Jul 24 18:03:44 1993 by Rik Faith (faith@cs.unc.edu) -.\" Applied fix by Wolfgang Franke, aeb, 961011 -.\" Corrected return value, aeb, 970307 -.\" Added Single UNIX Spec conversions and %z, aeb/esr, 990329. -.\" 2005-11-22 mtk, added Glibc Notes covering optional 'flag' and -.\" 'width' components of conversion specifications. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2000 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 2000-10-10, HANATAKA Shinya -.\" Updated 2002-01-09, Kentaro Shirakata -.\" Updated 2002-01-14, Akihiro MOTOKI -.\" Updated 2005-02-26, Akihiro MOTOKI -.\" Updated 2005-04-17, Akihiro MOTOKI -.\" Updated 2005-12-05, Akihiro MOTOKI, LDP v2.16 -.\" Updated 2010-04-18, Akihiro MOTOKI, LDP v3.24 -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" Updated 2013-07-31, Akihiro MOTOKI -.\" -.TH STRFTIME 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -strftime \- 日付および時刻の文字列への変換 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t strftime(char *\fP\fIs\fP\fB, size_t \fP\fImax\fP\fB, const char *\fP\fIformat\fP\fB,\fP -\fB const struct tm *\fP\fItm\fP\fB);\fP -.fi -.SH 説明 -.\" FIXME . POSIX says: Local timezone information is used as though -.\" strftime() called tzset(). But this doesn't appear to be the case -\fBstrftime\fP() 関数 は、要素別の時刻 \fItm\fP の内容を \fIformat\fP で指定された書式指定にしたがって変換し、 長さ -\fImax\fP の文字列 \fIs\fP に書き込む。 -.PP -書式指定はヌル終端された文字列であり、 「変換指定 (conversion specification)」と呼ばれる特別な文字列を 含まることができる。 -各々の変換指定は \(aq%\(aq 文字で始まり、 「変換指定文字 (conversion specifier character)」と呼ばれる -何らか他の文字で終端される。上記以外の全ての文字列は 「通常の文字列 (ordinary character sequence)」となる。 -.PP -(NULL バイトも含む) 通常の文字列内の文字は、 そのまま \fIformat\fP から \fIs\fP にコピーされる。 -一方、変換指定の文字は以下のように置換される。 -.TP -\fB%a\fP -現在のロケールにおける曜日の省略名。 -.TP -\fB%A\fP -現在のロケールにおける曜日の完全な名前。 -.TP -\fB%b\fP -現在のロケールにおける月の省略名。 -.TP -\fB%B\fP -現在のロケールにおける月の完全な名前。 -.TP -\fB%c\fP -現在のロケールにおいて一般的な日付・時刻の表記。 -.TP -\fB%C\fP -世紀 (西暦年の上 2 桁)。 (SU) -.TP -\fB%d\fP -月内通算日 (10 進数表記) (01\-31)。 -.TP -\fB%D\fP -\fB%m/%d/%y\fP と等価。(うえっ、アメリカ専用だ。アメリカ以外の国では \fB%d/%m/%y\fP -の方が一般的だ。紛らわしいので、使用すべきではない。) (SU) -.TP -\fB%e\fP -\fB%d\fP と同様に月内通算日を 10 進数で表現するが、 1 桁の場合 10 の位にゼロを置かずスペースを置く。(SU) -.TP -\fB%E\fP -別形式を使用する際の修飾子。下記参照。 (SU) -.TP -\fB%F\fP -\fB%Y\-%m\-%d\fP と等価 (ISO\ 8601 形式の日付フォーマット)。 (C99) -.TP -\fB%G\fP -ISO\ 8601 週単位表記の年 (week\-based year; 「注意」の節を参照)。 世紀も 10 進数で表す。 ISO 週番号 (\fB%V\fP -を参照) に対応した 4 桁の西暦年。 これは基本的には \fB%Y\fP と同じ形式だが、ISO 週数が前年や翌年になる -場合にはその年が使用される点が異なる。(TZ) -.TP -\fB%g\fP -\fB%G\fP と同様。但し、世紀を含まず下 2 桁のみを表示 (00\-99)。 (TZ) -.TP -\fB%h\fP -\fB%b\fP と等価 (SU) -.TP -\fB%H\fP -24 時間表記での時 (hour)。 (00\-23) -.TP -\fB%I\fP -12 時間表記での時 (hour)。 (01\-12) -.TP -\fB%j\fP -年の初めから通算の日数。 (001\-366) -.TP -\fB%k\fP -24 時間表記での時 (0\-23)。 1 桁の場合には前にゼロでなくスペースが置かれる。 (\fB%H\fP も参照) (TZ) -.TP -\fB%l\fP -12 時間表記での時 (0\-12)。 1 桁の場合には前にゼロでなくスペースが置かれる。 (\fB%I\fP も参照) (TZ) -.TP -\fB%m\fP -月 (10 進数表記)。 (01\-12) -.TP -\fB%M\fP -分 (10 進数表記) (00\-59) -.TP -\fB%n\fP -改行。 (SU) -.TP -\fB%O\fP -別形式を使用する際の修飾子。下記参照。 (SU) -.TP -\fB%p\fP -現在のロケールにおける「午前」「午後」に相当する文字列。 英語の場合には "AM" または "PM" となる。 -正午は「午後」、真夜中は「午前」として扱われる。 -.TP -\fB%P\fP -\fB%p\fP と同様であるが小文字が使用される。 英語の場合には "am" や "pm" となる。(GNU) -.TP -\fB%r\fP -午前・午後形式での時刻。 POSIX ロケールでは \fB%I:%M:%S %p\fP と等価である。(SU) -.TP -\fB%R\fP -24 時間表記での時刻、秒は表示しない (\fB%H:%M\fP)。 秒を含んだものは以下の \fB%T\fP を参照すること。(SU) -.TP -\fB%s\fP -紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC)) からの秒数。 (TZ) -.TP -\fB%S\fP -秒 (10 進数表記) (00\-60) (時々ある閏秒に対応するため、値の範囲は 60 までとなっている) -.TP -\fB%t\fP -タブ文字 (SU) -.TP -\fB%T\fP -24 時間表記の時間 (\fB%H:%M:%S\fP) (SU) -.TP -\fB%u\fP -週の何番目の日 (10 進数表記) か。月曜日を 1 とする (1\-7)。 \fB%w\fP も参照。(SU) -.TP -\fB%U\fP -年の初めからの通算の週番号 (10 進数表記) (00\-53)。 その年の最初の日曜日を、第 1 週の始まりとして計算する。 \fB%V\fP と \fB%W\fP -も参照すること。 -.TP -\fB%V\fP -ISO\ 8601 形式での年の始めからの週番号 (「注意」の節を参照)。 10 進数表記で、01 から 53 の値となる。週番号は、 -新しい年が少なくとも 4 日以上含まれる最初の週を 1 として計算する。 \fB%U\fP と \fB%W\fP も参照のこと。(SU) -.TP -\fB%w\fP -週の何番目の日 (10 進数表記) か。日曜日を 0 とする。(0\-6)。 \fB%u\fP も参照。(SU) -.TP -\fB%W\fP -年の初めからの通算の週番号 (10 進数表記) (00\-53)。 その年の最初の月曜日を、第 1 週の始まりとして計算する。 -.TP -\fB%x\fP -現在のロケールで一般的な日付表記。時刻は含まない。 -.TP -\fB%X\fP -現在のロケールで一般的な時刻表記。日付は含まない。 -.TP -\fB%y\fP -西暦の下2桁 (世紀部分を含まない年) (00\-99)。 -.TP -\fB%Y\fP -世紀部分を含めた ( 4 桁の) 西暦年。 -.TP -\fB%z\fP -\fI+hhmm\fP や \fI\-hhmm\fP の形式のタイムゾーン (UTC へのオフセット時間)。(SU) -.TP -\fB%Z\fP -タイムゾーン名または省略名。 -.TP -\fB%+\fP -.\" Nov 05 -- Not in Linux/glibc, but is in some BSDs (according to -.\" their man pages) -\fBdate\fP(1) 形式での日時。(TZ) (glibc2 ではサポートされていない) -.TP -\fB%%\fP -\(aq%\(aq 文字。 -.PP -いくつかの変換指定では、変換指定文字の前に \fBE\fP や \fBO\fP 「修飾子」を置くことによって別書式を使用するように指定することができる。 -現在のロケールにおいて別書式が存在しない場合には、 通常の変換指定が使用されたかのように動作する (SU)。 統一 UNIX 規格 (Single -UNIX Specification) では \fB%Ec\fP, \fB%EC\fP, \fB%Ex\fP, \fB%EX\fP, \fB%Ey\fP, \fB%EY\fP, -\fB%Od\fP, \fB%Oe\fP, \fB%OH\fP, \fB%OI\fP, \fB%Om\fP, \fB%OM\fP, \fB%OS\fP, \fB%Ou\fP, \fB%OU\fP, -\fB%OV\fP, \fB%Ow\fP, \fB%OW\fP, \fB%Oy\fP, について記述がある。ここで \fBO\fP 修飾子は別形式の数値 (ローマ数字とか) -を指定するために使用する。 \fBE\fP 修飾子はロケール依存の別表現を指定するのに使用する。 (訳注: \fBE\fP -修飾子は日本で使用されている「昭和」「平成」 などの元号による年表記を指定する。glibc 2.2 以降でのみ有効) -.PP -要素別の時刻構造体 \fItm\fP の詳細は \fI\fP に定義されている。 \fBctime\fP(3) も参照すること。 -.SH 返り値 -.\" (This behavior applies since at least libc 4.4.4; -.\" very old versions of libc, such as libc 4.4.1, -.\" would return -.\" .I max -.\" if the array was too small.) -終端のヌルバイトを含めた結果の文字列の長さが \fImax\fP バイトを超えなかった場合、 \fBstrftime\fP() 関数は配列 \fIs\fP -に格納されたバイト数を返す (このバイト数に終端のヌルバイトは含まれない)。 終端のヌルバイトを含めた結果の文字列の長さが \fImax\fP -バイトを超える場合には、 \fBstrftime\fP() は 0 を返し、配列の内容は不定となる。 -.LP -返り値 0 は必ずしもエラーを意味している訳ではないので注意すること。 例えば、多くのロケールでは \fB%p\fP は空文字列を返す。 同様に、空の -\fIformat\fP 文字列は空文字列を返す。 -.SH 環境変数 -環境変数 \fBTZ\fP と \fBLC_TIME\fP が使用される。 (訳注: \fBLC_ALL\fP が設定されている場合には \fBLC_TIME\fP -よりもそちらが優先される。 \fBLC_TIME\fP も \fBLC_ALL\fP も設定されていない場合には \fBLANG\fP が使用される。) -.SH 準拠 -SVr4, C89, C99. 個々の変換が厳密にどの規格に含まれるかは、 ANSI C (印なし)、統一 UNIX 規格 (SU印)、Olson の -timezone パッケージ (TZ印)、 glibc 独自 (GNU印) で示している。glibc2 では \fB%+\fP はサポートされていないが、 -いくつかの拡張が行われている。POSIX.1 では ANSI C のみを参照している。 POSIX.2 の \fBdate\fP(1) -のところに記述されている幾つかの拡張は \fBstrftime\fP() にも適用できるだろう。 \fB%F\fP 変換は C99 と POSIX.1\-2001 -にある。 - -SUSv2 では、 \fB%S\fP は 00 から 61 の範囲をとると規定されている。 これは、1分間のうち閏秒が 2つ入る可能性が理論的にはあることを -考慮してのものである (実際には、このような状況はこれまで一度も 起こっていない)。 -.SH 注意 -.SS "ISO\ 8601 の週・曜日表記 (Week Dates)" -\fB%G\fP, \fB%g\fP, \fB%V\fP は、ISO\ 8601 標準により定義された週単位表記の年により 計算される値を出力する。 ISO\ 8601 -標準の週単位表記では、週は月曜日から開始され、 週番号は、年の最初の週が 01 となり、最後の週は 52 か 53 となる。 週 01 は、新しい年が -4 日以上含まれる最初の週である。 言い換えると、週 01 は、その年の木曜日を含む最初の週、 つまり 1 月 4 日を含む週ということである。 -新しい年のカレンダー上の最初の週に新しい年が 3 日以下しか含まれない場合、 ISO\ 8601 の週単位表記では、これらの日を前の年の週 53 -の一部とみなす。 例えば、2010 年 1 月 1 日は金曜日であり、 その週には 2010 年の日が 3 日しか含まれない。 したがって、ISO\ 8601 の週単位表記では、これらの日は 2009 年 (\fB%G\fP) の週 53 (\fB%V\fP) の一部となる。 ISO\ 8601 の 2010 -年の週 01 は 2010 年 1 月 4 日の月曜日から始まる。 -.SS "glibc での注意" -.\" HP-UX and Tru64 also have features like this. -glibc では変換指定にいくつか拡張を行っている (これらの拡張は POSIX.1\-2001 には規定されていないが、 -他のいくつかのシステムで同様の機能が提供されている)。 \(aq%\(aq 文字と変換指定文字の間に、オプションとして \fIflag\fP とフィールドの -\fI幅\fP を指定できる (これらを指定する場合には \fBE\fP や \fBO\fP 修飾子の前に置く)。 - -以下のフラグ文字が使用できる: -.TP -\fB_\fP -(下線) 数値の結果文字列のパディング (穴埋め) をスペース (空白文字) で行う。 -.TP -\fB\-\fP -(ダッシュ) 数値の結果文字列に対するパディングを行わない。 -.TP -\fB0\fP -変換指定文字がデフォルトではスペースでパディングを行う場合でも、 数値の結果文字列へのパディングを 0 で行う。 -.TP -\fB^\fP -結果文字列中のアルファベット文字を大文字に変換する。 -.TP -\fB#\fP -結果文字列の大文字・小文字を入れ替える (このフラグは特定の変換指定文字でしか機能しない。その中でも 本当に有用なのは \fB%Z\fP の場合だけである)。 -.PP -オプションの10進数の幅指定子はフラグの後ろに置くことができる (フラグはなくてもよい)。フィールドの本来の大きさが指定された幅よりも -小さい場合、結果文字列の左側は指定された幅までパディングされる。 -.SH バグ -出力文字列が \fImax\fP バイトを超えてしまう場合、 \fIerrno\fP は設定「されない」。 このため、このエラーを、 \fIformat\fP -文字列がきちんと処理されて長さ 0 の出力文字列が生成される場合を区別することができない。 POSIX.1\-2001 では \fBstrftime\fP() -で \fIerrno\fP に設定する値について一切規定して「いない」。 - -\fBgcc\fP(1) のいくつかのバージョンにはおかしなところがあり、 \fB%c\fP の使用法について以下のような警告を出す: \fIwarning: -`%c' yields only last 2 digits of year in some locales\fP -(\fI警告:\fPいくつかのロケールでは\fI`%c'\fPは年の下2桁しか出力しない\fI)。\fP もちろんプログラマが \fB%c\fP -を使うのはお薦めできることである。 \fB%c\fP を使うと適切な日付と時刻の表記を得ることができるからである。 \fBgcc\fP(1) -のこの問題を回避しようとすると、何かすっきりしない気分になるだろう。 比較的きれいな解決方法は以下のような中間関数を追加することである。 -.in +4n -.nf - -size_t -my_strftime(char *s, size_t max, const char *fmt, - const struct tm *tm) -{ - return strftime(s, max, fmt, tm); -} -.fi -.in - -現在では、 \fBgcc\fP(1) はこの警告を抑えるための \fI\-Wno\-format\-y2k\fP オプションを -提供しており、上記の回避策はもはや必要ない。 -.SH 例 -\fBRFC\ 2822 準拠の日付形式\fP (%a と %b は英語ロケール) -.PP -.in +2n -"%a,\ %d\ %b\ %Y\ %T\ %z" -.PP -\fBRFC\ 822 準拠の日付形式\fP (%a と %b は英語ロケール) -.PP -.in +2n -"%a,\ %d\ %b\ %y\ %T\ %z" -.SS サンプルプログラム -以下のプログラムを使うと \fBstrftime\fP() の実験ができる。 -.PP -以下に、 \fBstrftime\fP() の glibc 実装が生成する結果の例をいくつか示す: -.in +4n -.nf - -$\fB ./a.out \(aq%m\(aq\fP -Result string is "11" -$\fB ./a.out \(aq%5m\(aq\fP -Result string is "00011" -$\fB ./a.out \(aq%_5m\(aq\fP -Result string is " 11" -.fi -.in -.SS プログラムのソース -.nf -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - char outstr[200]; - time_t t; - struct tm *tmp; - - t = time(NULL); - tmp = localtime(&t); - if (tmp == NULL) { - perror("localtime"); - exit(EXIT_FAILURE); - } - - if (strftime(outstr, sizeof(outstr), argv[1], tmp) == 0) { - fprintf(stderr, "strftime returned 0"); - exit(EXIT_FAILURE); - } - - printf("Result string is \e"%s\e"\en", outstr); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/string.3 b/manual/LDP_man-pages/draft/man3/string.3 index 1066c9b5..ea708b02 100644 --- a/manual/LDP_man-pages/draft/man3/string.3 +++ b/manual/LDP_man-pages/draft/man3/string.3 @@ -38,7 +38,7 @@ .\" Translated Mon Jan 20 18:57:06 JST 1997 .\" by YOSHINO Takashi .\" -.TH STRING 3 2014\-01\-04 "" "Linux Programmer's Manual" +.TH STRING 3 2019\-03\-06 "" "Linux Programmer's Manual" .SH 名前 stpcpy, strcasecmp, strcat, strchr, strcmp, strcoll, strcpy, strcspn, strdup, strfry, strlen, strncat, strncmp, strncpy, strncasecmp, strpbrk, @@ -50,7 +50,7 @@ strrchr, strsep, strspn, strstr, strtok, strxfrm, index, rindex \- 文字列を 文字列 \fIs1\fP と \fIs2\fP を大文字小文字の違いを無視して比較する。 .TP \fBint strncasecmp(const char *\fP\fIs1\fP\fB, const char *\fP\fIs2\fP\fB, size_t \fP\fIn\fP\fB);\fP -文字列 \fIs1\fP と \fIs2\fP の最初の \fIn\fP 文字を、大文字小文字の違いを無視して比較する。 +Compare the first \fIn\fP bytes of the strings \fIs1\fP and \fIs2\fP ignoring case. .TP \fBchar *index(const char *\fP\fIs\fP\fB, int \fP\fIc\fP\fB);\fP 文字列 \fIs\fP 中に最初に文字 \fIc\fP が 現れた位置へのポインターを返す。 @@ -91,7 +91,8 @@ strrchr, strsep, strspn, strstr, strtok, strxfrm, index, rindex \- 文字列を 文字列 \fIs\fP の長さを返す。 .TP \fBchar *strncat(char *\fP\fIdest\fP\fB, const char *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -文字列 \fIsrc\fP の最大 \fIn\fP 文字を文字列 \fIdest\fP に追加し、\fIdest\fP へのポインターを返す。 +Append at most \fIn\fP bytes from the string \fIsrc\fP to the string \fIdest\fP, +returning a pointer to \fIdest\fP. .TP \fBint strncmp(const char *\fP\fIs1\fP\fB, const char *\fP\fIs2\fP\fB, size_t \fP\fIn\fP\fB);\fP 文字列 \fIs1\fP と \fIs2\fP を最大 \fIn\fP バイトまで比較する。 @@ -118,9 +119,11 @@ strrchr, strsep, strspn, strstr, strtok, strxfrm, index, rindex \- 文字列を 文字列 \fIs\fP から、\fIdelim\fP のいずれかのバイトで区切ったトークンを取り出す。 .TP \fBsize_t strxfrm(char *\fP\fIdest\fP\fB, const char *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -\fIsrc\fP を現在のロケールに変換し、最初の \fIn\fP 文字を \fIdest\fP にコピーする。 +Transforms \fIsrc\fP to the current locale and copies the first \fIn\fP bytes to +\fIdest\fP. .SH 説明 -文字列関数は、ヌル終端された文字列に 対して、文字列操作を実行する。 それぞれの関数の説明については個々のmanページを見よ。 +The string functions perform operations on null\-terminated strings. See the +individual man pages for descriptions of each function. .SH 関連項目 \fBindex\fP(3), \fBrindex\fP(3), \fBstpcpy\fP(3), \fBstrcasecmp\fP(3), \fBstrcat\fP(3), \fBstrchr\fP(3), \fBstrcmp\fP(3), \fBstrcoll\fP(3), \fBstrcpy\fP(3), \fBstrcspn\fP(3), @@ -128,6 +131,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strlen.3 b/manual/LDP_man-pages/draft/man3/strlen.3 deleted file mode 100644 index 1b28517d..00000000 --- a/manual/LDP_man-pages/draft/man3/strlen.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" 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:02:26 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Mon Jan 20 18:51:38 JST 1997 -.\" by YOSHINO Takashi -.\" -.TH STRLEN 3 2014\-02\-25 GNU "Linux Programmer's Manual" -.SH 名前 -strlen \- 文字列の長さを計算する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t strlen(const char *\fP\fIs\fP\fB);\fP -.fi -.SH 説明 -\fBstrlen\fP() 関数は文字列 \fIs\fP の長さを計算する。 このとき、終端ヌルバイト (\(aq\e0\(aq) は計算に含まれない。 -.SH 返り値 -\fBstrlen\fP() 関数は文字列 \fIs\fP のバイト数を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBstrlen\fP() 関数はスレッドセーフである。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strnlen.3 b/manual/LDP_man-pages/draft/man3/strnlen.3 deleted file mode 100644 index 8d80fc38..00000000 --- a/manual/LDP_man-pages/draft/man3/strnlen.3 +++ /dev/null @@ -1,70 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:55:48 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH STRNLEN 3 2014\-02\-25 GNU "Linux Programmer's Manual" -.SH 名前 -strnlen \- 固定長の文字列の長さを調べる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t strnlen(const char *\fP\fIs\fP\fB, size_t \fP\fImaxlen\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBstrnlen\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.ad -.PD -.SH 説明 -\fBstrnlen\fP() 関数は \fIs\fP が指す文字列の長さをバイト数で返す。 長さには -終端のヌルバイト (\(aq\e0\(aq) は含まない。 また長さは最大で -\fImaxlen\fP までであり、 \fBstrnlen\fP() は \fIs\fP の最初の \fImaxlen\fP バイト -のみを検査し \fIs+maxlen\fP より先を検査することはない。 -.SH 返り値 -\fBstrnlen\fP() 関数は \fImaxlen\fP 以下ならば \fIstrlen(s)\fP と同じ値を返す。 -\fIs\fP の指す文字列が最大 \fImaxlen\fP バイトまでにヌルバイト -(\(aq\e0\(aq) 文字を含まない場合には \fImaxlen\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBstrnlen\fP() 関数はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2008. -.SH 関連項目 -\fBstrlen\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strpbrk.3 b/manual/LDP_man-pages/draft/man3/strpbrk.3 deleted file mode 100644 index d32f8473..00000000 --- a/manual/LDP_man-pages/draft/man3/strpbrk.3 +++ /dev/null @@ -1,69 +0,0 @@ -.\" 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:01:24 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Wed May 27 22:13:35 JST 1998 -.\" by Ito Hiromi (hiromi@marimo.or.jp) -.\" Updated Sat Dec 11 00:44:56 JST 1999 -.\" by Kentaro Shirakata -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" -.TH STRPBRK 3 2014\-02\-25 "" "Linux Programmer's Manual" -.SH 名前 -strpbrk \- 文字列からバイト集合に含まれるバイトを探す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *strpbrk(const char *\fP\fIs\fP\fB, const char *\fP\fIaccept\fP\fB);\fP -.fi -.SH 説明 -\fBstrpbrk\fP() 関数は、文字列 \fIaccept\fP に含まれるバイトのいずれかが、 -文字列 \fIs\fP 内で最初に現れる位置を特定する。 -.SH 返り値 -\fBstrpbrk\fP() 関数は、\fIs\fP 内のバイトで、\fIaccept\fP に含まれる -バイトのいずれかに一致したバイトへのポインターを返す。 -\fIaccept\fP に含まれるバイトが見つからなかった場合は NULL を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBstrpbrk\fP() 関数はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, C89, C99. -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strptime.3 b/manual/LDP_man-pages/draft/man3/strptime.3 index e3114f61..4b0a5586 100644 --- a/manual/LDP_man-pages/draft/man3/strptime.3 +++ b/manual/LDP_man-pages/draft/man3/strptime.3 @@ -46,24 +46,24 @@ .\" Updated Sat Jan 5 22:17:34 JST 2002 by Yuichi SATO .\" Updated Wed Jan 14 23:21:57 JST 2002 by Akihiro MOTOKI .\" -.TH STRPTIME 3 2014\-08\-19 GNU "Linux Programmer's Manual" +.TH STRPTIME 3 2020\-11\-01 GNU "Linux Programmer's Manual" .SH 名前 strptime \- 文字列であらわされている時間を tm 構造体の時間に変換する .SH 書式 \fB#define _XOPEN_SOURCE\fP /* feature_test_macros(7) 参照 */ .br \fB#include \fP -.sp +.PP \fBchar *strptime(const char *\fP\fIs\fP\fB, const char *\fP\fIformat\fP\fB,\fP \fBstruct tm *\fP\fItm\fP\fB);\fP .SH 説明 \fBstrptime\fP() 関数は \fBstrftime\fP(3) の逆関数である。 ポインター \fIs\fP が指す文字列を \fIformat\fP で指定されたフォーマットを使って「要素別の時刻」に変換し、\fItm\fP が指す構造体に格納する。 - +.PP 要素別の時刻構造体 \fItm\fP は \fI\fP 内で以下の様に定義されている。 -.sp +.PP .in +4n -.nf +.EX struct tm { int tm_sec; /* 秒 (0\-60) */ int tm_min; /* 分 (0\-59) */ @@ -75,11 +75,11 @@ struct tm { int tm_yday; /* 年内通算日 (0\-365, 1 月 1 日 = 0) */ int tm_isdst; /* 夏時間 */ }; -.fi +.EE .in - +.PP \fItm\fP 構造体の詳細は \fBctime\fP(3) を参照。 - +.PP \fIformat\fP 引き数は、 \fBscanf\fP(3) で使われているような、 フィールドディスクリプターとテキスト文字で構成されている文字列である。 個々のフィールドディスクリプターは \fB%\fP とそれに続く文字からなり、 後者にフィールドディスクリプターを置き換える内容を指定する。 \fIformat\fP 文字列中の他の全ての文字には、入力文字列にマッチする文字がなければならない。 フォーマット文字列中にある空白は例外であり、 @@ -104,29 +104,29 @@ struct tm { 現在のロケールでの日付と時刻の表現。 .TP \fB%C\fP -1 世紀中の年 (0\-99)。 +The century number (0\(en99). .TP \fB%d\fP または \fB%e\fP -月内の日付 (1\-31)。 +The day of month (1\(en31). .TP \fB%D\fP 日付。 \fB%m/%d/%y\fP と同じ。 (これはアメリカ式の日付形式で、 ヨーロッパでは特に \fB%d/%m/%y\fP という形式が広く使われているために、 アメリカ人以外には紛らわしく感じられる。 ISO 8601 規格では \fB%Y\-%m\-%d\fP という形式である。) .TP \fB%H\fP -時間 (0\-23)。 +The hour (0\(en23). .TP \fB%I\fP -12 時間制での時間 (1\-12)。 +The hour on a 12\-hour clock (1\(en12). .TP \fB%j\fP -年の初めからの通算の日付 (1\-366)。 +The day number in the year (1\(en366). .TP \fB%m\fP -数字表現の月 (1\-12)。 +The month number (1\(en12). .TP \fB%M\fP -分 (0\-59)。 +The minute (0\(en59). .TP \fB%n\fP 任意の空白。 @@ -142,7 +142,8 @@ struct tm { \fB%H:%M\fP と同じ。 .TP \fB%S\fP -秒 (0\-60; 60 は閏秒を示す。以前は 61 も指定できた)。 +The second (0\(en60; 60 may occur for leap seconds; earlier also 61 was +allowed). .TP \fB%t\fP 任意の空白。 @@ -151,13 +152,15 @@ struct tm { \fB%H:%M:%S\fP と同じ。 .TP \fB%U\fP -日曜日を週の始まりとした年通算での週数 (0\-53)。 1 月の最初の日曜日を第 1 週目の最初の日する。 +The week number with Sunday the first day of the week (0\(en53). The first +Sunday of January is the first day of week 1. .TP \fB%w\fP -曜日を表す数字 (0\-6)、日曜日 が 0。 +The ordinal number of the day of the week (0\(en6), with Sunday = 0. .TP \fB%W\fP -月曜日を週の始まりとした年通算での週数 (0\-53)。 1 月の最初の月曜日を第 1 週目の最初の日する。 +The week number with Monday the first day of the week (0\(en53). The first +Monday of January is the first day of week 1. .TP \fB%x\fP 日付。ロケールの日付フォーマットを使う。 @@ -166,15 +169,17 @@ struct tm { 時刻。ロケールの時刻フォーマットを使う。 .TP \fB%y\fP -1 世紀中の年 (0\-99)。 世紀が指定されない場合、 値が 69\-99 の範囲のときは 20 世紀の年 (1969\-1999)、 値が 00\-68 -の範囲のときは 21 世紀の年 (2000\-2068) とする。 +The year within century (0\(en99). When a century is not otherwise +specified, values in the range 69\(en99 refer to years in the twentieth +century (1969\(en1999); values in the range 00\(en68 refer to years in the +twenty\-first century (2000\(en2068). .TP \fB%Y\fP 年。世紀の部分を含む (例: 1991)。 -.LP +.PP E や O という修飾子を使うことで変更できるフィールドディスクリプターもある。 これらの修飾子は、別のフォーマットや仕様を使うことを指示する。 別のフォーマットや仕様が現在のロケールに存在しないときは、 変更していないフィールドディスクリプターが使われる。 -.LP +.PP E 修飾子は、ロケールに依存した日付と時刻の別の表現形式が 入力文字列に含まれていることを指定する。 .TP \fB%Ec\fP @@ -194,7 +199,7 @@ E 修飾子は、ロケールに依存した日付と時刻の別の表現形式 .TP \fB%EY\fP 完全な形式の年。別の表現型式を使う。 -.LP +.PP O 修飾子は、ロケールに依存した別のフォーマットの中に 数値の入力があることを指定する。 .TP \fB%Od\fP または \fB%Oe\fP @@ -231,10 +236,20 @@ O 修飾子は、ロケールに依存した別のフォーマットの中に この関数の返り値は、関数の中で処理されなかった最初の文字へのポインターである。 フォーマット文字列が必要する以上の文字が入力文字列に含まれている場合、 返り値は最後に処理された入力文字の次の文字を指す。 すべての入力文字列が処理された場合、 返り値は文字列末尾のヌルバイトを指す。 \fBstrptime\fP() がフォーマット文字列のすべての比較に失敗し、 エラーが起こった場合、関数はヌルポインターを返す。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBstrptime\fP() +T} Thread safety MT\-Safe env locale +.TE .SH 準拠 -SUSv2, POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008, SUSv2. .SH 注意 -.LP .\" .PP .\" This function is available since libc 4.6.8. .\" Linux libc4 and libc5 includes define the prototype unconditionally; @@ -256,8 +271,9 @@ SUSv2, POSIX.1\-2001. .\" It is taken to be a year .\" In libc4 and libc5 the code for %I is broken (fixed in glibc; .\" %OI was fixed in glibc 2.2.4). -\(aqy\(aq (1 世紀中の年) の指定は、 glibc 2.0 では、 1950\-2049 の範囲として解釈される。 glibc 2.1 からは -1969\-2068 の範囲として解釈される。 +The \(aqy\(aq (year in century) specification is taken to specify a year in +the range 1950\(en2049 by glibc 2.0. It is taken to be a year in +1969\(en2068 since glibc 2.1. .SS "glibc での注意" 一貫性を持たせるため、glibc では \fBstrptime\fP() に \fBstrftime\fP(3) と同じフォーマット文字をサポートさせようとしている。多くの場合、対応するフィールドが解釈されるが、 \fItm\fP @@ -267,37 +283,39 @@ SUSv2, POSIX.1\-2001. \fB%Y\-%m\-%d\fP と同じ。ISO 8601 の日付形式。 .TP \fB%g\fP -ISO 週数に対応した西暦年。世紀は含まず (0\-99) の範囲。 +The year corresponding to the ISO week number, but without the century +(0\(en99). .TP \fB%G\fP ISO 週数に対応した西暦年 (例えば 1991)。 .TP \fB%u\fP -10 進数表記の曜日 (1\-7 で月曜日を 1 とする)。 +The day of the week as a decimal number (1\(en7, where Monday = 1). .TP \fB%V\fP -ISO 8601:1988 形式での年通算の 10 進数表記での週数 (1\-53)。 1 月 1 日を含む (月曜日から始まる) 週に 4 -日以上が含まれている場合は、 その週を第 1 週とする。 3 日以下しか含まれていない場合は、1 月 1 日を含む週を前年の最終の週として、 次の週を第 -1 週とする。 +The ISO 8601:1988 week number as a decimal number (1\(en53). If the week +(starting on Monday) containing 1 January has four or more days in the new +year, then it is considered week 1. Otherwise, it is the last week of the +previous year, and the next week is week 1. .TP \fB%z\fP RFC\-822/ISO 8601 標準タイムゾーンを指定する。 .TP \fB%Z\fP タイムゾーン名。 -.LP +.PP 同様に、 \fBstrftime\fP(3) の GNU 版での拡張に対応するために、 \fB%k\fP は \fB%H、\fP \fB%P\fP は \fB%p\fP と等価に扱われる。また、 \fB%l\fP は \fB%I\fP と等価に扱われるようになるはずである。 さらに以下も定義されている。 .TP \fB%s\fP 紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC)) からの通算の秒数。 閏秒がサポートされていない限り、閏秒はカウントしない。 -.LP +.PP glibc における実装では、2 つのフィールド間の空白は必要ない。 -.SH 例 +.SH EXAMPLES 以下の例は \fBstrptime\fP() と \fBstrftime\fP(3) の使用法を示している。 -.sp -.nf +.PP +.EX #define _XOPEN_SOURCE #include #include @@ -310,16 +328,15 @@ main(void) struct tm tm; char buf[255]; - memset(&tm, 0, sizeof(struct tm)); + memset(&tm, 0, sizeof(tm)); strptime("2001\-11\-12 18:31:01", "%Y\-%m\-%d %H:%M:%S", &tm); strftime(buf, sizeof(buf), "%d %b %Y %H:%M", &tm); puts(buf); exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \fBtime\fP(2), \fBgetdate\fP(3), \fBscanf\fP(3), \fBsetlocale\fP(3), \fBstrftime\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strsep.3 b/manual/LDP_man-pages/draft/man3/strsep.3 deleted file mode 100644 index bfc1afd0..00000000 --- a/manual/LDP_man-pages/draft/man3/strsep.3 +++ /dev/null @@ -1,90 +0,0 @@ -.\" 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:00:10 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Mon Jan 20 12:04:18 1997 by Andries Brouwer (aeb@cwi.nl) -.\" Modified Tue Jan 23 20:23:07 2001 by Andries Brouwer (aeb@cwi.nl) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Tue Dec 16 10:06:16 JST 1997 -.\" by HIROFUMI Nishizuka -.\" Updated Tue Apr 10 11:19:58 JST 2001 by Kentaro Shirakata -.\" Updated 2009-02-12 by Kentaro Shirakata -.\" -.TH STRSEP 3 2014\-02\-25 GNU "Linux Programmer's Manual" -.SH 名前 -strsep \- 文字列からトークンを取り出す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *strsep(char **\fP\fIstringp\fP\fB, const char *\fP\fIdelim\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBstrsep\fP(): _BSD_SOURCE -.SH 説明 -\fI*stringp\fP が NULL の場合、 \fBstrsep\fP() 関数は何もせずに NULL を返す。 さもなければ、文字列 -\fIstringp\fP を \fIdelim\fP に含まれるいずれかのバイトで区切ったトークンのうち最初のものを返す。 トークンは、区切り文字をヌルバイト -(\(aq\e0\(aq) で上書きすることで 終端される。 \fI*stringp\fP は切り出されたトークンの次の位置を示すように更新される。 -区切り文字が見つからない場合、\fI*stringp\fP 文字列全体がトークンとして 扱われ、\fI*stringp\fP は NULL となる。 -.SH 返り値 -\fBstrsep\fP() 関数は、トークンへのポインターを返す。 つまり、元の \fI*stringp\fP の値を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBstrsep\fP() 関数はスレッドセーフである。 -.SH 準拠 -4.4BSD. -.SH 注意 -\fBstrsep\fP() 関数は、 \fBstrtok\fP(3) 関数が空のフィールドを 扱えないために、その代替品として導入された。 しかしながら、 -\fBstrtok\fP(3) 関数は C89/C99 に準拠しており、より移植性がある。 -.SH バグ -この関数を使う時は注意すること。 もし使うなら、以下のことに注意すること。 -.IP * 2 -この関数は最初の引数を変更する。 -.IP * -この関数は定数文字列には使えない。 -.IP * -区切り文字自体は失われてしまう。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strsignal.3 b/manual/LDP_man-pages/draft/man3/strsignal.3 deleted file mode 100644 index 0db4ba8d..00000000 --- a/manual/LDP_man-pages/draft/man3/strsignal.3 +++ /dev/null @@ -1,88 +0,0 @@ -.\" 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 17:59:03 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Fri Dec 26 13:13:20 JST 1997 -.\" by HIROFUMI Nishizuka -.\" Modified Thu Dec 8 05:09:52 JST 1999 -.\" by Kentaro Shirakata -.\" -.TH STRSIGNAL 3 2010\-09\-15 GNU "Linux Programmer's Manual" -.SH 名前 -strsignal \- シグナルを説明する文字列を返す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *strsignal(int \fP\fIsig\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 -\fBstrsignal\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.ad -.PD -.SH 説明 -\fBstrsignal\fP() 関数は、引数 \fIsig\fP で渡されたシグナル番号を 説明する文字列を返す。 文字列は、次の -\fBstrsignal\fP() が呼ばれるまでの間だけ使用できる。 -.PP -配列 \fIsys_siglist\fP はシグナルを説明する文字列を保持しており、 配列へのアクセスにはシグナル番号を添え字として用いる事ができる。 -出来るだけこの配列の代わりに \fBstrsignal\fP() 関数を 使うべきである。 -.SH 返り値 -\fBstrsignal\fP() 関数は、シグナルの適切な説明を返す。 もしシグナル番号が不正な場合は、未知のシグナル (unknown signal) -を示す メッセージを返す。 (Linux はそうではないが)不正なシグナル番号に対して、 NULL を返すシステムもある。 -.SH 準拠 -POSIX.1\-2008. Solaris と BSD 系にも存在する。 -.SH 関連項目 -\fBpsignal\fP(3), \fBstrerror\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strspn.3 b/manual/LDP_man-pages/draft/man3/strspn.3 deleted file mode 100644 index 994a2353..00000000 --- a/manual/LDP_man-pages/draft/man3/strspn.3 +++ /dev/null @@ -1,79 +0,0 @@ -.\" 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 17:57:50 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Tue Dec 16 10:04:31 JST 1997 -.\" by HIROFUMI Nishizuka -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" -.TH STRSPN 3 2014\-02\-28 "" "Linux Programmer's Manual" -.SH 名前 -strspn, strcspn \- プレフィックス部分文字列の長さを返す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t strspn(const char *\fP\fIs\fP\fB, const char *\fP\fIaccept\fP\fB);\fP -.sp -\fBsize_t strcspn(const char *\fP\fIs\fP\fB, const char *\fP\fIreject\fP\fB);\fP -.fi -.SH 説明 -\fBstrspn\fP() 関数は、 \fIs\fP から、\fIaccept\fP に含まれる文字だけで -構成される最初の部分文字列を探し、 -その部分の (バイト単位の) 長さを計算する。 -.PP -\fBstrcspn\fP() 関数は、 \fIs\fP から、\fIreject\fP に含まれない文字だけで -構成される最初の部分文字列を探し、 -その部分の (バイト単位の) 長さを計算する。 -.SH 返り値 -\fBstrspn\fP() 関数は、 \fIs\fP 内の、\fIaccept\fP からの文字だけで -構成される最初の部分文字列のバイト数を返す。 -.PP -\fBstrcspn\fP() 関数は、\fIs\fP 内の、文字列 \fIreject\fP に含まれない -文字だけで構成される最初の部分文字列のバイト数を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBstrspn\fP() と \fBstrcspn\fP() はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, C89, C99. -.SH 関連項目 -\fBindex\fP(3), \fBmemchr\fP(3), \fBrindex\fP(3), \fBstrchr\fP(3), \fBstring\fP(3), -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strstr.3 b/manual/LDP_man-pages/draft/man3/strstr.3 deleted file mode 100644 index 00a57c79..00000000 --- a/manual/LDP_man-pages/draft/man3/strstr.3 +++ /dev/null @@ -1,95 +0,0 @@ -.\" 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 17:56:43 1993 by Rik Faith (faith@cs.unc.edu) -.\" Added history, aeb, 980113. -.\" 2005-05-05 mtk: added strcasestr() -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Tue Dec 16 10:06:54 JST 1997 -.\" by HIROFUMI Nishizuka -.\" Updated Sun Sep 5 JST 1999 by by Kentaro Shirakata -.\" Updated Wed Apr 20 JST 2005 by by Kentaro Shirakata -.\" -.TH STRSTR 3 2015\-01\-10 GNU "Linux Programmer's Manual" -.SH 名前 -strstr, strcasestr \- 部分文字列の位置を示す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *strstr(const char *\fP\fIhaystack\fP\fB, const char *\fP\fIneedle\fP\fB);\fP -.sp -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -.sp -\fB#include \fP -.sp -\fBchar *strcasestr(const char *\fP\fIhaystack\fP\fB, const char *\fP\fIneedle\fP\fB);\fP -.fi -.SH 説明 -\fBstrstr\fP() 関数は、部分文字列 \fIneedle\fP が文字列 \fIhaystack\fP 中 で最初に現れる位置を見つける。 -文字列を終端ヌルバイト (\(aq\e0\(aq) は比較されない。 - -\fBstrcasestr\fP() 関数は \fBstrstr\fP() 関数と同様だが、 両方の引数に対して大文字小文字を無視する。 -.SH 返り値 -これらの関数は、見つかった部分文字列の開始を指すポインターを返し、 もし部分文字列が見つからない場合は NULL を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBstrstr\fP() 関数はスレッドセーフである。 -.LP -\fBstrcasestr\fP() 関数は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -.\" .SH BUGS -.\" Early versions of Linux libc (like 4.5.26) would not allow -.\" an empty -.\" .I needle -.\" argument for -.\" .BR strstr (). -.\" Later versions (like 4.6.27) work correctly, -.\" and return -.\" .IR haystack -.\" when -.\" .I needle -.\" is empty. -\fBstrstr\fP() 関数は C89 と C99 に準拠している。 \fBstrcasestr\fP() 関数は非標準拡張である。 -.SH 関連項目 -\fBindex\fP(3), \fBmemchr\fP(3), \fBmemmem\fP(3), \fBrindex\fP(3), \fBstrcasecmp\fP(3), -\fBstrchr\fP(3), \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strtod.3 b/manual/LDP_man-pages/draft/man3/strtod.3 deleted file mode 100644 index 6caf7f36..00000000 --- a/manual/LDP_man-pages/draft/man3/strtod.3 +++ /dev/null @@ -1,149 +0,0 @@ -.\" 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 -.\" -.\" @(#)strtod.3 5.3 (Berkeley) 6/29/91 -.\" -.\" Modified Sun Aug 21 17:16:22 1994 by Rik Faith (faith@cs.unc.edu) -.\" Modified Sat May 04 19:34:31 MET DST 1996 by Michael Haardt -.\" (michael@cantor.informatik.rwth-aachen.de) -.\" Added strof, strtold, aeb, 2001-06-07 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998-1999 -.\" Michihide Hotta and NAKANO Takeo all rights reserved. -.\" Translated Fri Jun 26 1998 by Yasushi Shoji -.\" Updated & Modified Sun Mar 14 1999 by NAKANO Takeo -.\" Updated & Modified Sun Jul 1 16:59:53 JST 2001 -.\" by Yuichi SATO -.\" Updated & Modified 2006-07-20, -.\" Akihiro MOTOKI , LDP v2.36 -.\" -.TH STRTOD 3 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -strtod, strtof, strtold \- ASCII 文字列を浮動小数点実数に変換する -.SH 書式 -\fB#include \fP -.sp -\fBdouble strtod(const char *\fP\fInptr\fP\fB, char **\fP\fIendptr\fP\fB);\fP -.br -\fBfloat strtof(const char *\fP\fInptr\fP\fB, char **\fP\fIendptr\fP\fB);\fP -.br -\fBlong double strtold(const char *\fP\fInptr\fP\fB, char **\fP\fIendptr\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.ad l -.sp -\fBstrtof\fP(), \fBstrtold\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -または \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBstrtod\fP(), \fBstrtof\fP(), \fBstrtold\fP() 関数は、 \fInptr\fP が指し示す文字列のはじめの部分を -\fIdouble\fP, \fIfloat\fP, \fIlong double\fP 型の値にそれぞれ変換する。 - -入力する文字列 (の先頭部分) は以下の形式が期待されている。 先頭にホワイトスペース、 次にプラス (\(aq+\(aq) またはマイナス -(\(aq\-\(aq) の記号、 その後に (i) 10 進数、(ii) 16 進数、(iii) 無限、 (iv) NAN -(計算できない数、not\-a\-number) のいずれかがある (ホワイトスペース、符号は省略可能。 ホワイトスペースは \fBisspace\fP(3) -で識別される)。 -.LP -\fI10 進数\fP は 1 文字以上の 10 進の数字の列からなり、 基を表す文字 (radix charater) -(小数点。ロケールに依存するが、通常は \(aq.\(aq) が含まれることもある。 この後に 10 進の指数部が続いても良い。 10 進の指数部は -\(aqE\(aq または \(aqe\(aq と、その後に置かれる正負記号 (省略可)、 およびその後に続く 1 文字以上の 10 -進の数字の列からなり、 10 の何乗であるかを表す。 -.LP -\fI16 進数\fP は、"0x" または "0X" とその後に続く 1 文字以上の 16 進の数字の列からなり、 基を表す文字が含まれることもある。 -この後に 2 進の指数部が続いても良い。 2 進の指数部は \(aqP\(aq または \(aqp\(aq と、その後に置かれる正負記号 (省略可)、 -およびその後に続く 1 文字以上の 10 進の数字の列から構成され、 2 の何乗であるかを表す。 基を表す文字と 2 -進の指数部は、どちらか一方しか存在してはならない。 -.LP -\fI無限\fP は "INF" または "INFINITY" で表され、大文字小文字は区別されない。 -.LP -\fINAN\fP は "NAN" (大文字小文字は区別されない) で表され、 その後に文字列 \fI(n\-char\-sequence)\fP が続く場合もある。 -\fI(n\-char\-sequence)\fP は実装に依存する NAN の型を指定する。 -.SH 返り値 -これらの関数は、変換された値があれば、それを返す。 - -\fIendptr\fP が NULL でないときは、変換に使われた最終文字の次の文字へのポインターが \fIendptr\fP で参照される場所へ保存される。 - -変換が行われなかったときには 0 が返る。そして \fIendptr\fP が参照している場所に \fInptr\fP の値 (変換対象である文字列の開始アドレス) -が保存される。 - -正しい形式の数値文字列であるが、変換結果がオーバーフローを起こした場合 には、プラスまたはマイナスの \fBHUGE_VAL\fP -(\fBHUGE_VALF\fP, \fBHUGE_VALL\fP) が返り (値の符号による)、 \fBERANGE\fP が \fIerrno\fP -に代入される。変換結果がアンダーフローを起こした場合には 0 が返り、 \fBERANGE\fP が \fIerrno\fP に代入される。 -.SH エラー -.TP -\fBERANGE\fP -オーバーフローまたはアンダーフローが起こった。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBstrtod\fP(), \fBstrtof\fP(), \fBstrtold\fP() は、例外付きのスレッドセーフである。実行中に -\fBsetlocale\fP(3) を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -C89 では \fBstrtod\fP() が、C99 では残りの 2 つの関数が記述されている。 -.SH 注意 -成功、失敗どちらの場合でも 0 を返す可能性があるので、 プログラムは呼び出す前に \fIerrno\fP を 0 に設定し、呼び出し後に \fIerrno\fP -が 0 以外の値かどうかを確認しエラーが発生したかどうかを判断する 必要がある。 - -.\" From glibc 2.8's stdlib/strtod_l.c: -.\" We expect it to be a number which is put in the -.\" mantissa of the number. -.\" It looks as though at least FreeBSD (according to the manual) does -.\" something similar. -.\" C11 says: "An implementation may use the n-char sequence to determine -.\" extra information to be represented in the NaN's significant." -glibc の実装では、"NAN" の後ろに置くことができる \fIn\-char\-sequence\fP は、整数値として解釈される (基数の 8 や 16 -を示す '0' や '0x' を接頭辞として付けることができる)。 この整数値は返り値の仮数部として使われる。 -.SH 例 -\fBstrtol\fP(3) のマニュアルページの例を参照。 このページで説明した関数の使用方法も同様である。 -.SH 関連項目 -\fBatof\fP(3), \fBatoi\fP(3), \fBatol\fP(3), \fBnan\fP(3), \fBnanf\fP(3), \fBnanl\fP(3), -\fBstrtol\fP(3), \fBstrtoul\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strtoimax.3 b/manual/LDP_man-pages/draft/man3/strtoimax.3 deleted file mode 100644 index cc43b968..00000000 --- a/manual/LDP_man-pages/draft/man3/strtoimax.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl) -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Sun Sep 5 21:02:09 JST 2004 -.\" by Yuichi SATO -.\" -.TH STRTOIMAX 3 2014\-01\-22 "" "Linux Programmer's Manual" -.SH 名前 -strtoimax, strtoumax \- 文字列を整数に変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBintmax_t strtoimax(const char *\fP\fInptr\fP\fB, char **\fP\fIendptr\fP\fB, int \fP\fIbase\fP\fB);\fP -.br -\fBuintmax_t strtoumax(const char *\fP\fInptr\fP\fB, char **\fP\fIendptr\fP\fB, int \fP\fIbase\fP\fB);\fP -.fi -.SH 説明 -これらの関数はちょうど \fBstrtol\fP(3) と \fBstrtoul\fP(3) に似ているが、それぞれ \fIintmax_t\fP と -\fIuintmax_t\fP 型の値を返す。 -.SH 返り値 -成功した場合、変換された値が返される。 変換するものが見つからなかった場合、0 が返される。 オーバーフローまたはアンダーフローの場合、 -\fBINTMAX_MAX\fP または \fBINTMAX_MIN\fP または \fBUINTMAX_MAX\fP が返され、 \fIerrno\fP が -\fBERANGE\fP に設定される。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBstrtoimax\fP() と \fBstrtoumax\fP() は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strtok.3 b/manual/LDP_man-pages/draft/man3/strtok.3 deleted file mode 100644 index 9abdadca..00000000 --- a/manual/LDP_man-pages/draft/man3/strtok.3 +++ /dev/null @@ -1,199 +0,0 @@ -.\" Copyright (C) 2005, 2013 Michael Kerrisk (mtk.manpages@gmail.com) -.\" a few fragments from an earlier (1996) version by -.\" Andries Brouwer (aeb@cwi.nl) remain. -.\" -.\" %%%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 -.\" -.\" Rewritten old page, 960210, aeb@cwi.nl -.\" Updated, added strtok_r. 2000-02-13 Nicolás Lichtmaier -.\" 2005-11-17, mtk: Substantial parts rewritten -.\" 2013-05-19, mtk: added much further detail on the operation of strtok() -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 Ishii Tatsuo all rights reserved. -.\" Translated 1998-03-27, Ishii Tatsuo -.\" Updated 2000-04-05, Kentaro Shirakata -.\" Updated 2000-09-21, Kentaro Shirakata -.\" Updated 2002-03-28, Kentaro Shirakata -.\" Updated 2005-11-19, Akihiro MOTOKI -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" Updated 2013-07-31, Akihiro MOTOKI -.\" -.TH STRTOK 3 2013\-05\-19 GNU "Linux Programmer's Manual" -.SH 名前 -strtok, strtok_r \- 文字列からトークンを取り出す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *strtok(char *\fP\fIstr\fP\fB, const char *\fP\fIdelim\fP\fB);\fP -.sp -\fBchar *strtok_r(char *\fP\fIstr\fP\fB, const char *\fP\fIdelim\fP\fB, char **\fP\fIsaveptr\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBstrtok_r\fP(): _SVID_SOURCE || _BSD_SOURCE || _POSIX_C_SOURCE\ >=\ 1 || -_XOPEN_SOURCE || _POSIX_SOURCE -.ad b -.SH 説明 -\fBstrtok\fP() 関数は文字列を 0 個以上の空でないトークンの列に分割する。 \fBstrtok\fP() -を最初に呼び出す際には、解析対象の文字列を \fIstr\fP に 指定する。同じ文字列の解析を行うその後の呼び出しでは、 \fIstr\fP は NULL -にしなければならない。 - -\fIdelim\fP 引き数には、解析対象の文字列をトークンに区切るのに使用する -バイト集合を指定する。同じ文字列を解析する一連の呼び出しにおいて、 -\fIdelim\fP に違う文字列を指定してもよい。 - -\fBstrtok\fP() のそれぞれの呼び出しでは、次のトークンを格納したヌル終端 -された文字列へのポインターが返される。この文字列には区切りバイトは含まれ -ない。これ以上トークンが見つからなかった場合には、NULL が返される。 - -同じ文字列に対して操作を行う \fBstrtok\fP() を連続して呼び出す場合、 次のトークンを探し始める位置を決めるためのポインターが保持される。 -最初の \fBstrtok\fP の呼び出しでは、 このポインターは対象の文字列の最初のバイトにセットされる。 次のトークンの先頭は、 \fIstr\fP -内で次の区切りバイト以外のバイトを前方に検索して決定される。 区切りバイト以外のバイトが見つからなかった場合は、 トークンはこれ以上なく、 -\fBstrtok\fP() は NULL を返す (したがって、 空の文字列や区切りバイトだけを含む文字列の場合には、 最初の \fBstrtok\fP() -の呼び出しで NULL が返ることになる)。 - -各トークンの末尾は、次の区切りバイトが見つかるか、終端のヌルバイト (\(aq\e0\(aq) に達するまで文字列を前方に検索することで見つかる。 -区切りバイトが見つかった場合には、 現在のトークンの終わりを示すために、 見つかった区切りバイトがヌルバイトで上書きされ、 \fBstrtok\fP() -はポインターを次のバイトに設定する。 このポインターは、次のトークンを検索する際の開始点として使用される。 この場合、 \fBstrtok\fP() -は見つかったトークンの先頭へのポインターを返す。 - -上記の説明の通り、 解析対象の文字列に 2 つ以上の区切りバイトが連続している場合には、 一つの区切りバイトとみなされ、 -文字列の先頭や末尾にある区切りバイトは無視される。 言い換えると、 \fBstrtok\fP() が返すトークンは必ず空でない文字列となる。 -したがって、例えば "\fIaaa;;bbb,\fP" という文字列が与えられたとすると、 区切り文字列 "\fI;,\fP" を指定した一連の -\fBstrtok\fP() の呼び出しでは、 "\fIaaa\fP" と \fIbbb\fP" が返り、その次にヌルポインターが返る。 - -\fBstrtok_r\fP() 関数は \fBstrtok\fP() のリエントラント版である。 \fIsaveptr\fP 引き数は \fIchar\ *\fP -変数へのポインターであり、 同じ文字列の解析を行う \fBstrtok_r\fP() の呼び出し間で処理状況を保存するために \fBstrtok_r\fP() -内部で使用される。 - -\fBstrtok_r\fP() を最初に呼び出す際には、 \fIstr\fP は解析対象の文字列を指していなければならず、 \fIsaveptr\fP -の値は無視される。それ以降の呼び出しでは、 \fIstr\fP は NULL とし、 \fIsaveptr\fP -は前回の呼び出し以降変更しないようにしなければならない。 - -\fBstrtok_r\fP() の呼び出し時に異なる \fIsaveptr\fP 引き数を指定することで、 異なる文字列の解析を同時に行うことができる。 -.SH 返り値 -\fBstrtok\fP() と \fBstrtok_r\fP() は次のトークンへのポインターか、 トークンがなければ NULL を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -The \fBstrtok\fP() 関数はスレッドセーフではない。 -.LP -\fBstrtok_r\fP() 関数はスレッドセーフである。 -.SH 準拠 -.TP -\fBstrtok\fP() -SVr4, POSIX.1\-2001, 4.3BSD, C89, C99. -.TP -\fBstrtok_r\fP() -POSIX.1\-2001. -.SH バグ -これらの関数を使うのは慎重に吟味すること。 使用する場合は、以下の点に注意が必要である。 -.IP * 2 -これらの関数はその最初の引数を変更する。 -.IP * -これらの関数は const な文字列では使えない。 -.IP * -区切りバイト自体は失われてしまう。 -.IP * -\fBstrtok\fP() 関数は文字列の解析に静的バッファーを用いるので、スレッドセーフでない。 これが問題になる場合は \fBstrtok_r\fP() -を用いること。 -.SH 例 -以下のプログラムは、 \fBstrtok_r\fP() を利用するループを入れ子にして使用し、 -文字列を 2 階層のトークンに分割するものである。 1番目のコマンドライン -引き数には、解析対象の文字列を指定する。 2 番目の引き数には、文字列を -「大きな」トークンに分割するために 使用する区切りバイトを指定する。 -3 番目の引き数には、「大きな」トークンを細かく分割するために使用する -区切りバイトを指定する。 -.PP -このプログラムの出力例を以下に示す。 -.PP -.in +4n -.nf -$\fB ./a.out \(aqa/bbb///cc;xxx:yyy:\(aq \(aq:;\(aq \(aq/\(aq\fP -1: a/bbb///cc - \-\-> a - \-\-> bbb - \-\-> cc -2: xxx - \-\-> xxx -3: yyy - \-\-> yyy -.fi -.in -.SS プログラムのソース -\& -.nf -#include -#include -#include - -int -main(int argc, char *argv[]) -{ - char *str1, *str2, *token, *subtoken; - char *saveptr1, *saveptr2; - int j; - - if (argc != 4) { - fprintf(stderr, "Usage: %s string delim subdelim\en", - argv[0]); - exit(EXIT_FAILURE); - } - - for (j = 1, str1 = argv[1]; ; j++, str1 = NULL) { - token = strtok_r(str1, argv[2], &saveptr1); - if (token == NULL) - break; - printf("%d: %s\en", j, token); - - for (str2 = token; ; str2 = NULL) { - subtoken = strtok_r(str2, argv[3], &saveptr2); - if (subtoken == NULL) - break; - printf("\t \-\-> %s\en", subtoken); - } - } - - exit(EXIT_SUCCESS); -} -.fi -.PP -\fBstrtok\fP() を使った別のプログラム例が \fBgetaddrinfo_a\fP(3) にある。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index a29b428a..00000000 --- a/manual/LDP_man-pages/draft/man3/strtol.3 +++ /dev/null @@ -1,207 +0,0 @@ -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 AKAMATSU, Kazuo -.\" all rights reserved. -.\" Translated Thu Jan 9 21:00:00 JST 1999 -.\" by AKAMATSU, Kazuo -.\" Updated Sun Apr 8 JST 2001 by Kentaro Shirakata -.\" Updated Sat Mar 23 JST 2002 by Kentaro Shirakata -.\" Updated & Modified 2006-07-20, -.\" Akihiro MOTOKI , LDP v2.36 -.\" Updated 2012-05-04, Akihiro MOTOKI -.\" -.TH STRTOL 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -strtol, strtoll, strtoq \- 文字列を long int に変換する -.SH 書式 -.nf -\fB#include \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 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBstrtol\fP(), \fBstrtoll\fP(), \fBstrtoq\fP() は、例外付きのスレッドセーフである。実行中に -\fBsetlocale\fP(3) を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.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 以外の値かどうかを確認しエラーが発生したかどうかを判断する 必要がある。 - -POSIX.1\-2001 では、 "C" と "POSIX" -以外のロケールでは、これらの関数は、他の実装時に定義される数字を示す文字列を受け付けるとされている。 -.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 -#include -#include -#include - -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strtoul.3 b/manual/LDP_man-pages/draft/man3/strtoul.3 deleted file mode 100644 index d883a222..00000000 --- a/manual/LDP_man-pages/draft/man3/strtoul.3 +++ /dev/null @@ -1,140 +0,0 @@ -.\" 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:54:03 1993 by Rik Faith (faith@cs.unc.edu) -.\" Fixed typo, aeb, 950823 -.\" 2002-02-22, joey, mihtjel: Added strtoull() -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 AKAMATSU, Kazuo -.\" and 2006 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Thu Jan 31 18:00:00 JST 1999 -.\" by AKAMATSU, Kazuo -.\" Updated & Modified 2006-07-20, -.\" Akihiro MOTOKI , LDP v2.36 -.\" -.TH STRTOUL 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -strtoul, strtoull, strtouq \- 文字列を unsigned long int に変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBunsigned long int strtoul(const char *\fP\fInptr\fP\fB, char **\fP\fIendptr\fP\fB, int \fP\fIbase\fP\fB);\fP -.sp -\fBunsigned long long int strtoull(const char *\fP\fInptr\fP\fB, char **\fP\fIendptr\fP\fB,\fP -\fB int \fP\fIbase\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBstrtoull\fP(): -.RS 4 -XOPEN_SOURCE\ >=\ 600 || _BSD_SOURCE || _SVID_SOURCE || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -または \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBstrtoul\fP() 関数は、 \fInptr\fP の文字列の最初の部分を、 \fIbase\fP を基数として \fIunsigned long int\fP -に変換する。 この \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 -文字列の残りの部分は \fIunsigned long int\fP に変換されるが、基数に対して -有効でない数字が現れた時点で変換は終了する。(11進数以上では \(aqA\(aq は 大文字・小文字に関わらず 10 を表し、 \(aqB\(aq は -11 を表現し, 以下同様に、 \(aqZ\(aq は 35 を表す。) -.PP -\fIendptr\fP がヌル値 (NULL) でない場合、 \fBstrtoul\fP() は最初に不正な文字が現れたアドレスを \fI*endptr\fP -に格納している。 文字列に有効な数字がひとつもなければ、 \fBstrtoul\fP() は \fInptr\fP の元の値を \fI*endptr\fP -に代入する(そして 0 を返す)。 特に、 \fI*nptr\fP が \(aq\e0\(aq 以外で、返された \fI**endptr\fP が -\(aq\e0\(aq ならば、文字列全体が有効だったことになる。 -.PP -\fBstrtoull\fP() 関数は \fBstrtoul\fP() 関数と同様だが、 \fIunsigned long long int\fP 型の値を返す。 -.SH 返り値 -\fBstrtoul\fP() 関数は変換結果を返す。文字列がマイナス符号から始まっていた場 合は、(符号反転前の値がオーバーフローしていなければ) -変換結果を符号反転した 値を unsigned 型で返す。変換でオーバーフローが発生した場合は \fBULONG_MAX\fP を返し、 \fIerrno\fP に -\fBERANGE\fP を設定する。 (\fBULONG_MAX\fP を \fBULLONG_MAX\fP と読み替えれば) \fBstrtoull\fP() は -\fBstrtoul\fP() と全く同じである。 -.SH エラー -.TP -\fBEINVAL\fP -(C99 にはない) 指定された \fIbase\fP がサポートされていない値である。 -.TP -\fBERANGE\fP -結果の値が範囲外である。 -.LP -実装によっては、変換が行われなかった場合 (数字がなく、0 を返した場合)、 \fIerrno\fP に \fBEINVAL\fP が設定される場合がある。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBstrtoul\fP(), \fBstrtoull\fP(), \fBstrtouq\fP() は、例外付きのスレッドセーフである。実行中に -\fBsetlocale\fP(3) を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -\fBstrtoul\fP() は SVr4, C89, C99 と POSIX\-2001 に準拠している。 \fBstrtoull\fP() は C99 と -POSIX.1\-2001 に準拠している。 -.SH 注意 -\fBstrtoul ()\fP からは成功、失敗どちらの場合でも 0 や \fBULONG_MAX\fP (\fBstrtoull\fP() では -\fBULLONG_MAX\fP) が返る可能性があるので、 プログラムは関数を呼び出す前に \fIerrno\fP を 0 に設定し、呼び出し後に -\fIerrno\fP が 0 以外の値かどうかを確認しエラーが発生したかどうかを判断する 必要がある。 - -"C" 以外のロケールの場合、その他の文字列も受け付けられるかもしれない。 (例えば、現在のロケールの 1000 -毎の区切り文字に対応しているかもしれない。) -.LP -BSD には、 -.sp -.in +4n -.nf -\fBu_quad_t strtouq(const char *\fP\fInptr\fP\fB, char **\fP\fIendptr\fP\fB, int \fP\fIbase\fP\fB);\fP -.sp -.in -4n -.fi -という完全に同様の定義を持つ関数がある。 使用中のアーキテクチャーのワード長次第であるが、この関数は \fBstrtoull\fP() や -\fBstroul\fP() と等価な場合もありえる。 - -負の値も正当な入力とみなされ、エラーもなく、 対応する \fIunsigned long int\fP 型の値に変換される。 -.SH 例 -\fBstrtol\fP(3) のマニュアルページの例を参照。 このページで説明した関数の使用方法も同様である。 -.SH 関連項目 -\fBatof\fP(3), \fBatoi\fP(3), \fBatol\fP(3), \fBstrtod\fP(3), \fBstrtol\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strverscmp.3 b/manual/LDP_man-pages/draft/man3/strverscmp.3 deleted file mode 100644 index 47fa5f2e..00000000 --- a/manual/LDP_man-pages/draft/man3/strverscmp.3 +++ /dev/null @@ -1,77 +0,0 @@ -.\" Copyright (C) 2001 Andries Brouwer -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Sat Sep 21 08:34:42 2002 -.\" by Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" -.TH STRVERSCMP 3 2001\-12\-19 GNU "Linux Programmer's Manual" -.SH 名前 -strverscmp \- 2つのバージョン文字列を比較する -.SH 書式 -.nf -\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBint strverscmp(const char *\fP\fIs1\fP\fB, const char *\fP\fIs2\fP\fB);\fP -.fi -.SH 説明 -.\" classical solution: "rename jan jan0 jan?" -\fIjan1\fP, \fIjan2\fP, ..., \fIjan9\fP, \fIjan10\fP, ... といった名前のファイルがある状況はよくあるが、 -\fBls\fP(1) を実行したときに \fIjan1\fP, \fIjan10\fP, ..., \fIjan2\fP, ..., \fIjan9\fP -の順番で表示されるのには違和感がある。 これを修正するために、GNU は \fBls\fP(1) に \fI\-v\fP オプションを導入した。 この機能は -\fBversionsort\fP(3) を使って実装されているが、この中で \fBstrverscmp\fP() が使用されている。 - -このように \fBstrverscmp\fP() の役目は2つの文字列を比較して「正しい」順序を探すことである。 これに対して \fBstrcmp\fP(3) -は辞書順だけで比較した結果を返す。 関数 \fBstrverscmp\fP() はロケールのカテゴリーである \fBLC_COLLATE\fP を使用しない。 -このことから、この関数が主にアスキー文字から成る文字列を 想定していることが分かる。 - -この関数の動作は以下の通りである。 両方の文字列が等しい場合、0 を返す。 それ以外の場合、その直前までは両方の文字列が等しく、 -その直後のバイトで両者に違いがあるような、バイトの境界を探す。 見つかったバイト境界を含む数字列(数字だけの文字列)の最長一致検索を行う。 -(数字列は境界から始まっていても、境界で終わっていてもよい)。 2つの文字列から得られた数字列の一方または両方が空であれば、 \fBstrcmp\fP(3) -が返した結果を関数の返り値として返す。 すなわち、バイト値を比較した結果を返す。 -それ以外の(数字列が両方とも空でない)場合、両方の数字列を数字順で比較する。 このとき、1つ以上の 0 -が先頭にある数字列は、前に小数点がついているものと 解釈される。(先頭に 0 が多くある数字列ほど前に来ることになる) -この結果、順序は次のようになる: \fI000\fP, \fI00\fP, \fI01\fP, \fI010\fP, \fI09\fP, \fI0\fP, \fI1\fP, \fI9\fP, -\fI10\fP -.SH 返り値 -関数 \fBstrverscmp\fP() は、ゼロよりも 1)小さい、2)等しい、3)大きいのいずれかの整数を返す。 それぞれは、\fIs1\fP が -\fIs2\fP よりも、 1)小さい、2)等しい、3)大きい ことを示す。 -.SH 準拠 -この関数は GNU による拡張である。 -.SH 関連項目 -\fBrename\fP(1), \fBstrcasecmp\fP(3), \fBstrcmp\fP(3), \fBstrcoll\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/strxfrm.3 b/manual/LDP_man-pages/draft/man3/strxfrm.3 deleted file mode 100644 index 3b1556f6..00000000 --- a/manual/LDP_man-pages/draft/man3/strxfrm.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" 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:41:28 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 SHOJI Yasushi all rights reserved. -.\" Translated Fri Jun 26 1998 by SHOJI Yasushi -.\" Updated & Modefied Sun Mar 7 1999 by Shouichi Saito -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH STRXFRM 3 2012\-05\-10 GNU "Linux Programmer's Manual" -.SH 名前 -strxfrm \- 文字列の変換 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t strxfrm(char *\fP\fIdest\fP\fB, const char *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBstrxfrm\fP() 関数は、文字列 \fIsrc\fP に対して、次のような変換を行う。 -変換は、ある二つの文字列に対して、それぞれを \fBstrxfrm\fP() で変換 -した文字列に対して \fBstrcmp\fP(3) を行った結果が、 -変換を行わずに\fBstrcoll\fP(3) を行った結果と同じとなるように行う。 -変換された文字列の先頭から \fIn\fP バイト分が \fIdest\fP に代入される。 -変換は、プログラムの現在のロケールのカテゴリー \fBLC_COLLATE\fP に -基づいて行われる (\fBsetlocale\fP(3) を参照)。 -.SH 返り値 -\fBstrxfrm\fP() 関数は、変換された文字列を \fIdest\fP に代入するときに 必要なバイト数から、終端のヌルバイト -(\(aq\e0\(aq) の分を 引いたものを返す。もし返り値が \fIn\fP 以上の場合、 \fIdest\fP の内容は不定となる。 -.SH 準拠 -SVr4, 4.3BSD, C89, C99. -.SH 注意 -\fIPOSIX\fP または \fIC\fP ロケールでは、関数 \fBstrxfrm\fP() は、 関数 \fBstrncpy\fP(3) -を使って文字列をコピーするのと同じである。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/swab.3 b/manual/LDP_man-pages/draft/man3/swab.3 deleted file mode 100644 index 723508bf..00000000 --- a/manual/LDP_man-pages/draft/man3/swab.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" 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 17:52:15 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2001-12-15, aeb -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Fri Dec 19 13:24:02 JST 1997 -.\" by HIROFUMI Nishizuka -.\" Updated Fri Dec 21 JST 2001 by Kentaro Shirakata -.\" -.TH SWAB 3 2014\-02\-25 "" "Linux Programmer's Manual" -.SH 名前 -swab \- 隣接するバイトを交換する -.SH 書式 -.nf -\fB#define _XOPEN_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP -.sp -\fBvoid swab(const void *\fP\fIfrom\fP\fB, void *\fP\fIto\fP\fB, ssize_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBswab\fP() 関数は、\fIfrom\fP で指された配列から \fIn\fP バイトを \fIto\fP -で指された配列に、隣接した偶数/奇数バイトを交換しながらコピーする。 この関数は異なるバイトオーダーを持つマシン間でのデータ交換に 使用される。 -.LP -\fIn\fP が負の数の場合、この関数は何もしない。 \fIn\fP が正でかつ奇数の場合、\fIn\-1\fP バイトは上記の通り扱い、 -最後のバイトについては未規定の動作をする (言い換えれば、\fIn\fP は偶数にするべきである)。 -.SH 返り値 -\fBswab\fP() 関数は、値を返さない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBswab\fP() 関数はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, POSIX.1\-2001. -.SH 関連項目 -\fBbstring\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sysconf.3 b/manual/LDP_man-pages/draft/man3/sysconf.3 index b9d83e1e..8a9ae574 100644 --- a/manual/LDP_man-pages/draft/man3/sysconf.3 +++ b/manual/LDP_man-pages/draft/man3/sysconf.3 @@ -36,30 +36,31 @@ .\" Updated 2002-10-16, Kentaro Shirakata .\" Updated 2005-03-15, Akihiro MOTOKI .\" -.TH SYSCONF 3 2014\-12\-31 GNU "Linux Programmer's Manual" +.TH SYSCONF 3 2019\-05\-09 GNU "Linux Programmer's Manual" .SH 名前 sysconf \- 動作中に設定情報を取得する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBlong sysconf(int \fP\fIname\fP\fB);\fP .fi .SH 説明 POSIX では、アプリケーションがコンパイル時や実行時に、 特定のオプションがサポートされているかや、 設定可能な特定の定数や制限 (limits) がどんな値かをテストすることができる。 -.LP +.PP コンパイル時に行うには、 \fI\fP と \fI\fP の両方もしくは一方をインクルードし、 特定のマクロの値を確認する。 -.LP -実行時には、ここで説明する関数 \fBsysconf\fP() を使って数値を問い合わせることができる。 ファイルが存在するファイルシステムに関する数値は、 -\fBfpathconf\fP(3) と \fBpathconf\fP(3) を使って確認できる。 文字列の値は \fBconfstr\fP(3) -を使って確認できる。 -.LP +.PP +At run time, one can ask for numerical values using the present function +\fBsysconf\fP(). One can ask for numerical values that may depend on the +filesystem in which a file resides using \fBfpathconf\fP(3) and +\fBpathconf\fP(3). One can ask for string values using \fBconfstr\fP(3). +.PP .\" except that sysconf(_SC_OPEN_MAX) may change answer after a call .\" to setrlimit( ) which changes the RLIMIT_NOFILE soft limit これらの関数で取得される値は設定可能なシステム定数である。 これらはプロセスの生存期間の間は変化しない。 -.LP +.PP .\" and 999 to indicate support for options no longer present in the latest .\" standard. (?) オプションを確認できるように、たいていは \fI\fP で定数 \fB_POSIX_FOO\fP が定義されている。 @@ -69,7 +70,7 @@ POSIX では、アプリケーションがコンパイル時や実行時に、 を示す値になっている (例えば 200112L)。 glibc では 1 が設定されていると、そのオプションはサポートされているが、 POSIX の改訂版がまだ発行されていないことを示す。 \fBsysconf\fP() の引き数には \fB_SC_FOO\fP を指定する。 オプションのリストについては \fBposixoptions\fP(7) を参照のこと。 -.LP +.PP 変数や制限を確認できるように、たいていは、 \fI\fP で定数 \fB_FOO\fP が、 \fI\fP で \fB_POSIX_FOO\fP が定義されている。 制限が規定されていない場合は定数は定義されない。 定数が定義されているときには、その定数は保証できる値であり、 実際にはもっと大きな値がサポートされていることもある。 @@ -77,7 +78,7 @@ POSIX では、アプリケーションがコンパイル時や実行時に、 の引き数には \fB_SC_FOO\fP を指定する。 .SS "POSIX.1 変数" 変数名、その値を取得するのに使われる \fBsysconf\fP() のパラメーター名、簡単な説明を以下に示す。 -.LP +.PP .\" [for the moment: only the things that are unconditionally present] .\" .TP .\" .BR AIO_LISTIO_MAX " - " _SC_AIO_LISTIO_MAX @@ -121,7 +122,11 @@ clock ticks \- \fB_SC_CLK_TCK\fP 一つのプロセスが同時にオープンできるファイル数の上限。 \fB_POSIX_OPEN_MAX\fP (20) 未満であってはならない。 .TP \fBPAGESIZE\fP \- \fB_SC_PAGESIZE\fP -バイト単位でのページサイズ。 1 より小さくなってはならない。 (この代わりに PAGE_SIZE を使うシステムもある) +Size of a page in bytes. Must not be less than 1. +.TP +\fBPAGE_SIZE\fP \- \fB_SC_PAGE_SIZE\fP +A synonym for \fBPAGESIZE\fP/\fB_SC_PAGESIZE\fP. (Both \fBPAGESIZE\fP and +\fBPAGE_SIZE\fP are specified in POSIX.) .TP \fBRE_DUP_MAX\fP \- \fB_SC_RE_DUP_MAX\fP \fBregexec\fP(3) と \fBregcomp\fP(3) で許容されている BRE (Basic Regular Expression; @@ -160,7 +165,8 @@ POSIX.1 標準が承認された年月。 \fBYYYYMML\fP という書式である \fBbc\fP(1) で許容される文字列の最大長。 .TP \fBCOLL_WEIGHTS_MAX\fP \- \fB_SC_COLL_WEIGHTS_MAX\fP -ロケール定義ファイル中の \fBLC_COLLATE order\fP キーワードのエントリーに割り当て可能な重みの最大値。 +indicates the maximum numbers of weights that can be assigned to an entry of +the \fBLC_COLLATE order\fP keyword in the locale definition file. .TP \fBEXPR_NEST_MAX\fP \- \fB_SC_EXPR_NEST_MAX\fP \fBexpr\fP(1) において、括弧で入れ子にできる式の最大数。 @@ -184,7 +190,8 @@ POSIX.2 の FORTRAN 開発ユーティリティがサポートされているか POSIX.2 の FORTRAN ランタイムユーティリティがサポートされているかを示す。 .TP \fB_POSIX2_LOCALEDEF\fP \- \fB_SC_2_LOCALEDEF\fP -\fBlocaledef\fP(1) を使った、POSIX.2 のロケールの作成をサポートしているかを示す。 +indicates whether the POSIX.2 creation of locales via \fBlocaledef\fP(1) is +supported. .TP \fBPOSIX2_SW_DEV\fP \- \fB_SC_2_SW_DEV\fP POSIX.2 ソフトウェア開発ユーティリティオプションがサポートされているかを示す。 @@ -198,17 +205,46 @@ POSIX.2 ソフトウェア開発ユーティリティオプションがサポー 現在利用可能な物理メモリーのページ数。 .TP \- \fB_SC_NPROCESSORS_CONF\fP -設定されたプロセッサ数。 +The number of processors configured. See also \fBget_nprocs_conf\fP(3). .TP \- \fB_SC_NPROCESSORS_ONLN\fP -現在オンラインの (利用可能な) プロセッサ数。 +The number of processors currently online (available). See also +\fBget_nprocs_conf\fP(3). .SH 返り値 -\fIname\fP が不正な場合、\-1 が返され、 \fIerrno\fP に \fBEINVAL\fP が設定される。 -それ以外の場合、システムリソースの値が返り値として返され、 \fIerrno\fP は変更されない。問い合わせがオプションに関するものであれば、 -そのオプションが利用できる場合には正の値が返され、 利用できない場合には \-1 が返される。 -問い合わせが制限に関するものであれば、その制限が設定されていない場合に \-1 が返される。 +The return value of \fBsysconf\fP() is one of the following: +.IP * 3 +On error, \-1 is returned and \fIerrno\fP is set to indicate the cause of the +error (for example, \fBEINVAL\fP, indicating that \fIname\fP is invalid). +.IP * +If \fIname\fP corresponds to a maximum or minimum limit, and that limit is +indeterminate, \-1 is returned and \fIerrno\fP is not changed. (To distinguish +an indeterminate limit from an error, set \fIerrno\fP to zero before the call, +and then check whether \fIerrno\fP is nonzero when \-1 is returned.) +.IP * +If \fIname\fP corresponds to an option, a positive value is returned if the +option is supported, and \-1 is returned if the option is not supported. +.IP * +Otherwise, the current value of the option or limit is returned. This value +will not be more restrictive than the corresponding value that was described +to the application in \fI\fP or \fI\fP when +the application was compiled. +.SH エラー +.TP +\fBEINVAL\fP +\fIname\fP is invalid. +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBsysconf\fP() +T} Thread safety MT\-Safe env +.TE .SH 準拠 -POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008. .SH バグ \fBARG_MAX\fP を使うのは難しい、なぜなら、 \fBexec\fP(3) の引き数領域 (argument space) のうちどれくらいが ユーザーの環境変数によって使われるかは分からないからである。 @@ -218,6 +254,5 @@ POSIX.1\-2001. \fBbc\fP(1), \fBexpr\fP(1), \fBgetconf\fP(1), \fBlocale\fP(1), \fBconfstr\fP(3), \fBfpathconf\fP(3), \fBpathconf\fP(3), \fBposixoptions\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/syslog.3 b/manual/LDP_man-pages/draft/man3/syslog.3 deleted file mode 100644 index 635e1c5c..00000000 --- a/manual/LDP_man-pages/draft/man3/syslog.3 +++ /dev/null @@ -1,240 +0,0 @@ -.\" Written Feb 1994 by Steve Greenland (stevegr@neosoft.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 -.\" -.\" Updated 1999.12.19 by Karl M. Hegbloom -.\" -.\" Updated 13 Oct 2001, Michael Kerrisk -.\" Added description of vsyslog -.\" Added descriptions of LOG_ODELAY and LOG_NOWAIT -.\" Added brief description of facility and option arguments -.\" Added CONFORMING TO section -.\" 2001-10-13, aeb, minor changes -.\" Modified 13 Dec 2001, Martin Schulze -.\" Modified 3 Jan 2002, Michael Kerrisk -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sep 1 20:14:01 JST 1996 -.\" by Shoichi OZAWA -.\" Updated Thu Oct 18 01:00:02 JST 2001 -.\" by Akihiro MOTOKI -.\" Updated Fri Jan 4 22:15:21 JST 2002 -.\" by Akihiro MOTOKI -.\" Updated 2002-04-14 by Kentaro Shirakata -.\" Updated 2007-01-01 by Kentaro Shirakata -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH SYSLOG 3 2012\-08\-17 Linux "Linux Programmer's Manual" -.SH 名前 -closelog, openlog, syslog, vsyslog \- システムロガーにメッセージを送る -.SH 書式 -\fB#include \fP -.sp -\fBvoid openlog(const char *\fP\fIident\fP\fB, int \fP\fIoption\fP\fB, int -\fP\fIfacility\fP\fB);\fP -.br -\fBvoid syslog(int \fP\fIpriority\fP\fB, const char *\fP\fIformat\fP\fB, ...);\fP -.br -\fBvoid closelog(void);\fP -.sp -\fB#include \fP -.sp -\fBvoid vsyslog(int \fP\fIpriority\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 -\fBvsyslog\fP(): _BSD_SOURCE -.SH 説明 -\fBcloselog\fP() はシステムのログ記録用プログラム(システムロガー \fBsyslogd\fP(8)) ヘの接続を終了する。 -\fBcloselog\fP() は必須ではない。 -.sp -\fBopenlog\fP() はログを出力しようとしているプログラムからログ記録用 -プログラム (system logger) への 接続を開始する。 -\fIident\fP で指定した文字列は各メッセージの前に付与される。 -通常は \fIident\fP にはプログラム名が設定される。 -\fIident\fP が NULL の場合、プログラムが \fIident\fP として使用される -(POSIX.1\-2008 では \fIident\fP が NULL の場合の動作は規定されていない)。 - -\fIoption\fP 引き数は、 \fBopenlog\fP() の動作とその後の \fBsyslog\fP() の呼び -出しを制御するフラグを指定する。 \fIfacility\fP 引き数は、後で \fBsyslog\fP() -を呼び出す際に facility が指定されなかった場合に使用される デフォルト値 -を決定する。 \fIoption\fP と \fIfacility\fP については後述する。 -\fBopenlog\fP() は必須ではなく、必要に応じて \fBsyslog\fP() から呼び出される。 -\fBsyslog\fP() が呼び出した場合、 \fIident\fP のデフォルト値は NULL になる。 -.sp -\fBsyslog\fP() はログメッセージを出力し、 \fBsyslogd\fP(8) がそのメッセージを記録する。 \fIpriority\fP 引き数は -\fIfacility\fP と \fIlevel\fP との組合せで指定する。 \fIfacility\fP と \fIlevel\fP の取りうる値は後述する。 残りの -\fIformat\fP 引き数は \fBprintf\fP(3) と似たスタイルの書式とその書式に与える値である。 \fIformat\fP 中の2文字 \fB%m\fP -はその時点での \fIerrno\fP に関連するエラーメッセージ文字列 (\fIstrerror\fP) によって置き換えられる。 -必要な場合は末尾に改行が加えられる。 - -\fBvsyslog\fP() 関数は \fBsyslog\fP() と同じ機能を持つが、可変引き数リストを指定することができる点が異なる。 -指定された引き数は、 \fBstdarg\fP(3) 可変引き数リストマクロを用いて取得される。 - -以下のサブセクションでは、 \fIoption\fP と \fIfacility\fP と \fIpriority\fP -の値を設定するのに使用されるパラメーターを説明する。 -.SS option -下記の値を OR したものが \fBopenlog\fP() の \fIoption\fP 引き数になる: -.TP 15 -\fBLOG_CONS\fP -エラーがあれば、システムロガーに送る一方でシステムコンソールにも直接書く。 -.TP -\fBLOG_NDELAY\fP -ログ記録用プログラムとの接続を即座に開始する (通常は、最初のメッセージが記録される時に接続を開く)。 -.TP -\fBLOG_NOWAIT\fP -メッセージを記録する際に生成される子プロセスの終了を待たない。 (GNU C ライブラリは子プロセスを生成しない。 したがって、このオプションは -Linux では無効である。) -.TP -\fBLOG_ODELAY\fP -\fBLOG_NDELAY\fP の反対。 \fBsyslog\fP() が呼ばれるまで、接続の開始を行わない。 -(このオプションはデフォルトであり、特に指定する必要はない。) -.TP -\fBLOG_PERROR\fP -stderr にも出力する。 -(POSIX.1\-2001 と POSIX.1\-2008 では定義されていない) -.TP -\fBLOG_PID\fP -個々のメッセージに PID を含める。 -.SS facility -\fIfacility\fP 引き数はメッセージに記録されるプログラムのタイプを指定するために使われる。 -これによって異なるタイプのプログラムからのメッセージは異なる扱いを するように設定ファイル( \fBsyslog.conf\fP(5)) に定義できる。 -.TP 15 -\fBLOG_AUTH\fP -セキュリティ/認証 メッセージ -.TP -\fBLOG_AUTHPRIV\fP -セキュリティ/認証 メッセージ (プライベート) -.TP -\fBLOG_CRON\fP -クロックデーモン (\fBcron\fP と at\fB)\fP -.TP -\fBLOG_DAEMON\fP -特定の facility 値を持たないシステムデーモン -.TP -\fBLOG_FTP\fP -ftp デーモン -.TP -\fBLOG_KERN\fP -.\" LOG_KERN has the value 0; if used as a facility, zero translates to: -.\" "use the default facility". -カーネルメッセージ (ユーザープロセスから生成することはできない) -.TP -\fBLOG_LOCAL0\fP から \fBLOG_LOCAL7\fP -ローカルな使用のためにリザーブされている -.TP -\fBLOG_LPR\fP -ラインプリンタサブシステム -.TP -\fBLOG_MAIL\fP -メールサブシステム -.TP -\fBLOG_NEWS\fP -USENET ニュースサブシステム -.TP -\fBLOG_SYSLOG\fP -\fBsyslogd\fP(8) によって内部的に発行されるメッセージ -.TP -\fBLOG_USER\fP (デフォルト) -一般的なユーザーレベルメッセージ -.TP -\fBLOG_UUCP\fP -UUCPサブシステム -.SS level -これはメッセージの優先度を指定する。 優先度の高いものから低いものの順で下記する。 -.TP 15 -\fBLOG_EMERG\fP -システムが使用不可 -.TP -\fBLOG_ALERT\fP -直ちに行動を起こさなければならない -.TP -\fBLOG_CRIT\fP -危険な状態 -.TP -\fBLOG_ERR\fP -エラーの状態 -.TP -\fBLOG_WARNING\fP -ワーニングの状態 -.TP -\fBLOG_NOTICE\fP -通常だが重要な状態 -.TP -\fBLOG_INFO\fP -インフォメーションメッセージ -.TP -\fBLOG_DEBUG\fP -デバッグレベルのメッセージ -.LP -\fBsetlogmask\fP(3) 関数を使用して、 指定されたレベルのメッセージだけを記録するように 制限することができる。 -.SH 準拠 -.\" .SH HISTORY -.\" A -.\" .BR syslog () -.\" function call appeared in 4.2BSD. -.\" 4.3BSD documents -.\" .BR openlog (), -.\" .BR syslog (), -.\" .BR closelog (), -.\" and -.\" .BR setlogmask (). -.\" 4.3BSD-Reno also documents -.\" .BR vsyslog (). -.\" Of course early v* functions used the -.\" .I -.\" mechanism, which is not compatible with -.\" .IR . -\fBopenlog\fP(), \fBcloselog\fP(), \fBsyslog\fP() は SUSv2, POSIX.1\-2001, -POSIX.1\-2008 で規定されている (但し \fBvsyslog\fP() は除く)。 -POSIX.1\-2001 では \fIfacility\fP として \fBLOG_USER\fP と \fBLOG_LOCAL*\fP の値 -が規定されているだけである。 しかしながら、 \fBLOG_AUTHPRIV\fP と -\fBLOG_FTP\fP という例外はあるが、 それ以外の \fIfacility\fP の値は多くの -UNIX システムで使われている。 \fIoption\fP の値の \fBLOG_PERROR\fP の値は、 -POSIX.1\-2001 と POSIX.1\-2008 では規定されていないが、 -UNIX の多くのバージョンで使用可能である。 -.SH 注意 -\fBopenlog\fP() 呼び出しの \fIident\fP 引き数は、値がそのまま保持されていることを前提にしている。 それゆえ、 \fIident\fP -で指定された文字列が変更されると、 \fBsyslog\fP() は変更された文字列の追加するだろうし、 -指定された文字列が存在しなくなった場合、結果は未定義である。 最も移植性がある方法は、文字列定数を使用することである。 -.LP -ユーザーから与えられたデータを format として渡してはならない。 代わりに以下を使うこと。 -.nf - - syslog(priority, "%s", string); -.fi -.SH 関連項目 -\fBlogger\fP(1), \fBsetlogmask\fP(3), \fBsyslog.conf\fP(5), \fBsyslogd\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/system.3 b/manual/LDP_man-pages/draft/man3/system.3 deleted file mode 100644 index f4f88e7a..00000000 --- a/manual/LDP_man-pages/draft/man3/system.3 +++ /dev/null @@ -1,131 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" and Copyright (c) 2014 by 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 Sat Jul 24 17:51:15 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 11 May 1998 by Joseph S. Myers (jsm28@cam.ac.uk) -.\" Modified 14 May 2001, 23 Sep 2001 by aeb -.\" 2004-12-20, mtk -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Shoichi OZAWA -.\" all right reserved. -.\" Translated 1996-09-01, Shoichi OZAWA -.\" Updated 2001-03-19, Kentaro Shirakata -.\" Updated 2001-10-16, Kentaro Shirakata -.\" Updated 2005-02-27, Akihiro MOTOKI -.\" -.TH SYSTEM 3 2014\-06\-13 "" "Linux Programmer's Manual" -.SH 名前 -system \- シェルコマンドの実行 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint system(const char *\fP\fIcommand\fP\fB);\fP -.fi -.SH 説明 -\fBsystem\fP() ライブラリ関数は、\fBfork\fP(2) を使って子プロセスを作成し、その子プロセスは以下のように \fIcommand\fP -で指定されたシェルコマンドを \fBexecl\fP(3) を使って実行する。 - - execl("/bin/sh", "sh", "\-c", command, (char *) 0); - -\fBsystem\fP() が返るのはコマンドが完了した後である。 - -コマンドの実行中は、 \fBsystem\fP() を呼び出したプロセスでは、 \fBSIGCHLD\fP はブロックされ、 \fBSIGINT\fP と -\fBSIGQUIT\fP は無視される (\fIcommand\fP を実行する子プロセスでは、これらのシグナルはデフォルトの処理方法にしたがって処理される)。 - -\fIcommand\fP が NULL の場合、 \fBsystem\fP() はそのシステムでシェルが利用可能かを示すステータスを返す。 -.SH 返り値 -\fBsystem\fP() の返り値は以下のいずれかである。 -.IP * 3 -\fIcommand\fP が NULL の場合、 シェルが利用可能ならゼロ以外の値、利用不可なら 0。 -.IP * -子プロセスを作成できなかった場合、または子プロセスのステータスを取得できなかった場合、 返り値は \-1 である。 -.IP * -子プロセスでシェルを実行できなかった場合、 返り値は子プロセスがステータス 127 で \fB_exit\fP(2) を呼び出して終了したのと同じになる。 -.IP * -システムコールがすべて成功した場合、 返り値は \fIcommand\fP を実行するのに使用された子プロセスのシェルの終了ステータスとなる -(シェルの終了ステータスはそのシェルが実行した最後のコマンドの終了ステータスである)。 -.PP -最後の 2 つの場合、返り値は "wait status" であり、 \fBwaitpid\fP(2) に書かれているマクロ (つまり -\fBWIFEXITED\fP() や \fBWEXITSTATUS\fP() などのマクロ) を使って検査することができる。 -.PP -\fBsystem\fP() は他の子プロセスのウエイトステータスには影響を与えない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBsystem\fP() はスレッドセーフである。 -.SH 準拠 -C89, C99, POSIX.1\-2001. -.SH 注意 -\fBsystem\fP() により簡便性と利便性がもたらされる。この関数は \fBfork\fP(2), \fBexecl\fP(3), \fBwaitpid\fP(2) -の呼び出しにおける詳細をすべて行うとともに、 シグナルの適切な処理も行う。 また、シェルは \fIcommand\fP に対して通常の置換 -(substitutions) と I/O リダイレクトを行う。 \fBsystem\fP() を使用することによる主なコストは非効率性である。 -シェルを実行するプロセスを作成するためとそのシェルを実行するために、余計にシステムコールが必要となる。 - -(「どの」ヘッダーファイルをインクルードするよりも前に) 機能検査マクロ \fB_XOPEN_SOURCE\fP が定義された場合には、 -\fBwaitpid\fP(2) で説明されているマクロ群 (\fBWEXITSTATUS\fP() 等) が \fI\fP -をインクルードすると利用可能になる。 -.PP -既に述べたように、 \fBsystem\fP() は \fBSIGINT\fP と \fBSIGQUIT\fP を無視する。 よってループから \fBsystem\fP() -を呼ぶプログラムは、 以下の例のように子プロセスの終了状態を自分でチェックしておかないと、 中断できなくなるかもしれない。 -.br -.nf - - while (something) { - int ret = system("foo"); - - if (WIFSIGNALED(ret) && - (WTERMSIG(ret) == SIGINT || WTERMSIG(ret) == SIGQUIT)) - break; - } -.fi -.PP -set\-user\-ID や set\-group\-ID の特権をもつプログラムの中では \fBsystem\fP() -を使ってはいけない。なぜなら、ある環境変数の未知の値によって システムの安全が損なわれるからである。代わりに \fBexec\fP(3) 関連の関数群の中で -\fBexeclp\fP(3) と \fBexecvp\fP(3) 以外の関数を使用すべきである。 実際のところ、 \fBsystem\fP() は -\fI/bin/sh\fP が bash バージョン 2 であるシステムでは、 set\-user\-ID や set\-group\-ID -の特権を持つプログラムからは正しく動作しない。 なぜなら、bash バージョン 2 はスタートアップ時に特権を落とすからである。 (Debian -では、sh として起動された時にはこのような動作を行なわないように 修正された bash を用いている) -.PP -glibc 2.1.3 より前のバージョンでは、 \fIcommand\fP が NULL の場合に \fI/bin/sh\fP -が利用可能かどうかのチェックは実際には行わず、 いつでも利用可能であるとみなしていた。 \fBsystem\fP() はこの場合に常に 1 を返していた。 -POSIX.1\-2001 ではシェルが提供されているという標準に準拠した実装を 要求しているが、glibc 2.1.3 -以降ではシェルのチェックを実行している。 なぜなら、呼び出し元のプログラムが \fBsystem\fP() を呼び出すより前に (POSIX.1\-2001 -では規定されていない) \fBchroot\fP(2) を呼び出していた時には、シェルが利用可能でない場合や実行可能ファイル でない場合があるからである。 -.PP -シェルコマンドがステータス 127 で終了することもある。 この場合、\fBsystem\fP() -の返り値は、子プロセスでシェルが実行できなかった場合と区別できない。 -.SH 関連項目 -\fBsh\fP(1), \fBsigaction\fP(2), \fBsigprocmask\fP(2), \fBfork\fP(2), \fBwait\fP(2), -\fBexec\fP(3), \fBsignal\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/sysv_signal.3 b/manual/LDP_man-pages/draft/man3/sysv_signal.3 index 21961b3e..662038aa 100644 --- a/manual/LDP_man-pages/draft/man3/sysv_signal.3 +++ b/manual/LDP_man-pages/draft/man3/sysv_signal.3 @@ -32,20 +32,20 @@ .\" all rights reserved. .\" Translated 2007-06-02, Akihiro MOTOKI .\" -.TH SYSV_SIGNAL 3 2014\-01\-06 "" "Linux Programmer's Manual" +.TH SYSV_SIGNAL 3 2017\-09\-15 "" "Linux Programmer's Manual" .SH 名前 sysv_signal \- System V 方式のシグナル処理 .SH 書式 \fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */ .br \fB#include \fP -.sp +.PP \fBtypedef void (*sighandler_t)(int);\fP -.sp +.PP \fBsighandler_t sysv_signal(int \fP\fIsignum\fP\fB, sighandler_t \fP\fIhandler\fP\fB);\fP .SH 説明 \fBsysv_signal\fP() 関数は \fBsignal\fP(2) と同じ引き数をとり、同じ処理を実行する。 - +.PP しかしながら、 \fBsysv_signal\fP() は System V の信頼性に欠けるシグナル処理方式を提供している。 信頼性に欠けるシグナル処理方式は以下の特徴を持つ。 a) ハンドラーが起動されると、シグナルの処理方法 (disposition) が デフォルトにリセットされる、 b) シグナルハンドラーの実行中は、それ以降に発生した同じシグナルの配送が ブロックされない、 c) ハンドラーが停止中の @@ -55,20 +55,28 @@ sysv_signal \- System V 方式のシグナル処理 .SH エラー \fBsignal\fP(2) と同じ。 .SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBsysv_signal\fP() 関数はスレッドセーフである。 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute 値 +T{ +\fBsysv_signal\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 この関数は非標準である。 .SH 注意 \fBsysv_signal\fP() の使用は避けるべきである。代わりに \fBsigaction\fP(2) を使うこと。 - +.PP 以前の Linux システムでは、 \fBsysv_signal\fP() と \fBsignal\fP(2) は等価であった。しかし、新しめのシステムでは、 \fBsignal\fP(2) は信頼性のあるシグナル処理方式を提供している。 詳細は \fBsignal\fP(2) を参照。 - +.PP \fIsighandler_t\fP を使っているのは GNU による拡張である。 この型は機能検査マクロ \fB_GNU_SOURCE\fP を定義した場合にのみ定義される。 .SH 関連項目 \fBsigaction\fP(2), \fBsignal\fP(2), \fBbsd_signal\fP(3), \fBsignal\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/tan.3 b/manual/LDP_man-pages/draft/man3/tan.3 deleted file mode 100644 index 46d9f801..00000000 --- a/manual/LDP_man-pages/draft/man3/tan.3 +++ /dev/null @@ -1,127 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kenji Kajiwara and Kentaro Ogawa -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 17:42:24 JST -.\" by Kenji Kajiwara and Kentaro Ogawa -.\" Proof Reading: Takashi Yoshino -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH TAN 3 2014\-01\-06 "" "Linux Programmer's Manual" -.SH 名前 -tan, tanf, tanl \- 正接(タンジェント)関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble tan(double \fP\fIx\fP\fB);\fP -.br -\fBfloat tanf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double tanl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBtanf\fP(), \fBtanl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBtan\fP() 関数は \fIx\fP の正接(タンジェント)の値を返す。 \fIx\fP はラジアン単位で指定する。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP の正接 (タンジェント) を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が正の無限大か負の無限大の場合、 領域エラー (domain error) が発生し、NaN が返される。 - -.\" I think overflow can't occur, because the closest floating-point -.\" representation of pi/2 is still not close enough to pi/2 to -.\" produce a large enough value to overflow. -.\" Testing certainly seems to bear this out. -- mtk, Jul 08 -.\" -.\" POSIX.1 allows an optional underflow error; -.\" glibc 2.8 doesn't do this -.\" POSIX.1 an optional range error for subnormal x; -.\" glibc 2.8 doesn't do this -結果がオーバーフローする場合、範囲エラー (range error) が発生し、 各関数はそれぞれ \fBHUGE_VAL\fP, \fBHUGE_VALF\fP, -\fBHUGE_VALL\fP を返す。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が無限大である -\fIerrno\fP に \fBEDOM\fP が設定される (「バグ」の節も参照)。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) -が上がる。 -.TP -範囲エラー (range error): 結果のオーバーフロー -.\" Unable to test this case, since the best approximation of -.\" pi/2 in double precision only yields a tan() value of 1.633e16. -.\" .I errno -.\" is set to -.\" .BR ERANGE . -オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBtan\fP(), \fBtanf\fP(), \fBtanl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. \fIdouble\fP 版の関数は SVr4, 4.3BSD, C89 にも準拠している。 -.SH バグ -.\" http://sourceware.org/bugzilla/show_bug.cgi?id=6782 -バージョン 2.10 より前の glibc の実装では、 領域エラーが発生した際に、 \fIerrno\fP に \fBEDOM\fP が設定されなかった。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/tanh.3 b/manual/LDP_man-pages/draft/man3/tanh.3 deleted file mode 100644 index ed48e2f0..00000000 --- a/manual/LDP_man-pages/draft/man3/tanh.3 +++ /dev/null @@ -1,106 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-07-27 by Walter Harms -.\" (walter.harms@informatik.uni-oldenburg.de) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996 Kenji Kajiwara and Kentaro Ogawa -.\" all rights reserved. -.\" Translated Sat, 13 Jul 1996 17:54:30 JST -.\" by Kenji Kajiwara and Kentaro Ogawa -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH TANH 3 2014\-01\-07 "" "Linux Programmer's Manual" -.SH 名前 -tanh, tanhf, tanhl \- 双曲線正接 (hyperbolic tangent) 関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble tanh(double \fP\fIx\fP\fB);\fP -.br -\fBfloat tanhf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double tanhl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBtanhf\fP(), \fBtanhl\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE -|| _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBtanh\fP() 関数は \fIx\fP の双曲線正接 (hyperbolic tangent) 関数を返す。 数学的には以下のように定義されている. -.nf - - tanh(x) = sinh(x) / cosh(x) -.fi -.SH 返り値 -成功すると、これらの関数は \fIx\fP の双曲線正接を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が +0 (\-0) の場合、+0 (\-0) が返される。 - -.\" -.\" POSIX.1-2001 documents an optional range error (underflow) -.\" for subnormal x; -.\" glibc 2.8 does not do this. -\fIx\fP が正の無限大 (負の無限大) の場合、+1 (\-1) が返される。 -.SH エラー -エラーは発生しない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBtanh\fP(), \fBtanhf\fP(), \fBtanhl\fP() はスレッドセーフである。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/tcgetpgrp.3 b/manual/LDP_man-pages/draft/man3/tcgetpgrp.3 index 00b2dba3..22c69ce8 100644 --- a/manual/LDP_man-pages/draft/man3/tcgetpgrp.3 +++ b/manual/LDP_man-pages/draft/man3/tcgetpgrp.3 @@ -33,25 +33,25 @@ .\" Translated Sat Jul 19 03:06:26 JST 2003 .\" by Akihiro MOTOKI .\" -.TH TCGETPGRP 3 2014\-01\-13 GNU "Linux Programmer's Manual" +.TH TCGETPGRP 3 2015\-08\-08 GNU "Linux Programmer's Manual" .SH 名前 tcgetpgrp, tcsetpgrp \- 端末のフォアグラウンドプロセスグループの 取得/設定を行う .SH 書式 \fB#include \fP -.sp +.PP \fBpid_t tcgetpgrp(int \fP\fIfd\fP\fB);\fP -.sp +.PP \fBint tcsetpgrp(int \fP\fIfd\fP\fB, pid_t \fP\fIpgrp\fP\fB);\fP .SH 説明 .\" The process itself may be a background process. 関数 \fBtcgetpgrp\fP() は、 \fIfd\fP に対応する端末のフォアグラウンドプロセスグループの プロセスグループ ID を返す。 \fIfd\fP で指定された端末は、呼び出しを行うプロセスの制御端末でなければならない。 -.LP +.PP 関数 \fBtcsetpgrp\fP() は、プロセスグループID が \fIpgrp\fP のプロセスグループを \fIfd\fP に対応する端末のフォアグラウンドプロセスグループにする。 このとき、 \fIfd\fP は \fBtcsetpgrp\fP() を呼び出すプロセスの制御端末でなければならない。 さらに、 \fIpgrp\fP は、呼び出しを行うプロセスと同じセッションに 属する (メンバが空でない) プロセスグループでなければならない。 -.LP +.PP \fBtcsetpgrp\fP() がセッションに属するバックグラウンドグループプロセスのメンバから 呼び出され、かつ呼び出しを行うプロセスが \fBSIGTTOU\fP をブロックしたり 無視したりするようになっていない場合、 \fBSIGTTOU\fP シグナルは バックグラウンドプロセスグループの全てのメンバに送られる。 @@ -60,7 +60,7 @@ tcgetpgrp, tcsetpgrp \- 端末のフォアグラウンドプロセスグルー は、その制御端末のフォアグラウンドプロセスグループがあれば そのプロセスグループの ID を返す。 そのようなプロセスグループがなければ、現在プロセスグループ ID として使用されていない、1より大きな何らかの値が返される。 \fIfd\fP が呼び出しを行ったプロセスの制御端末を参照していない場合、 \-1 が返され、 \fIerrno\fP が適切に設定される。 -.LP +.PP 成功した場合、 \fBtcsetpgrp\fP() は 0 を返す。そうでない場合、 \-1 を返し、 \fIerrno\fP を適切に設定する。 .SH エラー .TP @@ -78,10 +78,19 @@ tcgetpgrp, tcsetpgrp \- 端末のフォアグラウンドプロセスグルー \fBEPERM\fP \fIpgrp\fP が有効な値だが、呼び出しを行ったプロセスと同じセッションに属する プロセスのプロセスグループ ID には該当するものがない。 .SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBtcgetpgrp\fP() と \fBtcsetpgrp\fP() はスレッドセーフである。 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lbw24 lb lb +l l l. +Interface Attribute Value +T{ +\fBtcgetpgrp\fP(), +\fBtcsetpgrp\fP() +T} Thread safety MT\-Safe +.TE .SH 準拠 -POSIX.1\-2001. +POSIX.1\-2001, POSIX.1\-2008. .SH 注意 この関数は \fBTIOCGPGRP\fP と \fBTIOCGSID\fP の ioctl 経由で実現されている。 .SS 歴史 @@ -89,6 +98,5 @@ POSIX.1\-2001. .SH 関連項目 \fBsetpgid\fP(2), \fBsetsid\fP(2), \fBcredentials\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/tcgetsid.3 b/manual/LDP_man-pages/draft/man3/tcgetsid.3 deleted file mode 100644 index bf76a77d..00000000 --- a/manual/LDP_man-pages/draft/man3/tcgetsid.3 +++ /dev/null @@ -1,72 +0,0 @@ -.\" Copyright (C) 2002 Andries Brouwer -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Sat Jul 19 03:06:35 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH TCGETSID 3 2014\-01\-13 GNU "Linux Programmer's Manual" -.SH 名前 -tcgetsid \- セッションID を取得する -.SH 書式 -\fB#define _XOPEN_SOURCE 500\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBpid_t tcgetsid(int \fP\fIfd\fP\fB);\fP -.SH 説明 -関数 \fBtcgetsid\fP() は、制御端末として \fIfd\fP に対応する端末を持つカレントセッションのセッションID を返す。 この端末は -\fBtcgetsid\fP() の呼び出しを行うプロセスの制御端末で なければならない。 -.SH 返り値 -\fIfd\fP が呼び出しを行ったセッションの制御端末を参照している場合、 関数 \fBtcgetsid\fP() はこのセッションのセッションID を返す。 -そうでない場合、 \-1 が返され、 \fIerrno\fP が適切に設定される。 -.SH エラー -.TP -\fBEBADF\fP -\fIfd\fP が有効なファイルディスクリプターではない。 -.TP -\fBENOTTY\fP -呼び出しを行ったプロセスが制御端末を持っていない、もしくは 制御端末を持っているが \fIfd\fP で参照されるものとは異なる。 -.SH バージョン -\fBtcgetsid\fP() は、バージョン 2.1 以降の glibc で提供されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBtcgetsid\fP() 関数はスレッドセーフではない。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -この関数は \fBTIOCGSID\fP \fBioctl\fP(2) 経由で実現されており、 Linux 2.1.71 以降で存在する。 -.SH 関連項目 -\fBgetsid\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/telldir.3 b/manual/LDP_man-pages/draft/man3/telldir.3 deleted file mode 100644 index 2ac2a943..00000000 --- a/manual/LDP_man-pages/draft/man3/telldir.3 +++ /dev/null @@ -1,88 +0,0 @@ -.\" 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 17:48:42 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated 1997-12-24, HIROFUMI Nishizuka -.\" Updated & Modified 2005-02-19, Yuichi SATO -.\" Updated 2009-04-24, Akihiro MOTOKI , LDP v3.20 -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" -.TH TELLDIR 3 2013\-09\-02 "" "Linux Programmer's Manual" -.SH 名前 -telldir \- ディレクトリストリーム中の現在位置を返す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBlong telldir(DIR *\fP\fIdirp\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBtelldir\fP(): _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE -.SH 説明 -\fBtelldir\fP() 関数は、ディレクトリストリーム \fIdirp\fP に結びつけられた 現在位置を返す。 -.SH 返り値 -成功した場合、 \fBtelldir\fP() 関数はディレクトリストリーム中の現在位置を返す。 エラーの場合、\-1 が返されて、 \fIerrno\fP -が適切に設定される。 -.SH エラー -.TP -\fBEBADF\fP -ディレクトリストリームディスクリプター \fIdirp\fP が無効である。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBtelldir\fP() 関数はスレッドセーフである。 -.SH 準拠 -4.3BSD, POSIX.1\-2001. -.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/ -初期のファイルシステムでは、 \fBtelldir\fP() -が返す値は単なるディレクトリ内のファイルオフセットであった。新しめのファイルシステムでは、ディレクトリを表現するのに、フラットなテーブルではなく、ツリーやハッシュ構造が使用されている。このようなファイルシステムでは、 -\fBtelldir\fP() が返す値 (および \fBreaddir\fP(3) が内部で使用する値) -は、ディレクトリ内での値を示すのにファイルシステム実装が使っている "cookie" -となる。アプリケーションプログラムでは、必ずこの値を内容を意識せず単なる値として扱うべきであり、その内容について前提を持つべきでは「ない」。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/tempnam.3 b/manual/LDP_man-pages/draft/man3/tempnam.3 index 733f0c21..5baedc2f 100644 --- a/manual/LDP_man-pages/draft/man3/tempnam.3 +++ b/manual/LDP_man-pages/draft/man3/tempnam.3 @@ -38,29 +38,33 @@ .\" Updated 2006-07-26, Akihiro MOTOKI , LDP v2.36 .\" Updated 2013-07-22, Akihiro MOTOKI .\" -.TH TEMPNAM 3 2014\-02\-27 "" "Linux Programmer's Manual" +.TH TEMPNAM 3 2017\-09\-15 "" "Linux Programmer's Manual" .SH 名前 tempnam \- テンポラリファイルの名前を作成する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBchar *tempnam(const char *\fP\fIdir\fP\fB, const char *\fP\fIpfx\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBtempnam\fP(): _BSD_SOURCE || _SVID_SOURCE +.RE +.PP +\fBtempnam\fP(): + Since glibc 2.19: + _DEFAULT_SOURCE + Glibc 2.19 and earlier: + _BSD_SOURCE || _SVID_SOURCE .SH 説明 \fI決してこの関数を使用しないこと。\fP 代わりに \fBmkstemp\fP(3) か \fBtmpfile\fP(3) を使うこと。 - +.PP \fBtempnam\fP() 関数はファイル名として正しい文字列へのポインターを返す。 このファイル名を持つファイルは、 \fBtempnam\fP() がチェックした時点においては存在しない (しなかった)。 \fIpfx\fP が NULL でない 5 バイト以内の文字列であれば、 生成されるパス名のうちのファイル名の部分は \fIpfx\fP から始まるものになる。 生成されるディレクトリの部分は、「適切」でなければならない (大抵の場合、「適切」であるためにはまず少なくとも 書き込み可能でなければならない)。 - +.PP 適切なディレクトリの探索は、以下の手順にしたがって行われる。 .TP 3 a) @@ -83,6 +87,17 @@ d) .TP \fBENOMEM\fP 保存領域の割り当てに失敗した。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lb +l l l. +Interface Attribute Value +T{ +\fBtempnam\fP() +T} Thread safety MT\-Safe env +.TE .SH 準拠 SVr4, 4.3BSD, POSIX.1\-2001. POSIX.1\-2008 は \fBtempnam\fP() を廃止予定としている。 .SH 注意 @@ -91,25 +106,25 @@ SVr4, 4.3BSD, POSIX.1\-2001. POSIX.1\-2008 は \fBtempnam\fP() を廃止予定 で作成したり、シンボリックリンクを作成したりする可能性がある。 これはセキュリティホールにつながる可能性がある。 そのような可能性を回避するためには、 \fBopen\fP(2) の \fBO_EXCL\fP フラグを使ってパス名をオープンすればよい。 もっといいのは、 \fBmkstemp\fP(3) や \fBtmpfile\fP(3) を使うことである。 - +.PP SUSv2 では \fBTMPDIR\fP に付いて言及されていない。 glibc は、プログラムが set\-user\-ID されていない場合に限ってこれを用いる。 SVr4 では \fBd)\fP で使用されるディレクトリを \fI/tmp\fP と定めている (glibc もこの通りである)。 -.LP +.PP パス名を返すのに使用するメモリーを動的に確保するので、 \fBtmpnam\fP(3) と違い、 \fBtempnam\fP() はリエントラントであり、スレッドセーフである。 -.LP +.PP \fBtempnam\fP() 関数は最大 \fBTMP_MAX\fP 回まで、呼び出される度に異なる文字列を作成する (\fBTMP_MAX\fP は \fI\fP で定義されている)。 もし \fBTMP_MAX\fP 回以上呼び出された場合、動作は実装依存である。 -.LP +.PP \fBtempnam\fP() は最大で \fIpfx\fP の先頭 5 バイトを使用する。 - -他と重ならない名前が見つけられなかった場合、glibc の \fBtempnam\fP() の実装はエラー \fBEEXIST\fP で失敗する。 +.PP +The glibc implementation of \fBtempnam\fP() fails with the error \fBEEXIST\fP +upon failure to find a unique name. .SH バグ 「適切」という言葉の正確な意味は定義されていない。 ディレクトリに対してどの程度のアクセス権限が必要なのかは指定されていない。 .SH 関連項目 \fBmkstemp\fP(3), \fBmktemp\fP(3), \fBtmpfile\fP(3), \fBtmpnam\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/termios.3 b/manual/LDP_man-pages/draft/man3/termios.3 index 0cad7372..552c6e9e 100644 --- a/manual/LDP_man-pages/draft/man3/termios.3 +++ b/manual/LDP_man-pages/draft/man3/termios.3 @@ -1,6 +1,6 @@ -.\" Copyright (c) 1993 Michael Haardt -.\" (michael@moria.de) +.\" Copyright (c) 1993 Michael Haardt (michael@moria.de) .\" Fri Apr 2 11:32:09 MET DST 1993 +.\" Copyright (c) 2006-2015, Michael Kerrisk .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) .\" This is free documentation; you can redistribute it and/or @@ -55,7 +55,7 @@ .\" Updated 2007-05-01, Akihiro MOTOKI, LDP v2.46 .\" Updated 2007-09-06, Akihiro MOTOKI, LDP v2.64 .\" -.TH TERMIOS 3 2015\-02\-01 Linux "Linux Programmer's Manual" +.TH TERMIOS 3 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 termios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow, cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed \- @@ -63,55 +63,58 @@ cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed \- .SH 書式 .nf \fB#include \fP -.br \fB#include \fP -.sp +.PP \fBint tcgetattr(int \fP\fIfd\fP\fB, struct termios *\fP\fItermios_p\fP\fB);\fP -.sp +.PP \fBint tcsetattr(int \fP\fIfd\fP\fB, int \fP\fIoptional_actions\fP\fB,\fP \fB const struct termios *\fP\fItermios_p\fP\fB);\fP -.sp +.PP \fBint tcsendbreak(int \fP\fIfd\fP\fB, int \fP\fIduration\fP\fB);\fP -.sp +.PP \fBint tcdrain(int \fP\fIfd\fP\fB);\fP -.sp +.PP \fBint tcflush(int \fP\fIfd\fP\fB, int \fP\fIqueue_selector\fP\fB);\fP -.sp +.PP \fBint tcflow(int \fP\fIfd\fP\fB, int \fP\fIaction\fP\fB);\fP -.sp +.PP \fBvoid cfmakeraw(struct termios *\fP\fItermios_p\fP\fB);\fP -.sp +.PP \fBspeed_t cfgetispeed(const struct termios *\fP\fItermios_p\fP\fB);\fP -.sp +.PP \fBspeed_t cfgetospeed(const struct termios *\fP\fItermios_p\fP\fB);\fP -.sp +.PP \fBint cfsetispeed(struct termios *\fP\fItermios_p\fP\fB, speed_t \fP\fIspeed\fP\fB);\fP -.sp +.PP \fBint cfsetospeed(struct termios *\fP\fItermios_p\fP\fB, speed_t \fP\fIspeed\fP\fB);\fP -.sp +.PP \fBint cfsetspeed(struct termios *\fP\fItermios_p\fP\fB, speed_t \fP\fIspeed\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBcfsetspeed\fP(), \fBcfmakeraw\fP(): _BSD_SOURCE +.RE +.PP +\fBcfsetspeed\fP(), +\fBcfmakeraw\fP(): + Since glibc 2.19: + _DEFAULT_SOURCE + Glibc 2.19 and earlier: + _BSD_SOURCE .SH 説明 termios 関数群は、非同期通信ポートを制御するための汎用 ターミナルインターフェースである。 .SS "termios 構造体" -.LP ここに示されている関数の多くは、引き数に \fItermios_p\fP を用いる。 この引き数は \fItermios\fP 構造体へのポインターである。 この構造体には少なくとも以下に示すメンバが含まれる: -.sp +.PP .in +4n -.nf +.EX tcflag_t c_iflag; /* input modes */ tcflag_t c_oflag; /* output modes */ tcflag_t c_cflag; /* control modes */ tcflag_t c_lflag; /* local modes */ cc_t c_cc[NCCS]; /* special characters */ -.fi +.EE .in .PP 以下に、これらのフィールドに割り当て可能な値について説明する。 最初の 4 つのビットマスクフィールドでは、 @@ -137,9 +140,17 @@ POSIX.1\-2001 の XSI 拡張で 規定されていることを意味する。 フレームエラーおよびパリティエラーを無視する。 .TP \fBPARMRK\fP -\fBIGNPAR\fP が設定されていない場合、パリティエラーあるいはフレームエラー の発生した文字の前に \e377 \e0 -を付加する。\fBIGNPAR\fP も \fBPARMRK\fP も 設定されていない場合、パリティエラーあるいはフレームエラーの発生した文字を \e0 -として読み込む。 +If this bit is set, input bytes with parity or framing errors are marked +when passed to the program. This bit is meaningful only when \fBINPCK\fP is +set and \fBIGNPAR\fP is not set. The way erroneous bytes are marked is with +two preceding bytes, \e377 and \e0. Thus, the program actually reads three +bytes for one erroneous byte received from the terminal. If a valid byte +has the value \e377, and \fBISTRIP\fP (see below) is not set, the program might +confuse it with the prefix that marks a parity error. Therefore, a valid +byte \e377 is passed to the program as two bytes, \e377 \e377, in this case. +.IP +If neither \fBIGNPAR\fP nor \fBPARMRK\fP is set, read a character with a parity +error or framing error as \e0. .TP \fBINPCK\fP 入力のパリティチェックを有効にする。 @@ -212,9 +223,10 @@ CR の遅延を設定する。値は \fBCR0\fP (遅延なし), \fBCR1\fP, \fBCR2 \fB_SVID_SOURCE\fP か \fB_XOPEN_SOURCE\fP が必要] .TP \fBTABDLY\fP -水平タブ (horizontal tab) の遅延を設定する。 値は \fBTAB0\fP (遅延なし), \fBTAB1\fP, \fBTAB2\fP, \fBTAB3\fP -(\fBXTABS\fP) である。 [\fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP か \fB_XOPEN_SOURCE\fP が必要] -XTAB3 (これは XTABS と同じである) の値はタブをスペース何個に変換するかを示す (タブは 8 桁毎に止まる)。 +Horizontal tab delay mask. Values are \fBTAB0\fP, \fBTAB1\fP, \fBTAB2\fP, \fBTAB3\fP +(or \fBXTABS\fP, but see the \fBBUGS\fP section). A value of TAB3, that is, +XTABS, expands tabs to spaces (with tab stops every eight columns). +[requires \fB_BSD_SOURCE\fP or \fB_SVID_SOURCE\fP or \fB_XOPEN_SOURCE\fP] .TP \fBBSDLY\fP 後退 (backspace) の遅延を設定する。 値は \fBBS0\fP (遅延なし) あるいは \fBBS1\fP である。 (実装されたことはない) @@ -235,7 +247,7 @@ XTAB3 (これは XTABS と同じである) の値はタブをスペース何個 \fBCBAUDEX\fP (POSIX にはない) 追加のボーレートマスク (1 ビット)。 \fBCBAUD\fP に含まれている。 [\fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP が必要] -.sp +.IP (POSIX では、 \fItermios\fP 構造体に格納されたボーレートは正確なものではなく、 ボーレートを操作するために \fBcfgetispeed\fP() と \fBcfsetispeed\fP() が提供されている。 \fIc_cflag\fP 内の \fBCBAUD\fP で選択されたビットを使うシステムもあれば、 \fIsg_ispeed\fP や \fIsg_ospeed\fP といった独立したフィールドを使うものもある。) @@ -310,11 +322,11 @@ INTR, QUIT, SUSP, DSUSP の文字を受信した時、対応するシグナル \fBICANON\fP も同時に設定された場合、 ECHO が設定されていなくても NL 文字をエコーする。 .TP \fBECHOCTL\fP -(POSIX にはない) \fBECHO\fP も同時に設定された場合、TAB, NL, START, STOP 以外の -端末特殊文字が \fB^X\fP としてエコーされる。 -X は特殊文字に ASCII コードで 0x40 を足した文字である。 -例えば文字 0x08 (BS) は \fB^H\fP とエコーされる。 -[\fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP が必要] +(not in POSIX) If \fBECHO\fP is also set, terminal special characters other +than TAB, NL, START, and STOP are echoed as \fB\(haX\fP, where X is the +character with ASCII code 0x40 greater than the special character. For +example, character 0x08 (BS) is echoed as \fB\(haH\fP. [requires +\fB_BSD_SOURCE\fP or \fB_SVID_SOURCE\fP] .TP \fBECHOPRT\fP (POSIX にはない) \fBICANON\fP および \fBECHO\fP が同時に設定されている場合、 @@ -440,19 +452,18 @@ System V で (シェルのジョブ制御の前にあった) \fIshell layers\fP \fBVWERASE\fP (POSIX にはない; 027, ETB, Ctrl\-W) 単語消去 (WERASE)。 \fBICANON\fP と \fBIEXTEN\fP がセットされている場合に認識し、入力には渡されない。 -.LP +.PP 対応する \fIc_cc\fP 要素の値を \fB_POSIX_VDISABLE\fP に設定することで、 それぞれの端末制御文字を無効にすることができる。 -.LP +.PP 上記のシンボルの示す値は全て異なる。ただし、 \fBVTIME\fP, \fBVMIN\fP はそれぞれ \fBVEOL\fP, \fBVEOF\fP と同じ値である。 非カノニカルモードでは、特殊文字の意味は タイムアウトの意味に変わる。 \fBVMIN\fP と \fBVTIME\fP の説明については、 下記の非カノニカルモードの説明を参照のこと。 .SS 端末の設定の取得と変更 -.PP \fBtcgetattr\fP() は \fIfd\fP に関するパラメーターを取得し、\fItermios_p\fP が参照する構 造体 \fItermios\fP に設定する。この関数はバックグラウンドプロセスから 呼ばれることもあるが、この場合、端末の属性はフォアグラウンドプロセス によって変化することもある。 -.LP +.PP \fBtcsetattr\fP() は端末に関連したパラメーターを設定する (ハードウェアの設定に必要で、ここで 設定できないものを除く)。設定には \fItermios_p\fP が参照する \fItermios\fP 構造体を用いる。 \fIoptional_actions\fP には変更が有効となるタイミングを設定する: @@ -463,10 +474,10 @@ System V で (シェルのジョブ制御の前にあった) \fIshell layers\fP .IP \fBTCSAFLUSH\fP パラメーターを変更する前に、 \fIfd\fP への出力がすべて転送され、受信したがまだ読み込んでいないすべての 入力が破棄される。 .SS カノニカルモードと非カノニカルモード -\fIc_lflag\fP の \fBICANON\fP フラグの設定により、端末がカノニカルモードで動作するかが決定される。 \fBICANON\fP -がセットされた場合、カノニカルモード (canonical mode) となり、 セットされない場合、非カノニカルモード (noncanonical -mode) となる。 デフォルトでは、 \fBICANON\fP はセットされる。 - +The setting of the \fBICANON\fP canon flag in \fIc_lflag\fP determines whether the +terminal is operating in canonical mode (\fBICANON\fP set) or noncanonical mode +(\fBICANON\fP unset). By default, \fBICANON\fP is set. +.PP カノニカルモードでは、以下のような動作となる。 .IP * 2 入力は行単位に行われる。 行区切り文字が打ち込まれた時点で、入力行が利用可能となる。 行区切り文字は NL, EOL, EOL2 および行頭での EOF @@ -476,10 +487,21 @@ mode) となる。 デフォルトでは、 \fBICANON\fP はセットされる LNEXT も効果を持つ)。 \fBread\fP(2) は最大でも 1行の入力しか返さない。 \fBread\fP(2) が要求したバイト数が現在の入力行のバイト数よりも少ない場合、 要求したのと同じバイト数だけが読み込まれ、 残りの文字は次回の \fBread\fP(2) で読み込まれる。 +.IP * 2 +The maximum line length is 4096 chars (including the terminating newline +character); lines longer than 4096 chars are truncated. After 4095 +characters, input processing (e.g., \fBISIG\fP and \fBECHO*\fP processing) +continues, but any input data after 4095 characters up to (but not +including) any terminating newline is discarded. This ensures that the +terminal can always receive more input until at least one line can be read. .PP -非カノニカルモードでは、入力は即座に利用可能となり (ユーザーは行区切り文字を打ち込む必要はない)、入力処理は実行されず、行編集は無効となる。 MIN -(\fIc_cc[VMIN]\fP) と TIME (\fIc_cc[VTIME]\fP) の設定により、 \fBread\fP(2) -が完了する条件が決定される。4種類の場合がある: +In noncanonical mode input is available immediately (without the user having +to type a line\-delimiter character), no input processing is performed, and +line editing is disabled. The read buffer will only accept 4095 chars; this +provides the necessary space for a newline char if the input mode is +switched to canonical. The settings of MIN (\fIc_cc[VMIN]\fP) and TIME +(\fIc_cc[VTIME]\fP) determine the circumstances in which a \fBread\fP(2) +completes; there are four distinct cases: .TP MIN == 0, TIME == 0 (ポーリングリード) データが利用可能であれば、 \fBread\fP(2) はすぐに返る。このときの返り値は、そのとき利用可能なバイト数か \fBread\fP(2) @@ -517,28 +539,32 @@ POSIX では、 \fBO_NONBLOCK\fP ファイル状態フラグが MIN や TIME の また、利用可能なデータがない場合、 POSIX では、は非カノニカルモードの \fBread\fP(2) が 0 を返す方法も、 \fIerrno\fP に \fBEAGAIN\fP を設定して \-1 を返すことも認められている。 .SS "Raw mode" -.LP \fBcfmakeraw\fP() は、端末を昔の Version 7 端末ドライバの "raw" モードのように設定する。 入力は文字単位に可能であり、エコーが無効となり、 端末の入出力文字に対する特殊処理はすべて無効となる。 端末の属性は以下のように設定される: -.nf - - termios_p\->c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP - | INLCR | IGNCR | ICRNL | IXON); - termios_p\->c_oflag &= ~OPOST; - termios_p\->c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN); - termios_p\->c_cflag &= ~(CSIZE | PARENB); - termios_p\->c_cflag |= CS8; -.fi +.PP +.in +4n +.EX +termios_p\->c_iflag &= \(ti(IGNBRK | BRKINT | PARMRK | ISTRIP + | INLCR | IGNCR | ICRNL | IXON); +termios_p\->c_oflag &= \(tiOPOST; +termios_p\->c_lflag &= \(ti(ECHO | ECHONL | ICANON | ISIG | IEXTEN); +termios_p\->c_cflag &= \(ti(CSIZE | PARENB); +termios_p\->c_cflag |= CS8; +.EE +.in +.\" .SS ライン制御 -.LP -\fBtcsendbreak\fP() は端末が非同期のシリアルデータ転送を用いている場合に、 連続した0のビット列を一定間隔で転送する。 -\fIduration\fP が 0 の場合は、0 のビットを 0.25 秒以上、 0.5 秒以下の間隔で転送する。 \fIduration\fP が 0 -でない場合は、 0 のビットを実装依存の時間間隔で送る。 -.LP +\fBtcsendbreak\fP() transmits a continuous stream of zero\-valued bits for a +specific duration, if the terminal is using asynchronous serial data +transmission. If \fIduration\fP is zero, it transmits zero\-valued bits for at +least 0.25 seconds, and not more than 0.5 seconds. If \fIduration\fP is not +zero, it sends zero\-valued bits for some implementation\-defined length of +time. +.PP 端末が非同期のシリアルデータ転送モードでない場合、 \fBtcsendbreak\fP() は何も行わずに戻る。 -.LP +.PP \fBtcdrain\fP() は \fIfd\fP が行っている出力の転送が完了するまで待つ。 -.LP +.PP \fBtcflush\fP() は \fIfd\fP が行っているデータの出力でまだ転送されていないもの、あるいは受信し たがまだ入力していないものを破棄する。いずれを行うかは \fIqueue_selector\fP の値で定める: .IP \fBTCIFLUSH\fP @@ -547,7 +573,7 @@ POSIX では、 \fBO_NONBLOCK\fP ファイル状態フラグが MIN や TIME の 書いたが送信していないデータをフラッシュする。 .IP \fBTCIOFLUSH\fP 受信したが読んでいないデータ・書いたが送信していないデータ両方 をフラッシュする。 -.LP +.PP \fBtcflow\fP() は \fIfd\fP で指定されたオブジェクトにおけるデータの送信あるいは受信を一時的に中断する。 送信と受信のどちらかは、 \fIaction\fPで決まる: .IP \fBTCOOFF\fP @@ -558,23 +584,23 @@ POSIX では、 \fBO_NONBLOCK\fP ファイル状態フラグが MIN や TIME の STOP 文字の送信。 STOP 文字は端末デバイスからシステムへのデータ送信を停止する。 .IP \fBTCION\fP START 文字の送信。 START 文字は端末デバイスからシステムへのデータ送信を開始する。 -.LP +.PP 端末ファイルがオープンされたときのデフォルトでは、 入力も出力も中断されていない。 .SS ライン速度 ボーレート関数は \fItermios\fP 構造体中の入出力ボーレートを 取得、設定するために提供される。 設定された値は \fBtcsetattr\fP() の呼び出しが成功するまでは有効ではない。 - +.PP 速度を \fBB0\fP に設定した場合、モデムは停止 (hang up) する。 \fBB38400\fP に該当する実際のビットレートは \fBsetserial\fP(8) で 変更できる。 -.LP +.PP 入力および出力ボーレートは \fItermios\fP 構造体に格納される。 -.LP +.PP \fBcfgetospeed\fP() は \fItermios_p\fP が示している \fItermios\fP 構造体に格納されている 出力ボーレートを返す。 -.LP +.PP \fBcfsetospeed\fP() は \fItermios_p\fP で示されている \fItermios\fP 構造体中の出力ボーレートを \fIspeed\fP に設定する。値は以下のいずれかでなければならない: +.PP .nf - \fB B0 B50 B75 @@ -594,51 +620,79 @@ START 文字の送信。 START 文字は端末デバイスからシステムへ B57600 B115200 B230400\fP - .fi +.PP 0ボー (\fBB0\fP) は接続の中断に用いられる。 B0が指定された場合、モデムの制御線は使用されない状態になり、一般にはこれで 接続が切断される。 \fBCBAUDEX\fP はPOSIX.1で定義されている速度の範囲外 (57600 およびそれ以上) を設定する。すなわち例えば \fBB57600\fP & \fBCBAUDEX\fP は 0 でない。 -.LP +.PP \fBcfgetispeed\fP() は \fItermios\fP 構造体中の入力ボーレートを返す。 -.LP +.PP \fBcfsetispeed\fP() は \fItermios\fP 構造体中の入力ボーレートを \fIspeed\fP に設定する。 \fIspeed\fP には、上述の \fBcfsetospeed\fP() のボーレート定数 \fBBnnn\fP のいずれか一つを指定しなければならない。 入力ボーレートが 0 に設定された場合、入力ボーレートは出力ボーレート と同じ値となる。 -.LP +.PP \fBcfsetspeed\fP() は 4.4BSD による拡張である。この関数は \fBcfsetispeed\fP() と同じ引き数をとり、入出力両方の速度を設定する。 .SH 返り値 -.LP \fBcfgetispeed\fP() は \fItermios\fP 構造体中の入力ボーレートを返す。 -.LP +.PP \fBcfgetospeed\fP() は \fItermios\fP 構造体中の出力ボーレートを返す。 -.LP +.PP 他のすべての関数の戻り値: .IP 0 実行成功。 .IP \-1 実行失敗。 \fIerrno\fP がエラーの種類を示す。 -.LP +.PP \fBtcsetattr\fP() は \fIなんらかの\fP 変更要求が成功した場合に成功を返すことに注意。 従って、複数の変更を行った場合には、引き続いて \fBtcgetattr\fP() を呼び出して全ての変更が実行されているかを確認する必要があるかもしれない。 .SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBtcgetattr\fP(), \fBtcsetattr\fP(), \fBtcsendbreak\fP(), \fBtcdrain\fP(), -\fBtcflush\fP(), \fBtcflow\fP(), \fBcfmakeraw\fP(), \fBcfgetispeed\fP(), -\fBcfgetospeed\fP(), \fBcfsetispeed\fP(), \fBcfsetospeed\fP(), \fBcfsetspeed\fP() -はスレッドセーフである。 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.nh +.ad l +.TS +allbox; +lbw36 lb lb +l l l. +Interface Attribute Value +T{ +\fBtcgetattr\fP(), +\fBtcsetattr\fP(), +\fBtcdrain\fP(), +\fBtcflush\fP(), +\fBtcflow\fP(), +\fBtcsendbreak\fP(), +\fBcfmakeraw\fP(), +\fBcfgetispeed\fP(), +\fBcfgetospeed\fP(), +\fBcfsetispeed\fP(), +\fBcfsetospeed\fP(), +\fBcfsetspeed\fP() +T} Thread safety MT\-Safe +.TE +.\" FIXME: The markings are different from that in the glibc manual. +.\" markings in glibc manual are more detailed: +.\" +.\" tcsendbreak: MT-Unsafe race:tcattr(filedes)/bsd +.\" tcflow: MT-Unsafe race:tcattr(filedes)/bsd +.\" +.\" glibc manual says /bsd indicate the preceding marker only applies +.\" when the underlying kernel is a BSD kernel. +.\" So, it is safety in Linux kernel. +.ad +.hy .SH 準拠 \fBtcgetattr\fP(), \fBtcsetattr\fP(), \fBtcsendbreak\fP(), \fBtcdrain\fP(), \fBtcflush\fP(), \fBtcflow\fP(), \fBcfgetispeed\fP(), \fBcfgetospeed\fP(), \fBcfsetispeed\fP(), \fBcfsetospeed\fP() は POSIX.1\-2001 で規定されている。 - +.PP \fBcfmakeraw\fP() と \fBcfsetspeed\fP() は非標準だが、BSD では利用可能である。 .SH 注意 UNIX\ V7 とその後のいくつかのシステムでは、ボーレートの 14 個のリストである B0, ..., B9600 の後ろに EXTA, EXTB ("External A" と "External B") の 2 つを 追加している。 多くのシステムではさらに高速なボーレートのためにリストを拡張している。 -.LP +.PP .\" libc4 until 4.7.5, glibc for sysv: EINVAL for duration > 0. .\" libc4.7.6, libc5, glibc for unix: duration in ms. .\" glibc for bsd: duration in us @@ -648,10 +702,16 @@ UNIX\ V7 とその後のいくつかのシステムでは、ボーレートの 1 DU, Tru64 は \fIduration\fP ミリ秒のブレークを送信する。 FreeBSD, NetBSD, HP\-UX, MacOS は \fIduration\fP の値を無視する。 Solaris と UnixWare では、非ゼロの \fIduration\fP を指定した \fBtcsendbreak\fP() の振る舞いは \fBtcdrain\fP() と同様である。 +.SH バグ +.\" kernel 77e5bff1640432f28794a00800955e646dcd7455 +.\" glibc 573963e32ffac46d9891970ddebde2ac3212c5c0 +On the Alpha architecture before Linux 4.16 (and glibc before 2.28), the +\fBXTABS\fP value was different from \fBTAB3\fP and it was ignored by the \fBN_TTY\fP +line discipline code of the terminal driver as a result (because as it +wasn't part of the \fBTABDLY\fP mask). .SH 関連項目 -\fBreset\fP(1), \fBsetterm\fP(1), \fBstty\fP(1), \fBtput\fP(1), \fBtset\fP(1), -\fBconsole_ioctl\fP(4), \fBtty_ioctl\fP(4), \fBsetserial\fP(8) +\fBreset\fP(1), \fBsetterm\fP(1), \fBstty\fP(1), \fBtput\fP(1), \fBtset\fP(1), \fBtty\fP(1), +\fBioctl_console\fP(2), \fBioctl_tty\fP(2), \fBsetserial\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/tgamma.3 b/manual/LDP_man-pages/draft/man3/tgamma.3 deleted file mode 100644 index 4fa4310e..00000000 --- a/manual/LDP_man-pages/draft/man3/tgamma.3 +++ /dev/null @@ -1,135 +0,0 @@ -.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" Based on glibc infopages -.\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk -.\" -.\" Modified 2004-11-15, fixed error noted by Fabian Kreutz -.\" -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Sun Sep 22 09:31:52 2002 -.\" by Akihiro MOTOKI -.\" Updated & Modified Sat Feb 12 12:00:00 2005 -.\" by SAITOH Akira -.\" Updated 2008-09-16, Akihiro MOTOKI -.\" -.TH TGAMMA 3 2014\-12\-31 GNU "Linux Programmer's Manual" -.SH 名前 -tgamma, tgammaf, tgammal \- 本当のガンマ関数 -.SH 書式 -\fB#include \fP -.sp -\fBdouble tgamma(double \fP\fIx\fP\fB);\fP -.br -\fBfloat tgammaf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double tgammal(long double \fP\fIx\fP\fB);\fP -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBtgamma\fP(), \fBtgammaf\fP(), \fBtgammal\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -ガンマ関数は以下のように定義される: -.sp - Gamma(x) = t^(x\-1) e^\-t dt の 0 から無限大までの積分 -.sp -この関数は正でない整数を除くすべての実数に対して定義されている。 非負の整数 \fIm\fP に関して、以下が成立する: -.sp - Gamma(m+1) = m! -.sp -より一般的には、すべての \fIx\fP に関して以下が成立する: -.sp - Gamma(x+1) = x * Gamma(x) -.sp -さらに、極を除くすべての \fIx\fP で次式も成立する: -.sp - Gamma(x) * Gamma(1 \- x) = PI / sin(PI * x) -.PP -.SH 返り値 -成功すると、これらの関数は Gamma(x) を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が正の無限大の場合、正の無限大が返される。 - -\fIx\fP が負の整数か負の無限大の場合、領域エラー (domain error) が発生し、 NaN が返される。 - -結果がオーバーフローする場合、範囲エラー (range error) が発生し、 各関数はそれぞれ \fBHUGE_VAL\fP, \fBHUGE_VALF\fP, -\fBHUGE_VALL\fP, を返す。この際、数学的に正しい符号が付与される。 - -結果がアンダーフローする場合、範囲エラー (range error) が発生し、 関数は 0 をを返す。この際、数学的に正しい符号が付与される。 - -\fIx\fP が \-0 か +0 の場合、極エラー (pole error) が発生し、 各関数はそれぞれ \fBHUGE_VAL\fP, -\fBHUGE_VALF\fP, \fBHUGE_VALL\fP, を返す。 0 と同じ符号が付与される。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー: \fIx\fP が負の整数か負の無限大 -\fIerrno\fP に \fBEDOM\fP が設定される。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる -(「バグ」の節を参照)。 -.TP -極エラー (pole error): \fIx\fP が +0 か \-0 -\fIerrno\fP に \fBERANGE\fP が設定される。 0 による除算 (divide\-by\-zero) 浮動小数点例外 -(\fBFE_DIVBYZERO\fP) が上がる。 -.TP -範囲エラー (range error): 結果のオーバーフロー -\fIerrno\fP に \fBERANGE\fP が設定される。 オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 -.PP -glibc では、C99 や POSIX.1\-2001 で規定されていない以下のエラーも 起こり得る。 -.TP -範囲エラー (range error): 結果のアンダーフロー -.\" e.g., tgamma(-172.5) on glibc 2.8/x86-32 -.\" .I errno -.\" is set to -.\" .BR ERANGE . -アンダーフロー浮動小数点例外 (\fBFE_UNDERFLOW\fP) が上がる。 -.IP -.\" FIXME . Is it intentional that errno is not set: -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6810 -.\" -.\" glibc (as at 2.8) also supports and an inexact -.\" exception for various cases. -この場合は \fIerrno\fP は設定されない。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 注意 -この関数を「本当の (true) ガンマ関数」と呼ばなければならなかった。 なぜなら、他の値を返す \fBgamma\fP(3) -という関数がすでに存在するからである (詳細については \fBgamma\fP(3) を参照)。 -.SH バグ -.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=6809 -バージョン 2.18 より前の glibc の実装では、 \fIx\fP が負の無限大の場合、 \fIerrno\fP に \fBEDOM\fP が設定されなかった。 - -glibc バージョン 2.3.3 以前では、 引き数に +0 や \-0 を渡すと、極エラーではなく、 領域エラーを間違って発生していた -(領域エラーの場合、 \fIerrno\fP に \fBEDOM\fP を設定され、 \fBFE_INVALID\fP 例外が発生する)。 -.SH 関連項目 -\fBgamma\fP(3), \fBlgamma\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/timegm.3 b/manual/LDP_man-pages/draft/man3/timegm.3 deleted file mode 100644 index edcb2b11..00000000 --- a/manual/LDP_man-pages/draft/man3/timegm.3 +++ /dev/null @@ -1,93 +0,0 @@ -.\" Copyright (C) 2001 Andries Brouwer -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 NAKANO Takeo all rights reserved. -.\" Translated Thu 3 Jan 2002 by NAKANO Takeo -.\" -.TH TIMEGM 3 2013\-07\-04 GNU "Linux Programmer's Manual" -.SH 名前 -timegm, timelocal \- gmtime と localtime の逆関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBtime_t timelocal(struct tm *\fP\fItm\fP\fB);\fP -.sp -\fBtime_t timegm(struct tm *\fP\fItm\fP\fB);\fP -.sp -.fi -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBtimelocal\fP(), \fBtimegm\fP(): _BSD_SOURCE || _SVID_SOURCE -.SH 説明 -\fBtimelocal\fP() 関数と \fBtimegm\fP() 関数は、それぞれ \fBlocaltime\fP(3) 関数と \fBgmtime\fP(3) -関数の逆関数である。 -.SH 準拠 -これらの関数は非標準で GNU の拡張である。 BSD 系にも存在する。 これらの使用は避けること。「注意」参照。 -.SH 注意 -\fBtimelocal\fP() 関数は POSIX の標準関数 \fBmktime\fP(3) と同じものである。 ので、これを使う理由はないはずである。 -.LP -\fBtimegm\fP() を移植性があるようなかたちで実現するには、 \fBTZ\fP 環境変数を UTC に設定してから \fBmktime\fP(3) -を呼んで、 \fBTZ\fP の値を取得すればよい。 例えば次のようになるだろう。 - -.in +4n -.nf -#include -#include - -time_t my_timegm (struct tm *tm) -{ - time_t ret; - char *tz; - - tz = getenv("TZ"); - if (tz) - tz = strdup(tz); - setenv("TZ", "", 1); - tzset(); - ret = mktime(tm); - if (tz) { - setenv("TZ", tz, 1); - free(tz); - } else - unsetenv("TZ"); - tzset(); - return ret; -} -.fi -.in -.SH 関連項目 -\fBgmtime\fP(3), \fBlocaltime\fP(3), \fBmktime\fP(3), \fBtzset\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/timeradd.3 b/manual/LDP_man-pages/draft/man3/timeradd.3 index d8961bd6..afaa5887 100644 --- a/manual/LDP_man-pages/draft/man3/timeradd.3 +++ b/manual/LDP_man-pages/draft/man3/timeradd.3 @@ -35,56 +35,60 @@ .\" Translated 2007-10-16, Akihiro MOTOKI , LDP v2.66 .\" Updated 2009-04-24, Akihiro MOTOKI , LDP v3.20 .\" -.TH TIMERADD 3 2010\-02\-25 Linux "Linux Programmer's Manual" +.TH TIMERADD 3 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 timeradd, timersub, timercmp, timerclear, timerisset \- timeval の操作 .SH 書式 .nf \fB#include \fP - +.PP \fBvoid timeradd(struct timeval *\fP\fIa\fP\fB, struct timeval *\fP\fIb\fP\fB,\fP \fB struct timeval *\fP\fIres\fP\fB);\fP - +.PP \fBvoid timersub(struct timeval *\fP\fIa\fP\fB, struct timeval *\fP\fIb\fP\fB,\fP \fB struct timeval *\fP\fIres\fP\fB);\fP - +.PP \fBvoid timerclear(struct timeval *\fP\fItvp\fP\fB);\fP - +.PP \fBint timerisset(struct timeval *\fP\fItvp\fP\fB);\fP - +.PP \fBint timercmp(struct timeval *\fP\fIa\fP\fB, struct timeval *\fP\fIb\fP\fB, \fP\fICMP\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -上記の全ての関数: _BSD_SOURCE +.RE +.PP +All functions shown above: + Since glibc 2.19: + _DEFAULT_SOURCE + Glibc 2.19 and earlier: + _BSD_SOURCE .SH 説明 \fItimeval\fP 構造体を操作するためのマクロが提供されている。 \fItimeval\fP 構造体は \fI\fP で以下のように定義されている。 -.sp +.PP .in +4n -.nf +.EX struct timeval { time_t tv_sec; /* 秒 */ suseconds_t tv_usec; /* マイクロ秒 */ }; -.fi +.EE .in .PP \fBtimeradd\fP() は、 \fIa\fP と \fIb\fP の時刻値を加算し、その合計を \fIres\fP により参照される \fItimeval\fP 構造体に格納する。結果は、 \fIres\->tv_usec\fP の値が 0 から 999,999 の範囲に入るように正規化される。 - +.PP \fBtimersub\fP() は、 \fIa\fP の時刻値から \fIb\fP の時刻値を減算し、その結果を \fIres\fP により参照される \fItimeval\fP 構造体に格納する。結果は、 \fIres\->tv_usec\fP の値が 0 から 999,999 の範囲に入るように正規化される。 - +.PP \fBtimerclear\fP() は \fItvp\fP により参照される \fItimeval\fP 構造体を 0 で埋める。 0 で埋められた \fItimeval\fP 構造体は、時刻紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC)) を表す。 - +.PP \fBtimerisset\fP() は、 \fItvp\fP により参照される \fItimeval\fP 構造体のいずれか一方のフィールドに 0 以外の値が入っていれば、 真 (0 以外) を返す。 - +.PP .\" HP-UX, Tru64, Irix have a definition like: .\"#define timercmp(tvp, uvp, cmp) \ .\" ((tvp)->tv_sec cmp (uvp)->tv_sec || \ @@ -93,7 +97,7 @@ struct timeval { (0) を返す。 (Linux/glibc はそうではないが) いくつかのシステムでは、 \fBtimercmp\fP() の実装がおかしく、 \fICMP\fP に \fI>=\fP, \fI<=\fP, \fI==\fP を指定すると正しく動作しない。 移植性が必要なアプリケーションでは、 代わりに以下を使うこと。 - +.PP !timercmp(..., <) !timercmp(..., >) !timercmp(..., !=) @@ -102,10 +106,9 @@ struct timeval { .SH エラー エラーは定義されていない。 .SH 準拠 -POSIX.1\-2001 にはない。 ほとんどの BSD 由来のシステムには存在する。 +Not in POSIX.1. Present on most BSD derivatives. .SH 関連項目 \fBgettimeofday\fP(2), \fBtime\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/tmpfile.3 b/manual/LDP_man-pages/draft/man3/tmpfile.3 deleted file mode 100644 index c525dc61..00000000 --- a/manual/LDP_man-pages/draft/man3/tmpfile.3 +++ /dev/null @@ -1,93 +0,0 @@ -.\" 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 17:46:57 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2001-11-17, aeb -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Tenkou N. Hattori -.\" all rights reserved. -.\" Translated Sat Jan 18 16:51:59 JST 1997 -.\" by Tenkou N. Hattori -.\" Updated & Modified Sun Dec 9 15:25:20 JST 2001 -.\" by Yuichi SATO -.\" -.TH TMPFILE 3 2008\-07\-14 "" "Linux Programmer's Manual" -.SH 名前 -tmpfile \- テンポラリファイルを作成する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBFILE *tmpfile(void);\fP -.fi -.SH 説明 -\fBtmpfile\fP() 関数はユニークなテンポラリファイルを バイナリリードライトモード (w+b) でオープンする。 -このファイルはクローズ時またはプログラムの終了時に自動的に削除される。 -.SH 返り値 -\fBtmpfile\fP() 関数はファイルポインターを返すか、 ユニークなファイルが作れなかったかオープンできなかった場合は NULL を返す。 -後者の場合、エラーを表す \fIerrno\fP を設定する。 -.SH エラー -.TP -\fBEACCES\fP -ファイルのあるディレクトリにサーチのアクセス権 (search permission) がない。 -.TP -\fBEEXIST\fP -ユニークなファイル名が作成できなかった。 -.TP -\fBEINTR\fP -呼び出しがシグナルによって中断された。 -.TP -\fBEMFILE\fP -1 つのプロセスで使用可能なファイルディスクリプター数を超過した。 -.TP -\fBENFILE\fP -システム全体でオープン可能なファイル数を超過した。 -.TP -\fBENOSPC\fP -ディレクトリに新しいファイルを追加するための空き領域がない。 -.TP -\fBEROFS\fP -読みだし専用ファイルシステムである。 -.SH 準拠 -SVr4, 4.3BSD, C89, C99, SUSv2, POSIX.1\-2001. -.SH 注意 -POSIX.1\-2001 では、 ストリームをオープンできなかった場合、 \fIstdout\fP にエラーメッセージが書き出される、と規定されている。 -.LP -規格では \fBtmpfile\fP() が使うディレクトリは指定されていない。 glibc では \fI\fP -で定義されている \fIP_tmpdir\fP をパスの先頭に使おうとする。 これが失敗した場合は、ディレクトリ \fI/tmp\fP を使う。 -.SH 関連項目 -\fBexit\fP(3), \fBmkstemp\fP(3), \fBmktemp\fP(3), \fBtempnam\fP(3), \fBtmpnam\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/tmpnam.3 b/manual/LDP_man-pages/draft/man3/tmpnam.3 deleted file mode 100644 index 7009dd1a..00000000 --- a/manual/LDP_man-pages/draft/man3/tmpnam.3 +++ /dev/null @@ -1,109 +0,0 @@ -.\" Copyright (c) 1999 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 -.\" -.\" 2003-11-15, aeb, added tmpnam_r -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright 1997 Tenkou N. Hattori -.\" Japanese Version Copyright (c) 1997 Tenkou N. Hattori -.\" all rights reserved. -.\" Translated 1997-01-18, Tenkou N. Hattori -.\" Updated 2000-03-15, Kentaro Shirakata -.\" Updated 2005-03-15, Akihiro MOTOKI -.\" Updated 2006-07-26, Akihiro MOTOKI , LDP v2.36 -.\" -.TH TMPNAM 3 2014\-02\-27 "" "Linux Programmer's Manual" -.SH 名前 -tmpnam, tmpnam_r \- 一時ファイルの名前を作成する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *tmpnam(char *\fP\fIs\fP\fB);\fP -.fi -.SH 説明 -\fB注意:\fP \fBtmpnam\fP() の使用は避けること。代わりに \fBmkstemp\fP(3) か \fBtmpfile\fP(3) を使うこと。 - -\fBtmpnam\fP() 関数は、ファイル名に使える文字列へのポインターを返す。 -ある時点では同じ名前を持つファイルが存在しないファイル名が返されるので、 幼稚なプログラマはこの文字列が一時ファイルのファイル名として -適していると考えるかもしれない。 引き数 \fIs\fP が NULL なら、この名前は内部の静的バッファーに作成され、 次に \fBtmpnam\fP() -関数が呼び出された時に上書きされる。 \fIs\fP が NULL でなければ、ファイル名は \fIs\fP が指す (少なくとも \fIL_tmpnam\fP -の長さを持つ) 文字配列にコピーされ、 成功した場合は \fIs\fP が返される。 -.LP -作成されるパス名は、ディレクトリの部分に \fIP_tmpdir\fP が使われる。 (\fIL_tmpnam\fP と \fIP_tmpdir\fP は、以下で説明する -\fBTMP_MAX\fP 同様 \fI\fP で定義されている。) -.SH 返り値 -\fBtmpnam\fP() 関数は一意な一時ファイル名へのポインターを返す。 一意なファイル名が作成できなかった場合は NULL を返す。 -.SH エラー -エラーは定義されていない。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBtmpnam\fP() 関数は例外付きでスレッドセーフである。 NULL パラメーターで呼び出された場合はスレッドセーフではない。 -.LP -\fBtmpnam_r\fP() 関数はスレッドセーフである。 -.SH 準拠 -SVr4, 4.3BSD, C89, C99, POSIX.1\-2001. POSIX.1\-2008 は \fBtmpnam\fP() -を廃止予定としている。 -.SH 注意 -\fBtmpnam\fP() 関数は最大 \fBTMP_MAX\fP 回まで、呼び出される度に異なる文字列を作成する。 \fBTMP_MAX\fP -回以上呼び出された場合、その動作は実装依存である。 -.LP -\fBtmpnam\fP() は推測が難しい名前を生成するが、それにもかかわらず、 \fBtmpnam\fP() -がパス名を返してから、プログラムがそのファイルをオープンする までの間に、別のプログラムが同じパス名で、ファイルを \fBopen\fP(2) -で作成したり、シンボリックリンクを作成したりする可能性がある。 これはセキュリティホールにつながる可能性がある。 そのような可能性を回避するためには、 -\fBopen\fP(2) の \fBO_EXCL\fP フラグを使ってパス名をオープンすればよい。 もっといいのは、 \fBmkstemp\fP(3) や -\fBtmpfile\fP(3) を使うことである。 -.LP -移植性が必要な、スレッドを使ったアプリケーションでは、 \fB_POSIX_THREADS\fP か -\fB_POSIX_THREAD_SAFE_FUNCTIONS\fP が定義されている場合に、 \fBtmpnam\fP() 関数を NULL -引き数で呼び出してはならない。 -.LP -POSIX 草案では、関数 \fBtmpnam_r\fP() を使うことを提案している。 この関数は、以下のように定義されており、 NULL -を使わないようにという警告の意味で NULL を別扱いしている。 -.sp -.nf -.in +4n -char * -tmpnam_r(char *s) -{ - return s ? tmpnam(s) : NULL; -} -.in -.fi -.sp -数は少ないが、この関数を実装しているシステムもある。 この関数の glibc のプロトタイプを \fI\fP から得るには、 -(「どの」ヘッダーファイルをインクルードするよりも前に) \fB_SVID_SOURCE\fP か \fB_BSD_SOURCE\fP を定義しておく必要がある。 -.SH バグ -決してこの関数を使ってはならない。代わりに \fBmkstemp\fP(3) か \fBtmpfile\fP(3) を使うこと。 -.SH 関連項目 -\fBmkstemp\fP(3), \fBmktemp\fP(3), \fBtempnam\fP(3), \fBtmpfile\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/toascii.3 b/manual/LDP_man-pages/draft/man3/toascii.3 deleted file mode 100644 index 7159ecdd..00000000 --- a/manual/LDP_man-pages/draft/man3/toascii.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" Copyright (c) 1995 by Jim Van Zandt -.\" -.\" %%%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 BUGS section, aeb, 950919 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Tue Dec 16 19:43:29 JST 1997 -.\" by HIROFUMI Nishizuka -.\" -.TH TOASCII 3 2013\-12\-23 GNU "Linux Programmer's Manual" -.SH 名前 -toascii \- 文字を ASCII に変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint toascii(int \fP\fIc\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBtoascii\fP(): _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE -.SH 説明 -\fBtoascii\fP() は上位ビットをクリアする事により、 ASCII 文字セットに適合するように \fIc\fP を 7ビットの \fIunsigned -char\fP に変換する。 -.SH 返り値 -変換された文字を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBtoascii\fP() 関数はスレッドセーフである。 -.SH 準拠 -SVr4, BSD, POSIX.1\-2001. POSIX.1\-2008 は \fBtoascii\fP() を廃止予定としている。 -ローカライズされたアプリケーションでは、移植性を確保しつつ、 この関数を使用することはできない点に注意すること。 -.SH バグ -この関数を使う事でたくさんの人々が不幸になるだろう。 この関数はアクセント付きの字をでたらめな文字に変換してしまう。 -.SH 関連項目 -\fBisascii\fP(3), \fBtolower\fP(3), \fBtoupper\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/toupper.3 b/manual/LDP_man-pages/draft/man3/toupper.3 deleted file mode 100644 index 7c69dc5c..00000000 --- a/manual/LDP_man-pages/draft/man3/toupper.3 +++ /dev/null @@ -1,113 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" and Copyright 2014 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 Sat Jul 24 17:45:39 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2000-02-13 by Nicolás Lichtmaier -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Ueyama Rui and HIROFUMI Nishizuka -.\" all rights reserved. -.\" Translated Fri Aug 29 19:47:32 JST 1997 -.\" by Ueyama Rui -.\" by HIROFUMI Nishizuka -.\" Translated Sun Mar 12 21:42:31 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH TOUPPER 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -toupper, tolower, toupper_l, tolower_l \- 小文字を大文字にする。または大文字を小文字にする。 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint toupper(int \fP\fIc\fP\fB);\fP -.br -\fBint tolower(int \fP\fIc\fP\fB);\fP - -\fBint toupper_l(int \fP\fIc\fP\fB, locale_t \fP\fIlocale\fP\fB);\fP -\fBint tolower_l(int \fP\fIc\fP\fB, locale_t \fP\fIlocale\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBtoupper_l\fP(), \fBtolower_l\fP(): -.PD 0 -.RS 4 -.TP -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.PD -.SH 説明 -これらの関数は、小文字を大文字に、もしくは大文字を小文字に変換する。 - -\fIc\fP が小文字の場合、現在のロケールで大文字表現が存在する場合、 \fBtoupper\fP() -は対応する大文字を返す。大文字表現が存在しない場合、\fIc\fP を返す。 \fBtoupper_l\fP() 関数は同じ動作をするが、ロケールハンドル -\fIlocale\fP が参照するロケールを使って変換を行う。 - -\fIc\fP が大文字の場合、現在のロケールで小文字表現が存在する場合、 \fBtolower\fP() -は対応する小文字を返す。小文字表現が存在しない場合、\fIc\fP を返す。 \fBtolower_l\fP() 関数は同じ動作をするが、ロケールハンドル -\fIlocale\fP が参照するロケールを使って変換を行う。 -.PP -もし \fIc\fP が \fIunsigned char\fP 値でも \fBEOF\fP でもない場合、これらの関数の動作は未定義である。 - -\fIlocale\fP が特別なロケールオブジェクト \fBLC_GLOBAL_LOCALE\fP の場合 (\fBduplocale\fP(3) 参照)、または -\fIlocale\fP が有効なロケールオブジェクトハンドルでない場合、 \fBtoupper_l\fP() と \fBtolower_l\fP() -の動作は未定義である。 -.SH 返り値 -変換ができれば変換後の文字を返す。できなければ変換前の \fIc\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -.\" FIXME . Add toupper_l() and tolower_l() -関数 \fBtoupper\fP() と \fBtolower\fP() は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -\fBtoupper\fP(), \fBtolower\fP(): C89, C99, 4.3BSD, POSIX.1\-2001, POSIX.1\-2008. - -\fBtoupper_l\fP(), \fBtolower_l\fP(): POSIX.1\-2008. -.SH 注意 -なにが大文字でなにが小文字なのかということの詳細は、ロケールに依存している。たとえば、デフォルトの \fB"C"\fP -ロケールではウムラウトを認識しないため、それらの文字は変換できない。 -.PP -.\" FIXME One day the statement about "sharp s" needs to be reworked, -.\" since there is nowadays a capital "sharp s" that has a codepoint -.\" in Unicode 5.0; see https://en.wikipedia.org/wiki/Capital_%E1%BA%9E -いくつかの非英語ロケールでは、対応する大文字を持たない小文字が存在する。 ドイツ語のエスツェットが一つの例である。 -.SH 関連項目 -\fBisalpha\fP(3), \fBnewlocale\fP(3), \fBsetlocale\fP(3), \fBuselocale\fP(3), -\fBtowlower\fP(3), \fBtowupper\fP(3), \fBlocale\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/towctrans.3 b/manual/LDP_man-pages/draft/man3/towctrans.3 deleted file mode 100644 index 20d9db90..00000000 --- a/manual/LDP_man-pages/draft/man3/towctrans.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Mon Oct 25 08:17:41 JST 1999 -.\" by FUJIWARA Teruyoshi -.\"O function returns the translated wide character, -.\"O or \fBWEOF\fP if \fIwc\fP is \fBWEOF\fP. -.\"O .SH "CONFORMING TO" -.\"O .SH NOTES -.\"O The behavior of -.\"O .BR towctrans () -.\"O depends on the -.\"O .B LC_CTYPE -.\"O category of the -.\"O current locale. -.\"O .SH "SEE ALSO" -.\" -.TH TOWCTRANS 3 2013\-12\-24 GNU "Linux Programmer's Manual" -.SH 名前 -towctrans \- ワイド文字の変換 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwint_t towctrans(wint_t \fP\fIwc\fP\fB, wctrans_t \fP\fIdesc\fP\fB);\fP -.fi -.SH 説明 -\fIwc\fP がワイド文字ならば、 \fBtowctrans\fP() 関数は変換記述子 \fIdesc\fP に従ってその文字を変換する。\fIwc\fP が -\fBWEOF\fP ならば、 \fBWEOF\fP が返される。 -.PP -\fIdesc\fP は、 \fBwctrans\fP(3) が返した変換記述子でなければならない。 -.SH 返り値 -\fBtowctrans\fP() 関数は、変換結果のワイド文字を返す。\fIwc\fP が \fBWEOF\fP ならば、\fBWEOF\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBtowctrans\fP() 関数はスレッドセーフである。 -.SH 準拠 -C99. -.SH 注意 -\fBtowctrans\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.SH 関連項目 -\fBtowlower\fP(3), \fBtowupper\fP(3), \fBwctrans\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/towlower.3 b/manual/LDP_man-pages/draft/man3/towlower.3 deleted file mode 100644 index 3344b4c7..00000000 --- a/manual/LDP_man-pages/draft/man3/towlower.3 +++ /dev/null @@ -1,87 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" and Copyright (C) 2014 Michael Kerrisk -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Mon Oct 25 08:06:53 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH TOWLOWER 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -towlower, towlower_l \- ワイド文字 1 個を小文字に変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwint_t towlower(wint_t \fP\fIwc\fP\fB);\fP - -\fBwint_t towlower_l(wint_t \fP\fIwc\fP\fB, locale_t \fP\fIlocale\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBtowlower_l\fP(): -.PD 0 -.RS 4 -.TP -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 -.TP -glibc 2.10 より以前: -_GNU_SOURCE -.RE -.PD -.SH 説明 -\fBtowlower\fP() 関数は、 \fBtolower\fP(3) 関数に対応するワイド文字関数である。 \fIwc\fP -が大文字のワイド文字で、現在のロケールで対応する小文字が存在する場合、 \fIwc\fP に対応する小文字が返される。 それ以外の場合には、 \fIwc\fP -は変更されずに返される。 - -\fBtowupper_l\fP() 関数も同様の動作を行うが、 \fIlocale\fP で指定されたロケールでの文字列型の情報に基づき変換が行われる点が異なる。 -\fIlocale\fP が特別なロケールオブジェクト \fBLC_GLOBAL_LOCALE\fP の場合、もしくは \fIlocale\fP -が有効なロケールオブジェクトハンドルでない場合、 \fBtowupper_l\fP() の動作は未定義である。 - -引き数 \fIwc\fP は、 指定されたロケールで有効な \fIwchar_t\fP で表現できる文字、または値 \fBWEOF\fP でなければならない。 -.SH 返り値 -\fIwc\fP が小文字に変換可能だった場合、 \fBtowlower\fP() は対応する小文字を返す。 そうでない場合、 \fIwc\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -.\" FIXME . need a thread-safety statement about towlower_l() -\fBtowlower\fP() 関数は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH バージョン -\fBtowlower_l\fP() 関数は glibc 2.3 で初めて登場した。 -.SH 準拠 -\fBtowlower\fP(): C99, POSIX.1\-2001 (XSI); POSIX.1\-2008 の XSI -拡張に存在しているが、廃止予定とされている。 - -\fBtowlower_l\fP(): POSIX.1\-2008. -.SH 注意 -これらの関数の動作は、ロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.PP -これらの関数で Unicode 文字を扱うのはあまり適切でない。 なぜなら、Unicode には、大文字 (upper case)・小文字 (lower -case)・ タイトル文字 (title case) という 3 つの "case" が含まれているからである。 -.SH 関連項目 -\fBiswlower\fP(3), \fBtowctrans\fP(3), \fBtowupper\fP(3), \fBlocale\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/towupper.3 b/manual/LDP_man-pages/draft/man3/towupper.3 deleted file mode 100644 index 94b0624c..00000000 --- a/manual/LDP_man-pages/draft/man3/towupper.3 +++ /dev/null @@ -1,87 +0,0 @@ - -.\" and Copyright (C) 2014 Michael Kerrisk -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Mon Oct 25 08:16:12 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH TOWUPPER 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -towupper, towupper_l \- ワイド文字 1 個を大文字に変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwint_t towupper(wint_t \fP\fIwc\fP\fB);\fP - -\fBwint_t towupper_l(wint_t \fP\fIwc\fP\fB, locale_t \fP\fIlocale\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBtowupper_l\fP(): -.PD 0 -.RS 4 -.TP -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 -.TP -glibc 2.10 より以前: -_GNU_SOURCE -.RE -.PD -.SH 説明 -\fBtowupper\fP() 関数は、 \fBtoupper\fP(3) 関数に対応するワイド文字関数である。 \fIwc\fP -が小文字のワイド文字で、現在のロケールで対応する大文字が存在する場合、 \fIwc\fP に対応する大文字が返される。 それ以外の場合には、 \fIwc\fP -は変更されずに返される。 - -\fBtowupper_l\fP() 関数も同様の動作を行うが、 \fIlocale\fP で指定されたロケールでの文字列型の情報に基づき変換が行われる点が異なる。 -\fIlocale\fP が特別なロケールオブジェクト \fBLC_GLOBAL_LOCALE\fP の場合、もしくは \fIlocale\fP -が有効なロケールオブジェクトハンドルでない場合、 \fBtowupper_l\fP() の動作は未定義である。 - -引き数 \fIwc\fP は、 指定されたロケールで有効な \fIwchar_t\fP で表現できる文字、または値 \fBWEOF\fP でなければならない。 -.SH 返り値 -\fIwc\fP が大文字に変換可能だった場合、 \fBtowupper\fP() は対応する大文字返す。 そうでない場合、 \fIwc\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -.\" FIXME . need a thread-safety statement about towupper_l() -\fBtowupper\fP() 関数は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH バージョン -\fBtowupper_l\fP() 関数は glibc 2.3 で初めて登場した。 -.SH 準拠 -\fBtowupper\fP(): C99, POSIX.1\-2001 (XSI); POSIX.1\-2008 の XSI -拡張に存在しているが、廃止予定とされている。 - -\fBtowupper_l\fP(): POSIX.1\-2008. -.SH 注意 -これらの関数の動作は、ロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.PP -これらの関数で Unicode 文字を扱うのはあまり適切でない。 なぜなら、Unicode には、大文字 (upper case)・小文字 (lower -case)・ タイトル文字 (title case) という 3 つの "case" が含まれているからである。 -.SH 関連項目 -\fBiswupper\fP(3), \fBtowctrans\fP(3), \fBtowlower\fP(3), \fBlocale\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/trunc.3 b/manual/LDP_man-pages/draft/man3/trunc.3 deleted file mode 100644 index 3fe990cc..00000000 --- a/manual/LDP_man-pages/draft/man3/trunc.3 +++ /dev/null @@ -1,91 +0,0 @@ -.\" Copyright (C) 2001 Andries Brouwer . -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001, 2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Sun Jul 8 10:40:20 JST 2001 -.\" by Yuichi SATO -.\" Updated & Modified Sun Jan 16 08:20:45 JST 2005 -.\" by Yuichi SATO -.\" -.TH TRUNC 3 2013\-06\-21 "" "Linux Programmer's Manual" -.SH 名前 -trunc, truncf, truncl \- 0 に近い方の整数値に丸める -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble trunc(double \fP\fIx\fP\fB);\fP -.br -\fBfloat truncf(float \fP\fIx\fP\fB);\fP -.br -\fBlong double truncl(long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBtrunc\fP(), \fBtruncf\fP(), \fBtruncl\fP(): -.RS 4 -_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -これらの関数は絶対値が \fIx\fP より小さい 一番近い整数値に \fIx\fP を丸める。 -.SH 返り値 -これらの関数は丸めた整数値を返す。 - -\fIx\fP が整数、無限大、NaN の場合、\fIx\fP 自身が返される。 -.SH エラー -エラーは発生しない。 -.SH バージョン -これらの関数は glibc バージョン 2.1 で初めて登場した。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBtrunc\fP(), \fBtruncf\fP(), \fBtruncl\fP() はスレッドセーフである。 -.SH 準拠 -C99, POSIX.1\-2001. -.SH 注意 -これらの関数が返す整数値は整数型 (\fIint\fP, \fIlong\fP など) に格納するには大き過ぎるかもしれない。 -オーバーフローが起こった場合の結果は分からないので、 オーバーフローを避けるため、アプリケーションでは整数型に代入する前に -返された値の範囲確認を実行すべきである。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 825a1144..00000000 --- a/manual/LDP_man-pages/draft/man3/tsearch.3 +++ /dev/null @@ -1,195 +0,0 @@ -.\" Copyright 1995 by Jim Van Zandt -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 ishikawa, keisuke -.\" all rights reserved. -.\" Translated Tue Mar 9 08:21:04 JST 1999 -.\" by ishikawa, keisuke -.\" Updated & Modified Sun Jan 20 11:31:46 JST 2002 -.\" by Yuichi SATO -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH TSEARCH 3 2014\-05\-28 GNU "Linux Programmer's Manual" -.SH 名前 -tsearch, tfind, tdelete, twalk, tdestroy \- 二分木 (binary tree) の操作 -.SH 書式 -.nf -\fB#include \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, void *const *\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 \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() は、二分木を深さ優先 (depth\-first) で、 左から右にたどっていく関数である。 \fIroot\fP -は起点となるノードへのポインターである。 \fIroot\fP に根以外のノードを指定すると、部分木が対象となる。 \fBtwalk\fP() -は、ノードを訪れる度にユーザー関数 \fIaction\fP を呼び出す (内部ノードに対しては 3 回、葉に対しては 1 回呼び出しが行われる)。 -\fIaction\fP には以下の順に 3 つの引き数が与えられる。 最初の引き数は訪れたノードへのポインターである。 ノードの構造体は規定されていないが、 -ポインターを要素へのポインターのポインターにキャストし、 ノードに格納された要素にアクセスすることができる。 -アプリケーションは、この引き数が指す構造体を変更してはならない。 2 番目の引き数には、内部ノードの場合は訪問回数に応じて \fBpreorder\fP, -\fBpostorder\fP, \fBendorder\fP のいずれかの整数が、 葉を最初に訪れた場合は \fBleaf\fP の値が渡される (これらのシンボルは -\fI\fP で定義されている)。 3 番目の引き数はノードの深さで、根の場合は深さ 0 である。 -.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 -#include -#include -#include - -static void *root = NULL; - -static void * -xmalloc(unsigned n) -{ - void *p; - p = malloc(n); - if (p) - return p; - fprintf(stderr, "insufficient memory\en"); - exit(EXIT_FAILURE); -} - -static int -compare(const void *pa, const void *pb) -{ - if (*(int *) pa < *(int *) pb) - return \-1; - if (*(int *) pa > *(int *) pb) - return 1; - return 0; -} - -static 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ttyname.3 b/manual/LDP_man-pages/draft/man3/ttyname.3 deleted file mode 100644 index da7cc4e1..00000000 --- a/manual/LDP_man-pages/draft/man3/ttyname.3 +++ /dev/null @@ -1,82 +0,0 @@ -.\" Copyright (c) 1995 Jim Van Zandt -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified 2001-12-13, Martin Schulze -.\" Added ttyname_r, aeb, 2002-07-20 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Hiroaki Nagoya -.\" all rights reserved. -.\" Translated Mon Feb 10 1997 by Hiroaki Nagoya -.\" Updated Fri Dec 21 JST 2001 by Kentaro Shirakata -.\" Updated Fri Oct 16 JST 2002 by Kentaro Shirakata -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH TTYNAME 3 2013\-06\-21 Linux "Linux Programmer's Manual" -.SH 名前 -ttyname, ttyname_r \- 端末名を返す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBchar *ttyname(int \fP\fIfd\fP\fB);\fP - -\fBint ttyname_r(int \fP\fIfd\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB);\fP -.fi -.SH 説明 -\fBttyname\fP() 関数は、ファイルディスクリプター \fIfd\fP がオープンしている端末デバイスの NULL -終端されたパス名へのポインターを返す。 エラーが起きたならば NULL を返す (たとえば、\fIfd\fP が端末を参照していないとき)。 -返り値は静的データを指しているので、次の呼び出しで上書きされる可能性がある。 \fBttyname_r\fP() 関数は、このパス名を長さ -\fIbuflen\fP のバッファー \fIbuf\fP に格納する。 -.SH 返り値 -\fBttyname\fP() 関数は、成功時はパス名へのポインターを返す。 エラー時は NULL を返し、 \fIerrno\fP が適切に設定される。 -\fBttyname_r\fP() 関数は、成功時には 0 を返し、エラー時にはエラー番号を返す。 -.SH エラー -.TP -\fBEBADF\fP -ファイルディスクリプターが不正。 -.TP -\fBENOTTY\fP -ファイルディスクリプターが端末デバイスを示していない。 -.TP -\fBERANGE\fP -(\fBttyname_r\fP()) \fIbuflen\fP がパス名を格納するには短すぎる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBttyname\fP() 関数はスレッドセーフではない。 -.LP -\fBttyname_r\fP() 関数はスレッドセーフである。 -.SH 準拠 -4.2BSD, POSIX.1\-2001. -.SH 関連項目 -\fBfstat\fP(2), \fBctermid\fP(3), \fBisatty\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ttyslot.3 b/manual/LDP_man-pages/draft/man3/ttyslot.3 deleted file mode 100644 index a761c92e..00000000 --- a/manual/LDP_man-pages/draft/man3/ttyslot.3 +++ /dev/null @@ -1,114 +0,0 @@ -.\" Copyright (C) 2002 Andries Brouwer -.\" -.\" %%%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 replaces an earlier man page written by Walter Harms -.\" . -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Wed Sep 8 01:25:01 JST 2004 -.\" by Yuichi SATO -.\" -.TH TTYSLOT 3 2013\-07\-22 GNU "Linux Programmer's Manual" -.SH 名前 -ttyslot \- カレントユーザーの端末のスロットをファイルから探す -.SH 書式 -\fB#include \fP /* BSD 系のシステムと Linux の場合 */ -.br -\fB#include \fP /* System V 系のシステムの場合 */ -.sp -\fBint ttyslot(void);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBttyslot\fP(): -.RS 4 -_BSD_SOURCE || -.br -_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_\ <\ 500\ &&\ _XOPEN_SOURCE_EXTENDED -.RE -.ad b -.SH 説明 -レガシーな関数 \fBttyslot\fP() は、あるファイルに書かれているカレントユーザーのエントリーのインデックスを返す。 -.LP -「どのファイルなのか?」という質問があるだろう。 では、まず最初にその歴史を見てみよう。 -.SS 大昔の歴史 -UNIX\ V6 では \fI/etc/ttys\fP ファイルが使われていた。 \fBinit\fP(1) プログラムは、このファイルを読み込み、 -各端末行で何をすべきかを探す。 各行は 3 文字から構成されている。 1 文字目は \(aq0\(aq または \(aq1\(aq であり、 -\(aq0\(aq は「無視する」ことを表す。 2 文字目は端末を示す: \(aq8\(aq は "/dev/tty8" を表す。 3 文字目は -\fBgetty\fP(8) への引き数であり、(接続を) 試みる回線速度の順序を表す (\(aq\-\(aq は 110 -ボーで接続の試行を開始することを表す)。 よって一般的な行は "18\-" となる。 ある行でハングした場合は、\(aq1\(aq を \(aq0\(aq -に変更し、 init にシグナルを送り、\(aq0\(aq を \(aq1\(aq 再度に変更し、 init に再度シグナルを送ることで解決する。 -.LP -UNIX\ V7 ではフォーマットが変更された: 2 文字目が \fBgetty\fP(8) の引き数となり、(接続を) -試みる回線速度の順序を表すようになり (\(aq0\(aq は 300\-1200\-150\-110 を繰り返すことを表し、 \(aq4\(aq -はオンラインコンソール DECwriter を表す)、 行の残り (の文字) は端末名となった。 よって、一般的な行は "14console" となる。 -.LP -後者のシステムの書式は、より精巧である。 System V 系のシステムでは、代わりに \fI/etc/inittab\fP がある。 -.SS "大昔の歴史 (2)" -一方、現在ログインしている人をリストするファイル \fI/etc/utmp\fP がある。 これは \fBlogin\fP(1) によって管理されている。 -このファイルは固定されたサイズであり、ファイル内の適切なインデックスは、 \fBlogin\fP(1) によって決定される。 この際に -\fBttyslot\fP() が呼ばれて、 \fI/etc/ttys\fP における行番号を見つける (行番号は 1 から数える)。 -.SS "ttyslot の意味" -よって、関数 \fBttyslot\fP() は、ファイル \fI/etc/ttys\fP における呼び出し元のプロセスの制御端末のインデックスを返す。 これは -\fI/etc/utmp\fP におけるカレントユーザーのエントリーのインデックスと (通常は) 等しい。 BSD には未だに \fI/etc/ttys\fP -ファイルがあるが、System V 系のシステムにはないので、 このファイルを参照することはできない。 よって、そのようなシステムでは -「\fBttyslot\fP() はカレントユーザーのユーザーアカウントデータベースにおけるインデックスを返す」 とドキュメントに書かれている。 -.SH 返り値 -成功した場合、この関数はスロット番号を返す。 エラーの場合 (例えば、ファイルディスクリプター 0, 1, 2 の何れも -データベースにある端末に関連づけられていない場合)、 UNIX\ V6, V7, BSD 系のシステムは 0 を返すが、 System V -系のシステムは \-1 を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBttyslot\fP() はスレッドセーフではない関数 \fBgetttyent\fP() を呼び出す。そのため、スレッドセーフではない。 -.SH 準拠 -SUSv1。SUSv2 では「過去の名残 (LEGACY)」と位置付けられている。 POSIX.1\-2001 で削除された。 SUSv2 ではエラー時に -\-1 を返すことが要求されている。 -.SH 注意 -utmp ファイルは様々なシステムで \fI/etc/utmp\fP, \fI/var/adm/utmp\fP, \fI/var/run/utmp\fP -のようにいろいろな場所にある。 -.LP -この関数の glibc2 における実装では、ファイル \fB_PATH_TTYS\fP を読み込む。 これは \fI\fP -において "/etc/ttys" と定義されている。 エラーの場合、0 を返す。 Linux システムには通常 "/etc/ttys" がないので、常に -0 を返す。 -.LP -.\" .SH HISTORY -.\" .BR ttyslot () -.\" appeared in UNIX V7. -Minix には \fIfttyslot\fP(\fIfd\fP) もある。 -.SH 関連項目 -\fBgetttyent\fP(3), \fBttyname\fP(3), \fButmp\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/tzset.3 b/manual/LDP_man-pages/draft/man3/tzset.3 deleted file mode 100644 index 5e0dc3b9..00000000 --- a/manual/LDP_man-pages/draft/man3/tzset.3 +++ /dev/null @@ -1,181 +0,0 @@ -.\" 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 11:01:58 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2001-11-13, aeb -.\" Modified 2004-12-01 mtk and Martin Schulze -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated 1998-03-23, NAKANO Takeo -.\" Updated 2000-09-14, Kentaro Shirakata -.\" Updated 2002-01-06, NAKANO Takeo -.\" Updated 2007-01-07, Akihiro MOTOKI, catch up to LDP v2.43 -.\" -.TH TZSET 3 2015\-01\-30 "" "Linux Programmer's Manual" -.SH 名前 -tzset, tzname, timezone, daylight \- 時刻の変換情報を初期化する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid tzset (void);\fP -.sp -\fBextern char *\fP\fItzname\fP\fB[2];\fP -\fBextern long \fP\fItimezone\fP\fB;\fP -\fBextern int \fP\fIdaylight\fP\fB;\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBtzset\fP(): _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE -.br -\fItzname\fP: _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE -.br -\fItimezone\fP: _SVID_SOURCE || _XOPEN_SOURCE -.br -\fIdaylight\fP: _SVID_SOURCE || _XOPEN_SOURCE -.SH 説明 -\fBtzset\fP() 関数は \fBTZ\fP 環境変数を用いて \fItzname\fP 変数を初期化する。 -この関数は、タイムゾーンに依存する他の時刻変換関数から自動的に呼び出される。 System V 的な環境では、この関数は変数 \fItimezone\fP -(UTC からの西向きの秒数) と \fIdaylight\fP (このタイムゾーンにサマータイムに関するルールがなければ 0、 -サマータイム期間が一年のどこかにあれば 0 以外) も設定する。 -.PP -\fBTZ\fP 環境変数が設定されていない場合には、 システムのタイムゾーンが使用される。 ステムのタイムゾーンを設定するには、 \fBtzfile\fP(5) -形式のファイルを \fI/etc/localtime\fP にコピーしたりリンクしたりする。 -これらのファイルがあるタイムゾーンデータベースはシステムのタイムゾーンディレクトリ (\fBファイル\fP の節を参照) に置かれている。 -.PP -\fBTZ\fP 環境変数が存在しているが、その値が空だったり、 以下に示す形式のどれにもあてはまらない場合は、 協定世界時 (Coordinated -Universal Time: UTC) が用いられる。 -.PP -\fBTZ\fP の値は以下の 2 つの形式のいずれかを取ることができる。 最初の形式は、 使用するタイムゾーンを表す文字列を直接指定する方法である。 -.sp -.RS -std offset \fIdst\fP[\fIoffset\fP][,\fIstart\fP[\fI/time\fP],\fIend\fP[\fI/time\fP]] -.RE -.sp -この指定方法ではスペースは一切使用しない。 \fIstd\fP 文字列はタイムゾーンの名前を指定する。 アルファベットからなる 3 -文字以上の文字列でなければならない。 \fIoffset\fP 文字列は \fIstd\fP の直後に続き、 協定世界時 (UTC) を得るために -ローカルな時刻に加えなければならない時間を指定する。 \fIoffset\fP は、ローカルタイムゾーンがグリニッジ子午線 (Prime Meridian) -の西なら正の値、東なら負の値を取る。 時間 (hour) は 0 から 24 の間でなければならない。 分 (minute) と秒 (second) は -0 から 59 の間でなければならない。 -.PP -\fIdst\fP 文字列と \fIoffset\fP は、 対応するサマータイムゾーンの名前とオフセットを指定する。 -オフセットが省略されると、デフォルトでは標準の一時間前となる。 -.PP -\fIstart\fP フィールドはサマータイムが有効になる時刻、 \fIend\fP フィールドは標準に戻る時刻である。 -これらのフィールドは以下の形式で指定する。 -.TP -J\fIn\fP -年の通日 (Julian day) で日にちを指定する。 -\fIn\fP は 1 から 365 の間の数値。閏日は計算に入らない。 -この形式では、2 月 29 日を表現することはできず、 -2 月 28 日が第 59 日で、3 月 1 日が常に第 60 日となる。 -.TP -\fIn\fP -年の通日 (Julian day) で日にちを指定する。 -\fIn\fP は 1 から 365 の間の数値。 -閏年の場合も、2 月 29 日も日にちの計算に含められる。 -.TP -M\fIm\fP.\fIw\fP.\fId\fP -\fIm\fP は月 (1 <= \fIm\fP <= 12) を、 \fIw\fP は月のうちの週 (1 <= \fIw\fP <= 5) -を、 \fId\fP は週のうちの日にち (0 <= \fId\fP <= 6) を示す。 \fIw\fP = 1 は所属する \fId\fP -が存在する最初の週、 \fIw\fP = 5 は最後の週である。 \fId\fP = 0 は日曜日である。 -.PP -\fItime\fP フィールドは、ローカルタイムを切り替える時刻を、 変更前のローカルタイムで表したものである。 省略された場合のデフォルトは -02:00:00 である。 - -ニュージーランドの例である。 ニュージーランドでは、標準のタイムゾーン (NZST) は UTC より 12時間進んでおり、 サマータイム (NZDT) -は UTC の 13時間進んでいる。 サマータイムは 10月の第一日曜から 3月の第三日曜までであり、 ローカルタイムの切り替えはデフォルトの -02:00:00 に行われる。 -.nf - - TZ="NZST\-12:00:00NZDT\-13:00:00,M10.1.0,M3.3.0" -.fi -.PP -2 番目の形式は、タイムゾーンの情報をファイルから読み込むように指定する。 -.sp -.RS -:[filespec] -.RE -.sp -ファイルの指定 \fIfilespec\fP が省略された場合、 もしくは指定された値が解釈できない場合、 協定標準時 (UTC; Coordinated -Universal Time) が使用される。 指定された場合、 \fIfilespec\fP はタイムゾーン情報を読み出す \fBtzfile\fP(5) -形式のファイルを指定する。 \fIfilespec\fP が \(aq/\(aq で始まっていない場合には、 システムタイムゾーンディレクトリからの相対パスで -ファイルが指定されたことになる。 コロンが省略された場合には、 上記の \fBTZ\fP の各形式での解釈を試みる。 -.PP -例を挙げておく。もう一度ニュージーランドの例である。 -.nf - - TZ=":Pacific/Auckland" -.fi -.SH 環境変数 -.TP -\fBTZ\fP -この変数が設定された場合、 その値がシステムで設定されたタイムゾーンより優先して使用される。 -.TP -\fBTZDIR\fP -この変数が設定された場合、 その値がシステムで設定されたタイムゾーンデータベースのディレクトリパスより優先して使用される。 -.SH ファイル -.TP -\fB/etc/localtime\fP -システムのタイムゾーンファイル。 -.TP -\fB/usr/share/zoneinfo/\fP -システムのタイムゾーンデータベースのディレクトリ。 -.TP -\fB/usr/share/zoneinfo/posixrules\fP -TZ 文字列で dst タイムゾーンが他に何の指定なしで単独で指定された場合、 このファイルが start/end のルールに使用される。 -このファイルは \fBtzfile\fP(5) 形式である。 デフォルトでは、 ゾーン情報の Makefile でこのファイルは -\fIAmerica/New_York\fP にハードリンクされる。 -.PP -上記は現在の標準のファイルの場所だが、 glibc のコンパイル時に変更できる。 -.SH 準拠 -SVr4, POSIX.1\-2001, 4.3BSD. -.SH 注意 -\fIdaylight\fP 変数は、現在がサマータイムであるかどうかを示しているのではない。 これはいくつかあるアルゴリズムのうちの番号を与える -(アルゴリズムについては \fBgettimeofday\fP(2) の \fItz_dsttime\fP 変数を見よ)。 -これはもう何年も使われていないが、SUSv2 では必要とされている。 -.LP -4.3BSD には \fBchar *timezone(\fP\fIzone\fP\fB, \fP\fIdst\fP\fB)\fP というルーチンがあり、これは 最初の引数 (UTC -からの西向きの分数) に対応するタイムゾーンの名前を返す。 二番目の引数が 0 の場合は標準の名前が用いられ、 -それ以外はサマータイム版の名前が用いられる。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ualarm.3 b/manual/LDP_man-pages/draft/man3/ualarm.3 deleted file mode 100644 index f2fbc42f..00000000 --- a/manual/LDP_man-pages/draft/man3/ualarm.3 +++ /dev/null @@ -1,114 +0,0 @@ -.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl) -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Sat Sep 11 07:32:05 JST 2004 -.\" by Yuichi SATO -.\" Updated 2007-05-04, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" -.TH UALARM 3 2013\-12\-23 "" "Linux Programmer's Manual" -.SH 名前 -ualarm \- 指定したマイクロ秒後にシグナルを送る予定をする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBuseconds_t ualarm(useconds_t \fP\fIusecs\fP\fB, useconds_t \fP\fIinterval\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBualarm\fP(): -.ad l -.RS 4 -.PD 0 -.TP 4 -glibc 2.12 以降: -.nf -_BSD_SOURCE || - (_XOPEN_SOURCE\ >=\ 500 || - _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) && - !(_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700) -.TP 4 -.fi -glibc 2.12 より前: _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.PD -.RE -.ad b -.SH 説明 -\fBualarm\fP() 関数は、呼び出し元のプロセスに対して \fIusecs\fP マイクロ秒 (以上) 後に \fBSIGALRM\fP シグナルを送る。 -遅れはシステムの活性度・呼び出しの処理時間・ システムタイマーの粒度によって長くなるかもしれない。 -.LP -捕捉または無視されない限り、 \fBSIGALRM\fP シグナルはプロセスを終了させる。 -.LP -\fIinterval\fP 引き数が 0 でない場合、最初の \fBSIGALRM\fP シグナルの後、 さらに \fIinterval\fP マイクロ秒毎に -SIGALRM シグナルが送られる。 -.SH 返り値 -この関数は、過去に設定された alarm の残りマイクロ秒数を返す。 実行中の alarm がない場合は 0 を返す。 -.SH エラー -.TP -\fBEINTR\fP -シグナルによって割り込まれた。 -.TP -\fBEINVAL\fP -\fIusecs\fP または \fIinterval\fP が 1000000 未満でない (これがエラーとして扱われるシステムの場合)。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBualarm\fP() 関数はスレッドセーフである。 -.SH 準拠 -4.3BSD, POSIX.1\-2001. POSIX.1\-2001 では \fBualarm\fP() は過去のものとされている。 -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 では、 \fIusecs\fP 引き数が 0 の場合、何が起こるかは規定されていない。 Linux -(やおそらく他ほとんどのシステム) では、 \fIusecs\fP 引き数が 0 の場合、処理待ちのアラームがキャンセルされる。 - -\fIuseconds_t\fP 型は [0,1000000] の範囲の整数を保持できる符号なし整数型である。 もともとの BSD での実装や、バージョン -2.1 より前の glibc では、 \fBualarm\fP() の引き数の型は \fIunsigned int\fP であった。 プログラム中に明示的に -\fIuseconds_t\fP と書かない方が、移植性が高くなる。 -.LP -この関数と \fBalarm\fP(2), \fBsleep\fP(3), \fBnanosleep\fP(2), \fBsetitimer\fP(2), -\fBtimer_create\fP(2), \fBtimer_delete\fP(2), \fBtimer_getoverrun\fP(2), -\fBtimer_gettime\fP(2), \fBtimer_settime\fP(2), \fBusleep\fP(3) -のような他のタイマー関数との相互作用は規定されていない。 -.LP -この関数は廃止予定である。 代わりに \fBsetitimer\fP(2) もしくは POSIX インターバルタイマー -(\fBtimer_create\fP(2) など) を使うこと。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ulimit.3 b/manual/LDP_man-pages/draft/man3/ulimit.3 deleted file mode 100644 index 26e26e85..00000000 --- a/manual/LDP_man-pages/draft/man3/ulimit.3 +++ /dev/null @@ -1,75 +0,0 @@ -.\" 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 -.\" -.\" Moved to man3, aeb, 980612 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated Sat 18 Jul 1998 by NAKANO Takeo -.\" Modified Sun Dec 18 1998 by NAKANO Takeo -.\" -.TH ULIMIT 3 2008\-08\-06 Linux "Linux Programmer's Manual" -.SH 名前 -ulimit \- ユーザー制限を取得・設定する -.SH 書式 -\fB#include \fP -.sp -\fBlong ulimit(int \fP\fIcmd\fP\fB, long \fP\fInewlimit\fP\fB);\fP -.SH 説明 -注意: このルーチンは古い。 代わりに \fBgetrlimit\fP(2), \fBsetrlimit\fP(2), \fBsysconf\fP(3) -などを用いること。 シェルコマンドとしての \fBulimit\fP() については、 \fBbash\fP(1) を見ること。 - -\fBulimit\fP() は呼び出し元のプロセスに関する制限のいくつかを取得・設定する。 \fIcmd\fP -引き数には、以下の値のうちのどれか一つを与えることができる。 -.TP -\fBUL_GETFSIZE\fP -ファイルサイズに関する制限を返す。単位は 512 バイト。 -.TP -\fBUL_SETFSIZE\fP -ファイルサイズに関する制限を設定する。 -.TP -\fB3\fP -(Linux では実装されていない) データセグメントで指定できるアドレスの最大値を返す。 -.TP -\fB4\fP -(実装されているが、対応するシンボリックな定数は存在しない) プロセスがオープンできるファイル数の最大値を返す。 -.SH 返り値 -成功すると \fBulimit\fP() は 0 または正の値を返す。 エラーが生じると \-1 を返し、 \fIerrno\fP を適切な値に設定する。 -.SH エラー -.TP -\fBEPERM\fP -非特権プロセスが制限値を増加させようとした。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/undocumented.3 b/manual/LDP_man-pages/draft/man3/undocumented.3 index d391b0fa..85b3a845 100644 --- a/manual/LDP_man-pages/draft/man3/undocumented.3 +++ b/manual/LDP_man-pages/draft/man3/undocumented.3 @@ -25,6 +25,7 @@ .\" .\" 1996-11-08, meem@sherilyn.wustl.edu, corrections .\" 2004-10-31, aeb, changed maintainer address, updated list +.\" 2015-04-20, william@tuffbizz.com, updated list .\" .\"******************************************************************* .\" @@ -37,9 +38,9 @@ .\" Updated 2001-10-16, Kentaro Shirakata .\" Updated 2005-02-21, Akihiro MOTOKI .\" -.TH UNDOCUMENTED 3 2012\-12\-21 Linux "Linux Programmer's Manual" +.TH UNDOCUMENTED 3 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 -none \- ドキュメントがないライブラリ関数 +undocumented \- undocumented library functions .SH 書式 ドキュメントがないライブラリ関数 .SH 説明 @@ -48,7 +49,6 @@ none \- ドキュメントがないライブラリ関数 これらの関数について情報があったら、 ソースコードを見て man ページを (他の Linux セクション 3 の man ページに似たスタイルで) 書き、そのページを \fBmtk.manpages@gmail.com\fP まで送ってほしい。 次の man ページのリリースで採用したい。 .SS リスト - .\" .BR chflags (3), .\" .BR fattach (3), .\" .BR fchflags (3), @@ -60,12 +60,11 @@ none \- ドキュメントがないライブラリ関数 \fBfp_nquery\fP(3), \fBfp_query\fP(3), \fBfp_resstat\fP(3), \fBfreading\fP(3), \fBfreopen64\fP(3), \fBfseeko64\fP(3), \fBftello64\fP(3), \fBftw64\fP(3), \fBfwscanf\fP(3), \fBget_avphys_pages\fP(3), \fBgetdirentries64\fP(3), \fBgetmsg\fP(3), -\fBgetnetname\fP(3), \fBget_nprocs\fP(3), \fBget_nprocs_conf\fP(3), -\fBget_phys_pages\fP(3), \fBgetpublickey\fP(3), \fBgetsecretkey\fP(3), -\fBh_errlist\fP(3), \fBhost2netname\fP(3), \fBhostalias\fP(3), \fBinet_nsap_addr\fP(3), -\fBinet_nsap_ntoa\fP(3), \fBinit_des\fP(3), \fBlibc_nls_init\fP(3), \fBlio_listio\fP(3), -\fBmstats\fP(3), \fBnetname2host\fP(3), \fBnetname2user\fP(3), \fBnlist\fP(3), -\fBobstack_free\fP(3), \fBparse_printf_format\fP(3), \fBp_cdname\fP(3), +\fBgetnetname\fP(3), \fBget_phys_pages\fP(3), \fBgetpublickey\fP(3), +\fBgetsecretkey\fP(3), \fBh_errlist\fP(3), \fBhost2netname\fP(3), \fBhostalias\fP(3), +\fBinet_nsap_addr\fP(3), \fBinet_nsap_ntoa\fP(3), \fBinit_des\fP(3), +\fBlibc_nls_init\fP(3), \fBmstats\fP(3), \fBnetname2host\fP(3), \fBnetname2user\fP(3), +\fBnlist\fP(3), \fBobstack_free\fP(3), \fBparse_printf_format\fP(3), \fBp_cdname\fP(3), \fBp_cdnname\fP(3), \fBp_class\fP(3), \fBp_fqname\fP(3), \fBp_option\fP(3), \fBp_query\fP(3), \fBprintf_size\fP(3), \fBprintf_size_info\fP(3), \fBp_rr\fP(3), \fBp_time\fP(3), \fBp_type\fP(3), \fBputlong\fP(3), \fBputshort\fP(3), @@ -76,25 +75,24 @@ none \- ドキュメントがないライブラリ関数 \fBres_send_setrhook\fP(3), \fBruserpass\fP(3), \fBsetfileno\fP(3), \fBsethostfile\fP(3), \fBsvc_exit\fP(3), \fBsvcudp_enablecache\fP(3), \fBtell\fP(3), \fBtr_break\fP(3), \fBtzsetwall\fP(3), \fBufc_dofinalperm\fP(3), \fBufc_doit\fP(3), -\fBuser2netname\fP(3), \fBvlimit\fP(3), \fBvtimes\fP(3), \fBwcschrnul\fP(3), -\fBwcsftime\fP(3), \fBwscanf\fP(3), \fBxdr_authdes_cred\fP(3), -\fBxdr_authdes_verf\fP(3), \fBxdr_cryptkeyarg\fP(3), \fBxdr_cryptkeyres\fP(3), -\fBxdr_datum\fP(3), \fBxdr_des_block\fP(3), \fBxdr_domainname\fP(3), -\fBxdr_getcredres\fP(3), \fBxdr_keybuf\fP(3), \fBxdr_keystatus\fP(3), -\fBxdr_mapname\fP(3), \fBxdr_netnamestr\fP(3), \fBxdr_netobj\fP(3), \fBxdr_passwd\fP(3), -\fBxdr_peername\fP(3), \fBxdr_rmtcall_args\fP(3), \fBxdr_rmtcallres\fP(3), -\fBxdr_unixcred\fP(3), \fBxdr_yp_buf\fP(3), \fBxdr_yp_inaddr\fP(3), -\fBxdr_ypbind_binding\fP(3), \fBxdr_ypbind_resp\fP(3), \fBxdr_ypbind_resptype\fP(3), -\fBxdr_ypbind_setdom\fP(3), \fBxdr_ypdelete_args\fP(3), \fBxdr_ypmaplist\fP(3), -\fBxdr_ypmaplist_str\fP(3), \fBxdr_yppasswd\fP(3), \fBxdr_ypreq_key\fP(3), -\fBxdr_ypreq_nokey\fP(3), \fBxdr_ypresp_all\fP(3), \fBxdr_ypresp_all_seq\fP(3), -\fBxdr_ypresp_key_val\fP(3), \fBxdr_ypresp_maplist\fP(3), \fBxdr_ypresp_master\fP(3), -\fBxdr_ypresp_order\fP(3), \fBxdr_ypresp_val\fP(3), \fBxdr_ypstat\fP(3), -\fBxdr_ypupdate_args\fP(3), \fByp_all\fP(3), \fByp_bind\fP(3), \fByperr_string\fP(3), -\fByp_first\fP(3), \fByp_get_default_domain\fP(3), \fByp_maplist\fP(3), -\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) +\fBuser2netname\fP(3), \fBwcschrnul\fP(3), \fBwcsftime\fP(3), \fBwscanf\fP(3), +\fBxdr_authdes_cred\fP(3), \fBxdr_authdes_verf\fP(3), \fBxdr_cryptkeyarg\fP(3), +\fBxdr_cryptkeyres\fP(3), \fBxdr_datum\fP(3), \fBxdr_des_block\fP(3), +\fBxdr_domainname\fP(3), \fBxdr_getcredres\fP(3), \fBxdr_keybuf\fP(3), +\fBxdr_keystatus\fP(3), \fBxdr_mapname\fP(3), \fBxdr_netnamestr\fP(3), +\fBxdr_netobj\fP(3), \fBxdr_passwd\fP(3), \fBxdr_peername\fP(3), +\fBxdr_rmtcall_args\fP(3), \fBxdr_rmtcallres\fP(3), \fBxdr_unixcred\fP(3), +\fBxdr_yp_buf\fP(3), \fBxdr_yp_inaddr\fP(3), \fBxdr_ypbind_binding\fP(3), +\fBxdr_ypbind_resp\fP(3), \fBxdr_ypbind_resptype\fP(3), \fBxdr_ypbind_setdom\fP(3), +\fBxdr_ypdelete_args\fP(3), \fBxdr_ypmaplist\fP(3), \fBxdr_ypmaplist_str\fP(3), +\fBxdr_yppasswd\fP(3), \fBxdr_ypreq_key\fP(3), \fBxdr_ypreq_nokey\fP(3), +\fBxdr_ypresp_all\fP(3), \fBxdr_ypresp_all_seq\fP(3), \fBxdr_ypresp_key_val\fP(3), +\fBxdr_ypresp_maplist\fP(3), \fBxdr_ypresp_master\fP(3), \fBxdr_ypresp_order\fP(3), +\fBxdr_ypresp_val\fP(3), \fBxdr_ypstat\fP(3), \fBxdr_ypupdate_args\fP(3), +\fByp_all\fP(3), \fByp_bind\fP(3), \fByperr_string\fP(3), \fByp_first\fP(3), +\fByp_get_default_domain\fP(3), \fByp_maplist\fP(3), \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/ungetwc.3 b/manual/LDP_man-pages/draft/man3/ungetwc.3 deleted file mode 100644 index 3290c178..00000000 --- a/manual/LDP_man-pages/draft/man3/ungetwc.3 +++ /dev/null @@ -1,65 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:55:43 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH UNGETWC 3 2013\-12\-09 GNU "Linux Programmer's Manual" -.SH 名前 -ungetwc \- ワイド文字を FILE ストリームへ戻す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwint_t ungetwc(wint_t \fP\fIwc\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -.fi -.SH 説明 -\fBungetwc\fP() 関数は \fBungetc\fP(3) 関数のワイド文字版である。 この関数はワイド文字を \fIstream\fP -へ戻して、それを返す。 -.PP -\fIwc\fP が \fBWEOF\fP の場合、 \fBWEOF\fP を返す。 \fIwc\fP が不正なワイド文字の場合、 \fIerrno\fP に \fBEILSEQ\fP -を設定して \fBWEOF\fP を返す。 -.PP -\fIwc\fP が有効なワイド文字の場合、それをストリームへと戻して後の -ワイド文字読み込み操作で取得できるようにする。ファイル位置(file\-position) -指示子は1以上戻される。ファイル終端(end\-of\-file)指示子はクリアされる。 そのファイルの背後にある記憶媒体は影響を受けない。 -.PP -注意: \fIwc\fP はストリームから読み込んだ最後のワイド文字である必要はない。 有効なワイド文字ならば何でも良い。 -.PP -続けて複数のワイド文字を戻すことをサポートしている実装の場合は、 戻したワイド文字は、戻したのとは逆の順番で読み込まれる。 -しかしこの場合でも一段階の戻ししか保証されていない。 -.SH 返り値 -\fBungetwc\fP() 関数は成功した場合には \fIwc\fP を返す。 失敗した場合には \fBWEOF\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBungetwc\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 注意 -\fBungetwc\fP() 関数の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存している。 -.SH 関連項目 -\fBfgetwc\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/unlocked_stdio.3 b/manual/LDP_man-pages/draft/man3/unlocked_stdio.3 deleted file mode 100644 index 2af960ee..00000000 --- a/manual/LDP_man-pages/draft/man3/unlocked_stdio.3 +++ /dev/null @@ -1,128 +0,0 @@ -.\" Copyright (C) 2001 Andries Brouwer . -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Fri Nov 2 23:08:42 2001 -.\" by Akihiro MOTOKI -.\" -.TH UNLOCKED_STDIO 3 2008\-08\-29 "" "Linux Programmer's Manual" -.SH 名前 -getc_unlocked, getchar_unlocked, putc_unlocked, putchar_unlocked \- -ロックを行わずに標準入出力を行う関数群 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint getc_unlocked(FILE *\fP\fIstream\fP\fB);\fP -\fBint getchar_unlocked(void);\fP -\fBint putc_unlocked(int \fP\fIc\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -\fBint putchar_unlocked(int \fP\fIc\fP\fB);\fP -.sp -\fBvoid clearerr_unlocked(FILE *\fP\fIstream\fP\fB);\fP -\fBint feof_unlocked(FILE *\fP\fIstream\fP\fB);\fP -\fBint ferror_unlocked(FILE *\fP\fIstream\fP\fB);\fP -\fBint fileno_unlocked(FILE *\fP\fIstream\fP\fB);\fP -\fBint fflush_unlocked(FILE *\fP\fIstream\fP\fB);\fP -\fBint fgetc_unlocked(FILE *\fP\fIstream\fP\fB);\fP -\fBint fputc_unlocked(int \fP\fIc\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -\fBsize_t fread_unlocked(void *\fP\fIptr\fP\fB, size_t \fP\fIsize\fP\fB, size_t \fP\fIn\fP\fB,\fP -\fB FILE *\fP\fIstream\fP\fB);\fP -\fBsize_t fwrite_unlocked(const void *\fP\fIptr\fP\fB, size_t \fP\fIsize\fP\fB, size_t \fP\fIn\fP\fB,\fP -\fB FILE *\fP\fIstream\fP\fB);\fP -.sp -\fBchar *fgets_unlocked(char *\fP\fIs\fP\fB, int \fP\fIn\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -\fBint fputs_unlocked(const char *\fP\fIs\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -.sp -\fB#include \fP -.sp -\fBwint_t getwc_unlocked(FILE *\fP\fIstream\fP\fB);\fP -\fBwint_t getwchar_unlocked(void);\fP -\fBwint_t fgetwc_unlocked(FILE *\fP\fIstream\fP\fB);\fP -\fBwint_t fputwc_unlocked(wchar_t \fP\fIwc\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -\fBwint_t putwc_unlocked(wchar_t \fP\fIwc\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -\fBwint_t putwchar_unlocked(wchar_t \fP\fIwc\fP\fB);\fP -\fBwchar_t *fgetws_unlocked(wchar_t *\fP\fIws\fP\fB, int \fP\fIn\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -\fBint fputws_unlocked(const wchar_t *\fP\fIws\fP\fB, FILE *\fP\fIstream\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.ad l -.in -.sp -\fBgetc_unlocked\fP(), \fBgetchar_unlocked\fP(), \fBputc_unlocked\fP(), -\fBputchar_unlocked\fP(): -.RS 4 -_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE || _BSD_SOURCE -|| _SVID_SOURCE -.RE -.sp -\fBclearerr_unlocked\fP(), \fBfeof_unlocked\fP(), \fBferror_unlocked\fP(), -\fBfileno_unlocked\fP(), \fBfflush_unlocked\fP(), \fBfgetc_unlocked\fP(), -\fBfputc_unlocked\fP(), \fBfread_unlocked\fP(), \fBfwrite_unlocked\fP(): -.RS 4 -_BSD_SOURCE || _SVID_SOURCE -.RE -.sp -\fBfgets_unlocked\fP(), \fBfputs_unlocked\fP(), \fBgetwc_unlocked\fP(), -\fBgetwchar_unlocked\fP(), \fBfgetwc_unlocked\fP(), \fBfputwc_unlocked\fP(), -\fBputwchar_unlocked\fP(), \fBfgetws_unlocked\fP(), \fBfputws_unlocked\fP(): -.RS 4 -_GNU_SOURCE -.RE -.ad b -.SH 説明 -これらの関数は、末尾に "_unlocked" がついていない関数と同じ動作をするが、 -ファイルのロックを使用しない点が異なる。(これらの関数自身はファイルのロック をセットせず、他の関数によってロックがセットされているかどうかのチェックも -行わない) それゆえ、スレッド(thread)で安全に使用することができない。 \fBflockfile\fP(3) を参照のこと。 -.SH 準拠 -\fBgetc_unlocked\fP(), \fBgetchar_unlocked\fP(), \fBputc_unlocked\fP(), -\fBputchar_unlocked\fP() の 4 つの関数は POSIX.1\-2001 に規定されている。 - -.\" E.g., in HP-UX 10.0. In HP-UX 10.30 they are called obsolescent, and -.\" moved to a compatibility library. -.\" Available in HP-UX 10.0: clearerr_unlocked, fclose_unlocked, -.\" feof_unlocked, ferror_unlocked, fflush_unlocked, fgets_unlocked, -.\" fgetwc_unlocked, fgetws_unlocked, fileno_unlocked, fputs_unlocked, -.\" fputwc_unlocked, fputws_unlocked, fread_unlocked, fseek_unlocked, -.\" ftell_unlocked, fwrite_unlocked, getc_unlocked, getchar_unlocked, -.\" getw_unlocked, getwc_unlocked, getwchar_unlocked, putc_unlocked, -.\" putchar_unlocked, puts_unlocked, putws_unlocked, putw_unlocked, -.\" putwc_unlocked, putwchar_unlocked, rewind_unlocked, setvbuf_unlocked, -.\" ungetc_unlocked, ungetwc_unlocked. -非標準の \fB*_unlocked\fP() の仲間は 2、3 の UNIX システムで定義されており、 最近の glibc では使用可能であるが、 -これらの関数は使わない方がよいだろう。 -.SH 関連項目 -\fBflockfile\fP(3), \fBstdio\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/unlockpt.3 b/manual/LDP_man-pages/draft/man3/unlockpt.3 deleted file mode 100644 index cfed8b5b..00000000 --- a/manual/LDP_man-pages/draft/man3/unlockpt.3 +++ /dev/null @@ -1,52 +0,0 @@ -.\" %%%LICENSE_START(PUBLIC_DOMAIN) -.\" This page is in the public domain. - aeb -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Tue Jul 8 02:25:57 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH UNLOCKPT 3 2013\-12\-09 "" "Linux Programmer's Manual" -.SH 名前 -unlockpt \- 擬似端末マスタ/スレーブのペアのロックを解除する -.SH 書式 -.nf -\fB#define _XOPEN_SOURCE\fP /* feature_test_macros(7) 参照 */ -.br -\fB#include \fP -.sp -\fBint unlockpt(int \fP\fIfd\fP\fB);\fP -.fi -.SH 説明 -\fBunlockpt\fP() 関数は \fIfd\fP で参照されるマスタ擬似端末に対応するスレーブ擬似端末のロックを 解除する。 -.PP -擬似端末のスレーブ側をオープンする前に、 \fBunlockpt\fP() を呼び出す必要がある。 -.SH 返り値 -成功した場合、 \fBunlockpt\fP() は 0 を返す。そうでない場合、\-1 を返し、 \fIerrno\fP に適切な値がセットされる。 -.SH エラー -.TP -\fBEBADF\fP -引き数 \fIfd\fP が書き込み用にオープンされたファイルディスクリプターでない。 -.TP -\fBEINVAL\fP -引き数 \fIfd\fP がマスタ擬似端末に対応するものではない。 -.SH バージョン -\fBunlockpt\fP() は、バージョン 2.1 以降の glibc で提供されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBunlockpt\fP() 関数はスレッドセーフである。 -.SH 準拠 -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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/updwtmp.3 b/manual/LDP_man-pages/draft/man3/updwtmp.3 deleted file mode 100644 index ff4e9a59..00000000 --- a/manual/LDP_man-pages/draft/man3/updwtmp.3 +++ /dev/null @@ -1,82 +0,0 @@ -.\" Copyright 1997 Nicolás Lichtmaier -.\" Created Wed Jul 2 23:27:34 ART 1997 -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Added info on availability, aeb, 971207 -.\" Added -lutil remark, 030718 -.\" 2008-07-02, mtk, document updwtmpx() -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 Tomoyuki NISHIOKA -.\" all rights reserved. -.\" Translated Sat May 23 18:46:34 JST 1998 -.\" by Tomoyuki NISHIOKA -.\" Updated 2003-09-14 by Kentaro Shirakata -.\" Updated 2008-07-30 by Kentaro Shirakata -.\" -.TH UPDWTMP 3 2014\-08\-19 GNU "Linux Programmer's Manual" -.SH 名前 -updwtmp, logwtmp \- wtmp ファイルにエントリーを追加する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBvoid updwtmp(const char *\fP\fIwtmp_file\fP\fB, const struct utmp *\fP\fIut\fP\fB);\fP -.br -\fBvoid logwtmp(const char *\fP\fIline\fP\fB, const char *\fP\fIname\fP\fB, const char *\fP\fIhost\fP\fB);\fP -.fi - -\fBlogwtmp\fP() は \fI\-lutil\fP でリンクする。 -.SH 説明 -\fBupdwtmp\fP() は、utmp 構造体 \fIut\fP を wtmp ファイルに追加する。 -.PP -\fBlogwtmp\fP() は、 \fIline\fP, \fIname\fP, \fIhost\fP, 現在時刻、現プロセスID から utmp 構造体を作り、 -\fBupdwtmp\fP() を呼び出してその構造体を wtmp ファイルに追加する。 -.SH ファイル -.TP -\fI/var/log/wtmp\fP -ユーザーログインの履歴データベース -.SH 準拠 -POSIX.1\-2001 にはない。 Solaris, NetBSD に存在し、おそらく他のシステムにもあるだろう。 -.SH 注意 -他の "utmpx" 関数群 (\fBgetutxent\fP(3) 参照) との一貫性のために、glibc (バージョン 2.1 以降) は以下の関数を -提供している: -.nf -.sp -\fB#include \fP -.sp -\fBvoid updwtmpx (const char *\fP\fIwtmpx_file\fP\fB, const struct utmpx *\fP\fIutx\fP\fB);\fP -.fi -.PP -この関数は \fBupdwtmp\fP() と同じ作業を行うが、最後の引き数として \fIutmpx\fP 構造体を取るところが異なる。 -.SH 関連項目 -\fBgetutxent\fP(3), \fBwtmp\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/uselocale.3 b/manual/LDP_man-pages/draft/man3/uselocale.3 index 6f834322..6acc1111 100644 --- a/manual/LDP_man-pages/draft/man3/uselocale.3 +++ b/manual/LDP_man-pages/draft/man3/uselocale.3 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (C) 2014 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) @@ -28,20 +27,20 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH USELOCALE 3 2014\-03\-10 Linux "Linux Programmer's Manual" +.TH USELOCALE 3 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 setlocale \- 現在のスレッドのロケール (locale) を設定/取得する .SH 書式 .nf \fB#include \fP - +.PP \fBlocale_t uselocale(locale_t \fP\fInewloc\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBuselocale\fP(): .PD 0 .RS 4 @@ -57,7 +56,7 @@ _GNU_SOURCE \fBuselocale\fP() 関数は呼び出し元スレッドの現在のロケールを設定し、 そのスレッドの現在のロケールの直前の値を返す。 \fBuselocale\fP() の呼び出しが成功した後は、 ロケールに依存する関数のこのスレッドによる呼び出しは \fInewloc\fP で設定されたロケールで動作する。 - +.PP \fInewloc\fP 引き数には以下の値のいずれかを指定できる。 .TP \fBnewlocale\fP(3) か \fBduplocale\fP(3) の呼び出しで返されたハンドル @@ -69,9 +68,10 @@ _GNU_SOURCE \fI(locale_t) 0\fP 呼び出し元スレッドの現在のロケールは変更されないままである (関数呼び出しの結果として現在のロケールが返される)。 .SH 返り値 -成功すると、 \fBuselocale\fP() は、 このスレッドで一つ前の \fBuselocale\fP() の呼び出しで設定されたロケールハンドルを返す。 -前に \fBuselocale\fP() が呼び出されていない場合は \fBLC_GLOBAL_HANDLE\fP を返す。 エラーの場合、 -\fI(locale_t)\ 0\fP を返し、 \fIerrno\fP にエラーの原因を示す値を設定する。 +On success, \fBuselocale\fP() returns the locale handle that was set by the +previous call to \fBuselocale\fP() in this thread, or \fBLC_GLOBAL_LOCALE\fP if +there was no such previous call. On error, it returns \fI(locale_t)\ 0\fP, and +sets \fIerrno\fP to indicate the cause of the error. .SH エラー .TP \fBEINVAL\fP @@ -84,12 +84,11 @@ POSIX.1\-2008. \fBsetlocale\fP(3) と異なり、 \fBuselocale\fP() では特定のロケールカテゴリーだけを指定して置き換えることはできない。 いくつかのカテゴリーだけで現在のロケールとは異なるカテゴリーを利用するには、 \fBduplocale\fP(3) と \fBnewlocale\fP(3) を呼び出して、 現在のロケールと等価なロケールオブジェクトを取得し、 そのオブジェクトの所望のカテゴリーを変更する必要がある。 -.SH 例 +.SH EXAMPLES \fBnewlocale\fP(3) と \fBduplocale\fP(3) を参照。 .SH 関連項目 \fBlocale\fP(1), \fBduplocale\fP(3), \fBfreelocale\fP(3), \fBnewlocale\fP(3), \fBsetlocale\fP(3), \fBlocale\fP(5), \fBlocale\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/usleep.3 b/manual/LDP_man-pages/draft/man3/usleep.3 deleted file mode 100644 index cd4c401f..00000000 --- a/manual/LDP_man-pages/draft/man3/usleep.3 +++ /dev/null @@ -1,126 +0,0 @@ -.\" 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-24 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2001-04-01 by aeb -.\" Modified 2003-07-23 by aeb -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi -.\" all rights reserved. -.\" Translated Mon Jan 20 18:47:50 JST 1997 -.\" by YOSHINO Takashi -.\" Updated Sat May 19 JST 2001 by Kentaro Shirakata -.\" Updated Mon Sep 1 JST 2003 by Kentaro Shirakata -.\" Updated 2007-05-04, Akihiro MOTOKI , LDP v2.44 -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH USLEEP 3 2013\-12\-10 "" "Linux Programmer's Manual" -.SH 名前 -usleep \- マイクロ秒単位で実行を延期する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint usleep(useconds_t \fP\fIusec\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBusleep\fP(): -.ad l -.RS 4 -.PD 0 -.TP 4 -glibc 2.12 以降: -.nf -_BSD_SOURCE || - (_XOPEN_SOURCE\ >=\ 500 || - _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) && - !(_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700) -.TP 4 -.fi -glibc 2.12 より前: _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED -.PD -.RE -.ad b -.SH 説明 -\fBusleep\fP() 関数は (少なくとも) \fIusec\fPマイクロ秒の間、 呼び出し元スレッドの実行を延期する。 -システムの動作状況や呼び出しによる時間の消費やシステムタイマーの粒度によって、 停止時間は設定した値よりも少し延ばされるかもしれない。 -.SH 返り値 -\fBusleep\fP() 関数は成功すると 0 を返す。 エラーの場合、 \-1 が返され、 \fIerrno\fP にエラーの原因を示す値が設定される。 -.SH エラー -.TP -\fBEINTR\fP -シグナルによって中断された。 \fBsignal\fP(7) 参照。 -.TP -\fBEINVAL\fP -\fIusec\fP が 1000000 以上だった。 (これをエラーとみなすシステムのみ) -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBusleep\fP() 関数はスレッドセーフである。 -.SH 準拠 -4.3BSD, POSIX.1\-2001. POSIX.1\-2001 では、この関数は過去のものと宣言されている。 代わりに -\fBnanosleep\fP(2) を使うこと。 POSIX.1\-2008 では、 \fBusleep\fP() の規定が削除されている。 - -もともとの BSD の実装や、バージョン 2.2.2 より前の glibc では、 この関数の返り値の型は \fIvoid\fP である。 POSIX 版は -\fIint\fP を返し、このプロトタイプは glibc 2.2.2 以降で使用されている。 - -エラーとして \fBEINVAL\fP を返すというのは SUSv2 と POSIX.1\-2001 でのみ文書化されている。 -.SH 注意 -\fIuseconds_t\fP 型は [0,1000000] の範囲の整数を扱うことができる 符号なし整数型である。 -明示的にこの型を使わないことでプログラムの移植性がより高まる。 以下のように使うこと。 -.in +4n -.nf -.sp -#include -\&... - unsigned int usecs; -\&... - usleep(usecs); -.fi -.in -.LP -この関数と、 \fBSIGALRM\fP シグナルあるいは \fBalarm\fP(2), \fBsleep\fP(3), \fBnanosleep\fP(2), -\fBsetitimer\fP(2), \fBtimer_create\fP(2), \fBtimer_delete\fP(2), -\fBtimer_getoverrun\fP(2), \fBtimer_gettime\fP(2), \fBtimer_settime\fP(2), -\fBualarm\fP(3) といったその他のタイマー関数を同時に使った場合の動作は未定義である。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcpcpy.3 b/manual/LDP_man-pages/draft/man3/wcpcpy.3 deleted file mode 100644 index a08c179d..00000000 --- a/manual/LDP_man-pages/draft/man3/wcpcpy.3 +++ /dev/null @@ -1,70 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Mon Oct 25 22:24:35 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCPCPY 3 2013\-12\-10 GNU "Linux Programmer's Manual" -.SH 名前 -wcpcpy \- ワイド文字文字列をコピーし、その末尾を指すポインターを返す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *wcpcpy(wchar_t *\fP\fIdest\fP\fB, const wchar_t *\fP\fIsrc\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBwcpcpy\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.ad -.PD -.SH 説明 -\fBwcpcpy\fP() 関数は、 \fBstpcpy\fP(3) 関数に対応するワイド文字関数である。 この関数は \fIsrc\fP -が指すワイド文字文字列を、 終端のヌルワイド文字 (L\(aq\e0\(aq) を含めて、 \fIdest\fP が指す配列にコピーする。 -.PP -これらの文字列は重なっていてはならない。 -.PP -プログラマは、少なくとも \fIwcslen(src)+1\fP 文字のワイド文字 が入るだけの領域を \fIdest\fP に対して確保しなければならない。 -.SH 返り値 -\fBwcpcpy\fP() は、ワイド文字文字列 \fIdest\fP の末尾、つまり終端のヌルワイド文字 を指すポインターを返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcpcpy\fP() はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2008. -.SH 関連項目 -\fBstrcpy\fP(3), \fBwcscpy\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcpncpy.3 b/manual/LDP_man-pages/draft/man3/wcpncpy.3 deleted file mode 100644 index 3f23f612..00000000 --- a/manual/LDP_man-pages/draft/man3/wcpncpy.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Wed Oct 27 02:17:42 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCPNCPY 3 2013\-12\-16 GNU "Linux Programmer's Manual" -.SH 名前 -wcpncpy \- 固定長のワイド文字文字列をコピーし、その末尾を指すポインターを返す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *wcpncpy(wchar_t *\fP\fIdest\fP\fB, const wchar_t *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBwcpncpy\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.ad -.PD -.SH 説明 -\fBwcpncpy\fP() 関数は、 \fBstpncpy\fP(3) 関数に対応するワイド文字関数である。 この関数は、\fIsrc\fP -が指すワイド文字文字列から \fIdest\fP が指す ワイド文字文字列に、終端のヌルワイド文字 (L\(aq\e0\(aq) を含めて 最大 \fIn\fP -文字をコピーする。 ちょうど \fIn\fP 個のワイド文字が \fIdest\fP にコピーされる。 つまり、\fIwcslen(src)\fP の長さが \fIn\fP -より小さければ、 \fIdest\fP が指す配列中の残りのワイド文字は L\(aq\e0\(aq 文字で埋められる。 \fIwcslen(src)\fP の長さが -\fIn\fP 以上ならば、\fIdest\fP が指す 文字列は L\(aq\e0\(aq で終端されない。 -.PP -これらの文字列は重なっていてはならない。 -.PP -プログラマは、少なくとも \fIn\fP 個のワイド文字が入る領域を \fIdest\fP に確保しなければならない。 -.SH 返り値 -\fBwcpncpy\fP() は、最後に書き込まれたワイド文字へのポインター、 すなわち \fIdest\fP+\fIn\fP\-1 を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcpncpy\fP() はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2008. -.SH 関連項目 -\fBstpncpy\fP(3), \fBwcsncpy\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcrtomb.3 b/manual/LDP_man-pages/draft/man3/wcrtomb.3 deleted file mode 100644 index a7fd4d02..00000000 --- a/manual/LDP_man-pages/draft/man3/wcrtomb.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Mon Oct 25 22:55:40 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCRTOMB 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -wcrtomb \- ワイド文字 1 つをマルチバイト列に変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t wcrtomb(char *\fP\fIs\fP\fB, wchar_t \fP\fIwc\fP\fB, mbstate_t *\fP\fIps\fP\fB);\fP -.fi -.SH 説明 -この関数が主に使われるのは、\fIs\fP が NULL でなく、 \fIwc\fP がヌルワイド文字 (L\(aq\e0\(aq) でない場合である。 -この場合には、 \fBwcrtomb\fP() 関数はワイド文字 \fIwc\fP をマルチバイト表 現に変換し、\fIs\fP が指す char -型の配列にこれを格納する。この関数は シフト状態 \fI*ps\fP を更新し、出力されたマルチバイト表現の長さ、すな わち \fIs\fP -に書き込まれたバイト数を返す。 -.PP -別のケースとしては、\fIs\fP は NULL でないが \fIwc\fP がヌルワイド文字 (L\(aq\e0\(aq) のことがある。 この場合の -\fBwcrtomb\fP() 関数は、\fI*ps\fP を初期状態に戻すのに必 要なシフトシーケンスを \fIs\fP が指す char 型配列に格納し、その後に -\(aq\e0\(aq を格納する。この関数はシフト状態 \fI*ps\fP を更新し(つまり初期状態に戻 し)、シフトシーケンスの長さに 1 -を加えた値を返す。この値は \fIs\fP に 書き込まれたバイト数である。 -.PP -三番目のケースは、\fIs\fP が NULL の時である。 この場合には \fIwc\fP は無視され、関数の実際の動きとしては - - wcrtomb(buf, L\(aq\e0\(aq, ps) - -が返される。ここで、 \fIbuf\fP は内部的な無名バッファーである。 -.PP -以上のいずれの場合も、\fIps\fP が NULL ならばシフト状態は用い られず、 \fBwcrtomb\fP() -関数だけが知っている静的な匿名の状態が使われる。 -.SH 返り値 -\fBwcrtomb\fP() 関数は、\fIs\fP が指すバイト列に書き込まれたバイト数、あ るいは書き込まれたであろうバイト数を返す。\fIwc\fP -を(現在のロケールに 従って)マルチバイト列で表現できなければ、 \fI(size_t)\ \-1\fP が返され、 \fIerrno\fP に \fBEILSEQ\fP -が設定される。 -.SH 準拠 -C99. -.SH 注意 -\fBwcrtomb\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.PP -\fIps\fP に NULL を渡した際の動作はマルチスレッドセーフでない。 -.SH 関連項目 -\fBmbsinit\fP(3), \fBwcsrtombs\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcscasecmp.3 b/manual/LDP_man-pages/draft/man3/wcscasecmp.3 deleted file mode 100644 index 34166a4a..00000000 --- a/manual/LDP_man-pages/draft/man3/wcscasecmp.3 +++ /dev/null @@ -1,74 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Mon Oct 25 23:52:06 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSCASECMP 3 2014\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -wcscasecmp \- ワイド文字列を比較する。大文字と小文字を区別しない。 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint wcscasecmp(const wchar_t *\fP\fIs1\fP\fB, const wchar_t *\fP\fIs2\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBwcscasecmp\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.ad -.PD -.SH 説明 -\fBwcscasecmp\fP() 関数は、 \fBstrcasecmp\fP(3) 関数に対応するワイド文字関数 である。この関数は、\fIs1\fP -が指すワイド文字文字列と \fIs2\fP が指す ワイド文字文字列を、大文字と小文字の違い (\fBtowupper\fP(3), \fBtowlower\fP(3)) -を無視して比較する。 -.SH 返り値 -\fBwcscasecmp\fP() 関数は、\fIs1\fP と \fIs2\fP が指すワイド文字列を大文 字と小文字の違いを無視して比較した時に、等しければ 0 -を返す。大文字と 小文字の違いを無視して \fIs1\fP の方が \fIs2\fP より大きければ正の整数 を返す。 大文字と小文字の違いを無視して \fIs1\fP -の方が \fIs2\fP より小さければ 負の整数を返す。 -.SH バージョン -\fBwcscasecmp\fP() 関数は glibc バージョン 2.1 以降で提供されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBwcscasecmp\fP() 関数は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -POSIX.1\-2008. この関数は POSIX.1\-2001 では規定されていないが、 Linux 以外の他のシステムで広く利用可能である。 -.SH 注意 -\fBwcscasecmp\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP に依存する。 -.SH 関連項目 -\fBstrcasecmp\fP(3), \fBwcscmp\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcscat.3 b/manual/LDP_man-pages/draft/man3/wcscat.3 deleted file mode 100644 index 8844be4b..00000000 --- a/manual/LDP_man-pages/draft/man3/wcscat.3 +++ /dev/null @@ -1,54 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sun Oct 17 21:56:31 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSCAT 3 2013\-12\-02 GNU "Linux Programmer's Manual" -.SH 名前 -wcscat \- 2 つのワイド文字文字列を結合する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *wcscat(wchar_t *\fP\fIdest\fP\fB, const wchar_t *\fP\fIsrc\fP\fB);\fP -.fi -.SH 説明 -\fBwcscat\fP() 関数は、 \fBstrcat\fP(3) に対応するワイド文字関数である。 この関数は、\fIsrc\fP が指すワイド文字文字列 -(終端のヌルワイド文字 (L\(aq\e0\(aq) を含む) を、 \fIdest\fP が指すワイド文字文字列の最後にコピーする。 -.PP -これらの文字列は重なっていてはならない。 -.PP -プログラマは、少なくとも \fIwcslen(dest)\fP+\fIwcslen(src)\fP+1 文字の ワイド文字が入るだけの領域を \fIdest\fP -に対して確保しなければならない。 -.SH 返り値 -\fBwcscat\fP() は \fIdest\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcscat\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBstrcat\fP(3), \fBwcpcpy\fP(3), \fBwcscpy\fP(3), \fBwcsncat\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcschr.3 b/manual/LDP_man-pages/draft/man3/wcschr.3 deleted file mode 100644 index 5a448ff3..00000000 --- a/manual/LDP_man-pages/draft/man3/wcschr.3 +++ /dev/null @@ -1,50 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sun Oct 17 21:56:31 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSCHR 3 2013\-12\-02 GNU "Linux Programmer's Manual" -.SH 名前 -wcschr \- ワイド文字文字列中のワイド文字を検索する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *wcschr(const wchar_t *\fP\fIwcs\fP\fB, wchar_t \fP\fIwc\fP\fB);\fP -.fi -.SH 説明 -\fBwcschr\fP() 関数は、 \fBstrchr\fP(3) 関数に対応するワイド文字関数である。 この関数は、\fIwcs\fP -が指すワイド文字文字列の中で最初に現われる \fIwc\fP を検索する。 -.SH 返り値 -\fBwcschr\fP() 関数は、\fIwcs\fP が指すワイド文字文字列の中で最初に現われた \fIwc\fP へのポインターを返す。\fIwc\fP -が文字列中に現われなかった場合は NULL を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcschr\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBstrchr\fP(3), \fBwcspbrk\fP(3), \fBwcsrchr\fP(3), \fBwcsstr\fP(3), \fBwmemchr\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcscmp.3 b/manual/LDP_man-pages/draft/man3/wcscmp.3 deleted file mode 100644 index 1fb6f251..00000000 --- a/manual/LDP_man-pages/draft/man3/wcscmp.3 +++ /dev/null @@ -1,51 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sun Oct 17 22:09:35 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSCMP 3 2013\-12\-02 GNU "Linux Programmer's Manual" -.SH 名前 -wcscmp \- 2 つのワイド文字文字列を比較する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint wcscmp(const wchar_t *\fP\fIs1\fP\fB, const wchar_t *\fP\fIs2\fP\fB);\fP -.fi -.SH 説明 -\fBwcscmp\fP() 関数は、 \fBstrcmp\fP(3) 関数に対応するワイド文字関数である。 この関数は、\fIs1\fP が指すワイド文字文字列と -\fIs2\fP が指すワイド文字文字列を比較する。 -.SH 返り値 -\fBwcscmp\fP() 関数は、\fIs1\fP と \fIs2\fP がそれぞれ指すワイド文字文字列 が同じであれば 0 -を返す。異なる文字が最初に現われた位置において、その位 置にあるワイド文字 \fIs1[i]\fP が \fIs2[i]\fP より大きければ正の値を返す。 -異なる文字が最初に現われた位置において、その位置にあるワイド文字 \fIs1[i]\fP が \fIs2[i]\fP より小さければ負の値を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcscmp\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBstrcmp\fP(3), \fBwcscasecmp\fP(3), \fBwmemcmp\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcscpy.3 b/manual/LDP_man-pages/draft/man3/wcscpy.3 deleted file mode 100644 index 08733d12..00000000 --- a/manual/LDP_man-pages/draft/man3/wcscpy.3 +++ /dev/null @@ -1,53 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sun Oct 17 22:19:07 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSCPY 3 2013\-12\-02 GNU "Linux Programmer's Manual" -.SH 名前 -wcscpy \- ワイド文字文字列をコピーする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *wcscpy(wchar_t *\fP\fIdest\fP\fB, const wchar_t *\fP\fIsrc\fP\fB);\fP -.fi -.SH 説明 -\fBwcscpy\fP() 関数は、 \fBstrcpy\fP(3) 関数に対応するワイド文字関数である。 この関数は、\fIsrc\fP が指すワイド文字 -(終端のヌルワイド文字 (L\(aq\e0\(aq) を含む)を \fIdest\fP が指す配列にコピーする。 -.PP -これらの文字列は重なっていてはならない。 -.PP -プログラマは、少なくとも \fIwcslen(src)+1\fP 文字のワイド文字 が入るだけの領域を \fIdest\fP に対して確保しなければならない。 -.SH 返り値 -\fBwcscpy\fP() は \fIdest\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcscpy\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBstrcpy\fP(3), \fBwcpcpy\fP(3), \fBwcscat\fP(3), \fBwcsdup\fP(3), \fBwmemcpy\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcscspn.3 b/manual/LDP_man-pages/draft/man3/wcscspn.3 deleted file mode 100644 index de9aabc2..00000000 --- a/manual/LDP_man-pages/draft/man3/wcscspn.3 +++ /dev/null @@ -1,53 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sun Oct 17 22:19:07 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSCSPN 3 2013\-12\-02 GNU "Linux Programmer's Manual" -.SH 名前 -wcscspn \- ワイド文字文字列から、与えた文字集合に含まれる文字を検索する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t wcscspn(const wchar_t *\fP\fIwcs\fP\fB, const wchar_t *\fP\fIreject\fP\fB);\fP -.fi -.SH 説明 -\fBwcscspn\fP() 関数は、 \fBstrcspn\fP(3) 関数に対応するワイド文字関数である。 この関数は、\fIwcs\fP -の先頭部分を調べ、\fIreject\fP に列挙されていない ワイド文字だけによって構成される部分を最も長く取った場合の長さを求める。 -言い換えると、この関数はワイド文字文字列 \fIwcs\fP の中に、ワイド文字列 \fIreject\fP に含まれるいずれかの文字が現われる最初の位置を探す。 -.SH 返り値 -\fBwcscspn\fP() 関数は、\fIwcs\fP の先頭部分を調べ、\fIreject\fP に列挙 -されていないワイド文字だけによって構成される部分を最も長く取った場合の 長さを返す。 言い換えると、この関数はワイド文字文字列 \fIwcs\fP -の中に、ワイド文字列 \fIreject\fP に含まれるいずれかの文字が現われる最初の位置を返す。 何も現われなかった場合には \fIwcslen(wcs)\fP -を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcscspn\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBstrcspn\fP(3), \fBwcspbrk\fP(3), \fBwcsspn\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcsdup.3 b/manual/LDP_man-pages/draft/man3/wcsdup.3 deleted file mode 100644 index 799abcf1..00000000 --- a/manual/LDP_man-pages/draft/man3/wcsdup.3 +++ /dev/null @@ -1,75 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Mon Oct 18 22:36:21 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" Updated & Modified Sun Jun 6 13:23:46 JST 2004 -.\" by Yuichi SATO -.\" Updated 2013-07-22, Akihiro MOTOKI -.\" -.TH WCSDUP 3 2013\-04\-19 GNU "Linux Programmer's Manual" -.SH 名前 -wcsdup \- ワイド文字文字列を複製する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *wcsdup(const wchar_t *\fP\fIs\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBwcsdup\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.ad -.PD -.SH 説明 -\fBwcsdup\fP() 関数は、 \fBstrdup\fP(3) 関数のワイド文字版である。 この関数はポインター \fIs\fP -が指し示すワイド文字文字列の複製を 新しい領域に割り当てて返す。 -.PP -新しいワイド文字文字列のためのメモリーは \fBmalloc\fP(3) を使って割り当てられる。 この領域は \fBfree\fP(3) -を使って解放すべきである。 -.SH 返り値 -成功すると、 \fBwcsdup\fP() 関数は、新しいワイド文字文字列へのポインターを返す。 エラーの場合、 \-1 が返り、 \fIerrno\fP -にエラーの原因を示す値が設定される。 -.SH エラー -.TP -\fBENOMEM\fP -複製文字列を割り当てるのに十分なメモリーがない。 -.SH 準拠 -.\" present in libc5 and glibc 2.0 and later -POSIX.1\-2008. この関数は POSIX.1\-2001 では規定されていないが、 Linux 以外の他のシステムで広く利用可能である。 -.SH 関連項目 -\fBstrdup\fP(3), \fBwcscpy\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcslen.3 b/manual/LDP_man-pages/draft/man3/wcslen.3 deleted file mode 100644 index bb5b7dd2..00000000 --- a/manual/LDP_man-pages/draft/man3/wcslen.3 +++ /dev/null @@ -1,50 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Mon Oct 18 22:43:56 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSLEN 3 2013\-11\-21 GNU "Linux Programmer's Manual" -.SH 名前 -wcslen \- ワイド文字文字列の長さを求める -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t wcslen(const wchar_t *\fP\fIs\fP\fB);\fP -.fi -.SH 説明 -\fBwcslen\fP() 関数は、 \fBstrlen\fP(3) 関数に対応するワイド文字関数である。 -この関数は、\fIs\fP が指すワイド文字文字列の長さを求める。 -終端のヌルワイド文字 (L\(aq\e0\(aq) はこの長さには含まれない。 -.SH 返り値 -\fBwcslen\fP() 関数は、\fIs\fP に含まれるワイド文字の数を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcslen\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBstrlen\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcsncasecmp.3 b/manual/LDP_man-pages/draft/man3/wcsncasecmp.3 deleted file mode 100644 index 5945ca67..00000000 --- a/manual/LDP_man-pages/draft/man3/wcsncasecmp.3 +++ /dev/null @@ -1,75 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Mon Oct 18 22:59:06 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSNCASECMP 3 2014\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -wcsncasecmp \- 大文字と小文字を区別せず、2 つの固定長のワイド文字文字列を比較する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint wcsncasecmp(const wchar_t *\fP\fIs1\fP\fB, const wchar_t *\fP\fIs2\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBwcsncasecmp\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.ad -.PD -.SH 説明 -\fBwcsncasecmp\fP() 関数は、 \fBstrncasecmp\fP(3) 関数に対応するワイド文字関 数である。この関数は、\fIs1\fP -が指すワイド文字文字列と \fIs2\fP が指 すワイド文字文字列を比較するが、最大でも先頭のワイド文字 \fIn\fP 個 しか比較しない。また、大文字と小文字 -(\fBtowupper\fP(3), \fBtowlower\fP(3)) は区別しない。 -.SH 返り値 -\fBwcsncasecmp\fP() 関数は、\fIs1\fP と \fIs2\fP がそれぞれ指す文字列を \fIn\fP -文字に収まるように切り詰めたものを、大文字と小文字の違いを無視 して比較したときに等しければ 0 を返す。この関数は、大文字と小文字を区 -別しない場合に、\fIs1\fP を切り詰めたものが \fIs2\fP を切り詰めたもの より大きければ正の値を返す。この関数は、大文字と小文字を区別しない場合 -に、\fIs1\fP を切り詰めたものが \fIs2\fP を切り詰めたものより小さけれ ば負の値を返す。 -.SH バージョン -\fBwcsncasecmp\fP() 関数は glibc バージョン 2.1 以降で提供されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBwcsncasecmp\fP() 関数は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -POSIX.1\-2008. この関数は POSIX.1\-2001 では規定されていないが、 Linux 以外の他のシステムで広く利用可能である。 -.SH 注意 -\fBwcsncasecmp\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.SH 関連項目 -\fBstrncasecmp\fP(3), \fBwcsncmp\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcsncat.3 b/manual/LDP_man-pages/draft/man3/wcsncat.3 deleted file mode 100644 index 829739df..00000000 --- a/manual/LDP_man-pages/draft/man3/wcsncat.3 +++ /dev/null @@ -1,54 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Mon Oct 18 23:11:34 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSNCAT 3 2013\-11\-25 GNU "Linux Programmer's Manual" -.SH 名前 -wcsncat \- 2 つのワイド文字文字列を結合する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *wcsncat(wchar_t *\fP\fIdest\fP\fB, const wchar_t *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBwcsncat\fP() 関数は \fBstrncat\fP(3) に対応するワイド文字関数である。 この関数は、\fIsrc\fP -が指すワイド文字文字列から最大 \fIn\fP 個分のワ イド文字をコピーして、\fIdest\fP が指すワイド文字文字列の末尾に貼り付 ける。\fIdest\fP -の終端には ヌルワイド文字 (L\(aq\e0\(aq) を追加する。 -.PP -これらの文字列は重なっていてはならない。 -.PP -プログラマは、\fIdest\fP に少なくとも \fIwcslen(dest)\fP+\fIn\fP+1 個のワイド文字が入る領域を確保しておかなければならない。 -.SH 返り値 -\fBwcsncat\fP() は \fIdest\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcsncat\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBstrncat\fP(3), \fBwcscat\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcsncmp.3 b/manual/LDP_man-pages/draft/man3/wcsncmp.3 deleted file mode 100644 index 25c81986..00000000 --- a/manual/LDP_man-pages/draft/man3/wcsncmp.3 +++ /dev/null @@ -1,53 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Mon Oct 18 23:40:56 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSNCMP 3 2013\-11\-25 GNU "Linux Programmer's Manual" -.SH 名前 -wcsncmp \- 2 つの固定長ワイド文字文字列を比較する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint wcsncmp(const wchar_t *\fP\fIs1\fP\fB, const wchar_t *\fP\fIs2\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBwcsncmp\fP() 関数は、 \fBstrncmp\fP(3) 関数に対応するワイド文字関数である。 この関数は、\fIs1\fP -が指すワイド文字文字列と \fIs2\fP が指すワイド文 字文字列を比較するが、最大でも先頭のワイド文字 \fIn\fP 個までしか比較 -しない。またいずれかの文字列にヌルワイド文字 (L\(aq\e0\(aq) が現れたら、 比較はその位置で終了する。 -.SH 返り値 -\fBwcsncmp\fP() 関数は、\fIs1\fP と \fIs2\fP がそれぞれ指す文字列を \fIn\fP 文字に収まるように切り詰めたものが等しければ 0 -を返す。 この関数は、異なる文字が最初に現われた位置 \fIi\fP (\fIi\fP < \fIn\fP) において、その位置にある文字 \fIs1[i]\fP が -\fIs2[i]\fP より大きければ 正の値を返す。異なる文字が最初に現われた位置 \fIi\fP (\fIi\fP < \fIn\fP) -において、その位置にある文字 \fIs1[i]\fP が \fIs2[i]\fP より小さければ 負の値を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcsncmp\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBstrncmp\fP(3), \fBwcsncasecmp\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcsncpy.3 b/manual/LDP_man-pages/draft/man3/wcsncpy.3 deleted file mode 100644 index ddf427f7..00000000 --- a/manual/LDP_man-pages/draft/man3/wcsncpy.3 +++ /dev/null @@ -1,56 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Tue Oct 19 02:13:45 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSNCPY 3 2013\-11\-25 GNU "Linux Programmer's Manual" -.SH 名前 -wcsncpy \- 固定長のワイド文字文字列をコピーする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *wcsncpy(wchar_t *\fP\fIdest\fP\fB, const wchar_t *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBwcsncpy\fP() 関数は、 \fBstrncpy\fP(3) 関数に対応するワイド文字関数である。 この関数は \fIsrc\fP -が指すワイド文字文字列から、 終端のヌルワイド文字 (L\(aq\e0\(aq) を 含めて最大 \fIn\fP 個のワイド文字を、\fIdest\fP -が指す配列にコピーする。 ちょうど \fIn\fP 個のワイド文字が \fIdest\fP に書き込まれる。 \fIwcslen(src)\fP の長さが \fIn\fP -より小さければ、\fIdest\fP が指す 配列の残りのワイド文字の部分は ヌルワイド文字で埋められる。 \fIwcslen(src)\fP の長さが \fIn\fP -以上ならば、\fIdest\fP が指す文字列 がヌルワイド文字で終端されることはない。 -.PP -これらの文字列は重なっていてはならない。 -.PP -プログラマは、少なくとも \fIn\fP 個のワイド文字が入る領域を \fIdest\fP に確保しなければならない。 -.SH 返り値 -\fBwcsncpy\fP() は \fIdest\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcsncpy\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBstrncpy\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcsnlen.3 b/manual/LDP_man-pages/draft/man3/wcsnlen.3 deleted file mode 100644 index a77f6cb9..00000000 --- a/manual/LDP_man-pages/draft/man3/wcsnlen.3 +++ /dev/null @@ -1,72 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Tue Oct 19 02:22:50 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSNLEN 3 2013\-11\-25 GNU "Linux Programmer's Manual" -.SH 名前 -wcsnlen \- 固定長のワイド文字文字列の長さを求める -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t wcsnlen(const wchar_t *\fP\fIs\fP\fB, size_t \fP\fImaxlen\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBwcsncasecmp\fP(): -.PD 0 -.ad l -.RS 4 -.TP 4 -glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L -.TP -glibc 2.10 より前: -_GNU_SOURCE -.RE -.ad -.PD -.SH 説明 -\fBwcsnlen\fP() 関数は、 \fBstrnlen\fP(3) 関数に対応するワイド文字関数である。 この関数は、\fIs\fP -が指す文字列中のワイド文字の数を返すが、 返されるのはワイド文字で最大 \fImaxlen\fP 文字までである -(このパラメーターはバイト数ではない点に注意)。 また、終端のヌルワイド文字 (L\(aq\e0\(aq) は含まない。 これを行う際には、 -\fBwcsnlen\fP() は \fIs\fP が指すワイド文字列の最初の \fImaxlen\fP 文字しか見ず、決して \fIs+maxlen\fP -文字を超えて文字列を 参照することはない。 -.SH 返り値 -\fBwcsnlen\fP() 関数は、\fIwcslen(s)\fP の値が \fImaxlen\fP より小さけれ ば \fIwcslen(s)\fP -を返す。あるいは、\fIs\fP が指すワイド文字列中の 最初の \fImaxlen\fP 文字に ヌルワイド文字が含まれていなければ \fImaxlen\fP を返す。 -.SH バージョン -\fBwcsnlen\fP() 関数は glibc バージョン 2.1 以降で提供されている。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcsnlen\fP() はスレッドセーフである。 -.SH 準拠 -POSIX.1\-2008. -.SH 関連項目 -\fBstrnlen\fP(3), \fBwcslen\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcsnrtombs.3 b/manual/LDP_man-pages/draft/man3/wcsnrtombs.3 index 483fe86c..a14e5e4d 100644 --- a/manual/LDP_man-pages/draft/man3/wcsnrtombs.3 +++ b/manual/LDP_man-pages/draft/man3/wcsnrtombs.3 @@ -21,28 +21,28 @@ .\" Translated Fri Oct 22 01:12:12 JST 1999 .\" by FUJIWARA Teruyoshi .\" -.TH WCSNRTOMBS 3 2014\-03\-18 GNU "Linux Programmer's Manual" +.TH WCSNRTOMBS 3 2019\-03\-06 GNU "Linux Programmer's Manual" .SH 名前 wcsnrtombs \- ワイド文字文字列をマルチバイト文字列に変換する .SH 書式 .nf \fB#include \fP -.sp +.PP \fBsize_t wcsnrtombs(char *\fP\fIdest\fP\fB, const wchar_t **\fP\fIsrc\fP\fB, size_t \fP\fInwc\fP\fB,\fP \fB size_t \fP\fIlen\fP\fB, mbstate_t *\fP\fIps\fP\fB);\fP .fi -.sp -.in -4n +.PP +.RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp +.RE +.PP \fBwcsnrtombs\fP(): .PD 0 .ad l .RS 4 .TP 4 glibc 2.10 以降: -_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L +_POSIX_C_SOURCE\ >=\ 200809L .TP glibc 2.10 より前: _GNU_SOURCE @@ -80,6 +80,18 @@ _GNU_SOURCE .SH 返り値 \fBwcsrtombs\fP() は、変換して得られたマルチバイト列のバイト数を返す。 これには終端の null バイトは含まれない。 変換できないワイド文字に出会った場合には \fI(size_t)\ \-1\fP が返され、 \fIerrno\fP に \fBEILSEQ\fP が設定される。 +.SH 属性 +For an explanation of the terms used in this section, see \fBattributes\fP(7). +.TS +allbox; +lb lb lbw29 +l l l. +Interface Attribute Value +T{ +\fBwcsnrtombs\fP() +T} Thread safety MT\-Unsafe race:wcsnrtombs/!ps +.TE +.sp 1 .SH 準拠 POSIX.1\-2008. .SH 注意 @@ -89,6 +101,5 @@ POSIX.1\-2008. .SH 関連項目 \fBiconv\fP(3), \fBmbsinit\fP(3), \fBwcsrtombs\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcspbrk.3 b/manual/LDP_man-pages/draft/man3/wcspbrk.3 deleted file mode 100644 index 2298a4d9..00000000 --- a/manual/LDP_man-pages/draft/man3/wcspbrk.3 +++ /dev/null @@ -1,50 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sat Oct 23 15:19:34 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSPBRK 3 2013\-11\-18 GNU "Linux Programmer's Manual" -.SH 名前 -wcspbrk \- ワイド文字列から、与えられたワイド文字集合に含まれる文字を検索する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *wcspbrk(const wchar_t *\fP\fIwcs\fP\fB, const wchar_t *\fP\fIaccept\fP\fB);\fP -.fi -.SH 説明 -\fBwcspbrk\fP() 関数は、 \fBstrpbrk\fP(3) 関数に対応するワイド文字関数である。 この関数は、\fIwcs\fP -が指すワイド文字文字列において、\fIaccept\fP が 示すワイド文字文字列のいずれかの文字が最初に現われる位置を検索する。 -.SH 返り値 -\fBwcspbrk\fP() 関数は、\fIaccept\fP に列挙された文字のいずれかが \fIwcs\fP -中に最初に現われた位置へのポインターを返す。このような文字が \fIwcs\fP に含まれない場合は、NULL が返される。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcspbrk\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBstrpbrk\fP(3), \fBwcschr\fP(3), \fBwcscspn\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcsrchr.3 b/manual/LDP_man-pages/draft/man3/wcsrchr.3 deleted file mode 100644 index 0b5725d7..00000000 --- a/manual/LDP_man-pages/draft/man3/wcsrchr.3 +++ /dev/null @@ -1,50 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sat Oct 23 15:19:34 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSRCHR 3 2013\-11\-19 GNU "Linux Programmer's Manual" -.SH 名前 -wcsrchr \- ワイド文字列中のワイド文字を探す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *wcsrchr(const wchar_t *\fP\fIwcs\fP\fB, wchar_t \fP\fIwc\fP\fB);\fP -.fi -.SH 説明 -\fBwcsrchr\fP() 関数は、 \fBstrrchr\fP(3) 関数に対応するワイド文字関数である。 この関数は、\fIwcs\fP -が指すワイド文字文字列中に \fIwc\fP が最後に現わ れる位置を検索する。 -.SH 返り値 -\fBwcsrchr\fP 関数は、\fIwcs\fP が指すワイド文字文字列中に \fIwc\fP が 最後に現われた位置を返す。この文字列に \fIwc\fP -が含まれていなければ NULL を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcsrchr\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBstrrchr\fP(3), \fBwcschr\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcsrtombs.3 b/manual/LDP_man-pages/draft/man3/wcsrtombs.3 deleted file mode 100644 index daaad782..00000000 --- a/manual/LDP_man-pages/draft/man3/wcsrtombs.3 +++ /dev/null @@ -1,73 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sat Oct 23 15:38:11 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSRTOMBS 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -wcsrtombs \- ワイド文字文字列をマルチバイト文字列に変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t wcsrtombs(char *\fP\fIdest\fP\fB, const wchar_t **\fP\fIsrc\fP\fB,\fP -\fB size_t \fP\fIlen\fP\fB, mbstate_t *\fP\fIps\fP\fB);\fP -.fi -.SH 説明 -\fIdest\fP が NULL でなければ、 \fBwcsrtombs\fP() 関数は ワイド文字文字列 \fI*src\fP を \fIdest\fP -が指すマルチバイト文字列 に変換する。最大 \fIlen\fP バイトまでが \fIdest\fP に書き込まれる。 シフト状態 \fI*ps\fP -は更新される。実際の効果としては、この変換は以下 の動作と同じになる: \fIwcrtomb(dest, *src, ps)\fP を呼び、成功が返ったら、 -\fIdest\fP を書き込んだバイト数だけ増やし、\fI*src\fP を 1 増やす。 そして、wcrtomb が成功を返す限りこれを繰り返す。 -変換が止まる理由は 3 つ考えられる: -.PP -1. (現在のロケールに基づいて)マルチバイト列で表現できないワイド文字に 出会った場合。この場合は、\fI*src\fP -は不正なワイド文字を指した状態になり、 \fI(size_t)\ \-1\fP が返され、\fIerrno\fP に \fBEILSEQ\fP が設定される。 -.PP -2. 長さの制限により変換が止められた場合。この場合には、\fI*src\fP は次に 変換されるべきワイド文字列を指した状態になり、\fIdest\fP -に書き込まれ たバイト数が返される。 -.PP -3. ワイド文字列が終端のヌルワイド文字 (L\(aq\e0\(aq) も含めて全て 変換された場合。この際、\fI*ps\fP -が初期状態に戻るという副作用がある。 この場合には \fI*src\fP に NULL が設定され、\fIdest\fP に書き込まれた バイト数が返される -(終端のヌルバイト (L\(aq\e0\(aq) は数えない)。 -.PP -\fIdest\fP が NULL ならば \fIlen\fP は無視されて前述のように変換が行わ -れるが、変換されたバイトデータはメモリーに書き出されない点と、出力先の長 さの制限がない点が異なる。 -.PP -上記のいずれの場合も、\fIps\fP が NULL ならば、\fBwcsrtombs\fP() 関数 -だけが知っている静的な匿名の状態がシフト状態の代わりに用いられる。 -.PP -プログラマは少なくとも \fIlen\fP バイトの領域を \fIdest\fP に確保しな ければならない。 -.SH 返り値 -\fBwcsrtombs\fP() は、変換して得られたマルチバイト列のバイト数を返す。 これには終端の null バイトは含まれない。 -変換できないワイド文字に出会った場合には \fI(size_t)\ \-1\fP が返され、 \fIerrno\fP に \fBEILSEQ\fP が設定される。 -.SH 準拠 -C99. -.SH 注意 -\fBwcsrtombs\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.PP -\fIps\fP に NULL を渡した際の動作はマルチスレッドセーフでない。 -.SH 関連項目 -\fBiconv\fP(3), \fBmbsinit\fP(3), \fBwcrtomb\fP(3), \fBwcsnrtombs\fP(3), \fBwcstombs\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcsspn.3 b/manual/LDP_man-pages/draft/man3/wcsspn.3 deleted file mode 100644 index ec715e29..00000000 --- a/manual/LDP_man-pages/draft/man3/wcsspn.3 +++ /dev/null @@ -1,53 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sat Oct 23 15:46:13 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSSPN 3 2013\-11\-11 GNU "Linux Programmer's Manual" -.SH 名前 -wcsspn \- ワイド文字文字列を進み、ワイド文字の集合の文字をスキップする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t wcsspn(const wchar_t *\fP\fIwcs\fP\fB, const wchar_t *\fP\fIaccept\fP\fB);\fP -.fi -.SH 説明 -\fBwcsspn\fP() 関数は、 \fBstrspn\fP(3) 関数に対応するワイド文字関数である。 この関数は、\fIwcs\fP -の先頭部分を調べ、\fIaccept\fP に列挙されている ワイド文字だけによって構成される部分を最も長く取った場合の長さを求める。 -言い換えると、この関数はワイド文字文字列 \fIwcs\fP の中に、ワイド文字列 \fIaccept\fP に含まれていない文字が現われる最初の位置を探す。 -.SH 返り値 -\fBwcsspn\fP() 関数は、\fIwcs\fP の先頭部分を調べ、\fIaccept\fP に列挙さ -れているワイド文字だけによって構成される部分を最も長く取った場合の長さ を返す。 言い換えると、この関数はワイド文字文字列 \fIwcs\fP -の中に、ワイド文字列 \fIaccept\fP に含まれていない文字が現われる最初の位置を返す。 何も現われなかった場合には \fIwcslen(wcs)\fP -を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcsspn\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBstrspn\fP(3), \fBwcscspn\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcsstr.3 b/manual/LDP_man-pages/draft/man3/wcsstr.3 deleted file mode 100644 index 97af5c09..00000000 --- a/manual/LDP_man-pages/draft/man3/wcsstr.3 +++ /dev/null @@ -1,53 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sat Oct 23 15:50:55 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSSTR 3 2013\-11\-12 GNU "Linux Programmer's Manual" -.SH 名前 -wcsstr \- ワイド文字文字列中の部分文字列の位置を特定する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *wcsstr(const wchar_t *\fP\fIhaystack\fP\fB, const wchar_t *\fP\fIneedle\fP\fB);\fP -.fi -.SH 説明 -\fBwcsstr\fP() 関数は、 \fBstrstr\fP(3) 関数に対応するワイド文字文字列である。 この関数はワイド文字文字列 \fIneedle\fP -(終端のヌルワイド文字 (L\(aq\e0\(aq) は含まない) が、ワイド文字文字列 \fIhaystack\fP の部分文字列 -として最初に現われる位置を探す。 -.SH 返り値 -\fBwcsstr\fP() 関数は、\fIhaystack\fP 中に \fIneedle\fP が現われた最初の 位置を返す。\fIneedle\fP が -\fIhaystack\fP の部分文字列でなければ NULL を返す。 -.PP -以下の特殊な場合に注意すること: \fIneedle\fP が空のワイド文字文字列な らば、返り値は常に \fIhaystack\fP 自身となる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcsstr\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBstrstr\fP(3), \fBwcschr\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcstoimax.3 b/manual/LDP_man-pages/draft/man3/wcstoimax.3 deleted file mode 100644 index 6fccadd2..00000000 --- a/manual/LDP_man-pages/draft/man3/wcstoimax.3 +++ /dev/null @@ -1,64 +0,0 @@ -.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl) -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Sat Sep 11 07:57:58 JST 2004 -.\" by Yuichi SATO -.\" -.TH WCSTOIMAX 3 2014\-01\-22 "" "Linux Programmer's Manual" -.SH 名前 -wcstoimax, wcstoumax \- ワイド文字文字列を整数に変換する -.SH 書式 -.nf -\fB#include \fP -.br -\fB#include \fP -.sp -\fBintmax_t wcstoimax(const wchar_t *\fP\fInptr\fP\fB, wchar_t **\fP\fIendptr\fP\fB, int \fP\fIbase\fP\fB);\fP -.br -\fBuintmax_t wcstoumax(const wchar_t *\fP\fInptr\fP\fB, wchar_t **\fP\fIendptr\fP\fB, int \fP\fIbase\fP\fB);\fP -.fi -.SH 説明 -これらの関数はちょうど \fBwcstol\fP(3) と \fBwcstoul\fP(3) に似ているが、それぞれ \fIintmax_t\fP と -\fIuintmax_t\fP 型の値を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcstoimax\fP() と \fBwcstoumax\fP() は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -C99. -.SH 関連項目 -.\" FIXME . the pages referred to by the following xrefs are not yet written -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcstok.3 b/manual/LDP_man-pages/draft/man3/wcstok.3 deleted file mode 100644 index 9c6ea426..00000000 --- a/manual/LDP_man-pages/draft/man3/wcstok.3 +++ /dev/null @@ -1,74 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sat Oct 23 17:53:50 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSTOK 3 2013\-11\-18 GNU "Linux Programmer's Manual" -.SH 名前 -wcstok \- ワイド文字文字列をトークンに分割する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *wcstok(wchar_t *\fP\fIwcs\fP\fB, const wchar_t *\fP\fIdelim\fP\fB, wchar_t **\fP\fIptr\fP\fB);\fP -.fi -.SH 説明 -\fBwcstok\fP() 関数は、 \fBstrtok\fP(3) 関数に対応するワイド文字関数に、 -マルチスレッドセーフの動作をさせるための引き数を追加したものである。 この関数を用いて、ワイド文字文字列 \fIwcs\fP をトークンに分解すること -ができる。ここで、トークンは \fIdelim\fP に列挙されている文字を含まな い部分文字列として定義される。 -.PP -検索は \fIwcs\fP が NULL でなければ \fIwcs\fP から開始され、\fIwcs\fP が NULL ならば \fI*ptr\fP -から開始される。まず、全ての区切りワイド文字 がスキップされる。つまり、\fIdelim\fP に含まれるワイド文字を超えるよう -にポインターが前に進められる。 ワイド文字文字列の終わりに達したら、 \fBwcstok\fP() は NULL を返して -トークンが全く見つからなかったことを示し、この後に \fBwcstok\fP() を呼び 出しても NULL が返されるように \fI*ptr\fP -に適切な値を設定する。それ 以外の場合には、 \fBwcstok\fP() 関数はトークンの先頭を識別し、これを指す -ポインターを返す。ただしこれを行う前に、トークンの後にある、\fIdelim\fP に含まれている文字をヌルワイド文字 (L\(aq\e0\(aq) -に置き換えること によってトークンを 0 で終端させる。さらに \fI*ptr\fP を更新し、後で \fBwcstok\fP() を呼び出した -際に、識別されたトークンの続きから検索できるようにする。 -.SH 返り値 -\fBwcstok\fP() 関数は次のトークンへのポインターを返す。トークンが見つから なければ NULL を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwcstok\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 注意 -関数に与えたワイド文字列 \fIwcs\fP は、関数の動作によって完全に書き換 えられる。 -.SH 例 -以下のコードは、ワイド文字文字列に含まれるトークンを取り出しながら ループする。 -.sp -.nf -wchar_t *wcs = ...; -wchar_t *token; -wchar_t *state; -for (token = wcstok(wcs, " \et\en", &state); - token != NULL; - token = wcstok(NULL, " \et\en", &state)) { - ... -} -.fi -.SH 関連項目 -\fBstrtok\fP(3), \fBwcschr\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcstombs.3 b/manual/LDP_man-pages/draft/man3/wcstombs.3 deleted file mode 100644 index 7fb33f04..00000000 --- a/manual/LDP_man-pages/draft/man3/wcstombs.3 +++ /dev/null @@ -1,69 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:55:41 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH WCSTOMBS 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -wcstombs \- ワイド文字列をマルチバイト文字列に変換する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBsize_t wcstombs(char *\fP\fIdest\fP\fB, const wchar_t *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fIdest\fP が NULL でない場合、 \fBwcstombs\fP() 関数は ワイド文字列 \fIsrc\fP を \fIdest\fP -から始まるマルチバイト文字列に 変換する。\fIdest\fP には最大で \fIn\fP バイトが書き込まれる。 -変換は初期状態で開始される。変換は以下の3つの理由により停止する。 -.PP -1. (現在のロケールにおける)マルチバイト列で表現できないワイド文字に 遭遇した場合。この場合には \fI(size_t)\ \-1\fP が返される。 -.PP -2. 長さ制限によって強制停止させられた場合。この場合には \fIdest\fP に 書き込まれたバイト数が返される。しかしこの時点でのシフト状態は失われる。 -.PP -3. ワイド文字列が終端のヌルワイド文字 (L\(aq\e0\(aq) を含めて完全に変換された場合。 この場合には変換は初期状態で終了し、 -\fIdest\fP に書き込まれたバイト数を返す (終端のヌルバイト (\(aq\e0\(aq) は含まれない)。 -.PP -プログラマーは \fIdest\fP に最低でも \fIn\fP バイトの空きがあることを 保証しなければならない。 -.PP -\fIdest\fP が NULL の場合、\fIn\fP は無視される。上記と同様に変換が行 なわれるが変換結果のバイト列はメモリーには書き込まれない。 -また長さの上限が存在しない。 -.PP -上記の 2. の場合を避けるために、プログラマーは \fIn\fP が \fIwcstombs(NULL,src,0)+1\fP -以上であることを保証しなければならない。 -.SH 返り値 -\fBwcstombs\fP() 関数は生成したマルチバイト列のバイト数を返す。終端の ヌル文字は含まない。もし変換できないワイド文字に遭遇した場合には -\fI(size_t)\ \-1\fP を返す。 -.SH 準拠 -C99. -.SH 注意 -\fBwcstombs\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存している。 -.PP -\fBwcsrtombs\fP() 関数は同じ機能のためのスレッドセーフな インターフェースを提供する。 -.SH 関連項目 -\fBmblen\fP(3), \fBmbtowc\fP(3), \fBmbstowcs\fP(3), \fBwcsrtombs\fP(3) \fBwctom\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcswidth.3 b/manual/LDP_man-pages/draft/man3/wcswidth.3 deleted file mode 100644 index a548827d..00000000 --- a/manual/LDP_man-pages/draft/man3/wcswidth.3 +++ /dev/null @@ -1,53 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sat Oct 23 18:44:42 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCSWIDTH 3 2014\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -wcswidth \- 固定サイズのワイド文字文字列の表示に必要なカラム数を求める -.SH 書式 -.nf -\fB#define _XOPEN_SOURCE\fP /* feature_test_macros(7) 参照 */ -\fB#include \fP -.sp -\fBint wcswidth(const wchar_t *\fP\fIs\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBwcswidth\fP() 関数は、\fIs\fP が指すワイド文字文字列を表現するために 必要なカラム数を返す。ただし、最大 \fIn\fP -文字しか処理しない。 印刷可能でないワイド文字が文字列に含まれる場合には、 \-1 が返される。 -.SH 返り値 -\fBwcswidth\fP() 関数は、ワイド文字文字列 \fIs\fP の表現に必要なカラム数 を返す。ただしワイド文字文字列は最大 \fIn\fP -個に切り詰められる。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBwcswidth\fP() 関数は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -POSIX.1\-2001. -.SH 注意 -\fBwcswidth\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.SH 関連項目 -\fBiswprint\fP(3), \fBwcwidth\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wctob.3 b/manual/LDP_man-pages/draft/man3/wctob.3 deleted file mode 100644 index e3ee9ae3..00000000 --- a/manual/LDP_man-pages/draft/man3/wctob.3 +++ /dev/null @@ -1,54 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sat Oct 23 19:35:47 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCTOB 3 2011\-09\-22 GNU "Linux Programmer's Manual" -.SH 名前 -wctob \- ワイド文字のシングルバイト表現を試みる -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint wctob(wint_t \fP\fIc\fP\fB);\fP -.fi -.SH 説明 -\fBwctob\fP() 関数は、ワイド文字 \fIc\fP のマルチバイト表現(初期状態で開 -始)がシングルバイト文字だけでできているかどうかを調べる。もしそうであ れば、これを \fIunsigned char\fP 型として返す。 -.PP -この関数は決して使わないこと。この関数は国際化プログラムを書く上では役 に立たない。国際化されたプログラムでは、シングルバイト文字とマルチバイト -文字を区別してはならない。 -.SH 返り値 -\fBwctob\fP() 関数は \fIc\fP のシングルバイト表現が存在すれば、その表現 を返す。存在しなければ \fBEOF\fP を返す。 -.SH 準拠 -C99. -.SH 注意 -\fBwctob\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.PP -この関数は決して使うべきではない。国際化プログラムでは、シングルバイト 文字とマルチバイト文字を区別してはならない。代わりに、 \fBwctomb\fP(3) -か、スレッドセーフな \fBwcrtomb\fP(3) を使うこと。 -.SH 関連項目 -\fBbtowc\fP(3), \fBwcrtomb\fP(3), \fBwctomb\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wctomb.3 b/manual/LDP_man-pages/draft/man3/wctomb.3 deleted file mode 100644 index 5244c61b..00000000 --- a/manual/LDP_man-pages/draft/man3/wctomb.3 +++ /dev/null @@ -1,68 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:55:39 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH WCTOMB 3 2014\-03\-18 GNU "Linux Programmer's Manual" -.SH 名前 -wctomb \- ワイド文字をマルチバイト列に変換する。 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint wctomb(char *\fP\fIs\fP\fB, wchar_t \fP\fIwc\fP\fB);\fP -.fi -.SH 説明 -\fIs\fP が NULL でなければ、 \fBwctomb\fP() 関数はワイド文字 \fIwc\fP を マルチバイト表現に変換して \fIs\fP -の指す文字配列に格納する。 同時に wctomb 関数のみが使用する静的で名前のないシフト状態を更新する。 この関数はマルチバイト表現の長さ、すなわち -\fIs\fP に書き込まれた バイト数を返す。 -.PP -プログラマーは \fIs\fP に少なくとも \fBMB_CUR_MAX\fP バイトの空きがあることを保証しなければならない。 -.PP -.\" The Dinkumware doc and the Single UNIX specification say this, but -.\" glibc doesn't implement this. -\fIs\fP が NULL ならば、 \fBwctomb\fP() 関数は自分のみが使用するシフト状態を -初期状態に戻して、文字符号がシフト状態に依存しているならばゼロ以外を シフト状態に依存しない場合にはゼロを返す。 -.SH 返り値 -\fIs\fP が NULL でない場合 \fBwctomb\fP() 関数はバイト配列 \fIs\fP に 書き込まれたバイト数を返す。\fIwc\fP -が(現在のロケールにおいて) マルチバイト列で表現できない場合には \-1 を返す。 -.PP -\fIs\fP が NULL の場合 \fBwctomb\fP() 関数は文字符号がシフト状態に -依存している場合にはゼロ以外、シフト状態に依存しない場合はゼロを返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBwctomb\fP() 関数はスレッドセーフではない。 -.SH 準拠 -C99. -.SH 注意 -\fBwctomb\fP() 関数の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存している。 -.PP -\fBwcrtomb\fP(3) 関数は同じ機能のより良いインターフェースを提供する。 -.SH 関連項目 -\fBMB_CUR_MAX\fP(3), \fBmblen\fP(3), \fBmbstowcs\fP(3), \fBmbtowc\fP(3), \fBwcrtomb\fP(3), -\fBwcstombs\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wctrans.3 b/manual/LDP_man-pages/draft/man3/wctrans.3 deleted file mode 100644 index 8d175e2d..00000000 --- a/manual/LDP_man-pages/draft/man3/wctrans.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sat Oct 23 19:48:40 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCTRANS 3 2014\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -wctrans \- ワイド文字変換マッピング -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwctrans_t wctrans(const char *\fP\fIname\fP\fB);\fP -.fi -.SH 説明 -\fIwctrans_t\fP 型は、あるワイド文字を他のワイド文字に変換できるマッピ ングを表現する。本質的には実装依存であるが、特殊な値 -\fI(wctrans_t)0\fP は不正なマッピングを示す。0 でない値を持つ \fIwctrans_t\fP を \fBtowctrans\fP(3) -関数に渡すことによって、実際に ワイド文字の変換を実行させることができる。 -.PP -\fBwctrans\fP() は、名前によって与えられるマッピングを返す。有効な名前の 集合は現在のロケールの \fBLC_CTYPE\fP -カテゴリーに依存するが、以下の名前は全てのロケールにおいて有効である。 -.nf - "tolower" \- \fBtolower\fP(3) のマッピングを実現する - "toupper" \- \fBtoupper\fP(3) のマッピングを実現する -.fi -.SH 返り値 -\fBwctrans\fP() 関数は、\fIname\fP が有効ならばマッピング記述子を返す。 有効でなければ \fI(wctrans_t)\ 0\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBwctrans\fP() 関数は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -C99. -.SH 注意 -\fBwctrans\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.SH 関連項目 -\fBtowctrans\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wctype.3 b/manual/LDP_man-pages/draft/man3/wctype.3 deleted file mode 100644 index 263e3546..00000000 --- a/manual/LDP_man-pages/draft/man3/wctype.3 +++ /dev/null @@ -1,71 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sat Oct 23 20:01:16 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WCTYPE 3 2014\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -wctype \- ワイド文字の分類 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwctype_t wctype(const char *\fP\fIname\fP\fB);\fP -.fi -.SH 説明 -\fIwctype_t\fP 型は、ワイド文字が持っている、あるいは持っていない属性を表現する。 言い換えると、 \fIwctype_t\fP -型はワイド文字のクラスを表現する。 この型は本質的に実装依存であるが、特殊な値 \fI(wctype_t) 0\fP は不正な属性を示す。 0 でない値を持つ -\fIwctype_t\fP を \fBiswctype\fP(3) 関数に渡すことによって、 与えられたワイド文字がその属性を持つかどうかを実際に -テストすることができる。 -.PP -\fBwctype\fP() 関数は、名前によって与えられる属性を返す。有効な名前の集 合は現在のロケールの \fBLC_CTYPE\fP -カテゴリーに依存するが、以下の名前は全てのロケールで有効である。 -.nf - "alnum" \- クラス化関数 \fBisalnum\fP(3) を実現する - "alpha" \- クラス化関数 \fBisalpha\fP(3) を実現する - "blank" \- クラス化関数 \fBisblank\fP(3) を実現する - "cntrl" \- クラス化関数 \fBiscntrl\fP(3) を実現する - "digit" \- クラス化関数 \fBisdigit\fP(3) を実現する - "graph" \- クラス化関数 \fBisgraph\fP(3) を実現する - "lower" \- クラス化関数 \fBislower\fP(3) を実現する - "print" \- クラス化関数 \fBisprint\fP(3) を実現する - "punct" \- クラス化関数 \fBispunct\fP(3) を実現する - "space" \- クラス化関数 \fBisspace\fP(3) を実現する - "upper" \- クラス化関数 \fBisupper\fP(3) を実現する - "xdigit" \- クラス化関数 \fBisxdigit\fP(3) を実現する -.fi -.SH 返り値 -\fBwctype\fP() 関数は、 \fIname\fP が有効ならば属性記述子を返す。 有効でなければ \fI(wctype_t) 0\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBwctype\fP() 関数は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -C99. -.SH 注意 -\fBwctype\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.SH 関連項目 -\fBiswctype\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wcwidth.3 b/manual/LDP_man-pages/draft/man3/wcwidth.3 deleted file mode 100644 index 1246a634..00000000 --- a/manual/LDP_man-pages/draft/man3/wcwidth.3 +++ /dev/null @@ -1,60 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Sat Oct 23 20:06:18 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" Updated Fri Aug 16 01:32:21 JST 2002 -.\" by Akihiro MOTOKI -.\" -.TH WCWIDTH 3 2014\-01\-22 GNU "Linux Programmer's Manual" -.SH 名前 -wcwidth \- ワイド文字が必要とするカラム数を調べる -.SH 書式 -.nf -\fB#define _XOPEN_SOURCE\fP -\fB#include \fP -.sp -\fBint wcwidth(wchar_t \fP\fIc\fP\fB);\fP -.fi -.SH 説明 -\fBwcwidth\fP() 関数は、ワイド文字 \fIc\fP を表現するために必要なカラム 数を返す。\fIc\fP が印刷可能文字ならば、この値は 0 -以上である。 \fIc\fP がヌルワイド文字 (L\(aq\e0\(aq) ならば、値は 0 である。 それ以外の場合には \-1 が返される。 -.SH 返り値 -\fBwcwidth\fP() 関数は、\fIc\fP の表現に必要なカラム数を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -\fBwcwidth\fP() 関数は、例外付きのスレッドセーフである。実行中に \fBsetlocale\fP(3) -を呼び出してロケールを変更しない限り、マルチスレッドアプリケーションで安全に使用することができる。 -.SH 準拠 -POSIX.1\-2001. - -glibc 2.2.5 以前では以下のプロトタイプ宣言が使用されていたことに 注意すること。 -.br -.nf -\fBint wcwidth(wint_t \fP\fIc\fP\fB);\fP -.fi -.SH 注意 -\fBwcwidth\fP() の動作は、現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存する。 -.SH 関連項目 -\fBiswprint\fP(3), \fBwcswidth\fP(3), \fBfeature_test_macros\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wmemchr.3 b/manual/LDP_man-pages/draft/man3/wmemchr.3 deleted file mode 100644 index ae4176c8..00000000 --- a/manual/LDP_man-pages/draft/man3/wmemchr.3 +++ /dev/null @@ -1,50 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Tue Oct 26 00:03:46 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WMEMCHR 3 2013\-11\-05 GNU "Linux Programmer's Manual" -.SH 名前 -wmemchr \- ワイド文字の配列からワイド文字を探す -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *wmemchr(const wchar_t *\fP\fIs\fP\fB, wchar_t \fP\fIc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBwmemchr\fP() 関数は、 \fBmemchr\fP(3) 関数に対応するワイド文字関数である。 この関数は、\fIs\fP を先頭とする \fIn\fP -個のワイド文字の中から、最初 にワイド文字 \fIc\fP が現われる場所を探す。 -.SH 返り値 -\fBwmemchr\fP() 関数は、\fIs\fP を先頭とする \fIn\fP 個のワイド文字の中 において最初に \fIc\fP -が現われる場所へのポインターを返す。\fIc\fP が現 われなかった場合には NULL を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwmemchr\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBmemchr\fP(3), \fBwcschr\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wmemcmp.3 b/manual/LDP_man-pages/draft/man3/wmemcmp.3 deleted file mode 100644 index 325935b4..00000000 --- a/manual/LDP_man-pages/draft/man3/wmemcmp.3 +++ /dev/null @@ -1,51 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Tue Oct 26 00:39:25 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WMEMCMP 3 2013\-11\-05 GNU "Linux Programmer's Manual" -.SH 名前 -wmemcmp \- ワイド文字の配列 2 つを比較する -.SH 書式 -.nf -\fB#include \fP -.sp -\fBint wmemcmp(const wchar_t *\fP\fIs1\fP\fB, const wchar_t *\fP\fIs2\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBwmemcmp\fP() 関数は、 \fBmemcmp\fP(3) 関数に対応するワイド文字関数である。 この関数は、\fIs1\fP を先頭とする \fIn\fP -個のワイド文字と \fIs2\fP を 先頭とする \fIn\fP 個のワイド文字を比較する。 -.SH 返り値 -\fBwmemcmp\fP() 関数は、\fIs1\fP と \fIs2\fP を先頭とする大きさが \fIn\fP の 2 つの配列が等しければ 0 を返す。 -最初に異なる文字が現われた位置 \fIi\fP (\fIi\fP < \fIn\fP)において、そ の位置にあるワイド文字 \fIs1[i]\fP が \fIs2[i]\fP -より大きければ正の整 数を返す。 最初に異なる文字が現われた位置 \fIi\fP (\fIi\fP < \fIn\fP)において、そ の位置にあるワイド文字 -\fIs1[i]\fP が \fIs2[i]\fP より小さければ負の整 数を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwmemcmp\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBmemcmp\fP(3), \fBwcscmp\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wmemcpy.3 b/manual/LDP_man-pages/draft/man3/wmemcpy.3 deleted file mode 100644 index 30c13e08..00000000 --- a/manual/LDP_man-pages/draft/man3/wmemcpy.3 +++ /dev/null @@ -1,53 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Tue Oct 26 00:43:58 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WMEMCPY 3 2013\-11\-11 GNU "Linux Programmer's Manual" -.SH 名前 -wmemcpy \- ワイド文字の配列をコピーする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *wmemcpy(wchar_t *\fP\fIdest\fP\fB, const wchar_t *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBwmemcpy\fP() 関数は、 \fBmemcpy\fP(3) 関数に対応するワイド文字関数である。 この関数は、\fIsrc\fP を先頭とする配列から -\fIdest\fP を先頭とする配列 に \fIn\fP 個のワイド文字をコピーする。 -.PP -2 つの配列は重なっていてはならない。配列が重なっている場合には \fBwmemmove\fP(3) を使ってコピーすること。 -.PP -プログラマは、少なくとも \fIn\fP 個のワイド文字が入る領域を \fIdest\fP に確保しなければならない。 -.SH 返り値 -\fBwmemcpy\fP() は \fIdest\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwmemcpy\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBmemcpy\fP(3), \fBwcscpy\fP(3), \fBwmemmove\fP(3), \fBwmempcpy\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wmemmove.3 b/manual/LDP_man-pages/draft/man3/wmemmove.3 deleted file mode 100644 index 8f0079f2..00000000 --- a/manual/LDP_man-pages/draft/man3/wmemmove.3 +++ /dev/null @@ -1,51 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Tue Oct 26 00:51:13 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WMEMMOVE 3 2013\-11\-11 GNU "Linux Programmer's Manual" -.SH 名前 -wmemmove \-ワイド文字の配列をコピーする -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *wmemmove(wchar_t *\fP\fIdest\fP\fB, const wchar_t *\fP\fIsrc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBwmemmove\fP() 関数は、 \fBmemmove\fP(3) 関数に対応するワイド文字関数であ る。この関数は \fIsrc\fP -を先頭とする配列から \fIdest\fP を先頭とする 配列に \fIn\fP 個のワイド文字をコピーする。2 つの配列は重なっていても 構わない。 -.PP -プログラマは、少なくとも \fIn\fP 個のワイド文字が入る領域を \fIdest\fP に確保しなければならない。 -.SH 返り値 -\fBwmemmove\fP() は \fIdest\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwmemmove\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBmemmove\fP(3), \fBwmemcpy\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wmemset.3 b/manual/LDP_man-pages/draft/man3/wmemset.3 deleted file mode 100644 index 37f137de..00000000 --- a/manual/LDP_man-pages/draft/man3/wmemset.3 +++ /dev/null @@ -1,49 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Translated Tue Oct 26 00:51:32 JST 1999 -.\" by FUJIWARA Teruyoshi -.\" -.TH WMEMSET 3 2013\-11\-11 GNU "Linux Programmer's Manual" -.SH 名前 -wmemset \- ワイド文字の配列を定数のワイド文字で埋める -.SH 書式 -.nf -\fB#include \fP -.sp -\fBwchar_t *wmemset(wchar_t *\fP\fIwcs\fP\fB, wchar_t \fP\fIwc\fP\fB, size_t \fP\fIn\fP\fB);\fP -.fi -.SH 説明 -\fBwmemset\fP() 関数は、 \fBmemset\fP(3) 関数に対応するワイド文字関数である。 この関数は、\fBmemset\fP を先頭とする -\fIn\fP 個のワイド文字の配列を、 ワイド文字 \fIwc\fP の \fIn\fP 個のコピーで埋める。 -.SH 返り値 -\fBwmemset\fP() は \fIwcs\fP を返す。 -.SH 属性 -.SS "マルチスレッディング (pthreads(7) 参照)" -関数 \fBwmemset\fP() はスレッドセーフである。 -.SH 準拠 -C99. -.SH 関連項目 -\fBmemset\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wordexp.3 b/manual/LDP_man-pages/draft/man3/wordexp.3 deleted file mode 100644 index 1ff04d0f..00000000 --- a/manual/LDP_man-pages/draft/man3/wordexp.3 +++ /dev/null @@ -1,149 +0,0 @@ -.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl) -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Sun Sep 12 05:05:19 JST 2004 -.\" by Yuichi SATO -.\" -.TH WORDEXP 3 2014\-12\-31 "" "Linux Programmer's Manual" -.SH 名前 -wordexp, wordfree \- posix シェルのように単語の展開を行う -.SH 書式 -\fB#include \fP -.sp -\fBint wordexp(const char *\fP\fIs\fP\fB, wordexp_t *\fP\fIp\fP\fB, int \fP\fIflags\fP\fB);\fP -.sp -\fBvoid wordfree(wordexp_t *\fP\fIp\fP\fB);\fP -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -\fBwordexp\fP(), \fBwordfree\fP(): _XOPEN_SOURCE -.SH 説明 -関数 \fBwordexp\fP() はシェルのように文字列 \fIs\fP を展開し、 \fIp\fP で指し示す構造体に結果を返す。 データ型 -\fIwordexp_t\fP は少なくともフィールド \fIwe_wordc\fP, \fIwe_wordv\fP, \fIwe_offs\fP を持つ構造体である。 -フィールド \fIwe_wordc\fP は \fIsize_t\fP であり、 \fIs\fP を展開した結果に単語がいくつあるかを表す。 フィールド -\fIwe_wordv\fP は \fIchar\ **\fP であり、見つかった単語の配列を指し示す。 \fIsize_t\fP 型のフィールド \fIwe_offs\fP -は、 \fIwe_wordv\fP 配列にある初期要素のうちいくつが NULL で埋められるべきかを表すのに使われたりする (\fIflags\fP -により決定される。下記を参照。)。 -.LP -関数 \fBwordfree\fP() は割り当てたメモリーを再度解放する。 より正確にいうと、この関数はその引き数を解放するのではなく、 配列 -\fIwe_wordv\fP とそれが指し示す文字列を解放する。 -.SS 文字列引き数 -この展開はシェルによるコマンドのパラメーターの展開 (\fBsh\fP(1) を参照) と同じであるので、文字列 \fIs\fP -はシェルコマンドパラメーターで不正とされる文字を含んではならない。 特にエスケープされていない改行、|, &, ;, <, >, (, -), {, } 文字を コマンド置換やパラメーター置換の場面以外に含めてはならない。 -.LP -引き数 \fIs\fP にクォートしていないコメント文字 # で始まる単語が含まれている場合には、 その単語とそれ以降の単語が無視されるか、 それとも # -がコメント文字として扱わないかは、規定されていない。 -.SS 展開 -実行される展開は、以下の段階で構成される: チルダ展開 (~user を user のホームディレクトリに置き換える)、 変数展開 ($FOO -を環境変数 FOO の値に置き換える)、 コマンド展開 ($(command) または \`command\` を command -の出力で置き換える)、 算術展開、フィールド分割、ワイルドカード展開、クォートの除去。 -.LP -特殊なパラメーター ($@, $*, $#, $?, $\-, $$, $!, $0) の 展開結果は規定されていない。 -.LP -フィールド分割は環境変数 $IFS を用いて行われる。 この環境変数が設定されていない場合、 フィールド区切り文字はスペース・タブ・改行である。 -.SS 出力される配列 -配列 \fIwe_wordv\fP は見つかった単語をを含み、最後に NULL が続く。 -.SS "flags 引き数" -\fIflags\fP 引き数は以下の値のビット包含的 OR である: -.TP -\fBWRDE_APPEND\fP -見つかった単語を前回の呼び出し結果の配列に追加する。 -.TP -\fBWRDE_DOOFFS\fP -初期状態である \fIwe_offs\fP 個の NULL を配列 \fIwe_wordv\fP に挿入する (これらは返される \fIwe_wordc\fP -にはカウントされない)。 -.TP -\fBWRDE_NOCMD\fP -コマンド置換を行わない。 -.TP -\fBWRDE_REUSE\fP -引き数 \fIp\fP は前回の \fBwordexp\fP() の呼び出し結果であり、 \fBwordfree\fP() が (まだ) 呼び出されない。 -割り当てられた領域を再利用する。 -.TP -\fBWRDE_SHOWERR\fP -通常はコマンド置換のときに \fIstderr\fP が \fI/dev/null\fP にリダイレクトされる。 このフラグは \fIstderr\fP -をリダイレクトしないように指定する。 -.TP -\fBWRDE_UNDEF\fP -未定義のシェル変数を展開しようとした場合に、エラーとして扱う。 -.SH 返り値 -成功した場合は 0 が返される。 エラーの場合は以下の 5 つの値のうちの 1 つが返される。 -.TP -\fBWRDE_BADCHAR\fP -改行または |, &, ;, <, >, (, ), {, } のうちの 1 つが不正に出現した。 -.TP -\fBWRDE_BADVAL\fP -未定義のシェル変数が参照され、かつ \fBWRDE_UNDEF\fP フラグでこれをエラーとして扱うように指示されている。 -.TP -\fBWRDE_CMDSUB\fP -コマンド置換が要求されたが、 \fBWRDE_NOCMD\fP フラグでこれをエラーとして扱うように指示されていた。 -.TP -\fBWRDE_NOSPACE\fP -メモリーが足りない。 -.TP -\fBWRDE_SYNTAX\fP -対応する括弧がない、クォートが合致しないといった、 シェルの書式エラー。 -.SH バージョン -\fBwordexp\fP() と \fBwordfree\fP() は、バージョン 2.1 以降の glibc で提供されている。 -.SH 準拠 -POSIX.1\-2001. -.SH 例 -以下のサンプルプログラムの出力はだいたい "ls [a\-c]*.c" と同じになる。 -.LP -.nf -#include -#include -#include - -int -main(int argc, char **argv) -{ - wordexp_t p; - char **w; - int i; - - wordexp("[a\-c]*.c", &p, 0); - w = p.we_wordv; - for (i = 0; i < p.we_wordc; i++) - printf("%s\en", w[i]); - wordfree(&p); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBfnmatch\fP(3), \fBglob\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/wprintf.3 b/manual/LDP_man-pages/draft/man3/wprintf.3 deleted file mode 100644 index df614e99..00000000 --- a/manual/LDP_man-pages/draft/man3/wprintf.3 +++ /dev/null @@ -1,133 +0,0 @@ -.\" Copyright (c) Bruno Haible -.\" -.\" %%%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 -.\" -.\" References consulted: -.\" GNU glibc-2 source code and manual -.\" Dinkumware C library reference http://www.dinkumware.com/ -.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html -.\" ISO/IEC 9899:1999 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 11 00:55:36 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH WPRINTF 3 2014\-03\-19 GNU "Linux Programmer's Manual" -.SH 名前 -wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf \- ワイド文字を -フォーマットして出力する -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -.sp -\fBint wprintf(const wchar_t *\fP\fIformat\fP\fB, ...);\fP -\fBint fwprintf(FILE *\fP\fIstream\fP\fB, const wchar_t *\fP\fIformat\fP\fB, ...);\fP -\fBint swprintf(wchar_t *\fP\fIwcs\fP\fB, size_t \fP\fImaxlen\fP\fB,\fP -\fB const wchar_t *\fP\fIformat\fP\fB, ...);\fP -.sp -\fBint vwprintf(const wchar_t *\fP\fIformat\fP\fB, va_list \fP\fIargs\fP\fB);\fP -\fBint vfwprintf(FILE *\fP\fIstream\fP\fB, const wchar_t *\fP\fIformat\fP\fB, va_list \fP\fIargs\fP\fB);\fP -\fBint vswprintf(wchar_t *\fP\fIwcs\fP\fB, size_t \fP\fImaxlen\fP\fB,\fP -\fB const wchar_t *\fP\fIformat\fP\fB, va_list \fP\fIargs\fP\fB);\fP -.fi -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -上記の全ての関数: -.RS 4 -.\" .BR wprintf (), -.\" .BR fwprintf (), -.\" .BR swprintf (), -.\" .BR vwprintf (), -.\" .BR vfwprintf (), -.\" .BR vswprintf (): -_XOPEN_SOURCE\ >=\ 500 || _ISOC99_SOURCE || -.br -_POSIX_C_SOURCE\ >=\ 200112L; -.br -or \fIcc\ \-std=c99\fP -.RE -.ad -.SH 説明 -\fBwprintf\fP() ファミリーの関数は \fBprintf\fP(3) ファミリーの関数の -ワイド文字版である。これらはワイド文字をフォーマットして出力する。 -.PP -\fBwprintf\fP() と \fBvwprintf\fP() 関数は \fIstdout\fP に出力を行なう。 \fIstdout\fP -がバイト単位入出力であってはいけない。より詳しい説明は \fBfwide\fP(3) を参照すること。 -.PP -\fBfwprintf\fP() と \fBvfwprintf\fP() 関数は \fIstream\fP にワイド文字出力 を行なう。 \fIstream\fP -がバイト単位入出力であってはいけない。 より詳しい説明は \fBfwide\fP(3) を参照すること。 -.PP -\fBswprintf\fP() と \fBvswprintf\fP() 関数はワイド文字の配列に ワイド文字出力を行なう。プログラマーは \fIwcs\fP -に最低でも \fImaxlen\fP 文字のワイド文字を出力できる空きがあることを保証しなければ ならない。 -.PP -これらの関数は \fBprintf\fP(3), \fBvprintf\fP(3), \fBfprintf\fP(3), \fBvfprintf\fP(3), -\fBsprintf\fP(3), \fBvsprintf\fP(3) 関数に似ているが以下の 点で異っている。 -.TP -\fB\(bu\fP -\fIformat\fP がワイド文字列で与えられる。 -.TP -\fB\(bu\fP -出力がバイトではなくワイド文字で構成される。 -.TP -\fB\(bu\fP -\fBswprintf\fP() と \fBvswprintf\fP() は \fImaxlen\fP 引き数を取るが、 \fBsprintf\fP() と -\fBvsprintf\fP() は取らない (\fBsnprintf\fP() と \fBvsnprintf\fP() は \fImaxlen\fP 引き数を取るが -これらの関数が Linux では、バッファーが溢れた場合でも \-1 を返さない)。 -.PP -\fBc\fP と \fBs\fP 変換文字の扱いが異っている: -.TP -\fBc\fP -もし \fBl\fP 修飾子が存在しない場合は \fIint\fP 引き数は \fBbtowc\fP(3) -関数によってワイド文字に変換される。そして結果のワイド文字が出力される。 \fBl\fP 修飾子が存在する場合は \fIwint_t\fP -(ワイド文字)引き数が出力される。 -.TP -\fBs\fP -もし \fBl\fP 修飾子が存在しない場合、 \fIconst\ char\ *\fP 引き数は初期状態より始まるマルチバイト文字列を含んだ char -型の配列へのポインター(文字列へのポインター)とみなされる。 配列の文字は(最初のバイト前に初期状態で変換を開始し、それぞれの文字を -\fBmbrtowc\fP(3) 関数によって)ワイド文字へと変換される。結果のワイド文字は終端の ナルワイド文字 (L\(aq\e0\(aq) -の手前までが書き込まれる。精度(precision)が指定された 場合、指定された数字を超えるワイド文字は書き込まれない。精度は 書き込まれる -\fIバイト\fP 数や \fI画面上の位置\fP ではなく \fIワイド文字\fP の数を指定することに注意すること。 精度がない場合には配列の終端にナルバイト -(\(aq\e0\(aq) を含む必要がある。 精度を指定する場合には、配列の最後に到着する前に変換されたワイド文字の -数がそれに到達するよう、精度は十分に小さな数でなければならない。 もし \fBl\fP 修飾子が存在する場合、 \fIconst\ wchar_t\ *\fP -引き数はワイド文字の配列へのポインターとみなされる。 配列のワイド文字列は終端のナルワイド文字の手間まで出力される。 -もし精度が指定された場合には指定された精度以上の文字は出力されない。 精度を指定しない場合には終端のナルワイド文字を含む必要がある。 -精度を指定する場合にはそれはワイド文字の配列の大きさよりも小さくな ければならない。 -.SH 返り値 -これらの関数は書き込まれたワイド文字の文字数を返す。 \fBswprintf\fP() と \fBvswprintf\fP() 関数の場合は -終端のナルワイド文字は含まない。エラーが起こった場合は \-1 を返す。 -.SH 準拠 -C99. -.SH 注意 -\fBwprintf\fP() 等の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存している。 -.PP -\fIformat\fP 文字列が ASCII 以外のワイド文字を含んでいる場合、 実行時のロケールの \fBLC_CTYPE\fP カテゴリーがコンパイル時の -\fBLC_CTYPE\fP カテゴリーと 一致している場合にのみプログラムは正常に動作する。これは \fIwchar_t\fP -の表現がロケールやプラットホームに依存していることに原因がある。 (glibc ではワイド文字として Unicode (ISO\-10646) -のコードポイントを 使用している。他のプラットホームではそうではない。同様に ISO C99 の \eunnnn -形式の汎用文字名称はこの問題を解決しない。) このため国際化されたプログラムでは \fIformat\fP 文字列を ASCII ワイド -文字のみにするか、実行時に国際化された方法で構成する必要がある (例えば \fBgettext\fP() と \fBiconv\fP() や -\fBmbstowcs\fP() を組み合わて使用する)。 -.SH 関連項目 -.\" .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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/xcrypt.3 b/manual/LDP_man-pages/draft/man3/xcrypt.3 deleted file mode 100644 index abc79b2e..00000000 --- a/manual/LDP_man-pages/draft/man3/xcrypt.3 +++ /dev/null @@ -1,58 +0,0 @@ -.\" Copyright 2003 walter harms (walter.harms@informatik.uni-oldenburg.de) -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Distributed under GPL -.\" %%%LICENSE_END -.\" -.\" this is the 3rd type of interface for cryptographic routines -.\" 1. encrypt() expects a bit field -.\" 2. cbc_crypt() byte values -.\" 3. xencrypt() a hexstring -.\" to bad to be true :( -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Wed Sep 15 01:02:11 JST 2004 -.\" by Yuichi SATO -.\" -.TH XCRYPT 3 2014\-08\-19 "" "Linux Programmer's Manual" -.SH 名前 -xencrypt, xdecrypt, passwd2des \- RFS パスワード暗号化 -.SH 書式 -\fB#include \fP -.sp -\fBvoid passwd2des(char \fP\fI*passwd\fP\fB, char *\fP\fIkey\fP\fB);\fP -.sp -\fBint xencrypt(char *\fP\fIsecret\fP\fB, char *\fP\fIpasswd\fP\fB);\fP -.sp -\fBint xdecrypt(char *\fP\fIsecret\fP\fB, char *\fP\fIpasswd\fP\fB);\fP -.SH 説明 -関数 \fBpasswd2des\fP() は任意の長さの文字列 \fIpasswd\fP をとり、長さ 8 の文字配列 \fIkey\fP を埋める。 配列 -\fIkey\fP は DES キーとして使うのに適している。 この配列の各バイトのビット 0 は奇数パリティである。 ここで説明されている残りの 2 -つの関数は、 この関数を使い、引き数 \fIpasswd\fP を DES キーに変換する。 -.LP -.\" (over the alphabet 0123456789abcdefABCDEF), -.\" (over the alphabet 0123456789abcdef) -\fBxencrypt\fP() 関数は 16 進数で与えられた ASCII 文字列 \fIsecret\fP をとる。 この長さは 16 -の倍数でなければならない。 そして \fBpasswd2des\fP() によって \fIpasswd\fP から導き出された DES キーを使い、 -\fIsecret\fP を暗号化する。 その結果は 16 進数文字列として \fIsecret\fP に再び同じ長さで出力される。 -.LP -\fBxdecrypt\fP() 関数は逆の操作を行う。 -.SH 返り値 -関数 \fBxencrypt\fP() と \fBxdecrypt\fP() は、成功した場合に 1 を返し、失敗した場合に 0 を返す。 -.SH バージョン -これらの関数はバージョン 2.1 以降の glibc で提供されている。 -.SH バグ -上記のインクルードファイルにプロトタイプがない。 -.SH 関連項目 -\fBcbc_crypt\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/xdr.3 b/manual/LDP_man-pages/draft/man3/xdr.3 deleted file mode 100644 index 70f62b14..00000000 --- a/manual/LDP_man-pages/draft/man3/xdr.3 +++ /dev/null @@ -1,334 +0,0 @@ -.\" This page was taken from the 4.4BSD-Lite CDROM (BSD license) -.\" -.\" %%%LICENSE_START(BSD_ONELINE_CDROM) -.\" This page was taken from the 4.4BSD-Lite CDROM (BSD license) -.\" %%%LICENSE_END -.\" -.\" @(#)xdr.3n 2.2 88/08/03 4.0 RPCSRC; from 1.16 88/03/14 SMI -.\" -.\" 2007-12-30, mtk, Convert function prototypes to modern C syntax -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Tue Jan 4 20:48:51 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH XDR 3 2007\-12\-30 "" "Linux Programmer's Manual" -.SH 名前 -xdr \- 外部データ表現(XDR)のためのライブラリルーティン -.SH 書式と説明 -.LP -これらのルーティンは C プログラマーがマシン非依存な形式で 任意のデータ構造体を記述することを可能にする。 -リモートプロシージャーコールのためのデータはこれらのルーティンを 使用して送信される。 - -以下に示すプロトタイプ宣言は \fI\fP で行われており、その中では次の型が使用される。 -.in +4n -.nf - -\fBtypedef int \fP\fIbool_t\fP\fB;\fP - -\fBtypedef bool_t (*\fP\fIxdrproc_t\fP\fB) (XDR *, void *,...);\fP -.fi -.in -.LP -\fIXDR\fP 型の宣言については、 \fI\fP を参照。 -.LP -.nf -\fBbool_t xdr_array(XDR *\fP\fIxdrs\fP\fB, char **\fP\fIarrp\fP\fB, unsigned int *\fP\fIsizep\fP\fB,\fP -\fB unsigned int \fP\fImaxsize\fP\fB, unsigned int \fP\fIelsize\fP\fB,\fP -\fB xdrproc_t \fP\fIelproc\fP\fB);\fP -.fi -.IP -可変長の配列とそれに対応する外部表現とを変換する基本フィルター。 引き数 \fIarrp\fP は配列へのポインターのアドレスであり、 \fIsizep\fP -は配列の要素数のアドレスである。 これらの要素数は \fImaxsize\fP を超えてはならない。 引き数 \fIelsize\fP は各配列の要素の -\fIsizeof\fP であり、 \fIelproc\fP は配列要素を C 形式からその外部表現に変換するための XDR フィルターである。 -このルーティンは成功した場合には 1 を返す。 失敗した場合にはゼロを返す。 -.LP -.nf -\fBbool_t xdr_bool(XDR *\fP\fIxdrs\fP\fB, bool_t *\fP\fIbp\fP\fB);\fP -.fi -.IP -真偽値(C の int)とその外部表現とを変換する基本フィルター。 データをエンコードする時、このフィルターは 1 また 0 の値を生成する。 -このルーティンは成功した場合には 1 を返す。 失敗した場合には 0 を返す。 -.LP -.nf -\fBbool_t xdr_bytes(XDR *\fP\fIxdrs\fP\fB, char **\fP\fIsp\fP\fB, unsigned int *\fP\fIsizep\fP\fB,\fP -\fB unsigned int \fP\fImaxsize\fP\fB);\fP -.fi -.IP -ある長さのバイト文字列とその外部表現とを変換する基本フィルター。 引き数 \fIsp\fP は文字列ポインターのアドレスである。文字列の長さは -\fIsizep\fP のアドレスに置く。文字列は \fImaxsize\fP より長くてはいけない。 このルーティンは成功した場合には 1 を返す。 -失敗した場合には 0 を返す。 -.LP -.nf -\fBbool_t xdr_char(XDR *\fP\fIxdrs\fP\fB, char *\fP\fIcp\fP\fB);\fP -.fi -.IP -C の文字(char)とその外部表現との間を変換する基本フィルター。 このルーティンは成功した場合には 1 を返す。 失敗した場合には 0 を返す。 -注意: エンコードされたデータは詰め込まれておらず、それぞれ 4 バイトを 占める。文字の配列の場合には \fBxdr_bytes\fP(), -\fBxdr_opaque\fP(), \fBxdr_string\fP() などを考慮した方が良い。 -.LP -.nf -\fBvoid xdr_destroy(XDR *\fP\fIxdrs\fP\fB);\fP -.fi -.IP -このマクロは XDR ストリーム \fIxdrs\fP に関連付けられた破壊ルーティンを呼び出す。 -破壊には通常、ストリームに関連付けられた私的データ構造体の解放が含まれている。 \fBxdr_destroy\fP() の呼び出しの後に \fIxdrs\fP -を使用することは未定義である。 -.LP -.nf -\fBbool_t xdr_double(XDR *\fP\fIxdrs\fP\fB, double *\fP\fIdp\fP\fB);\fP -.fi -.IP -C の \fI倍精度数 (double)\fP とその外部表現との変換を行なう基本フィルター。 このルーティンは成功した場合は 1 を返す。 失敗した場合は -0 を返す。 -.LP -.nf -\fBbool_t xdr_enum(XDR *\fP\fIxdrs\fP\fB, enum_t *\fP\fIep\fP\fB);\fP -.fi -.IP -C の \fIenum\fP (実際には int)とその外部表現との変換を行なう基本フィルター。 このルーティンは成功した場合は 1 を返す。 失敗した場合は -0 を返す。 -.LP -.nf -\fBbool_t xdr_float(XDR *\fP\fIxdrs\fP\fB, float *\fP\fIfp\fP\fB);\fP -.fi -.IP -C の \fI浮動小数点数 (float)\fP とその外部表現との変換を行なう基本フィルター。 このルーティンは成功した場合は 1 を返す。 失敗した場合は -0 を返す。 -.LP -.nf -\fBvoid xdr_free(xdrproc_t \fP\fIproc\fP\fB, char *\fP\fIobjp\fP\fB);\fP -.fi -.IP -汎用解放(free)ルーティン。最初の引き数はオブジェクトを解放するための XDR ルーティンである。二番目の引き数はそのオブジェクト自身へのポインター -である。注意: このルーティンに渡されるポインターは \fI解放されない\fP が、このポインターの指すデータは(再帰的に) \fI解放される\fP。 -.LP -.nf -\fBunsigned int xdr_getpos(XDR *\fP\fIxdrs\fP\fB);\fP -.fi -.IP -このマクロは XDR ストリーム \fIxdrs\fP に関連付けられた位置取得ルーティンを呼び出す。 このルーティンは XDR -バイトストリームの位置を指示する符号無し整数を返す。 XDR ストリームの機能としてこの数値で単純な算術作業ができることが -期待されてるいる。しかしながら XDR ストリームの実体はこれを保証する必要はない。 -.LP -.nf -\fBlong *xdr_inline(XDR *\fP\fIxdrs\fP\fB, int \fP\fIlen\fP\fB);\fP -.fi -.IP -このマクロは XDR ストリーム \fIxdrs\fP に関連付けられた内部(inline)ルーティンを呼び出す。 -ルーティンはストリームのバッファーの連続する断片へのポインターを返す。 \fIlen\fP は要求するバッファーのバイト長である。 注意: ポインターは -\fIlong\ *\fP にキャストされる。 -.IP -警告: \fBxdr_inline\fP() はバッファーの連続する断片を割り当てることができなかった場合には NULL (0)を返すかもしれない。 -どの場合もその動作はストリームの実体によって変化するかもしれない。 これは効率化のために存在している。 -.LP -.nf -\fBbool_t xdr_int(XDR *\fP\fIxdrs\fP\fB, int *\fP\fIip\fP\fB);\fP -.fi -.IP -C の整数(int)とその外部表現とを変換するための基本フィルター。 このルーティンは成功した場合は 1 を返す。 失敗した場合はゼロを返す。 -.LP -.nf -\fBbool_t xdr_long(XDR *\fP\fIxdrs\fP\fB, long *\fP\fIlp\fP\fB);\fP -.fi -.IP -C の \fIlong\fP 整数とそのその外部表現とを変換するための基本フィルター。 このルーティンは成功した場合は 1 を返す。 -失敗した場合はゼロを返す。 -.LP -.nf -\fBvoid xdrmem_create(XDR *\fP\fIxdrs\fP\fB, char *\fP\fIaddr\fP\fB, unsigned int \fP\fIsize\fP\fB,\fP -\fB enum xdr_op \fP\fIop\fP\fB);\fP -.fi -.IP -このルーティンは \fIxdrs\fP によって指されている XDR ストリームオブジェクトを初期化する。 ストリームのデータは \fIaddr\fP -位置にあるメモリーの塊から読み書きされる。 その長さはバイト単位で \fIsize\fP 超えてはいけない。 \fIop\fP は XDR -ストリームの変換方向を決定する (\fBXDR_ENCODE\fP, \fBXDR_DECODE\fP, \fBXDR_FREE\fP のどれか)。 -.LP -.nf -\fBbool_t xdr_opaque(XDR *\fP\fIxdrs\fP\fB, char *\fP\fIcp\fP\fB, unsigned int \fP\fIcnt\fP\fB);\fP -.fi -.IP -固定長の不明データとその外部表現との変換を行なう基本フィルター。 引き数 \fIcp\fP は不明オブジェクトのアドレスであり \fIcnt\fP -はそのバイト単位の大きさである。 このルーティンは成功した場合は 1 を返す。 失敗した場合はゼロを返す。 -.LP -.nf -\fBbool_t xdr_pointer(XDR *\fP\fIxdrs\fP\fB, char **\fP\fIobjpp\fP\fB,\fP -\fB unsigned int \fP\fIobjsize\fP\fB, xdrproc_t \fP\fIxdrobj\fP\fB);\fP -.fi -.IP -\fBxdr_reference\fP() と同様であるが、これがヌルポインターを番号化するのに対して \fBxdr_reference\fP() -はそうしない点が異なっている。これにより、 \fBxdr_pointer\fP() は二分木や連結リストのような再帰的なデータ構造体を 表現できる。 -.LP -.nf -\fBvoid xdrrec_create(XDR *\fP\fIxdrs\fP\fB, unsigned int \fP\fIsendsize\fP\fB,\fP -\fB unsigned int \fP\fIrecvsize\fP\fB, char *\fP\fIhandle\fP\fB,\fP -\fB int (*\fP\fIreadit\fP\fB) (char *, char *, int),\fP -\fB int (*\fP\fIwriteit\fP\fB) (char *, char *, int));\fP -.fi -.IP -このルーティンは \fIxdrs\fP で指された XDR ストリームオブジェクトを初期化する。 ストリームのデータは大きさ \fIsendsize\fP -のバッファーへ書き込まれる。 \fIsendsize\fP をゼロにすると、システムに適切なデフォルトを使用するように指示する。 ストリームのデータは大きさ -\fIrecvsize\fP のバッファーから読み込まれる。これもゼロを渡すことで適切なデフォルトに 設定することができる。 -ストリームの出力バッファーが一杯の場合は \fIwriteit\fP が呼び出される。同様にストリーム入力バッファーが空の場合には \fIreadit\fP -が呼び出される。これらの二つのルーティンの動作はシステムコールの \fBread\fP(2) や \fBwrite\fP(2) -と似ているが、前者のルーティンは最初の引き数として \fIhandle\fP が渡される点で異なっている。 注意: XDR ストリームの \fIop\fP -は呼び出し側で設定しなければならない。 -.IP -警告: この XDR ストリームは中間レコードストリームを実装している。 レコード境界の情報を提供するためにストリームには余分なバイトが存在する。 -.LP -.nf -\fBbool_t xdrrec_endofrecord(XDR *\fP\fIxdrs\fP\fB, int \fP\fIsendnow\fP\fB);\fP -.fi -.IP -このルーティンは \fBxdrrec_create\fP() によって作成されたストリームに対してのみ呼び出すことができる。 -出力バッファーのデータは完全なレコードとして印され、 \fIsendnow\fP がゼロでない場合には出力バッファーは書き出される。 -このルーティンは成功した場合は 1 を返す。失敗した場合はゼロを返す。 -.LP -.nf -\fBbool_t xdrrec_eof(XDR *\fP\fIxdrs\fP\fB);\fP -.fi -.IP -このルーティンは \fBxdrrec_create\fP() によって作成されたストリームに対してのみ呼び出すことができる。 -ストリームの現在のレコードの残りを消費した後に、 ストリームに入力が残っていない場合には 1 を返す。 それ以外の場合はゼロを返す。 -.LP -.nf -\fBbool_t xdrrec_skiprecord(XDR *\fP\fIxdrs\fP\fB);\fP -.fi -.IP -このルーティンは \fBxdrrec_create\fP() によって作成されたストリームに対してのみ呼び出すことができる。 XDR -の実装にそのストリームの入力バッファーの現在のレコードの残りを 捨てるように伝える。このルーティンは成功した場合は 1 を返す。 -失敗した場合はゼロを返す。 -.LP -.nf -\fBbool_t xdr_reference(XDR *\fP\fIxdrs\fP\fB, char **\fP\fIpp\fP\fB, unsigned int \fP\fIsize\fP\fB,\fP -\fB xdrproc_t \fP\fIproc\fP\fB);\fP -.fi -.IP -構造体へのポインター追跡を提供する基本ルーティン。 引き数 \fIpp\fP はポインターのアドレスである。 \fIsize\fP は \fI*pp\fP -が指している構造体の \fIsizeof\fP である。 \fIproc\fP はその構造体の C 形式と外部表現との変換を行なう XDR プロシージャーである。 -このルーティンは成功した場合 1 を返す。 失敗した場合はゼロを返す。 -.IP -警告: このルーティンはヌルポインターを理解することができない。かわりに \fBxdr_pointer\fP() を使用すること。 -.LP -.nf -\fBxdr_setpos(XDR *\fP\fIxdrs\fP\fB, unsigned int \fP\fIpos\fP\fB);\fP -.fi -.IP -このマクロは XDR ストリーム \fIxdrs\fP に関連付けられた位置設定ルーティンを呼び出す。引き数 \fIpos\fP は \fBxdr_getpos\fP() -によって取得される位置数値である。 このルーティンは XDR ストリームの位置の変更ができた場合には 1 を返す。 それ以外の場合は 0 を返す。 -.IP -警告: ある種の XDR ストリームの場合は位置の変更を行なうことが困難である。 それでこのルーティンはある種のストリームの場合には成功し、別の種類の -場合には失敗するかもしれない。 -.LP -.nf -\fBbool_t xdr_short(XDR *\fP\fIxdrs\fP\fB, short *\fP\fIsp\fP\fB);\fP -.fi -.IP -C の \fIshort\fP 整数とその外部表現との変換を行なう基本フィルター。 このルーティンは成功すると 1 を返す。 失敗した場合はゼロを返す。 -.LP -.nf -\fBvoid xdrstdio_create(XDR *\fP\fIxdrs\fP\fB, FILE *\fP\fIfile\fP\fB, enum xdr_op \fP\fIop\fP\fB);\fP -.fi -.IP -このルーティンは \fIxdrs\fP で指された XDR ストリームオブジェクトを初期化する。 XDR ストリームに読み書きれたデータは \fIstdio\fP -ストリーム \fIfile\fP が使用される。 \fIop\fP 引き数は XDR ストリームの変換方向を決定する (\fBXDR_ENCODE\fP, -\fBXDR_DECODE\fP, \fBXDR_FREE\fP のどれか)。 -.IP -警告: このような XDR ストリームに関連付けられた破壊ルーティンは \fIfile\fP ストリームに対して \fBfflush\fP(3) を呼び出すが -\fBfclose\fP(3) を呼び出すことはない。 -.LP -.nf -\fBbool_t xdr_string(XDR *\fP\fIxdrs\fP\fB, char **\fP\fIsp\fP\fB, unsigned int \fP\fImaxsize\fP\fB);\fP -.fi -.IP -C の文字列とそれに対応する外部表現とを変換するための基本フィルター。 文字列は \fImaxsize\fP より長くはできない。 注意: \fIsp\fP -は文字列へのポインターのアドレスである。 このルーティンは成功した場合は 1 を返す。 失敗した場合はゼロを返す。 -.LP -.nf -\fBbool_t xdr_u_char(XDR *\fP\fIxdrs\fP\fB, unsigned char *\fP\fIucp\fP\fB);\fP -.fi -.IP -C の \fI符号無し文字 (unsigned char)\fP とその外部表現とを変換する基本フィルター。 このルーティンは成功した場合は 1 を返す。 -失敗した場合はゼロを返す。 -.LP -.nf -\fBbool_t xdr_u_int(XDR *\fP\fIxdrs\fP\fB, unsigned *\fP\fIup\fP\fB);\fP -.fi -.IP -C の \fI符号無し整数 (unsigned)\fP とその外部表現を変換するための基本フィルター。 このルーティンは成功した場合は 1 を返す。 -失敗した場合はゼロを返す。 -.LP -.nf -\fBbool_t xdr_u_long(XDR *\fP\fIxdrs\fP\fB, unsigned long *\fP\fIulp\fP\fB);\fP -.fi -.IP -C の \fIunsigned long\fP 整数とその外部表現を変換するための基本フィルター。 このルーティンは成功した場合は 1 を返す。 -失敗した場合はゼロを返す。 -.LP -.nf -\fBbool_t xdr_u_short(XDR *\fP\fIxdrs\fP\fB, unsigned short *\fP\fIusp\fP\fB);\fP -.fi -.IP -C の \fIunsigned short\fP 整数とその外部表現を変換するための基本フィルター。 このルーティンは成功した場合は 1 を返す。 -失敗した場合はゼロを返す。 -.LP -.nf -\fBbool_t xdr_union(XDR *\fP\fIxdrs\fP\fB, int *\fP\fIdscmp\fP\fB, char *\fP\fIunp\fP\fB,\fP -\fB struct xdr_discrim *\fP\fIchoices\fP\fB,\fP -\fB xdrproc_t \fP\fIdefaultarm\fP\fB); /* may equal NULL */\fP -.fi -.IP -分別可能な C の \fI共用体 (union)\fP とその外部形式とを変換する基本フィルター。 最初に \fIdscmp\fP -として与えられた共用体の分別要素が変換される。 この分別要素は常に \fIenum_t\fP である。 次に \fIunp\fP の位置の共用体が変換される。引き数 -\fIchoices\fP は \fBxdr_discrim\fP() 構造体の配列へのポインターである。各構造体は [\fIvalue\fP,\fIproc\fP] -の順序付きペアを格納している。 もし共用体の分別要素が関連付けられた \fIvalue\fP と等しい場合には、共用体を変換するために \fIproc\fP -が呼び出される。 \fBxdr_discrim\fP() 構造体の配列の最後は、値 NULL のルーティン を指定することで示される。 分別要素が -\fIchoices\fP 配列の中に見つからなかった場合、 \fIdefaultarm\fP が (NULL でなければ) 呼び出される。 成功した場合は 1 -を返す。失敗した場合はゼロを返す。 -.LP -.nf -\fBbool_t xdr_vector(XDR *\fP\fIxdrs\fP\fB, char *\fP\fIarrp\fP\fB, unsigned int \fP\fIsize\fP\fB,\fP -\fB unsigned int \fP\fIelsize\fP\fB, xdrproc_t \fP\fIelproc\fP\fB);\fP -.fi -.IP -固定長の配列とそれらが対応する外部表現とを変換する基本フィルター。 引き数 \fIarrp\fP は配列へのポインターのアドレスである。一方で \fIsize\fP -は配列の要素数そのものである。引き数 \fIelsize\fP は配列の各要素の \fIsizeof\fP で、 \fIelproc\fP は配列の要素を C -形式からその外部表現へと変換する XDR フィルターである。 このルーティンは成功した場合 1 を返す。 失敗した場合はゼロを返す。 -.LP -.nf -\fBbool_t xdr_void(void);\fP -.fi -.IP -このルーティンは常に 1 を返す。 これは何も行なわないが、関数引き数が必要な RPC ルーティンに渡すことができる。 -.LP -.nf -\fBbool_t xdr_wrapstring(XDR *\fP\fIxdrs\fP\fB, char **\fP\fIsp\fP\fB);\fP -.fi -.IP -\fBxdr_string(xdrs, sp, \s-1MAXUN.UNSIGNED\s0 );\fP を呼び出す基本ルーティン。 ここで -\fBMAXUN.UNSIGNED\fP は符号無し整数(unsigned int)の最大値である。 \fBxdr_wrapstring\fP() は、 RPC -パッケージは二つの XDR ルーティンの最大値を引き数として渡すため便利である。 \fBxdr_string\fP() -は最も頻繁に利用される基本ルーティンであるが三つを要求する。 成功した場合は 1 を返す、失敗した場合はゼロを返す。 -.SH 関連項目 -\fBrpc\fP(3) -.LP -以下のマニュアル: -.RS -eXternal Data Representation Standard: Protocol Specification -.br -eXternal Data Representation: Sun Technical Notes -.br -\fIXDR: External Data Representation Standard\fP, RFC\ 1014, Sun Microsystems, -Inc., USC\-ISI. -.RE -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man3/y0.3 b/manual/LDP_man-pages/draft/man3/y0.3 deleted file mode 100644 index 05c246b8..00000000 --- a/manual/LDP_man-pages/draft/man3/y0.3 +++ /dev/null @@ -1,166 +0,0 @@ -.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) -.\" and Copyright 2008, Linux Foundation, written by 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 -.\" -.\" References consulted: -.\" Linux libc source code -.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) -.\" 386BSD man pages -.\" Modified Sat Jul 24 19:08:17 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified 2002-08-25, aeb -.\" Modified 2004-11-12 as per suggestion by Fabian Kreutz/AEB -.\" 2008-07-24, mtk, created this page, based on material from j0.3. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2008 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2008-09-19, Akihiro MOTOKI , LDP v3.07 -.\" -.TH Y0 3 2014\-01\-18 "" "Linux Programmer's Manual" -.SH 名前 -y0, y0f, y0l, y1, y1f, y1l, yn, ynf, ynl \- 第二種ベッセル関数 -.SH 書式 -.nf -\fB#include \fP -.sp -\fBdouble y0(double \fP\fIx\fP\fB);\fP -.br -\fBdouble y1(double \fP\fIx\fP\fB);\fP -.br -\fBdouble yn(int \fP\fIn\fP\fB, double \fP\fIx\fP\fB);\fP -.sp -\fBfloat y0f(float \fP\fIx\fP\fB);\fP -.br -\fBfloat y1f(float \fP\fIx\fP\fB);\fP -.br -\fBfloat ynf(int \fP\fIn\fP\fB, float \fP\fIx\fP\fB);\fP -.sp -\fBlong double y0l(long double \fP\fIx\fP\fB);\fP -.br -\fBlong double y1l(long double \fP\fIx\fP\fB);\fP -.br -\fBlong double ynl(int \fP\fIn\fP\fB, long double \fP\fIx\fP\fB);\fP -.fi -.sp -\fI\-lm\fP でリンクする。 -.sp -.in -4n -glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): -.in -.sp -.ad l -\fBy0\fP(), \fBy1\fP(), \fByn\fP(): -.RS 4 -_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE -.RE -.br -\fBy0f\fP(), \fBy0l\fP(), \fBy1f\fP(), \fBy1l\fP(), \fBynf\fP(), \fBynl\fP(): -.RS 4 -.\" Also seems to work: -std=c99 -D_XOPEN_SOURCE -_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 600 -.RE -.ad b -.SH 説明 -.PP -関数 \fBy0\fP() と \fBy1\fP() はそれぞれ \fIx\fP の 0 次、1 次の 第二種ベッセル関数の値を返す。 関数 \fByn\fP() は -\fIx\fP の \fIn\fP 次の 第二種ベッセル関数の値を返す。 -.PP -\fIx\fP は正の値でなければならない。 -.PP -関数 \fBy0f\fP(), \fBy1f\fP(), \fBynf\fP() は、 \fIfloat\fP 型を引数に取り、返り値として返す。 関数 \fBy0l\fP(), -\fBy1l\fP(), \fBynl\fP() は、 \fIlong double\fP 型を引数に取り、返り値として返す。 -.SH 返り値 -成功すると、これらの関数は \fIx\fP に対する第二種ベッセル関数の値を返す。 - -\fIx\fP が NaN の場合、NaN が返される。 - -\fIx\fP が負の場合、領域エラー (domain error) が発生し、 各関数はそれぞれ \-\fBHUGE_VAL\fP, \-\fBHUGE_VALF\fP, -\-\fBHUGE_VALL\fP を返す (POSIX.1\-2001 ではこの場合に NaN を返すことも認めている)。 - -\fIx\fP が 0.0 の場合、極エラー (pole error) が発生し、 各関数はそれぞれ \-\fBHUGE_VAL\fP, \-\fBHUGE_VALF\fP, -\-\fBHUGE_VALL\fP を返す。 - -結果がアンダーフローする場合、 範囲エラー (range error) が発生し、 各関数は 0.0 を返す。 - -結果がオーバーフローする場合、範囲エラーが発生し、 各関数はそれぞれ \-\fBHUGE_VAL\fP, \-\fBHUGE_VALF\fP, -\-\fBHUGE_VALL\fP を返す (POSIX.1\-2001 ではこの場合に 0.0 を返すことも認めている)。 -.SH エラー -これらの関数を呼び出した際にエラーが発生したかの判定方法についての情報は \fBmath_error\fP(7) を参照のこと。 -.PP -以下のエラーが発生する可能性がある。 -.TP -領域エラー (domain error): \fIx\fP が負である -\fIerrno\fP に \fBEDOM\fP が設定される。 不正 (invalid) 浮動小数点例外 (\fBFE_INVALID\fP) が上がる。 -.TP -極エラー: \fIx\fP が 0.0 -.\" Before POSIX.1-2001 TC2, this was (inconsistently) specified -.\" as a range error. -.\" FIXME . y0(0.0) gives EDOM -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6808 -\fIerrno\fP に \fBERANGE\fP が設定される (「バグ」の節を参照のこと)。 このエラーの場合、 \fBfetestexcept\fP(3) は -\fBFE_DIVBYZERO\fP 例外を返さない。 -.TP -範囲エラー (range error): 結果のアンダーフロー -.\" e.g., y0(1e33) on glibc 2.8/x86-32 -.\" An underflow floating-point exception -.\" .RB ( FE_UNDERFLOW ) -.\" is raised. -.\" FIXME . Is it intentional that these functions do not use FE_*? -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6806 -\fIerrno\fP に \fBERANGE\fP が設定される。 このエラーの場合、 \fBfetestexcept\fP(3) は \fBFE_UNDERFLOW\fP -例外を返さない。 -.TP -範囲エラー (range error): 結果のオーバーフロー -.\" e.g., yn(10, 1e-40) on glibc 2.8/x86-32 -.\" .I errno -.\" is set to -.\" .BR ERANGE . -.\" FIXME . Is it intentional that errno is not set? -.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6808 -この場合、 \fIerrno\fP は設定されない。 オーバーフロー浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 -.SH 準拠 -\fIdouble\fP 型の値を返す関数は、SVr4, 4.3BSD, POSIX.1\-2001 に準拠する。 それ以外は非標準の関数で、BSD -にも存在する。 -.SH バグ -.\" FIXME . -.\" Bug raised: http://sourceware.org/bugzilla/show_bug.cgi?id=6807 -極エラーの場合、これらの関数は \fIerrno\fP に \fBEDOM\fP を設定するが、 POSIX.1\-2004 では \fBERANGE\fP -を設定することが要求されている。 - -.\" FIXME . Actually, 2.3.2 is the earliest test result I have; so yet -.\" to confirm if this error occurs only in 2.3.2. -glibc バージョン 2.3.2 以前では、 領域エラーが発生した場合に、これらの関数は 不正浮動小数点例外 (\fBFE_INVALID\fP) -を上げない。 -.SH 関連項目 -\fBj0\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/console_codes.4 b/manual/LDP_man-pages/draft/man4/console_codes.4 index 66001624..b2417ced 100644 --- a/manual/LDP_man-pages/draft/man4/console_codes.4 +++ b/manual/LDP_man-pages/draft/man4/console_codes.4 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (c) 1996 Andries Brouwer , Mon Oct 31 22:13:04 1996 .\" .\" %%%LICENSE_START(GPLv2+_DOC_ONEPARA) @@ -33,7 +32,7 @@ .\" by ISHIKAWA Mutsumi .\" and TAKAHASHI Mutsuji .\" -.TH CONSOLE_CODES 4 2012\-08\-05 Linux "Linux Programmer's Manual" +.TH CONSOLE_CODES 4 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 console_codes \- Linux コンソールのエスケープシーケンスとコントロール シーケンス .SH 説明 @@ -41,22 +40,22 @@ Linux コンソールは VT102 と ECMA\-48/ISO6429/ANSI X3.64 端末コンソ サブセットに、カラーパレットや文字集合のマッピングなどを変更する プライベートモードシーケンスを加えて実装されている。 以下の表では、機能の ECMA\-48 または DEC のニーモニクス(DECで始まれば後者)を 2 番目の桁に記す。 ニーモニクスのないものは ECMA\-48 でも VT102 でもないものである。 -.LP +.PP すべての出力作業が終って、実際に印字するために文字のストリームが コンソールドライバーに届いた時、最初に行なわれるのが、処理用コードから 印字用のコードへの変換である。 -.LP +.PP もし、コンソールが UTF\-8 モードなら、入って来たバイト(byte)は 16 ビットの Unicode に組み立てられる。そうでなければ、それぞれの バイトは現在の(各バイトを Unicode の値に変換する)マッピングテーブルに 従って変換される。これに関しては下のキャラクターセット(Charcter Sets) 節を参照のこと。 -.LP +.PP 通常、Unicode の値はフォントインデックス(font index) に変換され、 ビデオメモリーに蓄えられる。そして(ビデオ ROM 中に見付けられる) 対応するグリフ(glyph)が画面に現れる。 Unicode を用いると、(PC 互換機の設計では) 512 の異なった グリフを同時に利用できるようになる。 -.LP +.PP 現在の Unicode の値がコントロール文字であるかエスケープシーケンスを 処理している時には、その値は特別に扱われる。 フォントのインデックスに変換されてグリフとして表示される代わりに、カーソルの 移動やその他のコントロール機能を実行させる。 詳しいことは、後述の「LINUX コンソールコントロール」のセクションを参照のこと。 -.LP +.PP 一般に端末コントロールコードをプログラム中に直接記述するのは 良いことではない。 Linuxでは、端末において実現可能な操作のデータベースである \fBterminfo\fP(5) をサポートしている。 コンソールエスケープシーケンスをわざわざ入力するよりも、ほとんどの場合 terminfo の情報を参照する \fBncurses\fP(3), \fBtput\fP(1), や \fBreset\fP(1) @@ -66,37 +65,40 @@ VT102 でもないものである。 文字のイメージを印字する以外のこと)を起こさせる全てのコントロール文字と エスケープシーケンスについて述べる。 .PP \fBコントロール文字\fP -.sp -コントロール文字とは、(マッピングテーブルによる変換前のコードが) 00 (NUL), 07 (BEL), 08 (BS), 09 (HT), 0a -(LF), 0b (VT), 0c (FF), 0d (CR), 0e (SO), 0f (SI), 18 (CAN), 1a (SUB), 1b -(ESC), 7f (DEL) の 14 のコードのうちのどれかである文字である。 "コントロール文字表示(display control -characters)"モード(後述)を 設定すると、07, 09, 0b, 18, 1a, 7f をグリフとして表示することができる。 一方、 -UTF\-8 モードでは、00\-1f の全てのコードは、コントロール文字表示 モードが指定された場合でもコントロール文字として扱われる。 +.PP +A character is a control character if (before transformation according to +the mapping table) it has one of the 14 codes 00 (NUL), 07 (BEL), 08 (BS), +09 (HT), 0a (LF), 0b (VT), 0c (FF), 0d (CR), 0e (SO), 0f (SI), 18 (CAN), 1a +(SUB), 1b (ESC), 7f (DEL). One can set a "display control characters" mode +(see below), and allow 07, 09, 0b, 18, 1a, 7f to be displayed as glyphs. On +the other hand, in UTF\-8 mode all codes 00\(en1f are regarded as control +characters, regardless of any "display control characters" mode. .PP コントロール文字がある時には、それはすぐに(たとえエスケープシーケンスの 途中でも)実行され、破棄される。エスケープシーケンスは次の文字から続けられる (しかし、ESC は新しいエスケープシーケンスを始めるので、 前の終了していないエスケープシーケンスが中止される可能性がある。 さらに、CAN と SUB はどんなエスケープシーケンスも中止する)。 認められているコントロール文字は、BEL, BS, HT, LF, VT, FF, CR, SO, SI, CAN, SUB, ESC, DEL, CSI である。これらは期待どおりの動作をする: .HP -BEL (0x07, \fB^G\fP) はビープ音を鳴らす; +BEL (0x07, \fB\(haG\fP) beeps; .HP -BS (0x08, \fB^H\fP) はバックスペース (ただし、行頭は越えない); +BS (0x08, \fB\(haH\fP) backspaces one column (but not past the beginning of the +line); .HP -HT (0x09, \fB^I\fP) は次のタブストップ(tab stop)へ移動する、そこから行末までに タブストップが無い場合は行の終りに移動する; +HT (0x09, \fB\(haI\fP) goes to the next tab stop or to the end of the line if +there is no earlier tab stop; .HP -LF (0x0A, \fB^J\fP), VT (0x0B, \fB^K\fP), FF (0x0C, \fB^L\fP) これらは全て -ラインフィード(linefeed)を与える; LF/NL (ニューラインモード(new line mode))がセットされていれば -キャリッジリターンもアクティブにする; +LF (0x0A, \fB\(haJ\fP), VT (0x0B, \fB\(haK\fP) and FF (0x0C, \fB\(haL\fP) all give a +linefeed, and if LF/NL (new\-line mode) is set also a carriage return; .HP -CR (0x0D, \fB^M\fP) はキャリッジリターンを与える; +CR (0x0D, \fB\(haM\fP) gives a carriage return; .HP -SO (0x0E, \fB^N\fP) は G1 文字集合をアクティブにする。 +SO (0x0E, \fB\(haN\fP) activates the G1 character set; .HP -SI (0x0F, \fB^O\fP) は G0 文字集合をアクティブにする; +SI (0x0F, \fB\(haO\fP) activates the G0 character set; .HP -CAN (0x18, \fB^X\fP) と SUB (0x1A, \fB^Z\fP) はエスケープシーケンスを中断する; +CAN (0x18, \fB\(haX\fP) and SUB (0x1A, \fB\(haZ\fP) abort escape sequences; .HP -ESC (0x1B, \fB^[\fP) はエスケープシーケンスを始める。 +ESC (0x1B, \fB\(ha[\fP) starts an escape sequence; .HP DEL (0x7F) は無視される; .HP @@ -137,17 +139,17 @@ ESC ) G1 を定義するシーケンスを開始する。 ESC > DECPNM 数値キーパッドモード(numeric keypad mode)をセットする。 ESC = DECPAM アプリケーションキーパッドモード(application keypad mode) をセットする。 ESC ] OSC T{ -("Operating system command"のことだろう) -ESC ] P \fInrrggbb\fP: 最後の P のあとの 7 つの 16 進数を -パラメーターとして :\-( パレットをセットする。 -ここで、\fIn\fPは色 (0\-15)、\fIrrggbb\fPは赤/緑/青の値 -(0\-255)を意味する。 -ESC ] R: パレットをリセットする。 +(Should be: Operating system command) +ESC ] P \fInrrggbb\fP: set palette, with parameter +given in 7 hexadecimal digits after the final P :\-(. +Here \fIn\fP is the color (0\(en15), and \fIrrggbb\fP indicates +the red/green/blue values (0\(en255). +ESC ] R: reset palette T} .TE .PP \fBECMA\-48 CSI シーケンス\fP -.sp +.PP CSI (または ESC [ ) のあとに、最大で NPAR (16) 個のセミコロンで区切られた 10 進数のパラメーターシーケンスが続く。 空であるかそこにないパラメーターは 0 とされる。 パラメーターシーケンスの前にはひとつのクエスチョンマークがつくことがある。 .PP @@ -202,7 +204,7 @@ u ? カーソル位置の復帰。 .TE .PP \fBECMA\-48 グラフィクスレンディション(Graphics Rendition)の設定\fP -.sp +.PP ECMA\-48 SGR シーケンス ESC [ <パラメーター> m は表示属性を設定する。 セミコロンで区切ることで、同じシーケンスでいくつかの属性を設定できる。 空パラメーター(セミコロンか文字列開始文字か文字列終端文字の間)はゼロと解釈される。 @@ -235,7 +237,10 @@ T} マッピングテーブルによる変換をする前に、 バイトの上位の1ビットがトグルされる。 T} -21 通常の輝度にセット(ECMA\-48 では "doubly underlined" と呼んでいる)。 +21 T{ +set underline; before Linux 4.17, this value +set normal intensity (as is done in many other terminals) +T} 22 通常の輝度にセット。 24 下線オフ。 25 点滅オフ。 @@ -248,8 +253,14 @@ T} 35 フォアグラウンドをマゼンダにセット。 36 フォアグラウンドをシアンにセット。 37 フォアグラウンドを白にセット。 -38 下線表示に設定し、フォアグラウンドをデフォルトにセット。 -39 下線表示を解除し、フォアグラウンドをデフォルトにセット。 +38 T{ +256/24\-bit foreground color follows, shoehorned into 16 basic colors +(before Linux 3.16: set underscore on, set default foreground color) +T} +39 T{ +set default foreground color +(before Linux 3.16: set underscore off, set default foreground color) +T} 40 バックグラウンド(background)を黒にセット。 41 バックグラウンドを赤にセット。 42 バックグラウンドを緑にセット。 @@ -258,7 +269,22 @@ T} 45 バックグラウンドをマゼンダにセット。 46 バックグラウンドをシアンにセット。 47 バックグラウンドを白にセット。 +48 T{ +256/24\-bit background color follows, shoehorned into 8 basic colors +T} 49 バックグラウンドをデフォルトにセット。 +90..97 set foreground to bright versions of 30..37 +100.107 set background, same as 40..47 (bright not supported) +.TE +.PP +Commands 38 and 48 require further arguments: +.TS +l l. +;5;x T{ +256 color: values 0..15 are IBGR (black, red, green, ... white), +16..231 a 6x6x6 color cube, 232..255 a grayscale ramp +T} +;2;r;g;b 24\-bit color, r/g/b components are in the range 0..255 .TE .PP \fBECMA\-48 モードスイッチ(Mode Switches)\fP @@ -284,7 +310,7 @@ ESC [ 6 n カーソル位置のリポート(CPR): 返事は ESC [ \fIy\fP ; \fIx\fP R、 \fIx,y\fP はカーソルの位置をあらわす。 .PP \fBDEC プライベートモード (DECSET/DECRST) シーケンス\fP -.sp +.PP .\" これらは ECMA\-48 では記述されていない。ここでは、セットモード シーケンス (Set Mode sequences)を記載する; 最後の \(aqh\(aq を \(aql\(aq に 置き換えるとリセットモードシーケンス(Reset Mode sequences)になる。 @@ -321,15 +347,16 @@ ESC [ ? 1000 h X11 マウスリポート(デフォルトはオフ): リポートモードを 2 にセット(または、 0にリセット)\(em後述 .PP \fBLinux コンソールプライベート CSI シーケンス\fP -.sp +.PP .\" -以下のシーケンスは ECMA\-48 のものでも本来の VT102 のものでもでもなく、 Linuxコンソールドライバーに固有なシーケンスである。色は -SGR パラメーターで 表現される: 0 = 黒, 1= 赤, 2 = 緑, 3 = 茶, 4 = 青, 5 = マゼンタ, 6 = シアン, 7 = -白 +The following sequences are neither ECMA\-48 nor native VT102. They are +native to the Linux console driver. Colors are in SGR parameters: 0 = +black, 1 = red, 2 = green, 3 = brown, 4 = blue, 5 = magenta, 6 = cyan, 7 = +white; 8\(en15 = bright versions of 0\(en7. .TS l l. -ESC [ 1 ; \fIn\fP ] 下線の色を\fIn\fP にセットする。 -ESC [ 2 ; \fIn\fP ] ディムの色を\fIn\fP にセットする。 +ESC [ 1 ; \fIn\fP ] Set color \fIn\fP as the underline color. +ESC [ 2 ; \fIn\fP ] Set color \fIn\fP as the dim color. ESC [ 8 ] 現在の色のペアをデフォルト属性にする。 ESC [ 9 ; \fIn\fP ] スクリーンブランク(screen blank)のタイムアウトを \fIn\fP 分にセットする。 ESC [ 10 ; \fIn\fP ] ベルの周波数(Hz)をセットする。 @@ -337,23 +364,35 @@ ESC [ 11 ; \fIn\fP ] ベルの鳴っている時間(msec)をセットする。 ESC [ 12 ; \fIn\fP ] 指定のコンソールを前面に持ってくる。 ESC [ 13 ] スクリーンをアンブランク(unblank)する。 ESC [ 14 ; \fIn\fP ] VESA電源停止インターバル(VESA powerdown interval)をセットする。 +ESC [ 15 ] T{ +Bring the previous console to the front +(since Linux 2.6.0). +T} +ESC [ 16 ; \fIn\fP ] T{ +Set the cursor blink interval in milliseconds +(since Linux 4.2). +T} +.\" commit bd63364caa8df38bad2b25b11b2a1b849475cce5 .TE .SS 文字集合 カーネルは、バイト列からコンソールスクリーン符号の変換を 4 つ 知っている。 4 つの変換テーブルとは、a) Latin1 \-> PC, b) VT100 graphics \-> PC, c) PC \-> PC, d) ユーザー定義, である。 .PP -G0 と G1 と呼ばれる二つの文字集合があり、そのうち一つが現在の 文字集合である(初期値は G0 )。 \fB^N\fP をタイプすると G1 が -\fB^O\fP を入力すると G0 が現在の文字集合になる。 +There are two character sets, called G0 and G1, and one of them is the +current character set. (Initially G0.) Typing \fB\(haN\fP causes G1 to become +current, \fB\(haO\fP causes G0 to become current. .PP 変数 G0 と G1 は変換テーブルを指しており、ユーザーにより変更できる。 最初はそれぞれテーブル a) と テーブル b) を指している。 ESC ( B 、 ESC ( 0 、 ESC ( U 、 ESC ( K のそれぞれのシーケンスにより、 G0 が変換テーブル a)、 b)、 c)、 d) を指すようになる。 また、ESC ) B 、 ESC ) 0 、 ESC ) U 、 ESC ) K のそれぞれのシーケンス により、G1 が変換テーブル a)、 b)、 c)、 d) を指すようになる。 .PP -ESC c のシーケンスは端末をリセットする。スクリーンがめちゃくちゃになった 時にそうすることが必要である。よくアドバイスされる "echo -^V^O" は G0 を現在の文字集合にするだけであり、G0 がテーブル a) を指しているという 保証はない。 いくつかのディストリビューションには、 -\fBreset\fP(1) というプログラムが含まれるが、これはただ "echo ^[c" を実行するものである。 もし、コンソールの terminfo -エントリーが正しい(かつ rs1=\eEc のエントリーが ある)ならば、"tput reset"でも同じ効果がある。 +The sequence ESC c causes a terminal reset, which is what you want if the +screen is all garbled. The oft\-advised "echo \(haV\(haO" will make only G0 +current, but there is no guarantee that G0 points at table a). In some +distributions there is a program \fBreset\fP(1) that just does "echo \(ha[c". +If your terminfo entry for the console is correct (and has an entry +rs1=\eEc), then "tput reset" will also work. .PP ユーザー定義のマッピングテーブルは \fBmapscrn\fP(8) を使って定義できる。 マッピングの結果、シンボル c が印字されるとシンボル s = map[c] が ビデオメモリーに送られる。s に対応するビットマップはキャラクター ROM にあり、 \fBsetfont\fP(8) @@ -386,25 +425,26 @@ X10 互換モードでは、ボタンが押された時にマウスの位置と つの最も重要なターミナルである DEC VT102 と \fBxterm\fP(1) との違いについて述べる。 .PP \fBコントロール文字の取り扱い\fP -.sp +.PP VT102 は以下のコントロール文字も認識する: .HP NUL (0x00) は無視される; .HP ENQ (0x05) はアンサーバックメッセージ(answerback message)を発生する; .HP -DC1 (0x11, \fB^Q\fP, XON) は送信を再開する; +DC1 (0x11, \fB\(haQ\fP, XON) resumed transmission; .HP -DC3 (0x13, \fB^S\fP, XOFF) は VT100 に XOFF と XON 以外のコードを無視(そして 送信の停止)を起こさせる。 -.LP +DC3 (0x13, \fB\(haS\fP, XOFF) caused VT100 to ignore (and stop transmitting) +all codes except XOFF and XON. +.PP 端末ドライバーにより VT100 に似た DC1/DC3 処理を有効にする。 -.LP +.PP .\" \fBxterm\fP(1) (VT100 モード)は BEL, BS, HT, LF, VT, FF, CR, SO, SI, ESC の コントロール文字を認識する。 .PP \fBエスケープシーケンス\fP -.sp +.PP Linux コンソールで実装されていない VT100 コンソールシーケンスは以下の通り: .TS l l l. @@ -414,17 +454,18 @@ ESC O SS3 シングルシフト 3 (次の文字だけ G3 文字集合を選択する)。 ESC P DCS デバイス制御文字列 (ESC \e で終わる) ESC X SOS 文字列の始まり。 -ESC ^ PM プライバシーメッセージ(ESC \e で終わる)。 +ESC \(ha PM プライバシーメッセージ(ESC \e で終わる)。 ESC \e ST 文字列の終端文字。 ESC * ... G2 文字集合を指定する。 ESC + ... G3 文字集合を指定する。 .TE .PP -\fBxterm\fP(1) (VT100 モード)は ESC c, ESC # 8, ESC >, ESC =, ESC D, ESC E, -ESC H, ESC M, ESC N, ESC O, ESC P ... ESC \e, ESC Z を認識する("わたしは高等ビデオオプション付きの -VT100 です"という 意味で ESC [ ? 1 ; 2 c と返答する)、ESC ^ ... ESC \e は上述と同じ意味を あらわす。ESC -(, ESC ), ESC *, ESC + に続く 0, A, B を DEC 特殊文字と して受け、それぞれラインドローイング(line -drawing) のセット、UK、 US\-ASCII をあらわす。 +The program \fBxterm\fP(1) (in VT100 mode) recognizes ESC c, ESC # 8, ESC +>, ESC =, ESC D, ESC E, ESC H, ESC M, ESC N, ESC O, ESC P ... ESC \e, +ESC Z (it answers ESC [ ? 1 ; 2 c, "I am a VT100 with advanced video +option") and ESC \(ha ... ESC \e with the same meanings as indicated +above. It accepts ESC (, ESC ), ESC *, ESC + followed by 0, A, B for the +DEC special character and line drawing set, UK, and US\-ASCII, respectively. .PP ユーザーは \fBxterm\fP(1) が VT220 特有のコントロールシーケンスに 反応するように設定でき、また設定と初期化のされかたによって 自分自身を VT52, VT100 などと認識する。 @@ -463,14 +504,14 @@ ESC n LS2 G2 文字集合の呼び出し。 ESC o LS3 G3 文字集合の呼び出し。 ESC | LS3R G3 文字集合を GR として呼び出す。 ESC } LS2R G2 文字集合を GR として呼び出す。 -ESC ~ LS1R G1 文字集合を GR として呼び出す。 +ESC \(ti LS1R G1 文字集合を GR として呼び出す。 .TE .PP .\" また ESC % を認識し、Linux コンソールより更に完全な UTF\-8 実装を提供する。 .PP \fBCSI シーケンス\fP -.sp +.PP X11R5 由来のような、古いバージョンの \fBxterm\fP(1) はブリンク SGR を ボールド SGR として解釈する。 1995 年の XFree86 3.1.2A のような、ANSI カラーが実装された、より新しい バージョンでは、ブリンク属性を色として表示することによってこれを 改善している。 最近のバージョンの xterm はブリンク SGR をテキストをブリンクさせることで 実装し、さらにまた、SGR @@ -478,11 +519,12 @@ XFree86 3.1.2A のような、ANSI カラーが実装された、より新しい リリースまで 色設定 SGR を認識しなかった。 Linux が認識する他のすべての ECMA\-48 CSI シーケンスは \fIxterm\fP でも認識されるが、\fBxterm\fP(1) は Linux が認識しない いくつかの ECMA\-48 と DEC のコントロールシーケンスも実装している。 .PP -\fBxterm\fP(1) は上述のすべての DEC プライベートモードのシーケンスを認識するが、 Linux -プライベートモードのシーケンスはどれも認識しない。 \fBxterm\fP(1) 自身のプライベートモードシーケンスに関しての議論は、 X -配布とともに入手可能な Edward Moy, Stephen Gildea,Thomas E. Dickey による \fIXterm Control -Sequences\fP ドキュメントを参照されたい。 このドキュメントは、簡潔なものであるが、このマニュアルページより 遥かに長いものである。 -年代順の概観としては、 +The \fBxterm\fP(1) program recognizes all of the DEC Private Mode sequences +listed above, but none of the Linux private\-mode sequences. For discussion +of \fBxterm\fP(1)'s own private\-mode sequences, refer to the \fIXterm Control +Sequences\fP document by Edward Moy, Stephen Gildea, and Thomas E.\& Dickey +available with the X distribution. That document, though terse, is much +longer than this manual page. For a chronological overview, .PP .RS .UR http://invisible\-island.net\:/xterm\:/xterm.log.html @@ -519,8 +561,7 @@ Linux "プライベートモード" シーケンスは ECMA\-48 のプライベ このドキュメントの古いバージョンでは、Linux が ECMA\-48 の不可視テキストの コントロールシーケンスを認識するかのように書かれていた。 これは無視される。 .SH 関連項目 -\fBconsole\fP(4), \fBconsole_ioctl\fP(4), \fBcharsets\fP(7) +\fBioctl_console\fP(2), \fBcharsets\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/cpuid.4 b/manual/LDP_man-pages/draft/man4/cpuid.4 index b9889a2f..91ecfc63 100644 --- a/manual/LDP_man-pages/draft/man4/cpuid.4 +++ b/manual/LDP_man-pages/draft/man4/cpuid.4 @@ -28,44 +28,50 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH CPUID 4 2009\-03\-31 Linux "Linux Programmer's Manual" +.TH CPUID 4 2019\-08\-02 Linux "Linux Programmer's Manual" .SH 名前 cpuid \- x86 CPUID アクセスデバイス .SH 説明 CPUID は x86 CPU に関する情報を問い合わせるためのインターフェースを提供する。 - +.PP このデバイスには \fBlseek\fP(2) と \fBpread\fP(2) を使って、 適切な CPUID レベルにアクセスし、 16 バイトのデータを読み出す。 もっと大きな読み出しサイズを指定すると、 連続する複数のレベルが読み出される。 - -ファイル位置の下位 32 ビットは次の \fI%eax\fP として使用され、 ファイル位置の上位 32 ビットは次の \fI%ecx\fP として使用される。 -後者は、 \fIeax=4\fP のように \fIeax\fP レベルを数えるのを意図したものである。 - +.PP +The lower 32 bits of the file position is used as the incoming \fI%eax\fP, and +the upper 32 bits of the file position as the incoming \fI%ecx\fP, the latter +is intended for "counting" \fIeax\fP levels like \fIeax=4\fP. +.PP このドライバーは \fI/dev/cpu/CPUNUM/cpuid\fP を使用する。 なお \fICPUNUM\fP はマイナー番号である。 SMP マシンでは、 このドライバーは \fI/proc/cpuinfo\fP に載っている CPU \fICPUNUM\fP にアクセスする。 - +.PP このファイルは、 ユーザー \fIroot\fP またはグループ \fIroot\fP だけが読み出しできるように保護されている。 .SH 注意 CPUID 命令はインラインアセンブラーを使ってプログラムで直接実行できる。 しかし、 このデバイスを使うことで、 プロセスの affinity を変更せずにすべての CPU に便利にアクセスできる。 - +.PP \fIcpuid\fP の情報のほとんどは、 \fI/proc/cpuinfo\fP か、 \fI/sys/devices/system/cpu\fP のサブディレクトリ経由で読みやすい形で参照できる。 このデバイス経由で直接 CPUID にアクセスするのは例外的な場合にだけにすべきである。 - +.PP \fIcpuid\fP ドライバーは自動ではロードされない。 モジュールに対応したカーネルでは、 使用する前に以下のコマンドを使って明示的にロードする必要がある。 - - $ \fImodprobe cpuid\fP - +.PP +.in +4n +.EX +$ modprobe cpuid +.EE +.in +.PP 追加の入力レジスターが必要な CPUID 機能はサポートされていない。 - +.PP 非常に古い x86 CPU では CPUID はサポートされていない。 .SH 関連項目 +\fBcpuid\fP(1) +.PP Intel Corporation, Intel 64 and IA\-32 Architectures Software Developer's Manual Volume 2A: Instruction Set Reference, A\-M, 3\-180 CPUID reference. - +.PP Intel Corporation, Intel Processor Identification and the CPUID Instruction, Application note 485. .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/dsp56k.4 b/manual/LDP_man-pages/draft/man4/dsp56k.4 index 967adbc3..dc708305 100644 --- a/manual/LDP_man-pages/draft/man4/dsp56k.4 +++ b/manual/LDP_man-pages/draft/man4/dsp56k.4 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (c) 2000 lars brinkhoff .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -35,16 +34,16 @@ .\" Translated Tue Jul 11 20:05:48 JST 2000 .\" by Yuichi SATO .\" -.TH DSP56K 4 2012\-08\-05 Linux "Linux Programmer's Manual" +.TH DSP56K 4 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 dsp56k \- DSP56001 のインターフェースデバイス .SH 書式 .nf -#include -.sp +\fB#include \fP +.PP \fBssize_t read(int \fP\fIfd\fP\fB, void *\fP\fIdata\fP\fB, size_t \fP\fIlength\fP\fB);\fP \fBssize_t write(int \fP\fIfd\fP\fB, void *\fP\fIdata\fP\fB, size_t \fP\fIlength\fP\fB);\fP - +.PP \fBint ioctl(int \fP\fIfd\fP\fB, DSP56K_UPLOAD, struct dsp56k_upload *\fP\fIprogram\fP\fB);\fP \fBint ioctl(int \fP\fIfd\fP\fB, DSP56K_SET_TX_WSIZE, int \fP\fIwsize\fP\fB);\fP \fBint ioctl(int \fP\fIfd\fP\fB, DSP56K_SET_RX_WSIZE, int \fP\fIwsize\fP\fB);\fP @@ -52,7 +51,8 @@ dsp56k \- DSP56001 のインターフェースデバイス \fBint ioctl(int \fP\fIfd\fP\fB, DSP56K_HOST_CMD, int \fP\fIcmd\fP\fB);\fP .fi .SH 設定 -dsp56k デバイスは、メジャー番号 55、マイナー番号 0 の キャラクターデバイスである。 +The \fBdsp56k\fP device is a character device with major number 55 and minor +number 0. .SH 説明 Motorola DSP56001 は、Atari Falcon030 互換のコンピュータで使われている フルプログラマブルな 24 ビットのデジタルシグナルプロセッサーである。 スペシャルファイル \fIdsp56k\fP は、DSP56001 の制御と @@ -64,12 +64,15 @@ Motorola DSP56001 は、Atari Falcon030 互換のコンピュータで使われ .PP 次の \fBioctl\fP(2) コールが \fIdsp56k\fP デバイスを制御するために使われる。 .IP \fBDSP56K_UPLOAD\fP -DSP56001 をリセットし、プログラムをアップロードする。 \fBioctl\fP(2) の 3 番目の引き数は、 構造体 \fIstruct -dsp56k_binary\fP へのポインターでなければならない。 構造体のメンバー \fIbin\fP は DSP56001 バイナリプログラムを指し、 -構造体のメンバー \fIlen\fP は 24 ビットワードで数えた プログラムの長さに設定されていなければならない。 +resets the DSP56001 and uploads a program. The third \fBioctl\fP(2) argument +must be a pointer to a \fIstruct dsp56k_upload\fP with members \fIbin\fP pointing +to a DSP56001 binary program, and \fIlen\fP set to the length of the program, +counted in 24\-bit words. .IP \fBDSP56K_SET_TX_WSIZE\fP -送信ワードサイズを設定する。 設定できる値は 1 〜 4 の範囲で、このバイト数分だけ 1 度に DSP56001 に送信する。 -このデータ単位は、DSP56001 本来の 24 ビットデータ形式に合わせるため、 ゼロのバイトで埋められたり、切り詰められたりする。 +sets the transmit word size. Allowed values are in the range 1 to 4, and is +the number of bytes that will be sent at a time to the DSP56001. These data +quantities will either be padded with bytes containing zero, or truncated to +fit the native 24\-bit data format of the DSP56001. .IP \fBDSP56K_SET_RX_WSIZE\fP 受信ワードサイズを設定する。 設定できる値は 1 〜 4 の範囲で、 このバイト数分だけ 1 度に DSP56001 から受信する。 このデータ単位は、DSP56001 本来の 24 ビットデータ形式に合わせるため、 切り詰められたり、ヌルバイト (\(aq\e0\(aq) @@ -78,7 +81,7 @@ dsp56k_binary\fP へのポインターでなければならない。 構造体 ホストフラグを読み書きする。 ホストフラグは、一般的な目的で使うことのできるビットで、 ホストコンピュータと DSP56001 の両方から読むことができる。 ビット 0 と 1 は、ホストによって書き込むことができ、 ビット 2 と 3 は、DSP56001 によって書き込むことができる。 - +.IP ホストフラグにアクセスするためには、 \fBioctl\fP(2) の 3 番目の引き数が 構造体 \fIstruct dsp56k_host_flags\fP へのポインターでなければならない。 この構造体のメンバー \fIdir\fP のビット 0 または 1 が設定されると、 メンバー \fIout\fP の対応するビットの値がホストフラグに書き込まれる。 すべてのホストフラグの状態は、構造体のメンバー \fIstatus\fP の 下から 4 @@ -90,7 +93,7 @@ dsp56k_binary\fP へのポインターでなければならない。 構造体 .\" .SH AUTHORS .\" Fredrik Noring , lars brinkhoff , .\" Tomas Berndtsson . -/dev/dsp56k +\fI/dev/dsp56k\fP .SH 関連項目 \fIlinux/include/asm\-m68k/dsp56k.h\fP, \fIlinux/drivers/char/dsp56k.c\fP, .UR http://dsp56k.nocrew.org/ @@ -98,6 +101,5 @@ dsp56k_binary\fP へのポインターでなければならない。 構造体 DSP56000/DSP56001 Digital Signal Processor User's Manual .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/fd.4 b/manual/LDP_man-pages/draft/man4/fd.4 index 1c512059..51db30e0 100644 --- a/manual/LDP_man-pages/draft/man4/fd.4 +++ b/manual/LDP_man-pages/draft/man4/fd.4 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (c) 1993 Michael Haardt (michael@cantor.informatik.rwth-aachen.de) .\" and 1994,1995 Alain Knaff (Alain.Knaff@imag.fr) .\" @@ -36,98 +35,112 @@ .\" Translated Sun Jan 11 03:25:38 JST 1998 .\" by ISHIKAWA Mutsumi .\" -.TH FD 4 2014\-05\-10 Linux "Linux Programmer's Manual" +.TH FD 4 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 fd \- フロッピーディスク(floppy disk)デバイス .SH 設定 -フロッピードライブはメジャーナンバー 2 を持つブロックデバイスである。 一般的には、このデバイスのオーナーは \fIroot.floppy\fP (オーナー -root、グループ floppy) で、 モード 0660 (グループの構成員であることによってアクセスチェックが行われる)、 または、モード 0666 -(誰でもアクセスできる) である。 マイナーナンバーはデバイスのタイプ、ドライブの番号、 -コントローラーの番号を符号化したものである。それぞれのデバイスタイプ (これは、密度 (density) とトラックカウント (track count) -の組合せである) は、ベースとなるマイナーナンバーを持っている。このベースナンバーにその -コントローラー上のドライブナンバーを加える。もし、そのドライブが 2 番目の コントローラーに接続されているなら、さらに 128 を加える。次のデバイス -テーブルでは、 \fIn\fP はドライブ番号を表す。 [訳注] 以下のテーブルに用いられる用語は表の整形の関係から原文のままとなっている。 Name -(名前)、Capac. (容量)、Cyl. (シリンダ数)、Sect. (セクター数)、 Heads. (ヘッダー数)、Base minor # -(ベースマイナーナンバー)。 +Floppy drives are block devices with major number 2. Typically they are +owned by root:floppy (i.e., user root, group floppy) and have either mode +0660 (access checking via group membership) or mode 0666 (everybody has +access). The minor numbers encode the device type, drive number, and +controller number. For each device type (that is, combination of density +and track count) there is a base minor number. To this base number, add +the drive's number on its controller and 128 if the drive is on the +secondary controller. In the following device tables, \fIn\fP represents the +drive number. .PP -\fB警告: ドライブがサポートしているよりも多くのトラックを持つように フォーマットした場合、ドライブに機械的なダメージを与えることになる -かもしれない。\fP 通常の 40/80 よりも多くのトラックがサポートされているかどうかを 一度試すだけではドライブにダメージを与えることはないはずだが、 -ダメージを与えないという保証はない。 確信がない場合は、そのような使い方が行われないように、 そうしたフォーマットのドライブエントリーを作成しないこと。 +\fBWarning: if you use formats with more tracks than supported by your drive, +you may cause it mechanical damage.\fP Trying once if more tracks than the +usual 40/80 are supported should not damage it, but no warranty is given for +that. If you are not sure, don't create device entries for those formats, +so as to prevent their usage. .PP メディアのフォーマットと容量を自動的に検出する ドライブ非依存のデバイスファイル: .TS -l l. -Name Base minor # +l c +l c. +Name Base + minor # _ \fBfd\fP\fIn\fP 0 .TE .PP 5.25 インチ倍密度 (double\-density) デバイスファイル: .TS -lw(1i) l l l l l. -Name Capac. Cyl. Sect. Heads Base minor # +lw(1i) l l l l c +lw(1i) c c c c c. +Name Capacity Cyl. Sect. Heads Base + KiB minor # _ -\fBfd\fP\fIn\fP\fBd360\fP 360K 40 9 2 4 +\fBfd\fP\fIn\fP\fBd360\fP 360 40 9 2 4 .TE .PP 5.25 インチ高密度 (high\-density) デバイスファイル: .TS -lw(1i) l l l l l. -Name Capac. Cyl. Sect. Heads Base minor # +lw(1i) l l l l c +lw(1i) c c c c c. +Name Capacity Cyl. Sect. Heads Base + KiB minor # _ -\fBfd\fP\fIn\fP\fBh360\fP 360K 40 9 2 20 -\fBfd\fP\fIn\fP\fBh410\fP 410K 41 10 2 48 -\fBfd\fP\fIn\fP\fBh420\fP 420K 42 10 2 64 -\fBfd\fP\fIn\fP\fBh720\fP 720K 80 9 2 24 -\fBfd\fP\fIn\fP\fBh880\fP 880K 80 11 2 80 -\fBfd\fP\fIn\fP\fBh1200\fP 1200K 80 15 2 8 -\fBfd\fP\fIn\fP\fBh1440\fP 1440K 80 18 2 40 -\fBfd\fP\fIn\fP\fBh1476\fP 1476K 82 18 2 56 -\fBfd\fP\fIn\fP\fBh1494\fP 1494K 83 18 2 72 -\fBfd\fP\fIn\fP\fBh1600\fP 1600K 80 20 2 92 +\fBfd\fP\fIn\fP\fBh360\fP 360 40 9 2 20 +\fBfd\fP\fIn\fP\fBh410\fP 410 41 10 2 48 +\fBfd\fP\fIn\fP\fBh420\fP 420 42 10 2 64 +\fBfd\fP\fIn\fP\fBh720\fP 720 80 9 2 24 +\fBfd\fP\fIn\fP\fBh880\fP 880 80 11 2 80 +\fBfd\fP\fIn\fP\fBh1200\fP 1200 80 15 2 8 +\fBfd\fP\fIn\fP\fBh1440\fP 1440 80 18 2 40 +\fBfd\fP\fIn\fP\fBh1476\fP 1476 82 18 2 56 +\fBfd\fP\fIn\fP\fBh1494\fP 1494 83 18 2 72 +\fBfd\fP\fIn\fP\fBh1600\fP 1600 80 20 2 92 .TE .PP 3.5 インチ倍密度 (double\-density) デバイスファイル: .TS -lw(1i) l l l l l. -Name Capac. Cyl. Sect. Heads Base minor # +lw(1i) l l l l c +lw(1i) c c c c c. +Name Capacity Cyl. Sect. Heads Base + KiB minor # _ -\fBfd\fP\fIn\fP\fBu360\fP 360K 80 9 1 12 -\fBfd\fP\fIn\fP\fBu720\fP 720K 80 9 2 16 -\fBfd\fP\fIn\fP\fBu800\fP 800K 80 10 2 120 -\fBfd\fP\fIn\fP\fBu1040\fP 1040K 80 13 2 84 -\fBfd\fP\fIn\fP\fBu1120\fP 1120K 80 14 2 88 +\fBfd\fP\fIn\fP\fBu360\fP 360 80 9 1 12 +\fBfd\fP\fIn\fP\fBu720\fP 720 80 9 2 16 +\fBfd\fP\fIn\fP\fBu800\fP 800 80 10 2 120 +\fBfd\fP\fIn\fP\fBu1040\fP 1040 80 13 2 84 +\fBfd\fP\fIn\fP\fBu1120\fP 1120 80 14 2 88 .TE .PP 3.5 インチ高密度 (high\-density) デバイスファイル: .TS -lw(1i) l l l l l. -Name Capac. Cyl. Sect. Heads Base minor # +lw(1i) l l l l c +lw(1i) c c c c c. +Name Capacity Cyl. Sect. Heads Base + KiB minor # _ -\fBfd\fP\fIn\fP\fBu360\fP 360K 40 9 2 12 -\fBfd\fP\fIn\fP\fBu720\fP 720K 80 9 2 16 -\fBfd\fP\fIn\fP\fBu820\fP 820K 82 10 2 52 -\fBfd\fP\fIn\fP\fBu830\fP 830K 83 10 2 68 -\fBfd\fP\fIn\fP\fBu1440\fP 1440K 80 18 2 28 -\fBfd\fP\fIn\fP\fBu1600\fP 1600K 80 20 2 124 -\fBfd\fP\fIn\fP\fBu1680\fP 1680K 80 21 2 44 -\fBfd\fP\fIn\fP\fBu1722\fP 1722K 82 21 2 60 -\fBfd\fP\fIn\fP\fBu1743\fP 1743K 83 21 2 76 -\fBfd\fP\fIn\fP\fBu1760\fP 1760K 80 22 2 96 -\fBfd\fP\fIn\fP\fBu1840\fP 1840K 80 23 2 116 -\fBfd\fP\fIn\fP\fBu1920\fP 1920K 80 24 2 100 +\fBfd\fP\fIn\fP\fBu360\fP 360 40 9 2 12 +\fBfd\fP\fIn\fP\fBu720\fP 720 80 9 2 16 +\fBfd\fP\fIn\fP\fBu820\fP 820 82 10 2 52 +\fBfd\fP\fIn\fP\fBu830\fP 830 83 10 2 68 +\fBfd\fP\fIn\fP\fBu1440\fP 1440 80 18 2 28 +\fBfd\fP\fIn\fP\fBu1600\fP 1600 80 20 2 124 +\fBfd\fP\fIn\fP\fBu1680\fP 1680 80 21 2 44 +\fBfd\fP\fIn\fP\fBu1722\fP 1722 82 21 2 60 +\fBfd\fP\fIn\fP\fBu1743\fP 1743 83 21 2 76 +\fBfd\fP\fIn\fP\fBu1760\fP 1760 80 22 2 96 +\fBfd\fP\fIn\fP\fBu1840\fP 1840 80 23 2 116 +\fBfd\fP\fIn\fP\fBu1920\fP 1920 80 24 2 100 .TE .PP 3.5 インチ拡張密度 (extra\-density) デバイスファイル: .TS -lw(1i) l l l l l. -Name Capac. Cyl. Sect. Heads Base minor # +lw(1i) l l l l c +lw(1i) c c c c c. +Name Capacity Cyl. Sect. Heads Base + KiB minor # _ -\fBfd\fP\fIn\fP\fBu2880\fP 2880K 80 36 2 32 -\fBfd\fP\fIn\fP\fBCompaQ\fP 2880K 80 36 2 36 -\fBfd\fP\fIn\fP\fBu3200\fP 3200K 80 40 2 104 -\fBfd\fP\fIn\fP\fBu3520\fP 3520K 80 44 2 108 -\fBfd\fP\fIn\fP\fBu3840\fP 3840K 80 48 2 112 +\fBfd\fP\fIn\fP\fBu2880\fP 2880 80 36 2 32 +\fBfd\fP\fIn\fP\fBCompaQ\fP 2880 80 36 2 36 +\fBfd\fP\fIn\fP\fBu3200\fP 3200 80 40 2 104 +\fBfd\fP\fIn\fP\fBu3520\fP 3520 80 44 2 108 +\fBfd\fP\fIn\fP\fBu3840\fP 3840 80 48 2 112 .TE .SH 説明 \fBfd\fP スペシャルファイルはフロッピーディスクドライブにローモード (raw mode)で アクセスする。\fBfd\fP では、次の @@ -175,15 +188,15 @@ _ より正確な情報のためには、マニュアルページ \fBfloppycontrol\fP(1) だけでなく、インクルードファイル \fI\fP と \fI\fP も参照のこと。 .SH ファイル -/dev/fd* +\fI/dev/fd*\fP .SH 注意 様々なディスクのタイプで様々な種類のフォーマットの読み書きが許されている。 しかし、小さすぎるセクター間ギャップでフォーマットされたフロッピーでは、 トラック全体のアクセスに数秒必要になるため、性能が低下することだろう。 これを防ぐためには、インターリーブドフォーマット (interleaved format) を用いればよい。 - +.PP Apple II や Macintosh コンピュータで使用されている、 GCR (group code recording) を使ってフォーマットされたフロッピー (800k ディスク) を読むことはできない。 - +.PP .\" .SH AUTHORS .\" Alain Knaff (Alain.Knaff@imag.fr), David Niemi .\" (niemidc@clark.net), Bill Broadhurst (bbroad@netcom.com). @@ -193,6 +206,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/full.4 b/manual/LDP_man-pages/draft/man4/full.4 deleted file mode 100644 index e111a570..00000000 --- a/manual/LDP_man-pages/draft/man4/full.4 +++ /dev/null @@ -1,61 +0,0 @@ -.\" This man-page is Copyright (C) 1997 John S. Kallal -.\" -.\" %%%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 -.\" -.\" correction, aeb, 970825 -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 -.\" ISHIKAWA Mutsumi, all rights reserved. -.\" -.TH FULL 4 2007\-11\-24 Linux "Linux Programmer's Manual" -.SH 名前 -full \- いつも full であるデバイス -.SH 設定 -システムに作成済みの \fI/dev/full\fP がない場合、 次のコマンドにより作成できる。 -.nf - - mknod \-m 666 /dev/full c 1 7 - chown root:root /dev/full -.fi -.SH 説明 -\fI/dev/full\fP は、メジャーデバイス番号 1、 マイナーデバイス番号 7 のファイルである。 -.LP -\fI/dev/full\fP デバイスへの書き込みは、 \fBENOSPC\fP エラーで失敗する。 -この動作を使って、プログラムがディスクフルのエラーをどのように 処理するかをテストできる。 - -\fI/dev/full\fP デバイスからの読み出しでは、\e0 文字(ヌル文字)が返される。 - -\fI/dev/full\fP のシーク (seek) は常に成功する。 -.SH ファイル -/dev/full -.SH 関連項目 -\fBmknod\fP(1), \fBnull\fP(4), \fBzero\fP(4) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/hd.4 b/manual/LDP_man-pages/draft/man4/hd.4 deleted file mode 100644 index 1da9e510..00000000 --- a/manual/LDP_man-pages/draft/man4/hd.4 +++ /dev/null @@ -1,94 +0,0 @@ -.\" 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified Sat Jul 24 16:56:20 1993 by Rik Faith -.\" Modified Mon Oct 21 21:38:51 1996 by Eric S. Raymond -.\" (and some more by aeb) -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996,1997,1998 ISHIKAWA Mutsumi -.\" all rights reserved. -.\" Translated Sun Jan 11 03:35:23 JST 1998 -.\" by ISHIKAWA Mutsumi -.\" -.TH HD 4 1992\-12\-17 Linux "Linux Programmer's Manual" -.SH 名前 -hd \- MFM/IDE ハードディスクデバイス -.SH 説明 -\fBhd*\fP デバイスは MFM/IDE ハードディスクドライブにローモード (raw mode) でアクセスするためのブロックデバイス (block -device) である。プライマリ (primary) IDE コントローラー (メジャーナンバー 3) の マスタードライブ (mater -drive) は \fBhda\fP、スレーブドライブ (slave drive) は \fBhdb\fP である。また、セカンドコントローラー (メジャーナンバー -22) のマスター ドライブは \fBhdc\fP スレーブは \fBhdd\fP である。 -.LP -一般的な IDE ブロックデバイスの名前は \fBhd\fP\fIX\fPまたは、 \fBhd\fP\fIXP\fPという形態をとる。この、 \fIX\fP -の部分は物理的なドライブを表す文字で、 \fIP\fP の部分はその物理的なドライブ上のパーティション (partition) を表す数字で -ある。この最初の形式 \fBhd\fP\fIX\fP はドライブ全体を示すのに使われる。 パーティションナンバーは発見されたパーティションに順に割り付けられる。 -パーティションナンバーが割り付けられるのは、空でなく (nonempty) かつ 拡張パーティションでない (nonextended) -パーティションのみである。 このうち、パーティションナンバー 1 から 4 はそれが使われていなくても、 また拡張パーティションだとしても MBR -に記述される四つのパーティション (いわゆる、プラマリ'パーティション) に与えられる。 従って、最初の論理パーティション (logical -pertition) は、 \fBhd\fP\fIX\fP\fB5\fPとなるだろう。 (IDE ハードディスクでは) DOS タイプのパーティショニング -(partitioning) と BSD ディスクラベル (BSD\-disklabel) によるパーティショニングの両方が -サポートされている。また、IDE ディスク上に最高 63 のパーティションを 作成する事ができる。 -.LP -例えば、 \fI/dev/hda\fP はシステムの最初の IDE ドライブ全体を参照する。そして、 \fI/dev/hdb3\fP はセカンドドライブの三つめの -DOS `プライマリ'パーティションを参照する。 -.LP -これらは典型的には次のようにして作られる。 -.RS -.sp -mknod \-m 660 /dev/hda b 3 0 -.br -mknod \-m 660 /dev/hda1 b 3 1 -.br -mknod \-m 660 /dev/hda2 b 3 2 -.br -\&... -.br -mknod \-m 660 /dev/hda8 b 3 8 -.br -mknod \-m 660 /dev/hdb b 3 64 -.br -mknod \-m 660 /dev/hdb1 b 3 65 -.br -mknod \-m 660 /dev/hdb2 b 3 66 -.br -\&... -.br -mknod \-m 660 /dev/hdb8 b 3 72 -.br -chown root:disk /dev/hd* -.RE -.SH ファイル -/dev/hd* -.SH 関連項目 -\fBchown\fP(1), \fBmknod\fP(1), \fBsd\fP(4) \fBmount\fP(8), -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/initrd.4 b/manual/LDP_man-pages/draft/man4/initrd.4 index 1c5a4688..280a7623 100644 --- a/manual/LDP_man-pages/draft/man4/initrd.4 +++ b/manual/LDP_man-pages/draft/man4/initrd.4 @@ -44,19 +44,22 @@ .\" Modified 1998-02-09, ISHIKAWA Mutsumi .\" Updated & Modified 2005-10-08, Akihiro MOTOKI .\" -.TH INITRD 4 2010\-09\-04 Linux "Linux Programmer's Manual" +.TH INITRD 4 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 initrd \- ブートローダーによって初期化された RAM ディスク .SH 設定 -\fI/dev/initrd\fP は、メジャー番号 1、マイナー番号 250 が割り当てられた 読み込み専用のブロックデバイスである。 普通、 -\fI/dev/initrd\fP の所有者は \fIroot.disk\fP であり、モードは 400 (root のみが読み出し可能) である。 -もし、Linux システムに作成済の \fI/dev/initrd\fP ファイルがなかった場合、以下のコマンドで作成することができる: -.nf -\fB - mknod \-m 400 /dev/initrd b 1 250 - chown root:disk /dev/initrd\fP - -.fi +\fI/dev/initrd\fP is a read\-only block device assigned major number 1 and minor +number 250. Typically \fI/dev/initrd\fP is owned by root:disk with mode 0400 +(read access by root only). If the Linux system does not have +\fI/dev/initrd\fP already created, it can be created with the following +commands: +.PP +.in +4n +.EX +mknod \-m 400 /dev/initrd b 1 250 +chown root:disk /dev/initrd +.EE +.in .PP .\" .\" @@ -128,16 +131,23 @@ initrd \- ブートローダーによって初期化された RAM ディスク .\" .\" .\" -通常時ルートファイルシステムとして使われるデバイスを指定する。 \fBLOADLIN\fP では、これはコマンドラインオプションである。 \fBLILO\fP -ではコマンドラインオプション、または、 \fBLILO\fP の設定ファイルである \fI/etc/lilo.config\fP のオプションラインとして使用する。 -このオプションで指定されるデバイスは、適切なルートファイルシステムとし てマウント可能なデバイスでなければならない。 +Specifies the device to be used as the normal root filesystem. For +\fBLOADLIN\fP this is a command\-line option. For \fBLILO\fP this is a boot time +option or can be used as an option line in the \fBLILO\fP configuration file +\fI/etc/lilo.config\fP. The device specified by this option must be a +mountable device having a suitable root filesystem. .SS 通常時ルートファイルシステムの変更 -デフォルトでは、カーネルの設定 (例えば、 \fBrdev\fP(8) を用いてカーネルファイル内にセットされたもの、または、コンパイル時にカー -ネルファイル内に埋め込まれたもの)、 または、ブートローダーのオプション設定によって指定されたものが通常時ルー トファイルシステムとして使われる。 -NFS マウントされた通常時ルートファイルシステムを利用する場合、 \fBnfs_root_name\fP と \fBnfs_root_addrs\fP -ブートオプションを使って NFS の設定を与えなければならない。 NFS マウントされたルート (ファイルシステム) についての -より詳しい情報は、カーネルのドキュメントファイル \fBDocumentation/filesystems/nfsroot.txt\fP を参照のこと。 -ルートファイルシステムの設定についてのより詳しい情報は、 \fBLILO\fP と \fBLOADLIN\fP のドキュメントも参照のこと。 +.\" commit dc7a08166f3a5f23e79e839a8a88849bd3397c32 +By default, the kernel's settings (e.g., set in the kernel file with +\fBrdev\fP(8) or compiled into the kernel file), or the boot loader option +setting is used for the normal root filesystems. For an NFS\-mounted normal +root filesystem, one has to use the \fBnfs_root_name\fP and \fBnfs_root_addrs\fP +boot options to give the NFS settings. For more information on NFS\-mounted +root see the kernel documentation file +\fIDocumentation/filesystems/nfs/nfsroot.txt\fP (or +\fIDocumentation/filesystems/nfsroot.txt\fP before Linux 2.6.33). For more +information on setting the root filesystem see also the \fBLILO\fP and +\fBLOADLIN\fP documentation. .PP また、 \fI/linuxrc\fP を用いる事によっても通常時ルートファイルシステムデバイスを変更すること ができる。 \fI/linuxrc\fP を用いて、通常時ルートデバイスを変更するためには、 \fI/proc\fP がマウントされていなければならない。 \fI/proc\fP をマウントした後で、 @@ -150,30 +160,36 @@ NFS マウントされた通常時ルートファイルシステムを利用す に書き込み、それから \fI/proc/sys/kernel/real\-root\-dev\fP に (疑似 NFS デバイスナンバーである) 0xff を書き込むことで、 ルートデバイスが変更される。 例えば、次のシェルコマンドラインにより、通常時ルートデバイスを \fI/dev/hdb1\fP に変更できるだろう: -.nf - - echo 0x365 >/proc/sys/kernel/real\-root\-dev - -.fi +.PP +.in +4n +.EX +echo 0x365 >/proc/sys/kernel/real\-root\-dev +.EE +.in +.PP また、NFS の場合、次のようなシェルコマンドラインにより、 193.8.232.2 という IP アドレスを持つ "idefix" という名前の システムの、通常時ルートデバイスとして、 ローカルネットワークの 193.8.232.2 という IP アドレスを持つ NFS サーバの NFS ディレクトリ \fI/var/nfsroot\fP をマウントするように変更できる: -.nf - - echo /var/nfsroot >/proc/sys/kernel/nfs\-root\-name - echo 193.8.232.2:193.8.232.7::255.255.255.0:idefix \e - >/proc/sys/kernel/nfs\-root\-addrs - echo 255 >/proc/sys/kernel/real\-root\-dev -.fi - +.PP +.in +4n +.EX +echo /var/nfsroot >/proc/sys/kernel/nfs\-root\-name +echo 193.8.232.2:193.8.232.7::255.255.255.0:idefix \e + >/proc/sys/kernel/nfs\-root\-addrs +echo 255 >/proc/sys/kernel/real\-root\-dev +.EE +.in +.PP +.\" commit 9d85025b0418163fae079c9ba8f8445212de8568 .\" FIXME . Should this manual page describe the pivot_root mechanism? .\" .\" .\" -\fB注意\fP: ルートファイルシステムを変更するために \fI/proc/sys/kernel/real\-root\-dev\fP を使うのは以前の方法である。 -ルートファイルシステムを変更する新しい方法についての情報は、 Linux カーネルソースに含まれる -\fIDocumentation/initrd.txt\fP ファイルや、 \fBpivot_root\fP(2) や \fBpivot_root\fP(8) -を参照してほしい。 +\fBNote\fP: The use of \fI/proc/sys/kernel/real\-root\-dev\fP to change the root +filesystem is obsolete. See the Linux kernel source file +\fIDocumentation/admin\-guide/initrd.rst\fP (or \fIDocumentation/initrd.txt\fP +before Linux 4.10) as well as \fBpivot_root\fP(2) and \fBpivot_root\fP(8) for +information on the modern method of changing the root filesystem. .SS 使い方 \fBinitrd\fP が実装された主な目的は、システムインストール時に、モジュール化されたカー ネルの設定を可能にすることであった。 .PP @@ -192,15 +208,18 @@ ext2 ファイルシステムのみのサポートしたカーネル) をブー 実行ファイル \fI/linuxrc\fP は、ルートファイルシステムを作成し、配置する (この段階では、通常時ルー トファイルシステムは完全なシステムである必要はない)。 .IP 5. -実行ファイル \fI/linuxrc\fP は、 \fI/proc/sys/kernel/real\-root\-dev\fP を設定し、 \fI/proc\fP、 -マウントされている通常時ファイルシステム及びその他のファイルシステム をアンマウントし、 実行を終了する。 +The executable \fI/linuxrc\fP sets \fI/proc/sys/kernel/real\-root\-dev\fP, unmounts +\fI/proc\fP, the normal root filesystem and any other filesystems it has +mounted, and then terminates. .IP 6. 次に、カーネルは、通常時ルートファイルシステムをマウントする。 .IP 7. この段階で、ファイルシステムは全く変更が行われていない状態で、 アクセスできる状態になる。 また、ブートローダーをインストールすることができる。 .IP 8. -ブートローダーを設定し、システム起動時に使用されるカーネルモジュールのセッ トを含んだファイルシステムを \fI/dev/initrd\fP にロードする -(例えば、 \fI/dev/ram0\fP デバイスの内容を修正し、アンマウントする。最後に、 \fI/dev/ram0\fP のイメージをファイルに書き出す)。 +The boot loader is configured to load into \fI/dev/initrd\fP a filesystem with +the set of modules that was used to bring up the system. (e.g., device +\fI/dev/ram0\fP can be modified, then unmounted, and finally, the image is +written from \fI/dev/ram0\fP to a file.) .IP 9. これで、システムがブート可能になる。この後、さらにその他のインストール の作業を実行できる。 .PP @@ -256,13 +275,15 @@ ext2 ファイルシステムのみのサポートしたカーネル) をブー .\" The code for .\" .BR initrd .\" was added to the baseline Linux kernel in development version 1.3.73. -\fI/dev/initrd\fP の利用者は、上記の注意事項で述べた動作に依存しないようにすべきである。 これらの動作は Linux -カーネルの将来のバージョンでは変更される かもしれないからだ。 +Users of \fI/dev/initrd\fP should not depend on the behavior given in the above +notes. The behavior may change in future versions of the Linux kernel. .SH 関連項目 \fBchown\fP(1), \fBmknod\fP(1), \fBram\fP(4), \fBfreeramdisk\fP(8), \fBrdev\fP(8) - -Linux カーネルソースの \fIinitrd.txt\fP、 LILO のドキュメント、LOADLIN のドキュメント、SYSLINUX のドキュメント +.PP +.\" commit 9d85025b0418163fae079c9ba8f8445212de8568 +\fIDocumentation/admin\-guide/initrd.rst\fP (or \fIDocumentation/initrd.txt\fP +before Linux 4.10) in the Linux kernel source tree, the LILO documentation, +the LOADLIN documentation, the SYSLINUX documentation .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/intro.4 b/manual/LDP_man-pages/draft/man4/intro.4 index c77d1ef2..17ddd5f5 100644 --- a/manual/LDP_man-pages/draft/man4/intro.4 +++ b/manual/LDP_man-pages/draft/man4/intro.4 @@ -32,7 +32,7 @@ .\" Japanese Version Copyright (c) 1996,1997,1998 ISHIKAWA Mutsumi .\" all rights reserved. .\" -.TH INTRO 4 2007\-10\-23 Linux "Linux Programmer's Manual" +.TH INTRO 4 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 intro \- スペシャルファイルに関する序文 .SH 説明 @@ -43,8 +43,7 @@ intro \- スペシャルファイルに関する序文 .SS 著者と著作権 著者と著作権に関しては各マニュアルページのソースのヘッダーを参照すること。 これらはページごとに異なる可能性があることに注意してほしい。 .SH 関連項目 -\fBstandards\fP(7) +\fBmknod\fP(1), \fBmknod\fP(2), \fBstandards\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/lp.4 b/manual/LDP_man-pages/draft/man4/lp.4 index 8a8fa740..00097a3c 100644 --- a/manual/LDP_man-pages/draft/man4/lp.4 +++ b/manual/LDP_man-pages/draft/man4/lp.4 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (c) Michael Haardt (michael@cantor.informatik.rwth-aachen.de), .\" Sun Jan 15 19:16:33 1995 .\" @@ -37,36 +36,45 @@ .\" by ISHIKAWA Mutsumi .\" and TAKAHASHI Mutsuji .\" -.TH LP 4 1995\-01\-15 Linux "Linux Programmer's Manual" +.TH LP 4 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 lp \- ラインプリンターデバイス .SH 書式 \fB#include \fP .SH 設定 -\fBlp\fP[0\(en2] はパラレルプリンターのためのキャラクターデバイスでメジャー ナンバー 6 マイナーナンバー 0\(en2 -を持つ。マイナーナンバーは、ベース アドレス 0x03bc, 0x0378, 0x0278 のそれぞれのプリンターポートに対応する -通常、このデバイスファイルはモード 220 オーナー root グループ lp となっ -ている。プリンターポートはポーリング(polling)または割り込み (interrupts) のどちらを用いても利用できる。割り込みの利用は、高負荷が -予想される時、例えばレーザープリンターをプリンタポートに接続する場合な どに推奨される。普通のドットマトリクスプリンターでは、ポーリングの利用 -で通常は十分である。デフォルトではポーリングを利用する。 +\fBlp\fP[0\(en2] are character devices for the parallel line printers; they +have major number 6 and minor number 0\(en2. The minor numbers correspond +to the printer port base addresses 0x03bc, 0x0378, and 0x0278. Usually they +have mode 220 and are owned by user \fIroot\fP and group \fIlp\fP. You can use +printer ports either with polling or with interrupts. Interrupts are +recommended when high traffic is expected, for example, for laser printers. +For typical dot matrix printers, polling will usually be enough. The +default is polling. .SH 説明 次の \fBioctl\fP(2) コールがサポートされている。 .IP "\fBint ioctl(int \fP\fIfd\fP\fB, LPTIME, int \fP\fIarg\fP\fB)\fP" -プリンターのバッファー( buffer ) がいっぱいになった時、ドライバがプリンター を再チェックするまでに休止する時間を \fIarg\fP -とする。高速なプリンター の時はこれを減らし、遅いプリンターの時には増やす。単位は1秒の100分の1 -で、デフォルトの2は0.02秒にあたる。ポーリングドライバ( polling driver )のみに影響する。 +Sets the amount of time that the driver sleeps before rechecking the printer +when the printer's buffer appears to be filled to \fIarg\fP. If you have a +fast printer, decrease this number; if you have a slow printer, then +increase it. This is in hundredths of a second, the default 2 being 0.02 +seconds. It influences only the polling driver. .IP "\fBint ioctl(int \fP\fIfd\fP\fB, LPCHAR, int \fP\fIarg\fP\fB)\fP" -ポーリングドライバがプリンターの文字受取り準備ができるのを待 つビジーウエイト(busy\-wait)の回数の最大値を \fIarg\fPとする。 -もし印刷が遅すぎる時はこれを増やし、システムが遅くなりすぎる時には 減らす。デフォルトは 1000 である。ポーリングドライバのみに影響する。 +Sets the maximum number of busy\-wait iterations which the polling driver +does while waiting for the printer to get ready for receiving a character to +\fIarg\fP. If printing is too slow, increase this number; if the system gets +too slow, decrease this number. The default is 1000. It influences only +the polling driver. .IP "\fBint ioctl(int \fP\fIfd\fP\fB, LPABORT, int \fP\fIarg\fP\fB)\fP" もし、\fIarg\fP が 0 なら、プリンタードライバはエラーについて再試行 を行う。それ以外の場合は中止する。デフォルトは 0 である。 .IP "\fBint ioctl(int \fP\fIfd\fP\fB, LPABORTOPEN, int \fP\fIarg\fP\fB)\fP" もし、\fIarg\fP が 0 なら \fBopen\fP(2) の結果がエラーの場合、動作が中止される。それ以外ならエラーは無 視される。デフォルトではエラーは無視される。 .IP "\fBint ioctl(int \fP\fIfd\fP\fB, LPCAREFUL, int \fP\fIarg\fP\fB)\fP" -\fIarg\fPが0のときには、すべての書き出しの時に、紙切れ、オフライン、エ ラーのシグナルが偽(false)であることが必要とされるが、0 以外ならこれ -らのシグナルは無視される。デフォルトでもこれらのシグナルは無視される。 +If \fIarg\fP is 0, then the out\-of\-paper, offline, and error signals are +required to be false on all writes, otherwise they are ignored. The default +is to ignore them. .IP "\fBint ioctl(int \fP\fIfd\fP\fB, LPWAIT, int \fP\fIarg\fP\fB)\fP" +.\" FIXME . Actually, since Linux 2.2, the default is 1 プリンターが送られた文字を受け取るのを待つため、ドライバが文字を送っ てからストローブ(strobe)するまでの待ちの繰り返しの回数と、ストローブ を再びオフにするまでの待ちの繰り返しの回数を \fIarg\fPに設定 する。仕様によればこの時間は 0.5 マイクロ秒とするべきだが、経験によれば このコードによって生じる遅れで十分である。そのため、デフォルトでは 0 で ある。これは、ポーリングと割り込みドライバの両方で使われる。 @@ -85,7 +93,7 @@ LP_POUTPA 紙切れ信号、ハイがアクティブ LP_PSELECD 選択信号、ハイがアクティブ LP_PERRORP エラー信号、ローがアクティブ .TE -.sp +.IP 信号の意味については各自のプリンターのマニュアルを参照のこと。プリンター によっては記載のないビットもセットされるかもしれないので、注意のこと。 .IP "\fBint ioctl(int \fP\fIfd\fP\fB, LPRESET)\fP" プリンターをリセットする。引数はとらない。 @@ -97,10 +105,9 @@ LP_PERRORP エラー信号、ローがアクティブ .\" The interrupt code was written by Nigel Gamble. .\" Alan Cox modularized it. .\" LPCAREFUL, LPABORT, LPGETSTATUS were added by Chris Metcalf. -/dev/lp* +\fI/dev/lp*\fP .SH 関連項目 \fBchmod\fP(1), \fBchown\fP(1), \fBmknod\fP(1), \fBlpcntl\fP(8), \fBtunelp\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/mem.4 b/manual/LDP_man-pages/draft/man4/mem.4 deleted file mode 100644 index f210940a..00000000 --- a/manual/LDP_man-pages/draft/man4/mem.4 +++ /dev/null @@ -1,93 +0,0 @@ -.\" 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified Sat Jul 24 16:59:10 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996,1997,1998 ISHIKAWA Mutsumi -.\" all rights reserved. -.\" Translated Tue Feb 6 16:48:30 JST 1997 -.\" by ISHIKAWA Mutsumi -.\" -.TH MEM 4 2015\-01\-02 Linux "Linux Programmer's Manual" -.SH 名前 -mem, kmem, port \- システムメモリー(system memory)、カーネルメモリー (kernel -memory)、システムポート(sysmem ports) -.SH 説明 -\fBmem\fP はコンピュータのメインメモリーイメージのキャラクターデバイスファ イル(character device -file)である。このデバイスは、例えば、システムを 検査するため(また、パッチ(patch)をあてるため)に使われるだろう。 -.LP -\fBmem\fP のバイトアドレス(byte address)は 物理メモリーアドレスとして解釈される。 存在していない場所への参照はエラーが返される。 -.LP -読み込み専用(read\-only)あるいは書き込み専用(write\-only)のビットへの検 査あるいはパッチ当ては予期せぬ結果をもたらすことがある。 -.LP -Linux 2.6.26 以降では、 アーキテクチャーによっては、 カーネル設定オプション \fBCONFIG_STRICT_DEVMEM\fP -によりこのファイル経由でアクセスできる領域が制限される。 例えば、 x86 では、 RAM アクセスは許可されないが、メモリーマップ PCI -領域へのアクセスは許可される。 -.LP -典型的には次のようにして作られる。: -.RS -.sp -mknod \-m 660 /dev/mem c 1 1 -.br -chown root:kmem /dev/mem -.RE -.LP -\fBkmem\fP ファイルは \fBmem\fP と同じだが、 物理メモリーへのアクセスではなく、カーネル(kernel)の仮想 メモリー(virtual -memory)へのアクセスである点が異なる。 Linux 2.6.26 以降では、 このファイルが利用できるのは、 カーネル設定オプション -\fBCONFIG_DEVKMEM\fP が有効になっている場合だけである。 -.LP -典型的には次のようにして作られる。: -.RS -.sp -mknod \-m 640 /dev/kmem c 1 2 -.br -chown root:kmem /dev/kmem -.RE -.LP -\fBport\fP は \fBmem\fP に似ているが I/O ポート(I/O ports)へのアクセスが行われる。 -.LP -典型的には次のようにして作られる。: -.RS -.sp -mknod \-m 660 /dev/port c 1 4 -.br -chown root:kmem /dev/port -.RE -.SH ファイル -\fI/dev/mem\fP -.br -\fI/dev/kmem\fP -.br -\fI/dev/port\fP -.SH 関連項目 -\fBchown\fP(1), \fBmknod\fP(1), \fBioperm\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/mouse.4 b/manual/LDP_man-pages/draft/man4/mouse.4 index 999da6e8..3e61f310 100644 --- a/manual/LDP_man-pages/draft/man4/mouse.4 +++ b/manual/LDP_man-pages/draft/man4/mouse.4 @@ -1,4 +1,3 @@ -'\" t .\" This manpage is Copyright (C) 1996 Michael Haardt. .\" Updates Nov 1998, Andries Brouwer .\" @@ -36,7 +35,7 @@ .\" by ISHIKAWA Mutsumi .\" and TAKAHASHI Mutsuji .\" -.TH MOUSE 4 1996\-02\-10 Linux "Linux Programmer's Manual" +.TH MOUSE 4 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 mouse \- シリアルマウスインターフェース .SH 設定 @@ -45,6 +44,7 @@ mouse \- シリアルマウスインターフェース .SH 説明 .SS 概説 シリアルマウスで使われる普通の 9 ピンプラグのピン配列は以下である: +.PP .TS center; r c l. @@ -55,7 +55,7 @@ pin name used for 7 RTS +12 V, Imax = 10 mA 5 GND Ground .TE - +.PP これは仕様書であり、実際はほとんどのマウスでは 9 V で十分である。 .PP マウスドライバは RTS をロー(low)に落し、再び上げることによって、マウスを認識でき る。およそ 14 ms 後、マウスはデータライン上に @@ -65,6 +65,7 @@ pin name used for マウスの相対的な移動は、\fIdx\fP(正が右)と\fIdy\fP(正が下)として伝えられる。 各種のマウスは異なったスピードで操作できる。スピードを選択するには、 下の表の2文字を送ってから 0.1 秒待つことで、9600, 4800, 2400, 1200 bit/s を順に選べる。 以下の表では選択可能なスピードとそれを選択するための文字列を示している。 +.PP .TS center; l l. @@ -74,13 +75,14 @@ bit/s string 2400 *o 1200 *n .TE - -データパケットの第 1 バイトは同期をとるのに利用できる。 +.PP +The first byte of a data packet can be used for synchronization purposes. .SS "マイクロソフト プロトコル(Microsoft Protocol)" \fBマイクロソフト\fPプロトコルは、1200 bits/sec のスピードで、1 ス タートビット(1 start bit)、7 データビット(7 data bits)、パリティな し、1 ストップビット(1 stop bit)である。 データは RxD に 3 バイトのパケットとして送られる。\fIdx\fP と \fIdy\fP の動きは 2 の補数表示で送られ、左(右)のボタンが押された時には \fIlb\fP (\fIrb\fP)がセットされる。 +.PP .TS center; r c c c c c c c. @@ -101,6 +103,7 @@ byte d6 d5 d4 d3 d2 d1 d0 \fBマウスシステムズ\fPプロトコルは、1200 bits/secで、1 スタートビット、 8 データビット、パリティなし、2 ストップビットである。 データは、RxD に 5 バイトのパケットとして送られる。\fIdx\fP は 2 つの 2 の補数の和として送られ、\fIdy\fP は 2 つの 2 の補数の和の否定 として送られる。左(中、右)のボタンが押された時には\fIlb\fP (\fImb\fP, \fIrb\fP) がクリアされる。 +.PP .TS center; r c c c c c c c c. @@ -111,7 +114,7 @@ byte d7 d6 d5 d4 d3 d2 d1 d0 4 0 dxb6 dxb5 dxb4 dxb3 dxb2 dxb1 dxb0 5 0 dyb6 dyb5 dyb4 dyb3 dyb2 dyb1 dyb0 .TE - +.PP 第 4,5 バイトには、第 2,3 バイトが送られたあと生じた変更が記述される。 .SS "サン プロトコル(Sun protocol)" \fBサン\fP プロトコルは、上記の 5 バイト マウスシステムプロトコルの 3 バイト版です。後の 2 バイトは送られません。 @@ -119,6 +122,7 @@ byte d7 d6 d5 d4 d3 d2 d1 d0 \fBMM\fP プロトコルは 1200 bits/sec で 1 スタートビット、8 データビッ ト、奇数パリティ、 1 ストップビットを使う。データは RxD に 3 バイトのパ ケットとして送られる。\fIdx\fP と \fIdy\fP は一つの符号つきの値として 送られ、サインビットは負の値を表す。左(中、右)のボタンが押された時には \fIlb\fP (\fImb\fP, \fIrb\fP)がセットされる。 +.PP .TS center; r c c c c c c c c. @@ -130,10 +134,9 @@ byte d7 d6 d5 d4 d3 d2 d1 d0 .SH ファイル .TP \fI/dev/mouse\fP -一般的にマウスデバイスをさすのに使われるシンボリックリンク +A commonly used symbolic link pointing to a mouse device. .SH 関連項目 \fBttyS\fP(4), \fBgpm\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/msr.4 b/manual/LDP_man-pages/draft/man4/msr.4 index a94650fc..4b2f376a 100644 --- a/manual/LDP_man-pages/draft/man4/msr.4 +++ b/manual/LDP_man-pages/draft/man4/msr.4 @@ -40,20 +40,24 @@ msr \- x86 CPU MSR へアクセスするためのデバイス \fI/dev/cpu/CPUNUM/msr\fP は x86 CPU の モデル固有レジスター (model\-specific registers; MSRs) の読み書きインターフェースを提供する。 \fICPUNUM\fP はアクセスする CPU の番号で、 \fI/proc/cpuinfo\fP に表示される値である。 - +.PP レジスターアクセスは、 ファイルをオープンし、 MSR 番号分だけファイルのオフセットを変更し、 8 バイト単位での読み書きを行う形で行われる。 つまり、 8 バイトを超える I/O 転送は、同じレジスターに対する複数回の読み書きとなる。 - +.PP このファイルは保護されており、 \fIroot\fP ユーザー、もしくは \fIroot\fP グループのメンバだけが読み書きできる。 .SH 注意 \fImsr\fP ドライバは自動ではロードされない。 モジュールが有効になったカーネルでは、 以下のコマンドを使って、 使用する前に明示的にドライバをロードする必要があるだろう。 - - $ \fImodprobe msr\fP +.PP +.in +4n +.EX +$ modprobe msr +.EE +.in +.PP .SH 関連項目 Intel CPU MSR の概要については Intel Corporation Intel 64 and IA\-32 Architectures Software Developer's Manual Volume 3B Appendix B を参照。 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/null.4 b/manual/LDP_man-pages/draft/man4/null.4 deleted file mode 100644 index b894a767..00000000 --- a/manual/LDP_man-pages/draft/man4/null.4 +++ /dev/null @@ -1,66 +0,0 @@ -.\" 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified Sat Jul 24 17:00:12 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996,1997,1998 ISHIKAWA Mutsumi -.\" all rights reserved. -.\" Translated Tue Feb 6 16:42:51 JST 1997 -.\" by ISHIKAWA Mutsumi -.\" -.TH NULL 4 2009\-02\-23 Linux "Linux Programmer's Manual" -.SH 名前 -null, zero \- データの掃きだめ -.SH 説明 -\fBnull\fP または \fBzero\fP スペシャルファイル(special file)に 書かれたデータは捨てられる。 -.PP -\fBnull\fP スペシャルファイルを読むと常に end of file が返され (つまり、 \fBread\fP(2) は 0 を返す)、対照的 に -\fBzero\fP を読むと常にバイト数 0 (\e0 文字) が返される。 -.LP -\fBnull\fP と \fBzero\fP は一般的に次のようにして作られる: -.RS -.sp -mknod \-m 666 /dev/null c 1 3 -.br -mknod \-m 666 /dev/zero c 1 5 -.br -chown root:root /dev/null /dev/zero -.RE -.SH ファイル -\fI/dev/null\fP -.br -\fI/dev/zero\fP -.SH 注意 -これらのデバイスが全てのユーザーに対して読み書き可能でない場合、 多くのプログラムの動作がおかしくなるだろう。 -.SH 関連項目 -\fBchown\fP(1), \fBmknod\fP(1), \fBfull\fP(4) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/pts.4 b/manual/LDP_man-pages/draft/man4/pts.4 deleted file mode 100644 index 315131f6..00000000 --- a/manual/LDP_man-pages/draft/man4/pts.4 +++ /dev/null @@ -1,60 +0,0 @@ -.\" This man page was written by Jeremy Phelps . -.\" Notes added - aeb -.\" -.\" %%%LICENSE_START(FREELY_REDISTRIBUTABLE) -.\" Redistribute and revise at will. -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2003 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated Tue Jul 8 00:28:17 JST 2003 -.\" by Akihiro MOTOKI -.\" -.TH PTS 4 2002\-10\-09 Linux "Linux Programmer's Manual" -.SH 名前 -ptmx, pts \- 擬似端末のマスタとスレーブ -.SH 説明 -ファイル \fI/dev/ptmx\fP は、メジャーナンバー (major number) 5、 マイナーナンバー (minor number) 2 -を持つキャラクターファイルであり、 通常、モードは 0666 で、所有者.グループは root.root である。 このファイルは、擬似端末 -(pseudoterminal) のマスタとスレーブの ペアを作成するために使用される。 -.PP -プロセスが \fI/dev/ptmx\fP をオープンすると、そのプロセスには 擬似端末マスタ (pseudoterminal master; PTM) -へのファイル ディスクリプターが返され、 \fI/dev/pts\fP ディレクトリに擬似端末スレーブ (pseudoterminal slave; PTS) -デバイスが作成される。 \fI/dev/ptmx\fP をオープンして得られるファイルディスクリプターは それぞれ独立の PTM であり、対応する PTS -を各々持つ。 PTS のパス名は、PTM のファイルディスクリプターを \fBptsname\fP(3) に渡すと知ることができる。 -.PP -擬似端末スレーブをオープンする前に、必ず、マスタのファイルディスクリプターを 引き数として \fBgrantpt\fP(3) と -\fBunlockpt\fP(3) を呼び出さなければならない。 -.PP -擬似端末のマスタとスレーブの両方がオープンされた後は、スレーブは、 プロセスに対して、実端末 (real terminal) -と全く同じインターフェースを提供する。 -.PP -スレーブに書かれたデータはマスタディスクリプターに対する入力として扱われ、 マスタに書かれたデータはスレーブに対する入力として扱われる。 -.PP -実例をあげると、擬似端末は \fBxterm\fP(1) のような端末エミュレータを実装するのに使用されている。 -端末エミュレータでは、擬似端末のマスタから読み込まれたデータは、 アプリケーションにとって実端末のデータと全く同じもののように見える。 また、 -\fBsshd\fP(8) のようなリモートログイン用のプログラムの実装では、 擬似端末マスタから読み込まれたデータは、ネットワークを経由して、 -端末や端末エミュレータに接続されているクライアントプログラムに送信される。 -.PP -擬似端末は、 (\fBsu\fP(1) や \fBpasswd\fP(1) のような) 通常はパイプからの入力を拒否するプログラムに、 -入力を送信するためにも使用できる。 -.SH ファイル -\fI/dev/ptmx\fP, \fI/dev/pts/*\fP -.SH 注意 -(UNIX 98 pseudoterminal naming と呼ばれる) 上記の機能の Linux でのサポートは、通常 \fI/dev/pts\fP -にマウントされるはずの \fIdevpts\fP ファイルシステムを通して実現されている、 -.LP -この UNIX 98 スキームが導入される前は、マスタ擬似端末は \fI/dev/ptyp0\fP, ... 、スレーブ擬似端末は -\fI/dev/ttyp0\fP, ... と呼ばれており、あらかじめたくさんのデバイスノードを割り当てて おく必要があった。 -.SH 関連項目 -\fBgetpt\fP(3), \fBgrantpt\fP(3), \fBptsname\fP(3), \fBunlockpt\fP(3), \fBpty\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/ram.4 b/manual/LDP_man-pages/draft/man4/ram.4 index 5e3fd9a1..7917e6e8 100644 --- a/manual/LDP_man-pages/draft/man4/ram.4 +++ b/manual/LDP_man-pages/draft/man4/ram.4 @@ -42,19 +42,19 @@ ram \- RAM ディスクデバイス .SH 説明 \fIram\fP デバイスは RAM ディスクにローモード (raw mode) でアクセスするための ブロックデバイス (block device) である。 -.LP +.PP 典型的には次のようにして作られる。: -.RS -.sp +.PP +.in +4n +.EX mknod \-m 660 /dev/ram b 1 1 -.br chown root:disk /dev/ram -.RE +.EE +.in .SH ファイル -/dev/ram +\fI/dev/ram\fP .SH 関連項目 \fBchown\fP(1), \fBmknod\fP(1), \fBmount\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 39437c37..00000000 --- a/manual/LDP_man-pages/draft/man4/random.4 +++ /dev/null @@ -1,214 +0,0 @@ -.\" 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 , -.\" Matt Mackall -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 -.\" ISHIKAWA Mutsumi, all rights reserved. -.\" Translated into Japanese Mon Jan 12 03:20:27 JST 1998 -.\" by ISHIKAWA Mutsumi -.\" Japanese Version Last Modified Thu Feb 5 21:08:33 JST 1998 -.\" by ISHIKAWA Mutsumi -.\" Updated & Modified Sun Jun 6 14:48:03 JST 2004 -.\" by Yuichi SATO -.\" Updated & Modified Tue Jan 18 04:21:16 JST 2005 by Yuichi SATO -.\" Updated & Modified Fri Apr 22 03:44:01 JST 2005 by Yuichi SATO -.\" Updated 2008-08-13, Akihiro MOTOKI , LDP v3.05 -.\" Updated 2013-05-07, Akihiro MOTOKI -.\" -.TH RANDOM 4 2015\-02\-01 Linux "Linux Programmer's Manual" -.SH 名前 -random, urandom \- カーネル乱数ソースデバイス -.SH 書式 -#include -.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 からの読み出しは、 -更なる環境ノイズが得られるまで、ブロックされる。 \fBopen\fP(2) が \fI/dev/random\fP に対して \fBO_NONBLOCK\fP -フラグ付きで呼ばれると、 それ以降の \fBread\fP(2) は要求したバイト数のデータが利用可能になるまで停止しない。 その代わり、 -利用可能なデータが返される。 利用可能なバイトが全くない場合、 \fBread\fP(2) は \-1 を返し、 \fIerrno\fP に \fBEAGAIN\fP -が設定される。 -.LP -\fI/dev/urandom\fP デバイスから読み出しでは、 エントロピーがより高くなるのを待つためのブロックは行われない。 -十分なエントロピーがない場合、 要求されたバイトを作成するのに疑似乱数生成器が使用される。 その結果、 -この場合の返り値はこのドライバで使われているアルゴリズムに基づく暗号攻撃に対して、 論理的には弱くなることになる。 -この攻撃をどのように行うかという事については、現在研究論文などの 形で入手できる資料はない、しかし、そのような攻撃は論理的に存在可能である。 -もし、この事が心配なら、(\fI/dev/urandom\fP ではなく) \fI/dev/random\fP を利用すればいい。 \fBO_NONBLOCK\fP は -\fI/dev/urandom\fP をオープンする際には効果がない。 デバイス \fI/dev/urandom\fP に対して \fBread\fP(2) -を呼び出した際、 要求されたランダムバイトが生成されるまでシグナルは処理されない。 -.LP -\fI/dev/random\fP や \fI/dev/urandom\fP に書き込みを行うと、 書き込まれたデータでエントロピープールが更新される。 しかし、 -エントロピーカウントが増えるわけではない。 つまり、 \fI/dev/random\fP と \fI/dev/urandom\fP -の両方のファイルから読み出される内容に影響があるが、 \fI/dev/random\fP からの読み出しが早くなるわけではないということだ。 -.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) インターフェース" -以下の \fBioctl\fP(2) 要求が \fI/dev/random\fP や \fI/dev/urandom\fP -に接続されたファイルディスクリプターに対して定義されている。 実行されたすべての要求は、 \fI/dev/random\fP と -\fI/dev/urandom\fP に影響を与える入力エントロピープールとやり取りを行う。 \fBRNDGETENTCNT\fP 以外のすべての要求には -\fBCAP_SYS_ADMIN\fP ケーパビリティが必要である。 -.TP -\fBRNDGETENTCNT\fP -入力エントロピープールのカウントを取得する。 取得される内容は proc の \fIentropy_avail\fP ファイルと同じである。 -結果は引き数が指す整数 (int) に格納される。 -.TP -\fBRNDADDTOENTCNT\fP -入力エントロピープールのカウントを引き数が指す値だけ加算または減算する。 -.TP -\fBRNDGETPOOL\fP -Linux 2.6.9 で削除された。 -.TP -\fBRNDADDENTROPY\fP -入力プールに追加のエントロピーを追加し、エントロピーカウントを増やす。 この要求は \fI/dev/random\fP や \fI/dev/urandom\fP -への書き込みとは異なる。 \fI/dev/random\fP や \fI/dev/urandom\fP への書き込みでは、 何らかのデータが追加されるだけで、 -エントロピーカウントは増やされない。 以下の構造体が使用される。 -.IP -.nf - struct rand_pool_info { - int entropy_count; - int buf_size; - __u32 buf[0]; - }; -.fi -.IP -\fIentropy_count\fP はエントロピーカウントに加算 (または減算) する値である。 \fIbuf\fP は大きさが \fIbuf_size\fP -のバッファーで、この内容がエントロピープールに追加される。 -.TP -\fBRNDZAPENTCNT\fP, \fBRNDCLEARPOOL\fP -すべてのプールのエントロピーカウントを 0 にし、何らかのシステムデータ (現在の時刻など) をプールに追加する。 -.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 関連項目 -\fBgetrandom\fP(2), \fBmknod\fP(1) -.br -RFC\ 1750, "Randomness Recommendations for Security" -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/rtc.4 b/manual/LDP_man-pages/draft/man4/rtc.4 index f2a374ac..1fb5445d 100644 --- a/manual/LDP_man-pages/draft/man4/rtc.4 +++ b/manual/LDP_man-pages/draft/man4/rtc.4 @@ -38,24 +38,24 @@ .\" Translated 2006-07-12 by Yuichi SATO . LDP v2.29 .\" Updated & Modified 2007-01-08 by Yuichi SATO. LDP v2.43 .\" -.TH RTC 4 2010\-02\-25 Linux "Linux Programmer's Manual" +.TH RTC 4 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 rtc \- リアルタイムクロック .SH 書式 #include -.sp +.PP \fBint ioctl(\fP\fIfd\fP\fB, RTC_\fP\fIrequest\fP\fB, \fP\fIparam\fP\fB);\fP .SH 説明 これはリアルタイムクロック (RTC) のドライバのインターフェースである。 - +.PP 多くのコンピュータは、現在の「壁時計」時刻 ("wall clock" time) を記録する、 ハードウェアクロックを 1 個以上持っている。 これらは「リアルタイムクロック」(RTC) と呼ばれる。 これらの時計のうち 1 つは、通常は電池でバックアップして駆動されるので、 コンピュータのスイッチを切っても、時刻を保持できる。 多くの場合、RTC はアラームやその他の割り込みの機能を提供する。 - +.PP 全ての i386 PC と ACPI ベースのシステムには RTC がある。 この RTC は、元々の PC/AT に存在した Motorola MC146818 チップと互換性がある。 このような RTC は、今日ではマザーボードの チップセット (サウスブリッジ) 内で実装されていることが多く、 交換可能な硬貨くらいの大きさのバックアップ電池を使っている。 - +.PP システムオンチップ (system\-on\-chip) プロセッサを使って作られた 組み込みシステムといった、PC 以外のシステムでは、別な実装を用いている。 このようなシステムでは、PC/AT の RTC と同じ機能を提供していない場合が多い。 .SS "RTC とシステムクロックの違い" @@ -63,15 +63,16 @@ RTC をシステムクロックと混同すべきではない。 システムク ファイルによるタイムスタンプ設定などとともに、 \fBgettimeofday\fP(2) や \fBtime\fP(2) を実装するのに使用されている。 システムクロックは、POSIX における紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC)) からの秒とミリ秒を表す。 1 つの一般的な実装ではタイマー割り込みを、"jiffy" 毎に 1 回、 100, 250, 1000 Hz という周波数でカウントする。 - +.PP RTC とシステムクロックの重要な違いは、 RTC はシステムが低電力状態 (「オフ」の場合も含む) でも動作するのに対し、 システムクロックは動作しない点である。 システムクロックは、初期化が行われるまでは、 POSIX 紀元からではなくシステムのブート時からの時刻しか返せない。 そのため、ブート時やシステムの低電力状態からの復帰 (resume) 後には、 システムクロックは RTC を使って現在の壁時計時刻に設定される場合が多い。 RTC を持たないシステムでは、 他の時計を使ってシステムクロックを設定する必要があり、 ネットワークにアクセスしたり、(時刻) データを手動で入力したりするだろう。 .SS "RTC の機能" -RTC は \fBhwclock\fP(8) または下記の ioctl リクエストで読み書きができる。 - +RTCs can be read and written with \fBhwclock\fP(8), or directly with the +\fBioctl\fP(2) requests listed below. +.PP 日付と時間をカウントするのに加えて、 多くの RTC は以下のように割り込みを発生できる。 .IP * 3 クロックの更新毎 (つまり 1 秒毎)。 @@ -84,7 +85,7 @@ RTC は \fBhwclock\fP(8) または下記の ioctl リクエストで読み書 このイベントは、RAM へのサスペンド (STR, ACPI システムで S3 と呼ばれる) や ハイバーネーション (ACPI システムで S4 と呼ばれる) といった低電力状態や、 「オフ」(ACPI システムで S5 と呼ばれる) からでも、システムを復帰できる。 電池でバックアップされた RTC が割り込みを発生できるシステムと、 できないシステムがある。 - +.PP \fI/dev/rtc\fP (または \fI/dev/rtc0\fP, \fI/dev/rtc1\fP などの) デバイスは (クローズされるまで) 1 回しかオープンすることができず、 読み込み専用である。 \fBread\fP(2) と \fBselect\fP(2) を呼び出したプロセスは、 RTC からの割り込みを受け取るまで停止 (block) される。 割り込みの後、プロセスは long 型整数を読み出すことができる。 @@ -97,7 +98,7 @@ RTC が割り込みを発生できるシステムと、 できないシステム RTC の時刻を以下の構造体で返す: .IP .in +4n -.nf +.EX struct rtc_time { int tm_sec; int tm_min; @@ -109,7 +110,7 @@ struct rtc_time { int tm_yday; /* 未使用 */ int tm_isdst; /* 未使用 */ }; -.fi +.EE .in .IP この構造体のフィールドは \fBgmtime\fP(3) で説明されている \fItm\fP 構造体のフィールドと同じ意味で同じ範囲である。 @@ -146,12 +147,16 @@ struct rtc_time { \fI/proc/sys/dev/rtc/max\-user\-freq\fP に周期が上記の値に指定されている場合に、 周期的な割り込みを有効にできる。 .TP \fBRTC_EPOCH_READ\fP, \fBRTC_EPOCH_SET\fP -多くの RTC は年を 8 ビットのレジスターにコード化する。 年は 8 ビットのバイナリ数または BCD 数に変換される。 -どちらの場合でも、その数値は RTC の紀元から相対値に変換される。 多くのシステムでは RTC の紀元は 1900 に初期化されるが、 Alpha と -MIPS では、RTC レジスターの年の値に応じて、 1952, 1980, 2000 の何れかに初期化される。 これらの操作でそれぞれ RTC -の紀元の読み込みと設定が可能な RTC もある。 \fBioctl\fP(2) の第 3 引き数は、それぞれ \fIunsigned long\ *\fP と -\fIunsigned long\fP である。 返される値 (または指定される値) は紀元である。 RTC の紀元を設定する場合、プロセスは特権 (つまり -\fBCAP_SYS_TIME\fP ケーパビリティ) を持たなければならない。 +Many RTCs encode the year in an 8\-bit register which is either interpreted +as an 8\-bit binary number or as a BCD number. In both cases, the number is +interpreted relative to this RTC's Epoch. The RTC's Epoch is initialized to +1900 on most systems but on Alpha and MIPS it might also be initialized to +1952, 1980, or 2000, depending on the value of an RTC register for the +year. With some RTCs, these operations can be used to read or to set the +RTC's Epoch, respectively. The third \fBioctl\fP(2) argument is an \fIunsigned +long\ *\fP or an \fIunsigned long\fP, respectively, and the value returned (or +assigned) is the Epoch. To set the RTC's Epoch the process must be +privileged (i.e., have the \fBCAP_SYS_TIME\fP capability). .TP \fBRTC_WKALM_RD\fP, \fBRTC_WKALM_SET\fP RTC の中にはより強力なアラームインターフェースをサポートするものもあり、 これらの ioctl を使うことで、以下のような構造体で RTC @@ -159,13 +164,13 @@ RTC の中にはより強力なアラームインターフェースをサポー .PP .RS .in +4n -.nf +.EX struct rtc_wkalrm { unsigned char enabled; unsigned char pending; struct rtc_time time; }; -.fi +.EE .in .RE .IP @@ -176,30 +181,32 @@ struct rtc_wkalrm { \fItm_mon\fP, \fItm_year\fP フィールドも有効であるという点が異なる。 この構造体へのポインターを \fBioctl\fP(2) の第 3 引き数として渡さなければならない。 .SH ファイル -\fI/dev/rtc\fP, \fI/dev/rtc0\fP, \fI/dev/rtc1\fP など: RTC 特殊キャラクターデバイスファイル - -\fI/proc/driver/rtc\fP: (1 つ目の) RTC の状態 +.TP +\fI/dev/rtc\fP, \fI/dev/rtc0\fP, \fI/dev/rtc1\fP, etc. +RTC special character device files. +.TP +\fI/proc/driver/rtc\fP +status of the (first) RTC. .SH 注意 カーネルのシステムクロックを \fBadjtimex\fP(2) を使って外部参照で同期させる場合、 \fBadjtimex\fP(2) は指定された RTC を 11 分毎に定期的に更新する。 これを行うためカーネルは周期的な割り込みを短期間無効にする必要がある。 これは RTC を使うプログラムに影響を与える。 - +.PP RTC の紀元は、システムクロックでのみ使用される POSIX の紀元とは何の関係もない。 - +.PP RTC の紀元と年のレジスターに基づく年が 1970 未満である場合、 100 年後、つまり 2000 から 2069 であると仮定される。 - +.PP RTC の中にはアラームフィールドに 「ワイルドカード」の値をサポートするものもあり、 毎時 15 分や各月の初日など、定期的なアラームを行うシナリオをサポートする。 このような使い方は移植性がない。 移植性の高いユーザー空間コードでは、単独のアラーム割り込みだけを想定し、 割り込みの受信後にアラームを無効または再初期化すべきである。 - +.PP 以下の機能をサポートする RTC もある。 1 秒の分数ではなく、1 秒の倍数を周期とする周期的な割り込み。 複数のアラーム。 プログラム可能な出力クロックシグナル。 不揮発性 (nonvolatile) メモリー。 この API で現在提供していない、その他のハードウェア機能。 .SH 関連項目 \fBdate\fP(1), \fBadjtimex\fP(2), \fBgettimeofday\fP(2), \fBsettimeofday\fP(2), \fBstime\fP(2), \fBtime\fP(2), \fBgmtime\fP(3), \fBtime\fP(7), \fBhwclock\fP(8) - +.PP Linux カーネルソース内の \fIDocumentation/rtc.txt\fP .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/sd.4 b/manual/LDP_man-pages/draft/man4/sd.4 deleted file mode 100644 index 1eb52404..00000000 --- a/manual/LDP_man-pages/draft/man4/sd.4 +++ /dev/null @@ -1,109 +0,0 @@ -.\" sd.4 -.\" Copyright 1992 Rickard E. Faith (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 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996,1997 ISHIKAWA Mutsumi -.\" all rights reserved. -.\" Translated 1997-02-06, ISHIKAWA Mutsumi -.\" Updated 2005-11-19, Akihiro MOTOKI -.\" -.TH SD 4 2012\-05\-03 Linux "Linux Programmer's Manual" -.SH 名前 -sd \- SCSI ディスクドライブのためのドライバ -.SH 書式 -.nf -\fB#include \fP/* for HDIO_GETGEO */ -\fB#include \fP/* for BLKGETSIZE and BLKRRPART */ -.fi -.SH 設定 -このブロックデバイス (block device) の名前は、次のような形式をとる: \fBsd\fP\fIlp,\fP このうち、 \fIl\fP -は物理ドライブを意味する文字であり、 \fIp\fP はその物理ドライブ上のパーティション (partition) を意味する数字である。 -パーティションナンバー \fIp\fP がない場合は、そのデバイスファイルはドライブ全体をさす。 - -SCSI ディスクはメジャーナンバー 8 を持ち、次のような形式のマイナーナンバー を持つ。(16 * \fIdrive_number\fP) + -\fIpartition_number\fP、 この \fIdrive_number\fP は検出された物理ドライブの番号であり、 -\fIpartition_number\fP は次のようになる: -.sp -パーティション 0 はドライブ全体 -.br -パーティション 1 〜 4 は DOS の "基本 (primary)" パーティション -.br -パーティション 5 〜 8 は DOS の "拡張 (extended)" (または、"論理 (logical)") パーティション。 - -例えば、 \fI/dev/sda\fP はメジャーナンバー 8 マイナーナンバー 0 を持ち、システムの最初の SCSI ドライブ全体を参照する。そして、 -\fI/dev/sdb3\fP はメジャーナンバー 8 マイナーナンバー 19 を持ち、システムの二つ目の SCSI ドライブの三番目の DOS "基本" -パーティションを参照する。 - -現在は、ブロックデバイスだけが提供されている。ローデバイス (raw device) はまだ実装されていない。 -.SH 説明 -次の \fIioctl\fP が提供されている: -.TP -\fBHDIO_GETGEO\fP -.RS -次のような構造体を用いて BIOS のディスクパラメーターを返す: -.in +4n -.nf - -struct hd_geometry { - unsigned char heads; - unsigned char sectors; - unsigned short cylinders; - unsigned long start; -}; -.fi -.in - -この構造体へのポインターが \fBioctl\fP(2) へのパラメーターとして渡される。 - -このパラメーターに入れられて返される情報は、 \fIDOS によって理解されるような\fP ドライブのジオメトリである。 -このジオメトリは、ドライブの物理的なジオメトリ \fIではない。\fP この情報はドライブのパーティションテーブルを作成する時に用いられる、 また、 -\fBfdisk\fP(1), \fBefdisk\fP(1), \fBlilo\fP(1) の適切な操作に必要である。 -もし、ジオメトリの情報が得られなければ、それぞれの値全てにゼロが入れ られて返される。 -.RE -.TP -\fBBLKGETSIZE\fP -セクタの数で表したデバイスのサイズが返される。 \fBioctl\fP(2) のパラメーターは、 \fIlong\fP へのポインターでなければならない。 -.TP -\fBBLKRRPART\fP -強制的に、SCSI ディスクのパーティションテーブルの再読み込みを行う。 パラメーターは必要ない。 - -SCSI の \fBioctl\fP(2) 操作も同様にサポートされる。 \fBioctl\fP(2) の -パラメーターが必要で、そのパラメーターが NULL の場合は、 -\fBioctl\fP(2) はエラー \fBEINVAL\fP で失敗する。 -.SH ファイル -/dev/sd[a\-h]: ドライブ全体 -.br -.\".SH "SEE ALSO" -.\".BR scsi (4) -/dev/sd[a\-h][0\-8]: 個々のブロックパーティション -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/sk98lin.4 b/manual/LDP_man-pages/draft/man4/sk98lin.4 deleted file mode 100644 index 36f83534..00000000 --- a/manual/LDP_man-pages/draft/man4/sk98lin.4 +++ /dev/null @@ -1,323 +0,0 @@ -.\" (C)Copyright 1999-2003 Marvell(R) -- linux@syskonnect.de -.\" sk98lin.4 1.1 2003/12/17 10:03:18 -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" This manpage can be viewed using `groff -Tascii -man sk98lin.4 | less` -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated 2004-10-09, Yuichi SATO -.\" Modified 2007-06-05, Akihiro MOTOKI , LDP v2.51 -.\" -.TH SK98LIN 4 2012\-08\-05 Linux "Linux Programmer's Manual" -.SH 名前 -sk98lin \- Marvell/SysKonnect ギガビットイーサネットドライバ v6.21 -.SH 書式 -\fBinsmod sk98lin.o\fP [\fBSpeed_A=\fP\fIi,j,...\fP] [\fBSpeed_B=\fP\fIi,j,...\fP] -[\fBAutoNeg_A=\fP\fIi,j,...\fP] [\fBAutoNeg_B=\fP\fIi,j,...\fP] [\fBDupCap_A=\fP\fIi,j,...\fP] -[\fBDupCap_B=\fP\fIi,j,...\fP] [\fBFlowCtrl_A=\fP\fIi,j,...\fP] -[\fBFlowCtrl_B=\fP\fIi,j,...\fP] [\fBRole_A=\fP\fIi,j,...\fP] [\fBRole_B=\fP\fIi,j,...\fP] -[\fBConType=\fP\fIi,j,...\fP] [\fBModeration=\fP\fIi,j,...\fP] -[\fBIntsPerSec=\fP\fIi,j,...\fP] [\fBPrefPort=\fP\fIi,j,...\fP] [\fBRlmtMode=\fP\fIi,j,...\fP] -.SH 説明 -.ad l -.hy 0 -\fB注意\fP: この時代遅れのドライバはカーネル 2.6.26 で削除された。 - -\fBsk98lin\fP は Marvell と SysKonnect のネットワークアダプターカードの ギガビットイーサネットドライバである。 これは -SysKonnect SK\-98xx/SK\-95xx 互換のギガビットイーサネットアダプターと Yukon 互換のチップセットをサポートしている。 - -insmod を使ってドライバをロードする際、 ネットワークアダプターカードのパラメーターを コンマで区切られたコマンドの列として指定することができる。 -2 つのネットワークアダプターが取り付けられている時に、 例えば、1 つ目のアダプターのポート A の自動ネゴシエーションは ON にするが、 2 -つ目のアダプターのポート A は OFF にする場合は、 以下のように入力すればよい: - - insmod sk98lin.o AutoNeg_A=On,Off - -\fBsk98lin\fP が 1 つ以上のアダプターカードに関連づけられていて、 かつ \fI/proc\fP -ファイルシステムがシステムにマウントされている場合、 取り付けられているネットワークアダプターカードの全てのポートについて、 (ポート単位に) -専用の統計ファイルがフォルダ \fI/proc/net/sk98lin\fP に作られる。 これらのファイルは \fIeth[x]\fP という名前であり、 -\fIx\fP はインターフェースの番号である。 この番号はシステムによってポート毎に割り当てられたものである。 - -ロードが完了すると、 \fBifconfig\fP(8) コマンドを使って、各 \fIeth[x]\fP インターフェースに希望する IP -アドレスを割り当てることができる。 これによりアダプターがイーサネットに接続され、 コンソールに状態メッセージが表示される。 このメッセージでは、 -"ethx: network connection up using port y" の後に 設定されたり検出された接続パラメーターが表示される。 - -\fBsk98lin\fP はラージフレーム (ジャンボフレームとも呼ばれる) もサポートする。 ジャンボフレームを使うと、大量のデータを転送する際に、 -スループットを大幅に向上させることができる。 ラージフレームを有効にするには、 インターフェースの MTU (maximum transfer -unit, 最大転送単位) サイズを 大きな値に設定すればよい。 デフォルトの MTU サイズは 1500 であり、 最大で 9000 (バイト) -まで設定することができる。 MTU サイズを設定するのは、 インターフェースに IP アドレスを割り当てるときにもできるし、後から -\fBifconfig\fP(8) コマンドに mtu 引き数を指定することで設定することもできる。 例えば、eth0 に IP アドレスとラージフレーム -MTU サイズを 割り当てたい場合、以下の 2 つのコマンドを実行すればよい: - - ifconfig eth0 10.1.1.1 - ifconfig eth0 mtu 9000 - -これらの 2 つのコマンドは 1 つにまとめることもできる: - - ifconfig eth0 10.1.1.1 mtu 9000 - -ラージフレームを使用できるのは、ネットワーク環境全体で ラージフレームの使用が認められている場合のみである点に注意すること。 -つまり、イーサネットで使われている全てのスイッチでも ラージフレームがサポートされていなければならない。 -多くのスイッチがラージフレームをサポートしてはいるが、 設定を行う必要がある。 多くの場合、デフォルトの設定では標準フレーム (1500 バイトの -MTU サイズ) だけしかサポートしない。 ネットワーク内のスイッチに加え、 使用される全てのネットワークアダプターでも -ジャンボフレームが有効になっていなければならない。 アダプターがラージフレームを受け取るように設定されていない場合、 -アダプターはそのフレームを単純に捨ててしまう。 - -標準のイーサネットフレームサイズに戻すのは、再び \fBifconfig\fP(8) コマンドを使えばよい: - - ifconfig eth0 mtu 1500 - -Linux の Marvell/SysKonnect ギガビットイーサネットドライバは、 IEEE 規格 802.1, 802.1q, 802.3ad -に準拠する VLAN と Link Aggregation に対応している。 これらの機能は、インターネットにあるオープンソースモジュールを -インストールした後でのみ利用可能である: - -\fIVLAN\fP: -.UR http://www.candelatech.com\:/~greear\:/vlan.html -.UE -.br -\fILink\fP \fIAggregation\fP: -.UR http://www.st.rim.or.jp\:/~yumo -.UE - -.br -Marvell/SysKonnect は、これらのオープンソースモジュールに対するサポートは -行っておらず、これらを使った場合に生じるいかなる失敗や問題についても 責任を負わない点に注意すること。 -.SS パラメーター -.TP -\fBSpeed_A=\fP\fIi,j,...\fP -このパラメーターはアダプターカードのポート A がサポートするリンク速度を 設定するのに使われる。これは Yukon copper -アダプターでのみ有効である。 使用可能な値は以下の通り: \fI10\fP, \fI100\fP, \fI1000\fP, \fIAuto\fP。 デフォルトは \fIAuto\fP -である。 通常、リンク速度はリンクの確立時に 2 つのポートの間で自動設定される。 これに失敗した場合、ポートはこの引き数で指定された設定になる。 -.TP -\fBSpeed_B=\fP\fIi,j,...\fP -このパラメーターはアダプターカードのポート B がサポートするリンク速度を 設定するのに使われる。これは Yukon copper -アダプターでのみ有効である。 使用可能な値は以下の通り: \fI10\fP, \fI100\fP, \fI1000\fP, \fIAuto\fP。 デフォルトは \fIAuto\fP -である。 通常、リンク速度はリンクの確立時に 2 つのポートの間で自動設定される。 これに失敗した場合、ポートはこの引き数で指定された設定になる。 -.TP -\fBAutoNeg_A=\fP\fIi,j,...\fP -アダプターカードのポート A の自動設定 (autonegotiation) の使用を 有効または無効にする。使用可能な値は以下の通り: \fIOn\fP, -\fIOff\fP, \fISense\fP。 デフォルトは \fIOn\fP である。 \fISense\fP モードはリンクパートナが自動設定をサポートしているか否かを -自動的に検知する。 -.TP -\fBAutoNeg_B=\fP\fIi,j,...\fP -アダプターカードのポート B の自動設定 (autonegotiation) の使用を 有効または無効にする。使用可能な値は以下の通り: \fIOn\fP, -\fIOff\fP, \fISense\fP。 デフォルトは \fIOn\fP である。 \fISense\fP モードはリンクパートナが自動設定をサポートしているか否かを -自動的に検知する。 -.TP -\fBDupCap_A=\fP\fIi,j,...\fP -この引き数はアダプターカードのポート A で使う二重通信 (duplex) モードを示す。 使用可能な値は以下の通り: \fIHalf\fP, -\fIFull\fP, \fIBoth\fP。 デフォルトは \fIBoth\fP である。 この引き数はポート A の AutoNeg_A が \fISense\fP -に設定されていない場合にのみ有効である。 AutoNeg_A が \fIOn\fP の場合、DupCap_A の 3 つの値 (\fIHalf\fP, -\fIFull\fP, \fIBoth\fP) のうちどれでも指定することができる。 AutoNeg_A が \fIOff\fP の場合、DupCap_A の値 -\fIFull\fP と \fIHalf\fP のみを指定することができる。 この DupCap_A 引き数は、リンクパートナが全ての二重通信の組み合わせを -サポートしていない場合に役に立つ。 -.TP -\fBDupCap_B=\fP\fIi,j,...\fP -この引き数はアダプターカードのポート B で使う二重通信モードを示す。 使用可能な値は以下の通り: \fIHalf\fP, \fIFull\fP, \fIBoth\fP。 -デフォルトは \fIBoth\fP である。 この引き数はポート B の AutoNeg_B が \fISense\fP に設定されていない場合にのみ有効である。 -AutoNeg_B が \fIOn\fP の場合、DupCap_B の 3 つの値 (\fIHalf\fP, \fIFull\fP, \fIBoth\fP) -のうちどれでも指定することができる。 AutoNeg_B が \fIOff\fP の場合、DupCap_B の値 \fIFull\fP と \fIHalf\fP -のみを指定することができる。 この DupCap_B 引き数は、リンクパートナが全ての二重通信の組み合わせを サポートしていない場合に役に立つ。 -.TP -\fBFlowCtrl_A=\fP\fIi,j,...\fP -この引き数は自動設定時にポートが対向に伝える フロー制御機能を設定する。 使用可能な値は以下の通り: \fISym\fP, \fISymOrRem\fP, -\fILocSend\fP, \fINone\fP。 デフォルトは \fISymOrRem\fP である。 それぞれのモードには以下のような意味がある: - -.br -\fISym\fP -= Symmetric - リンクパートナの双方が PAUSE フレームを送ることができる。 -.br -\fISymOrRem\fP -= SymmetricOrRemote - リンクパートナの双方またはリモートパートナのみが -PAUSE フレームを送ることができる。 -.br -\fILocSend\fP -= LocalSend - ローカルリンクパートナのみが PAUSE フレームを送ることができる。 -.br -\fINone\fP -= None - リンクパートナのどちらも PAUSE フレームを送ることはできない。 - -このパラメーターは AutoNeg_A が \fIOff\fP の場合には無視される点に注意すること。 -.TP -\fBFlowCtrl_B=\fP\fIi,j,...\fP -この引き数は自動設定時にポートが対向に伝える フロー制御機能を設定する。 使用可能な値は以下の通り: \fISym\fP, \fISymOrRem\fP, -\fILocSend\fP, \fINone\fP。 デフォルトは \fISymOrRem\fP である。 それぞれのモードには以下のような意味がある: - -\fISym\fP -= Symmetric - リンクパートナの双方が PAUSE フレームを送ることができる。 -.br -\fISymOrRem\fP -= SymmetricOrRemote - リンクパートナの双方またはリモートパートナのみが -PAUSE フレームを送ることができる。 -.br -\fILocSend\fP -= LocalSend - ローカルリンクパートナのみが PAUSE フレームを送ることができる。 -.br -\fINone\fP -= None - リンクパートナのどちらも PAUSE フレームを送ることはできない。 -.br - -このパラメーターは AutoNeg_B が \fIOff\fP の場合には無視される点に注意すること。 -.TP -\fBRole_A=\fP\fIi,j,...\fP -この引き数は 1000Base\-T アダプターカードでのみ有効である。 2 つの 1000Base\-T ポートが通信する場合、 片方が -(タイミング情報を提供する) マスタの役割をしなければならず、 もう片方がスレーブにならなければならない。 使用可能な値は以下の通り: \fIAuto\fP, -\fIMaster\fP, \fISlave\fP。 デフォルトは \fIAuto\fP である。 通常、ポートの役割は 2 -つのポートでリンクを確立するときに自動設定される。 自動設定に失敗した場合、 アダプターカードのポート A はこの引き数で指定された設定になる。 -.TP -\fBRole_B=\fP\fIi,j,...\fP -この引き数は 1000Base\-T アダプターカードでのみ有効である。 2 つの 1000Base\-T ポートが通信する場合、 片方が -(タイミング情報を提供する) マスタの役割をしなければならず、 もう片方がスレーブにならなければならない。 使用可能な値は以下の通り: \fIAuto\fP, -\fIMaster\fP, \fISlave\fP。 デフォルトは \fIAuto\fP である。 通常、ポートの役割は 2 -つのポートでリンクを確立するときに自動設定される。 自動設定に失敗した場合、 アダプターカードのポート B はこの引き数で指定された設定になる。 -.TP -\fBConType=\fP\fIi,j,...\fP -この引き数は、ポート毎に指定する、全部で 5 個の引き数の組み合わせを、 1 つの引き数にしたものである。 これによりアダプターカードの 2 -つのポートの設定を簡略化できる。 この変数のそれぞれの値は、 ポート引き数の最も意味のある組み合わせを反映したものである。 -使用可能な値とそれに対応するポート毎のパラメーターの組み合わせは、 以下の通り: - -.nf -ConType | DupCap AutoNeg FlowCtrl Role Speed -\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- -\fIAuto\fP | Both On SymOrRem Auto Auto -.br -\fI100FD\fP | Full Off None Auto 100 -.br -\fI100HD\fP | Half Off None Auto 100 -.br -\fI10FD\fP | Full Off None Auto 10 -.br -\fI10HD\fP | Half Off None Auto 10 - -.fi -その他のポート引き数を \fIConType\fP 引き数と組み合わせて指定すると、それらの設定を結合した設定となる。 これは、ポート毎の引き数 (例えば -\fISpeed_A\fP) の方が組み合わせ変数 \fIConType\fP より優先順位が高いためである。 -.TP -\fBModeration=\fP\fIi,j,...\fP -割り込み調停 (interrupt moderation) は、ドライバが処理を開始しなければ ならない割り込み回数の最大値を設定するために使用される。 -つまり、ドライバが処理を行うまで、1回以上の割り込み (送信または受信パケットが処理されること) がキューに入れられる。 -キューに入れられた割り込みがいつ処理されるかは、 以下で説明する \fIIntsPerSec\fP 引き数で決定される。 使用可能な調停モードは以下の通り: -\fINone\fP, \fIStatic\fP, \fIDynamic\fP。 デフォルトは \fINone\fP である。 それぞれのモードは以下の意味を持つ: - -\fINone\fP アダプターカードに対して割り込み調停を適用しない。 よって送信または受信割り込みは、 -アダプターカードの割り込み線に現れると直ぐに処理される。 - -.br -\fIStatic\fP アダプターカードに対して割り込み調停が適用される。 全ての送信または受信割り込みは、調停間隔が完全に終わるまで キューに入れられる。 -この調停間隔が終わると、キューに入れられた全ての割り込みは、 1個の大きな塊として遅延なく処理される。 \fIStatic\fP -という用語は、あるインターフェースに現在どれだけの ネットワーク負荷がかかっているかに関わらず、 割り込み調停が常に有効になることを表している。 -さらに、調停間隔の時間は固定で、ドライバが動作している間は変化しない。 - -.br -\fIDynamic\fP システムの負荷に応じて、アダプターカードに対して割り込み調停が適用される。 ドライバがシステムの負荷が高すぎると検出した場合、 -割り込み調停を有効にすることにより、 過剰なネットワーク負荷からシステムを保護しようとする。 \(emその後に\(emCPU 利用率が再び下がった場合 -(またはネットワーク負荷が極わずかになった場合)、 割り込み調停は自動的に無効にされる。 - -ドライバが扱わなければならないインターフェースのうち ネットワーク負荷が高いものが 1 つ以上あり、 \(emその結果\(emCPU -利用率が高くなっている場合、 割り込み調停を使うべきである。 ネットワーク負荷が高い状況で調停が適用されると、 遅いコンピュータでは CPU 負荷が -20\-30% 削減されるだろう。 - -割り込み調停を使うことの欠点として、 往復遅延時間 (round\-trip\-time, RTT) の増加がある点に注意すること。 -これは、割り込みがキューに入れられ、まとめて処理されるためである。 -.TP -\fBIntsPerSec=\fP\fIi,j,...\fP -この引き数は割り込み調停の間隔を決定する。 静的 (static) 割り込み調停が使われている場合、 \fIIntsPerSec\fP 引き数の値が 2000 -であれば、割り込み調停の間隔は 500 ミリ秒になる。 この引き数に設定可能な値は 30...40000 の範囲で、 これは 1 -秒毎の割り込み回数である。 デフォルト値は 2000 である。 - -この引き数は静的 (static) または動的 (dynamic) 割り込み調停が 有効になっているときにのみ使用される。 -この引き数は割り込み調停が適用されていない場合には無視される。 - -調停間隔の期間は注意して選ぶこと。 一見したところでは、とても長い期間 (例えば 1 秒間に 100 回だけの割り込み) を -選ぶことに意味があるように見えるかもしれないが、そうすると パケット処理の遅延が激しく増加する。 -一方で、とても短い調停時間を選ぶと、割り込み調停を使う意味がなくなってしまう。 -.TP -\fBPrefPort=\fP\fIi,j,...\fP -この引き数は (2 ポートのネットワークアダプターで) 優先 (preferred) ポートを A または B -のどちらにするかを指定するのに使われる。 優先ポートとは、A と B の両方のポートが完全に機能していると検知された場合に 使用されるポートである。 -使用可能な値は以下の通り: \fIA\fP または \fIB\fP。 デフォルトは \fIA\fP である。 -.TP -\fBRlmtMode=\fP\fIi,j,...\fP -RLMT はポートの状態を監視する。 アクティブなポートのリンクが落ちた場合、 RLMT は即時に待機しているリンクに切り替える。 少なくとも 1 -つの「物理的」リンクが起動するまでは、仮想リンクが維持される。 この引き数は RLMT が両方のポートをどのように監視するかを決める。 -使用可能な値は以下の通り: \fICheckLinkState\fP, \fICheckLocalPort\fP, \fICheckSeg\fP, \fIDualNet\fP。 -デフォルトは \fICheckLinkState\fP である。 各モードは以下のような意味を持つ。 - -\fICheckLinkState\fP リンク状態のチェックのみ: RLMT は、各ポートについてアダプターハードウェアが報告するリンク状態を使い、 -そのポートが全てのネットワークトラフィックを送受信するのに使用可能かを 決定する。 - -.br -\fICheckLocalPort\fP このモードでは、RLMT はアダプターカードの 2 つのポートの間で 定期的にパケットを交換することにより、 2 -つのポートの間のネットワーク経路を監視する。 このモードでは 2 つのポートが互いに「見える」ような ネットワーク設定が必要である -(つまり、ポート間にルーターがあってはならない)。 - -.br -\fICheckSeg\fP ローカルポートとセグメントをチェックする。 このモードは CheckLocalPort モードと同じ機能を提供し、 -更にポート間のネットワークセグメントをチェックする。 よって、このモードはネットワーク上に スパニングツリープロトコル (Spanning Tree -protocol) を 使うように設定されたギガビットイーサネットスイッチが 設置されている場合にのみ使用できる。 - -.br -\fIDualNet\fP このモードでは、ポート A と B が別々のデバイスとして使用される。 2 ポートのアダプターを持っている場合、ポート A を -\fIeth[x]\fP に、ポート B を \fIeth[x+1]\fP に設定することができる。 2 つのポートは別々の IP -アドレスを付けて独立に使用することができる。 優先ポートの設定は使用されない。 RLMT は無効にされる。 - -RLMT モード \fICheckLocalPort\fP と \fICheckLinkState\fP は、1 -つのアダプター上のポート間でネットワーク経路があるような設定で 動作するように設計されている。 さらに、このモードはアダプター同士が直結 -(back\-to\-back) で 接続されている状態で動作するようには設計されていない。 -.SH ファイル -.TP -\fI/proc/net/sk98lin/eth[x]\fP -.br -アダプターカードの特定のインターフェースの統計ファイル。 このファイルには、アダプターカードの一般的な情報と、 -全ての送信・受信カウンターの詳細な一覧が含まれる。 -.TP -\fI/usr/src/linux/Documentation/networking/sk98lin.txt\fP -.br -\fIsk98lin\fP ドライバの \fIREADME\fP ファイルである。 これには詳細なインストール HOWTO が含まれており、 -ドライバの全ての引き数が記述されている。 また一般的な問題とその解決法についても書かれている。 -.SH バグ -.\" .SH AUTHORS -.\" Ralph Roesler \(em rroesler@syskonnect.de -.\" .br -.\" Mirko Lindner \(em mlindner@syskonnect.de -バグは linux@syskonnect.de に報告してほしい。 -.SH 関連項目 -\fBinsmod\fP(8), \fBifconfig\fP(8), \fBmodprobe\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/st.4 b/manual/LDP_man-pages/draft/man4/st.4 index 8d33c2d7..317c6576 100644 --- a/manual/LDP_man-pages/draft/man4/st.4 +++ b/manual/LDP_man-pages/draft/man4/st.4 @@ -35,13 +35,13 @@ .\" Updated Sun Mar 12 2000 by NAKANO Takeo .\" Updated Sun Apr 24 2005 by NAKANO Takeo \fP -.sp +.PP \fBint ioctl(int \fP\fIfd\fP\fB, int \fP\fIrequest\fP\fB [, (void *)\fP\fIarg3\fP\fB]);\fP \fBint ioctl(int \fP\fIfd\fP\fB, MTIOCTOP, (struct mtop *)\fP\fImt_cmd\fP\fB);\fP \fBint ioctl(int \fP\fIfd\fP\fB, MTIOCGET, (struct mtget *)\fP\fImt_status\fP\fB);\fP @@ -67,9 +67,9 @@ st \- SCSI テープデバイス 二つのマイナー番号で制御するようにもできる。) .PP デバイスは普通次のように作られる: +.PP .in +4n -.nf - +.EX mknod \-m 666 /dev/st0 c 9 0 mknod \-m 666 /dev/st0l c 9 32 mknod \-m 666 /dev/st0m c 9 64 @@ -78,17 +78,20 @@ mknod \-m 666 /dev/nst0 c 9 128 mknod \-m 666 /dev/nst0l c 9 160 mknod \-m 666 /dev/nst0m c 9 192 mknod \-m 666 /dev/nst0a c 9 224 -.fi +.EE .in .PP これらには対応するブロックデバイスは存在しない。 .PP -ドライバは内部バッファーを使い、その大きさは少なくともテープの 1 ブロックを保持できるように取られる。 2.1.121 以前のカーネルでは、 -バッファーは連続する一つのブロックとして割り当てられる。この方法だと、 ブロックサイズの最大値はカーネルの割り当て可能な連続メモリーブロックに -制限される。この制限は 32 ビットアーキテクチャーでは 128 kB、 64 ビットアーキテクチャーでは 256 kB -である。これ以降のカーネルでは、 ドライバは必要に応じていくつかにわかれたバッファーを割り当てる。 デフォルトでは 16 -個までの部分に分割できる。すなわち ブロックサイズの最大値は非常に大きい (128 kB のブロック 16 個の 割り当てに成功すれば 2 MB -となる)。 +The driver uses an internal buffer that has to be large enough to hold at +least one tape block. In kernels before 2.1.121, the buffer is allocated as +one contiguous block. This limits the block size to the largest contiguous +block of memory the kernel allocator can provide. The limit is currently +128\ kB for 32\-bit architectures and 256\ kB for 64\-bit architectures. In +newer kernels the driver allocates the buffer in several parts if +necessary. By default, the maximum number of parts is 16. This means that +the maximum block size is very large (2\ MB if allocation of 16 blocks of +128\ kB succeeds). .PP ドライバの内部バッファーのサイズはコンパイル時の定数で定義される。 これはカーネルの起動時オプションによって上書き可能である。 さらにドライバは実行時にも、必要に応じてより大きな一時バッファーを 割り当てようとする。しかし実行時に大きな連続メモリーブロックを @@ -123,9 +126,11 @@ kerneld や kmod によるドライバのデマンドロードに関しても当 したがってバイト数が対応するテープブロックのサイズを決める。 テープ上のブロックには、書き込みモードの情報は一切含まれない。 読み込みのときに重要なことは、テープのブロックサイズを受け入れる コマンドを使うかどうかだけである。 .PP -可変長ブロックモードでは、読み込みバイト数はテープのブロックサイズと 必ずしも一致していなくても良い。バイト数がテープの次のブロックよりも -大きければ、ドライバはそのデータを返し、関数は実際のブロックサイズを返す。 ブロックサイズがバイト数よりも大きければ、要求された分のデータが -ブロックの先頭から読み込まれて返され、ブロックの残りは破棄される。 +In variable\-block mode the read byte count does not have to match the tape +block size exactly. If the byte count is larger than the next block on +tape, the driver returns the data and the function returns the actual block +size. If the block size is larger than the byte count, an error is +returned. .PP 固定長ブロックモードでは、バッファーリングが有効になっていれば 読み込みバイト数は任意の大きさでよい。バッファーリングが無効の場合は、 テープのブロックサイズの整数倍でなければならない。 2.1.121 以前の カーネルでは、バッファーリングが有効な場合には @@ -151,17 +156,17 @@ kerneld や kmod によるドライバのデマンドロードに関しても当 ドライブが操作を拒否すると、ドライバは \fBEIO\fP エラーを返す。 .PP .in +4n -.nf +.EX /* Structure for MTIOCTOP \- mag tape op command: */ struct mtop { short mt_op; /* operations defined below */ int mt_count; /* how many of them */ }; -.fi +.EE .in .PP -通常のテープ利用のための磁気テープ操作: -.TP 14 +Magnetic tape operations for normal tape use: +.TP \fBMTBSF\fP \fImt_count\fP 個のファイルマーク (filemark) 分の後方スペース (backward space)。 .TP @@ -205,9 +210,15 @@ SCSI ロードコマンドを実行する。 HP オートローダーに限っ テープドライブの扉をロックする。 .TP \fBMTMKPART\fP -テープを 1 または 2 パーティションにフォーマットする。 \fImt_count\fP が 0 でなければ、これが最初のパーティションのサイズを与え、 -二番目のパーティションがテープの残りになる。 \fImt_count\fP が 0 の場合は、テープは一つのパーティションとしてフォーマットされる。 -このコマンドは、パーティションのサポートが有効にされた ドライブでなければ使えない (以下の \fBMT_ST_CAN_PARTITIONS\fP を見よ)。 +.\" commit 8038e6456a3e6f5c4759e0d73c4f9165b90c93e7 +Format the tape into one or two partitions. If \fImt_count\fP is positive, it +gives the size of partition 1 and partition 0 contains the rest of the +tape. If \fImt_count\fP is zero, the tape is formatted into one partition. +From kernel version 4.6, a negative \fImt_count\fP specifies the size of +partition 0 and the rest of the tape contains partition 1. The physical +ordering of partitions depends on the drive. This command is not allowed +for a drive unless the partition support is enabled for the drive (see +\fBMT_ST_CAN_PARTITIONS\fP below). .TP \fBMTNOP\fP 何も操作を行わない。\(em副次的な効果として、ドライバーのバッファー をフラッシュする。 \fBMTIOCGET\fP @@ -255,13 +266,15 @@ SCSI unload コマンドを実行する (テープのイジェクトは行わな \fBMTWSM\fP \fImt_count\fP 個のセットマークを書き込む。 .PP -デバイスオプションの設定のための (スーパーユーザーによる) 磁気テープ操作: -.TP 8 +Magnetic tape operations for setting of device options (by the superuser): +.TP \fBMTSETDRVBUFFER\fP -いろいろなドライブとドライバーのオプションを \fImt_count\fP にエンコードされた各ビットに従って設定する。 -オプションには、ドライブのバッファーリングモード、 ブール値のドライバオプションの集合、 バッファーの書き込み閾値 -(デフォルトはブロックサイズと密度)、 タイムアウト値が含まれる (カーネル 2.1 以降)。 -一回の操作で変えられるのは、上記のリストのどれか一つだけである (複数のブール値はまとめて一つと勘定される)。 +Set various drive and driver options according to bits encoded in +\fImt_count\fP. These consist of the drive's buffering mode, a set of Boolean +driver options, the buffer write threshold, defaults for the block size and +density, and timeouts (only in kernels 2.1 and later). A single operation +can affect only one item in the list below (the Booleans counted as one +item.) .IP 高位の4ビットがゼロである値は、 ドライブのバッファーリングモードの設定に使われる。 バッファーリングモードは以下の通り: .RS 12 @@ -325,7 +338,8 @@ SCSI unload コマンドを実行する (テープのイジェクトは行わな \fBMT_ST_FAST_EOM\fP が偽の時には、ドライバは \fBMTEOM\fP リクエストに応えるとき、前方にファイルを一つ一つ進めていく。 .TP \fBMT_ST_AUTO_LOCK\fP (デフォルト: 偽) -このオプションが真の時には、 デバイスがオープンされるとドライブの扉がロックされ、 クローズされるとアンロックされる。 +When this option is true, the drive door is locked when the device file is +opened and unlocked when it is closed. .TP \fBMT_ST_DEF_WRITES\fP (デフォルト: 偽) テープオプション (ブロックサイズ、モード、圧縮など) があるドライブにリンクされたデバイスで変更されると、 @@ -358,24 +372,26 @@ SCSI\-2 の標準で定義されている論理ブロックアドレスを用い 論理ブロックアドレスしかサポートしないドライブもいくつか存在している。 .TP \fBMT_ST_SYSV\fP (デフォルト: 偽) -このオプションが真になっていると、テープデバイスは SystemV のルールを用いる。偽だと BSD のルールを用いる。 -これらのルール間の最も大きな違いは、読み込みを行っていた デバイスがクローズされたときの振舞いである。 System V -のルールでは、テープは次のファイルマークを越えて移動する (デバイスの利用時にこれが行われなかった場合)。 BSD -のルールではテープ位置は変更されない。 +When this option is enabled, the tape devices use the System V semantics. +Otherwise, the BSD semantics are used. The most important difference +between the semantics is what happens when a device used for reading is +closed: in System V semantics the tape is spaced forward past the next +filemark if this has not happened while using the device. In BSD semantics +the tape position is not changed. .TP \fBMT_NO_WAIT\fP (デフォルト: 偽) 即時モード (immediate mode; コマンドの終了を待たない) を、ある種のコマンド (rewind など) に対して有効にする。 .PP 例: +.PP .in +4n -.nf - +.EX struct mtop mt_cmd; mt_cmd.mt_op = MTSETDRVBUFFER; mt_cmd.mt_count = MT_ST_BOOLEANS | MT_ST_BUFFER_WRITES | MT_ST_ASYNC_WRITES; ioctl(fd, MTIOCTOP, mt_cmd); -.fi +.EE .in .RE .IP "" @@ -389,19 +405,23 @@ ioctl(fd, MTIOCTOP, mt_cmd); した) ように見えることがある。これらのコマンドを使えば、 特定のドライブに対してもう少し実際的な値に設定することができる。 一つのデバイスに設定したタイムアウト値は、 それと同じドライブにリンクした全てのデバイスに適用される。 .IP "" -2.4.19 および 2.5.43 以降のカーネルでは、 このドライバはドライブのクリーニングが必要かどうかを示す 状態ビットをサポートする。 -ドライブがクリーニング情報を返させるかどうかは、 \fBMT_ST_SEL_CLN\fP サブコマンドによって設定できる。 この値が 0 -だと、クリーニングビットは常に 0 となる。 値を 1 にすると、SCSI\-3 標準で規定されている TapeAlert データが用いられる -(まだ実装されていない) 値としては 2 から 17 が予約されている。 低位側の 8 ビットが 18 以上だと、拡張状態データ (extended -sense data) が用いられる。第 9\-16 ビットは注目すべきビットを選択するためのマスクを指定し、 第 17\-23 -ビットは探すべきビットパターンを指定する。 このビットパターンが 0 のときは、 マスク下のビット (群) がクリーニング要求を示す。パターンが 0 -でなければ、 このパターンがマスク後の状態データバイトにマッチしなければならない。 +Starting from kernels 2.4.19 and 2.5.43, the driver supports a status bit +which indicates whether the drive requests cleaning. The method used by the +drive to return cleaning information is set using the \fBMT_ST_SEL_CLN\fP +subcommand. If the value is zero, the cleaning bit is always zero. If the +value is one, the TapeAlert data defined in the SCSI\-3 standard is used (not +yet implemented). Values 2\(en17 are reserved. If the lowest eight bits +are >= 18, bits from the extended sense data are used. The bits 9\(en16 +specify a mask to select the bits to look at and the bits 17\(en23 specify +the bit pattern to look for. If the bit pattern is zero, one or more bits +under the mask indicate the cleaning request. If the pattern is nonzero, +the pattern must match the masked sense data byte. .SS "MTIOCGET \(em ステータスの取得" .PP このリクエストは \fI(struct mtget\ *)\fP という型の引数をとる。 .PP .in +4n -.nf +.EX /* structure for MTIOCGET \- mag tape get status command */ struct mtget { long mt_type; @@ -414,18 +434,22 @@ struct mtget { daddr_t mt_fileno; daddr_t mt_blkno; }; -.fi +.EE .in -.IP \fImt_type\fP 11 +.TP +\fImt_type\fP ヘッダーファイル中には多くの \fImt_type\fP の値が定義されているが、現行のドライバは汎用のタイプである \fBMT_ISSCSI1\fP (汎用 SCSI\-1 テープ) および \fBMT_ISSCSI2\fP (汎用 SCSI\-2 テープ) のみを返す。 -.IP \fImt_resid\fP +.TP +\fImt_resid\fP 現在のテープ位置番号。 -.IP \fImt_dsreg\fP +.TP +\fImt_dsreg\fP ドライブのブロックサイズと密度の現在の設定を報告する (下位 24 ビットがブロックサイズ、上位 8 ビットが密度)。 これらのフィールドは、 \fBMT_ST_BLKSIZE_SHIFT\fP, \fBMT_ST_BLKSIZE_MASK\fP, \fBMT_ST_DENSITY_SHIFT\fP, \fBMT_ST_DENSITY_MASK\fP で定義されている。 -.IP \fImt_gstat\fP +.TP +\fImt_gstat\fP 汎用の (デバイスに依存しない) ステータスを報告する。 これらのステータスビットをテストするためのマクロが ヘッダーファイルで定義されている。 .RS .HP 4 @@ -455,15 +479,20 @@ SCSI\-1 テープ) および \fBMT_ISSCSI2\fP (汎用 SCSI\-2 テープ) のみ .HP \fBGMT_CLN\fP(\fIx\fP): ドライブがクリーニングを要求している。 カーネル 2.4.19 および 2.5.43 以降で実装された。 .RE -.IP \fImt_erreg\fP -\fImt_erreg\fP で定義されているフィールドは一つだけで、 下位の 16 ビットがエラーをリカバーした回数である -(\fBMT_ST_SOFTERR_SHIFT\fP と \fBMT_ST_SOFTERR_MASK\fP で定義されている)。 -ドライブの報告するエラーリカバー数と矛盾することがあるので、 この数はほとんどの場合維持されない -(ほとんどのドライブでは、デフォルトではソフトエラーを報告しない。 しかしこれは SCSI MODE SELECT コマンドによって変更できる)。 -.IP \fImt_fileno\fP +.TP +\fImt_erreg\fP +The only field defined in \fImt_erreg\fP is the recovered error count in the +low 16 bits (as defined by \fBMT_ST_SOFTERR_SHIFT\fP and +\fBMT_ST_SOFTERR_MASK\fP). Due to inconsistencies in the way drives report +recovered errors, this count is often not maintained (most drives do not by +default report soft errors but this can be changed with a SCSI MODE SELECT +command). +.TP +\fImt_fileno\fP (ゼロから数えた) 現在のファイル番号を報告する。 ファイル番号がわからない時 (例えば \fBMTBSS\fP や \fBMTSEEK\fP の後など) には \-1 にセットされる。 -.IP \fImt_blkno\fP +.TP +\fImt_blkno\fP 現在のファイル中の(ゼロから数えた)ブロック番号を報告する。 ブロック番号がわからない時 (例えば \fBMTBSF\fP, \fBMTBSS\fP, \fBMTSEEK\fP の後など) には \-1 にセットされる。 .SS "MTIOCPOS \(em テープ位置の取得" @@ -474,15 +503,14 @@ SCSI\-1 テープ) および \fBMT_ISSCSI2\fP (汎用 SCSI\-2 テープ) のみ Archive, Viper, Wangtek, ... ) でなければならない。 .PP .in +4n -.nf +.EX /* structure for MTIOCPOS \- mag tape get position command */ struct mtpos { long mt_blkno; /* current block number */ }; -.fi +.EE .in .SH 返り値 -.TP 14 .TP \fBEACCES\fP 書き込み保護されているテープに書き込みまたは消去を行おうとした。 (このエラーは \fBopen\fP(2) 中には検知されない。) @@ -500,8 +528,9 @@ struct mtpos { 要求された操作が最後まで行えなかった。 .TP \fBENOMEM\fP -\fBread\fP(2) のバイト数が、テープにある次の物理ブロックより小さい (2.2.18 および 2.4.0\-test6 -以前では、黙って余分のバイトを無視していた)。 +.\" Precisely: Linux 2.6.0-test6 +The byte count in \fBread\fP(2) is smaller than the next physical block on the +tape. (Before 2.2.18 and 2.4.0 the extra bytes have been silently ignored.) .TP \fBENOSPC\fP メディアの終点に達したため、書き込み操作が完了しなかった。 @@ -518,10 +547,10 @@ struct mtpos { \fBEROFS\fP ドライブに入っているテープがライトプロテクトされている場合に、 \fBO_WRONLY\fP または \fBO_RDWR\fP で open を行おうとした。 .SH ファイル -.TP 12 +.TP \fI/dev/st*\fP 自動巻き戻しの SCSI テープデバイス。 -.TP 12 +.TP \fI/dev/nst*\fP .\" .SH AUTHOR .\" The driver has been written by Kai M\(:akisara (Kai.Makisara@metla.fi) @@ -549,16 +578,6 @@ SCSI テープドライブを用いるには、基本の SCSI ドライバ、 SC ドライバはエラーメッセージをコンソールとログとに書き出す。 カーネル設定で verbose SCSI messages が有効にされていると、 SENSE コードが自動的にテキストに変換されて、 いくつかのメッセージに書きだされる。 .IP 5. -.\" .SH COPYRIGHT -.\" Copyright \(co 1995 Robert K. Nichols. -.\" .br -.\" Copyright \(co 1999-2005 Kai M\(:akisara. -.\" .PP -.\" %%%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. -.\" Additional permissions are contained in the header of the source file. このドライバの内部バッファーリングは、固定ブロックモードなら \fBread\fP(2) や \fBwrite\fP(2) のバイト数が小さくても良いスループットを出す。 直接転送ではこれは不可能なので、2.6 カーネルに移行したときに驚くかもしれない。 解決法としては、ソフトウェアにより大きな転送を行うよう伝える (たいていはより大きなブロックを使わせる) ことである。 @@ -569,6 +588,5 @@ SENSE コードが自動的にテキストに変換されて、 いくつかの Linux カーネルソースの \fIdrivers/scsi/README.st\fP や \fIDocumentation/scsi/st.txt\fP (カーネル 2.6 以降) の各ファイルには、 ドライバに関するより新しい情報や、 その設定可能な範囲に関する内容が含まれている。 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/tty.4 b/manual/LDP_man-pages/draft/man4/tty.4 index d995006d..f04da4c9 100644 --- a/manual/LDP_man-pages/draft/man4/tty.4 +++ b/manual/LDP_man-pages/draft/man4/tty.4 @@ -40,31 +40,32 @@ .\" Updated Fri Aug 16 00:04:53 JST 2002 .\" by Akihiro MOTOKI .\" -.TH TTY 4 2003\-04\-07 Linux "Linux Programmer's Manual" +.TH TTY 4 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 tty \- 制御端末 .SH 説明 -\fI/dev/tty\fP ファイルは、メジャー番号 5、マイナー番号 0 のキャラクター デバイスである。通常、そのモードは 0666、オーナ.グループは -root.tty となっている。 プロセスの制御端末が存在する場合、このデバイスファイルはプロセスの制御端末と 同じものを表す。 -.LP +The file \fI/dev/tty\fP is a character file with major number 5 and minor +number 0, usually with mode 0666 and ownership root:tty. It is a synonym +for the controlling terminal of a process, if any. +.PP \fBtty\fP が参照しているデバイスがサポートしている \fBioctl\fP(2) 要求に 加えて、 \fBioctl\fP(2) 要求 \fBTIOCNOTTY\fP がサポートされている。 .SS TIOCNOTTY 呼び出し元のプロセスをその制御端末から切り離す。 -.sp +.PP そのプロセスがセッションリーダー (session leader) の場合、 シグナル \fBSIGHUP\fP と \fBSIGCONT\fP がフォアグラウンドプロセスグループに送られ、 カレントセッションに属す全てのプロセスについて各々の制御端末が切り離される。 -.sp +.PP この \fBioctl\fP(2) 呼び出しは \fI/dev/tty\fP に結びつけられたファイル ディスクリプターにのみ作用する。この機能は、ユーザーによって端末から 起動されたデーモンプロセスにより使用される。 そのプロセスは \fI/dev/tty\fP をオープンしようと試みる。 オープンに成功すると、そのプロセスは \fBTIOCNOTTY\fP を使って 自分自身を端末から切り離す。オープンに失敗した場合、そのプロセスが 端末に結びつけられていないのは明らかであり、自身を端末から切り離す 必要はない。 .SH ファイル -/dev/tty +\fI/dev/tty\fP .SH 関連項目 -\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) +\fBchown\fP(1), \fBmknod\fP(1), \fBioctl\fP(2), \fBioctl_console\fP(2), \fBioctl_tty\fP(2), +\fBtermios\fP(3), \fBttyS\fP(4), \fBvcs\fP(4), \fBpty\fP(7), \fBagetty\fP(8), +\fBmingetty\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/ttyS.4 b/manual/LDP_man-pages/draft/man4/ttyS.4 index 48978971..b3378127 100644 --- a/manual/LDP_man-pages/draft/man4/ttyS.4 +++ b/manual/LDP_man-pages/draft/man4/ttyS.4 @@ -39,26 +39,23 @@ ttyS \- シリアルターミナルライン(serial terminal lines) .SH 説明 \fBttyS[0\-3]\fP はシリアルターミナルラインのためのキャラクターデバイス (character device)である。 -.LP +.PP これらは典型的には次のようにして作られる。 -.RS -.sp +.PP +.in +4n +.EX mknod \-m 660 /dev/ttyS0 c 4 64 # base address 0x3f8 -.br mknod \-m 660 /dev/ttyS1 c 4 65 # base address 0x2f8 -.br mknod \-m 660 /dev/ttyS2 c 4 66 # base address 0x3e8 -.br mknod \-m 660 /dev/ttyS3 c 4 67 # base address 0x2e8 -.br chown root:tty /dev/ttyS[0\-3] -.RE +.EE +.in .SH ファイル -/dev/ttyS[0\-3] +\fI/dev/ttyS[0\-3]\fP .SH 関連項目 \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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/vcs.4 b/manual/LDP_man-pages/draft/man4/vcs.4 deleted file mode 100644 index 49984507..00000000 --- a/manual/LDP_man-pages/draft/man4/vcs.4 +++ /dev/null @@ -1,153 +0,0 @@ -.\" Copyright (c) 1995 James R. Van Zandt -.\" Sat Feb 18 09:11:07 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified, Sun Feb 26 15:08:05 1995, faith@cs.unc.edu -.\" 2007-12-17, Samuel Thibault : -.\" document the VT_GETHIFONTMASK ioctl -.\" " -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996,1997,1998 ISHIKAWA Mutsumi -.\" all rights reserved. -.\" Translated Tue Feb 6 16:30:31 JST 1997 -.\" by ISHIKAWA Mutsumi -.\" Updated 2013-07-31, Akihiro MOTOKI -.\" -.TH VCS 4 2007\-12\-17 Linux "Linux Programmer's Manual" -.SH 名前 -vcs, vcsa \- 仮想コンソールメモリー (virtual console memory) -.SH 説明 -\fI/dev/vcs0\fP はメジャーナンバー (major number) 7、マイナーナンバー (minor number) 0 -のキャラクターデバイス (character device) で、 通常、そのモードは 0644、オーナは root.tty である。 -このデバイスファイル (device file) は 現在表示されている仮想コンソール端末のメモリーを参照する。 -.LP -\fB/dev/vcs[1\-63]\fP は仮想コンソール端末のための キャラクターデバイスで、メジャーナンバーが 7、マイナーナンバーが 1 から 63、 -通常はモードが 0644、オーナーが root.tty である。 \fB/dev/vcsa[0\-63]\fP は \fB/dev/vcs[1\-63]\fP -と同様であるが、 属性を格納するのに (ホストバイトオーダの) \fIunsigned short\fP -を使用している点、スクリーンのサイズ・カーソルの位置を表す 4 バイトの情報 \fIlines\fP, \fIcolumns\fP, \fIx\fP, \fIy\fP -(\fIx\fP =\fIy\fP = 0 が画面の左上) が先頭にある点が異なる。 - -512 文字から成るフォントをロードした場合、 9 ビット目の情報は \fI/dev/tty[1\-63]\fP に対して \fBioctl\fP(2) -\fBVT_GETHIFONTMASK\fP 操作を行うことで取得できる (\fBVT_GETHIFONTMASK\fP 操作はカーネル 2.6.18 以降の -Linux で 利用可能である)。 値は \fBioctl\fP(2) の 3 番目の引き数が指す \fIunsigned short\fP -に格納されて返される。 -.PP -これらのデバイスは \fBconsole\fP(4) の screendump \fBioctl\fP(2) を代替となる。 -従って、システム管理者はファイルシステムパーミッション (filesystem permission) を使ってアクセスをコントロールできる。 -.PP -最初の 8 つの仮想端末のためのデバイスは、次のようにして作る事ができる: - -.nf - for x in 0 1 2 3 4 5 6 7 8; do - mknod \-m 644 /dev/vcs$x c 7 $x; - mknod \-m 644 /dev/vcsa$x c 7 $[$x+128]; - done - chown root:tty /dev/vcs* -.fi - -\fBioctl\fP(2) による要求はサポートされない。 -.SH ファイル -/dev/vcs[0\-63] -.br -.\" .SH AUTHOR -.\" Andries Brouwer -/dev/vcsa[0\-63] -.SH バージョン -Linux カーネルバージョン 1.1.92 で導入された。 -.SH 例 -vt1 に移って以下を実行すると、vt3 のスクリーンダンプを取ることができます。 - - cat /dev/vcs3 >foo - -主力には改行文字が含まれない点に注意して下さい。 そのため、 何らかの処理が必要となるかもしれません。 例えば、 - - old \-w 81 /dev/vcs3 | lpr - -(ひどい方法としては) - - xetterm \-dump 3 \-file /proc/self/fd/1 - -.LP -\fI/dev/vcsa0\fP デバイスを使うことで、 ブライユ点字をサポートすることができる。 - -以下のプログラムは、 二つ目の仮想コンソールのカーソル位置のスクリーン属性と文字を表示した後、 カーソル位置の背景色を変更する。 - -.nf -#include -#include -#include -#include -#include -#include - -int -main(void) -{ - int fd; - char *device = "/dev/vcsa2"; - char *console = "/dev/tty2"; - struct {unsigned char lines, cols, x, y;} scrn; - unsigned short s; - unsigned short mask; - unsigned char ch, attrib; - - fd = open(console, O_RDWR); - if (fd < 0) { - perror(console); - exit(EXIT_FAILURE); - } - if (ioctl(fd, VT_GETHIFONTMASK, &mask) < 0) { - perror("VT_GETHIFONTMASK"); - exit(EXIT_FAILURE); - } - (void) close(fd); - fd = open(device, O_RDWR); - if (fd < 0) { - perror(device); - exit(EXIT_FAILURE); - } - (void) read(fd, &scrn, 4); - (void) lseek(fd, 4 + 2*(scrn.y*scrn.cols + scrn.x), 0); - (void) read(fd, &s, 2); - ch = s & 0xff; - if (attrib & mask) - ch |= 0x100; - attrib = ((s & ~mask) >> 8); - printf("ch=\(aq%c\(aq attrib=0x%02x\en", ch, attrib); - attrib ^= 0x10; - (void) lseek(fd, \-1, 1); - (void) write(fd, &attrib, 1); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBconsole\fP(4), \fBtty\fP(4), \fBttyS\fP(4), \fBgpm\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man4/wavelan.4 b/manual/LDP_man-pages/draft/man4/wavelan.4 deleted file mode 100644 index 5a6a0ee5..00000000 --- a/manual/LDP_man-pages/draft/man4/wavelan.4 +++ /dev/null @@ -1,100 +0,0 @@ -.\" From jt@hplb.hpl.hp.com Thu Dec 19 18:31:49 1996 -.\" From: Jean Tourrilhes -.\" Address: HP Labs, Filton Road, Stoke Gifford, Bristol BS12 6QZ, U.K. -.\" Jean II - HPLB - '96 -.\" wavelan.c.4 -.\" -.\" Provenance of this page is unclear. -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" Licensed under the GPL, -.\" after inquiries with Jean Tourrilhes and Bruce Janson -.\" (mtk, July 2006) -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 -.\" ISHIKAWA Mutsumi, all rights reserved. -.\" Translated Sat Sep 20 14:45:21 JST 1997 -.\" by ISHIKAWA Mutsumi -.\" -.TH WAVELAN 4 2013\-09\-04 Linux "Linux Programmer's Manual" -.SH 名前 -wavelan \- AT&T GIS WaveLAN ISA デバイスドライバ -.SH 書式 -\fBinsmod wavelan_cs.o [io=\fP\fIB,B..\fP\fB] [ irq=\fP\fII,I..\fP\fB] -[name=\fP\fIN,N..\fP\fB]\fP -.SH 説明 -\fBこのドライバーは時代遅れである\fP: このドライバーはカーネル 2.6.35 で削除された。 - -\fIwavelan\fP は、NCR / AT&T / Lucent の \fBWaveLan ISA\fP と Digital(DEC) の -\fBRoamAbout DS\fP というワイアレスイーサネット (wireless ethernet) アダプターのための -ローレベルデバイスドライバである。このドライバはモジュールとしても、また、 カーネルに組み込んだ形でも利用できる。また、どちらの場合でも、複数カード -(最大 4 枚まで) をサポートし、明示的にデバイスの名前を指定しない限り (これに関しては、下を見よ)、発見されたそれぞれのカードには、利用可能な -次のイーサネットデバイス(eth0..eth#)が割り当てられる。このデバイス名は MAC アドレス、NWID、カードによって利用される周波数とともに -カーネルログファイルに報告される。 -.SS パラメーター -このセクションのパラメーターは、モジュールとして使用する場合 に適用され、 \fBinsmod\fP(8) のコマンドライン引き数として用いる。 -カーネルにドライバが含まれている場合は、 \fIether=IRQ,IO,NAME\fP という形式のパラメーターをカーネルコマンドラインに渡す。 -.TP -\fBio\fP -wavelan カードを検出する時にどこのベースアドレスをサーチするかという リストを指定する (カードが利用するベースアドレスはカードのディップ -スイッチで設定する)。もし io アドレスが指定されなければドライバは 0x390 と 0x3E0 -をスキャンする(このアドレスは他のハードと衝突することも考えられる)。 -.TP -\fBirq\fP -それぞれの wavelan カードが利用する irq のリストをセットする (この値は 将来的な利用のために永続的ストレージに保存される)。 -.TP -\fBname\fP -それぞれの wavelan カードデバイスに (\fBifconfig\fP(8) が利用する)名前のリストをセットする。 -.SS "ワイアレス拡張 (Wireless Extentions)" -ワイアレス拡張の操作には \fBiwconfig\fP(8) を使う。 -.SS "NWID (or ドメイン)" -ネットワーク IDを [\fI0\fP から \fIFFFF\fP] に設定するか、 [\fIoff\fP] その利用を無効にする。 NWID -はカードの永続的ストレージエリア (Permanent Strage Area) に 格納されるので、NWID -はドライバが呼び出されるたびに利用できる。 -.SS 周波数とチャネル -2.4GHz 2.00 ハードウェアでは、10 の定義済みのチャネル (\fI2.412\fP \fI2.422, 2.425, 2.4305, 2.432, -2.442, 2.452, 2.460, 2.462\fP \fI2.484\fP) のうちの一つを指定するか、その値を直接指定することによって周波数を設定 -することができる。 周波数は直後に変更され、また、その変更は恒久的である。 どの周波数が利用できるかということは、(その国の) 法律に依存する… -.SS "統計スパイ (Statics spy)" -(8 つまでの) MAC アドレスのリストをドライバに設定して、 それぞれのリンクの品質を得る (\fBiwspy\fP(8) を参照)。 -.SS /proc/net/wireless -\fIstatus\fP はモデムから報告されたステータスである。 \fIlink quality\fP -は通信中の(直接拡散スペクトラム通信方式における)変調の品質を報告する [最大 = 16]。 \fILevel\fP と \fINoise\fP -は信号レベルとノイズのレベルを参照する [最大 = 64]。 \fI暗号化されていて廃棄されたパケット(crypt discarded packet)\fP -と \fIそれ以外の廃棄されたパケット(misc discarded packet)\fP のカウンターは実装されていない。 -.SS "ドライバ固有の IOCTL (private ioctl)" -\fBiwpriv\fP(8) をドライバ固有の ioctl の操作のために利用できる。 -.SS "品質とレベルの閾値 (quality and level threshold)" -モデムで使われる品質とレベルの閾値 (そのレベルを下回ったパケットは 破棄される) を定義することができる。 -.SS "ヒストグラム (Histogram)" -この機能により、 シグナルレベル区間の数の設定と、設定したそれぞれの区間での 受信パケット数をカウントすることができる。 -この分布はシグナルレベルの最瀕値標準偏差の計算に役立つだろう。 -.SS 特定のドライバでの注意 -このドライバはいくつかの \fBNCR/AT&T/Lucent ではない\fP Wavelan カードの検出に失敗するだろう。 -これがあなたの持っているカードで起こった場合 、そのカードの検出処理をどのように加えればいいかと いうことについてソースコードを確認する必要がある。 -.PP -.\" .SH AUTHOR -.\" Bruce Janson \(em bruce@cs.usyd.edu.au -.\" .br -.\" Jean Tourrilhes \(em jt@hplb.hpl.hp.com -.\" .br -.\" (and others; see source code for details) -.\" -.\" SEE ALSO part -.\" -ここまでで述べてきた機能のうちのいくつかは、選択可能である。 ドライバの先頭部分のフラグを変更してコンパイルしなおすことによって、 -その機能を無効にすることも可能である。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/acct.5 b/manual/LDP_man-pages/draft/man5/acct.5 index e2fa0672..9db4bb68 100644 --- a/manual/LDP_man-pages/draft/man5/acct.5 +++ b/manual/LDP_man-pages/draft/man5/acct.5 @@ -32,7 +32,7 @@ .\" all rights reserved. .\" Translated 2008-08-10, Akihiro MOTOKI , LDP v3.05 .\" -.TH ACCT 5 2008\-06\-15 Linux "Linux Programmer's Manual" +.TH ACCT 5 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 acct \- プロセスアカウンティングファイル .SH 書式 @@ -40,16 +40,16 @@ acct \- プロセスアカウンティングファイル .SH 説明 カーネルがプロセスアカウンティングのオプション (\fBCONFIG_BSD_PROCESS_ACCT\fP) を有効にして作成されていると、以下のように \fBacct\fP(2) を呼び出すとプロセスアカウンティングが開始される。 - +.PP .in +4n acct("/var/log/pacct"); .in - +.PP プロセスアカウンティングが有効になっていると、カーネルは システム上の各プロセスが終了するたびにアカウンティングファイルに レコードを書き込む。 このレコードは、終了したプロセスに関する情報を保持するもので、 \fI\fP で以下のように定義されている。 - +.PP .in +4n -.nf +.EX #define ACCT_COMM 16 typedef u_int16_t comp_t; @@ -84,13 +84,13 @@ enum { /* Bits that may be set in ac_flag field */ ACORE = 0x08, /* Dumped core */ AXSIG = 0x10 /* Killed by a signal */ }; -.fi +.EE .in .PP データ型 \fIcomp_t\fP は浮動小数点値で、3 ビット幅の基数が 8 の指数部と 13 ビット幅の仮数部から 構成される。 \fIcomp_t\fP 型の値 \fIc\fP は以下のようにして (long 型の) 整数に変換できる。 +.PP .nf - v = (c & 0x1fff) << (((c >> 13) & 0x7) * 3); .fi .PP @@ -102,9 +102,9 @@ enum { /* Bits that may be set in ac_flag field */ このオプションが設定されると、アカウンティングファイルに書き込まれる レコードにフィールドが追加される。 また、フィールド \fIc_uid\fP と \fIac_gid\fP の幅が 16 ビットから 32 ビットに拡張される (これは Linux 2.4 以降で UID と GID のサイズが増えているのに 対応したものである)。 このレコードは以下のように定義されている。 - +.PP .in +4n -.nf +.EX struct acct_v3 { char ac_flag; /* Flags */ char ac_version; /* Always set to ACCT_VERSION (3) */ @@ -127,7 +127,7 @@ struct acct_v3 { comp_t ac_swaps; /* Number of swaps (unused) */ char ac_comm[ACCT_COMM]; /* Command name */ }; -.fi +.EE .in .SH バージョン \fIacct_v3\fP 構造体はバージョン 2.6 以降の glibc で定義されている。 @@ -136,16 +136,15 @@ struct acct_v3 { その詳細はシステムによりいくらか異なる。 .SH 注意 アカウンティングファイルのレコードは、プロセスの終了時刻の順序となる。 - +.PP バージョン 2.6.9 以前のカーネルでは、 NPTL スレッドライブラリを使って作成されたスレッドでは スレッド毎に別々のアカウンティングレコードが書き込まれていた。 Linux 2.6.10 以降では、プロセス内の最後のスレッドが終了すると、 プロセス全体についてのアカウンティングレコードが一つだけ書き込まれる。 - -\fIproc/sys/kernel/acct\fP ファイル (\fBproc\fP(5) で説明されている) は、ディスク容量の残りが少なくなった際の -プロセスアカウンティングの動作を制御する設定を保持している。 +.PP +The \fI/proc/sys/kernel/acct\fP file, described in \fBproc\fP(5), defines settings +that control the behavior of process accounting when disk space runs low. .SH 関連項目 \fBlastcomm\fP(1), \fBacct\fP(2), \fBaccton\fP(8), \fBsa\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/charmap.5 b/manual/LDP_man-pages/draft/man5/charmap.5 deleted file mode 100644 index bb88a87d..00000000 --- a/manual/LDP_man-pages/draft/man5/charmap.5 +++ /dev/null @@ -1,102 +0,0 @@ -.\" Copyright (C) 1994 Jochen Hein (Hein@Student.TU-Clausthal.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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Thu Feb 5 21:12:56 JST 1998 -.\" by HANATAKA Shinya -.\" Updated Wed Jan 9 JST 2001 by Kentaro Shirakata -.\" -.TH CHARMAP 5 2014\-07\-08 GNU "Linux Programmer's Manual" -.SH 名前 -charmap \- 文字集合記述ファイル -.SH 説明 -文字集合記述 (charmap) は、ある文字集合において使用できるすべての文字とその符号化を定義する。 \fBlocaledef\fP(1) は、 -文字集合記述を使って、 別の文字集合向けのロケールの派生版を作成することができる。 -.SS 文法 -charmap ファイルは以下のキーワードからなるヘッダーで始まる: -.TP -\fI\fP -キャラクターマップの名前を指定する。 -.TP -\fI\fP -ファイルの残りの部分でコメントキャラクターとして使用する文字 を指定する。デフォルトではシャープ (#) である。 -.TP -\fI\fP -ファイルの残りの部分でエスケープキャラクターとして使用する文字を 指定する。これは特殊な意味に解釈される文字をエスケープするのに使用する。 -デフォルトはバックスラッシュ (\e) である。 -.TP -\fI\fP -一文字あたりの最大バイト数を指定する。 デフォルトは 1 である。 -.TP -\fI\fP -一文字あたりの最小バイト数を指定する。この値は \fImb_cur_max\fP 以下でなければならない。 指定されなかった場合のデフォルト値は -\fImb_cur_max\fP である。 -.PP -文字集合定義のセクションは、 第一カラムにキーワード \fBCHARMAP\fP を置くことで始める。 - -続く行では以下の 2 つの方法のいずれかを使って文字集合を定義する。 -.TP -\fI \fP -ある 1 文字とそのバイト列を定義する。 \fI\fP は省略可能。 -.TP -\fI.. \fP -これは文字の範囲とそのバイト列を定義する。 \fI\fP は省略可能。 -.PP -文字集合定義のセクションは文字列 \fIEND CHARMAP\fP で終了する。 -.PP -文字集合定義のセクションの後ろに、文字幅を定義するセクションを続けることができる。 -.PP -\fBWIDTH_DEFAULT\fP キーワードを使って、リストに明示的に載っていない全文字で使用されるデフォルトの文字幅を定義できる。 -デフォルトの文字幅は 1 である。 -.PP -個別の文字の文字幅定義のセクションは、 第一カラムにキーワード \fBWIDTH\fP を置いて開始する。 - -続く行では以下の 2 つの方法のいずれかを使って文字幅を定義する。 -.TP -\fI \fP -指定した 1 文字の幅を定義する。 -.TP -\fI... \fP -指定した範囲の全文字の幅を定義する。 -.PP -文字幅定義のセクションは文字列 \fIEND WIDTH\fP で終了する。 -.SH ファイル -.TP -\fI/usr/share/i18n/charmaps\fP -デフォルトのキャラクターマップの通常のパス。 -.SH 準拠 -POSIX.2. -.SH 例 -ユーロ記号は \fIUTF\-8\fP キャラクターマップでは以下のように定義される。 -.PP -.nf - /xe2/x82/xac -.fi -.SH 関連項目 -\fBiconv\fP(1), \fBlocale\fP(1), \fBlocaledef\fP(1), \fBlocale\fP(5), \fBcharsets\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 0f8c6436..00000000 --- a/manual/LDP_man-pages/draft/man5/core.5 +++ /dev/null @@ -1,325 +0,0 @@ -.\" Copyright (c) 2006, 2008 by 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006-2008 Akihiro MOTOKI -.\" Translated 2006-04-15, Akihiro MOTOKI -.\" Updated 2007-01-05, Akihiro MOTOKI, LDP v2.43 -.\" Updated 2007-09-03, Akihiro MOTOKI, LDP v2.64 -.\" Updated 2008-08-10, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2008-09-19, Akihiro MOTOKI, LDP v3.08 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" Updated 2013-07-24, Akihiro MOTOKI -.\" -.TH CORE 5 2014\-08\-19 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 か \fIcore.pid\fP (\fIpid\fP -はコアダンプを行うプロセスの ID) という名前で、カレントワーキングディレクトリに生成される。 命名規則の詳細は下記を参照)。 -コアファイルを生成しようとしたディレクトリが書き込み可能でない場合、 もしくは同じ名前のファイルが存在し、そのファイルが書き込み可能でも -通常のファイルでもない場合 (例えば、ディレクトリやシンボリックリンク)、 コアファイルの生成は失敗する。 -.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 -(Linux 3.7 以降) カーネルの設定で \fBCONFIG_COREDUMP\fP オプションが有効になっていない。 -.PP -上記に加えて、 \fBmadvise\fP(2) の \fBMADV_DONTDUMP\fP -フラグが使用されている場合、プロセスのアドレス空間の一部がコアダンプから除外される場合がある。 -.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 -%c -クラッシュしたプロセスのコアファイルのサイズに関するソフトリソース上限 (Linux 2.6.24 以降) -.TP -%d -.\" Added in git commit 12a2b4b2241e318b4f6df31228e4272d2c2968a1 -ダンプモード \(em \fBprctl\fP(2) \fBPR_GET_DUMPABLE\fP が返す値と同じ (Linux 3.7 以降) -.TP -%e -実行ファイル名 (パス名のプレフィックスは含まれない) -.TP -%E -実行ファイルのパス名。スラッシュ (\(aq/\(aq) は感嘆符 (\(aq!\(aq) に置き換えられる。 (Linux 3.0 以降) -.TP -%g -ダンプされたプロセスの実グループ ID (real GID) -.TP -%h -ホスト名 (\fBuname\fP(2) で返される \fInodename\fP と同じ) -.TP -%p -ダンプされるプロセスの PID; そのプロセスが属している PID 名前空間での PID -.TP -%P -.\" Added in git commit 65aafb1e7484b7434a0c1d4c593191ebe5776a2f -ダンプされるプロセスの PID; 元の PID 名前空間での値 (Linux 3.12 以降) -.TP -%s -ダンプを引き起こしたシグナルの番号 -.TP -%t -ダンプ時刻、紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC)) からの秒数。 -.TP -%u -ダンプされたプロセスの実ユーザー ID (real UID) -.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 -Linux 3.6 以降では、\fI/proc/sys/fs/suid_dumpable\fP が 2 ("suidsafe") -に設定されている場合、テンプレートは、絶対パス名 (先頭に \(aq/\(aq 文字があるパス名) かパイプ (以下で説明) -のどちらかでなければならない。 -.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 コマンドを使用すると、実行中のプロセスのコアダンプを取得できる。 - -.\" Changed with commit 6409324b385f3f63a03645b4422e3be67348d922 -.\" 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 -バージョン 2.6.27 以前の Linux では、 マルチスレッドプロセス (より正確には、 \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]= -argc[1]=<20575> -argc[2]= -argc[3]= -argc[4]= -Total bytes in core dump: 282624 -.fi -.in -.SS プログラムのソース -\& -.nf -/* core_pattern_pipe_test.c */ - -#define _GNU_SOURCE -#include -#include -#include -#include -#include -#include - -#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); - - fclose(fp); - 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/dir_colors.5 b/manual/LDP_man-pages/draft/man5/dir_colors.5 index 1ac14fe7..eb416b21 100644 --- a/manual/LDP_man-pages/draft/man5/dir_colors.5 +++ b/manual/LDP_man-pages/draft/man5/dir_colors.5 @@ -25,16 +25,16 @@ .\" Updated 2013-03-26, Akihiro MOTOKI .\" Updated 2013-07-31, Akihiro MOTOKI .\" -.TH DIR_COLORS 5 2013\-08\-09 GNU "Linux User Manual" +.TH DIR_COLORS 5 2020\-08\-13 GNU "Linux User Manual" .SH 名前 dir_colors \- dircolors(1) の設定ファイル .SH 説明 プログラム \fBls\fP(1) は、環境変数 \fBLS_COLORS\fP を使い、ファイル名を何色で表示するかを決定する。 この環境変数は、通常 - +.PP .RS eval \`dircolors some_path/dir_colors\` .RE - +.PP のようなコマンドで設定される。 このコマンドは \fI/etc/profile\fP や \fI/etc/csh.cshrc\fP といったシステムのシェル初期化ファイルにある。 (\fBdircolors\fP(1) を参照すること。) 通常、ここで使われるファイルは \fI/etc/DIR_COLORS\fP であるが、ホームディレクトリの \fI.dir_colors\fP ファイルで上書きすることができる。 @@ -69,7 +69,7 @@ eval \`dircolors some_path/dir_colors\` .TP \fBNORMAL \fP\fIcolor\-sequence\fP (ファイル名でない) 通常のテキストに使われる色を指定する。 - +.IP \fBNORM\fP の同義語。 .TP \fBFILE \fP\fIcolor\-sequence\fP @@ -80,7 +80,7 @@ eval \`dircolors some_path/dir_colors\` .TP \fBLINK \fP\fIcolor\-sequence\fP シンボリックリンクに使われる色を指定する。 - +.IP \fBLNK\fP, \fBSYMLINK\fP の同義語。 .TP \fBORPHAN \fP\fIcolor\-sequence\fP @@ -93,7 +93,7 @@ eval \`dircolors some_path/dir_colors\` .TP \fBFIFO \fP\fIcolor\-sequence\fP FIFO (名前付きパイプ) に使われる色を指定する。 - +.IP \fBPIPE\fP の同義語。 .TP \fBSOCK \fP\fIcolor\-sequence\fP @@ -104,12 +104,12 @@ FIFO (名前付きパイプ) に使われる色を指定する。 .TP \fBBLK \fP\fIcolor\-sequence\fP ブロックデバイススペシャルファイルに使われる色を指定する。 - +.IP \fBBLOCK\fP の同義語。 .TP \fBCHR \fP\fIcolor\-sequence\fP キャラクターデバイススペシャルファイルに使われる色を指定する。 - +.IP \fBCHAR\fP の同義語。 .TP \fBEXEC \fP\fIcolor\-sequence\fP @@ -117,57 +117,60 @@ FIFO (名前付きパイプ) に使われる色を指定する。 .TP \fBSUID \fP\fIcolor\-sequence\fP set\-user\-ID 属性が設定されているファイルに使われる色を設定する。 - +.IP \fBSETUID\fP の同義語。 .TP \fBSGID \fP\fIcolor\-sequence\fP set\-group\-ID 属性が設定されているファイルに使われる色を設定する。 - +.IP \fBSETGID\fP の同義語。 .TP \fBSTICKY \fP\fIcolor\-sequence\fP sticky 属性が設定されているディレクトリに使われる色を設定する。 .TP \fBSTICKY_OTHER_WRITABLE \fP\fIcolor\-sequence\fP -実行属性が設定されている他人が書き込み可能なディレクトリに使われる色を設定する。 - +Specifies the color used for an other\-writable directory with the executable +attribute set. +.IP \fBOWT\fP の同義語。 .TP \fBOTHER_WRITABLE \fP\fIcolor\-sequence\fP -実行属性が設定されていない他人が書き込み可能なディレクトリに使われる色を設定する。 - +Specifies the color used for an other\-writable directory without the +executable attribute set. +.IP \fBOWR\fP の同義語。 .TP \fBLEFTCODE \fP\fIcolor\-sequence\fP ISO\ 6429 端末 (下記参照) 以外で \fIleft code\fP に使われる色を指定する。 - +.IP \fBLEFT\fP の同義語。 .TP \fBRIGHTCODE \fP\fIcolor\-sequence\fP ISO\ 6429 端末 (下記参照) 以外で \fIright code\fP に使われる色を指定する。 - +.IP \fBRIGHT\fP の同義語。 .TP \fBENDCODE \fP\fIcolor\-sequence\fP ISO\ 6429 端末 (下記参照) 以外で \fIend code\fP に使われる色を指定する。 - +.IP \fBEND\fP の同義語。 .TP \fB*\fP\fIextension\fP \fIcolor\-sequence\fP \fIextension\fP で終るすべてのファイルに使われる色を指定する。 .TP \fB.\fP\fIextension\fP \fIcolor\-sequence\fP -\fB*\fP.\fIextension\fP と同じ。 \fIextension\fP で終るすべてのファイルに使われる色を指定する。 ピリオドは拡張子に含まれ、 -\fBemacs\fP のバックアップファイル \fB~\fP のようなピリオドで始まらない拡張子を指定することができない点に注意すること。 -この形式は古いものと考えられている。 +Same as \fB*\fP.\fIextension\fP. Specifies the color used for any file that ends +in .\fIextension\fP. Note that the period is included in the extension, which +makes it impossible to specify an extension not starting with a period, such +as \fB\(ti\fP for \fBemacs\fP backup files. This form should be considered +obsolete. .SS "ISO 6429 (ANSI) カラーシーケンス" 最近のカラー表示可能な ASCII 端末の大部分は、 ISO 6429 (ANSI) カラーシーケンスを用いる。 \fBxterm\fP や広く使われている DEC VT100 クローンを含む カラー表示できない一般的な端末の多くは、 ISO 6429 カラーコードを認識し、出力から実害なく削除するか、エミュレートする。 \fBls\fP は、カラー表示が有効であることを仮定し、ISO 6429 コードをデフォルトで使う。 - +.PP ISO 6429 カラーシーケンスは、セミコロンで区切られた数字のシーケンスで作られる。 最も一般的なコードを示す。 -.sp .RS .TS l l. @@ -193,11 +196,10 @@ l l. 47 背景色:白 (またはグレー) .TE .RE -.sp +.PP システムと表示デバイスによっては、動作しないコマンドもある。 .PP \fBls\fP は以下をデフォルトとして使う。 -.sp .TS lb l l. NORMAL 0 (ファイル名でない) 通常のテキスト @@ -212,7 +214,7 @@ BLK 44;37 ブロックデバイス CHR 44;37 キャラクターデバイス EXEC 35 実行ファイル .TE -.sp +.PP デフォルトの設定を完全に認識できない端末プログラムも少数存在する。 ディレクトリをリストした後にすべてのテキストがカラー表示されたなら、 \fBNORMAL\fP と \fBFILE\fP のコードを通常の前景色と背景色のための数値コードに変更すること。 .SS "その他の端末タイプ (高度な設定)" @@ -229,9 +231,10 @@ rightcode の目的は、単に必要な打ち込む回数を減らす (さら \fIできない\fP。 これは、 \fBNORMAL\fP の定義が何も影響を及ぼさないことを意味する。 しかし、異なった \fBENDCODE\fP を指定することで同じ効果を得ることができる。 .SS エスケープシーケンス -カラーシーケンスやファイル名の拡張子で制御文字やブランク文字を指定するために、 C 言語スタイルの \e エスケープ表記と \fBstty\fP スタイルの -^ 表記の両方を使うことができる。 C 言語スタイルの表記には以下の文字が含まれる。 -.sp +To specify control\- or blank characters in the color sequences or filename +extensions, either C\-style \e\-escaped notation or \fBstty\fP\-style +\(ha\-notation can be used. The C\-style notation includes the following +characters: .RS .TS lb l. @@ -248,26 +251,26 @@ lb l. \fI\exnnn\fP (16 進数表記の) 任意の文字 \fI\e_\fP スペース \fI\e\e\fP バックスラッシュ (\e) -\fI\e^\fP キャレット (^) +\fI\e\(ha\fP \fICaret (\(ha)\fP \fI\e#\fP ハッシュマーク (#) .TE .RE -.sp -\fIハッシュマークを最初の文字として入力する場合と同様に、 スペース、 バックスラッシュ、 -キャレット、任意の制御文字を、文字列の任意の部分に入力するためには、 エスケープが必要であることに注意すること。\fP +.PP +Note that escapes are necessary to enter a space, backslash, caret, or any +control character anywhere in the string, as well as a hash mark as the +first character. .SH ファイル .TP \fI/etc/DIR_COLORS\fP システム全体の設定ファイル。 .TP -\fI~/.dir_colors\fP +\fI\(ti/.dir_colors\fP ユーザー毎の設定ファイル。 .PP このページは fileutils\-4.1 パッケージで使われている \fBdir_colors\fP のファイル形式について説明している。 その他のバージョンでは少し違いがあるかも知れない。 .SH 注意 ISO 6429 端末で使われる \fBLEFTCODE\fP と \fBRIGHTCODE\fP のデフォルトの定義は、次のようになっている。 -.sp .RS .TS lb l. @@ -275,11 +278,10 @@ LEFTCODE \ee[ RIGHTCODE m .TE .RE -.sp +.PP \fBENDCODE\fP のデフォルトは定義されていない。 .SH 関連項目 \fBdircolors\fP(1), \fBls\fP(1), \fBstty\fP(1), \fBxterm\fP(1) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/elf.5 b/manual/LDP_man-pages/draft/man5/elf.5 deleted file mode 100644 index 214f8b23..00000000 --- a/manual/LDP_man-pages/draft/man5/elf.5 +++ /dev/null @@ -1,1376 +0,0 @@ -.\" $OpenBSD: elf.5,v 1.12 2003/10/27 20:23:58 jmc Exp $ -.\"Copyright (c) 1999 Jeroen Ruigrok van der Werven -.\"All rights reserved. -.\" -.\" %%%LICENSE_START(PERMISSIVE_MISC) -.\"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. -.\" -.\"THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 -.\" -.\" $FreeBSD: src/share/man/man5/elf.5,v 1.21 2001/10/01 16:09:23 ru Exp $ -.\" -.\" Slightly adapted - aeb, 2004-01-01 -.\" 2005-07-15, Mike Frysinger , various fixes -.\" 2007-10-11, Mike Frysinger , various fixes -.\" 2007-12-08, mtk, Converted from mdoc to man macros -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004-2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Thu Dec 16 02:17:58 JST 2004 -.\" by Yuichi SATO -.\" Updated & Modified Sat Sep 10 02:29:40 JST 2005 by Yuichi SATO -.\" Updated 2008-02-12, Akihiro MOTOKI , LDP v2.77 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.TH ELF 5 2013\-04\-17 Linux "Linux Programmer's Manual" -.SH 名前 -elf \- 実行可能リンクフォーマット (ELF) ファイルのフォーマット -.SH 書式 -.nf -.\" .B #include -\fB#include \fP -.fi -.SH 説明 -ヘッダーファイル \fI\fP は ELF 実行可能バイナリファイルのフォーマットを定義する。 -これらのファイルとしては、通常の実行可能ファイル・ 再配置可能オブジェクトファイル・コアファイル・共有ライブラリがある。 -.PP -ELF ファイルフォーマットを使う実行可能ファイルは、 ELF ヘッダーの後にプログラムヘッダーテーブルまたは セクションヘッダーテーブル -(またはその両方) が続く構成である。 ELF ヘッダーは常にファイルのオフセット 0 にある。 -プログラムヘッダーテーブルとセクションヘッダーテーブルの ファイル内でのオフセットは、ELF ヘッダーに定義されている。 この 2 -つのテーブルはファイルの残りの部分の詳細を記述する。 -.PP -.\" Applications which wish to process ELF binary files for their native -.\" architecture only should include -.\" .I -.\" in their source code. -.\" These applications should need to refer to -.\" all the types and structures by their generic names -.\" "Elf_xxx" -.\" and to the macros by -.\" ELF_xxx". -.\" Applications written this way can be compiled on any architecture, -.\" regardless of whether the host is 32-bit or 64-bit. -.\" .PP -.\" Should an application need to process ELF files of an unknown -.\" architecture, then the application needs to explicitly use either -.\" "Elf32_xxx" -.\" or -.\" "Elf64_xxx" -.\" type and structure names. -.\" Likewise, the macros need to be identified by -.\" "ELF32_xxx" -.\" or -.\" "ELF64_xxx". -.\" .PP -このヘッダーファイルは上記のヘッダーを C 言語の構造体で記述し、 また動的セクション・再配置可能セクション・シンボルテーブルの構造体も 含んでいる。 -.PP -以下の型は N ビットアーキテクチャーで使われる (N=32,64 であり \fIElfN\fP は \fIElf32\fP または \fIElf64\fP を表し、 -\fIuintN_t\fP は \fIuint32_t\fP または \fIuint64_t\fP を表す): -.in +4n -.nf - -.\" Elf32_Size Unsigned object size -ElfN_Addr 符号なしのプログラムアドレス, uintN_t -ElfN_Off 符号なしのファイルオフセット, uintN_t -ElfN_Section 符号なしのセクションインデックス, uint16_t -ElfN_Versym 符号なしのバージョンシンボル情報, uint16_t -Elf_Byte unsigned char -ElfN_Half uint16_t -ElfN_Sword int32_t -ElfN_Word uint32_t -ElfN_Sxword int64_t -ElfN_Xword uint64_t -.fi -.in -.PP -(注意: *BSD での用語は少し異なる。 \fIElf64_Half\fP は \fIElf32_Half\fP の 2 倍であり、 -\fIElf64Quarter\fP が \fIuint16_t\fP に用いられる。 混乱を避けるため、以下では、これらの型はサイズが自明な型に置き換えてある。) -.PP -このファイルフォーマットが定義する全てのデータ構造体は、 関連するクラスの "自然な" サイズと配置の指針に従う。 -必要な場合、データ構造体では明示的なパディング (padding, 詰め込み) が行なわれる。これは 4 バイトオブジェクトに対する 4 -バイト配置を保証するためや、 構造体のサイズを 4 の倍数にするためなどである。 -.PP -ELF ヘッダーは型 \fIElf32_Ehdr\fP または \fIElf64_Ehdr\fP で記述される: -.in +4n -.nf - -#define EI_NIDENT 16 - -typedef struct { - unsigned char e_ident[EI_NIDENT]; - uint16_t e_type; - uint16_t e_machine; - uint32_t e_version; - ElfN_Addr e_entry; - ElfN_Off e_phoff; - ElfN_Off e_shoff; - uint32_t e_flags; - uint16_t e_ehsize; - uint16_t e_phentsize; - uint16_t e_phnum; - uint16_t e_shentsize; - uint16_t e_shnum; - uint16_t e_shstrndx; -} ElfN_Ehdr; -.fi -.in -.PP -.\" .Bl -tag -width "e_phentsize" -フィールドは以下の意味を持つ: -.TP 12 -\fIe_ident\fP -このバイト配列は、プロセッサやファイルの他の部分には依存せずに、 ファイルを解釈 (interpret) するために指定される。 -この配列内のすべてのものは、接頭辞 \fBEI_\fP で始まるマクロの名前が付き、接頭辞 \fBELF\fP で始まる値を持つ。 以下のマクロが定義されている: -.RS 12 -.\" .Bl -tag -width "EI_VERSION" \" EI_ABIVERSION -.TP 12 -\fBEI_MAG0\fP -マジックナンバーの第 1 バイト。 \fBELFMAG0\fP で埋めなければならない。 (0: 0x7f) -.TP -\fBEI_MAG1\fP -マジックナンバーの第 2 バイト。 \fBELFMAG1\fP で埋めなければならない。 (1: \(aqE\(aq) -.TP -\fBEI_MAG2\fP -マジックナンバーの第 3 バイト。 \fBELFMAG2\fP で埋めなければならない。 (2: \(aqL\(aq) -.TP -\fBEI_MAG3\fP -マジックナンバーの第 4 バイト。 \fBELFMAG3\fP で埋めなければならない。 (3: \(aqF\(aq) -.TP -\fBEI_CLASS\fP -第 5 バイトは、このバイナリのアーキテクチャーを示す: -.RS 12 -.\" .Bl -tag -width "ELFCLASSNONE" -compact -.TP 14 -.PD 0 -\fBELFCLASSNONE\fP -このクラスは不正である。 -.TP -\fBELFCLASS32\fP -32 ビットアーキテクチャーを定義する。 ファイルと仮想アドレス空間が 4 ギガバイトまでのマシンをサポートする。 -.TP -\fBELFCLASS64\fP -64 ビットアーキテクチャーを定義する。 -.PD -.RE -.\" .El -.TP -\fBEI_DATA\fP -.\" .Bl -tag -width "ELFDATA2LSB" -compact -第 6 バイトはファイル内のプロセッサ固有データの データエンコーディングを指定する。 現在のところ以下のエンコーディングがサポートされている: -.RS 12 -.TP 14 -.PD 0 -\fBELFDATANONE\fP -不明なデータフォーマット。 -.TP -\fBELFDATA2LSB\fP -2 の補数、リトルエンディアン。 -.TP -\fBELFDATA2MSB\fP -2 の補数、ビッグエンディアン。 -.PD -.RE -.\" .El -.TP -.PD 0 -\fBEI_VERSION\fP -.\" .Bl -tag -width "EV_CURRENT" -compact -第 7 バイトは ELF 仕様のバージョン番号である: -.RS 12 -.TP 14 -\fBEV_NONE\fP -不正なバージョン。 -.TP -\fBEV_CURRENT\fP -現在のバージョン。 -.PD -.RE -.\".El -.TP -\fBEI_OSABI\fP -.\" .Bl -tag -width "ELFOSABI_STANDALONE" -compact -第 8 バイトはオブジェクトのターゲットとなるオペレーティングシステムと ABI を示す。他の ELF -構造体のフィールドには、プラットフォーム固有の意味を持つフラグや値を持つものもある。これらのフィールドの解釈は、このバイトの値によって決定される。以下に例を挙げる。 -.RS 12 -.TP 20 -.PD 0 -\fBELFOSABI_NONE\fP -.\" 0 -ELFOSABI_SYSV と同じ。 -.TP -\fBELFOSABI_SYSV\fP -.\" 0 -.\" synonym: ELFOSABI_NONE -UNIX System V ABI. -.TP -\fBELFOSABI_HPUX\fP -.\" 1 -HP\-UX ABI. -.TP -\fBELFOSABI_NETBSD\fP -.\" 2 -NetBSD ABI. -.TP -\fBELFOSABI_LINUX\fP -.\" 3 -.\" .TP -.\" .BR ELFOSABI_HURD -.\" Hurd ABI. -.\" 4 -.\" .TP -.\" .BR ELFOSABI_86OPEN -.\" 86Open Common IA32 ABI. -.\" 5 -Linux ABI. -.TP -\fBELFOSABI_SOLARIS\fP -.\" 6 -.\" .TP -.\" .BR ELFOSABI_MONTEREY -.\" Monterey project ABI. -.\" Now replaced by -.\" ELFOSABI_AIX -.\" 7 -Solaris ABI. -.TP -\fBELFOSABI_IRIX\fP -.\" 8 -IRIX ABI. -.TP -\fBELFOSABI_FREEBSD\fP -.\" 9 -FreeBSD ABI. -.TP -\fBELFOSABI_TRU64\fP -.\" 10 -.\" ELFOSABI_MODESTO -.\" 11 -.\" ELFOSABI_OPENBSD -.\" 12 -TRU64 UNIX ABI. -.TP -\fBELFOSABI_ARM\fP -.\" 97 -ARM アーキテクチャー ABI. -.TP -\fBELFOSABI_STANDALONE\fP -.\" 255 -.\" .El -スタンドアロン (組み込み) ABI. -.PD -.RE -.TP -\fBEI_ABIVERSION\fP -第 9 バイトはオブジェクトがターゲットとしている ABI のバージョンを示す。 このフィールドは互換性のない ABI -のバージョンを区別するために使われる。 このバージョン番号の解釈は、 \fBEI_OSABI\fP フィールドで識別される ABI に依存する。 -この仕様に準拠するアプリケーションでは、値 0 を使う。 -.TP -\fBEI_PAD\fP -.\" As reported by Yuri Kozlov and confirmed by Mike Frysinger, EI_BRAND is -.\" not in GABI (http://www.sco.com/developers/gabi/latest/ch4.eheader.html) -.\" It looks to be a BSDism -.\" .TP -.\" .BR EI_BRAND -.\" Start of architecture identification. -パディングの開始。 これらのバイトは予約されており、0 に設定されている。 これらを読み込むプログラムは、これらのバイトを無視すべきである。 -現在使われていないバイトに意味が与えられる場合、 \fBEI_PAD\fP の値は将来変更されるかもしれない。 -.TP -\fBEI_NIDENT\fP -.\" .El -\fIe_ident\fP 配列のサイズ。 -.RE -.TP -\fIe_type\fP -この構造体のメンバはオブジェクトファイルタイプを示す: -.RS 12 -.\" .Bl -tag -width "ET_NONE" -compact -.TP 12 -.PD 0 -\fBET_NONE\fP -不明なタイプ。 -.TP -\fBET_REL\fP -再配置可能ファイル。 -.TP -\fBET_EXEC\fP -実行可能ファイル。 -.TP -\fBET_DYN\fP -共有オブジェクト。 -.TP -\fBET_CORE\fP -コアファイル。 -.PD -.RE -.\" .El -.TP -\fIe_machine\fP -このメンバは個々のファイルに必要とされるアーキテクチャーを指定する。 例: -.RS 12 -.\" .Bl -tag -width "EM_MIPS_RS4_BE" -compact -.TP 12 -.PD 0 -\fBEM_NONE\fP -.\" 0 -不明なマシン。 -.TP -\fBEM_M32\fP -.\" 1 -AT&T WE 32100. -.TP -\fBEM_SPARC\fP -.\" 2 -Sun Microsystems SPARC. -.TP -\fBEM_386\fP -.\" 3 -Intel 80386. -.TP -\fBEM_68K\fP -.\" 4 -Motorola 68000. -.TP -\fBEM_88K\fP -.\" 5 -.\" .TP -.\" .BR EM_486 -.\" Intel 80486. -.\" 6 -Motorola 88000. -.TP -\fBEM_860\fP -.\" 7 -Intel 80860. -.TP -\fBEM_MIPS\fP -.\" 8 -.\" EM_S370 -.\" 9 -.\" .TP -.\" .BR EM_MIPS_RS4_BE -.\" MIPS RS4000 (big-endian only). Deprecated. -.\" 10 -.\" EM_MIPS_RS3_LE (MIPS R3000 little-endian) -.\" 10 -MIPS RS3000 (ビッグエンディアンのみ)。 -.TP -\fBEM_PARISC\fP -.\" 15 -HP/PA. -.TP -\fBEM_SPARC32PLUS\fP -.\" 18 -拡張命令セット付き SPARC。 -.TP -\fBEM_PPC\fP -.\" 20 -PowerPC. -.TP -\fBEM_PPC64\fP -.\" 21 -PowerPC 64\-bit. -.TP -\fBEM_S390\fP -.\" 22 -IBM S/390 -.TP -\fBEM_ARM\fP -.\" 40 -Advanced RISC Machines -.TP -\fBEM_SH\fP -.\" 42 -Renesas SuperH -.TP -\fBEM_SPARCV9\fP -.\" 43 -SPARC v9 64\-bit. -.TP -\fBEM_IA_64\fP -.\" 50 -Intel Itanium -.TP -\fBEM_X86_64\fP -.\" 62 -AMD x86\-64 -.TP -\fBEM_VAX\fP -.\" 75 -.\" EM_CRIS -.\" 76 -.\" .TP -.\" .BR EM_ALPHA -.\" Compaq [DEC] Alpha. -.\" .TP -.\" .BR EM_ALPHA_EXP -.\" Compaq [DEC] Alpha with enhanced instruction set. -DEC Vax. -.PD -.RE -.\" .El -.TP -\fIe_version\fP -.\" .Bl -tag -width "EV_CURRENT" -compact -このメンバはファイルバージョンを示す: -.RS 12 -.TP 12 -.PD 0 -\fBEV_NONE\fP -不正なバージョン。 -.TP -\fBEV_CURRENT\fP -.\" .El -現在のバージョン。 -.PD -.RE -.TP -\fIe_entry\fP -このメンバは、システムが最初に制御を渡す、 つまりプロセスを開始する仮想アドレスを指定する。 ファイルにエントリーポイントが関連付けられていない場合、 -このメンバには 0 が入る。 -.TP -\fIe_phoff\fP -このメンバはプログラムヘッダーテーブルの ファイルオフセット (バイト単位) を保持する。 ファイルにプログラムヘッダーテーブルがない場合、 -このメンバには 0 が入る。 -.TP -\fIe_shoff\fP -このメンバはセクションヘッダーテーブルの ファイルオフセット (バイト単位) を保持する。 ファイルにセクションヘッダーテーブルがない場合、 -このメンバには 0 が入る。 -.TP -\fIe_flags\fP -このメンバはファイルに関連付けられたプロセッサ固有のフラグを保持する。 フラグの名前は EF_`machine_flag' という形式である。 -現在のところフラグは定義されていない。 -.TP -\fIe_ehsize\fP -このメンバは ELF ヘッダーサイズ (バイト単位) を保持する。 -.TP -\fIe_phentsize\fP -このメンバはこのファイルのプログラムヘッダーテーブルの 1 エントリーあたりのサイズ (バイト単位) を保持する; 全てのエントリーは同じサイズである。 -.TP -\fIe_phnum\fP -このメンバはプログラムヘッダーテーブルにあるエントリーの数を保持する。 よって \fIe_phentsize\fP と \fIe_phnum\fP -の積がテーブルサイズ (バイト単位) になる。 ファイルにプログラムヘッダーがない場合、 \fIe_phnum\fP は値 0 を保持する。 -.IP -.\" This is a Linux extension, added in Linux 2.6.34. -.\" .Bl -tag -width "PN_XNUM" -プログラムヘッダーテーブルのエントリー数が \fBPN_XNUM\fP (0xffff) 以上の場合、 -このメンバは \fBPN_XNUM\fP (0xffff) になり、プログラムヘッダーテーブルの -エントリーの実際の数は、セクションヘッダーテーブルの最初のエントリーの -\fIsh_info\fP メンバに格納される。それ以外の場合、セクションヘッダーテーブルの -最初のエントリーの \fIsh_info\fP メンバには値 0 が格納される。 -.RS 12 -.TP 9 -\fBPN_XNUM\fP -\fIe_phnum\fP が保持できる最大値を表し、 0xffff に定義されている。 \fIe_phnum\fP -はプログラムヘッダーの実際の数がどこに割り当てられているかを示す。 -.PD -.RE -.\" .El -.IP -.TP -\fIe_shentsize\fP -このメンバはセクションヘッダーのサイズ (バイト単位) を保持する。 セクションヘッダーはセクションヘッダーテーブルの 1 つのエントリーである; -全てのエントリーは同じサイズである。 -.TP -\fIe_shnum\fP -このメンバはセクションヘッダーテーブルにあるエントリーの数を保持する。 よって \fIe_shentsize\fP と \fIe_shnum\fP -の積はセクションヘッダーテーブルのサイズ (バイト単位) になる。 ファイルにセクションヘッダーテーブルがない場合、 \fIe_shnum\fP は値 0 -を保持する。 -.IP -セクションヘッダーテーブルのエントリー数が \fBSHN_LORESERVE\fP (0xff00) 以上の場合、 -\fIe_shnum\fP には値 0 が入り、セクションヘッダーテーブルのエントリーの実際の数は -セクションヘッダーテーブルの最初のエントリーの \fIsh_size\fP メンバに格納される。 -それ以外の場合、セクションヘッダーテーブルの最初のエントリーの \fIsh_info\fP メンバ -には値 0 が格納される。 -.TP -\fIe_shstrndx\fP -このメンバはセクション名文字列テーブルに関連付けられたエントリーの セクションヘッダーテーブルインデックスを保持する。 -ファイルにセクション名文字列テーブルがない場合、 このメンバは値 \fBSHN_UNDEF\fP を保持する。 \fBSHN_UNDEF\fP. -.IP -セクション名前文字列テーブルのインデックスが \fBSHN_LORESERVE\fP (0xff00) 以上の -場合、このメンバには \fBSHN_XINDEX\fP (0xffff) が入り、セクション名前文字列 -テーブルの実際のインデックスはセクションヘッダーテーブルの最初のエントリーの -\fIsh_link\fP メンバに格納される。それ以外の場合、セクションヘッダーテーブルの -最初のエントリーの \fIsh_link\fP メンバには値 0 が格納される。 -.RS 12 -.\" .Bl -tag -width "SHN_LORESERVE" -.TP 14 -\fBSHN_UNDEF\fP -この値は未定義・存在しない・無関係その他、 意味のないセクションの参照であることを表す。 例えば、セクション番号 \fBSHN_UNDEF\fP -に関連づけて「定義」されたシンボルは、「未定義」なシンボルである。 -.TP -\fBSHN_LORESERVE\fP -この値は予約済みのインデックス領域の下限を指定する。 -.TP -\fBSHN_LOPROC\fP -この値以上で \fBSHN_HIPROC\fP 以下の値はプロセッサ固有の意味に予約されている。 -.TP -\fBSHN_HIPROC\fP -この値以下で \fBSHN_HIPROC\fP 以上の値はプロセッサ固有の意味に予約されている。 -.TP -\fBSHN_ABS\fP -この値は対応する参照の絶対値を指定する。 例えば、セクション番号 \fBSHN_ABS\fP に関連づけられたシンボルは絶対値を保持し、再配置に影響されない。 -.TP -\fBSHN_COMMON\fP -このセクションに関連して定義されたシンボルは、 Fortran の COMMON や C の未割り当て external 変数のような、 -共通シンボルである。 -.TP -\fBSHN_HIRESERVE\fP -この値は予約されたインデックスの範囲の上限を指定する。 \fBSHN_LORESERVE\fP と \fBSHN_HIRESERVE\fP は含まれる。 -この値はセクションヘッダーテーブルを参照しない。 つまり、セクションヘッダーテーブルは 予約されたインデックスのエントリーを \fI含まない 。\fP -.RE -.\" .El -.\" .El -.PP -実行可能ファイルまたは共有オブジェクトファイルのプログラムヘッダーテーブルは、 システムによるプログラム実行準備に必要な、 -セグメント等の情報を記述する構造体の配列である。 オブジェクトファイルの \fIセグメント\fP には 1 つ以上の \fIセクション\fP が含まれる。 -プログラムヘッダーは実行可能ファイルと共有オブジェクトファイルでのみ意味を持つ。 ファイルは自身のプログラムヘッダーサイズを ELF ヘッダーの -\fIe_phentsize\fP メンバと \fIe_phnum\fP メンバで指定する。 ELF プログラムヘッダーは \fIElf32_Phdr\fP 型または -\fIElf64_Phdr\fP 型で記述される (どちらになるかはアーキテクチャー依存): -.in +4n -.nf - -typedef struct { - uint32_t p_type; - Elf32_Off p_offset; - Elf32_Addr p_vaddr; - Elf32_Addr p_paddr; - uint32_t p_filesz; - uint32_t p_memsz; - uint32_t p_flags; - uint32_t p_align; -} Elf32_Phdr; -.fi -.in -.in +4n -.nf - -typedef struct { - uint32_t p_type; - uint32_t p_flags; - Elf64_Off p_offset; - Elf64_Addr p_vaddr; - Elf64_Addr p_paddr; - uint64_t p_filesz; - uint64_t p_memsz; - uint64_t p_align; -} Elf64_Phdr; -.fi -.in -.PP -.\" .Bl -tag -width "p_offset" -32 ビットと 64 ビットのプログラムヘッダーの主な違いは、構造体における \fIp_flags\fP メンバの位置にある。 -.TP 12 -\fIp_type\fP -.\" .Bl -tag -width "PT_DYNAMIC" -Phdr 構造体のこのメンバは、 この配列要素がどのような種類のセグメントを記述しているか、 またはこの配列要素の情報をどのように解釈するか、を表す。 -.RS 12 -.TP 12 -\fBPT_NULL\fP -この配列要素は使用されておらず、その他のメンバの値は未定義である。 これにより、このプログラムヘッダーのエントリーは無視される。 -.TP -\fBPT_LOAD\fP -この配列要素は \fIp_filesz\fP と \fIp_memsz\fP で記述されるロード可能セグメントを指定する。 -このファイルからのバイトデータが、このメモリーセグメントの先頭からマップされる。 セグメントのメモリーサイズ \fISy\fPp_memsz がファイルサイズ -\fISy\fPp_filesz より大きい場合、 「余った」バイトは値 0 となり、 そのセグメント初期化データの後ろに置かれると定められている。 -ファイルサイズはメモリーサイズより大きくてはいけない。 プログラムヘッダーテーブルのロード可能セグメントエントリーは、 \fIp_vaddr\fP -メンバの昇順にソートされて出現する。 -.TP -\fBPT_DYNAMIC\fP -この配列要素は動的リンク情報を指定する。 -.TP -\fBPT_INTERP\fP -この配列要素は、インタープリターとして起動されるパス名 (ヌル文字終端) の位置とサイズを指定する。 このセグメント型は -(共有オブジェクトにもあるかも知れないが) 実行可能ファイルでのみ意味を持つ。 ただし、このセグメント型は 1 つのファイルに 2 -回以上出現してはならない。 もし存在する場合、このセグメント型は 全てのロード可能セグメントエントリーより前になければならない。 -.TP -\fBPT_NOTE\fP -この配列要素は補足情報 (auxiliary information) の位置とサイズを指定する。 -.TP -\fBPT_SHLIB\fP -このセグメント型は予約されているが、意味は指定されていない。 この型の配列要素を保持するプログラムは ABI に準拠しない。 -.TP -\fBPT_PHDR\fP -この配列要素は、もし存在しているならば、 ファイルおよびプログラムのメモリーイメージ双方における -プログラムヘッダーテーブル自身の位置とサイズを指定する。 このセグメント型は 1 つのファイルに 2 回以上出現してはならない。 -さらに、このセグメント型が存在してもよいのは、プログラムヘッダーテーブルが プログラムのメモリーイメージの一部である場合のみである。 -もし存在する場合、これは全てのロード可能セグメントエントリーより 前になければならない。 -.TP -\fBPT_LOPROC\fP -この値以上で \fBPT_HIPROC\fP 以下の値はプロセッサ固有の意味に予約されている。 -.TP -\fBPT_HIPROC\fP -この値以下で \fBPT_LOPROC\fP 以上の値はプロセッサ固有の意味に予約されている。 -.TP -\fBPT_GNU_STACK\fP -.\" .El -GNU 拡張であり、Linux カーネルが \fIp_flags\fP のメンバーにセットされたフラグ経由でスタックの状態を制御するために使用する。 -.RE -.TP -\fIp_offset\fP -このメンバは、セグメントの先頭バイトがある (ファイル先頭からの) オフセットを保持する。 -.TP -\fIp_vaddr\fP -このメンバは、セグメントの先頭バイトがある メモリーの仮想アドレスを保持する。 -.TP -\fIp_paddr\fP -物理アドレスが意味をもつシステムでは、 このメンバはセグメントの物理アドレスとして予約されている。 BSD ではこのメンバは使用されない。0 -でなければならない。 -.TP -\fIp_filesz\fP -このメンバはセグメントのファイルイメージのバイト数を保持する。 これは 0 でもよい。 -.TP -\fIp_memsz\fP -このメンバはセグメントのメモリーイメージのバイト数を保持する。 これは 0 でもよい。 -.TP -\fIp_flags\fP -.\" .Bl -tag -width "PF_X" -compact -このメンバはセグメントに関連するフラグのビットマスクを保持する: -.RS 12 -.TP -.PD 0 -\fBPF_X\fP -実行可能セグメント。 -.TP -\fBPF_W\fP -書き込み可能セグメント. -.TP -\fBPF_R\fP -読み込み可能セグメント。 -.PD -.RE -.\" .El -.IP -テキストセグメントは一般にフラグ \fBPF_X\fP と \fBPF_R\fP を持つ。 データセグメントは一般に \fBPF_X\fP, \fBPF_W\fP, -\fBPF_R\fP を持つ。 -.TP -\fIp_align\fP -.\" .El -このメンバは、セグメントがメモリーおよびファイルにおいて配置 (align) される値を保持する。 -ロード可能プロセスセグメントは、ページサイズを法として \fIp_vaddr\fP と \fIp_offset\fP と合同でなければならない -(訳注:「p_vaddr mod ページサイズ = p_offset mod ページサイズ」 でなければならない)。。 0 と 1 -という値は配置が必要ないことを意味する。 それ以外の場合、 \fIp_align\fP は正で 2 の整数乗でなければならず、 \fIp_vaddr\fP は -\fIp_align\fP を法として \fIp_offset\fP と合同でなければならない (訳注:「p_vaddr mod p_align = -p_offset mod p_align」でなければならない)。 -.PP -ファイルのセクションヘッダーテーブルには、 全てのファイルセクションの場所が記述されている。 セクションヘッダーテーブルは \fIElf32_Shdr\fP -構造体または \fIElf64_Shdr\fP 構造体の配列である。 ELF ヘッダーの \fIe_shoff\fP メンバはファイルの先頭から -セクションヘッダーテーブルへのバイトオフセットである。 \fIe_shnum\fP はセクションヘッダーテーブルに含まれるエントリーの数を保持する。 -\fIe_shentsize\fP は各エントリーのサイズ (バイト単位) を保持する。 -.PP -.\" .Bl -tag -width "SHN_LORESERVE" -セクションヘッダーテーブルインデックスは、この配列の添字である。 -いくつかのセクションヘッダーテーブルインデックスは予約されている。予約されて -いるのは、最初のエントリーと、\fBSHN_LORESERVE\fP と \fBSHN_HIRESERVE\fP の間の -インデックスである。 -最初のエントリーは、ELF 拡張で \fIe_phnum\fP, \fIe_shnum\fP, \fIe_strndx\fP に使用 -される。それ以外の場合、最初のエントリーの各フィールドには 0 が設定される。 -オブジェクトファイルにはこれらの特別なインデックスに対応するセクションはない。 -.RS -.TP 14 -\fBSHN_UNDEF\fP -この値は、未定義 (undefined)、不足 (missing)、無関係 (irrelevant)、その他無意味なセクション参照を示す。 -.TP -\fBSHN_LORESERVE\fP -この値は予約済みのインデックス領域の下限を指定する。 -.TP -\fBSHN_LOPROC\fP -この値以上で \fBSHN_HIPROC\fP 以下の値はプロセッサ固有の意味に予約されている。 -.TP -\fBSHN_HIPROC\fP -この値以下で \fBSHN_HIPROC\fP 以上の値はプロセッサ固有の意味に予約されている。 -.TP -\fBSHN_ABS\fP -この値は対応する参照の絶対値を指定する。 例えば、セクション番号 \fBSHN_ABS\fP に関連して定義されているシンボルは、 -絶対値を保持しているので、再配置に影響されない。 -.TP -\fBSHN_COMMON\fP -このセクションに関連して定義されているシンボルは、 FORTRAN の COMMON や C の未割り当て外部変数のような共通シンボルである。 -.TP -\fBSHN_HIRESERVE\fP -この値は予約済みのインデックス領域の上限を指定する。 システムは \fBSHN_LORESERVE\fP と \fBSHN_HIRESERVE\fP -を含む範囲を予約する。 セクションヘッダーテーブルは予約されたインデックスに対応するエントリーを持たない。 -.RE -.\" .El -.PP -セクションヘッダーは以下の構造体を持つ: -.in +4n -.nf - -typedef struct { - uint32_t sh_name; - uint32_t sh_type; - uint32_t sh_flags; - Elf32_Addr sh_addr; - Elf32_Off sh_offset; - uint32_t sh_size; - uint32_t sh_link; - uint32_t sh_info; - uint32_t sh_addralign; - uint32_t sh_entsize; -} Elf32_Shdr; -.fi -.in -.in +4n -.nf - -typedef struct { - uint32_t sh_name; - uint32_t sh_type; - uint64_t sh_flags; - Elf64_Addr sh_addr; - Elf64_Off sh_offset; - uint64_t sh_size; - uint32_t sh_link; - uint32_t sh_info; - uint64_t sh_addralign; - uint64_t sh_entsize; -} Elf64_Shdr; -.fi -.in -.PP -.\" .Bl -tag -width "sh_addralign" -32 ビットと 64 ビットのセクションヘッダーには実際の違いはない。 -.TP 10 -\fIsh_name\fP -このメンバはセクション名を定める。 この値はセクションヘッダー文字列テーブルセクションのインデックスであり、 ヌル文字で終端された文字列の場所を示す。 -.TP -\fIsh_type\fP -.\" .Bl -tag -width "SHT_PROGBITS" -このメンバはセクションの内容と意味が含まれるカテゴリーを示す。 -.RS 10 -.TP 15 -\fBSHT_NULL\fP -この値はセクションヘッダーが不活性であることを示す。 これは関連するセクションを持たない。 このセクションヘッダーの他のメンバは、未定義の値を持つ。 -.TP -\fBSHT_PROGBITS\fP -このセクションはプログラムにより定義される情報を保持する。 この情報の形式と意味は、ひとえにプログラムによって決定される。 -.TP -\fBSHT_SYMTAB\fP -このセクションはシンボルテーブルを保持する。 一般には \fBSHT_SYMTAB\fP はリンク編集のためのシンボルを提供するが、 動的リンクにも使われる。 -完全なシンボルテーブルとして、動的リンクには不要な 多くのシンボルを保持できる。 オブジェクトファイルも \fBSHT_DYNSYM\fP -セクションを持つことができる。 -.TP -\fBSHT_STRTAB\fP -このセクションは文字列テーブルを保持する。 オブジェクトファイルは複数の文字列テーブルセクションを持つことができる。 -.TP -\fBSHT_RELA\fP -このセクションは明示的な加数 (addend) を持つ再配置エントリーを保持する。 再配置エントリーの型は、オブジェクトファイルの 32 -ビットクラスでは \fIElf32_Rela\fP である。 オブジェクトファイルは複数の再配置セクションを持つことができる。 -.TP -\fBSHT_HASH\fP -このセクションはシンボルハッシュテーブルを保持する。 動的リンクされるオブジェクトは、 シンボルハッシュテーブルを含んでいなければならない。 -オブジェクトファイルは 1 つのハッシュテーブルのみを持つことができる。 -.TP -\fBSHT_DYNAMIC\fP -このセクションは動的リンクの情報を保持する。 オブジェクトファイルは 1 つの動的セクションのみを持つことができる。 -.TP -\fBSHT_NOTE\fP -このセクションはファイルに何らかの印を付ける情報を保持する。 -.TP -\fBSHT_NOBITS\fP -このタイプのセクションはファイルの領域を使わないという以外は、 \fBSHT_PROGBITS\fP と似ている。 このセクションは 1 バイトも含まないが、 -\fIsh_offset\fP メンバは概念的なファイルオフセットを持つ。 -.TP -\fBSHT_REL\fP -このセクションは明示的な加数を持たない再配置オフセットを保持する。 再配置オフセットの型は、オブジェクトファイルの 32 ビットクラスでは -\fIElf32_Rel\fP である。 オブジェクトファイルは複数の再配置セクションを持つことができる。 -.TP -\fBSHT_SHLIB\fP -このセクションは予約されているが、意味は指定されていない。 -.TP -\fBSHT_DYNSYM\fP -このセクションは動的リンクシンボルの最小セットを保持する。 オブジェクトファイルは \fBSHT_SYMTAB\fP セクションも含むことができる。 -.TP -\fBSHT_LOPROC\fP -この値以上で \fBSHT_HIPROC\fP 以下の範囲はプロセッサ固有の意味に予約されている。 -.TP -\fBSHT_HIPROC\fP -この値以下で \fBSHT_LOPROC\fP 以上の範囲はプロセッサ固有の意味に予約されている。 -.TP -\fBSHT_LOUSER\fP -この値はアプリケーションプログラムのために予約される インデックス範囲の下限を指定する。 -.TP -\fBSHT_HIUSER\fP -.\" .El -この値はアプリケーションプログラムのために予約される インデックス範囲の上限を指定する。 \fBSHT_LOUSER\fP から \fBSHT_HIUSER\fP -の間のセクションタイプは、 現在または将来のシステム定義セクションタイプと衝突することなく、 アプリケーションで使用することができる。 -.RE -.TP -\fIsh_flags\fP -.\" .Bl -tag -width "SHF_EXECINSTR" -compact -様々な属性を記述するための 1 ビットのフラグをサポートするセクション。 フラグビットが \fIsh_flags\fP -に設定された場合、そのセクションについての属性は "オン" になる。 それ以外の場合、属性が "オフ" であるか属性が適用されない。 未定義の属性は 0 -に設定される。 -.RS 10 -.TP 15 -\fBSHF_WRITE\fP -このセクションはプロセス実行中に書き込み可能なデータを含む。 -.TP -\fBSHF_ALLOC\fP -このセクションはプロセス実行中にメモリーを使用する。 制御セクションの中には、オブジェクトファイルのメモリーイメージには 存在しないものもある。 -そうしたセクションの場合、この属性はオフである。 -.TP -\fBSHF_EXECINSTR\fP -このセクションは実行可能なマシン命令を含む。 -.TP -\fBSHF_MASKPROC\fP -このマスクに含まれる全てのビットはプロセッサ固有の意味に予約されている。 -.RE -.\" .El -.TP -\fIsh_addr\fP -このセクションがプロセスのメモリーイメージにある場合、 このメンバはセクションの最初のバイトが存在するアドレスを保持する。 それ以外の場合、このメンバは -0 である。 -.TP -\fIsh_offset\fP -このメンバの値は、ファイルの先頭からセクションの最初のバイトへの バイトオフセットを保持する。 セクションタイプ \fBSHT_NOBITS\fP -はファイルの領域を全く使用せず、このタイプの \fIsh_offset\fP メンバはファイルの概念的な位置を示す。 -.TP -\fIsh_size\fP -このメンバはセクションのサイズ (バイト単位) を保持する。 セクションタイプが \fBSHT_NOBITS\fP でない限り、そのセクションはファイル中の -\fIsh_size\fP バイトを使用する。 タイプが \fBSHT_NOBITS\fP のセクションはサイズが 0 でないが、ファイルの領域を使用しない。 -.TP -\fIsh_link\fP -このメンバは、セクションヘッダーテーブルインデックスリンクを保持する。 この解釈はセクションタイプに依存する。 -.TP -\fIsh_info\fP -このメンバは追加情報を保持する。 この解釈はセクションタイプに依存する。 -.TP -\fIsh_addralign\fP -アドレス配置に制約があるセクションもある。 セクションが倍長語 (doubleword) を保持する場合、 -システムは全てのセクションについて倍長語の配置を保証しなければならない。 つまり、 \fIsh_addr\fP の値は \fIsh_addralign\fP -の値を法として 0 と合同でなければならない (訳注:「sh_addr mod sh_addralign = 0 でなければならない)。 2 の 0 -乗と正の整数乗のみが許可される。 0 または 1 はセクションの配置に制約がないことを意味する。 -.TP -\fIsh_entsize\fP -.\" .El -シンボルテーブルのような固定サイズエントリーのテーブルを保持する セクションもある。 このようなセクションでは、 このメンバは各エントリーのサイズ -(バイト単位) を表す。 このメンバが 0 の場合、 そのセクションは固定サイズエントリーのテーブルを保持しない。 -.PP -.\" .Bl -tag -width ".shstrtab" -さまざまなセクションにプログラム情報・制御情報が保持される: -.TP 10 -\&\fI.bss\fP -このセクションはプログラムのメモリーイメージに配置される 非初期化データを保持する。 定義上、システムはプログラムの実行開始時に、データを 0 -で初期化する。 このセクションのタイプは \fBSHT_NOBITS\fP である。 属性タイプは \fBSHF_ALLOC\fP と \fBSHF_WRITE\fP -である。 -.TP -\&\fI.comment\fP -このセクションはバージョン制御情報を保持する。 このセクションのタイプは \fBSHT_PROGBITS\fP である。 属性タイプは使用されない。 -.TP -\&\fI.ctors\fP -このセクションは C++ コンストラクター関数への初期化されたポインターを保持する。 このセクションのタイプは \fBSHT_PROGBITS\fP である。 -属性タイプは \fBSHF_ALLOC\fP と \fBSHF_WRITE\fP である。 -.TP -\&\fI.data\fP -このセクションはプログラムのメモリーイメージに配置される 初期化済みデータを保持する。 このセクションのタイプは \fBSHT_PROGBITS\fP -である。 属性タイプは \fBSHF_ALLOC\fP と \fBSHF_WRITE\fP である。 -.TP -\&\fI.data1\fP -このセクションはプログラムのメモリーイメージに配置される 初期化済みデータを保持する。 このセクションのタイプは \fBSHT_PROGBITS\fP -である。 属性タイプは \fBSHF_ALLOC\fP と \fBSHF_WRITE\fP である。 -.TP -\&\fI.debug\fP -このセクションはシンボリックデバッグ用の情報を保持する。 その内容は指定されていない。 このセクションのタイプは \fBSHT_PROGBITS\fP -である。 属性タイプは使用されない。 -.TP -\&\fI.dtors\fP -このセクションは C++ デストラクタ関数への初期化されたポインターを保持する。 このセクションのタイプは \fBSHT_PROGBITS\fP である。 -属性タイプは \fBSHF_ALLOC\fP と \fBSHF_WRITE\fP である。 -.TP -\&\fI.dynamic\fP -このセクションは動的リンク情報を保持する。 このセクションの属性は \fBSHF_ALLOC\fP ビットを含む。 \fBSHF_WRITE\fP -ビットが設定されるか否かはプロセッサによる。 このセクションのタイプは \fBSHT_DYNAMIC\fP である。 上記の属性を参照すること。 -.TP -\&\fI.dynstr\fP -このセクションは動的リンクに必要な文字列を保持する。 最も一般的には、この文字列はシンボルテーブルエントリーと 関連づけられた名前を表す。 -このセクションのタイプは \fBSHT_STRTAB\fP である。 使用される属性タイプは \fBSHF_ALLOC\fP である。 -.TP -\&\fI.dynsym\fP -このセクションは動的リンクシンボルテーブルを保持する。 このセクションのタイプは \fBSHT_DYNSYM\fP である。 使用される属性タイプは -\fBSHF_ALLOC\fP である。 -.TP -\&\fI.fini\fP -このセクションはプロセス終了コードに置かれる実行可能命令を保持する。 プロセスが正常に終了した場合、システムはこのセクションにある -コードを配置して実行する。 このセクションのタイプは \fBSHT_PROGBITS\fP である。 使用される属性タイプは \fBSHF_ALLOC\fP と -\fBSHF_EXECINSTR\fP である。 -.TP -\&\fI.gnu.version\fP -このセクションはバージョンシンボルテーブルを保持する。 その内容は \fIElfN_Half\fP 要素の配列である。 このセクションのタイプは -\fBSHT_GNU_versym\fP である。 使用される属性タイプは \fBSHF_ALLOC\fP である。 -.TP -\&\fI.gnu.version_d\fP -このセクションはバージョンシンボルの定義を保持する。 その内容は \fIElfN_Verdef\fP 構造体のテーブルである。 このセクションのタイプは -\fBSHT_GNU_verdef\fP である。 使用される属性タイプは \fBSHF_ALLOC\fP である。 -.TP -\&\fI.gnu.version_r\fP -このセクションはバージョンシンボルが必要とする要素を保持する。 その内容は \fIElfN_Verneed\fP 構造体のテーブルである。 -このセクションのタイプは \fBSHT_GNU_versym\fP である。 使用される属性タイプは \fBshf_alloc\fP である。 -.TP -\&\fI.got\fP -このセクションはグローバルオフセットテーブルを保持する。 このセクションのタイプは \fBSHT_PROGBITS\fP である。 -属性はプロセッサ毎に異なる。 -.TP -\&\fI.hash\fP -このセクションはシンボルハッシュテーブルを保持する。 セクションのタイプは \fBSHT_HASH\fP である。 使用される属性は \fBSHF_ALLOC\fP -である。 -.TP -\&\fI.init\fP -このセクションはプロセス初期化コードに配置される実行可能命令を保持する。 プログラムが実行を開始すると、 -システムはメインプログラムエントリーポイントを呼び出す前に、 このセクションにあるコードを配置して実行する。 このセクションはのタイプは -\fBSHT_PROGBITS\fP である。 使用される属性は \fBSHF_ALLOC\fP と \fBSHF_EXECINSTR\fP である。 -.TP -\&\fI.interp\fP -このセクションはプログラムインタープリターのパス名を保持する。 ファイルにこのセクションを含むロード可能セグメントがある場合、 そのセクションの属性には -\fBSHF_ALLOC\fP ビットが含まれる。 それ以外の場合このビットはオフになる。 このセクションのタイプは \fBSHT_PROGBITS\fP である。 -.TP -\&\fI.line\fP -このセクションはシンボリックデバッグのための行番号情報を保持する。 ここにはプログラムソースコードとマシンコードの対応関係が記述される。 -内容は指定されていない。 このセクションのタイプは \fBSHT_PROGBITS\fP である。 属性タイプは使用されない。 -.TP -\&\fI.note\fP -このセクションは "Note Section" 形式で情報を保持する。このセクションのタイプ -は \fBSHT_NOTE\fP である。属性タイプは使用されない。通常 OpenBSD ネイティブ実行 -可能ファイルは自身を識別するために \fI.note.openbsd.ident\fP セクションを持つ。 -これによりカーネルは、ファイルをロードする際に 互換 ELF バイナリエミュレーショ -ンテストを回避できる。 -.TP -\&\fI.note.GNU\-stack\fP -このセクションは Linux のオブジェクトファイルで スタック属性を宣言するのに使用される。 セクションのタイプは \fBSHT_PROGBITS\fP -である。使用される属性は \fBSHF_EXECINSTR\fP だけである。この属性は GNU リンカーに対して オブジェクトファイルが実行可能なスタック -(executable stack) を必要とする 示すものである。 -.TP -\&\fI.plt\fP -このセクションは手続き (procedure) リンクテーブルを保持する。 このセクションのタイプは \fBSHT_PROGBITS\fP である。 -属性はプロセッサ毎に異なる。 -.TP -\&\fI.relNAME\fP -このセクションは以下に記述される再配置情報を保持する。 ファイルが再配置を含むロード可能セグメントを持っている場合、 このセクションの属性は -\fBSHF_ALLOC\fP ビットを含む。 それ以外の場合、そのビットはオフである。 慣例として、 "NAME" -は再配置が適用されるセクションが指定される。 よって \fB.text\fP についての再配置セクションは、通常は \fB.rel.text\fP -という名前を持つ。 このセクションのタイプは \fBSHT_REL\fP である。 -.TP -\&\fI.relaNAME\fP -このセクションは以下に記述される再配置情報を保持する。 ファイルが再配置を含むロード可能セグメントを持っている場合、 このセクションの属性は -\fBSHF_ALLOC\fP ビットを含む。 それ以外の場合、そのビットはオフである。 慣例として、 "NAME" -は再配置が適用されるセクションが指定される。 よって \fB.text\fP についての再配置セクションは、通常は \fB.rela.text\fP -という名前を持つ。 このセクションのタイプは \fBSHT_RELA\fP である。 -.TP -\&\fI.rodata\fP -このセクションはリードオンリーのデータを保持する。 このデータはプロセスイメージにおける書き込み不可能なセグメントに置かれる。 このセクションのタイプは -\fBSHT_PROGBITS\fP である。 使用される属性は \fBSHF_ALLOC\fP である。 -.TP -\&\fI.rodata1\fP -このセクションはリードオンリーのデータを保持する。 このデータはプロセスイメージにおける書き込み不可能なセグメントに置かれる。 このセクションのタイプは -\fBSHT_PROGBITS\fP である。 使用される属性は \fBSHF_ALLOC\fP である。 -.TP -\&\fI.shstrtab\fP -このセクションはセクション名を保持する。 このセクションのタイプは \fBSHT_STRTAB\fP である。 属性タイプは使用されない。 -.TP -\&\fI.strtab\fP -このセクションは文字列を保持する。 最も一般的なのは、シンボルテーブルエントリーに関連づけられた 名前を表す文字列である。 -ファイルがシンボル文字列テーブルを含むロード可能セグメントを持つ場合、 セクションの属性は \fBSHF_ALLOC\fP ビットを含む。 -それ以外の場合、そのビットはオフである。 このセクションのタイプは \fBSHT_STRTAB\fP である。 -.TP -\&\fI.symtab\fP -このセクションはシンボルテーブルを保持する。 ファイルがシンボルテーブルを含むロード可能セグメントを持つ場合、 セクションの属性は -\fBSHF_ALLOC\fP ビットを含む。 それ以外の場合、ビットはオフである。 このセクションのタイプは \fBSHT_SYMTAB\fP である。 -.TP -\&\fI.text\fP -.\" .El -このセクションはプログラムの "テキスト" または実行可能命令を保持する。 セクションのタイプは \fBSHT_PROGBITS\fP である。 -使用される属性は \fBSHF_ALLOC\fP と \fBSHF_EXECINSTR\fP である。 -.PP -文字列テーブルセクションはヌル文字で終端されたキャラクター配列 (通常文字列と呼ばれるもの) を保持する。 オブジェクトファイルはこれらの文字列を -シンボル名とセクション名を表すために使う。 文字列は、文字列テーブルセクションへのインデックスとして参照される。 インデックス 0 -の最初のバイトは、ヌルバイト (\(aq\e0\(aq) を 保持すると定義されている。 -同様に文字列テーブルの最後のバイトもヌル文字を保持すると定義されている。 これは全ての文字列がヌルバイトで終端されていることを保証するためである。 -.PP -オブジェクトファイルのシンボルテーブルは、 プログラムのシンボル定義と参照を配置または再配置するのに 必要な情報を保持する。 -.in +4n -.nf - -typedef struct { - uint32_t st_name; - Elf32_Addr st_value; - uint32_t st_size; - unsigned char st_info; - unsigned char st_other; - uint16_t st_shndx; -} Elf32_Sym; -.fi -.in -.in +4n -.nf - -typedef struct { - uint32_t st_name; - unsigned char st_info; - unsigned char st_other; - uint16_t st_shndx; - Elf64_Addr st_value; - uint64_t st_size; -} Elf64_Sym; -.fi -.in -.PP -.\" .Bl -tag -width "st_value" -32 ビット版と 64 ビット版は同じメンバを持ち、単に順番が異なるだけである。 -.TP 10 -\fIst_name\fP -このメンバはオブジェクトファイルのシンボル文字列テーブルの インデックスを保持する。 シンボル文字列テーブルはシンボル名の文字表現を保持する。 この値が -0 でない場合、シンボル名を得るための文字テーブルインデックスを表す。 それ以外の場合、シンボルテーブルは名前を持たない。 -.TP -\fIst_value\fP -このメンバは関連づけられたシンボルの値を表す。 -.TP -\fIst_size\fP -多くのシンボルにはそれに関連づけられたサイズがある。 シンボルがサイズを持たない場合、またはサイズが不明な場合、 このメンバは 0 である。 -.TP -\fIst_info\fP -.\" .Bl -tag -width "STT_SECTION" -このメンバはシンボルのタイプとバインディング (binding) 属性を指定する: -.RS 10 -.TP 12 -\fBSTT_NOTYPE\fP -シンボルのタイプが定義されていない。 -.TP -\fBSTT_OBJECT\fP -シンボルはデータオブジェクトに関連づけられている。 -.TP -\fBSTT_FUNC\fP -シンボルは関数またはその他の実行コードに関連づけられている。 -.TP -\fBSTT_SECTION\fP -シンボルはセクションに関連づけられている。 このタイプのシンボルテーブルエントリーは、 主として再配置のために存在し、通常は \fBSTB_LOCAL\fP -バインディングを持つ。 -.TP -\fBSTT_FILE\fP -慣例として、シンボルの名前は オブジェクトファイルに関連づけられたソースファイルの名前を指定する。 ファイルシンボルは \fBSTB_LOCAL\fP -バインディングを持ち、そのセクションインデックスは \fBSHN_ABS\fP である。 ファイルシンボルは、ファイルに他の \fBSTB_LOCAL\fP -シンボルがある場合は、それよりも先に来る。 -.TP -\fBSTT_LOPROC\fP -この値以上で \fBSTT_HIPROC\fP 以下の範囲はプロセッサ固有の意味に予約されている。 -.TP -\fBSTT_HIPROC\fP -.\" .El -.\" .Bl -tag -width "STB_GLOBAL" -この値以下で \fBSTT_LOPROC\fP 以上の範囲はプロセッサ固有の意味に予約されている。 -.TP -\fBSTB_LOCAL\fP -局所的シンボルはその定義を含むオブジェクトファイルの外からは見えない。 同じ名前の局所的シンボルは、お互いに影響を受けることなく、 -複数のファイルに存在できる。 -.TP -\fBSTB_GLOBAL\fP -大域的シンボルは結びつけられている全てのオブジェクトファイルから見える。 1 つのファイルで大域的シンボルが定義されていたら、 -他のファイルでは同じシンボルへの参照は未定義でなければならない。 -.TP -\fBSTB_WEAK\fP -弱シンボルは大域的シンボルに似ているが、その定義は優先度が低い。 -.TP -\fBSTB_LOPROC\fP -この値以上で \fBSTB_HIPROC\fP 以下の範囲はプロセッサ固有の意味に予約されている。 -.TP -\fBSTB_HIPROC\fP -この値以下で \fBSTB_LOPROC\fP 以上の範囲はプロセッサ固有の意味に予約されている。 -.IP -バインディングとタイプフィールドを パックしたりアンパックしたりするマクロがある: -.IP -\fBELF32_ST_BIND\fP(info) または \fBELF64_ST_BIND\fP(info) \fIst_info\fP -の値からバインディングを取り出す。 -.IP -\fBELF32_ST_TYPE\fP(info) または \fBELF64_ST_TYPE\fP(info) -.br -\fIst_info\fP の値からタイプを取り出す。 -.IP -\fBELF32_ST_INFO\fP(bind, type) または \fBELF64_ST_INFO\fP(bind, type) -.br -バインディングとタイプを \fIst_info\fP の値に変換する。 -.RE -.\" .El -.TP -\fIst_other\fP -.\" .Bl -tag -width "STV_PROTECTED" -このメンバはシンボルの visibility (見える範囲) を規定する。 -.RS 10 -.TP 16 -.PD 0 -\fBSTV_DEFAULT\fP -デフォルトのシンボル visibility ルール。 -.TP -\fBSTV_INTERNAL\fP -プロセッサ固有の隠しクラス。 -.TP -\fBSTV_HIDDEN\fP -シンボルは他のモジュールからは利用できない。 -.TP -\fBSTV_PROTECTED\fP -横取りできず (not preemptible)、公開されない。 -.PD -.PP -visibility 種別を抽出するためのマクロがある。 -.PP -\fBELF32_ST_VISIBILITY\fP(other) または \fBELF64_ST_VISIBILITY\fP(other) -.RE -.\" .El -.TP -\fIst_shndx\fP -.\" .El -各シンボルテーブルエントリーは、いくつかのセクションに関連して "定義されている"。 -このメンバは関連するセクションヘッダーテーブルインデックスを保持する。 -.PP -再配置はシンボル参照とシンボル定義を結合するプロセスである。 再配置可能ファイルはセクションの内容をどのように修正するかに関する -情報を持たなければならない。 これにより、実行可能ファイルと共有オブジェクトファイルは -プロセスのプログラムイメージについての正しい情報を持つことができる。 再配置エントリーは以下のようなデータである。 -.PP -加数を必要としない再配置構造体。 -.in +4n -.nf - -typedef struct { - Elf32_Addr r_offset; - uint32_t r_info; -} Elf32_Rel; -.fi -.in -.in +4n -.nf - -typedef struct { - Elf64_Addr r_offset; - uint64_t r_info; -} Elf64_Rel; -.fi -.in -.PP -加数を必要とする再配置構造体。 -.in +4n -.nf - -typedef struct { - Elf32_Addr r_offset; - uint32_t r_info; - int32_t r_addend; -} Elf32_Rela; -.fi -.in -.in +4n -.nf - -typedef struct { - Elf64_Addr r_offset; - uint64_t r_info; - int64_t r_addend; -} Elf64_Rela; -.fi -.in -.\" .Bl -tag -width "r_offset" -.TP 12 -\fIr_offset\fP -このメンバは再配置動作が適用される位置を与える。 再配置可能ファイルの場合、この値はセクションの先頭から 再配置で影響を受ける格納単位 (storage -unit) までのバイトオフセットである。 実行可能ファイルまたは共有オブジェクトの場合、 この値は再配置で影響を受ける格納単位の仮想アドレスである。 -.TP -\fIr_info\fP -このメンバは、再配置が行われなければならないシンボルテーブルインデックスと、 適用される再配置のタイプの両方を与える。 -再配置タイプはプロセッサ毎に異なる。 テキストが再配置エントリーの再配置タイプ またはシンボルテーブルインデックスを参照している場合、 -それぞれエントリーの \fIr_info\fP メンバに対して、それぞれ \fBELF[32|64]_R_TYPE\fP と \fBELF[32|64]_R_SYM\fP -を適用した結果を意味する。 -.TP -\fIr_addend\fP -.\" .El -このメンバは定数の加数を指定する。 この加数は再配置可能フィールドに格納される値を計算するために使われる。 -.PP -\&.dynamic セクションは、関連する動的リンク情報を保持している 一連の構造体を保持する。 d_tag メンバは d_un の解釈を制御する。 -.in +4n -.nf - -typedef struct { - Elf32_Sword d_tag; - union { - Elf32_Word d_val; - Elf32_Addr d_ptr; - } d_un; -} Elf32_Dyn; -extern Elf32_Dyn _DYNAMIC[]; -.fi -.in -.in +4n -.nf - -typedef struct { - Elf64_Sxword d_tag; - union { - Elf64_Xword d_val; - Elf64_Addr d_ptr; - } d_un; -} Elf64_Dyn; -extern Elf64_Dyn _DYNAMIC[]; -.fi -.in -.\" .Bl -tag -width "d_tag" -.TP 10 -\fId_tag\fP -.\" .Bl -tag -width "DT_SYMBOLIC" -このメンバは以下の値を持つことができる: -.RS 10 -.TP 12 -\fBDT_NULL\fP -動的セクションの終りのマーク -.TP -\fBDT_NEEDED\fP -必要なライブラリの名前への文字列テーブルオフセット -.TP -\fBDT_PLTRELSZ\fP -PLT 再配置 (reloc) テーブルのサイズ (バイト単位) -.TP -\fBDT_PLTGOT\fP -PLT と GOT (または何れか一方) のアドレス -.TP -\fBDT_HASH\fP -シンボルハッシュテーブルのアドレス -.TP -\fBDT_STRTAB\fP -文字列テーブルのアドレス -.TP -\fBDT_SYMTAB\fP -シンボルテーブルのアドレス -.TP -\fBDT_RELA\fP -Rela 再配置テーブルのアドレス -.TP -\fBDT_RELASZ\fP -Rela テーブルのサイズ (バイト単位) -.TP -\fBDT_RELAENT\fP -Rela テーブルエントリーのサイズ (バイト単位) -.TP -\fBDT_STRSZ\fP -文字列テーブルのサイズ (バイト単位) -.TP -\fBDT_SYMENT\fP -シンボルテーブルエントリーのサイズ (バイト単位) -.TP -\fBDT_INIT\fP -初期化関数のアドレス -.TP -\fBDT_FINI\fP -終了関数のアドレス -.TP -\fBDT_SONAME\fP -共有オブジェクトの名前への文字列テーブルオフセット -.TP -\fBDT_RPATH\fP -ライブラリ検索パスへの文字列テーブルオフセット (推奨されない) -.TP -\fBDT_SYMBOLIC\fP -リンカーがシンボルの実行可能ファイルより前に この共有オブジェクトを検索した場合は、警告を出す。 -.TP -\fBDT_REL\fP -Rel 再配置テーブルのアドレス -.TP -\fBDT_RELSZ\fP -Rel テーブルのサイズ (バイト単位) -.TP -\fBDT_RELENT\fP -Rel テーブルエントリーのサイズ (バイト単位) -.TP -\fBDT_PLTREL\fP -PLT が参照する再配置テーブルのタイプ (Rela または Rel) -.TP -\fBDT_DEBUG\fP -デバッグのために使用されている。内容は定義されていない。 -.TP -\fBDT_TEXTREL\fP -これが指定されていない場合、 書き込み不可のセグメントには再配置は適用されない。 -.TP -\fBDT_JMPREL\fP -PLT 専用の再配置エントリーのアドレス -.TP -\fBDT_BIND_NOW\fP -実行可能ファイルに制御を譲る前に、 全ての再配置を処理するように動的リンカーに指示する。 -.TP -\fBDT_RUNPATH\fP -ライブラリ検索パスへの文字列テーブルオフセット -.TP -\fBDT_LOPROC\fP -プロセッサ固有の意味の開始 -.TP -\fBDT_HIPROC\fP -プロセッサ固有の意味の終了 -.RE -.\" .El -.TP -\fId_val\fP -このメンバは様々な意味に解釈される整数値である。 -.TP -\fId_ptr\fP -このメンバはプログラムの仮想アドレスを表す。 これらのアドレスを解釈する際に、 実際のアドレスは元々のファイルの値と -メモリーの基底アドレスから計算される。 ファイルにはこれらのアドレスを修正するための 再配置エントリーを含めてはならない。 -.TP -\fI_DYNAMIC\fP -.\" .El -\&.dynamic セクションにある全ての動的構造体を含む配列。 これは自動的にリンカーに渡される。 -.SH 注意 -.\" OpenBSD -.\" ELF support first appeared in -.\" OpenBSD 1.2, -.\" although not all supported platforms use it as the native -.\" binary file format. -ELF は System V で初めて登場した。 ELF 自体は System V で初めて登場した。 ELF フォーマットは採択された標準である。 -.PP -.\" .SH AUTHORS -.\" The original version of this manual page was written by -.\" .An Jeroen Ruigrok van der Werven -.\" .Aq asmodai@FreeBSD.org -.\" with inspiration from BSDi's -.\" .Bsx -.\" .Nm elf -.\" man page. -\fIe_phnum\fP, \fIe_shnum\fP, \fIe_strndx\fP に対する拡張は、いずれも Linux での拡張で -ある。Sun, BSD, AMD64 もこれに対応している。詳しい情報は、関連項目を参照。 -.SH 関連項目 -\fBas\fP(1), \fBgdb\fP(1), \fBld\fP(1), \fBobjdump\fP(1), \fBexecve\fP(2), \fBcore\fP(5) -.PP -Hewlett\-Packard, \fIElf\-64 Object File Format\fP. -.PP -Santa Cruz Operation, \fISystem V Application Binary Interface\fP. -.PP -UNIX System Laboratories, "Object Files", \fIExecutable and Linking Format -(ELF)\fP. -.PP -Sun Microsystems, \fILinker and Libraries Guide\fP. -.PP -AMD64 ABI Draft, \fISystem V Application Binary Interface AMD64 Architecture -Processor Supplement\fP. -.PP -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/filesystems.5 b/manual/LDP_man-pages/draft/man5/filesystems.5 deleted file mode 100644 index b65cbc18..00000000 --- a/manual/LDP_man-pages/draft/man5/filesystems.5 +++ /dev/null @@ -1,166 +0,0 @@ -.\" Copyright 1996 Daniel Quinlan (Daniel.Quinlan@linux.org) -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" 2007-12-14 mtk Added Reiserfs, XFS, JFS. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Ueyama Rui -.\" all rights reserved. -.\" Translated Tue Aug 19 21:56:35 JST 1997 -.\" by Ueyama Rui -.\" Modified Wed Oct 10 11:07:33 JST 2001 -.\" by Yuichi SATO -.\" Updated Fri Dec 21 JST 2001 by Kentaro Shirakata -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH FILESYSTEMS 5 2014\-01\-15 Linux "Linux Programmer's Manual" -.nh -.SH 名前 -filesystems \- Linux のファイルシステム種別: minix, ext, ext2, ext3, ext4, -Reiserfs, XFS, JFS, xia, msdos, umsdos, vfat, ntfs, proc, nfs, iso9660, -hpfs, sysv, smb, ncpfs -.SH 説明 -\fBproc\fP ファイルシステムが慣習どおりに \fI/proc\fP にマウントされている場合、 現在のカーネルがどのファイルシステムをサポートしているか -知るためにはファイル \fI/proc/filesystems\fP を見ればよい。 詳細は \fBproc\fP(5) 参照。 -必要なファイルシステムが現在のカーネルにサポートされて いない場合、適切なモジュールを組み込むか、それもだめならば カーネルを再コンパイルすること。 - -ファイルシステムを使うためには、 \fIマウント\fP する必要がある。 \fBmount\fP(8) を参照のこと。 - -以下は利用可能なファイルシステムのうち、いくつかの簡単な説明である。 -.TP 10 -\fBminix\fP -Minix オペレーティングシステムのファイルシステム。 Linux で動いた最初のファイルシステムでもある。これには多くの欠点がある。 -パーティションのサイズが最大 64MB であること、短いファイル名しか使えない、タイムスタンプが一つだけである、などなど。 フロッピーや RAM -ディスクに便利なのでまだ残っている。 -.TP -\fBext\fP -\fBminix\fP ファイルシステムの手の込んだ拡張である。これは第二拡張ファイルシステム (second extended filesystem : -\fBext2\fP) に完全にとって代わられ、カーネル 2.1.21 で取り除かれた。 -.TP -\fBext2\fP -Linux の高性能なファイルシステムである。これは固定ディスクだけではなく リムーバブルディスクにもよく使われる。 拡張ファイルシステム -(\fBext\fP) の発展として第二拡張ファイルシステム (\fBext2\fP) が設計された。この \fBext2\fP は Linux -のファイルシステムの中で (スピードおよび CPU の使用量の面で) 最も よいパフォーマンスを発揮する。 -.TP -\fBext3\fP -ext2 ファイルシステムにジャーナル機能をつけたものである。 -ext2 と ext3 は簡単に行きつ戻りつできる。 -.TP -\fBext4\fP -ext3 の改良版であり、性能と信頼性のかなりの改善と、ボリューム、ファイル、 -ディレクトリのサイズの上限の大幅な拡張が行われている。 -.TP -\fBReiserfs\fP -Hans Reiser によって設計されたジャーナリングファイルシステムである。 -カーネル 2.4.1 で Linux に統合された。 -.TP -\fBXFS\fP -SGI により開発されたジャーナリングファイルシステムである。 -カーネル 2.4.20 で Linux に統合された。 -.TP -\fBJFS\fP -IBM により開発されたジャーナリングファイルシステムである。 -カーネル 2.4.24 で Linux に統合された。 -.TP -\fBxiafs\fP -は Minix ファイルシステムの拡張で、より安定し安全なファイルシステムとして 設計、実装された。これは、いらない複雑さは避けつつ必要な基本的機能を -備えている。 \fBxia\fP ファイルシステムは、もはや開発もメンテナンスも行われていない。 カーネル 2.1.21 で取り除かれた。 -.TP -\fBmsdos\fP -は DOS や Windows、いくらかの OS/2 コンピュータが使っているファイル システムである。 この \fBmsdos\fP -ファイルシステムでは「8 文字の名前+ピリオド+3 文字の拡張子」より 長いファイル名はつけることができない。 -.TP -\fBumsdos\fP -は DOS ファイルシステムを拡張した Linux のファイルシステムである。 これは DOS ファイルシステムのもとで、長いファイル名や -UID/GID、POSIX 形式の パーミッション、(デバイスファイルや名前付きパイプなどの) 特殊ファイルを 使えるようにしたものである。DOS -との互換性がある。 -.TP -\fBvfat\fP -は Microsoft Windows95 と Windows NT が使う DOS ファイルシステムの拡張である。 -長いファイル名が使えるようになっている。 -.TP -\fBntfs\fP -Microsoft Windows の FAT ファイルシステム (VFAT, FAT32) を置き換えるものである。 -信頼性、性能、容量効率の向上に加えて、ACL、ジャーナリング、暗号化などの機能が -追加されている。 -.TP -\fBproc\fP -はカーネルデータ構造へのインターフェイスとなる疑似ファイルシステムである。 これは \fI/dev/kmem\fP -を読んで解釈することの代わりとして使うことができる。 このファイルシステムのファイルはディスクスペースを使用しない。 \fBproc\fP(5) -を参照のこと。 -.TP -\fBiso9660\fP -は ISO 9660 標準に沿った CD\-ROM のファイルシステムである。 -.RS -.TP -\fBHigh Sierra\fP -Linux はハイシェラ (High Sierra) をサポートしている。これは ISO 9660 標準が 決まるより前に使われていた CD\-ROM -ファイルシステムである。Linux の \fBiso9660\fP ファイルシステムサポートがハイシェラファイルシステムを自動で 認識することができる。 -.TP -\fBRock Ridge\fP -Linux はロックリッジ (Rock Ridge) 変換プロトコルで規定された システム使用 -共有プロトコルもサポートしている。これは UNIX ホ ストのファイルを \fBiso9660\fP -ファイルシステムでより詳しく記述するために使用され、長いファイル名や UID/GID、 -POSIX 形式のパーミッション、デバイスファイル などの情報を提供する。Linux の -\fBiso9660\fP ファイルシステムサポートがロックリッジファイルシステムを自動で -認識することができる。 -.RE -.TP -\fBhpfs\fP -は OS/2 で使われる高性能ファイルシステム(High Performance Filesystem)である。 -このファイルシステムはドキュメントが入手できないため、 Linux では読み込み専用 (Read\-only) でしか使用できない。 -.TP -\fBsysv\fP -は SystemV/Coherent ファイルシステムの Linux での実装である。 Xenix, SystemV/386, Coherent -各ファイルシステムを使うことができる。 -.TP -\fBnfs\fP -はネットワークファイルシステムである。 離れたコンピュータのディスクを使うことができる。 -.TP -\fBsmb\fP -は SMB プロトコルをサポートしたネットワークファイルシステムである。 Windows for Workgroups, Windows NT, Lan -Manager が使っている。 -.sp -\fBsmb\fP ファイルシステムを使うためには ksmbfs パッケージに含まれる 特殊なマウントプログラムが必要である。 ksmbfs は -.UR ftp://sunsite.unc.edu\:/pub\:/Linux\:/system\:/Filesystems\:/smbfs -.UE -にある。 -.TP -\fBncpfs\fP -は NCP プロトコルをサポートしたファイルシステムである。Novell NetWare が 使っている。 -.sp -\fBncpfs\fP を使うためには -.UR ftp://linux01.gwdg.de\:/pub\:/ncpfs -.UE -にある特殊なプログラムが必要である。 -.SH 関連項目 -\fBproc\fP(5), \fBfsck\fP(8), \fBmkfs\fP(8), \fBmount\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/ftpusers.5 b/manual/LDP_man-pages/draft/man5/ftpusers.5 index 0ff891bb..db3e2831 100644 --- a/manual/LDP_man-pages/draft/man5/ftpusers.5 +++ b/manual/LDP_man-pages/draft/man5/ftpusers.5 @@ -29,14 +29,20 @@ .SH 名前 ftpusers \- FTP デーモン経由でのログインを許さないユーザーのリスト .SH 説明 -\fBftpusers\fP はテキストファイルで、File Transfer Protocol (FTP) サーバーデーモン -を利用してのログインを許さないユーザーをリストしたものである。 このファイルは単にシステム管理のためだけでなく、 TCP/IP -ネットワーク環境でのセキュリティを向上させるのにも利用できる。 通常は、ftp を用いた作業を行わないユーザーや、 FTP -サーバーデーモン経由でのログインを許すには 権限が大きすぎるユーザーをリストしておく。 このようなユーザーには、例えば root, daemon, -bin, uucp, news などが含まれる。 お使いの FTP サーバーデーモンが \fBftpusers\fP -を用いない場合は、そのデーモンのドキュメントを読んで、 特定のユーザーのアクセスをブロックするやり方を学んでおくことをすすめる。 Washington -University FTP サーバーデーモン (wuftpd) と Professional FTP デーモン (proftpd) とは、 -\fBftpusers\fP を利用することがわかっている。 +The text file \fBftpusers\fP contains a list of users that may not log in using +the File Transfer Protocol (FTP) server daemon. This file is used not +merely for system administration purposes but also for improving security +within a TCP/IP networked environment. +.PP +The \fBftpusers\fP file will typically contain a list of the users that either +have no business using ftp or have too many privileges to be allowed to log +in through the FTP server daemon. Such users usually include root, daemon, +bin, uucp, and news. +.PP +If your FTP server daemon doesn't use \fBftpusers\fP, then it is suggested that +you read its documentation to find out how to block access for certain +users. Washington University FTP server Daemon (wuftpd) and Professional +FTP Daemon (proftpd) are known to make use of \fBftpusers\fP. .SS フォーマット \fBftpusers\fP のフォーマットは非常に単純であり、 アカウント名 (またはユーザー名) を各行に書くだけである。 # で始まる行は無視される。 .SH ファイル @@ -44,6 +50,5 @@ University FTP サーバーデーモン (wuftpd) と Professional FTP デーモ .SH 関連項目 \fBpasswd\fP(5), \fBproftpd\fP(8), \fBwuftpd\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/gai.conf.5 b/manual/LDP_man-pages/draft/man5/gai.conf.5 index 755328e2..5f231a81 100644 --- a/manual/LDP_man-pages/draft/man5/gai.conf.5 +++ b/manual/LDP_man-pages/draft/man5/gai.conf.5 @@ -26,7 +26,7 @@ .\" all rights reserved. .\" Translated 2013-07-31, Akihiro MOTOKI .\" -.TH GAI.CONF 5 2013\-02\-13 Linux "Linux Programmer's Manual" +.TH GAI.CONF 5 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 gai.conf \- getaddrinfo(3) 設定ファイル .SH 説明 @@ -42,9 +42,11 @@ gai.conf \- getaddrinfo(3) 設定ファイル 現在のところ、認識されるキーワードは以下の通りである。 .TP \fBlabel\fP \fInetmask\fP \fIprecedence\fP -指定した値は RFC\ 3484 の並び替えで使用されるラベルテーブルに追加される。 設定ファイルに \fBlabel\fP -定義が一つでもあれば、デフォルトテーブルは使用されない。 デフォルトテーブルのすべてのラベル定義はきちんと管理されていれば、 -重複が発生するはずだからである。 ラベル行では、 キーワードの後に、 ネットワークマスクとラベル値が含まれていなければならない。 +The value is added to the label table used in the RFC\ 3484 sorting. If any +\fBlabel\fP definition is present in the configuration file, the default table +is not used. All the label definitions of the default table which are to be +maintained have to be duplicated. Following the keyword, the line has to +contain a network mask and a precedence value. .TP \fBprecedence\fP \fInetmask\fP \fIprecedence\fP このキーワードは \fBlabel\fP に似ているが、 指定された値を RFC\ 3484 で規定された優先度テーブルに追加する点が異なる。 @@ -60,10 +62,14 @@ IPv4 アドレス用の RFC\ 3484 スコープテーブルに別のルールを で説明されているスコープ ID が使用される。 これらのデフォルト値の変更が必要になることはまずないだろう。 .SH ファイル \fI/etc/gai.conf\fP -.SH 例 +.SH バージョン +.\" Added in 2006 +The \fIgai.conf\fP file is supported by glibc since version 2.5. +.SH EXAMPLES RFC\ 3484 で規定されているデフォルトテーブルは、 以下の設定ファイルを指定するのと同じである。 - -.nf +.PP +.in +4n +.EX label ::1/128 0 label ::/0 1 label 2002::/16 2 @@ -74,13 +80,13 @@ precedence ::/0 40 precedence 2002::/16 30 precedence ::/96 20 precedence ::ffff:0:0/96 10 -.fi +.EE +.in .\" .SH AUTHOR .\" Ulrich Drepper .\" .SH 関連項目 \fBgetaddrinfo\fP(3), RFC\ 3484 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/group.5 b/manual/LDP_man-pages/draft/man5/group.5 index f417309f..80d800d2 100644 --- a/manual/LDP_man-pages/draft/man5/group.5 +++ b/manual/LDP_man-pages/draft/man5/group.5 @@ -34,19 +34,21 @@ .\" Translated 1997-08-30, Ueyama Rui .\" Modified 2005-02-20, Akihiro MOTOKI .\" -.TH GROUP 5 2010\-10\-21 Linux "Linux Programmer's Manual" +.TH GROUP 5 2020\-04\-11 Linux "Linux Programmer's Manual" .SH 名前 group \- ユーザーグループのファイル .SH 説明 \fI/etc/group\fP ファイルは、そのシステムのグループを定義するテキスト ファイルである。 1 行に 1 エントリーで、各行の形式は以下のとおりである。 -.sp -.RS +.PP +.in +4n +.EX group_name:password:GID:user_list -.RE -.sp +.EE +.in +.PP 各フィールドは以下の通りである: -.TP 12 +.TP \fIgroup_name\fP グループの名前。 .TP @@ -59,13 +61,14 @@ group_name:password:GID:user_list \fIuser_list\fP このグループのメンバーのユーザー名のリスト。 ユーザー名はコンマで区切られる。 .SH ファイル -/etc/group +\fI/etc/group\fP .SH バグ -4.2BSD の \fBinitgroups\fP(3) には次のように書かれている: 誰も \fI/etc/group\fP -を最新の状態に保ってはいないようである。 +As the 4.2BSD \fBinitgroups\fP(3) man page says: no one seems to keep +\fI/etc/group\fP up\-to\-date. .SH 関連項目 -\fBlogin\fP(1), \fBnewgrp\fP(1), \fBgetgrent\fP(3), \fBgetgrnam\fP(3), \fBpasswd\fP(5) +\fBchgrp\fP(1), \fBgpasswd\fP(1), \fBgroups\fP(1), \fBlogin\fP(1), \fBnewgrp\fP(1), +\fBsg\fP(1), \fBgetgrent\fP(3), \fBgetgrnam\fP(3), \fBgshadow\fP(5), \fBpasswd\fP(5), +\fBvigr\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/host.conf.5 b/manual/LDP_man-pages/draft/man5/host.conf.5 deleted file mode 100644 index 6812414d..00000000 --- a/manual/LDP_man-pages/draft/man5/host.conf.5 +++ /dev/null @@ -1,130 +0,0 @@ -.\" Copyright (c) 1997 Martin Schulze (joey@infodrom.north.de) -.\" Much of the text is copied from the manpage of resolv+(8). -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" 2003-08-23 Martin Schulze Updated according to glibc 2.3.2 -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2000-2003 Yuichi SATO -.\" all rights reserved. -.\" Translated Sun Sep 24 06:18:14 JST 2000 -.\" by Yuichi SATO -.\" Updated & Modified Sun Sep 7 17:51:03 JST 2003 -.\" by Yuichi SATO -.\" -.TH HOST.CONF 5 2003\-08\-23 Linux "Linux System Administration" -.SH 名前 -host.conf \- レゾルバ設定ファイル -.SH 説明 -ファイル \fI/etc/host.conf\fP には、レゾルバライブラリの詳細な設定情報が含まれている。 このファイルには、1 行毎に 1 -つの設定キーワードと それに続く適切な設定情報がなければならない。 認識されるキーワードは \fIorder\fP, \fItrim\fP, \fImulti\fP, -\fInospoof\fP, \fIspoof\fP, \fIreorder\fP である。 各キーワードを、以下で説明する。 -.TP -\fIorder\fP -このキーワードは、ホストのルックアップ方式を指定する。 このキーワードの後には、コンマで分けた 1 つ以上のルックアップ方式が続かなくてはならない。 -使用可能な方式は \fIbind\fP, \fIhosts\fP, \fInis\fP である。 -.TP -\fItrim\fP -このキーワードは、2 回以上リストすることができる。 毎回、このキーワードの後には、 ドットではじまる 1 -つ以上のドメイン名のリストを続けなければならない。 ドメイン名はコロン (\(aq:\(aq)、セミコロン (\(aq;\(aq)、コンマ -(\(aq,\(aq) で区切る。 このキーワードが設定されると、resolv+ ライブラリは DNS でレゾルブされた -すべてのホスト名の後ろから与えられたドメイン名を自動的に取り去る。 このキーワードはローカルなホストとドメインで使用することを意図している。 -(関連した注意 : NIS または hosts ファイルで集められたホスト名に trim は影響しない。 hosts -ファイルの各エントリーの最初のホスト名を、 完全なドメイン名付きのものにするかしないかは、 ホストごとのインストールポリシーにあわせて -適切に選択する必要がある。注意すること。) -.TP -\fImulti\fP -有効な値は \fIon\fP と \fIoff\fP である。 \fIon\fP に設定された場合、最初のエントリーのみを例外として、 resolv+ ライブラリは -\fI/etc/hosts\fP ファイルに現れるホストに対して全ての有効なアドレスを返そうとする。 大きな hosts ファイルを持つサイトでは、 -この設定は非常な性能の低下を招くので、 デフォルトでは \fIoff\fP である。 -.TP -\fInospoof\fP -有効な値は \fIon\fP と \fIoff\fP である。 \fIon\fP に設定された場合、resolv+ ライブラリは \fBrlogin\fP と \fBrsh\fP -のセキュリティを向上させるためホスト名の偽装を防止しようとする。 これは、「ホストアドレスのルックアップを行った後、 resolv+ -はそのアドレスに対してホスト名のルックアップを行い、 もし 2 つのホスト名が一致しなかった場合は、クエリーは失敗する。」 というように動作する。 -デフォルトの値は \fIoff\fP である。 -.TP -\fIspoofalert\fP -有効な値は \fIon\fP と \fIoff\fP である。 このオプションが \fIon\fP に設定されていて、 \fInospoof\fP オプションも (on に) -設定されている場合、 resolv+ は syslog 機能を通じてエラーに関する警告のログをとる。 デフォルトの値は \fIoff\fP である。 -.TP -\fIspoof\fP -有効な値は \fIoff\fP, \fInowarn\fP, \fIwarn\fP である。 このオプションを \fIoff\fP に設定すると、偽装されたアドレスを許可して、 -syslog 機能を通じた警告を発しない。 このオプションを \fIwarn\fP に設定すると、resolv+ -はセキュリティを高めるためにホスト名の偽装を防止し、 syslog 機能を通じてエラーに関する警告のログをとる。 このオプションを \fInowarn\fP -に設定すると、resolv+ はセキュリティを高めるためにホスト名の偽装を防止するが、 syslog 機能を通じた警告は発しない。 -このオプションを何も設定しない場合は、 \fInowarn\fP を設定したのと同じになる。 -.TP -\fIreorder\fP -有効な値は \fIon\fP と \fIoff\fP である。 \fIon\fP に設定されると、 \fBgethostbyname (3)\fP -が実行されるとき、resolv+ ライブラリは、ローカルな (つまり、同じサブネットにある) アドレスが最初にリストされるように -ホストアドレスを並べ変える。 すべてのルックアップ方式に対して並べ変えが行われる。 デフォルトの値は、 \fIoff\fP である。 -.SH 環境変数 -\fI/etc/host.conf\fP で設定されている動作を、ユーザーが上書きできる 6 つの環境変数がある。 -.TP -\fBRESOLV_HOST_CONF\fP -この変数を設定すると、 \fI/etc/host.conf\fP の代りに読み込むファイルを設定できる。 -.TP -\fBRESOLV_SERV_ORDER\fP -\fIorder\fP コマンドを上書きする。 -.TP -\fBRESOLV_SPOOF_CHECK\fP -\fIspoof\fP コマンドを解析するのと同じ方式で、 \fInospoof\fP, \fIspoofalert\fP, \fIspoof\fP コマンドを上書きできる。 -有効な値は \fIoff\fP, \fInowarn\fP, \fIwarn\fP である。 -.TP -\fBRESOLV_MULTI\fP -\fImulti\fP コマンドを上書きする。 -.TP -\fBRESOLV_REORDER\fP -\fIreorder\fP コマンドを上書きする。 -.TP -\fBRESOLV_ADD_TRIM_DOMAINS\fP -コロン (\(aq:\(aq)、セミコロン (\(aq;\(aq)、コンマ (\(aq,\(aq) で区切った ドット (\(aq.\(aq) -で始まるドメイン名のリスト。 ホスト名から取り去るドメイン名のリストに追加する。 -.TP -\fBRESOLV_OVERRIDE_TRIM_DOMAINS\fP -コロン (\(aq:\(aq)、セミコロン (\(aq;\(aq)、コンマ (\(aq,\(aq) で区切った ドット (\(aq.\(aq) -で始まるドメイン名のリスト。 ホスト名から取り去るドメイン名のリストを上書きする。 \fItrim\fP コマンドを上書きする。 -.SH ファイル -.TP -\fI/etc/host.conf\fP -リゾルバ設定ファイル -.TP -\fI/etc/resolv.conf\fP -リゾルバ設定ファイル -.TP -\fI/etc/hosts\fP -ローカルの hosts データベース -.SH 注意 -元々の実装に比べて以下のような違いがある。 新しいコマンド \fIspoof\fP と新しい環境変数 \fBRESOLV_SPOOF_CHECK\fP は、引き数 -\fIoff\fP, \fInowarn\fP, \fIwarn\fP をとる。 コメントは行頭だけではなく、どこに書いてもよい。 -.SH 関連項目 -\fBgethostbyname\fP(3), \fBhostname\fP(7), \fBnamed\fP(8), \fBresolv+\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/hosts.5 b/manual/LDP_man-pages/draft/man5/hosts.5 index 73759aad..e6c1a859 100644 --- a/manual/LDP_man-pages/draft/man5/hosts.5 +++ b/manual/LDP_man-pages/draft/man5/hosts.5 @@ -36,7 +36,7 @@ .\" by Yuichi SATO .\" Updated & Modified Sat Aug 31 05:49:00 JST 2002 by Yuichi SATO .\" -.TH HOSTS 5 2002\-06\-16 Linux "Linux Programmer's Manual" +.TH HOSTS 5 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 hosts \- ホスト名の静的なルックアップテーブル .SH 書式 @@ -49,11 +49,15 @@ hosts \- ホスト名の静的なルックアップテーブル IPアドレス 正式なホスト名 [エイリアス...] .RE .PP -エントリーのフィールドは、空白またはタブ (複数でも可) で区切られる。 "#" 文字から行末までのテキストはコメントとして無視される。 -ホスト名は英数字、 マイナス記号 ("\-")、 ピリオド (".") を含むことができる。 ホスト名は英文字 (alphabetic -character) で始まって、 英数字 (alphanumeric characte) で終わらなければならない。 -エイリアスはオプションであり、名前の変更、別のスペル、 短いホスト名、一般的に使われるホスト名 (例えば \fIlocalhost\fP) -などのために用意されている。 +The IP address can conform to either IPv4 or IPv6. Fields of the entry are +separated by any number of blanks and/or tab characters. Text from a "#" +character until the end of the line is a comment, and is ignored. Host +names may contain only alphanumeric characters, minus signs ("\-"), and +periods ("."). They must begin with an alphabetic character and end with an +alphanumeric character. Optional aliases provide for name changes, +alternate spellings, shorter hostnames, or generic hostnames (for example, +\fIlocalhost\fP). If required, a host may have two separate entries in this +file; one for each version of the Internet Protocol (IPv4 and IPv6). .PP Berkeley Internet Name Domain (BIND) サーバは、 UNIX システムのためのインターネットネームサーバを実装している。 これは、 \fI/etc/hosts\fP @@ -79,28 +83,37 @@ NIS を使用しているサイトは、ホストテーブルを NIS ホスト このファイルへの変更は通常すぐに反映される。但し、アプリケーション によりファイルの内容がキャッシュされている場合はこの限りではない。 .SS 歴史的な経緯 ホストテーブルのフォーマットはその後変更されているが、 元々のフォーマットは RFC\ 952 には記載されている。 - +.PP DNS の登場以前、ホストテーブルは、駆け出したばかりのインターネットにおける ホスト名解決の唯一の方法であった。 実際、このファイルは Network Information Control Center (NIC) によって 管理される公式ホストデータベースから作成することができた。 しかし、非公式なエイリアスや不明なホストを扱えるように、 最新に保つためのローカルな変更が頻繁に必要とされた。 NIC は既に hosts.txt を管理していないが、 これを書いている (2000 年頃の) 時点で調べてみると、 WWW 上に歴史的な hosts.txt が存在する。 92, 94, 95 年のものが見つかった。 -.SH 例 -.nf +.SH EXAMPLES +.EX +# The following lines are desirable for IPv4 capable hosts 127.0.0.1 localhost + +# 127.0.1.1 is often used for the FQDN of the machine +127.0.1.1 thishost.mydomain.org thishost 192.168.1.10 foo.mydomain.org foo 192.168.1.13 bar.mydomain.org bar 146.82.138.7 master.debian.org master 209.237.226.90 www.opensource.org -.fi -.SH 関連項目 -\fBhostname\fP(1), \fBresolver\fP(3), \fBresolver\fP(5), \fBhostname\fP(7), \fBnamed\fP(8) +# The following lines are desirable for IPv6 capable hosts +::1 localhost ip6\-localhost ip6\-loopback +ff02::1 ip6\-allnodes +ff02::2 ip6\-allrouters +.EE +.SH 関連項目 +\fBhostname\fP(1), \fBresolver\fP(3), \fBhost.conf\fP(5), \fBresolv.conf\fP(5), +\fBresolver\fP(5), \fBhostname\fP(7), \fBnamed\fP(8) +.PP .\" .SH AUTHOR .\" This manual page was written by Manoj Srivastava , .\" for the Debian GNU/Linux system. Internet RFC\ 952 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/hosts.equiv.5 b/manual/LDP_man-pages/draft/man5/hosts.equiv.5 deleted file mode 100644 index 956ee3ab..00000000 --- a/manual/LDP_man-pages/draft/man5/hosts.equiv.5 +++ /dev/null @@ -1,57 +0,0 @@ -.\" Copyright (c) 1995 Peter Tobias -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" This file may be distributed under the GNU General Public License. -.\" %%%LICENSE_END -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2000 NAKANO Takeo all rights reserved. -.\" Translated 2000-03-12, NAKANO Takeo -.\" Modified 2005-02-20, Akihiro MOTOKI -.\" -.TH HOSTS.EQUIV 5 2003\-08\-24 Linux "Linux Programmer's Manual" -.SH 名前 -/etc/hosts.equiv \- 「信頼された」\fBr\fP コマンドによるシステムへの アクセスを許可するホストおよびユーザーのリスト -.SH 説明 -\fBhosts.equiv\fP ファイルは \fBr\fP\-コマンド (\fBrlogin\fP, \fBrsh\fP, \fBrcp\fP など) -によるパスワードなしでの利用を 許可/拒否するホスト/ユーザーを設定する。 -.PP -このファイルでは以下の書式を用いる。 -.TP -\fI[ + | \- ]\fP \fI[hostname]\fP \fI[username]\fP -.PP -\fIhostname\fP は、ローカルホストと論理的に等価なホストの名前である。 そのホストにログインしているユーザーは、パスワードなしで -ローカルホストの同じ名前のユーザーアカウントにアカウントできる。 \fIhostname\fP の前にはプラス記号 (+) -を置いてもよい。プラス記号が単独で置かれた場合は、 このシステムへのアクセスをあらゆるホストに対して許可したことになる。 -アクセスを明示的に拒否するには、 \fIhostname\fP の前にマイナス記号 (\-) を付ける。そのホストからのユーザーは -常にパスワードを要求される。セキュリティ上、ホスト名は 短い名前ではなく常に FQDN を使って指定すべきである。 -.PP -\fIusername\fP エントリーは、特定のユーザーに対して、 (root 以外の) あらゆるユーザーアカウント -へのアクセスをパスワードなしで許可する。すなわち、そのユーザーは同じ名前の アカウント以外にもアクセスできる。 \fIusername\fP -の前にはプラス記号 (+) を置いてもよい。 特定のユーザーからのアクセスを明示的に拒否するには、 \fIusername\fP の前にマイナス記号 (\-) -を付ける。こうすると、 ホストのエントリーがなんと言おうとも、そのユーザーは信頼されないことになる。 -.PP -netgroup を指定することもでき、その場合は @ 記号を前につける。 -.PP -プラス記号 (+) を利用する際にはくれぐれも注意すること。 単純なミスタイプで、単独のプラス記号を置いてしまうことがある。 -単独のプラス記号は「すべてのホスト」を表すワイルドカードになってしまう! -.SH ファイル -\fI/etc/hosts.equiv\fP -.SH 注意 -システムによっては、このファイルの内容が効力を持つのは、 このファイルの所有者が root で、 -かつそれ以外に書き込み権限がない場合に限定されていることもある。 また、非常に制限がきついシステムでは、このファイルに対する他の -ハードリンクがないことが要求される場合もある。 -.PP -最近のシステムでは Pluggable Authentication Modules library (PAM) が 使われている。PAM -では、単独のプラス記号が「すべてのホスト」を表す ワイルドカードとして扱われるのは、特定のサービス (例えば \fBrlogin\fP) 用の PAM -ファイルで auth 行にキーワード \fIpromiscuous\fP が追加されている場合のみである。 -.SH 関連項目 -\fBrhosts\fP(5), \fBrlogind\fP(8), \fBrshd\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/intro.5 b/manual/LDP_man-pages/draft/man5/intro.5 deleted file mode 100644 index 05b9bf4d..00000000 --- a/manual/LDP_man-pages/draft/man5/intro.5 +++ /dev/null @@ -1,49 +0,0 @@ -.\" 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified Sat Jul 24 17:06:52 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Sun Jan 14 00:34:09 1996 by Andries Brouwer (aeb@cwi.nl) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated Tue 13 Oct 1998 by NAKANO Takeo -.\" -.TH INTRO 5 2007\-10\-23 Linux "Linux Programmer's Manual" -.SH 名前 -intro \- ファイルフォーマットの紹介 -.SH 説明 -マニュアルの 5 章は、各種のファイルフォーマット、プロトコル、 (もしあれば) 対応する C の構造体について記載している。 -.SH 注意 -.SS 著者と著作権 -著者と著作権に関しては各マニュアルページのソースのヘッダーを参照すること。 これらはページごとに異なる可能性があることに注意してほしい。 -.SH 関連項目 -\fBstandards\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/issue.5 b/manual/LDP_man-pages/draft/man5/issue.5 index c52032d2..f95fe24c 100644 --- a/manual/LDP_man-pages/draft/man5/issue.5 +++ b/manual/LDP_man-pages/draft/man5/issue.5 @@ -39,14 +39,14 @@ .SH 名前 issue \- ログイン前に表示されるメッセージとシステム情報のファイル .SH 説明 -\fI/etc/issue\fPファイルは、ログインプロンプトに先だって表示される、 メッセージやシステムの情報が書かれたテキストファイルである。 -システムで採用されている \fBgetty\fP系の プログラムによってサポートされている場合、 このファイルには \fB@\fP\fIchar\fP や -\fB\e\fP\fIchar\fP などの シーケンスが含まれていることもある。 +\fI/etc/issue\fP is a text file which contains a message or system +identification to be printed before the login prompt. It may contain +various \fB@\fP\fIchar\fP and \fB\e\fP\fIchar\fP sequences, if supported by the +\fBgetty\fP\-type program employed on the system. .SH ファイル -/etc/issue +\fI/etc/issue\fP .SH 関連項目 \fBmotd\fP(5), \fBagetty\fP(8), \fBmingetty\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/locale.5 b/manual/LDP_man-pages/draft/man5/locale.5 deleted file mode 100644 index 4c1ebd49..00000000 --- a/manual/LDP_man-pages/draft/man5/locale.5 +++ /dev/null @@ -1,772 +0,0 @@ -'\" t -*- coding: UTF-8 -*- -.\" Copyright (C) 1994 Jochen Hein (Hein@Student.TU-Clausthal.de) -.\" Copyright (C) 2008 Petr Baudis (pasky@suse.cz) -.\" Copyright (C) 2014 Michael Kerrisk -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" 2008-06-17 Petr Baudis -.\" LC_TIME: Describe first_weekday and first_workday -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1998-02-11, HANATAKA Shinya -.\" Updated & Modified 2001-10-18, Akihiro MOTOKI -.\" Updated 2008-08-11, Akihiro MOTOKI, LDP v3.05 -.\" -.TH LOCALE 5 2015\-01\-22 Linux "Linux User Manual" -.SH 名前 -locale \- ロケール定義ファイル -.SH 説明 -\fBロケール (locale)\fP 定義ファイルは \fBlocaledef\fP(1) コマンドがバイナリのロケールデータベースに変換するのに -必要な全ての情報を含んでいる。 - -定義ファイルは、いくつかのセクションから構成されており、各セクション にはロケールのカテゴリーが詳細に記述される。 -.SS 文法 -ロケール定義ファイルは以下のキーワードから構成されるヘッダーで始まる: -.TP -\fI\fP -ファイルの残りの部分でエスケープキャラクターとして使用する文字を 指定する。これは特殊な意味に解釈される文字をエスケープするのに使用する。 -デフォルトはバックスラッシュ (\e) である。 -.TP -\fI\fP -ファイルの残りの部分でコメントキャラクターとして使用する文字 を指定する。デフォルトではシャープ (#) である。 -.PP -ロケールの定義はロケールのカテゴリー毎の定義を行う部分から構成される。 各部分は、定義済みの他のロケールのコピーを元に定義することもできるし、 -最初から定義することもできる。カテゴリーをコピーする場合、定義の中に \fBcopy\fP -というキーワードに続けてコピーするロケールの名前をダブルクォートの中に書く。 -.PP -カテゴリーを一から定義する際には、 すべてのフィールドの説明と文字列を、 Unicode コードポイントをかぎ括弧で囲って定義する必要がある。 -下記の説明で定義しなくてもよいと書かれている場合はこの限りではない。 例えば、 "€" は ""、 "%a" は -""、 "Monday" は -"" -と表現される。 Unicode コードポイントとして定義される値は二重引用符で囲まなければならず、 通常の数値は引用符で囲まれない (ただし、 -\fBLC_CTYPE\fP と \fBLC_COLLATE\fP は特別なフォーマットを使用しており、 例についてはシステムが提供するロケールファイルを参照)。 -.SS ロケールカテゴリー -以下のカテゴリーが POSIX で定義されている。 -.IP * 3 -\fBLC_CTYPE\fP -.IP * -\fBLC_COLLATE\fP -.IP * -\fBLC_MESSAGES\fP -.IP * -\fBLC_MONETARY\fP -.IP * -\fBLC_NUMERIC\fP -.IP * -\fBLC_TIME\fP -.PP -また、バージョン 2.2 以降の GNU C ライブラリでは以下の非標準のカテゴリーにも対応している。 -.IP * 3 -\fBLC_ADDRESS\fP -.IP * -\fBLC_IDENTIFICATION\fP -.IP * -\fBLC_MEASUREMENT\fP -.IP * -\fBLC_NAME\fP -.IP * -\fBLC_PAPER\fP -.IP * -\fBLC_TELEPHONE\fP -.PP -各カテゴリーの詳細な説明は \fBlocale\fP(7) を参照。 - -.SS LC_ADDRESS -このカテゴリーの定義は最初のカラムに \fBLC_ADDRESS\fP という文字列を置くことで始める。 - -.\" Thanks to the kind folk who wrote localedata/locales/uk_UA -ここでは以下のキーワードが使用できる: -.TP -\fIpostal_fmt\fP -.\" From localedata/locales/uk_UA: -このロケールでの郵便の住所に使用するフォーマットを定義するフィールド記述子が入った文字列を指定する。 以下のフィールド指定子を使用できる。 -.RS -.\" .TP -.\" %n -.\" BUG: %l escape sequence from ISO/IEC 14652:2002 is not supported -.\" by glibc -.\" Person's name, possibly constructed with the -.\" .B LC_NAME -.\" .I name_fmt -.\" keyword. -.\" -.\" https://sourceware.org/bugzilla/show_bug.cgi?id=16983 -.TP -%a -気付、組織 -.TP -%f -社名 -.TP -%d -部署名 -.TP -%b -ビル名 -.TP -%s -通り、ブロック名 -.TP -%h -番地 -.TP -%N -直前の記述子の値が空でない場合 end\-of\-line を挿入する。 そうでない場合は無視される。 -.TP -%t -直前の記述子の値が空でない場合、 スペースを挿入する。 そうでない場合は無視される。 -.TP -%r -部屋番号 -.TP -%e -フロア番号 -.TP -%C -.\" .TP -.\" %l -.\" BUG: %l escape sequence from ISO/IEC 14652:2002 is not -.\" supported by glibc -.\" Local township within town or city. -.\" -.\" https://sourceware.org/bugzilla/show_bug.cgi?id=16983 -国、 キーワードから指定する -.TP -%z -郵便番号 -.TP -%T -町、市 -.TP -%S -州、省、県 -.TP -%c -国。 データレコードから取得される。 -.PP -各フィールドでは \(aq%\(aq の後ろに \(aqR\(aq を置いて、 その要素のローマ字版の文字列を使用するように指定することができる。 -.RE - -.TP -\fIcountry_name\fP -そのドキュメントの言語での国名を指定する (例えば、 \fIde_DE\fP ロケールでは "Deutschland") -.TP -\fIcountry_post\fP -国の省略名を指定する (CERT_MAILCODES 参照) -.TP -\fIcountry_ab2\fP -国の 2 文字の省略形を指定する (ISO 3166) -.TP -\fIcountry_ab3\fP -国の 3 文字の省略形を指定する (ISO 3166) -.TP -\fIcountry_num\fP -数字の国コードを通常の数字として指定する (ISO 3166) -.TP -\fIcountry_car\fP -自動車番号の国コードを指定する -.TP -\fIcountry_isbn\fP -(書籍用の) ISBN コードを通常の数字として指定する -.TP -\fIlang_name\fP -そのドキュメントの言語での言語名を指定する -.TP -\fIlang_ab\fP -言語の 2 文字の省略形を指定する (ISO 639) -.TP -\fIlang_term\fP -言語の 3 文字の省略形を指定する (ISO 639\-2/T) -.TP -\fIlang_lib\fP -ライブラリで使用する言語の 3 文字の省略形を指定する (ISO 639\-2/B)。 一般には、アプリケーションは \fIlang_lib\fP よりも -\fIlang_term\fP を優先すべきである。 -.PP -\fBLC_ADDRESS\fP の定義は \fIEND LC_ADDRESS\fP という文字列で終了する。 -.SS LC_CTYPE -このカテゴリーの定義は最初のカラムに \fBLC_CTYPE\fP という文字列を置くことで始める。 - -.\" FIXME The following LC_CTYPE keywords are not documented: -.\" translit_start + translit_end -.\" charclass -.\" charconv -.\" outdigit -.\" include -.\" map (to_inpunct, to_outpunct) -ここでは以下のキーワードが使用できる: -.TP -\fIupper\fP -大文字 (uppercase letter) のリストを指定する。 \fBA\fP から \fBZ\fP までの文字は自動的に含まれる。 \fBcntrl\fP, -\fBdigit\fP, \fBpunct\fP, \fBspace\fP に指定された文字を指定することはできない。 -.TP -\fIlower\fP -小文字 (lowercase letter) のリストを指定する。 \fBa\fP から \fBz\fP までの文字は自動的に含まれる。 \fBcntrl\fP, -\fBdigit\fP, \fBpunct\fP, \fBspace\fP に指定された文字を指定することはできない。 -.TP -\fIalpha\fP -アルファベットの文字を指定する。 \fBupper\fP と \fBlower\fP を指定した全ての文字は自動的に含まれる。 \fBcntrl\fP, -\fBdigit\fP, \fBpunct\fP, \fBspace\fP に指定された文字を指定することはできない。 -.TP -\fIdigit\fP -数字として使用される文字を指定する。数字としては \fB0\fP から \fB9\fP のみが使用できる。これらはデフォルトで含まれている。 -.TP -\fIspace\fP -空白として使用する文字のリストを指定する。 \fBupper\fP, \fBlower\fP, \fBalpha\fP, \fBdigit\fP, \fBgraph\fP, -\fBxdigit\fP に指定された文字を指定することはできない。 \fB\fP, \fB\fP, -\fB\fP, \fB\fP, \fB\fP, -\fB\fP は自動的に含まれる。 -.TP -\fIcntrl\fP -コントロールキャラクターのリストを指定する。 \fBupper\fP, \fBlower\fP, \fBalpha\fP, \fBdigit\fP, \fBpunct\fP, -\fBgraph\fP, \fBprint\fP, \fBxdigit\fP に指定された文字を指定することはできない。 -.TP -\fIpunct\fP -句読点文字のリストを指定する。 \fBupper\fP, \fBlower\fP, \fBalpha\fP, \fBdigit\fP, \fBcntrl\fP, \fBxdigit\fP, -\fB\fP に指定された文字を指定することはできない。 -.TP -\fIgraph\fP -表示可能文字のリストを指定するが、 \fB\fP 文字は含まない。 \fBupper\fP, \fBlower\fP, \fBalpha\fP, -\fBdigit\fP, \fBxdigit\fP, \fBpunct\fP を指定した文字は自動的に含まれる。 \fBcntrl\fP -に指定された文字を指定することはできない。 -.TP -\fIprint\fP -\fB\fP 文字を含めた表示可能文字のリストを指定する。 \fBupper\fP, \fBlower\fP, \fBalpha\fP, -\fBdigit\fP, \fBxdigit\fP, \fBpunct\fP, \fB\fP に指定した文字は自動的に含まれる。 \fBcntrl\fP -に指定された文字を指定することはできない。 -.TP -\fIxdigit\fP -16 進数として使用する文字のリストを指定する。10 進の数字に加えて、 6 文字を昇順で続ける。デフォルトでは以下の文字が含まれている: \fB0\fP -から \fB9\fP、 \fBa\fP から \fBf\fP、 \fBA\fP から \fBF\fP。 -.TP -\fIblank\fP -\fB無地 (blank)\fP に分類される文字のリストを指定する。 \fB\fP と \fB\fP -は自動的に含まれる。 -.TP -\fItoupper\fP -小文字から大文字への対応リストを指定する。各対応は小文字と大文字のペアを \fB,\fP で区切って括弧で括って指定する。 -リストの各メンバーはセミコロンで区切る。 -.TP -\fItolower\fP -大文字から小文字への対応リストを指定する。tolower という キーワードが無い場合には toupper を逆にしたものが使用される。 -.PP -\fBLC_CTYPE\fP の定義は \fIEND LC_CTYPE\fP という文字列で終了する。 -.SS LC_COLLATE -glibc による制限のため POSIX オプションの全てが実装されているわけではない。 - -このカテゴリーの定義は最初のカラムに \fBLC_COLLATE\fP を置くことで始める。 - -.\" FIXME The following LC_COLLATE keywords are not documented: -.\" script -.\" symbol-equivalence -ここでは以下のキーワードが使用できる: -.TP -\fIcollating\-element\fP -複数文字からなる照合要素を表す照合要素シンボル (collating\-element symbol) の定義を指定する。 -.TP -\fIcollating\-symbol\fP -照合順序定義 (order_start) で使用できる照合シンボル (collating symbol) の定義を指定する。 -.PP -順序の定義は以下の行で始める: -.TP -\fIorder_start\fP -.\" FIXME The following LC_COLLATE keywords are not documented: -.\" reorder-after -.\" reorder-end -.\" reorder-sections-after -.\" reorder-sections-end -これに \fBforward\fP, \fBbackward\fP, \fBposition\fP のいずれかのキーワードが続く。 順序を記述する行が続き、キーワード -\fIorder_end\fP で終る: -.PP -\fBLC_COLLATE\fP 定義は \fIEND LC_COLLATE\fP という文字列で終了する。 -.SS LC_IDENTIFICATION -このカテゴリーの定義は最初のカラムに \fBLC_IDENTIFICATION\fP という文字列を置くことで始める。 - -このカテゴリーの値は普通の文字列として定義される。 - -ここでは以下のキーワードが使用できる: -.TP -\fItitle\fP -このロケール文書のタイトル (例えば "Maori language locale for New Zealand" -(「ニュージーランドのマオリ語のロケール」))。 -.TP -\fIsource\fP -この文書を管理している組織名。 -.TP -\fIaddress\fP -この文書を管理している組織の住所。 -.TP -\fIcontact\fP -この文書を管理している組織の担当者の名前。 -.TP -\fIemail\fP -この文書を管理している組織の担当者の電子メールアドレス。 -.TP -\fItel\fP -この文書を管理している組織の (国際的なフォーマットでの) 電話番号。 -.TP -\fIfax\fP -この文書を管理している組織の (国際的なフォーマットでの) FAX 番号。 -.TP -\fIlanguage\fP -この文書が適用される言語名。 -.TP -\fIterritory\fP -この文書が適用される国や地理的範囲の名前。 -.TP -\fIaudience\fP -この文書が想定する対象者の説明。 -.TP -\fIapplication\fP -この文書が想定する特別な適用先を記載する。 -.TP -\fIabbreviation\fP -.\" as far as I can tell... (mtk) -この文書の省略名。 -.TP -\fIrevision\fP -この文書の版数。 -.TP -\fIdate\fP -この文書のこの版の日付。 -.PP -さらに、 この文書で定義されるカテゴリー毎に、キーワード \fIcategory\fP で始まり以下の内容が続く行を用意する必要がある。 -.IP * 3 -このロケールカテゴリー定義を識別する文字列 -.IP * -セミコロン -.IP * -\fBLC_\fP\fI*\fP 識別子のいずれか 1 つ -.PP -\fBLC_IDENTIFICATION\fP の定義は \fIEND LC_IDENTIFICATION\fP という文字列で終了する。 -.SS LC_MESSAGES -このカテゴリーの定義は最初のカラムに \fBLC_MESSAGES\fP という文字列を置くことで始める。 - -ここでは以下のキーワードが使用できる: -.TP -\fIyesexpr\fP -「はい (yes)」を意味する正規表現を指定する。 -.TP -\fInoexpr\fP -「いいえ (no)」を意味する正規表現を指定する。 -.TP -\fIyesstr\fP -"yes" に対応する出力文字列を指定する。 -.TP -\fInostr\fP -"no" に対応する出力文字列を指定する。 -.PP -\fBLC_MESSAGES\fP の定義は \fIEND LC_MESSAGES\fP という文字列で終了する。 -.SS LC_MEASUREMENT -このカテゴリーの定義は最初のカラムに \fBLC_MEASUREMENT\fP という文字列を置くことで始める。 - -ここでは以下のキーワードが使用できる: -.TP -\fImeasurement\fP -単位系として使用される標準を指定する数値。 以下の値が使用できる。 -.RS -.TP -\fB1\fP -メートル法 -.TP -\fB2\fP -US で使用される単位系 -.RE -.PP -\fBLC_MEASUREMENT\fP の定義は \fIEND LC_MEASUREMENT\fP という文字列で終了する。 -.SS LC_MONETARY -\fBLC_MONETARY\fP の定義は最初のカラムに \fBLC_MONETARY\fP を置くことで始める。 - -\fIint_curr_symbol\fP, \fIcurrency_symbol\fP, \fImon_decimal_point\fP, -\fImon_thousands_sep\fP, \fIpositive_sign\fP, \fInegative_sign\fP は Unicode -コードポイントとして定義されている。 それ以外には通常の数字を指定する。 - -ここでは以下のキーワードが使用できる: -.TP -\fIint_curr_symbol\fP -国際通貨記号を指定する。これは ISO 4217 規格に定義された国際通貨 記号 (3 文字) に区切り文字を続けた 4 文字である必要がある。 -.TP -\fIcurrency_symbol\fP -地域的な通貨記号を指定する。 -.TP -\fImon_decimal_point\fP -金額をフォーマットする際の小数点に使用する文字列を指定する。 -.TP -\fImon_thousands_sep\fP -金額をフォーマットする際に桁の区切りに使用する文字列を指定する。 -.TP -\fImon_grouping\fP -金額の表示方法を規定する整数の列。 セミコロン区切りの通常の数字。 詳細は下記の \fIgrouping\fP を参照。 -.TP -\fIpositive_sign\fP -数値において正の符号に使用する文字列を指定する。 -.TP -\fInegative_sign\fP -数値において負の符号に使用する文字列を指定する。 -.TP -\fIint_frac_digits\fP -\fIint_curr_symbol\fP でフォーマットする時に使用すべき端数の桁数を指定する。 -.TP -\fIfrac_digits\fP -\fIcurrency_symbol\fP でフォーマットする際に使用すべき端数の桁数を指定する。 -.TP -\fIp_cs_precedes\fP -負でない金額を表示する際に \fIcurrency_symbol\fP を置く位置を示す数字を指定する。 -.RS -.TP -\fB0\fP -記号は数値の後におく。 -.TP -\fB1\fP -記号は数値の前におく。 -.RE -.TP -\fIn_cs_precedes\fP -負の金額を表示する際に \fIcurrency_symbol\fP を置く位置を示す数字を指定する。 指定できる値は \fIp_cs_precedes\fP -と同じである。 -.TP -\fIint_p_cs_precedes\fP -負でない金額を国際的なフォーマットで表示する際に \fIint_currency_symbol\fP を置く位置を示す数字を指定する。 指定できる値は -\fIp_cs_precedes\fP と同じである。 -.TP -\fIint_n_cs_precedes\fP -負の金額を国際的なフォーマットで表示する際に \fIint_currency_symbol\fP を置く位置を示す数字を指定する。 指定できる値は -\fIp_cs_precedes\fP と同じである。 -.TP -\fIp_sep_by_space\fP -負でない金額を表示する際に、 \fIcurrency_symbol\fP、 符号記号、 値の区切り方を示す数値を指定する。 以下の値が使用できる。 -.RS -.TP -\fB0\fP -通貨記号と値の間にスペースを入れない。 -.TP -\fB1\fP -通貨記号と符号記号が隣り合う場合、 値との間にスペースを入れる。 そうでない場合、通貨記号と値の間スペースを置く。 -.TP -\fB2\fP -通貨記号と符号記号が隣り合う場合、 値との間にスペースを入れる。 そうでない場合、符号記号と値はそれぞれスペースで区切られる。 -.RE -.TP -\fIn_sep_by_space\fP -負の金額を表示する際に、 \fIcurrency_symbol\fP、 符号記号、 値の区切り方を示す数値を指定する。 指定できる値は -\fIp_sep_by_space\fP である。 -.TP -\fIint_p_sep_by_space\fP -負でない金額を国際的なフォーマットで表示する際に、 \fIint_currency_symbol\fP、 符号記号、 値の区切り方を示す数値を指定する。 -指定できる値は \fIp_sep_by_space\fP である。 -.TP -\fIint_n_sep_by_space\fP -負の金額を国際的なフォーマットで表示する際に、 \fIint_currency_symbol\fP、 符号記号、 値の区切り方を示す数値を指定する。 -指定できる値は \fIp_sep_by_space\fP である。 -.TP -\fIp_sign_posn\fP -負でない金額の場合に \fIpositive_sign\fP を置く必要があるかを示す整数を指定する。 -.RS -.TP -\fB0\fP -値と \fIcurrency_symbol\fP または \fIint_curr_symbol\fP を括弧で括る。 -.TP -\fB1\fP -符号を値と \fIcurrency_symbol\fP または \fIint_curr_symbol\fP の前に置く。 -.TP -\fB2\fP -符号を値と \fIcurrency_symbol\fP または \fIint_curr_symbol\fP の後に置く。 -.TP -\fB3\fP -符号を \fIcurrency_symbol\fP または \fIint_curr_symbol\fP の前に置く。 -.TP -\fB4\fP -符号を \fIcurrency_symbol\fP または \fIint_curr_symbol\fP の後に置く。 -.RE -.TP -\fIn_sign_posn\fP -負の金額の場合に \fInegative_sign\fP を置く必要があるかを示す整数を指定する。 指定できる値は \fIp_sign_posn\fP -と同じである。 -.TP -\fIint_p_sign_posn\fP -負でない金額を国際的なフォーマットで表示する際に \fIpositive_sign\fP を置く必要があるかを示す整数を指定する。 指定できる値は -\fIp_sign_posn\fP と同じである。 -.TP -\fIint_n_sign_posn\fP -負の金額を国際的なフォーマットで表示する際に \fInegative_sign\fP を置く必要があるかを示す整数を指定する。 指定できる値は -\fIp_sign_posn\fP と同じである。 -.PP -\fBLC_MONETARY\fP の定義は \fIEND LC_MONETARY\fP という文字列で終了する。 -.SS LC_NAME -このカテゴリーの定義は最初のカラムに \fBLC_NAME\fP という文字列を置くことで始める。 - -様々なキーワードを指定できるが、 必須なのは \fIname_fmt\fP だけである。 それ以外のキーワードは、 このロケールで、 -対応するあいさつを使う慣習が普及している場合にのみ指定が必要である。 指定できるキーワードは以下のとおりである。 -.TP -\fIname_fmt\fP -.\" From localedata/locales/uk_UA: -このロケールで名前に対して使用する表示方法を定義するフィールド記述子が入った文字列を指定する。 以下のフィールド記述子を使用できる。 -.RS -.TP -%f -姓 (family name) -.TP -%F -大文字の姓 (family name) -.TP -%g -名 (first given name) -.TP -%G -名の頭文字 -.TP -%l -ラテン文字での名 (first given name) -.TP -%o -他の短い名前 -.TP -%m -追加の名前 (given name) -.TP -%M -追加の名前の頭文字 -.TP -%p -職業 -.TP -%s -呼びかけの言葉 (例えば「Doctor」など) -.TP -%S -省略形の呼びかけの言葉 ("Mr." や "Dr.") -.TP -%d -.\" 1 for the name_gen -.\" In glibc 2.19, %d1 is used in only: -.\" /home/mtk/ARCHIVE/GLIBC/glibc-2.19/localedata/locales/bem_ZM -.\" /home/mtk/ARCHIVE/GLIBC/glibc-2.19/localedata/locales/zh_HK -.\" In glibc 2.19, %d[2-5] appear to be not used at all -.\" 2 for name_mr -.\" 3 for name_mrs -.\" 4 for name_miss -.\" 5 for name_ms -FDCC (Formal Definitions of Cultural Convention) 集合で使用される呼びかけの言葉 -.TP -%t -直前のフィールド記述子が空文字列になった場合、 空文字列となる。 それ以外の場合、 スペース文字となる。 -.RE -.TP -\fIname_gen\fP -男性・女性を問わず使える一般的な呼びかけの言葉 -.TP -\fIname_mr\fP -男性に対する呼びかけの言葉 -.TP -\fIname_mrs\fP -既婚女性に対する呼びかけの言葉 -.TP -\fIname_miss\fP -未婚女性に対する呼びかけの言葉 -.TP -\fIname_ms\fP -どの女性にも使用できる呼びかけの言葉 -.PP -\fBLC_NAME\fP の定義は \fIEND LC_NAME\fP という文字列で終了する。 -.SS LC_NUMERIC -このカテゴリーの定義は最初のカラムに \fBLC_NUMERIC\fP という文字列を置くことで始める。 - -ここでは以下のキーワードが使用できる: -.TP -\fIdecimal_point\fP -数値をフォーマットする際に小数点に使用する文字列を指定する。 -.TP -\fIthousands_sep\fP -数値をフォーマットする際に桁の区切りに使用する文字列を指定する。 -.TP -\fIgrouping\fP -数値の表示方法を規定する整数の列。 セミコロン区切りの通常の数字。 -.IP -各数字はグループ内の数字の桁数を指定する。 最初の整数は小数点のすぐ左側のグループのサイズを規定する。 -それ以降の数字は一つ前のグループの左側のグループのサイズを順に規定する。 最後の数字が \-1 でない場合、 (グループがある場合) -直前のグループのサイズがそれ以降の桁についても使用される。 最後の整数が \-1 の場合、 それ以降はグループ化を行わない。 -.PP -The \fBLC_NUMERIC\fP の定義は \fIEND LC_NUMERIC\fP という文字列で終了する。 -.SS LC_PAPER -このカテゴリーの定義は最初のカラムに \fBLC_PAPER\fP という文字列を置くことで始める。 - -このカテゴリーの値は通常の数字で指定する。 - -ここでは以下のキーワードが使用できる: -.TP -\fIheight\fP -標準の紙のサイズの高さをミリメートル単位で指定する。 -.TP -\fIwidth\fP -標準の紙のサイズの幅をミリメートル単位で指定する。 -.PP -\fBLC_PAPER\fP の定義は \fIEND LC_PAPER\fP という文字列で終了する。 -.SS LC_TELEPHONE -このカテゴリーの定義は最初のカラムに \fBLC_TELEPHONE\fP という文字列を置くことで始める。 - -ここでは以下のキーワードが使用できる: -.TP -\fItel_int_fmt\fP -.\" From localedata/locales/uk_UA -国際番号に電話をかける場合に使用するフォーマットを示すフィールド記述子を含む文字列を指定する。 以下のフィールド記述子を使用できる。 -.RS -.TP -%a -全国で一意なプレフィックスを含まないエリアコード (多くの場合、プレフィックスは "00")。 -.TP -%A -全国で一意なプレフィックスを含んだエリアコード。 -.TP -%l -(エリア内の) 市内局番。 -.TP -%e -(市内局番に対する) 内線番号。 -.TP -%c -国番号。 -.TP -%C -海外通話の際に使用される代わりのキャリアーサービスコード。 -.TP -%t -直前のフィールド記述子が空文字列になった場合、 空文字列となる。 それ以外の場合、 スペース文字となる。 -.RE -.TP -\fItel_dom_fmt\fP -国内番号に電話をかける場合に使用するフォーマットを示すフィールド記述子を含む文字列を指定する。 使用できるフィールド記述子は -\fItel_int_fmt\fP と同じである。 -.TP -\fIint_select\fP -国際電話番号に電話をかける際に使用するプレフィックスを指定する。 -.TP -\fIint_prefix\fP -他の国からこの国に電話をかける際に使用するプレフィックスを指定する。 -.PP -\fBLC_TELEPHONE\fP の定義は \fIEND LC_TELEPHONE\fP という文字列で終了する。 -.SS LC_TIME -このカテゴリーの定義は最初のカラムに \fBLC_TIME\fP という文字列を置くことで始める。 - -.\" FIXME The following LC_TIME keywords are not documented: -.\" era -.\" era_d_fmt -.\" era_d_t_fmt -.\" era_t_fmt -.\" timezone -ここでは以下のキーワードが使用できる: -.TP -\fIabday\fP -曜日の名前の省略形のリストを指定する。 リストは \fIweek\fP で指定された週の開始曜日 (デフォルトでは日曜日) から始める。 「注意」を参照。 -.TP -\fIday\fP -曜日の名前のリストを指定する。 リストは \fIweek\fP で指定された週の開始曜日 (デフォルトでは日曜日) から始める。 「注意」を参照。 -.TP -\fIabmon\fP -月の名前の省略形のリストを指定する。 -.TP -\fImon\fP -月の名前のリストを指定する。 -.TP -\fIam_pm\fP -それぞれ \fB午前 (am)\fP と \fB午後 (pm)\fP に対応する文字列を指定する。 AM/PM -を使う慣習がないロケールでは、このフィールドは空にすべきである。 -.TP -\fId_t_fmt\fP -適切な日付け (date) と時刻 (time) のフォーマットを指定する。 -.TP -\fId_fmt\fP -適切な日付け (date) のフォーマットを指定する。 -.TP -\fIt_fmt\fP -適切な時刻 (time) のフォーマットを指定する。 -.TP -\fIt_fmt_ampm\fP -12 時間時計を使う際に使用する時刻形式を指定する。 午前/午後の表記を使用しないロケールではこのフィールドは空にすること。 -.TP -\fIweek\fP -3 つの通常の数字からなるリストを指定する。 リストは、一週間の日数 (デフォルトでは 7)、 週の開始曜日 (デフォルトでは日曜に対応)、 -一年の最初の週の最小の長さ (デフォルトでは 4) から構成される。 週の開始曜日については、週の開始日が日曜日の場合には \fB19971130\fP -を、月曜日の場合には \fB19971201\fP を使用する。 「注意」を参照。 -.TP -\fIfirst_weekday\fP (glibc 2.2 以降) -カレンダーアプリケーションで最初に表示する曜日の \fIday\fP リストにおける番号。 デフォルト値の \fB1\fP (通常の数字) -は日曜日か月曜日に対応する。 どちらに対応するかは \fIweek\fP リストの二番目の項目の値で決まる。 「注意」を参照。 -.TP -\fIfirst_workday\fP (glibc 2.2 以降) -最初の就業日を示す \fIday\fP リストにおける曜日の番号。 デフォルト値は \fB2\fP (通常の数字) である。 「注意」を参照。 -.TP -\fIcal_direction\fP -.\" from localedata/locales/uk_UA -カレンダーの日付を表示する方向を示す通常の数字を指定する。指定できる値は以下のとおり。 -.RS -.TP -\fB1\fP -左から右を、上から順に。 -.TP -\fB2\fP -上から下を、左から順に。 -.TP -\fB3\fP -右から左を、上から順に。 -.RE -.TP -\fIdate_fmt\fP -\fBdate\fP(1) に適した日付の表現を指定する。 -.PP -\fBLC_TIME\fP の定義は \fIEND LC_TIME\fP という文字列で終了する。 -.SH ファイル -.TP -\fI/usr/lib/locale/locale\-archive\fP -通常のデフォルトのロケールアーカイブファイル -.TP -\fI/usr/share/i18n/locales\fP -ロケール定義ファイルの通常のデフォルトパス -.SH 準拠 -POSIX.2, ISO/IEC TR 14652. -.SH 注意 -\fIabday\fP, \fIday\fP, \fIweek\fP, \fIfirst_weekday\fP, \fIfirst_workday\fP に関する GNU C -ライブラリコミュニティーで培ったノウハウについて https://sourceware.org/glibc/wiki/Locales -で以下のように書かれている。 -.IP * 3 -\fIweek\fP リストの 2 番目の項目の値は \fIabday\fP と \fIday\fP のリストの起点となる日を指定する。 -.IP * -\fIfirst_weekday\fP は \fIabday\fP と \fIday\fP のリストの中で最初に表示する週の曜日 (オフセット) を指定する。 -.IP * -For compatibility reasons, all glibc locales should set the value of the -second \fIweek\fP list item to \fB19971130\fP (Sunday) and base the \fIabday\fP and -\fIday\fP lists appropriately, and set \fIfirst_weekday\fP and \fIfirst_workday\fP to -\fB1\fP or \fB2\fP, depending on whether the week and work week actually starts on -Sunday or Monday for the locale. -.SH バグ -.\" .SH AUTHOR -.\" Jochen Hein (Hein@Student.TU-Clausthal.de) -このマニュアルは完全ではない。 -.SH 関連項目 -\fBlocale\fP(1), \fBlocaledef\fP(1), \fBlocaleconv\fP(3), \fBnewlocale\fP(3), -\fBsetlocale\fP(3), \fBuselocale\fP(3), \fBcharmap\fP(5), \fBcharsets\fP(7), -\fBlocale\fP(7), \fBunicode\fP(7), \fButf\-8\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/motd.5 b/manual/LDP_man-pages/draft/man5/motd.5 index 0ddf601f..bff66570 100644 --- a/manual/LDP_man-pages/draft/man5/motd.5 +++ b/manual/LDP_man-pages/draft/man5/motd.5 @@ -38,14 +38,13 @@ motd \- 今日のお知らせ(message of the day) .SH 説明 \fI/etc/motd\fP の内容は \fBlogin\fP(1) によってログインが成功したあとで、ログインシェルが起動される前に 表示される。 - +.PP 略語 "motd" は "message of the day" をあらわしていて、このファイルは伝統的 にその名のとおりに使われている (すべてのユーザーにメイルを送るよりも少ないディスク容量しか必要としない)。 .SH ファイル -/etc/motd +\fI/etc/motd\fP .SH 関連項目 \fBlogin\fP(1), \fBissue\fP(5) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/networks.5 b/manual/LDP_man-pages/draft/man5/networks.5 index d3e51465..4b74c2ad 100644 --- a/manual/LDP_man-pages/draft/man5/networks.5 +++ b/manual/LDP_man-pages/draft/man5/networks.5 @@ -40,15 +40,15 @@ networks \- ネットワーク名の情報 \fI/etc/networks\fP ファイルは、通常の ASCII ファイルで、よく使われる DARPA ネットワークとその分かりやすい名前を記載したファイルである。 各行が一つのネットワークを表し、以下の構造となっている。 - +.PP .RS \fIname number aliases ...\fP .RE - +.PP フィールドはスペースかタブで区切られる。空行は無視される。 ハッシュ文字 (\fB#\fP) はコメントの開始を示し、このファイルを処理する ライブラリ関数はこの文字とその行のそれ以降の文字を無視する。 - +.PP フィールドの説明は以下のとおり。 .TP \fIname\fP @@ -62,12 +62,11 @@ DARPA ネットワークとその分かりやすい名前を記載したファ .TP \fIaliases\fP そのネットワークの別名 (省略可能)。 -.LP - -このファイルは、 \fBroute\fP(8) と \fBnetstat\fP(8) ユーティリティにより -利用される。クラス A, B, C のネットワークだけがサポートされており、 -(network/26 や network/28 といった) 分割されたネットワークは -このファイルではサポートされていない。 +.PP +.PP +This file is read by the \fBroute\fP(8) and \fBnetstat\fP(8) utilities. Only +Class A, B or C networks are supported, partitioned networks (i.e., +network/26 or network/28) are not supported by this file. .SH ファイル .TP \fI/etc/networks\fP @@ -76,6 +75,5 @@ DARPA ネットワークとその分かりやすい名前を記載したファ \fBgetnetbyaddr\fP(3), \fBgetnetbyname\fP(3), \fBgetnetent\fP(3), \fBnetstat\fP(8), \fBroute\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/nologin.5 b/manual/LDP_man-pages/draft/man5/nologin.5 deleted file mode 100644 index 42b26953..00000000 --- a/manual/LDP_man-pages/draft/man5/nologin.5 +++ /dev/null @@ -1,52 +0,0 @@ -.\" 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified Sun Jul 25 11:06:34 1993 by Rik Faith (faith@cs.unc.edu) -.\" Corrected Mon Oct 21 17:47:19 EDT 1996 by Eric S. Raymond (esr@thyrsus.com) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Ueyama Rui -.\" all rights reserved. -.\" Translated Mon Aug 25 14:30:24 JST 1997 -.\" by Ueyama Rui -.\" -.TH NOLOGIN 5 2012\-04\-16 Linux "Linux Programmer's Manual" -.SH 名前 -nologin \- 非特権ユーザーのログインを禁止する -.SH 説明 -\fI/etc/nologin\fP というファイルが存在し、かつそのファイルが読み込み専用の場合、 -\fBlogin\fP(1) はルートのみにアクセスを許可するようになる。 -他のユーザーがログインしようとしても拒否し、そのときこのファイルの内容を表示する。 -.SH ファイル -/etc/nologin -.SH 関連項目 -\fBlogin\fP(1), \fBshutdown\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index 6031672c..2e62a4e9 100644 --- a/manual/LDP_man-pages/draft/man5/nscd.conf.5 +++ b/manual/LDP_man-pages/draft/man5/nscd.conf.5 @@ -29,74 +29,74 @@ .\" Updated 2006-07-19, Akihiro MOTOKI , LDP v2.36 .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH NSCD.CONF 5 2014\-02\-07 GNU "Linux Programmer's Manual" +.TH NSCD.CONF 5 2020\-12\-21 GNU "Linux Programmer's Manual" .SH 名前 -/etc/nscd.conf \- ネームサービスキャッシュデーモンの設定ファイル +nscd.conf \- name service cache daemon configuration file .SH 説明 \fBnscd\fP(8) は起動時にファイル \fI/etc/nscd.conf\fP を読み込む。 各行には「属性・値」または「属性・サービス・値」を指定する。 フィールドはスペース文字またはタブ文字で区切られる。 \(aq#\(aq (ナンバー記号) はコメントの始まりを表す。 この記号から行末までは nscd によって解釈されない。 - +.PP 指定可能なサービスは \fIpasswd\fP, \fIgroup\fP, \fIhosts\fP, \fIservices\fP, \fInetgroup\fP である。 - +.PP \fBlogfile\fP \fIdebug\-file\-name\fP .RS デバッグ情報が書き込まれるファイルの名前を指定する。 .RE - +.PP \fBdebug\-level\fP \fIvalue\fP .RS 希望するデバッグレベルを設定する。デフォルトは 0。 .RE - +.PP \fBthreads\fP \fInumber\fP .RS スレッドをいくつ起動してリクエストを待つのかを指定する。 少なくとも 5 つのスレッドが常に作成される。 .RE - +.PP \fBmax\-threads\fP \fInumber\fP .RS スレッドの最大数を指定する。デフォルトは 32。 .RE - +.PP \fBserver\-user\fP \fIuser\fP .RS このオプションが設定されると、 nscd は root ではなく、この user として実行される。 (\-S パラメーターにより) 各ユーザー毎に別々のキャッシュが使われる場合、 このオプションは無視される。 .RE - +.PP \fBstat\-user\fP \fIuser\fP .RS 統計情報の参照を許可するユーザーを指定する。 .RE - +.PP \fBreload\-count\fP unlimited | \fInumber\fP .RS キャッシュされたエントリーが使用されなかったときに、 削除される前に何回リロードされるかを設定する。デフォルトは 5。 .RE - +.PP \fBparanoia\fP \fI\fP .RS パラノイアモードを有効にする。 パラノイアモードでは nscd を定期的に再起動する。デフォルトは無効。 .RE - +.PP \fBrestart\-interval\fP \fItime\fP .RS パラノイアモードが有効で定期的に再起動する場合の、 再起動間隔を \fItime\fP 秒に設定する。デフォルトは 3600。 .RE - +.PP \fBenable\-cache\fP \fIservice\fP \fI\fP .RS 指定した \fIservice\fP のキャッシュを有効または無効にする。デフォルトは無効。 .RE - +.PP \fBpositive\-time\-to\-live\fP \fIservice\fP \fIvalue\fP .RS 指定した \fIservice\fP のキャッシュにあるポジティブエントリー (成功した問い合わせ) の TTL (time\-to\-live) を設定する。 \fIvalue\fP の単位は秒である。 値を大きくすると、ヒット率が高くなり平均応答時間を短くできるが、 キャッシュのコヒーレンス (coherence, キャッシュが実際のデータと一致していること) に問題が生じる。 .RE - +.PP \fBnegative\-time\-to\-live\fP \fIservice\fP \fIvalue\fP .RS 指定した \fIservice\fP のキャッシュにあるネガティブエントリー (失敗した問い合わせ) の TTL (time\-to\-live) を設定する。 @@ -104,35 +104,36 @@ を展開した Linux カーネルのソース) が少ないと、 顕著な性能の向上が見られる。 キャッシュのコヒーレンス問題を少なくするために小さな値にすべきである。 .RE - +.PP \fBsuggested\-size\fP \fIservice\fP \fIvalue\fP .RS 内部ハッシュテーブルの大きさを指定する。 効率を最適にするために \fIvalue\fP は素数にしておくべきである。デフォルトは 211 である。 .RE - +.PP \fBcheck\-files\fP \fIservice\fP \fI\fP .RS -指定した \fIservice\fP に関連するファイルの変更のチェックを有効または無効にする。 ファイルは \fI/etc/passwd\fP, -\fI/etc/group\fP, \fI/etc/hosts\fP である。デフォルトは有効。 +Enables or disables checking the file belonging to the specified \fIservice\fP +for changes. The files are \fI/etc/passwd\fP, \fI/etc/group\fP, \fI/etc/hosts\fP, +\fI/etc/services\fP, and \fI/etc/netgroup\fP. The default is yes. .RE - +.PP \fBpersistent\fP \fIservice\fP \fI\fP .RS サーバの再起動の前後で \fIservice\fP のキャッシュ内容を保持する。 \fBparanoia\fP モードが有効の場合に便利である。デフォルトは保持しない。 .RE - +.PP \fBshared\fP \fIservice\fP \fI\fP .RS \fIservice\fP の nscd データベースのメモリーマッピングをクライアント間で共有する。 これにより、検索を実行する度にソケット経由でデーモンに問い合わせを 行わずに、直接データベースを検索できるようになる。デフォルトは共有しない。 .RE - +.PP \fBmax\-db\-size\fP \fIservice\fP \fIbytes\fP .RS \fIservice\fP のデータベースファイルの最大許容サイズ (バイト単位)。 デフォルト値は 33554432 である。 .RE - +.PP \fBauto\-propagate\fP \fIservice\fP \fI\fP .RS サービス \fIpasswd\fP か \fIgroup\fP で \fIno\fP に設定すると、 \fI.byname\fP 要求は \fIpasswd.byuid\fP や @@ -148,6 +149,5 @@ .\" was written by Thorsten Kukuk and Ulrich Drepper. \fBnscd\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/nss.5 b/manual/LDP_man-pages/draft/man5/nss.5 index 4d9df883..5955ce9f 100644 --- a/manual/LDP_man-pages/draft/man5/nss.5 +++ b/manual/LDP_man-pages/draft/man5/nss.5 @@ -21,7 +21,7 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH NSS 5 2013\-02\-13 Linux "Linux Programmer's Manual" +.TH NSS 5 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 nss \- 名前サービス切り替え (Name Service Switch) の設定ファイル .SH 説明 @@ -59,19 +59,21 @@ TRUE でない場合、 \fBgetpwent\fP(3) や \fBgetgrent\fP(3) の各々の呼 次のエントリーを取得するためにサーバーとのネットワーク通信が発生する。 .SH ファイル \fI/etc/default/nss\fP -.SH 例 +.SH EXAMPLES デフォルト設定は、 以下の設定ファイルと同じである。 - -.nf -.\" .SH AUTHOR -.\" Ulrich Drepper -.\" +.PP +.in +4n +.EX NETID_AUTHORITATIVE=FALSE SERVICES_AUTHORITATIVE=FALSE SETENT_BATCH_READ=FALSE +.EE +.in +.\" .SH AUTHOR +.\" Ulrich Drepper +.\" .SH 関連項目 \fInsswitch.conf\fP .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index d48e9f91..00000000 --- a/manual/LDP_man-pages/draft/man5/nsswitch.conf.5 +++ /dev/null @@ -1,291 +0,0 @@ -.\" Copyright (c) 1998, 1999 Thorsten Kukuk (kukuk@vt.uni-paderborn.de) -.\" Copyright (c) 2011, Mark R. Bannister -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated Wed Apr 29 1998 by NAKANO Takeo -.\" Updated & Modified Sat Aug 21 1999 -.\" by NAKANO Takeo -.\" Updated Fri Oct 12 JST 2001 by Akihiro MOTOKI -.\" Updated 2012-05-06, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" -.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 -補助グループアクセスリスト。 \fBgetgrouplist\fP(3) 関数が使用する。 -.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 -結果をすぐに返す。 これ以上検索処理は呼び出されない。 ただし、互換性のため、 選択されたアクションが \fBgroup\fP データベースに対するもので、 -ステータスが \fBnotfound\fP であった場合で、 設定ファイルに \fBinitgroups\fP -の行が含まれていない場合には、次の検索処理は常に呼び出される (検索結果への影響はない)。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/passwd.5 b/manual/LDP_man-pages/draft/man5/passwd.5 index f9414848..6a48ea7c 100644 --- a/manual/LDP_man-pages/draft/man5/passwd.5 +++ b/manual/LDP_man-pages/draft/man5/passwd.5 @@ -40,7 +40,7 @@ .\" Updated 2006-07-19, Akihiro MOTOKI , LDP v2.36 .\" Updated 2012-05-30, Akihiro MOTOKI .\" -.TH PASSWD 5 2015\-02\-01 Linux "Linux Programmer's Manual" +.TH PASSWD 5 2018\-04\-30 Linux "Linux Programmer's Manual" .SH 名前 passwd \- パスワードファイル .SH 説明 @@ -70,20 +70,22 @@ ID をユーザー名に 対応させるのに \fBpasswd\fP ファイルを使 \fI/etc/passwd\fP の暗号化パスワードが "\fI*NP*\fP" (クォートはなし) の場合、 shadow レコードを NIS+ サーバから取得することを意味する。 .PP -shadow password が使われているかどうかにはよらず、多くのシステム管理者は、 -暗号化パスワード欄にアスタリスク (*) を設定することで、そのユーザーが -パスワードでの認証が受けられないようにしている (下記の「注意」の項を参照)。 +Regardless of whether shadow passwords are used, many system administrators +use an asterisk (*) in the encrypted password field to make sure that this +user can not authenticate themself using a password. (But see NOTES below.) .PP 新しいユーザーを登録する場合には、パスワード欄にアスタリスク (*) を設定しておき、 \fBpasswd\fP(1) コマンドにより設定を行うようにすること。 .PP ファイルの 1 行は 1 ユーザーの情報を表し、 コロン区切りの 7 つの項目を含む。 -.sp -.RS +.PP +.in +4n +.EX name:password:UID:GID:GECOS:directory:shell -.RE -.sp +.EE +.in +.PP 各フィールドは以下の通りである: .TP 12 \fIname\fP @@ -139,8 +141,7 @@ gcos 欄は $IDENT カード用の情報を 隠しておくための場所なん のも同様の結果となる。その場合にはさらに \fBsu\fP(1) も有効なまま残ってしまう。 .SH 関連項目 \fBchfn\fP(1), \fBchsh\fP(1), \fBlogin\fP(1), \fBpasswd\fP(1), \fBsu\fP(1), \fBcrypt\fP(3), -\fBgetpwent\fP(3), \fBgetpwnam\fP(3), \fBgroup\fP(5), \fBshadow\fP(5) +\fBgetpwent\fP(3), \fBgetpwnam\fP(3), \fBgroup\fP(5), \fBshadow\fP(5), \fBvipw\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 69868bb2..00000000 --- a/manual/LDP_man-pages/draft/man5/proc.5 +++ /dev/null @@ -1,3124 +0,0 @@ -.\" Copyright (C) 1994, 1995 by Daniel Quinlan (quinlan@yggdrasil.com) -.\" and Copyright (C) 2002-2008 Michael Kerrisk -.\" 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 -.\" -.\" %%%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 -.\" . -.\" %%%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 -.\" 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 . 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998,1999 Hiroaki Nagoya, -.\" Copyright (c) 2001-2005 Yuichi SATO, -.\" and Copyright (c) 2005-2013 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 1998-07-09, Hiroaki Nagoya -.\" Proofreaded 1998-07-24, Hiroaki Nagoya , -.\" Nakano Takeo and -.\" Shinya Hanataka . -.\" Matched with man-pages-1.22 1999-01-21, Hiroaki Nagoya -.\" Updated 1999-12-04, Kentaro Shirakata -.\" Updated 2001-04-24, Yuichi SATO -.\" Updated 2002-01-14, Yuichi SATO -.\" Updated 2002-11-04, Yuichi SATO -.\" Updated 2003-03-01, Yuichi SATO -.\" Updated 2003-10-18, Yuichi SATO -.\" Updated 2003-11-27, Yuichi SATO -.\" Updated 2005-01-22, Yuichi SATO -.\" Updated 2005-09-14, Akihiro MOTOKI -.\" Updated 2005-11-19, Akihiro MOTOKI, LDP v2.14 -.\" Updated 2006-01-18, Akihiro MOTOKI, LDP v2.21 -.\" Updated 2006-02-15, Akihiro MOTOKI, LDP v2.23 -.\" Updated 2006-03-05, Akihiro MOTOKI, LDP v2.25 -.\" Updated 2006-04-15, Akihiro MOTOKI, LDP v2.29 -.\" Updated 2007-01-05, Akihiro MOTOKI, LDP v2.43 -.\" Updated 2007-07-04, Akihiro MOTOKI, LDP v2.58 -.\" Updated 2007-09-03, Akihiro MOTOKI, LDP v2.64 -.\" Updated 2007-10-11, Akihiro MOTOKI, LDP v2.65 -.\" Updated 2008-02-06, Akihiro MOTOKI, LDP v2.76 -.\" Updated 2008-09-21, Akihiro MOTOKI, LDP v3.09 -.\" Updated 2009-03-03, Akihiro MOTOKI, LDP v3.19 -.\" Updated 2009-03-13, Akihiro MOTOKI, LDP v3.20 -.\" Updated 2012-06-04, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-05-04, Akihiro MOTOKI -.\" Updated 2013-07-24, Akihiro MOTOKI -.\" Updated 2013-08-16, Akihiro MOTOKI -.\" Updated 2013-08-30, Akihiro MOTOKI, LDP v3.53 -.\" -.TH PROC 5 2015\-01\-22 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 2.6.0 -.\" CONFIG_SECURITY -.\" https://lwn.net/Articles/28222/ -.\" http://www.nsa.gov/research/_files/selinux/papers/module/x362.shtml -.\" -.\" fscreate, current, prev, and exec present in Linux 2.6.0 -.\" keycreate added in Linux 2.6.18 -.\" commit 4eb582cf1fbd7b9e5f466e3718a59c957e75254e -.\" /Documentation/keys.txt -.\" sockcreate added in Linux 2.6.18 -.\" commit 42c3e03ef6b298813557cdb997bd6db619cd65a2 -.\" -.\" FIXME Describe /proc/[pid]/autogroup -.\" 2.6.38 -.\" commit 5091faa449ee0b7d73bc296a93bca9540fc51d0a -.\" CONFIG_SCHED_AUTOGROUP -.\" -実行中のプロセスについてのサブディレクトリ。 サブディレクトリ名は (そのプロセスの) プロセス ID である。 -各サブディレクトリは、以下の擬似ファイルとディレクトリを含む。 -.TP -\fI/proc/[number]/auxv\fP (カーネル 2.6.0\-test7 以降) -実行時にプロセスに渡された ELF インタープリター情報が格納されている。 個々のエントリーは、\fIunsigned long\fP 型の ID 1 個に -\fIunsigned long\fP 型の値 1 個が続くフォーマットである。 最後のエントリーには 0 が 2 個入っている。 -\fBgetauxval\fP(3) も参照。 -.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 -このファイルが存在するのは、カーネルのコンフィギュレーションオプショ -ン \fBCONFIG_CGROUPS\fP を有効にした場合だけである。 -.TP -\fI/proc/[pid]/clear_refs\fP (Linux 2.6.22 以降) - -.\" commit b813e931b4c8235bb42e301096ea97dbdee3e8fe (2.6.22) -.\" commit 398499d5f3613c47f2143b8c54a04efb5d7a6da9 (2.6.32) -.\" commit 040fa02077de01c7e08fa75be6125e4ca5636011 (3.11) -.\" -.\" "Clears page referenced bits shown in smaps output" -.\" write-only, writable only by the owner of the process -このファイルは書き込み専用ファイルで、書き込めるのはプロセスの所有者だけである。 - -このファイルには以下の値を書き込むことができる。 -.RS -.TP -1 (Linux 2.6.22 以降) -.\" Internally: CLEAR_REFS_ALL -Reset the PG_Referenced and ACCESSED/YOUNG bits for all the pages associated -with the process. (Before kernel 2.6.32, writing any nonzero value to this -file had this effect.) -.TP -2 (Linux 2.6.32 以降) -.\" Internally: CLEAR_REFS_ANON -Reset the PG_Referenced and ACCESSED/YOUNG bits for all anonymous pages -associated with the process. -.TP -3 (Linux 2.6.32 以降) -.\" Internally: CLEAR_REFS_MAPPED -Reset the PG_Referenced and ACCESSED/YOUNG bits for all file\-mapped pages -associated with the process. -.RE -.IP -Clearing the PG_Referenced and ACCESSED/YOUNG bits provides a method to -measure approximately how much memory a process is using. One first -inspects the values in the "Referenced" fields for the VMAs shown in -\fI/proc/[pid]/smaps\fP to get an idea of the memory footprint of the process. -One then clears the PG_Referenced and ACCESSED/YOUNG bits and, after some -measured time interval, once again inspects the values in the "Referenced" -fields to get an idea of the change in memory footprint of the process -during the measured interval. If one is interested only in inspecting the -selected mapping types, then the value 2 or 3 can be used instead of 1. - -A further value can be written to affect a different bit: -.RS -.TP -4 (Linux 3.11 以降) -.\" Internally: CLEAR_REFS_SOFT_DIRTY -Clear the soft\-dirty bit for all the pages associated with the process. -This is used (in conjunction with \fI/proc/[pid]/pagemap\fP) by the -check\-point restore system to discover which pages of a process have been -dirtied since the file \fI/proc/[pid]/clear_refs\fP was written to. -.RE -.IP -Writing any value to \fI/proc/[pid]/clear_refs\fP other than those listed above -has no effect. - -\fI/proc/[pid]/clear_refs\fP ファイルが存在するのは、カーネルのコンフィギュレーションオプション -\fBCONFIG_PROC_PAGE_MONITOR\fP を有効にした場合だけである。 -.TP -\fI/proc/[pid]/cmdline\fP -.\" In 2.3.26, this also used to be true if the process was swapped out. -この読み出し専用のファイルはプロセスの完全なコマンド行を保持する。 ただし、そのプロセスがゾンビプロセスの場合は、 このファイルは空となる。 つまり、 -このファイルを読み出しても一文字も返らない。 このファイルではコマンドライン引き数が、 ヌルバイト (\(aq\e0\(aq) -で区切られた文字列として書かれており、 最後の文字列の後にヌルバイトが一つ置かれる。 -.TP -\fI/proc/[pid]/comm\fP (Linux 2.6.33 以降) -.\" commit 4614a696bd1c3a9af3a08f0e5874830a85b889d4 -This file exposes the process's \fIcomm\fP value\(emthat is, the command name -associated with the process. Different threads in the same process may have -different \fIcomm\fP values, accessible via \fI/proc/[pid]/task/[tid]/comm\fP. A -thread may modify its \fIcomm\fP value, or that of any of other thread in the -same thread group (see the discussion of \fBCLONE_THREAD\fP in \fBclone\fP(2)), by -writing to the file \fI/proc/self/task/[tid]/comm\fP. Strings longer than -\fBTASK_COMM_LEN\fP (16) characters are silently truncated. - -This file provides a superset of the \fBprctl\fP(2) \fBPR_SET_NAME\fP and -\fBPR_GET_NAME\fP operations, and is employed by \fBpthread_setname_np\fP(3) when -used to rename threads other than the caller. -.TP -\fI/proc/[pid]/coredump_filter\fP (Linux 2.6.23 以降) -\fBcore\fP(5) 参照。 -.TP -\fI/proc/[pid]/cpuset\fP (Linux 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 -このファイルはプロセスの環境変数を含んでいる。 各エントリーはヌルバイト (\(aq\e0\(aq) で区切られていて、 -末尾にヌルバイトがあるかもしれない。 したがって、プロセス 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 は標準エラー出力、などとなる。 - -パイプやソケットのファイルディスクリプターでは、 エントリーはファイル種別が inode という内容を持つシンボリックリンクとなる。 -このファイルに対して \fBreadlink\fP(2) を呼び出すと以下の形式の文字列が返る。 - - type:[inode] - -例えば、 \fIsocket:[2248868]\fP は inode が 2248868 のソケットである。 ソケットの場合、 その inode を元に -\fI/proc/net/\fP 以下のファイルを参照し詳しい情報を得ることができる。 - -対応する inode がないファイルディスクリプター (例えば \fBepoll_create\fP(2), \fBeventfd\fP(2), -\fBinotify_init\fP(2), \fBsignalfd\fP(2), \fBtimerfd\fP(2) により生成されたファイルディスクリプター) では、 -エントリーはその内容が以下の形式のシンボリックリンクとなる。 - - anon_inode: - -\fIfile\-type\fP は角括弧で囲まれる場合がある。 - -例えば、 epoll ファイルディスクリプターは、 内容が文字列 \fIanon_inode:[eventpoll]\fP -のシンボリックリンクを持つ場合がある。 - -.\"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 (Linux 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 -.\" Certain file types include additional info; see -.\" Documentation/filesystems/proc.txt -.\" -.\" Especially interesting is this: -.\" -.\" commit ab49bdecc3ebb46ab661f5f05d5c5ea9606406c6 -.\" Author: Cyrill Gorcunov -.\" Date: Mon Dec 17 16:05:06 2012 -0800 -.\" -.\" Basically, the /proc/PID/fdinfo/ entry for an inotify FD -.\" includes the file handles for all watched FDs -.\" -このディレクトリのファイルは、プロセスの所有者だけが読み出すことができる。 -.TP -\fI/proc/[pid]/io\fP (kernel 2.6.20 以降) -.\" commit 7c3ab7381e79dfc7db14a67c6f4f3285664e1ec2 -このファイルは、 プロセスの I/O 統計情報を表示する。 以下に例を挙げる。 -.in +4n -.nf - -#\fB cat /proc/3828/io\fP -rchar: 323934931 -wchar: 323929600 -syscr: 632687 -syscw: 632675 -read_bytes: 0 -write_bytes: 323932160 -cancelled_write_bytes: 0 -.fi -.in - -フィールドの詳細は以下の通りである。 -.RS -.TP -\fIrchar\fP: 読み出し文字数 -このタスクがきっかけでストレージから読み出されたバイト数。 この値は、単純に \fBread\fP(2) -や同様のシステムコールからこのプロセスに渡されたバイト数の合計である。 この値には、 端末入出力なども含まれ、 実際に物理ディスク I/O -が必要であったか (読み出しがページキャッシュからの読み出しで十分であったか) どうかは関係ない。 -.TP -\fIwchar\fP: 書き込み文字数 -このタスクがきっかけで行われたか行われるはずのディスクへの書き込みバイト数。 \fIrchar\fP と同じ注意があてはまる。 -.TP -\fIsyscr\fP: 読み出しシステムコール数 -読み出し I/O 操作\(em\fBread\fP(2) や \fBpread\fP(29 などのシステムコール\(emを試みた回数。 -.TP -\fIsyscw\fP: 書き込みシステムコール数 -書き込み I/O 操作\(em\fBwrite\fP(2) や \fBpwrite\fP(29 などのシステムコール\(emを試みた回数。 -.TP -\fIread_bytes\fP: 読み出しバイト数 -このプロセスが実際にストレージ層から取得しようとしたバイト数。 ブロックデバイス上のファイルシステムでは正確な値となる。 -.TP -\fIwrite_bytes\fP: 書き込みバイト数 -このプロセスが実際にストレージ層に転送しようとしたバイト数。 -.TP -\fIcancelled_write_bytes\fP: -The big inaccuracy here is truncate. If a process writes 1MB to a file and -then deletes the file, it will in fact perform no writeout. But it will -have been accounted as having caused 1MB of write. In other words: this -field represents the number of bytes which this process caused to not -happen, by truncating pagecache. A task can cause "negative" I/O too. If -this task truncates some dirty pagecache, some I/O which another task has -been accounted for (in its \fIwrite_bytes\fP) will not be happening. -.RE -.IP -\fI注意\fP: 現在の実装では 32 ビットシステムでは少しいやらしい点がある。 プロセス B が 64 -ビットカウンターの一つを更新している途中に、プロセス A がプロセス B の \fI/proc/[pid]/io\fP を読んだ場合、 プロセス A -に更新中の結果が見えることがある。 -.TP -\fI/proc/[pid]/gid_map\fP (Linux 3.5 以降) -\fI/proc/[pid]/uid_map\fP の説明を参照すること。 - -.TP -\fI/proc/[pid]/limits\fP (Linux 2.6.24 以降) -.\" commit 3036e7b490bf7878c6dae952eec5fb87b1106589 -このファイルは、そのプロセスの各リソース制限について、 ソフトリミット、ハードリミット、計測単位を表示する (\fBgetrlimit\fP(2) 参照)。 -Linux 2.6.35 以前では、 プロセスの実 UID を持つプロセスだけが、 このファイルを読み出すことができる。 Linux 2.6.36 -以降では、 システム上のすべてのユーザーがこのファイルを読み出すことができる。 -.TP -\fI/proc/[pid]/map_files/\fP (kernel 3.3 以降) -.\" commit 640708a2cff7f81e246243b0073c66e6ece7e53e -このサブディレクトリには、 メモリーマップされたファイルに対応するエントリーが置かれる (\fBmmap\fP(2) 参照)。 -エントリーの名前がメモリー領域の (16 進数表現の) 開始アドレスと終了アドレスの組で、 -エントリーはマップされているファイルへのシンボリックリンクである。 以下に例を示す。 なお、 出力は幅が 80 -文字のディスプレイに合うように折り返して整形されている。 -.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 - -これらのエントリーが存在するのは \fBMAP_FILE\fP フラグでマッピングされたメモリー領域についてであるが、 Linux での無名の共有メモリー -(\fBMAP_ANON | MAP_SHARED\fP で作成された領域) の実装方法では、 -このディレクトリに無名の共有メモリーに関するエントリーも存在する。 以下は、 マッピング元のファイルが削除された \fI/dev/zero\fP -ファイルでの例である。 -.in +4n -.nf - - -lrw\-\-\-\-\-\-\-. 1 root root 64 Apr 16 21:33 - 7fc075d2f000\-7fc075e6f000 \-> /dev/zero (deleted) -.fi -.in - -このディレクトリが存在するのは、 カーネルのコンフィギュレーションオプション \fBCONFIG_CHECKPOINT_RESTORE\fP -が有効になっている場合だけである。 -.TP -\fI/proc/[pid]/maps\fP -現在マッピングされているメモリー領域とそのアクセスパーミッションを含む。 メモリーマッピングについての詳しい情報は \fBmmap\fP(2) を参照。 - -ファイルのフォーマットは以下のとおり: - -.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 - -\fIaddress\fP フィールドは、 そのマッピングが占めているプロセスのアドレス空間である。 \fIperms\fP -フィールドはパーミッションのセットである。 - -.nf -.in +5 -r = read -w = write -x = execute -s = shared -p = private (copy on write) -.fi -.in - -\fIoffset\fP はファイル (などの) 中でのオフセット、 \fIdev\fP はデバイス (メジャーデバイス番号:マイナーデバイス番号)、 -\fIinode\fP はそのデバイスの i ノード番号である。 0 は、BSS (初期化されていないデータ領域) の場合のように、 このメモリー領域はどの -i ノードとも関連付けられていないことを意味する。 - -\fIpathname\fP フィールドは、 通常そのマッピングに対応するファイルである。 ELF ファイルの場合、 ELF プログラムヘッダーの -Offset フィールドを見ることで (\fIreadelf\ \-l\fP))、 簡単に \fIoffset\fP との対応付けをすることができる。 - -これに加え、 役に立つ擬似パス名がある。 -.RS 12 -.TP -\fI[stack]\fP -初期プロセスのスタック (初期プロセスはメインスレッドとも呼ばれる)。 -.TP -\fI[stack:]\fP (Linux 3.4 以降) -.\" commit b76437579d1344b612cf1851ae610c636cec7db0 -スレッドのスタック (\fI\fP はスレッド ID である)。 パス \fI/proc/[pid]/task/[tid]/\fP -に対応する。 -.TP -\fI[vdso]\fP -動的にリンクされる仮想共有オブジェクト (virtual dynamically linked shared object)。 -.TP -\fI[heap]\fP -プロセスのヒープ。 -.in -.RE -.IP -\fIpathname\fP が空の場合、 その領域は \fBmmap\fP(2) を使って確保された無名マッピングである。 \fBgdb\fP(1), -\fBstrace\fP(1) などを使ってプロセスを実行しない限り、 この領域をプロセスのソースと対応付ける簡単な方法はない。 - -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) -ではそのファイルはエラー状態として通知される。 詳細は \fBnamespaces\fP(7) を参照。 -.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 -このファイルはプロセスの所有者だけが読み出すことができる。 - -詳しい情報は \fBnamespaces\fP(7) を参照。 -.TP -\fI/proc/[pid]/ns/\fP (Linux 3.0 以降) -.\" See commit 6b4e306aa3dc94a0545eb9279475b1ab6209a31f -このサブディレクトリには、名前空間毎に 1 エントリーが置かれる。 -各エントリーは \fBsetns\fP(2) による操作をサポートしている。 -詳細な情報は \fBnamespaces\fP(7) を参照。 - -.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 -Linux 2.6.36 以降では、 このファイルの使用は非推奨とされ、 代わりに \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. - -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]/pagemap\fP (Linux 2.6.25 以降) -このファイルは、 プロセスの各仮想ページの物理ページフレームやスワップ領域へのマッピングを表示する。 -各仮想ページに 64 ビットの値 1 つが対応し、 各ビットは以下のとおりである。 -.RS 12 -.TP -63 -セットされている場合、 このページは RAM に存在する。 -.TP -62 -セットされている場合、 このページはスワップ領域に存在する。 -.TP -61 (Linux 3.5 以降) -このページはファイルマップされたページか共有無名ページである。 -.TP -60\-56 (Linux 3.11 以降) -.\" Not quite true; see commit 541c237c0923f567c9c4cabb8a81635baadc713f -ゼロ。 -.TP -55 (Linux 3.11 以降) -PTE が soft\-dirty である (カーネルのソースファイル \fIDocumentation/vm/soft\-dirty.txt\fP を参照)。 -.TP -54\-0 -このページが RAM に存在する場合 (ビット 63)、 これらのビットはページフレーム番号を示す。 このページフレーム番号は -\fI/proc/kpageflags\fP と \fI/proc/kpagecount\fP のインデックスに使用できる。 このページがスワップに存在する場合 -(ビット 62)、 ビット 4\-0 はスワップ種別を示し、 ビット 54\-5 はスワップオフセットを示す。 -.RE -.IP -Linux 3.11 より前では、 ビット 60\-55 はページサイズの基数 2 の log を示すのに使われていた。 -.IP -\fI/proc/[pid]/pagemap\fP を効率的に活用するには、 \fI/proc/[pid]/maps\fP -を使ってメモリーのどの領域が実際にマップされているかを判断し、 seek でマップされていない領域をスキップするのがよい。 -.IP -\fI/proc/[pid]/pagemap\fP ファイルが存在するのは、カーネルのコンフィギュレーションオプション -\fBCONFIG_PROC_PAGE_MONITOR\fP を有効にした場合だけである。 -.TP -\fI/proc/[pid]/personality\fP (Linux 2.6.28 以降) -.\" commit 478307230810d7e2a753ed220db9066dfdf88718 -This read\-only file exposes the process's execution domain, as set by -\fBpersonality\fP(2). The value is displayed in hexadecimal notation. -.TP -\fI/proc/[pid]/root\fP -UNIX と Linux では、 ファイルシステムのルート (/) をプロセスごとに別々にできる。 これはシステムコール \fBchroot\fP(2) -によって設定する。 このファイルはプロセスのルートディレクトリを指すシンボリックリンクで、 \fIexe\fP や \fIfd/*\fP -などと同じような動作をする。 - -.\" The following was still true as at kernel 2.6.13 -.\" FIXME Describe /proc/[pid]/projid_map -.\" Added in 3.7, commit f76d207a66c3a53defea67e7d36c3eb1b7d6d61d -.\" 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 -.\" commit 1e0bd7550ea9cf474b1ad4c6ff5729a507f75fdc -.\" 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 -.\" The set of fields exposed by this file have changed -.\" significantly over time. -.\" commit 43ae34cb4cd650d1eb4460a8253a8e747ba052ac -.\" -.\" 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 以降) -このファイルは、そのプロセスの各マッピングのメモリー消費量を表示する (\fBpmap\fP(1) -コマンドは解析しやすいであろう形式で同様の情報を表示する)。 マッピングのそれぞれについて、以下のような内容が表示される。 -.in +4n -.nf - -00400000\-0048a000 r\-xp 00000000 fd:03 960637 /bin/bash -Size: 552 kB -Rss: 460 kB -Pss: 100 kB -Shared_Clean: 452 kB -Shared_Dirty: 0 kB -Private_Clean: 8 kB -Private_Dirty: 0 kB -Referenced: 460 kB -Anonymous: 0 kB -AnonHugePages: 0 kB -Swap: 0 kB -KernelPageSize: 4 kB -MMUPageSize: 4 kB -Locked: 0 kB - -.fi -.in -最初の行には、 \fI/proc/[pid]/maps\fP で表示されるマッピングと同じ情報が表示される。 残りの行には、マッピングのサイズ、現在 RAM -上に存在するマッピングの量 ("Rss")、 このマッピングのこのプロセスの proportional share ("Pss")、 -マッピング内の共有ページのうちクリーンなページ数とダーティページ数、 -マッピング内のプライベートページのうちクリーンなページ数とダーティページ数、を示す。 "Referenced" は参照された (referenced) -かアクセスされたと現在印が付いているメモリー量を示す。 "Anonymous" はどのファイルにも属していないメモリー量を示す。 "Swap" -は使用中だがスワップされている無名メモリー (would\-be\-anonymous memory) の量を示す。 - -The "KernelPageSize" entry is the page size used by the kernel to back a -VMA. This matches the size used by the MMU in the majority of cases. -However, one counter\-example occurs on PPC64 kernels whereby a kernel using -64K as a base page size may still use 4K pages for the MMU on older -processors. To distinguish, this patch reports "MMUPageSize" as the page -size used by the MMU. - -The "Locked" indicates whether the mapping is locked in memory or not. - -"VmFlags" field represents the kernel flags associated with the particular -virtual memory area in two letter encoded manner. The codes are the -following: - - rd \- readable - wr \- writable - ex \- executable - sh \- shared - mr \- may read - mw \- may write - me \- may execute - ms \- may share - gd \- stack segment grows down - pf \- pure PFN range - dw \- disabled write to the mapped file - lo \- pages are locked in memory - io \- memory mapped I/O area - sr \- sequential read advise provided - rr \- random read advise provided - dc \- do not copy area on fork - de \- do not expand area on remapping - ac \- area is accountable - nr \- swap space is not reserved for the area - ht \- area uses huge tlb pages - nl \- non\-linear mapping - ar \- architecture specific flag - dd \- do not include area into core dump - sd \- soft\-dirty flag - mm \- mixed map area - hg \- huge page advise flag - nh \- no\-huge page advise flag - mg \- mergeable advise flag - -\fI/proc/[pid]/smaps\fP ファイルが存在するのは、カーネルのコンフィギュレーションオプション -\fBCONFIG_PROC_PAGE_MONITOR\fP を有効にした場合だけである。 -.TP -\fI/proc/[pid]/stack\fP (Linux 2.6.29 以降) -.\" 2ec220e27f5040aec1e88901c1b6ea3d135787ad -This file provides a symbolic trace of the function calls in this process's -kernel stack. This file is provided only if the kernel was built with the -\fBCONFIG_STACKTRACE\fP configuration option. -.TP -\fI/proc/[pid]/stat\fP -プロセスの状態についての情報。 これは \fBps\fP(1) で使われ、 カーネルのソースファイル \fIfs/proc/array.c\fP -で定義されている。 - -各フィールドを順番に、 \fBscanf\fP(3) のフォーマット指定子付きで以下に示す。 -.RS -.TP 10 -(1) \fIpid\fP \ %d -.br -プロセス ID。 -.TP -(2) \fIcomm\fP \ %s -括弧でくくられた実行形式のファイル名。 実行形式がスワップアウトされているかどうかによらず、 見ることができる。 -.TP -(3) \fIstate\fP \ %c -プロセスの状態を示す、以下のいずれか 1 文字。 -.RS -.IP R 3 -実行中 (Running) -.IP S -Sleeping in an interruptible wait -.IP D -Waiting in uninterruptible disk sleep -.IP Z -ゾンビ (Zombie) -.IP T -(シグナルでの) 停止、または (Linux 2.6.33 より前では) トレースによる停止 -.IP t -.\" commit 44d90df6b757c59651ddd55f1a84f28132b50d29 -トレースによる停止 (Tracing stop) (Linux 2.6.33 以降) -.IP W -ページング中 (Linux 2.6.0 より前のみ) -.IP X -死亡 (Dead) (Linux 2.6.0 以降) -.IP x -.\" commit 44d90df6b757c59651ddd55f1a84f28132b50d29 -.\" commit 74e37200de8e9c4e09b70c21c3f13c2071e77457 -死亡 (Dead) (Linux 2.6.33 から 3.13 までのみ) -.IP K -.\" commit 44d90df6b757c59651ddd55f1a84f28132b50d29 -.\" commit 74e37200de8e9c4e09b70c21c3f13c2071e77457 -Wakekill (Linux 2.6.33 から 3.13 までのみ) -.IP W -.\" commit 44d90df6b757c59651ddd55f1a84f28132b50d29 -.\" commit 74e37200de8e9c4e09b70c21c3f13c2071e77457 -Waking (Linux 2.6.33 から 3.13 までのみ) -.IP P -.\" commit f2530dc71cf0822f90bb63ea4600caaef33a66bb -.\" commit 74e37200de8e9c4e09b70c21c3f13c2071e77457 -Parked (Linux 3.9 から 3.13 までのみ) -.RE -.TP -(4) \fIppid\fP \ %d -このプロセスの親プロセスの PID。 -.TP -(5) \fIpgrp\fP \ %d -プロセスのプロセスグループ ID。 -.TP -(6) \fIsession\fP \ %d -プロセスのセッション ID。 -.TP -(7) \fItty_nr\fP \ %d -プロセスの制御端末 (マイナーデバイス番号はビット 31〜20 と 7〜0 にまたがって格納され、 メジャーデバイス番号はビット 15〜8 -に格納される)。 -.TP -(8) \fItpgid\fP \ %d -.\" This field and following, up to and including wchan added 0.99.1 -プロセスの制御端末のフォアグランド・プロセスグループの ID。 -.TP -(9) \fIflags\fP \ %u -プロセスのカーネルフラグワード。 ビットの意味は、 \fI\fP で定義されている PF_* を参照すること。 -詳細はカーネルのバージョンに依存する。 - -このフィールドのフォーマットは Linux 2.6 より前では %lu であった。 -.TP -(10) \fIminflt\fP \ %lu -プロセスが引き起こしたマイナーフォールト (minor fault、ディスクから メモリーページへのロードを必要としないフォールト) の回数。 -.TP -(11) \fIcminflt\fP \ %lu -(そのプロセスが終了を待っている) 子プロセスが引き起こしたマイナーフォールトの回数。 -.TP -(12) \fImajflt\fP \ %lu -プロセスが引き起こしたメジャーフォールト (major fault、ディスクからメモリーページへのロードを必要とするフォールト) の回数。 -.TP -(13) \fIcmajflt\fP \ %lu -(そのプロセスが終了を待っている) 子プロセスが引き起こしたメジャーフォールトの回数。 -.TP -(14) \fIutime\fP \ %lu -このプロセスがユーザーモードでスケジューリングされた時間の合計。 clock tick 単位で計測される -(\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。 この値にはゲスト時間 \fIguest_time\fP (仮想 CPU -の実行に消費された時間) -も含まれる。これは、ゲスト時間のフィールドを認識しないアプリケーションにおいて、ゲスト時間分を計算に入れ損ねないようにするためである。 -.TP -(15) \fIstime\fP \ %lu -プロセスのカーネルモードでの実行時間 (単位 jiffies)。 このプロセスがカーネルモードでスケジューリングされた時間の合計。 clock tick -単位で計測される (\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。 -.TP -(16) \fIcutime\fP \ %ld -このプロセスの子プロセスで、終了待ち (waited\-for) のプロセスが、 ユーザーモードでスケジューリングされた時間の合計。 clock tick -単位で計測される (\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。 (\fBtimes\fP(2) も参照すること。) -この値にはゲスト時間 \fIcguest_time\fP (仮想 CPU を実行するのに消費した時間、下記参照) も含まれる。 -.TP -(17) \fIcstime\fP \ %ld -このプロセスの子プロセスで、終了待ち (waited\-for) のプロセスが、カーネルモードでスケジューリングされた時間の合計。 clock tick -単位で計測される (\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。 -.TP -(18) \fIpriority\fP \ %ld -(Linux 2.6 の場合の説明) リアルタイムスケジューリングポリシー (下記の -\fIpolicy ;\fP \fBsched_setscheduler\fP(2) 参照) で動作しているプロセスでは、 この -値はスケジューリング優先度を反転した値 (スケジューリング優先度を マイナスにし -た値) となる。値は \-2 から \-100 までの範囲の数値で、 それぞれリアルタイム優先 -度の 1 から 99 に対応する。 リアルタイム以外のスケジューリングポリシーで動作し -ているプロセスでは、 この値はカーネル内で管理されている 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 -(19) \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 -nice 値 (\fBsetpriority\fP(2) 参照)。 19 (最低優先) から \-20 (最高優先) -の範囲の値である。 -.TP -(20) \fInum_threads\fP \ %ld -このプロセスのスレッド数 (Linux 2.6 以降)。 カーネル 2.6 より前では、このフィールドは削除されたフィールドの 場所埋めとして 0 -にハードコードされていた。 -.TP -(21) \fIitrealvalue\fP \ %ld -インターバルタイマーによって、次に \fBSIGALRM\fP がプロセスへ送られるまでの時間 (単位 jiffies)。 カーネル 2.6.17 -以降では、このフィールドはメンテナンスされなくなり、 0 にハードコードされている。 -.TP -(22) \fIstarttime\fP \ %llu -プロセスの起動時刻。システムが起動した時刻が起点である。 Linux 2.6 より前のカーネルでは、 この値の単位は jiffies であった。 -Linux 2.6 以降では、 値の単位はクロック tick である (\fIsysconf(_SC_CLK_TCK)\fP で割った値となる)。 - -このフィールドのフォーマットは Linux 2.6 より前では %lu であった。 -.TP -(23) \fIvsize\fP \ %lu -仮想メモリーのサイズ。単位はバイト。 -.TP -(24) \fIrss\fP \ %ld -Resident Set Size。プロセスが持っている実メモリー上のページ数。 -これはちょうどテキスト、データ、スタック空間に使われているページ数である。 デマンドロードされていないページや -スワップアウトされたページの数は含んでいない。 -.TP -(25) \fIrsslim\fP \ %lu -このプロセスの rss の現在のソフトリミット (バイト単位)。 \fBgetrlimit\fP(2) の \fBRLIMIT_RSS\fP の説明を参照。 -.TP -(26) \fIstartcode\fP \ %lu -プログラムテキストが実行可能であるような領域の先頭アドレス。 -.TP -(27) \fIendcode\fP \ %lu -プログラムテキストが実行可能であるような領域の末尾アドレス。 -.TP -(28) \fIstartstack\fP \ %lu -スタックの開始アドレス (すなわち、スタックの底)。 -.TP -(29) \fIkstkesp\fP \ %lu -現在の ESP (スタックポインター) の値。 プロセスのカーネルスタックページにある。 -.TP -(30) \fIkstkeip\fP \ %lu -現在の EIP (インストラクションポインター) の値。 -.TP -(31) \fIsignal\fP \ %lu -処理待ちのシグナルのビットマップ。 10 -進数で表示される。このフィールドは廃止予定である。リアルタイムシグナルに関する情報は表示されないからである。代わりに -\fI/proc/[pid]/status\fP を使うこと。 -.TP -(32) \fIblocked\fP \ %lu -ブロックされた (blocked) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。 -リアルタイムシグナルに関する情報は表示されないからである。 代わりに \fI/proc/[pid]/status\fP を使うこと。 -.TP -(33) \fIsigignore\fP \ %lu -無視された (ignored) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。 -リアルタイムシグナルに関する情報は表示されないからである。 代わりに \fI/proc/[pid]/status\fP を使うこと。 -.TP -(34) \fIsigcatch\fP \ %lu -捕捉された (caught) シグナルのビットマップ。 10 進数で表示される。 このフィールドは廃止予定である。 -リアルタイムシグナルに関する情報は表示されないからである。 代わりに \fI/proc/[pid]/status\fP を使うこと。 -.TP -(35) \fIwchan\fP \ %lu -This is the "channel" in which the process is waiting. It is the address of -a location in the kernel where the process is sleeping. The corresponding -symbolic name can be found in \fI/proc/[pid]/wchan\fP. -.TP -(36) \fInswap\fP \ %lu -.\" nswap was added in 2.0 -スワップされたページ数 (メンテナンスされていない)。 -.TP -(37) \fIcnswap\fP \ %lu -.\" cnswap was added in 2.0 -子プロセスの \fInswap\fP の累計 (メンテナンスされていない)。 -.TP -(38) \fIexit_signal\fP \ %d \ (Linux 2.1.22 以降) -プロセスが死んだときに親プロセスに送られるシグナル。 -.TP -(39) \fIprocessor\fP \ %d \ (Linux 2.2.8 以降) -このプロセスを最後に実行した CPU の番号。 -.TP -(40) \fIrt_priority\fP \ %u \ (Linux 2.5.19 以降) -リアルタイムスケジューリングの優先度。 リアルタイムポリシーの元でスケジューリングされるプロセスでは 1 から 99 の範囲の値となり、 -リアルタイム以外のスケジューリングポリシーのプロセスでは 0 となる (\fBsched_setscheduler\fP(2) 参照)。 -.TP -(41) \fIpolicy\fP \ %u \ (Linux 2.5.19 以降) -スケジューリングポリシー (\fBsched_setscheduler\fP(2) 参照)。 値は、 \fIlinux/sched.h\fP の SCHED_* -定数を使ってデコードすればよい。 - -このフィールドのフォーマットは Linux 2.6.22 より前は %lu であった。 -.TP -(42) \fIdelayacct_blkio_ticks\fP \ %llu \ (Linux 2.6.18 以降) -(clock tick (100分の1秒) 単位での) ブロック I/O の総遅延量。 -.TP -(43) \fIguest_time\fP \ %lu \ (Linux 2.6.24 以降) -プロセスのゲスト時間 (ゲスト OS の仮想 CPU を実行するのに消費された時間)。 clock tick 単位で計測される -(\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。 -.TP -(44) \fIcguest_time\fP \ %ld \ (Linux 2.6.24 以降) -プロセスの子プロセスのゲスト時間。 clock tick 単位で計測される (\fIsysconf(_SC_CLK_TCK)\fP で割った値が表示される)。 -.TP -(45) \fIstart_data\fP \ %lu \ (Linux 3.3 以降) -.\" commit b3f7f573a20081910e34e99cbc91831f4f02f1ff -Address above which program initialized and uninitialized (BSS) data are -placed. -.TP -(46) \fIend_data\fP \ %lu \ (Linux 3.3 以降) -.\" commit b3f7f573a20081910e34e99cbc91831f4f02f1ff -Address below which program initialized and uninitialized (BSS) data are -placed. -.TP -(47) \fIstart_brk\fP \ %lu \ (Linux 3.3 以降) -.\" commit b3f7f573a20081910e34e99cbc91831f4f02f1ff -Address above which program heap can be expanded with \fBbrk\fP(2). -.TP -(48) \fIarg_start\fP \ %lu \ (Linux 3.5 以降) -.\" commit 5b172087f99189416d5f47fd7ab5e6fb762a9ba3 -プログラムのコマンドライン引き数 (\fIargv\fP) が置かれる開始アドレス。 -.TP -(49) \fIarg_end\fP \ %lu \ (Linux 3.5 以降) -.\" commit 5b172087f99189416d5f47fd7ab5e6fb762a9ba3 -プログラムのコマンドライン引き数 (\fIargv\fP) が置かれる終了アドレス。 -.TP -(50) \fIenv_start\fP \ %lu \ (Linux 3.5 以降) -.\" commit 5b172087f99189416d5f47fd7ab5e6fb762a9ba3 -プログラムの環境 (environment) が置かれる開始アドレス。 -.TP -(51) \fIenv_end\fP \ %lu \ (Linux 3.5 以降) -.\" commit 5b172087f99189416d5f47fd7ab5e6fb762a9ba3 -プログラムの環境 (environment) が置かれる終了アドレス。 -.TP -(52) \fIexit_code\fP \ %d \ (Linux 3.5 以降) -.\" commit 5b172087f99189416d5f47fd7ab5e6fb762a9ba3 -\fBwaitpid\fP(2) が報告する形式のスレッドの終了ステータス。 -.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 -VmSwap: 0 kB -Threads: 1 -SigQ: 0/3067 -SigPnd: 0000000000000000 -ShdPnd: 0000000000000000 -SigBlk: 0000000000010000 -SigIgn: 0000000000384004 -SigCgt: 000000004b813efb -CapInh: 0000000000000000 -CapPrm: 0000000000000000 -CapEff: 0000000000000000 -CapBnd: ffffffffffffffff -Seccomp: 0 -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 * -.\" commit b084d4353ff99d824d3bc5a5c2c22c70b1fba722 -\fIVmSwap\fP: スワップアウトされた仮想メモリーサイズ (Linux 2.6.34 以降). -.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: ケーパビリティバウンディングセット (Linux 2.6.26 以降、 \fBcapabilities\fP(7) 参照)。 -.IP * -.\" commit 2f4b3bf6b2318cfaa177ec5a802f4d8d6afbd816 -\fISeccomp\fP: Seccomp mode of the process (since Linux 3.8, see -\fBseccomp\fP(2)). 0 means \fBSECCOMP_MODE_DISABLED\fP; 1 means -\fBSECCOMP_MODE_STRICT\fP; 2 means \fBSECCOMP_MODE_FILTER\fP. This field is -provided only if the kernel was built with the \fBCONFIG_SECCOMP\fP kernel -configuration option enabled. -.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_ctxt_switches\fP, \fInonvoluntary_ctxt_switches\fP: -自発的/非自発的なコンテキストスイッチの回数 (Linux 2.6.23 以降)。 -.RE -.TP -\fI/proc/[pid]/syscall\fP (Linux 2.6.27 以降) -.\" commit ebcb67341fee34061430f3367f2e507e52ee051b -This file exposes the system call number and argument registers for the -system call currently being executed by the process, followed by the values -of the stack pointer and program counter registers. The values of all six -argument registers are exposed, although most system calls use fewer -registers. - -If the process is blocked, but not in a system call, then the file displays -\-1 in place of the system call number, followed by just the values of the -stack pointer and program counter. If process is not blocked, then file -contains just the string "running". - -カーネルの設定で \fBCONFIG_HAVE_ARCH_TRACEHOOK\fP が有効になっている場合にのみ、このファイルは存在する。 -.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/[pid]/uid_map\fP, \fI/proc/[pid]/gid_map\fP (Linux 3.5 以降) -.\" commit 22d917d80e842829d0ca0a561967d728eb1d6303 -These files expose the mappings for user and group IDs inside the user -namespace for the process \fIpid\fP. The description here explains the details -for \fIuid_map\fP; \fIgid_map\fP is exactly the same, but each instance of "user -ID" is replaced by "group ID". - -The \fIuid_map\fP file exposes the mapping of user IDs from the user namespace -of the process \fIpid\fP to the user namespace of the process that opened -\fIuid_map\fP (but see a qualification to this point below). In other words, -processes that are in different user namespaces will potentially see -different values when reading from a particular \fIuid_map\fP file, depending -on the user ID mappings for the user namespaces of the reading processes. - - -Each line in the file specifies a 1\-to\-1 mapping of a range of contiguous -between two user namespaces. The specification in each line takes the form -of three numbers delimited by white space. The first two numbers specify -the starting user ID in each user namespace. The third number specifies the -length of the mapped range. In detail, the fields are interpreted as -follows: -.RS -.IP (1) 4 -The start of the range of user IDs in the user namespace of the process -\fIpid\fP. -.IP (2) -The start of the range of user IDs to which the user IDs specified by field -one map. How field two is interpreted depends on whether the process that -opened \fIuid_map\fP and the process \fIpid\fP are in the same user namespace, as -follows: -.RS -.IP a) 3 -If the two processes are in different user namespaces: field two is the -start of a range of user IDs in the user namespace of the process that -opened \fIuid_map\fP. -.IP b) -If the two processes are in the same user namespace: field two is the start -of the range of user IDs in the parent user namespace of the process -\fIpid\fP. (The "parent user namespace" is the user namespace of the process -that created a user namespace via a call to \fBunshare\fP(2) or \fBclone\fP(2) -with the \fBCLONE_NEWUSER\fP flag.) This case enables the opener of \fIuid_map\fP -(the common case here is opening \fI/proc/self/uid_map\fP) to see the mapping -of user IDs into the user namespace of the process that created this user -namespace. -.RE -.IP (3) -The length of the range of user IDs that is mapped between the two user -namespaces. -.RE -.IP -After the creation of a new user namespace, the \fIuid_map\fP file may be -written to exactly once to specify the mapping of user IDs in the new user -namespace. (An attempt to write more than once to the file fails with the -error \fBEPERM\fP.) -.IP -The lines written to \fIuid_map\fP must conform to the following rules: -.RS -.IP * 3 -The three fields must be valid numbers, and the last field must be greater -than 0. -.IP * -Lines are terminated by newline characters. -.IP * -There is an (arbitrary) limit on the number of lines in the file. As at -Linux 3.8, the limit is five lines. -.IP * -The range of user IDs specified in each line cannot overlap with the ranges -in any other lines. In the current implementation (Linux 3.8), this -requirement is satisfied by a simplistic implementation that imposes the -further requirement that the values in both field 1 and field 2 of -successive lines must be in ascending numerical order. -.RE -.IP -Writes that violate the above rules fail with the error \fBEINVAL\fP. - -In order for a process to write to the \fI/proc/[pid]/uid_map\fP -(\fI/proc/[pid]/gid_map\fP) file, the following requirements must be met: -.RS -.IP * 3 -The process must have the \fBCAP_SETUID\fP (\fBCAP_SETGID\fP) capability in the -user namespace of the process \fIpid\fP. -.IP * -The process must have the \fBCAP_SETUID\fP (\fBCAP_SETGID\fP) capability in the -parent user namespace. -.IP * -The process must be in either the user namespace of the process \fIpid\fP or -inside the parent user namespace of the process \fIpid\fP. -.RE -For further details, see \fBnamespaces\fP(7). -.TP -\fI/proc/[pid]/wchan\fP (Linux 2.6.0 以降) -The symbolic name corresponding to the location in the kernel where the -process is sleeping. -.TP -\fI/proc/apm\fP -Advanced Power Management のバージョンとバッテリ情報。 カーネルのコンパイル時に \fBCONFIG_APM\fP -を定義したときに存在する。 -.TP -\fI/proc/buddyinfo\fP -This file contains information which is used for diagnosing memory -fragmentation issues. Each line starts with the identification of the node -and the name of the zone which together identify a memory region This is -then followed by the count of available chunks of a certain order in which -these zones are split. The size in bytes of a certain order is given by the -formual: - - (2^order)\ *\ PAGE_SIZE - -The binary buddy allocator algorithm inside the kernel will split one chunk -into two chunks of a smaller order (thus with half the size) or combine two -contiguous chunks into one larger chunk of a higher order (thus with double -the size) to satisfy allocation requests and to counter memory -fragmentation. The order matches the column number, when starting to count -at zero. - -For example on a x86_64 system: - -.in -12n -.nf -Node 0, zone DMA 1 1 1 0 2 1 1 0 1 1 3 -Node 0, zone DMA32 65 47 4 81 52 28 13 10 5 1 404 -Node 0, zone Normal 216 55 189 101 84 38 37 27 5 3 587 -.fi -.in - -In this example, there is one node containing three zones and there are 11 -different chunk sizes. If the page size is 4 kilobytes, then the first zone -called \fIDMA\fP (on x86 the first 16 megabyte of memory) has 1 chunk of 4 -kilobytes (order 0) available and has 3 chunks of 4 megabytes (order 10) -available. - -If the memory is heavily fragmented, the counters for higher order chunks -will be zero and allocation of large contiguous areas will fail. - -Further information about the zones can be found in \fI/proc/zoneinfo\fP. -.TP -\fI/proc/bus\fP -インストールされている各バス用にサブディレクトリがある。 -.TP -\fI/proc/bus/pccard\fP -PCMCIA デバイスの情報が書かれるサブディレクトリ。 カーネルのコンパイル時に \fBCONFIG_PCMCIA\fP を定義したときに存在する。 -.TP -\fI/proc/[pid]/timers\fP (Linux 3.10 以降) -.\" commit 5ed67f05f66c41e39880a6d61358438a25f9fee5 -.\" commit 48f6a7a511ef8823fdff39afee0320092d43a8a0 -このプロセスの POSIX タイマーのリスト。 各タイマーは文字列 "ID:" で始まる行に表示される。 例: - -.in +4n -.nf -ID: 1 -signal: 60/00007fff86e452a8 -notify: signal/pid.2634 -ClockID: 0 -ID: 0 -signal: 60/00007fff86e452a8 -notify: signal/pid.2634 -ClockID: 1 -.fi -.in - -各タイマーに表示される行の意味は次の通りである。 -.RS -.TP -\fIID\fP -このタイマーの ID。 この ID は \fBtimer_create\fP(2) が返すタイマー ID と同じではない。 \fIsiginfo_t\fP 構造化の -\fIsi_timerid\fP フィールドで参照できるカーネル内部での ID と同じである (\fBsigaction\fP(2) 参照)。 -.TP -\fIsignal\fP -このタイマーが通知の配送に使用するシグナル番号である。 スラッシュの後ろは、シグナルハンドラーに渡される -\fIsigev_value.sival_ptr\fP 値である。 シグナルで通知されるタイマーでのみ有効である。 -.TP -\fInotify\fP -スラッシュの前の部分は、このタイマーが使用する通知の配送方法であり、「スレッド」「シグナル」「なし」のいずれかである。 スラッシュのすぐ後には、 -\fBSIGEV_THREAD_ID\fP 通知を行うタイマーでは文字列の "tid" が、 もしくは他の方法で通知するタイマーでは "pid" -が表示される。 "." の後ろは、 そのタイマーがシングルで通知を配送する場合にはシグナルの配送対象となるプロセスの PID である。 -.TP -\fIClockID\fP -このフィールドはタイマーが時間を計測するのに使用するクロックを示す。 ほとんどのクロックでは、このフィールドは \fI\fP -で公開されるユーザー空間の \fBCLOCK_*\fP 定数のいずれかの数字である。 \fBCLOCK_PROCESS_CPUTIME_ID\fP -タイマーでは、このフィールドに \-6 が表示される。 \fBCLOCK_THREAD_CPUTIME_ID\fP タイマーでは \-2 が表示される。 -.RE -.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 -.\" FIXME Much more needs to be said about /proc/fs -.\" -マウントされているファイルシステムに関する情報を提供するファイルが入ったサブディレクトリが入っている。 -.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/kpagecount\fP (Linux 2.6.25 以降) -このファイルには、 各物理ページフレームがマッピングされた回数が 64 ビットカウンターとして入っている。 インデックスはページフレーム番号である -(\fI/proc/[pid]/pagemap\fP の議論を参照)。 -.IP -\fI/proc/kpagecount\fP ファイルが存在するのは、カーネルのコンフィギュレーションオプション -\fBCONFIG_PROC_PAGE_MONITOR\fP を有効にした場合だけである。 -.TP -\fI/proc/kpageflags\fP (Linux 2.6.25 以降) -このファイルには、 各物理ページフレームに対応する 64 ビットマスクが入っている。 インデックスはページフレーム番号である -(\fI/proc/[pid]/pagemap\fP の議論を参照)。 各ビットは以下のとおりである。 - - 0 \- KPF_LOCKED - 1 \- KPF_ERROR - 2 \- KPF_REFERENCED - 3 \- KPF_UPTODATE - 4 \- KPF_DIRTY - 5 \- KPF_LRU - 6 \- KPF_ACTIVE - 7 \- KPF_SLAB - 8 \- KPF_WRITEBACK - 9 \- KPF_RECLAIM - 10 \- KPF_BUDDY - 11 \- KPF_MMAP (Linux 2.6.31 以降) - 12 \- KPF_ANON (Linux 2.6.31 以降) - 13 \- KPF_SWAPCACHE (Linux 2.6.31 以降) - 14 \- KPF_SWAPBACKED (Linux 2.6.31 以降) - 15 \- KPF_COMPOUND_HEAD (Linux 2.6.31 以降) - 16 \- KPF_COMPOUND_TAIL (Linux 2.6.31 以降) - 16 \- KPF_HUGE (Linux 2.6.31 以降) - 18 \- KPF_UNEVICTABLE (Linux 2.6.31 以降) - 19 \- KPF_HWPOISON (Linux 2.6.31 以降) - 20 \- KPF_NOPAGE (Linux 2.6.31 以降) - 21 \- KPF_KSM (Linux 2.6.32 以降) - 22 \- KPF_THP (Linux 3.4 以降) - -.\" commit ad3bdefe877afb47480418fdb05ecd42842de65e -.\" commit e07a4b9217d1e97d2f3a62b6b070efdc61212110 -これらのビットの意味の詳しい説明は、 カーネルのソースファイル \fIDocumentation/vm/pagemap.txt\fP を参照。 カーネル -2.6.29 より前では、 \fBKPF_WRITEBACK\fP, \fBKPF_RECLAIM\fP, \fBKPF_BUDDY\fP, \fBKPF_LOCKED\fP -は正しい値を返さなかった。 -.IP -\fI/proc/kpageflags\fP ファイルが存在するのは、カーネルのコンフィギュレーションオプション -\fBCONFIG_PROC_PAGE_MONITOR\fP を有効にした場合だけである。 -.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 -このファイルはシステムのメモリー使用状況の統計情報を表示する。 \fBfree\fP(1) はこのファイルを使って、 そのシステムの -(物理メモリーとスワップの両方の) 未使用と使用中のメモリー量と、 カーネルが使用している共有メモリーとバッファーの使用量を表示する。 -このファイルの各行は、パラメーター名の後に、 コロン、 パラメーター値が続く。 最後に ("kB" などの) 計測単位がある場合もある。 -以下のリストでは、 フィールド名と、フィールド値を読み込むのに必要なフォーマット指定子 (format specifier) について説明する。 -特に注記がある場合を除くと、すべてのフィールドが少なくとも Linux 2.6.0 以降では存在する。 -いくつかのフィールドは、カーネルでオプションが有効になっている場合にのみ表示される。 こうした依存関係についてはリスト内に注記がある。 -.RS -.TP -\fIMemTotal\fP %lu -使用可能な RAM の総量 (つまり、 物理 RAM サイズからいくつかの予約ビットとカーネルのバイナリコードの分を引いた値)。 -.TP -\fIMemFree\fP %lu -\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 -ディスクから読み出したファイルのインメモリーキャッシュ (ページキャッシュ)。 \fISwapCached\fP は含まれない。 -.TP -\fISwapCached\fP %lu -一度スワップアウトされ、その後スワップインされたが、まだスワップファイルにも存在するメモリー。 (メモリーが残り少ない場合、 -これらのページは、すでにスワップファイルに存在するので、もう一度スワップアウトする必要がない。 これにより I/O が節約できる。) -.TP -\fIActive\fP %lu -最近使用されたメモリーで、通常は本当に必要にならない限り回収されないメモリー。 -.TP -\fIInactive\fP %lu -最近あまり使用されていないメモリー。 他の使用するために優先して回収すべきメモリー。 -.TP -\fIActive(anon)\fP %lu (Linux 2.6.28 以降) -[後で記載する] -.TP -\fIInactive(anon)\fP %lu (Linux 2.6.28 以降) -[後で記載する] -.TP -\fIActive(file)\fP %lu (Linux 2.6.28 以降) -[後で記載する] -.TP -\fIInactive(file)\fP %lu (Linux 2.6.28 以降) -[後で記載する] -.TP -\fIUnevictable\fP %lu (Linux 2.6.28 以降) -(Linux 2.6.28 から 2.6.30 まででは \fBCONFIG_UNEVICTABLE_LRU\fP が必要であった。) [後で記載する] -.TP -\fIMlocked\fP %lu (Linux 2.6.28 以降) -(Linux 2.6.28 から 2.6.30 まででは \fBCONFIG_UNEVICTABLE_LRU\fP が必要であった。) [後で記載する] -.TP -\fIHighTotal\fP %lu -(Linux 2.6.19 以降では \fBCONFIG_HIGHMEM\fP が必要) highmem の総量。 highmem は物理メモリーの -860MB 付近よりも上の部分のメモリー領域全体のことである。 highmem 領域はユーザー空間プログラムとページキャッシュで使用される。 -カーネルはこのメモリーにアクセスするのに小技を使っており、 lowmem よりもアクセスが遅くなる。 -.TP -\fIHighFree\fP %lu -(Linux 2.6.19 以降では \fBCONFIG_HIGHMEM\fP が必要) 未使用の 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 -(Linux 2.6.19 以降では \fBCONFIG_HIGHMEM\fP が必要) 未使用の lowmem 量。 -.TP -\fIMmapCopy\fP %lu (Linux 2.6.29 以降) -(\fBCONFIG_MMU\fP が必要) [後で記載する] -.TP -\fISwapTotal\fP %lu -利用可能なスワップ空間の総量。 -.TP -\fISwapFree\fP %lu -現在未使用のスワップ空間の量。 -.TP -\fIDirty\fP %lu -ディスクに書き戻されるのを待っているメモリー。 -.TP -\fIWriteback\fP %lu -現在ディスクに書き戻し中のメモリー。 -.TP -\fIAnonPages\fP %lu (Linux 2.6.18 以降) -ユーザー空間ページテーブルにマッピングされているファイルと関連付けられていないページ。 -.TP -\fIMapped\fP %lu -(\fBmmap\fP(2) で) メモリーにマッピングされているファイル。 ライブラリなど。 -.TP -\fIShmem\fP %lu (Linux 2.6.32 以降) -[後で記載する] -.TP -\fISlab\fP %lu -カーネル内のデータ構造体のキャッシュ。 -.TP -\fISReclaimable\fP %lu (Linux 2.6.19 以降) -回収可能な \fISlab\fP。 キャッシュなど。 -.TP -\fISUnreclaim\fP %lu (Linux 2.6.19 以降) -メモリー消費が激しい際でも回収できない \fISlab\fP。 -.TP -\fIKernelStack\fP %lu (Linux 2.6.32 以降) -カーネルスタックに割り宛てられているメモリー量。 -.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 が必要) [後で記載する] -.TP -\fINFS_Unstable\fP %lu (Linux 2.6.18 以降) -サーバに送信されたが、まだ永続的なストレージには書き込まれていない NFS ページ。 -.TP -\fIBounce\fP %lu (Linux 2.6.18 以降) -Memory used for block device "bounce buffers". -.TP -\fIWritebackTmp\fP %lu (Linux 2.6.26 以降) -FUSE で一時的なライトバックバッファーに使われているメモリー。 -.TP -\fICommitLimit\fP %lu (Linux 2.6.10 以降) -This is the total amount of memory currently available to be allocated on -the system, expressed in kilobytes. This limit is adhered to only if strict -overcommit accounting is enabled (mode 2 in -\fI/proc/sys/vm/overcommit_memory\fP). The limit is calculated according to -the formula described under \fI/proc/sys/vm/overcommit_memory\fP. For further -details, see 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 in IR /proc/sys/vm/overcommit_memory ), allocations -which would exceed the \fICommitLimit\fP 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 -vmalloc メモリー領域の総量。 -.TP -\fIVmallocUsed\fP %lu -使用中の vmalloc 領域の量。 -.TP -\fIVmallocChunk\fP %lu -vmalloc 領域の未使用の連続するブロックの最大サイズ。 -.TP -\fIHardwareCorrupted\fP %lu (Linux 2.6.32 以降) -(\fBCONFIG_MEMORY_FAILURE\fP が必要) [後で記載する] -.TP -\fIAnonHugePages\fP %lu (Linux 2.6.38 以降) -(\fBCONFIG_TRANSPARENT_HUGEPAGE\fP が必要) -ユーザー空間ページテーブルにマッピングされているファイルと関連付けられていないヒュージページ。 -.TP -\fIHugePages_Total\fP %lu -(\fBCONFIG_HUGETLB_PAGE\fP が必要) ヒュージページのプールサイズ。 -.TP -\fIHugePages_Free\fP %lu -(\fBCONFIG_HUGETLB_PAGE\fP が必要) プール内の割り当てられていないヒュージページ数。 -.TP -\fIHugePages_Rsvd\fP %lu (Linux 2.6.17 以降) -(\fBCONFIG_HUGETLB_PAGE\fP が必要) プールから割り当てが宣言されたが、まだ割り当てが行われていないヒュージページ数。 -これらの予約ヒュージページにより、 アプリケーションがメモリーフォールト時にヒュージページのプールからヒュージページが割り当てられることが保証される。 -.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 が必要) ヒュージページのサイズ。 -.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/net/netfilter/nfnetlink_queue\fP -このファイルは netfilter ユーザー空間キューイングが使用されている場合 netfilter ユーザー空間キューイングの情報を表示する。 -各行が各キューの情報を表示する。 ユーザー空間で購読されていないキューは表示されない。 -.nf - - 1 4207 0 2 65535 0 0 0 1 - (1) (2) (3)(4) (5) (6) (7) (8) -.fi -.IP -各行のフィールドは以下の通りである。 -.RS 7 -.TP 5 -(1) -キューの ID。 これは \fBiptables\fP(8) NFQUEUE ターゲットの \fB\-\-queue\-num\fP や -\fB\-\-queue\-balance\fP オプションで指定された値と一致する。 詳しい情報は \fBiptables\-extensions\fP(8) を参照。 -.TP -(2) -キューを購読している netlink ポート ID。 -.TP -(3) -現在キューに入っていてアプリケーションが処理するのを待っているパケット数。 -.TP -(4) -キューのコピーモード。 値は 1 (メタデータのみ) か 2 (ペイロードデータもユーザー空間にコピーする) のいずれかである。 -.TP -(5) -コピーする範囲。 つまり、 最大で何バイトのパケットペイロードをユーザー空間にコピーする必要があるかを示す。 -.TP -(6) -キューでの破棄数。 すでに多数のパケットがユーザー空間が必ず必要な受け入れ/破棄の判定を送り返すのを待っていたため、 -カーネルがドロップする必要があったパケット数。 -.TP -(7) -キューのユーザーでのドロップ数。 netlink サブシステム内で破棄されたパケット数。 このようなパケットの破棄が通常起こるのは、 -対応するソケットバッファーが一杯の場合、 つまり、 ユーザー空間がメッセージを十分な速度で読み出せない場合である。 -.TP -(8) -シーケンス番号。 キューに入ったすべてのパケットには 32 ビットの単調増加のシーケンス番号が関連付けられる。 これは一番最近キューに入ったパケットの -ID となる。 -.RE -.IP -最後の数字は互換性のためだけに存在し、 常に 1 である。 -.TP -\fI/proc/partitions\fP -各パーティションのメジャー番号とマイナー番号が書かれている。 さらに、 1024 バイトブロック数とパーティション名も書かれている。 -.TP -\fI/proc/pci\fP -カーネルの初期化時に見つかったすべての PCI デバイスのリストと その設定。 - -.\" FIXME Document /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 以降) -このファイルは、 カーネルが \fIprofile=1\fP コマンドラインオプションで起動された場合にのみ存在する。 このファイルは、 -カーネルのプロファイリング情報を \fBreadprofile\fP(1) を使って読み込めるバイナリ形式で公開する。 このファイルに -(例えば、空の文字列を) 書き込むと、プロファイリングカウンターがリセットされる。 いくつかのアーキテクチャーでは、 サイズ -\fIsizeof(int)\fP のバイナリ整数である「プロファイリング倍率」を書き込むとプロファイリングの割り込み頻度を設定できる。 -.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 -各種状態で消費された時間の合計値。 時間は USER_HZ を単位として計測される (ほとんどのアーキテクチャーでは USER_HZ は 1/100 -秒で、 正しい値は \fIsysconf(_SC_CLK_TCK)\fP を使って取得できる)。 -.RS -.TP -\fIuser\fP -(1) ユーザーモードで消費した時間。 -.TP -\fInice\fP -(2) 低い優先度 (nice) のユーザーモードで消費した時間。 -.TP -\fIsystem\fP -(3) システムモードで消費した時間。 -.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) タスク待ち (idle task) で消費した時間。 この値は擬似ファイル \fI/proc/uptime\fP の 2 番目のエントリーの値を -USER_HZ 倍した値になるはずである。 -.TP -\fIiowait\fP (Linux 2.5.41 以降) -(5) I/O の完了待ちの時間。 -.TP -\fIirq\fP (Linux 2.6.0\-test4 以降) -(6) 割り込みの処理に使った時間。 -.TP -\fIsoftirq\fP (Linux 2.6.0\-test4 以降) -(7) ソフト割り込みの処理に使った時間。 -.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 -このファイルは、 システム全体でプロセスがオープンできるファイル数の上限を定義する (\fBsetrlimit\fP(2) も参照; -\fBsetrlimit\fP(2) を使うと、 オープンできるファイル数のプロセス毎の上限 \fBRLIMIT_NOFILE\fP を設定できる)。 -ファイルハンドルを使い果たしたというエラーメッセージ ("VFS: file\-max limit reached" -を探すとよい) がカーネルログに大量に出る場合は、以下のようにこの値を増加させてみるとよい。 -.br - -.br -.nf -\f(CW echo 100000 > /proc/sys/fs/file\-max\fP -.fi - -特権プロセス (\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 (Linux 2.2 までにのみ存在) -このファイルには、メモリー内 inode の最大値が書かれている。 この値は \fIfile\-max\fP の値の 3\-4 倍にすべきである。 これは -\fIstdin\fP, \fIstdout\fP, ネットワークソケットを扱うにも inode が必要なためである。 日常的に inode -を使い果たしている場合は、この値を増やす必要がある。 - -Linux 2.4 以降では、 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 -つのダミーの値 (常に 0) である。 - -.\" This can be slightly more than -.\" .I inode-max -.\" because Linux allocates them one page full at a time. -\fInr_inodes\fP はシステムが割り当て済みの inode 数である。 \fInr_free_inodes\fP は未使用の inode 数である。 - -\fIpreshrink\fP は、 \fInr_inodes\fP > \fIinode\-max\fP で、 システムがさらに inode -を割り当てるのではなく inode リストを刈り取る (余分なものを回収する) 必要がある場合に、 0 以外になる。 Linux 2.4 以降では、 -このフィールドはダミーの値 (常に 0) である。 -.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/nr_open\fP (Linux 2.6.25 以降) -.\" commit 9cfe015aa424b3c003baba3841a60dd9b5ad319b -This file imposes ceiling on the value to which the \fBRLIMIT_NOFILE\fP -resource limit can be raised (see \fBgetrlimit\fP(2)). This ceiling is -enforced for both unprivileged and privileged process. The default value in -this file is 1048576. (Before Linux 2.6.25, the ceiling for -\fBRLIMIT_NOFILE\fP was hard\-coded to the same value.) -.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 -このファイルの値が 0 の場合、 ハードリンクの作成には何の制限も適用されない (すなわち、 Linux 3.6 より前の伝統的な動作である)。 -このファイルの値が 1 の場合、以下の条件のいずれか一つが成立する場合にのみ、 リンク先のファイルへのハードリンクが作成できる。 -.RS -.IP * 3 -呼び出し元が \fBCAP_FOWNER\fP ケーパビリティを持っている。 -.IP * -そのリンクを作成中のプロセスのファイルシステム UID が、 リンク先ファイルの所有者 (UID) と一致する (\fBcredentials\fP(7) -に説明があるが、 通常、 プロセスのファイルシステム UID はプロセスの実効 UID と同じである)。 -.IP * -以下の条件が全て成立する。 -.RS 4 -.IP \(bu 3 -リンク先が通常のファイルである。 -.IP \(bu -リンク先ファイルで set\-user\-ID 許可ビットが有効になっていない。 -.IP \(bu -リンク先ファイルで、 許可ビット set\-group\-ID と group\-executable が同時に有効になっていない。 -.IP \(bu -呼び出し元は、 リンク先ファイルの読み出し、書き込み許可を持っている -(ファイルの許可マスクで許可されているか、適切なケーパビリティを持っているかは問わない)。 -.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 -このファイルの値が 0 の場合、 以下のシンボリックリンクを辿る際に何の制限も適用されない (すなわち、 Linux 3.6 -より前の伝統的な動作である)。 このファイルの値が 1 の場合、 以下の状況においてのみシンボリックリンクが辿られる。 -.RS -.IP * 3 -そのリンクを辿っているプロセスのファイルシステム UID が、 シンボリックリンクの所有者 (UID) と一致する (\fBcredentials\fP(7) -に説明があるが、 通常、 プロセスのファイルシステム UID はプロセスの実効 UID と同じである)。 -.IP * -そのリンクが world\-writable の sticky ビットがセットされたディレクトリではない。 -.IP * -シンボリックリンクとその親ディレクトリが同じ所有者 (UID) である。 -.RE -.IP -システムコールが上記の制約によりシンボリックリンクを辿れなかった場合は、 \fIerrno\fP にエラー \fBEACCES\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 -さらに、 Linux 3.6 以降では、 \fI/proc/sys/kernel/core_pattern\fP -は絶対パス名かパイプコマンドでなければならない。 \fBcore\fP(5) に詳しい説明がある。 \fIcore_pattern\fP -がこれらのルールに合致しない場合は、 警告がカーネルログに書き込まれ、 コアダンプは生成されない。 -.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 (Linux 3.2 以降) -\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(1) プログラムに送られて、正しく再起動される。 値が 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 -このファイルの値により誰がカーネル syslog の内容を参照できるかが決定される。 このファイルの値が 0 であれば、制限はなくなる。 値が 1 -であれば、 特権ユーザーだけがカーネル syslog を読み出すことができる -(詳細は \fBsyslog\fP(2) を参照)。 Linux 3.4 以降では \fBCAP_SYS_ADMIN\fP -ケーパビリティを持ったユーザーだけがこのファイルの値を変更できる。 -.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 -他のモジュールが有効になったカーネルへのモジュールのロードが許可されるかを示すオン・オフ値である。 デフォルト値はオフ (0) だが、 オン (1) -に設定することができる。 一度オンにすると、 モジュールをロードすることもアンロードすることもできなくなり、 この値をオフに戻すこともできない。 -このファイルが存在するのは、 カーネルが \fBCONFIG_MODULES\fP オプションを有効にしてコンパイルされている場合だけである。 -.TP -\fI/proc/sys/kernel/msgmax\fP (Linux 2.2 以降) -このファイルは、System V メッセージキューに書き込まれる 1 つのメッセージの 最大バイト数を、システム全体で制限する。 -.TP -\fI/proc/sys/kernel/msgmni\fP (Linux 2.4 以降) -このファイルはメッセージキュー識別子の最大数をシステム全体で制限する。 -.TP -\fI/proc/sys/kernel/msgmnb\fP (Linux 2.2 以降) -このファイルは、 \fImsg_qbytes\fP の設定を初期化するシステム全体のパラメーターで -ある。 \fImsg_qbytes\fP は以降で作成されるメッセージキューで使われる。 -\fImsg_qbytes\fP 設定では、メッセージキューに書き込まれる最大バイト数を指定する。 -.TP -\fI/proc/sys/kernel/ngroups_max\fP (Linux 2.6.4 以降) -このファイルは、プロセスグループのメンバー数の上限値を表示する読み出し専用のファイルである。 -.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 大きい)。 この値より大きな PID -値は割り当てられない。 したがって、このファイルの値はプロセスやスレッドの全体数のシステム全体での上限としても機能する。 このファイルのデフォルト値は -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 -\fBsyslog\fP(2) 参照。 -.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/random/uuid\fP (Linux 2.4 以降) -この読み出し専用のファイルから読み出しを行うごとに、 ランダムに生成した 128 ビットの UUID を、 標準の UUID 形式の文字列として返す。 -.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 (Linux 3.9 以降) -\fBsched_rr_get_interval\fP(2) 参照。 -.TP -\fI/proc/sys/kernel/sched_rt_period_us\fP (Linux 2.6.25 以降) -\fBsched\fP(7) 参照。 -.TP -\fI/proc/sys/kernel/sched_rt_runtime_us\fP (Linux 2.6.25 以降) -\fBsched\fP(7) 参照。 -.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 (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 (Linux 2.2 以降) -このファイルには System V 共有メモリーの総ページ数の システム全体での制限が書かれている。 -.TP -\fI/proc/sys/kernel/shmmax\fP (Linux 2.2 以降) -このファイルを通じて、(System V IPC) 共有メモリーセグメントを作成するときの 最大サイズの実行時上限 (run\-time limit) -を取得または設定できる。 現在は 1GB までの共有メモリーセグメントが カーネルでサポートされている。 この値のデフォルトは \fBSHMMAX\fP -である。 -.TP -\fI/proc/sys/kernel/shmmni\fP (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/compact_memory\fP (Linux 2.6.35 以降) -When 1 is written to this file, all zones are compacted such that free -memory is available in contiguous blocks where possible. The effect of this -action can be seen by examining \fI/proc/buddyinfo\fP. -.IP -カーネルの設定で \fBCONFIG_COMPACTION\fP が有効になっている場合にのみ存在する。 -.TP -\fI/proc/sys/vm/drop_caches\fP (Linux 2.6.16 以降) -このファイルに書き込みを行うと、カーネルに、 クリーンなキャッシュ、 dentry、 inode をメモリーから追い出して、 -メモリーを解放させることができる。 この機能はメモリー管理のテストや再現可能なファイルシステムのベンチマークを行うのに役立つ。 -このファイルへの書き込みはキャッシュの利点を失うことになるので、システム全体の性能は低下する可能性がある。 - -ページキャッシュを解放するには、以下のようにする。 - - echo 1 > /proc/sys/vm/drop_caches - -dentry と inode を解放するには、以下のようにする。 - - echo 2 > /proc/sys/vm/drop_caches - -ページキャッシュ、 dentry、 inode を解放するには、以下のようにする。 - - echo 3 > /proc/sys/vm/drop_caches - -このファイルへの書き込みは非破壊的な操作で、 ダーティな (dirty) オブジェクトは 解放されないので、 この操作を行う際は最初に -\fBsync\fP(1) を実行しておくべきである。 -.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_kbytes\fP (Linux 3.14 以降) -.\" commit 49f0ce5f92321cdcf741e35f385669a421013cb7 -この書き込み可能なファイルは、 \fI/proc/sys/vm/overcommit_memory\fP が値 2 の際に、 \fICommitLimit\fP -を制御する \fI/proc/sys/vm/overcommit_ratio\fP の別の設定手段を提供するものである。 -\fIovercommit_ratio\fP が割合をパーセントで指定するのに対し、 このファイルではオーバーコミットするメモリー量を絶対値 (kB 単位) -で指定できる。 これにより、 メモリーサイズが非常に大きなシステムで \fICommitLimit\fP を極め細かく制御できる。 - -\fIovercommit_kbytes\fP と \fIovercommit_ratio\fP のいずれか一方だけが効果を持つ。 -\fIovercommit_kbytes\fP が 0 以外の値を持つ場合、 \fICommitLimit\fP を計算するのに -\fIovercommit_kbytes\fP が使用され、 それ以外の場合 \fIovercommit_ratio\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 を意味する。 - -モード 2 (Linux 2.6 以降で利用可能) では、 割り当て可能な仮想アドレス空間 (\fI/proc/meminfo\fP の -\fICommitLimit\fP) は以下で計算される。 - - CommitLimit = (total_RAM \- total_huge_TLB) * - overcommit_ratio / 100 + total_swap - -個々の説明: -.RS 12 -.IP * 3 -\fItotal_RAM\fP はシステム上の RAM の総量 -.IP * -\fItotal_huge_TLB\fP はヒュージページ用に確保されたメモリー総量 -.IP * -\fIovercommit_ratio\fP は \fI/proc/sys/vm/overcommit_ratio\fP の値 -.IP * -\fItotal_swap\fP はスワップ空間の総量 -.RE -.IP -例えば、 物理 RAM が 16GB で、 スワップが 16GB で、 ヒュージページ専用の空間がなく、 \fIovercommit_ratio\fP が -50 のシステムでは、 この式から \fICommitLimit\fP として 24GB の値が得られる。 - -Linux 3.14 以降では、 \fI/proc/sys/vm/overcommit_kbytes\fP の値が 0 でない場合、 -\fICommitLimit\fP は代わりに以下のように計算される。 - - CommitLimit = overcommit_kbytes + total_swap -.TP -\fI/proc/sys/vm/overcommit_ratio\fP (Linux 2.6.0 以降) -この書き込み可能なファイルは、 オーバーコミットできるメモリーの割合をパーセントで定義する。 このファイルのデフォルト値は 50 である。 -\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\- を入力した場合と -同じ 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/thread\-self\fP (Linux 3.17 以降) -.\" commit 0097875bd41528922fb3bb5f348c53f17e00e2fd -このディレクトリは、\fI/proc\fP ファイルシステムにアクセスしたスレッドを参照している。 これは、同じスレッドのプロセススレッド ID -(\fI[tid]\fP) の名前の \fI/proc/self/task/[tid]\fP ディレクトリと同一である。 -.TP -\fI/proc/timer_list\fP (Linux 2.6.21 以降) -.\" commit 289f480af87e45f7a6de6ba9b4c061c2e259fe98 -This read\-only file exposes a list of all currently pending -(high\-resolution) timers, all clock\-event sources, and their parameters in a -human\-readable form. -.TP -\fI/proc/timer_stats\fP (Linux 2.6.21 以降) -.\" commit 82f67cd9fca8c8762c15ba7ed0d5747588c1e221 -.\" Date: Fri Feb 16 01:28:13 2007 -0800 -.\" Text largely derived from Documentation/timers/timer_stats.txt -This is a debugging facility to make timer (ab)use in a Linux system visible -to kernel and user\-space developers. It can be used by kernel and -user\-space developers to verify that their code does not make undue use of -timers. The goal is to avoid unnecessary wakeups, thereby optimizing power -consumption. - -If enabled in the kernel (\fBCONFIG_TIMER_STATS\fP), but not used, it has -almost zero runtime overhead and a relatively small data\-structure -overhead. Even if collection is enabled at runtime, overhead is low: all -the locking is per\-CPU and lookup is hashed. - -The \fI/proc/timer_stats\fP file is used both to control sampling facility and -to read out the sampled information. - -The timer_stats functionality is inactive on bootup. A sampling period can -be started using the following command: - - # echo 1 > /proc/timer_stats - -The following command stops a sampling period: - - # echo 0 > /proc/timer_stats - -The statistics can be retrieved by: - - $ cat /proc/timer_stats - -While sampling is enabled, each readout from \fI/proc/timer_stats\fP will see -newly updated statistics. Once sampling is disabled, the sampled -information is kept until a new sample period is started. This allows -multiple readouts. - -\fI/proc/timer_stats\fP のサンプル出力。 - -.nf -.RS -4 -$\fB cat /proc/timer_stats\fP -Timer Stats Version: v0.3 -Sample period: 1.764 s -Collection: active - 255, 0 swapper/3 hrtimer_start_range_ns (tick_sched_timer) - 71, 0 swapper/1 hrtimer_start_range_ns (tick_sched_timer) - 58, 0 swapper/0 hrtimer_start_range_ns (tick_sched_timer) - 4, 1694 gnome\-shell mod_delayed_work_on (delayed_work_timer_fn) - 17, 7 rcu_sched rcu_gp_kthread (process_timeout) -\&... - 1, 4911 kworker/u16:0 mod_delayed_work_on (delayed_work_timer_fn) - 1D, 2522 kworker/0:0 queue_delayed_work_on (delayed_work_timer_fn) -1029 total events, 583.333 events/sec - -.fi -.RE -.IP -The output columns are: -.RS -.IP * 3 -.\" commit c5c061b8f9726bc2c25e19dec227933a13d1e6b7 deferrable timers -a count of the number of events, optionally (since Linux 2.6.23) followed by -the letter \(aqD\(aq if this is a deferrable timer; -.IP * -the PID of the process that initialized the timer; -.IP * -the name of the process that initialized the timer; -.IP * -the function where the timer was initialized; and -.IP * -(in parentheses) the callback function that is associated with the timer. -.RE -.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 2.6.13 seems to have /proc/vmcore implemented; document this -.\" See Documentation/kdump/kdump.txt -.\" commit 666bfddbe8b8fd4fd44617d6c55193d5ac7edb29 -.\" Needs CONFIG_VMCORE -.\" -.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 注意 -ほとんどの文字列 (たとえば環境変数やコマンド行) は内部表現のままなので、 -各フィールドはヌルバイト (\(aq\e0\(aq) で区切られている。だから、 -\fIod \-c\fP や \fItr "\e000" "\en"\fP を使えば、それらはより読みやすくなる。 -また \fIecho \`cat \`\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), \fBnamespaces\fP(7), \fBtime\fP(7), \fBarp\fP(8), -\fBhdparm\fP(8), \fBifconfig\fP(8), \fBinit\fP(1), \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/fs.txt\fP, \fIDocumentation/sysctl/kernel.txt\fP, -\fIDocumentation/sysctl/net.txt\fP, and \fIDocumentation/sysctl/vm.txt\fP. -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/protocols.5 b/manual/LDP_man-pages/draft/man5/protocols.5 index 74e110e4..2ccfe5ed 100644 --- a/manual/LDP_man-pages/draft/man5/protocols.5 +++ b/manual/LDP_man-pages/draft/man5/protocols.5 @@ -43,19 +43,19 @@ protocols \- プロトコル定義ファイル このファイルは ASCII ファイルで、TCP/IP サブシステムから利用できる いろいろな DARPA インターネットプロトコルを記述している。 ARPA 関連のインクルードファイル内の数値を使うべきではないし、 単に推測した値を使うのはさらに良くない。 代わりにこのファイルに問い合わせるべきである。 これらの数値は IP ヘッダーのプロトコルフィールドに現れる。 - +.PP .\" .. by the DDN Network Information Center. このファイルは変更しないこと。変更すると IP パッケージが不正になる。 プロトコル番号とプロトコル名は IANA (Internet Assigned Numbers Authority) によって指定される。 - +.PP それぞれの行は次のフォーマットである。 - +.PP .RS \fIprotocol number aliases ...\fP .RE - +.PP 各フィールドは空白かタブで区切られていて、空行は無視される。 行にハッシュ記号(#)が含まれる場合、 ハッシュ記号を含むその行の残りは無視される。 - +.PP フィールドの説明は以下のとおり。 .TP \fIprotocol\fP @@ -66,7 +66,7 @@ Numbers Authority) によって指定される。 .TP \fIaliases\fP プロトコルの別名、オプション。 -.LP +.PP このファイルは Yellow Pages/NIS や BIND/Hesiod のようなネットワーク上の名前サービスを用いて、ネットワークを通じて配布される可能性もある。 .SH ファイル @@ -75,10 +75,9 @@ Numbers Authority) によって指定される。 プロトコル定義ファイル。 .SH 関連項目 \fBgetprotoent\fP(3) - +.PP .UR http://www.iana.org\:/assignments\:/protocol\-numbers .UE .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/repertoiremap.5 b/manual/LDP_man-pages/draft/man5/repertoiremap.5 deleted file mode 100644 index e3059d91..00000000 --- a/manual/LDP_man-pages/draft/man5/repertoiremap.5 +++ /dev/null @@ -1,66 +0,0 @@ -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.TH REPERTOIREMAP 5 2014\-06\-02 GNU "Linux User Manual" -.SH 名前 -repertoiremap \- シンボル文字名の Unicode コードポイントへのマップ -.SH 説明 -repertoire マップは、 \fBlocaledef\fP(1) でロケールをコンパイルする際の、 シンボル文字名と Unicode -コードポイント間のマッピングを定義する。 repertoire マップの使用は必須ではなく、 推奨方法である Unicode コードポイントではなく、 -シンボル名を使用する場合にのみ必要である。 -.SS 文法 -repertoiremap ファイルは以下のキーワードからなるヘッダーで始まる: -.TP -\fI\fP -ファイルの残りの部分でコメントキャラクターとして使用する文字 を指定する。デフォルトではシャープ (#) である。 -.TP -\fI\fP -ファイルの残りの部分でエスケープキャラクターとして使用する文字を 指定する。これは特殊な意味に解釈される文字をエスケープするのに使用する。 -デフォルトはバックスラッシュ (\e) である。 -.PP -マッピングセクションは最初のカラムに \fBCHARIDS\fP というキーワードを置くことで始める。 - -マッピング行は以下のフォーマットである。 -.TP -\fI \fP -マッピングを一つだけ定義する。 \fI\fP は省略可能。 -.PP -マッピングセクションは文字列 \fIEND CHARIDS\fP で終了する。 -.SH ファイル -.TP -\fI/usr/share/i18n/repertoiremaps\fP -デフォルトの repertoire マップの通常のパス。 -.SH 準拠 -POSIX.2. -.SH 注意 -repertoire マップは非推奨であり、 Unicode コードポイントが推奨である。 -.SH 関連項目 -\fBlocale\fP(1), \fBlocaledef\fP(1), \fBcharmap\fP(5), \fBlocale\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index a5b0a614..00000000 --- a/manual/LDP_man-pages/draft/man5/resolv.conf.5 +++ /dev/null @@ -1,213 +0,0 @@ -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2000, 2005 Yuichi SATO -.\" all rights reserved. -.\" Translated 2000-09-15, Yuichi SATO -.\" Updated & Modified 2005-01-22, Yuichi SATO -.\" Updated 2010-04-18, Akihiro MOTOKI , LDP v3.24 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2012-05-06, Akihiro MOTOKI -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" Updated 2013-08-16, Akihiro MOTOKI -.\" -.TH RESOLV.CONF 5 2014\-12\-31 "" "Linux Programmer's Manual" -.UC 4 -.SH 名前 -resolv.conf \- レゾルバ設定ファイル -.SH 書式 -\fB/etc/resolv.conf\fP -.SH 説明 -\fIresolver\fP は、インターネットのドメインネームシステム (DNS) へのアクセスを提供する C ライブラリのルーチン群である。 -レゾルバ設定ファイルには、レゾルバルーチンがプロセスによって最初に 起動されたときに読み込まれる情報が格納されている。 -このファイルは人間に可読なように設計されている。 キーワードと値のリストが含まれ、いろいろなタイプのレゾルバ情報を提供する。 設定ファイルは DNS -情報の信頼できる情報源とみなされる (例えば、このファイルからの DNSSEC AD ビット情報は変更されずにそのまま返される)。 -.LP -このファイルが存在しない場合、問い合わせはローカルマシン上の -ネームサーバに対してのみ行われる。ドメイン名はホスト名から決定され、 -ドメインの検索パスはドメイン名から作成される。 -.LP -この状態を変更するための設定オプションには、以下のようなものがある。 -.TP -\fBnameserver\fP ネームサーバの IP アドレス -レゾルバが問い合わせをするネームサーバのインターネットアドレス。 アドレスには IPv4 アドレスか IPv6 アドレスを指定する。 IPv4 -アドレスはドット表記で、 IPv6 アドレスは RFC 2373 で定められたコロン表記 (おそらくドット表記も可) で指定する。 このキーワード 1 -つごとに 1 台づつ、 \fBMAXNS\fP 台 (現状では 3 台、\fI\fP を参照) -までのネームサーバをリストできる。 複数のサーバが指定された場合、レゾルバライブラリは リストされた順に問い合わせを行う。 \fBnameserver\fP -エントリーがない場合、 デフォルトではローカルマシン上のネームサーバが使われる。 (ここで使われるアルゴリズムは以下のようなものである。 -はじめにネームサーバに問い合わせを試みる。 この問い合わせがタイムアウトになった場合、 次のネームサーバに問い合わせを試みる。 -これをネームサーバがなくなるまで続ける。 それでも応答がない場合は、リトライ最大回数に達するまで 全てのネームサーバに問い合わせを繰り返す。) -.TP -\fBdomain\fP ローカルドメイン名 -このドメインにある名前の問い合わせのほとんどに、 このローカルドメインに対する短い名前を使用することができる。 \(aq.\(aq が設定された場合、 -ルートドメインが指定されたとみなされる。 \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? -\fBRES_DEBUG\fP を \fI_res.options\fP にセットする (glibc -がデバッグを有効にしてコンパイルされている場合にのみ有効である; \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\fP を参照)。 このオプションの値の上限は 30 -であり、黙ってこの値まで切り詰められる。 -.TP -\fBattempts:\fP\fIn\fP -「レゾルバが諦めて呼び出し元のアプリケーションにエラーを返すまでに、 ネームサーバに問い合わせを行う回数」を設定する。 デフォルトは -\fBRES_DFLRETRY\fP 回である (現状では 2 回、\fI\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 以降) -リゾルバは同じソケットを使って A レコードと AAAA レコードの検索要求を行う。 -いくつかのハードウェアは実装が間違っており、応答を一つしか返さない。 この状況になると、クライアントシステムは 2 番目の応答を待ち続けてしまう。 -このオプションを有効にすると、この動作が変更され、 同じポートからの 2 つの検索要求が正しく処理されなかった場合、 2 -番目の検索要求を送信する前にソケットをクローズし 新しいソケットをオープンするようになる。 -.TP -\fBno\-tld\-query\fP (glibc 2.14 以降) -RES_NOTLDQUERY を \fI_res.options\fP にセットする。 このオプションを設定すると、 \fBres_nsearch\fP() -が完全なドメイン名ではない名前のトップレベルドメイン (TLD) としての検索を行わなくなる。 これにより、localhost -に検索リストの要素をつけるのではなく、\*(lqlocalhost\*(rq を TLD として設定しているようなサイトでは問題が起こる可能性がある。 -RES_DEFNAMES も RES_DNSRCH もセットされていない場合には、このオプションは効果はない。 -.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\fP -.SH 関連項目 -\fBgethostbyname\fP(3), \fBresolver\fP(3), \fBhostname\fP(7), \fBnamed\fP(8) -.br -BIND のネームサーバオペレーションガイド -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/rpc.5 b/manual/LDP_man-pages/draft/man5/rpc.5 index 890a0a3e..31615d72 100644 --- a/manual/LDP_man-pages/draft/man5/rpc.5 +++ b/manual/LDP_man-pages/draft/man5/rpc.5 @@ -15,30 +15,31 @@ .\" Translated Fri Aug 27 1999 by NAKANO Takeo .\" Updated Sat Dec 22 JST 2001 by Kentaro Shirakata .\" -.TH RPC 5 1985\-09\-26 "" "Linux Programmer's Manual" +.TH RPC 5 2017\-09\-15 "" "Linux Programmer's Manual" .SH 名前 rpc \- RPC プログラム番号のデータベース .SH 書式 \fB/etc/rpc\fP .SH 説明 \fIrpc\fP ファイルには RPC プログラム番号の代わりに使うことのできる ユーザーに可読な名前が入っている。それぞれの行は以下の情報を含む。 -.HP 10 +.PP +.PD 0 +.IP \(bu 3 RPC プログラムのサーバの名前 -.br -.ns -.HP 10 +.IP \(bu RPC プログラム番号 -.br -.ns -.HP 10 +.IP \(bu 別名 -.LP +.PD +.PP それぞれの項目は任意の個数の空白・タブ (混在可) によって区切られる。 先頭に \(aq#\(aq のある行はコメントである。 \(aq#\(aq からその行の終了までは、このファイルをサーチするルーチンによって 解釈されなくなる。 -.LP +.PP 以下に、 Sun RPC のソースパッケージからとってきた \fI/etc/rpc\fP ファイルの例を示す。 -.nf -\f(CW# +.PP +.in +4n +.EX +# # rpc 88/08/01 4.0 RPCSRC; from 1.12 88/02/07 SMI # portmapper 100000 portmap sunrpc @@ -70,9 +71,9 @@ ypupdated 100028 ypupdate keyserv 100029 keyserver tfsd 100037 nsed 100038 -nsemntd 100039\fP -.fi -.DT +nsemntd 100039 +.EE +.in .SH ファイル .TP \fI/etc/rpc\fP @@ -80,6 +81,5 @@ RPC プログラム番号データベース .SH 関連項目 \fBgetrpcent\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/securetty.5 b/manual/LDP_man-pages/draft/man5/securetty.5 deleted file mode 100644 index 8d5ffe9a..00000000 --- a/manual/LDP_man-pages/draft/man5/securetty.5 +++ /dev/null @@ -1,49 +0,0 @@ -.\" 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified Sun Jul 25 11:06:27 1993 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 Hiroaki Nagoya all rights reserved. -.\" Translated Wed Feb 4 1998 by Hiroaki Nagoya -.\" -.TH SECURETTY 5 1992\-12\-29 Linux "Linux Programmer's Manual" -.SH 名前 -securetty \- root がログインできる端末リストのファイル -.SH 説明 -\fI/etc/securetty\fP ファイルは (いくつかのバージョンの) \fBlogin\fP(1) によって使用される。 root -のログインが許可されている端末のデバイス名が1行に ひとつずつ書かれている (先頭の \fI/dev/\fP は省略する)。 shadow login -suite を使用している場合は、 \fBlogin.defs\fP(5) を参照すること。 -.SH ファイル -\fI/etc/securetty\fP -.SH 関連項目 -\fBlogin\fP(1), \fBlogin.defs\fP(5) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/services.5 b/manual/LDP_man-pages/draft/man5/services.5 index 5acb39c9..7e0f9d06 100644 --- a/manual/LDP_man-pages/draft/man5/services.5 +++ b/manual/LDP_man-pages/draft/man5/services.5 @@ -42,7 +42,7 @@ .\" Translated Wed Aug 20 08:32:26 JST 1997 .\" by MOTOKI Akihiro .\" -.TH SERVICES 5 2010\-05\-22 Linux "Linux Programmer's Manual" +.TH SERVICES 5 2020\-04\-11 Linux "Linux Programmer's Manual" .SH 名前 services \- インターネット ネットワークサービス リスト .SH 説明 @@ -51,31 +51,31 @@ services \- インターネット ネットワークサービス リスト (とプロトコル) を得るために、 このファイルを調べる必要がある。 C ライブラリ関数である \fBgetservent\fP(3), \fBgetservbyname\fP(3), \fBgetservbyport\fP(3), \fBsetservent\fP(3), \fBendservent\fP(3) を利用することで、プログラムはこのファイルを調べることができる。 - +.PP ポート番号は、IANA (Internet Assigned Numbers Authority) によって 割り当てられており、現在はポート番号を割り当てる際に TCP と UDP の両方のプロトコルを割り当てることになっている。 そのため、ほとんどのサービスに対して、 たとえ TCP だけのサービスの場合であっても、対応する項目が二つあることになる。 - +.PP 1024 より小さいポート番号 (いわゆる "low numbered" ポート) は 管理者 (root) 権限によってのみ使用することができる (\fBbind\fP(2), \fBtcp\fP(7), \fBudp\fP(7) 参照)。 これは、これらのポートに接続するクライアントに対して、 そのポートで動いているサービスが標準的な実装であり、 その計算機のユーザーが動かしている 不正なサービスではないことを保証するためである。 IANA に明記されているよく使用されるポート番号は、 通常このような管理者だけが使用できる範囲に配置される。 - +.PP \fBservices\fP ファイルにあるサービスに対する項目があっても、必ずしもそのサービスが現 在その計算機で動いている訳ではない。利用可能なインターネットサービスの設定に ついては \fBinetd.conf\fP(5) に記述されている。ただし、すべてのサービスが \fBinetd\fP(8) によって起動されるわけではないので、 \fBinetd.conf\fP(5) には書かれていないサービスもあることに注意する必要がある。 特に、ネットニュース (NNTP) や メール (SMTP) のサーバーは、システム起動時の スクリプトから起動されることが多い。 - +.PP \fBservices\fP ファイルの場所は、 \fI\fP 中の \fB_PATH_SERVICES\fP によって定義されている。 この値は通常 \fI/etc/services\fP に設定されている。 - +.PP 1 行につき 1 サービスが記述されており、以下の形式である。 .IP \fIservice\-name\ \ \ port\fP\fB/\fP\fIprotocol\ \ \ \fP[\fIaliases ...\fP] .TP 各項目は以下の通り。 -.TP 10 +.TP \fIservice\-name\fP サービスを表す分かりやすい名前であり、検索の際にも使用される。 大文字と小文字は区別される。 クライアントプログラムは \fIservice\-name\fP にちなんで名付けられることが多い。 @@ -91,16 +91,16 @@ services \- インターネット ネットワークサービス リスト サービスに対する別名のリスト (区切はスペースまたはタブ) で、この欄は 必要にならば書くことができる。 また、別名は大文字と小文字は区別される。 .PP それぞれの欄の区切りには、スペースまたはタブが使用される。 - +.PP コメントはシャープ (#) で始まり、その行の終わりまでがコメントとみなされる。 空行は飛ばされる。 - +.PP 行の始めのスペースは無視されないので、 \fIservice\-name\fP は、行頭から書かなければならない。 \fIservice\-names\fP は、スペースとタブ以外の印字可能な文字なら何でもよいが、しかしながら 互換性の問題を少なくするような文字を選択すべきである。 例えば、a\-z 、0\-9 、ハイフォン (\-) を使用するのが無難と思われる。 - +.PP 指定された形式に合わない行はあってはならない (現在は、そのような行は \fBgetservent\fP(3), \fBgetservbyname\fP(3), \fBgetservbyport\fP(3) によって無視される。しかし、その場合の挙動は信頼できない)。 - +.PP .\" The following is not true as at glibc 2.8 (a line with a comma is .\" ignored by getservent()); it's not clear if/when it was ever true. .\" As a backward compatibility feature, the slash (/) between the @@ -113,12 +113,12 @@ services \- インターネット ネットワークサービス リスト .\" このファイルは Yellow Pages/NIS や BIND/Hesiod のようなネットワーク上の名前サービスを用いて、ネットワークを通じて配布される可能性もある。 - +.PP \fBservices\fP ファイルの見本を以下に示す。 -.RS -.nf -.sp -\f(CWnetstat 15/tcp +.PP +.in +4n +.EX +netstat 15/tcp qotd 17/tcp quote msp 18/tcp # message send protocol msp 18/udp # message send protocol @@ -126,9 +126,9 @@ chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp 21/tcp # 22 \- unassigned -telnet 23/tcp\fP -.fi -.RE +telnet 23/tcp +.EE +.in .SH ファイル .TP \fI/etc/services\fP @@ -157,9 +157,8 @@ telnet 23/tcp\fP \fBlisten\fP(2), \fBendservent\fP(3), \fBgetservbyname\fP(3), \fBgetservbyport\fP(3), \fBgetservent\fP(3), \fBsetservent\fP(3), \fBinetd.conf\fP(5), \fBprotocols\fP(5), \fBinetd\fP(8) - +.PP ポート番号の割り当てを定めている RFC (最新版は RFC\ 1700、別名 STD0002) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/shells.5 b/manual/LDP_man-pages/draft/man5/shells.5 deleted file mode 100644 index e52be6ef..00000000 --- a/manual/LDP_man-pages/draft/man5/shells.5 +++ /dev/null @@ -1,66 +0,0 @@ -.\" Copyright (c) 1993 Michael Haardt (michael@moria.de), -.\" Thu May 20 20:45:48 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified Sat Jul 24 17:11:07 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Sun Nov 21 10:49:38 1993 by Michael Haardt -.\" Modified Sun Feb 26 15:09:15 1995 by Rik Faith (faith@cs.unc.edu) -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1996-2000 -.\" Takashi ISHIOKA and NAKANO Takeo, all rights reserved. -.\" Translated 9 Sep 1996 by Takashi ISHIOKA -.\" Modified Sat 25 Jul 1998 by NAKANO Takeo -.\" Updated Mon 11 Dec 2000 by NAKANO Takeo -.\" -.TH SHELLS 5 2012\-12\-31 "" "Linux Programmer's Manual" -.SH 名前 -shells \- ログインシェルとして有効なファイルのパス名 -.SH 説明 -\fI/etc/shells\fP はログインシェルとして有効なファイルのフルパスが書かれた テキストファイルである。 \fBchsh\fP(1) -はこのファイルを参照する。 他のプログラムもこのファイルを参照できる。 -.PP -注意して欲しいのだが、プログラムによっては、 ユーザーが通常のユーザーかどうかを判断する際に、このファイルの内容を参考にすることがある。例えば FTP -デーモンは、ログインシェルがこのファイルに書かれていないユーザーからのアクセスを許さないのが以前から一般的である。 -.SH ファイル -\fI/etc/shells\fP -.SH 例 -\fI/etc/shells\fP には以下のようなパスが含まれているだろう。 -.sp -.RS -\fI/bin/sh\fP -.br -\fI/bin/bash\fP -.br -\fI/bin/csh\fP -.RE -.SH 関連項目 -\fBchsh\fP(1), \fBgetusershell\fP(3) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/slabinfo.5 b/manual/LDP_man-pages/draft/man5/slabinfo.5 deleted file mode 100644 index 28ebddde..00000000 --- a/manual/LDP_man-pages/draft/man5/slabinfo.5 +++ /dev/null @@ -1,115 +0,0 @@ -.\" Copyright (c) 2001 Andreas Dilger (adilger@turbolinux.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 -.\" -.\" FIXME Over time, the slabinfo format has gone through -.\" version changes. These should be documented: -.\" -.\" slabinfo 1.0 - Linux 2.2 (precisely: 2.1.23) -.\" slabinfo 1.1 - Linux 2.4 (precisely: 2.4.0-test3) -.\" slabinfo 1.2 - Linux 2.5.45 -.\" slabinfo 2.0 - Linux 2.6 (precisely: 2.5.71) -.\" slabinfo 2.1 - Linux 2.6.10 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2001 NAKANO Takeo all rights reserved. -.\" Translated Thu Aug 16 2001 by NAKANO Takeo -.\" -.TH SLABINFO 5 2007\-09\-30 "" "Linux Programmer's Manual" -.SH 名前 -/proc/slabinfo \- カーネル slab アロケータの統計 -.SH 書式 -\fBcat /proc/slabinfo\fP -.SH 説明 -Linux カーネルの内部で良く利用されるオブジェクト (バッファーヘッド、i\-ノード、ディレクトリエントリーなど) -は、それぞれ自分用のキャッシュを備えている。ファイル \fI/proc/slabinfo\fP はこれらの統計を与える。例を示す。 -.LP -.in +4n -.nf -% cat /proc/slabinfo -slabinfo \- version: 1.1 -kmem_cache 60 78 100 2 2 1 -blkdev_requests 5120 5120 96 128 128 1 -mnt_cache 20 40 96 1 1 1 -inode_cache 7005 14792 480 1598 1849 1 -dentry_cache 5469 5880 128 183 196 1 -filp 726 760 96 19 19 1 -buffer_head 67131 71240 96 1776 1781 1 -vm_area_struct 1204 1652 64 23 28 1 -\&... -size\-8192 1 17 8192 1 17 2 -size\-4096 41 73 4096 41 73 1 -\&... -.fi -.in -.LP -それぞれの slab キャッシュごとに、キャッシュの名前、 現在アクティブなオブジェクトの数、利用可能なオブジェクトの総数、 各オブジェクトのサイズ -(バイト単位)、少なくとも一つのアクティブな オブジェクトを有するページの数、アロケートされたページの総数、 slab -あたりのページ数、が与えられている。 - -なお、 オブジェクトのアラインメントと slab キャッシュのオーバーヘッドとにより、 オブジェクトは通常ページの内部にきっちりとは収められていない。 -利用中のオブジェクトをひとつでも保持しているページは、 利用中であるとみなされ、解放できない。 - -slab キャッシュ統計の機能を有効にしてコンパイルされたカーネルでは、 出力の最初の行に "(statistics)" と表示され、 5 -つのカラムが追加される。 それぞれ、アクティブなオブジェクトの瞬間最大値、 オブジェクトがアロケートされた回数、 キャッシュの大きさが拡張された -(新しいページがこのキャッシュに追加された) 回数、 キャッシュの大きさが縮小された (使っていないページがこのキャッシュから削除された) 回数、 -新たなページをこのキャッシュにアロケートする際に起きたエラーの回数、である。 slab -キャッシュ統計が使えないカーネルでは、これらのカラムは表示されない。 - -SMP システムでは、出力の最初の行に "(SMP)" と表示され、 各 slab ごとに 2 つのカラムが追加される。 これらは各 CPU -が持つローカルなキャッシュ (per\-CPU キャッシュ) の slab アロケーションポリシーを表示する (per\-CPU キャッシュは、 -オブジェクトをキャッシュからアロケートする際に CPU 間での同期を減少させるために設けられている)。 最初のカラムは per\-CPU 制限、 -すなわち各 CPU ごとにキャッシュできるオブジェクトの最大数である。 二番目のカラムはバッチカウント、 すなわち per\-CPU -キャッシュが空だったり一杯だったりした場合に、 グローバルなキャッシュと受け渡しできるフリーなオブジェクトの最大数である。 - -slab キャッシュ統計と SMP が両方有効になっている場合は、 per\-CPU キャッシュの統計を表示する 4 つのカラムがさらに追加される。 -最初の 2 つは per\-CPU キャッシュの アロケーションヒットカウントとアロケーションミスカウントである。 -すなわち、あるオブジェクトをアロケートしたときに、 それが per\-CPU キャッシュの内部に あった/なかった 回数である。 続く 2 -つは、per\-CPU キャッシュのフリーヒットカウントとミスカウントである。 -すなわち解放されたオブジェクトをグローバルなキャッシュにフラッシュする前に、 per\-CPU キャッシュの制限の範囲に 収まった/収まらなかった -回数である。 - -SMP において per\-CPU slab キャッシュの制限値や バッチカウントを変更するには、以下のようにすればよい: - -.in +4n -.nf -echo "\fIcache_name limit batchcount\fP" > /proc/slabinfo -.fi -.in -.SH ファイル -\fI\fP -.SH バージョン -\fI/proc/slabinfo\fP は Linux 2.1.23 以降に存在する。 SMP における CPU ごとのキャッシュは Linux -2.4.0\-test3 以降に存在する。 -.SH 注意 -Linux 2.6.16 以降では、 \fI/proc/slabinfo\fP ファイルは、カーネル設定オプション \fBCONFIG_SLAB\fP -を有効にした場合のみ存在する。 -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/termcap.5 b/manual/LDP_man-pages/draft/man5/termcap.5 index 01355809..db04f595 100644 --- a/manual/LDP_man-pages/draft/man5/termcap.5 +++ b/manual/LDP_man-pages/draft/man5/termcap.5 @@ -41,41 +41,44 @@ .\" Proofed & Modified Thu 12 Oct 2000 .\" by NAKANO Takeo .\" -.TH TERMCAP 5 1996\-10\-21 Linux "Linux Programmer's Manual" +.TH TERMCAP 5 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 termcap \- 端末機能のデータベース .SH 説明 -termcap データベースは、 文字単位で動作する端末やプリンタの機能を記述するための旧式の機構である。 -この機構は古いプログラムを動作させるためだけに保持されているので、 新しいプログラムは \fBterminfo\fP(5) -データベースとそれに関連したライブラリを用いるべきである。 -.LP +The termcap database is an obsolete facility for describing the capabilities +of character\-cell terminals and printers. It is retained only for +compatibility with old programs; new programs should use the \fBterminfo\fP(5) +database and associated libraries. +.PP \fI/etc/termcap\fP は、多くの異なる種類の端末に関する機能を列記したアスキーファイル (データベースマスター) である。 プログラムは termcap を読み込んで、 実際に使用している端末に個別のエスケープコード群を取得する。 これを用いると、その端末の視覚的な性質を制御することができる (端末の他の性質は \fBstty\fP(1) で制御する)。 termcap データベースは、環境変数 \fBTERM\fP の値で引かれる。 -.LP +.PP termcap のエントリーは、単一の論理行でなければならない。 ただし、行末に \(aq\e\(aq を用いればそこでの改行を抑制することができる。 フィールドは \(aq:\(aq で分割される。 各エントリーの最初のフィールドは左側先頭から始まり、 内容はその端末の名前のリストである。名前の区切りには \(aq|\(aq が用いられる。 -.LP -最初のサブフィールドは (4.3 以前のバージョンのBSD termcap エントリーでは) 2 文字からなる短い名前となっている。この短い名前は -大文字もしくは小文字で構成される。4.4BSD の termcap エントリーでは、 このフィールドは省略される。 -.LP +.PP +The first subfield may (in BSD termcap entries from versions 4.3 and +earlier) contain a short name consisting of two characters. This short name +may consist of capital or small letters. In 4.4BSD, termcap entries this +field is omitted. +.PP 2 番目 (最新の 4.4BSD フォーマットでは 1 番目) のサブフィールドには、 環境変数 \fBTERM\fP で用いられる名称が入る。 このフィールドには小文字しか使えない。 選択可能なハードウェア機能は、ハイフンと接尾語 (suffix) を名称の後に追加することによって示す必要がある。以下の例を見よ。 慣習的な接尾語には、w (80 文字以上の幅がある)、 am (automatic margins: 自動的な行の折り返し)、 nam (non automatic margins: 自動的でない行の折り返し)、 rv (reverse video display: 反転ビデオ表示) などがある。 3番目のサブフィールドには、 このtermcapエントリーに対する長い説明的な名称が入る。 -.LP +.PP この後に続くフィールドには、端末の機能を記述する。 機能を記述する行が継続する場合は、 左端から1つのタブをおいてインデントしなければならない。 -.LP +.PP 順序については定義されていないが、 大文字小文字は区別せずにアルファベット順にならべ、 始めはブール値の、次は数値の、最後は文字列の機能を書くことが推奨されている。 同じような働きをする機能は 1 行にまとめて書くと良い。 -.LP +.PP +Example for: .nf -例: -.sp +.PP Head line: vt|vt101|DEC VT 101 terminal in 80 character mode:\e Head line: Vt|vt101\-w|DEC VT 101 terminal in (wide) 132 character mode:\e Boolean: :bs:\e @@ -84,33 +87,33 @@ String: :sr=\eE[H:\e .fi .SS ブール値で指定する機能 .nf -5i プリンタはスクリーンにエコーしない -am 自動マージン。自動的に行を折り返す -bs コントロール H (キーコード 8) をバックスペースとして扱う -bw 左端でのバックスペースを、上の行の右端に折り返す -da 画面の上端から外れていた行を表示する (通常はマルチページ端末で) -db 画面の下端から外れていた行を表示する (通常はマルチページ端末で) -eo 空白文字はカーソル位置の全ての文字を消す -es ステータス行上のエスケープシーケンスや特殊文字は有効に働く -gn 一般的なデバイスである -hc ハードコピー端末である -HC 最下行にないカーソルは見づらい -hs ステータス行がある -hz チルダ文字が表示できない端末である (Hazeltine 端末のバグ) -in ホワイトスペースを埋めるのに、スペースではなくヌルバイトを挿入する端末である -km 端末にはメタキーがある -mi 挿入モードでもカーソル移動ができる -ms 強調/下線モードでもカーソル移動ができる -NP パディング文字がない -NR ti は te を反転しない -nx パディングではなく、XON/XOFF を使わなければならない -os 重ね打ちが可能な端末である -ul 重ね打ちはできないが、下線表示のできる端末である -xb f1 はエスケープを送信し、f2 は \fB^C\fP を送信する (Beehive 端末の不具合) -xn 改行/折り返しに不具合がある -xo 端末は xon/xoff プロトコルを用いる -xs 強調文字の上に出力された文字は強調文字として表示される -xt 破壊的なタブと中途半端な強調モード (Teleray 端末の不具合) +5i Printer will not echo on screen +am Automatic margins which means automatic line wrap +bs Control\-H (8 dec.) performs a backspace +bw Backspace on left margin wraps to previous line and right margin +da Display retained above screen +db Display retained below screen +eo A space erases all characters at cursor position +es Escape sequences and special characters work in status line +gn Generic device +hc This is a hardcopy terminal +HC The cursor is hard to see when not on bottom line +hs Has a status line +hz Hazeltine bug, the terminal can not print tilde characters +in Terminal inserts null bytes, not spaces, to fill whitespace +km Terminal has a meta key +mi Cursor movement works in insert mode +ms Cursor movement works in standout/underline mode +NP No pad character +NR ti does not reverse te +nx No padding, must use XON/XOFF +os Terminal can overstrike +ul Terminal underlines although it can not overstrike +xb Beehive glitch, f1 sends ESCAPE, f2 sends \fB\(haC\fP +xn Newline/wraparound glitch +xo Terminal uses xon/xoff protocol +xs Text typed over standout text will be displayed in standout +xt Teleray glitch, destructive tabs and odd standout mode .fi .SS 数値で指定する機能 .nf @@ -135,243 +138,244 @@ ws ステータス行の幅 (画面幅と異なる場合) .fi .SS 文字列で指定する機能 .nf -!1 シフト状態の save キー -!2 シフト状態の suspend キー -!3 シフト状態の undo キー -#1 シフト状態の help キー -#2 シフト状態の home キー -#3 シフト状態の input キー -#4 シフト状態の左カーソルキー -%0 redo キー -%1 help キー -%2 markキー -%3 message キー -%4 move キー -%5 next\-object キー -%6 open キー -%7 options キー -%8 previous\-object キー -%9 print キー -%a シフト状態の message キー -%b シフト状態の move キー -%c シフト状態の next キー -%d シフト状態の options キー -%e シフト状態の previous キー -%f シフト状態の print キー -%g シフト状態の redo キー -%h シフト状態の replace キー -%i シフト状態の右カーソルキー -%j シフト状態の resume キー -&0 シフト状態の cancel キー -&1 reference キー -&2 refresh キー -&3 replace キー -&4 restart キー -&5 resume キー -&6 save キー -&7 suspend キー -&8 undo キー -&9 シフト状態の begin キー -*0 シフト状態の find キー -*1 シフト状態の command キー -*2 シフト状態の copy キー -*3 シフト状態の create キー -*4 シフト状態の delete キー -*5 シフト状態の delete line キー -*6 select キー -*7 シフト状態の end キー -*8 シフト状態の clear line キー -*9 シフト状態の exit キー -@0 find キー -@1 begin キー -@2 cancel キー -@3 close キー -@4 command キー -@5 copy キー -@6 create キー -@7 end キー -@8 enter/send キー -@9 exit キー -al 1 行挿入する -AL %1 行挿入する -ac 図形文字のペアの集合。代替文字セットにマップするためのもの -ae 代替文字セットの終り -as 図形文字集合に対する、代替文字セットの開始 -bc \fB^H\fP がバックスペースでない場合のバックスペース -bl (音声の) ベルを鳴らす -bt 前のタブストップへ移動 -cb 行頭からカーソル位置までのクリア -cc ダミーコマンド文字 -cd 画面の最後までをクリア -ce 行の最後までをクリア -ch カーソルを水平方向にだけ移動し、 %1 桁の位置にする -cl 画面を消去し、カーソルをホームポジションへ -cm 画面上の %1 行、 %2 桁へカーソルを移動 -CM メモリー上の %1 行、 %2 桁へカーソルを移動 -cr 復帰 -cs %1 行目から %2 行目までの範囲をスクロールする -ct タブの消去 -cv カーソルを垂直方向にだけ移動し、 %1 行の位置にする -dc 一文字削除する -DC %1 文字削除する -dl 一行削除する -DL %1 行削除する -dm delete モード開始 -do カーソルを一行下げる -DO カーソルを #1 行下げる -ds ステータス行を無効にする -eA 代替文字集合を有効にする -ec カーソル位置から %1 文字消去する -ed delete モード終了 -ei intert モード終了 -ff ハードコピー端末での頁送り文字 -fs ステータス行に移動する前の位置へ復帰する文字 -F1 ファンクションキー f11 が送出する文字列 -F2 ファンクションキー f12 が送出する文字列 -F3 ファンクションキー f13 が送出する文字列 +!1 shifted save key +!2 shifted suspend key +!3 shifted undo key +#1 shifted help key +#2 shifted home key +#3 shifted input key +#4 shifted cursor left key +%0 redo key +%1 help key +%2 mark key +%3 message key +%4 move key +%5 next\-object key +%6 open key +%7 options key +%8 previous\-object key +%9 print key +%a shifted message key +%b shifted move key +%c shifted next key +%d shifted options key +%e shifted previous key +%f shifted print key +%g shifted redo key +%h shifted replace key +%i shifted cursor right key +%j shifted resume key +&0 shifted cancel key +&1 reference key +&2 refresh key +&3 replace key +&4 restart key +&5 resume key +&6 save key +&7 suspend key +&8 undo key +&9 shifted begin key +*0 shifted find key +*1 shifted command key +*2 shifted copy key +*3 shifted create key +*4 shifted delete character +*5 shifted delete line +*6 select key +*7 shifted end key +*8 shifted clear line key +*9 shifted exit key +@0 find key +@1 begin key +@2 cancel key +@3 close key +@4 command key +@5 copy key +@6 create key +@7 end key +@8 enter/send key +@9 exit key +al Insert one line +AL Insert %1 lines +ac Pairs of block graphic characters to map alternate character set +ae End alternative character set +as Start alternative character set for block graphic characters +bc Backspace, if not \fB\(haH\fP +bl Audio bell +bt Move to previous tab stop +cb Clear from beginning of line to cursor +cc Dummy command character +cd Clear to end of screen +ce Clear to end of line +ch Move cursor horizontally only to column %1 +cl Clear screen and cursor home +cm Cursor move to row %1 and column %2 (on screen) +CM Move cursor to row %1 and column %2 (in memory) +cr Carriage return +cs Scroll region from line %1 to %2 +ct Clear tabs +cv Move cursor vertically only to line %1 +dc Delete one character +DC Delete %1 characters +dl Delete one line +DL Delete %1 lines +dm Begin delete mode +do Cursor down one line +DO Cursor down #1 lines +ds Disable status line +eA Enable alternate character set +ec Erase %1 characters starting at cursor +ed End delete mode +ei End insert mode +ff Formfeed character on hardcopy terminals +fs Return character to its position before going to status line +F1 The string sent by function key f11 +F2 The string sent by function key f12 +F3 The string sent by function key f13 \&... \&... -F9 ファンクションキー f19 が送出する文字列 -FA ファンクションキー f20 が送出する文字列 -FB ファンクションキー f21 が送出する文字列 +F9 The string sent by function key f19 +FA The string sent by function key f20 +FB The string sent by function key f21 \&... \&... -FZ ファンクションキー f45 が送出する文字列 -Fa ファンクションキー f46 が送出する文字列 -Fb ファンクションキー f47 が送出する文字列 +FZ The string sent by function key f45 +Fa The string sent by function key f46 +Fb The string sent by function key f47 \&... \&... -Fr ファンクションキー f63 が送出する文字列 -hd カーソルを一行の半分だけ下に移動 -ho カーソルをホームポジションに移動 -hu カーソルを一行の半分だけ上に移動 -i1 ログイン時の初期化文字列 1 -i3 ログイン時の初期化文字列 3 -is ログイン時の初期化文字列 2 -ic 一文字挿入 -IC %1 文字挿入 -if 初期化ファイル -im insert モード開始 -ip 挿入後のパディングに必要な時間と特殊文字 -iP 初期化プログラム -K1 キーパッドの左上キー -K2 キーパッドの中央キー -K3 キーパッドの右上キー -K4 キーパッドの左下キー -K5 キーパッドの右下キー -k0 ファンクションキー 0 -k1 ファンクションキー 1 -k2 ファンクションキー 2 -k3 ファンクションキー 3 -k4 ファンクションキー 4 -k5 ファンクションキー 5 -k6 ファンクションキー 6 -k7 ファンクションキー 7 -k8 ファンクションキー 8 -k9 ファンクションキー 9 -k; ファンクションキー 10 -ka clea all tabs キー -kA insert line キー -kb バックスペースキー -kB back tab キー -kC clear screen キー -kd 下カーソルキー -kD カーソル位置の文字を消すキー -ke キーパッドをオフにする -kE 行末までをクリアするキー -kF 前方向/下方向へスクロールするキー -kh home キー -kH cursor hown down キー -kI 文字挿入キー/insert モードキー -kl 左カーソルキー -kL 行を削除するキー -kM insert モードを終了するキー -kN 次のページへ移動するキー -kP 前のページへ移動するキー -kr 右カーソルキー -kR 後ろ方向/上方向にスクロールするキー -ke キーパッドをオンにする -kS 画面最後までをクリアするキー -kt タブクリアキー -kT タブストップ設定キー -ku 上カーソルキー -l0 0 番目のファンクションキーのラベル (f0 でない場合) -l1 1 番目のファンクションキーのラベル (f1 でない場合) -l2 2 番目のファンクションキーのラベル (f2 でない場合) +Fr The string sent by function key f63 +hd Move cursor a half line down +ho Cursor home +hu Move cursor a half line up +i1 Initialization string 1 at login +i3 Initialization string 3 at login +is Initialization string 2 at login +ic Insert one character +IC Insert %1 characters +if Initialization file +im Begin insert mode +ip Insert pad time and needed special characters after insert +iP Initialization program +K1 upper left key on keypad +K2 center key on keypad +K3 upper right key on keypad +K4 bottom left key on keypad +K5 bottom right key on keypad +k0 Function key 0 +k1 Function key 1 +k2 Function key 2 +k3 Function key 3 +k4 Function key 4 +k5 Function key 5 +k6 Function key 6 +k7 Function key 7 +k8 Function key 8 +k9 Function key 9 +k; Function key 10 +ka Clear all tabs key +kA Insert line key +kb Backspace key +kB Back tab stop +kC Clear screen key +kd Cursor down key +kD Key for delete character under cursor +ke turn keypad off +kE Key for clear to end of line +kF Key for scrolling forward/down +kh Cursor home key +kH Cursor hown down key +kI Insert character/Insert mode key +kl Cursor left key +kL Key for delete line +kM Key for exit insert mode +kN Key for next page +kP Key for previous page +kr Cursor right key +kR Key for scrolling backward/up +ks Turn keypad on +kS Clear to end of screen key +kt Clear this tab key +kT Set tab here key +ku Cursor up key +l0 Label of zeroth function key, if not f0 +l1 Label of first function key, if not f1 +l2 Label of first function key, if not f2 \&... \&... -la 10 番目のファンクションキーのラベル (f10 でない場合) -le カーソルを左へ一文字分移動する -ll カーソルを左下隅に移動する -LE カーソルを左 %1 文字分移動する -LF ソフトラベルをオフにする -LO ソフトラベルをオンにする -mb 点滅開始 -MC ソフトマージンをクリア -md bold モード開始 -me so, us, mb, md, mr などのモード全てを終了する -mh 半輝度モード開始 -mk ダークモード (文字は見えなくなる) -ML 左側のソフトマージンを設定 -mm 端末をメタモードに設定する -mo 端末をメタモードでなくする -mp 属性保護モードをオンにする -mr 反転モード開始 -MR 右端のソフトマージンを設定 -nd カーソルを右に一文字分移動 -nw 復帰コマンド -pc パディング文字 -pf プリンタをオフにする -pk ユーザーが入力したときに文字列 %2 を送出するプログラムキー %1 -pl ローカルモードで文字列 %2 を実行するプログラムキー %1 -pn 文字列 %2 を表示するためのプログラムソフトラベル %1 -po プリンタをオンにする -pO %1 (<256) バイトの間プリンタをオンにする -ps 画面上の内容をプリンタに印刷する -px 文字列 %2 をコンピュータに送出するプログラムキー %1 -r1 端末を正常なモードに設定するリセット文字列 1 -r2 端末を正常なモードに設定するリセット文字列 2 -r3 端末を正常なモードに設定するリセット文字列 3 -RA 自動折り返しを無効にする -rc 保存しておいたカーソル位置に復帰する -rf リセット文字列の入ったファイル名 -RF 端末からの入力要求 -RI カーソルを右へ %1 文字分移動する -rp 文字 %1 を %2 回分繰り返す -rP 置換モードにおいて、文字を送出した後に行うパディング -rs リセット文字列 -RX XON/XOFF フロー制御をオフにする -sa 属性 %1 %2 %3 %4 %5 %6 %7 %8 %9 を設定 -SA 自動折り返しを有効にする -sc カーソル位置を保存する -se 強調モード終了 -sf 順方向の 1 行スクロール -SF 順方向の %1 行スクロール -so 強調モード開始 -sr 逆スクロール -SR %1 行分逆スクロールする -st 全ての行において、現在の桁位置をタブストップに設定する -SX XON/XOFF フロー制御をオンにする -ta 次のハードウェアタブ位置へ移動 -tc 他のエントリーから端末の説明を読む込む -te カーソル移動を用いるプログラムの終了 -ti カーソル移動を用いるプログラムの開始 -ts ステータス行のカーソルを %1 桁へ移動 -uc カーソル位置の文字に下線をつけ、右にカーソルを移動 -ue 下線モード終了 -up カーソルを 1 行分上に移動 -UP カーソルを %1 行分上に移動 -us 下線モード開始 -vb ビジュアルベル -ve カーソルを通常の明るさにする -vi カーソルを見えなくする -vs 強調カーソル -wi ウィンドウ領域を %1〜%2 行、%3〜%4 桁に設定 -XF XOFF 制御文字 (\fB^S\fP でない場合) +la Label of tenth function key, if not f10 +le Cursor left one character +ll Move cursor to lower left corner +LE Cursor left %1 characters +LF Turn soft labels off +LO Turn soft labels on +mb Start blinking +MC Clear soft margins +md Start bold mode +me End all mode like so, us, mb, md, and mr +mh Start half bright mode +mk Dark mode (Characters invisible) +ML Set left soft margin +mm Put terminal in meta mode +mo Put terminal out of meta mode +mp Turn on protected attribute +mr Start reverse mode +MR Set right soft margin +nd Cursor right one character +nw Carriage return command +pc Padding character +pf Turn printer off +pk Program key %1 to send string %2 as if typed by user +pl Program key %1 to execute string %2 in local mode +pn Program soft label %1 to show string %2 +po Turn the printer on +pO Turn the printer on for %1 (<256) bytes +ps Print screen contents on printer +px Program key %1 to send string %2 to computer +r1 Reset string 1 to set terminal to sane modes +r2 Reset string 2 to set terminal to sane modes +r3 Reset string 3 to set terminal to sane modes +RA disable automatic margins +rc Restore saved cursor position +rf Reset string filename +RF Request for input from terminal +RI Cursor right %1 characters +rp Repeat character %1 for %2 times +rP Padding after character sent in replace mode +rs Reset string +RX Turn off XON/XOFF flow control +sa Set %1 %2 %3 %4 %5 %6 %7 %8 %9 attributes +SA enable automatic margins +sc Save cursor position +se End standout mode +sf Normal scroll one line +SF Normal scroll %1 lines +so Start standout mode +sr Reverse scroll +SR scroll back %1 lines +st Set tabulator stop in all rows at current column +SX Turn on XON/XOFF flow control +ta move to next hardware tab +tc Read in terminal description from another entry +te End program that uses cursor motion +ti Begin program that uses cursor motion +ts Move cursor to column %1 of status line +uc Underline character under cursor and move cursor right +ue End underlining +up Cursor up one line +UP Cursor up %1 lines +us Start underlining +vb Visible bell +ve Normal cursor visible +vi Cursor invisible +vs Standout cursor +wi Set window from line %1 to %2 and column %3 to %4 +XF XOFF character if not \fB\(haS\fP .fi -.LP +.PP 文字列機能の制御コードを定義するには、いくつかの方法がある。 -.LP -\&\(aq^\(aq, \(aq\e\(aq, \(aq%\(aq を除く全ての通常の文字は、それ自身を表す。 -.LP -\fB^x\fP は Control\-x を意味する。 Control\-A は 10 進数の 1 に等しい。 -.LP +.PP +Every normal character represents itself, except \(aq\(ha\(aq, \(aq\e\(aq, +and \(aq%\(aq. +.PP +A \fB\(hax\fP means Control\-x. Control\-A equals 1 decimal. +.PP \&\ex は特殊コードとして扱われる。x には以下の文字のどれかが入る。 .RS E エスケープ (27) @@ -400,56 +404,55 @@ f 頁送り (12) パラメーターを数字として ASCII 出力する (printf の %d と同じ意味) .IP % \(aq%\(aq を表示する -.LP +.PP バイナリ出力を行う場合、 文字列が終端されないようにヌル文字 (\(aq\e0\(aq) を避けねばならない。 タブ文字をパラメーターのバイナリ出力とする場合は、 タブ文字の展開をリセットしなければならない。 .IP 注意: -上記のような、パラメーターとしてのメタ文字は正しくないかもしれない。 このことは、Minixの termcap と Linux の termcap -との間に互換性がないことに繋がっている。 -.LP +The above metacharacters for parameters may be wrong: they document Minix +termcap which may not be compatible with Linux termcap. +.PP 図形文字は 3 つの文字列機能で指定できる。 .IP as 代替文字セットの開始 .IP ae -代替文字セットの終了 +end the alternative charset .IP ac 文字列のペアの集合を指定する。 最初の文字は図形文字の名称で、 2 番目の文字はその定義である。 -.LP +.PP 名称には以下のものがある。 -.sp +.PP .nf -+ 右矢印 (>) -, 左矢印 (<) -\&. 下矢印 (v) -0 なかを塗りつぶした四角 (#) -I ランタン記号 (#) -(訳注 原文は latern だったが、これは lantern の typo と思われる) -\- 上矢印 (^) -\&' 菱形 (+) -a チェス板 (:) -f 角度 (') -g プラスマイナス (#) -h 四角 (#) -j 右下隅 (+) -k 右上隅 (+) -l 左上隅 (+) -m 左下隅 (+) -n 十字 (+) -o 上水平線 (\-) -q 中水平線 (\-) -s 下水平線 (_) -t 左 T 字 (+) -u 右 T 字 (+) -v 下 T 字 (+) -w 正 T 字 (+) -x 垂直線 (|) -~ 段落 (???) ++ right arrow (>) +, left arrow (<) +\&. down arrow (v) +0 full square (#) +I lantern (#) +\- upper arrow (\(ha) +\&' rhombus (+) +a chess board (:) +f degree (') +g plus\-minus (#) +h square (#) +j right bottom corner (+) +k right upper corner (+) +l left upper corner (+) +m left bottom corner (+) +n cross (+) +o upper horizontal line (\-) +q middle horizontal line (\-) +s bottom horizontal line (_) +t left tee (+) +u right tee (+) +v bottom tee (+) +w normal tee (+) +x vertical line (|) +\(ti paragraph (???) .fi -.sp -括弧内の値は、 指定した機能が存在しない場合に用いられるデフォルトの値である。 +.PP +The values in parentheses are suggested defaults which are used by the +\fIcurses\fP library, if the capabilities are missing. .SH 関連項目 \fBncurses\fP(3), \fBtermcap\fP(3), \fBterminfo\fP(5) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/ttytype.5 b/manual/LDP_man-pages/draft/man5/ttytype.5 index d9878afd..11ae06c2 100644 --- a/manual/LDP_man-pages/draft/man5/ttytype.5 +++ b/manual/LDP_man-pages/draft/man5/ttytype.5 @@ -35,33 +35,33 @@ .\" Japanese Version Copyright (c) 1997 NAKANO Takeo all rights reserved. .\" Translated Thu Feb 10 1998 by NAKANO Takeo .\" -.TH TTYTYPE 5 2012\-12\-31 Linux "Linux Programmer's Manual" +.TH TTYTYPE 5 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 ttytype \- 端末デバイス−端末タイプのデフォルトマッピング .SH 説明 \fI/etc/ttytype\fP は tty ラインを \fBtermcap\fP(5)/\fBterminfo\fP(5) の端末タイプの名前と関連付ける。それ ぞれの行には、まず端末のタイプ、続いてスペース文字、さらに続いて tty 名 (デバイス名から先頭の \fI/dev/\fP をとったもの) が書かれる。 - +.PP この関連付けはプログラム \fBtset\fP(1) が利用し、ユーザーが現在使っている端末の \fBTERM\fP 環境変数が、デフォルトの端末名にセットされる。 - +.PP この機能は伝統的なタイムシェアリング環境 ( UNIX ミニコンピュータに キャラクター端末が直結されているような環境) 向けに設計された。近代的な ワークステーションやパーソナル UNIX システムでは、ほとんど利用されていない。 .SH ファイル .TP \fI/etc/ttytype\fP tty 定義ファイル。 -.SH 例 +.SH EXAMPLES 典型的な \fI/etc/ttytype\fP は以下のようなものである。 -.RS -.sp +.PP +.in +4n +.EX con80x25 tty1 -.br vt320 ttys0 -.RE +.EE +.in .SH 関連項目 \fBtermcap\fP(5), \fBterminfo\fP(5), \fBagetty\fP(8), \fBmingetty\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/tzfile.5 b/manual/LDP_man-pages/draft/man5/tzfile.5 deleted file mode 100644 index 43b6222a..00000000 --- a/manual/LDP_man-pages/draft/man5/tzfile.5 +++ /dev/null @@ -1,122 +0,0 @@ -.\" %%%LICENSE_START(PUBLIC_DOMAIN) -.\" This file is in the public domain, so clarified as of -.\" 1996-06-05 by Arthur David Olson . -.\" %%%LICENSE_END -.\" -.\" @(#)tzfile.5 7.11 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved. -.\" Translated Tue Sep 14 1999 by NAKANO Takeo -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH TZFILE 5 2012\-05\-04 "" "Linux Programmer's Manual" -.SH 名前 -tzfile \- タイムゾーンの情報 -.SH 説明 -このページは、 \fBtzset\fP(3) で使用されるタイムゾーンファイルの構造に -ついて説明したものである。通常、これらのファイルは -ディレクトリ \fI/usr/lib/zoneinfo\fP か \fI/usr/share/zoneinfo\fP の -どちらかに置かれている。 - -タイムゾーン情報ファイルは、タイムゾーン情報ファイルであることを識別 -するための magic 文字列 "TZif" で始まり、 -ファイルフォーマットのバージョンを示す文字 (2005 年時点では -ASCII NUL (\(aq\e0\(aq) か \(aq2\(aq のいずれか)、 -将来のための 15 バイトの予約領域 (値は 0) が続き、 -\fIlong\fP 型の 4 バイトの値が 6 個続く。 -この値は「標準」バイトオーダー (高位バイトが先に書かれる) で記述される。 -これらの値は、順に以下のようなものである。 -.TP -\fItzh_ttisgmtcnt\fP -ファイルに記述されている UTC/local インジケータ (indicator) の個数。 -.TP -\fItzh_ttisstdcnt\fP -ファイルに記述されている standard/wall インジケータの個数。 -.TP -\fItzh_leapcnt\fP -ファイルに記述されている閏秒データの個数。 -.TP -\fItzh_timecnt\fP -ファイルに記述されている「遷移時間 (transition time)」データの個数。 -.TP -\fItzh_typecnt\fP -ファイルに記述されている「ローカル時間種別 (local time types)」データの個数 -(0 であってはいけない)。 -.TP -\fItzh_charcnt\fP -ファイルに記述されている「タイムゾーン略式文字列 (timezone abbreviation string)」の個数。 -.PP -上記のヘッダーに続いて、4 バイトの \fIlong\fP 型の値が \fItzh_timecnt\fP 個続く。 -これらは昇順で格納される。それぞれの値は「標準」バイトオーダーで記述されている。 -それぞれは遷移時間 (\fBtime\fP(2) が返す値) として用いられ、 -遷移時間に応じてローカル時間の計算ルールが変化する。 -次に、\fIunsigned char\fP 型の 1 バイトの値が \fItzh_timecnt\fP 個続く。 -この値は、それぞれの遷移時間に、ファイル中に記載されている「ローカル時間」種別 -のどれが関連づけられているかを示す。 -これらの値は、(ファイル中でこの情報のすぐ後ろに置かれている) \fIttinifo\fP 構造体 -の配列 (要素数は \fItzh_typecnt\fP) に対するインデックスとして機能する。 -この構造体は以下のように定義されている: -.in +4n -.sp -.nf -struct ttinfo { - long tt_gmtoff; - int tt_isdst; - unsigned int tt_abbrind; -}; -.in -.fi -.sp -それぞれの構造体は、 4 バイトの \fIlong\fP 型の値 \fItt_gmtoff\fP、 1 バイトの値 \fItt_isdst\fP, 1 バイトの値 -\fItt_abbrind\fP から構成される。 それぞれの構造体において、 \fItt_gmtoff\fP は UTC に加えるべき秒数を与え、 -\fItt_isdst\fP は \fItm_isdst\fP を \fBlocaltime\fP(3) にセットすべきかどうかを示し、 \fItt_abbrind\fP -はファイル中で \fIttinfo\fP 構造体 (配列) のあとに置かれる タイムゾーン略式文字列の配列に対するインデックスである。 -.PP -次には 4 バイト値のペアが \fItzh_leapcnt\fP 個続く。 -標準バイトオーダーで記述される。 -各ペアの最初の値は ( \fItime\fP(2) の返す形式で) 閏秒が起きる時刻を指定し、 -二番目の値はその時刻に加えるべき閏秒数の\fI全\fP秒数を指定する。 -これらのペアは時刻の古い順に記述する。 -.PP -次には standard/wall インジケータが \fItzh_ttisstdcnt\fP 個置かれる。 -standard/wall インジケータはそれぞれ 1 バイトの値として格納される。 -これらは、ローカル時間種別に関連付けられた遷移時間が、標準時刻 (standard time) -と壁時計時刻 (wall clock time) のどちらで指定されているかを示す。 -また、この値は、 POSIX 形式のタイムゾーン環境変数の処理において -タイムゾーンファイルが使われる際にも利用される。 -.PP -最後に UTC/local インジケータが \fItzh_ttisgmtcnt\fP 個置かれる。 -UTC/local インジケータはそれぞれ 1 バイトの値として格納される。 -これらは、ローカル時間種別に関連付けられた遷移時間が UTC とローカル時刻の -どちらで指定されているかを示す。 -また、この値は、 POSIX 形式のタイムゾーン環境変数の処理において -タイムゾーンファイルが使われる際にも利用される。 -.PP -\fBlocaltime\fP(3) は、 \fItzh_timeout\fP が 0 であるか time 引数がファイルに記録され -ていた最初の遷移時刻 よりも小さい場合には、 ファイルに最初に現れる標準時刻の -\fIttinfo\fP 構造体を使う (または標準時刻の構造体がない場合は、単に最初の -\fIttinfo\fP 構造体を使う)。 -.PP -バージョン 2 形式のタイムゾーンファイルでは、上記のヘッダーとデータの後に、 -第 2 のヘッダーとデータが続く。形式は上記のヘッダーとデータと同じで、 -遷移時間や閏秒の時刻に 8 バイトが使用される点だけが異なる。 -第 2 のヘッダーとデータの後ろには改行で囲まれた POSIX の TZ 環境変数形式 -の文字列が置かれ、この文字列はファイル内の最後の遷移時間の後で時刻を -処理する際に使用される -(このような POSIX 表現が置かれない場合、改行の間には何も置かれない)。 -.SH 関連項目 -\fBctime\fP(3), \fBtzset\fP(3), \fBtzselect\fP(8), - -glibc ソースコードの \fItimezone/tzfile.h\fP -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man5/utmp.5 b/manual/LDP_man-pages/draft/man5/utmp.5 index 7b0e3720..8684c9e1 100644 --- a/manual/LDP_man-pages/draft/man5/utmp.5 +++ b/manual/LDP_man-pages/draft/man5/utmp.5 @@ -41,7 +41,7 @@ .\" Updated 2005-10-06, Akihiro MOTOKI .\" Updated 2008-08-11, Akihiro MOTOKI, LDP v3.05 .\" -.TH UTMP 5 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH UTMP 5 2020\-12\-21 Linux "Linux Programmer's Manual" .SH 名前 utmp, wtmp \- ログイン記録 .SH 書式 @@ -56,21 +56,21 @@ utmp, wtmp \- ログイン記録 .PP このファイルは \fIutmp\fP 構造体の繰り返しで構成される。 この構造体は \fI\fP で以下のように定義されている (ここに記述してあるのは幾つかの大まかな定義のみで、 詳細は libc のバージョンにより変わることに注意が必要である)。 +.PP .in +4n -.nf -.sp +.EX /* Values for ut_type field, below */ #define EMPTY 0 /* Record does not contain valid info (formerly known as UT_UNKNOWN on Linux) */ #define RUN_LVL 1 /* Change in system run\-level (see - \fBinit\fP(8)) */ + \fBinit\fP(1)) */ #define BOOT_TIME 2 /* Time of system boot (in \fIut_tv\fP) */ #define NEW_TIME 3 /* Time after system clock change (in \fIut_tv\fP) */ #define OLD_TIME 4 /* Time before system clock change (in \fIut_tv\fP) */ -#define INIT_PROCESS 5 /* Process spawned by \fBinit\fP(8) */ +#define INIT_PROCESS 5 /* Process spawned by \fBinit\fP(1) */ #define LOGIN_PROCESS 6 /* Session leader process for user login */ #define USER_PROCESS 7 /* Normal process */ #define DEAD_PROCESS 8 /* Terminated process */ @@ -81,8 +81,8 @@ utmp, wtmp \- ログイン記録 #define UT_HOSTSIZE 256 struct exit_status { /* Type for ut_exit, below */ - short int e_termination; /* Process termination status */ - short int e_exit; /* Process exit status */ + short e_termination; /* Process termination status */ + short e_exit; /* Process exit status */ }; struct utmp { @@ -98,10 +98,9 @@ struct utmp { struct exit_status ut_exit; /* Exit status of a process marked as DEAD_PROCESS; not used by Linux init(1) */ - /* ut_session と ut_tv フィールドは、32ビットでコンパイルされた場合と - 64ビットでコンパイルされた場合で同じサイズでなければならない。 - こうすることで、32ビットと64ビットのアプリケーションで、 - データファイルと共有メモリーを共有することができるようになる。 */ + /* The ut_session and ut_tv fields must be the same size when + compiled 32\- and 64\-bit. This allows data files and shared + memory to be shared between 32\- and 64\-bit applications. */ #if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32 int32_t ut_session; /* Session ID (\fBgetsid\fP(2)), used for windowing */ @@ -127,9 +126,9 @@ struct utmp { #endif #define ut_xtime ut_tv.tv_sec #define ut_addr ut_addr_v6[0] -.sp -.fi +.EE .in +.PP この構造体からユーザーの使っている端末のスペシャルファイル名、 ユーザーのログイン名、 (\fBtime\fP(2) 形式での)ログイン時刻がわかる。文字列フィールドは、 フィールドの長さより文字列が短い場合には、ヌルバイト (\(aq\e0\(aq) によって終端される。 @@ -148,8 +147,9 @@ struct utmp { \fBlogin\fP(1) により異なるが、 \fIut_pid\fP の代わりに \fIut_line\fP を使ってレコードの特定が行われることもある (\fIut_pid\fP を使う方が望ましい) 。 .PP -\fBinit\fP(1) はプロセスの終了を検出した場合、 \fIut_pid\fP をキーとして utmp のエントリーを特定し、 \fIut_type\fP を -\fBDEAD_PROCESS\fP に設定し、 \fIut_user\fP, \fIut_host\fP, \fIut_time\fP をヌルバイトでクリアする。 +When \fBinit\fP(1) finds that a process has exited, it locates its utmp entry +by \fIut_pid\fP, sets \fIut_type\fP to \fBDEAD_PROCESS\fP, and clears \fIut_user\fP, +\fIut_host\fP, and \fIut_time\fP with null bytes. .PP \fBxterm\fP(1) コマンドや他の端末エミュレータは 直接 \fBUSER_PROCESS\fP のレコードを作り、 端末名のサフィックス文字列 (\fI/dev/[pt]ty\fP に続く文字列) を使って \fIut_id\fP の値を生成する。 この id を持つエントリーが @@ -160,30 +160,33 @@ struct utmp { \fBtelnetd\fP(8) は \fBLOGIN_PROCESS\fP を設定するだけでよく、 残りの処理は通常通り \fBlogin\fP(1) に任せればよい。 telnet のセッションが終了した後、前述のように \fBtelnetd\fP(8) が utmp のエントリーを初期化する。 .PP -\fIwtmp\fP ファイルには、すべてのログインとログアウトが記録される。 そのフォーマットは、ログアウト済の端末でユーザー名がヌルとなること以外は -\fIutmp\fP とまったく同じである。 ユーザー名が \fBshutdown\fP もしくは \fBreboot\fP である 端末名 \fB~\fP はシステムの停止 -(shutdown) または再起動 (reboot) を意味する。またその端末名が \fB|\fP と \fB}\fP の対は \fBdate\fP(1) -コマンドで変更した新/旧のシステム時刻を記録している。 \fIwtmp\fP ファイルは \fBlogin\fP(1), \fBinit\fP(1) -やいくつかのバージョンの \fBgetty\fP(8) (\fBmingetty\fP(8) または \fBagetty\fP(8)) により管理されている。 -これらのプログラムはどれもファイルを新たに作成しないので、 ファイルを削除することで情報の記録 (record\-keeping) を止めることができる。 +The \fIwtmp\fP file records all logins and logouts. Its format is exactly like +\fIutmp\fP except that a null username indicates a logout on the associated +terminal. Furthermore, the terminal name \fB\(ti\fP with username \fBshutdown\fP +or \fBreboot\fP indicates a system shutdown or reboot and the pair of terminal +names \fB|\fP/\fB}\fP logs the old/new system time when \fBdate\fP(1) changes it. +\fIwtmp\fP is maintained by \fBlogin\fP(1), \fBinit\fP(1), and some versions of +\fBgetty\fP(8) (e.g., \fBmingetty\fP(8) or \fBagetty\fP(8)). None of these +programs creates the file, so if it is removed, record\-keeping is turned +off. .SH ファイル -/var/run/utmp +\fI/var/run/utmp\fP .br -/var/log/wtmp +\fI/var/log/wtmp\fP .SH 準拠 .PP POSIX.1 では、 \fIutmp\fP 構造体ではなく、 \fIutmpx\fP 構造体を規定している。 \fIutmpx\fP 構造体で規定されているのは、フィールド \fIut_type\fP, \fIut_pid\fP, \fIut_line\fP, \fIut_id\fP, \fIut_user\fP, \fIut_tv\fP である。 POSIX.1 では、フィールド \fIut_line\fP と \fIut_user\fP の長さは規定されていない。 - +.PP Linux では、 \fIutmpx\fP 構造体の定義は \fIutmp\fP 構造体と同じである。 .SS 過去のシステムとの比較 Linux での utmp のエントリーは v7/BSD や System V のいずれにも準拠しておらず、 その両方が混在したものである。 - +.PP v7/BSD ではより少しの項目しかない; もっとも重要なことは、\fIut_type\fP が無いことである。 そのため v7/BSD 系のプログラムでは (たとえば) 死んだ状態のエントリーや ログイン状態のエントリーまで表示されてしまうことになった。 さらにセッション用のスロットを割り当てるための設定ファイルがない。 BSD に設定ファイルがあるのは \fIut_id\fP がないからである。 - +.PP Linux (System V 系)では、設定ファイルを必要とせず セッション用のスロットを割り当てるので、一旦設定 されてしまうとレコードの \fIut_id\fP は決して変更されない。 \fIut_id\fP をクリアすると競合状態におちいり、 utmp のエントリーを壊したり、潜在的なセキュリティホールになる可能性がある。 上述のフィールドをヌルバイトで埋めてクリアしておくのは、 System V @@ -208,24 +211,24 @@ Linux (System V 系)では、設定ファイルを必要とせず セッショ 64ビットアプリケーション の間でデータファイルと共有メモリーを共有することが可能になる。 そのためには、 \fIut_session\fP を \fIint32_t\fP 型に、 \fIut_tv\fP を 2つの \fIint32_t\fP 型のフィールド \fItv_sec\fP, \fItv_usec\fP を持つ構造体に変更すればよい \fIut_tv\fP は \fIstruct timeval\fP と同じサイズとは限らないので、 +.PP .in +4n -.nf -.sp +.EX gettimeofday((struct timeval *) &ut.ut_tv, NULL); -.fi +.EE .in - +.PP のような呼び出しをするのではなく、 以下のように各フィールドを設定する方法が推奨される: +.PP .in +4n -.nf -.sp +.EX struct utmp ut; struct timeval tv; gettimeofday(&tv, NULL); ut.ut_tv.tv_sec = tv.tv_sec; ut.ut_tv.tv_usec = tv.tv_usec; -.fi +.EE .in .\" .PP .\" Note that the \fIutmp\fP struct from libc5 has changed in libc6. @@ -235,10 +238,9 @@ ut.ut_tv.tv_usec = tv.tv_usec; .\" .SH BUGS .\" This man page is based on the libc5 one, things may work differently now. .SH 関連項目 -\fBac\fP(1), \fBdate\fP(1), \fBlast\fP(1), \fBlogin\fP(1), \fButmpdump\fP(1), \fBwho\fP(1), -\fBgetutent\fP(3), \fBgetutmp\fP(3), \fBlogin\fP(3), \fBlogout\fP(3), \fBlogwtmp\fP(3), -\fBupdwtmp\fP(3), \fBinit\fP(1) +\fBac\fP(1), \fBdate\fP(1), \fBinit\fP(1), \fBlast\fP(1), \fBlogin\fP(1), \fBlogname\fP(1), +\fBlslogins\fP(1), \fBusers\fP(1), \fButmpdump\fP(1), \fBwho\fP(1), \fBgetutent\fP(3), +\fBgetutmp\fP(3), \fBlogin\fP(3), \fBlogout\fP(3), \fBlogwtmp\fP(3), \fBupdwtmp\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man6/intro.6 b/manual/LDP_man-pages/draft/man6/intro.6 index 3924e213..1ea1d625 100644 --- a/manual/LDP_man-pages/draft/man6/intro.6 +++ b/manual/LDP_man-pages/draft/man6/intro.6 @@ -38,11 +38,11 @@ .SH 名前 intro \- ゲームプログラムの紹介 .SH 説明 -マニュアルの 6 章は、本システムで利用可能なすべてのゲームと 楽しい小物プログラムについて記載している。 +Section 6 of the manual describes the games and funny little programs +available on the system. .SH 注意 .SS 著者と著作権 著者と著作権に関しては各マニュアルページのソースのヘッダーを参照すること。 これらはページごとに異なる可能性があることに注意してほしい。 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/aio.7 b/manual/LDP_man-pages/draft/man7/aio.7 index ba72066a..26711a3d 100644 --- a/manual/LDP_man-pages/draft/man7/aio.7 +++ b/manual/LDP_man-pages/draft/man7/aio.7 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (c) 2010 by Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) @@ -33,7 +32,7 @@ .\" all rights reserved. .\" Translated 2012-05-02, Akihiro MOTOKI .\" -.TH AIO 7 2014\-04\-06 Linux "Linux Programmer's Manual" +.TH AIO 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 aio \- POSIX 非同期 I/O の概要 .SH 説明 @@ -42,9 +41,9 @@ POSIX 非同期 (AIO) インターフェースを使うと、アプリケーシ ようになる。アプリケーションは I/O 操作の完了の通知方法を選択することが できる。選択できる通知方法は、シグナルの配送、スレッドの起動、通知を行 わないである。 - +.PP POSIX AIO インターフェースは以下の関数で構成されている。 -.TP 16 +.TP \fBaio_read\fP(3) 読み出しリクエストをキューに入れる。 \fBread\fP(2) の非同期版である。 @@ -80,7 +79,7 @@ POSIX AIO インターフェースは以下の関数で構成されている。 の全ての関数で使用されている。この構造体は以下の通りである。 .PP .in +4n -.nf +.EX #include struct aiocb { @@ -101,12 +100,12 @@ struct aiocb { /* Operation codes for \(aqaio_lio_opcode\(aq: */ enum { LIO_READ, LIO_WRITE, LIO_NOP }; - -.fi +.EE .in +.PP この構造体のフィールドは以下の通りである。 -.TP 16 -\fIaio_filedes\fP +.TP +\fIaio_fildes\fP I/O 操作の実行対象となるファイルディスクリプター。 .TP \fIaio_offset\fP @@ -138,7 +137,7 @@ I/O 操作を行うファイルオフセットを示す。 .PP 上記のリストにある標準の関数に加えて、GNU C ライブラリでは 以下に示す POSIX AIO API に対する拡張が提供されている。 -.TP 16 +.TP \fBaio_init\fP(3) glibc の POSIX AIO 実装の動作を調整するパラメーターを設定する。 .SH エラー @@ -155,10 +154,10 @@ POSIX.1\-2001, POSIX.1\-2008. (\fBmemset\fP(3) 参照)。I/O 操作が実行中の間は、制御ブロックバッファーと \fIaio_buf\fP が指すバッファーを変更してはならない。I/O 操作が完了するまで、 これらのバッファーは有効な状態に保たなければならない。 - +.PP 同じ \fIaiocb\fP 構造体を使って、同時に複数の非同期の読み出し操作や 書き込み操作を行った場合に、どのような結果になるかは未定義である。 - +.PP .\" http://lse.sourceforge.net/io/aio.html .\" http://lse.sourceforge.net/io/aionotes.txt .\" http://lwn.net/Articles/148755/ @@ -170,7 +169,7 @@ POSIX.1\-2001, POSIX.1\-2008. \fBio_cancel\fP(2), \fBio_destroy\fP(2), \fBio_getevents\fP(2) 参照)、 この実装はまだ POSIX AIO 実装をカーネルシステムコールにより 再実装するほど成熟したものてはない。 -.SH 例 +.SH EXAMPLES 下記のプログラムは、コマンドライン引き数で指定された名前のファイルを それぞれオープンし、得られたファイルディスクリプターに対するリクエストを \fBaio_read\fP(3) を使ってキューに入れる。その後、このプログラムはループに @@ -178,17 +177,17 @@ POSIX.1\-2001, POSIX.1\-2008. る。各 I/O リクエストは、シグナルの配送による完了通知が行われるように設 定される。全ての I/O リクエストが完了した後、\fBaio_return\fP(3) を使って それぞれのステータスを取得する。 - +.PP \fBSIGQUIT\fP シグナル (control\-\e をタイプすると生成できる) を送ると、 このプログラムは \fBaio_cancel\fP(3) を使って 完了していない各リクエストにキャンセル要求を送る。 - +.PP 以下はこのプログラムを実行した際の出力例である。 この例では、標準入力に対して 2 つのリクエストを行い、 "abc" と "x" という 2 行の入力を行っている。 - +.PP .in +4n -.nf +.EX $ \fB./a.out /dev/stdin /dev/stdin\fP opened /dev/stdin on descriptor 3 opened /dev/stdin on descriptor 4 @@ -210,11 +209,12 @@ All I/O requests completed aio_return(): for request 0 (descriptor 3): 4 for request 1 (descriptor 4): 2 -.fi +.EE .in .SS プログラムのソース \& -.nf +.EX +#include #include #include #include @@ -226,8 +226,6 @@ aio_return(): #define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); } while (0) -#define errMsg(msg) do { perror(msg); } while (0) - struct ioRequest { /* Application\-defined structure for tracking I/O requests */ int reqNum; @@ -250,21 +248,21 @@ quitHandler(int sig) static void /* Handler for I/O completion signal */ aioSigHandler(int sig, siginfo_t *si, void *ucontext) { - write(STDOUT_FILENO, "I/O completion signal received\en", 31); + if (si\->si_code == SI_ASYNCIO) { + write(STDOUT_FILENO, "I/O completion signal received\en", 31); - /* The corresponding ioRequest structure would be available as - struct ioRequest *ioReq = si\->si_value.sival_ptr; - and the file descriptor would then be available via - ioReq\->aiocbp\->aio_fildes */ + /* The corresponding ioRequest structure would be available as + struct ioRequest *ioReq = si\->si_value.sival_ptr; + and the file descriptor would then be available via + ioReq\->aiocbp\->aio_fildes */ + } } int main(int argc, char *argv[]) { - struct ioRequest *ioList; - struct aiocb *aiocbList; struct sigaction sa; - int s, j; + int s; int numReqs; /* Total number of queued I/O requests */ int openReqs; /* Number of I/O requests still in progress */ @@ -278,11 +276,11 @@ main(int argc, char *argv[]) /* Allocate our arrays */ - ioList = calloc(numReqs, sizeof(struct ioRequest)); + struct ioRequest *ioList = calloc(numReqs, sizeof(*ioList)); if (ioList == NULL) errExit("calloc"); - aiocbList = calloc(numReqs, sizeof(struct aiocb)); + struct aiocb *aiocbList = calloc(numReqs, sizeof(*aiocbList)); if (aiocbList == NULL) errExit("calloc"); @@ -303,7 +301,7 @@ main(int argc, char *argv[]) /* Open each file specified on the command line, and queue a read request on the resulting file descriptor */ - for (j = 0; j < numReqs; j++) { + for (int j = 0; j < numReqs; j++) { ioList[j].reqNum = j; ioList[j].status = EINPROGRESS; ioList[j].aiocbp = &aiocbList[j]; @@ -346,7 +344,7 @@ main(int argc, char *argv[]) printf("got SIGQUIT; canceling I/O requests: \en"); - for (j = 0; j < numReqs; j++) { + for (int j = 0; j < numReqs; j++) { if (ioList[j].status == EINPROGRESS) { printf(" Request %d on descriptor %d:", j, ioList[j].aiocbp\->aio_fildes); @@ -355,11 +353,11 @@ main(int argc, char *argv[]) if (s == AIO_CANCELED) printf("I/O canceled\en"); else if (s == AIO_NOTCANCELED) - printf("I/O not canceled\en"); + printf("I/O not canceled\en"); else if (s == AIO_ALLDONE) printf("I/O all done\en"); else - errMsg("aio_cancel"); + perror("aio_cancel"); } } @@ -370,7 +368,7 @@ main(int argc, char *argv[]) in progress */ printf("aio_error():\en"); - for (j = 0; j < numReqs; j++) { + for (int j = 0; j < numReqs; j++) { if (ioList[j].status == EINPROGRESS) { printf(" for request %d (descriptor %d): ", j, ioList[j].aiocbp\->aio_fildes); @@ -387,7 +385,7 @@ main(int argc, char *argv[]) printf("Canceled\en"); break; default: - errMsg("aio_error"); + perror("aio_error"); break; } @@ -402,7 +400,7 @@ main(int argc, char *argv[]) /* Check status return of all I/O requests */ printf("aio_return():\en"); - for (j = 0; j < numReqs; j++) { + for (int j = 0; j < numReqs; j++) { ssize_t s; s = aio_return(ioList[j].aiocbp); @@ -412,17 +410,18 @@ main(int argc, char *argv[]) exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 .ad l .nh \fBio_cancel\fP(2), \fBio_destroy\fP(2), \fBio_getevents\fP(2), \fBio_setup\fP(2), \fBio_submit\fP(2), \fBaio_cancel\fP(3), \fBaio_error\fP(3), \fBaio_init\fP(3), \fBaio_read\fP(3), \fBaio_return\fP(3), \fBaio_write\fP(3), \fBlio_listio\fP(3) - -.UR http://www.squid\-cache.org\:/~adrian\:/Reprint\-Pulavarty\-OLS2003.pdf +.PP +"Asynchronous I/O Support in Linux 2.5", Bhattacharya, Pratt, Pulavarty, and +Morgan, Proceedings of the Linux Symposium, 2003, +.UR https://www.kernel.org/doc/ols/2003/ols2003\-pages\-351\-366.pdf .UE .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/armscii-8.7 b/manual/LDP_man-pages/draft/man7/armscii-8.7 index b33e6860..0e8bb93c 100644 --- a/manual/LDP_man-pages/draft/man7/armscii-8.7 +++ b/manual/LDP_man-pages/draft/man7/armscii-8.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 2009 Lefteris Dimitroulakis .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -32,15 +31,15 @@ .\" all rights reserved. .\" Translated 2012-04-27, Akihiro MOTOKI .\" -.TH ARMSCII\-8 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ARMSCII\-8 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 armscii\-8 \- アルメニア語文字集合の 8進数、10進数、16進数による符号化 .SH 説明 情報交換用アルメニア標準コード (Armenian Standard Code for Information Interchange) で、 8 ビットコードの文字集合である。 .SS "ArmSCII\-8 文字" -以下の表は ArmSCII\-8 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in ArmSCII\-8 that are printable +and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -143,6 +142,5 @@ _ .SH 関連項目 \fBascii\fP(7), \fBcharsets\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 index 764608e6..3545c111 100644 --- a/manual/LDP_man-pages/draft/man7/arp.7 +++ b/manual/LDP_man-pages/draft/man7/arp.7 @@ -1,4 +1,3 @@ -'\" t .\" This man page is Copyright (C) 1999 Matthew Wilcox . .\" %%%LICENSE_START(VERBATIM_ONE_PARA) .\" Permission is granted to distribute possibly modified copies @@ -21,7 +20,7 @@ .\" Updated & Modified 2001-02-16, NAKANO Takeo .\" Updated 2008-12-26, Akihiro MOTOKI, LDP v3.14 .\" -.TH ARP 7 2008\-11\-25 Linux "Linux Programmer's Manual" +.TH ARP 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 arp \- Linux ARP カーネルモジュール .SH 説明 @@ -29,16 +28,16 @@ arp \- Linux ARP カーネルモジュール 実装したものである。 ARP は、ダイレクトに接続されたネットワーク上で、 第 2 層のハードウェアアドレスをIPv4 プロトコルアドレスに 変換するために用いられる。ユーザーは設定の場合を除いて 通常直接このモジュールに関ることはない。 これはカーネル内部の他のプロトコルにサービスを提供するものである。 - +.PP ユーザープロセスは、 \fBpacket\fP(7) ソケットを用いれば ARP パケットを受信することができる。 ARP キャッシュをユーザー空間で管理することもできる。 これには \fBnetlink\fP(7) を用いる。 ARP テーブルも制御可能で、これには任意の \fBAF_INET\fP ソケットに \fBioctl\fP(2) を用いる。 - +.PP ARP モジュールはハードウェアアドレスからプロトコルアドレスへの マッピングのキャッシュを管理する。キャッシュの大きさには制限が あるので、古いエントリーや利用されないエントリーはガベージコレクト される。 permanent (保存) マークがつけられたエントリーは、 決してガベージコレクタによって消去されない。 ioctl を用いればキャッシュを直接操作することもできる。 また後述の \fI/proc\fP インターフェースによりキャッシュの振る舞いを調整できる。 - +.PP 存在しているマッピングに対して、 正のフィードバックが一定時間ない (後述の \fI/proc\fP インターフェースを見よ) と、 近傍キャッシュエントリー (neighbor cache entry) は 古くなった (stale) とみなされる。 正のフィードバックは高位のレイヤーからも取得できる (例えば TCP ACK が成功した場合など)。 他のプロトコルは、 \fBsendmsg\fP(2) に \fBMSG_CONFIRM\fP @@ -47,16 +46,16 @@ ARP モジュールはハードウェアアドレスからプロトコルアド \fBapp_solicit\fP 回失敗すると、古い MAC アドレスがわかっている場合は、 unicast のプローブが \fBucaset_solicit\fP 回送られる。これにも失敗すると、新しい ARP リクエスト をネットワークにブロードキャストする。 リクエストは、データが送信キューにある場合のみ送られる。 - +.PP Linux は、あるアドレスへのリクエストを受信・フォワードし、 受信したインターフェースで代理 arp が有効になっている場合には、 自動的にそのアドレスを nonpermanent な代理 arp エントリーに追加する。 そのターゲットに reject route があった場合には、 代理 arp エントリーは一切追加されない。 .SS ioctl すべての \fBAF_INET\fP ソケットでは、 3 つの ioctl が使用できる。 これらは \fIstruct arpreq\fP へのポインターを引数に取る。 - +.PP .in +4n -.nf +.EX struct arpreq { struct sockaddr arp_pa; /* protocol address */ struct sockaddr arp_ha; /* hardware address */ @@ -64,13 +63,13 @@ struct arpreq { struct sockaddr arp_netmask; /* netmask of protocol address */ char arp_dev[16]; }; -.fi +.EE .in - +.PP \fBSIOCSARP\fP, \fBSIOCDARP\fP, \fBSIOCGARP\fP は、それぞれ ARP マッピングを設定・削除・取得する。 ARP マップの設定と削除は特権が必要な操作であり、 \fBCAP_NET_ADMIN\fP 権限を持つプロセスか、実行ユーザー ID が 0 のプロセス でなければ実行できない。 - +.PP \fIarp_pa\fP は \fBAF_INET\fP アドレスでなければならず、 \fIarp_ha\fP は \fIarp_dev\fP で設定されたデバイスと同じタイプでなければならない。 \fIarp_dev\fP はデバイスの名前を示す、ゼロで終端された文字列である。 .RS @@ -185,27 +184,26 @@ ARP デーモンへの問い合わせを行う前に行う unicast 探索の最 .SH バージョン Linux 2.0 で、 \fIstruct arpreq\fP に \fIarp_dev\fP メンバーが含まれるように変更があった。また同時に ioctl 番号も変更された。古い ioctl は Linux 2.2 で用いることができなくなった。 - +.PP ネットワークに対する代理 arp エントリー (netmask が 0xffffffff でない) は、 Linux 2.2 で用いることができなくなった。 これはカーネルによって設定される、別のインターフェースにおける 到達可能なすべてのホストに対する自動代理 arp によって置き換えられた (そのインターフェースでフォワーディングと代理 arp が有効になっている場合)。 - +.PP \fIneigh/*\fP の各インターフェースは Linux 2.2 以前には存在しない。 .SH バグ いくつかのタイマー設定は jiffy で指定されるが、 jiffy はアーキテクチャーやカーネルのバージョンに依存する。 \fBtime\fP(7) を参照のこと。 - +.PP ユーザー空間からポジティブなフィードバックを送る方法が存在しない。 つまり接続指向 (connection\-oriented) のプロトコルをユーザー空間で 実装すると、余計な ARP トラフィックの原因となる。 なぜなら ndisc は定期的に MAC アドレスを再探索するからである。 同様の問題はいくつかのカーネルプロトコル (NFS over UDP など) にも存在する。 - +.PP この man ページでは IPv4 特有の機能と IPv4 とIPv6 で共通の機能を一緒に説明している。 .SH 関連項目 -\fBcapabilities\fP(7), \fBip\fP(7) +\fBcapabilities\fP(7), \fBip\fP(7), \fBarpd\fP(8) .PP RFC \ 826: ARP の説明。 RFC\ 2461: IPv6 neighbor discovery の説明と利用されている基礎アルゴリズム。 Linux 2.2 以降では IPv4 ARP は可能な場合は IPv6 アルゴリズムを使っている。 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/ascii.7 b/manual/LDP_man-pages/draft/man7/ascii.7 index 9e05e05a..68160054 100644 --- a/manual/LDP_man-pages/draft/man7/ascii.7 +++ b/manual/LDP_man-pages/draft/man7/ascii.7 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (c) 1993 Michael Haardt (michael@moria.de) .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -44,7 +43,7 @@ .\" Modified 1999-11-27, HANATAKA Shinya .\" Modified 2005-02-21, Akihiro MOTOKI .\" -.TH ASCII 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ASCII 7 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 ascii \- ASCII 文字集合の 8 進数、10 進数、16 進数による符号化 .SH 説明 @@ -52,9 +51,9 @@ ASCII は、情報交換用米国標準コード (American Standard Code for Information Interchange) の略で、7 ビットのコードである。 (ISO 8859\-1 のような) 多くの 8 ビットのコードでは下半分に ASCII を含んでいる。ASCII は国際的な規格では ISO 646\-IRV として知られている。 -.LP +.PP 以下の表は 128 文字の ASCII 文字をまとめたものである。 -.LP +.PP C プログラムでの \f(CW\(aq\eX\(aq\fP エスケープも注記してある。 .if t \{\ .ft CW @@ -93,7 +92,7 @@ _ 033 27 1B ESC (エスケープ) 133 91 5B [ 034 28 1C FS (ファイル区切り) 134 92 5C \e \(aq\e\e\(aq 035 29 1D GS (グループ区切り) 135 93 5D ] -036 30 1E RS (レコード区切り) 136 94 5E ^ +036 30 1E RS (レコード区切り) 136 94 5E \(ha 037 31 1F US (ユニット区切り) 137 95 5F \&_ 040 32 20 SPACE 140 96 60 \` 041 33 21 ! 141 97 61 a @@ -125,7 +124,7 @@ _ 073 59 3B ; 173 123 7B { 074 60 3C < 174 124 7C | 075 61 3D = 175 125 7D } -076 62 3E > 176 126 7E ~ +076 62 3E > 176 126 7E \(ti 077 63 3F ? 177 127 7F DEL .TE .if t \{\ @@ -134,7 +133,7 @@ _ \} .SS 表 便利なので、16進形式と10進形式の簡潔な表を載せておく。 -.sp +.PP .nf .if t \{\ .in 1i @@ -146,9 +145,9 @@ _ 1: ! 1 A Q a q 1: ) 3 = G Q [ e o y 2: " 2 B R b r 2: * 4 > H R \e f p z 3: # 3 C S c s 3: ! + 5 ? I S ] g q { -4: $ 4 D T d t 4: " , 6 @ J T ^ h r | +4: $ 4 D T d t 4: " , 6 @ J T \(ha h r | 5: % 5 E U e u 5: # \- 7 A K U _ i s } -6: & 6 F V f v 6: $ . 8 B L V \` j t ~ +6: & 6 F V f v 6: $ . 8 B L V \` j t \(ti 7: \(aq 7 G W g w 7: % / 9 C M W a k u DEL 8: ( 8 H X h x 8: & 0 : D N X b l v 9: ) 9 I Y i y 9: \(aq 1 ; E O Y c m w @@ -156,7 +155,7 @@ A: * : J Z j z B: + ; K [ k { C: , < L \e l | D: \- = M ] m } -E: . > N ^ n ~ +E: . > N \(ha n \(ti F: / ? O _ o DEL .if t \{\ .in @@ -166,17 +165,17 @@ F: / ? O _ o DEL .SH 備考 .SS 歴史 \fBascii\fP のマニュアルは AT&T UNIX Version 7 で登場した。 -.LP +.PP 古い端末では、アンダースコアがバックアロー (backarrow) と呼ばれる 左向きの矢印で表示される、またキャレットが上向きの矢印で表示され、 縦棒 (vertcal bar) では真ん中に穴がある。 -.LP +.PP 大文字 (uppercase) と小文字 (lowercase) は 1 ビットだけ異なっている。 ASCII の文字 2 はダブルクォートとは 1 ビットだけ異なっている。 これによって機械式キーボードやマイコン制御でない電子キーボードで キーコード化することが簡単になる。また、古いテレタイプでもこの 組み合わせが使用されていた。(訳注: JIS キー配列もその一種) -.LP +.PP .\" .\" ASA was the American Standards Association and X3 was an ASA sectional .\" committee on computers and data processing. Its name changed to @@ -193,12 +192,11 @@ ASCII 規格は米国規格協会 (USASI : United States of America Standards Institute) によって 1968年に発行された。 .SH 関連項目 -\fBcharsets\fP(7), \fBiso_8859\-1\fP(7), \fBiso_8859\-10\fP(7), \fBiso_8859\-11\fP(7), +\fBcharsets\fP(7), \fBiso_8859\-1\fP(7), \fBiso_8859\-2\fP(7), \fBiso_8859\-3\fP(7), +\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), \fBiso_8859\-10\fP(7), \fBiso_8859\-11\fP(7), \fBiso_8859\-13\fP(7), \fBiso_8859\-14\fP(7), \fBiso_8859\-15\fP(7), \fBiso_8859\-16\fP(7), -\fBiso_8859\-2\fP(7), \fBiso_8859\-3\fP(7), \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), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/boot.7 b/manual/LDP_man-pages/draft/man7/boot.7 deleted file mode 100644 index 6a51d98c..00000000 --- a/manual/LDP_man-pages/draft/man7/boot.7 +++ /dev/null @@ -1,137 +0,0 @@ -.\" Written by Oron Peled . -.\" -.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) -.\" May be distributed subject to the GPL. -.\" %%%LICENSE_END -.\" -.\" I tried to be as much generic in the description as possible: -.\" - General boot sequence is applicable to almost any -.\" OS/Machine (DOS/PC, Linux/PC, Solaris/SPARC, CMS/S390) -.\" - kernel and init(1) is applicable to almost any UNIX/Linux -.\" - boot scripts are applicable to SYSV-R4 based UNIX/Linux -.\" -.\" Modified 2004-11-03 patch from Martin Schulze -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2002 NAKANO Takeo all rights reserved. -.\" Translated 2002-08-07, NAKANO Takeo -.\" Updated 2005-02-21, Akihiro MOTOKI -.\" -.TH BOOT 7 2010\-09\-19 Linux "Linux Programmer's Manual" -.SH 名前 -boot\-scripts \- ブートシーケンスの一般的な解説 -.SH 説明 -.LP -細かいところはシステムによって異なるが、大まかに言うと、 ブートシーケンスは以下の段階に分けられる: (1) ハードウェアのブート (2) -オペレーティングシステム (OS) ローダー (3) カーネルの起動 (4) init と inittab (5) ブートスクリプト -.SS ハードウェアのブート -電源投入やハードリセットが行われると、 ROM (通常は PROM) に保存されているプログラムに制御が渡される。 PC ではこのプログラムは通常 -\fBBIOS\fP と呼ばれる。 - -普通このプログラムは、まずマシンの基本的な自己診断を行い、 -不揮発性メモリーにアクセスして各種のパラメーターを読み込む。 -PC では、このメモリーは電池によってバックアップされている CMOS メモリーである。 -そのため \fBCMOS\fP と呼ばれることが多い。 -しかし PC 以外の世界では、通常 \fBnvram\fP (nonvolatile ram) と呼ばれている。 - -nvram に保存されているパラメーターはシステムによって異なる。 しかし、ハードウェアブートプログラムは、少なくとも、 -ブートデバイスがどれであるか、もしくは ブートデバイスとして探索するデバイスがどれであるかを 知っていなければならない。 - -ハードウェアブートのシーケンスは、次にブートデバイスにアクセスし、 ブートデバイスのあらかじめ決まった場所に置かれている OS -ローダーをロードし、制御を渡す。 -.TP -注意: -ここではネットワークブートについては触れない。 この話題について調査したい読者は、 DHCP, TFTP, PXE, Etherboot -等について調べてみるとよい。 -.SS "OS ローダー" -PC では、OS ローダーはブートデバイスの先頭セクタに置かれる。 これは \fBMBR\fP (Master Boot Record) と呼ばれる。 - -様々な制約のため、 ほとんどのシステムで第一ローダーは非常に簡単な機能しか持っていない。 PC 以外のシステムでも、 -サイズの制限やローダーの機能などにある程度の制限は存在する。 しかしパーティションテーブルを含めて 512 バイトという PC の MBR では、OS -ローダーの全機能をここに押し込むのはまず不可能だ。 - -したがって大抵の OS では、第一ローダーは第二ローダーを呼ぶようになっており、 -後者はあらかじめ指定されたディスクパーティションに置けるようになっている。 - -Linux における OS ローダーは、ふつう \fBlilo\fP(8) か \fBgrub\fP(8) -である。両者とも第二ローダーとしてインストールすることもでき (この場合 DOS がインストールした MBR がこれらを指すようにする)、 -また第一・第二ローダーの両方としてインストールすることもできる。 後者の場合向けに、両者は特別な MBR イメージを提供している。 -これには第二ローダーをルートパーティションからロードするような ブートストラップコードが含まれている。 - -OS ローダーの主な仕事は、カーネルのディスク上の位置を特定し、 ロードして起動することである。ほとんどの OS ローダーは、 -対話モードで使用することもでき、追加のパラメーターをカーネルに渡したり、 デフォルトとは別のカーネルを指定したりすることができる -(例えば、最後にコンパイルしたカーネルが機能しなかった時に バックアップのカーネルを指定して起動するといったことができる)。 -.SS カーネルの起動 -カーネルはロードされると、デバイスを (ドライバによって) 初期化し、スワッパを起動し (最近の Linux カーネルでは、 スワッパは kswapd -という「カーネルプロセス」になる)、 ルートファイルシステム (/) をマウントする。 - -カーネルに渡すことのできるパラメーターのいくつかは、 これらの動作に関係する。 (例えばデフォルトのルートファイルシステムを変更したりできる)。 -Linux カーネルパラメーターに関するより詳しい情報は \fBbootparam\fP(7) を読んでほしい。 - -これらが済んではじめて、 カーネルは最初の (ユーザーランドの) プロセスを生成し、 番号 1 を与える。このプロセスは \fI/sbin/init\fP -プログラムを実行する。 カーネルによって解釈されていないパラメーターはすべて \fI/sbin/init\fP に渡される。 -.SS "init と inittab" -init は、起動するとまず \fI/etc/inittab\fP を読み、その後の行動に関する情報を得る。 このファイルは \fIランレベル\fP -によってどのような動作を行うべきであるかを定義する。 - -これによってシステム管理者の管理が楽になる。各\fIランレベル\fPは提供する -サービスの集合に対応する (例えば、 \fBS\fP は \fIシングルユーザー\fP、 \fB2\fP で -は大抵のネットワークサービスを起動する)。 -システム管理者は、 \fBinit\fP(1) を用いて現在のランレベルを変更でき、 -\fBrunlevel\fP(8) によって現在のランレベルを確認できる。 - -しかし、このファイルを編集して個々のサービスを管理するのは不便なので、 inittab は単にスクリプトの集合に対するブートストラップになっている。 -実際の個々のサービスの起動や停止は、これらのスクリプトで行う。 -.SS ブートスクリプト -.TP -注意: -以下の説明は System V Release 4 をベースとしたシステムに関するものである。 現在の大抵の商用 UNIX システム (Solaris, -HP\-UX, Irix, Tru64) や、 メジャーな Linux ディストリビューション (Red Hat, Debian, Mandriva, -SUSE, Ubuntu) はこれをベースにしたものである。 システムによっては、ブートスクリプトの機構が いくらか異なることもある -(Slackware Linux, FreeBSD, OpenBSD など)。 -.LP -管理すべき各サービス (メール、nfs サーバ、cron などなど) それぞれに対して、ブートスクリプトがひとつずつ特定のディレクトリ (ほとんどの -Linux で \fI/etc/init.d\fP) に配置される。これらのスクリプトは、 それぞれ引数としてひとつの単語を取る。"start" -が指定されると そのサービスを起動し、"stop" が指定されるとサービスを停止する。 スクリプトは他の「便利な」引数を取ってもよい (例えば -"restart" で停止・起動を順番に行ったり、"status" でサービスの状態を表示するなど)。 スクリプトを引数なしで実行すると、 -指定できる引数の一覧が表示される。 -.SS 順序づけディレクトリ -あるランレベルで、特定のスクリプトを指定した順序で実行させるため、 \fI順序付けディレクトリ (sequencing directory)\fP -という仕組みが存在する。 これらはふつう \fI/etc/rc[0\-6S].d\fP である。各ディレクトリの内部には、 \fI/etc/init.d\fP -ディレクトリに置かれたスクリプトへのリンク (ふつうはシンボリックリンク) が置かれる。 - -第一スクリプト (通常 \fI/etc/rc\fP) は \fBinittab\fP(5) から呼ばれ、 -順序付けディレクトリに置かれたリンク経由で各サービススクリプトを呼び出す。 名前が \(aqS\(aq ではじまるリンクは "start" -という引数をつけて呼び出され (すなわちサービスが起動し)。名前が \(aqK\(aq ではじまるリンクは "stop" という引数をつけて呼び出される -(すなわちサービスが停止する)。 - -同じランレベルの内部での起動や停止の順序を規定するために、 リンクの名前には順序を示す数字が含まれる。 また、名前をわかりやすくするため、 -リンク名の末尾には対応するサービスの名前がつけられる。 例えば、 \fI/etc/rc2.d/S80sendmail\fP というリンクは、sendmail -サービスをランレベル 2 において起動する。 これは、 \fI/etc/rc2.d/S12syslog\fP よりも後に、また -\fI/etc/rc2.d/S90xfs\fP よりも先に実行される。 - -ブートの順序とランレベルを管理するには、 これらのリンクを管理しなければならない。 しかし多くの Linux ディストリビューションでは、 -これらの作業を手助けしてくれるツールが存在する (例えば \fBchkconfig\fP(8) など)。 -.SS ブートの設定 -デーモンの起動時には、 コマンドラインオプションやパラメーターを指定できるのが普通である。 -システム管理者がこれらのパラメーターを変更したいと思ったときに、 ブートスクリプトそのものを編集しなくてもすむよう、 -設定ファイルが用いられる。これらは特定のディレクトリ (Red Hat システムでは \fI/etc/sysconfig\fP) -に置かれ、ブートスクリプトから参照される。 - -古い UNIX システムでは、これらのファイルには デーモンに与える実際のコマンドラインオプションが書かれていた。 しかし最近の Linux システム -(や HP\-UX) では、 これらのファイルには単にシェル変数が書かれているだけである。 \fI/etc/init.d\fP -に置かれたブートスクリプトは、これらの設定ファイルを \fBsource\fP し、その変数の値を用いる。 -.SH ファイル -.LP -\fI/etc/init.d/\fP, \fI/etc/rc[S0\-6].d/\fP, \fI/etc/sysconfig/\fP -.SH 関連項目 -\fBinittab\fP(5), \fBbootparam\fP(7), \fBinit\fP(1), \fBrunlevel\fP(8), \fBshutdown\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index c16e5c8b..0f120a6c 100644 --- a/manual/LDP_man-pages/draft/man7/bootparam.7 +++ b/manual/LDP_man-pages/draft/man7/bootparam.7 @@ -24,8 +24,6 @@ .\" 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. .\" .\"******************************************************************* .\" @@ -44,73 +42,56 @@ .\" Updated 2013-07-31, Akihiro MOTOKI .\" Updated 2013-08-16, Akihiro MOTOKI .\" -.TH BOOTPARAM 7 2014\-06\-13 Linux "Linux Programmer's Manual" +.TH BOOTPARAM 7 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 bootparam \- Linux カーネル起動時パラメーターの解説 .SH 説明 -Linux カーネルは起動するときに「コマンドラインオプション」あるいは 「起動時パラメーター」を受け付ける。 これは一般に、 -カーネルには決定できないハードウェアのパラメーターをカーネルに渡したい場合や、 -カーネルが検出するであろう値を意図的に無効にしたり変更したりする場合に用いる。 - -カーネルが BIOS から直接起動されるとき (たとえば 'cp zImage /dev/fd0' でフロッピーにコピーしたカーネルから起動するなど) -は、 パラメーターを指定する機会はない。 そのため、この起動時パラメーター機能を利用するためには、 GRUB -のようなパラメーターを指定できるブートローダーを使用しなければならない。 - -.\" The LILO program (LInux LOader) written by Werner Almesberger is the -.\" most commonly used. -.\" It has the ability to boot various kernels, and -.\" stores the configuration information in a plain text file. -.\" (See -.\" .BR lilo (8) -.\" and -.\" .BR lilo.conf (5).) -.\" LILO can boot DOS, OS/2, Linux, FreeBSD, UnixWare, etc., and is quite flexible. -.\" -.\" The other commonly used Linux loader is 'LoadLin', which is a DOS -.\" program that has the capability to launch a Linux kernel from the DOS -.\" prompt (with boot-args) assuming that certain resources are available. -.\" This is good for people that want to launch Linux from DOS. -.\" -.\" It is also very useful if you have certain hardware which relies on -.\" the supplied DOS driver to put the hardware into a known state. -.\" A common example is 'SoundBlaster Compatible' sound cards that require -.\" the DOS driver to twiddle a few mystical registers to put the card -.\" into a SB compatible mode. -.\" Booting DOS with the supplied driver, and -.\" then loading Linux from the DOS prompt with loadlin avoids the reset -.\" of the card that happens if one rebooted instead. +The Linux kernel accepts certain 'command\-line options' or 'boot time +parameters' at the moment it is started. In general, this is used to supply +the kernel with information about hardware parameters that the kernel would +not be able to determine on its own, or to avoid/override the values that +the kernel would otherwise detect. +.PP +When the kernel is booted directly by the BIOS, you have no opportunity to +specify any parameters. So, in order to take advantage of this possibility +you have to use a boot loader that is able to pass parameters, such as GRUB. .SS 引数リスト -カーネルのコマンドラインはパースされ、スペースで区切られた文字列 (\fI起動時引数: boot arguments\fP) のリストとなる。 -ほとんどの起動時引数は次の書式である。 - +The kernel command line is parsed into a list of strings (boot arguments) +separated by spaces. Most of the boot arguments have the form: +.PP .in +4n -.nf +.EX name[=value_1][,value_2]...[,value_10] -.fi +.EE .in -.LP +.PP ここで 'name' は、それに対応する値がカーネルのどの部分に渡されるものなのかを 識別するための、他と重ならないキーワードである。 書式中の 10 という制限は実際に存在する。 現在のコードは、キーワードひとつあたり、コンマで区切られたパラメーターを 10 個までしか取り扱うことができない。 (しかし、事情が非常に複雑な場合には、同じキーワードを再度利用して 10 個以上のパラメーターを与えることができるかもしれない。 対象となるハードウェアの設定関数がそれをサポートしていれば、だが。) - +.PP カーネルコマンドラインの識別はほとんどがカーネルソースファイル \fIinit/main.c\fP に書かれている。 最初に、カーネルは \&'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 を設定関数に渡す。 - +.PP +Then it walks a list of setup functions to see if the specified argument +string (such as 'foo') has been associated with a setup function +('foo_setup()') for a particular device or part of the kernel. If you +passed the kernel the line foo=3,4,5,6 then the kernel would search the +bootsetups array to see if 'foo' was registered. If it was, then it would +call the setup function associated with 'foo' (foo_setup()) and hand it the +arguments 3, 4, 5, and 6 as given on the kernel command line. +.PP \&'foo=bar' という形式の引数のうち、 上記のように設定関数に受け入れられなかったものは、 環境変数と解釈されて設定される。 (あまり役に立たない?) 例としては、'TERM=VT100' がある。 - -カーネルによって処理されず、環境変数としても解釈されなかった 残りの引数は、プロセス 1 に渡されることになる。 通常このプロセス 1 は -\fBinit\fP(1) プログラムである。 \fIinit\fP プロセスに渡される引数で最もよく使われるのは、 'single' というキーワードである。 -これを指定すると init はシングルユーザーモードでコンピュータを起動し、 通常使われるデーモンは一切起動しない。 システムにインストールされている -\fBinit\fP(1) が どんな引数を受け付けるかは、 マニュアルページで調べること。 +.PP +Any remaining arguments that were not picked up by the kernel and were not +interpreted as environment variables are then passed onto PID 1, which is +usually the \fBinit\fP(1) program. The most common argument that is passed to +the \fIinit\fP process is the word 'single' which instructs it to boot the +computer in single user mode, and not launch all the usual daemons. Check +the manual page for the version of \fBinit\fP(1) installed on your system to +see what arguments it accepts. .SS 一般的な、デバイス固有ではない起動時引き数 .TP \&\fB'init=...'\fP @@ -119,41 +100,27 @@ foo=3,4,5,6 のようなパラメーターを与えたとすると、 カーネ panic を起こす。 .TP \&\fB'nfsaddrs=...'\fP -nfs のブートアドレスを指定した文字列に設定する。 このブートアドレスはネットワークブートの場合に用いられる。 +This sets the NFS boot address to the given string. This boot address is +used in case of a net boot. .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 -を使用できる。 +This sets the NFS root name to the given string. If this string does not +begin with '/' or ',' or a digit, then it is prefixed by \&'/tftpboot/'. +This root name is used in case of a net boot. .TP \&\fB'root=...'\fP 起動時にルートファイルシステムとして使われるデバイスをカーネルに指定する。 デフォルトはコンパイル時に決定され、 通常はカーネルを構築したシステムのルートデバイスになる。 この値を無効にして、 例えば 2 番目のフロッピーディスクドライブをルートデバイスに指定する場合は、 \&'root=/dev/fd1' とする。 - -ルートデバイスの指定にはシンボル形式と数値形式を用いることができる。 シンボル形式の場合は \fI/dev/XXYN\fP という書式で指定する。 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 ディスクを使用する場合に用いる。) - +.IP +The root device can be specified symbolically or numerically. A symbolic +specification has the form \fI/dev/XXYN\fP, where XX designates the device type +(e.g., 'hd' for ST\-506 compatible hard disk, with Y in \&'a'\(en'd'; 'sd' +for SCSI compatible disk, with Y in 'a'\(en'e'), Y the driver letter or +number, and N the number (in decimal) of the partition on this device. +.IP なお、これらはファイルシステム上でのデバイスの指定方法とは全く関係ない。 \&'/dev/' を用いるのは単に慣習に過ぎない。 - +.IP 扱いにくいし移植性も良くないが、 上記のデバイスを major/minor 番号の数値で指定してもよい。 (例えば \fI/dev/sda3\fP は major 番号 8、minor 番号 3 なので、 \&'root=0x803' と記述できる。) .TP @@ -173,86 +140,65 @@ major 番号 8、minor 番号 3 なので、 \&'root=0x803' と記述できる プログラムがファイルシステムの矛盾を検査できるようにする。 ファイルシステムが「読み書き可能」として再マウントされる (つまり 'mount \-w \-n \-o remount /') までの間は、 いかなるプロセスもこのファイルシステム上のファイルに書き込むことはできない。 (\fBmount\fP(8) も参照。) - +.IP rw オプションはルートファイルシステムを 「読み書き可能」でマウントするようカーネルに指示する。 こちらがデフォルトである。 - .TP \&\fB'resume=...'\fP -このオプションは、 マシンを休止状態 (ハイバネーション) から再起動する際の、ディスク上に保存したデータの起動位置をカーネルに指示する。 -通常は、スワップパーティションやスワップファイルと同じである。例えば、 - +This tells the kernel the location of the suspend\-to\-disk data that you want +the machine to resume from after hibernation. Usually, it is the same as +your swap partition or file. Example: +.IP .in +4n -.nf +.EX resume=/dev/hda2 -.fi +.EE .in .TP \&\fB'reserve=...'\fP デバイスの自動検出から I/O ポートを保護するために用いる。 コマンドの形式は以下の通り。 - +.IP .in +4n -.nf +.EX \fBreserve=\fP\fIiobase,extent[,iobase,extent]...\fP -.fi +.EE .in -.sp +.IP 機種によっては、 デバイスドライバによるデバイスの自動検出を、 特定の範囲に対しては禁止しなければならないことがある。 ハードウェアが検出動作によって深刻な問題を引き起こす場合や、 誤認識される可能性がある場合、 また単にカーネルにハードウェアを初期化させたくない場合などがありうるだろう。 - +.IP この起動時引数 reserve は、自動検出の対象外とする I/O ポートの範囲を指定する。 デバイスドライバは、 他の起動時引数によって明示的に指定されない限り、 予約された範囲に対して自動検出動作を行わない。 - +.IP 例えばブート時のコマンドラインに - +.IP .in +4n -.nf +.EX reserve=0x300,32 blah=0x300 -.fi +.EE .in .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 -秒後にリブートするようになる。 この値は、起動後に以下のようにして設定することもできる。 - +By default, the kernel will not reboot after a panic, but this option will +cause a kernel reboot after N seconds (if N is greater than zero). This +panic timeout can also be set by +.IP .in +4n -.nf +.EX echo N > /proc/sys/kernel/panic -.fi +.EE .in .TP \&\fB'reboot=[warm|cold][,[bios|hard]]'\fP -(カーネルコンパイル時に \fBCONFIG_BUGi386\fP が指定されたときのみ有効。) カーネルバージョン 2.0.22 から、 -リブートのデフォルトはコールドブートになった。 以前のデフォルトであるウォームブートをするには \&'reboot=warm' -と指定しなければならない。 (ある種のハードウェアをリセットするにはコールドブートが必要になるが、 -ディスクキャッシュにある書き込んでいないデータは破壊される。 ウォームブートでは、より素早くリブートできる。) デフォルトではリブートは 'hard' -で行われる。 すなわちリセットラインに low を出力するようキーボードコントローラーに要求して、 リブートを行う。 -しかし一部のマザーボードではこれができない。 \&'reboot=bios' オプションを指定すると、 代わりに BIOS を経由するようになる。 +Since Linux 2.0.22, a reboot is by default a cold reboot. One asks for the +old default with 'reboot=warm'. (A cold reboot may be required to reset +certain hardware, but might destroy not yet written data in a disk cache. A +warm reboot may be faster.) By default, a reboot is hard, by asking the +keyboard controller to pulse the reset line low, but there is at least one +type of motherboard where that doesn't work. The option 'reboot=bios' will +instead jump through the BIOS. .TP \&\fB'nosmp'\fP と \fB'maxcpus=N'\fP (カーネルのコンパイル時に __SMP__ が指定されたときのみ有効。) コマンドラインオプションに 'nosmp' または 'maxcpus=0' @@ -261,12 +207,15 @@ SMP モードで有効にする CPU の最大数を N に制限する。 .SS カーネル開発者用の起動時引数 .TP \&\fB'debug'\fP -カーネルが出力するメッセージはカーネルログデーモン klogd に渡され、 ディスクに記録できるようになる。 プライオリティが -\fIconsole_loglevel\fP のメッセージはコンソールにも表示される。 -(これらのレベルについては、\fI\fP を参照。) デフォルトではこの変数は、 -デバッグメッセージよりも重要なあらゆるメッセージを記録するよう設定されている (デバッグメッセージは含まない)。 この起動時引数を指定すると、 -カーネルはプライオリティが DEBUG のメッセージも出力するようになる。 \fIconsole_loglevel\fP も klogd -にオプションを渡せば実行時に設定できる。 \fBklogd\fP(8) を参照。 +Kernel messages are handed off to a daemon (e.g., \fBklogd\fP(8) or similar) +so that they may be logged to disk. Messages with a priority above +\fIconsole_loglevel\fP are also printed on the console. (For a discussion of +log levels, see \fBsyslog\fP(2).) By default, \fIconsole_loglevel\fP is set to +log messages at levels higher than \fBKERN_DEBUG\fP. This boot argument will +cause the kernel to also print messages logged at level \fBKERN_DEBUG\fP. The +console loglevel can also be set on a booted system via the +\fI/proc/sys/kernel/printk\fP file (described in \fBsyslog\fP(2)), the +\fBsyslog\fP(2) \fBSYSLOG_ACTION_CONSOLE_LEVEL\fP operation, or \fBdmesg\fP(8). .TP \&\fB'profile=N'\fP カーネルがどこで CPU サイクルを消費しているか調べたい場合には、 カーネルのプロファイリング機能を有効にすればこれを実現できる。 @@ -275,38 +224,31 @@ SMP モードで有効にする CPU の最大数を N に制限する。 が指定されれば N となり、N が指定されなかった場合は \fBCONFIG_PROFILE_SHIFT\fP の値が用いられる。 どちらも指定されなければデフォルト値の 2 が用いられる。 この変数が重要なのは、 カーネルプロファイリングの粒度を決定するところにある。 すなわち、各クロックの割込みごとに、システムがカーネルコードを実行していれば、 以下のようにカウンターの値がインクリメントされる。 - +.IP .in +4n -.nf +.EX profile[address >> prof_shift]++; -.fi +.EE .in -.sp +.IP 生のプロファイリング情報は、 \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' パラメーターでそのサイズを指定していた (この値はコンパイル時にカーネルイメージに指定することもできた)。 現在は RAM -ディスクはバッファーキャッシュを使用しており、 動的に拡張される。 新しい RAM ディスクの動作に関する多くの情報が、 カーネルソースファイル -\fIDocumentation/blockdev/ramdisk.txt\fP (古いカーネルでは -\fIDocumentation/ramdisk.txt\fP) にある。 - +(Only if the kernel was compiled with \fBCONFIG_BLK_DEV_RAM\fP.) In general it +is a bad idea to use a ramdisk under Linux\(emthe system will use available +memory more efficiently itself. But while booting, it is often useful to +load the floppy contents into a ramdisk. One might also have a system in +which first some modules (for filesystem or hardware) must be loaded before +the main disk can be accessed. +.IP +In Linux 1.3.48, ramdisk handling was changed drastically. Earlier, the +memory was allocated statically, and there was a 'ramdisk=N' parameter to +tell its size. (This could also be set in the kernel image at compile +time.) These days ram disks use the buffer cache, and grow dynamically. +For a lot of information on the current ramdisk setup, see the kernel source +file \fIDocumentation/blockdev/ramdisk.txt\fP (\fIDocumentation/ramdisk.txt\fP in +older kernels). +.IP 4 つのパラメーターがある。論理値をとるものが 2 つ、整数値をとるものが 2 つ。 .TP \&\fB'load_ramdisk=N'\fP @@ -317,7 +259,7 @@ N=1 ならフロッピー挿入を促すプロンプトを出す (デフォル (従って、このパラメーターを指定する必要はまず無いであろう。) .TP \&\fB'ramdisk_size=N'\fP もしくは (古い形式の) \fB'ramdisk=N'\fP -ラムディスクの最大サイズを N kB (キロバイト) にセットする。 省略時は 4096 (4 MB)。 +Set the maximal size of the ramdisk(s) to N kB. The default is 4096 (4\ MB). .TP \&\fB'ramdisk_start=N'\fP 開始ブロック番号 (フロッピー先頭からのオフセットで指定した RAM ディスクの開始点) を N にセットする。 これはカーネルイメージのあとに @@ -330,25 +272,28 @@ RAM ディスクイメージを置く場合に必要となる。 ディスクがルートデバイスとして「読み書き可能」でマウントされる。 次に \fI/linuxrc\fP が実行される。 その後「真の」ルートファイルシステムがマウントされ、 initrd ファイルシステムは \fI/initrd\fP に移される。 最後に通常のブートシーケンス (具体的には \fI/sbin/init\fP の呼び出し) が実行される。 - -initrd に関する詳細な解説はカーネルソースファイル \fIDocumentation/initrd.txt\fP を参照。 - +.IP +.\" commit 9d85025b0418163fae079c9ba8f8445212de8568 +For a detailed description of the initrd feature, see the kernel source file +\fIDocumentation/admin\-guide/initrd.rst\fP (or \fIDocumentation/initrd.txt\fP +before Linux 4.10). +.IP \&'noinitrd' オプションを用いると、 カーネルは (initrd 動作を行うようにコンパイルされている場合でも) 上記の動作を行なわず、代わりに initrd のデータを \fI/dev/initrd\fP に残す。 (このデバイスは一度しか使えない。 データは、そのデータを使った最後のプロセスが \fI/dev/initrd\fP をクローズするとすぐに解放される。) .SS "SCSI デバイス用の起動時引数" この節における用語: - +.PP \fIiobase\fP \-\- SCSI ホストアダプターが占有する I/O ポートの先頭アドレス。 16 進表記で指定し、通常 0x200 から 0x3ff の範囲に位置する。 - +.PP \fIirq\fP \-\- カードが利用するハードウェア割り込み。有効な値はカードに よって異なるが、通常は 5, 7, 9, 10, 11, 12, 15 である。 これ以外の値は通常、IDE ハードディスク、フロッピー、 シリアルポートといった一般的な周辺機器によって使用される。 - +.PP \fIscsi\-id\fP \-\- SCSI バス上のホストアダプターが自分自身を識別するために使用する ID 番号。 この値を変更できるホストアダプターもごく希に存在するが、 ほとんどはアダプター内部で固定されている。 よく使われるデフォルト値は 7 であるが、Seagate もしくは Future Domain 製の TMC\-950 ボードでは 6 が使われる。 - +.PP \fIparity\fP \-\- SCSI ホストアダプターが取り付けられたデバイスとの通信に際して パリティ値を必要とするかどうか。 1 を指定するとパリティチェックが有効になり、 0 でパリティチェックが無効になる。 しかし、すべてのデバイスがこの起動時引数によるパリティの選択を サポートするわけではない。 @@ -357,311 +302,52 @@ initrd に関する詳細な解説はカーネルソースファイル \fIDocume SCSI デバイスは複数の「サブデバイス」を自分自身の内部に持つことができる。 最もよくある例として、一時に 1 枚以上のディスクを扱うことができる (チェンジャー機能付の) SCSI CD\-ROM がある。 それぞれの CD はそのデバイスの 「論理ユニット番号 (LUN)」によって特定される。 しかしほとんどのデバイス (例えばハードディスクやテープドライブ) は、 LUN 番号 0 が割り当てられた、ただひとつのデバイスからなる。 - +.IP 設計が不十分な SCSI デバイスでは 0 以外の LUN 番号への自動検出を 扱えないことがある。 したがって、コンパイル時に \fBCONFIG_SCSI_MULTI_LUN\fP オプションが指定されていないと、 最近のカーネルではデフォルトでは LUN 番号 0 のみを検出する。 - +.IP 起動時に調べる LUN 番号を指定する場合、起動時引数として \&'max_scsi_luns=n' を指定する。n は 1 から 8 の間で指定する。 n=1 以上の値を使用しないようにすれば、 このようないかれた機械にひどい目にあわされずにすむだろう。 .TP \fBSCSI テープドライブの設定\fP SCSI テープドライバの起動時設定の一部は以下のようにして行なうことができる。 - +.IP .in +4n -.nf +.EX \fBst=\fP\fIbuf_size[,write_threshold[,max_bufs]]\fP -.fi +.EE .in -.sp -最初の 2 つの数字は kB 単位で指定する。 \fIbuf_size\fP のデフォルトは 32kB である。上限は 16384kB まで指定できる。 -\fIwrite_threshold\fP はデータ書き出しの閾値で、 バッファーのデータのサイズがこの値を越えるとデータはテープに書き出される。 -デフォルト値は 30kB である。 バッファー数の最大値 (\fImax_bufs\fP) は検出されたドライブの数によって変化するが、デフォルトは 2 -である。 使用例を以下に示す。 - +.IP +The first two numbers are specified in units of kB. The default \fIbuf_size\fP +is 32k\ B, and the maximum size that can be specified is a ridiculous 16384\ kB. The \fIwrite_threshold\fP is the value at which the buffer is committed to +tape, with a default value of 30\ kB. The maximum number of buffers varies +with the number of drives detected, and has a default of two. An example +usage would be: +.IP .in +4n -.nf +.EX st=32,30,2 -.fi +.EE .in .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 を探す。 見つからないと、カードは検出できない。 -この場合は以下のように起動時引数を指定することになる。 - -.in +4n -.nf -\fBaha152x=\fP\fIiobase[,irq[,scsi\-id[,reconnect[,parity]]]]\fP -.fi -.in -.IP -もしドライバのコンパイル時にデバッグオプションを指定していた場合は、 6 番目の値でデバッグレベルを指定できる。 - -すべてのパラメーターは、このセクションの最初で説明した通りである。 \fIreconnect\fP に 0 -以外の値を指定すると、デバイスを切断したり接続したりできる。 以下に例を示す。 - -.in +4n -.nf -aha152x=0x340,11,7,1 -.fi -.in -.IP -パラメーターは必ず上記の順番どおりに指定されなければならない。 例えば、パリティ (parity) を設定したい場合には、 iobase, irq, -scsi\-id, reconnect も同時に指定する必要がある。 -.TP -\fBAdaptec aha154x の設定\fP -aha1542 シリーズのカードは i82077 フロッピーディスクコントローラーをボードに搭載している。 一方 aha1540 -シリーズのカードは搭載していない。 これらは共にバスマスタカードであり、 他のデバイスとバスを共有する際に、 -どのくらい「フェアに」振る舞うかを指定するパラメーターがある。 起動時引数は以下のようにして指定する。 - -.in +4n -.nf -\fBaha1542=\fP\fIiobase[,buson,busoff[,dmaspeed]]\fP -.fi -.in -.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 -これらのボードは以下の形式で指定する。 - -.in +4n -.nf -\fBaic7xxx=\fP\fIextended,no_reset\fP -.fi -.in -.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 -構文は以下の通り。 - -.in +4n -.nf -\fBAM53C974=\fP\fIhost\-scsi\-id,target\-scsi\-id,max\-rate,max\-offset\fP -.fi -.in -.TP -\fBBusLogic SCSI ホストアダプターの設定 ('BusLogic=')\fP - -構文は以下の通り。 -.in +4n -.nf -\fBBusLogic=\fP\fIN1,N2,N3,N4,N5,S1,S2,...\fP -.fi -.in -.IP -.\" (lines 3149-3270 in the kernel version I am looking at). -Buslogic のコマンドラインパラメーターに関する詳細な議論はカーネルソースファイル \fIdrivers/scsi/BusLogic.c\fP -を参照すること。 以下はこれを非常におおざっぱに要約したものである。 - -パラメーター N1 から N5 までは整数である。 パラメーター S1 以降は文字列である。 N1 はホストアダプターが存在する I/O アドレス。 -N2 はタグキューイングをサポートするデバイスに対して使用するキューの深さ。 N3 はバス安定時間 (BST) を秒単位で指定する。 -これはホストアダプターのハードリセットにより SCSI バスをリセットしてから SCSI コマンドの発行を開始するまでの待ち時間である。 N4 -はローカルオプション (ひとつのホストアダプター用)。 N5 はグローバルオプション (すべてのホストアダプター用)。 - -文字列オプションは以下の動作を制御する: タグキューイング (TQ:Default, TQ:Enable, TQ:Disable, -TQ:)、 エラー復帰 (ER:Default, ER:HardReset, -ER:BusDeviceReset, ER:None, ER:)、 ホストアダプターの検出 -(NoProbe, NoProbeISA, NoSortPCI)。 -.TP -\fBEATA/DMA の設定\fP -検出対象にする I/O ポートのデフォルトのリストは以下のようにして変更できる。 - -.in +4n -.nf -\fBeata=\fP\fIiobase,iobase,...\fP\fB.\fP -.fi -.in -.TP -\fBFuture Domain TMC\-16x0 の設定\fP -構文は以下の通り。 - -.in +4n -.nf -\fBfdomain=\fP\fIiobase,irq[,adapter_id]\fP -.fi -.in -.TP -\fBGreat Valley Products (GVP) SCSI コントローラーの設定\fP -構文は以下の通り。 - -.in +4n -.nf -\fBgvp11=\fP\fIdma_transfer_bitmask\fP -.fi -.in -.TP -\fBFuture Domain 製 TMC\-8xx, TMC\-950 の設定\fP -構文は以下の通り。 - -.in +4n -.nf -\fBtmc8xx=\fP\fImem_base,irq\fP -.fi -.in -.IP -\fImem_base\fP にはカードが使用するメモリーマップ I/O の領域を指定する。 -通常は次の値のどれかである: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000。 -.TP -\fBIN2000 の設定\fP -構文は以下の通り。 - -.in +4n -.nf -\fBin2000=\fP\fIS\fP -.fi -.in -.IP -S はコンマ区切りの文字列で、各項目は keyword[:value] 形式で指定する。 指定できるキーワードは以下の通り。 ioport:addr, -noreset, nosync:x, period:ns, disconnect:x, debug:x, proc:x。 -これらのパラメーターの機能についてはカーネルソースファイル \fIdrivers/scsi/in2000.c\fP を参照。 -.TP -\fBNCR5380 および NCR53C400 の設定\fP -この起動時引数は以下の書式で指定する。 - -.in +4n -.nf -\fBncr5380=\fP\fIiobase,irq,dma\fP -.fi -.in -.IP -または - -.in +4n -.nf -\fBncr53c400=\fP\fIiobase,irq\fP -.fi -.in -.IP -カードが IRQ を使用しない場合は、 255 (0xff) を指定すれば無効にできる。 IRQ に 254 を指定すると自動検出する。 詳細は -Linux カーネルソース内の \fIDocumentation/scsi/g_NCR5380.txt\fP (古いカーネルの場合は -\fIdrivers/scsi/README.g_NCR5380\fP) に書かれている。 -.TP -\fBNCR53C8xx の設定\fP -構文は以下の通り。 - -.in +4n -.nf -\fBncr53c8xx=\fP\fIS\fP -.fi -.in -.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)。 これらのオプションの機能についてはカーネルソースファイル \fIdrivers/scsi/ncr53c8xx.c\fP -を参照すること。 -.TP -\fBNCR53c406a の設定\fP -構文は以下の通り。 - -.in +4n -.nf -\fBncr53c406a=\fP\fIiobase[,irq[,fastpio]]\fP -.fi -.in -.IP -割り込み無しで動作するモードには irq に 0 を指定する。 高速 PIO モードは fastpio に 1 を指定し、低速モードは 0 を指定する。 -.TP -\fBPro Audio Spectrum の設定\fP -PAS16 は NC5380 SCSI チップを使用しており、 最近のモデルはジャンパレスの設定をサポートしている。 起動時引数の書式は以下の通り。 - -.in +4n -.nf -\fBpas16=\fP\fIiobase,irq\fP -.fi -.in -.IP -唯一の違いとして、 IRQ に 255 を指定すれば割り込みを使用しないようドライバに指示できる (パフォーマンスは低下する)。 通常 iobase は -0x388 である。 -.TP -\fBSeagate 製 ST\-0x の設定\fP -カードが起動時に認識されない場合は以下のような指定が必要になるだろう。 - -.in +4n -.nf -\fBst0x=\fP\fImem_base,irq\fP -.fi -.in -.IP -\fImem_base\fP にはカードが使用するメモリーマップ I/O の領域を指定する。 -通常は次の値のどれかである: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000。 -.TP -\fBTrantor 製 T128 の設定\fP -このカードも NCR5380 チップを利用しており、 以下のオプションを受け付ける。 - -.in +4n -.nf -\fBt128=\fP\fImem_base,irq\fP -.fi -.in -.IP -有効な \fImem_base\fP の値は次の通りである: 0xcc000, 0xc8000, 0xdc000, 0xd8000。 -.TP -\fBUltraStor 製 14F/34F の設定\fP -検出対象にする I/O ポートのデフォルトのリストは以下のようにして変更できる。 - -.in +4n -.nf -\fBeata=\fP\fIiobase,iobase,...\fP\fB.\fP -.fi -.in -.TP -\fBWD7000 の設定\fP -構文は以下の通り。 - -.in +4n -.nf -\fBwd7000=\fP\fIirq,dma,iobase\fP -.fi -.in -.TP -\fBCommodore Amiga 製 A2091/590 SCSI コントローラーの設定\fP -構文は以下の通り。 - -.in +4n -.nf -\fBwd33c93=\fP\fIS\fP -.fi -.in -.IP -S はコンマ区切りの文字列で、各項目は keyword[:value] 形式で指定する。 認識されるオプションは以下の通り。 -nosync:bitmask, nodma:x, period:ns, disconnect:x, debug:x, clock:x, next。 -詳細はカーネルソースファイル \fIdrivers/scsi/wd33c93.c\fP を参照。 .SS ハードディスク .TP \fBIDE Disk/CD\-ROM ドライバのパラメーター\fP -IDE ドライバは、 ディスクのジオメトリ指定からバグのあるコントローラーチップのサポートまで、 数多くのパラメーターを受け付ける。 -ドライブを特定するには 'hdX=' を使う。 ここで X には 'a' から 'h' の文字を指定する。 - +The IDE driver accepts a number of parameters, which range from disk +geometry specifications, to support for broken controller chips. +Drive\-specific options are specified by using 'hdX=' with X in 'a'\(en'h'. +.IP あるドライブに特有なものではないオプションは、hd= を前に付けて指定する。 ドライブ特有でないオプションに対してドライブ指定 ('hdX=') を前置しても問題はない。 そのオプションは期待通りそのドライブに適用される。 - -\&'hd=' は、(a, ..., h) のシーケンスにおいて、 まだ指定されていない次のドライブを指すためにも使える。 これ以降では簡単のために -\&'hd=' を使って説明する。 さらに詳しい情報を得るには、Linux カーネルソース内の \fIDocumentation/ide.txt\fP -(古いカーネルの場合は \fIdrivers/block/README.ide\fP) を参照のこと。 +.IP +.\" Linux 2.0, 2.2, 2.4 +Also note that 'hd=' can be used to refer to the next unspecified drive in +the (a, ..., h) sequence. For the following discussions, the 'hd=' option +will be cited for brevity. See the file \fIDocumentation/ide/ide.txt\fP (or +\fIDocumentation/ide.txt\fP in older kernels, or \fIdrivers/block/README.ide\fP in +ancient kernels) in the Linux kernel source for more details. .TP \&\fB'hd=cyls,heads,sects[,wpcom[,irq]]' オプション\fP これらのオプションはディスクの物理的なジオメトリを指定するために使う。 最初の 3 つの値以降は省略できる。 シリンダ (cyls)、ヘッド @@ -674,17 +360,13 @@ IDE ドライバは、 ディスクのジオメトリ指定からバグのある プライマリインターフェース上のドライブを 同時に使用するとデータが破壊されることがある。 このオプションを使用すると、 ドライバは両方のインターフェースが 同時に使用されることが絶対にないようにする。 .TP -\&\fB'hd=dtc2278' オプション\fP -このオプションは、DTC\-2278D IDE インターフェースが使われている ことをドライバに伝える。 するとドライバは、DTC 特有の機能 (2 -番目のインターフェースと高速転送モード) を使用可能にするよう試みる。 -.TP \&\fB'hd=noprobe' オプション\fP このドライブの自動検出をしない。 例えば - +.IP .in +4n -.nf +.EX hdb=noprobe hdb=1166,7,17 -.fi +.EE .in .IP とすると自動検出が無効になる。 しかしドライブのジオメトリを指定しているので、 このドライブは正しいブロックデバイスとして登録され、使用可能になる。 @@ -701,485 +383,99 @@ CD\-ROM はたいてい自動的に認識されるが、 うまく行かない スタンダードディスクドライバは IDE ドライバと同様のジオメトリ指定を引数にとることができる。 ただし受け付ける値はちょうど 3 つ (C/H/S) に限られる。 それ以上の値やそれ以下の値を指定すると、ドライバは黙ってその指定を無視する。 また引数として受け入れられるのは 'hd=' の形式だけである。 つまり 'hda=' のような指定はここでは正しくない。 書式は次の通り。 - +.IP .in +4n -.nf +.EX hd=cyls,heads,sects -.fi +.EE .in .IP 2 台のディスクが接続されてい場合は、 2 番目のディスクに対しても上記のジオメトリが設定される。 -.TP -\fBXT ディスクドライバのオプション ('xd=')\fP -これらの古い 8 bit カード (125kB/s の転送速度しかない!) を使わなければならない不幸な人のためのオプションである。 -カードが認識されない場合は以下の書式で起動時引数を指定する必要があるだろう。 - -.in +4n -.nf -xd=type,irq,iobase,dma_chan -.fi -.in -.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 -コントローラーの「デフォルト」の値を使っている)。 - -.in +4n -.nf -xd=2,5,0x320,3 -.fi -.in -.TP -\fBSyquest 製 EZ* リムーバブルディスク\fP -構文は以下の通り。 - -.in +4n -.nf -\fBez=\fP\fIiobase[,irq[,rep[,nybble]]]\fP -.fi -.in -.SS "IBM MCA バス上のデバイス" -カーネルソースファイル \fIDocumentation/mca.txt\fP も参照。 -.TP -\fBPS/2 ESDI ハードディスク\fP -起動時に所望のジオメトリを指定できる。 - -.in +4n -.nf -\fBed=\fP\fIcyls,heads,sectors.\fP -.fi -.in -.IP -ThinkPad\-720 を使用する場合は以下のオプションを追加すること。 - -.in +4n -.nf -\fBtp720=1\fP. -.fi -.in -.TP -\fBIBM Microchannel SCSI サブシステムの設定\fP -構文は以下の通り。 - -.in +4n -.nf -\fBibmmcascsi=\fP\fIN\fP -.fi -.in -.IP -N はサブシステムの \fIpun\fP (SCSI ID) を表す。 -.TP -\fBAztech インターフェース\fP -このタイプのカードの構文は以下の通り。 - -.in +4n -.nf -aztcd=iobase[,magic_number] -.fi -.in -.IP -magic_number に 0x79 をセットすると、 ドライバはファームウェアのバージョンが分からない場合でも、 とにかく実行を試みる。 -その他の値はすべて無視される。 -.TP -\fBパラレルポート CD\-ROM ドライブ\fP -構文は以下の通り。 - -.in +4n -.nf -pcd.driveN=prt,pro,uni,mod,slv,dly -pcd.nice=nice -.fi -.in -.IP -ここで 'port' はベースアドレス、'pro' はプロトコル番号、'uni' はユニットセレクタ (チェインデバイス用)、'mod' はモード -(あるいは自動的に最適のものを選ばせるには \-1)、'slv' はスレーブにしたい場合に 1、'dly' -はポートアクセスを遅くしたい場合に小さな整数を与える。'nice' パラメーターは、 ドライバのアイドル CPU 時間の使い方を制御する。 -ただし速度はある程度低下する。 -.TP -\fBSony 製 CDU\-31A と CDU\-33A のインターフェース\fP -この CD\-ROM インターフェースは、 Pro Audio Spectrum サウンドカードの一部や -ソニーが供給するインターフェースカードで使われている。 構文は以下の通り。 - -.in +4n -.nf -cdu31a=iobase,[irq[,is_pas_card]] -.fi -.in -.IP -IRQ に 0 を指定すると、 ハードウェア割り込みがサポートされていないことをドライバに伝える (PAS カードにはそのようなものがある)。 -使用するカードが割り込みをサポートしているなら、 ドライバによる CPU の負荷を減らすためにも割り込みを使用すべきである。 - -\fIis_pas_card\fP には、Pro Audio Spectrum カードを使用しているときには 'PAS' を指定し、 -そうでないときにはなにも指定しない。 -.TP -\fBSony 製 CDU\-535 インターフェース\fP -この CD\-ROM インターフェースの構文は以下の通り。 - -.in +4n -.nf -sonycd535=iobase[,irq] -.fi -.in -.IP -IRQ の値だけを指定したい場合には、 iobase 値を 0 とすれば単なる穴埋めと解釈される。 -.TP -\fBGoldStar インターフェース\fP -この CD\-ROM インターフェースの構文は以下の通り。 - -.in +4n -.nf -gscd=iobase -.fi -.in -.TP -\fBISP16 CD\-ROM インターフェース\fP -構文は以下の通り。 - -.in +4n -.nf -isp16=[iobase[,irq[,dma[,type]]]] -.fi -.in -.IP -(整数値 3 つと文字列 1 つの形式) type に 'noisp16' を指定すると、 インターフェースの設定は行なわれない。 type -にはこの他にも 'Sanyo', 'Sony', 'Panasonic', 'Mitsumi' が指定できる。 -.TP -\fBMitsumi 標準インターフェース\fP -この CD\-ROM インターフェースの構文は以下の通り。 - -.in +4n -.nf -mcd=iobase,[irq[,wait_value]] -.fi -.in -.IP -\fIwait_value\fP はドライブに問題がある場合に、 ドライバ内部のタイムアウトの指定に用いる。 コンパイル時の #define -によって実装されるかされないかが決まる。 Mitsumi FX400 は IDE/ATAPI CD\-ROM プレイヤーであり、 この mcd -ドライバは使用しない。 -.TP -\fBMitsumi XA/マルチセッションインターフェース\fP -これは上記と同じハードウェアだが、拡張機能がある。 構文は以下の通り。 - -.in +4n -.nf -mcdx=iobase[,irq] -.fi -.in -.TP -\fBOptics ストレージインターフェース\fP -このタイプのカードの構文は以下の通り。 - -.in +4n -.nf -optcd=iobase -.fi -.in -.TP -\fBPhillips CM206 インターフェース\fP -このタイプのカードの構文は以下の通り。 - -.in +4n -.nf -cm206=[iobase][,irq] -.fi -.in -.IP -ドライバは IRQ 値として 3 から 11 まで、 I/O ポートアドレスの値として 0x300 から 0x370 を想定している。 -いずれか一方、あるいは両方を指定できる。順番も問わない。 \&'cm206=auto' とすることにより自動検出もできる。 -.TP -\fBSanyo インターフェース\fP -このタイプのカードの構文は以下の通り。 - -.in +4n -.nf -sjcd=iobase[,irq[,dma_channel]] -.fi -.in -.TP -\fBSoundBlaster Pro インターフェース\fP -このタイプのカードの構文は以下の通り。 - -.in +4n -.nf -sbpcd=iobase,type -.fi -.in -.IP -type 値には 'SoundBlaster', 'LaserMate', 'SPEA' のうちひとつを指定できる (大文字小文字が区別される)。 -iobase は CD\-ROM インターフェースの値である。 カードのサウンド部の値と間違えないこと。 .SS イーサネットデバイス ドライバが異なると用いるパラメーターも異なるが、 すべてのドライバは、少なくとも割り込み番号 (irq)、 I/O ポートのベースアドレス (iobase)、名前 (name) を持つ。 最も一般的な形式は以下の通り。 - +.PP .in +4n -.nf +.EX ether=irq,iobase[,param_1[,...param_8]],name -.fi +.EE .in - +.PP 最初の数字でない値は名前として使用される。 param_n の値はカード (ドライバ) ごとに異なる意味を持つ。 よくある目的は、共有メモリーアドレスの指定、インターフェースの選択、 DMA チャネルなどである。 - +.PP このパラメーターの最もよくある利用法は、 2 番目の Ethernet カードを強制的に検出させる場合である (デフォルトでは 1 枚しか検出しない)。 これは簡単で、次のようにすればよい。 - +.PP .in +4n -.nf +.EX ether=0,0,eth1 -.fi +.EE .in - +.PP この例で IRQ と I/O ベースアドレスに 0 を指定しているのは、 ドライバに自動検出をするよう伝えているのである。 - +.PP 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 ラップトップコンピュータを -特定のビデオモードで使用する時に必要となる。 (ビデオとフロッピーとの間で何らかの相互作用があるようだ。 -予期しない割り込みは性能だけに影響し、無視しても安全である。) +There are many floppy driver options, and they are all listed in +\fIDocumentation/blockdev/floppy.txt\fP (or \fIDocumentation/floppy.txt\fP in +older kernels, or \fIdrivers/block/README.fd\fP for ancient kernels) in the +Linux kernel source. See that file for the details. .SS サウンドドライバ -サウンドドライバも起動時引数を受け付け、 コンパイル時に指定された値を変更できる。 これはやや面倒なため、あまりお薦めできない。 詳細は、Linux -カーネルソース内の \fIDocumentation/sound/oss/README.OSS\fP (古いカーネルの場合は -\fIdrivers/sound/Readme.linux\fP) に記載されている。 引数の形式は以下の通り。 - -.in +4n -.nf +The sound driver can also accept boot arguments to override the compiled\-in +values. This is not recommended, as it is rather complex. It is described +in the Linux kernel source file \fIDocumentation/sound/oss/README.OSS\fP +(\fIdrivers/sound/Readme.linux\fP in older kernel versions). It accepts a boot +argument of the form: +.PP +.in +4n +.EX sound=device1[,device2[,device3...[,device10]]] -.fi +.EE .in -.IP +.PP 各 deviceN はそれぞれ 0xTaaaId という形式で指定する。 各バイトの意味は以下の通り。 - +.PP T \- デバイスのタイプ: 1=FM, 2=SB, 3=PAS, 4=GUS, 5=MPU401, 6=SB16, 7=SB16\-MPU401 - +.PP aaa \- I/O ポートアドレス (16進値) - -I \- 割り込み番号 (16 進値。例: 10=a, 11=b, ...) - +.PP +I \- interrupt line in hex (i.e., 10=a, 11=b, ...) +.PP d \- DMA チャネル - -上記の通り、かなり扱いにくい形式となっており、 コンパイル時に自分にあった値を指定する方が良いだろう。 なお起動時引数として 'sound=0' -を指定すると、 サウンドドライバを完全に無効にする。 -.SS "ISDN ドライバ" -.TP -\fBICN ISDN ドライバ\fP -構文は以下の通り。 - -.in +4n -.nf -icn=iobase,membase,icn_id1,icn_id2 -.fi -.in -.IP -icn_id1,icn_id2 はカードを識別するための 2 つの文字列である。 カーネルメッセージで用いられる。 -.TP -\fBPCBIT ISDN ドライバ\fP -構文は以下の通り。 - -.in +4n -.nf -pcbit=membase1,irq1[,membase2,irq2] -.fi -.in -.IP -membaseN は N 番目のカードの共有メモリーのベースアドレスであり、 irqN は N 番目のカードの割り込み設定である。 無指定時には IRQ -= 5, membase = 0xD0000 となる。 -.TP -\fBTeles ISDN ドライバ\fP -構文は以下の通り。 - -.in +4n -.nf -teles=iobase,irq,membase,protocol,teles_id -.fi -.in -.IP -iobase はカードの I/O ポートアドレス、 membase はカードの共有メモリーのベースアドレス、 そして irq -はカードが使用する割り込みチャネルである。 teles_id はアスキー文字列による識別文字列である (他と重ならないようにする)。 -.SS シリアルポートドライバ -.TP -\fBRISCom/8 マルチポートシリアルドライバ ('riscom8=')\fP -構文は以下の通り。 - -.in +4n -.nf -riscom=iobase1[,iobase2[,iobase3[,iobase4]]] -.fi -.in -.IP -詳細はカーネルソースファイル \fIDocumentation/riscom8.txt\fP を参照のこと。 -.TP -\fBDigiBoard ドライバ ('digi=')\fP -このオプションを使う場合は、6 個のパラメーターをきっちり指定しなければならない。 -構文は以下の通り。 - -.in +4n -.nf -digi=status,type,altpin,numports,iobase,membase -.fi -.in -.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 -進表記)。 したがって以下のふたつの起動時引数は同じ意味を持つ。 - -.in +4n -.nf -digi=E,PC/Xi,D,16,200,D0000 -digi=1,0,0,16,0x200,851968 -.fi -.in -.IP -詳細はカーネルソースファイル \fIDocumentation/digiboard.txt\fP を参照。 -.TP -\fBBaycom シリアル・パラレル ラジオモデム\fP -構文は以下の通り。 - -.in +4n -.nf -baycom=iobase,irq,modem -.fi -.in -.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 -構文は以下の通り。 - -.in +4n -.nf -soundmodem=iobase,irq,dma[,dma2[,serio[,pario]]],0,mode -.fi -.in -.IP -最後のパラメーターを除くすべてのパラメーターは整数である。 ダミーの 0 があるのは、設定プログラムのバグのせいである。 mode -パラメーターは文字列で、hw:modem という書式で指定する。 hw は sbc, wss, wssfdx のうちひとつ、 modem は -afsk1200, fsk9600 のどちらかを選択して記述する。 +.PP +As you can see, it gets pretty messy, and you are better off to compile in +your own personal values as recommended. Using a boot argument of +\&'sound=0' will disable the sound driver entirely. .SS ラインプリンタドライバ .TP \&\fB'lp='\fP .br 構文は以下の通り。 - +.IP .in +4n -.nf +.EX lp=0 lp=auto lp=reset lp=port[,port...] -.fi +.EE .in .IP プリンタドライバには、どのポートを使うか、 どのポートを使ってはいけないかを伝えることができる。 後者は、 利用可能なあらゆるパラレルポートをプリンタドライバが要求しないようにして、 他のドライバ (PLIP や PPA など) から それらを使えるようにしたい場合に便利である。 - -引数の書式は、複数のポート名である。 例えば lp=none,parport0 とすると、 最初のパラレルポートを lp1 として使い、 lp0 -は無効にする。プリンタードライバを完全に無効にするには lp=0 とすればよい。 -.TP -\fBWDT500/501 ドライバ\fP -構文は以下の通り。 - -.in +4n -.nf -wdt=io,irq -.fi -.in -.SS マウスドライバ -.TP -\&\fB'bmouse=irq'\fP -バスマウスドライバはパラメーターをひとつだけとり、 ハードウェア IRQ を指定できる。 -.TP -\&\fB'msmouse=irq'\fP -msmouse ドライバでもこの事情はまったく同じである。 -.TP -\fBATARI マウスの設定\fP -構文は以下の通り。 - -.in +4n -.nf -atamouse=threshold[,y\-threshold] -.fi -.in .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) -このオプションは、コンソールドライバに、 ハードウェアスクロールを用いないよう伝える (ここで言うハードウェアスクロールとは、 -ビデオメモリー上のデータを移動させることによって スクリーン表示領域をスクロールさせることを指す)。 特定の点字マシンではこの指定が必要となる。 +引数の書式は、複数のポート名である。 例えば lp=none,parport0 とすると、 最初のパラレルポートを lp1 として使い、 lp0 +は無効にする。プリンタードライバを完全に無効にするには lp=0 とすればよい。 .SH 関連項目 \fBklogd\fP(8), \fBmount\fP(8) - -このマニュアルページの大部分は Paul Gortmaker による Boot Parameter HOWTO (version 1.0.1) -を基にしている。 この (あるいは最新の) HOWTO をあたれば、 さらに多くの情報が入手できるだろう。 最新の情報源はカーネルソースファイル -\fIDocumentation/kernel\-parameters.txt\fP である。 +.PP +For up\-to\-date information, see the kernel source file +\fIDocumentation/admin\-guide/kernel\-parameters.txt\fP. .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index cb7cf63d..00000000 --- a/manual/LDP_man-pages/draft/man7/capabilities.7 +++ /dev/null @@ -1,757 +0,0 @@ -.\" Copyright (c) 2002 by 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 -.\" -.\" 6 Aug 2002 - Initial Creation -.\" Modified 2003-05-23, Michael Kerrisk, -.\" Modified 2004-05-27, Michael Kerrisk, -.\" 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 -.\" 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved. -.\" Translated 2005-03-09, Akihiro MOTOKI -.\" Updated 2005-11-04, Akihiro MOTOKI -.\" Updated 2006-04-16, Akihiro MOTOKI, LDP v2.29 -.\" Updated 2006-07-20, Akihiro MOTOKI, LDP v2.34 -.\" Updated 2007-01-05, Akihiro MOTOKI, LDP v2.43 -.\" Updated 2008-12-24, Akihiro MOTOKI, LDP v3.15 -.\" Updated 2009-02-27, Akihiro MOTOKI, LDP v3.19 -.\" Updated 2010-04-11, Akihiro MOTOKI, LDP v3.24 -.\" Updated 2012-05-31, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" Updated 2013-08-16, Akihiro MOTOKI -.\" -.TH CAPABILITIES 7 2015\-02\-01 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_READ\fP (Linux 3.16 以降) -.\" commit a29b694aa1739f9d76538e34ae25524f9c549d59 -.\" commit 3a101b8de0d39403b2c7e5c23fd0b005668acf48 -マルチキャスト netlink ソケット経由で監査ログの読み出しができる。 -.TP -\fBCAP_AUDIT_WRITE\fP (Linux 2.6.11 以降) -カーネル監査のログにレコードを書き込む。 -.TP -\fBCAP_BLOCK_SUSPEND\fP (Linux 3.5 以降) -システムのサスペンドをブロックできる機能を使用する (\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 -.PD 0 -.RS -.IP * 2 -ファイルの読み出し権限のチェックとディレクトリの読み出しと実行 の権限チェックをバイパスする。 -.IP * -\fBopen_by_handle_at\fP(2) を起動する。 -.RE -.PD - -.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 -inode フラグ \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 を渡すことができる。 ユーザー名前空間にグループ ID マッピングを書き込むことができる -(\fBuser_namespaces\fP(7) 参照)。 -.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 -を渡すことができる。 ユーザー名前空間にユーザー ID マッピングを書き込むことができる (\fBuser_namespaces\fP(7) 参照)。 -.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 * -\fBRLIMIT_NPROC\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 * -UNIX ドメインソケットでソケットの資格情報 (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 フラグを利用する (ただし、 Linux -3.8 以降では、ユーザー名前空間の作成にどのケーパビリティも必要としない)。 -.IP * -\fBperf_event_open\fP(2) を呼び出す。 -.IP * -特権が必要な \fIperf\fP イベントの情報にアクセスする。 -.IP * -\fBsetns\fP(2) を呼び出す (\fItarget\fP 名前空間での \fBCAP_SYS_ADMIN\fP が必要)。 -.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), \fBshed_setattr\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); -.\" Document this. -\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 -.PD 0 -.RS -.IP * 3 -\fBptrace\fP(2) を使って任意のプロセスをトレースする。 -.IP * -\fBget_robust_list\fP(2) を任意のプロセスに対して行う。 -.IP * -\fBprocess_vm_readv\fP(2) と \fBprocess_vm_writev\fP(2) -を使って任意のプロセスのメモリーとの間でデータの送受信を行う。 -.IP * -\fBkcmp\fP(2) を使ってプロセス内部を調査する。 -.RE -.PD -.TP -\fBCAP_SYS_RAWIO\fP -.PD 0 -.RS -.IP * 2 -I/O ポート操作を実行する (\fBiopl\fP(2)、 \fBioperm\fP(2))。 -.IP * -\fI/proc/kcore\fP にアクセスする。 -.IP * -\fBFIBMAP\fP \fBioctl\fP(2) 操作を使用する。 -.IP * -x86 モデルに固有のレジスター (MSR レジスター群、 \fBmsr\fP(4) 参照) にアクセスするためのデバイスをオープンする。 -.IP * -\fI/proc/sys/vm/mmap_min_addr\fP を更新する。 -.IP * -\fI/proc/sys/vm/mmap_min_addr\fP で指定された値よりも小さなアドレスにメモリーマッピングを作成する。 -.IP * -\fI/proc/bus/pci\fP にあるファイルをマップする。 -.IP * -\fI/dev/mem\fP や \fI/dev/kmem\fP をオープンする。 -.IP * -各種の SCSI デバイスコマンドを実行する。 -.IP * -\fBhpsa\fP(4) デバイスや \fBcciss\fP(4) デバイスの特定の操作を実行する。 -.IP * -他のデバイスに対して各種のデバイス固有命令を実行する。 -.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 * -\fBprctl\fP(2) \fBPR_SET_MM\fP 操作を使用する。 -.IP * -\fBCAP_SYS_RESOURCE\fP を持ったプロセスによって最後に設定された値よりも小さな値を \fI/proc/PID/oom_score_adj\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 以降) -.RS -.PD 0 -.IP * 3 -特権が必要な \fBsyslog\fP(2) 操作を実行できる。 -どの操作が特権が必要かについての情報は \fBsyslog\fP(2) を参照。 -.IP * -\fI/proc/sys/kernel/kptr_restrict\fP の値が 1 の場合、 \fI/proc\fP -や他のインターフェース経由で公開されているカーネルアドレスを参照する (\fBproc\fP(5) の \fIkptr_restrict\fP の議論を参照)。 -.PD -.RE -.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 -.\" -Linux 3.2 以降では、 ファイル \fI/proc/sys/kernel/cap_last_cap\fP で、 -実行中のカーネルでサポートされているケーパビリティの最大値を参照できる。 この情報を使って、 -ケーパビリティセットに設定される可能性がある最上位ビットを判定することができる。 -.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 より前のカーネルでは、ファイルケーパビリティは -設定オプション \fBCONFIG_SECURITY_FILE_CAPABILITIES\fP で切り替えられる追加の -機能であった。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.6.30 以降), \fBCAP_MAC_OVERRIDE\fP, \fBCAP_MKNOD\fP (Linux 2.6.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 -.SS ユーザー名前空間との相互作用 -ケーパリビティとユーザー名前空間の相互の影響に関する議論は \fBuser_namespaces\fP(7) を参照。 -.SH 準拠 -.PP -ケーパビリティに関する標準はないが、 Linux のケーパビリティは廃案になった POSIX.1e 草案に基づいて実装されている。 -.UR http://wt.xpilot.org\:/publications\:/posix.1e/ -.UE -を参照。 -.SH 注意 -カーネル 2.5.27 以降、ケーパビリティは選択式のカーネルコンポーネント となっており、カーネル設定オプション -\fBCONFIG_SECURITY_CAPABILITIES\fP により有効/無効を切り替えることができる。 - -.\" 7b9a7ec565505699f503b4fcf61500dceb36e744 -\fI/proc/PID/task/TID/status\fP ファイルを使うと、スレッドのケーパビリティセットを見ることができる。 -\fI/proc/PID/status\fP ファイルには、プロセスのメインスレッドのケーパビリティセットが表示される。 Linux 3.8 より前では、 -これらのケーパビリティセットの表示で、 存在しないケーパビリティはすべて有効 (1) として表示される。 Linux 3.8 以降では、 -存在しないケーパビリティはすべて無効 (0) として表示される。 (\fBCAP_LAST_CAP\fP -より大きい値を持つケーパビリティが存在しないケーパビリティである)。 - -\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 関連項目 -\fBcapsh\fP(1), \fBsetpriv\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), \fBuser_namespaces\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/charsets.7 b/manual/LDP_man-pages/draft/man7/charsets.7 index e6929a6a..e64d825c 100644 --- a/manual/LDP_man-pages/draft/man7/charsets.7 +++ b/manual/LDP_man-pages/draft/man7/charsets.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright (c) 1996 Eric S. Raymond .\" and Copyright (c) Andries Brouwer .\" @@ -27,42 +26,42 @@ .\" Updated Fri Dec 3 JST 1999 by Kentaro Shirakata .\" Updated Fri Jan 4 JST 2002 by Kentaro Shirakata .\" -.TH CHARSETS 7 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH CHARSETS 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 charsets \- 文字集合の標準と国際化 .SH 説明 このマニュアルページでは、 様々な文字集合標準の概要と、 Unicode が広く使われるようになる前にこれらの文字集合が Linux でどのように使われていたかを説明する。 この情報の中には、以前からあるシステムやドキュメントを扱う人々にとっては今も役立つことだろう。 -.LP +.PP ここで扱う標準としては ASCII, GB 2312, ISO 8859, JIS, KOI8\-R, KS, Unicode がある。 -.LP +.PP 主な対象はロケール文字集合で実際に使用されていた文字集合についてであり、他のシステムで作成されたデータで使われていた無数の他の文字集合についてではない。 .SS ASCII ASCII (American Standard Code For Information Interchange) は 7 ビット文字集合の元となったものであり、 もともとは米語 (American English) のためにデザインされた。 US\-ASCII とも呼ばれる。 現在は、ISO 646:1991 IRV (International Reference Version) 標準で説明されている。 -.LP +.PP ドイツ語、フランス語、スペイン語などに 7 ビットで対応するため、 ASCII のドル記号を他の通貨記号に置き換え、 句読点を非英語文字のものに置き換えた様々な変種が登場した。 これらはすべて非推奨である。 glibc は ASCII の完全なスーパーセットでない文字セットのロケールに対応していない。 -.LP +.PP UTF\-8 を使う場合、Unicode は ASCII と互換性があるので、 通常の ASCII テキストは新しい UTF\-8 を使ったシステムでもそのまま正しく表示することができる。 .SS "ISO 8859" -ISO 8859 は 15 組の一連の 8 ビット文字集合である。どの文字集合も -下位 (7 ビット) に ASCII を含み、 128 から 159 には制御文字が配置され、 -160 から 255 には 96 個の固定幅図形文字が配置されている。 -.LP +ISO 8859 is a series of 15 8\-bit character sets, all of which have ASCII in +their low (7\-bit) half, invisible control characters in positions 128 to +159, and 96 fixed\-width graphics in positions 160\(en255. +.PP これらのうち、最も重要なのは ISO 8859\-1 ("Latin Alphabet No .1" / Latin\-1) である。 ISO 8859\-1 は広く採用され、様々なシステムでサポートされていたが、 徐々に Unicode で置き換えれている。 ISO 8859\-1 文字集合は Unicode の最初の 256 文字でもある。 -.LP +.PP コンソールにおける、その他の 8859 文字集合のサポートは (\fBsetfont\fP(8)) のようなユーザーモードユーティリティを利用する事で可能になる。 このようなユーティリティを利用することにより、コンソールドライバにおけ るキーボードと EGA グラフィックテーブルの割り当てを変更し、 "ユーザー割り当て(user mapping)"フォントテーブルを使用することができる。 -.LP +.PP 以下は、それぞれの集合の簡単な説明である。 .TP 8859\-1 (Latin\-1) @@ -132,11 +131,12 @@ Latin\-9 は、広く使用されている Latin\-1 に似ているが、 いく 8859\-16 (Latin\-10) この文字セットは多くの東南ヨーロッパの言語に対応しており、もっとも重要なのはルーマニア語にはより完全に対応している点である。 .SS "KOI8\-R / KOI8\-U" -KOI8\-R は、 Unicode の前に、ロシアにおいてよく用いられた ISO でない文字集合である。 下位半分は ASCII である。上位半分は -ISO 8859\-5 よりいくらかよく設計されたキリル文字集合である。 KOI8\-U は KOI8\-R を元にしており、 ウクライナ語 -(Ukrainian) への対応がより良いものになっている。 これらの文字集合はどちらも、 ISO\-8859 系列とは違い、 ISO\-2022 -との互換性はない。 -.LP +KOI8\-R is a non\-ISO character set popular in Russia before Unicode. The +lower half is ASCII; the upper is a Cyrillic character set somewhat better +designed than ISO 8859\-5. KOI8\-U, based on KOI8\-R, has better support for +Ukrainian. Neither of these sets are ISO\-2022 compatible, unlike the ISO +8859 series. +.PP Linux での KOI8\-R のコンソールサポートは、 ユーザーモードのユーティリティで実現されている。 これはキーボードの割り当てと EGA グラフィックテーブルを変更し、 @@ -148,17 +148,22 @@ GB 2312 を含んでいる。 EUC\-CN はしばしば GB, GB 2312, CN\-GN など .SS Big5 .\" Thanks to Tomohiro KUBOTA for the following sections about .\" national standards. -Big5 は台湾で繁体文字を記述するのに一般的に使われる文字セットであった。 (Big5 は文字セットとエンコーディングの両方である。) これは US -ASCII の上位集合である。 非 ASCII 文字は 2 バイトで表現する。 0xa1\-0xfe のバイトは 2 バイト文字の 1 -文字目として用いる。 Big5 とその拡張は台湾と香港で広く用いられていた。 これは ISO 2022 準拠ではない。 +Big5 was a popular character set in Taiwan to express traditional Chinese. +(Big5 is both a character set and an encoding.) It is a superset of ASCII. +Non\-ASCII characters are expressed in two bytes. Bytes 0xa1\(en0xfe are +used as leading bytes for two\-byte characters. Big5 and its extension were +widely used in Taiwan and Hong Kong. It is not ISO 2022 compliant. .SS "JIS X 0208" -JIS X 0208 は日本語の国定標準文字セットである。 他にもいくつか日本語の国定標準文字セットはある (JIS X 0201, JIS X -0212, JIS X 0213 など) が、これが最も重要である。 文字は 94x94 の 2 バイトマトリックスに配置される。 各バイトは -0x21\-0x7e の値を持つ。 JIS X 0208 は文字セットであり、エンコーディングではないことに注意すること。 これは、 JIS X 0208 -自身はテキストデータの表現には使われない、ということである。 JIS X 0208 は、 EUC\-JP, Shift_JIS, ISO\-2022\-JP -といったエンコーディングを構成する部品として用いられる。 EUC\-JP が Linux において最も重要なエンコーディングであり、 ASCII と -JIS X 0208 を含んでいる。 EUC\-JP では、JIS X 0208 文字は 2 バイトで表現され、 各バイトは JIS X 0208 -コードに 0x80 を加えたものである。 +JIS X 0208 is a Japanese national standard character set. Though there are +some more Japanese national standard character sets (like JIS X 0201, JIS X +0212, and JIS X 0213), this is the most important one. Characters are +mapped into a 94x94 two\-byte matrix, whose each byte is in the range +0x21\(en0x7e. Note that JIS X 0208 is a character set, not an encoding. +This means that JIS X 0208 itself is not used for expressing text data. JIS +X 0208 is used as a component to construct encodings such as EUC\-JP, +Shift_JIS, and ISO\-2022\-JP. EUC\-JP is the most important encoding for Linux +and includes ASCII and JIS X 0208. In EUC\-JP, JIS X 0208 characters are +expressed in two bytes, each of which is the JIS X 0208 code plus 0x80. .SS "KS X 1001" KS X 1001 は韓国の国定標準文字セットである。 JIS X 0208 と同様に、文字は 94x94 の 2 バイトマトリックスに配置される。 KS X 1001 は JIS X 0208 と同様に、 EUC\-KR, Johab, ISO\-2022\-KR @@ -168,25 +173,24 @@ KS X 1001 は JIS X 0208 と同様に、 EUC\-KR, Johab, ISO\-2022\-KR ISO 2022 と ISO 4873 標準では、 VT100 の動作に基づいたフォントコントロールモデルが規定されている。 このモデルは Linux カーネルや \fBxterm\fP(1) において (部分的に) サポートされている。 日本語向けなど、ISO\-2022 をベースにした文字符号化がいくつか定義されてきた。 -.LP -G0, G1, G2, G3 と呼ばれる 4 つの図形文字集合がある。 -これらのうちのひとつは、最上位ビットが 0 であるコードのための現在の文字集合 -(初期値は G0)、またひとつは最上位ビットが 1 であるコードのための現在の -文字集合(初期値は G1)である。それぞれの図形文字集合は 94 か 96 の文 -字を持ち、基本的に 7\-bitの文字集合であり、040\-0177 (041\-0176) か -0240\-0377 (0241\-0376)のコードを使う。 -G0 は常に 94 文字で 041\-0176 のコードを使用する。 -.LP -文字集合の切り替えはシフトファンクション \fB^N\fP (SO または LS1), -\fB^O\fP (SI または LS0), ESC n (LS2), ESC o (LS3), ESC N (SS2), ESC O (SS3), -ESC ~ (LS1R), ESC } (LS2R), ESC | (LS3R) を使って行われる。 -ファンクション LS\fIn\fP は最上位ビットが 0 であるコードのための文字集合を -G\fIn\fP に設定する。 -ファンクション LS\fIn\fPR は最上位ビットが 1 であるコードのための文字セットを -G\fIn\fP に設定する。 -ファンクション SS\fIn\fP は(最上位ビットの値にかかわらず)次の文字のみ -文字集合を G\fIn\fP (\fIn\fP=2 または 3)に設定する。 -.LP +.PP +There are 4 graphic character sets, called G0, G1, G2, and G3, and one of +them is the current character set for codes with high bit zero (initially +G0), and one of them is the current character set for codes with high bit +one (initially G1). Each graphic character set has 94 or 96 characters, and +is essentially a 7\-bit character set. It uses codes either 040\(en0177 +(041\(en0176) or 0240\(en0377 (0241\(en0376). G0 always has size 94 and +uses codes 041\(en0176. +.PP +Switching between character sets is done using the shift functions \fB\(haN\fP +(SO or LS1), \fB\(haO\fP (SI or LS0), ESC n (LS2), ESC o (LS3), ESC N (SS2), +ESC O (SS3), ESC \(ti (LS1R), ESC } (LS2R), ESC | (LS3R). The function +LS\fIn\fP makes character set G\fIn\fP the current one for codes with high bit +zero. The function LS\fIn\fPR makes character set G\fIn\fP the current one for +codes with high bit one. The function SS\fIn\fP makes character set G\fIn\fP +(\fIn\fP=2 or 3) the current one for the next character only (regardless of +the value of its high order bit). +.PP 94 文字集合では、エスケープシーケンス ESC ( xx (G0 用), ESC ) xx (G1 用), ESC * xx (G2 用), ESC + xx (G3 用) によって、G\fIn\fP 文字集合 を用いるように指示される。 @@ -197,36 +201,35 @@ xx は "ISO 2375 International Register of Coded Character Sets" で 選択する。ESC ( B は(通貨記号のかわりにダラー($)を持つ) ASCIIを選択する。 ESC ( M は アフリカ言語(African languages) を選択し、ESC ( ! A は キューバ語(Cuban)文字集合を選択する。などなど… -.LP +.PP 96\-文字集合では、エスケープシーケンス ESC \- xx (G1 用), ESC . xx (G2 用), ECS / xx (G3 用)を用いることで、 G\fIn\fP 文字集合を使用するように指示される。 例えば、ESC \- G はヘブライアルファベット(Hebrew alphabet) を G1 として選択する。 -.LP +.PP マルチバイト文字集合ではエスケープシーケンス E $ xx または ESC $ ( xx (G0 用), ESC $ ) xx (G1 用), ESC $ * xx (G2 用), ESC$ + xx (G3 用) を 用いることで、 G\fIn\fP 文字集合を使用するように指示される。 例えば、ESC $ ( C は 韓国語(Korean)文字集合を G0 として選択する。 ESC $ B によって選択される日本語文字セットは、より最近のバージョンでは ESC & @ ESC $ B によって選択されるようになった。 -.LP -ISO 4873 はより制限された文字集合の利用を規定する、その規定で -は、G0 は(常に ASCIIに)固定される。従って、G1, G2, G3 は最上位ビットが -セットされたコードとしてのみ呼び出すことができる。 -特に、\fB^N\fP と \fB^O\fP は用いられず、ESC ( xx は xx=B としてのみ -用いることができ、 -ESC ) xx, ESC * xx, ESC + xx はそれぞれ ESC \- xx, ESC . xx, ESC / xx と -等価になる。 +.PP +ISO 4873 stipulates a narrower use of character sets, where G0 is fixed +(always ASCII), so that G1, G2 and G3 can be invoked only for codes with the +high order bit set. In particular, \fB\(haN\fP and \fB\(haO\fP are not used +anymore, ESC ( xx can be used only with xx=B, and ESC ) xx, ESC * xx, ESC + +xx are equivalent to ESC \- xx, ESC . xx, ESC / xx, respectively. .SS TIS\-620 -TIS 620 はタイの国定標準文字セットで、 ASCII の上位集合である。 ISO 8859 系列と同様に、タイ文字は 0xa1\-0xfe -に配置される。 +TIS\-620 is a Thai national standard character set and a superset of ASCII. +In the same fashion as the ISO 8859 series, Thai characters are mapped into +0xa1\(en0xfe. .SS Unicode Unicode (ISO10646) は、人間が用いる全ての言語の全ての文字を、 明確にあらわすことを目的とした規格である。 Unicode の構造は各文字のエンコードに 20.1 ビットを与えている。 ほとんどのコンピューターは 20.1 ビットの整数を扱えないので、 Unicode は普通内部データとして 32 ビット整数にエンコードされ、 16 ビット整数の列 (UTF\-16)(ある種の珍しい文字をエンコードする場合にだけ 2 つの 16 ビット整数が必要となる)か、 8 ビットバイトの列 (UTF\-8)として扱われる。 -.LP +.PP Linux は 8\-bit Unicode Transformation Form(UTF\-8) を用いて Unicode を あらわす。 UTF\-8 は Unicode の可変長表現である。UTF\-8 は 7 ビットを 符号化するのに 1 バイトを、 11 ビットでは 2 バイトを、 @@ -234,51 +237,44 @@ Linux は 8\-bit Unicode Transformation Form(UTF\-8) を用いて Unicode を 21 ビットでは 4 バイトを、 26 ビットでは 5 バイトを、 31 ビットでは 6 バイトを用いる。 -.LP +.PP 0,1,x をゼロ、1、任意のビットとすると、あるバイト 0xxxxxxx は Unicode では 00000000 0xxxxxxx とあらわされる。これは、ASCII の 0xxxxxxx と同じ シンボルのコードである。このように、ASCII は変更なしに UTF\-8 に変換でき、 ASCII のみを使う場合は、コードにおいてもファイルサイズにおいても、 変更に関して何も気にしなくてよい。 -.LP +.PP 110xxxxx というバイトは 2 バイトコードの始まりである、そして、110xxxxx 10yyyyyy は 00000xxx xxyyyyyy というように組み立てられる。また、 1110xxxx は 3 バイトコードの始まりであり、1110xxxx 10yyyyyy 10zzzzzz は xxxxyyyy yyzzzzzz というように組み立てられる(UTF\-8 が 31 ビット ISO 10646 コードを利用するときは、この工程は 6 バイトコードまで発展させられる)。 -.LP -ISO\-8859 文字集合を使ったほとんどのテキストでは、 -このことは、ASCII の範囲外を使った文字は -二つのバイトに符号化されるということを意味する。 -(UTF\-8 を使うと、ISO\-8859 を使用している) 元々のテキストファイルの -サイズから 1 〜 2 パーセント大きくなってしまうことになる。 -ロシア語やギリシャ語のテキストでは、 -これによって元のテキストは 2 倍の大きさになることになる。 -なぜなら、 これらの言語の文字のほとんどが ASCII の範囲外だからである。 -日本語のユーザーの場合には、現在広く利用されている 16 ビットコードに -3 バイト必要ということだ。 -いくつかの文字集合 (特に ISO 8859\-1) から Unicode への変換は -アルゴリズムで行うことができるが、 -汎用的な変換には変換テーブルが必要であり、 -16 ビットコードの場合はこのテーブルはかなり大きなものとなる。 -.LP +.PP +For most texts in ISO 8859 character sets, this means that the characters +outside of ASCII are now coded with two bytes. This tends to expand +ordinary text files by only one or two percent. For Russian or Greek texts, +this expands ordinary text files by 100%, since text in those languages is +mostly outside of ASCII. For Japanese users this means that the 16\-bit +codes now in common use will take three bytes. While there are algorithmic +conversions from some character sets (especially ISO 8859\-1) to Unicode, +general conversion requires carrying around conversion tables, which can be +quite large for 16\-bit codes. +.PP UTF\-8 は自己同期的である。10xxxxxx は終端であり、ほかのバイトはコードの 先頭である。UTF\-8 の文字列における ASCII のバイトは、常にその文字自身を 表現することに注目してほしい。特に、幾つかの大きなコードのパートを形成 するために、NUL (\(aq\e0\(aq) や \(aq/\(aq を埋め込む必要はない。 -.LP +.PP ASCII と NUL と \(aq/\(aq は変更されないため、カーネルは UTF\-8 を 使用していることを特に意識しなくても良い。 カーネルはバイトが何をあらわしているかに注意する必要がない。 -.LP +.PP Unicode データ列のレンダリングは典型的には Unicode のサブセットからグリフへのマップである"サブフォント (subfont)" テーブルを利用して行われる。 カーネル内部では、Unicode を使ってビデオ RAM 内部にロードされたサブフォントを記述している。 これは、 UTF\-8 モードの Linux コンソールでは 512 個の異なったシンボルを持った文字集合を利用できることを意味する。 これは、 日本語、中国語、韓国語では十分ではないが、 その他のほとんどの目的では十分である。 .SH 関連項目 -\fBiconv\fP(1), \fBconsole\fP(4), \fBascii\fP(7), \fBiso_8859\-1\fP(7), \fBunicode\fP(7), -\fButf\-8\fP(7) +\fBiconv\fP(1), \fBascii\fP(7), \fBiso_8859\-1\fP(7), \fBunicode\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/complex.7 b/manual/LDP_man-pages/draft/man7/complex.7 index 56fe4049..d34d5027 100644 --- a/manual/LDP_man-pages/draft/man7/complex.7 +++ b/manual/LDP_man-pages/draft/man7/complex.7 @@ -15,7 +15,7 @@ .\" Translated 2003-08-02, Akihiro MOTOKI .\" Updated 2005-02-20, Akihiro MOTOKI .\" -.TH COMPLEX 7 2011\-09\-16 "" "Linux Programmer's Manual" +.TH COMPLEX 7 2020\-06\-09 "" "Linux Programmer's Manual" .SH 名前 complex \- 複素数の数学の基礎 .SH 書式 @@ -23,7 +23,7 @@ complex \- 複素数の数学の基礎 .SH 説明 複素数は z = a+b*i の形式の数である。 a と b は実数であり、 i は i = sqrt(\-1) つまり i*i = \-1 の関係を満たす。 -.br +.PP 複素数を表現する別の方法もある。実数の組 (a,b) は X座標、Y座標で 指定された平面上の点と見ることができる。この同じ点は、実数の組 (r,phi) で表すこともできる。r は原点 0 からの距離であり、phi は X軸と 0 と z を結ぶ線分がなす角である。このとき、 z = r*exp(i*phi) = r*(cos(phi)+i*sin(phi)) の関係が成り立つ。 @@ -37,11 +37,11 @@ r*exp(i*phi) = r*(cos(phi)+i*sin(phi)) の関係が成り立つ。 \fB除法: z/w = ((a*c + b*d)/(c*c + d*d)) + ((b*c \- a*d)/(c*c + d*d))*i\fP .PP ほとんど全ての数学関数に関して複素数版があるが、 複素数専用の関数も幾つかある。 -.SH 例 +.SH EXAMPLES 使用する C コンパイラが C99 標準をサポートしていれば複素数を使うことができる。 \fI\-lm\fP をつけてリンクすること。虚数単位は I で表現される。 -.sp -.nf +.PP +.EX /* exp(i * pi) == \-1 となることを確認する */ #include /* for atan */ #include @@ -54,7 +54,7 @@ main(void) double complex z = cexp(I * pi); printf("%f + %f * i\en", creal(z), cimag(z)); } -.fi +.EE .SH 関連項目 \fBcabs\fP(3), \fBcacos\fP(3), \fBcacosh\fP(3), \fBcarg\fP(3), \fBcasin\fP(3), \fBcasinh\fP(3), \fBcatan\fP(3), \fBcatanh\fP(3), \fBccos\fP(3), \fBccosh\fP(3), @@ -62,6 +62,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/cp1251.7 b/manual/LDP_man-pages/draft/man7/cp1251.7 index 1cf8d992..806b6cdc 100644 --- a/manual/LDP_man-pages/draft/man7/cp1251.7 +++ b/manual/LDP_man-pages/draft/man7/cp1251.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 2009 Lefteris Dimitroulakis (edimitro@tee.gr) .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -32,7 +31,7 @@ .\" all rights reserved. .\" Translated 2012-04-27, Akihiro MOTOKI .\" -.TH CP1251 7 2014\-12\-31 Linux "Linux Programmer's Manual" +.TH CP1251 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 cp1251 \- CP\ 1251 文字集合の 8 進数、10 進数、16 進数による符号化 .SH 説明 @@ -40,8 +39,8 @@ cp1251 \- CP\ 1251 文字集合の 8 進数、10 進数、16 進数による符 いくつかの 8 ビット拡張を含んでいる。 CP\ 1251 はキリル語のスクリプトで使用される文字の符号化を規定している。 .SS "CP\ 1251 文字" -以下の表は CP\ 1251 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in CP\ 1251 that are printable +and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -182,9 +181,8 @@ T} .SH 備考 CP\ 1251 は Windows キリル文字としても知られている。 .SH 関連項目 -\fBascii\fP(7), \fBcharsets\fP(7), \fBiso_8859\-5\fP(7), \fBkoi8\-r\fP(7), \fBkoi8\-u\fP(7), -\fButf\-8\fP(7) +\fBascii\fP(7), \fBcharsets\fP(7), \fBcp1252\fP(7), \fBiso_8859\-5\fP(7), \fBkoi8\-r\fP(7), +\fBkoi8\-u\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/cp1252.7 b/manual/LDP_man-pages/draft/man7/cp1252.7 index 57a4d4de..91fd1ab9 100644 --- a/manual/LDP_man-pages/draft/man7/cp1252.7 +++ b/manual/LDP_man-pages/draft/man7/cp1252.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 2014 (C) Marko Myllynen .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -27,7 +26,7 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH CP1252 7 2014\-10\-16 Linux "Linux Programmer's Manual" +.TH CP1252 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 cp1252 \- CP\ 1252 文字集合の 8 進数、10 進数、16 進数による符号化 .SH 説明 @@ -35,8 +34,8 @@ cp1252 \- CP\ 1252 文字集合の 8 進数、10 進数、16 進数による符 いくつかの 8 ビット拡張を含んでいる。 CP\ 1252 は多くの西ヨーロッパの言語で使用される文字の符号化を規定している。 .SS "CP\ 1252 文字" -以下の表は CP\ 1252 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in CP\ 1252 that are printable +and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -168,9 +167,8 @@ _ .SH 備考 CP\ 1252 は Windows\-1252 としても呼ばれる。 .SH 関連項目 -\fBascii\fP(7), \fBcharsets\fP(7), \fBiso_8859\-1\fP(7), \fBiso_8859\-15\fP(7), -\fButf\-8\fP(7) +\fBascii\fP(7), \fBcharsets\fP(7), \fBcp1251\fP(7), \fBiso_8859\-1\fP(7), +\fBiso_8859\-15\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/credentials.7 b/manual/LDP_man-pages/draft/man7/credentials.7 deleted file mode 100644 index c99ec6cb..00000000 --- a/manual/LDP_man-pages/draft/man7/credentials.7 +++ /dev/null @@ -1,178 +0,0 @@ -.\" Copyright (c) 2007 by 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 -.\" -.\" 2007-06-13 Creation -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2007 Akihiro MOTOKI all rights reserved. -.\" Translated 2007-10-25, Akihiro MOTOKI , LDP v2.66 -.\" Updated 2008-08-04, Akihiro MOTOKI, LDP v3.05 -.\" -.TH CREDENTIALS 7 2014\-12\-31 Linux "Linux Programmer's Manual" -.SH 名前 -credentials \- 認証に用いられるプロセスの識別子 -.SH 説明 -.SS "プロセスID (PID)" -各プロセスは、負でない整数の一意な識別子を持つ。 この識別子は \fBfork\fP(2) を使ってプロセスが生成される際に割り当てられる。 プロセスは -\fBgetpid\fP(2) を使って自分の PID を取得できる。 PID は \fIpid_t\fP 型で表現される (\fIpid_t\fP は -\fI\fP で定義されている)。 - -.\" .BR sched_rr_get_interval (2), -.\" .BR sched_getaffinity (2), -.\" .BR sched_setaffinity (2), -.\" .BR sched_getparam (2), -.\" .BR sched_setparam (2), -.\" .BR sched_setscheduler (2), -.\" .BR sched_getscheduler (2), -.\" .BR getsid (2), -.\" .BR waitid (2), -.\" .BR wait4 (2), -PID は各種のシステムコールでそのシステムコールが作用するプロセスを 特定するために使用される。以下に例を挙げる: \fBkill\fP(2), -\fBptrace\fP(2), \fBsetpriority\fP(2), \fBsetpgid\fP(2), \fBsetsid\fP(2), -\fBsigqueue\fP(3), \fBwaitpid\fP(2). - -プロセスの PID は \fBexecve\fP(2) の前後で不変である。 -.SS "親プロセス ID (PPID)" -プロセスの親プロセスの ID は、 \fBfork\fP(2) を使ってそのプロセスを生成したプロセスを示す。 プロセスは \fBgetppid\fP(2) -を使って自分の PPID を取得できる。 PPID は \fIpid_t\fP 型で表現される。 - -プロセスの PPID は \fBexecve\fP(2) の前後で不変である。 -.SS "プロセスグループ ID とセッション ID" -各プロセスはセッション ID とプロセスグループ ID を持つ。 これらの ID はどちらも \fIpid_t\fP 型で表現される。 プロセスは、それぞれ -\fBgetsid\fP(2), \fBgetpgrp\fP(2) を使って自分のセッション ID、プロセスグループ ID を取得できる。 - -\fBfork\fP(2) で生成された子プロセスは親プロセスのセッション ID とプロセスグループ ID を継承する。プロセスのセッション ID -とプロセスグループ ID は \fBexecve\fP(2) の前後で不変である。 - -セッションとプロセスグループの概念は、シェルのジョブ制御を行うために 考案されたものである。 プロセスグループ (時には「ジョブ」と呼ばれることもある) -は、 同じプロセスグループ ID を共有するプロセスの集まりである。 シェルは、一つのコマンドもしくはパイプラインの実行に使われるプロセス群に -対して一つのプロセスグループを生成する (例えば、コマンド "ls\ |\ wc" を実行するために生成される二つのプロセスは -同じプロセスグループに置かれる)。 所属するプロセスグループは \fBsetpgid\fP(2) を使って設定できる。 自身のプロセス ID -がプロセスグループ ID と同じプロセスは、 そのグループの「プロセスグループリーダー」である。 - -セッションは、同じセッション ID を共有するプロセスの集まりである。 ある一つのプロセスグループの全メンバーは同じセッション ID を持つ -(つまり、一つのプロセスグループのメンバーは全て同じセッションに所属し、 これにより、セッションとプロセスグループで二階層のプロセス階層が形成できる)。 -新たなセッションの生成はプロセスが \fBsetsid\fP(2) を呼び出すことで行う。 \fBsetsid\fP(2) は、 \fBsetsid\fP(2) -を呼び出したプロセスの PID と同じ値のセッション ID を持つ 新たなセッションを生成する。 セッションの生成者は「セッションリーダー」と呼ばれる。 - -あるセッションの全プロセスは一つの \fI制御端末\fP を共有する。 セッションリーダーが最初に端末をオープンした際に制御端末は設定される -(\fBopen\fP(2) の呼び出しで \fBO_NOCTTY\fP フラグが指定された場合を除く)。 -一つの端末は、最大でも一つのセッションの制御端末にしかなれない。 - -一つのセッションのジョブの中で、\fIフォアグラウンドジョブ\fPになれるのは最大でも一つで、そのセッションの他のジョブは\fIバックグラウンドジョブ\fPである。 -フォアグラウンドジョブだけが端末からの読み込みを行える。 バックグラウンドのプロセスが端末から読み込みを行おうとした場合、 -フォアグラウンドジョブを停止させるシグナルである \fBSIGTTIN\fP が所属するプロセスグループに対して送信される。 端末に \fBTOSTOP\fP -フラグがセットされていた場合 (\fBtermios\fP(3) 参照)、 フォアグラウンドジョブだけが端末への書き込みを行える。 -バックグラウンドのプロセスが端末への書き込みを行おうとした場合、 フォアグラウンドジョブを停止させるシグナルである \fBSIGTTOU\fP が生成される。 -シグナルを生成する端末キー (例えば \fI中断\fPキー、通常は control\-C) が押された場合、 -そのシグナルはフォアグラウンドジョブのプロセスに送信される。 - -様々なシステムコールやライブラリ関数で、プロセスグループの全メンバーに対して操作を行うことができる。 例えば、 \fBkill\fP(2), -\fBkillpg\fP(2), \fBgetpriority\fP(2), \fBsetpriority\fP(2), \fBioprio_get\fP(2), -\fBioprio_set\fP(2), \fBwaitid\fP(2), \fBwaitpid\fP(2) など。 \fBfcntl\fP(2) の操作 -\fBF_GETOWN\fP, \fBF_GETOWN_EX\fP, \fBF_SETOWN\fP, \fBF_SETOWN_EX\fP の議論も参照。 -.SS "ユーザー ID とグループ ID" -各プロセスは、数種類のユーザー ID とグループ ID を持つ。 ユーザー ID、グループ ID は整数で、それぞれ \fIuid_t\fP, -\fIgid_t\fP 型で表現される (これらは \fI\fP で定義されている)。 - -Linux では、各プロセスは以下のような種類のユーザー ID とグループ ID を持つ。 -.IP * 3 -実ユーザー ID と実グループ ID。 これらの ID によりプロセスの所有者が決定される。 プロセスが自分の実ユーザー ID、実グループ ID -を取得するには、それぞれ \fBgetuid\fP(2), \fBgetgid\fP(2) を使用する。 -.IP * -実効ユーザー ID と実効グループ ID。 これらの ID は、メッセージキュー、共有メモリー、セマフォなどの -共有リソースにアクセスしようとした際にそのプロセスがアクセス許可を 持っているかをカーネルが判定するのに使用される。 ほとんどの UNIX -システムでは、これらの ID はファイルへのアクセス時の アクセス許可の判定にも使用される。 しかしながら、Linux -ではファイルへのアクセス許可の判定には 後述のファイルシステム ID が使用される。 プロセスが自分の実効ユーザー ID、実効グループ ID -を取得するには、それぞれ \fBgeteuid\fP(2), \fBgetegid\fP(2) を使用する。 -.IP * -保存 (saved) set\-user\-ID と保存 set\-group\-ID。 これらの ID は、set\-user\-ID や -set\-group\-ID されたプログラムにおいて、 プログラムの実行時に設定された実効 ID のコピーを保存するために 使用される -(\fBexecve\fP(2) 参照)。 set\-user\-ID プログラムは、実効ユーザー ID を実ユーザーID と保存 set\-user\-ID -の間で行ったり来たり切り替えることで、特権を得たり落としたりできる。 この切り替えは \fBseteuid\fP(2), \fBsetreuid\fP(2), -\fBsetresuid\fP(2) を呼び出すことで実行できる。 set\-group\-ID プログラムは、 \fBsetegid\fP(2), -\fBsetregid\fP(2), \fBsetresgid\fP(2) を使って同様のことができる。 プロセスが自分の保存 set\-user\-ID、保存 -set\-group\-ID を取得するには、 \fBgetresuid(2),\fP \fBgetresgids\fP(2) をそれぞれ使用する。 -.IP * -ファイルシステムユーザー ID とファイルシステムグループ ID (Linux 固有)。 これらの ID は、後述の補助グループ ID -と組み合わせて使用され、 ファイルへのアクセス権の決定に利用される。詳細は \fBpath_resolution\fP(7) を参照。 プロセスの実効 ID -(ユーザー ID や グループ ID) が変更されるたびに、 カーネルは自動的に対応するファイルシステム ID を同じ値に変更する。 -その結果、ファイルシステム ID は通常は対応する実効 ID と同じ値となり、 ファイルのアクセス権のチェック方法は Linux と他の UNIX -システムで同じである。 ファイルシステム ID は実効 ID とは異なる値にすることができ、 変更は \fBsetfsuid\fP(2) と -\fBsetfsgid\fP(2) を呼び出して行う。 -.IP * -.\" Since kernel 2.6.4, the limit is visible via the read-only file -.\" /proc/sys/kernel/ngroups_max. -.\" As at 2.6.22-rc2, this file is still read-only. -補助グループ ID。 この ID は、ファイルや他の共有リソースへのアクセス時にアクセス許可の チェックに使用される、追加のグループ ID -の集合である。 カーネル 2.6.4 より前の Linux では、一つのプロセスあたりの 補助グループのメンバー数は最大で 32 である。 カーネル -2.6.4 以降では、一つのプロセスあたりの 補助グループのメンバー数は最大で 65536 である。 -\fIsysconf(_SC_NGROUPS_MAX)\fP を呼び出すことで、あるプロセスがメンバーとなることができる可能性のある -補助グループ数を知ることができる。 プロセスは、自分の補助グループ ID の集合を \fBgetgroups\fP(2) で取得でき、 -\fBsetgroups\fP(2) で集合を変更できる。 -.PP -\fBfork\fP(2) で生成された子プロセスは親プロセスのユーザー ID とグループ ID を継承する。 \fBexecve\fP(2) -の間、プロセスの実ユーザー/グループ ID と補助グループ ID 集合は不変である。 実効 ID と保存セット ID は変更される可能性がある -(\fBexecve\fP(2) で説明されている)。 - -上記の目的以外にも、プロセスのユーザー ID は他の様々な場面で利用される。 -.IP * 3 -シグナルを送る許可の判定時 (\fBkill\fP(2) 参照) -.IP * -プロセスのスケジューリング関連のパラメーター (nice 値、 リアルタイムスケジューリングポリシーや優先度、CPU affinity、 入出力優先度) -の設定許可の判定時。 スケジューリング関連のパラメーター設定には \fBsetpriority\fP(2), \fBsched_setaffinity\fP(2), -\fBsched_setscheduler\fP(2), \fBsched_setparam\fP(2), \fBsched_setattr\fP(2), -\fBioprio_set\fP(2) が使用される。 -.IP * -リソース上限のチェック時 (\fBgetrlimit\fP(2) 参照) -.IP * -プロセスが生成できる inotify インスタンス数の上限のチェック時 (\fBinotify\fP(7) 参照) -.SH 準拠 -プロセス ID、親プロセス ID、プロセスグループ ID、セッション ID は POSIX.1\-2001 で規定されている。 実 ID、実効 -ID、保存セット ID のユーザー ID / グループ ID および 補助グループ ID は POSIX.1\-2001 で規定されている。 -ファイルシステムユーザー ID / グループ ID は Linux による拡張である。 -.SH 注意 -POSIX のスレッド仕様では、これらの識別子がプロセス内の全スレッドで 共有されることを求めている。 しかしながら、カーネルのレベルでは、Linux -はスレッド毎に別々の ユーザーとグループに関する識別子を管理している。 NPTL スレッド実装が、(例えば \fBsetuid\fP(2), -\fBsetresuid\fP(2) などの呼び出しによる) ユーザーやグループに関する識別子に対する変更が プロセス内の全ての POSIX -スレッドに対して反映されることを保証する ための処理を行っている。 -.SH 関連項目 -\fBbash\fP(1), \fBcsh\fP(1), \fBps\fP(1), \fBaccess\fP(2), \fBexecve\fP(2), -\fBfaccessat\fP(2), \fBfork\fP(2), \fBgetgroups\fP(2), \fBgetpgrp\fP(2), \fBgetpid\fP(2), -\fBgetppid\fP(2), \fBgetsid\fP(2), \fBkill\fP(2), \fBkillpg\fP(2), \fBsetegid\fP(2), -\fBseteuid\fP(2), \fBsetfsgid\fP(2), \fBsetfsuid\fP(2), \fBsetgid\fP(2), -\fBsetgroups\fP(2), \fBsetresgid\fP(2), \fBsetresuid\fP(2), \fBsetuid\fP(2), -\fBwaitpid\fP(2), \fBeuidaccess\fP(3), \fBinitgroups\fP(3), \fBtcgetpgrp\fP(3), -\fBtcsetpgrp\fP(3), \fBcapabilities\fP(7), \fBnamespaces\fP(7), -\fBpath_resolution\fP(7), \fBpid_namespaces\fP(7), \fBsignal\fP(7), -\fBuser_namespaces\fP(7), \fBunix\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/ddp.7 b/manual/LDP_man-pages/draft/man7/ddp.7 index c30c79c8..95aff090 100644 --- a/manual/LDP_man-pages/draft/man7/ddp.7 +++ b/manual/LDP_man-pages/draft/man7/ddp.7 @@ -18,14 +18,14 @@ .\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved. .\" Translated Mon 6 Dec 1999 by NAKANO Takeo .\" -.TH DDP 7 2008\-11\-20 Linux "Linux Programmer's Manual" +.TH DDP 7 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 ddp \- Linux での AppleTalk プロトコルの実装 .SH 書式 \fB#include \fP .br \fB#include \fP -.sp +.PP \fIddp_socket\fP\fB = socket(AF_APPLETALK, SOCK_DGRAM, 0);\fP .br \fIraw_socket\fP\fB = socket(AF_APPLETALK, SOCK_RAW, \fP\fIprotocol\fP\fB);\fP @@ -47,7 +47,7 @@ raw ソケットは実効ユーザー ID が 0 のプロセスか、 \fBCAT_NEW_ AppleTalk ソケットアドレスはネットワーク番号、 ノード番号、 ポート番号の組み合わせで定義される。 .PP .in +4n -.nf +.EX struct at_addr { unsigned short s_net; unsigned char s_node; @@ -58,7 +58,7 @@ struct sockaddr_atalk { unsigned char sat_port; /* port */ struct at_addr sat_addr; /* net/node */ }; -.fi +.EE .in .PP .\" FIXME . this doesn't make sense [johnl] @@ -93,9 +93,6 @@ AARP クエリーの最大再送信回数。この回数を越えると、 そ .\" FIXME . Add a section about multicasting \fBsocket\fP(7) に記述されているすべての ioctl が DDP にも適用される。 .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 ユーザーが行おうとした操作に必要な権限を持っていない。 broadcast フラグをセットせずにブロードキャストアドレスへ送信を行おうとした、 @@ -158,8 +155,9 @@ AARP クエリーの最大再送信回数。この回数を越えると、 そ .SH バージョン AppleTalk は Linux 2.0 以降でサポートされている。 \fI/proc\fP インターフェースは Linux 2.2 以降に存在する。 .SH 注意 -\fBSO_BROADCAST\fP オプションを用いる時には慎重の上にも慎重になってほしい。 Linux ではこれに特権を必要としない。 -不注意にブロードキャストアドレスに送信を行うと、 ネットワークの状態が簡単に変更されてしまう。 +Be very careful with the \fBSO_BROADCAST\fP option; it is not privileged in +Linux. It is easy to overload the network with careless sending to +broadcast addresses. .SS 移植性 基本的な Appletalk ソケットインターフェースは BSD 由来のシステムにおける \fBnetatalk\fP と互換性がある。多くの BSD システムでは、 ブロードキャストフレームを送信しようとしたときの \fBSO_BROADCAST\fP @@ -170,10 +168,10 @@ raw ソケットモードは Linux 独特のもので、もう一方の実装で .SH バグ エラーの値がまったく首尾一貫していない。 .PP -ルーティングテーブル、 デバイス、 AARP テーブル、 その他のデバイスを設定するために用いられる ioctl がまだ記述されていない。 +The ioctls used to configure routing tables, devices, AARP tables, and other +devices are not yet described. .SH 関連項目 \fBrecvmsg\fP(2), \fBsendmsg\fP(2), \fBcapabilities\fP(7), \fBsocket\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/environ.7 b/manual/LDP_man-pages/draft/man7/environ.7 index f273e358..1e7af5c6 100644 --- a/manual/LDP_man-pages/draft/man7/environ.7 +++ b/manual/LDP_man-pages/draft/man7/environ.7 @@ -48,20 +48,22 @@ .\" Updated Sat Mar 23 JST 2002 by Kentaro Shirakata .\" Updated 2010-04-11, Akihiro MOTOKI , LDP v3.24 .\" -.TH ENVIRON 7 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH ENVIRON 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 environ \- ユーザー環境 .SH 書式 .nf \fBextern char **\fP\fIenviron\fP\fB;\fP -.br .fi .SH 説明 -変数 \fIenviron\fP は「環境 (environment)」と呼ばれる文字列へのポインターの配列である。 この配列の最後のポインターの値は -NULL である。 (この変数はユーザープログラムで宣言しなければならないが、 機能検査マクロ \fB_GNU_SOURCE\fP -が定義されていればヘッダーファイル \fI\fP で宣言される)。 この文字列配列は、 プロセスを起動する -\fBexec\fP(3) によって、その起動されたプロセスで利用できるようになる。 - +The variable \fIenviron\fP points to an array of pointers to strings called the +"environment". The last pointer in this array has the value NULL. (This +variable must be declared in the user program, but is declared in the header +file \fI\fP if the \fB_GNU_SOURCE\fP feature test macro is +defined.) This array of strings is made available to the process by the +\fBexec\fP(3) call that started the process. When a child process is created +via \fBfork\fP(2), it inherits a \fIcopy\fP of its parent's environment. +.PP 通例では、 \fIenviron\fP の文字列は "\fIname\fP\fB=\fP\fIvalue\fP" という書式をとる。 よく用いられる例を以下に示す。 .TP \fBUSER\fP @@ -99,45 +101,68 @@ NULL である。 (この変数はユーザープログラムで宣言しなけ .\" .TP .\" .B BROWSER .\" The user's preferred utility to browse URLs. Sequence of colon-separated -.\" browser commands. See http://www.catb.org/~esr/BROWSER/ . +.\" browser commands. See http://www.catb.org/\(tiesr/BROWSER/ . テキストファイルを編集するユーテリティ。ユーザーが好みのものを設定する。 .PP -環境に名前を追加する場合には、 \fBsh\fP(1) では \fIexport\fP コマンドと "name=value" を使用する。 \fBcsh\fP(1) -では \fIsetenv\fP コマンドを使用する。 \fBexec\fP(3) の引数としても環境を設定することができる。 C プログラムからは、 -\fBgetenv\fP(3), \fBputenv\fP(3), \fBsetenv\fP(3), \fBunsetenv\fP(3) -などの関数を用いて環境を扱うことができる。 - -プログラムやライブラリルーチンの多くは、それぞれ適当な環境変数の存在 や値によって、動作に影響を受けることがある。以下、適宜挙げてみよう。 -.LP +Names may be placed in the shell's environment by the \fIexport\fP command in +\fBsh\fP(1), or by the \fIsetenv\fP command if you use \fBcsh\fP(1). +.PP +The initial environment of the shell is populated in various ways, such as +definitions from \fI/etc/environment\fP that are processed by \fBpam_env\fP(8) +for all users at login time (on systems that employ \fBpam\fP(8)). In +addition, various shell initialization scripts, such as the system\-wide +\fI/etc/profile\fP script and per\-user initializations script may include +commands that add variables to the shell's environment; see the manual page +of your preferred shell for details. +.PP +Bourne\-style shells support the syntax +.PP + NAME=value command +.PP +to create an environment variable definition only in the scope of the +process that executes \fIcommand\fP. Multiple variable definitions, separated +by white space, may precede \fIcommand\fP. +.PP +Arguments may also be placed in the environment at the point of an +\fBexec\fP(3). A C program can manipulate its environment using the functions +\fBgetenv\fP(3), \fBputenv\fP(3), \fBsetenv\fP(3), and \fBunsetenv\fP(3). +.PP +Note that the behavior of many programs and library routines is influenced +by the presence or value of certain environment variables. Examples include +the following: +.IP * 3 \fBLANG\fP, \fBLANGUAGE\fP, \fBNLSPATH\fP, \fBLOCPATH\fP, \fBLC_ALL\fP, \fBLC_MESSAGES\fP, などの変数は、ロケールの扱いに影響する。 \fBcatopen\fP(3), \fBgettext\fP(3), \fBlocale\fP(5) を参照。 -.LP -\fBTMPDIR\fP は、 \fBtmpnam\fP(3) などのルーチンによって作成されるファイル名や \fBsort\fP(1) -や他のプログラムが使用する一時ディレクトリに前置されるパスに影響する。 -.LP -\fBLD_LIBRARY_PATH\fP, \fBLD_PRELOAD\fP などの LD_* 変数はダイナミックローダーリンカーの動作に影響する。 -.LP +.IP * +\fBTMPDIR\fP influences the path prefix of names created by \fBtempnam\fP(3) and +other routines, and the temporary directory used by \fBsort\fP(1) and other +programs. +.IP * +\fBLD_LIBRARY_PATH\fP, \fBLD_PRELOAD\fP, and other \fBLD_*\fP variables influence the +behavior of the dynamic loader/linker. +.IP * \fBPOSIXLY_CORRECT\fP が指定されると、ある種のプログラムやライブラリルーチンは POSIX の規定に従うようになる。 -.LP +.IP * \fBmalloc\fP(3) の動作は \fBMALLOC_*\fP 変数によって影響される。 -.LP +.IP * \fBHOSTALIAS\fP 変数は、 \fBgethostbyname\fP(3) が用いるエイリアスが書かれているファイル名を与える。 -.LP +.IP * \fBTZ\fP と \fBTZDIR\fP は \fBtzset\fP(3) および、この関数を使う \fBctime\fP(3), \fBlocaltime\fP(3), \fBmktime\fP(3), \fBstrftime\fP(3) といった関数で用いられるタイムゾーンの情報を与える。 \fBtzselect\fP(8) も参照のこと。 -.LP +.IP * \fBTERMCAP\fP は、現在の端末情報の取得先 (あるいはそのような情報が書かれているファイル名) を与える。 -.LP +.IP * \fBCOLUMNS\fP と \fBLINES\fP アプリケーションにウインドウのサイズを伝える。 実際のサイズとは違う値を与えることもできる。 -.LP +.IP * \fBPRINTER\fP または \fBLPDEST\fP 用いたいプリンタを指定する。 \fBlpr\fP(1) を参照のこと。 -.LP -などなど... +.SH 注意 +The \fBprctl\fP(2) \fBPR_SET_MM_ENV_START\fP and \fBPR_SET_MM_ENV_END\fP operations +can be used to control the location of the process's environment. .SH バグ これらの中には、明らかにセキュリティ上の危険が存在する。 ユーザーが \fBIFS\fP や \fBLD_LIBRARY_PATH\fP に異常な値を与えたことによって、 これまで多くのシステムコマンドがだまされて、 システムをひどい目にあわせてきた。 - +.PP 名前空間が汚染される危険性も存在する。 \fImake\fP や \fIautoconf\fP のようなプログラムでは、デフォルトのユーティリティを 環境にある似たような名前の変数で上書きすることができる (通常はすべて大文字の変数を用いる)。 すなわち、利用したい C コンパイラは \fBCC\fP で選択できる。また同様に \fBMAKE\fP, \fBAR\fP, \fBAS\fP, \fBFC\fP, \fBLD\fP, \fBLEX\fP, \fBRM\fP, \fBYACC\fP @@ -146,10 +171,10 @@ NULL である。 (この変数はユーザープログラムで宣言しなけ 新しいプログラムでは避けるべきである。 \fIgzip\fP の作者たちは、オプションを与える環境変数を \fBGZIP_OPT\fP に改名することを考えるほうがよい。 .SH 関連項目 -\fBenv\fP(1), \fBbash\fP(1), \fBcsh\fP(1), \fBlogin\fP(1), \fBprintenv\fP(1), \fBsh\fP(1), +\fBbash\fP(1), \fBcsh\fP(1), \fBenv\fP(1), \fBlogin\fP(1), \fBprintenv\fP(1), \fBsh\fP(1), \fBtcsh\fP(1), \fBexecve\fP(2), \fBclearenv\fP(3), \fBexec\fP(3), \fBgetenv\fP(3), -\fBputenv\fP(3), \fBsetenv\fP(3), \fBunsetenv\fP(3), \fBlocale\fP(7), \fBld.so\fP(8) +\fBputenv\fP(3), \fBsetenv\fP(3), \fBunsetenv\fP(3), \fBlocale\fP(7), \fBld.so\fP(8), +\fBpam_env\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/epoll.7 b/manual/LDP_man-pages/draft/man7/epoll.7 deleted file mode 100644 index 7de6d18b..00000000 --- a/manual/LDP_man-pages/draft/man7/epoll.7 +++ /dev/null @@ -1,336 +0,0 @@ -.\" Copyright (C) 2003 Davide Libenzi -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Davide Libenzi -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004-2005 Yuichi SATO -.\" all rights reserved. -.\" Translated Sat Jun 19 07:50:04 JST 2004 -.\" by Yuichi SATO -.\" Updated & Modified 2005-01-18, Yuichi SATO -.\" Updated 2006-07-14, Akihiro MOTOKI -.\" Catch up to LDP v2.34. epoll.4 is renamed to epoll.7. -.\" Updated 2007-09-07, Akihiro MOTOKI, LDP v2.64 -.\" Updated 2008-04-08, Akihiro MOTOKI, LDP v2.79 -.\" Updated 2009-02-23, Akihiro MOTOKI, LDP v3.19 -.\" -.TH EPOLL 7 2015\-01\-10 Linux "Linux Programmer's Manual" -.SH 名前 -epoll \- I/O イベント通知機能 -.SH 書式 -\fB#include \fP -.SH 説明 -\fBepoll\fP API は \fBpoll\fP(2) と同様の処理を行う、つまり、複数のファイルディスク -リプタを監視し、その中のいずれかが入出力可能な状態であるかを確認する。 -\fBepoll\fP API は、エッジトリガーインターフェースとレベルトリガーインターフェースの -いずれとしても使用することができ、監視するファイルディスクリプターの数が多い -場合にも使用できる。 \fBepoll\fP インスタンスの作成や管理を行うために -以下のシステムコールが提供されている: -.IP * 3 -\fBepoll_create\fP(2) は \fBepoll\fP インスタンスを作成し、そのインスタンスを参照する -ファイルディスクリプターを返す。(もっと新しい \fBepoll_create1\fP(2) では、 -\fBepoll_create\fP(2) の機能が拡張されている)。 -.IP * -特定のファイルディスクリプターに対する監視内容を \fBepoll_ctl\fP(2) で登録する。 \fBepoll\fP -インスタンスに現在登録されているファイルディスクリプターの集合は \fIepoll\fP 集合と呼ばれることもある。 -.IP * -\fBepoll_wait\fP(2) は I/O イベントを待つ。 -現在利用可能な状態のイベントがなければ、呼び出したスレッドを停止する。 -.SS レベルトリガーとエッジトリガー -\fBepoll\fP イベント配送 (distribution) インターフェースは、 エッジトリガー (ET) としてもレベルトリガー (LT) -としても動作させることができる。 二つの配送機構の違いは、次のように説明できる。 このようなシナリオが起こったとしよう: -.IP 1. 3 -パイプの読み込み側を表すファイルディスクリプター (\fIrfd\fP) が \fBepoll\fP インスタンスに登録される。 -.IP 2. -パイプへ書き込むプログラムが 2 kB のデータをパイプの書き込み側へ書き込む。 -.IP 3. -\fBepoll_wait\fP(2) を呼び出すと、読み込み可能 (ready) なファイルディスクリプターとして \fIrfd\fP が返る。 -.IP 4. -パイプから読み出すプログラムが、1 kB のデータを \fIrfd\fP から読み出す。 -.IP 5. -\fBepoll_wait\fP(2) の呼び出しが行われる。 -.PP -\fIrfd\fP ファイルディスクリプターが \fBEPOLLET\fP フラグ (エッジトリガー) を使って \fBepoll\fP に追加されていると、 -利用可能なデータがファイル入力バッファーにまだ存在するにもかかわらず ステップ \fB5\fP の \fBepoll_wait\fP(2) -の呼び出しでハングする可能性がある。 その一方で、リモートの接続先 (peer) は既に送られたデータに 基づいて応答を期待しているかもしれない。 -このようなことが起こる理由は、エッジトリガーイベント配送では、 モニタしているファイルでイベントが起ったときにのみイベントが 配送されるためである。 -したがって、ステップ \fB5\fP では、呼び出し側は結果的に 入力バッファー内にすで存在するデータを待つことになるかもしれない。 上記の例では、 \fB2\fP -で行われた書き込みによって \fIrfd\fP に関するイベントが生成され、 \fB3\fP でイベントが消費 (consume) される。 \fB4\fP -で行われる読み込み操作では、全部のバッファーデータを消費しないので、 ステップ \fB5\fP で行われる \fBepoll_wait\fP(2) の呼び出しが -無期限に停止 (block) するかもしれない。 - -\fBEPOLLET\fP フラグを採用するアプリケーションでは、 インターフェースはブロックしない (nonblocking) ファイルディスクリプターを -使うべきである。 これは、ブロックされる読み込みや書き込みによって、 複数のファイルディスクリプターを扱うタスクが 停止してしまうのを避けるためである。 -\fBepoll\fP をエッジトリガー (\fBEPOLLET\fP) インターフェースとして使うために提案される方法は以下の通りである。 -.RS -.TP 4 -\fBi\fP -ブロックしないファイルディスクリプターと共に使う。 -.TP -\fBii\fP -\fBread\fP(2) または \fBwrite\fP(2) が \fBEAGAIN\fP を返した後でのみ、イベントを待つ。 -.RE -.PP -一方、レベルトリガーインターフェースとして使う場合 - (こちらがデフォルトである、 -\fBEPOLLET\fP が指定されなかった場合)、 -\fBepoll\fP は単に高速な \fBpoll\fP(2) であり、使い方が同じなので、 -\fBpoll\fP(2) が使われているところではどこでも使用することができる。 - -エッジトリガーを使った場合でも、複数のデータを受信すると複数の \fBepoll\fP イベントが生成されるので、 呼び出し側には -\fBEPOLLONESHOT\fP フラグを指定するオプションがある。 このフラグは \fBepoll\fP に対して、 \fBepoll_wait\fP(2) -によるイベントを受信した後で、関連するファイルディスクリプターを無効にさせる。 \fBEPOLLONESHOT\fP フラグが指定された場合、 -\fBepoll_ctl\fP(2) に \fBEPOLL_CTL_MOD\fP を指定してファイルディスクリプターを再度使用できるようにするのは、 -呼び出し側の責任である。 -.SS "autosleep との関係" -システムが \fI/sys/power/autosleep\fP 経由で \fBautosleep\fP モードになっていて、 -デバイスをスリープ状態から起こすイベントが発生した場合、 デバイスドライバーはデバイスを起こしておくのはそのイベントがキューに入るまでだけである。 -イベントが処理されるまでデバイスを起こしたままにしておくには、 \fBepoll\fP(7) \fBEPOLLWAKEUP\fP フラグを使う必要がある。 - -\fBEPOLLWAKEUP\fP フラグが \fIstruct epoll_event\fP の \fBevents\fP フィールドでセットされた場合、 -イベントがキューに入った瞬間から、\fBepoll_wait\fP(2) がそのイベントを返し次の \fBepoll_wait\fP(2) -の呼び出しが行われるまでの間、システムは起きたままの状態になる。 -イベントが上記の時間の範囲を超えてシステムを起きたままの状態にしておく必要がある場合は、 2 番目の \fBepoll_wait\fP(2) -の呼び出しの前に別の \fIwake_lock\fP を取る必要がある。 -.SS "/proc インターフェース" -.\" Following was added in 2.6.28, but them removed in 2.6.29 -.\" .TP -.\" .IR /proc/sys/fs/epoll/max_user_instances " (since Linux 2.6.28)" -.\" This specifies an upper limit on the number of epoll instances -.\" that can be created per real user ID. -epoll が消費するカーネルメモリーの量を制限するために、 以下のインターフェースを使用することができる。 -.TP -\fI/proc/sys/fs/epoll/max_user_watches\fP (Linux 2.6.28 以降) -.\" 2.6.29 (in 2.6.28, the default was 1/32 of lowmem) -このファイルは、あるユーザーがシステム上の全ての epoll インスタンスに 登録できるファイルディスクリプターの総数の上限を規定する。 -この上限は実ユーザー ID 単位である。 登録されたファイルディスクリプター 1 つが消費するメモリー量は、 32 ビットカーネルでおよそ 90 -バイト、 64 ビットカーネルでおよそ 160 バイトである。 現在のところ、 \fImax_user_watches\fP -のデフォルト値は、利用可能なメモリー下限の 1/25 (4%) であり、 登録で消費されるメモリー量 (バイト単位) で割った値となる。 -.SS おすすめな使用例 -レベルトリガーインターフェースとして使用するときの \fBepoll\fP の使い方は \fBpoll\fP(2) と同じである。 -しかしエッジトリガーとして使う場合は、 アプリケーションのイベントループでストール (stall) しないように、 -使い方をより明確にしておく必要がある。 この例では、リスナはブロックしないソケットであり、 \fBlisten\fP(2) が呼ばれている。 関数 -\fIdo_use_fd()\fP は、 \fBread\fP(2) または \fBwrite\fP(2) によって \fBEAGAIN\fP -が返されるまでは、新しい準備済みのファイルディスクリプターを使う。 イベント駆動ステートマシンアプリケーションは、 \fBEAGAIN\fP -を受信した後、カレントの状態を記録しておくべきである。 これにより、次の \fIdo_use_fd()\fP 呼び出しのときに、以前に停止したところから -\fBread\fP(2) または \fBwrite\fP(2) を継続することができる。 - -.in +4n -.nf -#define MAX_EVENTS 10 -struct epoll_event ev, events[MAX_EVENTS]; -int listen_sock, conn_sock, nfds, epollfd; - -/* Code to set up listening socket, \(aqlisten_sock\(aq, - (socket(), bind(), listen()) omitted */ - -epollfd = epoll_create1(0); -if (epollfd == \-1) { - perror("epoll_create1"); - exit(EXIT_FAILURE); -} - -ev.events = EPOLLIN; -ev.data.fd = listen_sock; -if (epoll_ctl(epollfd, EPOLL_CTL_ADD, listen_sock, &ev) == \-1) { - perror("epoll_ctl: listen_sock"); - exit(EXIT_FAILURE); -} - -for (;;) { - nfds = epoll_wait(epollfd, events, MAX_EVENTS, \-1); - if (nfds == \-1) { - perror("epoll_pwait"); - exit(EXIT_FAILURE); - } - - for (n = 0; n < nfds; ++n) { - if (events[n].data.fd == listen_sock) { - conn_sock = accept(listen_sock, - (struct sockaddr *) &local, &addrlen); - if (conn_sock == \-1) { - perror("accept"); - exit(EXIT_FAILURE); - } - setnonblocking(conn_sock); - ev.events = EPOLLIN | EPOLLET; - ev.data.fd = conn_sock; - if (epoll_ctl(epollfd, EPOLL_CTL_ADD, conn_sock, - &ev) == \-1) { - perror("epoll_ctl: conn_sock"); - exit(EXIT_FAILURE); - } - } else { - do_use_fd(events[n].data.fd); - } - } -} -.fi -.in - -エッジトリガーインターフェースとして使う場合、性能上の理由により、 一度 (\fBEPOLLIN\fP|\fBEPOLLOUT\fP) を指定してから -(\fBEPOLL_CTL_ADD\fP で) ファイルディスクリプターを \fBepoll\fP インターフェースに追加することができる。 これにより、 -\fBepoll_ctl\fP(2) に \fBEPOLL_CTL_MOD\fP を指定して呼び出すことで \fBEPOLLIN\fP と \fBEPOLLOUT\fP -の連続的な切り替えが避けられる。 -.SS 質問と解答 -.TP 4 -\fBQ0\fP -\fBepoll\fP 集合内の登録されたファイルディスクリプターを区別するには、 何をキーとして使えばよいか? -.TP -\fBA0\fP -キーはファイルディスクリプター番号とオープンファイル記述 (open file description) の組である (オープンファイル記述は -"open file handle" とも 呼ばれ、オープンされたファイルのカーネルの内部表現である)。 -.TP -\fBQ1\fP -1 つの \fBepoll\fP インスタンスに同じファイルディスクリプターを 2 回登録するとどうなるか? -.TP -\fBA1\fP -.\" But a descriptor duplicated by fork(2) can't be added to the -.\" set, because the [file *, fd] pair is already in the epoll set. -.\" That is a somewhat ugly inconsistency. On the one hand, a child process -.\" cannot add the duplicate file descriptor to the epoll set. (In every -.\" other case that I can think of, descriptors duplicated by fork have -.\" similar semantics to descriptors duplicated by dup() and friends.) On -.\" the other hand, the very fact that the child has a duplicate of the -.\" descriptor means that even if the parent closes its descriptor, then -.\" epoll_wait() in the parent will continue to receive notifications for -.\" that descriptor because of the duplicated descriptor in the child. -.\" -.\" See http://thread.gmane.org/gmane.linux.kernel/596462/ -.\" "epoll design problems with common fork/exec patterns" -.\" -.\" mtk, Feb 2008 -たぶん \fBEEXIST\fP を受け取るだろう。 しかしながら、同じ \fBepoll\fP -インスタンスに対して複製されたディスクリプターを追加することは可能である (\fBdup\fP(2), \fBdup2\fP(2), \fBfcntl\fP(2) -\fBF_DUPFD\fP など)。 複製したファイルディスクリプターを異なる \fIevents\fP マスクで登録すれば、イベントをフィルタリングするのに -この機能は有用な手法である。 -.TP -\fBQ2\fP -2 つの \fBepoll\fP インスタンスが同じファイルディスクリプターを待ち受けることは可能か? もし可能であれば、イベントは両方の \fBepoll\fP -ファイルディスクリプターに報告されるか? -.TP -\fBA2\fP -イベントは両方に報告される。 しかしながら、これを正しく扱うには注意深くプログラミングする必要が あるかもしれない。 -.TP -\fBQ3\fP -\fBepoll\fP ファイルディスクリプター自身は poll/epoll/select が可能か? -.TP -\fBA3\fP -可能である。 \fBepoll\fP ファイルディスクリプターに処理待ちのイベントがある場合は、 読み出し可能だと通知されることだろう。 -.TP -\fBQ4\fP -\fBepoll\fP ファイルディスクリプターを自身のファイルディスクリプター集合に 入れようとするとどうなるか? -.TP -\fBA4\fP -\fBepoll_ctl\fP(2) の呼び出しは (\fBEINVAL\fP で) 失敗するだろう。 ただし \fBepoll\fP ファイルディスクリプターを他の -\fBepoll\fP ファイルディスクリプター集合の内部に追加することは可能である。 -.TP -\fBQ5\fP -\fBepoll\fP ファイルディスクリプターを UNIX ドメインソケットで他のプロセスに送ることは可能か? -.TP -\fBA5\fP -可能だが、これをすることに意味はない。 なぜなら、受信側のプロセスが \fBepoll\fP -集合内のファイルディスクリプターのコピーを持っていないからである。 -.TP -\fBQ6\fP -ファイルディスクリプターをクローズすると、そのファイルディスクリプターは全ての \fBepoll\fP 集合から自動的に削除されるか? -.TP -\fBA6\fP -削除されるが、以下の点に注意が必要である。 ファイルディスクリプターはオープンファイル記述 (\fBopen\fP(2) 参照) への参照である。 -ディスクリプターの複製を \fBdup\fP(2), \fBdup2\fP(2), \fBfcntl\fP(2) の \fBF_DUPFD\fP や \fBfork\fP(2) -経由で行う度に、同じオープンファイル記述を参照する新規のファイル ディスクリプターが生成される。 -オープンファイル記述自体は、自身を参照する全てのファイルディスクリプター がクローズされるまで存在し続ける。 ファイルディスクリプターが -\fBepoll\fP 集合から削除されるのは、対応するオープンファイル記述を参照している 全てのファイルディスクリプターがクローズされた後である -(\fBepoll_ctl\fP(2) \fBEPOLL_CTL_DEL\fP を使ってそのディスクリプターを明示的に削除した場合にも削除される)。 このことは、 -\fBepoll\fP 集合に属しているあるファイルディスクリプターをクローズした後であっても、 -同じファイル記述を参照する他のファイルディスクリプターがオープンされている間は、 -クローズしたファイルディスクリプター宛にイベントが報告される可能性があると いうことを意味する。 -.TP -\fBQ7\fP -2 つ以上のイベントが \fBepoll_wait\fP(2) コールの間に発生した場合、それらはまとめて報告されるか、 それとも別々に報告されるか? -.TP -\fBA7\fP -まとめて報告されるだろう。 -.TP -\fBQ8\fP -ファイルディスクリプターに対する操作は、 既に集められているがまだ報告されていないイベントに影響するか? -.TP -\fBA8\fP -既存のファイルディスクリプターに対して 2 つの操作を行うことができる。 この場合、削除には意味がない。 変更すると、使用可能な I/O -が再び読み込まれる。 -.TP -\fBQ9\fP -\fBEPOLLET\fP フラグ (エッジトリガー動作) を使っている場合、 \fBEAGAIN\fP を受け取るまで、 -継続してファイルディスクリプターを読み書きする必要があるか? -.TP -\fBA9\fP -\fBepoll_wait\fP(2) からイベントを受け取ることは、 そのファイルディスクリプターが要求された I/O 操作に対して準備済みである、 -ということをユーザーに示すものである。 次の (ブロックしない) read/write で \fBEAGAIN\fP -を受け取るまではファイルディスクリプターは準備済みであると 考えなければならない。 そのファイルディスクリプターをいつどのように使うかは、 -全くユーザーに任されてる。 -.sp -パケット指向やトークン指向のファイル (例えば、データグラムソケット、 canonical モードの端末) では、 読み込み用 / 書き込み用の I/O -空間の末尾を検知する唯一の方法は \fBEAGAIN\fP になるまで read/write を行うことである。 -.sp -ストリーム指向のファイル (例えば、パイプ、FIFO、ストリームソケット) では、 読み込み用 / 書き込み用の I/O 空間が使い尽くされた状態は、 -対象となるファイルディスクリプターから読み込んだデータ量または 書き込んだデータ量をチェックすることでも検知できる。 -例えば、ある特定の量のデータを読み込むために \fBread\fP(2) を呼んだときに、 \fBread\fP(2) -が返したバイト数がそれより少なかった場合、 そのファイルディスクリプターの読み込み用 I/O 空間が 使い尽くされたことが分かる。 -\fBwrite\fP(2) を使って書き込みをするときも、同じことが言える (監視しているファイルディスクリプターが常にストリーム指向のファイルを -参照していることを保証できない場合には、後者の手法の使用を避けること)。 -.SS ありがちな落とし穴と回避方法 -.TP -\fBo 飢餓 (starvation) (エッジトリガー)\fP -.PP -大きな I/O 空間がある場合、 その I/O 空間のデータを全て処理 (drain) しようとすると、 -他のファイルが処理されず、飢餓を発生させることがある (この問題は \fBepoll\fP に固有のものではない)。 -.PP -この問題の解決法は、準備済み状態のリストを管理して、 関連する data 構造体の中でファイルディスクリプターが 利用可能であるとマークすることである。 -それによって、利用可能なすべてのファイルの中で どのファイルを処理する必要があるかを憶えることができ、 しかも順番に処理 (round robin) -することができる。 既に利用可能であるファイルディスクリプターに対して それ以後に受け取るイベントを無視することもできる。 -.TP -\fBo イベントキャッシュを使っている場合\fP -.PP -イベントキャッシュを使っている場合、 または \fBepoll_wait\fP(2) から返された全てのファイルディスクリプターを格納している場合、 -クローズされたことを動的にマークする (つまり前のイベントの処理によってマークされる) 方法を提供すべきである。 \fBepoll_wait\fP(2) -から 100 個のイベントを受け取り、 イベント #47 ではある条件でイベント #13 が閉じられると仮定する。 イベント #13 -の構造体を削除しファイルディスクリプターを \fBclose\fP(2) すると、イベントキャッシュはそのファイルディスクリプターを待つイベントが -存在するといって、混乱が起きる。 -.PP -この問題を解決する 1 つの方法は、イベント 47 の処理をしている間に、 ファイルディスクリプター 13 を削除して \fBclose\fP(2) -するために \fBepoll_ctl\fP(\fBEPOLL_CTL_DEL\fP) を呼び出し、関連付けられた data 構造体を削除済みとマークして、 -クリーンアップリストにリンクすることである。 バッチ処理の中でファイルディスクリプター 13 についての 他のイベントを見つけた場合、 -そのファイルディスクリプターが以前に削除されたものであると分かるので、 混乱は起きない。 -.SH バージョン -.\" Its interface should be finalized in Linux kernel 2.5.66. -\fBepoll\fP API は Linux カーネル 2.5.44 に導入された。 glibc でのサポートはバージョン 2.3.2 で追加された。 -.SH 準拠 -\fBepoll\fP API は Linux 固有である。 他のシステムでも同様の機構が提供されている場合がある。 例えば、FreeBSD の -\fIkqueue\fP や Solaris の \fI/dev/poll\fP などである。 -.SH 関連項目 -\fBepoll_create\fP(2), \fBepoll_create1\fP(2), \fBepoll_ctl\fP(2), \fBepoll_wait\fP(2) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/fanotify.7 b/manual/LDP_man-pages/draft/man7/fanotify.7 deleted file mode 100644 index 85a1431e..00000000 --- a/manual/LDP_man-pages/draft/man7/fanotify.7 +++ /dev/null @@ -1,528 +0,0 @@ -.\" Copyright (C) 2013, Heinrich Schuchardt -.\" and Copyright (C) 2014, 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 FANOTIFY 7 2014\-12\-31 Linux "Linux Programmer's Manual" -.SH 名前 -fanotify \- ファイルシステムイベントを監視する -.SH 説明 -fanotify API はファイルシステムイベントの通知と横取り機能 (interception) を提供する。 -ユースケースとしては、ウイルススキャンや階層型ストレージの管理などがある。 現在のところ、限定的なイベントのみがサポートされている。 特に、作成 -(create)、削除 (delete)、移動 (move) イベントがサポートされていない (これらのイベントを通知する API の詳細については -\fBinotify\fP(7) を参照)。 - -\fBinotify\fP(7) API と比較して追加されている機能としては、 マウントされたファイルシステムの全オブジェクトを監視する機能、 -アクセス許可の判定を行う機能、 他のアプリケーションによるアクセスの前にファイルを読み出したり変更したりする機能がある。 - -この API では以下のシステムコールを使用する: \fBfanotify_init\fP(2), \fBfanotify_mark\fP(2), -\fBread\fP(2), \fBwrite\fP(2), \fBclose\fP(2)。 -.SS "fanotify_init(), fanotify_mark() と通知グループ" -\fBfanotify_init\fP(2) システムコールは fanotify 通知グループを作成、初期化し、 -この通知グループを参照するファイルディスクリプターを返す。 -.PP -fanotify 通知グループはカーネル内部のオブジェクトで、 イベントが作成されるファイル、 ディレクトリ、 マウントポイントのリストを保持する。 -.PP -fanotify 通知グループの各エントリーには 2 つのビットマスクがある。 \fImark\fP マスクと \fIignore\fP マスクである。 mark -マスクはどのファイル操作についてイベントを作成するかを定義する。 ignore マスクはどの操作についてイベントを作成しないかを定義する。 これらの 2 -種類のマスクがあることで、 マウントポイントやディレクトリに対してイベントの受信を mark しておきつつ、 -同時にそのマウントポイントやディレクトリ配下の特定のオブジェクトに対するイベントを無視する、 といったことができる。 -.PP -\fBfanotify_mark\fP(2) システムコールは、ファイル、ディレクトリ、マウントを通知グループに追加し、 どのイベントを報告 (もしくは無視) -するかを指定する。 また、このようなエントリーの削除、変更も行う。 -.PP -ignore マスクの考えられる使用方法はファイルキャッシュに対してである。 -ファイルキャッシュに関して興味のあるイベントは、ファイルの変更とファイルのクローズである。 それゆえ、 -キャッシュされたディレクトリやマウントポイントは、 これらのイベントを受信するようにマークされる。 -ファイルが変更されたという最初のイベントを受信した後は、 対応するキャッシュエントリーは無効化される。 そのファイルがクローズされるまでは、 -このファイルに対する変更イベントは興味のない情報となる。 したがって、 変更イベントを ignore マスクに追加することができる。 -クローズイベントを受信すると、 変更イベントを ignore イベントから削除し、 ファイルキャッシュエントリーを更新することができる。 -.PP -fanotify 通知グループのエントリーは、 ファイルやディレクトリでは inode 番号経由で参照され、 マウントではマウント ID -経由で参照される。 ファイルやディレクトリの名前が変更されたり、移動されたりした場合も、 関連するエントリーはそのまま残る。 -ファイルやディレクトリが削除されたり、マウントがアンマウントされたりした場合には、 対応するエントリーは削除される。 -.SS イベントキュー -通知グループにより監視されているファイルシステムオブジェクトでイベントが発生すると、 fanotify システムはイベントを生成し、 -そのイベントはキューにまとめられる。 これらのイベントは、 \fBfanotify_init\fP(2) が返した fanotify -ファイルディスクリプターから (\fBread\fP(2) などを使って) 読み出すことができる。 - -2 種類のイベントが生成される。 \fInotification\fP (通知) イベントと \fIpermission\fP (アクセス許可) イベントである。 -通知イベントは単なる情報通知であり、 イベントで渡されたファイルディスクリプターをクローズする場合 (下記参照) を除き、 -受信したアプリケーションでアクションを取る必要はない。 アクセス許可イベントは、 -受信したアプリケーションがファイルアクセスの許可を承認するかを判定する必要がある。 この場合、 -受信者はアクセスが許可されたか否かを決定する応答を書き込まなければならない。 - -イベントは、 読み出されると、 fanotify グループのイベントキューから削除される。 読み出されたアクセス許可イベントは、 fanotify -ファイルディスクリプターにアクセス許可の判定が書き込まれるか、 fanotify ファイルディスクリプターがクローズされるまで、 fanotify -グループの内部のリストに保持される。 -.SS "fanotify イベントの読み出し" -\fBfanotify_init\fP(2) が返したファイルディスクリプターに対する \fBread\fP(2) を呼び出しは、 -(\fBfanotify_init\fP(2) の呼び出しでフラグ \fBFAN_NONBLOCK\fP を指定しなかった場合) -ファイルイベントが起こるか、呼び出しがシグナルによって割り込まれる (\fBsignal\fP(7) 参照) まで停止する。 - -\fBread\fP(2) が成功すると、読み出しバッファーには以下の構造体が 1 つ以上格納される。 - -.in +4n -.nf -struct fanotify_event_metadata { - __u32 event_len; - __u8 vers; - __u8 reserved; - __u16 metadata_len; - __aligned_u64 mask; - __s32 fd; - __s32 pid; -}; -.fi -.in -.PP -性能上の理由から、複数のイベントを一度の \fBread\fP(2) で取得できるように大きめのバッファーサイズ (例えば 4096 バイト) -を使用することを推奨する。 - -\fBread\fP(2) の返り値はバッファーに格納されたバイト数である。 エラーの場合は \-1 が返される (ただし、バグも参照)。 - -\fIfanotify_event_metadata\fP 構造体のフィールドは以下のとおりである。 -.TP -\fIevent_len\fP -これは、 このイベントのデータ長であり、バッファー内の次のイベントへのオフセットである。 現在の実装では、 \fIevent_len\fP の値は常に -\fBFAN_EVENT_METADATA_LEN\fP である。 しかしながら、 API は将来可変長の構造体を返すことができるように設計されている。 -.TP -\fIvers\fP -このフィールドには構造体のバージョン番号が入る。 実行時に返された構造体がコンパイル時の構造体と一致しているかを検査するには、 この値を -\fBFANOTIFY_METADATA_VERSION\fP を比較すること。 一致しない場合、 アプリケーションはその fanotify -ファイルディスクリプターを使用するのを諦めるべきである。 -.TP -\fIreserved\fP -このフィールドは使用されない。 -.TP -\fImetadata_len\fP -この構造体の長さである。 このフィールドは、 イベント種別単位のオプションヘッダーの実装を扱うために導入された。 -現在の実装ではこのようなオプションヘッダーは存在しない。 -.TP -\fImask\fP -イベントを示すビットマスクである (下記参照) -.TP -\fIfd\fP -これはアクセスされたオブジェクトに対するオープンされたファイルディスクリプターである。 または、キューのオーバーフローが発生した場合には -\fBFAN_NOFD\fP が入る。 ファイルディスクリプターは監視対象のファイルやディレクトリの内容にアクセスするのに使用できる。 -読み出したアプリケーションは責任を持ってこのファイルディスクリプターをクローズしなければならない。 -.IP -\fBfanotify_init\fP(2) を呼び出す際、 -呼び出し元はこのファイルディスクリプターに対応するオープンファイル記述にセットされた様々なファイル状態フラグを (\fIevent_f_flags\fP -引き数を使って) 指定することができる。 さらに、 (カーネル内部の) \fBFMODE_NONOTIFY\fP -ファイル状態フラグがオープンファイル記述にセットされる。 このフラグは fanotify イベントの生成を抑制する。 したがって、 fanotify -イベントの受信者がこのファイルディスクリプターを使って通知されたファイルやディレクトリにアクセスした際に、 これ以上イベントが作成されなくなる。 -.TP -\fIpid\fP -これはイベントが発生する原因となったプロセス ID である。 fanotify イベントを監視しているプログラムは、 この PID を -\fBgetpid\fP(2) が返す PID と比較することで、 イベントが監視しているプログラム自身から発生したかどうか、 -別のプロセスによるファイルアクセスにより発生したか、を判定できる。 -.PP -\fImask\fP のビットマスクは、1 つのファイルシステムオブジェクトに対してどのイベントが発生したかを示す。 -監視対象のファイルシステムオブジェクトに複数のイベントが発生した場合は、 このマスクに複数のビットがセットされることがある。 特に、 -同じファイルシステムオブジェクトに対する連続するイベントが同じプロセスから生成された場合には、 一つのイベントにまとめられることがある。 例外として、 -2 つのアクセス許可イベントが一つのキューエントリーにまとめられることは決してない。 -.PP -\fImask\fP でセットされている可能性のあるビットは以下のとおりである。 -.TP -\fBFAN_ACCESS\fP -ファイルやディレクトリがアクセスされた (読み出しが行われた) (ただし、「バグ」の節も参照)。 -.TP -\fBFAN_OPEN\fP -ファイルやディレクトリがオープンされた。 -.TP -\fBFAN_MODIFY\fP -ファイルやディレクトリが変更された。 -.TP -\fBFAN_CLOSE_WRITE\fP -書き込み用 (\fBO_WRONLY\fP か \fBO_RDWR\fP) にオープンされたファイルがクローズされた。 -.TP -\fBFAN_CLOSE_NOWRITE\fP -読み出し用 (\fBO_RDONLY\fP) にオープンされたファイルがクローズされた。 -.TP -\fBFAN_Q_OVERFLOW\fP -イベントキューが 16384 エントリーの上限を超過した。 この上限は \fBfanotify_init\fP(2) 呼び出し時に -\fBFAN_UNLIMITED_QUEUE\fP フラグを指定することで上書きできる。 -.TP -\fBFAN_ACCESS_PERM\fP -アプリケーションが例えば \fBread\fP(2) や \fBreaddir\fP(2) などを使ってファイルやディレクトリを読み出そうとした。 -このイベントを読み出したプログラムは、 そのファイルシステムオブジェクトへのアクセス許可を承認するかを判定し (下記で説明するとおり) -応答を書き込まなければならない。 -.TP -\fBFAN_OPEN_PERM\fP -アプリケーションがファイルやディレクトリをオープンしようとした。 このイベントを読み出したプログラムは、 -そのファイルシステムオブジェクトのオープンを承認するかを判定し (下記で説明するとおり) 応答を書き込まなければならない。 -.PP -クローズイベントを確認するために以下のビットマスクを使うことができる。 -.TP -\fBFAN_CLOSE\fP -ファイルがクローズされた。 以下の同義語である。 - - FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE -.PP -fanotify ファイルディスクリプターからの \fBread\fP(2) が返した fanotify -イベントメタデータを含むバッファーに対して繰り返しを行うため、 以下のマクロが提供されている。 -.TP -\fBFAN_EVENT_OK(meta, len)\fP -このマクロは、 バッファー \fImeta\fP の残りの長さ \fIlen\fP を、 メタデータ構造体の長さとバッファーの最初のメタデータ構造体の -\fIevent_len\fP フィールドと比較して検査する。 -.TP -\fBFAN_EVENT_NEXT(meta, len)\fP -このマクロは、 \fImeta\fP が指すメタデータ構造体の \fIevent_len\fP フィールドで示された長さを使って、 \fImeta\fP -の次のメタデータ構造体のアドレスを計算する。 \fIlen\fP はバッファーに現在残っているメタデータのバイト数である。 このマクロは \fImeta\fP -の次のメタデータ構造体へのポインターを返し、 スキップされたメタデータ構造体のバイト数だけ \fIlen\fP を減算する (つまり、 \fIlen\fP から -\fImeta\->event_len\fP を引き算する)。 -.PP -また、 以下のマクロも用意されている。 -.TP -\fBFAN_EVENT_METADATA_LEN\fP -.\" -このマクロは \fIfanotify_event_metadata\fP 構造体の (バイト単位の) サイズを返す。 -返される値はイベントメタデータの最小値である (現在のところ、これが唯一のサイズである)。 -.SS "fanotify ファイルディスクリプターのイベントを監視する" -fanotify イベントが発生すると、 \fBepoll\fP(7), \fBpoll\fP(2), \fBselect\fP(2) に fanotify -ファイルディスクリプターが渡された場合には、そのファイルディスクリプターが読み出し可能であると通知される。 -.SS アクセス許可イベントの取り扱い -アクセス許可イベントでは、 アプリケーションは以下の形式の構造体を fanotify ファイルディスクリプターに \fBwrite\fP(2) -しなければならない。 - -.in +4n -.nf -struct fanotify_response { - __s32 fd; - __u32 response; -}; -.fi -.in -.PP -この構造体のフィールドは以下のとおりである。 -.TP -\fIfd\fP -このフィールドは \fIfanotify_event_metadata\fP 構造体で返されたファイルディスクリプターである。 -.TP -\fIresponse\fP -このフィールドはアクセス許可を承認するかどうかを示す。 値は、このファイル操作を許可する \fBFAN_ALLOW\fP か、 このファイル操作を拒否する -\fBFAN_DENY\fP のいずれかでなければならない。 -.PP -アクセスを拒否した場合、 アクセスを要求したアプリケーションは \fBEPERM\fP エラーを受け取ることになる。 -.SS "fanotify ファイルディスクリプターのクローズ" -.PP -fanotify 通知グループを参照するすべてのファイルディスクリプターがクローズされると、 fanotify グループは解放され、 -カーネルが再利用できるようにそのリソースは解放される。 \fBclose\fP(2) の際に、 処理中であったアクセス許可イベントには許可が設定される。 -.SS /proc/[pid]/fdinfo -ファイル \fI/proc/[pid]/fdinfo/[fd]\fP には、 プロセス \fIpid\fP のファイルディスクリプター \fIfd\fP の -fanotify マークに関する情報が格納される。 詳細はカーネルのソースファイル -\fIDocumentation/filesystems/proc.txt\fP を参照。 -.SH エラー -通常の \fBread\fP(2) のエラーに加え、 fanotify ファイルディスクリプターから読み出しを行った際に以下のエラーが発生することがある。 -.TP -\fBEINVAL\fP -バッファーがイベントを保持するには小さすぎる。 -.TP -\fBEMFILE\fP -オープンしたファイル数のプロセス毎の上限に達した。 \fBgetrlimit\fP(2) の \fBRLIMIT_NOFILE\fP の説明を参照。 -.TP -\fBENFILE\fP -オープンされたファイル数のシステム全体の上限に達した。 \fBproc\fP(5) の \fI/proc/sys/fs/file\-max\fP を参照。 -.TP -\fBETXTBSY\fP -\fBfanotify_init\fP(2) の呼び出し時に \fBO_RDWR\fP か \fBO_WRONLY\fP が \fIevent_f_flags\fP -引き数に指定されており、 現在実行中の監視対象のファイルに対してイベントが発生した際に、 このエラーが \fBread\fP(2) から返される。 -.PP -通常の \fBwrite\fP(2) のエラーに加え、 fanotify ファイルディスクリプターに書き込みを行った際に以下のエラーが発生することがある。 -.TP -\fBEINVAL\fP -fanotify アクセス許可がカーネルの設定で有効になっていない。 応答構造体の \fIresponse\fP 値が無効である。 -.TP -\fBENOENT\fP -応答構造体のファイルディスクリプター \fIfd\fP が無効である。 このエラーはアクセス許可イベントに対する応答がすでに書き込まれている際に発生する。 -.SH バージョン -fanotify API は Linux カーネルのバージョン 2.6.36 で導入され、 バージョン 2.6.37 で有効にされた。 fdinfo -のサポートはバージョン 3.8 で追加された。 -.SH 準拠 -fanotify API は Linux 独自のものである。 -.SH 注意 -fanotify API が利用できるのは、 カーネルが \fBCONFIG_FANOTIFY\fP 設定オプションを有効にして作成されている場合だけである。 -また、 fanotify アクセス許可の処理が利用できるのは \fBCONFIG_FANOTIFY_ACCESS_PERMISSIONS\fP -設定オプションが有効になっている場合だけである。 -.SS 制限と警告 -fanotify が報告するのはユーザー空間プログラムがファイルシステム API 経由で行ったイベントだけである。 その結果、 fanotify -ではネットワークファイルシステム上で発生したリモートイベントは捕捉できない。 -.PP -inotify API は \fBmmap\fP(2), \fBmsync\fP(2), \fBmunmap\fP(2) -により起こったファイルのアクセスと変更を報告しない。 -.PP -ディレクトリのイベントは、ディレクトリ自身がオープン、読み出し、クローズされた場合にしか作成されない。 -マークされたディレクトリでの子要素の追加、削除、変更では、監視対象のディレクトリ自身へのイベントは作成されない。 -.PP -fanotify のディレクトリの監視は再帰的ではない。 ディレクトリ内のサブディレクトリを監視するには、 -追加で監視用のマークを作成しなければならない。 (ただし、 fanotify API -では、サブディレクトリが監視対象としてマークされているディレクトリに作成された際に検出する手段は提供されていない点に注意すること。) -マウントの監視を使うことで、 ディレクトリツリー全体を監視することができる。 -.PP -ベントキューはオーバーフローすることがある。 この場合、 イベントは失われる。 -.SH バグ -Linux 3.17 時点では、 以下のバグが存在する。 -.IP * 3 -Linux では、ファイルシステムオブジェクトは複数のパスでアクセス可能である。 例えば、 ファイルシステムの一部は \fBmount\fP(8) の -\fI\-\-bind\fP オプションを使って再マウントされることがある。 マークされたマウントの監視者は、 -同じマウントを使ったファイルオブジェクトについてのみイベント通知を受ける。 それ以外のイベントは通知されない。 -.IP * -\fBfallocate\fP(2) の呼び出しでは fanotify イベントが作成されない。 -.IP * -.\" FIXME . A patch was proposed. -イベントが生成された際に、 そのファイルのファイルディスクリプターを渡す前に、 イベントを受信するプロセスのユーザー ID -がそのファイルに対する読み出し/書き込み許可があるかの確認は行われない。 非特権ユーザーによって実行されたプログラムに \fBCAP_SYS_ADMIN\fP -ケーパビリティーがセットされている場合には、 このことはセキュリティーリスクとなる。 -.IP * -\fBread\fP(2) の呼び出しが fanotify キューから複数のイベントを処理している際に、 エラーが発生した場合、 -返り値はエラーが発生する前までにユーザー空間バッファーに正常にコピーされたイベントの合計長となる。 返り値は \-1 にならず、 \fIerrno\fP -もセットされない。 したがって、 読み出しを行うアプリケーションではエラーを検出する方法はない。 -.SH 例 -以下のプログラムは fanotify API の使用法を示すものである。 コマンドライン引き数で渡されたマウントポイントを監視し、 種別が -\fBFAN_PERM_OPEN\fP と \fBFAN_CLOSE_WRITE\fP のイベントを待つ。 アクセス許可イベントが発生には、 -\fBFAN_ALLOW\fP 応答を返す。 -.PP -以下の出力例はファイル \fI/home/user/temp/notes\fP を編集した際に記録されたものである。 ファイルをオープンする前に -\fBFAN_OPEN_PERM\fP イベントが発生している。 ファイルをクローズした後に \fBFAN_CLOSE_WRITE\fP イベントが発生している。 -エンターキーをユーザーが押すと、 このプログラムの実行は終了する。 -.SS 出力例 -.in +4n -.nf -# ./fanotify_example /home -Press enter key to terminate. -Listening for events. -FAN_OPEN_PERM: File /home/user/temp/notes -FAN_CLOSE_WRITE: File /home/user/temp/notes - -Listening for events stopped. -.fi -.in -.SS プログラムソース -.nf -#define _GNU_SOURCE /* O_LARGEFILE の定義を得るために必要 */ -#include -#include -#include -#include -#include -#include -#include -#include - -/* ファイルディスクリプター 'fd' から読み出しできる全 fanotify イベントを読み出す */ - -static void -handle_events(int fd) -{ - const struct fanotify_event_metadata *metadata; - struct fanotify_event_metadata buf[200]; - ssize_t len; - char path[PATH_MAX]; - ssize_t path_len; - char procfd_path[PATH_MAX]; - struct fanotify_response response; - - /* fanotify ファイルディスクリプターからイベントが読み出せる間はループする */ - - for(;;) { - - /* イベントを読み出す */ - - len = read(fd, (void *) &buf, sizeof(buf)); - if (len == \-1 && errno != EAGAIN) { - perror("read"); - exit(EXIT_FAILURE); - } - - /* 読み出せるデータの最後に達しているかチェックする */ - - if (len <= 0) - break; - - /* バッファーの最初のイベントを参照する */ - - metadata = buf; - - /* バッファー内の全イベントを処理する */ - - while (FAN_EVENT_OK(metadata, len)) { - - /* 実行時とコンパイル時の構造体が一致するか確認する */ - - if (metadata\->vers != FANOTIFY_METADATA_VERSION) { - fprintf(stderr, - "Mismatch of fanotify metadata version.\en"); - exit(EXIT_FAILURE); - } - - /* metadata\->fd には、キューのオーバーフローを示す FAN_NOFD か、 - ファイルディスクリプター (負でない整数) のいずれかが入っている。 - ここではキューのオーバーフローは無視している。 */ - - if (metadata\->fd >= 0) { - - /* オープン許可イベントを処理する */ - - if (metadata\->mask & FAN_OPEN_PERM) { - printf("FAN_OPEN_PERM: "); - - /* ファイルのオープンを許可する */ - - response.fd = metadata\->fd; - response.response = FAN_ALLOW; - write(fd, &response, - sizeof(struct fanotify_response)); - } - - /* 書き込み可能ファイルのクローズイベントを処理する */ - - if (metadata\->mask & FAN_CLOSE_WRITE) - printf("FAN_CLOSE_WRITE: "); - - /* アクセスされたファイルのパス名を取得し表示する */ - - snprintf(procfd_path, sizeof(procfd_path), - "/proc/self/fd/%d", metadata\->fd); - path_len = readlink(procfd_path, path, - sizeof(path) \- 1); - if (path_len == \-1) { - perror("readlink"); - exit(EXIT_FAILURE); - } - - path[path_len] = '\e0'; - printf("File %s\en", path); - - /* イベントのファイルディスクリプターをクローズする */ - - close(metadata\->fd); - } - - /* 次のイベントに進む */ - - metadata = FAN_EVENT_NEXT(metadata, len); - } - } -} - -int -main(int argc, char *argv[]) -{ - char buf; - int fd, poll_num; - nfds_t nfds; - struct pollfd fds[2]; - - /* マウントポイントが指定されたか確認する */ - - if (argc != 2) { - fprintf(stderr, "Usage: %s MOUNT\en", argv[0]); - exit(EXIT_FAILURE); - } - - printf("Press enter key to terminate.\en"); - - /* fanotify API にアクセスするためのファイルディスクリプターを作成する */ - - fd = fanotify_init(FAN_CLOEXEC | FAN_CLASS_CONTENT | FAN_NONBLOCK, - O_RDONLY | O_LARGEFILE); - if (fd == \-1) { - perror("fanotify_init"); - exit(EXIT_FAILURE); - } - - /* 指定されたマウントに対して以下を監視するようにマークを付ける: - \- ファイルのオープン前のアクセス許可イベント - \- 書き込み可能なファイルディスクリプターのクローズ後の - 通知イベント */ - - if (fanotify_mark(fd, FAN_MARK_ADD | FAN_MARK_MOUNT, - FAN_OPEN_PERM | FAN_CLOSE_WRITE, AT_FDCWD, - argv[1]) == \-1) { - perror("fanotify_mark"); - exit(EXIT_FAILURE); - } - - /* ポーリングの準備 */ - - nfds = 2; - - /* コンソールの入力 */ - - fds[0].fd = STDIN_FILENO; - fds[0].events = POLLIN; - - /* fanotify の入力 */ - - fds[1].fd = fd; - fds[1].events = POLLIN; - - /* イベントの発生を待つループ */ - - printf("Listening for events.\en"); - - while (1) { - poll_num = poll(fds, nfds, \-1); - if (poll_num == \-1) { - if (errno == EINTR) /* シグナルに割り込まれた場合 */ - continue; /* poll() を再開する */ - - perror("poll"); /* 予期しないエラー */ - exit(EXIT_FAILURE); - } - - if (poll_num > 0) { - if (fds[0].revents & POLLIN) { - - /* コンソールからの入力がある場合: 空の標準入力であれば終了 */ - - while (read(STDIN_FILENO, &buf, 1) > 0 && buf != '\en') - continue; - break; - } - - if (fds[1].revents & POLLIN) { - - /* fanotify イベントがある場合 */ - - handle_events(fd); - } - } - } - - printf("Listening for events stopped.\en"); - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -.ad l -\fBfanotify_init\fP(2), \fBfanotify_mark\fP(2), \fBinotify\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/feature_test_macros.7 b/manual/LDP_man-pages/draft/man7/feature_test_macros.7 deleted file mode 100644 index f19aa611..00000000 --- a/manual/LDP_man-pages/draft/man7/feature_test_macros.7 +++ /dev/null @@ -1,484 +0,0 @@ -.\" This manpage is Copyright (C) 2006, 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-07-16, Akihiro MOTOKI -.\" Updated 2007-05-01, Akihiro MOTOKI, LDP v2.46 -.\" Updated 2007-09-08, Akihiro MOTOKI, LDP v2.64 -.\" Updated 2009-04-23, Akihiro MOTOKI, LDP v3.21 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH FEATURE_TEST_MACROS 7 2014\-03\-20 Linux "Linux Programmer's Manual" -.SH 名前 -feature_test_macros \- 機能検査マクロ -.SH 書式 -.nf -\fB#include \fP -.fi -.SH 説明 -機能検査マクロ (feature test macro) により、プログラマは プログラムがコンパイルされる際にシステムのヘッダーファイルにより -公開される定義を制御することができる。 - -\fB注意:\fP 機能検査マクロを機能させるには、機能検査マクロの定義を 「どのヘッダーファイルのインクルードよりも前で」行わなければならない。 -これを実現するには、 コンパイルコマンドで指定する方法 (\fIcc \-DMACRO=value\fP) と、ソースコード内で必要なマクロの定義を -どのヘッダーのインクルードよりも前で行う方法がある。 - -機能検査マクロを使うと、非標準の定義が公開されないようにでき、 移植性のあるアプリケーションを作成するのに役立つ。 -他のマクロを使うと、デフォルトでは公開されない非標準の定義を 公開することができる。 以下で説明する機能検査マクロのそれぞれの正確な影響を確認するには、 -ヘッダーファイル \fI\fP を調べればよい。 -.SS マニュアルページでの機能検査マクロの要件の規定 -関数が機能検査マクロの定義を必要とする場合、 マニュアルページの書式 (SYNOPSIS) の節に 以下の形式の注釈を入れる (以下の例は -\fBacct\fP(2) のマニュアルページからの引用である)。 -.RS 8 -.sp -\fB#include \fP -.sp -\fBint acct(const char *\fP\fIfilename\fP\fB);\fP -.sp -.nf -.in -4n -glibc 向けの機能検査マクロの要件 -(\fBfeature_test_macros\fP(7) -参照): -.fi -.in -.sp -\fBacct\fP(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500) -.RE -.PP -\fB||\fP は、 \fBacct\fP(2) の定義を \fI\fP -から得るには、以下のマクロの定義のいずれかを、どのヘッダーファイルの インクルードよりも前で行わなければならないことを意味する。 -.RS -.nf - -#define _BSD_SOURCE -#define _XOPEN_SOURCE /* 500 未満の任意の値 */ -.fi -.RE -.PP -別の方法としては、等価な定義をコンパイル用のコマンドで 指定することもできる。 -.RS -.nf - -cc \-D_BSD_SOURCE -cc \-D_XOPEN_SOURCE # 500 未満の任意の値 -.fi -.RE -.PP -後で述べるが、 \fB「いくつかの機能検査マクロはデフォルトで定義される」\fP 点に注意すること。 このため、「書式」に記載された機能検査マクロを常に -明示的に指定する必要があるわけではない。 - -あまり多くないが、マニュアルページによっては、 機能検査マクロの要件を以下のように簡単な表現で記載する場合がある。 (以下の例は -\fBreadahead\fP(2) のマニュアルページからの引用である)。 -.RS -.nf - -\fB#define _GNU_SOURCE\fP -\fB#include \fP -.sp -\fBssize_t readahead(int \fP\fIfd\fP\fB, off64_t *\fP\fIoffset\fP\fB, size_t \fP\fIcount\fP\fB);\fP -.fi -.RE -.PP -関数定義の公開に使える機能検査マクロが一つだけで、 デフォルトではそのマクロが定義されない場合に、 この形式の表現を利用する。 -.SS "glibc が解釈する機能検査マクロ" -.\" The details in glibc 2.0 are simpler, but combining a -.\" a description of them with the details in later glibc versions -.\" would make for a complicated description. -以下では、Linux glibc 2.\fIx\fP (\fIx\fP > 0) において、 機能検査マクロがどのように扱われるかを説明する。 - -Linux/glibc は以下の機能検査マクロを解釈する: -.TP -\fB__STRICT_ANSI__\fP -ISO 標準の C。 \fBgcc\fP(1) を \fI\-std=c99\fP や \fI\-ansi\fP などのフラグを付けて起動した場合、 -このマクロは暗黙のうちに定義される。 -.TP -\fB_POSIX_C_SOURCE\fP -このマクロを定義すると、ヘッダーファイルで以下の定義が公開される。 -.RS -.IP \(bu 3 -値が 1 の場合、POSIX.1\-1990 と ISO C (1990) に準拠する定義が公開される。 -.IP \(bu -値が 2 以上の場合、 POSIX.2\-1992 関連の定義も追加で公開される。 -.IP \(bu -.\" 199506L functionality is available only since glibc 2.1 -値が 199309 以上の場合、 POSIX.1b (リアルタイム拡張) 関連の定義が追加で公開される。 -.IP \(bu -値が 199506 以上の場合、 POSIX.1c (スレッド) 関連の定義が追加で公開される。 -.IP \(bu -(glibc 2.3.3 以降) 値が 200112L 以上の場合、 (XSI 拡張を除く) POSIX.1\-2001 -基本仕様に対応する定義も追加で公開され、また C95 (glibc 2.12 以降) と C99 (glibc 2.10 以降) の機能も公開される。 -.IP \(bu -(glibc 2.10 以降) 値が 200809L 以上の場合、 (XSI 拡張を除く) POSIX.1\-2008 -基本仕様に対応する定義が追加で公開される。 -.RE -.TP -\fB_POSIX_SOURCE\fP -このマクロは廃止予定である。 このマクロが定義されると、値に関わらず、 \fB_POSIX_C_SOURCE\fP を値 1 で定義するのと等価となる。 -.TP -\fB_XOPEN_SOURCE\fP -このマクロを定義すると、ヘッダーファイルで以下の定義が公開される。 -.RS -.IP \(bu 3 -どんな値でも、ヘッダーファイルで POSIX.1, POSIX.2, XPG4 に準拠する定義が公開される。 -.IP \(bu -値が 500 以上の場合、 SUSv2 (UNIX 98) 関連の定義が追加で公開される。 -.IP \(bu -(glibc 2.2 以降) 値が 600 以上の場合、 SUSv3 (UNIX 03; POSIX.1\-2001 基本仕様 + XSI 拡張と同じ) -関連の定義と C99 での定義が追加で公開される。 -.IP \(bu -(glibc 2.10 以降) 値が 700 以上の場合、 SUSv4 (POSIX.1\-2008 基本仕様 + XSI 拡張と同じ) -関連の定義が追加で公開される。 -.RE -.IP -\fB__STRICT_ANSI__\fP が定義されていない場合、または \fB_XOPEN_SOURCE\fP が 500 以上の値で定義されていて、 -\fB_POSIX_SOURCE\fP も \fB_POSIX_C_SOURCE\fP も明示的に定義されていない場合、以下のマクロが暗黙のうちに定義される。 -.RS -.IP \(bu 3 -\fB_POSIX_SOURCE\fP が値 1 で定義される。 -.IP \(bu -\fB_POSIX_C_SOURCE\fP は、\fB_XOPEN_SOURCE\fP の値に基づいて定義される。 -.RS 7 -.TP -\fB_XOPEN_SOURCE\fP < 500 -\fB_POSIX_C_SOURCE\fP が値 2 で定義される。 -.TP -500 <= \fB_XOPEN_SOURCE\fP < 600 -\fB_POSIX_C_SOURCE\fP が値 199506L で定義される。 -.TP -600 <= \fB_XOPEN_SOURCE\fP < 700 -\fB_POSIX_C_SOURCE\fP が値 200112L で定義される。 -.TP -700 <= \fB_XOPEN_SOURCE\fP (glibc 2.10 以降) -\fB_POSIX_C_SOURCE\fP が値 200809L で定義される。 -.RE -.RE -.TP -\fB_XOPEN_SOURCE_EXTENDED\fP -このマクロが定義され、さらに \fB_XOPEN_SOURCE\fP が定義されていると、XPG4v2 (SUSv1) UNIX 拡張 (UNIX 95) -に対応する定義が公開される。 \fB_XOPEN_SOURCE\fP が 500 以上の値で定義された場合、このマクロは暗黙のうちに定義される。 -.TP -\fB_ISOC99_SOURCE\fP (glibc 2.1.3 以降) -ISO C99 標準に準拠した宣言を公開する。 - -初期のバージョン 2.1.x の glibc では、これと等価な \fB_ISOC9X_SOURCE\fP という名前のマクロが使われていた -(なぜなら、C99 標準はまだ確定していなかったからである)。 \fB_ISOC9X_SOURCE\fP マクロの使用は廃止されているが、 glibc -は過去との互換性のため今でもこのマクロを認識する。 - -\fB_ISOC99_SOURCE\fP を定義すると、 ISO C (1990) Amendment 1 ("C95") の定義も公開される (C95 -での主要な変更点は国際化文字集合のサポートであった)。 -.TP -\fB_ISOC11_SOURCE\fP (glibc 2.16 以降) -ISO C11 標準に準拠した宣言を公開する。 このマクロを定義すると (\fB_ISOC99_SOURCE\fP 同様) C99 と C95 -の機能も有効になる。 -.TP -\fB_LARGEFILE64_SOURCE\fP -LFS (Large File Summit) により "暫定拡張 (transitional extension)" Single UNIX -Specification として規定された代替 API (alternative API) に関する定義を公開する ( -.UR http:\:/\:/opengroup.org\:/platform\:/lfs.html -.UE -参照)。 代替 API は新規オブジェクト -(関数と型) の集合で構成され、 その名前は "64" で終わる (例えば、 \fIoff_t\fP に対応するのは \fIoff64_t\fP、 -\fBlseek\fP() に対応するのは \fBlseek64\fP() である)。 新しいプログラムではこのマクロを利用しないこと。 代わりに -\fI_FILE_OFFSET_BITS=64\fP を利用すること。 -.TP -\fB_LARGEFILE_SOURCE\fP -このマクロは、歴史的には、ファイルオフセットで \fIlong int\fP を使う以前の API (\fBfseek\fP(3) や \fBftell\fP(3)) -の制限を解決する関数 (特に \fBfseeko\fP(3) と \fBftello\fP(3)) を公開するのに使われていた。 このマクロは -\fB_XOPEN_SOURCE\fP が 500 以上の値で定義されている場合に暗黙のうちに定義される。 -新しいプログラムでぇあこのマクロは使用すべきではない。 \fB_XOPEN_SOURCE\fP をただ定義するか、 \fB_FILE_OFFSET_BITS\fP -を値 64 で定義するのが、同じ結果を得るための推奨される方法である。 -.TP -\fB_FILE_OFFSET_BITS\fP -このマクロを値 64 で定義すると、ファイル I/O とファイルシステム操作に 関連する 32 ビット版の関数とデータタイプは自動的に 64 ビット版に -変換される。 これは、32 ビットシステムで大きなファイル (> 2 ギガバイト) の I/O を実行する際に役立つ -(このマクロを定義すると、コンパイルし直すだけで大きなファイルを 扱えるプログラムを書くことができる)。 - -64 ビットシステムは、もともと 2 ギガバイトより大きなファイルを 扱えるので、64 ビットシステムではこのマクロは効果を持たない。 -.TP -\fB_BSD_SOURCE\fP (glibc 2.20 以降では非推奨) -このマクロを定義すると、値に関わらず、ヘッダーファイルで BSD 由来の定義が公開される。 - -バージョン 2.18 以前の glibc では、このマクロを定義すると、相容れない標準が存在する状況において BSD 由来の定義を優先するようになる。 -ただし、 \fB_SVID_SOURCE\fP, \fB_POSIX_SOURCE\fP, \fB_POSIX_C_SOURCE\fP, -\fB_XOPEN_SOURCE\fP, \fB_XOPEN_SOURCE_EXTENDED\fP, \fB_GNU_SOURCE\fP -が一つでも定義された場合には、BSD 由来の定義は優先されなくなる。 glibc 2.19 以降では、 \fB_BSD_SOURCE\fP -を定義しても相容れない標準があっても BSD 由来の定義が優先されることはもはやなくなった。 - -.\" commit c941736c92fa3a319221f65f6755659b2a5e0a20 -.\" commit 498afc54dfee41d33ba519f496e96480badace8e -.\" commit acd7f096d79c181866d56d4aaf3b043e741f1e2c -.\" commit ade40b10ff5fa59a318cf55b9d8414b758e8df78 -glibc 2.20 以降では、このマクロは非推奨である。 このマクロは現在は \fB_DEFAULT_SOURCE\fP を定義するのと同じ効果を持つが、 -(\fB_DEFAULT_SOURCE\fP が合わせて定義されていない場合には) コンパイル時の警告が出る。 代わりに \fB_DEFAULT_SOURCE\fP -を使用すること。 glibc 2.19 以前で \fB_BSD_SOURCE\fP が必要で glibc 2.20 以降で -\fB_DEFAULT_SOURCE\fP を必要とするプログラムを警告を出さずにコンパイルするには、 \fB_BSD_SOURCE\fP と -\fB_DEFAULT_SOURCE\fP の\fI両方\fPを定義すること。 -.TP -\fB_SVID_SOURCE\fP (glibc 2.20 以降では非推奨) -このマクロを定義すると (値に関わらず) ヘッダーファイルで System V 由来の定義が公開される (SVID == System V -Interface Definition; \fBstandards\fP(7) 参照)。 - -glibc 2.20 以降、 \fB_BSD_SOURCE\fP と同様にこのマクロは非推奨となっている。 -.TP -\fB_DEFAULT_SOURCE\fP (glibc 2.19 以降) -このマクロを使うと、「デフォルト」が無効になるような場合でも「デフォルト」の定義が提供されるようにすることができる。「デフォルト」が無効になるような状況は、個別のマクロが明示的に定義された場合や、コンパイラが「標準」モードのいずれか -(例えば \fIcc\ \-std=c99\fP) -で起動された場合などである。他の個々のマクロが定義されず、コンパイラも「標準」モードのいずれかを指定して起動されていない場合は、 -\fB_DEFAULT_SOURCE\fP を定義しても何の効果もない。 - -「デフォルト」定義は、 POSIX.1\-2008 で必須となっている定義と、 BSD と System V 由来の種々の定義を公開する。 glibc -2.19 以前では、これらのデフォルトは以下を明示的に定義するのとほぼ等価である。 - - cc \-D_BSD_SOURCE \-D_SVID_SOURCE \-D_POSIX_C_SOURCE=200809 - -.TP -\fB_ATFILE_SOURCE\fP (glibc 2.4 以降) -このマクロを定義すると (値に関わらず) ヘッダーファイルで 名前の末尾が "at" の各種の関数の定義が公開される。 \fBopenat\fP(2) -参照。 glibc 2.10 以降では、 \fB_POSIX_C_SOURCE\fP が 200809L 以上の値で定義された場合には、 -このマクロも暗黙のうちに定義される。 -.TP -\fB_GNU_SOURCE\fP -このマクロを定義すると (値に関わらず) 以下のマクロが暗黙のうちに定義される: \fB_ATFILE_SOURCE\fP, -\fB_LARGEFILE64_SOURCE\fP, \fB_ISOC99_SOURCE\fP, \fB_XOPEN_SOURCE_EXTENDED\fP, -\fB_POSIX_SOURCE\fP, 値 200809L の \fB_POSIX_C_SOURCE\fP (バージョン 2.10 より前の glibc では値は -200112L、 バージョン 2.5 より前の glibc では値は 199506L、 バージョン 2.1 より前の glibc では値は -199309L), 値 700 の \fB_XOPEN_SOURCE\fP (バージョン 2.10 より前の glibc では値は 600、 バージョン -2.2 より前の glibc では値は 500)。 - -glibc 2.19 以降では、 \fB_GNU_SOURCE\fP を定義すると、 \fB_DEFAULT_SOURCE\fP も暗黙のうちに定義される。 -バージョン 2.20 より前の glibc では、 \fB_GNU_SOURCE\fP を定義すると、 \fB_BSD_SOURCE\fP と -\fB_SVID_SOURCE\fP も暗黙のうちに定義されていた。 -.TP -\fB_REENTRANT\fP -このマクロを定義すると、いくつかのリエントラント (再入可能) な関数 定義が公開される。マルチスレッドプログラムでは、この代わりに \fIcc\ \-pthread\fP を使用すること。 -.TP -\fB_THREAD_SAFE\fP -\fB_REENTRANT\fP の同義語。 他のいくつかの実装との互換性を提供するためのもの。 -.TP -\fB_FORTIFY_SOURCE\fP (glibc 2.3.4 以降) -.\" For more detail, see: -.\" http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html -.\" [PATCH] Object size checking to prevent (some) buffer overflows -.\" * From: Jakub Jelinek -.\" * To: gcc-patches at gcc dot gnu dot org -.\" * Date: Tue, 21 Sep 2004 04:16:40 -0400 -このマクロを定義すると、文字列やメモリーの操作を行う様々な関数を使用する際にバッファーオーバーフローを検出するための軽めのチェックが実行されるようになる。すべてのバッファーオーバーフローが検出されるわけではなく、あくまでよくある例についてだけである。 - -ついてだけである。 現在の実装では、以下の関数にチェックが追加されている: \fBmemcpy\fP(3), \fBmempcpy\fP(3), -\fBmemmove\fP(3), \fBmemset\fP(3), \fBstpcpy\fP(3), \fBstrcpy\fP(3), \fBstrncpy\fP(3), -\fBstrcat\fP(3), \fBstrncat\fP(3), \fBsprintf\fP(3), \fBsnprintf\fP(3), \fBvsprintf\fP(3), -\fBvsnprintf\fP(3), \fBgets\fP(3) - -\fB_FORTIFY_SOURCE\fP が 1 に設定された場合、コンパイラの最適化レベルが 1 (\fIgcc\ \-O1\fP) -かそれ以上であれば、規格に準拠するプログラムの振る舞いを 変化させないようなチェックが実行される。 \fB_FORTIFY_SOURCE\fP が 2 -に設定された場合、さらなるチェックが追加されるが、 規格に準拠するプログラムのいくつかが失敗する可能性がある。 -いくつかのチェックはコンパイル時に実行でき、コンパイラの警告として 表示される。他のチェックは実行時に行われ、チェックに失敗した場合 -には実行時エラーとなる。 - -このマクロを使用するにはコンパイラの対応が必要であり、 バージョン 4.0 以降の \fBgcc\fP(1) で利用できる。 -.SS デフォルトの定義、暗黙の定義、組み合わせ定義 -.PP -機能検査マクロが一つも明示的に定義されなかった場合、 デフォルトで機能検査マクロ \fB_BSD_SOURCE\fP (glibc 2.19 以前), -\fB_SVID_SOURCE\fP (glibc 2.19 以前), \fB_DEFAULT_SOURCE\fP (glibc 2.19 以降), -\fB_POSIX_SOURCE\fP, \fB_POSIX_C_SOURCE\fP=200809L が定義される (バージョン 2.10 より前の glibc -では値は 200112L、 バージョン 2.4 より前の glibc では値は 199506L、 バージョン 2.1 より前の glibc では値は -199309L)。 -.PP -\fB__STRICT_ANSI__\fP, \fB_ISOC99_SOURCE\fP, \fB_POSIX_SOURCE\fP, \fB_POSIX_C_SOURCE\fP, -\fB_XOPEN_SOURCE\fP, \fB_XOPEN_SOURCE_EXTENDED\fP, \fB_BSD_SOURCE\fP (glibc 2.19 以前), -\fB_SVID_SOURCE\fP (glibc 2.19 以前) のいずれかが明示的に定義された場合、 \fB_BSD_SOURCE\fP, -\fB_SVID_SOURCE\fP, \fB_SVID_SOURCE\fP はデフォルトでは定義されない。 - -\fB_POSIX_SOURCE\fP と \fB_POSIX_C_SOURCE\fP が明示的に定義されない場合で、 \fB__STRICT_ANSI__\fP -が定義されない、もしくは \fB_XOPEN_SOURCE\fP が 500 以上の値で定義されたときには、 -.IP * 3 -\fB_POSIX_SOURCE\fP が値 1 で定義され、かつ -.IP * -\fB_POSIX_C_SOURCE\fP は以下の値のいずれか一つで定義される。 -.RS 3 -.IP \(bu 3 -2 (\fB_XOPEN_SOURCE\fP が 500 未満の値で定義された場合) -.IP \(bu -199506L (\fB_XOPEN_SOURCE\fP が 500 以上 600 未満の値で定義された場合) -.IP \(bu -(glibc 2.4 以降) 200112L (\fB_XOPEN_SOURCE\fP が 600 以上 700 未満の値で定義された場合) -.IP \(bu -(glibc 2.10 以降) 200809L (\fB_XOPEN_SOURCE\fP が 700 以上の値で定義された場合) -.IP \(bu -古いバージョンの glibc では \fB_POSIX_C_SOURCE\fP の値として 200112L や 200809L は存在せず、 -\fB_POSIX_C_SOURCE\fP の値がどうなるかは glibc のバージョンにより異なる。 -.IP \(bu -\fB_XOPEN_SOURCE\fP が未定義の場合、 \fB_POSIX_C_SOURCE\fP の値は glibc のバージョンにより異なる。 バージョン -2.4 より前の glibc では 199506L、 バージョン 2.4 以降 2.9 未満では 200112L、 glibc 2.10 以降では -200809L となる。 -.RE -.PP -また、複数のマクロを定義することもできる。 この場合、定義したマクロはすべて有効になる。 -.SH 準拠 -POSIX.1 では \fB_POSIX_C_SOURCE\fP, \fB_POSIX_SOURCE\fP, \fB_XOPEN_SOURCE\fP が規定されている。 -\fB_XOPEN_SOURCE_EXTENDED\fP は XPG4v2 (別名 SUSv1) で規定されていた。 - -\fB_FILE_OFFSET_BITS\fP はどの標準でも規定されていないが、 他のいくつかの実装で採用されている。 - -\fB_BSD_SOURCE\fP, \fB_SVID_SOURCE\fP, \fB_DEFAULT_SOURCE\fP, \fB_ATFILE_SOURCE\fP, -\fB_GNU_SOURCE\fP, \fB_FORTIFY_SOURCE\fP, \fB_REENTRANT\fP, \fB_THREAD_SAFE\fP は Linux -(glibc) 固有である。 -.SH 注意 -\fI\fP は Linux/glibc 固有のヘッダーファイルである。 -他のシステムにも同様の目的のファイルがあるが、普通は違う名前である。 このヘッダーファイルは、他のヘッダーファイルにより必要に応じて -自動的にインクルードされる。機能検査マクロを利用するために 明示的にインクルードする必要はない。 - -上記の機能検査マクロのうちどれが定義されたかにしたがって、 \fI\fP は、他の glibc -ヘッダーファイルでチェックされる各種の他のマクロを、 内部で定義する。これらのマクロの名前はアンダースコア 2つで始まる (例えば -\fB__USE_MISC\fP)。 ユーザープログラムはこれらのマクロを \fI決して\fP 直接定義すべきではない。 -代わりに、上記のリストにある適切な機能検査マクロを利用すべきである。 -.SH 例 -下記のプログラムを使うと、各種の機能検査マクロが glibc のバージョン に応じてどのように設定されるかや、どの機能検査マクロが明示的に -設定されるか、を調べることができる。 以下に示すシェルセッションは、 glibc 2.10 のシステムでの実行結果の例である。 -.in +4n -.nf - -$ \fBcc ftm.c\fP -$ \fB./a.out\fP -_POSIX_SOURCE defined -_POSIX_C_SOURCE defined: 200809L -_BSD_SOURCE defined -_SVID_SOURCE defined -_ATFILE_SOURCE defined -$ \fBcc \-D_XOPEN_SOURCE=500 ftm.c\fP -$ \fB./a.out\fP -_POSIX_SOURCE defined -_POSIX_C_SOURCE defined: 199506L -_XOPEN_SOURCE defined: 500 -$ \fBcc \-D_GNU_SOURCE ftm.c\fP -$ \fB./a.out\fP -_POSIX_SOURCE defined -_POSIX_C_SOURCE defined: 200809L -_ISOC99_SOURCE defined -_XOPEN_SOURCE defined: 700 -_XOPEN_SOURCE_EXTENDED defined -_LARGEFILE64_SOURCE defined -_BSD_SOURCE defined -_SVID_SOURCE defined -_ATFILE_SOURCE defined -_GNU_SOURCE defined -.fi -.in -.SS プログラムのソース -\& -.nf -/* ftm.c */ - -#include -#include -#include - -int -main(int argc, char *argv[]) -{ -#ifdef _POSIX_SOURCE - printf("_POSIX_SOURCE defined\en"); -#endif - -#ifdef _POSIX_C_SOURCE - printf("_POSIX_C_SOURCE defined: %ldL\en", (long) _POSIX_C_SOURCE); -#endif - -#ifdef _ISOC99_SOURCE - printf("_ISOC99_SOURCE defined\en"); -#endif - -#ifdef _ISOC11_SOURCE - printf("_ISOC11_SOURCE defined\en"); -#endif - -#ifdef _XOPEN_SOURCE - printf("_XOPEN_SOURCE defined: %d\en", _XOPEN_SOURCE); -#endif - -#ifdef _XOPEN_SOURCE_EXTENDED - printf("_XOPEN_SOURCE_EXTENDED defined\en"); -#endif - -#ifdef _LARGEFILE64_SOURCE - printf("_LARGEFILE64_SOURCE defined\en"); -#endif - -#ifdef _FILE_OFFSET_BITS - printf("_FILE_OFFSET_BITS defined: %d\en", _FILE_OFFSET_BITS); -#endif - -#ifdef _BSD_SOURCE - printf("_BSD_SOURCE defined\en"); -#endif - -#ifdef _SVID_SOURCE - printf("_SVID_SOURCE defined\en"); -#endif - -#ifdef _DEFAULT_SOURCE - printf("_DEFAULT_SOURCE defined\en"); -#endif - -#ifdef _ATFILE_SOURCE - printf("_ATFILE_SOURCE defined\en"); -#endif - -#ifdef _GNU_SOURCE - printf("_GNU_SOURCE defined\en"); -#endif - -#ifdef _REENTRANT - printf("_REENTRANT defined\en"); -#endif - -#ifdef _THREAD_SAFE - printf("_THREAD_SAFE defined\en"); -#endif - -#ifdef _FORTIFY_SOURCE - printf("_FORTIFY_SOURCE defined\en"); -#endif - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -\fBlibc\fP(7), \fBstandards\fP(7) - -.\" But beware: the info libc document is out of date (Jul 07, mtk) -\fIinfo libc\fP の "Feature Test Macros" の節。 - -\fI/usr/include/features.h\fP -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/fifo.7 b/manual/LDP_man-pages/draft/man7/fifo.7 deleted file mode 100644 index 534ecdd0..00000000 --- a/manual/LDP_man-pages/draft/man7/fifo.7 +++ /dev/null @@ -1,56 +0,0 @@ -.\" This man page is Copyright (C) 1999 Claus Fischer. -.\" -.\" %%%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 -.\" -.\" 990620 - page created - aeb@cwi.nl -.\" -.\" FIXME . Add example programs to this page? -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Wed Jan 5 23:35:27 JST 2000 -.\" by HANATAKA Shinya -.\" -.TH FIFO 7 2008\-12\-03 Linux "Linux Programmer's Manual" -.SH 名前 -fifo \- 先入先出特殊ファイル、名前付きパイプ -.SH 説明 -FIFO 特殊ファイル(名前付きパイプ)はパイプに似ているが、 ファイルシステムの一部に関連付けられている点が異っている。 -複数のプロセスが読み込みや書き込みのためにオープンすること ができる。プロセスが FIFO を通しデータを交換する場合、 -実際にそれをファイルシステムには書き込まず、カーネルは全ての データを内部的に渡す。このように、FIFO 特殊ファイルはファイルシステム -上には内容を持たないので、ファイルシステムのエントリーは プロセスがそのファイルシステム上の名前を使用してそのパイプに -アクセスできるように参照ポイントを提供しているに過ぎない。 -.PP -カーネルは、少なくとも一つのプロセスによってオープンされている FIFO 特殊ファイルについて、それぞれ一つのパイプのみを管理している。 -データが渡される前にその FIFO の両端(書き込みと読み出し)がオープン されていなければならない。通常、FIFO をオープンすると、 -その反対側がオープンされるまで停止(block)させられる。 -.PP -プロセスは FIFO を非停止(nonblocking)モードでオープンすることもできる。 -この場合、読み込み専用でオープンした場合には書き込み側を誰もオープン していなくても成功する。書き込み専用でオープンした場合は反対側が既に -オープンされていなければ \fBENXIO\fP (そのようなデバイスまたはアドレスは存在しない) というエラーで失敗する。 -.PP -Linux では、FIFO を読み込みと書き込み両用にオープンした場合、 停止、非停止のどちらのモードでも成功する。POSIX ではこの場合の -動作は定義されていない。これは読み込み側がいない時に書き込み用に オープンするために使用することができる。自分自身と通信するために -両端を使用するプロセスはデッドロックを避けるために非常に注意深く なければならない。 -.SH 注意 -プロセスが、反対の読み込み側がオープンされていない FIFO を 書き込みのためにオープンしようとした場合、そのプロセスに \fBSIGPIPE\fP -シグナルが送られる。 - -FIFO 特殊ファイルは \fBmkfifo\fP(3) で作成することができ、 \fIls \-l\fP ではファイル種別 \(aqp\(aq で表示される。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/futex.7 b/manual/LDP_man-pages/draft/man7/futex.7 deleted file mode 100644 index f71f8fea..00000000 --- a/manual/LDP_man-pages/draft/man7/futex.7 +++ /dev/null @@ -1,96 +0,0 @@ -.\" This manpage has been automatically generated by docbook2man -.\" from a DocBook document. This tool can be found at: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.\" -.\" %%%LICENSE_START(MIT) -.\" This page is made available under the MIT license. -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright(C) 2003 Suzuki Takashi -.\" all rights reserved. -.\" Translated Fri Oct 24 10:37:10 JST 2003 -.\" by Suzuki Takashi. -.\" -.TH FUTEX 7 2012\-08\-05 Linux "Linux Programmer's Manual" -.SH 名前 -futex \- 高速ユーザー空間ロック機構 -.SH 書式 -.nf -\fB#include \fP -.fi -.SH 説明 -.PP -Linux カーネルは、ユーザー空間で高速なロック機構やセマフォを使用するための 基礎的要素として futex ("Fast user\-space -mutexes"; 高速ユーザー空間 mutex) を 提供している。 futex は非常に基本的なもので、 POSIX mutex -のような高度なロック機構の概念を構築するのに役立っている。 -.PP -このページはすべての設計決定を記述するようにはなっておらず、 アプリケーションやライブラリの開発に関係することがらに限っている。 -実際にはプログラマの多くは直接は futex を扱わないが、その代わり futex に基づいて構築されたシステムライブラリ (例えば NPTL -スレッド) に 依存することになるだろう。 -.PP -futex は異なるプロセス間で共有することのできるメモリー片で識別される。 これらの異なるプロセスでは、同じアドレスが付与されている必要はない。 -裸の姿では futex のセマンティクスはセマフォと同じである。 futex は不可分操作で (atomically) -インクリメントしたりデクリメントしたりできる カウンターで、プロセスは値が正になるのを待つことができる。 -.PP -futex の操作は、競合がない場合には完全にユーザー空間で行なわれる。 カーネルは競合が起こった場合の仲裁に関与するだけである。 -良識ある設計では競合が起こらないよう努力するが、 futex も競合状態に関して最適化されている。 -.PP -裸の姿では、 futex は不可分なアセンブリ命令でのみ操作される アラインメントの揃った int 型の変数である。 複数のプロセスはこの int -型変数を、 \fBmmap\fP(2) を用いるか、 共有メモリーセグメントを介するか、 メモリー空間を共有する (この場合、 -アプリケーションは一般的にマルチスレッドであると呼ばれる) か方法で共有する。 -.SS セマンティクス -.PP -futex の操作はすべてユーザー空間から始まるが、必要に応じて \fBfutex\fP(2) システムコールを用いてカーネルと通信する。 -.PP -futex を "up" するには、 ホスト CPU に対し int 型変数を不可分操作でインクリメントするような、 適切なアセンブリ命令を実行する。 -そのあと、実際に 0 から 1 に変化したかどうかをチェックし、 変化していれば待ちプロセス (waiter) はないということであり、操作は完了する。 -これは競合のない場合であり、高速でよく起こるはずである。 -.PP -競合がある場合、不可分操作のインクリメントでカウンターは \-1 (または他の負の数) -から変化する。これが検出されると、待ちプロセスがあるということである。 ユーザー空間ではカウンターを 1 に設定し、 \fBFUTEX_WAKE\fP -を用いてカーネルに待ちプロセスを wake (起床) させるよう指示する。 -.PP -futex の獲得を待つ、すなわち futex を "down" するには反対の操作を行なう。 不可分操作でカウンターをデクリメントし、カウンターが 0 -に変化したかどうかを チェックする。変化していれば操作は完了し futex は競合していないということである。 0 -にならなかった場合、プロセスはカウンターを \-1 に設定し、 他のプロセスがその futex を up -するのを待つようカーネルに要求しなければならない。 これは \fBFUTEX_WAIT\fP を行なうことで実現される。 -.PP -\fBfutex\fP(2) システムコールには、省略可能な引数としてタイムアウトを渡すことができ、 カーネルはその futex が up -されるのをどれくらいの期間待つべきかを 指定することができる。この場合、セマンティクスはもっと複雑になるため、 より詳細な情報を得るにはプログラマは -\fBfutex\fP(2) を参照すること。 同じページに非同期の futex 待ちについても記されている。 -.SH バージョン -.PP -最初の futex 対応は Linux 2.5.7 で組み込まれたが、 上記のセマンティクスとは異なる。 現在のセマンティクスは Linux -2.5.40 以降で利用可能である。 -.SH 注意 -.PP -再び繰り返しておくが、裸の futex はエンドユーザーが容易に使える概念として 意図されたものではない。 -実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザー空間ライブラリの ソースを読み終えていることが要求される。 -.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. -このマニュアルページには \fBfutex\fP(2) プリミティブの最も一般的な使用法が 記されている。これは決して唯一の使用法ではない。 -.SH 関連項目 -\fBfutex\fP(2) - -\fIFuss, Futexes and Furwocks: Fast Userlevel Locking in Linux\fP (proceedings -of the Ottawa Linux Symposium 2002), futex の使用例ライブラリ, futex\-*.tar.bz2 -.UR ftp://ftp.kernel.org\:/pub\:/linux\:/kernel\:/people\:/rusty/ -.UE . -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/glob.7 b/manual/LDP_man-pages/draft/man7/glob.7 index 3a3a67ac..2f78c2ed 100644 --- a/manual/LDP_man-pages/draft/man7/glob.7 +++ b/manual/LDP_man-pages/draft/man7/glob.7 @@ -34,33 +34,33 @@ .\" Updated 2003-09-28 by NAKANO Takeo .\" Updated 2012-05-06, Akihiro MOTOKI .\" -.TH GLOB 7 2012\-07\-28 Linux "Linux Programmer's Manual" +.TH GLOB 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 glob \- パス名を glob する .SH 説明 昔々 UNIX\ V6 では、ワイルドカードパターンを展開する \fI/etc/glob\fP と言うプログラムがあった。その後すぐに、 この機能はシェルに組み込まれるようになった。 - +.PP 今日では、この機能をユーザープログラムからも実行できるよう、 \fBglob\fP(3) というライブラリルーチンも存在している。 - +.PP glob の規則を以下に述べる (POSIX.2 3.13)。 .SS ワイルドカードマッチ 文字列に \(aq?\(aq, \(aq*\(aq, \(aq[\(aq が含まれていると、 それはワイルドカードパターンとみなされる。 「glob する」というのは、ワイルドカードパターンを展開して、 そのパターンにマッチするパス名のリストを得ることである。 マッチは以下のように定義される。 - +.PP (ブラケット外部の) \(aq?\(aq はあらゆる単一の文字にマッチする。 - +.PP (ブラケット外部の) \(aq*\(aq はあらゆる文字列にマッチする。 空文字列 (empty string) にもマッチする。 .PP \fB文字クラス (character class)\fP -.sp +.PP "\fI[...]\fP" と言う表記は、先頭の \(aq[\(aq に続く最初の文字が \(aq!\(aq で なければ、ブラケットの中に含まれている文字のどれか一つにマッチする。 ブラケットの内部に含まれる文字列は空であってはならない。 したがって \(aq]\(aq も最初の文字に指定すればブラケットの内部に含めることが できる (つまり "\fI[][!]\fP" は \(aq[\(aq, \(aq]\(aq, \(aq!\(aq の 3 文字のどれかにマッチする)。 .PP \fB領域指定 (range)\fP -.sp +.PP 特殊な表記法が一つ存在する。\(aq\-\(aq を挟む二つの文字は領域指定となる。 (つまり "\fI[A\-Fa\-f0\-9]\fP" は "\fI[ABCDEFabcdef0123456789]\fP" と等価となる。) \(aq\-\(aq 文字そのものを入れたい場合は、 ブラケットの先頭または最後の文字に指定すればよい。 (つまり "\fI[]\-]\fP" は二つの文字 \(aq]\(aq と \(aq\-\(aq @@ -68,57 +68,60 @@ glob の規則を以下に述べる (POSIX.2 3.13)。 \(aq/\(aq にはマッチしない。後述を参照。) .PP \fB補集合 (complementation)\fP -.sp +.PP "\fI[!...]\fP" と言う表記は、ブラケットの内部に含まれない単一の文字にマッチする (ただし先頭にある \(aq!\(aq は除外)。 (つまり "\fI[!]a\-]\fP" は \(aq]\(aq, \(aqa\(aq, \(aq\-\(aq 以外のすべての文字の、どれか一つにマッチする。) - +.PP バックスラッシュ \(aq\e\(aq を前置すれば、 \(aq?\(aq, \(aq*\(aq, \(aq[\(aq は通常の文字として扱われる。 またはシェルのコマンドラインの一部に指定する場合は、 クォートで囲っても同じ効果が得られる。ブラケットの内部では、 これらの文字はその文字自身だけを意味する。 すなわち "\fI[[?*\e]\fP" は \(aq[\(aq, \(aq?\(aq, \(aq*\(aq, \(aq\e\(aq のどれか一文字にマッチする。 .SS "パス名 (pathname)" -glob 動作は、パス名のそれぞれの部分に独立に適用される。 パス名に存在する \(aq/\(aq は \(aq?\(aq や \(aq*\(aq -ワイルドカードにはマッチしない。 また "\fI[.\-0]\fP" のような領域指定にもマッチしない。 領域指定は陽に \(aq/\(aq -文字を含むことはできない。これは文法エラーとなる。 - +Globbing is applied on each of the components of a pathname separately. A +\(aq/\(aq in a pathname cannot be matched by a \(aq?\(aq or \(aq*\(aq +wildcard, or by a range like "\fI[.\-0]\fP". A range containing an explicit +\(aq/\(aq character is syntactically incorrect. (POSIX requires that +syntactically incorrect patterns are left unchanged.) +.PP \(aq.\(aq で始まるパス名では、この文字は陽にマッチさせなければならない。 (つまり \fIrm\ *\fP は .profile を削除しない。また \fItar\ c\ *\fP ではすべてのファイルはアーカイブされない。 \fItar\ c\ .\fP の方が良い。) .SS 空のリスト 先に与えた、わかりやすく簡単なルール、 「ワイルドカードパターンをマッチしたパス名のリストに展開する」と言うのは、 オリジナルの UNIX における定義であった。 これはパターンが空のリストに展開されることも許可されていた。 例えば - +.PP .nf xv \-wait 0 *.gif *.jpg .fi - +.PP において、*.gif ファイルが全くない場合でも、 これは空のリストに展開されるため、エラーにならない。 しかし POSIX では、文法的に正しくないパターンや、 マッチがなかったパターンは、 そのまま変更されずに残されることになっている。 \fIbash\fP では、次のコマンドで昔からの振る舞いに設定することができる。 - +.PP .\" In Bash v1, by setting allow_null_glob_expansion=true shopt \-s nullglob - +.PP (同様の問題は別のところでも起こっている。例えば、古いスクリプトにおける - +.PP .nf - rm \`find . \-name "*~"\` + rm \`find . \-name "*\(ti"\` .fi - +.PP のような記述は、新しいスクリプトでは - +.PP .nf - rm \-f nosuchfile \`find . \-name "*~"\` + rm \-f nosuchfile \`find . \-name "*\(ti"\` .fi - +.PP のようにしなければならない。さもないと \fIrm\fP を引き数リストなしで呼び出す可能性があり、 エラーメッセージが出てしまう。) .SH 注意 .SS 正規表現 ワイルドカードパターンは正規表現と多少似ているが、しかしこの両者は異なる。 まず第一に、前者がファイル名にマッチするのに対して、 後者はテキストにマッチする。第二に、ルールも同じではない。 例えば正規表現における \(aq*\(aq は、 前置された文字の 0 以上の繰り返しを表す。 - -正規表現にもブラケット表現はあるが、否定は \(aq^\(aq でなされる。 POSIX ではワイルドカードパターンにおける "\fI[^...]\fP" -を未定義であるとしている。 +.PP +Now that regular expressions have bracket expressions where the negation is +indicated by a \(aq\(ha\(aq, POSIX has declared the effect of a wildcard +pattern "\fI[\(ha...]\fP" to be undefined. .SS 文字クラスと国際化 領域指定は、もともとはもちろん ASCII における順序並びを意味していた。 したがって "\fI[\ \-%]\fP" は "\fI[\ !"#$%]\fP" の意味であり、 "\fI[a\-z]\fP" は「すべての小文字」の意味であった。 UNIX の実装の中には、これを拡張したものが存在し、 そこでは X\-Y @@ -129,33 +132,32 @@ glob 動作は、パス名のそれぞれの部分に独立に適用される。 ブラケット表記を大幅に拡張している。 これまで我々は、ブラケット表記には三つの要素が含まれうることを見てきた。 すなわち (i) 否定、(ii) 単一の文字、(iii) 領域指定、の三つである。 POSIX では、領域指定をより国際化に便利なように定義しており、 また三つのタイプをブラケット表記の要素として追加している。 - +.PP (iii) 領域指定 X\-Y は X と Y に挟まれた (両端含む) すべての文字を意味する。 このとき、カレントロケール (current locale) の \fBLC_COLLATE\fP カテゴリーで定義されている照合順序が用いられる。 - +.PP (iv) 名前付き文字クラス: 以下のようなものである。 +.PP .nf - [:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:] [:graph:] [:lower:] [:print:] [:punct:] [:space:] [:upper:] [:xdigit:] - .fi +.PP これを用いれば "\fI[a\-z]\fP" の代わりに "\fI[[:lower:]]\fP" のような指定ができる。 またデンマークのように、アルファベットの \(aqz\(aq 以降に 3 つの文字が存在するような場合でも、同じような動作が期待できる。 これらの文字クラスはカレントロケールの \fBLC_CTYPE\fP カテゴリーで定義されている。 - +.PP (v) 照合順序におけるシンボル: "\fI[.ch.]\fP" や "\fI[.a\-acute.]\fP" のように "\fI[.\fP" と "\fI.]\fP" で挟まれた文字列は、カレントロケールで定義された照合順序の要素となる。 ある一つの要素が複数の文字からなる場合もありうることに注意。 - -(vi) 等価クラス表現 (equivalence class expressions): -"\fI[=a=]\fP" のように "\fI[=\fP" と "\fI=]\fP" とで挟まれた文字列であり、 -カレントロケールで定義された等価クラスのメンバーである照合要素のいずれかを表す。 -例えば、"\fI[[=a=]]\fP" は "\fI[a\('a\(`a\(:a\(^a]\fP"、つまり -"\fI[a[.a\-acute.][.a\-grave.][.a\-umlaut.][.a\-circumflex.]]\fP" と等価になる。 +.PP +(vi) Equivalence class expressions, like "\fI[=a=]\fP", where the string +between "\fI[=\fP" and "\fI=]\fP" is any collating element from its equivalence +class, as defined for the current locale. For example, "\fI[[=a=]]\fP" might +be equivalent to "\fI[a\('a\(\`a\(:a\(^a]\fP", that is, to +"\fI[a[.a\-acute.][.a\-grave.][.a\-umlaut.][.a\-circumflex.]]\fP". .SH 関連項目 \fBsh\fP(1), \fBfnmatch\fP(3), \fBglob\fP(3), \fBlocale\fP(7), \fBregex\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/hier.7 b/manual/LDP_man-pages/draft/man7/hier.7 deleted file mode 100644 index 225fc5df..00000000 --- a/manual/LDP_man-pages/draft/man7/hier.7 +++ /dev/null @@ -1,400 +0,0 @@ -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" -.\" %%%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 Sun Jul 25 11:05:58 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Sat Feb 10 16:18:03 1996 by Urs Thuermann (urs@isnogud.escape.de) -.\" Modified Mon Jun 16 20:02:00 1997 by Nicolás Lichtmaier -.\" Modified Mon Feb 6 16:41:00 1999 by Nicolás Lichtmaier -.\" Modified Tue Feb 8 16:46:45 2000 by Chris Pepper -.\" Modified Fri Sep 7 20:32:45 2001 by Tammy Fox -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997-2000 TACHIBANA Akira -.\" all rights reserved. -.\" Translated Wed Dec 11 02:08:20 JST 1997 -.\" by TACHIBANA Akira -.\" Modified Sat Apr 8 02:44:43 JST 2000 -.\" by TACHIBANA Akira -.\" Updated Sun Sep 17 20:48:33 JST 2000 -.\" by TACHIBANA Akira -.\" Updated Sat 29 Dec 2001 by NAKANO Takeo -.\" -.TH HIER 7 2012\-08\-05 Linux "Linux Programmer's Manual" -.SH 名前 -hier \- ファイルシステム階層の説明 -.SH 説明 -典型的な Linux system には以下のようなディレクトリがある (他にもたくさんのディレクトリがあるが): -.TP -\fI/\fP -ルートディレクトリ。ここが階層の起点となる。 -.TP -\fI/bin\fP -このディレクトリには、シングルユーザーモードで システムの起動や修理を行う際に必要な実行形式ファイルが含まれる。 -.TP -\fI/boot\fP -ブートローダーが用いる静的なファイルが含まれている。 このディレクトリにはブートプロセスの間に必要なファイルだけが置かれる。 -マップインストーラや設定ファイルは \fI/sbin\fP や \fI/etc\fP に置くべきである。 -.TP -\fI/dev\fP -物理デバイスを参照している スペシャルファイルやデバイスファイルの置き場所。 \fBmknod\fP(1) を参照のこと。 -.TP -\fI/etc\fP -マシン固有の設定ファイルが置かれる場所。X11 のような 大規模なソフトウェアパッケージでは、 \fI/etc\fP -以下に更にパッケージ単位でサブディレクトリが作られることもある。 サイト全体に有効な設定ファイルは、ここではなく \fI/usr/etc\fP -に置かれることもある。 しかし、プログラムからのこれらのファイルの参照先は、常に \fI/etc\fP にすべきである。 \fI/usr/etc\fP -以下のファイルに対しては、それらへのリンクを \fI/etc\fP に置けばよい。 -.TP -\fI/etc/opt\fP -\fI/opt\fP にインストールされたアドオンアプリケーションが使う、 ホスト固有の設定ファイルの置き場所。 -.TP -\fI/etc/sgml\fP -SGML や XML の設定ファイルの置き場所 (なくてもよい)。 -.TP -\fI/etc/skel\fP -新たにユーザーアカウントを作る際、 通常このディレクトリにあるファイルが ユーザーのホームディレクトリにコピーされる。 -.TP -\fI/etc/X11\fP -X11 window system の設定ファイルの置き場所 (なくてもよい)。 -.TP -\fI/home\fP -通常、ユーザーのホームディレクトリが、 このディレクトリ直下ないしサブディレクトリの下に作成される。 このディレクトリの構成をどうするかは、 -ローカルマシンの管理者が決めることである。 -.TP -\fI/lib\fP -このディレクトリには、システムの起動時に必要な共有ライブラリや、 ルートファイルシステムでコマンドを実行するのに必要な共有ライブラリを置く。 -.TP -\fI/media\fP -このディレクトリには、 CD/DVD ディスクや USB スティックなどの取り外し可能メディア (removable media) -用のマウントポイントが置かれる。 -.TP -\fI/mnt\fP -このディレクトリは、一時的にマウントするファイルシステム用の マウントポイントである。 -ディストリビューションによっては、一時的にマウントするファイルシステム用の マウントポイントとして、 \fI/mnt\fP -内にサブディレクトリが用意されている場合がある。 -.TP -\fI/opt\fP -このディレクトリにはアドオンパッケージの静的なファイルが置かれる。 -.TP -\fI/proc\fP -このディレクトリは \fIproc\fP ファイルシステムのマウントポイントである。 \fIproc\fP -ファイルシステムは、実行中プロセスやカーネルの情報を提供する。 この疑似ファイルシステムの詳細は、 \fBproc\fP(5) で説明されている。 -.TP -\fI/root\fP -通常ここが root ユーザーのホームディレクトリになる (なくてもよい)。 -.TP -\fI/sbin\fP -\fI/bin\fP と同様に、 このディレクトリにはシステムの起動に必要なコマンドが含まれる。 -ただしここには、一般ユーザーは通常実行しないコマンドが置かれる。 -.TP -\fI/srv\fP -このディレクトリには、このシステムで提供される サイト固有のデータが置かれる。 -.TP -\fI/tmp\fP -このディレクトリには、 定期的なジョブによって、またはシステム起動時に、 無条件に削除して構わない一時的なファイルが置かれる。 -.TP -\fI/usr\fP -通常このディレクトリは、独立したパーティションがマウントされる。 ここには、共有可能で読み込み専用のものだけが含まれ、 よっていろいろな Linux -マシンからマウントできる。 -.TP -\fI/usr/X11R6\fP -X Window System, Version 11 release 6 (なくてもよい)。 -.TP -\fI/usr/X11R6/bin\fP -X Window System のバイナリの置き場所。 古いディレクトリである \fI/usr/bin/X11\fP -からここにシンボリックリンクが張られていることが多い。 -.TP -\fI/usr/X11R6/lib\fP -X Window System に関連するデータファイルの置き場所。 -.TP -\fI/usr/X11R6/lib/X11\fP -ここには X の動作に必要な種々のファイルが含まれている。 \fI/usr/lib/X11\fP からここにシンボリックリンクが張られていることが多い。 -.TP -\fI/usr/X11R6/include/X11\fP -ここには X11 Window System を使ったプログラムをコンパイルするために 必要なインクルードファイルが含まれている。 -\fI/usr/include/X11\fP からここにシンボリックリンクが張られていることが多い。 -.TP -\fI/usr/bin\fP -このディレクトリは、実行形式ファイルの主な置き場所である。 システムのブートやシステム復旧には必要とされない、 一般ユーザーが利用するコマンドの多くは、 -ローカルにインストールされるのでない限り、 このディレクトリに置くべきである。 -.TP -\fI/usr/bin/X11\fP -X11 コマンドの伝統的な置き場所。Linux では、通常 \fI/usr/X11R6/bin\fP にシンボリックリンクが張られている。 -.TP -\fI/usr/dict\fP -\fI/usr/share/dict\fP に置き換えられた。 -.TP -\fI/usr/doc\fP -\fI/usr/share/doc\fP に置き換えられた。 -.TP -\fI/usr/etc\fP -サイト内部の複数のマシンが共有するような設定ファイルが置かれる。 しかしながら、コマンドはそれらのファイルの参照先を、常に \fI/etc\fP -にすべきだろう。 \fI/etc\fP のファイルからリンクを張って、 \fI/usr/etc\fP の適切なファイルを指すようにすべきである。 -.TP -\fI/usr/games\fP -ゲームプログラムや教育用プログラムのバイナリが含まれている (なくてもよい)。 -.TP -\fI/usr/include\fP -C コンパイラ用のインクルードファイルが含まれている。 -.TP -\fI/usr/include/X11\fP -C コンパイラと X Window System 用のインクルードファイルが含まれている。 通常これは \fI/usr/inlcude/X11\fP -へのシンボリックリンクになっている。 -.TP -\fI/usr/include/asm\fP -アセンブラ関数の宣言を行うインクルードファイルが含まれている。 このディレクトリは、以前は \fI/usr/src/linux/include/asm\fP -へのシンボリックリンクだった。 -.TP -\fI/usr/include/linux\fP -ここには、システムのリリースのたびごとに変更されうる情報が含まれる。 ここは以前は \fI/usr/src/linux/include/linux\fP -にシンボリックリンクされており、 オペレーティングシステム固有の情報が得られるようになっていた。 - -(ここに置くインクルードファイルは、 現在の libc およびユーザー空間で正しく動作するものでなければならない。 しかし Linux -のカーネルソースは ユーザープログラムといっしょに使うようには設計されていないし、 あなたが使っている libc も関知しない。 -\fI/usr/include/asm\fP と \fI/usr/include/linux\fP -を適当なカーネルツリーへのリンクにしたりすると、破綻するのは目に見えている。 Debian ではこうせずに、libc*\-dev package -が提供する、 安定したカーネルバージョンのヘッダーファイルを置いている。) -.TP -\fI/usr/include/g++\fP -GNU C++ コンパイラ用のインクルードファイルが含まれている。 -.TP -\fI/usr/lib\fP -オブジェクトライブラリ (ダイナミックライブラリも含む) と、 直接には起動されないような実行形式ファイル少々とが置かれる。 -複雑なプログラムでは、更にサブディレクトリがあるかもしれない。 -.TP -\fI/usr/lib/X11\fP -X のプログラムに関連するデータファイルと、 X Window System の設定ファイルの置き場所。 Linux では通常 -\fI/usr/X11R6/lib/X11\fP にシンボリックリンクが張られている。 -.TP -\fI/usr/lib/gcc\-lib\fP -GNU C コンパイラ \fBgcc\fP(1) 用の実行形式ファイルとインクルードファイルが含まれている。 -.TP -\fI/usr/lib/groff\fP -GNU groff 文書整形システムのためのファイルが含まれている。 -.TP -\fI/usr/lib/uucp\fP -\fBuucp\fP(1) のためのファイルが含まれている。 -.TP -\fI/usr/local\fP -このディレクトリは、 サイトローカルなプログラムがインストールされる典型的な場所である。 -.TP -\fI/usr/local/bin\fP -サイトローカルなプログラムが含まれている。 -.TP -\fI/usr/local/doc\fP -サイトローカルなドキュメントが含まれている。 -.TP -\fI/usr/local/etc\fP -サイトローカルにインストールされたプログラムの設定ファイルの置き場所。 -.TP -\fI/usr/local/games\fP -サイトローカルにインストールされたゲームのバイナリの置き場所。 -.TP -\fI/usr/local/lib\fP -サイトローカルにインストールされたプログラムの関連ファイルの置き場所。 -.TP -\fI/usr/local/include\fP -ローカルな C コンパイラのヘッダーファイルの置き場所。 -.TP -\fI/usr/local/info\fP -サイトローカルにインストールされたプログラムの info ページの置き場所。 -.TP -\fI/usr/local/man\fP -サイトローカルにインストールされたプログラムのマニュアルページの置き場所。 -.TP -\fI/usr/local/sbin\fP -サイトローカルにインストールされたシステム管理コマンドの置き場所。 -.TP -\fI/usr/local/share\fP -同じ OS ならアーキテクチャーが異なっても共有できる、 ローカルなアプリケーションデータの置き場所。 -.TP -\fI/usr/local/src\fP -サイトローカルにインストールされたソフトウェアのソースコードの置き場所。 -.TP -\fI/usr/man\fP -\fI/usr/share/man\fP に置き換えられた。 -.TP -\fI/usr/sbin\fP -このディレクトリには、システム管理コマンドが含まれる。 ここに置かれるコマンドは、ブートプロセスや \fI/usr\fP -のマウント、システムの修理などに必要なものであってはならない。 -.TP -\fI/usr/share\fP -このディレクトリには、アプリケーションごとに固有なデータ (同じ OS ならアーキテクチャーが違っていても共有できるもの) -がサブディレクトリ単位で置かれる。 以前には \fI/usr/doc\fP, \fI/usr/lib\fP, \fI/usr/man\fP -などにあった内容が、多くここに置かれている。 -.TP -\fI/usr/share/dict\fP -スペルチェッカ用の単語リストが含まれる。 -.TP -\fI/usr/share/doc\fP -インストールされたプログラムのドキュメントの置き場所。 -.TP -\fI/usr/share/games\fP -\fI/usr/games\fP に置かれたゲーム用の静的なデータファイルの置き場所。 -.TP -\fI/usr/share/info\fP -info ページが置かれる。 -.TP -\fI/usr/share/locale\fP -ロケール (locale) 情報が置かれる。 -.TP -\fI/usr/share/man\fP -マニュアルページ。各ページはセクションに応じたサブディレクトリに置かれる。 -.TP -\fI/usr/share/man//man[1\-9]\fP -これらのディレクトリには、 各ロケールのマニュアルページのソースが置かれている。 -すべてのマニュアルページで同じ言語とコードセットを使用するシステムでは、 \fI\fP は省略されることがある。 -.TP -\fI/usr/share/misc\fP -同じ OS ならアーキテクチャーが違っていても共有できる、雑多なデータの置き場所。 -.TP -\fI/usr/share/nls\fP -母国語サポート (native language support) 用のメッセージカタログの置き場所。 -.TP -\fI/usr/share/sgml\fP -SGML や XML のファイルの置き場所。 -.TP -\fI/usr/share/terminfo\fP -terminfo のデータベースが置かれる。 -.TP -\fI/usr/share/tmac\fP -groff と一緒には配布されていない troff マクロの置き場所。 -.TP -\fI/usr/share/zoneinfo\fP -タイムゾーン情報のファイルが置かれる。 -.TP -\fI/usr/src\fP -システム上の色々なコンポーネントのソースファイル (参照用のパッケージも含む) の置き場所。 この場所で自分のプロジェクトの作業をしてはいけない。 -/usr 以下のファイルはソフトウェアのインストールの時以外は 読み込み専用になっているべきだからである。 -.TP -\fI/usr/src/linux\fP -かつてはカーネルソースの伝統的な置き場所だった。 ディストリビューションによっては、 出荷時のデフォルトのカーネルのソースをここに置いている。 -自分でカーネルをビルドするときは別の場所を使うほうがいいだろう。 -.TP -\fI/usr/tmp\fP -今では用いられなくなった。このディレクトリは \fI/var/tmp\fP へのリンクにすべきである。 -このリンクは互換性のためだけにあり、もはや使うべきでない。 -.TP -\fI/var\fP -このディレクトリには、スプールファイルやログファイルのような、 サイズが変化するファイルが置かれる。 -.TP -\fI/var/adm\fP -このディレクトリは \fI/var/log\fP に置き換えられた。 ここは \fI/var/log\fP へのシンボリックリンクにすべきである。 -.TP -\fI/var/backups\fP -歴史的な理由からまだ残っている。 -.TP -\fI/var/cache\fP -プログラムのためにキャッシュされたデータの置き場所。 -.TP -\fI/var/catman/cat[1\-9]\fP or \fI/var/cache/man/cat[1\-9]\fP -これらのディレクトリには、整形済みのマニュアルページが、 ページのセクションに従って置かれている。 -(整形済みマニュアルページの利用は推奨されていない。) -.TP -\fI/var/cron\fP -歴史的な理由からまだ残っている。 -.TP -\fI/var/lib\fP -プログラムの状態に関する情報のうち、可変なものの置き場所。 -.TP -\fI/var/local\fP -\fI/usr/local\fP 用の可変データの置き場所。 -.TP -\fI/var/lock\fP -ロックファイルの置き場所。 デバイスのロックファイルの命名は、慣習として \fILCK..\fP とされている。ここで -\fI\fP はファイルシステム上でのデバイス名である。 利用されているフォーマットは HDU UUCP -のロックファイルのものである。 すなわち各ロックファイルには アスキー 10 進数値文字で表記した PID 10 バイトと、 -それに続いて改行文字とが含まれている。 -.TP -\fI/var/log\fP -種々のログファイルの置き場所。 -.TP -\fI/var/opt\fP -\fI/opt\fP 用の可変データの置き場所。 -.TP -\fI/var/mail\fP -ユーザーのメールボックスの置き場所。 \fI/var/spool/mail\fP を置き換えた。 -.TP -\fI/var/msgs\fP -歴史的な理由からまだ残っている。 -.TP -\fI/var/preserve\fP -歴史的な理由からまだ残っている。 -.TP -\fI/var/run\fP -実行時の可変ファイルが置かれる。 例えばプロセス識別子 (PID) を保持するファイルや、 ユーザーのログイン情報ファイル \fI(utmp)\fP -などである。 ここのファイルは、通常システム起動時に削除される。 -.TP -\fI/var/spool\fP -色々なプログラムのスプールファイル (あるいはキューファイル) の置き場所。 -.TP -\fI/var/spool/at\fP -\fBat\fP(1) のジョブスプール。 -.TP -\fI/var/spool/cron\fP -\fBcron\fP(8) のジョブスプール。 -.TP -\fI/var/spool/lpd\fP -印刷用のスプールファイルが置かれる。 -.TP -\fI/var/spool/mail\fP -\fI/var/mail\fP に置き換えられた。 -.TP -\fI/var/spool/mqueue\fP -キューイングされた送信メールの置き場所。 -.TP -\fI/var/spool/news\fP -ニュースのスプールディレクトリ。 -.TP -\fI/var/spool/rwho\fP -\fBrwhod\fP(8) のスプールファイルの置き場所。 -.TP -\fI/var/spool/smail\fP -メール配送プログラム \fBsmail\fP(1) のスプールファイルの置き場所。 -.TP -\fI/var/spool/uucp\fP -\fBuucp\fP(1) のスプールファイルの置き場所。 -.TP -\fI/var/tmp\fP -\fI/tmp\fP と似ているが、 このディレクトリに置かれる一時的なファイルは保存期間の制限がない。 -.TP -\fI/var/yp\fP -NIS のデータベースファイルの置き場所。 -.SH 準拠 -The Filesystem Hierarchy Standard, Version 2.2 -.UR http://www.pathname.com\:/fhs/ -.UE . -.SH バグ -このリストは網羅的なものではない。 個々のシステムでは異なる部分があるかもしれない。 -.SH 関連項目 -\fBfind\fP(1), \fBln\fP(1), \fBproc\fP(5), \fBmount\fP(8) - -The Filesystem Hierarchy Standard -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/hostname.7 b/manual/LDP_man-pages/draft/man7/hostname.7 deleted file mode 100644 index bed16ccb..00000000 --- a/manual/LDP_man-pages/draft/man7/hostname.7 +++ /dev/null @@ -1,100 +0,0 @@ -.\" Copyright (c) 1987, 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 -.\" -.\" @(#)hostname.7 8.2 (Berkeley) 12/30/93 -.\" $FreeBSD: src/share/man/man7/hostname.7,v 1.7 2004/07/03 18:29:23 ru Exp $ -.\" -.\" 2008-06-11, mtk, Taken from FreeBSD 6.2 and modified for Linux. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2012-05-08, Akihiro MOTOKI -.\" -.TH HOSTNAME 7 2010\-11\-07 Linux "Linux Programmer's Manual" -.SH 名前 -hostname \- ホスト名の名前解決の説明 -.SH 説明 -ホスト名は、階層構造でドット区切りのサブドメインである。 -例えば、 EDU ドメインの Berkeley サブドメインのマシン monet は、 -"monet.Berkeley.EDU" と表現される。 - -ホスト名は、ネットワーククライアントやサーバのプログラムでは一般的に -使用され、使用する際には名前からアドレスに変換しなければならない (一般 -的にはアドレスへの変換処理は \fBgetaddrinfo\fP(3) か (廃止予定の) -\fBgethostbyname\fP(3) で行われる)。ホスト名の解決は、 -インターネットネームリゾルバによって以下の方法で実行される。 - -ホスト名がドットを含まない単一要素で構成されていて、環境変数 -\fBHOSTALIASES\fP にファイル名が設定されている場合、入力されたホスト名に -マッチする文字列を検索するのに指定されたファイルが使用される。 -そのファイルの各行は、ホワイトスペースで区切られた文字列 2 つで -構成され、各行の最初の文字列がホスト名のエイリアス (別名) で、 -二番目の文字列がそのエイリアスに対応する完全なホスト名である。 -解決するホスト名と一致するホスト名のエイリアス (ファイルの各行の最初の -フィールド) が見つかれば、完全なホスト名に置き換えられ、 -それ以上の変換処理は行わずに、そのホスト名で検索処理が行われる -(ホスト名とエイリアスの照合では大文字、小文字の違いは無視される)。 - -入力されたホスト名の末尾がドットの場合、 -末尾のドットは削除され、それ以上の処理は行われず、 -(末尾のドットを削除した) 残りの名前で検索が行われる。 - -入力された名前の末尾がドットでない場合、 -マッチするものが見つかるまでドメインのリストの検索が行われる。 -デフォルトのドメインの検索リストは、先頭ローカルのドメインで、 -親ドメインが (長いものから順に) 続く (親ドメインはドット区切りで -少なくとも 2 要素あるものだけが使用される)。 -例えば、 CS.Berkeley.EDU ドメインで、 -lithium.CChem というホスト名の場合には、 -最初に lithium.CChem.CS.Berkeley.EDU が確認され、 -次に lithium.CChem.Berkeley.EDU が確認される。 -Lithium.CChem.EDU はチェックされない。 -なぜなら、ローカルドメイン CS.Berkeley.EDU で残っているドメインは -EDU で、これは一つしか要素がないからである。 -検索リストはシステム全体で共通の設定ファイルでデフォルト値から -変更できる (\fBresolver\fP(5) 参照)。 -.SH 関連項目 -.\" .SH HISTORY -.\" Hostname appeared in -.\" 4.2BSD. -\fBgethostbyname\fP(3), \fBresolver\fP(5), \fBmailaddr\fP(7), \fBnamed\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/icmp.7 b/manual/LDP_man-pages/draft/man7/icmp.7 index 38bda145..d83381dc 100644 --- a/manual/LDP_man-pages/draft/man7/icmp.7 +++ b/manual/LDP_man-pages/draft/man7/icmp.7 @@ -19,7 +19,7 @@ .\" Translated 1999-12-06, NAKANO Takeo .\" Updated 2008-12-26, Akihiro MOTOKI , LDP v3.14 .\" -.TH ICMP 7 2012\-05\-10 Linux "Linux Programmer's Manual" +.TH ICMP 7 2017\-11\-26 Linux "Linux Programmer's Manual" .SH 名前 icmp \- Linux IPv4 ICMP カーネルモジュール .SH 説明 @@ -32,7 +32,7 @@ raw ソケットをプロトコル \fBIPPROTO_ICMP\fP でオープンすれば パケットを受信することができる。 詳細は \fBraw\fP(7) を参照のこと。 ソケットに渡される ICMP パケットのタイプは \fBICMP_FILTER\fP オプションによってフィルターできる。 ICMP パケットは (たとえユーザーソケットに渡される場合でも)、 常にカーネルによって (も) 処理される。 -.LP +.PP Linux では ICMP エラーパケットのレートをそれぞれの送り先に対して 制限している。 \fBICMP_REDIRECT\fP と \fBICMP_DEST_UNREACH\fP も到着したパケットの行き先経路 (destination route) を制限する。 .SS "/proc インターフェース" @@ -65,10 +65,10 @@ ICMP 不達パケット (Destination Unreachable packet) を送る最大レー \fIicmp_errors_use_inbound_ifaddr\fP (ブール値; デフォルト: 無効; Linux 2.6.12 以降) .\" The following taken from 2.6.28-rc4 Documentation/networking/ip-sysctl.txt これを無効にすると、ICMP エラーメッセージは、 出力インターフェースのプライマリアドレスで送信される。 - +.IP これを有効にすると、エラーメッセージは ICMP エラーの原因となったパケットを 受信したインターフェースのプライマリアドレスで送信される。 この動作は、多くのネットワーク管理者がルーターに対して期待しているものであり、 これにより複雑なネットワークレイアウトのデバッグがより容易になる。 - +.IP 選択されたインターフェースでプライマリアドレスが存在しない場合は、 この設定に関わらず、最初のループバック以外のインターフェースで、 プライマリアドレスを持つインターフェースのプライマリアドレスが使用される点に 注意すること。 .TP @@ -92,13 +92,12 @@ ICMP 不達パケット (Destination Unreachable packet) を送る最大レー \fIicmp_ratemask\fP (integer; default: 下記参照; Linux 2.4.10 以降) .\" The following taken from 2.6.28-rc4 Documentation/networking/ip-sysctl.txt レート制限を行う ICMP タイプを決めるマスク。 - +.IP 有効ビット: IHGFEDCBA9876543210 .br デフォルトマスク: 0000001100000011000 (0x1818) - +.IP ビット定義 (Linux カーネルソースファイル \fIinclude/linux/icmp.h\fP を参照): - .RS 12 .TS l l. @@ -117,12 +116,17 @@ H Address Mask Request I Address Mask Reply .TE .RE - +.PP アスタリスク印 (*) が付いたビットは、 デフォルトでレート制限が有効になっている (上記のマスクのデフォルトも参照)。 .TP \fIicmp_timeexceed_rate\fP (Linux 2.2 から 2.4.9 まで) \fBICMP_TIME_EXCEEDED\fP パケットの最大送信レート。 これらのパケットはパケットがあまりに多くの hop を通過した場合に、 ループを防ぐために送られる。 +.TP +\fIping_group_range\fP (two integers; default: see below; since Linux 2.6.39) +Range of the group IDs (minimum and maximum group IDs, inclusive) that are +allowed to create ICMP Echo sockets. The default is "1 0", which means no +group is allowed to create ICMP Echo sockets. .SH バージョン \fBICMP_ADDRESS\fP 要求に対するサポートは 2.2 で削除された。 .PP @@ -143,10 +147,9 @@ Linux がルーターとして動作していないときには、 \fBICMP_REDIR Linux ICMP は ICMP を送るために内部で raw ソケットを用いる。 raw ソケットは \fBnetstat\fP(8) の出力に 0 inode として出力される。 .SH 関連項目 -\fBip\fP(7) +\fBip\fP(7), \fBrdisc\fP(8) .PP \fBRFC\ 792\fP: ICMP プロトコルの説明 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/inotify.7 b/manual/LDP_man-pages/draft/man7/inotify.7 index 2b27f2cc..6ed6625b 100644 --- a/manual/LDP_man-pages/draft/man7/inotify.7 +++ b/manual/LDP_man-pages/draft/man7/inotify.7 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (C) 2006, 2014 Michael Kerrisk .\" Copyright (C) 2014 Heinrich Schuchardt .\" @@ -43,14 +42,14 @@ .\" Updated 2013-07-22, Akihiro MOTOKI .\" Updated 2013-08-21, Akihiro MOTOKI , LDP v3.53 .\" -.TH INOTIFY 7 2014\-12\-31 Linux "Linux Programmer's Manual" +.TH INOTIFY 7 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 inotify \- ファイルシステムイベントを監視する .SH 説明 \fIinotify\fP API はファイルシステムイベントを監視するための機構を提供する。 inotify は個々のファイルやディレクトリを監視するのに使える。 ディレクトリを監視する場合、inotify はディレクトリ自身と ディレクトリ内のファイルのイベントを返す。 - +.PP この API では以下のシステムコールが使用される。 .IP * 3 \fBinotify_init\fP(2) は inotify インスタンスを作成し、inotify インスタンスを参照する @@ -71,20 +70,22 @@ inotify \- ファイルシステムイベントを監視する inotify インスタンスを指している 全てのファイルディスクリプターが (\fBclose\fP(2) を使って) クローズされた場合、 その下層にあるオブジェクトとそのリソースは、 カーネルで再利用するために解放される。 関連が切られた監視対象は自動的に解放される。 .PP -注意深くプログラミングすることで、 アプリケーションは inotify -を使ってファイルシステムオブジェクトの集合の状態を効率的に監視しキャッシュしておくことができる。 -しかしながら、ロバストなアプリケーションでは、監視ロジックのバグや以下に説明があるような種類の競合条件によりファイルシステムの状態とキャッシュが一致しない状態になることがあるという事実も考慮に入れておくべきである。 -おそらく何らかの一貫性のチェックを行い、不一致が検出された場合にはキャッシュを再構築するのが懸命だろう。 +With careful programming, an application can use inotify to efficiently +monitor and cache the state of a set of filesystem objects. However, robust +applications should allow for the fact that bugs in the monitoring logic or +races of the kind described below may leave the cache inconsistent with the +filesystem state. It is probably wise to do some consistency checking, and +rebuild the cache when inconsistencies are detected. .SS "inotify ファイルディスクリプターからのイベントの読み出し" どのようなイベントが起こっていたかを知るには、 アプリケーションで inotify ファイルディスクリプターを \fBread\fP(2) すればよい。 これまでに何もイベントが起こっていない場合、 停止 (blocking) モードのファイルディスクリプターであれば、 少なくとも 1 つのイベントが起こるまで \fBread\fP(2) は停止する (シグナルにより割り込まれなかった場合。 シグナルによる割り込みがあった場合、呼び出しはエラー \fBEINTR\fP で失敗する。 \fBsignal\fP(7) 参照)。 - +.PP \fBread\fP(2) が成功すると、以下の構造体を 1 つ以上含むバッファーが返される: +.PP .in +4n -.nf - +.EX .\" FIXME . The type of the 'wd' field should probably be "int32_t". .\" I submitted a patch to fix this. See the LKML thread .\" "[patch] Fix type errors in inotify interfaces", 18 Nov 2008 @@ -97,36 +98,37 @@ struct inotify_event { uint32_t len; /* \(aqname\(aq フィールドのサイズ */ char name[]; /* ヌルで終端された任意の名前 */ }; -.fi +.EE .in - +.PP \fIwd\fP はイベント発生の監視対象を指定する。 これは、前もって行われた \fBinotify_add_watch\fP(2) 呼び出しで返された監視対象ディスクリプターのうちの 1 つである。 - +.PP \fImask\fP には発生したイベント (下記参照) を記述するためのビットが含まれる。 - -\fIcookie\fP は関連するイベントを関連づけるための一意な整数である。 -現在のところ、この値は rename イベントに対してのみ使われており、 -結果のペアである \fBIN_MOVED_FROM\fP と \fBIN_MOVED_TO\fP イベントを -アプリケーションで関連づけることができる。 -他のイベント種別の場合には、 \fIcookie\fP は 0 に設定する。 - -\fIname\fP フィールドは監視しているディレクトリ内のファイルに対して イベントが返される場合のためにだけ存在する。 -監視するディレクトリからのファイルの相対パス名を表す。 このパス名はヌルで終端され、 その後の読み込みで適切なアドレス境界に調整するために、 -さらにヌルバイト (\(aq\e0\(aq) が含まれる場合もある。 - +.PP +\fIcookie\fP is a unique integer that connects related events. Currently, this +is used only for rename events, and allows the resulting pair of +\fBIN_MOVED_FROM\fP and \fBIN_MOVED_TO\fP events to be connected by the +application. For all other event types, \fIcookie\fP is set to 0. +.PP +The \fIname\fP field is present only when an event is returned for a file +inside a watched directory; it identifies the filename within the watched +directory. This filename is null\-terminated, and may include further null +bytes (\(aq\e0\(aq) to align subsequent reads to a suitable address +boundary. +.PP \fIlen\fP フィールドはヌルバイトを含む \fIname\fP の全てのバイト数を表す。 よって、 \fIinotify_event\fP 構造体のサイズは \fIsizeof(struct inotify_event)+len\fP である。 - +.PP \fBread\fP(2) に渡されたバッファーが小さすぎて次のイベントに関する情報を返せ ない場合の動作はカーネルのバージョンにより異なる。 2.6.21 より前のカー ネルでは、 \fBread\fP(2) は 0 を返す。 2.6.21 以降のカーネルでは、 \fBread\fP(2) はエラー \fBEINVAL\fP で失敗する。 バッファーサイズとして - +.PP sizeof(struct inotify_event) + NAME_MAX + 1 - +.PP を指定すれば、少なくとも 1 イベントで読み出しを行うには十分である。 .SS "inotify イベント" \fBinotify_add_watch\fP(2) の \fImask\fP 引き数と、inotify ファイル構造体を \fBread\fP(2) @@ -139,6 +141,10 @@ struct inotify_event { (\fBread\fP(2), \fBexecve\fP(2) などで) ファイルがアクセスされた。 .TP \fBIN_ATTRIB\fP (*) +.\" FIXME . +.\" Events do not occur for link count changes on a file inside a monitored +.\" directory. This differs from other metadata changes for files inside +.\" a monitored directory. メタデータが変更された。 メタデータとは、例えば、アクセス許可 (\fBchmod\fP(2))、タイムスタンプ (\fButimensat\fP(2) など)、拡張属性 (\fBsetxattr\fP(2))、 リンクカウント (Linux 2.6.25 以降; \fBlink\fP(2) のリンク先や \fBunlink\fP(2) など)、ユーザー/グループ ID (\fBchown\fP(2) など) などである。 @@ -177,18 +183,26 @@ struct inotify_event { ファイルやディレクトリがオープンされた。 .RE .PP +Inotify monitoring is inode\-based: when monitoring a file (but not when +monitoring the directory containing a file), an event can be generated for +activity on any link to the file (in the same or a different directory). +.PP ディレクトリを監視する場合: .IP * 3 上記でアスタリスク (*) が付いたイベントは、 ディレクトリ自身とディレクトリ内のオブジェクトのどちらに対しても発生する。 .IP * 上記でプラス記号 (+) が付いたイベントは、 ディレクトリ内のオブジェクトに対してのみ発生する (ディレクトリ自身に対しては発生しない)。 .PP +\fINote\fP: when monitoring a directory, events are not generated for the files +inside the directory when the events are performed via a pathname (i.e., a +link) that lies outside the monitored directory. +.PP 監視対象のディレクトリ内のオブジェクトに対してイベントが発生した場合、 \fIinotify_event\fP 構造体で返される \fIname\fP フィールドは、ディレクトリ内のファイル名を表す。 .PP \fBIN_ALL_EVENTS\fP マクロは上記のイベント全てのマスクとして定義される。 このマクロは \fBinotify_add_watch\fP(2) を呼び出すときの \fImask\fP 引き数として使える。 - +.PP 以下の 2 つの便利なマクロが定義されている。 .RS 4 .TP @@ -214,15 +228,27 @@ struct inotify_event { を指定するとこのデフォルトの動作を変更でき、監視対象のディレクトリから子ファイルが削除された後に子ファイルに関するイベントが生成されなくなる。 .TP \fBIN_MASK_ADD\fP -監視インスタンスが \fIpathname\fP に対応するファイルシステムオブジェクトに対してすでに存在する場合に、 (マスクを置き換えるのではなく) -監視マスクに \fImask\fP で指定されたイベントを追加 (OR) する。 +If a watch instance already exists for the filesystem object corresponding +to \fIpathname\fP, add (OR) the events in \fImask\fP to the watch mask (instead of +replacing the mask); the error \fBEINVAL\fP results if \fBIN_MASK_CREATE\fP is +also specified. .TP \fBIN_ONESHOT\fP \fIpathname\fP に対応するファイルシステムオブジェクトを 1 イベントについてだけ監視し、 イベントが発生したら監視対象リストから削除する。 .TP \fBIN_ONLYDIR\fP (Linux 2.6.15 以降) -\fIpathname\fP がディレクトリの場合のみ監視する。 -このフラグを使うことで、アプリケーションは、競合状態を考慮せずに、監視するオブジェクトがディレクトリであることを保証することができるようになる。 +Watch \fIpathname\fP only if it is a directory; the error \fBENOTDIR\fP results if +\fIpathname\fP is not a directory. Using this flag provides an application +with a race\-free way of ensuring that the monitored object is a directory. +.TP +\fBIN_MASK_CREATE\fP (since Linux 4.18) +Watch \fIpathname\fP only if it does not already have a watch associated with +it; the error \fBEEXIST\fP results if \fIpathname\fP is already being watched. +.IP +Using this flag provides an application with a way of ensuring that new +watches do not modify existing ones. This is useful because multiple paths +may refer to the same inode, and multiple calls to \fBinotify_add_watch\fP(2) +without this flag may clobber existing watch masks. .RE .PP 以下のビットが \fBread\fP(2) で返される \fImask\fP フィールドに設定される: @@ -322,69 +348,79 @@ inotify API は Linux 独自のものである。 .SH 注意 inotify ファイルディスクリプターは \fBselect\fP(2), \fBpoll\fP(2), \fBepoll\fP(7) を使って監視できる。 イベントがある場合、ファイルディスクリプターは読み込み可能と通知する。 - +.PP Linux 2.6.25 以降では、シグナル駆動 (signal\-driven) I/O の通知が inotify ファイルディスクリプターについて利用可能である。 \fBfcntl\fP(2) に書かれている (\fBO_ASYNC\fP フラグを設定するための) \fBF_SETFL\fP, \fBF_SETOWN\fP, \fBF_SETSIG\fP の議論を参照のこと。 シグナルハンドラーに渡される \fIsiginfo_t\fP 構造体は、以下のフィールドが設定される (\fIsiginfo_t\fP は \fBsigaction\fP(2) で説明されている)。 \fIsi_fd\fP には inotify ファイルディスクリプター番号が、 \fIsi_signo\fP にはシグナル番号が、 \fIsi_code\fP には \fBPOLL_IN\fP が、 \fIsi_band\fP には \fBPOLLIN\fP が設定される。 - +.PP inotify ファイルディスクリプターに対して 連続して生成される出力 inotify イベントが同一の場合 (\fIwd\fP, \fImask\fP, \fIcookie\fP, \fIname\fP が等しい場合)、 前のイベントがまだ読み込まれていなければ、 連続するイベントが 1 つのイベントにまとめられる (ただし「バグ」の節も参照のこと)。 これによりイベントキューに必要なカーネルメモリー量が減るが、 これはまたアプリケーションがファイルイベント数を信頼性を持って数えるのに inotify を使用できないということでもある。 - +.PP inotify ファイルディスクリプターの読み込みで返されるイベントは、 順序付けられたキューになる。 従って、たとえば、あるディレクトリの名前を別の名前に変更した場合、 inotify ファイルディスクリプターについての正しい順番で イベントが生成されることが保証される。 - -\fBFIONREAD\fP \fBioctl\fP(2) は inotify ファイルディスクリプターから何バイト読み込めるかを返す。 +.PP +The set of watch descriptors that is being monitored via an inotify file +descriptor can be viewed via the entry for the inotify file descriptor in +the process's \fI/proc/[pid]/fdinfo\fP directory. See \fBproc\fP(5) for further +details. The \fBFIONREAD\fP \fBioctl\fP(2) returns the number of bytes available +to read from an inotify file descriptor. .SS 制限と警告 inotify API では、inotify イベントが発生するきっかけとなったユーザーやプロセスに関する情報は提供されない。とりわけ、inotify 経由でイベントを監視しているプロセスが、自分自身がきっかけとなったイベントと他のプロセスがきっかけとなったイベントを区別する簡単な手段はない。 - +.PP inotify は、ファイルシステム API 経由でユーザー空間プログラムがきっかけとなったイベントだけを報告する。 結果として、 inotify はネットワークファイルシステムで発生したリモートのイベントを捉えることはできない (このようなイベントを捉えるにはアプリケーションはファイルシステムをポーリングする必要がある)。 さらに、 \fI/proc\fP, \fI/sys\fP, \fI/dev/pts\fP といったいくつかの疑似ファイルシステムは inotify で監視することができない。 - +.PP inotify API は \fBmmap\fP(2), \fBmsync\fP(2), \fBmunmap\fP(2) により起こったファイルのアクセスと変更を報告しない。 - +.PP inotify API では影響が受けるファイルをファイル名で特定する。 しかしながら、アプリケーションが inotify イベントを処理する時点では、 そのファイル名がすでに削除されたり変更されたりしている可能性がある。 - +.PP inotify API では監視対象ディスクリプターを通してイベントが区別される。 (必要であれば) 監視対象ディスクリプターとパス名のマッピングをキャッシュしておくのはアプリケーションの役目である。 ディレクトリの名前変更の場合、キャッシュしている複数のパス名に影響がある点に注意すること。 - +.PP inotify によるディレクトリの監視は再帰的に行われない: あるディレクトリ以下の サブディレクトリを監視する場合、 監視対象を追加で作成しなければならない。 大きなディレクトリツリーの場合には、この作業にかなり時間がかかることがある。 - +.PP ディレクトリツリー全体を監視していて、 そのツリー内に新しいサブディレクトリが作成されるか、 既存のディレクトリが名前が変更されそのツリー内に移動した場合、 新しいサブディレクトリに対する watch を作成するまでに、 新しいファイル (やサブディレクトリ) がそのサブディレクトリ内にすでに作成されている場合がある点に注意すること。 したがって、watch を追加した直後にサブディレクトリの内容をスキャンしたいと思う場合もあるだろう (必要ならそのサブディレクトリ内のサブディレクトリに対する watch も再帰的に追加することもあるだろう)。 - +.PP イベントキューはオーバーフローする場合があることに注意すること。 この場合、イベントは失なわれる。 ロバスト性が求められるアプリケーションでは、 イベントが失なわれる可能性も含めて適切に処理を行うべきである。 例えば、アプリケーション内のキャッシュの一部分または全てを再構築する必要があるかもしれない。 (単純だが、おそらくコストがかかる方法は、 inotify ファイルディスクリプターをクローズし、 キャッシュを空にし、 新しい inotify ファイルディスクリプターを作成し、 監視しているオブジェクトの監視対象ディスクリプターとキャッシュエントリーの再作成を行う方法である。) +.PP +.\" +If a filesystem is mounted on top of a monitored directory, no event is +generated, and no events are generated for objects immediately under the new +mount point. If the filesystem is subsequently unmounted, events will +subsequently be generated for the directory and the objects it contains. .SS "rename() イベントの取り扱い" 上述の通り、 \fBrename\fP(2) により生成される \fBIN_MOVED_FROM\fP と \fBIN_MOVED_TO\fP イベントの組は、共有される cookie 値によって対応を取ることができる。 しかし、対応を取る場合にはいくつか難しい点がある。 - +.PP これらの 2 つのイベントは、 inotify ファイルディスクリプターから読み出しを行った場合に、通常はイベントストリーム内で連続している。 しかしながら、連続していることは保証されていない。 複数のプロセスが監視対象オブジェクトでイベントを発生させた場合、 (めったに起こらないことだが) イベント \fBIN_MOVED_FROM\fP と \fBIN_MOVED_TO\fP の間に任意の数の他のイベントがはさまる可能性がある。 さらに、対となるイベントがアトミックにキューに挿入されることも保証されていない。 \fBIN_MOVED_FROM\fP が現れたが \fBIN_MOVED_TO\fP は現れていないという短い期間がありえるということだ。 - +.PP したがって、 \fBrename\fP(2) により生成された \fBIN_MOVED_FROM\fP と \fBIN_MOVED_TO\fP のイベントの組の対応を取るのは本質的に難しいことである (監視対象のディレクトリの外へオブジェクトの rename が行われた場合には \fBIN_MOVED_TO\fP イベントは存在しさえしないことを忘れてはならない)。 (イベントは常に連続しているとの仮定を置くといった) @@ -392,29 +428,31 @@ cookie 値によって対応を取ることができる。 しかし、対応を \fBIN_MOVED_FROM\fP と \fBIN_MOVED_TO\fP イベントが無関係だとみなしてしまう可能性がある。 結果的に、監視対象ディスクリプターが破棄され再作成された場合、これらの監視対象ディスクリプターは、処理待ちイベントの監視対象ディスクリプターと一貫性のないものになってしまう (inotify ファイルディスクリプターの再作成とキャッシュの再構成はこの状況に対処するのに有用な方法なのだが)。 - +.PP また、アプリケーションは、 \fBIN_MOVED_FROM\fP イベントが今行った \fBread\fP(2) の呼び出しで返されたバッファーのちょうど一番最後のイベントで、 \fBIN_MOVED_TO\fP イベントは次の \fBread\fP(2) を行わないと取得できない可能性も考慮に入れる必要がある。 2 つ目の \fBread\fP(2) は (短い) タイムアウトで行うべきである。 これは、 \fBIN_MOVED_FROM\fP\-\fBIN_MOVED_TO\fP のイベントペアのキューへの挿入はアトミックではなく、 また \fBIN_MOVED_TO\fP イベントが全く発生しない可能性もあるという事実を考慮に入れておく必要があるからである。 .SH バグ -カーネル 3.17 時点では、 \fBfallocate\fP(2) の呼び出しでは inotify イベントが生成されない。 - +.\" commit 820c12d5d6c0890bc93dd63893924a13041fdc35 +Before Linux 3.19, \fBfallocate\fP(2) did not create any inotify events. +Since Linux 3.19, calls to \fBfallocate\fP(2) generate \fBIN_MODIFY\fP events. +.PP .\" FIXME . kernel commit 611da04f7a31b2208e838be55a42c7a1310ae321 .\" implies that unmount events were buggy 2.6.11 to 2.6.36 .\" 2.6.16 以前のカーネルでは \fBIN_ONESHOT\fP \fImask\fP フラグが働かない。 - +.PP 元々は設計/実装時の意図通り、 イベントが一つ発生し watch が削除された際に \fBIN_ONESHOT\fP フラグでは \fBIN_IGNORED\fP イベントが発生しなかった。 しかし、 別の変更での意図していなかった影響により、 Linux 2.6.36 以降では、 この場合に \fBIN_IGNORED\fP イベントが生成される。 - +.PP .\" commit 1c17d18e3775485bf1e0ce79575eb637a94494a2 カーネル 2.6.25 より前では、 連続する同一のイベントを一つにまとめることを意図したコード (古い方のイベントがまだ読み込まれていない場合に、 最新の 2 つのイベントを一つにまとめられる可能性がある) が、 最新のイベントが「最も古い」読み込まれていないイベントとまとめられるか をチェックするようになっていた。 - +.PP .\" FIXME . https://bugzilla.kernel.org/show_bug.cgi?id=77111 \fBinotify_rm_watch\fP(2) の呼び出しにより監視対象ディスクリプターが削除された場合 (なお、監視対象ファイルの削除や監視対象ファイルが含まれるファイルシステムのアンマウントによっても監視対象ディスクリプターは削除される)、 @@ -429,9 +467,10 @@ inotify キューで処理待ちの未読み出しイベントがあるかの確 個の監視対象ディスクリプターが一周させて、 キューに未読み出しイベントが残っている監視対象ディスクリプターを解放し、 その監視対象ディスクリプターを再利用する必要があるからである。 この理由と、実世界のアプリケーションで発生したというバグ報告がないことから、 Linux 3.15 時点では、この計算上は起こりうるバグを取り除くためのカーネルの変更は行われていない。 -.SH 例 -以下のプログラムは inotify API の使用例を示したものである。 コマンドライン引き数で渡されたディレクトリに印を付け、 タイプが -\fBIN_OPEN\fP, \fBIN_CLOSE_NOWRITE\fP \fBIN_CLOSE_WRITE\fP のイベントを待つ。 +.SH EXAMPLES +The following program demonstrates the usage of the inotify API. It marks +the directories passed as a command\-line arguments and waits for events of +type \fBIN_OPEN\fP, \fBIN_CLOSE_NOWRITE\fP, and \fBIN_CLOSE_WRITE\fP. .PP 以下は、 ファイル \fI/home/user/temp/foo\fP を編集し、 ディレクトリ \fI/tmp\fP の一覧表示を行った場合の出力である。 対象のファイルとディレクトリがオープンされる前に、イベント \fBIN_OPEN\fP が発生している。 対象ファイルがクローズされた後にイベント @@ -439,7 +478,7 @@ inotify キューで処理待ちの未読み出しイベントがあるかの確 が発生している。 ユーザーが ENTER キーを押すると、プログラムの実行は終了する。 .SS 出力例 .in +4n -.nf +.EX $ \fB./a.out /tmp /home/user/temp\fP Press enter key to terminate. Listening for events. @@ -449,18 +488,20 @@ IN_OPEN: /tmp/ [directory] IN_CLOSE_NOWRITE: /tmp/ [directory] Listening for events stopped. -.fi +.EE .in .SS プログラムソース -.nf +\& +.EX #include #include #include #include #include #include +#include -/* Read all available inotify events from the file descriptor 'fd'. +/* Read all available inotify events from the file descriptor \(aqfd\(aq. wd is the table of watch descriptors for the directories in argv. argc is the length of wd and argv. argv is the list of watched directories. @@ -478,9 +519,7 @@ handle_events(int fd, int *wd, int argc, char* argv[]) char buf[4096] __attribute__ ((aligned(__alignof__(struct inotify_event)))); const struct inotify_event *event; - int i; ssize_t len; - char *ptr; /* Loop while events can be read from inotify file descriptor. */ @@ -488,7 +527,7 @@ handle_events(int fd, int *wd, int argc, char* argv[]) /* Read some events. */ - len = read(fd, buf, sizeof buf); + len = read(fd, buf, sizeof(buf)); if (len == \-1 && errno != EAGAIN) { perror("read"); exit(EXIT_FAILURE); @@ -503,7 +542,7 @@ handle_events(int fd, int *wd, int argc, char* argv[]) /* バッファー内の全イベントを処理する */ - for (ptr = buf; ptr < buf + len; + for (char *ptr = buf; ptr < buf + len; ptr += sizeof(struct inotify_event) + event\->len) { event = (const struct inotify_event *) ptr; @@ -519,7 +558,7 @@ handle_events(int fd, int *wd, int argc, char* argv[]) /* Print the name of the watched directory */ - for (i = 1; i < argc; ++i) { + for (int i = 1; i < argc; ++i) { if (wd[i] == event\->wd) { printf("%s/", argv[i]); break; @@ -581,8 +620,8 @@ main(int argc, char* argv[]) wd[i] = inotify_add_watch(fd, argv[i], IN_OPEN | IN_CLOSE); if (wd[i] == \-1) { - fprintf(stderr, "Cannot watch '%s'\en", argv[i]); - perror("inotify_add_watch"); + fprintf(stderr, "Cannot watch \(aq%s\(aq: %s\en", + argv[i], strerror(errno)); exit(EXIT_FAILURE); } } @@ -619,7 +658,7 @@ main(int argc, char* argv[]) /* Console input is available. Empty stdin and quit */ - while (read(STDIN_FILENO, &buf, 1) > 0 && buf != '\en') + while (read(STDIN_FILENO, &buf, 1) > 0 && buf != \(aq\en\(aq) continue; break; } @@ -642,14 +681,13 @@ main(int argc, char* argv[]) free(wd); exit(EXIT_SUCCESS); } -.fi +.EE .SH 関連項目 \fBinotifywait\fP(1), \fBinotifywatch\fP(1), \fBinotify_add_watch\fP(2), \fBinotify_init\fP(2), \fBinotify_init1\fP(2), \fBinotify_rm_watch\fP(2), \fBread\fP(2), \fBstat\fP(2), \fBfanotify\fP(7) - +.PP Linux カーネルソース内の \fIDocumentation/filesystems/inotify.txt\fP .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/intro.7 b/manual/LDP_man-pages/draft/man7/intro.7 index 4b3595b3..46ecb88c 100644 --- a/manual/LDP_man-pages/draft/man7/intro.7 +++ b/manual/LDP_man-pages/draft/man7/intro.7 @@ -38,7 +38,7 @@ .\" .TH INTRO 7 2007\-10\-23 Linux "Linux Programmer's Manual" .SH 名前 -intro \- 概要、慣習やその他の説明 +intro \- introduction to overview and miscellany section .SH 説明 マニュアルの 7 章には様々な事柄の概要が書かれている。 習慣、プロトコル、文字集合の規格、ファイルシステムの構成、 その他の雑多なことについて説明している。 @@ -48,6 +48,5 @@ intro \- 概要、慣習やその他の説明 .SH 関連項目 \fBstandards\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 0ce8ce6d..00000000 --- a/manual/LDP_man-pages/draft/man7/ip.7 +++ /dev/null @@ -1,783 +0,0 @@ -'\" t -.\" This man page is Copyright (C) 1999 Andi Kleen . -.\" -.\" %%%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 -.\" IP_MINTTL (2.6.34) -.\" commit d218d11133d888f9745802146a50255a4781d37a -.\" Author: Stephen Hemminger -.\" 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 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved. -.\" Translated 1999-12-06, NAKANO Takeo -.\" Updated 2001-02-14, Kentaro Shirakata -.\" Updated 2001-04-04, Yuichi SATO -.\" Updated & Modified 2003-10-16, Yuichi SATO -.\" Updated & Modified 2005-01-22, Yuichi SATO -.\" Updated & Modified 2005-09-10, Akihiro MOTOKI -.\" Updated & Modified 2005-10-06, Akihiro MOTOKI -.\" Updated 2007-01-05, Akihiro MOTOKI, Catch up to LDP man-pages 2.43 -.\" Updated 2007-05-28, Akihiro MOTOKI , LDP v2.48 -.\" Updated 2008-12-26, Akihiro MOTOKI , LDP v3.14 -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" -.TH IP 7 2014\-05\-10 Linux "Linux Programmer's Manual" -.SH 名前 -ip \- Linux IPv4 プロトコルの実装 -.SH 書式 -\fB#include \fP -.br -.\" .B #include -- does not exist anymore -.\" .B #include -- never include -\fB#include \fP -.br -\fB#include \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 -あるプロセスで、やってくるパケットを受信したり 接続要求を受けたりしたい場合には、 そのプロセスはローカルなインターフェースアドレスに、 -\fBbind\fP(2) を用いてソケットをバインドしなければならない。 この場合、 ローカルの「アドレスとポート」のペアに対してバインドできる IP -ソケットは一つだけである。 \fBbind\fP(2) の呼び出しで \fBINADDR_ANY\fP が指定されていた場合は、 ソケットは \fIすべて\fP -のローカルインターフェースにバインドされる。 \fBlisten\fP(2) がバインドされていないソケットに対してコールされると、 そのソケットは、 -ローカルポートはランダムに選択された空いているポートで、 ローカルアドレスは \fBINADDR_ANY\fP で自動的にバインドされる。 -\fBconnect\fP(2) がバインドされていないソケットに対してコールされると、 そのソケットは、 -ローカルポートはランダムに選択された空いているポートか未使用の共有ポートで、 ローカルアドレスは \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 以降) -マルチキャストグループに参加、指定された送信元からのデータの受信のみを許可する。 引き数は \fIip_mreq_source\fP 構造体である。 -.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 -\fIip_mreq_source\fP 構造体は \fBIP_ADD_MEMBERSIP\fP の項で説明した \fIip_mreqn\fP に似ている。 -\fIimr_multiaddr\fP フィールドには、アプリケーションが参加または脱退したいマルチキャストグループのアドレスが入る。 -\fIimr_interface\fP フィールドは、 マルチキャストグループに参加する際に システムが使用すべきローカルインターフェースのアドレスである。 -\fIimr_sourceaddr\fP フィールドには、アプリケーションがデータを受信したい送信元のアドレスが入る。 -.IP -このオプションを複数回使うことで、 複数の送信元からのデータ受信を許可することができる。 -.TP -\fBIP_BLOCK_SOURCE\fP (since Linux 2.4.22 以降 / 2.5.68 以降) -指定したグループで、指定した送信元からのマルチキャストデータの受信を停止する。 このオプションは、アプリケーションが -\fBIP_ADD_MEMBERSHIP\fP か \fBIP_ADD_SOURCE_MEMBERSHIP\fP -のいずれかを使ってマルチキャストグループに参加した後でのみ有効である。 -.IP -引き数は \fIip_mreq_source\fP 構造体である。 \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 (Linux 2.4.22 以降 / 2.5.68 以降) -送信元を指定してグループから抜ける。 つまり、 指定したマルチキャストグループの指定された送信元からのデータ受信を停止する。 -アプリケーションは同じマルチキャストグループで複数の送信元を購読 (subscribe) している場合には、 -残りの送信元からのデータの受信は引き続き配信される。 すべての送信元からのデータ受信を一度で停止するには \fBIP_LEAVE_GROUP\fP -を使うこと。 -.IP -引き数は \fIip_mreq_source\fP 構造体である。 \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 以降) -このオプションを使うと、 高度なフィルタリング API へアクセスできる。 この API ではすべての状態にアクセスできる。 引き数は -\fIip_msfilter\fP 構造体である。 -.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 -\fBMCAST_INCLUDE\fP と \fBMCAST_EXCLUDE\fP の 2 つのマクロがあり、 フィルタリングモードを指定するのに使用できる。 -また、 \fBIP_MSFILTER_SIZE\fP(n) マクロがあり、 送信元リストに \fIn\fP 個の送信元が入った \fIip_msfilter\fP -構造体を格納するのに必要なメモリー量を判定することができる。 -.IP -マルチキャスト送信元フィルタリングの全容は 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 (Linux 2.6.31 以降) -このオプションを使って、 マルチキャストメッセージの、 ワイルドカードの \fBINADDR_ANY\fP アドレスにバインドされているソケットへの -配送ポリシーを変更することができる。 引き数はブート値の整数で、 デフォルト値は 1 である。 このオプションを 1 -に設定されている場合、そのソケットでは、このシステムで参加しているすべてのグループからのメッセージが受信される。 それ以外の場合は、そのソケットでは、 -そのソケットに対して (\fBIP_ADD_MEMBERSHIP\fP などを使って) 明示的に参加が指定されたグループからのメッセージだけが受信される。 -.TP -\fBIP_MULTICAST_IF\fP (Linux 1.2 以降) -.\" net: IP_MULTICAST_IF setsockopt now recognizes struct mreq -.\" Commit: 3a084ddb4bf299a6e898a9a07c89f3917f0713f7 -ローカルデバイスをマルチキャストソケットとして設定する。引き数は \fBIP_ADD_MEMBERSHIP\fP と同様に \fIip_mreqn\fP 構造体か -\fIip_mreq\fP 構造体 (Linux 3.5 以降) である。 -.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 -.\" 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: -この機能が動作するためには、自分以外のアドレス宛のパケットが透過プロキシが動作するマシン (すなわちソケットオプション -\fBIP_TRANSPARENT\fP を利用するアプリケーションが動作しているシステム) 経由で転送されるように、 ルーティングが設定される必要がある。 -このソケットオプションを有効にするには、スーパーユーザー特権 (\fBCAP_NET_ADMIN\fP ケーパビリティ) が必要である。 -.IP -iptables の TPROXY ターゲットで透過プロキシリダイレクション -(TProxy redirection) を行うには、リダイレクトされるソケットに対して -このオプションを設定する必要がある。 -.TP -\fBIP_TTL\fP (Linux 1.0 以降) -time\-to\-live フィールドの値を設定または取得する。 この値はこのソケットから送信されるすべてのパケットに用いられる。 -.TP -\fBIP_UNBLOCK_SOURCE\fP (Linux 2.4.22 以降 / 2.5.68 以降) -それ以前はブロックされていたマルチキャストの送信元のブロックを解除する。 指定した送信元がブロックされていない場合は \fBEADDRNOTAVAIL\fP -を返す。 -.IP -引き数は \fIip_mreq_source\fP 構造体である。 \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 (ブール値; デフォルト: 無効; Linux 2.0.31 以降) -.\" -動的ソケットアドレスと、インターフェースアドレスが変更された際の マスカレードエントリーの再書き込みを有効にする。 ダイアルアップインターフェースで、 -IP アドレスが変更される場合に便利である。 -.TP -\fIip_forward\fP (ブール値; デフォルト: 無効; Linux 1.2 以降) -.\" -IP forwarding を有効にするかどうかのブール値フラグ。 IP forwarding するかどうかはインターフェースごとにも設定できる。 -.TP -\fIip_local_port_range\fP (Linux 2.2 以降) -.\" Precisely: since 2.1.68 -このファイルには、 ポート番号に明示的にバインドされないソケットに割り当てられるデフォルトのローカルポートの範囲 \(em つまり「一時ポート -(\fIephemeral ports\fP)」に使用される範囲 \(em を定める 2 つの整数が入っている。 -一時ポートは以下の場合にソケットに割り当てられる。 -.RS -.IP * 3 -\fBbind\fP(2) の呼び出し時にソケットアドレスのポート番号に 0 が指定されている。 -.IP * -バインドされていないストリームソケットに対して \fBlisten\fP(2) が呼び出された。 -.IP * -バインドされていないソケットに対して \fBconnect\fP(2) が呼ばれた。 -.IP * -バインドされていないデータグラムソケットに対して \fBsendto\fP(2) が呼ばれた。 -.RE -.IP -一時ポートに割り当てられるポート番号の範囲は、 \fIip_local_port_range\fP の最初の数字から始まり、 2 番目の数字で終わる。 -一時ポートの範囲を使い切った場合、 関連するシステムコールはエラーを返す (バグの節を参照)。 -.IP -.\" -\fIip_local_port_range\fP で指定するポート番号の範囲は、 マスカレードで用いられているポートと重なってはならない -(その場合も取り扱われるが)。 ファイアウォールのパケットフィルターが「利用中のローカルポート」 について何らかの仮定をしている場合には、 -番号を勝手に決めてしまうと問題が起きるかもしれない。 1 番目の番号は少なくとも 1024 より大きくすべきである。 -良く使われるポートとの衝突を避けたり、ファイアウォールの問題を 回避したければ、 4096 よりも大きくするほうが良いだろう。 -.TP -\fIip_no_pmtu_disc\fP (ブール値; デフォルト: 無効; 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 (ブール値; デフォルト: 無効; 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 -\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 -一時ポートの範囲の枯渇を示すのに使われるエラーは、 一時ポートの割り当てを行えるシステムコール (\fBconnect\fP(2), \fBbind\fP(2), -\fBlisten\fP(2), \fBsendto\fP(2)) により異なる。 -.PP -.\" .PP -.\" Some versions of glibc forget to declare -.\" .IR in_pktinfo . -.\" Workaround currently is to copy it into your program from this man page. -IP 固有のインターフェースオプションを指定するための ioctl と ARP テーブルのことが記述されていない。 -.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 -RFC\ 791: 元々の IP 仕様。 RFC\ 1122: IPv4 ホストの要件。 RFC\ 1812: IPv4 ルーターの要件。 -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index 99754187..56cda46d 100644 --- a/manual/LDP_man-pages/draft/man7/ipv6.7 +++ b/manual/LDP_man-pages/draft/man7/ipv6.7 @@ -10,7 +10,7 @@ .\" $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: +.\" All of the following are from: .\" commit 333fad5364d6b457c8d837f7d05802d2aaf8a961 .\" Author: YOSHIFUJI Hideaki .\" Support several new sockopt / ancillary data in Advanced API (RFC3542). @@ -99,14 +99,14 @@ .\" Updated 2013-05-01, Akihiro MOTOKI .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH IPV6 7 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH IPV6 7 2020\-12\-21 Linux "Linux Programmer's Manual" .SH 名前 ipv6 \- Linux IPv6 プロトコルの実装 .SH 書式 \fB#include \fP .br \fB#include \fP -.sp +.PP \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 @@ -131,11 +131,12 @@ v4\-mapped\-on\-v6 アドレス型を用いることで、 IPv4 接続も v6 API API をサポートするだけで、 両方のプロトコルをサポートできる。 v4\-mapped\-on\-v6 アドレス型は C ライブラリ内部のアドレスを 扱う関数によって透過的に処理される。 .PP -IPv4 と IPv6 はローカルポート空間を共有する。 IPv4 の接続 (またはパケット) を IPv6 ソケットが取得すると、 発信元アドレスが -v6 にマップされ、その接続 (パケット) も v6 にマップされる。 +IPv4 and IPv6 share the local port space. When you get an IPv4 connection +or packet to an IPv6 socket, its source address will be mapped to v6 and it +will be mapped to v6. .SS アドレスのフォーマット .in +4n -.nf +.EX struct sockaddr_in6 { sa_family_t sin6_family; /* AF_INET6 */ in_port_t sin6_port; /* port number */ @@ -147,9 +148,9 @@ struct sockaddr_in6 { struct in6_addr { unsigned char s6_addr[16]; /* IPv6 address */ }; -.fi +.EE .in -.sp +.PP \fIsin6_family\fP は常に \fBAF_INET6\fP に設定される。 \fIsin6_port\fP はプロトコルポートである (\fBip\fP(7) の \fIsin_port\fP を参照)。 \fIsin6_flowinfo\fP は IPv6 のフロー指定子 (flow identifier) である。 @@ -159,9 +160,10 @@ Linux の場合は、これはリンクローカルアドレスでのみサポ この場合 \fIsin6_scope_id\fP にはインターフェースのインデックスが含まれる ことになる (\fBnetdevice\fP(7) を参照)。 .PP -IPv6 は何種類かのアドレスタイプをサポートしている。 単一のホストをアドレスするための unicast、 ホストのグループをアドレスするための -multicast、 ホストのグループ中で最も近くにいるものをアドレスするための anycast (これは Linux では実装されていない)、 -IPv4 ホストをアドレスするための IPv4\-on\-IPv6。 他にも予約済みのアドレスタイプがある。 +IPv6 supports several address types: unicast to address a single host, +multicast to address a group of hosts, anycast to address the nearest member +of a group of hosts (not implemented in Linux), IPv4\-on\-IPv6 to address an +IPv4 host, and other reserved address types. .PP IPv6 でのアドレス表記は 4 桁の 16 進数 8 個からなり、 \(aq:\(aq は区切り文字はで、"::" は 0 ビットの文字列を表す。 特殊なアドレスとして、ループバックを表す ::1、 IPv4\-mapped\-on\-IPv6 を表す ::FFFF:: .\" Updated 2012-05-01, Akihiro MOTOKI .\" -.TH ISO_8859\-1 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ISO_8859\-1 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 iso_8859\-1 \- ISO 8859\-1 文字集合の 8進数、10進数、16進数による符号化 .SH 説明 @@ -67,8 +66,8 @@ ISO 8859\-15 西ヨーロッパの言語 (Latin\-9) ISO 8859\-16 ルーマニア語 (Latin\-10) .TE .SS "ISO 8859\-1 文字" -以下の表は ISO 8859\-1 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in ISO 8859\-1 that are printable +and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -173,8 +172,7 @@ _ .SH 備考 ISO 8859\-1 は Latin\-1 としても知られている。 .SH 関連項目 -\fBascii\fP(7), \fBcharsets\fP(7), \fBiso_8859\-15\fP(7), \fButf\-8\fP(7) +\fBascii\fP(7), \fBcharsets\fP(7), \fBcp1252\fP(7), \fBiso_8859\-15\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/iso_8859-10.7 b/manual/LDP_man-pages/draft/man7/iso_8859-10.7 index a6516154..1a534c8f 100644 --- a/manual/LDP_man-pages/draft/man7/iso_8859-10.7 +++ b/manual/LDP_man-pages/draft/man7/iso_8859-10.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 2009 Lefteris Dimitroulakis (edimitro@tee.gr) .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -32,7 +31,7 @@ .\" all rights reserved. .\" Translated 2012-04-27, Akihiro MOTOKI .\" -.TH ISO_8859\-10 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ISO_8859\-10 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 iso_8859\-10 \- ISO 8859\-10 文字集合の 8進数、10進数、16進数による符号化 .SH 説明 @@ -60,8 +59,8 @@ ISO 8859\-15 西ヨーロッパの言語 (Latin\-9) ISO 8859\-16 ルーマニア語 (Latin\-10) .TE .SS "ISO 8859\-10 文字" -以下の表は ISO 8859\-10 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in ISO 8859\-10 that are +printable and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -168,6 +167,5 @@ ISO 8859\-10 は Latin\-6 としても知られている。 .SH 関連項目 \fBascii\fP(7), \fBcharsets\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/iso_8859-11.7 b/manual/LDP_man-pages/draft/man7/iso_8859-11.7 index 99ec7fea..c4fc0d41 100644 --- a/manual/LDP_man-pages/draft/man7/iso_8859-11.7 +++ b/manual/LDP_man-pages/draft/man7/iso_8859-11.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 2009 Lefteris Dimitroulakis .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -34,7 +33,7 @@ .\" all rights reserved. .\" Translated 2012-04-27, Akihiro MOTOKI .\" -.TH ISO_8859\-11 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ISO_8859\-11 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 iso_8859\-11 \- ISO 8859\-11 文字集合の 8進数、10進数、16進数による符号化 .SH 説明 @@ -62,8 +61,8 @@ ISO 8859\-15 西ヨーロッパの言語 (Latin\-9) ISO 8859\-16 ルーマニア語 (Latin\-10) .TE .SS "ISO 8859\-11 文字" -以下の表は ISO 8859\-11 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in ISO 8859\-11 that are +printable and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -165,6 +164,5 @@ ISO 8859\-11 は TIS (タイ工業規格) 620\-2253 (一般には TIS\-620 と .SH 関連項目 \fBascii\fP(7), \fBcharsets\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/iso_8859-13.7 b/manual/LDP_man-pages/draft/man7/iso_8859-13.7 index 1af222d7..d90d9bbd 100644 --- a/manual/LDP_man-pages/draft/man7/iso_8859-13.7 +++ b/manual/LDP_man-pages/draft/man7/iso_8859-13.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 2009 Lefteris Dimitroulakis (edimitro@tee.gr) .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -32,7 +31,7 @@ .\" all rights reserved. .\" Translated 2012-04-27, Akihiro MOTOKI .\" -.TH ISO_8859\-13 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ISO_8859\-13 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 iso_8859\-13 \- ISO 8859\-13 文字集合の 8進数、10進数、16進数による符号化 .SH 説明 @@ -60,8 +59,8 @@ ISO 8859\-15 西ヨーロッパの言語 (Latin\-9) ISO 8859\-16 ルーマニア語 (Latin\-10) .TE .SS "ISO 8859\-13 文字" -以下の表は ISO 8859\-13 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in ISO 8859\-13 that are +printable and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -168,6 +167,5 @@ ISO 8859\-13 は Latin\-7 としても知られている。 .SH 関連項目 \fBascii\fP(7), \fBcharsets\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/iso_8859-14.7 b/manual/LDP_man-pages/draft/man7/iso_8859-14.7 index 983a2503..c58f10b8 100644 --- a/manual/LDP_man-pages/draft/man7/iso_8859-14.7 +++ b/manual/LDP_man-pages/draft/man7/iso_8859-14.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 2009 Lefteris Dimitroulakis (edimitro@tee.gr) .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -32,7 +31,7 @@ .\" all rights reserved. .\" Translated 2012-04-27, Akihiro MOTOKI .\" -.TH ISO_8859\-14 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ISO_8859\-14 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 iso_8859\-14 \- ISO 8859\-14 文字集合の 8進数、10進数、16進数による符号化 .SH 説明 @@ -60,8 +59,8 @@ ISO 8859\-15 西ヨーロッパの言語 (Latin\-9) ISO 8859\-16 ルーマニア語 (Latin\-10) .TE .SS "ISO 8859\-14 文字" -以下の表は ISO 8859\-14 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in ISO 8859\-14 that are +printable and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -168,6 +167,5 @@ ISO 8859\-14 は Latin\-8 としても知られている。 .SH 関連項目 \fBascii\fP(7), \fBcharsets\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/iso_8859-15.7 b/manual/LDP_man-pages/draft/man7/iso_8859-15.7 index cefc9410..3763ed96 100644 --- a/manual/LDP_man-pages/draft/man7/iso_8859-15.7 +++ b/manual/LDP_man-pages/draft/man7/iso_8859-15.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 1993-1995 Daniel Quinlan (quinlan@yggdrasil.com) .\" Copyright 1999 Dimitri Papadopoulos (dpo@club-internet.fr) .\" @@ -35,7 +34,7 @@ .\" by HANATAKA Shinya .\" Updated Tue Sep 9 JST 2003 by Akihiro MOTOKI .\" -.TH ISO_8859\-15 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ISO_8859\-15 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 iso_8859\-15 \- ISO 8859\-15 文字集合の 8進数、10進数、16進数による符号化 .SH 説明 @@ -64,8 +63,8 @@ ISO 8859\-15 西ヨーロッパの言語 (Latin\-9) ISO 8859\-16 ルーマニア語 (Latin\-10) .TE .SS "ISO 8859\-15 文字" -以下の表は ISO 8859\-15 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in ISO 8859\-15 that are +printable and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -170,8 +169,7 @@ _ .SH 備考 ISO 8859\-15 は Latin\-9 としても知られている (時として Latin\-0 と呼ばれることもある)。 .SH 関連項目 -\fBascii\fP(7), \fBcharsets\fP(7), \fBiso_8859\-1\fP(7), \fButf\-8\fP(7) +\fBascii\fP(7), \fBcharsets\fP(7), \fBcp1252\fP(7), \fBiso_8859\-1\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/iso_8859-16.7 b/manual/LDP_man-pages/draft/man7/iso_8859-16.7 index 2a54ca4f..e70ec853 100644 --- a/manual/LDP_man-pages/draft/man7/iso_8859-16.7 +++ b/manual/LDP_man-pages/draft/man7/iso_8859-16.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 2002 Ionel Mugurel Ciobîcă (IMCiobica@netscape.net) .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -33,7 +32,7 @@ .\" Translated 2003-09-10, Akihiro MOTOKI .\" Modified 2007-05-04, Akihiro MOTOKI .\" -.TH ISO_8859\-16 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ISO_8859\-16 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 iso_8859\-16 \- ISO 8859\-16 文字集合の 8進数、10進数、16進数による符号化 .SH 説明 @@ -61,8 +60,8 @@ ISO 8859\-15 西ヨーロッパの言語 (Latin\-9) ISO 8859\-16 ルーマニア語 (Latin\-10) .TE .SS "ISO 8859\-16 文字" -以下の表は ISO 8859\-16 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in ISO 8859\-16 that are +printable and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -169,6 +168,5 @@ ISO 8859\-16 は Latin\-10 としても知られている。 .SH 関連項目 \fBascii\fP(7), \fBcharsets\fP(7), \fBiso_8859\-3\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/iso_8859-2.7 b/manual/LDP_man-pages/draft/man7/iso_8859-2.7 index 449acc0a..dd70aa7e 100644 --- a/manual/LDP_man-pages/draft/man7/iso_8859-2.7 +++ b/manual/LDP_man-pages/draft/man7/iso_8859-2.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 1999 Roman Maurer (roman.maurer@hermes.si) .\" Copyright 1993-1995 Daniel Quinlan (quinlan@yggdrasil.com) .\" @@ -37,7 +36,7 @@ .\" by HANATAKA Shinya .\" Updated Tue Sep 9 JST 2003 by Akihiro MOTOKI .\" -.TH ISO_8859\-2 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ISO_8859\-2 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 iso_8859\-2 \- ISO 8859\-2 文字集合の 8進数、10進数、16進数による符号化 .SH 説明 @@ -65,8 +64,8 @@ ISO 8859\-15 西ヨーロッパの言語 (Latin\-9) ISO 8859\-16 ルーマニア語 (Latin\-10) .TE .SS "ISO 8859\-2 文字" -以下の表は ISO 8859\-2 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in ISO 8859\-2 that are printable +and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -174,6 +173,5 @@ ISO 8859\-2 は Latin\-2 としても知られている。 \fBascii\fP(7), \fBcharsets\fP(7), \fBiso_8859\-1\fP(7), \fBiso_8859\-16\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/iso_8859-3.7 b/manual/LDP_man-pages/draft/man7/iso_8859-3.7 index c82bdf7f..e5c5e176 100644 --- a/manual/LDP_man-pages/draft/man7/iso_8859-3.7 +++ b/manual/LDP_man-pages/draft/man7/iso_8859-3.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 2009 Lefteris Dimitroulakis (edimitro@tee.gr) .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -32,7 +31,7 @@ .\" all rights reserved. .\" Translated 2012-04-27, Akihiro MOTOKI .\" -.TH ISO_8859\-3 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ISO_8859\-3 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 iso_8859\-3 \- ISO 8859\-3 文字集合の 8進数、10進数、16進数による符号化 .SH 説明 @@ -60,8 +59,8 @@ ISO 8859\-15 西ヨーロッパの言語 (Latin\-9) ISO 8859\-16 ルーマニア語 (Latin\-10) .TE .SS "ISO 8859\-3 文字" -以下の表は ISO 8859\-3 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in ISO 8859\-3 that are printable +and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -161,6 +160,5 @@ ISO 8859\-3 は Latin\-3 としても知られている。 .SH 関連項目 \fBascii\fP(7), \fBcharsets\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/iso_8859-4.7 b/manual/LDP_man-pages/draft/man7/iso_8859-4.7 index effa613a..aeaef372 100644 --- a/manual/LDP_man-pages/draft/man7/iso_8859-4.7 +++ b/manual/LDP_man-pages/draft/man7/iso_8859-4.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 2009 Lefteris Dimitroulakis (edimitro@tee.gr) .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -32,7 +31,7 @@ .\" all rights reserved. .\" Translated 2012-04-27, Akihiro MOTOKI .\" -.TH ISO_8859\-4 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ISO_8859\-4 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 iso_8859\-4 \- ISO 8859\-4 文字集合の 8 進数、10 進数、16 進数による符号化 .SH 説明 @@ -60,8 +59,8 @@ ISO 8859\-15 西ヨーロッパの言語 (Latin\-9) ISO 8859\-16 ルーマニア語 (Latin\-10) .TE .SS "ISO 8859\-4 文字" -以下の表は ISO 8859\-4 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in ISO 8859\-4 that are printable +and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -168,6 +167,5 @@ ISO 8859\-4 は Latin\-4 としても知られている。 .SH 関連項目 \fBascii\fP(7), \fBcharsets\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/iso_8859-5.7 b/manual/LDP_man-pages/draft/man7/iso_8859-5.7 index 7fb3dd54..bd6fd2f8 100644 --- a/manual/LDP_man-pages/draft/man7/iso_8859-5.7 +++ b/manual/LDP_man-pages/draft/man7/iso_8859-5.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 2009 Lefteris Dimitroulakis (edimitro@tee.gr) .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -32,7 +31,7 @@ .\" all rights reserved. .\" Translated 2012-04-27, Akihiro MOTOKI .\" -.TH ISO_8859\-5 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ISO_8859\-5 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 iso_8859\-5 \- ISO 8859\-5 文字集合の 8 進数、10 進数、16 進数による符号化 .SH 説明 @@ -60,8 +59,8 @@ ISO 8859\-15 西ヨーロッパの言語 (Latin\-9) ISO 8859\-16 ルーマニア語 (Latin\-10) .TE .SS "ISO 8859\-5 文字" -以下の表は ISO 8859\-5 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in ISO 8859\-5 that are printable +and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -168,8 +167,8 @@ T} 377 255 FF џ CYRILLIC SMALL LETTER DZHE .TE .SH 関連項目 -\fBascii\fP(7), \fBcharsets\fP(7), \fBkoi8\-r\fP(7), \fBkoi8\-u\fP(7), \fButf\-8\fP(7) +\fBascii\fP(7), \fBcharsets\fP(7), \fBcp1251\fP(7), \fBkoi8\-r\fP(7), \fBkoi8\-u\fP(7), +\fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/iso_8859-6.7 b/manual/LDP_man-pages/draft/man7/iso_8859-6.7 index 250fa747..89d5a716 100644 --- a/manual/LDP_man-pages/draft/man7/iso_8859-6.7 +++ b/manual/LDP_man-pages/draft/man7/iso_8859-6.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 2009 Lefteris Dimitroulakis (edimitro@tee.gr) .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -32,7 +31,7 @@ .\" all rights reserved. .\" Translated 2012-04-27, Akihiro MOTOKI .\" -.TH ISO_8859\-6 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ISO_8859\-6 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 iso_8859\-6 \- ISO 8859\-6 文字集合の 8 進数、10 進数、16 進数による符号化 .SH 説明 @@ -60,8 +59,8 @@ ISO 8859\-15 西ヨーロッパの言語 (Latin\-9) ISO 8859\-16 ルーマニア語 (Latin\-10) .TE .SS "ISO 8859\-6 文字" -以下の表は ISO 8859\-6 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in ISO 8859\-6 that are printable +and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -124,6 +123,5 @@ ISO 8859\-6 では、関連する多くの言語 (ウルドゥー語ヤペルシ .SH 関連項目 \fBascii\fP(7), \fBcharsets\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/iso_8859-7.7 b/manual/LDP_man-pages/draft/man7/iso_8859-7.7 index 398b6c37..169c642f 100644 --- a/manual/LDP_man-pages/draft/man7/iso_8859-7.7 +++ b/manual/LDP_man-pages/draft/man7/iso_8859-7.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 1999 Dimitri Papadopoulos (dpo@club-internet.fr) .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -34,7 +33,7 @@ .\" by HANATAKA Shinya .\" Updated Tue Sep 9 JST 2003 by Akihiro MOTOKI .\" -.TH ISO_8859\-7 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ISO_8859\-7 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 iso_8859\-7 \- ISO 8859\-7 文字集合の 8 進数、10 進数、16 進数による符号化 .SH 説明 @@ -62,8 +61,8 @@ ISO 8859\-15 西ヨーロッパの言語 (Latin\-9) ISO 8859\-16 ルーマニア語 (Latin\-10) .TE .SS "ISO 8859\-7 文字" -以下の表は ISO 8859\-7 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in ISO 8859\-7 that are printable +and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -174,6 +173,5 @@ ISO 8859\-7 は以前は ELOT\-928 や ECMA\-118:1986 とも呼ばれていた .SH 関連項目 \fBascii\fP(7), \fBcharsets\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/iso_8859-8.7 b/manual/LDP_man-pages/draft/man7/iso_8859-8.7 index a5b32bce..25c9c615 100644 --- a/manual/LDP_man-pages/draft/man7/iso_8859-8.7 +++ b/manual/LDP_man-pages/draft/man7/iso_8859-8.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 2009 Lefteris Dimitroulakis (edimitro@tee.gr) .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -34,7 +33,7 @@ .\" all rights reserved. .\" Translated 2012-04-27, Akihiro MOTOKI .\" -.TH ISO_8859\-8 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ISO_8859\-8 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 iso_8859\-8 \- ISO 8859\-8 文字集合の 8 進数、10 進数、16 進数による符号化 .SH 説明 @@ -62,8 +61,8 @@ ISO 8859\-15 西ヨーロッパの言語 (Latin\-9) ISO 8859\-16 ルーマニア語 (Latin\-10) .TE .SS "ISO 8859\-8 文字" -以下の表は ISO 8859\-8 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in ISO 8859\-8 that are printable +and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -135,6 +134,5 @@ ISO 8859\-8 は ISO\-IR\-138 としても知られていた。 ISO 8859\-8 .SH 関連項目 \fBascii\fP(7), \fBcharsets\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/iso_8859-9.7 b/manual/LDP_man-pages/draft/man7/iso_8859-9.7 index dd9671ec..2f71a3d9 100644 --- a/manual/LDP_man-pages/draft/man7/iso_8859-9.7 +++ b/manual/LDP_man-pages/draft/man7/iso_8859-9.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 2002 Dimitri Papadopoulos (dpo@club-internet.fr) .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -34,7 +33,7 @@ .\" by Akihiro Motoki .\" Updated Tue Sep 9 JST 2003 by Akihiro MOTOKI .\" -.TH ISO_8859\-9 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH ISO_8859\-9 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 iso_8859\-9 \- ISO 8859\-9 文字集合の 8 進数、10 進数、16 進数による符号化 .SH 説明 @@ -62,8 +61,8 @@ ISO 8859\-15 西ヨーロッパの言語 (Latin\-9) ISO 8859\-16 ルーマニア語 (Latin\-10) .TE .SS "ISO 8859\-9 文字" -以下の表は ISO 8859\-9 の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in ISO 8859\-9 that are printable +and unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -170,6 +169,5 @@ ISO 8859\-9 は Latin\-5 としても知られている。 .SH 関連項目 \fBascii\fP(7), \fBcharsets\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/koi8-r.7 b/manual/LDP_man-pages/draft/man7/koi8-r.7 index 9e6d0848..fb1ab0ab 100644 --- a/manual/LDP_man-pages/draft/man7/koi8-r.7 +++ b/manual/LDP_man-pages/draft/man7/koi8-r.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 2001 Alexey Mahotkin .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -33,15 +32,15 @@ .\" Translated Sat Jul 7 21:41:56 JST 2001 .\" by Yuichi SATO .\" -.TH KOI8\-R 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH KOI8\-R 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 koi8\-r \- ロシア語文字集合の 8 進数、10 進数、16 進数による符号化 .SH 説明 RFC\ 1489 で 8 ビット文字集合 KOI8\-R が定義されている。 KOI8\-R はロシア語で使用される文字の符号化を規定している。 .SS "KOI8\-R 文字" -以下の表は KOI8\-R の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in KOI8\-R that are printable and +unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -186,8 +185,8 @@ T} .SH 備考 KOI8\-U との違いは、16 進数表記で A4, A6, A7, AD, B4, B6, B7, BD である。 .SH 関連項目 -\fBascii\fP(7), \fBcharsets\fP(7), \fBiso_8859\-5\fP(7), \fBkoi8\-u\fP(7), \fButf\-8\fP(7) +\fBascii\fP(7), \fBcharsets\fP(7), \fBcp1251\fP(7), \fBiso_8859\-5\fP(7), \fBkoi8\-u\fP(7), +\fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/koi8-u.7 b/manual/LDP_man-pages/draft/man7/koi8-u.7 index 3ca72201..0efd9541 100644 --- a/manual/LDP_man-pages/draft/man7/koi8-u.7 +++ b/manual/LDP_man-pages/draft/man7/koi8-u.7 @@ -1,4 +1,3 @@ -'\" t -*- coding: UTF-8 -*- .\" Copyright 2009 Lefteris Dimitroulakis .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -34,15 +33,15 @@ .\" all rights reserved. .\" Translated 2012-04-27, Akihiro MOTOKI .\" -.TH KOI8\-U 7 2014\-10\-02 Linux "Linux Programmer's Manual" +.TH KOI8\-U 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 koi8\-u \- ウクライナ語文字集合の 8 進数、10 進数、16 進数による符号化 .SH 説明 RFC\ 2310 で 8 ビット文字集合 KOI8\-U が定義されている。 KOI8\-U はウクライナ語とベラルーシ語で使用される文字の符号化を規定している。 .SS "KOI8\-U 文字" -以下の表は KOI8\-U の表示可能な文字のうち -\fBascii\fP(7) マニュアルページに載っていないものを示している。 +The following table displays the characters in KOI8\-U that are printable and +unlisted in the \fBascii\fP(7) manual page. .TS l l l c lp-1. 8進 10進 16進 文字 説明 @@ -192,8 +191,8 @@ T} KOI8\-R との違いがある場所は、16 進数表記で A4, A6, A7, AD, B4, B6, B7, BD である。 .SH 関連項目 -\fBascii\fP(7), \fBcharsets\fP(7), \fBiso_8859\-5\fP(7), \fBkoi8\-r\fP(7), \fButf\-8\fP(7) +\fBascii\fP(7), \fBcharsets\fP(7), \fBcp1251\fP(7), \fBiso_8859\-5\fP(7), \fBkoi8\-r\fP(7), +\fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/libc.7 b/manual/LDP_man-pages/draft/man7/libc.7 index 049dfbf8..20f04b13 100644 --- a/manual/LDP_man-pages/draft/man7/libc.7 +++ b/manual/LDP_man-pages/draft/man7/libc.7 @@ -33,7 +33,7 @@ .\" all rights reserved. .\" Translated 2012-05-31, Akihiro MOTOKI .\" -.TH LIBC 7 2014\-07\-08 Linux "Linux Programmer's Manual" +.TH LIBC 7 2016\-12\-12 Linux "Linux Programmer's Manual" .SH 名前 libc \- Linux の標準 C ライブラリの概要 .SH 説明 @@ -55,29 +55,34 @@ glibc のドキュメントは glibc のマニュアルにもあり、 \fIinfo libc\fP コマンドで参照できる。 glibc リリース 1.0 は 1992 年 9 月に作成された (それ以前に 0.x リリース があった)。glibc の次のメジャーリリースは 2.0 であり、1997 年の初頭にリリースされた。 - +.PP パス名 \fI/lib/libc.so.6\fP (もしくは同様のパス名) は、通常は glibc ライブラリがある場所を指すシンボリックリンクである。 このパス名を実行すると、glibc はシステムにインストールされた バージョンの glibc に関する様々な情報を表示する。 .SS "Linux libc" -1990 年代の初めから中頃にかけて、しばらくの間 \fILinux libc\fP が存在した。 -Linux libc は、glibc 1.x から分かれたもので、当時の glibc の開発が -Linux の要望を満たしていないと感じたLinux 開発者が作成した。しばしば、 -このライブラリは (分かりにくいが) 単に "libc" と呼ばれていた。Linux -libc はメジャーバージョン 2, 3, 4, 5 がリリースされた(各リリースには多 -くのマイナーバージョンもあった)。しばらくの間、 Linux libc は多くの -Linux ディストリビューションの標準 C ライブラリであった。 - -しかしながら、 Linux libc の活動の元々の動機とは裏腹に、 -(1997 年に) glibc 2.0 がリリースされる頃までには、 -glibc は明らかに Linux libc よりも優れたものになっており、 程な -くして Linux libc を使っていた全ての主要な Linux ディストリビューション -が glibc に切り替えた。 この切り替えはかなり以前に行われたので、 -\fIman\-pages\fP プロジェクトではもはや Linux libc の詳細に関する記載には -気を使っていない。しかしながら、マニュアルページによっては Linux libc -に関する情報の名残、特に \fIlibc4\fP や \fIlibc5\fP への言及、が残っており、 -歴史を見ることができる。 +In the early to mid 1990s, there was for a while \fILinux libc\fP, a fork of +glibc 1.x created by Linux developers who felt that glibc development at the +time was not sufficing for the needs of Linux. Often, this library was +referred to (ambiguously) as just "libc". Linux libc released major +versions 2, 3, 4, and 5, as well as many minor versions of those releases. +Linux libc4 was the last version to use the a.out binary format, and the +first version to provide (primitive) shared library support. Linux libc 5 +was the first version to support the ELF binary format; this version used +the shared library soname \fIlibc.so.5\fP. For a while, Linux libc was the +standard C library in many Linux distributions. +.PP +However, notwithstanding the original motivations of the Linux libc effort, +by the time glibc 2.0 was released (in 1997), it was clearly superior to +Linux libc, and all major Linux distributions that had been using Linux libc +soon switched back to glibc. To avoid any confusion with Linux libc +versions, glibc 2.0 and later used the shared library soname \fIlibc.so.6\fP. +.PP +Since the switch from Linux libc to glibc 2.0 occurred long ago, +\fIman\-pages\fP no longer takes care to document Linux libc details. +Nevertheless, the history is visible in vestiges of information about Linux +libc that remain in a few manual pages, in particular, references to +\fIlibc4\fP and \fIlibc5\fP. .SS "他の C ライブラリ" あまり広くは使われていないが、Linux 用の他の C ライブラリがいくつかある。 これらのライブラリは、一般的には、機能とメモリー使用量の両方の面で glibc より小さく、通常は小さなバイナリを作成することを目的としており、 おそらく組み込み Linux システム用の開発に焦点を当てたものである。 @@ -98,6 +103,5 @@ glibc より小さく、通常は小さなバイナリを作成することを \fBsyscalls\fP(2), \fBgetauxval\fP(3), \fBproc\fP(5), \fBfeature_test_macros\fP(7), \fBman\-pages\fP(7), \fBstandards\fP(7), \fBvdso\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/locale.7 b/manual/LDP_man-pages/draft/man7/locale.7 index 4b871a53..99936ad4 100644 --- a/manual/LDP_man-pages/draft/man7/locale.7 +++ b/manual/LDP_man-pages/draft/man7/locale.7 @@ -40,7 +40,7 @@ .\" by HANATAKA Shinya .\" Modified Thu 14 Nov 2002 by NAKANO Takeo .\" -.TH LOCALE 7 2014\-12\-31 Linux "Linux Programmer's Manual" +.TH LOCALE 7 2019\-03\-06 Linux "Linux Programmer's Manual" .SH 名前 locale \- 多言語サポートの解説 .SH 書式 @@ -74,9 +74,14 @@ locale \- 多言語サポートの解説 関数と \fBstrxfrm\fP(3) 関数の動作を変更する。例えばドイツ語のエスツェット (鋭い s) は、ソートの際 "ss" として扱われる。 .TP \fBLC_CTYPE\fP -このカテゴリーは、 バイト列の文字としての解釈 (例えば、シングルバイト文字とマルチバイト文字か)、 文字クラス (例えば、アルファベットか数字か) -や文字クラスの動作を決定する。 これは \fBisupper\fP(3) や \fBtoupper\fP(3) -のような文字の判定・操作をする関数や、多バイト文字を扱う \fBmblen\fP(3) や \fBwctomb\fP(3) のような関数の動作を変更する。 +This category determines the interpretation of byte sequences as characters +(e.g., single versus multibyte characters), character classifications (e.g., +alphabetic or digit), and the behavior of character classes. On glibc +systems, this category also determines the character transliteration rules +for \fBiconv\fP(1) and \fBiconv\fP(3). It changes the behavior of the character +handling and classification functions, such as \fBisupper\fP(3) and +\fBtoupper\fP(3), and the multibyte character functions such as \fBmblen\fP(3) or +\fBwctomb\fP(3). .TP \fBLC_IDENTIFICATION\fP (GNU 拡張、 glibc 2.2 以降) .\" See ISO/IEC Technical Report 14652 @@ -134,8 +139,9 @@ gettext ファミリーに属する関数は、カテゴリーが \fB"C"\fP 以 \fBLC_ALL\fP 上記の全て。 .PP -\fBsetlocale\fP(3) の二番目の引き数が空文字列 \fB""\fP の場合、 デフォルトのロケールは以下の手順で決定する: -.IP 1. +If the second argument to \fBsetlocale\fP(3) is an empty string, \fI""\fP, for +the default locale, it is determined using the following steps: +.IP 1. 3 環境変数 \fBLC_ALL\fP が設定されている場合には \fBLC_ALL\fP の値が使用される。 .IP 2. 上記のカテゴリーのどれかと同じ名前の環境変数が設定されている場合には、 そのカテゴリーにはその値が使用される。 @@ -144,60 +150,64 @@ gettext ファミリーに属する関数は、カテゴリーが \fB"C"\fP 以 .PP 地域的な数値フォーマットの情報は \fBlocaleconv\fP(3) 関数によって返される \fIstruct lconv\fP で得ることができ、これは以下のように宣言されている: -.in +2n -.nf - +.PP +.in +4n +.EX struct lconv { /* (通貨以外の) 数値情報 */ - char *decimal_point; /* 小数点の文字 */ - char *thousands_sep; /* 小数点の左側の数字のグループの - 区切り文字 */ - char *grouping; /* それぞれの要素は各グループの数字の個数である。 - インデックス値が大きいほど、左側のグループを表す。 - 要素の値が CHAR_MAX の場合は、最後のグループで - あることを意味する。要素の値が 0 の場合は、 - その要素より左側の全ての要素に前の要素と同じ値を - 使用することを意味する。 */ + char *decimal_point; /* Radix character */ + char *thousands_sep; /* Separator for digit groups to left + of radix character */ + char *grouping; /* Each element is the number of digits in + a group; elements with higher indices + are further left. An element with value + CHAR_MAX means that no further grouping + is done. An element with value 0 means + that the previous element is used for + all groups further left. */ /* 残りのフィールドは通貨情報用である */ - char *int_curr_symbol; /* 最初の三つの文字は ISO 4217 の通貨記号。 - 四番目の文字は区切り文字。 - 五番目は \(aq\0\(aq。 */ - char *currency_symbol; /* 地域の通貨記号 */ - char *mon_decimal_point; /* 小数点の文字 */ - char *mon_thousands_sep; /* 上記の `thousands_sep' と同様 */ - char *mon_grouping; /* 上記の `grouping' と同様 */ - char *positive_sign; /* 正の値の符号 */ - char *negative_sign; /* 負の値の符号 */ - char int_frac_digits; /* 国際的な小数部の数字 */ - char frac_digits; /* 地域の小数部の数字 */ - char p_cs_precedes; /* 正の値の前に通貨記号を置く場合は 1, - 後ろに置く場合は 0 */ - char p_sep_by_space; /* 正の値と通貨記号の間にスペースを - 入れる場合は 1 */ - char n_cs_precedes; /* 負の値の前に通貨記号を置く場合は 1, - 後ろに置く場合は 0 */ - char n_sep_by_space; /* 負の値と通貨記号の間にスペースを - 入れる場合は 1 */ - /* 正と負の符号の位置: - 0 値と通貨記号を括弧で囲む - 1 符号は値と通貨記号の前に置く - 2 符号は値と通貨記号の後に置く - 3 符号は通貨記号の直後に置く - 4 符号は通貨記号の直前に置く */ + char *int_curr_symbol; /* First three chars are a currency + symbol from ISO 4217. Fourth char + is the separator. Fifth char + is \(aq\e0\(aq. */ + char *currency_symbol; /* Local currency symbol */ + char *mon_decimal_point; /* Radix character */ + char *mon_thousands_sep; /* Like \fIthousands_sep\fP above */ + char *mon_grouping; /* Like \fIgrouping\fP above */ + char *positive_sign; /* Sign for positive values */ + char *negative_sign; /* Sign for negative values */ + char int_frac_digits; /* International fractional digits */ + char frac_digits; /* Local fractional digits */ + char p_cs_precedes; /* 1 if currency_symbol precedes a + positive value, 0 if succeeds */ + char p_sep_by_space; /* 1 if a space separates + currency_symbol from a positive + value */ + char n_cs_precedes; /* 1 if currency_symbol precedes a + negative value, 0 if succeeds */ + char n_sep_by_space; /* 1 if a space separates + currency_symbol from a negative + value */ + /* Positive and negative sign positions: + 0 Parentheses surround the quantity and currency_symbol. + 1 The sign string precedes the quantity and currency_symbol. + 2 The sign string succeeds the quantity and currency_symbol. + 3 The sign string immediately precedes the currency_symbol. + 4 The sign string immediately succeeds the currency_symbol. */ char p_sign_posn; char n_sign_posn; }; -.fi +.EE .in .SS "ロケール API の POSIX.1\-2008 での拡張" POSIX.1\-2008 では、 ロケール API への多くの拡張が標準化されている。 これは GNU C ライブラリのバージョン 2.3 で初めて登場した実装に基づいている。 これらの拡張は、 従来のロケール API がマルチスレッドアプリケーションや複数のロケールを扱う必要があるアプリケーションとうまく組み合わせて使うことができない問題を解決するために設計された。 - +.PP この拡張は、 ロケールオブジェクトの作成、操作のための新しい関数 (\fBnewlocale\fP(3), \fBfreelocale\fP(3), \fBduplocale\fP(3), \fBuselocale\fP(3)) とサフィックス "_l" が付いた新しいライブラリ関数 (\fBtoupper_l\fP(3) など) で構成される。 新しいライブラリ関数は、 従来のロケール依存の API (\fBtoupper\fP(3) など) @@ -207,12 +217,15 @@ POSIX.1\-2008 では、 ロケール API への多くの拡張が標準化され 特権を持たないロケールを参照するすべてのプログラムに影響がある。 .TP \fBLOCPATH\fP -コロン (\(aq:\(aq) 区切りの、 ロケールデータを検索するパス名のリスト。 この変数が設定されると、 \fILOCPATH\fP -とシステムのデフォルトのロケールデータのパスにある、 個々のコンパイルされたロケールデータファイルだけが使用される。 -ロケールアーカイブは利用可能でも使用されない (\fBlocaledef\fP(1) 参照)。 個々のコンパイルされたロケールデータファイルは、 -現在使用されているロケールに応じたサブディレクトリから検索される。 例えば、 あるカテゴリーで \fIen_GB.UTF\-8\fP が使用されている場合、 -サブディレクトリ \fIen_GB.UTF\-8\fP, \fIen_GB.utf8\fP, \fIen_GB\fP, \fIen.UTF\-8\fP, \fIen.utf8\fP, -\fIen\fP がこの順序で検索される。 +A list of pathnames, separated by colons (\(aq:\(aq), that should be used to +find locale data. If this variable is set, only the individual compiled +locale data files from \fBLOCPATH\fP and the system default locale data path +are used; any available locale archives are not used (see \fBlocaledef\fP(1)). +The individual compiled locale data files are searched for under +subdirectories which depend on the currently used locale. For example, when +\fIen_GB.UTF\-8\fP is used for a category, the following subdirectories are +searched for, in this order: \fIen_GB.UTF\-8\fP, \fIen_GB.utf8\fP, \fIen_GB\fP, +\fIen.UTF\-8\fP, \fIen.utf8\fP, and \fIen\fP. .SH ファイル .TP \fI/usr/lib/locale/locale\-archive\fP @@ -225,12 +238,12 @@ POSIX.1\-2008 では、 ロケール API への多くの拡張が標準化され .\" The GNU gettext functions are specified in LI18NUX2000. POSIX.1\-2001. .SH 関連項目 -\fBlocale\fP(1), \fBlocaledef\fP(1), \fBcatopen\fP(3), \fBgettext\fP(3), -\fBlocaleconv\fP(3), \fBmbstowcs\fP(3), \fBnewlocale\fP(3), \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), \fBuselocale\fP(3), -\fBwcstombs\fP(3), \fBlocale\fP(5), \fBcharsets\fP(7), \fBunicode\fP(7), \fButf\-8\fP(7) +\fBiconv\fP(1), \fBlocale\fP(1), \fBlocaledef\fP(1), \fBcatopen\fP(3), \fBgettext\fP(3), +\fBiconv\fP(3), \fBlocaleconv\fP(3), \fBmbstowcs\fP(3), \fBnewlocale\fP(3), +\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), +\fBuselocale\fP(3), \fBwcstombs\fP(3), \fBlocale\fP(5), \fBcharsets\fP(7), +\fBunicode\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/mailaddr.7 b/manual/LDP_man-pages/draft/man7/mailaddr.7 deleted file mode 100644 index 46d510a7..00000000 --- a/manual/LDP_man-pages/draft/man7/mailaddr.7 +++ /dev/null @@ -1,111 +0,0 @@ -.\" Copyright (c) 1983, 1987 The Regents of the University of California. -.\" All rights reserved. -.\" -.\" @(#)mailaddr.7 6.5 (Berkeley) 2/14/89 -.\" -.\" Extensively rewritten by Arnt Gulbrandsen . My -.\" changes are placed under the same copyright as the original BSD page. -.\" -.\" Adjusted by Arnt Gulbrandsen in 2004 to -.\" account for changes since 1995. Route-addrs are now even less -.\" common, etc. Some minor wording improvements. Same copyright. -.\" -.\" %%%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 -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated 1997-06-03, HANATAKA Shinya -.\" Modified 2005-02-21, Akihiro MOTOKI -.\" -.TH MAILADDR 7 2004\-09\-15 Linux "Linux User's Manual" -.UC 5 -.SH 名前 -mailaddr \- メールアドレスの説明 -.SH 説明 -.nh -このマニュアルページでは、インターネットで使用される SMTP メール アドレスの簡単な紹介を行う。メールアドレスは一般的には -.PP - user@domain -.PP -の形である。 domain はサブドメインの階層を ドット (.) で 区切ってつないだものである。 以下の例は全て同じアドレスの正しい表記法である: -.PP - eric@monet.berkeley.edu -.br - Eric Allman -.br - eric@monet.berkeley.edu (Eric Allman) -.PP -ドメイン部分 ("monet.berkeley.edu") はメールを受信するドメインである。 -ドメインはホスト名であってもよく、以前はホスト名が普通であったが、 そうである必要はない。ドメイン部分は大文字、小文字の区別はされない。 -.PP -ローカル部分 ("eric") は普通はユーザーの名前であるが、 その意味はローカルなソフトウェアによって定義される。 -大文字、小文字を区別してもよいが、普通は区別されない。 ローカル部分がゴミのように見える場合は、それはたいて内部的な電子メール -システムとインターネットの間にあるゲートウェイのせいである。 例えば、以下のようなものがある。 -.PP - "surname/admd=telemail/c=us/o=hp/prmd=hp"@some.where -.br - USER%SOMETHING@some.where -.br - machine!machine!name@some.where -.br - I2461572@some.where -.PP -(それぞれ、X.400 ゲートウェイ、 正しいインターネットサポートを欠いた勝手な内部メールシステム、 UUCP ゲートウェイでの例である。 -最後のは単に間抜けなユーザー名である。) -.PP -実名部分 ("Eric Allman") は <> の前に置くこともできるし、 -()に入れて最後に置くこともできる。(厳密に言うと、二つは全く同じ わけではないが、その違いはこのページの目的から外れるので言及しない。) 例えば -"." などの文字を含む場合には名前を "" で括る必要がある: -.PP - "Eric P. Allman" -.SS 省略形 -.PP -多くのメールシステムがドメイン名の省略形を許している。 例えば berkeley.edu のユーザーは Eric Allman にメールを送るために -"eric@monet" が使用できるかもしれない。 『この動作は推奨されるものではない』 正しく動作する場合もあるが、それをあてにすべきではない。 -.SS 経路アドレス -.PP -以前は、メッセージが最終目的地へ到達するために通過するホストを 指定しなければならないことが時々あった。 中継点を指定したアドレスを "経路アドレス -(route\-addrs)" という。 以下の書式を使用する: -.PP - <@hosta,@hostb:user@hostc> -.PP -これは通信文を hosta に送り、そこから hostb に送り、最終的に hostc に -送ることを指定している。多くのホストは経路アドレスを無視して直接 hostc に送る。 -.PP -今では経路アドレスが使われることはほとんどない。 古いメールアーカイブで時々に目にすることがある。 一般には実際のアドレスを求めるために -"user@hostc" 以外の全て部分を無視 することもできる。 -.SS "ポストマスター (postmaster)" -.PP -全てのサイトは、メールシステムの問題を知らせる宛て先として、 "postmaster" というユーザーか別名定義 (alias) を用意しなければ -ならない。 "postmaster" のアドレスは大文字、小文字の区別はされない。 -.SH ファイル -\fI/etc/aliases\fP -.br -\fI~/.forward\fP -.SH 関連項目 -\fBbinmail\fP(1), \fBmail\fP(1), \fBmconnect\fP(1), \fBaliases\fP(5), \fBforward\fP(5), -\fBsendmail\fP(8), \fBvrfy\fP(8) - -RFC\ 2822 (Internet Message Format) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 deleted file mode 100644 index 51f9520e..00000000 --- a/manual/LDP_man-pages/draft/man7/man-pages.7 +++ /dev/null @@ -1,686 +0,0 @@ -.\" (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 -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2007 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2007-06-13, Akihiro MOTOKI , LDP v2.54 -.\" Updated 2007-07-04, Akihiro MOTOKI , LDP v2.59 -.\" Updated 2007-09-03, Akihiro MOTOKI , LDP v2.64 -.\" Updated 2008-08-09, Akihiro MOTOKI , LDP v3.05 -.\" Updated 2013-05-04, Akihiro MOTOKI -.\" Updated 2013-07-24, Akihiro MOTOKI -.\" Updated 2013-08-21, Akihiro MOTOKI , LDP v3.53 -.\" -.TH MAN\-PAGES 7 2014\-12\-31 Linux "Linux Programmer's Manual" -.SH 名前 -man\-pages \- Linux の man ページを書く際の決まり事 -.SH 書式 -\fBman\fP [\fIsection\fP] \fItitle\fP -.SH 説明 -このページでは、 Linux \fIman\-pages\fP プロジェクトのマニュアルページを書く際に 従うべき決まり事について説明する。 Linux -\fIman\-pages\fP プロジェクトは Linux カーネルおよび GNU C ライブラリが提供するユーザー空間 API -のドキュメント作成を行っている。Linux システムのマニュアルページのセクション 2 のページのほとんどと、セクション 3, 4, 5, 7 -の多くのページが、このプロジェクトにより提供されている。このページで説明されている決まり事は、他のプロジェクトの -マニュアルページを書く作者にも役立つことだろう。 -.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 -man ページに最後に些細でない変更が行われた日付。 (\fIman\-pages\fP プロジェクトでは、 -このタイムスタンプの必要な更新はスクリプトで自動的に行われるので、 パッチの中でこの日付を手動で更新する必要はない。) 日付は 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 のみ] -属性 [通常はセクション 2, 3 のみ] -準拠 -注意/備考 -バグ -例 -\fB関連項目\fP - -.fi -.in -「伝統的に使われてきた見出しが使える場合には、それを使ってほしい。」 この種の一貫性を保つことで、情報を理解しやすくなるからである。 -どうしても必要な場合には、理解しやすくなるように独自の見出しを 作ってもよい (特にセクション 4 や 5 のページではこうした方が -わかりやすくなる)。ただし、そうする前に、伝統的な見出しを使い、 そのセクション内にサブセクション (\fI.SS\fP) を設けることで -対応できないか考えてほしい。 - -以下のリストでは、上記のセクションのそれぞれの内容について 詳しく説明する。 -.TP 14 -\fB名前 (NAME)\fP -このマニュアルページの名前 - -\&\fB.SH NAME\fP コマンドの後に続ける行の重要な情報については \fBman\fP(7) を参照。この行のすべての単語は ("\e\-" -の直後の単語も含め) 小文字にすべきである。但し、英語や技術用語の慣例として別の記載をする場合はこの限りではない。 -.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 のセクションを用いる。 - -システムコールやライブラリ関数の新しい動作や新しいフラグについて説明する際は、 変更が取り込まれたカーネルや C -ライブラリのバージョンを注記に入れるように気を付けること。 フラグにこの情報の注記を入れる方法としては、推奨される方法は、 以下のように \fB.TP\fP -リストの一部にすることである (この例はシステムコールの新しいフラグの場合)。 -.RS 22 -.TP - \fBXYZ_FLAG\fP (Linux 3.7 以降) -フラグの説明... -.RE -.IP -バージョン情報を入れておくのは、 古いバージョンのカーネルや C ライブラリを使わざるを得ないユーザーにとって、 特に有用である -(例えば、組み込みシステムではよくあることである)。 -.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属性 (ATTRIBUTES)\fP -そのページで説明している関数の種々の属性の概要を、サブセクションに分けて説明する。 - -以下のサブセクションが定義されている。 -.sp -.RS -.TP -\fBマルチスレッディング (pthreads(7) 参照)\fP -このサブセクションでは、マルチスレッドアプリケーションに関連する属性について説明する。 -.RS -.IP * 3 -その関数がスレッドセーフかどうか。 -.IP * -その関数が取り消しポイント (cancellation point) かどうか。 -.IP * -その関数が非同期で安全にキャンセルできるか (async\-cancel\-safe かどうか)。 -.RE -.IP -これらの属性の詳細は \fBpthreads\fP(7) で説明されている。 -.RE -.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 -そのマニュアルページで説明している関数やコマンドに関連する標準規格や慣習について説明。 - -様々な標準を示すのに適した用語は \fBstandards\fP(7) に見出しでリストになっている。 - -セクション 2 や 3 のページでは、このセクションで システムコールや関数が準拠する POSIX.1 のバージョンと、 C99 -で規定されているかに触れるべきである。 (SUS, SUSv2, XPG などの他の標準規格や、SVr4 や 4.xBSD の実装標準に -ついては、説明しているコールがこれらの規格で規定されており POSIX.1 の現行バージョンで規定されていない場合以外は、 -あまり深く気にする必要はない。) - -そのコールがどの標準にも基づいていないが、 他のシステムで広く存在する場合は、その旨を記載すること。 そのコールが Linux -固有の場合は、その旨を記載すること。 - -(そうなっているページが多いが) このセクションの内容が標準のリスト だけの場合、リストの最後にピリオド (\(aq.\(aq) を置くこと。 -.TP -\fB注意 (NOTES)\fP -その他の注記。 - -セクション 2 と 3 のマニュアルページでは、 \fILinux での注意 (Linux Notes)\fP や \fIglibc での注意 (Glibc -Notes)\fP という名前のサブセクション (\fBSS\fP) を設けると便利なこともある。 - -セクション 2 では、 システムコールに対する C -ライブラリのラッパー関数とカーネルが提供する素のシステムコールのインターフェースの間で違いがある場合に、その違いを説明する注記を記載する際には \fIC -ライブラリとカーネル ABI の違い\fP という見出しを使うこと。 -.TP -\fBバグ (BUGS)\fP -制限、知られている欠陥や不便な点、その他不思議な動作など。 -.TP -\fB例 (EXAMPLE)\fP -この関数、ファイル、コマンドをどのように使うかを示す、1〜2 個の例。 - -サンプルプログラムを書く際の詳細は 以下の「サンプルプログラム」の節を参照のこと。 -.TP -\fB著者 (AUTHORS)\fP -文書やプログラムの著者の一覧。 - -\fB著者セクションは極力使用しないこと。\fP 一般的には、著者のリストを各ページに撒き散らさない方がよい -(時間がたつと、作者のリストは膨大になる可能性がある)。 マニュアルページを新規に書いたり、大幅に修正を行った場合には、 -ソースファイルにコメントとして著作権表示を追加すること。 あなたがデバイスドライバの作者で、バグを報告するためのアドレスを -載せたい場合は、「バグ」セクションの後ろにこのセクションを配置すること。 -.TP -\fB関連項目 (SEE ALSO)\fP -関連するマニュアルページのコンマ区切りのリスト。 可能なら関連する他の文書も書く。 - -リストは、 セクション番号順に、セクション内ではアルファベット順で記載する。 このリストの末尾にピリオドを置かないこと。 -.IP -関連項目のリストに長いマニュアルページ名が多く含まれる場合には、出力を見やすくするために \fI.ad l\fP (右揃えをしない) や \fI.nh\fP -(ハイフンによる折り返しをしない) を活用するとよい。個々のページ名のハイフンによる折り返しは、単語の前に "\e%" を付けることで防ぐことができる。 - -FOSS プロジェクトやそのドキュメントは本質的に分散して自律的に行われるので、 -「関連項目」セクションに他のプロジェクトが提供するマニュアルページへの参照を含める必要がときとしてあり、多くの場合は含めるのが望ましい場合がある。 -.SH スタイルガイド -以下の節では\fIman\-pages\fPプロジェクトで推奨のスタイルについて説明している。 ここで触れられていない点については、"the Chicago -Manual of Style" がたいていはよい情報源になるだろう。 -また、すでに使用されているスタイルについてはプロジェクトのソースツリーを検索してみてほしい。 -(訳注:この章では英語の原文でのスタイルについて説明しており、日本語マニュアルにはあわない点もあるため、具体例などは英語のままとしている箇所もあります。) -.SS 性別の区別のない表現の使用 -可能な限り、マニュアルページの文章では性別の区別のない表現を使用すること。 性別に区別のない単数形の代名詞として "they" ("them", -"themself", "their") を使用してもよい。 -.SS フォントの慣習 -.PP -関数に対しては、引き数には常にイタリック体を用いる。 「たとえ書式 (SYNOPSIS) セクションであっても、このルールに従う」 -関数の他の部分はボールドを指定する: -.PP -\fB int myfunction(int \fP\fIargc\fP\fB, char **\fP\fIargv\fP\fB);\fP -.PP -引き数名といった変数名はイタリック体を指定すべきである。 -.PP -ファイル名 (パス名、またはヘッダーファイルへの参照) は常にイタリック体にする (例: \fI\fP)。 ただし、書式 -(SYNOPSIS) セクションは例外で、 インクルードファイルはボールドにする (例: \fB#include \fP)。 -標準のインクルードヘッダーファイルを参照する際は、 通常の C 言語と同様に山括弧でヘッダーファイルを囲ぬで指定する (例: -\fI\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 といったツールがページ間のハイパーリンクを適切に生成できる。) - -制御文字は太字で引用符なしで表記すること。 例えば \fB^X\fP。 -.SS "綴り (spelling)" -リリース 2.59 からだが、 \fIman\-pages\fP はアメリカ英語の綴りの慣習に従っている -(以前はイギリス英語とアメリカ英語が基準もなく混在して使われていた)。 新しいページやパッチは全てこの慣習に従って下さい。 - -よく知られた綴りの違い以外に、微妙な違いもいくつか見られる。 -.IP * 3 -アメリカ英語では "backward", "upward", "toward" を使う傾向にあるが、イギリス英語では "backwards", -"upwards", "towards" などを使う方が多い。 -.SS "BSD バージョン番号" -BSD バージョン番号の伝統的な表記方法は \fIx.yBSD\fP である (\fIx.y\fP はバージョン番号; 例: 4.2BSD)。 \fIBSD 4.3\fP -といった表記は避けること。 -.SS 大文字表記 -サブセクション ("SS") 見出しでは、最初の単語だけ先頭文字を大文字にし、残りの単語は小文字にすること。但し、英語の用法 (例えば、固有名詞) -やプログラミング言語の要件 (例えば、識別子の名前) などで別の表記をする場合はこの限りではない。 - -\&.SS Unicode under Linux - -.SS 構造体の定義、シェルのセッションログなどの字下げ、など -構造体の定義やシェルのセッションログなどを本文中に記載する際は、 スペース 4個分の字下げを行う (つまり、ブロックを \fI.in\ +4n\fP と -\&\fI.in\fP で囲む)。 -.SS 推奨用語 -以下の表にマニュアルページでの使用が推奨される用語を示す。これらは主にマニュアルページ間での一貫性を保つためである。 -.TS -l l l ---- -l l l. -用語 使用を避ける単語 備考 - -bit mask bitmask -built\-in builtin -Epoch epoch T{ -For the UNIX Epoch (00:00:00, 1 Jan 1970 UTC) -T} -filename file name -filesystem file system -hostname host name -inode i\-node -lowercase lower case, lower\-case -pathname path name -pseudoterminal pseudo\-terminal -privileged port T{ -reserved port, -system port -T} -real\-time T{ -realtime, -real time -T} -run time runtime -saved set\-group\-ID T{ -saved group ID, -saved set\-GID -T} -saved set\-user\-ID T{ -saved user ID, -saved set\-UID -T} -set\-group\-ID set\-GID, setgid -set\-user\-ID set\-UID, setuid -superuser T{ -super user, -super\-user -T} -superblock T{ -super block, -super\-block -T} -timestamp time stamp -timezone time zone -uppercase upper case, upper\-case -usable useable -user space userspace -username user name -zeros zeroes -.TE -.PP -以下の\fI修飾子としての複合語におけるハイフン\fPの議論も参照。 -.SS 使用を避ける用語 -以下の表にマニュアルページでの使用を避けるべき用語を示す。 推奨される表現も合わせて記載している。 -これらは主にマニュアルページ間での一貫性を保つためである。 -.TS -l l l ---- -l l l. -使用を避ける 使用を推奨 備考 - -32bit 32\-bit T{ -8\-bit, 16\-bit なども同様 -T} -current process calling process T{ -カーネルプログラマーがマニュアルページを書く際によくする間違い -T} -manpage T{ -man page, manual page -T} -minus infinity negative infinity -non\-root unprivileged user -non\-superuser unprivileged user -nonprivileged unprivileged -OS operating system -plus infinity positive infinity -pty pseudoterminal -tty terminal -Unices UNIX systems -Unixes UNIX systems -.TE -.SS 商標 -商標については正しい綴りと大文字小文字を使うこと。以下は時々綴りの間違いがある商標の正しい綴りのリストである。 - - DG/UX - HP\-UX - UNIX - UnixWare -.SS "NULL, NUL, ヌルポインター、ヌル文字" -\fInull pointer\fP (\fIヌルポインター\fP) は何もないものを指すポインターで、通常は定数 \fINULL\fP で示される。 一方、 -\fINUL\fP は \fInull byte\fP (\fIヌルバイト\fP、値 0 のバイト) で、 C では文字定数 \fI\(aq\e0\(aq\fP と表現される。 - -ポインターとして推奨される用語は "null pointer" (ヌルポインター) もしくは単に "NULL" である。 "NULL pointer" -と記載するのは避けること。 - -バイトとして推奨される用語は "null byte" (ヌルバイト) である。 "NUL" と記載するのは避けること。 "NUL" は "NULL" -と間違われることが非常に多いからである。 また、 "zero byte" (ゼロバイト) と "null character" (ヌル文字) -も避けること。 C の文字列を終端するバイトは "the terminating null byte" (終端ヌルバイト)、 -文字列の説明として使う場合には "null\-terminated" (ヌル終端された) と記載すべきである。 "NUL\-terminated" -の使用は避けること。 -.SS ハイパーリンク -ハイパーリンクについては、 \fI.UR\fP/\fI.UE\fP マクロの組を使うこと (\fBgroff_man\fP(7) -参照)。ページを以下のようにレンダリングする場合に、このマクロはウェブブラウザーで使用できる正しいハイパーリンクを生成してくれる。 - - BROWSER=firefox man \-H pagename -.SS "e.g., i.e., etc., a.k.a. などの使用" -一般的には、 "e.g.", "i.e.", "etc.", "a.k.a." などの省略形の使用は避けるべきである。 代わりに完全な形の単語を使うこと -("for example" (例えば), "that is" (つまり), "and so on" (〜など), "also known as" -(別名))。 - -これらの省略形の使用が認められる唯一の場所は、 \fI短い\fP括弧で囲まれた余談 ("(e.g., like this one)") の場合である。 - -ここで記載しているように、これらの省略形では必ずピリオドを入れること。 また、"e.g." と "i.e." では常に後にカンマも付けること。 -.SS "em によるダッシュ" -*roff で em によるダッシュ\(emこの部分の両端にある記号\(emを書くには "\e(em" を使う。 (ASCII 端末では em -によるダッシュは通常ハイフン 2 つとして表示されるが、別の活版印刷の場合などでは長いダッシュとして表示されることもある。) em -によるダッシュの両側にはスペースを\fI置かないこと\fP。 -.SS 修飾子としての複合語におけるハイフン -何かを修飾する際 (すなわち後続の名詞を限定する場合) 複合語にはハイフンを入れること。いくつか例を挙げる。 - - 32\-bit value (32 ビット値) - command\-line argument (コマンドライン引き数) - floating\-point number (浮動小数点数) - run\-time check (実行時チェック) - user\-space function (ユーザー空間関数) - wide\-character string (ワイド文字の文字列) -.SS "multi, non, pre, re, sub などとの組み合わせでのハイフン" -一般的に最近の英語の傾向では、"multi", "non", "pre", "re", "sub" などの接尾辞の後ろにはハイフンを付けない。 -これらの接尾辞が単純な接尾語との普通の英語の組み合わせの場合には、 マニュアルページでは基本的にこのルールに従う。 -以下のリストに推奨される形式での例をいくつか挙げる。 - - interprocess - multithreaded - multiprocess - nonblocking - nondefault - nonempty - noninteractive - nonnegative - nonportable - nonzero - preallocated - precreate - prerecorded - reestablished - reinitialize - rearm - reread - subcomponent - subdirectory - subsystem - -接尾語が通常の英単語以外 (商標、固有名詞、頭字語、複合語) と組み合わされる場合は、ハイフンを使うこと。以下に例を挙げる。 - - non\-ASCII - non\-English - non\-NULL - non\-real\-time - -最後に、"re\-create" と "recreate" は異なる別の動詞である点に注意すること。たいていの場合、使おうと思っているのは前者であろう。 -.SS 本当のマイナス文字 -本当の意味でのマイナス文字が必要な場合は (\-1 といった数字や \fIls\ \-l\fP -といった先頭にダッシュのオプションを記載する場合など)、マニュアルページの原文では以下の表記を使うこと。 - - \e\- - -このガイドラインはサンプルコードの場合にも適用される。 -.SS 文字定数 -ASCII と UTF\-8 の両方で正しくレンダリングされるシングルクォート (一重引用符) -を生成するには、マニュアルページの原文では以下の表記を使うこと。 - - \e(aqC\e(aq - -ここで \fIC\fP が括弧で囲まれる文字である。このガイドラインはサンプルコードの場合にも適用される。 -.SS サンプルプログラムとシェルのセッション -マニュアルページには、システムコールやライブラリ関数の使い方を示す サンプルプログラムを含めることができる。 その際には、以下の点に留意すべきである。 -.IP * 3 -サンプルプログラムは C で記載すること。 -.IP * -サンプルプログラムは、 インターフェースについて文章で簡単に説明できる以上のことを示す場合にだけ -必要かつ有用である。インターフェースを呼び出す以外に何もしないサンプル プログラムは普通はほとんど役に立たない。 -.IP * -サンプルプログラムはかなり短めにすること (100行未満が望ましく、50行未満が理想的である)。 -.IP * -サンプルプログラムでは、システムコールやライブラリ関数を呼び出した後で エラーチェックを行うこと。 -.IP * -サンプルプログラムは完結していて、 \fIcc\ \-Wall\fP でコンパイルした際に警告なしでコンパイルできること。 -.IP * -可能かつ適切な場合には、サンプルプログラムで 入力により動作を変化させるなどの実験を行うとよい -(理想的には、コマンドライン引き数や、プログラムが読み込む入力データ 経由で、動作を変化させるのがよい)。 -.IP * -サンプルプログラムは、K&R (Kernighan and Ritchie) スタイルで書き、 字下げはスペース 4文字で行う。 (ソースコードで -TAB 文字を使うのは避けること。) -.IP * -一貫性を保つため、すべてのサンプルプログラムは以下のいずれかで終了すること。 - - exit(EXIT_SUCCESS); - exit(EXIT_FAILURE); - -プログラムを終了するのに以下を使うのは避けること。 - - exit(0); - exit(1); - return n; -.IP * -プログラムソースの前に説明文がある場合は、\fIプログラムソース\fPの見出しをソースコードの前に付けること。 - -\&.SS プログラムのソース - -説明文がシェルセッションのログを含む場合は必ずこのようにすること。 -.PP -プログラムの使い方や他のシステムの特徴を示すためにシェルのセッションログを含める場合、 -.IP * 3 -セッションログをソースコードの前に置くこと -.IP * -セッションログをスペース 4 つで字下げすること -.IP * -ユーザーの入力文をボールドにして、システムが生成する出力と区別できるようにすること -.PP -サンプルプログラムがどんな風になっていればよいかの例については、 \fBwait\fP(2) と \fBpipe\fP(2) を参照すること。 -.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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/man.7 b/manual/LDP_man-pages/draft/man7/man.7 index adada506..b5de4e7b 100644 --- a/manual/LDP_man-pages/draft/man7/man.7 +++ b/manual/LDP_man-pages/draft/man7/man.7 @@ -49,14 +49,14 @@ .\" Updated 2007-06-13, Akihiro MOTOKI , LDP v2.54 .\" Updated 2012-04-30, Akihiro MOTOKI .\" -.TH MAN 7 2012\-08\-05 Linux "Linux Programmer's Manual" +.TH MAN 7 2020\-11\-01 Linux "Linux Programmer's Manual" .SH 名前 man \- man ページを整形するマクロ .SH 書式 \fBgroff \-Tascii \-man\fP \fIfile\fP \&... -.LP +.PP \fBgroff \-Tps \-man\fP \fIfile\fP \&... -.LP +.PP \fBman\fP [\fIsection\fP] \fItitle\fP .SH 説明 このマニュアルページでは、 \fBgroff an.tmac\fP のマクロパッケージ (\fBman\fP マクロパッケージとも呼ばれることも多い) @@ -71,11 +71,11 @@ NET\-2 BSD の man ページも、 \fBgroff\fP のオプションとして \fB\- Linux \fIman\-pages\fP プロジェクトのマニュアルページを書く際に 従うべき決まり事については \fBman\-pages\fP(7) を参照。 .SS タイトル行 man ページの (コメント行を除く) 最初のコマンドは、 以下のようにする必要がある。 コメント行とは \fB.\e"\fP で始まる行のことである。 +.PP .RS -.sp \fB\&.TH\fP \fItitle section date source manual\fP -.sp .RE +.PP \fBTH\fP に渡す引き数の詳細については \fBman\-pages\fP(7) を参照。 .PP なお BSD の mdoc フォーマットのページは \fBTH\fP コマンドではなく \fBDd\fP コマンドから始まる。 @@ -86,16 +86,16 @@ man ページの (コメント行を除く) 最初のコマンドは、 以下 .\" .BR \&.SH , .\" then place the heading in double quotes. セクションは \fB\&.SH\fP で始まり、見出し名がそれに続く。 - +.PP NAME (名前) という見出しだけは必ず置かないといけない。 この見出しは一番最初のセクションにすべきで、見出しの 次の行にはプログラムの説明を一行で書く。 +.PP .RS -.sp \&.SH NAME .br item \e\- description -.sp .RE +.PP このフォーマットに従い、コマンド名に続くシングルダッシュ (\-) の前には必ず バックスラッシュを置くこと。 この文法は、 \fBmabdb\fP(8) プログラムが \fBwhatis\fP(1) や \fBapropos\fP(1) コマンド用の短い説明のデータベースを @@ -134,20 +134,28 @@ item \e\- description .TP \fB\&.SM\fP スモール (頭字語などに用いる) -.LP -慣例としては、各コマンドは 6 つまでの引き数を持つ事が可能だが、 GNU の実装では制限はないようだ (しかし移植性を保持するためには 引き数は 6 -までに限っておくのが良いだろう)。 引き数はスペースで区切られる。 スペースを含んだ引き数を与えるには、ダブルクォートで囲えばよい。 -すべての引き数はスペースを取り除いて並べられるので、 \fB\&.BR\fP コマンドを使えば、単語はボールドで、句読点をローマンで表すことができる。 -引き数が全く与えられなければ、 そのコマンドは次の行のテキストに適用される。 -.SS その他のマクロや文字列 .PP -以下に、他のマクロや定義済みの文字列を示す。 特に記述がない限り、マクロを使うと改行が行われる (テキストの現在の行を終了する)。 多くのマクロは -「優先インデント (prevailing indent)」を設定したり、使用する。 優先インデントの値は、どのマクロからもパラメーター \fIi\fP -によって指定できる (以下に示す)。 マクロでは \fIi\fP を省略することもでき、その場合は現在の優先インデントの値が用いられる。 -これにより結果として、インデントされた段落が連続している場合、 インデントの値を再指定しなくてもインデント量を同じにすることができる。 通常の -(インデントされていない) 段落が登場すると、 優先インデントの値はデフォルトの値 (0.5 インチ) にリセットされる。 -デフォルトでは、与えたインデントの値は ens 単位である。 インデントの単位には ens や ems を用いるとよい。これらの単位は -フォントサイズが変更されると自動的に調整されるからである。 他の重要なマクロ定義は以下の通り: +Traditionally, each command can have up to six arguments, but the GNU +implementation removes this limitation (you might still want to limit +yourself to 6 arguments for portability's sake). Arguments are delimited by +spaces. Double quotes can be used to specify an argument which contains +spaces. For the macros that produce alternating type faces, the arguments +will be printed next to each other without intervening spaces, so that the +\fB\&.BR\fP command can be used to specify a word in bold followed by a mark of +punctuation in Roman. If no arguments are given, the command is applied to +the following line of text. +.SS その他のマクロや文字列 +Below are other relevant macros and predefined strings. Unless noted +otherwise, all macros cause a break (end the current line of text). Many of +these macros set or use the "prevailing indent." The "prevailing indent" +value is set by any macro with the parameter \fIi\fP below; macros may omit +\fIi\fP in which case the current prevailing indent will be used. As a result, +successive indented paragraphs can use the same indent without respecifying +the indent value. A normal (nonindented) paragraph resets the prevailing +indent value to its default value (0.5 inches). By default, a given indent +is measured in ens; try to use ens or ems as units for indents, since these +will automatically adjust to font size changes. The other key macro +definitions are: .SS 通常の段落 .TP 9m \fB\&.LP\fP @@ -183,53 +191,23 @@ item \e\- description \fB\&.TP\fP\fI i\fP ぶらさがりタグの段落を開始する。タグは次の行に指定する。 結果は \fB\&.IP\fP コマンドと似たものになる。 .SS ハイパーテキストリンク用のマクロ -(\fBgroff\fP だけでサポートされている機能) ハイパーテキストリンク用のマクロを使用するためには、 \fBwww.tmac\fP -マクロパッケージをロードする必要がある。 ロードを行うには \fB.mso www.tmac\fP リクエストを使用する。 -.TP 9m -\fB\&.URL\fP\fI link url trailer\fP -.\" The following is a kludge to get a paragraph into the listing. -URI (URL) \fIurl\fP へのハイパーテキストリンクを挿入する。 \fIlink\fP はリンク名のテキストであり、 \fItrailer\fP -の内容はリンクの直後に表示される。 HTML を生成する時に、このマクロは \fB\fP\fIlink\fP\fB\fP\fItrailer\fP という HTML コマンドに変換される。 -.TP -\fB\& \&\fR -.\" The following is a kludge to get a paragraph into the listing. -このマクロや他の関連マクロは新しく、 多くのツールはこれらに対しては何もしないであろう。 (troff を含めた) -多くのツールは未定義のマクロを単に無視するだけ (あるいは最悪でもマクロをテキストとして挿入するだけ) なので、これらを書いても危険はない。 -.TP -\fB\& \&\fR -.\" The following is a kludge to get a paragraph into the listing. -マニュアルページ内で自分で \fBURL\fP マクロを定義して、 \fBgroff\fP 以外の roff ビューアでも表示されるようにするのもいいだろう。 -こうすることで、URL も、リンク用のテキストも、(もしあれば) それに続く テキストも、表示できるようになる。 .TP -\fB\& \&\fR -以下に例を挙げる: -.RS 1.5i -\&.de URL -.br -\e\e$2 \e(laURL: \e\e$1 \e(ra\e\e$3 -.br -\&.. -.br -\&.if \en[.g] .mso www.tmac -.br -\&.TH \fI...\fP -.br -\fI(later in the page)\fP -.br -This software comes from the -.br -\&.URL "http://www.gnu.org/" "GNU Project" " of the" -.br -\&.URL "http://www.fsf.org/" "Free Software Foundation" . -.RE -.\" The following is a kludge to get a paragraph into the listing. +\fB\&.UR\fP\fI url\fP +Insert a hypertext link to the URI (URL) \fIurl\fP, with all text up to the +following \fB\&.UE\fP macro as the link text. .TP -\fB\& \&\fR -上記の例において、 \fBgroff\fP を使って表示しようとした場合には、 \fBwww.tmac\fP マクロパッケージの URL マクロの定義の方が -ローカルで行われた定義よりも優先される。 +\fB\&.UE\fP [ \fItrailer\fP ] +Terminate the link text of the preceding \fB\&.UR\fP macro, with the optional +\fItrailer\fP (if present, usually a closing parenthesis and/or end\-of\-sentence +punctuation) immediately following. For non\-HTML output devices (e.g., +\fBman \-Tutf8\fP), the link text is followed by the URL in angle brackets; if +there is no link text, the URL is printed as its own link text, surrounded +by angle brackets. (Angle brackets may not be available on all output +devices.) For the HTML output device, the link text is hyperlinked to the +URL; if there is no link text, the URL is printed as its own link text. .PP -他にもいくつかのリンク用のマクロが用意されている。詳しくは \fBgroff_www\fP(7) を参照のこと。 +These macros have been supported since GNU Troff 1.20 (2009\-01\-05) and +Heirloom Doctools Troff since 160217 (2016\-02\-17). .SS その他のマクロ .TP 9m \fB\&.DT\fP @@ -263,11 +241,12 @@ troff の全ての機能を 実装していないこともある。したがっ \fBft\fP, \fBhy\fP, \fBig\fP, \fBin\fP, \fBna\fP, \fBne\fP, \fBnf\fP, \fBnh\fP, \fBps\fP, \fBso\fP, \fBsp\fP, \fBti\fP, \fBtr\fP .PP -troff のエスケープシーケンスの多くも利用できる (これらのエスケープシーケンスは \e で始まる)。 -バックスラッシュ文字を通常のテキストとして使いたい場合は \ee とする。 利用できる他のシーケンスには以下のようなものがある (x や xx -は任意の文字, N は任意の数字): \fB\e'\fP, \fB\e`\fP, \fB\e\-\fP, \fB\e.\fP, \fB\e"\fP, \fB\e%\fP, \fB\e*x\fP, -\fB\e*(xx\fP, \fB\e(xx\fP, \fB\e$N\fP, \fB\enx\fP, \fB\en(xx\fP, \fB\efx\fP, \fB\ef(xx\fP. -グラフィックの描画にはエスケープシーケンスは用いないほうが良い。 +You may also use many troff escape sequences (those sequences beginning with +\e). When you need to include the backslash character as normal text, use +\ee. Other sequences you may use, where x or xx are any characters and N is +any digit, include: \fB\e\(aq\fP, \fB\e\(ga\fP, \fB\e\-\fP, \fB\e.\fP, \fB\e"\fP, \fB\e%\fP, +\fB\e*x\fP, \fB\e*(xx\fP, \fB\e(xx\fP, \fB\e$N\fP, \fB\enx\fP, \fB\en(xx\fP, \fB\efx\fP, and +\fB\ef(xx\fP. Avoid using the escape sequences for drawing graphics. .PP \fBbp\fP (改頁) にはオプションパラメーターを用いないこと。 \fBsp\fP (垂直スペース) には正の値のみを用いること。 man や mdoc マクロパッケージにあるマクロと、 名前が同じで機能の異なるマクロを定義 (\fBde\fP) しないこと。そのような再定義は無視される可能性が高い。 @@ -284,24 +263,29 @@ troff のエスケープシーケンスの多くも利用できる (これらの .br \fI/usr/man/whatis\fP .SH 注意 +By all means include full URLs (or URIs) in the text itself; some tools such +as \fBman2html\fP(1) can automatically turn them into hypertext links. You +can also use the \fBUR\fP and \fBUE\fP macros to identify links to related +information. If you include URLs, use the full URL (e.g., +.UR http://www.kernel.org +.UE ) +to ensure that tools can automatically find +the URLs. .PP -テキストにはぜひとも完全な URL (または URI) を書くようにすること。 \fBman2html\fP(1) -のようなツールは、これらを自動的にハイパーテキストリンクに変換する。 新たに取り入れられた \fBURL\fP マクロを関連情報へのリンクに用いても良い。 -URL を書く場合は、 例えば -.UR http://www.kernelnotes.org -.UE -のように完全な形式で書き、 -ツールによる URL 自動検知ができるようにすること。 +Tools processing these files should open the file and examine the first +nonwhitespace character. A period (.) or single quote (\(aq) at the +beginning of a line indicates a troff\-based file (such as man or mdoc). A +left angle bracket (<) indicates an SGML/XML\-based file (such as HTML or +Docbook). Anything else suggests simple ASCII text (e.g., a "catman" +result). .PP -これらのファイルを処理するツールは、ファイルをオープンして 最初の空白以外の文字を調べる。行の先頭にピリオド (.) またはシングルクォート (') -があると、これは troff ベースの ファイル (man や mdoc) であるとみなす。左角括弧 (<) は SGML/XML -ベースのファイル (HTML や Docbook) であるとみなす。 それ以外は単純な ASCII テキスト ("catman" の結果など) -とみなす。 -.PP -多くの man ページは、最初の行が \fB\'\e"\fP とスペースで始まっており、 -そこにはそのページが処理されるべきプリプロセスを表す文字が書いてある。 troff 以外の変換プログラムへの移植性のため、 \fBtbl\fP(1) や、 -Linux が自動的に検知できるもの以外は使わないようにすることを勧める。 しかし、この情報を記述して、書いたページが他の (より低機能な) -システムでも 扱えるようにしたい場合もあるかも知れない。 以下にこれらの文字によって起動されるプリプロセッサの定義を示す: +Many man pages begin with \fB\(aq\e"\fP followed by a space and a list of +characters, indicating how the page is to be preprocessed. For +portability's sake to non\-troff translators we recommend that you avoid +using anything other than \fBtbl\fP(1), and Linux can detect that +automatically. However, you might want to include this information so your +man page can be handled by other (less capable) systems. Here are the +definitions of the preprocessors invoked by these characters: .TP 3 \fBe\fP eqn(1) @@ -321,12 +305,11 @@ tbl(1) \fBv\fP vgrind(1) .SH バグ -.PP mdoc や DocBook に比べると、 マクロの多くは書式 (フォントタイプやスペーシングなど) に関するものであり、 意味上のもの (このテキストは他のページへの参照である、など) ではない (HTML ですら意味的なマーキングに思える)。 このため、 \fBman\fP フォーマットを他のメディアへ変換したり、 フォーマットを他のメディアで有効なものにしたり、 相互参照を自動的に挿入したりすることが困難になっている。 上に挙げたような安全なサブセットを守れば、 将来別のリファレンスページフォーマットへ変換する作業が簡単になるだろう。 -.LP +.PP .\" .SH AUTHORS .\" .IP \(em 3m .\" James Clark (jjc@jclark.com) wrote the implementation of the macro package. @@ -342,9 +325,7 @@ mdoc や DocBook に比べると、 マクロの多くは書式 (フォントタ Sun のマクロである \fBTX\fP は定義されていない。 .SH 関連項目 \fBapropos\fP(1), \fBgroff\fP(1), \fBlexgrog\fP(1), \fBman\fP(1), \fBman2html\fP(1), -\fBwhatis\fP(1), \fBgroff_man\fP(7), \fBgroff_www\fP(7), \fBman\-pages\fP(7), \fBmdoc\fP(7), -\fBmdoc.samples\fP(7) +\fBwhatis\fP(1), \fBgroff_man\fP(7), \fBgroff_www\fP(7), \fBman\-pages\fP(7), \fBmdoc\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/math_error.7 b/manual/LDP_man-pages/draft/man7/math_error.7 index 20d9805e..b82e47b3 100644 --- a/manual/LDP_man-pages/draft/man7/math_error.7 +++ b/manual/LDP_man-pages/draft/man7/math_error.7 @@ -33,7 +33,7 @@ .\" all rights reserved. .\" Translated 2008-08-17, Akihiro MOTOKI , LDP v3.07 .\" -.TH MATH_ERROR 7 2008\-08\-11 Linux "Linux Programmer's Manual" +.TH MATH_ERROR 7 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 math_error \- 数学関数からのエラーの検出 .SH 書式 @@ -47,26 +47,26 @@ math_error \- 数学関数からのエラーの検出 \fI\fP で宣言されている数学関数は、通常は浮動小数点値を返すので、 他の機構を使ってエラーを通知する。 エラー通知機構は 2 種類あり、 古いものが \fIerrno\fP を設定するやり方であり、新しいものが \fBfenv\fP(3) で説明されている浮動小数点例外機構である。 (\fBfeclearexcept\fP(3) と \fBfetestexcept\fP(3) を使用する。これらについては以下で概要を説明している。) - +.PP 移植性が必要なプログラムで、数学関数からのエラーを確認する必要がある場合には、 数学関数を呼び出す前に \fIerrno\fP を 0 に設定し、 +.PP .in +4n -.nf - +.EX feclearexcept(FE_ALL_EXCEPT); - -.fi +.EE .in +.PP を呼び出すべきである。 - +.PP 数学関数から返ってきた際に、 \fIerrno\fP が 0 以外か、 +.PP .in +4n -.nf - +.EX fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW); - -.fi +.EE .in +.PP .\" enum .\" { .\" FE_INVALID = 0x01, @@ -77,7 +77,7 @@ fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | .\" FE_INEXACT = 0x20 .\" }; の呼び出しが 0 以外を返した場合 (\fBfenv\fP(3) 参照)、数学関数でエラーが発生している。 - +.PP 数学関数で発生するエラー条件については以下で説明する。 .SS "領域エラー (domain error)" \fI領域エラー\fP が発生するのは、数学関数に渡された引き数の値がその関数が定義されている 領域に入っていない場合である (例えば \fBlog\fP(3) @@ -92,37 +92,43 @@ double\fP に対応する)。 結果の符号は、その関数の数学的な .SS "範囲エラー (range エラー)" \fI範囲エラー\fP が発生するのは、関数の結果の値がその関数の返り値の型では表現できない場合 である。関数の返り値は、範囲エラーがオーバーフローであったかアンダーフロー であったかによって異なる。 - +.PP 浮動小数点のオーバーフローは、結果が有限だが、大き過ぎて 結果を返す型では表現できない場合に発生する。 オーバーフローが発生すると、 その関数は \fBHUGE_VAL\fP, \fBHUGE_VALF\fP, \fBHUGE_VALL\fP のいずれかを返す (前記の値のうちどれが返るかは関数の返り値の型により決まり、 それぞれ \fIdouble\fP, \fIfloat\fP, \fIlong double\fP に対応する)。 \fIerrno\fP は \fBERANGE\fP に設定され、「オーバーフロー (overflow)」 浮動小数点例外 (\fBFE_OVERFLOW\fP) が上がる。 - -浮動小数点のアンダーフローは、 結果が小さ過ぎて、結果を返す型では表現できない場合に発生する。 アンダーフローが発生すると、数学関数は通常は 0.0 -を返す (C99 では、指定された型において最小の正規化された正の値より大きくない 値を持つ実装定義 (implementation\-defined) -の値を返す、となっている)。 \fIerrno\fP は \fBERANGE\fP に設定され、「アンダーフロー」浮動小数点例外 (\fBFE_UNDERFLOW\fP) -が上がる。 - +.PP +A floating result \fIunderflows\fP if the result is too small to be represented +in the result type. If an underflow occurs, a mathematical function +typically returns 0.0 (C99 says a function shall return "an +implementation\-defined value whose magnitude is no greater than the smallest +normalized positive number in the specified type"). \fIerrno\fP may be set to +\fBERANGE\fP, and an "underflow" (\fBFE_UNDERFLOW\fP) floating\-point exception +may be raised. +.PP いくつかの関数では、渡された引き数の値や、正しい関数の結果が \fIsubnormal (非正規化数)\fP になる場合に範囲エラーを上げる。 subnormal な値とは、0 ではないが、その値が小さすぎて (仮数部の最上位ビットが 1 となる) 標準形では表現できないような値である。 subnormal な値の表現では、仮数部の上位側のビットに 1 個以上の 0 が 含まれることになる。 .SH 注意 .\" See CONFORMANCE in the glibc 2.8 (and earlier) source. -C99 と POSIX.1\-2001 で規定されている \fImath_errhandling\fP 識別子は glibc ではサポートされていない。 -この識別子は、2 つのエラー通知機構 (\fIerrno\fP と \fBfetestexcept\fP(3) 経由で取得できる例外) -のうちどちらが使用されているかを通知 することになっている。 標準では、少なくとも一つは使用されることが要求されているが、 -両方とも利用可能であってもよいとされている。 glibc での現在の (バージョン 2.8 での) 状況はかなり混乱している。 ほとんどの関数 -(ただし全部ではない) はエラー時に例外を上げる。 いくつかの関数は \fIerrno\fP も設定する。 \fIerrno\fP -を設定するが、例外を上げない関数も少しだけ存在する。 どちらも行わない関数もごく少数だが存在する。 詳細については個々のマニュアルページを参照のこと。 - +The \fImath_errhandling\fP identifier specified by C99 and POSIX.1 is not +supported by glibc. This identifier is supposed to indicate which of the +two error\-notification mechanisms (\fIerrno\fP, exceptions retrievable via +\fBfetestexcept\fP(3)) is in use. The standards require that at least one be +in use, but permit both to be available. The current (version 2.8) +situation under glibc is messy. Most (but not all) functions raise +exceptions on errors. Some also set \fIerrno\fP. A few functions set +\fIerrno\fP, but don't raise an exception. A very few functions do neither. +See the individual manual pages for details. +.PP .\" http://www.securecoding.cert.org/confluence/display/seccode/FLP32-C.+Prevent+or+detect+domain+and+range+errors+in+math+functions \fIerrno\fP と \fBfetestexcept\fP(3) の両方を使ってエラーチェックを行うことで複雑になるのを避けるため、 多くの場合、関数呼び出しを行う前に不正な引き数かのチェックを行う 方法が推奨されている。 例えば、以下のコードは、 \fBlog\fP(3) の引き数が NaN でも (極エラーとなる) 0 でも (領域エラーとなる) 0 未満 でもないことを保証するものである。 +.PP .in +4n -.nf - +.EX double x, r; if (isnan(x) || islessequal(x, 0)) { @@ -130,12 +136,13 @@ if (isnan(x) || islessequal(x, 0)) { } r = log(x); - -.fi +.EE .in -このページに書かれていることは、 (\fI\fP で宣言されている) 複素数関数にはあてはまらない。 一般に、C99 や -POSIX.1\-2001 ではこれらの関数がエラーを返すことを 要求してない。 - +.PP +The discussion on this page does not apply to the complex mathematical +functions (i.e., those declared by \fI\fP), which in general +are not required to return errors by C99 and POSIX.1. +.PP \fBgcc\fP(1) の \fI\-fno\-math\-errno\fP オプションを使うと、実行ファイルで、標準の実装よりも高速な数学関数の 実装が使用されるようになるが、 エラー時に \fIerrno\fP が設定されない (\fBgcc\fP(1) の \fI\-ffast\-math\fP オプションを指定した場合にも \fI\-fno\-math\-errno\fP は有効になる)。 このオプションを指定した場合でも、 @@ -143,9 +150,8 @@ POSIX.1\-2001 ではこれらの関数がエラーを返すことを 要求し .SH 関連項目 \fBgcc\fP(1), \fBerrno\fP(3), \fBfenv\fP(3), \fBfpclassify\fP(3), \fBINFINITY\fP(3), \fBisgreater\fP(3), \fBmatherr\fP(3), \fBnan\fP(3) - +.PP \fIinfo libc\fP .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/mq_overview.7 b/manual/LDP_man-pages/draft/man7/mq_overview.7 index 5bbf0200..a2ea88d2 100644 --- a/manual/LDP_man-pages/draft/man7/mq_overview.7 +++ b/manual/LDP_man-pages/draft/man7/mq_overview.7 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (C) 2006 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) @@ -35,35 +34,40 @@ .\" Updated 2009-02-23, Akihiro MOTOKI , LDP v3.19 .\" Updated 2010-04-11, Akihiro MOTOKI , LDP v3.24 .\" -.TH MQ_OVERVIEW 7 2014\-09\-21 Linux "Linux Programmer's Manual" +.TH MQ_OVERVIEW 7 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 mq_overview \- POSIX メッセージキューの概要 .SH 説明 POSIX メッセージキューを使用すると、プロセス間で メッセージの形でのデータのやり取りを行うことができる。 この API は System V メッセージキューの API (\fBmsgget\fP(2), \fBmsgsnd\fP(2), \fBmsgrcv\fP(2) など) とは異なるものだが、同様の機能を提供する。 - +.PP メッセージキューの作成とオープンは \fBmq_open\fP(3) を使って行う。この関数は \fIメッセージキュー記述子 (message queue descriptor)\fP (\fImqd_t\fP) を返す。これ以降のコールでは、オープンされたメッセージキューは \fIメッセージキュー記述子\fP を使って参照される。 各メッセージキューは \fI/somename\fP の形の名前で区別することができる。 その名前は、最大で \fBNAME_MAX\fP (すなわち 255) 文字のヌル終端された文字列で、 スラッシュで始まり、スラッシュ以外の文字が 1 文字以上続く形式である。 \fBmq_open\fP(3) に同じ名前を渡すことで、2つのプロセスで同一のキューを 操作することができる。 - +.PP メッセージのキューへの送受信は \fBmq_send\fP(3) と \fBmq_receive\fP(3) を使って行う。プロセスがキューの使用を終えるときには、 \fBmq_close\fP(3) を使ってキューをクローズする。キューがもはや不要となった場合には、 \fBmq_unlink\fP(3) を使ってキューを削除できる。キューの属性は \fBmq_getattr\fP(3) で取得でき、 (制限はあるが) \fBmq_setattr\fP(3) で変更できる。 \fBmq_notify\fP(3) を使うことで、空のキューへのメッセージ到着を非同期で 通知するように要求することもできる。 - -メッセージキュー記述子は \fIオープンメッセージキュー記述 (open message queue description)\fP への参照である -(\fBopen\fP(2) も参照)。 \fBfork\fP(2) 実行後は、子プロセスは親プロセスのメッセージキュー記述子のコピーを継承する。 -これらの記述子は、親プロセスの対応する記述子と同じオープンメッセージキュー 記述を参照している。親プロセスと子プロセスの対応する記述子は、フラグ -(\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 までの優先度を実装することだけであり、実装によってはこの範囲の優先度しかサポートされていない。 +.PP +A message queue descriptor is a reference to an \fIopen message queue +description\fP (see \fBopen\fP(2)). After a \fBfork\fP(2), a child inherits copies +of its parent's message queue descriptors, and these descriptors refer to +the same open message queue descriptions as the corresponding message queue +descriptors in the parent. Corresponding message queue descriptors in the +two processes share the flags (\fImq_flags\fP) that are associated with the +open message queue description. +.PP +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 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 ライブラリインターフェースとシステムコール @@ -115,7 +119,7 @@ POSIX メッセージキュー API を使用したプログラムは \fIcc \-lrt (2.6.28 より前のカーネルでは 10) である。 \fImsg_max\fP に指定できる上限値は \fBHARD_MSGMAX\fP である。 \fImsg_max\fP 上限は特権プロセス (\fBCAP_SYS_RESOURCE\fP) では無視されるが、上限値 \fBHARD_MSGMAX\fP はどんな場合にでも適用される。 - +.IP \fBHARD_MSGMAX\fP の定義はカーネルのバージョンにより異なる。 .RS .IP * 3 @@ -162,32 +166,32 @@ Linux 3.5 以降では、上限は 16,777,216 (\fBHARD_MSGSIZEMAX\fP) である .SS メッセージキューファイルシステムのマウント Linux では、メッセージキューは仮想ファイルシステム内に作成される (他の実装でも同様の機能が提供されているものもあるが、 詳細は違っているだろう)。 以下のコマンドを使うことで (スーパーユーザーは) このファイルシステムをマウントできる: +.PP .in +4n -.nf - +.EX #\fB mkdir /dev/mqueue\fP #\fB mount \-t mqueue none /dev/mqueue\fP - -.fi +.EE .in +.PP マウントしたディレクトリのスティッキービット (sticky bit) は 自動的にオンとなる。 - +.PP メッセージキューファイルシステムのマウント後は、ファイルに対して 通常使うコマンド (例えば \fBls\fP(1) や \fBrm\fP(1)) を使って、システム上のメッセージキューを表示したり 操作したりできる。 - +.PP ディレクトリ内の各ファイルの内容は 1行であり、 キューに関する情報が表示される。 +.PP .in +4n -.nf - +.EX $\fB cat /dev/mqueue/mymq\fP QSIZE:129 NOTIFY:2 SIGNO:0 NOTIFY_PID:8260 - -.fi +.EE .in +.PP 各フィールドの詳細は以下の通りである: .TP \fBQSIZE\fP -キューに入っている全メッセージの合計バイト数。 +Number of bytes of data in all messages in the queue (but see BUGS). .TP \fBNOTIFY_PID\fP この値が 0 以外の場合、この値の PID を持つプロセスが \fBmq_notify\fP(3) @@ -198,33 +202,46 @@ QSIZE:129 NOTIFY:2 SIGNO:0 NOTIFY_PID:8260 .TP \fBSIGNO\fP \fBSIGEV_SIGNAL\fP に使用されるシグナル番号。 -.SS メッセージキュー記述子のポーリング -Linux では、メッセージキュー記述子は実際はファイルディスクリプター (file descriptor) であり、 \fBselect\fP(2), -\fBpoll\fP(2), \fBepoll\fP(7) を使って監視することができる。 この機能の移植性はない。 +.SS "Linux implementation of message queue descriptors" +On Linux, a message queue descriptor is actually a file descriptor. (POSIX +does not require such an implementation.) This means that a message queue +descriptor can be monitored using \fBselect\fP(2), \fBpoll\fP(2), or \fBepoll\fP(7). +This is not portable. +.PP +The close\-on\-exec flag (see \fBopen\fP(2)) is automatically set on the file +descriptor returned by \fBmq_open\fP(2). .SS "IPC 名前空間" -System V IPC オブジェクトと IPC 名前空間の相互の影響に関する議論は \fBnamespaces\fP(7) を参照。 -.SH 準拠 -POSIX.1\-2001. +For a discussion of the interaction of POSIX message queue objects and IPC +namespaces, see \fBipc_namespaces\fP(7). .SH 注意 System V メッセージキュー (\fBmsgget\fP(2), \fBmsgsnd\fP(2), \fBmsgrcv\fP(2) など) はプロセス間でメッセージをやり取りするための古い API である。 POSIX メッセージキューは System V メッセージキューよりもうまく 設計されたインターフェースを提供している。 一方で、POSIX メッセージキューは System V メッセージキューと比べると 利用できるシステムが少ない (特に、古いシステムでは少ない)。 - +.PP 現在のことろ (バージョン 2.6.26 時点)、 Linux は POSIX メッセージキューに対するアクセス制御リスト (ACL) に 対応していない。 -.SH 例 -各種のメッセージキュー関数を使用した例が \fBmq_notify\fP(3) に記載されている。 .SH バグ バージョン 3.5 以降 3.14 未満の Linux では、 \fIqueues_max\fP 上限を増やすことができる最大値として 1024 (\fBHARD_QUEUESMAX\fP) という最大上限値がカーネルにより適用されていた。 この最大上限値は特権プロセスにも適用されていた。 この最大上限値は Linux 3.14 で削除され、 パッチで安定版カーネル 3.5.x から 3.13.x からもこの最大上限値は削除された。 +.PP +.\" commit d6629859b36d +.\" commit de54b9ac253787c366bbfb28d901a31954eb3511 +As originally implemented (and documented), the QSIZE field displayed the +total number of (user\-supplied) bytes in all messages in the message +queue. Some changes in Linux 3.5 inadvertently changed the behavior, so +that this field also included a count of kernel overhead bytes used to store +the messages in the queue. This behavioral regression was rectified in +Linux 4.2 (and earlier stable kernel series), so that the count once more +included just the bytes of user data in messages in the queue. +.SH EXAMPLES +各種のメッセージキュー関数を使用した例が \fBmq_notify\fP(3) に記載されている。 .SH 関連項目 \fBgetrlimit\fP(2), \fBmq_getsetattr\fP(2), \fBpoll\fP(2), \fBselect\fP(2), \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), \fBnamespaces\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/namespaces.7 b/manual/LDP_man-pages/draft/man7/namespaces.7 deleted file mode 100644 index bb239b9e..00000000 --- a/manual/LDP_man-pages/draft/man7/namespaces.7 +++ /dev/null @@ -1,249 +0,0 @@ -.\" Copyright (c) 2013 by Michael Kerrisk -.\" and Copyright (c) 2012 by Eric W. Biederman -.\" -.\" %%%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 NAMESPACES 7 2014\-09\-21 Linux "Linux Programmer's Manual" -.SH 名前 -namespaces \- Linux 名前空間の概要 -.SH 説明 -名前空間は、 グローバルシステムリソースを抽象化層で覆うことで、 名前空間内のプロセスに対して、 -自分たちが専用の分離されたグローバルリソースを持っているかのように見せる仕組みである。 グローバルリソースへの変更は、 -名前空間のメンバーである他のプロセスには見えるが、 それ以外のプロセスには見えない。 名前空間の一つの利用方法はコンテナーの実装である。 - -Linux では以下の名前空間が提供される。 -.TS -lB lB lB -l lB l. -名前空間 定数 分離対象 -IPC CLONE_NEWIPC System V IPC, POSIX メッセージキュー -Network CLONE_NEWNET ネットワークデバイス、スタック、ポートなど -Mount CLONE_NEWNS マウントポイント -PID CLONE_NEWPID プロセス ID -User CLONE_NEWUSER ユーザー ID とグループ ID -UTS CLONE_NEWUTS ホスト名と NIS ドメイン名 -.TE - -.\" -.\" ==================== The namespaces API ==================== -.\" -このページでは、各種の名前空間と関連する \fI/proc\fP ファイルの説明と、名前空間とともに動作する API の概要を紹介する。 -.SS "名前空間 API" -後で説明する種々の \fI/proc\fP ファイル以外に、名前空間 API として以下のシステムコールがある。 -.TP -\fBclone\fP(2) -\fBclone\fP(2) システムコールは新しいプロセスを作成する。 呼び出し時に \fIflags\fP 引き数で以下のリストにある -\fBCLONE_NEW*\fP のフラグを一つ以上指定すると、 各フラグに対応する新しい名前空間が作成され、 子プロセスはこれらの名前空間のメンバーになる。 -(このシステムコールは名前空間とは関係のない機能も多数実装している。) -.TP -\fBsetns\fP(2) -\fBsetns\fP(2) システムコールを使うと、呼び出したプロセスを既存の名前空間に参加させることができる。 参加する名前空間は、 以下で説明する -\fI/proc/[pid]/ns\fP ファイルのいずれか一つを参照するファイルディスクリプターを使って指定する。 -.TP -\fBunshare\fP(2) -\fBunshare\fP(2) システムコールは、 呼び出したプロセスを新しい名前空間に移動する。 呼び出し時の \fIflags\fP -引き数に以下のリストにある \fBCLONE_NEW*\fP フラグを一つ以上指定すると、 各フラグに対応する新しい名前空間が作成され、 -呼び出したプロセスがこれらの名前空間のメンバーになる。 (このシステムコールは名前空間とは関係のない機能も多数実装している。) -.PP -.\" -.\" ==================== The /proc/[pid]/ns/ directory ==================== -.\" -\fBclone\fP(2) と \fBunshare\fP(2) を使った新しい名前空間の作成のほとんどの場合で \fBCAP_SYS_ADMIN\fP -ケーパビリティが必要である。 ユーザー名前空間は例外で、 Linux 3.8 以降ではユーザー名前空間を作成するのに特権が不要である。 -.SS "/proc/[pid]/ns/ ディレクトリ" -.\" See commit 6b4e306aa3dc94a0545eb9279475b1ab6209a31f -各プロセスには \fI/proc/[pid]/ns/\fP サブディレクトリがあり、 このサブディレクトリには \fBsetns\fP(2) -での操作がサポートされている名前空間単位にエントリーが存在する。 - -.in +4n -.nf -$ \fBls \-l /proc/$$/ns\fP -total 0 -lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 ipc \-> ipc:[4026531839] -lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 mnt \-> mnt:[4026531840] -lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 net \-> net:[4026531956] -lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 pid \-> pid:[4026531836] -lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 user \-> user:[4026531837] -lrwxrwxrwx. 1 mtk mtk 0 Jan 14 01:20 uts \-> uts:[4026531838] -.fi -.in - -このディレクトリ内のファイルのいずれかをファイルシステムの他のどこかにバインドマウント (\fBmount\fP(2) 参照) することで、 -その名前空間のすべてのプロセスが終了した場合でも、 \fIpid\fP で指定したプロセスの対応する名前空間を保持することができる。 - -このディレクトリ内のファイルのいずれか (またはこれらのファイルのいずれかにバインドマウントされたファイル) をオープンすると、 \fIpid\fP -で指定されたプロセスの対応する名前空間に対するファイルハンドルが返される。 このファイルディスクリプターがオープンされている限り、 -その名前空間のすべてのプロセスが終了した場合であっても、 その名前空間は存在し続ける。 このファイルディスクリプターは \fBsetns\fP(2) -に渡すことができる。 - -Linux 3.7 以前では、これらのファイルはハードリンクとして見えていた。 Linux 3.8 以降では、これらはシンボリックリンクとして見える。 -2 つのプロセスが同じ名前空間に所属している場合、 これらのプロセスの \fI/proc/[pid]/ns/xxx\fP シンボリックリンクの inode -番号は同じになる。 アプリケーションは、 \fBstat\fP(2) が返す \fIstat.st_ino\fP フィールドを使ってこれを確認することができる。 -シンボリックリンクの内容は、 以下の例にあるように、名前空間種別と inode 番号を含む文字列である。 - -.in +4n -.nf -$ \fBreadlink /proc/$$/ns/uts\fP -uts:[4026531838] -.fi -.in - -このサブディレクトリのファイルは以下のとおりである。 -.TP -\fI/proc/[pid]/ns/ipc\fP (Linux 3.0 以降) -このファイルはそのプロセスの IPC 名前空間の操作用である。 -.TP -\fI/proc/[pid]/ns/mnt\fP (Linux 3.8 以降) -このファイルはそのプロセスのマウント名前空間の操作用である。 -.TP -\fI/proc/[pid]/ns/net\fP (Linux 3.0 以降) -このファイルはそのプロセスのネットワーク名前空間の操作用である。 -.TP -\fI/proc/[pid]/ns/pid\fP (Linux 3.8 以降) -このファイルはそのプロセスの PID 名前空間の操作用である。 -.TP -\fI/proc/[pid]/ns/user\fP (Linux 3.8 以降) -このファイルはそのプロセスのユーザー名前空間の操作用である。 -.TP -\fI/proc/[pid]/ns/uts\fP (Linux 3.0 以降) -.\" -.\" ==================== IPC namespaces ==================== -.\" -このファイルはそのプロセスの UTS 名前空間の操作用である。 -.SS "IPC 名前空間 (CLONE_NEWIPC)" -.\" commit 7eafd7c74c3f2e67c27621b987b28397110d643f -.\" https://lwn.net/Articles/312232/ -IPC 名前空間は、 特定の IPC リソース、すなわち、System V IPC オブジェクト (\fBsvipc\fP(7) 参照)、(Linux -2.6.30 以降では) POSIX メッセージキュー (\fBmq_overview\fP(7) 参照) を分離する。 これらの IPC -機構に共通の特徴は、 IPC オブジェクトがファイルシステムのパス名以外の方法で識別されるという点である。 - -各 IPC 名前空間はそれぞれ、 独自の System V IPC 識別子の集合と独自の POSIX メッセージキューファイルシステムを持つ。 IPC -名前空間に作成されたオブジェクトは、 その名前空間のメンバーの他のすべてのプロセスにも見えるが、 他の IPC 名前空間のプロセスには見えない。 - -以下の \fI/proc\fP インターフェースは各 IPC 名前空間で別のものとなる。 -.IP * 3 -\fI/proc/sys/fs/mqueue\fP の POSIX メッセージキューインターフェース。 -.IP * -\fI/proc/sys/kernel\fP の System V IPC インターフェース。 すなわち、 \fImsgmax\fP, \fImsgmnb\fP, -\fImsgmni\fP, \fIsem\fP, \fIshmall\fP, \fIshmmax\fP, \fIshmmni\fP, \fIshm_rmid_forced\fP。 -.IP * -\fI/proc/sysvipc\fP の System V IPC インターフェース。 -.PP -IPC 名前空間が破棄されたときに (すなわち、その名前空間のメンバーの最後のプロセスが終了したときに)、 その名前空間内のすべての IPC -オブジェクトが自動的に破棄される。 - -.\" -.\" ==================== Network namespaces ==================== -.\" -IPC 名前空間を使用するには、設定 \fBCONFIG_IPC_NS\fP が有効になったカーネルが必要である。 -.SS "ネットワーク名前空間 (CLONE_NEWNET)" -.\" FIXME Add pointer to veth(4) page when it is eventually completed -ネットワーク名前空間は、 ネットワークに関連するシステムリソースの分離を提供する。 分離されるリソースは、 ネットワークデバイス、 IPv4 と -IPv6 のプロトコルスタック、 IP ルーティングテーブル、 ファイアウォール、 \fI/proc/net\fP ディレクトリ、 -\fI/sys/class/net\fP ディレクトリ、 (ソケットの) ポート番号などである。 物理ネットワークデバイスは 1 -つのネットワーク名前空間にのみ属すことができる。 仮想ネットワークデバイス ("veth") ペアは、 -ネットワーク名前空間間のトンネルを作成するのに使うことができるパイプ風の抽象概念で、 -別の名前空間に属す物理ネットワークデバイスへのブリッジを作成するのに使用できる。 - -ネットワーク名前空間が解放されたときに (すなわち、その名前空間の最後のプロセスがしゅうりょうしたときに)、 -その名前空間に属していた物理ネットワークデバイスは初期ネットワーク名前空間に戻される (プロセスの親プロセスに戻されるわけではない)。 - -.\" -.\" ==================== Mount namespaces ==================== -.\" -ネットワーク名前空間を使用するには、設定 \fBCONFIG_NET_NS\fP が有効になったカーネルが必要である。 -.SS "マウント名前空間 (CLONE_NEWNS)" -マウント名前空間はファイルシステムのマウントポイントの集合を分離する。 -つまり、別のマウント名前空間のプロセスには別のファイルシステム階層が見えるということである。 マウント名前空間内のマウントの集合は -\fBmount\fP(2) と \fBumount\fP(2) で変更される。 - -\fI/proc/[pid]/mounts\fP ファイル (Linux 2.4.19 以降に存在) は、 -そのプロセスのマウント名前空間で現在マウントされている全ファイルシステムの一覧を表示する。 このファイルのフォーマットは \fBfstab\fP(5) -に記載されている。 カーネルバージョン 2.6.15 以降では、このファイルをポーリングすることができる。 -すなわち、このファイルを読み出し用にオープンした後、 このファイルの変化 (ファイルシステムのマウントやアンマウント) が発生すると、 -\fBselect\fP(2) はファイルディスクリプターが読み出し可能になったと印を付け、 \fBpoll\fP(2) や \fBepoll_wait\fP(2) -はファイルがエラー状態になったかのように印を付ける。 - -\fI/proc/[pid]/mountstats\fP ファイル (Linux 2.6.17 以降に存在) は、 そのプロセスのマウントポイントに関する情報 -(統計情報、設定情報) を公開する。 このファイルはプロセスの所有者だけが読み出し可能である。 このファイルの各行は以下の形式である。 -.RS -.in 12 -.nf - -device /dev/sda7 mounted on /home with fstype ext3 [statistics] -( 1 ) ( 2 ) (3 ) (4) -.fi -.in - -各行のフィールドは以下のとおりである。 -.TP 5 -(1) -マウントされているデバイス名 (もしくは、対応するデバイスがない場合は "nodevice")。 -.TP -(2) -ファイルシステムツリー内のマウントポイント。 -.TP -(3) -ファイルシステム種別 -.TP -(4) -統計情報と設定情報。 オプションフィールドである。 現在のところ (Linux 2.6.26 時点)、NFS -ファイルシステムだけがこのフィールドで情報を公開している。 -.RE -.\" -.\" ==================== PID namespaces ==================== -.\" -.SS "PID 名前空間 (CLONE_NEWPID)" -.\" -.\" ==================== User namespaces ==================== -.\" -\fBpid_namespaces\fP(7) 参照。 -.SS "ユーザー名前空間 (CLONE_NEWUSER)" -.\" -.\" ==================== UTS namespaces ==================== -.\" -\fBuser_namespaces\fP(7) 参照。 -.SS "UTS 名前空間 (CLONE_NEWUTS)" -UTS 名前空間は、 ホスト名と NIS ドメイン名の 2 つのシステム識別子を分離する。 これらの識別子は \fBsethostname\fP(2) と -\fBsetdomainname\fP(2) を使って設定でき、 \fBuname\fP(2), \fBgethostname\fP(2), -\fBgetdomainname\fP(2) を使って取得できる。 - -UTS 名前空間を使用するには、設定 \fBCONFIG_UTS_NS\fP が有効になったカーネルが必要である。 -.SH 準拠 -名前空間は Linux 独自の機能である。 -.SH 例 -\fBuser_namespaces\fP(7) 参照。 -.SH 関連項目 -\fBnsenter\fP(1), \fBreadlink\fP(1), \fBunshare\fP(1), \fBclone\fP(2), \fBsetns\fP(2), -\fBunshare\fP(2), \fBproc\fP(5), \fBcredentials\fP(7), \fBcapabilities\fP(7), -\fBpid_namespaces\fP(7), \fBuser_namespaces\fP(7), \fBswitch_root\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/netdevice.7 b/manual/LDP_man-pages/draft/man7/netdevice.7 index 1252c49c..9407bce6 100644 --- a/manual/LDP_man-pages/draft/man7/netdevice.7 +++ b/manual/LDP_man-pages/draft/man7/netdevice.7 @@ -1,4 +1,3 @@ -'\" t .\" This man page is Copyright (C) 1999 Andi Kleen . .\" .\" %%%LICENSE_START(VERBATIM_ONE_PARA) @@ -28,7 +27,7 @@ .\" Updated 2012-05-06, Akihiro MOTOKI .\" Updated 2013-03-26, Akihiro MOTOKI .\" -.TH NETDEVICE 7 2014\-01\-24 Linux "Linux Programmer's Manual" +.TH NETDEVICE 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 netdevice \- Linux ネットワークデバイスへの低レベルアクセス .SH 書式 @@ -37,12 +36,12 @@ netdevice \- Linux ネットワークデバイスへの低レベルアクセス \fB#include \fP .SH 説明 この man ページでは、ネットワークデバイスを設定するために 用いるソケットインターフェースについて解説する。 - +.PP Linux はネットワークデバイスを設定するための標準的な ioctl を いくつか備えている。これらはどんなソケットのファイルディスクリプターにも 用いることができる。ファミリーやタイプは何でもよい。 これらの ioctl のほとんどは \fIifreq\fP 構造体を渡す。 - +.PP .in +4n -.nf +.EX struct ifreq { char ifr_name[IFNAMSIZ]; /* Interface name */ union { @@ -61,9 +60,9 @@ struct ifreq { char *ifr_data; }; }; -.fi +.EE .in - +.PP 通常、ユーザーによる設定対象デバイスの指定は、 \fIifr_name\fP にインターフェースの名前をセットすることによって行う。 他の構造体の全てのメンバは、メモリーを共有する。 .SS ioctl @@ -109,9 +108,9 @@ T} IFF_LOWER_UP:ドライバからの L1 アップの通知 (Linux 2.6.17 以降) IFF_DORMANT:ドライバからの休止状態の通知 (Linux 2.6.17 以降) IFF_ECHO:送られたパケットをエコーする (Linux 2.6.25 以降) - .TE .ad +.PP active フラグワードの設定は特権が必要な操作である。 読み出しはどんなプロセスからも可能である。 .TP @@ -132,7 +131,7 @@ IFF_BONDING:インターフェースは bonding のマスターかスレーブ IFF_SLAVE_NEEDARP:インターフェースは検証に APR が必要である。 IFF_ISATAP:インターフェースは RFC4214 ISATAP インターフェースである。 .TE -.sp +.PP 拡張 (プライベート) インターフェースフラグの設定には特権が必要である。 .TP \fBSIOCGIFADDR\fP, \fBSIOCSIFADDR\fP @@ -176,9 +175,9 @@ point\-to\-point デバイスの宛先アドレスを \fIifr_dstaddr\fP を用 .TP \fBSIOCGIFMAP\fP, \fBSIOCSIFMAP\fP インターフェースのハードウェアのパラメーターを \fIifr_map\fP を用いて取得・設定する。 パラメーターの設定は特権が必要な操作である。 - +.IP .in +4n -.nf +.EX struct ifmap { unsigned long mem_start; unsigned long mem_end; @@ -187,9 +186,9 @@ struct ifmap { unsigned char dma; unsigned char port; }; -.fi +.EE .in - +.IP ifmap 構造体の解釈はデバイスドライバとアーキテクチャーに依存する。 .TP \fBSIOCADDMULTI\fP, \fBSIOCDELMULTI\fP @@ -204,11 +203,12 @@ ifmap 構造体の解釈はデバイスドライバとアーキテクチャー up していない 時にのみ使用できる。 .TP \fBSIOCGIFCONF\fP -インターフェースの (トランスポート層の) アドレスのリストを返す。 現在のところ、互換性のため返されるのは \fBAF_INET\fP (IPv4) -系のアドレスだけである。 他の操作と違い、この ioctl では \fIifconf\fP 構造体を渡す。 - +Return a list of interface (network layer) addresses. This currently means +only addresses of the \fBAF_INET\fP (IPv4) family for compatibility. Unlike +the others, this ioctl passes an \fIifconf\fP structure: +.IP .in +4n -.nf +.EX struct ifconf { int ifc_len; /* バッファーサイズ */ union { @@ -216,20 +216,20 @@ struct ifconf { struct ifreq *ifc_req; /* 構造体の配列 */ }; }; -.fi +.EE .in - +.IP \fIifc_req\fP が NULL の場合、 \fBSIOCGIFCONF\fP はすべての取得できるアドレスを受け取るのに必要なバッファーサイズ (バイト数) を \fIifc_len\fP に格納して返す。 それ以外の場合は、\fIifc_req\fP には \fIifreq\fP 構造体の配列へのポインターを渡す。 この構造体の配列には現在アクティブな L3 インターフェースアドレスがすべて格納される。 \fIifc_len\fP はバイト単位の配列のサイズを渡す。 \fIifreq\fP 構造体内では、 \fIifr_name\fP にインターフェース名が、 \fIifr_addr\fP にそのアドレスが入る。 実際に格納されたバイト数は \fIifc_len\fP で返される。 - +.IP \fIifc_len\fP で指定されたサイズがすべてのアドレスを格納するのに不十分な場合、 カーネルは超過分をスキップし、成功を返す。 この状況になった場合、それを検出する信頼できる方法はない。 したがって、 前もって \fIifc_req\fP を NULL に設定して \fBSIOCGIFCONF\fP を呼び出して必要なバッファーサイズを決定するか、 返された \fIifc_len\fP と元の値の差分が \fIsizeof(struct ifreq)\fP よりも小さい場合は必ずバッファーを大きくして再度呼び出すか、 のいずれかを行うことが推奨される。 - +.IP .\" Slaving isn't supported in 2.2 .\" . .\" .TP @@ -246,28 +246,27 @@ struct ifconf { .PP さらに、デバイスによってはプライベートな ioctl がある。 これらはここでは説明しない。 .SH 注意 -厳密にいうと、 \fBSIOCGIFCONF\fP や、 \fBAF_INET\fP ソケットアドレスだけを -引き数に取ったり返したりする他の ioctl は IP 固有であり、 \fBip\fP(7) -に属する。 -.LP +\fBSIOCGIFCONF\fP and the other ioctls that accept or return only \fBAF_INET\fP +socket addresses are IP\-specific and perhaps should rather be documented in +\fBip\fP(7). +.PP アドレスがなかったり、 \fBIFF_RUNNING\fP フラグがセットされていないインターフェースの名前は \fI/proc/net/dev\fP で知ることができる。 -.LP +.PP ローカル IPV6 IP アドレスは \fI/proc/net\fP か \fBrtnetlink\fP(7) で知ることができる。 .SH バグ glibc 2.1 では \fI\fP に \fIifr_newname\fP マクロがない。 とりあえずの対応策として、以下のコードを追加しておくこと。 -.sp +.PP .in +4n -.nf +.EX #ifndef ifr_newname #define ifr_newname ifr_ifru.ifru_slave #endif -.fi +.EE .in .SH 関連項目 \fBproc\fP(5), \fBcapabilities\fP(7), \fBip\fP(7), \fBrtnetlink\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 1da396bb..00000000 --- a/manual/LDP_man-pages/draft/man7/netlink.7 +++ /dev/null @@ -1,367 +0,0 @@ -'\" 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 -.\" $Id: netlink.7,v 1.8 2000/06/22 13:23:00 ak Exp $ -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved. -.\" Translated 1999-12-06 by NAKANO Takeo -.\" Updated 2001-04-04 by Yuichi SATO , catch up to LDP v1.35 -.\" Updated 2006-06-23 by Yuichi SATO , catch up to LDP v2.29 -.\" -.TH NETLINK 7 2015\-01\-10 Linux "Linux Programmer's Manual" -.SH 名前 -netlink \- カーネルとユーザー空間の通信 (AF_NETLINK) -.SH 書式 -.nf -\fB#include \fP -\fB#include \fP -\fB#include \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 ファミリー。 -.TP -\fBNETLINK_CRYPTO\fP (Linux 3.2 以降) -.\" commit a38f7907b926e4c6c7d389ad96cc38cec2e5a9e9 -.\" Author: Steffen Klassert -カーネル暗号 API で登録された暗号に関する情報を要求したり、 カーネル暗号 API の設定を行ったりするための 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 -.sp 1 -.\" No right adjustment for text blocks in tables -.TS -tab(:); -l s -lB l. -GET 要求における追加フラグビット -_ -NLM_F_ROOT:単一のエントリーではなくテーブル全体を返す。 -NLM_F_MATCH:T{ -メッセージの内容で渡された基準 (criteria) にマッチする全てのエントリーを返す。 -まだ実装されていない。 -T} -.\" FIXME NLM_F_ATOMIC is not used anymore? -NLM_F_ATOMIC:テーブルのアトミックなスナップショットを返す。 -NLM_F_DUMP:T{ -便利なマクロ。 -.br -(NLM_F_ROOT|NLM_F_MATCH) と等価. -T} -.TE -.sp 1 -\fBNLM_F_ATOMIC\fP を使う場合は、 \fBCAP_NET_ADMIN\fP 権限を持つか実効ユーザー ID が 0 -でなければならない点に注意すること。 -.TS -tab(:); -l s -lB l. -NEW 要求における追加フラグビット -_ -NLM_F_REPLACE:現存のオブジェクトを置換する。 -NLM_F_EXCL:すでにオブジェクトがあったら置換しない。 -NLM_F_CREATE:まだオブジェクトがなければ作成する。 -NLM_F_APPEND:オブジェクトリストの最後に追加する。 -.TE -.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 はビットマスクで、すべてのビットが netlink グループ番号を表す。 -それぞれの netlink ファミリーは 32 のマルチキャストグループのセットを持つ。 -それぞれの netlink ファミリーは 32 のマルチキャストグループの セットを持つ。 -\fBbind\fP(2) がソケットに対して呼ばれると、 \fIsockaddr_nl\fP の \fInl_groups\fP -フィールドには listen したいグループのビットマスクがセットされる。 -デフォルトの値は 0 で、マルチキャストを一切受信しない。 -\fBsendmsg\fP(2) や \fBconnect\fP(2) によって、あるソケットからメッセージを -マルチキャストしたいときは、 \fInl_groups\fP に送信したいグループのビットマスク -をセットすればよい。 -netlink マルチキャストグループに送信したり、これを listen したりできるのは、 -実効ユーザー ID が 0 のプロセスか、 \fBCAP_NET_ADMIN\fP 権限を持つプロセスのみである。 -Linux 2.6.13 以降では、メッセージを複数のグループへのブロードキャストすることはできない。 -マルチキャストグループ向けメッセージを受信した場合、これ対する応答は -送り主の PID とマルチキャストグループとに送り返すべきである。 -さらに、Linux のカーネルサブシステムによっては、 -他のユーザーもメッセージの送受信ができる場合がある。 -Linux 3.0 の時点では、 -\fBNETLINK_KOBJECT_UEVENT\fP, \fBNETLINK_GENERIC\fP, \fBNETLINK_ROUTE\fP, -\fBNETLINK_SELINUX\fP グループでは他のユーザーがメッセージを受信することができる。 -他のユーザーがメッセージを送信できるグループは存在しない。 -.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* -libnetlink に関する情報 -.UE - -.UR http://people.suug.ch\:/~tgr\:/libnl/ -libnl に関する情報 -.UE - -RFC 3549 "Linux Netlink as an IP Services Protocol" -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/numa.7 b/manual/LDP_man-pages/draft/man7/numa.7 index 68eb298d..4b24428a 100644 --- a/manual/LDP_man-pages/draft/man7/numa.7 +++ b/manual/LDP_man-pages/draft/man7/numa.7 @@ -59,23 +59,23 @@ Linux カーネルには、次に示す NUMA 関連のシステムコールが .\" See also Changelog-2.6.14 このファイルは、プロセスの NUMA メモリーポリシーと割り当てに関する 情報を表示する。 - +.PP 各行に、そのプロセスが使用しているメモリー領域に関する情報が表示される。その他の情報 \(em そのメモリー領域に適用されているメモリーポリシーや、そのページがどのノード上に割り当てられているか、など \(em もあわせて表示される。 - +.PP \fInuma_maps\fP は読み出し専用のファイルである。 \fI/proc//numa_maps\fP から読み出しが行われると、 カーネルはそのプロセスの仮想アドレス空間をスキャンし、 メモリーの使用状況を報告する。 プロセスのメモリー領域の情報が 1 行に 1 領域で表示される。 - +.PP 各行の最初のフィールドはメモリー領域の開始アドレスを示す。 このフィールドは \fI/proc//maps\fP ファイルの内容と対応している。 \fI/proc//maps\fP には、メモリー領域の末尾のアドレスや、アクセス許可や共有といった他の情報も含まれる。 - +.PP 2 番目のフィールドは、 そのメモリー領域に現在適用されているメモリーポリシーを示す。 適用されているポリシーは、 必ずしもそのプロセスがこのメモリー領域に対して設定したポリシーとは限らない点に注意すること。 特に、 プロセスがその領域に対して「デフォルト」ポリシーを設定した場合、その領域に適用されるポリシーはプロセスのポリシーとなり、それが「デフォルト」ポリシーとなる場合もあればそうでない場合もある。 - +.PP 行の残りの部分には、そのメモリー領域に割り当てられたページに関する情報が入る。以下に詳細を示す。 .TP \fIN=\fP @@ -132,7 +132,7 @@ Linux の NUMA システムコールと \fI/proc\fP インターフェースは システムコールの定義を得るには \fI\-lnuma\fP でリンクすること。 \fIlibnuma\fP と必要なヘッダーファイル \fI\fP は \fInumactl\fP パッケージで提供されている。 - +.PP ただし、アプリケーションはこれらのシステムコールを直接利用すべきでない。 推奨される方法は、\fInumactl\fP パッケージの \fBnuma\fP(3) の関数群が提供する 高レベルインターフェースの利用である。 \fInumactl\fP パッケージは @@ -146,6 +146,5 @@ Linux の NUMA システムコールと \fI/proc\fP インターフェースは \fBget_mempolicy\fP(2), \fBmbind\fP(2), \fBmove_pages\fP(2), \fBset_mempolicy\fP(2), \fBnuma\fP(3), \fBcpuset\fP(7), \fBnumactl\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/operator.7 b/manual/LDP_man-pages/draft/man7/operator.7 deleted file mode 100644 index 6dafd48a..00000000 --- a/manual/LDP_man-pages/draft/man7/operator.7 +++ /dev/null @@ -1,80 +0,0 @@ -.\" Copyright (c) 1989, 1990, 1993 -.\" The Regents of the University of California. All rights reserved. -.\" -.\" %%%LICENSE_START(BSD_3_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. -.\" 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 -.\" -.\" @(#)operator.7 8.1 (Berkeley) 6/9/93 -.\" -.\" Copied shamelessly from FreeBSD with minor changes. 2003-05-21 -.\" Brian M. Carlson -.\" -.\" Restored automatic formatting from FreeBSD. 2003-08-24 -.\" Martin Schulze -.\" -.\" 2007-12-08, mtk, Converted from mdoc to man macros -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Sat Oct 16 11:38:41 JST 2004 -.\" by Yuichi SATO -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH OPERATOR 7 2011\-09\-09 Linux "Linux Programmer's Manual" -.SH 名前 -operator \- C 言語の演算子の優先順位と評価の順序 -.SH 説明 -この man ページでは C 言語の演算子と評価の優先順位をリストする。 -.nf - -\fB演算子 結合の順序\fP -() [] \-> . 左から右へ -! ~ ++ \-\- + \- (type) * & sizeof 右から左へ -* / % 左から右へ -+ \- 左から右へ -<< >> 左から右へ -< <= > >= 左から右へ -== != 左から右へ -& 左から右へ -^ 左から右へ -| 左から右へ -&& 左から右へ -|| 左から右へ -?: 右から左へ -= += \-= *= /= %= <<= >>= &= ^= |= 右から左へ -, 左から右へ -.fi -.\" -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/packet.7 b/manual/LDP_man-pages/draft/man7/packet.7 deleted file mode 100644 index ead6ee59..00000000 --- a/manual/LDP_man-pages/draft/man7/packet.7 +++ /dev/null @@ -1,385 +0,0 @@ -.\" This man page is Copyright (C) 1999 Andi Kleen . -.\" -.\" %%%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: packet.7,v 1.13 2000/08/14 08:03:45 ak Exp $ -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved. -.\" Translated 1999-12-06, NAKANO Takeo -.\" Updated 2001-02-13, Kentaro Shirakata -.\" Updated 2005-02-21, Akihiro MOTOKI -.\" -.TH PACKET 7 2014\-08\-19 Linux "Linux Programmer's Manual" -.SH 名前 -packet \- デバイスレベルのパケットインターフェース -.SH 書式 -.nf -\fB#include \fP -.br -\fB#include \fP -.br -\fB#include /* L2 プロトコル */\fP -.sp -\fBpacket_socket = socket(AF_PACKET, int \fP\fIsocket_type\fP\fB, int \fP\fIprotocol\fP\fB);\fP -.fi -.SH 説明 -packet ソケットは、デバイスドライバ (OSI レイヤ 2) レベルで 生のパケット (raw packet) を送受信するために用いられる。 -packet ソケットを使うと、ユーザー空間で物理層の上に プロトコルモジュールを実装することができる。 - -\fIsocket_type\fP には \fBSOCK_RAW\fP と \fBSOCK_DGRAM\fP のいずれかを指定する。 \fBSOCK_RAW\fP -はリンクレベルヘッダーを含む raw パケットを、 \fBSOCK_DGRAM\fP はリンクレベルヘッダーが削除された加工済みパケットを示す。 -リンクレベルヘッダー情報は \fIsockaddr_ll\fP で共通のフォーマットで入手できる。 \fIprotocol\fP には IEEE 802.3 -プロトコル番号を ネットワークバイトオーダーで指定する。 指定できるプロトコルのリストは、インクルードファイル -\fI\fP を参照。プロトコルを \fBhtons(ETH_P_ALL)\fP -にすると、全てのプロトコルが受信される。 外部から来たパケットのうち指定したプロトコルのものは、 -カーネルに実装されているプロトコルに渡される前の段階で、 packet ソケットに渡される。 - -packet ソケットをオープンできるのは、 実効ユーザーID が 0 のプロセスか、 \fBCAP_NET_RAW\fP -ケーパビリティを持つプロセスだけである。 - -\fBSOCK_RAW\fP パケットでは、パケットをデバイスドライバと受け渡しする際、 パケットデータに変更が行われることはない。 -パケットの受信時には、アドレスの解析だけは行われ、 標準的な \fIsockaddr_ll\fP -アドレス構造体に渡される。パケットの送信時には、ユーザーが指定する バッファーに物理層のヘッダーが含まれている必要がある。 -パケットはそのまま修正を受けずに、行き先アドレスから決定される インターフェースのネットワークドライバにキューイングされる。 -デバイスドライバによっては、他のヘッダーを常に追加するものもある。 \fBSOCK_RAW\fP は Linux 2.0 の obosolete な -\fBAF_INET/SOCK_PACKET\fP と似ているが、互換性があるわけではない。 - -\fBSOCK_DGRAM\fP はやや高位のレベルで動作する。物理ヘッダーは、パケットがユーザーに 渡される前に削除される。 \fBSOCK_DGRAM\fP の -packet ソケットを通して送られるパケットは、 \fIsockaddr_ll\fP -の行き先アドレスの情報に基づき、適切な物理層のヘッダーが付加されてから、 キューに送られる。 - -デフォルトでは、指定したプロトコル型のパケットはすべて packet ソケットに送られる。特定のインターフェースからのパケットだけを -取得したい場合には、 \fIstruct sockaddr_ll\fP にアドレスを指定して \fBbind\fP(2) を呼び、 packet -ソケットをそのインターフェースに結び付ける (バインドする)。 バインドの際には、アドレスフィールドのうち \fIsll_protocol\fP と -\fIsll_ifindex\fP だけが用いられる。 - -\fBconnect\fP(2) 操作は packet ソケットではサポートされていない。 - -\fBMSG_TRUNC\fP フラグが \fBrecvmsg\fP(2), \fBrecv\fP(2), \fBrecvfrom\fP(2) に渡されると、 -(バッファーサイズより大きかったとしても) 常に実際に通信された パケットの長さが返される。 -.SS アドレスのタイプ -\fIsockaddr_ll\fP はデバイスに依存しない物理層のアドレスである。 - -.in +4n -.nf -struct sockaddr_ll { - unsigned short sll_family; /* 常に AF_PACKET */ - unsigned short sll_protocol; /* 物理層のプロトコル */ - int sll_ifindex; /* インターフェース番号 */ - unsigned short sll_hatype; /* ARP ハードウェア種別 */ - unsigned char sll_pkttype; /* パケット種別 */ - unsigned char sll_halen; /* アドレスの長さ */ - unsigned char sll_addr[8]; /* 物理層のアドレス */ -}; -.fi -.in - -\fIsll_protocol\fP は標準的なイーサネットプロトコルのタイプで、 ネットワーク -バイトオーダーで記述する。 インクルードファイル -\fI\fP で定義されている。 これがこのソケットのプロト -コルのデフォルトとなる。 \fIsll_ifindex\fP はそのインターフェースの interface -index である (\fBnetdevice\fP(7) を参照)。 0 は (バインドが許可されている) 任 -意のインターフェースにマッチする。 \fIsll_hatype\fP は、インクルードファイル -\fI\fP で定義されている ARP 種別である。 -\fIsll_pkttype\fP はパケット種別である。指定できる種別は以下のいずれかである: -\fBPACKET_HOST\fP (ローカルホスト向けのパケット)、 \fBPACKET_BORADCAST\fP (物理層 -のブロードキャストパケット)、 \fBPACKET_MULTICAST\fP (物理層のマルチキャストア -ドレスに送るパケット)、 \fBPACKET_OTHERHOST\fP (他のホストに向けられたパケット -のうち、 無差別モード (promiscuous mode: 後述) のデバイスドライバにより補足 -されたもの)、 \fBPACKET_OUTGOING\fP (ローカルホストから発信され、 packet ソケッ -トにループバックしてきたパケット)。 これらの種別が意味を持つのは受信時のみ -である。 \fIsll_addr\fP と \fIsll_halen\fP は、物理層の (つまり IEEE 802.3 の) -アドレスとその長さである。 厳密な解釈はデバイスに依存する。 - -パケットを送る場合は、 \fIsll_family\fP, \fIsll_addr\fP, \fIsll_halen\fP, \fIsll_ifindex\fP -を指定すれば十分である。 その他のフィールドは 0 にしておくべきである。 \fIsll_hatype\fP と \fIsll_pkttype\fP -には受信したパケットの情報が設定される。 バインドの際には、 \fIsll_protocol\fP と \fIsll_ifindex\fP だけが使用される。 -.SS ソケットオプション -パケットソケットのオプションは、レベル \fBSOL_PACKET\fP を指定して \fBsetsockopt\fP(2) を呼び出すことで設定できる。 -.TP -\fBPACKET_ADD_MEMBERSHIP\fP -.PD 0 -.TP -\fBPACKET_DROP_MEMBERSHIP\fP -.PD -packet ソケットは、物理層のマルチキャストや 無差別モード (promiscuous mode) を設定して使うことができる。 -\fBPACKET_ADD_MEMBERSHIP\fP はバインドを追加し、 \fBPACKET_DROP_MEMBERSHIP\fP -はバインドを削除する。これらはいずれも \fIpacket_mreq\fP 構造体を引き数に取る。 - -.in +4n -.nf -struct packet_mreq { - int mr_ifindex; /* インターフェース番号 */ - unsigned short mr_type; /* 動作 */ - unsigned short mr_alen; /* アドレスの長さ */ - unsigned char mr_address[8]; /* 物理層のアドレス */ -}; -.fi -.in - -\fImr_ifindex\fP は、ステータスを変更したいインターフェースの インターフェース番号である。 \fImr_type\fP -パラメーターは実行する動作を指定する: \fBPACKET_MR_PROMISC\fP は、共有している媒体からの全てのパケットを受信できるようにする -(しばしば "無差別モード (promiscuous mode)" と呼ばれる)。 \fBPACKET_MR_MULTICAST\fP は、そのソケットを、 -\fImr_address\fP と \fImr_alen\fP で指定される物理層のマルチキャストブループにバインドする。 -\fBPACKET_MR_ALLMULTI\fP は socket を up にして、そのインターフェースに到達したすべての -マルチキャストパケットを受信できるようにする。 - -昔からある ioctl だけでなく、 \fBSIOCSIFFLAGS\fP, \fBSIOCADDMULTI\fP, \fBSIOCDELMULTI\fP -を同じ目的に用いることができる。 -.TP -\fBPACKET_AUXDATA\fP (Linux 2.6.21 以降) -.\" commit 8dc4194474159660d7f37c495e3fc3f10d0db8cc -ブール値のオプションを有効すると、 パケットソケットは、パケットと一緒にメタデータ構造体を \fBrecvmsg\fP(2) コントロールフィールドで渡す。 -この構造体は \fBcmsg\fP(3) を使って読むことができる。 定義は以下の通りである。 - -.in +4n -.nf -struct tpacket_auxdata { - __u32 tp_status; - __u32 tp_len; /* パケット長 */ - __u32 tp_snaplen; /* キャプチャした長さ */ - __u16 tp_mac; - __u16 tp_net; - __u16 tp_vlan_tci; - __u16 tp_padding; -}; -.fi -.in -.TP -\fBPACKET_FANOUT\fP (Linux 3.1 以降) -.\" commit dc99f600698dcac69b8f56dda9a8a00d645c5ffc -スレッドにまたがって処理をスケールさせるため、 パケットソケットはファンアウトグループを構成することができる。 このモードでは、 -マッチしたそれぞれのパケットはグループ内のいずれか一つのソケットにだけキューイングされる。 ソケットをファンアウトグループに参加させるには、 レベル -\fBSOL_PACKET\fP でオプション \fBPACKET_FANOUT\fP を指定して \fBsetsockopt\fP(2) を呼び出す。 -ネットワーク名前空間毎に最大 65536 個の独立したグループを持つことができる。 整数のオプション値の先頭 16 ビットに ID -をエンコードすることで、 ソケットはグループを選択する。 あるグループへの最初のパケットソケットの参加があった時点で、 -グループは暗黙のうちに作成される。 既存のグループへの参加が成功するためには、 それ以降にそのグループに参加しようとするパケットソケットは、 -プロトコロ、 デバイス設定、ファンアウトモード、フラグが同じである必要がある (下記参照)。 パケットソケットがファンアウトグループから抜けるのは、 -そのソケットをクローズした場合だけである。 ファンアウトグループは最後のソケットがクローズした場合に削除される。 - -.\" commit 2d36097d26b5991d71a2cf4a20c1a158f0f1bfcd -ファンアウトでは、 複数のソケットにトラフィックを分散させるアルゴリズムを複数サポートしている。 デフォルトのモードである -\fBPACKET_FANOUT_HASH\fP では、同じフローのパケットは同じソケットに送信され、 フロー単位の順序が維持される。 -パケットごとに、パケットフローのハッシュの、そのグループのソケット数に対する剰余が計算され、ソケットが選択される。 -なお、フローハッシュはネットワーク層のアドレスとトランスポート層のポートフィールドに対するハッシュである (トランスポート層ポートは存在する場合のみ)。 -負荷分散モード \fBPACKET_FANOUT_LB\fP はラウンドロビンアルゴリズムが採用されている。 \fBPACKET_FANOUT_CPU\fP では、 -パケットが到着した CPU に基づいてソケットを選択する。 \fBPACKET_FANOUT_ROLLOVER\fP -はすべてのデータを一つのソケットで処理し、 そのソケットで処理待ち (backlog) が発生した場合に次のソケットに移る。 -\fBPACKET_FANOUT_RND\fP では擬似乱数発生器を使ってソケットが選択される。 \fBPACKET_FANOUT_QM\fP (Linux -3.14 以降で利用可能) では受信 skb に記録された queue_mapping を使ってソケットが選択される。 - -ファンアウトモードでは追加のオプションがある。 IP フラグメンテーションが起こると、 -同じフローのパケットのフローハッシュが異なるハッシュを持つことになる。 フラグ \fBPACKET_FANOUT_FLAG_DEFRAG\fP -をセットすると、 パケットはファンアウトを行う前にフラグメント再構築が行われるようになり、 フラグメントがあった場合でも順序が維持される。 -ファンアウトモードとオプションは、 整数のオプション値の下位 16 ビットで指定される。 フラグ -\fBPACKET_FANOUT_FLAG_ROLLOVER\fP を指定すると、 バックアップ戦略としてロールオーバー方式が有効になる。 -元のファンアウトアルゴリズムが backlog ソケットを選択していれば、 パケットは次の利用可能なソケットにロールオーバーされる。 -.TP -\fBPACKET_LOSS\fP (\fBPACKET_TX_RING\fP で使用) -送信リングで不正な形式のパケットに遭遇した場合、 デフォルトではそのリングの \fItp_status\fP を -\fBTP_STATUS_WRONG_FORMAT\fP に戻し、その送信を直ちに中止する。 -不正な形式のパケットにより、そのパケット自身とその以降にキューに入れられたパケットの送信がブロックされる。形式エラーを修正し、関連する -\fItp_status\fP を \fBTP_STATUS_SEND_REQUEST\fP に設定し直し、\fBsend\fP(2) -を使って送信処理を再開しなければならない。 しかしながら、 \fBPACKET_LOSS\fP がセットされている場合、 -不正な形式のパケットはすべてスキップされ、 その送信リングの \fItp_status\fP は \fBTP_STATUS_AVAILABLE\fP -に設定し直され、送信処理は継続される。 -.TP -\fBPACKET_RESERVE\fP (\fBPACKET_RX_RING\fP で使用) -デフォルトでは、パケット受信リングはメタデータ構造体とアライメント用のパディングの直後にパケットを書き込む。 -この整数オプションを設定すると、パケットの前に追加で領域が予約される。 -.TP -\fBPACKET_RX_RING\fP -非同期でのパケット受信用のメモリーマップされたリングバッファーを作成する。 パケットソケットはアプリケーションのアドレス空間に連続する領域を確保し、 -そこにパケットスロットの配列を構成し、 (最大 \fItp_snaplen\fP 個の) パケットを順にスロットにコピーする。 各パケットの前には -\fItpacket_auxdata\fP に似たメタデータ構造体が置かれる。 -プロトコルフィールドには、データの、メタデータヘッダーの先頭からのオフセットが入る。 \fItp_net\fP にはネットワーク層へのオフセットが格納される。 -パケットソケットが \fBSOCK_DGRAM\fP 型の場合、 \fItp_mac\fP も同じである。 \fBSOCK_RAW\fP 型の場合、 \fItp_net\fP -にはリンク層のフレームへのオフセットが入る。 パケットソケットとアプリケーションは \fItp_status\fP フィールドを通してリングの先頭 -(head) と末尾 (tail) の情報を受け渡す。 パケットソケットは \fItp_status\fP が \fBTP_STATUS_KERNEL\fP -のすべてのスロットを所有しており、 スロットにデータが入ると、 -パケットソケットはそのスロットのステータスをアプリケーションに所有権を渡す状態に変更する。 通常の動作では、 新しい \fItp_status\fP -で少なくとも \fBTP_STATUS_USER\fP ビットがセットされていれば、 受信されたパケットが格納されたことを示している。 -アプリケーションがパケットの処理を終えると、アプリケーションはそのスロットの \fBtp_status\fP を \fBTP_STATUS_KERNEL\fP -に設定し、そのスロットの所有権をソケットに返す。 パケットソケットは、複数バージョンのパケットリングを実装している。 実装の詳細は Linux -カーネルソースツリーの \fIDocumentation/networking/packet_mmap.txt\fP で説明されている。 -.TP -\fBPACKET_STATISTICS\fP -パケットソケットの統計情報を次の構造体形式で取得する。 - -.in +4n -.nf -struct tpacket_stats { - unsigned int tp_packets; /* 総パケット数 */ - unsigned int tp_drops; /* ドロップパケット数 */ -}; -.fi -.in - -統計情報を取得すると、内部カウンターはリセットされる。 \fBTPACKET_V3\fP のリングを使う場合には、統計情報構造体は違うものになる。 -.TP -\fBPACKET_TIMESTAMP\fP (\fBPACKET_RX_RING\fP で使用; Linux 2.6.36 以降) -.\" commit 614f60fa9d73a9e8fdff3df83381907fea7c5649 -パケット受信リングでは常にタイムスタンプがメタデータヘッダーに格納される。 -デフォルトでは、タイムスタンプはパケットがリングにコピーされた時点で生成されるソフトウェアによるタイムスタンプである。 -この整数オプションによりタイムスタンプの種類を選択できる。 デフォルト以外では、 Linux カーネルソースツリーの -\fIDocumentation/networking/timestamping.txt\fP に説明がある 2 -種類のハードウェアフォーマットがサポートされている。 -.TP -\fBPACKET_TX_RING\fP (Linux 2.6.31 以降) -.\" commit 69e3c75f4d541a6eb151b3ef91f34033cb3ad6e1 -パケット送信用のメモリーマップされたリングバッファーを作成する。 このオプションは \fBPACKET_RX_RING\fP と同様で、同じ引き数を取る。 -アプリケーションは \fItp_status\fP が \fBTP_STATUS_AVAILABLE\fP のスロットにパケットを書き込み、 -\fItp_status\fP を \fBTP_STATUS_SEND_REQUEST\fP に変更することでそのパケットの送信を予約する。 -パケットの送信準備ができたら、アプリケーションは続けて \fBsend\fP(2) 系のシステムコールを呼び出す。 システムコールの引き数 \fIbuf\fP と -\fIlen\fP は無視される。 \fBsendto\fP(2) や \fBsendmsg\fP(2) を使ってアドレスが渡された場合、 -ソケットのデフォルト値ではなくそのアドレスが使用される。 送信に成功すると、ソケットはそのスロットの \fItp_status\fP を -\fBTP_STATUS_AVAILABLE\fP に戻す。 エラーの場合、 \fBPACKET_LOSS\fP がセットされていなければ、 -直ちに送信を中断しエラーを上げる。 -.TP -\fBPACKET_VERSION\fP (\fBPACKET_RX_RING\fP で使用; Linux 2.6.27 以降) -.\" commit bbd6ef87c544d88c30e4b762b1b61ef267a7d279 -デフォルトでは、 \fBPACKET_RX_RING\fP は \fBTPACKET_V1\fP -のパケット受信リングを作成する。別のバージョンのリングを作成するには、そのリングを作成する前に希望するバージョンが使われるようにこの整数オプションを設定すること。 -.TP -\fBPACKET_QDISC_BYPASS\fP (Linux 3.14 以降) -.\" commit d346a3fae3ff1d99f5d0c819bf86edf9094a26a1 -デフォルトでは、パケットはカーネルの qdisc (トラフィック制御) レイヤー経由で渡される。 これは大半のユースケースに合っている。 -ネットワークに対して可能な限りパケットを送信する (例えば pkggen と同様の方法で負荷対象のデバイスを試験する) -のにパケットソケットを使うトラフィック生成アプライアンスでは、この整数オプションを 1 に設定することで qdisc レイヤーを飛ばすことができる。 -qdisc レイヤーでのパケットバッファーが行われなくなるという副作用がある。 これにより、 -ネットワークデバイスの送信キューの使用量が高い場合にパケット廃棄が起きやすくなる。 -.SS ioctl -.\" FIXME Document SIOCGSTAMPNS -\fBSIOCGSTAMP\fP を用いると、最後に受信したパケットのタイムスタンプを得ることができる。 引き数は \fIstruct timeval\fP -型の変数である。 - -さらに、 \fBnetdevice\fP(7) および \fBsocket\fP(7) で定義されている標準の ioctl はいずれも packet -ソケットに指定可能である。 -.SS エラー処理 -packet ソケットは、パケットをデバイスドライバに渡すときに 起きたエラーしか処理しない。遅延エラー (pending error) -に関する概念は持っていない。 -.SH エラー -.TP -\fBEADDRNOTAVAIL\fP -不明なマルチキャストグループアドレスが渡された。 -.TP -\fBEFAULT\fP -ユーザーが渡したメモリーアドレスが不正。 -.TP -\fBEINVAL\fP -引き数が不正。 -.TP -\fBEMSGSIZE\fP -パケットがインターフェースの MTU より大きい。 -.TP -\fBENETDOWN\fP -インターフェースが up でない。 -.TP -\fBENOBUFS\fP -パケットに割り当てるメモリーが足りない。 -.TP -\fBENODEV\fP -デバイス名が不明。あるいはインターフェースアドレスで指定された インターフェースインデックスが不明。 -.TP -\fBENOENT\fP -パケットを一つも受信していない。 -.TP -\fBENOTCONN\fP -インターフェースアドレスが渡されなかった。 -.TP -\fBENXIO\fP -インターフェースアドレスに不正なインターフェースインデックスが含まれている。 -.TP -\fBEPERM\fP -この操作を行うのに必要な権限をユーザーが持っていない。 - -上記以外のエラーが、低レベルのドライバで生成されることがある。 -.SH バージョン -\fBAF_PACKET\fP は Linux 2.2 の新機能である。これより古いバージョンの Linux では \fBSOCK_PACKET\fP -のみをサポートしていた。 -.PP -.SH 注意 -移植性の必要なプログラムでは、 \fBpcap\fP(3) 経由で \fBAF_PACKET\fP を用いることをお薦めする。ただし、この方法では -\fBAF_PACKET\fP の機能すべてを利用することはできない。 - -\fBSOCK_DGRAM\fP packet ソケットは、IEEE 802.3 フレームの IEEE 802.2 LLC ヘッダーの -生成や解析を行おうとしない。 \fBETH_P_802_3\fP が送信プロトコルに指定されると、カーネルは 802.3 フレームを 生成して length -フィールドに書き込む。 完全に準拠したパケットを得るためにはユーザーが LLC ヘッダーを 与える必要がある。到着した 802.3 パケットでは、 -DSAP/SSAP protocol の各フィールドは多重化 (multiplex) されていない。 代わりにこれらは LLC ヘッダーが前置された -\fBETH_P_802_2\fP プロトコルとして与えられる。したがって、 \fBETH_P_802_3\fP にバインドすることはできない。かわりに -\fBETH_P_802_2\fP にバインドし、自分自身でプロトコルの多重化を行うこと。 送信のデフォルトは、プロトコルフィールドを持つ 標準の -Ethernet DIX encapsulation である。 - -packet ソケットは入出力の firewall chain に影響をうけない。 -.SS 移植性 -Linux 2.0 では、 packet ソケットを得る方法は \fBsocket(AF_INET, SOCK_PACKET, -\fP\fIprotocol\fP\fB)\fP を呼ぶやり方しかなかった。この方法はまだサポートされているが、 用いないことを強く推奨する。現在の方法との主な違いは、 -\fBSOCK_PACKET\fP ではインターフェースの指定に古い \fIstruct sockaddr_pkt\fP -を用いる点である。これには物理層からの独立性がない。 - -.in +4n -.nf -struct sockaddr_pkt { - unsigned short spkt_family; - unsigned char spkt_device[14]; - unsigned short spkt_protocol; -}; -.fi -.in - -\fIspkt_family\fP はデバイスのタイプ、 \fIspkt_protocol\fP は \fI\fP -で定義されている IEEE 802.3 プロトコルタイプ、 \fIspkt_device\fP はデバイスの名前をヌル終端された文字列で与えたもの (例: -eth0) である。 - -この構造体は obsolete であり、 新しくコードを書く時には用いるべきでない。 -.SH バグ -glibc 2.1 には \fBSOL_PACKET\fP の定義がない。回避策としては、以下のようにするとよい。 -.in +4n -.nf - -#ifndef SOL_PACKET -#define SOL_PACKET 263 -#endif - -.fi -.in -この問題はそれ以降のバージョンの glibc では修正されている。 - -IEEE 802.2/803.3 の LLC の扱い方は、バグと考えても良いだろう。 - -ソケットフィルターについて記載されていない。 - -.\" .SH CREDITS -.\" This man page was written by Andi Kleen with help from Matthew Wilcox. -.\" AF_PACKET in Linux 2.2 was implemented -.\" by Alexey Kuznetsov, based on code by Alan Cox and others. -\fBMSG_TRUNC\fP \fBrecvmsg\fP(2) 拡張は非常にまずい対処であり、制御メッセージで置き換えるべきである。 今のところ -\fBSOCK_DGRAM\fP 経由でパケットについていた宛先アドレスを得る方法がない。 -.SH 関連項目 -\fBsocket\fP(2), \fBpcap\fP(3), \fBcapabilities\fP(7), \fBip\fP(7), \fBraw\fP(7), -\fBsocket\fP(7) - -標準 IP Ethernet encapsulation に関しては RFC\ 894 を、 IEEE 802.3 IP encapsulation -に関しては RFC\ 1700 を参照。 - -物理層のプロトコルに関する記述は \fI\fP インクルードファイルにある。 - -Linux カーネルのソースツリー。 \fI/Documentation/networking/filter.txt\fP には Berkeley -Packet Filters をパケットソケットにどのように適用するかの説明がある。 -\fI/tools/testing/selftests/net/psock_tpacket.c\fP には、 \fBPACKET_RX_RING\fP と -\fBPACKET_TX_RING\fP の利用可能なすべてのバージョンのサンプルソースコードがある。 -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/path_resolution.7 b/manual/LDP_man-pages/draft/man7/path_resolution.7 index 03c52f18..98f6f788 100644 --- a/manual/LDP_man-pages/draft/man7/path_resolution.7 +++ b/manual/LDP_man-pages/draft/man7/path_resolution.7 @@ -34,46 +34,77 @@ .\" Updated and Modified 2005-10-27, Akihiro MOTOKI .\" Updated and Modified 2005-11-04, Akihiro MOTOKI .\" -.TH PATH_RESOLUTION 7 2009\-12\-05 Linux "Linux Programmer's Manual" +.TH PATH_RESOLUTION 7 2020\-04\-11 Linux "Linux Programmer's Manual" .SH 名前 path_resolution \- ファイルのパス名の解決方法 .SH 説明 いくつかの UNIX/Linux システムコールは、 1 つ以上のファイル名を引き数として持つ。 ファイル名 (またはパス名) は以下のようにして解決される。 .SS "ステップ 1: 解決過程を開始する" -パス名が \(aq/\(aq 文字で始まっている場合、 ディレクトリ検索の開始点は呼び出し元のプロセスのルートディレクトリになる。 -(プロセスはルートディレクトリを親プロセスから継承する。 通常は、これがファイル階層のルートディレクトリになる。 プロセスは \fBchroot\fP(2) -システムコールを使って別のルートディレクトリを取得することもできる。 この場合、そのプロセスと \fBCLONE_NEWNS\fP フラグを設定して -\fBclone\fP(2) を呼び出すことによって開始されたそのプロセスの子孫は、 完全にプライベートなマウント名前空間を取得できる。) パス名の -\(aq/\(aq の部分は、このようにして扱われる。 - -パス名が \(aq/\(aq 文字で始まっていない場合、 解決過程におけるディレクトリ検索の開始点は、 プロセスの現在の作業 (working) -ディレクトリとなる。 (これも親プロセスから継承される。 これは \fBchdir\fP(2) システムコールを使うことで変更できる。) - +If the pathname starts with the \(aq/\(aq character, the starting lookup +directory is the root directory of the calling process. A process inherits +its root directory from its parent. Usually this will be the root directory +of the file hierarchy. A process may get a different root directory by use +of the \fBchroot\fP(2) system call, or may temporarily use a different root +directory by using \fBopenat2\fP(2) with the \fBRESOLVE_IN_ROOT\fP flag set. +.PP +A process may get an entirely private mount namespace in case it\(emor one +of its ancestors\(emwas started by an invocation of the \fBclone\fP(2) system +call that had the \fBCLONE_NEWNS\fP flag set. This handles the \(aq/\(aq part +of the pathname. +.PP +If the pathname does not start with the \(aq/\(aq character, the starting +lookup directory of the resolution process is the current working directory +of the process \(em or in the case of \fBopenat\fP(2)\-style system calls, the +\fIdfd\fP argument (or the current working directory if \fBAT_FDCWD\fP is passed +as the \fIdfd\fP argument). The current working directory is inherited from +the parent, and can be changed by use of the \fBchdir\fP(2) system call.) +.PP \(aq/\(aq 文字で始まるパス名は絶対パス名と呼ばれ、 \(aq/\(aq 文字で始まらないパス名は相対パス名と呼ばれる。 .SS "ステップ 2: パスを辿る" 現在の検索ディレクトリをディレクトリ検索の開始点とする。 そして、パス名の最後の構成要素 (component) でない各構成要素について、 現在の検索ディレクトリで検索を行う。 ここで構成要素は \(aq/\(aq で区切られた部分文字列である。 - +.PP プロセスが現在の検索ディレクトリの検索許可を持たない場合、 \fBEACCES\fP エラーが返される ("Permission denied")。 - +.PP 構成要素が見つからない場合、 \fBENOENT\fP エラーが返される ("No such file or directory")。 - +.PP 構成要素は見つかったが、ディレクトリでもシンボリックリンクでもない場合、 \fBENOTDIR\fP エラーが返される ("Not a directory")。 - +.PP 構成要素が見つかって、かつディレクトリである場合、 現在の検索ディレクトリをそのディレクトリに設定し、 次の構成要素に移動する。 - +.PP +If the component is found and is a symbolic link (symlink), we first resolve +this symbolic link (with the current lookup directory as starting lookup +directory). Upon error, that error is returned. If the result is not a +directory, an \fBENOTDIR\fP error is returned. If the resolution of the +symbolic link is successful and returns a directory, we set the current +lookup directory to that directory, and go to the next component. Note that +the resolution process here can involve recursion if the prefix ('dirname') +component of a pathname contains a filename that is a symbolic link that +resolves to a directory (where the prefix component of that directory may +contain a symbolic link, and so on). In order to protect the kernel against +stack overflow, and also to protect against denial of service, there are +limits on the maximum recursion depth, and on the maximum number of symbolic +links followed. An \fBELOOP\fP error is returned when the maximum is exceeded +("Too many levels of symbolic links"). +.PP .\" .\" presently: max recursion depth during symlink resolution: 5 .\" max total number of symbolic links followed: 40 .\" _POSIX_SYMLOOP_MAX is 8 -構成要素が見つかって、かつシンボリックリンク (symlink) である場合、 (現在の検索ディレクトリをディレクトリ検索の開始点として) -最初にそのシンボリックリンクを解決する。 結果がディレクトリでない場合、 \fBENOTDIR\fP エラーが返される。 -シンボリックリンクの解決が成功してディレクトリが返された場合、 そのディレクトリを現在の検索ディレクトリとして設定し、 次の構成要素に移動する。 -解決過程に再帰が含まれる点に注意すること。 カーネルをスタックオーバーフローや サービス拒否 (denial of service) から守るため、 -再帰の最大の深さとシンボリックリンクを辿る最大回数に制限がある。 最大値を超えた場合 \fBELOOP\fP エラーが返される ("Too many -levels of symbolic links")。 +.\" MAXSYMLINKS is 40 +.\" MAX_NESTED_LINKS +.\" commit 894bc8c4662ba9daceafe943a5ba0dd407da5cd3 +As currently implemented on Linux, the maximum number of symbolic links that +will be followed while resolving a pathname is 40. In kernels before +2.6.18, the limit on the recursion depth was 5. Starting with Linux 2.6.18, +this limit was raised to 8. In Linux 4.2, the kernel's pathname\-resolution +code was reworked to eliminate the use of recursion, so that the only limit +that remains is the maximum of 40 resolutions for the entire pathname. +.PP +The resolution of symbolic links during this stage can be blocked by using +\fBopenat2\fP(2), with the \fBRESOLVE_NO_SYMLINKS\fP flag set. .SS "ステップ 3: 最後のエントリーを見つける" パス名の最後の構成要素の検索は、前のステップで説明した 他の全ての構成要素と同じように実行されるが、2 つの違いがある。 (i) 最後の構成要素はディレクトリである必要がない (パス解決過程に関する限りはどちらでも構わない \(em 特定のシステムコールが要求するものによって、 @@ -82,16 +113,20 @@ levels of symbolic links")。 特定のシステムコールの man ページで説明されている。 .SS ". と .." 慣習として、全てのディレクトリはエントリー "." と ".." を持つ。 これらはそれぞれ、そのディレクトリ自身とその親ディレクトリを参照する。 - +.PP パス解決過程では、これらのエントリーが物理的なファイルシステムに 実際に存在するか否かに関わらず、慣習的な意味を持つと仮定する。 - -ルートより上に辿ることはできない: "/.." は "/" と同じである。 +.PP +One cannot walk up past the root: "/.." is the same as "/". .SS マウント位置 "mount dev path" コマンドを実行した後、 パス名 "path" はデバイス "dev" 上のファイルシステム階層の ルートディレクトリを参照するようになり、以前の位置を参照しない。 - +.PP マウントされたファイルシステムの外に出ることができる: "path/.." は "dev" 上のファイルシステム階層の外である "path" の親ディレクトリを参照する。 +.PP +Traversal of mount points can be blocked by using \fBopenat2\fP(2), with the +\fBRESOLVE_NO_XDEV\fP flag set (though note that this also restricts bind mount +traversal). .SS 末尾のスラッシュ パス名が \(aq/\(aq で終わっている場合、 ステップ 2 において、その前にある構成要素の解決法を次のように強制する: その構成要素が存在しなければならず、ディレクトリとして解決される。 存在しない場合は、末尾の \(aq/\(aq が無視される。 (また同様に、末尾に @@ -107,22 +142,24 @@ levels of symbolic links")。 元々の UNIX では、空のパス名は現在のディレクトリを参照していた。 最近、POSIX では空のパス名を解決するべきではないという決定がなされた。 この場合、Linux は \fBENOENT\fP を返す。 .SS 許可 -ファイルの許可ビットは、3 組の 3 ビットから構成される。 \fBchmod\fP(1) と \fBstat\fP(2) を参照すること。 -呼び出し元のプロセスの実効ユーザー ID がファイルの所有者 ID と等しい場合、 3 つのうち最初のグループが使われる。 ファイルのグループ ID -が呼び出し元のプロセスの実効グループ ID または (\fBsetgroups\fP(2) で設定される) 呼び出し元のプロセスの補助 -(supplementary) グループ ID と 等しい場合、3 つのうち 2 番目のグループが使われる。 どちらにも当てはまらない場合、3 -番目のグループが使われる。 - +The permission bits of a file consist of three groups of three bits; see +\fBchmod\fP(1) and \fBstat\fP(2). The first group of three is used when the +effective user ID of the calling process equals the owner ID of the file. +The second group of three is used when the group ID of the file either +equals the effective group ID of the calling process, or is one of the +supplementary group IDs of the calling process (as set by \fBsetgroups\fP(2)). +When neither holds, the third group is used. +.PP 3 ビットが使われる場合、最初のビットは読み込み許可を決定し、 2 番目のビットは書き込み許可を決定する。 また 3 番目のビットは、通常のファイルの場合は実行許可を表し、 ディレクトリの場合は検索許可を表す。 - +.PP Linux は、許可のチェックにおいて、実効ユーザー ID ではなく fsuid を使う。 通常は fsuid は実効ユーザー ID と等しいが、fsuid はシステムコール \fBsetfsuid\fP(2) で変更することができる。 - +.PP (ここで "fsuid" は "file system user ID" を表している。 この概念は「プロセスが同じ実効ユーザー ID を持つプロセスに 同時にシグナルを送ることができる」というユーザー空間 NFS サーバを 実装する際に必要であった。 これは今では廃れてしまった。 \fBsetfsuid\fP(2) を使うべきではない。 - +.PP .\" FIXME . say something about filesystem mounted read-only ? 同様に、Linux では実効グループ ID の代わりに fsgid ("ファイルシステムグループID") を使う。 \fBsetfsgid\fP(2) を参照すること。 @@ -135,20 +172,19 @@ Linux は、許可のチェックにおいて、実効ユーザー ID ではな .\" of the file's execute permission bits. -- MTK (Oct 05) 伝統的な UNIX システムでは、スーパーユーザー (\fIroot\fP, ユーザー ID 0) は非常に強力であり、ファイルアクセス時の 許可による制限を全てスキップする。 - +.PP Linux では、スーパーユーザー権限が複数のケーパビリティに分割されている (\fBcapabilities\fP(7) 参照)。ファイルの許可の確認には、 \fBCAP_DAC_OVERRIDE\fP と \fBCAP_DAC_READ_SEARCH\fP の 2つのケーパビリティが関係する (プロセスの fsuid が 0 の場合、そのプロセスはこれらのケーパビリティを持つ)。 - +.PP \fBCAP_DAC_OVERRIDE\fP ケーパビリティは全ての許可チェックを上書きする。 実際には、対象となるファイルの 3 つの実行許可ビットのうちの 少なくとも 1 つが設定されている場合のみ、実行を許可する。 - +.PP .\" FIXME . say something about immutable files .\" FIXME . say something about ACLs \fBCAP_DAC_READ_SEARCH\fP ケーパビリティは、ディレクトリに対して読み込みと検索を許可し、 通常のファイルに対して読み込みを許可する。 .SH 関連項目 \fBreadlink\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7), \fBsymlink\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/pid_namespaces.7 b/manual/LDP_man-pages/draft/man7/pid_namespaces.7 deleted file mode 100644 index 8ec7f790..00000000 --- a/manual/LDP_man-pages/draft/man7/pid_namespaces.7 +++ /dev/null @@ -1,183 +0,0 @@ -.\" Copyright (c) 2013 by Michael Kerrisk -.\" and Copyright (c) 2012 by Eric W. Biederman -.\" -.\" %%%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 PID_NAMESPACES 7 2015\-01\-10 Linux "Linux Programmer's Manual" -.SH 名前 -pid_namespaces \- Linux PID 名前空間の概要 -.SH 説明 -名前空間の概要については \fBnamespaces\fP(7) を参照。 - -PID 名前空間はプロセス ID 番号空間を分離する。 これは、異なる PID 名前空間のプロセスは同じ PID を持つことができることを意味する。 -PID 名前空間を使うことで、コンテナー内のプロセス群を中断、再開したり、 コンテナー内のプロセスの PID -を保持したままコンテナーを新しいホストに移行したりするといった機能をコンテナーが提供することが可能になる。 - -新しい PID 名前空間の PID は、 独立したシステムであるかのように、 1 から始まる。 \fBfork\fP(2), \fBvfork\fP(2), -\fBclone\fP(2) を呼び出すと、 その名前空間内で一意な PID でプロセスが生成される。 - -.\" -.\" ============================================================ -.\" -PID 名前空間を使用するには、設定 \fBCONFIG_PID_NS\fP が有効になったカーネルが必要である。 -.SS "名前空間の init プロセス" -新しい名前空間で作成される最初のプロセス (すなわち、\fBCLONE_NEWPID\fP フラグで \fBclone\fP(2) を使って作成されたプロセスや、 -\fBCLONE_NEWPID\fP フラグで \fBunshare\fP(2) を呼び出した後のプロセスによって作成された最初のプロセス) は PID 1 -を持ち、 そのプロセスはその名前空間の "init" プロセスとなる (\fBinit\fP(1) 参照)。 名前空間内でみなしごになった -(親プロセスがいなくなった) 子プロセスは、 \fBinit\fP(1) ではなくこのプロセスが親プロセスになる (ただし、 同じ PID -名前空間内のその子プロセスの先祖が、 \fBprctl\fP(2) の \fBPR_SET_CHILD_SUBREAPER\fP コマンドを使って、 -自分自身をみなしごとなった子孫のプロセスの引き取り手になっている場合はこの限りではなく)。 - -PID 名前空間の "init" プロセスが終了すると、 カーネルはその名前空間の全プロセスを \fBSIGKILL\fP シグナルで終了する。 この動作は、 -PID 名前空間の正しい操作のためには "init" プロセスは不可欠であるという事実を反映したものである。 この場合、 その PID -名前空間へのそれ以降の \fBfork\fP(2) はエラー \fBENOMEM\fP で失敗する。 "init" プロセスが終了している PID -名前空間に新しいプロセスを作成することはできない。 このような状況は、 例えば、 名前空間にいたプロセスに対応する -\fI/proc/[pid]/ns/pid\fP ファイルに対してオープンしたファイルディスクリプターを使って、 "init" -プロセスが終了した後にその名前空間に \fBsetns\fP(2) を行った場合に起こり得る。 \fBunshare\fP(2) -を呼び出した後にも、この状況は起こり得る。 それ以降に \fBfork\fP(2) で作成された最初の子プロセスが終了すると、 それ以降の -\fBfork\fP(2) の呼び出しは \fBNOMEM\fP で失敗する。 - -PID 名前空間の他のメンバーは、 "init" プロセスがシグナルハンドラーを設定したシグナルだけを、 "init" プロセスに送信することができる。 -この制限は特権プロセスに対しても適用される。 この制限により、 PID 名前空間の他のメンバーがうっかり "init" -プロセスを殺してしまうのを防ぐことができる。 - -同様に、 先祖の名前空間のプロセスは、 "init" プロセスがそのシグナルに対するハンドラーを設定している場合にのみ、 \fBkill\fP(2) -で説明されている通常のアクセス許可のチェックを経た上で、 子供の PID 名前空間の "init" プロセスにシグナルを送信できる。 -(ハンドラー内では、 \fIsigaction\fP(2) に説明がある \fIsiginfo_t\fP の \fIsi_pid\fP フィールドは 0 になる。) -\fBSIGKILL\fP と \fBSIGSTOP\fP は例外として扱われ、 これらのシグナルが先祖の PID -名前空間から送信された場合には強制的に配送される。 これらのシグナルはどちらも "init" プロセルが捕捉することはできない。 -そのため、これらのシグナルに関連付けられた通常のアクション (それぞれ、プロセスの終了とプロセスの強制停止) が実行される。 - -.\" -.\" ============================================================ -.\" -Linux 3.4 以降では、 \fBreboot\fP(2) システムコールを呼び出すと、 シグナルがその名前空間の "init" プロセスに送信される。 -詳細は \fBreboot\fP(2) を参照。 -.SS "ネストされた PID 名前空間" -PID 名前空間は入れ子にすることができる。 最初の ("root") PID 名前空間以外の各 PID 名前空間は親を持つ。 PID 名前空間の親は -\fBclone\fP(2) や \fBunshare\fP(2) を使ってその名前空間を作成したプロセスの PID 名前空間である。 したがって、 PID -名前空間は木構造を構成し、 すべての名前空間は親を辿って行くと、最終的には root 名前空間に辿り着く。 - -プロセスは、所属する PID 名前空間の他のプロセスから見える。また、 root PID 名前空間に向かう直径の先祖の各 PID -名前空間のプロセスからも見える。 この場合、「見える」とは、 あるプロセスが、 他のプロセスがプロセス ID -を指定するシステムコールを使う際に操作の対象にできることを意味する。 逆に、子供 PID 名前空間のプロセスから親や先祖の名前空間のプロセスは見えない。 -あるプロセスは自分自身の PID 名前空間とその子孫の名前空間のプロセスだけが見える (例えば、\fBkill\fP(2) でシグナルを送信したり、 -\fBsetpriority\fP(2) で nice 値を設定したり、など)。 - -プロセスは、そのプロセスが見える PID 名前空間の階層の各層においてプロセス ID を一つ持ち、 直接の先祖の名前空間を辿ることで通って root -PID 名前空間に至ることができる。 プロセス ID に対して操作を行うシステムコールは、常に、呼び出し元プロセスの PID 名前空間で見えるプロセス -ID を使って操作を行う。 \fBgetpid\fP(2) の呼び出しでは、 常に、 プロセスが作成された名前空間に関連付けられた PID を返す。 - -PID 名前空間内のプロセスは名前空間の外部に親プロセスを持つことができる。 例えば、その名前空間の初期プロセス (すなわち PID 1 を持つ -\fBinit\fP(1) プロセス) の親プロセスは必然的に別の名前空間に属すことになる。 同様に、 あるプロセスが \fBsetns\fP(2) -を使って子プロセスを PID 名前空間に参加させた場合、 子プロセスは \fBsetns\fP(2) の呼び出し元とは異なる PID 名前空間に属す。 -子プロセスで \fBgetppid\fP(2) を呼び出すと 0 が返される。 - -.\" -.\" ============================================================ -.\" -プロセスは (\fBsetns\fP(2) を \fBCLONE_NEWPID\fP で使うなどで) 子供の PID 名前空間に自由に入ることができるが、 -逆の方向には移動できない。 つまり、 プロセスは先祖の名前空間 (親、親の親など) に入ることはできない。 PID 名前空間の変更は一方向の操作である。 -.SS "setns(2) と unshare(2) の動作" -PID 名前空間のファイルディスクリプターを指定して \fBsetns\fP(2) を呼び出したり、 \fBCLONE_NEWPID\fP フラグ付きで -\fBunshare\fP(2) を呼び出したりすると、 その結果作成された子プロセスは呼び出し元とは異なる PID 名前空間に置かれる。 -しかし、これらの呼び出しでは呼び出し元プロセスの PID 名前空間は変更されない。 なぜなら、PID 名前空間を変更してしまうと、 呼び出し元が認識する -(\fBgetpid\fP() が返す) 自分の PID が変わってしまい、 多くのアプリケーションやライブラリが正しく動作しなくなるからである。 - -別の言い方をすると、 あるプロセスがどの PID 名前空間に所属するかは、 そのプロセスが作成されたときに決定され、 それ以降は変更されることはない。 -いろいろあるが、プロセス間の親子関係には、PID 名前空間の親子関係がそのまま反映されるということだ。 -プロセスの親プロセスは、同じ名前空間にいるか、もしくは直接の親 PID 名前空間にいるかのいずれかである。 -.SS "CLONE_NEWPID の他の CLONE_* フラグとの互換性" -\fBCLONE_NEWPID\fP はいくつかの他の \fBCLONE_*\fP フラグと組み合わせることができない。 -.IP * 3 -\fBCLONE_THREAD\fP は、 プロセス内のスレッド間で互いにシグナルを送信できるようにするため、 同じ PID 名前空間に属している必要がある。 -同様に、 プロセス内の全スレッドが \fBproc\fP(5) ファイルシステムで見える必要がある。 -.IP * -\fBCLONE_SIGHAND\fP は、同じ PID 名前空間である必要がある。 さもなければ、 -シグナルが送信された際に、シグナルを送信したプロセスのプロセス ID を意味のある形でエンコードすることができない (\fBsigaction\fP(2) の -\fIsiginfo_t\fP 型の説明を参照)。 複数の PID 名前空間に属するプロセス間で一つのシグナルキューを共有すると、うまく動かなくなる。 -.IP * -\fBCLONE_VM\fP は、全スレッドが同じ PID 名前空間に属している必要がある。 なぜなら、 コアダンプの観点から見ると、 2 -つのプロセスが同じアドレス空間を共有していれば、 これらはスレッドであり、コアダンプが一緒に行われるからである。 コアダンプが書き込まれる際に、 -各スレッドの PID がコアダンプに書き込まれる。 もしプロセス ID のいくつかが親 PID 名前空間に属していたとすると、 プロセス ID -の書き込みは意味を持たなくなってしまう。 -.PP -まとめると、 \fBCLONE_THREAD\fP, \fBCLONE_SIGHAND\fP, \fBCLONE_VM\fP では技術的な要件として PID -名前空間が共有されている点がある。 (さらに \fBclone\fP(2) では \fBCLONE_THREAD\fP か \fBCLONE_SIGHAND\fP -が指定された際には \fBCLONE_VM\fP が指定されている必要がある点にも注意。) したがって、以下のような順序で呼び出しを行うと (エラー -\fBEINVAL\fP で) 失敗する。 - -.nf - unshare(CLONE_NEWPID); - clone(..., CLONE_VM, ...); /* Fails */ - - setns(fd, CLONE_NEWPID); - clone(..., CLONE_VM, ...); /* Fails */ - - clone(..., CLONE_VM, ...); - setns(fd, CLONE_NEWPID); /* Fails */ - - clone(..., CLONE_VM, ...); - unshare(CLONE_NEWPID); /* Fails */ -.fi -.\" -.\" ============================================================ -.\" -.SS "/proc と PID 名前空間" -\fI/proc\fP ファイルシステムは、\fI/proc\fP のマウントを行ったプロセスの PID 名前空間で見えるプロセスだけを表示する。 たとえ、 その -\fI/proc\fP ファイルシステムが他の名前空間のプロセスから参照されたとしても、そうである。 - -新しい PID 名前空間を作成した後、 子プロセスが、自身の root ディレクトリを変更し、新しい procfs インスタンスを \fI/proc\fP -にマウントするのは \fBps\fP(1) などのツールが正しく動作するためにも有用である。 \fBclone\fP(2) の \fIflags\fP 引き数に -\fBCLONE_NEWNS\fP も指定されて新しいマウント名前空間が同時に作成された場合は、 root ディレクトリを変更する必要はない。 新しい -procfs インスタンスを \fI/proc\fP にそのままマウントすることができる。 - -シェルから、コマンドで \fI/proc\fP のマウントを行うには次のようにする。 - - $ mount \-t proc proc /proc - -.\" -.\" ============================================================ -.\" -パス \fI/proc/self\fP に対して \fBreadlink\fP(2) を呼び出すと、 procfs のマウントを行ったプロセスの PID -名前空間におけるプロセス ID が得られる。 これは調査目的でプロセスが他の名前空間で自身の PID を知りたい場合などに役立つ。 -.SS その他 -プロセス ID が UNIX ドメインソケット経由で別の PID 名前空間のプロセスに渡される場合 (\fBunix\fP(7) の -\fBSCM_CREDENTIALS\fP の説明を参照)、 プロセス ID は受信プロセスの PID 名前空間での対応する PID 値に翻訳される。 -.SH 準拠 -名前空間は Linux 独自の機能である。 -.SH 例 -\fBuser_namespaces\fP(7) 参照。 -.SH 関連項目 -\fBclone\fP(2), \fBsetns\fP(2), \fBunshare\fP(2), \fBproc\fP(5), \fBcredentials\fP(7), -\fBcapabilities\fP(7), \fBuser_namespaces\fP(7), \fBswitch_root\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/pipe.7 b/manual/LDP_man-pages/draft/man7/pipe.7 deleted file mode 100644 index 22e29d74..00000000 --- a/manual/LDP_man-pages/draft/man7/pipe.7 +++ /dev/null @@ -1,122 +0,0 @@ -.\" Copyright (C) 2005 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved. -.\" Translated 2005-12-26, Akihiro MOTOKI -.\" -.TH PIPE 7 2014\-07\-08 Linux "Linux Programmer's Manual" -.SH 名前 -pipe \- パイプと FIFO の概要 -.SH 説明 -パイプと FIFO (名前付きパイプともいう) は、 単方向のプロセス間通信チャネルを提供する。 パイプには「読み出し側」と「書き込み側」がある。 -パイプの書き込み側で書き込まれたデータは、 パイプの読み出し側から読み出すことができる。 - -パイプを作成するには \fBpipe\fP(2) を使用する。 \fBpipe\fP(2) は新しいパイプを作成し、ファイルディスクリプターを二つ返す。 -ディスクリプターのうち、一方はパイプの読み出し側を、もう一方は 書き込み側を参照している。 パイプは関連するプロセス間の通信を作成するのに使用できる。 -例は \fBpipe\fP(2) を参照。 - -FIFO (First In First Out の省略) はファイルシステムでの名前を持ち、 \fBopen\fP(2) を使ってオープンできる -(\fBmkfifo\fP(3) を使って作成される)。 どんなプロセスでも、ファイルのアクセス許可があれば FIFO をオープンする ことができる。 -読み出し側をオープンするには \fBO_RDONLY\fP フラグを使用し、書き込み側をオープンするには \fBO_WRONLY\fP フラグを使用する。詳細は -\fBfifo\fP(7) を参照。 【注意】 FIFO はファイルシステム内のパス名を持つが、 FIFO -に対して入出力を行っても、(ファイルシステムが存在するデバイスが あったとしても) そのデバイスに対する操作は発生しない。 -.SS "パイプや FIFO に対する入出力" -パイプと FIFO の違いは作成やオープンの方法だけである。 これらの操作が完了した後は、パイプと FIFO に対する入出力は -全く同じ仕組みで行われる。 - -プロセスが空のパイプから読み出しを行おうとした場合、 \fBread\fP(2) はデータが読み出し可能になるまで停止する。 -プロセスがフル状態のパイプに書き込みを行おうとした場合、 \fBwrite\fP(2) は書き込みを完了するのに十分な量のパイプからの読み出しが -行われるまで停止する。 非停止 (nonblocking) I/O を使うこともできる。 非停止 I/O を使うには、 \fBfcntl\fP(2) -\fBF_SETFL\fP 操作を使って、 \fBO_NONBLOCK\fP オープンファイル状態フラグを有効にする。 - -パイプにより提供される通信チャネルは「バイトストリーム」であり、 メッセージ境界の概念はない。 - -パイプの書き込み側を参照しているファイルディスクリプターが すべてクローズされた後で、そのパイプから \fBread\fP(2) を行おうとした場合、 -end\-of\-file (ファイル末尾) が見える (\fBread\fP(2) は 0 を返す)。 -パイプの読み出し側を参照しているファイルディスクリプターが すべてクローズされた後で、 \fBwrite\fP(2) を行うと、呼び出し元プロセスに -\fBSIGPIPE\fP シグナルが送られる。 呼び出し元プロセスがこのシグナルを無視しているときには、 \fBwrite\fP(2) はエラー -\fBEPIPE\fP で失敗する。 \fBpipe\fP(2) と \fBfork\fP(2) を使用するアプリケーションでは、 \fBclose\fP(2) -を適切に使って不必要なファイルディスクリプターの複製を クローズすべきである。こうすることで、必要な時に確実に end\-of\-file や -\fBSIGPIPE\fP/\fBEPIPE\fP が配送されるようになる。 - -パイプには \fBlseek\fP(2) を行うことはできない。 -.SS パイプの容量 -パイプの容量には上限がある。 パイプがフルの場合、 \fBwrite\fP(2) は停止したり失敗したりする。どちらになるかは \fBO_NONBLOCK\fP -フラグがセットされているかどうかに依存する (下記参照)。 実装により、パイプの容量の上限は異なる。 -アプリケーションは特定の容量を前提にすべきではない。 書き込み側のプロセスが停止したままにならないよう、 -読み出し側のプロセスはデータが利用可能になったらできるだけすぐに 読み出しを行うように、アプリケーションを設計すべきである。 - -バージョン 2.6.11 より前の Linux ではパイプの容量はシステムのページサイズ と同じであった (例えば i386 では 4096 バイト)。 -Linux 2.6.11 以降では、パイプの容量は 65536 バイトである。 Linux 2.6.35 以降では、パイプの容量のデフォルト値は -65536 バイトだが、 パイプの容量を参照、設定を \fBfcntl\fP(2) の \fBF_GETPIPE_SZ\fP と \fBF_SETPIPE_SZ\fP -操作を使って行うことができる。 詳細は \fBfcntl\fP(2) 参照。 - -.SS PIPE_BUF -POSIX.1\-2001 では、 \fBPIPE_BUF\fP バイト以下の \fBwrite\fP(2) は atomic -に行われること、つまりパイプへの出力データの書き込みは 連続したシーケンスとして行われることを必須としている (MUST)。 \fBPIPE_BUF\fP -バイトより多くのデータを書き込み場合は atomic とはならない、 つまりパイプへの他のプロセスによるデータの書き込みが間に入る 可能性がある。 -POSIX.1\-2001 の仕様では、 \fBPIPE_BUF\fP は最小でも 512 バイトであることが要求されている (Linux では -\fBPIPE_BUF\fP は 4096 バイトである)。 正確な動作は、ファイルディスクリプターが nonblocking (\fBO_NONBLOCK\fP) -かどうか、パイプへの書き込みが複数から行われるかどうか、および 書き込みを行うバイト数 \fIn\fP により決定される。 -.TP -\fBO_NONBLOCK\fP 無効, \fIn\fP <= \fBPIPE_BUF\fP -\fIn\fP バイト全部の書き込みが atomic に行われる。 \fIn\fP バイト分をすぐに書き込む余地がない場合は \fBwrite\fP(2) は停止 -(block) することがある。 -.TP -\fBO_NONBLOCK\fP 有効, \fIn\fP <= \fBPIPE_BUF\fP -パイプに \fIn\fP バイトを書き込む余地がある場合は、 \fIn\fP バイト全部がすぐに書き込まれる。 余地がない場合は、 \fBwrite\fP(2) -は失敗し、 \fIerrno\fP に \fBEAGAIN\fP がセットされる。 -.TP -\fBO_NONBLOCK\fP 無効, \fIn\fP > \fBPIPE_BUF\fP -書き込みは atomic とはならない。 \fBwrite\fP(2) に渡されたデータの間に、他のプロセスにより \fBwrite\fP(2) -されたデータが入ることがある。 \fBwrite\fP(2) は \fIn\fP バイトの書き込みが完了するまで停止する。 -.TP -\fBO_NONBLOCK\fP 有効, \fIn\fP > \fBPIPE_BUF\fP -パイプがフルの場合、 \fBwrite\fP(2) は失敗し、 \fIerrno\fP に \fBEAGAIN\fP がセットされる。 それ以外の場合、1 バイト以上 -\fIn\fP バイト以下のデータが書き込まれる (つまり「一部分だけ書き込まれる」場合もあり得る)。 呼び出し元は \fBwrite\fP(2) -の返り値を参照し、実際に何バイト書き込まれたのかを確認すべきである。 また、書き込みに成功したデータも、他のプロセスが書き込んだデータが -間に入ることがある。 -.SS オープンファイル状態フラグ -オープンファイル状態フラグのうち、パイプや FIFO に対して意味を持つのは \fBO_NONBLOCK\fP と \fBO_ASYNC\fP だけである。 - -パイプの読み出し側に \fBO_ASYNC\fP フラグをセットすると、パイプに新たな入力があるとシグナル (デフォルトでは \fBSIGIO\fP) -が生成される (詳細は \fBfcntl\fP(2) を参照)。 Linux では、 パイプと FIFO に対する \fBO_ASYNC\fP はカーネル 2.6 -以降でのみサポートされている。 -.SS 移植に関する注意 -いくつかのシステム (Linux ではない) では、パイプは双方向である、 つまりパイプの両端間でデータを両方向に送信することができる。 -POSIX.1\-2001 では、パイプは一方向の通信だけに対応していればよい。 移植を考慮したアプリケーションでは、双方向パイプの仕組みを -前提にすべきではない。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/posixoptions.7 b/manual/LDP_man-pages/draft/man7/posixoptions.7 deleted file mode 100644 index ce0681ee..00000000 --- a/manual/LDP_man-pages/draft/man7/posixoptions.7 +++ /dev/null @@ -1,737 +0,0 @@ -.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl) -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2004 Yuichi SATO -.\" all rights reserved. -.\" Translated Thu Dec 16 03:35:45 JST 2004 -.\" by Yuichi SATO -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" -.TH POSIXOPTIONS 7 2007\-12\-21 "" "Linux Programmer's Manual" -.SH 名前 -posixoptions \- POSIX 標準の選択可能な部分 -.SH 説明 -POSIX 標準 (以下の情報は POSIX.1\-2001 の抜粋) は 互換システムの動作とインターフェースのセットを記述している。 -しかし、多くのインターフェースは選択可能であり、 コンパイル時にインターフェースが使用可能かをテストする機能テストマクロと、 実行時にテストする関数 -\fBsysconf\fP(3), \fBfpathconf\fP(3), \fBpathconf\fP(3), \fBconfstr\fP(3) がある。 -シェルスクリプトでは \fBgetconf\fP(1) を使うことができる。 詳細は \fBsysconf\fP(3) を参照すること。 -.LP -POSIX 省略形の名前・オプション・オプションを調べるための \fBsysconf\fP(3) 引き数の名前・(可能ならば) 非常に短い説明を記述する。 -より正確な詳細は POSIX 標準自身に書かれている。 POSIX 標準は今日では Web で自由にアクセスできる。 -.SS "ADV \- _POSIX_ADVISORY_INFO \- _SC_ADVISORY_INFO" -以下のアドバイスの関数が存在する。 -.br -.nf -.in +4 - -\fIposix_fadvise\fP(), -\fIposix_fallocate\fP(), -\fIposix_memalign\fP(), -\fIposix_madvise\fP(). -.br -.in -4 -.fi -.SS "AIO \- _POSIX_ASYNCHRONOUS_IO \- _SC_ASYNCHRONOUS_IO" -ヘッダー \fI\fP が存在する。 以下の関数が存在する。 -.br -.nf -.in +4 - -\fIaio_cancel\fP(), -\fIaio_error\fP(), -\fIaio_fsync\fP(), -\fIaio_read\fP(), -\fIaio_return\fP(), -\fIaio_suspend\fP(), -\fIaio_write\fP(), -\fIlio_listio\fP(). -.br -.in -4 -.fi -.SS "BAR \- _POSIX_BARRIERS \- _SC_BARRIERS" -このオプションは \fB_POSIX_THREADS\fP と \fB_POSIX_THREAD_SAFE_FUNCTIONS\fP -オプションを暗黙の内に指定する。 以下の関数が存在する。 -.br -.nf -.in +4 - -\fIpthread_barrier_destroy\fP(), -\fIpthread_barrier_init\fP(), -\fIpthread_barrier_wait\fP(), -\fIpthread_barrierattr_destroy\fP(), -\fIpthread_barrierattr_init\fP(). -.in -4 -.br -.fi -.\" .SS "BE" -.\" Batch environment. -.\" .SS "CD" -.\" C development. -.SS "\-\-\- \- POSIX_CHOWN_RESTRICTED" -.\" What about lchown() ? -このオプションが有効な場合 (POSIX.1\-2001 では常に有効)、 root だけがファイル所有者の変更を許され、 root -以外はファイルのグループを 自分が所属するグループのいずれか 1 つにだけ設定することができる。 関数 \fIchown\fP(), \fIfchown\fP() -に影響する。 -.SS "CS \- _POSIX_CLOCK_SELECTION \- _SC_CLOCK_SELECTION" -このオプションは \fB_POSIX_TIMERS\fP オプションを暗黙の内に指定する。 以下の関数が存在する。 -.br -.nf -.in +4 - -\fIpthread_condattr_getclock\fP(), -\fIpthread_condattr_setclock\fP(), -\fIclock_nanosleep\fP(). -.in -4 - -.fi -\fBCLOCK_REALTIME\fP が関数 \fIclock_settime\fP() -で変更された場合、絶対時間に関係する全てのタイマーのセットに影響する。 -.SS "CPT \- _POSIX_CPUTIME \- _SC_CPUTIME" -.\" .SS "FD" -.\" Fortran development -.\" .SS "FR" -.\" Fortran runtime -clockID CLOCK_PROCESS_CPUTIME_ID がサポートされている。 このクロックの初期値は、各プロセス毎に 0 となる。 -このオプションは \fB_POSIX_TIMERS\fP オプションを暗黙の内に指定する。 関数 \fIclock_getcpuclockid\fP() -が存在する。 -.SS "\-\-\- \- _POSIX_FILE_LOCKING \- _SC_FILE_LOCKING" -このオプションは削除された。XPG6 最終版にはない。 -.SS "FSC \- _POSIX_FSYNC \- _SC_FSYNC " -関数 \fIfsync\fP() が存在する。 -.SS "IP6 \- _POSIX_IPV6 \- _SC_IPV6" -Internet Protocol Version 6 がサポートされている。 -.SS "\-\-\- \- _POSIX_JOB_CONTROL \- _SC_JOB_CONTROL" -このオプションが有効な場合 (POSIX.1\-2001 では常に有効)、 システムは POSIX 方式のジョブ制御を実装しており、 -以下の関数が存在する。 -.br -.nf -.in +4 - -\fIsetpgid\fP(), -\fItcdrain\fP(), -\fItcflush\fP(), -\fItcgetpgrp\fP(), -\fItcsendbreak\fP(), -\fItcsetattr\fP(), -\fItcsetpgrp\fP(). -.in -4 -.fi -.SS "MF \- _POSIX_MAPPED_FILES \- _SC_MAPPED_FILES" -共有メモリーがサポートされている。 インクルードファイル \fI\fP が存在する。 次の関数が存在する。 -\fImmap\fP(), \fImsync\fP(), \fImunmap\fP(). -.SS "ML \- _POSIX_MEMLOCK \- _SC_MEMLOCK" -共有メモリーがコア内にロックできる。 次の関数が存在する。 \fImlockall\fP(), \fImunlockall\fP(). -.SS "MR/MLR \- _POSIX_MEMLOCK_RANGE \- _SC_MEMLOCK_RANGE" -より詳細に、範囲をコア内にロックできる。 次の関数が存在する。 \fImlock\fP(), \fImunlock\fP(). -.SS "MPR \- _POSIX_MEMORY_PROTECTION \- _SC_MEMORY_PROTECTION" -関数 \fImprotect\fP() が存在する。 -.SS "MSG \- _POSIX_MESSAGE_PASSING \- _SC_MESSAGE_PASSING" -インクルードファイル \fI\fP が存在する。 以下の関数が存在する。 -.br -.nf -.in +4 - -\fImq_close\fP(), -\fImq_getattr\fP(), -\fImq_notify\fP(), -\fImq_open\fP(), -\fImq_receive\fP(), -\fImq_send\fP(), -\fImq_setattr\fP(), -\fImq_unlink\fP(). -.br -.in -4 -.fi -.SS "MON \- _POSIX_MONOTONIC_CLOCK \- _SC_MONOTONIC_CLOCK" -\fBCLOCK_MONOTONIC\fP がサポートされている。 このオプションは \fB_POSIX_TIMERS\fP オプションを暗黙の内に指定する。 -影響を受ける関数は以下の通り。 -.nf -.in +4 - -\fIaio_suspend\fP(), -\fIclock_getres\fP(), -\fIclock_gettime\fP(), -\fIclock_settime\fP(), -\fItimer_create\fP(). -.in -4 -.fi -.SS "\-\-\- \- _POSIX_MULTI_PROCESS \- _SC_MULTI_PROCESS" -.\" .SS "MX" -.\" IEC 60559 Floating-Point Option. -このオプションは削除された。XPG6 最終版にはない。 -.SS "\-\-\- \- _POSIX_NO_TRUNC" -このオプションが有効な場合 (POSIX.1\-2001 では常に有効)、 \fBNAME_MAX\fP -より長いパス名の構成要素は切り詰められないが、エラーになる。 この設定は構成要素のパス接頭辞に依存する場合もある。 -.SS "PIO \- _POSIX_PRIORITIZED_IO \- _SC_PRIORITIZED_IO" -このオプションは非同期 I/O の優先度が指定できることを表す。 これは以下の関数に影響する。 -.br -.nf -.in +4 - -\fIaio_read\fP(), -\fIaio_write\fP(). -.in -4 -.fi -.SS "PS \- _POSIX_PRIORITY_SCHEDULING \- _SC_PRIORITY_SCHEDULING" -インクルードファイル \fI\fP が存在する。 以下の関数が存在する。 -.br -.nf -.in +4 - -\fIsched_get_priority_max\fP(), -\fIsched_get_priority_min\fP(), -\fIsched_getparam\fP(), -\fIsched_getscheduler\fP(), -\fIsched_rr_get_interval\fP(), -\fIsched_setparam\fP(), -\fIsched_setscheduler\fP(), -\fIsched_yield\fP(). -.in -4 - -.fi -\fB_POSIX_SPAWN\fP も有効な場合は、以下の関数が存在する。 -.br -.nf -.in +4 - -\fIposix_spawnattr_getschedparam\fP(), -\fIposix_spawnattr_getschedpolicy\fP(), -\fIposix_spawnattr_setschedparam\fP(), -\fIposix_spawnattr_setschedpolicy\fP(). -.in -4 -.fi -.SS "RS \- _POSIX_RAW_SOCKETS" -raw ソケットがサポートされている。 次の関数が影響を受ける。 \fIgetsockopt\fP(), \fIsetsockopt\fP(). -.SS "\-\-\- \- _POSIX_READER_WRITER_LOCKS \- _SC_READER_WRITER_LOCKS" -このオプションは \fB_POSIX_THREADS\fP オプションを暗黙の内に指定する。 逆に POSIX.1\-2001 では -\fB_POSIX_THREADS\fP オプションはこのオプションを暗黙の内に指定する。 -.nf -以下の関数が存在する。 -.in +4 - -\fIpthread_rwlock_destroy\fP(), -\fIpthread_rwlock_init\fP(), -\fIpthread_rwlock_rdlock\fP(), -\fIpthread_rwlock_tryrdlock\fP(), -\fIpthread_rwlock_trywrlock\fP(), -\fIpthread_rwlock_unlock\fP(), -\fIpthread_rwlock_wrlock\fP(), -\fIpthread_rwlockattr_destroy\fP(), -\fIpthread_rwlockattr_init\fP(). -.in -4 -.fi -.SS "RTS \- _POSIX_REALTIME_SIGNALS \- _SC_REALTIME_SIGNALS" -リアルタイムシグナルがサポートされている。 以下の関数が存在する。 -.br -.nf -.in +4 - -\fIsigqueue\fP(), -\fIsigtimedwait\fP(), -\fIsigwaitinfo\fP(). -.br -.in -4 -.fi -.SS "\-\-\- \- _POSIX_REGEXP \- _SC_REGEXP" -このオプションが有効な場合 (POSIX.1\-2001 では常に有効)、 POSIX 正規表現がサポートされ、以下の関数が存在する。 -.br -.nf -.in +4 - -\fIregcomp\fP(), -\fIregerror\fP(), -\fIregexec\fP(), -\fIregfree\fP(). -.br -.in -4 -.fi -.SS "\-\-\- \- _POSIX_SAVED_IDS \- _SC_SAVED_IDS" -このオプションが有効な場合 (POSIX.1\-2001 では常に有効)、 プロセスは保存 (saved) set\-user\-ID と保存 -set\-group\-ID を持つ。 影響を受ける関数は以下の通り。 -.br -.nf -.in +4 - -\fIexec\fP(), -\fIkill\fP(), -\fIseteuid\fP(), -\fIsetegid\fP(), -\fIsetgid\fP(), -\fIsetuid\fP(). -.br -.in -4 -.fi -.\" .SS "SD" -.\" Software development -.SS "SEM \- _POSIX_SEMAPHORES \- _SC_SEMAPHORES" -インクルードファイル \fI\fP が存在する。 以下の関数が存在する。 -.br -.nf -.in +4 - -\fIsem_close\fP(), -\fIsem_destroy\fP(), -\fIsem_getvalue\fP(), -\fIsem_init\fP(), -\fIsem_open\fP(), -\fIsem_post\fP(), -\fIsem_trywait\fP(), -\fIsem_unlink\fP(), -\fIsem_wait\fP(). -.br -.in -4 -.fi -.SS "SHM \- _POSIX_SHARED_MEMORY_OBJECTS \- _SC_SHARED_MEMORY_OBJECTS" -以下の関数が存在する。 -.br -.nf -.in +4 - -\fImmap\fP(), -\fImunmap\fP(), -\fIshm_open\fP(), -\fIshm_unlink\fP(). -.br -.in -4 -.fi -.SS "\-\-\- \- _POSIX_SHELL \- _SC_SHELL" -このオプションが有効な場合 (POSIX.1\-2001 では常に有効)、関数 \fIsystem\fP() が存在する。 -.SS "SPN \- _POSIX_SPAWN \- _SC_SPAWN" -このオプションは、例えば MMU が存在しないなどの理由によって、 \fIfork\fP() を使用することが難しいか不可能という状況で、 -プロセス生成をサポートすることを表す。 \fB_POSIX_SPAWN\fP が有効な場合、インクルードファイル \fI\fP -と、以下の関数が存在する。 -.br -.nf -.in +4 - -\fIposix_spawn\fP(), -\fIposix_spawn_file_actions_addclose\fP(), -\fIposix_spawn_file_actions_adddup2\fP(), -\fIposix_spawn_file_actions_addopen\fP(), -\fIposix_spawn_file_actions_destroy\fP(), -\fIposix_spawn_file_actions_init\fP(), -\fIposix_spawnattr_destroy\fP(), -\fIposix_spawnattr_getsigdefault\fP(), -\fIposix_spawnattr_getflags\fP(), -\fIposix_spawnattr_getpgroup\fP(), -\fIposix_spawnattr_getsigmask\fP(), -\fIposix_spawnattr_init\fP(), -\fIposix_spawnattr_setsigdefault\fP(), -\fIposix_spawnattr_setflags\fP(), -\fIposix_spawnattr_setpgroup\fP(), -\fIposix_spawnattr_setsigmask\fP(), -\fIposix_spawnp\fP(). -.in -4 -.br -.fi -\fB_POSIX_PRIORITY_SCHEDULING\fP も有効な場合、以下の関数が存在する。 -.br -.nf -.in +4 - -\fIposix_spawnattr_getschedparam\fP(), -\fIposix_spawnattr_getschedpolicy\fP(), -\fIposix_spawnattr_setschedparam\fP(), -\fIposix_spawnattr_setschedpolicy\fP(). -.in -4 -.fi -.SS "SPI \- _POSIX_SPIN_LOCKS \- _SC_SPIN_LOCKS" -このオプションは \fB_POSIX_THREADS\fP と \fB_POSIX_THREAD_SAFE_FUNCTIONS\fP -オプションを暗黙の内に指定する。 以下の関数が存在する。 -.br -.nf -.in +4 - -\fIpthread_spin_destroy\fP(), -\fIpthread_spin_init\fP(), -\fIpthread_spin_lock\fP(), -\fIpthread_spin_trylock\fP(), -\fIpthread_spin_unlock\fP(). -.in -4 -.br -.fi -.SS "SS \- _POSIX_SPORADIC_SERVER \- _SC_SPORADIC_SERVER" -スケジューリングポリシー \fBSCHED_SPORADIC\fP がサポートされている。 このオプションは -\fB_POSIX_PRIORITY_SCHEDULING\fP オプションを暗黙の内に指定する。 影響を受ける関数は以下の通り。 -.br -.nf -.in +4 - -\fIsched_setparam\fP(), -\fIsched_setscheduler\fP(). -.in -4 -.br -.fi -.SS "SIO \- _POSIX_SYNCHRONIZED_IO \- _SC_SYNCHRONIZED_IO" -影響を受ける関数は以下の通り。 \fIopen\fP(), \fImsync\fP(), \fIfsync\fP(), \fIfdatasync\fP(). -.SS "TSA \- _POSIX_THREAD_ATTR_STACKADDR \- _SC_THREAD_ATTR_STACKADDR" -影響を受ける関数は以下の通り。 -.br -.nf -.in +4 - -\fIpthread_attr_getstack\fP(), -\fIpthread_attr_getstackaddr\fP(), -\fIpthread_attr_setstack\fP(), -\fIpthread_attr_setstackaddr\fP(). -.in -4 -.br -.fi -.SS "TSS \- _POSIX_THREAD_ATTR_STACKSIZE \- _SC_THREAD_ATTR_STACKSIZE" -影響を受ける関数は以下の通り。 -.br -.nf -.in +4 - -\fIpthread_attr_getstack\fP(), -\fIpthread_attr_getstacksize\fP(), -\fIpthread_attr_setstack\fP(), -\fIpthread_attr_setstacksize\fP(). -.in -4 -.br -.fi -.SS "TCT \- _POSIX_THREAD_CPUTIME \- _SC_THREAD_CPUTIME" -clockID CLOCK_THREAD_CPUTIME_ID がサポートされている。 このオプションは \fB_POSIX_TIMERS\fP -オプションを暗黙の内に指定する。 影響を受ける関数は以下の通り。 -.br -.nf -.in +4 - -\fIpthread_getcpuclockid\fP(), -\fIclock_getres\fP(), -\fIclock_gettime\fP(), -\fIclock_settime\fP(), -\fItimer_create\fP(). -.in -4 -.br -.fi -.SS "TPI \- _POSIX_THREAD_PRIO_INHERIT \- _SC_THREAD_PRIO_INHERIT" -影響を受ける関数は以下の通り。 -.br -.nf -.in +4 - -\fIpthread_mutexattr_getprotocol\fP(), -\fIpthread_mutexattr_setprotocol\fP(). -.in -4 -.br -.fi -.SS "TPP \- _POSIX_THREAD_PRIO_PROTECT \- _SC_THREAD_PRIO_PROTECT" -影響を受ける関数は以下の通り。 -.br -.nf -.in +4 - -\fIpthread_mutex_getprioceiling\fP(), -\fIpthread_mutex_setprioceiling\fP(), -\fIpthread_mutexattr_getprioceiling\fP(), -\fIpthread_mutexattr_getprotocol\fP(), -\fIpthread_mutexattr_setprioceiling\fP(), -\fIpthread_mutexattr_setprotocol\fP(). -.in -4 -.br -.fi -.SS "TPS \- _POSIX_THREAD_PRIORITY_SCHEDULING \- _SC_THREAD_PRIORITY_SCHEDULING" -このオプションが有効な場合、1 つのプロセス内の個々のスレッドを 個々の優先度または個々のスケジューラ (またはその両方) で実行できる。 -影響を受ける関数は以下の通り。 -.br -.nf -.in +4 - -\fIpthread_attr_getinheritsched\fP(), -\fIpthread_attr_getschedpolicy\fP(), -\fIpthread_attr_getscope\fP(), -\fIpthread_attr_setinheritsched\fP(), -\fIpthread_attr_setschedpolicy\fP(), -\fIpthread_attr_setscope\fP(), -\fIpthread_getschedparam\fP(), -\fIpthread_setschedparam\fP(), -\fIpthread_setschedprio\fP(). -.in -4 -.br -.fi -.SS "TSH \- _POSIX_THREAD_PROCESS_SHARED \- _SC_THREAD_PROCESS_SHARED" -影響を受ける関数は以下の通り。 -.br -.nf -.in +4 - -\fIpthread_barrierattr_getpshared\fP(), -\fIpthread_barrierattr_setpshared\fP(), -\fIpthread_condattr_getpshared\fP(), -\fIpthread_condattr_setpshared\fP(), -\fIpthread_mutexattr_getpshared\fP(), -\fIpthread_mutexattr_setpshared\fP(), -\fIpthread_rwlockattr_getpshared\fP(), -\fIpthread_rwlockattr_setpshared\fP(). -.in -4 -.br -.fi -.SS "TSF \- _POSIX_THREAD_SAFE_FUNCTIONS \- _SC_THREAD_SAFE_FUNCTIONS" -影響を受ける関数は以下の通り。 -.br -.nf -.in +4 - -\fIreaddir_r\fP(), -\fIgetgrgid_r\fP(), -\fIgetgrnam_r\fP(), -\fIgetpwnam_r\fP(), -\fIgetpwuid_r\fP(), -\fIflockfile\fP(), -\fIftrylockfile\fP(), -\fIfunlockfile\fP(), -\fIgetc_unlocked\fP(), -\fIgetchar_unlocked\fP(), -\fIputc_unlocked\fP(), -\fIputchar_unlocked\fP(), -\fIrand_r\fP(), -\fIstrerror_r\fP(), -\fIstrtok_r\fP(), -\fIasctime_r\fP(), -\fIctime_r\fP(), -\fIgmtime_r\fP(), -\fIlocaltime_r\fP(). -.in -4 -.br -.fi -.SS "TSP \- _POSIX_THREAD_SPORADIC_SERVER \- _SC_THREAD_SPORADIC_SERVER" -このオプションは \fB_POSIX_THREAD_PRIORITY_SCHEDULING\fP オプションを暗黙の内に指定する。 -影響を受ける関数は以下の通り。 -.br -.nf -.in +4 - -\fIsched_getparam\fP(), -\fIsched_setparam\fP(), -\fIsched_setscheduler\fP(). -.in -4 -.br -.fi -.SS "THR \- _POSIX_THREADS \- _SC_THREADS" -POSIX スレッドの基本サポートが使用可能である。 以下の関数が存在する。 -.br -.nf -.in +4 - -\fIpthread_atfork\fP(), -\fIpthread_attr_destroy\fP(), -\fIpthread_attr_getdetachstate\fP(), -\fIpthread_attr_getschedparam\fP(), -\fIpthread_attr_init\fP(), -\fIpthread_attr_setdetachstate\fP(), -\fIpthread_attr_setschedparam\fP(), -\fIpthread_cancel\fP(), -\fIpthread_cleanup_push\fP(), -\fIpthread_cleanup_pop\fP(), -\fIpthread_cond_broadcast\fP(), -\fIpthread_cond_destroy\fP(), -\fIpthread_cond_init\fP(), -\fIpthread_cond_signal\fP(), -\fIpthread_cond_timedwait\fP(), -\fIpthread_cond_wait\fP(), -\fIpthread_condattr_destroy\fP(), -\fIpthread_condattr_init\fP(), -\fIpthread_create\fP(), -\fIpthread_detach\fP(), -\fIpthread_equal\fP(), -\fIpthread_exit\fP(), -\fIpthread_getspecific\fP(), -\fIpthread_join\fP(), -\fIpthread_key_create\fP(), -\fIpthread_key_delete\fP(), -\fIpthread_mutex_destroy\fP(), -\fIpthread_mutex_init\fP(), -\fIpthread_mutex_lock\fP(), -\fIpthread_mutex_trylock\fP(), -\fIpthread_mutex_unlock\fP(), -\fIpthread_mutexattr_destroy\fP(), -\fIpthread_mutexattr_init\fP(), -\fIpthread_once\fP(), -\fIpthread_rwlock_destroy\fP(), -\fIpthread_rwlock_init\fP(), -\fIpthread_rwlock_rdlock\fP(), -\fIpthread_rwlock_tryrdlock\fP(), -\fIpthread_rwlock_trywrlock\fP(), -\fIpthread_rwlock_unlock\fP(), -\fIpthread_rwlock_wrlock\fP(), -\fIpthread_rwlockattr_destroy\fP(), -\fIpthread_rwlockattr_init\fP(), -\fIpthread_self\fP(), -\fIpthread_setcancelstate\fP(), -\fIpthread_setcanceltype\fP(), -\fIpthread_setspecific\fP(), -\fIpthread_testcancel\fP(). -.in -4 -.br -.fi -.SS "TMO \- _POSIX_TIMEOUTS \- _SC_TIMEOUTS" -以下の関数が存在する。 -.br -.nf -.in +4 - -\fImq_timedreceive\fP(), -\fImq_timedsend\fP(), -\fIpthread_mutex_timedlock\fP(), -\fIpthread_rwlock_timedrdlock\fP(), -\fIpthread_rwlock_timedwrlock\fP(), -\fIsem_timedwait\fP(), -\fIposix_trace_timedgetnext_event\fP(). -.in -4 -.br -.fi -.SS "TMR \- _POSIX_TIMERS \- _SC_TIMERS" -以下の関数が存在する。 -.br -.nf -.in +4 - -\fIclock_getres\fP(), -\fIclock_gettime\fP(), -\fIclock_settime\fP(), -\fInanosleep\fP(), -\fItimer_create\fP(), -\fItimer_delete\fP(), -\fItimer_gettime\fP(), -\fItimer_getoverrun\fP(), -\fItimer_settime\fP(). -.in -4 -.br -.fi -.SS "TRC \- _POSIX_TRACE \- _SC_TRACE" -POSIX トレーシング (tracing) が使用可能である。 以下の関数が存在する。 -.br -.nf -.in +4 - -\fIposix_trace_attr_destroy\fP(), -\fIposix_trace_attr_getclockres\fP(), -\fIposix_trace_attr_getcreatetime\fP(), -\fIposix_trace_attr_getgenversion\fP(), -\fIposix_trace_attr_getmaxdatasize\fP(), -\fIposix_trace_attr_getmaxsystemeventsize\fP(), -\fIposix_trace_attr_getmaxusereventsize\fP(), -\fIposix_trace_attr_getname\fP(), -\fIposix_trace_attr_getstreamfullpolicy\fP(), -\fIposix_trace_attr_getstreamsize\fP(), -\fIposix_trace_attr_init\fP(), -\fIposix_trace_attr_setmaxdatasize\fP(), -\fIposix_trace_attr_setname\fP(), -\fIposix_trace_attr_setstreamsize\fP(), -\fIposix_trace_attr_setstreamfullpolicy\fP(), -\fIposix_trace_clear\fP(), -\fIposix_trace_create\fP(), -\fIposix_trace_event\fP(), -\fIposix_trace_eventid_equal\fP(), -\fIposix_trace_eventid_get_name\fP(), -\fIposix_trace_eventid_open\fP(), -\fIposix_trace_eventtypelist_getnext_id\fP(), -\fIposix_trace_eventtypelist_rewind\fP(), -\fIposix_trace_flush\fP(), -\fIposix_trace_get_attr\fP(), -\fIposix_trace_get_status\fP(), -\fIposix_trace_getnext_event\fP(), -\fIposix_trace_shutdown\fP(), -\fIposix_trace_start\fP(), -\fIposix_trace_stop\fP(), -\fIposix_trace_trygetnext_event\fP(). -.in -4 -.br -.fi -.SS "TEF \- _POSIX_TRACE_EVENT_FILTER \- _SC_TRACE_EVENT_FILTER" -このオプションは \fB_POSIX_TRACE\fP オプションを暗黙の内に指定する。 以下の関数が存在する。 -.br -.nf -.in +4 - -\fIposix_trace_eventset_add\fP(), -\fIposix_trace_eventset_del\fP(), -\fIposix_trace_eventset_empty\fP(), -\fIposix_trace_eventset_fill\fP(), -\fIposix_trace_eventset_ismember\fP(), -\fIposix_trace_get_filter\fP(), -\fIposix_trace_set_filter\fP(), -\fIposix_trace_trid_eventid_open\fP(). -.in -4 -.br -.fi -.SS "TRI \- _POSIX_TRACE_INHERIT \- _SC_TRACE_INHERIT" -トレースされているプロセスの子プロセスのトレースをサポートする。 このオプションは \fB_POSIX_TRACE\fP オプションを暗黙の内に指定する。 -以下の関数が存在する。 -.br -.nf -.in +4 - -\fIposix_trace_attr_getinherited\fP(), -\fIposix_trace_attr_setinherited\fP(). -.in -4 -.br -.fi -.SS "TRL \- _POSIX_TRACE_LOG \- _SC_TRACE_LOG" -このオプションは \fB_POSIX_TRACE\fP オプションを暗黙の内に指定する。 以下の関数が存在する。 -.br -.nf -.in +4 - -\fIposix_trace_attr_getlogfullpolicy\fP(), -\fIposix_trace_attr_getlogsize\fP(), -\fIposix_trace_attr_setlogfullpolicy\fP(), -\fIposix_trace_attr_setlogsize\fP(), -\fIposix_trace_close\fP(), -\fIposix_trace_create_withlog\fP(), -\fIposix_trace_open\fP(), -\fIposix_trace_rewind\fP(). -.in -4 -.br -.fi -.SS "TYM \- _POSIX_TYPED_MEMORY_OBJECTS \- _SC_TYPED_MEMORY_OBJECT" -以下の関数が存在する。 -.br -.nf -.in +4 - -\fIposix_mem_offset\fP(), -\fIposix_typed_mem_get_info\fP(), -\fIposix_typed_mem_open\fP(). -.in -4 -.br -.fi -.SS "\-\-\- \- _POSIX_VDISABLE" -常に存在する (たぶん 0 である)。 変更可能な特殊制御文字を設定する値。 これにより特殊制御文字が無効であることを表す。 -.SH "XOPEN 拡張" -.\" To be described. -\fB_XOPEN_CRYPT\fP, \fB_XOPEN_LEGACY\fP, \fB_XOPEN_REALTIME\fP, -\fB_XOPEN_REALTIME_THREADS\fP, \fB_XOPEN_UNIX\fP. -.SH 関連項目 -\fBsysconf\fP(3), \fBstandards\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/pthreads.7 b/manual/LDP_man-pages/draft/man7/pthreads.7 index b9d25fa1..29b098a7 100644 --- a/manual/LDP_man-pages/draft/man7/pthreads.7 +++ b/manual/LDP_man-pages/draft/man7/pthreads.7 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (c) 2005 by Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) @@ -38,14 +37,14 @@ .\" Updated 2008-11-09, Akihiro MOTOKI, LDP v3.13 .\" Updated 2008-12-26, Akihiro MOTOKI, LDP v3.14 .\" -.TH PTHREADS 7 2014\-05\-21 Linux "Linux Programmer's Manual" +.TH PTHREADS 7 2020\-12\-21 Linux "Linux Programmer's Manual" .SH 名前 pthreads \- POSIX スレッド .SH 説明 POSIX.1 は、一般に POSIX スレッドや Pthreads として知られる スレッドプログラミングのインターフェース群 (関数、ヘッダーファイル) を規定している。一つのプロセスは複数のスレッドを持つことができ、 全てのスレッドは同じプログラムを実行する。 これらのスレッドは同じ大域メモリー (データとヒープ領域) を共有するが、 各スレッドは自分専用のスタック (自動変数) を持つ。 - +.PP POSIX.1 はスレッド間でどのような属性を共有するかについても定めている (つまり、これらの属性はスレッド単位ではなくプロセス全体で共通である): .IP \- 3 プロセス ID @@ -94,27 +93,39 @@ CPU 時間 (\fBtimes\fP(2)) とリソース (\fBgetrusage\fP(2)) の消費状 .IP \- 3 CPU affinity (親和度) (\fBsched_setaffinity\fP(2)) .SS "pthreads 関数の返り値" -ほとんどの pthreads 関数は成功すると 0 を返し、 失敗した場合エラー番号を返す。 pthreads 関数は \fIerrno\fP -をセットしない点に注意すること。 POSIX.1\-2001 では、 エラーを返す可能性のある pthreads 関数がエラー \fBEINTR\fP -で失敗することは決してないと規定している。 +Most pthreads functions return 0 on success, and an error number on +failure. The error numbers that can be returned have the same meaning as +the error numbers returned in \fIerrno\fP by conventional system calls and C +library functions. Note that the pthreads functions do not set \fIerrno\fP. +For each of the pthreads functions that can return an error, POSIX.1\-2001 +specifies that the function can never fail with the error \fBEINTR\fP. .SS "スレッド ID" -あるプロセス内の各スレッドは (\fIpthread_t\fP 型の) 一意なスレッド識別子を持つ。 この識別子は、 \fBpthread_create\fP(3) -の呼び出し元に返される。また、スレッドは自身のスレッド識別子を \fBpthread_self\fP(3) を使って取得できる。 スレッド ID -の一意性が保証されるのは、一つのプロセス内においてのみである。 終了したスレッドが join された後では、スレッド ID は再利用される可能性がある。 -スレッド ID を引き数に取る全てのスレッド関数において、 その ID は呼び出し元と同じプロセス内の一つのスレッドを参照する。 +Each of the threads in a process has a unique thread identifier (stored in +the type \fIpthread_t\fP). This identifier is returned to the caller of +\fBpthread_create\fP(3), and a thread can obtain its own thread identifier +using \fBpthread_self\fP(3). +.PP +Thread IDs are guaranteed to be unique only within a process. (In all +pthreads functions that accept a thread ID as an argument, that ID by +definition refers to a thread in the same process as the caller.) +.PP +The system may reuse a thread ID after a terminated thread has been joined, +or a detached thread has terminated. POSIX says: "If an application +attempts to use a thread ID whose lifetime has ended, the behavior is +undefined." .SS スレッドセーフな関数 スレッドセーフな関数は、複数のスレッドから同時に呼び出しても安全な (すなわち、同時に呼び出されたかに関わらず、同じ結果を返す) 関数のことである。 - +.PP POSIX.1\-2001 と POSIX.1\-2008では、一部の例外を除き、 標準で規定されている全ての関数がスレッドセーフであることを要求している。 以下の関数が例外である。 +.PP .in +4n -.nf - +.EX asctime() basename() catgets() crypt() -ctermid() (NULL でない引き数を渡された場合) +ctermid() if passed a non\-NULL argument ctime() dbm_clearerr() dbm_close() @@ -128,14 +139,14 @@ dbm_store() dirname() dlerror() drand48() -ecvt() [POSIX.1\-2001 のみ (POSIX.1\-2008 で削除された)] +ecvt() [POSIX.1\-2001 only (function removed in POSIX.1\-2008)] encrypt() endgrent() endpwent() endutxent() -fcvt() [POSIX.1\-2001 のみ (POSIX.1\-2008 で削除された)] +fcvt() [POSIX.1\-2001 only (function removed in POSIX.1\-2008)] ftw() -gcvt() [POSIX.1\-2001 のみ (POSIX.1\-2008 で削除された)] +gcvt() [POSIX.1\-2001 only (function removed in POSIX.1\-2008)] getc_unlocked() getchar_unlocked() getdate() @@ -143,8 +154,10 @@ getenv() getgrent() getgrgid() getgrnam() -gethostbyaddr() [POSIX.1\-2001 のみ (POSIX.1\-2008 で削除された)] -gethostbyname() [POSIX.1\-2001 のみ (POSIX.1\-2008 で削除された)] +gethostbyaddr() [POSIX.1\-2001 only (function removed in + POSIX.1\-2008)] +gethostbyname() [POSIX.1\-2001 only (function removed in + POSIX.1\-2008)] gethostent() getlogin() getnetbyaddr() @@ -191,46 +204,46 @@ setkey() setpwent() setutxent() strerror() -strsignal() [POSIX.1\-2008 で追加された] +strsignal() [Added in POSIX.1\-2008] strtok() -system() [POSIX.1\-2008 で追加された] -tmpnam() (NULL でない引き数を渡された場合) +system() [Added in POSIX.1\-2008] +tmpnam() if passed a non\-NULL argument ttyname() unsetenv() -wcrtomb() (最後の引き数が NULL の場合) -wcsrtombs() (最後の引き数が NULL の場合) +wcrtomb() if its final argument is NULL +wcsrtombs() if its final argument is NULL wcstombs() wctomb() -.fi +.EE .in .SS "async\-cancel\-safe 関数" async\-cancel\-safe 関数は、 非同期キャンセル機能が有効になっているアプリケーションで 安全に呼び出すことができる関数のことである (\fBpthread_setcancelstate\fP(3) を参照)。 - +.PP 以下の関数だけが、POSIX.1\-2001 と POSIX.1\-2008 で async\-cancel\-safe で なければならないとされている。 +.PP .in +4n -.nf - +.EX pthread_cancel() pthread_setcancelstate() pthread_setcanceltype() -.fi +.EE .in .SS "取り消しポイント (cancellation points)" POSIX.1 の規定では、特定の関数は取り消しポイントでなければならず、 他の特定の関数は取り消しポイントであってもよいとされている。 あるスレッドが取り消し可能で、その取り消し種別 (cancelability type) が延期 (deferred) で、そのスレッドに対する取り消し要求が処理待ちの場合、 取り消しポイントである関数を呼び出した時点で、そのスレッドのキャンセルが 行われる。 - +.PP POSIX.1\-2001 と POSIX.1\-2008 の両方、もしくはいずれか一方では、 以下の関数は、取り消しポイント (cancellation points) で あることが必須となっている。 - +.PP .\" FIXME .\" Document the list of all functions that are cancellation points in glibc .in +4n -.nf +.EX accept() aio_suspend() clock_nanosleep() @@ -289,22 +302,22 @@ waitid() waitpid() write() writev() -.fi +.EE .in - +.PP POSIX.1\-2001 と POSIX.1\-2008 の両方、もしくはいずれか一方では、 以下の関数は、取り消しポイント (cancellation points) で あってもよいことになっている。 - +.PP .in +4n -.nf +.EX access() asctime() asctime_r() catclose() catgets() catopen() -chmod() [POSIX.1\-2008 で追加された] -chown() [POSIX.1\-2008 で追加された] +chmod() [Added in POSIX.1\-2008] +chown() [Added in POSIX.1\-2008] closedir() closelog() ctermid() @@ -318,7 +331,7 @@ dbm_open() dbm_store() dlclose() dlopen() -dprintf() [POSIX.1\-2008 で追加された] +dprintf() [Added in POSIX.1\-2008] endgrent() endhostent() endnetent() @@ -326,13 +339,13 @@ endprotoent() endpwent() endservent() endutxent() -faccessat() [POSIX.1\-2008 で追加された] -fchmod() [POSIX.1\-2008 で追加された] -fchmodat() [POSIX.1\-2008 で追加された] -fchown() [POSIX.1\-2008 で追加された] -fchownat() [POSIX.1\-2008 で追加された] +faccessat() [Added in POSIX.1\-2008] +fchmod() [Added in POSIX.1\-2008] +fchmodat() [Added in POSIX.1\-2008] +fchown() [Added in POSIX.1\-2008] +fchownat() [Added in POSIX.1\-2008] fclose() -fcntl() (cmd 引き数が何であっても) +fcntl() (for any value of cmd argument) fflush() fgetc() fgetpos() @@ -354,11 +367,11 @@ fseek() fseeko() fsetpos() fstat() -fstatat() [POSIX.1\-2008 で追加された] +fstatat() [Added in POSIX.1\-2008] ftell() ftello() ftw() -futimens() [POSIX.1\-2008 で追加された] +futimens() [Added in POSIX.1\-2008] fwprintf() fwrite() fwscanf() @@ -369,25 +382,27 @@ getchar() getchar_unlocked() getcwd() getdate() -getdelim() [POSIX.1\-2008 で追加された] +getdelim() [Added in POSIX.1\-2008] getgrent() getgrgid() getgrgid_r() getgrnam() getgrnam_r() -gethostbyaddr() [SUSv3 のみ (この関数は POSIX.1\-2008 で削除されている)] -gethostbyname() [SUSv3 のみ (この関数は POSIX.1\-2008 で削除されている)] +gethostbyaddr() [POSIX.1\-2001 only (function removed in + POSIX.1\-2008)] +gethostbyname() [POSIX.1\-2001 only (function removed in + POSIX.1\-2008)] gethostent() gethostid() gethostname() -getline() [POSIX.1\-2008 で追加された] +getline() [Added in POSIX.1\-2008] getlogin() getlogin_r() getnameinfo() getnetbyaddr() getnetbyname() getnetent() -getopt() (opterr が 0 以外の場合) +getopt() (if opterr is nonzero) getprotobyname() getprotobynumber() getprotoent() @@ -405,26 +420,26 @@ getutxid() getutxline() getwc() getwchar() -getwd() [SUSv3 のみ (この関数は POSIX.1\-2008 で削除されている)] +getwd() [POSIX.1\-2001 only (function removed in POSIX.1\-2008)] glob() iconv_close() iconv_open() ioctl() link() -linkat() [POSIX.1\-2008 で追加された] -lio_listio() [POSIX.1\-2008 で追加された] +linkat() [Added in POSIX.1\-2008] +lio_listio() [Added in POSIX.1\-2008] localtime() localtime_r() -lockf() [POSIX.1\-2008 で追加された] +lockf() [Added in POSIX.1\-2008] lseek() lstat() -mkdir() [POSIX.1\-2008 で追加された] -mkdirat() [POSIX.1\-2008 で追加された] -mkdtemp() [POSIX.1\-2008 で追加された] -mkfifo() [POSIX.1\-2008 で追加された] -mkfifoat() [POSIX.1\-2008 で追加された] -mknod() [POSIX.1\-2008 で追加された] -mknodat() [POSIX.1\-2008 で追加された] +mkdir() [Added in POSIX.1\-2008] +mkdirat() [Added in POSIX.1\-2008] +mkdtemp() [Added in POSIX.1\-2008] +mkfifo() [Added in POSIX.1\-2008] +mkfifoat() [Added in POSIX.1\-2008] +mknod() [Added in POSIX.1\-2008] +mknodat() [Added in POSIX.1\-2008] mkstemp() mktime() nftw() @@ -458,8 +473,8 @@ posix_trace_shutdown() posix_trace_timedgetnext_event() posix_typed_mem_open() printf() -psiginfo() [POSIX.1\-2008 で追加された] -psignal() [POSIX.1\-2008 で追加された] +psiginfo() [Added in POSIX.1\-2008] +psignal() [Added in POSIX.1\-2008] pthread_rwlock_rdlock() pthread_rwlock_timedrdlock() pthread_rwlock_timedwrlock() @@ -474,14 +489,14 @@ putwc() putwchar() readdir() readdir_r() -readlink() [POSIX.1\-2008 で追加された] -readlinkat() [POSIX.1\-2008 で追加された] +readlink() [Added in POSIX.1\-2008] +readlinkat() [Added in POSIX.1\-2008] remove() rename() -renameat() [POSIX.1\-2008 で追加された] +renameat() [Added in POSIX.1\-2008] rewind() rewinddir() -scandir() [POSIX.1\-2008 で追加された] +scandir() [Added in POSIX.1\-2008] scanf() seekdir() semop() @@ -492,13 +507,13 @@ setprotoent() setpwent() setservent() setutxent() -sigpause() [POSIX.1\-2008 で追加された] +sigpause() [Added in POSIX.1\-2008] stat() strerror() strerror_r() strftime() symlink() -symlinkat() [POSIX.1\-2008 で追加された] +symlinkat() [Added in POSIX.1\-2008] sync() syslog() tmpfile() @@ -509,11 +524,11 @@ tzset() ungetc() ungetwc() unlink() -unlinkat() [POSIX.1\-2008 で追加された] -utime() [POSIX.1\-2008 で追加された] -utimensat() [POSIX.1\-2008 で追加された] -utimes() [POSIX.1\-2008 で追加された] -vdprintf() [POSIX.1\-2008 で追加された] +unlinkat() [Added in POSIX.1\-2008] +utime() [Added in POSIX.1\-2008] +utimensat() [Added in POSIX.1\-2008] +utimes() [Added in POSIX.1\-2008] +vdprintf() [Added in POSIX.1\-2008] vfprintf() vfwprintf() vprintf() @@ -522,9 +537,12 @@ wcsftime() wordexp() wprintf() wscanf() -.fi +.EE .in - +.PP +実装時に、標準規格で規定されていないその他の関数を取り消しポイント とすることも認められている。 特に、停止 (block) +する可能性がある非標準の関数を取り消しポイントと する実装はあり得ることだろう (ファイルを扱う可能性のあるほとんどの関数がこれに含まれる)。 +.PP .\" So, scanning "cancellation point" comments in the glibc 2.8 header .\" files, it looks as though at least the following nonstandard .\" functions are cancellation points: @@ -615,8 +633,13 @@ wscanf() .\" vscanf .\" vsyslog .\" vwscanf -実装時に、標準規格で規定されていないその他の関数を取り消しポイント とすることも認められている。 特に、停止 (block) -する可能性がある非標準の関数を取り消しポイントと する実装はあり得ることだろう (ファイルを扱う可能性のあるほとんどの関数がこれに含まれる)。 +It should be noted that even if an application is not using asynchronous +cancellation, that calling a function from the above list from an +asynchronous signal handler may cause the equivalent of asynchronous +cancellation. The underlying user code may not expect asynchronous +cancellation and the state of the user data may become inconsistent. +Therefore signals should be used with caution when entering a region of +deferred cancellation. .SS "Linux でのコンパイル" Linux では、Pthreads API を用いたプログラムは \fIcc \-pthread\fP でコンパイルすべきである。 .SS "POSIX スレッドの Linux での実装" @@ -688,10 +711,13 @@ POSXI.1 では、全体としてのプロセスに送られるシグナルと、 (仕様では、新しいスレッドは代替シグナルスタックが定義されていない状態 で開始されるべきとされている。 2つのスレッドが共有されている代替シグナルスタック上で同時に シグナルの処理を行った場合、予測不可能なプログラムのエラーが 起こり得る。) .SS NPTL -NPTL では、一つのプロセスの全てのスレッドは同じスレッドグループ に属する; スレッドグループの全メンバーは同じ PID を共有する。 NPTL -は管理スレッド (manager thread) を利用しない。 NPTL は内部でリアルタイムシグナルのうち最初の 2つの番号を使用しており -(\fBsignal\fP(7) 参照)、これらのシグナルはアプリケーションでは使用できない。 - +With NPTL, all of the threads in a process are placed in the same thread +group; all members of a thread group share the same PID. NPTL does not +employ a manager thread. +.PP +NPTL makes internal use of the first two real\-time signals; these signals +cannot be used in applications. See \fBnptl\fP(7) for further details. +.PP NPTL にも POSIX.1 に準拠していない点が少なくとも一つある: .IP \- 3 .\" FIXME . bug report filed for NPTL nice nonconformance @@ -726,23 +752,23 @@ NPTL の実装では以下の点についても注意すること: \-s\fP (C シェルでは \fIlimit stacksize\fP) を使って設定する。 .SS スレッド実装の判定 glibc 2.3.2 以降では、 \fBgetconf\fP(1) コマンドを使って、 システムのスレッド実装を判定することができる。 以下に例を示す: -.nf +.PP .in +4n - +.EX bash$ getconf GNU_LIBPTHREAD_VERSION NPTL 2.3.4 +.EE .in -.fi .PP ぞれ以前の glibc のバージョンでは、以下のようなコマンドで デフォルトのスレッド実装を判定することができる。 -.nf +.PP .in +4n - +.EX bash$ $( ldd /bin/ls | grep libc.so | awk \(aq{print $3}\(aq ) | \e egrep \-i \(aqthreads|ntpl\(aq Native POSIX Threads Library by Ulrich Drepper et al +.EE .in -.fi .SS "スレッドの実装の選択: LD_ASSUME_KERNEL" LinuxThreads と NPTL の両方をサポートしている glibc (glibc 2.3.\fIx\fP) があるシステムでは、 \fBLD_ASSUME_KERNEL\fP 環境変数を使うことで、動的リンカーがデフォルトで 選択するスレッド実装を上書きすることができる。 @@ -750,30 +776,31 @@ LinuxThreads と NPTL の両方をサポートしている glibc (glibc 2.3.\fIx が必要とするサポート機能を提供していないカーネルバージョンを 指定することで、強制的に LinuxThreads を使うことができる (このようなことをする最もありそうな場面は、 LinuxThreads の標準非準拠な振舞いに依存する (壊れた) アプリケーション を動作させる場合だろう)。 以下に例を示す: -.nf +.PP .in +4n - +.EX bash$ $( LD_ASSUME_KERNEL=2.2.5 ldd /bin/ls | grep libc.so | \e awk \(aq{print $3}\(aq ) | egrep \-i \(aqthreads|nptl\(aq linuxthreads\-0.10 by Xavier Leroy +.EE .in -.fi .SH 関連項目 .ad l .nh -\fBclone\fP(2), \fBfutex\fP(2), \fBgettid\fP(2), \fBfutex\fP(7), \fBsigevent\fP(7), -\fBsignal\fP(7), - -pthreads の各種マニュアルページ、例えば: \fBpthread_attr_init\fP(3), -\fBpthread_atfork\fP(3), \fBpthread_cancel\fP(3), \fBpthread_cleanup_push\fP(3), +\fBclone\fP(2), \fBfork\fP(2), \fBfutex\fP(2), \fBgettid\fP(2), \fBproc\fP(5), +\fBattributes\fP(7), \fBfutex\fP(7), \fBnptl\fP(7), \fBsigevent\fP(7), \fBsignal\fP(7) +.PP +Various Pthreads manual pages, for example: \fBpthread_atfork\fP(3), +\fBpthread_attr_init\fP(3), \fBpthread_cancel\fP(3), \fBpthread_cleanup_push\fP(3), \fBpthread_cond_signal\fP(3), \fBpthread_cond_wait\fP(3), \fBpthread_create\fP(3), \fBpthread_detach\fP(3), \fBpthread_equal\fP(3), \fBpthread_exit\fP(3), \fBpthread_key_create\fP(3), \fBpthread_kill\fP(3), \fBpthread_mutex_lock\fP(3), -\fBpthread_mutex_unlock\fP(3), \fBpthread_once\fP(3), +\fBpthread_mutex_unlock\fP(3), \fBpthread_mutexattr_destroy\fP(3), +\fBpthread_mutexattr_init\fP(3), \fBpthread_once\fP(3), \fBpthread_spin_init\fP(3), +\fBpthread_spin_lock\fP(3), \fBpthread_rwlockattr_setkind_np\fP(3), \fBpthread_setcancelstate\fP(3), \fBpthread_setcanceltype\fP(3), \fBpthread_setspecific\fP(3), \fBpthread_sigmask\fP(3), \fBpthread_sigqueue\fP(3), and \fBpthread_testcancel\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/pty.7 b/manual/LDP_man-pages/draft/man7/pty.7 deleted file mode 100644 index 8d73d5fc..00000000 --- a/manual/LDP_man-pages/draft/man7/pty.7 +++ /dev/null @@ -1,94 +0,0 @@ -.\" Copyright (C) 2005 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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved. -.\" Translated 2005-10-14, Akihiro MOTOKI -.\" -.TH PTY 7 2005\-10\-10 Linux "Linux Programmer's Manual" -.SH 名前 -pty \- 擬似端末インターフェース -.SH 説明 -擬似端末 (pseudoterminal; "pty" と略されることもある) は、 -双方向通信チャンネルを提供する仮想キャラクターデバイスのペアである。 チャンネルの一方の端点は \fIマスタ (master)\fP -と呼ばれ、もう一方の端点は \fIスレーブ (slave)\fP と呼ばれる。 擬似端末のスレーブは、伝統的な端末と全く同じ動作をするインターフェースを -提供する。端末に接続されることを想定しているプロセスは擬似端末の スレーブをオープンすることができ、それ以降はマスタ側をオープン -しているプログラムからそのプロセスを制御することができる。 端末で入力されたのと同じように、 -マスタ側に書き込まれた全てのデータは、スレーブ側のプロセスに送られる。 例えば、マスタデバイスに割り込みキャラクター (通常は control\-C) -を書き込むと、 スレーブに接続されているフォアグラウンドプロセスグループに対して 割り込みシグナル (\fBSIGINT\fP) が生成される。 -反対に、擬似端末のスレーブ側に書き込まれた全てのデータは、 マスタ側に接続されているプロセスから読み出すことができる。 -擬似端末は、ネットワークログインサービス (\fBssh\fP(1), \fBrlogin\fP(1), \fBtelnet\fP(1)) や端末エミュレータ、 -\fBscript\fP(1), \fBscreen\fP(1), \fBexpect\fP(1) などのアプリケーションで使用されている。 - -歴史的に見ると BSD と System V の2種類の擬似端末の API が発展してきている。 SUSv1 は System V API -に基づいた擬似端末 API を標準化しており、 擬似端末を使用する新しいプログラムはすべてこの API を採用すべきである。 - -Linux では BSD 風と (標準化された) System V 風の擬似端末を提供している。 System V 風の端末は、Linux -システムでは一般に UNIX 98 擬似端末と呼ばれている。 カーネル 2.6.4 以降では、BSD 風の擬似端末は廃止予定とみなされている -(カーネルのコンフィギュレーションで BSD 風の擬似端末を無効にすることができる)。 新しいアプリケーションでは、UNIX 98 -擬似端末を使用すべきである。 -.SS "UNIX 98 擬似端末" -未使用の UNIX 98 擬似端末マスタをオープンするには \fBposix_openpt\fP(3) を呼び出す (この関数はマスタクローンデバイス -(master clone device), \fI/dev/ptmx\fP をオープンする; \fBpts\fP(4) を参照)。 -プログラム固有の初期化処理を実行し、 \fBgrantpt\fP(3) を使ってスレーブデバイスの所有権や許可を変更し、 \fBunlockpt\fP(3) -を使ってスレーブのロック解除を行うと、 \fBptsname\fP(3) が返す名前を渡して \fBopen\fP(2) を呼び出すことにより -対応するスレーブデバイスをオープンできるようになる。 - -Linux カーネルでは、利用できる UNIX 98 擬似端末の数に上限を設けている。 2.6.3 -以前のカーネルでは、この上限はカーネルのコンパイル時の設定 (\fBCONFIG_UNIX98_PTYS\fP) である。許可される擬似端末の数は最大 -2048 であり、 デフォルトの設定は 256 である。 カーネル 2.6.4 以降では、この上限は -\fI/proc/sys/kernel/pty/max\fP 経由で動的に調整可能となっている。また、 \fI/proc/sys/kernel/pty/nr\fP -で現在使用中の擬似端末の数を取得できる。 この 2つのファイルの詳細は \fBproc\fP(5) を参照。 -.SS "BSD 擬似端末" -BSD 風の擬似端末はあらかじめ作成されたペアとして提供される。その名前は \fI/dev/ptyXY\fP (マスタ側)、 \fI/dev/ttyXY\fP -(スレーブ側) である。ここで、 X は [p\-za\-e] の 16文字のうちの一文字、 Y は [0\-9a\-f] の 16文字のうちの一文字である -(X, Y に使われる文字の正確な範囲は UNIX の実装により異なる)。 例えば、 \fI/dev/ptyp1\fP と \fI/dev/ttyp1\fP は -BSD 擬似端末ペアを構成する。 プロセスが未使用の擬似端末ペアを見つけるには、 各擬似端末のマスタの \fBopen\fP(2) を試み、open -が成功するまでこれを繰り返す。 マスタを open すると、対応する擬似端末のスレーブも open できるようになる (スレーブの名前は、マスタの名前の -"pty" を "tty" に置き換えたものである)。 -.SH ファイル -\fI/dev/ptmx\fP (UNIX 98 マスタクローンデバイス) -.br -\fI/dev/pts/*\fP (UNIX 98 スレーブデバイス) -.br -\fI/dev/pty[p\-za\-e][0\-9a\-f]\fP (BSD マスタデバイス) -.br -\fI/dev/tty[p\-za\-e][0\-9a\-f]\fP (BSD スレーブデバイス) -.SH 注意 -パケットモード操作の制御を行う \fBTIOCPKT\fP \fBioctl\fP(2) の説明は \fBtty_ioctl\fP(4) に書かれている。 - -BSD \fBioctl\fP(2) の \fBTIOCSTOP\fP, \fBTIOCSTART\fP, \fBTIOCUCNTL\fP, \fBTIOCREMOTE\fP -はこれまでのところ Linux では実装されていない。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/raw.7 b/manual/LDP_man-pages/draft/man7/raw.7 index bea6b3ed..ad89203f 100644 --- a/manual/LDP_man-pages/draft/man7/raw.7 +++ b/manual/LDP_man-pages/draft/man7/raw.7 @@ -1,4 +1,3 @@ -'\" t .\" This man page is Copyright (C) 1999 Andi Kleen . .\" .\" %%%LICENSE_START(VERBATIM_ONE_PARA) @@ -21,7 +20,7 @@ .\" Updated 2007-01-05, Akihiro MOTOKI , LDP v2.43 .\" Updated 2013-03-26, Akihiro MOTOKI .\" -.TH RAW 7 2012\-05\-10 Linux "Linux Programmer's Manual" +.TH RAW 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 raw \- Linux の IPv4 raw ソケット .SH 書式 @@ -33,16 +32,23 @@ raw \- Linux の IPv4 raw ソケット .SH 説明 raw ソケットを使うと、新しい IPv4 プロトコルをユーザー空間で 実装できるようになる。 raw ソケットは、リンクレベルヘッダーを 含まない raw データグラムの送受信ができる。 - -IPv4 レイヤは、扱っているソケットで \fBIP_HDRINCL\fP ソケットオプションが有効になっていなければ、 パケットを送信するときに IP -ヘッダーを生成する。 \fBIP_HDRINCL\fP オプションが有効になっているときは、パケットには IP ヘッダーが含まれていなければならない。 -受信時には、 IP ヘッダーは常にパケットに含まれている。 - -実効ユーザー ID が 0 のプロセスか、 \fBCAP_NET_RAW\fP 権限を持つプロセスだけが raw ソケットをオープンすることができる。 - -この raw ソケットに指定された \fIprotocol\fP 番号にマッチする全てのパケットとエラーとが、このソケットに渡される。 -許可されているプロトコルのリストは RFC\ 1700 の割り当て番号と \fBgetprotobyname\fP(3) を見よ。 - +.PP +The IPv4 layer generates an IP header when sending a packet unless the +\fBIP_HDRINCL\fP socket option is enabled on the socket. When it is enabled, +the packet must contain an IP header. For receiving, the IP header is +always included in the packet. +.PP +In order to create a raw socket, a process must have the \fBCAP_NET_RAW\fP +capability in the user namespace that governs its network namespace. +.PP +All packets or errors matching the \fIprotocol\fP number specified for the raw +socket are passed to this socket. For a list of the allowed protocols, see +the IANA list of assigned protocol numbers at +.UR http://www.iana.org/assignments/protocol\-numbers/ +.UE +and +\fBgetprotobyname\fP(3). +.PP \fBIPPROTO_RAW\fP のプロトコルは暗黙のうちに \fBIP_HDRINCL\fP を有効にするので、 渡されたヘッダーで指定された、あらゆる IP プロトコルを送信できる。 \fBIPPROTO_RAW\fP 経由でのあらゆる IP プロトコルの受信は、 raw ソケットを用いては行えない。 .RS @@ -51,32 +57,36 @@ tab(:) allbox; c s l l. IP ヘッダーフィールド。 \fBIP_HDRINCL\fP によって送信時に変更される。 -IP チェックサム:常に変更される。 -ソースアドレス:元の値が 0 の時に変更される。 -パケット ID:元の値が 0 の時に変更される。 -全体の長さ:常に変更される。 +IP チェックサム:Always filled in +ソースアドレス:Filled in when zero +Packet ID:Filled in when zero +全体の長さ:Always filled in .TE .RE -.sp +.PP .PP \fBIP_HERINCL\fP が指定されていて、 IP ヘッダーに 0 でない送信先アドレスが記入されていた場合は、 その送信先アドレスがパケットの経路を決めるのに用いられる。 \fBMSG_DONTROUTE\fP が指定されている時には、 送信先アドレスはローカルなインターフェースを参照するものでなければならない。 さもないと、ルーティングテーブルの参照はいずれにせよ行われるが、 ゲートウェイが必要な経路は無視される。 - +.PP \fBIP_HDRINCL\fP がセットされていなければ、 raw ソケットの IP ヘッダーオプションを \fBsetsockopt\fP(2) を用いて設定することができる。詳細な情報は \fBip\fP(7) を見よ。 - -Linux 2.2 では、 IP ヘッダーの全てのフィールドとオプションとを IP ソケットオプションによって設定できる。したがって raw -ソケットが必要になるのは、新しいプロトコルを設計する場合か、 ユーザーインターフェースを持たないプロトコル (ICMP など) を扱う場合に 限られる。 - +.PP +Starting with Linux 2.2, all IP header fields and options can be set using +IP socket options. This means raw sockets are usually needed only for new +protocols or protocols with no user interface (like ICMP). +.PP パケットは、受信されるとまずプロトコルにバインドしている raw ソケットに渡され、 その後で他のプロトコルハンドラー (カーネルのプロトコルモジュールなど) に渡される。 .SS アドレスのフォーマット -raw ソケットは標準の \fIsockaddr_in\fP アドレス構造体を用いる。定義は \fBip\fP(7) でなされている。 \fIsin_port\fP -フィールドを IP プロトコル番号の指定に用いることができるが、 Linux 2.2 ではこれは送信時には無視され、常に 0 にされる (バグ -の項を参照)。 受信パケットに対しては、 \fIsin_port\fP はそのパケットのプロトコルにセットされる。 用いることのできる IP -プロトコルは、インクルードファイル \fI\fP を見よ。 +.\" commit f59fc7f30b710d45aadf715460b3e60dbe9d3418 +For sending and receiving datagrams (\fBsendto\fP(2), \fBrecvfrom\fP(2), and +similar), raw sockets use the standard \fIsockaddr_in\fP address structure +defined in \fBip\fP(7). The \fIsin_port\fP field could be used to specify the IP +protocol number, but it is ignored for sending in Linux 2.2 and later, and +should be always set to 0 (see BUGS). For incoming packets, \fIsin_port\fP is +set to zero. .SS ソケットオプション .\" Or SOL_RAW on Linux raw ソケットのオプションは、 \fBIPPROTO_RAW\fP ファミリーフラグを与えて \fBsetsockopt\fP(2) を呼べば設定でき、 @@ -104,8 +114,9 @@ raw ソケットのオプションは、 \fBIPPROTO_RAW\fP ファミリーフラ 引き数が不正。 .TP \fBEMSGSIZE\fP -パケットが大きすぎる。 Path MTU Discoverry が有効になっている (\fBIP_MTU_DISCOVER\fP ソケットフラグ) -か、パケットのサイズが IPv4 で許されている パケットサイズの最大値 64KB を越えている。 +Packet too big. Either Path MTU Discovery is enabled (the +\fBIP_MTU_DISCOVER\fP socket flag) or the packet size exceeds the maximum +allowed IPv4 packet size of 64\ kB. .TP \fBEOPNOTSUPP\fP ソケット呼び出しに不正なフラグ (\fBMSG_OOB\fP など) が渡された。 @@ -119,9 +130,10 @@ raw ソケットのオプションは、 \fBIPPROTO_RAW\fP ファミリーフラ .SH バージョン \fBIP_RECVERR\fP と \fBICMP_FILTER\fP は Linux 2.2 で登場した。これらは Linux での拡張であり、 移植性の必要なプログラムでは用いるべきでない。 - -Linux 2.0 では \fBSO_BSDCOMPAT\fP ソケットオプションをセットすると、 BSD の raw -ソケットにあるバグに互換性を取ることができた \(em Linux 2.2 以降では、このオプションはもはや効力を持たない。 +.PP +Linux 2.0 enabled some bug\-to\-bug compatibility with BSD in the raw socket +code when the \fBSO_BSDCOMPAT\fP socket option was set; since Linux 2.2, this +option no longer has that effect. .SH 注意 デフォルトでは、raw ソケットは Path MTU Discovery を行う。 つまり、カーネルは特定の宛先 IP アドレスの MTU (Maximum Transmission Unit; 最大転送単位) を記録し、raw パケットの書き込みが MTU を超えた場合 @@ -130,45 +142,46 @@ Linux 2.0 では \fBSO_BSDCOMPAT\fP ソケットオプションをセットす MTU Discovery を無効にすることもできる (詳細は \fBip\fP(7) を参照)。 Path MTU Discovery を無効にした場合は、パケットサイズが インターフェースの MTU よりも大きいと raw ソケットはそのパケットを フラグメント化して送出する。 しかしながら、性能と信頼性の理由から Path MTU Discovery を 無効にするのは推奨できない。 - -\fBbind\fP(2) システムコールを用いると、 raw ソケットを 特定のローカルアドレスにバインドさせることができる。 -このバインドがされていない場合は、指定した IP プロトコルの すべてのパケットが受信される。 さらに、 \fBSO_BINDTODEVICE\fP -を用いれば raw ソケットを特定のネットワークデバイスに バインドさせることもできる。 \fBsocket\fP(7) を見よ。 - +.PP +A raw socket can be bound to a specific local address using the \fBbind\fP(2) +call. If it isn't bound, all packets with the specified IP protocol are +received. In addition, a raw socket can be bound to a specific network +device using \fBSO_BINDTODEVICE\fP; see \fBsocket\fP(7). +.PP \fBIPPROTO_RAW\fP ソケットは送信専用である。もしどうしてもすべての IP パケットを 受信したい場合は、 \fBpacket\fP(7) ソケットを \fBETH_P_IP\fP プロトコルで用いること。 packet ソケットは raw ソケットのように IP フラグメントを再構成しないことに注意。 - +.PP datagram ソケットに対するすべての ICMP パケットを受信したい場合は、 特定のソケットに対して \fBIP_RECVERR\fP を用いるほうが良い場合が多い。 \fBip\fP(7) を見よ。 - +.PP raw ソケットは、 Linux のすべての IP プロトコルを受信することができる。 ICMP や TCP のように、カーネル内部にプロトコルモジュールを持つような ものも可能である。この場合には、パケットはカーネルモジュールと raw ソケットの両方に渡される (raw ソケットが複数あればそれぞれに渡される)。 移植性の必要なプログラムではこの機能に依存するべきではない。 他の多くの BSD におけるソケットの実装ではこの点において制限がある。 - +.PP Linux はユーザーから渡されたヘッダーを決して変更しない (ただし \fBIP_HDRINCL\fP の説明にあるように、 0 をいくつか埋める場合を除く)。 これは他の多くの raw ソケットの実装では異なる。 - -一般に raw ソケットは移植性がないことが多いので、 移植性が必要なプログラムでは避けるべきである。 - +.PP +Raw sockets are generally rather unportable and should be avoided in +programs intended to be portable. +.PP raw ソケットへの送信では、 IP プロトコルを \fIsin_port\fP から取得できなければならない。この機能は Linux 2.2 では使えなくなった。 \fBIP_HDRINCL\fP を用いれば同様のことが実現できる。 .SH バグ 透過プロクシ (transparent proxy) 拡張については記述していない。 - +.PP \fBIP_HDRINCL\fP オプションがセットされているとデータグラムはフラグメント化されず、 インターフェースの MTU の大きさに制限される。 - +.PP .\" .SH AUTHORS .\" This man page was written by Andi Kleen. 送信用の IP プロトコルの設定を \fIsin_port\fP にしておく機能は Linux 2.2 から使えなくなった。 ソケットにバインドされているプロトコルか、最初の \fBsocket\fP(2) コールによって指定されたプロトコルが常に用いられる。 .SH 関連項目 \fBrecvmsg\fP(2), \fBsendmsg\fP(2), \fBcapabilities\fP(7), \fBip\fP(7), \fBsocket\fP(7) - +.PP Path MTU discovery に関しては \fBRFC\ 1191\fP を参照。 IP プロトコルに関しては \fBRFC\ 791\fP とインクルードファイル \fI\fP を参照。 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/regex.7 b/manual/LDP_man-pages/draft/man7/regex.7 index c2c00ad5..22055dfc 100644 --- a/manual/LDP_man-pages/draft/man7/regex.7 +++ b/manual/LDP_man-pages/draft/man7/regex.7 @@ -43,7 +43,7 @@ .\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. .\" Translated Wed 8 Jul 1998 by NAKANO Takeo .\" -.TH REGEX 7 2009\-01\-12 "" "Linux Programmer's Manual" +.TH REGEX 7 2020\-08\-13 "" "Linux Programmer's Manual" .SH 名前 regex \- POSIX.2 正規表現 .SH 説明 @@ -72,32 +72,38 @@ RE) と古い正規表現 (obsolete RE) である。新しい正規表現はだ \fIi\fP個以上並べたものにマッチする。 整数 \fIi\fP と \fIj\fP が指定された繰り返し指定を後置されたアトムは、 アトムを \fIi\fP個以上 \fIj\fP 個以下だけ並べたものにマッチする。 .PP -アトムの種類は以下の通り。"\fI()\fP" に囲まれた正規表現 (その正規表現がマッチする文字列にマッチする)、 中身が空の "\fI()\fP" (null -文字列にマッチする)\*(dg、 \fIブラケット表現 (bracket expression\fP :後述)、 \(aq.\(aq (任意の 1 -文字にマッチする)、 \(aq^\(aq (行頭の空白文字にマッチする)、 \(aq$\(aq (行末の空白文字にマッチする)、 \(aq\e\(aq -に "\fI^.[$()|*+?{\e\fP" のいずれか一文字を後置したもの (通常の文字として扱われ、その文字にマッチする)、 \(aq\e\(aq -にそれ以外の文字を後置したもの\*(dg (\(aq\e\(aq がない場合と同じように、その文字にマッチする\*(dg)、 特に意味を持たない文字一つ -(その文字にマッチする)。 \(aq{\(aq は数字以外の文字が後置されると通常の文字として扱われ、 -繰り返し指定の始まりとはされない\*(dg。\(aq\e\(aq で終わる正規表現は不正なものとみなされる。 -.PP -\fIブラケット表現\fPは "\fI[]\fP" によって閉じられた文字のリストである。 これは通常リスト中に存在している文字にマッチする。 (例外あり、後述。) -リストが \(aq^\(aq で始まると、 \fIブラケット表現\fPはリストに存在して\fIいない\fP文字一つにマッチする (例外あり、後述)。 -リスト中の二つの文字が \(aq\-\(aq で区切られている場合は、 これは照合順序 (collating sequence) -でその二つの文字に挟まれる、 すべての文字の並びを短縮したものとみなされる (両端含む)。 例えば "\fI[0\-9]\fP" は ASCII では 10 -進の数字 (digit) のいずれかにマッチする。 二つの領域指定が端点を共有してはならない\*(dg。 つまり "\fIa\-c\-e\fP" -のようなものは不正である。領域指定は照合順序に強く依存する。 したがって移植性の高いプログラムを作る場合は、 領域指定には頼らないほうが良いだろう。 -【\fB訳注\fP: 照合順序 (collating sequence) というのは、国際化 (Internationalization) -に関連した用語です。アルファベット順に単語を並 べる際には、言語によって並べる基準が異なります。照合順序は、その差異を 吸収するための仕組みです。 -例えば、スペイン語では ch という文字並びを特別扱いするため、アルファベッ ト順が a, b, c, ch, d, e, -\&... の順になるそうです。このようなシーケンス のことを collating sequence と言います。このとき `ch' という文字並びは、 -単語整列の際にあたかも「一文字」のように扱われます。ここで、 順序付けを行う際に最小の単位となる、`a'、`b' の文字や `ch' -のような特別な文字並びなど、照合順序の要素のことを collating element と言います。collating sequence -は、文字単位ではなく collating element を単位として定義されます。】 -.PP -文字 \(aq]\(aq そのものをリストに入れたい場合は、 最初の文字として指定すれば良い (\(aq^\(aq) の後に続けるのでも良い)。 文字 -\(aq\-\(aq そのものをリストに入れたい場合は、 最初か最後の文字とすれば良い。 あるいは領域指定の終端文字として指定しても良い。 -\(aq\-\(aq を領域指定の先頭文字に指定するには、"\fI[.\fP" と "\fI.]\fP" で囲って、 照合順序の要素 (collating -element: 後述) にすれば良い。 他の特殊文字 ( も含む) は、 ブラケット表現の内部ではすべて通常の文字として扱われる。 +An atom is a regular expression enclosed in "\fI()\fP" (matching a match for +the regular expression), an empty set of "\fI()\fP" (matching the null +string)\*(dg, a \fIbracket expression\fP (see below), \(aq.\(aq (matching any +single character), \(aq\(ha\(aq (matching the null string at the beginning +of a line), \(aq$\(aq (matching the null string at the end of a line), a +\(aq\e\(aq followed by one of the characters "\fI\(ha.[$()|*+?{\e\fP" (matching +that character taken as an ordinary character), a \(aq\e\(aq followed by any +other character\*(dg (matching that character taken as an ordinary +character, as if the \(aq\e\(aq had not been present\*(dg), or a single +character with no other significance (matching that character). A \(aq{\(aq +followed by a character other than a digit is an ordinary character, not the +beginning of a bound\*(dg. It is illegal to end an RE with \(aq\e\(aq. +.PP +A \fIbracket expression\fP is a list of characters enclosed in "\fI[]\fP". It +normally matches any single character from the list (but see below). If the +list begins with \(aq\(ha\(aq, it matches any single character (but see +below) \fInot\fP from the rest of the list. If two characters in the list are +separated by \(aq\-\(aq, this is shorthand for the full \fIrange\fP of +characters between those two (inclusive) in the collating sequence, for +example, "\fI[0\-9]\fP" in ASCII matches any decimal digit. It is illegal\*(dg +for two ranges to share an endpoint, for example, "\fIa\-c\-e\fP". Ranges are +very collating\-sequence\-dependent, and portable programs should avoid +relying on them. +.PP +To include a literal \(aq]\(aq in the list, make it the first character +(following a possible \(aq\(ha\(aq). To include a literal \(aq\-\(aq, make +it the first or last character, or the second endpoint of a range. To use a +literal \(aq\-\(aq as the first endpoint of a range, enclose it in "\fI[.\fP" +and "\fI.]\fP" to make it a collating element (see below). With the exception +of these and some combinations using \(aq[\(aq (see next paragraphs), all +other special characters, including \(aq\e\(aq, lose their special +significance within a bracket expression. .PP ブラケット表現の内部では、"\fI[.\fP" と "\fI.]\fP" に囲われた照合順序の要素は、 その要素に対応する文字並びを表す。 「照合順序の要素」とは、 [1] 文字、 [2] 単一文字のように扱われる複数文字のシーケンス、 [3] 1, 2 いずれかに対応する照合順序上の名前、のいずれかである。 @@ -105,10 +111,14 @@ element: 後述) にすれば良い。 他の特殊文字 ( も含む) は、 したがって一文字以上にマッチすることがある。 例えば、もし照合順序が "ch" という要素を含んでいる場合には、 正規表現 "\fI[[.ch.]]*c\fP" は "chchcc" の最初の 5 文字にマッチする。 .PP -ブラケット表現の内部では、"\fI[=\fP" と "\fI=]\fP" に囲まれた照合順序の要素は、 等価クラス (equivalence class) となる。 -これは、その要素と等価な要素すべてからなる文字シーケンス (自身も含む) を表す。 他に等価な要素がなければ、 取り扱いは "\fI[.\fP" と -"\fI.]\fP" で囲まれている場合と同じである。 例えば o と ou が等価クラスのメンバーであれば、 "\fI[[=o=]]\fP", -"\fI[[=\o'o^'=]]\fP", "\fI[o\o'o^']\fP" はすべて同じ意味になる。 等価クラスは領域指定の端点にはなれない\*(dg。 +Within a bracket expression, a collating element enclosed in "\fI[=\fP" and +"\fI=]\fP" is an equivalence class, standing for the sequences of characters of +all collating elements equivalent to that one, including itself. (If there +are no other equivalent collating elements, the treatment is as if the +enclosing delimiters were "\fI[.\fP" and "\fI.]\fP".) For example, if o and +\o'o\(ha' are the members of an equivalence class, then "\fI[[=o=]]\fP", +"\fI[[=\o'o\(ha'=]]\fP", and "\fI[o\o'o\(ha']\fP" are all synonymous. An +equivalence class may not\*(dg be an endpoint of a range. .PP ブラケット表現の内部では、"\fI[:\fP" と "\fI:]\fP" で囲われた\fI文字クラス (character class)\fP はそのクラスに属するすべての文字のリストを表す。 標準で用意されている文字クラスの名前は以下の通り: @@ -157,22 +167,30 @@ cntrl print xdigit 文字すべてにマッチする。 "\fI(a*)*\fP" を "bc" にマッチさせると、正規表現全体も、 括弧で括られた部分正規表現も null 文字列にマッチする。 .PP -マッチが大文字・小文字を無視するように指定されると、 アルファベット全体から大小文字の区別が無くなったかのような効果となる。 -大文字・小文字を持つアルファベットがブラケット表現の外部で 通常の文字として現れると、 これは実効的に大小両方の文字のブラケット表現のように変換される。 -すなわち \(aqx\(aq は "\fI[xX]\fP" となる。ブラケット表現の内部に現れると、 -大文字なら小文字が、小文字なら大文字がそのブラケット表現に加えられる。 すなわち "\fI[x]\fP" は "\fI[xX]\fP" に、"\fI[^x]\fP" は -"\fI[^xX]\fP" になる。 +If case\-independent matching is specified, the effect is much as if all case +distinctions had vanished from the alphabet. When an alphabetic that exists +in multiple cases appears as an ordinary character outside a bracket +expression, it is effectively transformed into a bracket expression +containing both cases, for example, \(aqx\(aq becomes "\fI[xX]\fP". When it +appears inside a bracket expression, all case counterparts of it are added +to the bracket expression, so that, for example, "\fI[x]\fP" becomes "\fI[xX]\fP" +and "\fI[\(hax]\fP" becomes "\fI[\(haxX]\fP". .PP 正規表現の長さには特に制限はない\*(dg。 ただし移植性を高くしたいプログラムでは、 256 バイトより長い正規表現は実行しないようにするほうが良い。 なぜなら、そのような正規表現を拒否し、 しかも POSIX 互換を保つような実装が可能だからである。 .PP -古い ("基本") 正規表現は、いくつかの点において異なる。 \(aq|\(aq, \(aq+\(aq, and \(aq?\(aq -は通常の文字となる。 対応する機能は存在しない。繰り返し指定の区切りは "\fI\e{\fP" および "\fI\e}\fP" となる。\(aq{\(aq と -\(aq}\(aq は、 単独では通常の文字として扱われる。 部分正規表現をネストする括弧は "\fI\e(\fP" および "\fI\e)\fP" となり、 -\(aq(\(aq と \(aq)\(aq は単独では通常の文字となる。 \(aq^\(aq は正規表現の先頭か、 -括弧でくくられた部分表現の先頭\*(dgを除いて通常の文字となる。 \(aq$\(aq は正規表現の末尾か、 -括弧でくくられた部分正規表現の末尾\*(dgを除いて通常の文字となる。 \(aq*\(aq は、正規表現の先頭か、 -括弧でくくられた部分文字列の先頭に置かれた場合は通常の文字となる (\(aq^\(aq) が前置されていてもよい)。 +Obsolete ("basic") regular expressions differ in several respects. +\(aq|\(aq, \(aq+\(aq, and \(aq?\(aq are ordinary characters and there is no +equivalent for their functionality. The delimiters for bounds are "\fI\e{\fP" +and "\fI\e}\fP", with \(aq{\(aq and \(aq}\(aq by themselves ordinary +characters. The parentheses for nested subexpressions are "\fI\e(\fP" and +"\fI\e)\fP", with \(aq(\(aq and \(aq)\(aq by themselves ordinary characters. +\(aq\(ha\(aq is an ordinary character except at the beginning of the RE +or\*(dg the beginning of a parenthesized subexpression, \(aq$\(aq is an +ordinary character except at the end of the RE or\*(dg the end of a +parenthesized subexpression, and \(aq*\(aq is an ordinary character if it +appears at the beginning of the RE or the beginning of a parenthesized +subexpression (after a possible leading \(aq\(ha\(aq). .PP 最後に、アトムとして別のタイプが存在する。 \fI後方参照 (back reference)\fP である。 \(aq\e\(aq の後に 0 でない 10 進数値文字 \fId\fP が続くと、 括弧でくくられた部分正規表現の \fId\fP 番目にマッチした文字並びと同じものにマッチする。 @@ -202,6 +220,5 @@ case を意味する」 という上記の定義が正しい解釈であると .PP POSIX.2, section 2.8 (Regular Expression Notation). .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index 024dff09..00000000 --- a/manual/LDP_man-pages/draft/man7/rtnetlink.7 +++ /dev/null @@ -1,373 +0,0 @@ -'\" t -.\" This man page is Copyright (C) 1999 Andi Kleen . -.\" -.\" %%%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. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved. -.\" Translated Mon 6 Dec 1999 by NAKANO Takeo -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-05-04, Akihiro MOTOKI -.\" -.TH RTNETLINK 7 2013\-03\-05 Linux "Linux Programmer's Manual" -.SH 名前 -rtnetlink \- Linux IPv4 ルーティングソケット -.SH 書式 -\fB#include \fP -.br -\fB#include \fP -.br -\fB#include \fP -.br -\fB#include \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 Document ifinfomsg.ifi_type -\fIifi_flags\fP はデバイスのフラグである。 \fBnetdevice\fP(7) を参照。 \fIifi_index\fP -は他と重ならないインターフェースの index である (Linux 3.7 以降では、 \fBRTMGRP_LINK\fP メッセージで 0 -以外の値を指定することができ、そのため指定した \fIifindex\fP でリンクを作成できる)。 \fIifi_change\fP -は将来の利用のために予約されており、常に 0xFFFFFFFF にセットすべきである。 -.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 -.sp -\fBIFLA_STATS\fP の値の型は \fIstruct rtnl_link_stats\fP (Linux 2.4 以前では \fIstruct -net_device_stats\fP) である。 -.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 Document 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 -.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 -.TS -tab(:); -l l. -rtm_protocol:経路の情報源 -_ -RTPROT_UNSPEC:不明 -RTPROT_REDIRECT:T{ -ICMP リダイレクトによる (現在は用いられない) -T} -RTPROT_KERNEL:カーネルによる -RTPROT_BOOT:ブート時 -RTPROT_STATIC:管理者による -.TE - -\fBRTPROT_STATIC\fP よりも大きな値はカーネルによって解釈されない。これは 単なるユーザーへの情報である。これらは経路情報の情報源を -タグ付けしたり、複数のルーティングデーモンからの情報を 区別するために用いることができる。 既に割り当てられているルーティングデーモンの識別子については -\fI\fP を見よ。 - -\fIrtm_scope\fP は行き先への距離である。 -.TS -tab(:); -l l. -RT_SCOPE_UNIVERSE:グローバルな経路 -RT_SCOPE_SITE:T{ -ローカルな自律システムにおける内部経路 -T} -RT_SCOPE_LINK:このリンク上の経路 -RT_SCOPE_HOST:ローカルホスト上の経路 -RT_SCOPE_NOWHERE:行き先が存在しない -.TE - -ユーザーは \fBRT_SCOPE_UNIVERSE\fP と \fBRT_SCOPE_SITE\fP の間の値を用いることができる。 - -\fIrtm_flags\fP は以下の意味を持つ: -.TS -tab(:); -l l. -RTM_F_NOTIFY:T{ -経路が変更されると、 rtnetlink を通してユーザーに通知が行く。 -T} -RTM_F_CLONED:経路は他の経路によって複製された。 -RTM_F_EQUALIZE:マルチパスイコライザ (まだ実装されていない) -.TE - -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/sched.7 b/manual/LDP_man-pages/draft/man7/sched.7 deleted file mode 100644 index d963d02d..00000000 --- a/manual/LDP_man-pages/draft/man7/sched.7 +++ /dev/null @@ -1,420 +0,0 @@ -.\" Copyright (C) 2014 Michael Kerrisk -.\" and Copyright (C) 2014 Peter Zijlstra -.\" and Copyright (C) 2014 Juri Lelli -.\" Various pieces from the old sched_setscheduler(2) page -.\" Copyright (C) Tom Bjorkholm, Markus Kuhn & David A. Wheeler 1996-1999 -.\" and Copyright (C) 2007 Carsten Emde -.\" and Copyright (C) 2008 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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Worth looking at: http://rt.wiki.kernel.org/index.php -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.TH SCHED 7 2014\-10\-02 Linux "Linux Programmer's Manual" -.SH 名前 -sched \- スケジューリング API の概要 -.SH 説明 -.SS "API の概要" -Linux のスケジューリング API は以下のとおりである。 -.TP -\fBsched_setscheduler\fP(2) -指定されたスレッドのスケジューリングポリシーとパラメーターを設定する。 -.TP -\fBsched_getscheduler\fP(2) -指定されたスレッドのスケジューリングポリシーを返す。 -.TP -\fBsched_setparam\fP(2) -指定されたスレッドのスケジューリングパラメーターを設定する。 -.TP -\fBsched_getparam\fP(2) -指定されたスレッドのスケジューリングパラメーターを取得する。 -.TP -\fBsched_get_priority_max\fP(2) -指定されたスケジューリングポリシーで利用可能な最小の優先度を返す。 -.TP -\fBsched_get_priority_min\fP(2) -指定されたスケジューリングポリシーで利用可能な最大の優先度を返す。 -.TP -\fBsched_rr_get_interval\fP(2) -「ラウンドロビン」スケジューリングポリシーでスケジューリグされるスレッドで使用される単位時間 (quantum) を取得する。 -.TP -\fBsched_yield\fP(2) -呼び出し元が CPU の使用権を明け渡して、 他のスレッドが実行できるようにする。 -.TP -\fBsched_setaffinity\fP(2) -(Linux 固有) 指定されたスレッドの CPU affinity を設定する。 -.TP -\fBsched_getaffinity\fP(2) -(Linux 固有) 指定されたスレッドの CPU affinity を取得する。 -.TP -\fBsched_setattr\fP(2) -指定されたスレッドのスケジューリングポリシーとパラメーターを設定する。 この (Linux 固有の) システムコールは -\fBsched_setscheduler\fP(2) と \fBsched_setparam\fP(2) の両方の機能を持つ。 -.TP -\fBsched_getattr\fP(2) -.\" -指定されたスレッドのスケジューリングポリシーとパラメーターを取得する。 この (Linux 固有の) システムコールは -\fBsched_getscheduler\fP(2) と \fBsched_getparam\fP(2) の両方の機能を持つ。 -.SS "スケジューリングポリシー (scheduling policy)" -スケジューラ (scheduler) とはカーネルの構成要素で、 次に CPU で実行される実行可能なスレッドを決定するものである。 -各々のスレッドには、スケジューリングポリシーと 「静的」なスケジューリング優先度 \fIsched_priority\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 thread is placed at the front of the queue -.\" In 2.0.x, the Right Thing happened: the thread went to the back -- MTK -\fBsched_setscheduler\fP(2), \fBsched_setparam\fP(2), \fBsched_setattr\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_DEADLINE: 散発タスクモデルのデッドラインスケジューリング" -バージョン 3.14 以降では、 Linux はデッドラインスケジューリングポリシー (\fBSCHED_DEADLINE\fP) が提供される。 -現在のところ、 このポリシーは GEDF (Global Earliest Deadline First) を使って CBS (Constant -Bandwidth Server) との組み合わせで実装されている。 このポリシーと関連する属性の設定、取得を行うには、 Linux -固有のシステムコール \fBsched_setattr\fP(2) と \fBsched_getattr\fP(2) を使用する必要がある。 - -散発タスク (sporadic task) はジョブ列を持つタスクで、 各ジョブは期間 (period) あたり多くとも 1 回だけ有効化される。 -各ジョブには \fIrelative deadline\fP (相対デッドライン) と \fIcomputation time\fP (計算時間) がある。 -相対デッドラインは、そのジョブがそのデッドラインより前に実行が終了すべきであることを示す。 計算時間は、このジョブを実行するのに必要な CPU -時間である。 新しいジョブを実行する必要が出てタスクが起こされる時点は \fIarrival time\fP (到着時刻) と呼ばれる (要求時刻 -(request time) や解放時刻 (release time) と呼ばれることもある)。 \fIstart time\fP -はタスクが実行を開始する時刻である。 したがって、 \fIabsolute deadline\fP (絶対デッドライン) -は到着時刻に相対デッドラインを加算することで求められる。 - -以下の図はこれらの用語をまとめたものである。 - -.in +4n -.nf -arrival/wakeup absolute deadline - | start time | - | | | - v v v -\-\-\-\-\-x\-\-\-\-\-\-\-\-xooooooooooooooooo\-\-\-\-\-\-\-\-x\-\-\-\-\-\-\-\-x\-\-\- - |<\- comp. time \->| - |<\-\-\-\-\-\-\- relative deadline \-\-\-\-\-\->| - |<\-\-\-\-\-\-\-\-\-\-\-\-\-\- period \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\->| -.fi -.in - -\fBsched_setattr\fP(2) を使ってスレッドに \fBSCHED_DEADLINE\fP ポリシーを設定する際、 \fIRuntime\fP, -\fIDeadline\fP, \fIPeriod\fP の 3 つのパラメーターを指定することができる。 -これらのパラメーターは必ずしも上で述べた用語に対応しているわけではない。 よくある方法としては、 Runtime に平均計算時間 -(もしくはハードリアルタイムタスクの場合は最悪ケースの実行時間) よりも大きな値を、 Deadline に相対デッドラインを、 Period -にタスクの期間 (period) を設定する。 したがって、 \fBSCHED_DEADLINE\fP スケジューリングでは、 以下のようになる。 - -.in +4n -.nf -arrival/wakeup absolute deadline - | start time | - | | | - v v v -\-\-\-\-\-x\-\-\-\-\-\-\-\-xooooooooooooooooo\-\-\-\-\-\-\-\-x\-\-\-\-\-\-\-\-x\-\-\- - |<\-\- Runtime \-\-\-\-\-\-\->| - |<\-\-\-\-\-\-\-\-\-\-\- Deadline \-\-\-\-\-\-\-\-\-\-\->| - |<\-\-\-\-\-\-\-\-\-\-\-\-\-\- Period \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\->| -.fi -.in - -.\" FIXME It looks as though specifying sched_period as 0 means -.\" "make sched_period the same as sched_deadline". -.\" This needs to be documented. -3 つのデッドラインスケジューリングパラメーターは \fIsched_attr\fP 構造体の \fIsched_runtime\fP, -\fIsched_deadline\fP, \fIsched_period\fP フィールドに対応する。 これらのフィールドはナノ秒単位の値である。 -\fIsched_period\fP に 0 が指定された場合 \fIsched_deadline\fP と同じ値になる。 - -カーネルでは以下の関係が成り立つことが求められる。 - - sched_runtime <= sched_deadline <= sched_period - -.\" See __checkparam_dl in kernel/sched/core.c -これに加えて、 現在の実装では、 すべてのパラメーター値は少なくとも 1024 (実装の粒度である 1 マイクロ秒よりも少しだけ大きな値) で 2^63 -よりも小さくなければならない。 これらのチェックのいずれかが失敗すると、 \fBsched_setattr\fP(2) はエラー \fBEINVAL\fP -で失敗する。 - -CBS によりタスク間の干渉がないことが保証される。 指定された Runtime を超えて実行しようとしたスレッドは絞り込まれることになる。 - -デッドラインスケジューリングの保証がきちんと機能するためには、 カーネルは \fBSCHEDULING\fP スレッドの集合が指定された制約条件におさまらない -(スケジューリングできない) 状況を防止しなければならない。 そのため、カーネルは \fBSCHED_DEADLINE\fP -ポリシーと属性を設定、変更する際に、受け入れチェック (admittance test) を実行する。 -この受け入れチェックは、変更が実行可能かを計算し、もし実行できないようであれば \fBsched_setattr\fP(2) はエラー \fBEBUSY\fP -で失敗する。 - -例えば、 使用率の合計が利用可能な合計 CPU 数以下である必要がある (ただし、必ずしも十分というわけではない)。 なお、 各スレッドは最大で -Period あたり Runtime だけ実行されることがあるので、 そのスレッドの使用率は Runtime を Period で割ったものとなる。 - -スレッドが \fBSCHED_DEADLINE\fP ポリシーに受け入れられた場合に保証を実現するため、 \fBSCHED_DEADLINE\fP -スレッドはシステムで (ユーザーが制御可能な) 最高優先度のスレッドとなる。 いずれかの \fBSCHED_DEADLINE\fP -スレッドが実行可能であれば、 他のポリシーでスケジューリングされているスレッドはすべて横取りされる。 - -\fBSCHED_DEADLINE\fP ポリシーでスケジューリングされているスレッドが \fBfork\fP(2) を呼び出すと、 そのスレッドで -reset\-on\-fork フラグがセットされている場合 (下記参照) を除き、 エラー \fBEAGAIN\fP で失敗する。 - -.\" -.\" FIXME Calling sched_getparam() on a SCHED_DEADLINE thread -.\" fails with EINVAL, but sched_getscheduler() succeeds. -.\" Is that intended? (Why?) -.\" -\fBSCHED_DEADLINE\fP スレッドが \fBsched_yield\fP(2) を呼び出すと、 現在のジョブが CPU -を明け渡し、新しい期間が開始するのを待つ。 -.SS "SCHED_OTHER: Linux のデフォルトの時分割スケジューリング" -.\" -\fBSCHED_OTHER\fP は静的優先度 0 でのみ使用できる。 \fBSCHED_OTHER\fP は Linux 標準の時分割スケジューラで、 -特別なリアルタイム機構を必要としていない全てのスレッドで使用される。 実行するスレッドは、静的優先度 0 のリストから、このリストの中だけで -決定される「動的な」優先度 (dynamic priority) に基いて決定される。 動的な優先度は (\fBnice\fP(2), -\fBsetpriority\fP(2), \fBsched_setattr\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. -.\" commit b0a9499c3dd50d333e2aedb7e894873c58da3785 -.\" -このポリシーは、非対話的な処理だがその nice 値を下げたくない処理や、 (処理のタスク間で) 余計なタスクの置き換えの原因とある対話的な処理なしで -確定的な (deterministic) スケジューリングポリシーを適用したい処理に 対して有効である。 -.SS "SCHED_IDLE: 非常に優先度の低いジョブのスケジューリング" -(Linux 2.6.23 以降) \fBSCHED_IDLE\fP は静的優先度 0 でのみ使用できる。 このポリシーではプロセスの nice -値はスケジューリングに影響を与えない。 - -.\" -非常に低い優先度でのジョブの実行を目的としたものである (非常に低い優先度とは、ポリシー \fBSCHED_OTHER\fP か \fBSCHED_BATCH\fP -での nice 値 +19 よりさらに低い優先度である)。 -.SS 子プロセスでのスケジューリングポリシーのリセット -各スレッドには reset\-on\-fork スケジューリングフラグがある。 このフラグがセットされると、 \fBfork\fP(2) -で作成される子プロセスは特権スケジューリングポリシーを継承しない。 reset\-on\-fork フラグは以下のいずれかの方法でセットできる。 -.IP * 3 -\fBsched_setscheduler\fP(2) を呼び出す際に \fBSCHED_RESET_ON_FORK\fP フラグを \fIpolicy\fP -引き数に論理和で指定する (Linux 2.6.32 以降)。 -.IP * -\fBsched_setattr\fP(2) を呼び出し際に \fIattr.sched_flags\fP に -\fBSCHED_FLAG_RESET_ON_FORK\fP フラグを指定する。 -.PP -これらの 2 つの API で使用される定数は名前が違っている点に注意すること。 同様に reset\-on\-fork フラグの状態は -\fBsched_getscheduler\fP(2) と \fBsched_getattr\fP(2) を使って取得できる。 - -reset\-on\-fork 機能はメディア再生アプリケーションでの利用を意図したものである。 複数の子プロセスを作成することで、 アプリケーションは -\fBRLIMIT_RTTIME\fP リソース上限 (\fBgetrlimit\fP(2) を参照) を避けることができる。 - -より正確には、 reset\-on\-fork フラグがセットされた場合、それ以降に作成される子プロセスに以下のルールが適用される。 -.IP * 3 -呼び出したスレッドのスケジューリングポリシーが \fBSCHED_FIFO\fP か \fBSCHED_RR\fP の場合、子プロセスのポリシーは -\fBSCHED_OTHER\fP にリセットされる。 -.IP * -子プロセスが負の nice 値を持っている場合、子プロセスの nice 値は 0 にリセットされる。 -.PP -.\" -一度 reset\-on\-fork フラグが有効にされた後は、このフラグをリセットできるのは、スレッドが \fBCAP_SYS_NICE\fP -ケーパビリティを持つ場合だけである。このフラグは \fBfork\fP(2) で作成された子プロセスでは無効になる。 -.SS 特権とリソース制限 -2.6.12 より前のバージョンの Linux カーネルでは、 特権スレッド (\fBCAP_SYS_NICE\fP ケーパビリティを持つスレッド) だけが -0 以外の静的優先度を設定する (すなわち、リアルタイムスケジューリングポリシーを設定する) ことができる。 非特権スレッドができる変更は -\fBSCHED_OTHER\fP ポリシーを設定することだけであり、さらに、 この変更を行えるのは、 呼び出し元の実効ユーザー ID -がポリシーの変更対象スレッド (\fIpid\fP で指定されたスレッド) の実ユーザー ID か実効ユーザー ID と 一致する場合だけである。 - -\fBSCHED_DEADLINE\fP ポリシーを設定、変更するには、スレッドが特権 (\fBCAP_SYS_NICE\fP) を持っていなければならない。 - -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 "リアルタイムプロセスとデッドラインプロセスの CPU 使用量を制限する" -\fBSCHED_FIFO\fP, \fBSCHED_RR\fP, \fBSCHED_DEADLINE\fP でスケジューリングされる -スレッドが停止せずに無限ループに陥ると、 他の全てのより低い優先度のスレッドを永久に停止 (block) させてしまう。 Linux 2.6.25 -より前では、 リアルタイムプロセスが暴走してしまい、システムが止まってしまうのを防止する唯一の方法は、 (コンソールで) -シェルをテスト対象のアプリケーションよりも高い静的優先度で実行することだけであった。 これによって期待通りに停止したり終了したりしないリアルタイム -アプリケーションを緊急終了させることが可能になる。 - -Linux 2.6.25 以降では、 暴走したリアルタイムプロセスやデッドラインプロセスを扱う別の方法が提供されている。 一つは -\fBRLIMIT_RTTIME\fP リソース上限を使ってリアルタイムプロセスが消費できる CPU 時間の上限を設定する方法である。 詳細は -\fBgetrlimit\fP(2) を参照。 - -Linux 2.6.25 以降では、 2 つの \fI/proc\fP ファイルを使って、リアルタイムでないプロセスが使用できる CPU -時間を一定量予約することができる。 この方法で CPU 時間をいくらか予約しておくことで、 CPU 時間が (例えば) root -シェルに割り当てられ、このシェルから暴走したプロセスを殺すことができる。 これらのファイルでは両方ともマイクロ秒で時間を指定する。 -.TP -\fI/proc/sys/kernel/sched_rt_period_us\fP -このファイルは、 CPU 時間 100% にあたるスケジューリング間隔を指定する。 このファイルの値として 1 から \fBINT_MAX\fP -を指定できる。 この値は実際の時間としては 1 マイクロ秒から約 35 分に相当する。 このファイルのデフォルト値は 1,000,000 (1 秒) -である。 -.TP -\fI/proc/sys/kernel/sched_rt_runtime_us\fP -このファイルの値は、 システム上のリアルタイムスケジューリングやデッドラインスケジューリングの全プロセスが使用できる「期間」を指定する。 -このファイルの値として \-1 から \fBINT_MAX\fP\-1 を指定できる。 \-1 を指定すると、実行時間 (runtime) はスケジューリング間隔 -(period) と同じになる。 つまり、 CPU 時間はリアルタイムでないプロセスには確保されない (カーネル 2.6.25 より前の Linux -の動作である)。 このファイルのデフォルト値は 950,000 (0.95 秒) である。 これは CPU 時間の 5% -がリアルタイムやデッドラインスケジューリングポリシー以外で動作するプロセスに確保されるという意味する。 -.PP -.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) -を使ってメモリーロックをしなければならない。 -.SH 注意 -.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 は通常のリアルタイムオペレーティングシステムに変身する。 -この場合には、 FIFO と RR のスケジューリングポリシーは、 真のリアルタイム優先度を持つスレッドを最悪の場合のスケジューリング遅延が -最小となる環境で動作させるために使われることになる。 -.SH 関連項目 -.ad l -.nh -\fBchrt\fP(1), \fBtaskset\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_getscheduler\fP(2), -\fBsched_getaffinity\fP(2), \fBsched_getparam\fP(2), \fBsched_rr_get_interval\fP(2), -\fBsched_setaffinity\fP(2), \fBsched_setscheduler\fP(2), \fBsched_setparam\fP(2), -\fBsched_yield\fP(2), \fBsetpriority\fP(2), \fBpthread_getaffinity_np\fP(3), -\fBpthread_setaffinity_np\fP(3), \fBsched_getcpu\fP(3), \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 -Linux カーネルソースのファイル \fIDocumentation/scheduler/sched\-deadline.txt\fP, -\fIDocumentation/scheduler/sched\-rt\-group.txt\fP, -\fIDocumentation/scheduler/sched\-design\-CFS.txt\fP, -\fIDocumentation/scheduler/sched\-nice\-design.txt\fP -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/sem_overview.7 b/manual/LDP_man-pages/draft/man7/sem_overview.7 index 70f97910..7a1e777c 100644 --- a/manual/LDP_man-pages/draft/man7/sem_overview.7 +++ b/manual/LDP_man-pages/draft/man7/sem_overview.7 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (C) 2006 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) @@ -34,16 +33,16 @@ .\" Updated 2008-08-07, Akihiro MOTOKI, LDP v3.05 .\" Updated 2009-02-23, Akihiro MOTOKI, LDP v3.19 .\" -.TH SEM_OVERVIEW 7 2012\-05\-13 Linux "Linux Programmer's Manual" +.TH SEM_OVERVIEW 7 2020\-06\-09 Linux "Linux Programmer's Manual" .SH 名前 sem_overview \- POSIX セマフォの概要 .SH 説明 POSIX セマフォを使用すると、プロセスやスレッド間でその動作を 同期させることができる。 - +.PP セマフォは整数であり、その値は決して 0 未満になることは許されない。 セマフォに対してできる操作は 2 つである: セマフォ値を 1 増やす (\fBsem_post\fP(3)); セマフォ値を 1 減らす (\fBsem_wait\fP(3))。 セマフォの値がすでに 0 の場合、セマフォ値が 0 より大きくなるまで \fBsem_wait\fP(3) 操作は停止 (block) する。 - +.PP POSIX セマフォには、名前付きセマフォ (named semaphore) と 名前なしセマフォ (unnamed semaphore) の 2つの形がある。 .TP @@ -60,7 +59,7 @@ POSIX セマフォには、名前付きセマフォ (named semaphore) と 名前 名前付きセマフォは \fI/somename\fP という形式の名前で識別される。 その名前は、最大で \fBNAME_MAX\fP\fI\-4\fP (すなわち 251) 文字のヌル終端された文字列で、 スラッシュで始まり、スラッシュ以外の文字が 1 文字以上続く形式である。 \fBsem_open\fP(3) に同じ名前を渡すことにより、2 つのプロセス間で同じ名前のセマフォ に対し操作を行うことができる。 - +.IP \fBsem_open\fP(3) 関数は、新しい名前付きセマフォを作成するか、既に存在する名前付き セマフォをオープンする。 セマフォをオープンした後は、 \fBsem_post\fP(3) と \fBsem_wait\fP(3) を使ってセマフォを操作できる。 プロセスがセマフォの使用を終えた際は、 \fBsem_close\fP(3) を使ってセマフォをクローズできる。 あるセマフォをどのプロセスも使用しなくなると、 \fBsem_unlink\fP(3) @@ -73,7 +72,7 @@ POSIX セマフォには、名前付きセマフォ (named semaphore) と 名前 と呼ぶ)。スレッド共有セマフォは、同じプロセス内のスレッド間で共有される メモリー領域、例えば大域変数 (global variable) に配置される。 プロセス共有セマフォは、共有メモリー領域 (例えば、 \fBshmget\fP(2) を使って作成できる System V 共有メモリーセグメントや \fBshm_open\fP(3) を使って作成できる POSIX 共有メモリーオブジェクト) 内に配置しなければならない。 - +.IP 名前なしセマフォは、使用する前に \fBsem_init\fP(3) を使って初期化しなければならない。 セマフォは \fBsem_post\fP(3) と \fBsem_wait\fP(3) を使って操作できる。 セマフォがもはや必要なくなったときや、 セマフォが置かれているメモリーを解放する前には、 \fBsem_destroy\fP(3) を使ってセマフォを破棄すべきである。 @@ -92,22 +91,19 @@ POSIX セマフォ API を使用したプログラムは \fIcc \-pthread\fP で Linux では、名前付きセマフォは仮想ファイルシステム (virtual file system) 内に \fBsem.\fP\fIsomename\fP という形の名前で作成される。仮想ファイルシステムは通常 \fI/dev/shm\fP 以下にマウントされる。 (これが、セマフォの名前の文字数の上限が \fBNAME_MAX\fP ではなく \fBNAME_MAX\fP\fI\-4\fP となっている理由である。) - +.PP Linux 2.6.19 以降では、このディレクトリ配下のファイルに対して ACL を 設定でき、オブジェクトへの許可をユーザー単位、グループ単位で制御することが できる。 -.SH 準拠 -POSIX.1\-2001. .SH 注意 System V セマフォ (\fBsemget\fP(2), \fBsemop\fP(2) など) は古いセマフォ API である。 POSIX セマフォは System V よりも 簡単で、うまく設計されたインターフェースを提供している。 一方で、POSIX セマフォは System V セマフォと比べると 利用できるシステムが少ない (特に、古いシステムでは少ない)。 -.SH 例 +.SH EXAMPLES 各種の POSIX セマフォ関数を使用した例が \fBsem_wait\fP(3) に記載されている。 .SH 関連項目 \fBsem_close\fP(3), \fBsem_destroy\fP(3), \fBsem_getvalue\fP(3), \fBsem_init\fP(3), \fBsem_open\fP(3), \fBsem_post\fP(3), \fBsem_unlink\fP(3), \fBsem_wait\fP(3), -\fBpthreads\fP(7) +\fBpthreads\fP(7), \fBshm_overview\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/shm_overview.7 b/manual/LDP_man-pages/draft/man7/shm_overview.7 index bd54ddca..1967b627 100644 --- a/manual/LDP_man-pages/draft/man7/shm_overview.7 +++ b/manual/LDP_man-pages/draft/man7/shm_overview.7 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (C) 2008, Linux Foundation, written by Michael Kerrisk .\" .\" @@ -34,12 +33,12 @@ .\" all rights reserved. .\" Translated 2008-08-21, Akihiro MOTOKI , LDP v3.04 .\" -.TH SHM_OVERVIEW 7 2010\-09\-10 Linux "Linux Programmer's Manual" +.TH SHM_OVERVIEW 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 shm_overview \- POSIX 共有メモリーの概要 .SH 説明 POSIX 共有メモリー API を使用すると、メモリーのある領域を共有して、 プロセス間で情報をやり取りすることができる。 - +.PP この API では以下のインターフェースが採用されている。 .TP 15 \fBshm_open\fP(3) @@ -79,14 +78,13 @@ POSIX 共有メモリーオブジェクトはカーネル内で保持される POSIX 共有メモリー API を使用したプログラムは \fIcc \-lrt\fP でコンパイルし、リアルタイムライブラリ \fIlibrt\fP とリンクしなければならない。 .SS ファイルシステム経由での共有メモリーオブジェクトへのアクセス -Linux では、共有メモリーオブジェクトは通常 \fI/dev/shm\fP 以下にマウントされる仮想ファイルシステム (\fItmpfs\fP) -内に作成される。 カーネル 2.6.19 以降の Linux では、 仮想ファイルシステム内のオブジェクトの許可属性の制御に、 アクセス制御リスト -(ACL; access control lists) を使うことができる。 -.SH 準拠 -POSIX.1\-2001. +On Linux, shared memory objects are created in a (\fItmpfs\fP(5)) virtual +filesystem, normally mounted under \fI/dev/shm\fP. Since kernel 2.6.19, Linux +supports the use of access control lists (ACLs) to control the permissions +of objects in the virtual filesystem. .SH 注意 通常は、共有メモリーオブジェクトにアクセスするプロセスは、 POSIX セマフォなどを使ってプロセス間で同期をとらなければならない。 - +.PP System V 共有メモリー (\fBshmget\fP(2), \fBshmop\fP(2) など) は古い共有メモリー API である。 POSIX 共有メモリーは、より簡単で、うまく設計されたインターフェースを提供している。 一方で、POSIX 共有メモリーは System V 共有メモリーと比べると 利用できるシステムが少ない (特に、古いシステムでは少ない)。 @@ -95,6 +93,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/sigevent.7 b/manual/LDP_man-pages/draft/man7/sigevent.7 index aec3a171..9569014c 100644 --- a/manual/LDP_man-pages/draft/man7/sigevent.7 +++ b/manual/LDP_man-pages/draft/man7/sigevent.7 @@ -33,30 +33,32 @@ .\" all rights reserved. .\" Translated 2013-07-31, Akihiro MOTOKI .\" -.TH SIGEVENT 7 2011\-09\-09 GNU "Linux Programmer's Manual" +.TH SIGEVENT 7 2020\-11\-01 GNU "Linux Programmer's Manual" .SH 名前 sigevent \- 非同期ルーチンからの通知用の構造体 .SH 書式 .nf - -union sigval { /* Data passed with notification */ - int sival_int; /* Integer value */ - void *sival_ptr; /* Pointer value */ +#include +.PP +union sigval { /* Data passed with notification */ + int sival_int; /* Integer value */ + void *sival_ptr; /* Pointer value */ }; - +.PP struct sigevent { - int sigev_notify; /* Notification method */ - int sigev_signo; /* Notification signal */ - union sigval sigev_value; /* Data passed with - notification */ - void (*sigev_notify_function) (union sigval); - /* Function used for thread - notification (SIGEV_THREAD) */ - void *sigev_notify_attributes; - /* Attributes for notification thread - (SIGEV_THREAD) */ - pid_t sigev_notify_thread_id; - /* ID of thread to signal (SIGEV_THREAD_ID) */ + int sigev_notify; /* Notification method */ + int sigev_signo; /* Notification signal */ + union sigval sigev_value; + /* Data passed with notification */ + void (*sigev_notify_function) (union sigval); + /* Function used for thread + notification (SIGEV_THREAD) */ + void *sigev_notify_attributes; + /* Attributes for notification thread + (SIGEV_THREAD) */ + pid_t sigev_notify_thread_id; + /* ID of thread to signal + (SIGEV_THREAD_ID); Linux\-specific */ }; .fi .SH 説明 @@ -68,7 +70,7 @@ struct sigevent { 共用体の一部として定義されているものもある。 プログラムは、 \fIsigev_notify\fP で指定された値に応じたフィールドだけを利用すべきである。 .PP \fIsigev_notify\fP フィールドは、通知をどのように処理すべきかを指定する。 このフィールドは、以下のいずれかの値である。 -.TP 8 +.TP \fBSIGEV_NONE\fP 「空 (null)」の通知。 イベントが発生時には何もしないこと。 .TP @@ -77,7 +79,7 @@ struct sigevent { .IP \fBsigaction\fP(2) の \fBSA_SIGINFO\fP フラグを使った登録されたシグナルハンドラーによりシグナルが捕捉されると、 シグナルハンドラーの 2 番目の引き数として渡された \fIsiginfo_t\fP 構造体の以下のフィールドが設定される。 -.RS 8 +.RS .TP 10 \fIsi_code\fP このフィールドには通知を配送した API に応じた決まる値が設定される。 @@ -103,12 +105,10 @@ API によっては \fIsiginfo_t\fP 構造体の他のフィールドが設定 \fBSIGEV_THREAD_ID\fP (Linux 固有) .\" | SIGEV_SIGNAL vs not? 現在のところ POSIX でのみ使用されている。 \fBtimer_create\fP(2) 参照。 -.SH 準拠 -POSIX.1\-2001. .SH 関連項目 \fBtimer_create\fP(2), \fBaio_fsync\fP(3), \fBaio_read\fP(3), \fBaio_write\fP(3), \fBgetaddrinfo_a\fP(3), \fBlio_listio\fP(3), \fBmq_notify\fP(3), \fBaio\fP(7), \fBpthreads\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/signal.7 b/manual/LDP_man-pages/draft/man7/signal.7 deleted file mode 100644 index 8cf0b4a1..00000000 --- a/manual/LDP_man-pages/draft/man7/signal.7 +++ /dev/null @@ -1,606 +0,0 @@ -'\" t -.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) -.\" and Copyright (c) 2002, 2006 by Michael Kerrisk -.\" and Copyright (c) 2008 Linux Foundation, written by 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 Sat Jul 24 17:34:08 1993 by Rik Faith (faith@cs.unc.edu) -.\" Modified Sun Jan 7 01:41:27 1996 by Andries Brouwer (aeb@cwi.nl) -.\" Modified Sun Apr 14 12:02:29 1996 by Andries Brouwer (aeb@cwi.nl) -.\" Modified Sat Nov 13 16:28:23 1999 by Andries Brouwer (aeb@cwi.nl) -.\" Modified 10 Apr 2002, by Michael Kerrisk -.\" Modified 7 Jun 2002, by Michael Kerrisk -.\" Added information on real-time signals -.\" Modified 13 Jun 2002, by Michael Kerrisk -.\" Noted that SIGSTKFLT is in fact unused -.\" 2004-12-03, Modified mtk, added notes on RLIMIT_SIGPENDING -.\" 2006-04-24, mtk, Added text on changing signal dispositions, -.\" signal mask, and pending signals. -.\" 2008-07-04, mtk: -.\" Added section on system call restarting (SA_RESTART) -.\" Added section on stop/cont signals interrupting syscalls. -.\" 2008-10-05, mtk: various additions -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1997 Takafumi Naka -.\" and 2005-2008 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 1997-02-13, Takafumi Naka -.\" Modified 1999-06-22, Tatsuo SEKINE -.\" Modified 1999-07-18, Takafumi Naka -.\" Modified 1999-12-06, NAKANO Takeo , LDP v1.28 -.\" Updated 2003-07-24, Kentaro Shirakata -.\" Updated 2005-02-23, Akihiro MOTOKI -.\" Updated 2006-07-28, Akihiro MOTOKI , LDP v2.36 -.\" Updated 2007-05-28, Akihiro MOTOKI , LDP v2.50 -.\" Updated 2007-09-08, Akihiro MOTOKI , LDP v2.64 -.\" Updated 2008-08-11, Akihiro MOTOKI , LDP v3.05 -.\" Updated 2008-11-21, Akihiro MOTOKI , LDP v3.13 -.\" Updated 2010-04-10, Akihiro MOTOKI , LDP v3.24 -.\" Updated 2012-05-29, Akihiro MOTOKI -.\" Updated 2013-03-26, Akihiro MOTOKI -.\" -.TH SIGNAL 7 2015\-02\-01 Linux "Linux Programmer's Manual" -.SH 名前 -signal \- シグナルの概要 -.SH 説明 -Linux は POSIX 信頼シグナル (reliable signal; 以後 "標準シグナル"と表記) と POSIX -リアルタイムシグナルの両方に対応している。 -.SS シグナル処理方法 -シグナルはそれぞれ現在の「処理方法 (disposition)」を保持しており、 この処理方法によりシグナルが配送された際にプロセスが -どのような振舞いをするかが決まる。 - -後述の表の "動作" の欄のエントリーは各シグナルのデフォルトの 処理方法を示しており、以下のような意味を持つ。 -.IP Term -デフォルトの動作はプロセス終了。 -.IP Ign -デフォルトの動作はこのシグナルの無視。 -.IP Core -デフォルトの動作はプロセス終了とコアダンプ出力 (\fBcore\fP(5) 参照)。 -.IP Stop -デフォルトの動作はプロセスの一時停止。 -.IP Cont -デフォルトの動作は、プロセスが停止中の場合にその実行の再開。 -.PP -プロセスは、 \fBsigaction\fP(2) や \fBsignal\fP(2) を使って、シグナルの処理方法を変更することができる -(\fBsignal\fP(2) の方がシグナルハンドラーを設定する際の移植性が低い; 詳細は \fBsignal\fP(2) を参照)。 -シグナルの配送時に起こる動作として プロセスが選択できるのは、次のいずれか一つである。 デフォルトの動作を実行する、シグナルを無視する、 -\fIシグナルハンドラー (signal handler)\fP でシグナルを捕捉する。シグナルハンドラーとは、シグナル配送時に -自動的に起動されるプログラマ定義の関数である。 (デフォルトでは、シグナルハンドラーは通常のプロセスのスタック上で起動される。 -シグナルハンドラーが代替スタック (alternate stack) を使用するように設定する -こともできる。代替スタックを使用するように設定する方法と、どのような際に 代替スタックが役に立つかについての議論については -\fBsigaltstack\fP(2) を参照のこと。 - -シグナルの処理方法はプロセス単位の属性である。 マルチスレッドのアプリケーションでは、あるシグナルの処理方法は 全てのスレッドで同じである。 - -\fBfork\fP(2) 経由で作成された子プロセスは、親プロセスのシグナルの処理方法の コピーを継承する。 \fBexecve\fP(2) -の前後で、ハンドラーが設定されているシグナルの処理方法はデフォルトにリセットされ、 無視が設定されているシグナルの処理方法は変更されずそのままとなる。 -.SS シグナルの送信 -以下のシステムコールとライブラリ関数を使って、 呼び出し者はシグナルを送信することができる。 -.TP 16 -\fBraise\fP(3) -呼び出したスレッドにシグナルを送る。 -.TP -\fBkill\fP(2) -指定されたプロセスや、指定されたプロセスグループの全メンバー、 システムの全プロセスにシグナルを送る。 -.TP -\fBkillpg\fP(2) -指定されたプロセスグループの全メンバーにシグナルを送る。 -.TP -\fBpthread_kill\fP(3) -呼び出し者と同じプロセス内の指定された POSIX スレッドにシグナルを送る。 -.TP -\fBtgkill\fP(2) -指定されたプロセス内の指定されたスレッドにシグナルを送る (このシステムコールを使って \fBpthread_kill\fP(3) は実装されている)。 -.TP -\fBsigqueue\fP(3) -指定されたプロセスに付属データとともにリアルタイムシグナルを送る。 -.SS シグナルが捕捉されるのを待つ -以下のシステムコールを使って、シグナルが捕捉されるまで 呼び出したプロセスやスレッドの実行を中断 (suspend) することができる -(ハンドラーが設定されていないシグナルによりそのプロセスが終了した 場合にも実行の停止は終了する)。 -.TP 16 -\fBpause\fP(2) -何かシグナルが捕捉されるまで実行を停止する。 -.TP -\fBsigsuspend\fP(2) -一時的にシグナルマスク (下記参照) を変更し、 マスクされていないシグナルのいずれかが捕捉されるまで 実行を中断する。 -.SS シグナルの同期受信 -シグナルハンドラー経由でシグナルを非同期 (asynchronously) で捕捉する以外にも、 シグナルを同期 (synchronously) -して受け付けることもできる。 同期して受け付けるとは、シグナルが配送されるまで実行を停止 (block) -するということである。シグナルを受け付けた際に、カーネルは そのシグナルに関する情報を呼び出し者に返す。 これを行う一般的な方法が二つある。 -.IP * 2 -\fBsigwaitinfo\fP(2), \fBsigtimedwait\fP(2), \fBsigwait\fP(3) -は、指定されたシグナル集合のシグナルの一つが配送されるまで実行を中断する。 どのシステムコールや関数でも、配送されたシグナルに関する情報が返される。 -.IP * -\fBsignalfd\fP(2) が返すファイルディスクリプターを使うと、呼び出し元に配送された シグナルに関する情報を読み出すことができる。 -このファイルディスクリプターからの \fBread\fP(2) は、 \fBsignalfd\fP(2) -の呼び出し時に指定されたシグナル集合のシグナルの一つが呼び出し元に 配送されるまで停止 (block) する。 \fBread\fP(2) -が返すバッファーにはシグナルに関する情報を格納した構造体が入っている。 -.SS シグナルマスクと処理待ちシグナル -シグナルは \fIブロック (block)\fP されることがある。ブロックされると、そのシグナルは その後ブロックを解除されるまで配送されなくなる。 -シグナルが生成されてから配送されるまでの間、そのシグナルは \fI処理待ち (pending)\fP であると呼ばれる。 - -プロセス内の各スレッドは、それぞれ独立な \fIシグナルマスク (signal mask)\fP を持つ。シグナルマスクはそのスレッドが現在ブロックしている -シグナル集合を示すものである。 スレッドは、 \fBpthread_sigmask\fP(3) を使って自分のシグナルマスクを操作できる。 -伝統的なシングルスレッドのアプリケーションでは、 \fBsigprocmask\fP(2) を使って、シグナルマスクを操作できる。 - -\fBfork\fP(2) 経由で作成された子プロセスは親プロセスのシグナルマスクのコピーを継承する。 \fBexecve\fP(2) -の前後でシグナルマスクは保持される。 - -生成されるシグナル (したがって処理待ちとなるシグナル) には、 プロセス全体宛てと特定のスレッド宛てがある。 例えば、プロセス全体宛てのシグナルは -\fBkill\fP(2) を使って送信される。 特定のマシン語の命令の実行の結果として生成される、 \fBSIGSEGV\fP や \fBSIGFPE\fP -などのシグナルは、スレッド宛てとなる。 また、 \fBpthread_kill\fP(3) を使って特定のスレッド宛てに生成されたシグナルも -スレッド宛てとなる。 プロセス宛てのシグナルは、そのシグナルをブロックしていないスレッドのうち -いずれかの一つに配送することができる。そのシグナルをブロックしていない スレッドが複数ある場合、シグナルを配送するスレッドはカーネルが -無作為に選択する。 - -スレッドは、 \fBsigpending\fP(2) を使って、現在処理待ちのシグナル集合を取得することができる。 -この集合は、プロセス宛ての処理待ちシグナルと 呼び出したスレッド宛てのシグナルの両方から構成される。 - -\fBfork\fP(2) 経由で作成された子プロセスでは、処理待ちのシグナル集合は空の集合で初期化される。 \fBexecve\fP(2) -の前後で、処理待ちのシグナル集合は保持される。 -.SS 標準シグナル -Linux は以下に示す標準シグナルに対応している。シグナル番号の一部はアーキテクチャー依存であり、"値" 欄に示す通りである。 -(3つの値が書かれているものは、 1つ目が alpha と sparc で通常有効な値、 真ん中が x86, arm -や他のほとんどのアーキテクチャーでの有効な値、最後が mips での値である。 (parisc での値は記載されて\fIいない\fP。 parisc -でのシグナル番号は Linux カーネルソースを参照してほしい)。 \- はそのアーキテクチャーにおいて対応するシグナルがないことを示す。) - -最初に、POSIX.1\-1990 に定義されているシグナルを示す。 -.TS -l c c l -____ -lB c c l. -シグナル 値 動作 コメント -SIGHUP \01 Term 制御端末(controlling terminal)のハングアップ検出、 - または制御しているプロセスの死 -SIGINT \02 Term キーボードからの割り込み (Interrupt) -SIGQUIT \03 Core キーボードによる中止 (Quit) -SIGILL \04 Core 不正な命令 -SIGABRT \06 Core \fBabort\fP(3) からの中断 (Abort) シグナル -SIGFPE \08 Core 浮動小数点例外 -SIGKILL \09 Term Kill シグナル -SIGSEGV 11 Core 不正なメモリー参照 -SIGPIPE 13 Term パイプ破壊: - 読み手の無いパイプへの書き出し -SIGALRM 14 Term \fBalarm\fP(2) からのタイマーシグナル -SIGTERM 15 Term 終了 (termination) シグナル -SIGUSR1 30,10,16 Term ユーザー定義シグナル 1 -SIGUSR2 31,12,17 Term ユーザー定義シグナル 2 -SIGCHLD 20,17,18 Ign 子プロセスの一時停止 (stop) または終了 -SIGCONT 19,18,25 Cont 一時停止 (stop) からの再開 -SIGSTOP 17,19,23 Stop プロセスの一時停止 (stop) -SIGTSTP 18,20,24 Stop 端末より入力された一時停止 (stop) -SIGTTIN 21,21,26 Stop バックグランドプロセスの端末入力 -SIGTTOU 22,22,27 Stop バックグランドプロセスの端末出力 -.TE - -シグナル \fBSIGKILL\fP と \fBSIGSTOP\fP はキャッチ、ブロック、無視できない。 - -次に、 POSIX.1\-1990 標準にはないが、 SUSv2 と POSIX.1\-2001 に記述されているシグナルを示す。 -.TS -l c c l -____ -lB c c l. -シグナル 値 動作 コメント -SIGBUS 10,7,10 Core バスエラー (不正なメモリーアクセス) -SIGPOLL Term ポーリング可能なイベント (Sys V)。 - \fBSIGIO\fP と同義 -SIGPROF 27,27,29 Term profiling タイマーの時間切れ -SIGSYS 12,31,12 Core ルーチンへの引き数が不正 (SVr4) -SIGTRAP 5 Core トレース/ブレークポイント トラップ -SIGURG 16,23,21 Ign ソケットの緊急事態 (urgent condition) (4.2BSD) -SIGVTALRM 26,26,28 Term 仮想アラームクロック (4.2BSD) -SIGXCPU 24,24,30 Core CPU時間制限超過 (4.2BSD) -SIGXFSZ 25,25,31 Core ファイルサイズ制限の超過 (4.2BSD) -.TE - -Linux 2.2 以前では、 \fBSIGSYS\fP, \fBSIGXCPU\fP, \fBSIGXFSZ\fP および SPARC と MIPS -以外のアーキテクチャーでの \fBSIGBUS\fP のデフォルトの振る舞いは (コアダンプ出力なしの) プロセス終了であった。 (他の UNIX -システムにも \fBSIGXCPU\fP と \fBSIGXFSZ\fP のデフォルトの動作がコアダンプなしのプロセス終了のものがある。) Linux 2.4 -では、POSIX.1\-2001 での要求仕様に準拠して、 これらのシグナルで、プロセスを終了させ、コアダンプを出力する ようになっている。 - -次にその他の各種シグナルを示す。 -.TS -l c c l -____ -lB c c l. -シグナル 値 動作 コメント -SIGIOT 6 Core IOT トラップ。 \fBSIGABRT\fP と同義 -SIGEMT 7,\-,7 Term -SIGSTKFLT \-,16,\- Term 数値演算プロセッサにおけるスタックフォルト (未使用) -SIGIO 23,29,22 Term 入出力が可能になった (4.2BSD) -SIGCLD \-,\-,18 Ign \fBSIGCHLD\fP と同義 -SIGPWR 29,30,19 Term 電源喪失 (Power failure) (System V) -SIGINFO 29,\-,\- \fBSIGPWR\fP と同義 -SIGLOST \-,\-,\- Term ファイルロックが失われた (未使用) -SIGWINCH 28,28,20 Ign ウィンドウ リサイズ シグナル (4.3BSD, Sun) -SIGUNUSED \-,31,\- Core \fBSIGSYS\fP と同義 -.TE - -(シグナル 29 は alpha では \fBSIGINFO\fP / \fBSIGPWR\fP だが、sparc では \fBSIGLOST\fP である。) - -\fBSIGEMT\fP は POSIX.1\-2001 に規定されていないが、 その他の多くの UNIX システムに存在する。 -デフォルトの動作は多くの場合、コアダンプ出力を伴うプロセスの終了である。 - -\fBSIGPWR\fP は (POSIX.1\-2001 に規定されていないが) このシグナルが存在する 他の UNIX -システムでは多くの場合、デフォルト動作は無視である。 - -\fBSIGIO\fP は (POSIX.1\-2001 に規定されていないが) いくつかの他の UNIX システムでは デフォルト動作は無視である。 - -.\" parisc is the only exception: SIGSYS is 12, SIGUNUSED is 31 -\fBSIGUNUSED\fP が定義されている場合には、ほとんどのアーキテクチャーで \fBSIGSYS\fP の同義語となっている。 -.SS リアルタイムシグナル -Linux はリアルタイムシグナルをサポートしている。 リアルタイムシグナルは元々 POSIX.1b のリアルタイム拡張で定義されて -いるものであり、現在では POSIX.1\-2001 に含まれている。 対応しているリアルタイムシグナルの範囲は、マクロ \fBSIGRTMIN\fP と -\fBSIGRTMAX\fP で定義される。 POSIX.1\-2001 では、少なくとも \fB_POSIX_RTSIG_MAX\fP (8) -個のリアルタイムシグナルに対応した実装が要求されている。 -.PP -Linux は、32 個の異なるリアルタイムシグナルに対応しており、 その番号は 33 から 64 である。 しかしながら、glibc の POSIX -スレッド実装は、 内部で 2個 (NPTL の場合) か 3個 (LinuxThreads の場合) の リアルタイムシグナルを使用しており -(\fBpthreads\fP(7) 参照)、 \fBSIGRTMIN\fP の値を適切に (34 か 35 に) 調整する。 -利用可能なリアルタイムシグナルの範囲は glibc のスレッド実装により 異なるし (使用するカーネルと glibc により実行時にも変化する)、 -UNIX システムの種類によっても異なる。したがって、 プログラムでは「ハードコーディングした数字を使ってのリアルタイムシグナルの -参照は決してすべきではなく」、代わりに \fBSIGRTMIN\fP+n の形で参照すべきである。また、 \fBSIGRTMIN\fP+n が -\fBSIGRTMAX\fP を超えていないかのチェックを (実行時に) 適切に行うべきである。 -.PP -標準シグナルと異なり、リアルタイムシグナルには 事前に定義された意味はない。 リアルタイムシグナルの全部をアプリケーションで定義した用途に使える。 -.PP -ハンドリングしないリアルタイムシグナルのデフォルトの動作は 受信したプロセスの終了である。 -.PP -リアルタイムシグナルは以下の特徴がある: -.IP 1. 4 -リアルタイムシグナルは複数の実体をキューに入れることができる。 一方、標準シグナルの場合、そのシグナルがブロックされている間に -同じシグナルの複数のインスタンスが配送されても、 1 つだけがキューに入れられる。 -.IP 2. 4 -シグナルが \fBsigqueue\fP(3) を用いて送信された場合、 付属データ (整数かポインター) をシグナルと共に送信できる。 受信側プロセスが -\fBsigaction\fP(2) に \fBSA_SIGINFO\fP フラグを指定してシグナルハンドラーを設定した場合、 このデータは -\fIsiginfo_t\fP 構造体の \fIsi_value\fP フィールド経由でハンドラーの第 2 引き数として渡され、 利用することができる。 -さらに、この構造体の \fIsi_pid\fP と \fIsi_uid\fP フィールドでシグナルを送信したプロセスの PID と実ユーザー ID を -得ることができる。 -.IP 3. 4 -リアルタイムシグナルでは配送される順序が保証される。 同じタイプのリアルタイムシグナルは送信された順番に到着する。 -異なるリアルタイムシグナルが一つのプロセスに送信された場合、 番号の小さいシグナルから先に到着する。 -(つまり小さい番号のシグナルが高い優先順位を持つ。) 対照的に、一つのプロセスに対して複数の標準シグナルが処理待ちとなった場合、 -これらのシグナルが配送される順序は不定である。 -.PP -一つのプロセスに対して標準シグナルとリアルタイムシグナルの両方が 処理待ちの場合、POSIX はどちらが先に配送されるかを規定していない。 Linux -では、他の多くの実装と同様、このような場合には 標準シグナルが優先される。 -.PP -POSIX によれば、1 プロセス毎に最低 \fB_POSIX_SIGQUEUE_MAX\fP (32) -個のリアルタイムシグナルをキューに入れられるべきとしている。 しかし、 Linux では違った実装になっている。カーネル 2.6.7 までは -(2.6.7 を含む)、全プロセスでキューに入っているリアルタイムシグナル の数の合計についてシステム全体での制限がある。 この制限は -\fI/proc/sys/kernel/rtsig\-max\fP ファイルで見ることができ、 (権限があれば) 変更もできる。 関係するファイルとして、 -\fI/proc/sys/kernel/rtsig\-nr\fP を見ることで、いくつのリアルタイムシグナルが現在キューに入っているかを 知ることができる。 -Linux 2.6.8 で、これらの \fI/proc\fP 経由のインターフェースは、 \fBRLIMIT_SIGPENDING\fP -リソース制限に置き換えられた。 これは、キューに入るシグナル数に関してユーザー単位に 上限を指定するものである。 詳しくは -\fBsetrlimit\fP(2) を参照。 -.SS "非同期シグナルで安全な関数 (async\-signal\-safe functions)" -.PP -シグナルハンドラー関数には非常に注意しなければならない。 他の場所の処理はプログラム実行の任意の箇所で中断される可能性があるためである。 POSIX -には「安全な関数 (safe function)」という概念がある。 シグナルが安全でない関数の実行を中断し、かつ \fIhandler\fP -が安全でない関数を呼び出した場合、プログラムの挙動は未定義である。 - -POSIX.1\-2004 (POSIX.1\-2001 Technical Corrigendum (正誤表) 2 とも言う) では、 -シグナルハンドラー内での安全な呼び出しを保証することが必須の関数として 以下が規定されている。 - -.in +4 -.nf -_Exit() -_exit() -abort() -accept() -access() -aio_error() -aio_return() -aio_suspend() -alarm() -bind() -cfgetispeed() -cfgetospeed() -cfsetispeed() -cfsetospeed() -chdir() -chmod() -chown() -clock_gettime() -close() -connect() -creat() -dup() -dup2() -execle() -execve() -fchmod() -fchown() -fcntl() -fdatasync() -fork() -fpathconf() -fstat() -fsync() -ftruncate() -getegid() -geteuid() -getgid() -getgroups() -getpeername() -getpgrp() -getpid() -getppid() -getsockname() -getsockopt() -getuid() -kill() -link() -listen() -lseek() -lstat() -mkdir() -mkfifo() -open() -pathconf() -pause() -pipe() -poll() -posix_trace_event() -pselect() -raise() -read() -readlink() -recv() -recvfrom() -recvmsg() -rename() -rmdir() -select() -sem_post() -send() -sendmsg() -sendto() -setgid() -setpgid() -setsid() -setsockopt() -setuid() -shutdown() -sigaction() -sigaddset() -sigdelset() -sigemptyset() -sigfillset() -sigismember() -signal() -sigpause() -sigpending() -sigprocmask() -sigqueue() -sigset() -sigsuspend() -sleep() -sockatmark() -socket() -socketpair() -stat() -symlink() -sysconf() -tcdrain() -tcflow() -tcflush() -tcgetattr() -tcgetpgrp() -tcsendbreak() -tcsetattr() -tcsetpgrp() -time() -timer_getoverrun() -timer_gettime() -timer_settime() -times() -umask() -uname() -unlink() -utime() -wait() -waitpid() -write() -.fi -.in -.PP -POSIX.1\-2008 では、上記のリストのうち fpathconf(), pathconf(), sysconf() -が削除され、以下の関数が追加された。 -.PP -.in +4n -.nf -execl() -execv() -faccessat() -fchmodat() -fchownat() -fexecve() -fstatat() -futimens() -linkat() -mkdirat() -mkfifoat() -mknod() -mknodat() -openat() -readlinkat() -renameat() -symlinkat() -unlinkat() -utimensat() -utimes() -.fi -.in -.SS シグナルハンドラーによるシステムコールやライブラリ関数への割り込み -システムコールやライブラリが停止 (block) している間にシグナルハンドラーが 起動されると、以下のどちらかとなる。 -.IP * 2 -シグナルが返った後、呼び出しは自動的に再スタートされる。 -.IP * -呼び出しはエラー \fBEINTR\fP で失敗する。 -.PP -これらの二つの挙動のうちどちらが起こるかは、インターフェイスにより依存し、 シグナルハンドラーが \fBSA_RESTART\fP フラグ -(\fBsigaction\fP(2) 参照) を使って設定されていたかにも依存する。 詳細は UNIX システムによって異なる。 Linux -における詳細を以下で説明する。 - -.\" The following system calls use ERESTARTSYS, -.\" so that they are restartable -以下のインターフェイスのいずれかの呼び出しが停止している間に シグナルハンドラーにより割り込まれた場合、 \fBSA_RESTART\fP -フラグが使用されていれば、シグナルハンドラーが返った後に その呼び出しは自動的に再スタートされることになる。 それ以外の場合は、その呼び出しはエラー -\fBEINTR\fP で失敗することになる。 -.RS 4 -.IP * 2 -.\" commit 1ca39ab9d21ac93f94b9e3eb364ea9a5cf2aba06 -\fBread\fP(2), \fBreadv\fP(2), \fBwrite\fP(2), \fBwritev\fP(2), \fBioctl\fP(2) の「遅い -(slow)」デバイスに対する呼び出し。 ここでいう「遅い」デバイスとは、I/O 呼び出しが無期限に停止 (block) する -可能性のあるデバイスのことで、例としては端末、パイプ、ソケットがある (この定義では、ディスクは遅いデバイスではない)。 \fBeventfd\fP(2), -\fBsignalfd\fP(2), \fBtimerfd\fP(2), \fBfanotify\fP(7), \fBinotify\fP(7) -のファイルディスクリプターに対する \fBread\fP(2) も「遅い」操作と考えられる。 (Linux 3.8 より前であh, \fBinotify\fP(7) -ファイルディスクリプターからの読み出しは再開できなかった。シグナルハンドラーによって割り込まれた場合、 \fBread\fP(2) は常にエラー -\fBEINTR\fP で失敗していた。) 遅いデバイスに対する I/O 呼び出しが、 シグナルハンドラーにより割り込まれた時点までに何らかのデータを -すでに転送していれば、呼び出しは成功ステータス (通常は、転送されたバイト数) を返すことだろう。 -.IP * -停止 (block) する可能性のある \fBopen\fP(2) (例えば、FIFO のオープン時; \fBfifo\fP(7) 参照)。 -.IP * -\fBwait\fP(2), \fBwait3\fP(2), \fBwait4\fP(2), \fBwaitid\fP(2), \fBwaitpid\fP(2). -.IP * -.\" If a timeout (setsockopt()) is in effect on the socket, then these -.\" system calls switch to using EINTR. Consequently, they and are not -.\" automatically restarted, and they show the stop/cont behavior -.\" described below. (Verified from 2.6.26 source, and by experiment; mtk) -.\" FIXME . What about sendmmsg()? -ソケットインターフェイス: \fBaccept\fP(2), \fBconnect\fP(2), \fBrecv\fP(2), \fBrecvfrom\fP(2), -\fBrecvmmsg\fP(2), \fBrecvmsg\fP(2), \fBsend\fP(2), \fBsendto\fP(2), \fBsendmsg\fP(2). -但し、ソケットにタイムアウトが設定されていない場合 (下記参照)。 -.IP * -ファイルロック用インターフェイス: \fBflock\fP(2), \fBfcntl\fP(2) の \fBF_SETLKW\fP と \fBF_OFD_SETLKW\fP -操作。 -.IP * -POSIX メッセージキューインターフェイス: \fBmq_receive\fP(3), \fBmq_timedreceive\fP(3), -\fBmq_send\fP(3), \fBmq_timedsend\fP(3). -.IP * -\fBfutex\fP(2) \fBFUTEX_WAIT\fP (Linux 2.6.22 以降; それ以前は常に \fBEINTR\fP で失敗していた)。 -.IP * -\fBgetrandom\fP(2). -.IP * -\fBpthread_mutex_lock\fP(3), \fBpthread_cond_wait\fP(3) と関連 API。 -.IP * -POSIX セマフォインターフェイス: \fBsem_wait\fP(3), \fBsem_timedwait\fP(3) (Linux 2.6.22 以降; -それ以前は常に \fBEINTR\fP で失敗していた)。 -.RE -.PP -.\" These are the system calls that give EINTR or ERESTARTNOHAND -.\" on interruption by a signal handler. -以下のインターフェイスは、 \fBSA_RESTART\fP を使っているどうかに関わらず、シグナルハンドラーにより割り込まれた後、 -再スタートすることは決してない。 これらは、シグナルハンドラーにより割り込まれると、常にエラー \fBEINTR\fP で失敗する。 -.RS 4 -.IP * 2 -\fBsetsockopt\fP(2) を使ってタイムアウト (\fBSO_RCVTIMEO\fP) が設定されている「入力」ソケットインターフェース: -\fBaccept\fP(2), \fBrecv\fP(2), \fBrecvfrom\fP(2), \fBrecvmmsg\fP(2) (NULL 以外の -\fItimeout\fP 引き数も指定されている場合), \fBrecvmsg\fP(2) -.IP * -.\" FIXME . What about sendmmsg()? -\fBsetsockopt\fP(2) を使ってタイムアウト (\fBSO_SNDTIMEO\fP) が設定されているソケットインターフェース: -\fBconnect\fP(2), \fBsend\fP(2), \fBsendto\fP(2), \fBsendmsg\fP(2) -.IP * -シグナル待ちに使われるインターフェイス: \fBpause\fP(2), \fBsigsuspend\fP(2), \fBsigtimedwait\fP(2), -\fBsigwaitinfo\fP(2). -.IP * -ファイルディスクリプター多重インターフェイス: \fBepoll_wait\fP(2), \fBepoll_pwait\fP(2), \fBpoll\fP(2), -\fBppoll\fP(2), \fBselect\fP(2), \fBpselect\fP(2). -.IP * -.\" On some other systems, SA_RESTART does restart these system calls -System V IPC インターフェイス: \fBmsgrcv\fP(2), \fBmsgsnd\fP(2), \fBsemop\fP(2), -\fBsemtimedop\fP(2). -.IP * -スリープ用のインターフェイス: \fBclock_nanosleep\fP(2), \fBnanosleep\fP(2), \fBusleep\fP(3). -.IP * -\fBio_getevents\fP(2). -.RE -.PP -\fBsleep\fP(3) 関数も、ハンドラーにより割り込まれた場合、決して再スタートされることはない。 しかし、成功となり、残っている停止時間を返す。 -.SS 一時停止シグナルによるシステムコールやライブラリ関数への割り込み -Linux では、シグナルハンドラーが設定されていない場合でも、 いくつかのブロッキング型のインターフェイスは、 プロセスが一時停止 (stop) -シグナルの一つにより停止され、 \fBSIGCONT\fP により再開された後に、エラー \fBEINTR\fP で失敗する可能性がある。 この挙動は -POSIX.1 で認められておらず、他のシステムでは起こらない。 - -この挙動を示す Linux のインターフェイスは以下の通りである。 -.RS 4 -.IP * 2 -\fBsetsockopt\fP(2) を使ってタイムアウト (\fBSO_RCVTIMEO\fP) が設定されている「入力」ソケットインターフェース: -\fBaccept\fP(2), \fBrecv\fP(2), \fBrecvfrom\fP(2), \fBrecvmmsg\fP(2) (NULL 以外の -\fItimeout\fP 引き数も指定されている場合), \fBrecvmsg\fP(2) -.IP * -.\" FIXME . What about sendmmsg()? -\fBsetsockopt\fP(2) を使ってタイムアウト (\fBSO_SNDTIMEO\fP) が設定されているソケットインターフェース: -\fBconnect\fP(2), \fBsend\fP(2), \fBsendto\fP(2), \fBsendmsg\fP(2) -.IP * 2 -\fBepoll_wait\fP(2), \fBepoll_pwait\fP(2). -.IP * -\fBsemop\fP(2), \fBsemtimedop\fP(2). -.IP * -\fBsigtimedwait\fP(2), \fBsigwaitinfo\fP(2). -.IP * -.\" commit 1ca39ab9d21ac93f94b9e3eb364ea9a5cf2aba06 -Linux 3.7 以前: \fBinotify\fP(7) ファイルディスクリプターからの \fBread\fP(2). -.IP * -Linux 2.6.21 以前: \fBfutex\fP(2) \fBFUTEX_WAIT\fP, \fBsem_timedwait\fP(3), -\fBsem_wait\fP(3). -.IP * -Linux 2.6.8 以前: \fBmsgrcv\fP(2), \fBmsgsnd\fP(2). -.IP * -Linux 2.4 以前: \fBnanosleep\fP(2). -.RE -.SH 準拠 -.\" It must be a *very* long time since this was true: -.\" .SH BUGS -.\" .B SIGIO -.\" and -.\" .B SIGLOST -.\" have the same value. -.\" The latter is commented out in the kernel source, but -.\" the build process of some software still thinks that -.\" signal 29 is -.\" .BR SIGLOST . -POSIX.1 (注記した内容以外)。 -.SH 関連項目 -\fBkill\fP(1), \fBgetrlimit\fP(2), \fBkill\fP(2), \fBkillpg\fP(2), -\fBrestart_syscall\fP(2), \fBrt_sigqueueinfo\fP(2), \fBsetitimer\fP(2), -\fBsetrlimit\fP(2), \fBsgetmask\fP(2), \fBsigaction\fP(2), \fBsigaltstack\fP(2), -\fBsignal\fP(2), \fBsignalfd\fP(2), \fBsigpending\fP(2), \fBsigprocmask\fP(2), -\fBsigreturn\fP(2), \fBsigsuspend\fP(2), \fBsigwaitinfo\fP(2), \fBabort\fP(3), -\fBbsd_signal\fP(3), \fBlongjmp\fP(3), \fBraise\fP(3), \fBpthread_sigqueue\fP(3), -\fBsigqueue\fP(3), \fBsigset\fP(3), \fBsigsetops\fP(3), \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.79 の一部である。 -プロジェクトの説明とバグ報告に関する情報は \%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 deleted file mode 100644 index c0199641..00000000 --- a/manual/LDP_man-pages/draft/man7/socket.7 +++ /dev/null @@ -1,539 +0,0 @@ -'\" t -.\" This man page is Copyright (C) 1999 Andi Kleen . -.\" 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, -.\" Added description of SO_ACCEPTCONN -.\" 2004-05-20, aeb, added SO_RCVTIMEO/SO_SNDTIMEO text. -.\" Modified, 27 May 2004, Michael Kerrisk -.\" Added notes on capability requirements -.\" A few small grammar fixes -.\" 2010-06-13 Jan Engelhardt -.\" 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 getpeername(), but then -.\" why is it necessary / how does it differ? -.\" SO_TIMESTAMPNS (2.6.22) -.\" Documentation/networking/timestamping.txt -.\" commit 92f37fd2ee805aa77925c1e64fd56088b46094fc -.\" Author: Eric Dumazet -.\" SO_TIMESTAMPING (2.6.30) -.\" Documentation/networking/timestamping.txt -.\" commit cb9eff097831007afb30d64373f29d99825d0068 -.\" Author: Patrick Ohly -.\" SO_WIFI_STATUS (3.3) -.\" commit 6e3e939f3b1bf8534b32ad09ff199d88800835a0 -.\" Author: Johannes Berg -.\" Also: SCM_WIFI_STATUS -.\" SO_NOFCS (3.4) -.\" commit 3bdc0eba0b8b47797f4a76e377dd8360f317450f -.\" Author: Ben Greear -.\" SO_GET_FILTER (3.8) -.\" commit a8fc92778080c845eaadc369a0ecf5699a03bef0 -.\" Author: Pavel Emelyanov -.\" SO_REUSEPORT (3.9) -.\" commit c617f398edd4db2b8567a28e899a88f8f574798d -.\" https://lwn.net/Articles/542629/ -.\" SO_LOCK_FILTER (3.9) -.\" commit d59577b6ffd313d0ab3be39cb1ab47e29bdc9182 -.\" Author: Vincent Bernat -.\" SO_SELECT_ERR_QUEUE (3.10) -.\" commit 7d4c04fc170087119727119074e72445f2bb192b -.\" Author: Keller, Jacob E -.\" SO_MAX_PACING_RATE (3.13) -.\" commit 62748f32d501f5d3712a7c372bbb92abc7c62bc7 -.\" SO_BPF_EXTENSIONS (3.14) -.\" commit ea02f9411d9faa3553ed09ce0ec9f00ceae9885e -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved. -.\" Translated 1999-12-06, NAKANO Takeo -.\" Updated 2003-01-20, Akihiro Motoki -.\" Updated 2005-02-23, Akihiro MOTOKI -.\" Updated 2005-10-05, Akihiro MOTOKI -.\" Updated 2005-12-05, Akihiro MOTOKI, Catch up to LDP man-pages 2.16 -.\" Updated 2005-12-26, Akihiro MOTOKI, Catch up to LDP man-pages 2.18 -.\" Updated 2006-04-15, Akihiro MOTOKI, Catch up to LDP man-pages 2.29 -.\" Updated 2007-01-05, Akihiro MOTOKI, Catch up to LDP man-pages 2.43 -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" Updated 2013-07-24, Akihiro MOTOKI -.\" -.TH SOCKET 7 2014\-07\-08 Linux "Linux Programmer's Manual" -.SH 名前 -socket \- Linux のソケットインターフェース -.SH 書式 -\fB#include \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 ソケットアドレス構造体 -各ソケットドメインにはそれぞれ独自のソケットアドレス形式があり、ドメイン固有のアドレス構造体を持っている。 -これらの構造体の先頭には、アドレス構造体の種類を示す整数の "family" フィールド (型は \fIsa_family_t\fP) がある。 -このフィールドにより、 すべてのソケットドメインで汎用的に使用されるシステムコール (例えば、 \fBconnect\fP(2), \fBbind\fP(2), -\fBaccept\fP(2), \fBgetsockname\fP(2), \fBgetpeername\fP(2) など) -が、特定のソケットアドレスのドメインを判定することができる。 - -任意の種類のソケットアドレスをソケット API のインターフェースに渡せるように、 \fIstruct sockaddr\fP 型が定義されている。 -この型の目的は、 純粋に、 ドメイン固有のソケットアドレスを 「汎用的な」型にキャストできるようにする点にある。 これにより、 ソケット API -呼び出しにおいて、 コンパイラが型の不一致の警告を出すのを避けることができる。 - -これに加えて、ソケット API ではデータ型 \fIstruct sockaddr_storage\fP が提供されている。 -サポートしているすべてのドメイン固有のソケットアドレス構造体を収容するのに、この型を使うことができる。 この型は十分な大きさがあり、(メモリー境界への) -アラインも適切に行われている (特に、 IPv6 ソケットアドレスを収容するのにも十分な大きさである)。 この構造体には次のフィールドがあり、 -このフィールドを使って、 この構造体に実際に格納されているソケットアドレスの型を特定することができる。 - -.in +4n -.nf - sa_family_t ss_family; -.fi -.in - -\fIsockaddr_storage\fP 構造体は、 ソケットアドレスを汎用的な方法で扱う必要があるプログラム (例えば、 IPv4 と IPv6 -の両方のソケットアドレスを扱う必要があるプログラム) で有用である。 -.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 を指定すること。 注釈がない限り、 \fIoptval\fP は \fIint\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) を使うこと)。 - -Linux 3.8 より前のバージョンでは、このソケットオプションは \fBgetsockname\fP(2) -で設定することはできたが、取得することができなかった。 Linux 3.8 以降では、読み出すことができる。 \fIoptlen\fP 引き数には、 -デバイス名を格納するのに十分なバッファーサイズを渡すべきであり、 \fBIFNAMSIZ\fP バイトにすることを推奨する。 実際のデバイス名の長さは -\fIoptlen\fP 引き数に格納されて返される。 -.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 -このソケットから送信される各パケットにマークをセットする (netfilter の MARK ターゲットと似ているが、ソケット単位である点が異なる)。 -マークの変更は、 netfilter なしでのマークに基づいてのルーティングや、 パケットフィルタリングに使うことができる。 -このオプションを変更するには \fBCAP_NET_ADMIN\fP ケーパビリティが必要である。 -.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_PEEK_OFF\fP (Linux 3.4 以降) -.\" commit ef64a54f6e558155b4f149bb10666b9e914b6c54 -\fBMSG_PEEK\fP フラグと一緒に使用された場合 \fBrecv\fP(2) システムコールの "peek offset" -にこのオプションの値が設定される。現在のところ、このオプションは \fBunix\fP(7) ソケットでのみサポートされている。 - -このオプションが負の値に設定された場合、従来の動作となる。 つまり \fBMSG_PEEK\fP フラグが指定された \fBrecv\fP(2) -は、キューの先頭のデータに対して peek 処理を行う (データを読み出すが、キューからデータの削除を行わない)。 -新規のソケットではこのオプションの値は必ず \-1 に設定される。 - -このオプションに 0 以上の値が設定されると、 そのソケットのキュー上のオプション値で指定されたバイトオフセットにあるデータが次の peek -処理で返される。 同時に、 "peek offset" がキューから peek 処理されたバイト数だけ加算される。したがって、次の peek -処理ではキューのその次にあるデータが返される。 - -\fBrecv\fP(2) (や同様のシステムコール) の \fBMSG_PEEK\fP フラグなしの呼び出しでキューの先頭のデータが削除された場合、 "peek -offset" は削除されたバイト数だけ減算される。 言い換えると、 \fBMSG_PEEK\fP フラグなしでデータを受信すると、 "peek -offset" が指すキュー内の相対的な位置が狂わないように調整され、この後の peek では、 -データ削除が行われなかった場合に返されたのと同じ値が返されるということである。 - -データグラムソケットでは、 "peek offset" がパケットの途中を指している場合には、 返されるデータには \fBMSG_TRUNC\fP -フラグが付与される。 - -以下の例は \fBSO_PEEK_OFF\fP の利用例を示している。ストリームソケットのキューに以下の入力データが入っているものとする。 - - aabbccddeeff - -.IP -以下の順序で \fBrecv\fP(2) の呼び出しを行うと、コメントに書かれた結果となる。 - -.in +4n -.nf -int ov = 4; // Set peek offset to 4 -setsockopt(fd, SOL_SOCKET, SO_PEEK_OFF, &ov, sizeof(ov)); - -recv(fd, buf, 2, MSG_PEEK); // Peeks "cc"; offset set to 6 -recv(fd, buf, 2, MSG_PEEK); // Peeks "dd"; offset set to 8 -recv(fd, buf, 2, 0); // Reads "aa"; offset set to 6 -recv(fd, buf, 2, MSG_PEEK); // Peeks "ee"; offset set to 8 -.fi -.in -.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 構造体である。この構造体の定義を -\fI\fP を得るには、 機能検査マクロ \fB_GNU_SOURCE\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" behavior -.\" 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_RXQ_OVFL\fP (Linux 2.6.33 以降) -.\" commit 3b885787ea4112eaa80945999ea0901bf742707f -最後の受信パケットとこの受信パケットの間にそのソケットで捨てられた (ドロップされた) パケット数を示す、unsigned 32 -ビット値の補助メッセージ (cmsg) を受信した skb に付与することを指示する。 -.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)。 -このソケットオプションは読み出し専用である。 -.TP -\fBSO_BUSY_POLL\fP (Linux 3.11 以降) -データがなかった際にブロッキング受信での busy polling のおおよその時間をマイクロ秒単位で設定する。 この値を増やすには -\fBCAP_NET_ADMIN\fP ケーパビリティが必要である。 このオプションのデフォルト値は -\fI/proc/sys/net/core/busy_read\fP で制御できる。 - -\fI/proc/sys/net/core/busy_poll\fP の値により、 \fBSO_BUSY_POLL\fP がセットされたソケットに対して -\fBselect\fP(2) や \fBpoll\fP(2) を行い、報告すべきイベントがない場合に、 \fBselect\fP(2) や \fBpoll\fP(2) が -busy polling をどのくらいの時間行うかが決まる。 - -どちらの場合も、busy polling は、そのソケットが最後にデータを受信したネットワークデバイスがこのオプションに対応している場合のみ行われる。 - -busy polling により遅延が改善されるはアプリケーションもあるが、 busy polling は CPU -使用率と電力使用量をともに増加させることになるので、使用する際は注意して行うこと。 -.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 関連項目 -\fBconnect\fP(2), \fBgetsockopt\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/standards.7 b/manual/LDP_man-pages/draft/man7/standards.7 deleted file mode 100644 index 22227bbd..00000000 --- a/manual/LDP_man-pages/draft/man7/standards.7 +++ /dev/null @@ -1,214 +0,0 @@ -.\" 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 -.\" . -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. -.\" Translated 2006-08-12, Akihiro MOTOKI , LDP v2.39 -.\" Updated 2008-08-07, Akihiro MOTOKI, LDP v3.05 -.\" Updated 2008-08-20, Akihiro MOTOKI, LDP v3.07 -.\" -.TH STANDARDS 7 2014\-01\-15 Linux "Linux Programmer's Manual" -.SH 名前 -standards \- C と UNIX の標準規格 -.SH 説明 -多くのマニュアルページの「準拠 (CONFORMING TO)」の章は、 そのページに記載されたインターフェースが準拠する -各種の標準規格を示すものである。 以下にこれらの標準規格の簡単な説明を記す。 -.TP -\fBV7\fP -バージョン 7 (第 7 版とも呼ばれる) UNIX。 1979 年に AT&T/Bell Labs によりリリースされた。 この時点以降、 UNIX -システムは BSD と System V の二つの系譜に分かれた。 -.TP -\fB4.2BSD\fP -カリフォルニア大バークレー校 (the University of California at Berkeley) によりリリースされた -\fIBerkeley Software Distribution\fP リリース 4.2 によって規定された、実装に基づく標準規格 -(implementation standard)。 バークレーによるリリースの中で TCP/IP スタックとソケット API -を含む最初のリリースである。 - -これより前のBSD の主なリリースとしては \fI3BSD\fP (1980), \fI4BSD\fP (1980), \fI4.1BSD\fP (1981) がある。 -.TP -\fB4.3BSD\fP -1986 年にリリースされた 4.2BSD の後継。 -.TP -\fB4.4BSD\fP -1993 年にリリースされた 4.3BSD の後継。 バークレー (Berkeley) による最後の大きなリリースである。 -.TP -\fBSystem V\fP -AT&T の商用 System V (5) リリースの 1983 年版により規定された 実装に基づく標準規格。 一つ前の AT&T の大きなリリースは -1981 年にリリースされた \fISystem III\fP である。 -.TP -\fBSystem V release 2 (SVr2)\fP -System V の二番目のリリースであり、1985 年に作成された。 SVr2 は正式には 1985 年に発行された \fISystem V -Interface Definition version 1\fP (\fISVID 1\fP) に記載されている。 -.TP -\fBSystem V release 3 (SVr3)\fP -SVr2 の後継。1986 年にリリースされた。 このリリースは正式には \fISystem V Interface Definition version -2\fP (\fISVID 2\fP) に記載されている。 -.TP -\fBSystem V release 4 (SVr4)\fP -SVr3 の後継。1989 年にリリースされた。 このバージョンの System V については "Programmer's Reference -Manual: Operating System API (Intel processors)" (Prentice\-Hall 1992, ISBN -0\-13\-951294\-2) に記載されている。 このリリースは正式には \fISystem V Interface Definition version -3\fP (\fISVID 3\fP) に記載されており、System V の最終的なリリースと考えられている。 -.TP -\fBSVID 4\fP -System V Interface Definition version 4。 1995 年に発行された。 インターネットでは -.UR http://www.sco.com\:/developers\:/devspecs/ -.UE -で入手できる。 -.TP -\fBC89\fP -最初の C 言語の標準規格である。 ANSI (American National Standards Institute) により 1989 -年の承認された (\fIX3.159\-1989\fP)。 時には、この規格は \fIANSI C\fP とも呼ばれるが、 C99 も ANSI -標準なので、この言い方はあいまいである。 この規格は 1990 年に ISO (International Standards -Organization) による 承認も受けており (\fIISO/IEC 9899:1990\fP)、 そのため \fIISO C90\fP -として参照されることもたまにある。 -.TP -\fBC99\fP -C 言語の標準規格のこの改訂版は ISO により 1999 年に承認された (\fIISO/IEC 9899:1999\fP)。 -.UR http://www.open\-std.org\:/jtc1\:/sc22\:/wg14\:/www\:/standards -.UE -からオンラインで入手可能である。 -.TP -\fBC11\fP -C 言語の標準規格のこの改訂版は ISO により 2011 年に承認された (\fIISO/IEC 9899:2011\fP)。 -.UR http://www.open\-std.org\:/jtc1\:/sc22\:/wg14\:/www\:/standards -.UE -からオンラインで入手可能である。 -.TP -\fBPOSIX.1\-1990\fP -"Portable Operating System Interface for Computing Environments". 1990 年に -ISO により承認された、IEEE 1003.1\-1990 part 1 (\fIISO/IEC 9945\-1:1990\fP)。 "POSIX" -という言葉は Richard Stallman が初めて作った。 -.TP -\fBPOSIX.2\fP -IEEE Std 1003.2\-1992. コマンドとユーティリティについて説明が書かれており、 1993 年に ISO により承認された -(\fIISO/IEC 9945\-2:1993\fP)。 -.TP -\fBPOSIX.1b\fP (以前は \fIPOSIX.4\fP とも言われた) -IEEE Std 1003.1b\-1993. 移植可能なオペレーティングシステムのためのリアルタイム機能について 記載されており、 1996 年の -ISO により承認された (\fIISO/IEC 9945\-1:1996\fP)。 -.TP -\fBPOSIX.1c\fP -IEEE Std 1003.1c\-1995. POSIX スレッドインターフェースについて記載している。 -.TP -\fBPOSIX.1d\fP -IEEE Std 1003.1c\-1999. 追加のリアルタイム拡張について記載している。 -.TP -\fBPOSIX.1g\fP -IEEE Std 1003.1g\-2000. (ソケットを含めた) ネットワーク API について記載している。 -.TP -\fBPOSIX.1j\fP -IEEE Std 1003.1j\-2000. 高度なリアルタイム拡張について記載している。 -.TP -\fBPOSIX.1\-1996\fP -POSIX.1 の 1996 年の改訂版。 POSIX.1b と POSIX.1c を取り込んでいる。 -.TP -\fBXPG3\fP -1989 年リリースの、マルチベンダによる業界団体である X/Open 社による \fIX/Open Portability Guide\fP -の最初の大きなリリースである。 この指針は POSIX 標準規格に基づいている。 -.TP -\fBXPG4\fP -1992 年にリリースされた、X/Open Portability Guide (移植性に関する指針) の改訂版。 -.TP -\fBXPG4v2\fP -XPG4 の 1994年改訂版。 \fISpec 1170\fP とも呼ばれる。 1170 -とはこの標準規格が定義しているインターフェースの数を表すものである。 -.TP -\fBSUS (SUSv1)\fP -Single UNIX Specification. この規格は、XPG4v2 やその他の X/Open による標準規格 (X/Open Curses -Issue 4 version 2, X/Open Networking Service (XNS) Issue 4) を再構成したものである。 -この規格に準拠するシステムは \fIUNIX 95\fP を名乗ることができる。 -.TP -\fBSUSv2\fP -Single UNIX Specification version 2. \fIXPG5\fP と呼ばれることもある。 この規格は 1997 年に登場した。 -この規格に準拠するシステムは \fIUNIX 98\fP を名乗ることができる。 -.UR http://www.UNIX\-systems.org\:/version2/ -.UE -も参照のこと。 -.TP -\fBPOSIX.1\-2001, SUSv3\fP -これは POSIX.1, POSIX.2, SUS の 2001年の改訂版である。 また、POSIX.1, POSIX.2, SUS -を一つの文書に統合したものである。 この統合は Austin Group ( -.UR http://www.opengroup.org\:/austin/ -.UE ) -の後援の元で行われた。 インターネットでは -.UR http://www.unix\-systems.org\:/version3/ -.UE -で入手できる。 -また、この規格に書かれているインターフェースについては Linux のマニュアルページパッケージの 1p, 3p セクションでも 参照できる -(例えば、"man 3p open")。 - -この規格では、 \fIPOSIX Conformance (POSIX 準拠)\fP と \fIXSI Conformance (XSI 準拠)\fP -の二段階の適合性を定義している。 \fIPOSIX 準拠\fP は準拠するシステムに必要とされるインターフェースの基本セットであり、 \fIXSI 準拠)\fP -では "XSI 拡張" という追加のインターフェース群が義務付けられている (POSIX 準拠では XSI 拡張の実装は任意 (optional) -となっている)。 XSI 準拠のシステムは \fIUNIX 03\fP を名乗ることができる (XSI 準拠の内容が \fISingle UNIX -Specification version 3\fP (\fISUSv3\fP) である)。 - -POSIX.1\-2001 文書は 4つの部分に分けることができる: - -\fBXBD\fP: 定義、用語と概念、ヘッダーファイルの仕様。 - -\fBXSH\fP: 関数の仕様 (関数とは、実際の実装でのシステムコールと ライブラリ関数のことである)。 - -\fBXCU\fP: コマンドとユーティリティの仕様 (以前、 POSIX.2 に記載されていた内容)。 - -\fBXRAT\fP: 参考情報と規格のそれ以外の部分 - -POSIX.1\-2001 は C99 と整合がとられており、 C99 で標準化されたライブラリ関数は POSIX.1\-2001 でも 標準化されている。 - -元の 2001 年版の標準に対する Technical Corrigenda (正誤表; 細かな修正と改良) が二つ行われている: 2003 年の -TC1 (\fIPOSIX.1\-2003\fP と呼ばれる) と 2004 年の TC2 (\fIPOSIX.1\-2004\fP と呼ばれる) である。 -.TP -\fBPOSIX.1\-2008, SUSv4\fP -POSIX.1/SUS の次の改訂版に関する作業は 2008 年に完了し承認された。 - -この改訂版での変更は POSIX.1\-2001/SUSv3 で行われた変更ほど大きくないが、 -多くの新しいインターフェイスが追加され、既存の仕様に関しても 種々の詳細が変更されている。 POSIX.1\-2001 では任意 (optional) -とされていたインターフェイスの多くが 2008 年版の標準では必須 (mandatory) になる。 POSIX.1\-2001 -に存在するインターフェイスのいくつかは、 POSIX.1\-2008 では廃止予定の印が付けられたり、 標準から完全に削除されたりしている。 - -改訂された標準は POSIX.1\-2001 と同じく 4 つの部分に分けられ、 前回と同様に二段階の適合性を定義している。 基本セットである -\fIPOSIX Conformance (POSIX 準拠)\fP と、 基本仕様のインターフェイスに加えて追加のインターフェイス群が 義務付けられている -\fIXSI Conformance (XSI 準拠)\fP の二つである。 - -一般には、マニュアルページの「準拠」の章のリストに POSIX.1\-2001 が あれば、他に注意書きがなければ、そのインターフェイスは -POSIX.1\-2008 にも準拠していると考えてよい。 - -この標準の Technical Corrigendum 1 (正誤表; 細かな修正と改良) が 2013 年にリリースされている -(\fIPOSIX.1\-2013\fP と呼ばれる)。 - -詳しい情報は Austin Group のウェブサイト -.UR http://www.opengroup.org\:/austin/ -.UE -に載っている。 -.SH 関連項目 -\fBfeature_test_macros\fP(7), \fBlibc\fP(7), \fBposixoptions\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/suffixes.7 b/manual/LDP_man-pages/draft/man7/suffixes.7 index d3d20321..c2791455 100644 --- a/manual/LDP_man-pages/draft/man7/suffixes.7 +++ b/manual/LDP_man-pages/draft/man7/suffixes.7 @@ -56,13 +56,15 @@ .\" by Yuichi SATO .\" Updated 2012-04-30, Akihiro MOTOKI .\" -.TH SUFFIXES 7 2000\-11\-16 Linux "Linux Programmer's Manual" +.TH SUFFIXES 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 suffixes \- ファイルの接尾辞 (suffix) のリスト .SH 説明 -習慣的にファイルの接尾 (suffix) はファイルの内容を示している。 この接尾はピリオド (.) とそれに続く一つ以上の文字からなっている。 -コンパイラーのような、多くの標準的なユーティリティは、 この接尾を使用して取り扱うファイルの型を理解する。 \fBmake\fP(1) -ユーティリティはファイルの接尾に基づいたルールに従って動作する。 +It is customary to indicate the contents of a file with the file suffix, +which (typically) consists of a period, followed by one or more letters. +Many standard utilities, such as compilers, use this to recognize the type +of file they are dealing with. The \fBmake\fP(1) utility is driven by rules +based on file suffix. .PP 以下は Linux システムでよく見られる接尾のリストである。 .PP @@ -79,7 +81,7 @@ Suffix File type .S \fBcpp\fP(1)命令をもったアセンブラソース .Y yabba(1) で圧縮されたファイル .Z \fBcompress\fP(1)で圧縮されたファイル - .[0\-9]+gf TeX の一般フォント + .[0\-\9]+gf TeX の一般フォント .[0\-9]+pk TeX の圧縮フォント .[1\-9] 対応する章のマニュアルページ .[1\-9][a\-z] サブセクション付きマニュアルページ @@ -285,7 +287,7 @@ Suffix File type .z \fBpack\fP(1) (または古い \fBgzip\fP(1)) で圧縮されたファイル .zip \fBzip\fP(1) アーカイブ .zoo \fBzoo\fP(1) アーカイブ - ~ Emacs または \fBpatch\fP(1) のバックアップファイル + \(ti Emacs または \fBpatch\fP(1) のバックアップファイル rc 起動ファイル (`run control') (例 \fI.newsrc\fP) .TE .SH 準拠 @@ -295,6 +297,5 @@ Suffix File type .SH 関連項目 \fBfile\fP(1), \fBmake\fP(1) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/symlink.7 b/manual/LDP_man-pages/draft/man7/symlink.7 deleted file mode 100644 index d5b5a9bc..00000000 --- a/manual/LDP_man-pages/draft/man7/symlink.7 +++ /dev/null @@ -1,241 +0,0 @@ -.\" Copyright (c) 1992, 1993, 1994 -.\" The Regents of the University of California. All rights reserved. -.\" and Copyright (C) 2008, 2014 Michael Kerrisk -.\" -.\" %%%LICENSE_START(BSD_3_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. -.\" 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 -.\" -.\" @(#)symlink.7 8.3 (Berkeley) 3/31/94 -.\" $FreeBSD: src/bin/ln/symlink.7,v 1.30 2005/02/13 22:25:09 ru Exp $ -.\" -.\" 2008-06-11, mtk, Taken from FreeBSD 6.2 and heavily edited for -.\" specific Linux details, improved readability, and man-pages style. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.TH SYMLINK 7 2014\-04\-06 Linux "Linux Programmer's Manual" -.SH 名前 -symlink \- シンボリックリンクの取り扱い -.SH 説明 -シンボリックリンクは他のファイルへのポインターとして振る舞うファイルである。 -その挙動を理解するには、まずハードリンクがどのように機能するかを理解しておかなければならない。 - -あるファイルへのハードリンクは、 元々のファイルと区別することができない。 なぜなら、 -ハードリンクは元々のファイル名の裏にあるオブジェクトへの参照だからである。 (より正確には、 あるファイルへのハードリンクはそれぞれ同じ \fIinode -番号\fP への参照である。 inode 番号は inode テーブルへのインデックスで、 inode -テーブルはファイルシステム上のすべてのファイルについてのメタデータを保持している。 \fBstat\fP(2) 参照。) -ファイルへの変更は、ファイルの参照に使用された名前とは独立に行われる。 ハードリンクはディレクトリを参照することはできない -(これはファイルシステムツリー内でループが発生する可能性を防止するためであり、 ループが発生すると、 多くのプログラムが混乱してしまうことだろう)。 -また、 ハードリンクは異なるファイルシステム上のファイルを参照することもできない (inode -番号はファイルシステムをまたがると一意ではないからである)。 - -シンボリックリンクは特別な種類のファイルで、 ファイルの内容はそのリンクの参照先の別のファイルのパス名を示す文字列である (シンボリックリンクの内容は -\fBreadlink\fP(2) を使って読むことができる)。 言い換えると、 シンボリックリンクは別の名前へのポインターであり、 -ファイルの裏にあるオブジェクトへのポインターではない。 この理由から、 -シンボリックリンクではディレクトリへの参照やファイルシステム境界を越える参照を行うことができる。 - -シンボリックリンクが参照する先のパス名が存在しないといけないという要件はない。 存在しないパス名を参照するシンボリックリンクは「壊れた -(dangling) リンク」と呼ばれる。 - -シンボリックリンクとその参照先のオブジェクトは一つのファイルシステムの名前空間内に共存するので、 -リンクそのものと参照先のオブジェクトの間で混乱が生じる可能性がある。 かなり昔からあるシステムでは、 -コマンドやシステムコールはいくらかアドホックな方法の独自のリンクの辿り方の決まり事を採用している。 ここでは、 Linux -や他のシステムで実装されている、 もっと広く使われている方法のルールについて概要を説明する。 サイト固有のアプリケーションもこれらのルールに準拠し、 -可能な限りユーザーインターフェースが一貫したものになるようにすることが重要である。 -.SS シンボリックリンクの所有権、アクセス許可、タイムスタンプ -既存のシンボリックリンクの所有者とグループは \fBlchown\fP(2) を使って変更することができる。 シンボリックリンクの所有権が問題となる場面は、 -スティッキービット (\fBstat\fP(2) 参照) がセットされたディレクトリで、 そのリンクの削除や名前の変更を行おうとしている場合だけである。 - -シンボリックリンクの最終アクセス時刻と最終修正時刻は \fButimensat\fP(2) や \fBlutimes\fP(3) で変更できる。 - -.\" Linux does not currently implement an lchmod(2). -.\" -.\" The -.\" 4.4BSD -.\" system differs from historical -.\" 4BSD -.\" systems in that the system call -.\" .BR chown (2) -.\" has been changed to follow symbolic links. -.\" The -.\" .BR lchown (2) -.\" system call was added later when the limitations of the new -.\" .BR chown (2) -.\" became apparent. -Linux では、シンボリックリンクのアクセス許可 (permission) はどの操作でも使用されない。 アクセス許可は常に 0777 -(すべてのユーザーカテゴリーにおいて読み出し、書き込み、実行が可能) で、変更できない。 -.SS シンボリックリンクを参照するファイルディスクリプターを取得する -\fBopen\fP(2) に \fBO_PATH\fP と \fBO_NOFOLLOW\fP -の両方のフラグを指定すると、ファイルディスクリプターが得られる。このファイルディスクリプターは \fBfstatat\fP(2), -\fBfchownat\fP(2), \fBfchmodat\fP(2), \fBlinkat\fP (2), \fBreadlinkat\fP(2) などのシステムコールの -\fIdirfd\fP 引き数として渡して、 (シンボリックリンクが参照するファイルではなく) シンボリックリンク自身に対する操作を行うことができる。 - -デフォルトでは (すなわち \fBAT_SYMLINK_FOLLOW\fP フラグが指定されなかった場合)、 \fBname_to_handle_at\fP(2) -がシンボリックリンクに適用された場合、 (シンボリックリンクが参照するファイルではなく) シンボリックリンクへのハンドルが返される。 それ以降の -\fBopen_by_handle_at\fP(2) で \fBO_PATH\fP フラグを指定することで、 (シンボリックリンクが参照するファイルではなく) -シンボリックリンクに対するファイルディスクリプターを得ることができる。 繰り返しになるが、 このファイルディスクリプターを上述のシステムコールで使用し、 -シンボリックリンク自身に操作を行うことができる。 -.SS システムコールやコマンドによるシンボリックリンクの取り扱い -シンボリックリンクは、 リンク自身に対する操作か、 リンクが参照するオブジェクトに対する操作のいずれかとして扱われる。 後者の場合、 -アプリケーションやシステムコールはリンクを\fI辿る (follow)\fPと呼ばれる。 シンボリックリンクは他のシンボリックリンクを参照することもできる。 -この場合、 シンボリックリンクでないオブジェクトが見つかるか、 存在しないファイルを参照するシンボリックリンクが見つかるか、 ループが検出されるまで、 -リンクの展開が行われる。 (ループの検出は辿ることができるリンクの数に上限を設けることで行われる。 この上限を超過した場合はエラーとなる。) - -3 つの領域に分けて議論する必要がある。以下の 3 つである。 -.IP 1. 3 -システムコールのファイル名引き数としてシンボリックリンクが使用される場合。 -.IP 2. -ファイルツリーを辿っていないユーティリティーのコマンドライン引き数としてシンボリックリンクが指定される場合。 -.IP 3. -ファイルツリーを辿っているユーティリティーがシンボリックリンクを見つけた場合 (コマンドラインで指定される場合もあれば、 -ファイル階層を辿っている途中で遭遇する場合もある)。 -.SS システムコール -最初の領域は、システムコールのファイル名引き数としてシンボリックリンクが使用される場合である。 - -以下に述べる場合を除くと、 すべてのシステムコールはシンボリックリンクを辿る。 例えば、 \fIafile\fP -という名前のファイルを指しているシンボリックリンク \fIslink\fP があったとすると、 システムコール \fIopen("slink" ...\&)\fP -はファイル \fIafile\fP を参照するファイルディスクリプターを返す。 - -リンクを辿らず、シンボリックリンク自身に対して操作を行うシステムコールもある。 このようなシステムコールとしては、 \fBlchown\fP(2), -\fBlgetxattr\fP(2), \fBllistxattr\fP(2), \fBlremovexattr\fP(2), \fBlsetxattr\fP(2), -\fBlstat\fP(2), \fBreadlink\fP(2), \fBrename\fP(2), \fBrmdir\fP(2), \fBunlink\fP(2) がある。 - -.\" Maybe one day: .BR fchownat (2) -他のいくつかのシステムコールは、指定された場合にのみシンボリックリンクを辿る。 これらのシステムコールとしては、 \fBfaccessat\fP(2), -\fBfchownat\fP(2), \fBfstatat\fP(2), \fBlinkat\fP(2), \fBname_to_handle_at\fP(2), -\fBopen\fP(2), \fBopenat\fP(2), \fBopen_by_handle_at\fP(2), \fButimensat\fP(2) がある。 -詳細はそれぞれのマニュアルページを参照してほしい。 \fBremove\fP(3) は \fBunlink\fP(2) の別名なので、 -このライブラリ関数もシンボリックリンクを辿らない。 \fBrmdir\fP(2) がシンボリックリンクに対して行われた場合、その呼び出しはエラー -\fBENOTDIR\fP で失敗する。 - -\fBlink\fP(2) については特別に議論が必要である。 POSIX.1\-2001 では \fBlink\fP(2) は \fIoldpath\fP -がシンボリックリンクであればこれを展開するように規定している。 しかしながら、 Linux はシンボリックリンクを展開しない。 (デフォルトでは -Solaris も同じだが、 適切なコンパイラーオプションを指定することで POSIX.1\-2001 で規定された動作をさせることができる。) -今後のバージョンの POSIX.1 では、どちらの動作の実装も認められるように規定が変更される。 -.SS ファイルツリーを辿らないコマンド -二つ目の領域は、 ファイルツリーを辿らないコマンドの、 コマンドライン引き数のファイル名としてシンボリックリンクが指定される場合である。 - -以下に述べる場合を除くと、 コマンドはコマンドライン引き数で指定された名前のシンボリックリンクを辿る。 例えば、 \fIafile\fP -という名前のファイルを指しているシンボリックリンク \fIslink\fP があったとすると、 コマンド \fIcat slink\fP は \fIafile\fP -の内容を表示することになる。 - -大事な点として意識しておくべきなのは、 このルールが適用されるコマンドの中には、 -オプション次第ではファイルツリーを辿る場合があるコマンドもあるということである。 例えば、 コマンド \fIchown file\fP -はこのルールに含まれるが、 コマンド \fIchown\ \-R file\fP はツリーを辿る動作をするのであてはまらない (後者の場合は、3 -つ目の領域に該当する)。 - -シンボリックリンクを辿るのではなく、 コマンドがシンボリックリンク自身に対して操作を行うことを明示的に指示したい場合、 例えば、 \fIchown -slink\fP で \fIslink\fP がシンボリックリンクかどうかに関わらず、 \fIslink\fP のファイル自身の所有権を変更したい場合は、 \fI\-h\fP -オプションを使用すべきである。 上記の例では、 \fIchown root slink\fP は \fIslink\fP が参照するファイルの所有権を変更するが、 -\fIchown\ \-h root slink\fP は \fIslink\fP 自身の所有権を変更する。 - -このルールにはいくつかの例外がある。 -.IP * 2 -コマンド \fBmv\fP(1) と \fBrm\fP(1) は引き数で指定された名前のシンボリックリンクを辿らないが、 -それぞれシンボリックリンク自身の名前変更と削除を行おうとする。 (シンボリックリンクが相対パスでファイルを参照している場合、 -そのシンボリックリンクを別のディレクトリに移動すると、動かなくなることが非常によくある。 移動の結果、 パスが正しくないものになってしまうからである。) -.IP * -\fBls\fP(1) コマンドもこのルールの例外である。 昔からあるシステムとの互換性のため (\fBls\fP(1) がツリーを辿らない場合、つまり \fI\-R\fP -オプションが指定されなかった場合)、 \fBls\fP(1) コマンドはオプション \fI\-H\fP か \fI\-L\fP が指定された場合、もしくはオプション -\fI\-F\fP, \fI\-d\fP, \fI\-l\fP が指定されなかった場合、 引き数として指定されたシンボリックリンクを辿る。 (\fBls\fP(1) コマンドは、 -ファイルツリーを辿らない場合であっても、 オプション \fI\-H\fP と \fI\-L\fP がその動作に影響を与える唯一のコマンドである。) -.IP * -.\" -.\"The 4.4BSD system differs from historical 4BSD systems in that the -.\".BR chown (1) -.\"and -.\".BR chgrp (1) -.\"commands follow symbolic links specified on the command line. -\fBfile\fP(1) コマンドもこのルールの例外である。 \fBfile\fP(1) コマンドは、 -デフォルトでは引き数で指定されたシンボリックリンクを辿らない。 \fBfile\fP(1) コマンドは、 \fI\-L\fP オプションが指定された場合、 -引き数で指定されたシンボリックリンクを辿る。 -.SS ファイルツリーを辿るコマンド -次のコマンドは指定された場合もしくは常にファイルツリーを辿る: \fBchgrp\fP(1), \fBchmod\fP(1), \fBchown\fP(1), -\fBcp\fP(1), \fBdu\fP(1), \fBfind\fP(1), \fBls\fP(1), \fBpax\fP(1), \fBrm\fP(1), \fBtar\fP(1)。 - -重要なのは、 ファイルツリーを辿っている際に見つかったシンボリックリンクにも、 コマンドライン引き数として渡されたシンボリックリンクにも、 -以下のルールが等しく適用される点である。 - -「1 つ目のルール」は、 ディレクトリ以外のファイルを参照するシンボリックリンクに適用される。 -シンボリックリンクに適用される操作はシンボリックリンク自身に行われるが、 そうでない場合はリンクは無視される。 - -コマンド \fIrm\ \-r slink directory\fP は \fIslink\fP を削除するとともに、 -ファイルツリーを辿る途中で見つけたシンボリックリンクも削除する。 シンボリックリンクは削除できるからである。 \fBrm\fP(1) が \fIslink\fP -が参照するファイルに影響をおよぼすことはない。 - -「2 つ目のルール」は、 ディレクトリを参照するシンボリックリンクに適用される。 デフォルトでは、 ディレクトリを参照するシンボリックリンクを辿らない。 -この動作はしばしば「物理的な」ツリー探索 ("physical" walk) と呼ばれる。 これに対して -(ディレクトリを参照するシンボリックリンクを辿る場合は) 「論理的な」ツリー探索 ("logical" walk) と呼ばれる。 - -一貫性を持たせるため、ファイルツリーを辿るコマンドが可能な限り従っている慣習がいくつかある。 -.IP * 2 -\fI\-H\fP ("half\-logical") フラグを指定すると、 参照先のファイル種別に関わらず、 -コマンドにコマンドラインで指定されたシンボリックリンクを辿らせることができる。 このフラグは、 -コマンドラインの名前空間を論理的な名前空間のように見せるためのものである。 (常にファイルツリーを辿るわけではないコマンドでは、 \fI\-R\fP -フラグを一緒に指定しない限り、 \fI\-H\fP フラグは無視される点に注意。) - -例えば、 コマンド \fIchown\ \-HR user slink\fP は \fIslink\fP が指すファイルを頂点とするファイル階層を辿る。 \fI\-H\fP -は上記で説明した \fI\-h\fP フラグとは同じではないことに注意。 \fI\-H\fP フラグを指定すると、 アクションを実行する場合でも、 -ツリーを辿る場合でも、 コマンドラインで指定されたシンボリックリンクの解決 (dereference) を行う。 -ユーザーがシンボリックリンクが指すファイル名を指定したのと同じように見える。 -.IP * -\fI\-L\fP ("logical") フラグを指定すると、 参照先のファイル種別に関わらず、 コマンドが、 -コマンドラインで指定された名前のシンボリックリンクも、 ファイルツリーを辿る際に見つけたシンボリックリンクも辿るようになる。 このフラグは、 -名前空間全体を論理的な名前空間のように見せるためのものである。 (常にファイルツリーを辿るわけではないコマンドでは、 \fI\-R\fP -フラグを一緒に指定しない限り、 \fI\-L\fP フラグは無視される点に注意。) - -例えば、 コマンド \fIchown\ \-LR user slink\fP は \fIslink\fP が参照するファイルの所有者を変更する。 -\fIslink\fP がディレクトリを参照する場合、 \fBchown\fP はそのシンボリックリンクが参照するディレクトリを頂点とするファイル階層を辿る。 -また、 \fBchown\fP が辿るファイルツリー内でシンボリックリンクが見つかった場合、 \fIslink\fP と同じように処理される。 -.IP * -\fI\-P\fP ("physical") フラグを指定すると、 コマンドはデフォルトの動作をするようになる。 -このフラグは名前空間全体を物理的な名前空間のように見せるためのものである。 -.PP -デフォルトでファイルツリーを辿らないコマンドでは、 \fI\-R\fP フラグが同時に指定されなかった場合、 フラグ \fI\-H\fP, \fI\-L\fP, \fI\-P\fP -は無視される。 また、 \fI\-H\fP, \fI\-L\fP, \fI\-P\fP は複数回同時に指定できるが、 最後に指定されたオプションでコマンドの動作が決定される。 -この動作は、 コマンドのエイリアスにある動作を指定しておいて、 コマンドラインでその動作を上書きできるようにするためである。 - -コマンド \fBls\fP(1) と \fBrm\fP(1) には、 これらのルールに対する例外がある。 -.IP * 2 -\fBrm\fP(1) コマンドは、 参照先のファイルではなく、シンボリックリンクに対して操作を行う。 したがって、 シンボリックリンクを辿ることはない。 -\fBrm\fP(1) コマンドはオプション \fI\-H\fP, \fI\-L\fP, \fI\-P\fP をサポートしていない。 -.IP * -古いシステムとの互換性を持たせるため、 \fBls\fP(1) コマンドは少し違った動作をする。 オプション \fI\-F\fP, \fI\-d\fP, \fI\-l\fP -を指定した場合、 \fBls\fP(1) はコマンドラインで指定されたシンボリックリンクを辿る。 \fI\-L\fP フラグが指定された場合、 -コマンドラインで指定された場合でも、 ファイルツリーを辿る際に見つかった場合でも、 ファイル種別に関わらず、 \fBls\fP(1) -はすべてのシンボリックリンクを辿る。 -.SH 関連項目 -\fBchgrp\fP(1), \fBchmod\fP(1), \fBfind\fP(1), \fBln\fP(1), \fBls\fP(1), \fBmv\fP(1), -\fBrm\fP(1), \fBlchown\fP(2), \fBlink\fP(2), \fBlstat\fP(2), \fBreadlink\fP(2), -\fBrename\fP(2), \fBsymlink\fP(2), \fBunlink\fP(2), \fButimensat\fP(2), -\fBlutimes\fP(3), \fBpath_resolution\fP(7) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/tcp.7 b/manual/LDP_man-pages/draft/man7/tcp.7 index 65e467e6..9513f2c5 100644 --- a/manual/LDP_man-pages/draft/man7/tcp.7 +++ b/manual/LDP_man-pages/draft/man7/tcp.7 @@ -24,17 +24,18 @@ .\" commit cfb6eeb4c860592edd123fdea908d23c6ad1c7dc .\" Author was yoshfuji@linux-ipv6.org .\" Needs CONFIG_TCP_MD5SIG -.\" From net/inet/Kconfig -.\" bool "TCP: MD5 Signature Option support (RFC2385) (EXPERIMENTAL)" -.\" RFC2385 specifies a method of giving MD5 protection to TCP sessions. -.\" Its main (only?) use is to protect BGP sessions between core routers -.\" on the Internet. -.\" -.\" There is a TCP_MD5SIG option documented in FreeBSD's tcp(4), -.\" but probably many details are different on Linux +.\" From net/inet/Kconfig: +.\" bool "TCP: MD5 Signature Option support (RFC2385) (EXPERIMENTAL)" +.\" RFC2385 specifies a method of giving MD5 protection to TCP sessions. +.\" Its main (only?) use is to protect BGP sessions between core routers +.\" on the Internet. +.\" +.\" There is a TCP_MD5SIG option documented in FreeBSD's tcp(4), +.\" but probably many details are different on Linux .\" http://thread.gmane.org/gmane.linux.network/47490 .\" http://www.daemon-systems.org/man/tcp.4.html .\" http://article.gmane.org/gmane.os.netbsd.devel.network/3767/match=tcp_md5sig+freebsd +.\" .\" TCP_COOKIE_TRANSACTIONS (2.6.33) .\" commit 519855c508b9a17878c0977a3cdefc09b59b30df .\" Author: William Allen Simpson @@ -48,31 +49,50 @@ .\" TCP_THIN_LINEAR_TIMEOUTS (2.6.34) .\" commit 36e31b0af58728071e8023cf8e20c5166b700717 .\" Author: Andreas Petlund +.\" .\" TCP_THIN_DUPACK (2.6.34) .\" commit 7e38017557bc0b87434d184f8804cadb102bb903 .\" Author: Andreas Petlund +.\" .\" TCP_REPAIR (3.5) .\" commit ee9952831cfd0bbe834f4a26489d7dce74582e37 .\" Author: Pavel Emelyanov +.\" See also +.\" http://criu.org/TCP_connection +.\" https://lwn.net/Articles/495304/ +.\" .\" TCP_REPAIR_QUEUE (3.5) .\" commit ee9952831cfd0bbe834f4a26489d7dce74582e37 .\" Author: Pavel Emelyanov +.\" .\" TCP_QUEUE_SEQ (3.5) .\" commit ee9952831cfd0bbe834f4a26489d7dce74582e37 .\" Author: Pavel Emelyanov +.\" .\" TCP_REPAIR_OPTIONS (3.5) .\" commit b139ba4e90dccbf4cd4efb112af96a5c9e0b098c .\" Author: Pavel Emelyanov +.\" .\" TCP_FASTOPEN (3.6) .\" (Fast Open server side implementation completed in 3.7) .\" http://lwn.net/Articles/508865/ +.\" .\" TCP_TIMESTAMP (3.9) .\" commit 93be6ce0e91b6a94783e012b1857a347a5e6e9f2 .\" Author: Andrey Vagin +.\" .\" TCP_NOTSENT_LOWAT (3.12) .\" commit c9bee3b7fdecb0c1d070c7b54113b3bdfb9a3d36 .\" Author: Eric Dumazet .\" +.\" TCP_CC_INFO (4.1) +.\" commit 6e9250f59ef9efb932c84850cd221f22c2a03c4a +.\" Author: Eric Dumazet +.\" +.\" TCP_SAVE_SYN, TCP_SAVED_SYN (4.2) +.\" commit cd8ae85299d54155702a56811b2e035e63064d3d +.\" Author: Eric Dumazet +.\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. @@ -93,7 +113,7 @@ .\" Updated 2013-05-01, Akihiro MOTOKI .\" Updated 2013-07-22, Akihiro MOTOKI .\" -.TH TCP 7 2015\-01\-10 Linux "Linux Programmer's Manual" +.TH TCP 7 2020\-12\-21 Linux "Linux Programmer's Manual" .SH 名前 tcp \- TCP プロトコル .SH 書式 @@ -102,7 +122,7 @@ tcp \- TCP プロトコル \fB#include \fP .br \fB#include \fP -.sp +.PP \fBtcp_socket = socket(AF_INET, SOCK_STREAM, 0);\fP .SH 説明 これは RFC\ 793, RFC\ 1122, RFC\ 2001 で定義されている TCP プロトコルを NewReno 拡張と SACK @@ -110,7 +130,7 @@ tcp \- TCP プロトコル (full\-duplex) 通信を提供する。 v4 と v6 の両方のバージョンの \fBip\fP(7) に対応している。 TCP は、データが順序を守って到着すること、途中で失われたパケットが 再送されることを保証する。また、パケット単位にチェックサムを 生成、検査することで、転送エラーを検知する。 TCP はレコード境界 (record boundary) を保存しない。 - +.PP 新しく生成されたばかりの TCP ソケットは、 リモートアドレスかローカルアドレスがなく、 したがって詳細が完全に指定された状態ではない。 外部への TCP 接続を生成するには、 \fBconnect\fP(2) を用いてもう一方の TCP ソケットへの接続を確立する。 外部からの新たな接続を受けるには、まず \fBbind\fP(2) でソケットをローカルなアドレスとポートに結びつけ、次に \fBlisten\fP(2) @@ -118,15 +138,17 @@ TCP 接続を生成するには、 \fBconnect\fP(2) を用いてもう一方の \fBaccept\fP(2) または \fBconnect\fP(2) のコールが成功したソケットは、詳細が完全に指定された状態となり、 データのやりとりが可能となる。接続待ち受け状態の (listening) ソケットや、 接続 (connect) されていないソケットを通してデータをやりとりすることはできない。 - -Linux は RFC\ 1323 の TCP high performance 拡張をサポートしている。 これには、Protection -Against Wrapped Sequence Numbers (PAWS)、 ウィンドウスケーリング、タイムスタンプなどが含まれている。 -ウィンドウスケーリングを利用すると、遅延または帯域の大きな接続で、 (64K 以上の) 巨大な TCP ウィンドウを用いることが可能となる。 -これを用いるには、送受信のバッファーサイズを大きくしなければならない。 システム全体に対するバッファーサイズの変更は、ファイル -\fI/proc/sys/net/ipv4/tcp_wmem\fP と \fI/proc/sys/net/ipv4/tcp_rmem\fP -を用いて行うことができる。 また、個々のソケットのみを大きくしたい場合には、 \fBSO_SNDBUF\fP や \fBSO_RCVBUF\fP -ソケットオプションを用いて \fBsetsockopt\fP(2) コールを用いて設定すればよい。 - +.PP +Linux supports RFC\ 1323 TCP high performance extensions. These include +Protection Against Wrapped Sequence Numbers (PAWS), Window Scaling and +Timestamps. Window scaling allows the use of large (> 64\ kB) TCP +windows in order to support links with high latency or bandwidth. To make +use of them, the send and receive buffer sizes must be increased. They can +be set globally with the \fI/proc/sys/net/ipv4/tcp_wmem\fP and +\fI/proc/sys/net/ipv4/tcp_rmem\fP files, or on individual sockets by using the +\fBSO_SNDBUF\fP and \fBSO_RCVBUF\fP socket options with the \fBsetsockopt\fP(2) +call. +.PP \fBSO_SNDBUF\fP や \fBSO_RCVBUF\fP のメカニズムで宣言されるソケットバッファーの最大サイズは、ファイル \fI/proc/sys/net/core/rmem_max\fP や \fI/proc/sys/net/core/wmem_max\fP で指定されたシステムとしての制限値を超えることはできない。 TCP は実際には \fBsetsockopt\fP(2) @@ -136,15 +158,22 @@ Against Wrapped Sequence Numbers (PAWS)、 ウィンドウスケーリング、 ウィンドウよりも大きな値となる。 各接続におけるソケットのバッファーサイズ変更を有効にするには、 \fBlisten\fP(2) や \fBconnect\fP(2) コールの前に設定しなければならない。 より詳しい情報は \fBsocket\fP(7) を見よ。 .PP -TCP は緊急データ (urgent data) をサポートしている。緊急データは 何らかの重要なメッセージがデータストリームに含まれていること、 -そのデータをできるだけ早く処理すべきこと、を受信者に伝えるために用いられる。 緊急データを送るには、 \fBsend\fP(2) に \fBMSG_OOB\fP -オプションを指定する。 緊急データを受信すると、カーネルは \fBSIGURG\fP シグナルを送信する。送信先は \fBSIOCSPGRP\fP や -\fBFIOSETOWN\fP ioctl (や POSIX.1\-2001 で規定されている \fBfcntl\fP(2) \fBF_SETOWN\fP 操作) -を用いてそのソケットの「所有者」として設定された プロセスかプロセスグループである。 \fBSO_OOBINLINE\fP -ソケットオプションが有効になっていると、緊急データは 通常のデータストリームの中に混ぜて送られる (プログラムは下記の \fBSIOCATMARK\fP -ioctl を使って緊急データの場所を調べることができる)。 無効になっている場合には、 \fBrecv\fP(2) や \fBrecvmsg\fP(2) で -\fBMSG_OOB\fP フラグがセットされているときにのみ、緊急データを受信できる。 - +TCP supports urgent data. Urgent data is used to signal the receiver that +some important message is part of the data stream and that it should be +processed as soon as possible. To send urgent data specify the \fBMSG_OOB\fP +option to \fBsend\fP(2). When urgent data is received, the kernel sends a +\fBSIGURG\fP signal to the process or process group that has been set as the +socket "owner" using the \fBSIOCSPGRP\fP or \fBFIOSETOWN\fP ioctls (or the +POSIX.1\-specified \fBfcntl\fP(2) \fBF_SETOWN\fP operation). When the +\fBSO_OOBINLINE\fP socket option is enabled, urgent data is put into the normal +data stream (a program can test for its location using the \fBSIOCATMARK\fP +ioctl described below), otherwise it can be received only when the +\fBMSG_OOB\fP flag is set for \fBrecv\fP(2) or \fBrecvmsg\fP(2). +.PP +When out\-of\-band data is present, \fBselect\fP(2) indicates the file +descriptor as having an exceptional condition and \fIpoll (2)\fP indicates a +\fBPOLLPRI\fP event. +.PP Linux 2.4 では多くの変更がなされ、 スループットとスケーリングが向上し、機能も高まった。 これらの機能には、ゼロコピー \fBsendfile\fP(2)、 Explicit Congestion Notification、 TIME_WAIT ソケットの新しい管理法、 keep\-alive ソケットオプション、 Duplicate SACK 拡張のサポートなどがある。 @@ -157,7 +186,9 @@ TCP は IP の上層に構築されている (\fBip\fP(7) を参照)。 \fBip\f \fIBoolean\fP は整数値で、 0 以外の値 ("true") は対応するオプションが有効、 0 値 ("false") は無効、であることを意味する。 .TP -\fItcp_abc\fP (Integer; default: 0; Linux 2.6.15 以降) +\fItcp_abc\fP (Integer; default: 0; Linux 2.6.15 to Linux 3.8) +.\" Since 2.6.15; removed in 3.9 +.\" commit ca2eb5679f8ddffff60156af42595df44a315ef0 .\" The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt RFC 3465 で定義されている Appropriate Byte Count (ABC) を制御する。 ABC は、部分的な ACK に応じた輻輳ウィンドウ (\fIcwnd\fP) の増加をより緩やかにする方法である。 以下の値を指定できる。 @@ -182,7 +213,7 @@ ACK が遅延 ACK (delayed acknowledgment) を相殺するための 2 セグメ バッファーリングのオーバーヘッドの計算方法を、 \fItcp_adv_win_scale\fP が正の場合は \fIbytes/2^tcp_adv_win_scale\fP に、 \fItcp_adv_win_scale\fP が負か 0 の場合は \fIbytes\-bytes/2^(\-tcp_adv_win_scale)\fP とする。 - +.IP ソケットの受信バッファー空間はアプリケーションとカーネルで共有される。 TCP はバッファーの一部を TCP ウィンドウとして管理し、 これを受信ウィンドウとして接続の他端に通知する。 空間の残りは「アプリケーション」バッファーとして用いられ、 スケジューリングやアプリケーションの遅延からネットワークを隔離する。 \fItcp_adv_win_scale\fP のデフォルト値は 2 であり、 @@ -213,7 +244,7 @@ qdisc キューかデバイスの送信キューで送信待ちの場合であ \fItcp_app_win\fP (integer; default: 31; Linux 2.4 以降) .\" Since 2.4.0-test7 この変数は、TCP ウィンドウの何バイト分を バッファーリングのオーバーヘッド用に予約するかを指定する。 - +.IP .\" .\" The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt そのウィンドウの \fIwindow/2^tcp_app_win\fP と mss の大きいほう (バイト単位) @@ -257,10 +288,36 @@ BIC TCP が輻輳ウィンドウの変化により速く反応するようにす .\" Since 2.4.0-test7 RFC\ 2883 の TCP Duplicate SACK のサポートを有効にする。 .TP -\fItcp_ecn\fP (ブール値; デフォルト: 無効; Linux 2.4 以降) +\fItcp_ecn\fP (Integer; default: see below; since Linux 2.4) .\" Since 2.4.0-test7 -RFC\ 2884 の Explicit Congestion Notification を有効にする。 -これを有効にすると、間違った振舞いをする古いルーターが 経路の途中にあるような接続先に対して影響が生じ、 場合によっては接続が落ちるかもしれない。 +Enable RFC\ 3168 Explicit Congestion Notification. +.IP +このファイルは以下のいずれかの値を取ることができる。 +.RS +.IP 0 +Disable ECN. Neither initiate nor accept ECN. This was the default up to +and including Linux 2.6.30. +.IP 1 +Enable ECN when requested by incoming connections and also request ECN on +outgoing connection attempts. +.IP 2 +.\" commit 255cac91c3c9ce7dca7713b93ab03c75b7902e0e +Enable ECN when requested by incoming connections, but do not request ECN on +outgoing connections. This value is supported, and is the default, since +Linux 2.6.31. +.RE +.IP +When enabled, connectivity to some destinations could be affected due to +older, misbehaving middle boxes along the path, causing connections to be +dropped. However, to facilitate and encourage deployment with option 1, and +to work around such buggy equipment, the \fBtcp_ecn_fallback\fP option has been +introduced. +.TP +\fItcp_ecn_fallback\fP (Boolean; default: enabled; since Linux 4.1) +.\" commit 492135557dc090a1abb2cfbe1a412757e3ed68ab +Enable RFC\ 3168, Section 6.1.1.1. fallback. When enabled, outgoing +ECN\-setup SYNs that time out within the normal SYN retransmission timeout +will be resent with CWR and ECE cleared. .TP \fItcp_fack\fP (ブール値; デフォルト: 有効; Linux 2.2 以降) .\" Since 2.1.92 @@ -273,29 +330,33 @@ TCP Forward Acknowledgement のサポートを有効にする。 ソケットを強制的にクローズする前に、 最後の FIN パケットを待つ時間を秒単位で指定する。 これは厳密には TCP の仕様を満たしていないが、 DoS 攻撃 (denial of service attack) から身を守るために必要である。 Linux 2.2 ではデフォルト値は 180 であった。 .TP -\fItcp_frto\fP (integer; default: 0; Linux 2.4.21/2.6 以降) +\fItcp_frto\fP (integer; default: see below; since Linux 2.4.21/2.6) .\" Since 2.4.21/2.5.43 F\-RTO を有効にする。F\-RTO は TCP 再送タイムアウト (RTO) からの 復旧性能を向上させたアルゴリズムである。 この機能は無線環境で特に効果を発揮する。 無線環境では、通常は、中間ルーターの輻輳ではなくランダムな無線の干渉 によりパケットロスが発生する。 詳細は RFC\ 4138 を参照。 - +.IP このファイルは以下のいずれかの値を取ることができる。 .RS .IP 0 3 -F\-RTO を無効にする。 +Disabled. This was the default up to and including Linux 2.6.23. .IP 1 基本版の F\-RTO アルゴリズムを有効にする。 .IP 2 -そのフローで SACK を使用する場合、SACK 拡張版の F\-RTO を有効にする。 基本版の F\-RTO も SACK -が使用されている場合にも使用できるが、 基本版の場合には F\-RTO が SACK が有効になった TCP フローでの -パケット数計測と、相性が悪く相互干渉が起こる場面が存在する。 +.\" commit c96fd3d461fa495400df24be3b3b66f0e0b152f9 +Enable SACK\-enhanced F\-RTO if flow uses SACK. The basic version can be used +also when SACK is in use though in that case scenario(s) exists where F\-RTO +interacts badly with the packet counting of the SACK\-enabled TCP flow. This +value is the default since Linux 2.6.24. .RE .IP Linu 2.6.22 より前では、このパラメーターはブール値であり、 上記の 0 と 1 のみをサポートしていた。 .TP \fItcp_frto_response\fP (integer; default: 0; Linux 2.6.22 以降) -F\-RTO が TCP 再送タイムアウトが偽物だと検出した場合 (つまり、TCP がもっと長い再送タイムアウトを設定していれば -タイムアウトが避けられた場合)、 次にどうするかに関して選択肢がいくつかある。 以下の値を選択できる。 +When F\-RTO has detected that a TCP retransmission timeout was spurious +(i.e., the timeout would have been avoided had TCP set a longer +retransmission timeout), TCP has several options concerning what to do +next. Possible values are: .RS .IP 0 3 レートを元の半分にする。 滑らかで、保守的な反応を行い、RTT 1回分の時間後に 輻輳ウィンドウ (\fIcwnd\fP) とスロースタートの閾値 @@ -321,32 +382,50 @@ TCP keep\-alive プローブの最大回数。 この回数だけ試しても接 接続がアイドル状態になってから、keep\-alive プローブを送信するまでの時間を秒単位で指定する。 \fBSO_KEEPALIVE\fP ソケットオプションが有効になっている場合のみ keep\-alive は送信される。 デフォルト値は 7200 秒 (2 時間)。 keep\-alive が有効になっている場合、 さらにおよそ 11 分 (75 秒間隔の 9 プローブ分) 経過するとアイドル状態の接続は終了させられる。 - +.IP .\" .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt 下層にある接続追跡機構やアプリケーションでのタイムアウトは、 もっとずっと短いかもしれない。 .TP -\fItcp_low_latency\fP (ブール値; デフォルト: 無効; Linux 2.4.21/2.6 以降) +\fItcp_low_latency\fP (Boolean; default: disabled; since Linux 2.4.21/2.6; obsolete since Linux 4.14) .\" Since 2.4.21/2.5.60 -有効にすると、TCP スタックはスループットを高くするよりも 遅延を少なくすることを優先して判断を行う。 -このオプションを無効にすると、スループットを高くすることが優先される。 このデフォルト値を変更した方がよいアプリケーションの例としては Beowulf -コンピュータクラスタが挙げられるだろう。 +.\" commit b6690b14386698ce2c19309abad3f17656bdfaea +If enabled, the TCP stack makes decisions that prefer lower latency as +opposed to higher throughput. It this option is disabled, then higher +throughput is preferred. An example of an application where this default +should be changed would be a Beowulf compute cluster. Since Linux 4.14, +this file still exists, but its value is ignored. .TP \fItcp_max_orphans\fP (integer; default: see below; Linux 2.4 以降) .\" Since 2.3.41 -システムが許容する、 orphan な (どのユーザーファイルハンドルにもアタッチされていない) TCP ソケットの最大数。 -この数を越えると、orphan な接続はリセットされ、警告が表示される。 この制限が存在するのは、単純な使用不能 (denial\-of\-service) -攻撃を 防ぐために過ぎない。この値を小さくすることは推奨しない。 ネットワークの条件によっては、この数値を大きくしないといけないかもしれないが、 -orphan なソケットひとつあたり 64K 程度のスワップ不可能なメモリーを消費することも注意せよ。 デフォルトの初期値はカーネルパラメーターの -NR_FILE と等しい。 この初期デフォルト値はシステムのメモリーに応じて調整される。 +The maximum number of orphaned (not attached to any user file handle) TCP +sockets allowed in the system. When this number is exceeded, the orphaned +connection is reset and a warning is printed. This limit exists only to +prevent simple denial\-of\-service attacks. Lowering this limit is not +recommended. Network conditions might require you to increase the number of +orphans allowed, but note that each orphan can eat up to \(ti64\ kB of +unswappable memory. The default initial value is set equal to the kernel +parameter NR_FILE. This initial default is adjusted depending on the memory +in the system. .TP \fItcp_max_syn_backlog\fP (integer; default: 下記参照; Linux 2.2 以降) .\" Since 2.1.53 -接続してきているクライアントから ack を受信していない状態の接続リクエストをキューに置ける最大数。 -この数値を越えると、カーネルはリクエストを捨て始める。 デフォルトの値は 256 で、 システムに充分なメモリーがある (128Mb 以上) 場合は -1024 になり、 メモリーが非常に少ない場合 (32 Mb 以下) は 128 になる。 この数値を 1024 以上に増やしたい場合は、 -\fIinclude/net/tcp.h\fP の TCP_SYNQ_HSIZE を -TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog のように修正し、 カーネルを再コンパイルすることを奨める。 +The maximum number of queued connection requests which have still not +received an acknowledgement from the connecting client. If this number is +exceeded, the kernel will begin dropping requests. The default value of 256 +is increased to 1024 when the memory present in the system is adequate or +greater (>= 128\ MB), and reduced to 128 for those systems with very low +memory (<= 32\ MB). +.IP +.\" commit 72a3effaf633bcae9034b7e176bdbd78d64a71db +Prior to Linux 2.6.20, it was recommended that if this needed to be +increased above 1024, the size of the SYNACK hash table (\fBTCP_SYNQ_HSIZE\fP) +in \fIinclude/net/tcp.h\fP should be modified to keep +.IP + TCP_SYNQ_HSIZE * 16 <= tcp_max_syn_backlog +.IP +and the kernel should be recompiled. In Linux 2.6.20, the fixed sized +\fBTCP_SYNQ_HSIZE\fP was removed in favor of dynamic sizing. .TP \fItcp_max_tw_buckets\fP (integer; default: 下記参照; Linux 2.4 以降) .\" Since 2.3.41 @@ -366,7 +445,7 @@ TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog のように修正し、 カーネルを デフォルトはブート時に利用できるメモリーの量から計算される。 (実際には、TCP は \fIlow memory\fP のみを使用する。値は 32ビットシステムでは約 900 メガバイトに制限される。 64 ビットシステムではこの制限はない。) .RS -.TP 10 +.TP \fIlow\fP TCP は、グローバルにアロケートしたページがこの数値以下の場合は、 メモリーアロケーションを調整しない。 .TP @@ -434,12 +513,14 @@ TCP の動作を RFC\ 1337 に準拠させる。 無効にすると、TIME_WAIT が受信バッファーサイズを調整するために用いられる。 TCP は、システムで利用できるメモリーに応じて、 受信バッファーのサイズをこれらの変数の範囲で 以下に示すデフォルトから動的に調整する。 .RS -.TP 10 +.TP \fImin\fP -各 TCP ソケットが用いる受信バッファーの最小サイズ。 デフォルト値はシステムのページサイズである (Linux 2.4 では、デフォルト値は 4K -バイトで、 メモリーの少ないシステムでは \fBPAGE_SIZE\fP バイトに減らされる)。 この値は、メモリー圧迫モードにおいても、 -このサイズの割り当てが成功することを保証するために用いられる。 これは、 \fBSO_RCVBUF\fP -を用いてソケットの最低受信バッファーサイズを宣言する際には用いられない。 +minimum size of the receive buffer used by each TCP socket. The default +value is the system page size. (On Linux 2.4, the default value is 4\ kB, +lowered to \fBPAGE_SIZE\fP bytes in low\-memory systems.) This value is used to +ensure that in memory pressure mode, allocations below this size will still +succeed. This is not used to bound the size of the receive buffer declared +using \fBSO_RCVBUF\fP on a socket. .TP \fIdefault\fP TCP ソケットの受信バッファーのデフォルトサイズ。 この値は、すべてのプロトコルに対して定義されている、 @@ -451,9 +532,9 @@ TCP ソケットの受信バッファーのデフォルトサイズ。 この値 \fImax\fP 各 TCP ソケットで用いる受信バッファーの最大サイズ。 この値よりもグローバルの \fInet.core.rmem_max\fP が優先される。 これは、 \fBSO_RCVBUF\fP を用いてソケットの受信バッファーサイズ制限を宣言する際には用いられない。 デフォルト値は以下の式で計算される。 - - max(87380, min(4MB, \fItcp_mem\fP[1]*PAGE_SIZE/128)) - +.IP + max(87380, min(4\ MB, \fItcp_mem\fP[1]*PAGE_SIZE/128)) +.IP (Linux 2.4 では、デフォルト値は 87380*2 バイトで、 メモリーの少ないシステムでは 87380 まで減らされる。) .RE .TP @@ -475,41 +556,71 @@ RFC\ 2018 の TCP Selective Acknowledgements を有効にする。 この解釈に従うと、緊急ポインターは緊急データの最後のバイトを指す。 このオプションを無効にすると、緊急ポインターの解釈が BSD 互換の方法で 行われる: 緊急ポインターは緊急データの後の最初のバイトを指す。 このオプションを有効にすると、相互運用性に問題が生じるかもしれない。 .TP -\fItcp_syn_retries\fP (integer; default: 5; Linux 2.2 以降) +\fItcp_syn_retries\fP (integer; default: 6; since Linux 2.2) .\" Since 2.1.38 -アクティブな TCP 接続に初期 SYN の再送を試みる最大回数。 この数値は 255 よりも大きくすべきではない。 デフォルトの値は 5 で、およそ -180 秒に対応する。 +.\" commit 6c9ff979d1921e9fd05d89e1383121c2503759b9 +The maximum number of times initial SYNs for an active TCP connection +attempt will be retransmitted. This value should not be higher than 255. +The default value is 6, which corresponds to retrying for up to +approximately 127 seconds. Before Linux 3.7, the default value was 5, which +(in conjunction with calculation based on other kernel parameters) +corresponded to approximately 180 seconds. .TP \fItcp_synack_retries\fP (integer; default: 5; Linux 2.2 以降) .\" Since 2.1.38 passive な TCP 接続の SYN/ACK セグメントで再送を試みる最大数。 この数値は 255 よりも大きくすべきではない。 .TP -\fItcp_syncookies\fP (Boolean; Linux 2.2 以降) +\fItcp_syncookies\fP (integer; default: 1; since Linux 2.2) .\" Since 2.1.43 -TCP syncookies を有効にする。カーネルは \fBCONFIG_SYNCOOKIES\fP をつけてコンパイルしておかなければならない。 -ソケットのバックログキューがオーバーフローすると、 syncookies が送信される。 syncookies 機能は、SYN flood -攻撃からソケットを守ろうとする。 これはいずれにしても、最終手段として用いるべきである。 これは TCP プロトコルに違反しており、 TCP -拡張のような、TCP の他の部分と衝突してしまう。 クライアントやリレーで問題が起こることもある。 -過負荷や設定間違いによって負荷の大きな状態にあるサーバを調整して救うための 機構とみなすべきではない。 そのような用途には、代わりに -\fItcp_max_syn_backlog\fP, \fItcp_synack_retries\fP, \fItcp_abort_on_overflow\fP -などの使用を考えること。 -.TP -\fItcp_timestamps\fP (ブール値; デフォルト: 有効; Linux 2.2 以降) +Enable TCP syncookies. The kernel must be compiled with +\fBCONFIG_SYN_COOKIES\fP. The syncookies feature attempts to protect a socket +from a SYN flood attack. This should be used as a last resort, if at all. +This is a violation of the TCP protocol, and conflicts with other areas of +TCP such as TCP extensions. It can cause problems for clients and relays. +It is not recommended as a tuning mechanism for heavily loaded servers to +help with overloaded or misconfigured conditions. For recommended +alternatives see \fItcp_max_syn_backlog\fP, \fItcp_synack_retries\fP, and +\fItcp_abort_on_overflow\fP. Set to one of the following values: +.RS +.IP 0 3 +Disable TCP syncookies. +.IP 1 +Send out syncookies when the syn backlog queue of a socket overflows. +.IP 2 +.\" commit 5ad37d5deee1ff7150a2d0602370101de158ad86 +(since Linux 3.12) Send out syncookies unconditionally. This can be useful +for network testing. +.RE +.TP +\fItcp_timestamps\fP (integer; default: 1; since Linux 2.2) .\" Since 2.1.36 -RFC\ 1323 の TCP timestamps を有効にする。 +Set to one of the following values to enable or disable RFC\ 1323 TCP +timestamps: +.RS +.IP 0 3 +Disable timestamps. +.IP 1 +Enable timestamps as defined in RFC1323 and use random offset for each +connection rather than only using the current time. +.IP 2 +.\" commit 25429d7b7dca01dc4f17205de023a30ca09390d0 +As for the value 1, but without random offsets. Setting \fItcp_timestamps\fP +to this value is meaningful since Linux 4.10. +.RE .TP \fItcp_tso_win_divisor\fP (integer; default: 3; Linux 2.6.9 以降) このパラメーターは、一つの TCP Segmentation Offload (TSO) フレームで 消費できる輻輳ウィンドウの割合 (パーセント) を制御する。 バースト性と、どれだけ大きな TSO フレームを構築するかのはトレードオフであり、 このパラメーターはその度合いを設定する。 .TP -\fItcp_tw_recycle\fP (ブール値; デフォルト: 無効; Linux 2.4 以降) +\fItcp_tw_recycle\fP (Boolean; default: disabled; Linux 2.4 to 4.11) .\" Since 2.3.15 +.\" removed in 4.12; commit 4396e46187ca5070219b81773c4e65088dac50cc .\" .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt -TIME_WAIT ソケットの素早い再利用 (fast recycling) を有効にする。 通常のインターネットと通信したり NAT -(ネットワークアドレス変換) を使うデバイスでは、 このオプションを有効にするのは推奨されない。 いくつかの NAT ゲートウェイでは IP -タイムスタンプをそのまま通過させるので、 一つの IP が増加しないタイムスタンプを持つように見える。 RFC 1323 (PAWS), RFC -6191 を参照。 +Enable fast recycling of TIME_WAIT sockets. Enabling this option is not +recommended as the remote IP may not use monotonically increasing timestamps +(devices behind NAT, devices with per\-connection timestamp offsets). See +RFC 1323 (PAWS) and RFC 6191. .TP \fItcp_tw_reuse\fP (ブール値; デフォルト: 無効; Linux 2.4.19/2.6 以降) .\" Since 2.4.19/2.5.43 @@ -535,11 +646,13 @@ start の閾値と輻輳ウィンドウを設定する。 TCP Westwood+ は、 .TP \fItcp_window_scaling\fP (ブール値; デフォルト: 有効; Linux 2.2 以降) .\" Since 2.1.36 -RFC\ 1323 の TCP ウィンドウスケーリングを有効にする。 この機能を用いると、接続先が対応していれば、 TCP 接続で大きな (64K -以上の) ウィンドウが使えるようになる。 通常は TCP ヘッダーのウインドウ長フィールドは 16 ビットなので、 ウィンドウサイズは 64K -バイト以下に限られる。 もっと大きなウィンドウを使いたい場合は、 アプリケーションはソケットバッファーのサイズを増やして、 -ウィンドウスケーリングのオプションを利用すればよい。 \fItcp_window_scaling\fP を無効にしていると、 TCP -は他端との接続設定の際に、 ウィンドウスケーリングのネゴシエーションを行なわない。 +Enable RFC\ 1323 TCP window scaling. This feature allows the use of a large +window (> 64\ kB) on a TCP connection, should the other end support it. +Normally, the 16 bit window length field in the TCP header limits the window +size to less than 64\ kB. If larger windows are desired, applications can +increase the size of their socket buffers and the window scaling option will +be employed. If \fItcp_window_scaling\fP is disabled, TCP will not negotiate +the use of window scaling with the other end during connection setup. .TP \fItcp_wmem\fP (Linux 2.4 以降) .\" Since 2.4.0-test7 @@ -547,27 +660,32 @@ RFC\ 1323 の TCP ウィンドウスケーリングを有効にする。 この が送信バッファーサイズを調整するために用いられる。 TCP は、システムで利用できるメモリーに応じて、送信バッファーのサイズを これらの変数の範囲で以下に示すデフォルトから動的に調整する。 .RS -.TP 10 +.TP \fImin\fP -各 TCP ソケットが用いる送信バッファーの最小サイズ。 デフォルト値はシステムのページサイズである (Linux 2.4 では、デフォルト値は 4K -である)。 この値は、メモリー圧迫モードにおいても、 このサイズ以下の割り当てが成功することを保証するために用いられる。 これは、 -\fBSO_SNDBUF\fP を用いてソケットの最低送信バッファーサイズを宣言する際には用いられない。 +Minimum size of the send buffer used by each TCP socket. The default value +is the system page size. (On Linux 2.4, the default value is 4\ kB.) This +value is used to ensure that in memory pressure mode, allocations below this +size will still succeed. This is not used to bound the size of the send +buffer declared using \fBSO_SNDBUF\fP on a socket. .TP \fIdefault\fP .\" True in Linux 2.4 and 2.6 -TCP ソケットの送信バッファーのデフォルトサイズ。 この値は、すべてのプロトコルに対して定義されている、 -ジェネリックなグローバルのデフォルトバッファーサイズ \fI/proc/sys/net/core/wmem_default\fP より優先される。 -デフォルト値は 16K バイトである。 大きな送信バッファーサイズが必要な場合は、 この値を増やすべきである (すべてのソケットに影響する)。 大きな -TCP ウィンドウを用いるには、 \fI/proc/sys/net/ipv4/tcp_window_scaling\fP を 0 以外の値 (デフォルト値) -にしておかなければならない。 +The default size of the send buffer for a TCP socket. This value overwrites +the initial default buffer size from the generic global +\fI/proc/sys/net/core/wmem_default\fP defined for all protocols. The default +value is 16\ kB. If larger send buffer sizes are desired, this value should +be increased (to affect all sockets). To employ large TCP windows, the +\fI/proc/sys/net/ipv4/tcp_window_scaling\fP must be set to a nonzero value +(default). .TP \fImax\fP 各 TCP ソケットで用いる送信バッファーの最大サイズ。 この値よりも \fI/proc/sys/net/core/wmem_max\fP が優先される。 これは \fBSO_SNDBUF\fP を用いてソケットの送信バッファーサイズ制限を宣言する際には用いられない。 デフォルト値は以下の式で計算される。 - - max(65536, min(4MB, \fItcp_mem\fP[1]*PAGE_SIZE/128)) - -(Linux 2.4 では、デフォルト値は 128K バイトで、 メモリーの少ないシステムでは 64K にまで減らされる。) +.IP + max(65536, min(4\ MB, \fItcp_mem\fP[1]*PAGE_SIZE/128)) +.IP +(On Linux 2.4, the default value is 128\ kB, lowered 64\ kB depending on +low\-memory systems.) .RE .TP \fItcp_workaround_signed_windows\fP (ブール値; デフォルト: 無効; Linux 2.6.26 以降) @@ -578,6 +696,10 @@ TCP ウィンドウを用いるには、 \fI/proc/sys/net/ipv4/tcp_window_scalin TCP ソケットのオプションは、 オプションレベル引数に \fIIPPROTO_TCP\fP を指定した \fBsetsockopt\fP(2) で設定でき、 \fBgetsockopt\fP(2) で取得できる。 注釈がない限り、 \fIoptval\fP は \fIint\fP へのポインターである。 さらに、ほとんどの \fBIPPROTO_IP\fP ソケットオプションも TCP ソケットに対して有効である。詳細は \fBip\fP(7) を見よ。 +.PP +Following is a list of TCP\-specific socket options. For details of some +other socket options that are also applicable for TCP sockets, see +\fBsocket\fP(7). .TP \fBTCP_CONGESTION\fP (Linux 2.6.13 以降) .\" commit 5f8ef48d240963093451bcf83df89f1a1364f51d @@ -660,23 +782,25 @@ quickack モードでは ack はすぐに送信される。 このフラグは .\" The following text taken nearly verbatim from Jerry Chu's (excellent) .\" commit message. .\" -このオプションは \fIunsigned int\fP 型の引き数を取る。 値が 0 より大きい場合、その値は、 どのくらいの時間、送信されたデータが ACK -を受信しないままの状態が続くと、 TCP がその接続を強制的にクローズし、アプリケーションに \fBETIMEDOUT\fP を返すかを、 -ミリ秒単位で指定する。 オプションの値が 0 の場合、TCP はシステムのデフォルト値を使用する。 - +This option takes an \fIunsigned int\fP as an argument. When the value is +greater than 0, it specifies the maximum amount of time in milliseconds that +transmitted data may remain unacknowledged before TCP will forcibly close +the corresponding connection and return \fBETIMEDOUT\fP to the application. If +the option value is specified as 0, TCP will use the system default. +.IP ユーザータイムアウトを長くすると、 通信の両端での接続性がない場合でも長い時間 TCP 接続が維持されるようになる。 ユーザータイムアウトを短くすると、 アプリケーションは必要であれば「早く失敗」できるようになる。 設定しなかった場合は、 通常の WAN 環境では現在のシステムのデフォルトの 20 分で失敗することになる。 - +.IP このオプションは TCP 接続がどの状態の場合でも設定することができるが、 接続が同期状態 (ESTABLISHED, FIN\-WAIT\-1, FIN\-WAIT\-2, CLOSE\-WAIT, CLOSING, LAST\-ACK) の場合のみ効果がある。 また、 TCP keepalive (\fBSO_KEEPALIVE\fP) オプションとともに使用された場合、 \fBTCP_USER_TIMEOUT\fP は keepalive 失敗による接続クローズを判定するための keepalive 値を上書きする。 - +.IP このオプションは TCP がパケットを再送する際や keepalive プローブを送信する際には影響を及ぼさない。 - +.IP 他の多くのオプション同様、リッスン中のソケットでこのオプションがセットされていれば \fBaccept\fP(2) が返すソケットにオプションが継承される。 - +.IP ユーザータイムアウト機能の詳細は RFC\ 793 と RFC\ 5482 ("TCP User Timeout Option") に書かれている。 .TP \fBTCP_WINDOW_CLAMP\fP (Linux 2.4 以降) @@ -691,9 +815,9 @@ Linux においては、 接続先が (新しいやり方の) 帯域外データ .PP Linux は、デフォルトでは urgent ポインターフィールドの解釈に BSD 互換の方法を用いる。これは RFC\ 1122 に反しているが、 他のスタックと同時に動作させるにはやむを得ない。これは \fI/proc/sys/net/ipv4/tcp_stdurg\fP によって変更できる。 - +.PP \fBrecv\fP(2) の \fBMSG_PEEK\fP フラグを使うと、帯域外データを覗き見することができる。 - +.PP Linux 2.4 以降では、 \fBrecv\fP(2) (や \fBrecvmsg\fP(2)) の \fIflags\fP 引き数に \fBMSG_TRUNC\fP を使うことができる。 このフラグを指定すると、受信データは、呼び出し元から渡されたバッファー にコピーされて返されるのではなく、廃棄されるようになる。 Linux 2.4.4 以降では、 \fBMSG_TRUNC\fP を、帯域外データを受信するための \fBMSG_OOB\fP @@ -722,12 +846,12 @@ LISTEN 状態にあってはならず、さもないとエラー (\fBEINVAL\fP) .TP \fBSIOCATMARK\fP 受信データストリームが緊急マークの位置であれば、真を返す (つまり \fIvalue\fP が 0 以外)。 - +.IP \fBSO_OOBINLINE\fP ソケットオプションが設定されていて、 \fBSIOCATMARK\fP が真を返した場合、次のソケットからの読み込みでは緊急データが 返される。 \fBSO_OOBINLINE\fP ソケットオプションが設定されておらず、 \fBSIOCATMARK\fP が真を返した場合、次のソケットからの読み込みでは緊急データに 続くデータが返される (実際に緊急データを読み込むには \fBrecv(MSG_OOB)\fP とフラグをつける必要がある)。 - +.IP データの一回の読み込みでは緊急マークを跨がっての読み込みは行われない。 アプリケーションが緊急データの存在を (\fIexceptfds\fP 引き数を使って) \fBselect\fP(2) 経由または \fBSIGURG\fP シグナルの配送を通じて知らされた場合、 \fBSIOCATMARK\fP のチェックと読み込み (何バイト読み込み要求をしてもよい) を \fBSIOCATMARK\fP @@ -766,7 +890,7 @@ Explicit Congestion Notification、zero\-copy の \fBsendfile\fP(2)、 並び替 keepalive に対するソケットオプションは 2.3 で導入された。 .SH バグ まだ説明されていないエラーがある。 -.br +.PP .\" Only a single Linux kernel version is described .\" Info for 2.2 was lost. Should be added again, .\" or put into a separate page. @@ -780,7 +904,9 @@ IPv6 に関する記述がない。 \fBaccept\fP(2), \fBbind\fP(2), \fBconnect\fP(2), \fBgetsockopt\fP(2), \fBlisten\fP(2), \fBrecvmsg\fP(2), \fBsendfile\fP(2), \fBsendmsg\fP(2), \fBsocket\fP(2), \fBip\fP(7), \fBsocket\fP(7) -.sp +.PP +The kernel source file \fIDocumentation/networking/ip\-sysctl.txt\fP. +.PP RFC\ 793: TCP の仕様。 .br RFC\ 1122: TCP の要求事項と Nagle アルゴリズムの記述。 @@ -795,6 +921,5 @@ RFC\ 2581: TCP 輻輳制御アルゴリズム。 .br RFC\ 2018 と RFC\ 2883: SACK とその拡張。 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/termio.7 b/manual/LDP_man-pages/draft/man7/termio.7 deleted file mode 100644 index 9cd81a06..00000000 --- a/manual/LDP_man-pages/draft/man7/termio.7 +++ /dev/null @@ -1,57 +0,0 @@ -.\" Copyright (c) 2006 by 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 -.\" -.\" 28 Dec 2006 - Initial Creation -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 2007 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2007-05-04, Akihiro MOTOKI , LDP v2.44 -.\" -.TH TERMIO 7 2013\-02\-12 Linux "Linux Programmer's Manual" -.SH 名前 -termio \- System V 端末ドライバインターフェース -.SH 説明 -\fBtermio\fP は、古い System V 端末ドライバインターフェースの名前である。 このインターフェースは、 端末設定を保持するための -\fItermio\fP 構造体、および端末属性を取得・変更するための種々の \fBioctl\fP(2) 操作を定義していた。 - -\fBtermio\fP インターフェースは現在では時代遅れである。 POSIX.1\-1990 で、このインターフェースの修正版が \fBtermios\fP -という名前で標準化された。 POSIX.1 のデータ構造は System V 版と少し違いがある。 また、POSIX.1 は System V -版で存在した種々の \fBioctl\fP(2) 操作を置き換える関数群を定義した (このようになったのは、 \fBioctl\fP(2) -が標準化されていなかったことと、 \fBioctl\fP(2) の第三引き数が可変長引き数で型チェックができなかったのが理由である)。 - -"termio" という man page を探しているのであれば、 探している情報のほとんどは \fBtermios\fP(3) か -\fBtty_ioctl\fP(4) のどちらかで見つかることだろう。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index 499d0f1c..a151758f 100644 --- a/manual/LDP_man-pages/draft/man7/time.7 +++ b/manual/LDP_man-pages/draft/man7/time.7 @@ -39,14 +39,14 @@ .\" Updated 2013-05-01, Akihiro MOTOKI .\" Updated 2013-05-06, Akihiro MOTOKI .\" -.TH TIME 7 2012\-10\-28 Linux "Linux Programmer's Manual" +.TH TIME 7 2020\-04\-11 Linux "Linux Programmer's Manual" .SH 名前 time \- 時間とタイマーの概要 .SH 説明 .SS "実時間 (real time) とプロセス時間" \fI実時間\fPは、特定の時点から計った時間と定義される。 特定の時点とは、過去の標準的な時点 (下記の紀元 (Epoch) とカレンダ時刻の説明を参照) や、 プロセスの一生における何らかの時点 (例えば、開始時) である (\fI経過時間\fP)。 - +.PP \fIプロセス時間\fPは、プロセスによって使われた総 CPU 時間と定義される。 多くの場合、\fIユーザー\fP時間と\fIシステム\fP時間に分けられる。 ユーザー CPU 時間は、コードをユーザーモードで実行するのに使った時間である。 システム CPU 時間は、そのプロセスのために カーネルがシステムモードで実行するのに使った時間である (例えば、システムコールを実行するのに使った時間)。 \fBtime\fP(1) @@ -62,37 +62,47 @@ CPU 時間は、コードをユーザーモードで実行するのに使った \fBgetrusage\fP(2))\fBする様々なシステムコールの精度は\fP \fIソフトウェアクロック\fP の分解能 (resolution) に制限される。 ソフトウェアクロックとは、カーネルが管理する \fIjiffy\fP 単位で時間を計測するクロックのことである。 jiffy の大きさはカーネル定数 \fIHZ\fP の値で決定される。 - +.PP \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)。 - +.PP .\" 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 "System and process clocks; time namespaces" +.\" +The kernel supports a range of clocks that measure various kinds of elapsed +and virtual (i.e., consumed CPU) time. These clocks are described in +\fBclock_gettime\fP(2). A few of the clocks are settable using +\fBclock_settime\fP(2). The values of certain clocks are virtualized by time +namespaces; see \fBtime_namespaces\fP(7). .SS 高精度タイマー Linux 2.6.21 より前では、タイマーやスリープ関連のシステムコールの精度も jiffy のサイズにより制限されていた。 - +.PP 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" エントリーを参照するかで判断できる。 - +.PP 高精度タイマーはすべてのハードウェアアーキテクチャーでサポートされている 訳ではない (対応しているアーキテクチャーは x86, arm, powerpc である)。 .SS 紀元 UNIX システムは時刻を 紀元 (1970\-01\-01 00:00:00 +0000 (UTC)) からの秒数で表現する。 - -プログラムは \fIカレンダ時刻\fP を \fBgettimeofday\fP(2) を使って計ることができる。 この関数は紀元からの経過時間を -(秒とマイクロ秒で) 返す。 \fBtime\fP(2) は同様の情報を提供するが、最も近い秒の精度しかない。 システム時刻は -\fBsettimeofday\fP(2) で変更できる。 +.PP +.\" +A program can determine the \fIcalendar time\fP via the \fBclock_gettime\fP(2) +\fBCLOCK_REALTIME\fP clock, which returns time (in seconds and nanoseconds) +that have elapsed since the Epoch; \fBtime\fP(2) provides similar information, +but only with accuracy to the nearest second. The system time can be +changed using \fBclock_settime\fP(2). .SS 要素別の時刻 ライブラリ関数の中には \fItm\fP 型の構造体を使うものがある。 この構造体は\fI要素別の時刻\fPを表し、 時刻の値を別々の要素 (年・月・日・時・分・秒など) に分けて格納する。 この構造体は \fBctime\fP(3) に記述されており、カレンダ時刻を要素別の時刻に変換する @@ -101,7 +111,7 @@ UNIX システムは時刻を 紀元 (1970\-01\-01 00:00:00 +0000 (UTC)) から .SS タイマーのスリープと設定 様々なシステムコールと関数により、指定された一定の時間、 プログラムはスリープ (実行を停止) することが可能である。 \fBnanosleep\fP(2), \fBclock_nanosleep\fP(2), \fBsleep\fP(3) を参照すること。 - +.PP 様々なシステムコールにより、プロセスは将来のある時点で 有効期間が終了するタイマーを設定できる。 またオプションとして繰り返し間隔が指定できるものもある。 \fBalarm\fP(2), \fBgetitimer\fP(2), \fBtimerfd_create\fP(2), \fBtimer_create\fP(2) を参照すること。 @@ -113,14 +123,15 @@ Linux 2.6.28 以降では、スレッドの "timer slack" 値を制御するこ .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) +\fBdate\fP(1), \fBtime\fP(1), \fBtimeout\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), \fBntp_adjtime\fP(3), +\fBntp_gettime\fP(3), \fBpthread_getcpuclockid\fP(3), \fBsleep\fP(3), \fBstrftime\fP(3), +\fBstrptime\fP(3), \fBtimeradd\fP(3), \fBusleep\fP(3), \fBrtc\fP(4), +\fBtime_namespaces\fP(7), \fBhwclock\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/udp.7 b/manual/LDP_man-pages/draft/man7/udp.7 index 92085da9..aaa6912e 100644 --- a/manual/LDP_man-pages/draft/man7/udp.7 +++ b/manual/LDP_man-pages/draft/man7/udp.7 @@ -22,7 +22,7 @@ .\" Updated 2008-12-29, Akihiro MOTOKI, LDP v3.14 .\" Updated 2010-04-10, Akihiro MOTOKI, LDP v3.24 .\" -.TH UDP 7 2013\-07\-31 Linux "Linux Programmer's Manual" +.TH UDP 7 2020\-04\-11 Linux "Linux Programmer's Manual" .SH 名前 udp \- IPv4 の ユーザーデータグラムプロトコル .SH 書式 @@ -31,13 +31,13 @@ udp \- IPv4 の ユーザーデータグラムプロトコル \fB#include \fP .br \fB#include \fP -.sp +.PP \fBudp_socket = socket(AF_INET, SOCK_DGRAM, 0);\fP .SH 説明 これは RFC\ 768 で記述されている User Datagram Protocol の実装である。 UDP はコネクションレスの、信頼性の低いデータパケットサービスである。 パケットは到着前に並び替えられたり複製されたりする。 UDP は転送エラーを検出するためにチェックサムを生成・チェックする。 - +.PP UDP ソケットが生成されるとき、 ローカルアドレスやリモートアドレスは指定されない。 正しい行き先アドレスを引数として \fBsendto\fP(2) や \fBsendmsg\fP(2) を呼べば、データグラムはただちに送信される。 ソケットに対して \fBconnect\fP(2) を呼ぶと、デフォルトの行き先アドレスが設定され、 \fBsend\fP(2) や \fBwrite\fP(2) @@ -46,17 +46,17 @@ UDP ソケットが生成されるとき、 ローカルアドレスやリモー を用いてローカルなアドレスにバインドさせることもできる。 そうでない場合は、ソケット層は自動的に \fI/proc/sys/net/ipv4/ip_local_port_range\fP で定義されている範囲の外で空いているローカルなポートを割り当て、 ソケットを \fBINADDR_ANY\fP にバインドする。 - +.PP 受信動作はパケットを一つだけ返す。渡したバッファーよりもパケットが 小さければ、そのパケットの大きさのデータだけが返される。 逆にバッファーよりも大きい場合はパケットは丸められ、 \fBMSG_TRUNC\fP フラグがセットされる。 \fBMSG_WAITALL\fP はサポートしていない。 - +.PP IP オプションは、 \fBip\fP(7) に記述されているソケットオプションを用いて読み書きできる。 これらは適切な \fI/proc\fP パラメーターが有効な場合に限ってカーネルによって処理される (しかし無効になっている場合でもユーザーには渡される)。 \fBip\fP(7) を参照のこと。 - +.PP \fBMSG_DONTROUTE\fP フラグが送信時にセットされている場合には、 行き先アドレスはローカルなインターフェースアドレスから 参照できなければならない。パケットはそのインターフェースにしか送られない。 - +.PP デフォルトでは、Linux の UDP は Path MTU Discovery を行う。 つまり、カーネルは特定の宛先 IP アドレスの MTU (Maximum Transmission Unit; 最大転送単位) を記録し、UDP パケットの書き込みが MTU を超えた場合 \fBEMSGSIZE\fP を返す。 \fBEMSGSIZE\fP を返された場合、アプリケーションはパケットサイズを小さくすべきである。 ソケットオプション @@ -71,12 +71,12 @@ UDP は IPv4 の \fIsockaddr_in\fP アドレスフォーマットを用いる。 これにはネットワークから受け取る非同期エラーも含まれる。 同じソケットを使って送信した昔のパケットに関するエラーを受け取るかもしれない。 この振る舞いは他の BSD ソケットの実装の多くとは異なる。 これらではソケットが接続されていない場合はエラーを全く返さない。 Linux の振る舞いは \fBRFC\ 1122\fP での指定に従ったものである。 - +.PP Linux 2.0 と 2.2 では、古いコードとの互換性のために、 \fBSO_BSDCOMPAT\fP \fBSOL_SOCKET\fP オプションを設定すれば、ソケットが接続されている 場合に限ってリモートのエラーを受信するようにできた (\fBEPROTO\fP と \fBEMSGSIZE\fP を除く)。 ローカルで生成されたエラーは常に渡される。 このソケットオプションのサポートはそれ以降のバージョンの Linux で 削除された。詳細は \fBsocket\fP(7) を参照。 - +.PP \fBIP_RECVERR\fP オプションが有効になっていると、 すべてのエラーはソケットのエラーキューに保存される。 これは \fBMSG_ERRQUEUE\fP フラグをセットして \fBrecvmsg\fP(2) を呼べば受信できる。 .SS "/proc インターフェース" @@ -85,7 +85,7 @@ Linux 2.0 と 2.2 では、古いコードとの互換性のために、 \fBSO_B \fIudp_mem\fP (Linux 2.6.25 以降) これは 3 つの整数からなるベクトル値で、 UDP の全ソケットのキューで利用可能なページ数を制御する。 .RS -.TP 10 +.TP \fImin\fP このページ数より少なければ、UDP はそのメモリー使用に関して 干渉されない。 UDP に割り当てられたメモリー総量がこの値を超過すると、 UDP はメモリー使用量を調整し始める。 @@ -110,14 +110,18 @@ UDP の全ソケットのキューで利用可能なページ数。 UDP ソケットオプションを設定または取得するには、 取得には \fBgetsockopt\fP(2) を、設定には \fBsetsockopt\fP(2) をオプションレベル引数に \fBIPPROTO_UDP\fP を指定して呼び出す。 注釈がない限り、 \fIoptval\fP は \fIint\fP へのポインターである。 +.PP +Following is a list of UDP\-specific socket options. For details of some +other socket options that are also applicable for UDP sockets, see +\fBsocket\fP(7). .TP \fBUDP_CORK\fP (Linux 2.5.44 以降) .\" FIXME document UDP_ENCAP (new in kernel 2.5.67) .\" From include/linux/udp.h: -.\" /* UDP encapsulation types */ -.\" #define UDP_ENCAP_ESPINUDP_NON_IKE 1 /* draft-ietf-ipsec-nat-t-ike-00/01 */ -.\" #define UDP_ENCAP_ESPINUDP 2 /* draft-ietf-ipsec-udp-encaps-06 */ -.\" #define UDP_ENCAP_L2TPINUDP 3 /* rfc2661 */ +.\" UDP_ENCAP_ESPINUDP_NON_IKE draft-ietf-ipsec-nat-t-ike-00/01 +.\" UDP_ENCAP_ESPINUDP draft-ietf-ipsec-udp-encaps-06 +.\" UDP_ENCAP_L2TPINUDP rfc2661 +.\" FIXME Document UDP_NO_CHECK6_TX and UDP_NO_CHECK6_RX, added in Linux 3.16 このオプションが指定されると、このソケットの全てのデータ出力は 一つのデータグラムに蓄積され、このオプションが無効化された時に 送信される。 このオプションは移植性を考慮したコードでは用いるべきではない。 .SS ioctl @@ -141,7 +145,8 @@ UDP ソケットオプションを設定または取得するには、 取得に を使う方が安全である。 .TP \fBTIOCOUTQ\fP (\fBSIOCOUTQ\fP) -ローカル送信キューにあるデータサイズをバイト単位で返す。 Linux 2.4 以上でのみ対応している。 +Returns the number of data bytes in the local send queue. Supported only +with Linux 2.4 and above. .PP さらに、 \fBip\fP(7) と \fBsocket\fP(7) で述べられている全ての ioctl も対応している。 .SH エラー @@ -155,13 +160,14 @@ UDP ソケットオプションを設定または取得するには、 取得に \fBIP_RECVERR\fP は Linux 2.2 の新しい機能である。 .SH 関連項目 \fBip\fP(7), \fBraw\fP(7), \fBsocket\fP(7), \fBudplite\fP(7) - +.PP +The kernel source file \fIDocumentation/networking/ip\-sysctl.txt\fP. +.PP RFC\ 768 : User Datagram Protocol .br RFC\ 1122 : ホストの必要条件 .br RFC\ 1191 : path MTU discovery の記述 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/udplite.7 b/manual/LDP_man-pages/draft/man7/udplite.7 index 0a339f5b..860dc920 100644 --- a/manual/LDP_man-pages/draft/man7/udplite.7 +++ b/manual/LDP_man-pages/draft/man7/udplite.7 @@ -34,7 +34,7 @@ .\" all rights reserved. .\" Translated 2008-08-21, Akihiro MOTOKI , LDP v3.07 .\" -.TH UDPLITE 7 2014\-07\-08 Linux "Linux Programmer's Manual" +.TH UDPLITE 7 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 udplite \- 軽量なユーザーデータグラムプロトコル .SH 書式 @@ -43,19 +43,20 @@ udplite \- 軽量なユーザーデータグラムプロトコル .\" FIXME . see #defines under `BUGS', .\" when glibc supports this, add .\" #include -.sp +.PP \fBsockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDPLITE);\fP .SH 説明 これは RFC\ 3828 に書かれている軽量なユーザーデータグラムプロトコル (Lightweight User Datagram Protocol; UDP\-Lite) の実装である。 - +.PP UDP\-Lite は UDP (RFC\ 768) の拡張で、可変長のチェックサムをサポートしている。 このプロトコルが効果を発揮するのは、少しだけ壊れたデータグラムがあった場合に、 そのデータグラムを下位レイヤーのプロトコルに廃棄させるのではなく、 それを利用することができるような、ある種のマルチメディア転送においてである。 - -可変長のチェックサムの対象範囲は \fBsetsockopt\fP(2) オプション経由で設定される。 このオプションが設定されていない場合、UDP -と異なるのは 違う IP プロトコル識別子 (IANA 番号 136) を使用する点だけである。 - +.PP +The variable\-length checksum coverage is set via a \fBsetsockopt\fP(2) +option. If this option is not set, the only difference from UDP is in using +a different IP protocol identifier (IANA number 136). +.PP UDP\-Lite の実装は \fBudp\fP(7) の完全な拡張、すなわち API と API の動作は同じである。 これに加えて、2 つのソケットオプションがチェックサムの対象範囲を 制御するために提供されている。 .SS アドレスのフォーマット @@ -65,16 +66,16 @@ UDP\-Litev4 は \fBip\fP(7) で説明されている \fIsockaddr_in\fP アド UDP\-Lite のソケットオプションを設定/取得するには、 オプションレベル引き数に \fBIPPROTO_UDPLITE\fP を指定して、取得時には \fBgetsockopt\fP(2) を、設定時には \fBsetsockopt\fP(2) を呼び出す。さらに、全ての \fBIPPROTO_UDP\fP のソケットオプションが UDP\-Lite ソケットでも使用できる。 詳細は \fBudp\fP(7) を参照のこと。 - +.PP 以下の 2 つが UDP\-Lite に固有のオプションである。 .TP \fBUDPLITE_SEND_CSCOV\fP このオプションは送信側のチェックサムの対象範囲を設定する。 \fIint\fP 型を引き数として取り、設定可能な値の範囲は 0 から 2^16\-1 までである。 - +.IP 値 0 はデータグラム全体が常にチェックサムの対象となることを意味する。 値 1〜7 は不正であり (RFC\ 3828 の 3.1 章)、範囲の設定として最小値である 8 に切り上げられる。 - +.IP IPv6 の jumbograms (巨大なデータグラム; RFC\ 2675) の場合には、 UDP\-Litev6 のチェックサムの対象範囲は、RFC\ 3828 の 3.5 章にあるように、 先頭から 2^16\-1 オクテットまでに限定される。 そのため、それより大きな値は 2^16\-1 に黙って切り詰められる。 現在の対象範囲の値を知りたければ、いつでも \fBgetsockopt\fP(2) @@ -84,7 +85,7 @@ IPv6 の jumbograms (巨大なデータグラム; RFC\ 2675) の場合には、 これは受信側のチェックサムの対象範囲を設定するもので、 使用される引き数形式と値の範囲は \fBUDPLITE_SEND_CSCOV\fP と同じである。 このオプションは、部分的なチェックサム対象範囲を持つトラフィックを 有効にするのに必要なわけではなく、トラフィックフィルターとして機能する。 このオプションが有効にすると、カーネルは指定されたチェックサム対象範囲 よりも「短かい」対象範囲を持つパケットを全て廃棄するようになる。 - +.IP .\" SO_NO_CHECK exists and is supported by UDPv4, but is .\" commented out in socket(7), hence also commented out here .\".PP @@ -98,30 +99,32 @@ IPv6 の jumbograms (巨大なデータグラム; RFC\ 2675) の場合には、 .SH エラー \fBudp\fP(7) について書かれている全てのエラーは返る可能性がある。 UDP\-Lite 自体は新たなエラーは追加していない。 .SH ファイル -\fI/proc/net/snmp\fP \- UDP\-Litev4 の基本的な統計情報カウンター。 -.br -\fI/proc/net/snmp6\fP \- UDP\-Litev6 の基本的な統計情報カウンター。 +.TP +\fI/proc/net/snmp\fP +Basic UDP\-Litev4 statistics counters. +.TP +\fI/proc/net/snmp6\fP +Basic UDP\-Litev6 statistics counters. .SH バージョン UDP\-Litev4/v6 は Linux 2.6.20 で初めて登場した。 .SH バグ .\" FIXME . remove this section once glibc supports UDP-Lite glibc によるサポートがない場合は、以下の定義を行う必要がある。 +.PP .in +4n -.nf - +.EX .\" The following two are defined in the kernel in linux/net/udplite.h #define IPPROTO_UDPLITE 136 #define UDPLITE_SEND_CSCOV 10 #define UDPLITE_RECV_CSCOV 11 -.fi +.EE .in .SH 関連項目 \fBip\fP(7), \fBipv6\fP(7), \fBsocket\fP(7), \fBudp\fP(7) - +.PP RFC\ 3828 for the Lightweight User Datagram Protocol (UDP\-Lite). - +.PP Linux カーネルソース内の \fIDocumentation/networking/udplite.txt\fP .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/unicode.7 b/manual/LDP_man-pages/draft/man7/unicode.7 index ef85c827..760e06b5 100644 --- a/manual/LDP_man-pages/draft/man7/unicode.7 +++ b/manual/LDP_man-pages/draft/man7/unicode.7 @@ -39,9 +39,9 @@ .\" Updated & Modified Sat Jun 23 07:30:09 JST 2001 .\" by Yuichi SATO .\" -.TH UNICODE 7 2014\-06\-13 GNU "Linux Programmer's Manual" +.TH UNICODE 7 2020\-08\-13 GNU "Linux Programmer's Manual" .SH 名前 -Unicode \- 汎用文字集合 +unicode \- universal character set .SH 説明 国際規格 ISO 10646 は汎用文字集合 (Universal Character Set (UCS)) を定義している。 @@ -50,7 +50,7 @@ UCS は他規格の文字集合の文字を全て含んでいる。 「双方向の互換性」("round\-trip compatibility") を保証する。 つまり、他の符号から UCS に変換しさらに元の符号に変換したとしても、 何の情報も失なわれないように変換テーブルを作成することができる。 - +.PP UCS は現実的に知られている全ての言語を表現するのに必要な文字を含んでいる。 これにはラテン文字、ギリシャ文字、キリル文字、ヘブライ文字、アラビア文字、 アルメニア文字、グルジア文字だけでなく、中国・日本・韓国で使われている漢字、 @@ -72,7 +72,7 @@ UCS は、これらの文字に加えて、TeX, PostScript, APL, MS\-DOS, MS\-Wi Macintosh, OCR フォント、数多くのワードプロセッサーや 出版システム、などが提供する 図形記号・印字記号・数学記号・科学記号などの多くを含むようになった。 - +.PP UCS 規格 (ISO 10646) は 31 ビットの文字集合アーキテクチャーを記述しており、 128 個の 24 ビット \fI群 (group)\fP から構成されている。 各群は 256 個の 16 ビット \fI面 (plane)\fP に分割されており、 @@ -121,9 +121,9 @@ UCS に前もって準備されたコード 0x00c4 でも、 ISO 10646\-1 は以下の三段階の UCS の \fI実装レベル\fP を指定している。 .TP 0.9i Level 1 -合成文字とハングル・ジャモ文字 (いろいろな韓国・朝鮮文字の符号化。 -この符号化では、ハングル音節のグリフが -3 つまたは 2 つの母音・子音コードの組み合わせで符号化される) はサポートしない。 +Combining characters and Hangul Jamo (a variant encoding of the Korean +script, where a Hangul syllable glyph is coded as a triplet or pair of +vowel/consonant codes) are not supported. .TP Level 2 Level 1 と同様だが、合成文字を必須とする言語のための文字 @@ -149,7 +149,7 @@ UCS コードの値として解釈される。 これを GNU C ライブラリがアプリケーションに知らせるための規約として、 定数 \fB__STDC_ISO_10646__\fP を定義する。 これは ISO C99 規格で指定されている。 - +.PP ASCII 互換の UTF\-8 マルチバイトエンコードでは、入出力ストリーム・端末通信・ プレーンテキストファイル・ファイル名・環境変数において、 UCS/Unicode を ASCII のように使うことができる。 @@ -163,25 +163,28 @@ UTF\-8 を文字エンコードとして使うことを \fBwctomb\fP(3) や \fBmbsrtowcs\fP(3)、さらには \fBwcwidth\fP(3) といったライブラリ関数は、 文字出力でどれだけカーソルが進んだか (0\(en2) を返す。 .PP -.SS プライベートエリア -基本多言語面 (Basic Multilingual Plane (BMP)) では、 -0xe000 〜 0xf8ff の範囲は、規格ではいかなる文字も割り当てず、 -私的な使用のために予約されている。 -Linux コミュニティでは、 -このプライベートエリアをさらに細かく分割して使用する。 -0xe000 〜 0xefff の範囲はエンドユーザーが個々に使用することができる。 -0xf000 〜 0xf8ff の範囲は Linux Zone で -全ての Linux ユーザーで共通に使用する。 -Linux Zone への文字割り当ての登録は -LANANA (The Linux Assigned Names And Numbers Authority) により管理されており、 -登録自体は Linux カーネルソースの \fIDocumentation/unicode.txt\fP で行われている。 +.SS "Private Use Areas (PUA)" +.\" commit 9d85025b0418163fae079c9ba8f8445212de8568 +In the Basic Multilingual Plane, the range 0xe000 to 0xf8ff will never be +assigned to any characters by the standard and is reserved for private +usage. For the Linux community, this private area has been subdivided +further into the range 0xe000 to 0xefff which can be used individually by +any end\-user and the Linux zone in the range 0xf000 to 0xf8ff where +extensions are coordinated among all Linux users. The registry of the +characters assigned to the Linux zone is maintained by LANANA and the +registry itself is \fIDocumentation/admin\-guide/unicode.rst\fP in the Linux +kernel sources (or \fIDocumentation/unicode.txt\fP before Linux 4.10). +.PP +Two other planes are reserved for private usage, plane 15 (Supplementary +Private Use Area\-A, range 0xf0000 to 0xffffd) and plane 16 (Supplementary +Private Use Area\-B, range 0x100000 to 0x10fffd). .SS 文献 .IP * 3 Information technology \(em Universal Multiple\-Octet Coded Character Set (UCS) \(em Part 1: Architecture and Basic Multilingual Plane. International Standard ISO/IEC 10646\-1, International Organization for Standardization, Geneva, 2000. - +.IP これは UCS の公式な仕様である。 .UR http://www.iso.ch/ .UE @@ -190,9 +193,9 @@ Geneva, 2000. The Unicode Standard, Version 3.0. The Unicode Consortium, Addison\-Wesley, Reading, MA, 2000, ISBN 0\-201\-61633\-5. .IP * -S. Harbison, G. Steele. C: A Reference Manual. Fourth edition, Prentice +S.\& Harbison, G.\& Steele. C: A Reference Manual. Fourth edition, Prentice Hall, Englewood Cliffs, 1995, ISBN 0\-13\-326224\-3. - +.IP C プログラム言語についてのとても良い参考書である。 第四版では、ワイド文字やマルチバイト文字エンコードを扱うための 多くの新しい C ライブラリ関数が @@ -208,7 +211,7 @@ Unicode 技術レポート。 .IP * Markus Kuhn: UNIX/Linux のための UTF\-8 と Unicode の FAQ。 .RS -.UR http://www.cl.cam.ac.uk\:/~mgk25\:/unicode.html +.UR http://www.cl.cam.ac.uk\:/\(timgk25\:/unicode.html .UE .RE .IP * @@ -222,6 +225,5 @@ Bruno Haible: Unicode HOWTO. .SH 関連項目 \fBlocale\fP(1), \fBsetlocale\fP(3), \fBcharsets\fP(7), \fButf\-8\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/units.7 b/manual/LDP_man-pages/draft/man7/units.7 index 32f621cd..78e15cfd 100644 --- a/manual/LDP_man-pages/draft/man7/units.7 +++ b/manual/LDP_man-pages/draft/man7/units.7 @@ -1,4 +1,3 @@ -'\" t .\" Copyright (C) 2001 Andries Brouwer .\" .\" %%%LICENSE_START(VERBATIM) @@ -32,9 +31,9 @@ .\" Japanese Version Copyright (c) 2002 NAKANO Takeo all rights reserved. .\" Translated Wed 2 Jan 2002 by NAKANO Takeo .\" -.TH UNITS 7 2012\-08\-05 Linux "Linux Programmer's Manual" +.TH UNITS 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 -units, kilo, kibi, mega, mebi, giga, gibi \- 10 進および 2 進の接頭語 +units \- decimal and binary prefixes .SH 説明 .SS "10 進の接頭語" SI 単位系では 10 の累乗を示す接頭語を用いる。 キロメートルは 1000 メートル、メガワットは 1000000 ワットである。 @@ -65,10 +64,10 @@ Z ゼタ(zetta) 10^21 = 1000000000000000000000 Y ヨタ(yotta) 10^24 = 1000000000000000000000000 .TE .RE - +.PP マイクロの記号はギリシャ文字のμであるが、 ASCII でテキストが記述されていて、ギリシャ文字が使えない場合は u と書かれることが多い。 以下も参考にしてほしい。 -.sp +.PP .RS .UR http://physics.nist.gov\:/cuu\:/Units\:/prefixes.html .UE @@ -88,37 +87,41 @@ Pi ペビ(pebi) 2^50 = 1125899906842624 Ei エクシビ(exbi) 2^60 = 1152921504606846976 .TE .RE - +.PP 関連項目 -.sp +.PP .UR http://physics.nist.gov\:/cuu\:/Units\:/binary.html .UE .SS 考察 これらの 2 進の接頭語が導入される前は、 k=1000 と K=1024 のように使うのが割に良く知られた習慣だった (b=ビット、B=バイト の関係に似ている)。 残念ながら M は最初から大文字なので、 2 進であることを示すためにさらに大文字にすることはできなかった。 - -当初はこのことはあまり大きな問題ではなかった。 なぜならメモリーモジュールやディスクは 2 の累乗になるものだったので、 -皆そのようなところでは「キロバイト」を 1024 バイト、 「メガバイト」を 1048576 バイトであるとみなしていたからである。 -最初は接頭語の「キロ」とか「メガ」を曖昧に援用していたのだが、 そのうちコンピュータに関連する話題では、こちらが「実際の意味」になっていった。 -しかしその後ディスクのテクノロジーが代わり、 ディスクサイズは任意の数値をとるようになった。 どっちつかずの時期がしばらく続いたあと、 -ディスクのメーカーすべてが、標準を使うことに合意した。 すなわち k=1000, M=1000k, G=1000M である。 - +.PP +At first that didn't matter too much, since memory modules and disks came in +sizes that were powers of two, so everyone knew that in such contexts +"kilobyte" and "megabyte" meant 1024 and 1048576 bytes, respectively. What +originally was a sloppy use of the prefixes "kilo" and "mega" started to +become regarded as the "real true meaning" when computers were involved. +But then disk technology changed, and disk sizes became arbitrary numbers. +After a period of uncertainty all disk manufacturers settled on the +standard, namely k=1000, M=1000\ k, G=1000\ M. +.PP .\" also common: 14.4k modem -状況はひどくなった。14.4k モデムでは k=1000, 1.44MB フロッピーでは M=1024000 になった。 1998 年に、IEC -は上記のような 2 進用の接頭語を承認し、 これによって両者をはっきり区別することが可能になった。 - -したがって今日では、MB=1000000B で、MiB = 1048576B なのである。 - +The situation was messy: in the 14k4 modems, k=1000; in the 1.44\ MB +diskettes, M=1024000; and so on. In 1998 the IEC approved the standard that +defines the binary prefixes given above, enabling people to be precise and +unambiguous. +.PP +Thus, today, MB = 1000000\ B and MiB = 1048576\ B. +.PP フリーソフトウェアの世界でも、 プログラムたちはゆっくりとこれらに準拠してきている。 Linux カーネルは、ブートすると次のようなメッセージを出す。 - -.RS -.nf +.PP +.in +4n +.EX hda: 120064896 sectors (61473 MB) w/2048KiB Cache -.fi -.RE - +.EE +.in +.PP MB はメガバイトで、KiB はキビバイトである。 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/unix.7 b/manual/LDP_man-pages/draft/man7/unix.7 deleted file mode 100644 index 407e632e..00000000 --- a/manual/LDP_man-pages/draft/man7/unix.7 +++ /dev/null @@ -1,371 +0,0 @@ -.\" This man page is Copyright (C) 1999 Andi Kleen . -.\" and Copyright (C) 2008-2014, Michael Kerrisk -.\" -.\" %%%LICENSE_START(VERBATIM_ONE_PARA) -.\" and Copyright (C) 2008, 2012 Michael Kerrisk -.\" 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, 2003-12-02, Michael Kerrisk, -.\" Modified, 2003-09-23, Adam Langley -.\" Modified, 2004-05-27, Michael Kerrisk, -.\" Added SOCK_SEQPACKET -.\" 2008-05-27, mtk, Provide a clear description of the three types of -.\" address that can appear in the sockaddr_un structure: pathname, -.\" unnamed, and abstract. -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 Shouichi Saito and -.\" NAKANO Takeo all rights reserved. -.\" Translated 1999-12-06, NAKANO Takeo -.\" based on the work by Shouichi Saito -.\" Updated 2003-01-07, Akihiro MOTOKI -.\" Updated 2005-02-21, Akihiro MOTOKI -.\" Updated 2005-12-26, Akihiro MOTOKI -.\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05 -.\" -.TH UNIX 7 2014\-12\-31 Linux "Linux Programmer's Manual" -.SH 名前 -unix \- ローカルな プロセス間通信用のソケット -.SH 書式 -\fB#include \fP -.br -\fB#include \fP - -\fIunix_socket\fP\fB = socket(AF_UNIX, type, 0);\fP -.br -\fIerror\fP\fB = socketpair(AF_UNIX, type, 0, int *\fP\fIsv\fP\fB);\fP -.SH 説明 -\fBAF_UNIX\fP (\fBAF_LOCAL\fP とも言われる) ソケットファミリーは、同じマシン上で -プロセス同士が 効率的に通信するために用いられる。伝統的に、UNIX ドメイン -ソケットは、名前なしにもできるし、 (ソケット型であると印のついた) ファイル -システムのパス名に 結び付けることもできる。さらに Linux では、ファイル -システムに依存しない抽象名前空間 (abstract namespace) もサポートしている。 - -UNIX ドメインに指定できるソケットタイプは以下の通りである。 \fBSOCK_STREAM\fP は、 ストリーム指向のソケットで有効である。 -\fBSOCK_DGRAM\fP は、 メッセージ境界を保存するデータグラム指向のソケットで有効である (ほとんどの UNIX の実装では、 UNIX -ドメインデータグラムソケットは常に信頼でき、 データグラムの並び替えは行わない)。 \fBSOCK_SEQPACKET\fP は、 -メッセージ境界を保存し送信された順序でメッセージを届ける接続指向ソケットで有効である (Linux 2.6.4 以降で利用できる)。 - -UNIX ドメインソケットでは、補助データを使って ファイルディスクリプターや -プロセスの信任状 (credential) を 送受信することもできる。 -.SS アドレスのフォーマット -UNIX ドメインソケットのアドレスは以下の構造体で表現される。 -.in +4n -.nf - -#define UNIX_PATH_MAX 108 - -struct sockaddr_un { - sa_family_t sun_family; /* AF_UNIX */ - char sun_path[UNIX_PATH_MAX]; /* pathname */ -}; -.fi -.in -.PP -\fIsun_family\fP フィールドには必ず \fBAF_UNIX\fP が入っている。 - -様々なシステムコール (例えば \fBbind\fP(2), \fBconnect\fP(2), \fBsendto\fP(2)) は入力として -\fIsockaddr_un\fP 引き数を取る。 他のいくつかのシステムコール (例えば \fBgetsockname\fP(2), -\fBgetpeername\fP(2), \fBrecvfrom\fP(2), \fBaccept\fP(2)) はこの型の引き数を返す。 - -\fIsockaddr_un\fP 構造体では 3 種類のアドレスが区別される。 -.IP * 3 -\fIpathname (パス名)\fP: \fBbind\fP(2) を使って、UNIX ドメインソケットを、 -ヌル終端されたファイルシステム上のパス名に結び付けることができる。 (上述のいずれかのシステムコールにより) ソケットのアドレスが返される際、 -その長さは - - offsetof(struct sockaddr_un, sun_path) + strlen(sun_path) + 1 - -であり、 \fIsun_path\fP にはヌル終端されたパス名が格納される。 (Linux では、上記の \fBoffsetof\fP() 式は -\fIsizeof(sa_family_t)\fP の値と同じだが、 他の実装では \fIsun_path\fP の前に他のフィールドが含まれる場合もある。 -そのため、 \fBoffsetof\fP() 式を使う方がより移植性のある方法でアドレス構造体のサイズを知ることができる。) -.IP -パス名ソケットの詳細については、後で説明する。 -.IP * -.\" There is quite some variation across implementations: FreeBSD -.\" says the length is 16 bytes, HP-UX 11 says it's zero bytes. -\fIunnamed (名前なし)\fP: \fBbind\fP(2) を使ってパス名に結び付けることができないストリーム型のソケットは 名前を持たない。同様に、 -\fBsocketpair\fP(2) で作成される 2 つのソケットも名前を持たない。 名前なしのソケットのアドレスを返す際には、 その長さは -\fIsizeof(sa_family_t)\fP であり、 \fIsun_path\fP は検査すべきではない。 -.IP * -\fIabstract (抽象)\fP: 抽象ソケットアドレスは、 \fIsun_path[0]\fP がヌルバイト (\(aq\e0\(aq) であることから -(パス名ソケットから) 区別できる。 この名前空間におけるソケットのアドレスは、 \fIsun_path\fP の残りのバイトの、 -アドレス構造体の指定された長さの範囲で表される (名前中のヌルバイトには特別な意味はない)。 この名前はファイルシステムのパス名とは何の関係もない。 -抽象ソケットのアドレスを返される際には、 返される \fIaddrlen\fP は \fIsizeof(sa_family_t)\fP より大きく (つまり 2 -より大きく)、 ソケットの名前は \fIsun_path\fP の最初の \fI(addrlen \- sizeof(sa_family_t))\fP -バイトに格納される。 ソケットの抽象名前空間は Linux による拡張であり、移植性はない。 -.SS パス名ソケット -ソケットにパス名を結びつける際に、 最大限の移植性を持たせ、コーディングを簡単にするためのルールがいくつかある。 -.IP * 3 -\fIsun_path\fP のパス名はヌル終端すべきである。 -.IP * -終端のヌルバイトを含めたパス名の長さは \fIsun_path\fP の大きさを超えないようにすべきである。 -.IP * -\fIsockaddr_un\fP 構造体の終わりを示す \fIaddrlen\fP 引き数は最低でも以下の値を持つべきである。 - -.nf - offsetof(struct sockaddr_un, sun_path)+strlen(addr.sun_path)+1 -.fi -.IP -もしくは、もっと簡単には、 \fIaddrlen\fP に \fIsizeof(struct sockaddr_un)\fP を指定することもできる。 -.PP -.\" Linux does this, including for the case where the supplied path -.\" is 108 bytes -UNIX ドメインソケットアドレスの扱いが上記のルールに従っていない実装もいくつかある。 (全部ではないが) いくつかの実装では、 -\fIsun_path\fP に文字列終端の NULL がなかった場合に終端の NULL が追加される。 - -.\" HP-UX -.\" Modern BSDs generally have 104, Tru64 and AIX have 104, -.\" Solaris and Irix have 108 -移植性があるアプリケーションを作成する際には、 いくつかの実装では \fIsun_path\fP は 92 バイトしかないという点にも留意しておくとよい。 - -様々なシステムコール (\fBaccept\fP(2), \fBrecvfrom\fP(2), \fBgetsockname\fP(2), -\fBgetpeername\fP(2)) がソケットアドレス構造体を返す。 これらのシステムコールが UNIX ドメインソケットに対して呼ばれた際には、 -これらの呼び出しに渡す \fIaddrlen\fP 引き数は上記の説明のように初期化すべきである。 -リターン時には、この引き数にはアドレス構造体の「実際の」サイズが設定される。 呼び出し側ではこの引き数で返された値を確認すべきである。 -返された値が入力値よりも大きい場合、 \fIsun_path\fP に終端の NULL バイトが存在する保証はない (「バグ」を参照)。 -.SS ソケットオプション -歴史的な理由により、これらのオプションは たとえ \fBAF_UNIX\fP 固有のオプションであっても \fBSOL_SOCKET\fP 型で指定する。 -ソケットファミリーとして \fBSOL_SOCKET\fP を指定すると、 \fBsetsockopt\fP(2) でオプションが設定でき、 -\fBgetsockopt\fP(2) で取得ができる。 -.TP -\fBSO_PASSCRED\fP -送信プロセスの補助メッセージで信任状を受信できるようにする。このオプションが -セットされていて、まだソケットが接続されていないと、抽象名前空間に他と重なら -ない名前が自動的に生成される。ブール整数値のフラグを取る。 -.SS "自動バインド (autobind) 機能" -.\" i.e., sizeof(short) -\fBbind\fP(2) 呼び出しで \fIsizeof(sa_family_t)\fP として \fIaddrlen\fP を指定するか、 -アドレスに明示的にバインドされていないソケットに対して -\fBSO_PASSCRED\fP ソケットオプションが指定されていた場合、 -そのソケットは抽象アドレスに自動的にバインドされる。 -このアドレスは、1 個のヌルバイトの後に、文字集合 \fI[0\-9a\-f]\fP のバイトが -5 個続く形式である。したがって、自動的にバインドされるアドレス数には -2^20 個という上限が存在する。 -(Linux 2.1.15 以降で、自動バインド機能が追加されたときには、 -8 バイトが使われており、自動バインドアドレス数の上限は 2^32 であった。 -Linux 2.3.15 で 5 バイトに変更された。) -.SS "ソケット API" -この節では、Linux の UNIX ドメインソケットでの、ドメイン固有の詳細仕様と -ソケット API でサポートされていない機能について説明する。 - -UNIX ドメインソケットでは、帯域外データ (out\-of\-band data) の 送信 -(\fBsend\fP(2) と \fBrecv\fP(2) の \fBMSG_OOB\fP フラグ) はサポートされていない。 - -\fBsend\fP(2) \fBMSG_MORE\fP フラグは UNIX ドメインソケットではサポートされていない。 - -\fBrecv\fP(2) の \fIflags\fP 引き数での \fBMSG_TRUNC\fP の使用は UNIX ドメイン -ソケットではサポートされていない。 - -\fBSO_SNDBUF\fP ソケットオプションは UNIX ドメインソケットで効果を持つが、 -\fBSO_RCVBUF\fP は効果がない。 データグラムソケットでは、 \fBSO_SNDBUF\fP の値が -出力データグラムの上限サイズとなる。 実際の上限値は、 \fBSO_SNDBUF\fP オプション -として設定された値の 2倍 (\fBsocket\fP(7) 参照) からオーバヘッドとして使用される -32 バイトを引いた値となる。 -.SS 補助メッセージ -補助データを送受するには、 \fBsendmsg\fP(2) や \fBrecvmsg\fP(2) を使用する。 -歴史的な理由により、以下に示す補助メッセージの型は たとえ \fBAF_UNIX\fP 固有のものであっても \fBSOL_SOCKET\fP 型で指定する。 -これらを送るには、構造体 \fIcmsghdr\fP の \fIcmsg_level\fP フィールドに \fBSOL_SOCKET\fP をセットし、 -\fIcmsg_type\fP フィールドにタイプをセットする。 詳細は \fBcmsg\fP(3) を見よ。 -.TP -\fBSCM_RIGHTS\fP -他のプロセスでオープンされたファイルディスクリプターのセットを送受信する。 データ部分にファイルディスクリプターの整数配列が入っている。 -渡されたファイルディスクリプターは、あたかも \fBdup\fP(2) で生成されたかのように振る舞う。 -.TP -\fBSCM_CREDENTIALS\fP -UNIX 信任状を送受信する。これは認証に用いることができる。 -信任状は \fIstruct ucred\fP の補助メッセージとして渡される。 -この構造体は \fI\fP で以下のように定義されている。 - -.in +4n -.nf -struct ucred { - pid_t pid; /* process ID of the sending process */ - uid_t uid; /* user ID of the sending process */ - gid_t gid; /* group ID of the sending process */ -}; -.fi -.in - -glibc 2.8 以降では、この構造体の定義を得るためには -(\fIどの\fPヘッダーファイルをインクルードするよりも前に) -機能検査マクロ \fB_GNU_SOURCE\fP を定義しなければならない。 - -送信側が指定した信任状は、カーネルがチェックする。 実効ユーザー ID が 0 のプロセスには、 自分自身以外の値を指定する事が許される。 -送信側は以下の 3 つを指定しなければならない。 1) 自分自身のプロセス ID (\fBCAP_SYS_ADMIN\fP 権限を持っていない場合)、 2) -自分自身のユーザー ID あるいは実効ユーザー ID か保存 set\-user\-ID (\fBCAP_SETUID\fP 権限を持っていない場合)、 3) -自分自身のグループ ID あるいは実行グループ ID か保存 set\-group\-ID (\fBCAP_SETGID\fP を持っていない場合)。 -\fIstruct ucred\fP メッセージを受信するためには、ソケットに対し \fBSO_PASSCRED\fP オプションを有効にしなくてはならない。 -.SS ioctl -以下の \fBioctl\fP(2) 呼び出しは \fIvalue\fP に情報を入れて返す。 -正しい書式は以下の通り。 -.PP -.RS -.nf -\fBint\fP\fI value\fP\fB;\fP -\fIerror\fP\fB = ioctl(\fP\fIunix_socket\fP\fB, \fP\fIioctl_type\fP\fB, &\fP\fIvalue\fP\fB);\fP -.fi -.RE -.PP -\fIioctl_type\fP には以下を指定できる: -.TP -\fBSIOCINQ\fP -.\" FIXME . http://sources.redhat.com/bugzilla/show_bug.cgi?id=12002, -.\" filed 2010-09-10, may cause SIOCINQ to be defined in glibc headers -.\" SIOCOUTQ also has an effect for UNIX domain sockets, but not -.\" quite what userland might expect. It seems to return the number -.\" of bytes allocated for buffers containing pending output. -.\" That number is normally larger than the number of bytes of pending -.\" output. Since this info is, from userland's point of view, imprecise, -.\" and it may well change, probably best not to document this now. -受信バッファーのキューにある、まだ読んでいないデータの量を返す。ソケットは -LISTEN 状態にあってはならず、さもないとエラー (\fBEINVAL\fP) が返る。 -\fBSIOCINQ\fP は \fI\fP で定義されている。 -代わりに、\fI\fP で定義されている、同義語の \fBFIONREAD\fP -を使うこともできる。 -.SH エラー -.TP -\fBEADDRINUSE\fP -指定したローカルアドレスが既に使用されているか、ファイルシステムの -ソケットオブジェクトが既に存在している。 -.TP -\fBECONNREFUSED\fP -\fBconnect\fP(2) により指定されたリモートアドレスが接続待ちソケットではなかった。 -このエラーはターゲットのパス名がソケットでなかった場合にも発生する。 -.TP -\fBECONNRESET\fP -リモートソケットが予期しないかたちでクローズされた。 -.TP -\fBEFAULT\fP -ユーザーメモリーアドレスが不正。 -.TP -\fBEINVAL\fP -渡した引数が不正。よくある原因としては、渡したアドレスの \fIsun_type\fP フィール -ドに \fBAF_UNIX\fP が指定されていなかった、行おうとした操作に対してソケットが有 -効な状態ではなかった、など。 -.TP -\fBEISCONN\fP -既に接続されているソケットに対して \fBconnect\fP(2) が呼ばれた。または、指定したターゲットアドレスが 既に接続済みのソケットだった。 -.TP -\fBENOENT\fP -\fBconnect\fP(2) に指定されたリモートアドレスのパス名が存在しなかった。 -.TP -\fBENOMEM\fP -メモリーが足りない。 -.TP -\fBENOTCONN\fP -ソケット操作にターゲットアドレスが必要だが、 このソケットは接続されていない。 -.TP -\fBEOPNOTSUPP\fP -ストリーム指向でないソケットに対してストリーム操作が呼び出された。 または帯域外データオプションを用いようとした。 -.TP -\fBEPERM\fP -送信者が \fIstruct ucred\fP に不正な信任状を渡した。 -.TP -\fBEPIPE\fP -リモートソケットがストリームソケット上でクローズされた。 可能な場合は \fBSIGPIPE\fP も同時に送られる。これを避けるには -\fBMSG_NOSIGNAL\fP フラグを \fBsendmsg\fP(2) や \fBrecvmsg\fP(2) に渡す。 -.TP -\fBEPROTONOSUPPORT\fP -渡されたプロトコルが \fBAF_UNIX\fP でない。 -.TP -\fBEPROTOTYPE\fP -リモートソケットとローカルソケットのタイプが一致していなかった (\fBSOCK_DGRAM\fP と \fBSOCK_STREAM\fP)。 -.TP -\fBESOCKTNOSUPPORT\fP -未知のソケットタイプ。 -.PP -他にも汎用のソケット層でエラーが起こったり、 ファイルシステム上にソケットオブジェクトを作ろうとした場合に ファイルシステムのエラーが起こることがある。 -それぞれの詳細は適切な man ページを参照すること。 -.SH バージョン -\fBSCM_CREDENTIALS\fP と抽象名前空間は、Linux 2.2 で導入された。 移植性が必要なプログラムでは使うべきではない。 (BSD -由来のシステムの中にも信任状の送受信をサポートしているものがあるが、 その実装の詳細はシステムによって異なる) -.SH 注意 -Linux の実装では、 ファイルシステム上から見えるソケットは、 それらが置かれているディレクトリのパーミッションに従う。 ソケットの所有者、 -グループ、 パーミッションは変更できる。 新しいソケットを作るとき、 作ろうとするディレクトリに対して プロセスが書き込みと検索 (実行) -権限を持っていなければ、 作成に失敗する。 ソケットオブジェクトに接続するには、 read/write 権限が必要である。 この動作は、 多くの BSD -由来のシステムとは異なっている (BSD では UNIX ドメインソケットに対してはパーミッションを無視する)。 -移植性の必要なプログラムでは、セキュリティをこの仕様に依存してはならない。 - -ファイル名を指定してソケットにバインドすると、ファイルシステムにソケットが -生成される。これは必要なくなったときに呼びだしたユーザーが削除しなければ -ならない (\fBunlink\fP(2) を用いる)。 UNIX で通常使われる「背後で閉じる方式」 -が適用される。ソケットはいつでも unlink することができ、最後の参照が -クローズされたときにファイルシステムから削除される。 - -\fBSOCK_STREAM\fP 上でファイルディスクリプターや信任状を渡すためには、同じ \fBsendmsg\fP(2) や \fBrecvmsg\fP(2) -コールで補助データ以外のデータを少なくとも 1 バイト送信/受信する必要がある。 - -.\" -UNIX ドメインのストリームソケットでは、 帯域外データの概念はサポートされない。 -.SH バグ -.\" The behavior on Solaris is quite similar. -ソケットをアドレスに結びつける際、 Linux は終端の NULL が \fIsun_path\fP になかった場合に追加する実装の一つである。 -ほとんどの場合、 これは問題にならない。 ソケットアドレスが取得された際、ソケットをバインドしたときに指定したものより 1 バイト長くなるだけである。 -しかしながら、紛らわしい動作が起こる場合が一つある。 ソケットをバインドした際に 108 個の NULL でないバイトを指定した場合、 終端の NULL -が追加されるとパス名の長さが \fIsizeof(sun_path)\fP を超えてしまう。 結果として、(例えば \fBaccept\fP(2) で) -ソケットアドレスを取得した際に、 値を取得する呼び出しの入力の \fIaddress\fP 引き数に \fIsizeof(struct -sockaddr_un)\fP を指定したとすると、 返されるアドレス構造体は \fIsun_path\fP に終端の NULL を「含まない」ことになる。 - -.\" i.e., traditional BSD -さらに、 いくつかの実装では、ソケットをバインドする際に終端の NULL が必要ではなく (\fIaddrlen\fP 引き数を使って \fIsun_path\fP -の長さが判定される)、 このような実装でソケットアドレスを取得する際には、 \fIsun_path\fP に終端の NULL は存在しない。 - -ソケットアドレスを取得するアプリケーションでは、 \fIsun_path\fP に終端の NULL が存在しないという移植性の問題を、 -パス名の有効なバイト数が以下のようになると事実を考慮することで取り扱うことができる。 - -.\" The following patch to amend kernel behavior was rejected: -.\" http://thread.gmane.org/gmane.linux.kernel.api/2437 -.\" Subject: [patch] Fix handling of overlength pathname in AF_UNIX sun_path -.\" 2012-04-17 -.\" And there was a related discussion in the Austin list: -.\" http://thread.gmane.org/gmane.comp.standards.posix.austin.general/5735 -.\" Subject: Having a sun_path with no null terminator -.\" 2012-04-18 -.\" -.\" FIXME . Track http://austingroupbugs.net/view.php?id=561 - strnlen(addr.sun_path, addrlen \- offsetof(sockaddr_un, sun_path)) - -他の方法としては、 アプリケーションがソケットアドレスを取得する際、 取得の呼び出しを行う前に、 大きさが \fIsizeof(struct -sockaddr_un)+1\fP のバッファーを割り当てることもできる。 取得の呼び出しでは \fIaddrlen\fP に \fIsizeof(struct -sockaddr_un)\fP を指定すると、 余分な一つの 0 バイトにより \fIsun_path\fP で返される文字列に終端の NULL -が含まれることが保証される。 - -.nf -.in +3 -void *addrp; - -addrlen = sizeof(struct sockaddr_un); -addrp = malloc(addrlen + 1); -if (addrp == NULL) - /* Handle error */ ; -memset(addrp, 0, addrlen + 1); - -if (getsockname(sfd, (struct sockaddr *) addrp, &addrlen)) == \-1) - /* handle error */ ; - -printf("sun_path = %s\en", ((struct sockaddr_un *) addrp)\->sun_path); -.in -.fi - -アプリケーションが「パス名ソケット」の節で説明したルールにしたがってパス名を「作成」していれば、 このような分かりにくさは避けることができる。 -.SH 例 -\fBbind\fP(2) 参照。 - -\fBSCM_RIGHTS\fP の使用例については \fBcmsg\fP(3) を参照。 -.SH 関連項目 -\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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -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 index 5bbdae12..d430ce99 100644 --- a/manual/LDP_man-pages/draft/man7/uri.7 +++ b/manual/LDP_man-pages/draft/man7/uri.7 @@ -54,7 +54,7 @@ .\" Japanese Version Copyright (c) 2000 NAKANO Takeo all rights reserved. .\" Translated San 12 Mar 2000 by NAKANO Takeo .\" -.TH URI 7 2014\-03\-18 Linux "Linux Programmer's Manual" +.TH URI 7 2020\-08\-13 Linux "Linux Programmer's Manual" .SH 名前 uri, url, urn \- uniform resource identifier (URI) (URL と URN も含めて) .SH 書式 @@ -85,9 +85,10 @@ Uniform Resource Identifier (URI) は抽象的・物理的なリソース (web (location)」を指定する)。 Uniform Resource Name (URN) は URI の一種で、 これは対象のリソースが廃棄されたり利用できなくなった場合にも、 グローバルに他と重なることなく永続しなければならない。 .PP -URI は、 web ブラウザなどのツールで ハイパーテキストリンクのリンク先を指定する時の標準的な方法である。 文字列 -"http://www.kernelnotes.org" は URL である (従って URI でもある)。多くの人々は、 URL という言葉をほぼ -URI の 同義語として使っている (しかし技術的には URL は URI のサブセットである)。 +URIs are the standard way to name hypertext link destinations for tools such +as web browsers. The string "http://www.kernel.org" is a URL (and thus it +is also a URI). Many people use the term URL loosely as a synonym for URI +(though technically URLs are a subset of URIs). .PP URI は絶対的にも相対的にも指定できる。 絶対的な指定は、リソースをコンテクストに依存しないかたちで参照する。 相対的な指定は、リソースを現在のコンテクストからの差異によって記述する。 相対パス参照では、 "." および ".." だけのパス部分 (path @@ -107,12 +108,16 @@ URI のスキームには色々な種類があり、 それぞれ固有のルー .HP \fIip_server = \fP[\fIuser\fP [ : \fIpassword\fP ] @ ] \fIhost\fP [ : \fIport\fP] .PP -このフォーマットには、ユーザー名、ユーザー名+パスワードを指定できる。 ポート番号を追加することも可能である。 \fIhost\fP -はホストコンピュータの名前で、 DNS で定義される名前か IP アドレス (ピリオドで区切られた数字) で指定する。したがって URI - は、ホスト xyz.com に fred として -(パスワードを使って) ポート 8080 を使ってログインする。 パスワードは可能なら URI には含めないほうが良いだろう。 -パスワードを直書きすると様々なセキュリティ上のリスクが生じるからである。 URL にユーザー名だけを与え、パスワードを与えない場合は、 -リモートサーバはパスワードを要求してくる。 URL を解釈したプログラムが、ユーザーにこの入力を促すことになろう。 +This format allows you to optionally insert a username, a user plus +password, and/or a port number. The \fIhost\fP is the name of the host +computer, either its name as determined by DNS or an IP address (numbers +separated by periods). Thus the URI + logs into a web server +on host example.com as fred (using fredpassword) using port 8080. Avoid +including a password in a URI if possible because of the many security risks +of having a password written down. If the URL supplies a username but no +password, and the remote server requests a password, the program +interpreting the URL should request one from the user. .PP 以下に、 UNIX 風のシステムで非常に良く用いられており、 多くのツールが理解するスキームを示す。 URI を使うツールの多くでは、内部スキームや特殊なスキームも 使えることが多い。そのようなスキームに関してはツールのドキュメントを見ること。 @@ -373,7 +378,7 @@ URI では、色々な状況下で入力できるように、文字の種類を 未予約文字 (unreserved character) は URI に使ってよい。 これには英字の大文字と小文字、10 進の数字、および 以下の句読文字、記号が含まれる .IP - \- _ . ! ~ * ' ( ) + \- _ . ! \(ti * ' ( ) .PP 他の文字はすべてエスケープしなければならない。 エスケープされたオクテットは 3 文字からなる: 先頭にパーセント文字 "%"、それに続けてオクテットコードを表す 2 文字の 16 進数字である (16 進数の英字は大文字小文字どちらでも良い)。 例えば空白文字は @@ -383,9 +388,11 @@ URI では、色々な状況下で入力できるように、文字の種類を で実際に定義されているわけではない (代わりに %20 を推奨している) が、クエリーテキストを受付ける ツールは、この書式への対応を用意しておくべきであろう。 URI は、常に「エスケープされた」かたちで表示される。 .PP -未予約文字もエスケープすることができ、これによって URI の意味するところが変わるわけではない。 しかしURI -にその非エスケープ文字が現れることが許されないような 特殊な場合を除いて、これは避けるべきである。 例えば、 HTTP URL の path において -"%7e" が "~" の代わりに用いられることがあるが、 この二つは HTTP URL としては等価である。 +Unreserved characters can be escaped without changing the semantics of the +URI, but this should not be done unless the URI is being used in a context +that does not allow the unescaped character to appear. For example, "%7e" +is sometimes used instead of "\(ti" in an HTTP URL path, but the two are +equivalent for an HTTP URL. .PP US ASCII キャラクターセット以外の文字を URI として扱う場合、 HTML 4.1 規格 (section B.2) 及び IETF RFC\ 2718 (section 2.2.5) は 以下の手法を用いるよう推奨している。 .IP 1. 4 @@ -393,17 +400,21 @@ US ASCII キャラクターセット以外の文字を URI として扱う場合 .IP 2. URI エスケープ機構を用いる。 つまり、安全でないオクテットを %HH でエンコードする。 .SS "URI を書くには" -URI を書く時には、ダブルクォートの内部に書く (例: "http://www.kernelnotes.org") か、 angle ブラケットで囲む -(例: ) か、 一行に 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 の直前に挿入することを -勧めているものもあるが、しかしこの形式はまったく流行しなかった。 +When written, URIs should be placed inside double quotes (e.g., +"http://www.kernel.org"), enclosed in angle brackets (e.g., +), or placed on a line by themselves. A warning for +those who use double\-quotes: \fBnever\fP move extraneous punctuation (such as +the period ending a sentence or the comma in a list) inside a URI, since +this will change the value of the URI. Instead, use angle brackets instead, +or switch to a quoting system that never includes extraneous characters +inside quotation marks. This latter system, called the 'new' or 'logical' +quoting system by "Hart's Rules" and the "Oxford Dictionary for Writers and +Editors", is preferred practice in Great Britain and hackers worldwide (see +the Jargon File's section on Hacker Writing Style, +.UR http://www.fwi.uva.nl\:/\(times\:/jargon\:/h\:/HackerWritingStyle.html +.UE , +for more information). Older documents suggested inserting the +prefix "URL:" just before the URI, but this form has never caught on. .PP URI の書式は曖昧さを排除するように設計されている。 しかし URI が広まるにつれ、昔ながらのメディア (TV、ラジオ、新聞、 看板などなど) は URI 参照を省略したかたち、すなわち 機関部とパス部だけでリソースを指定することが多くなっている (例: @@ -486,11 +497,10 @@ URI に、そのプロトコルに対するデリミタがエスケープされ に適したツールを起動するような 標準的な仕組みがあるといいのだろうが。 .SH 関連項目 \fBlynx\fP(1), \fBman2html\fP(1), \fBmailaddr\fP(7), \fButf\-8\fP(7) - +.PP .UR http://www.ietf.org\:/rfc\:/rfc2255.txt IETF RFC\ 2255 .UE .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/user_namespaces.7 b/manual/LDP_man-pages/draft/man7/user_namespaces.7 deleted file mode 100644 index a31fde56..00000000 --- a/manual/LDP_man-pages/draft/man7/user_namespaces.7 +++ /dev/null @@ -1,687 +0,0 @@ -.\" Copyright (c) 2013, 2014 by Michael Kerrisk -.\" and Copyright (c) 2012, 2014 by Eric W. Biederman -.\" -.\" %%%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 USER_NAMESPACES 7 2014\-09\-21 Linux "Linux Programmer's Manual" -.SH 名前 -user_namespaces \- Linux ユーザー名前空間の概要 -.SH 説明 -名前空間の概要については \fBnamespaces\fP(7) を参照。 - -.\" FIXME: This page says very little about the interaction -.\" of user namespaces and keys. Add something on this topic. -.\" -.\" ============================================================ -.\" -ユーザー名前空間は、 セキュリティに関連する識別子や属性、 特にユーザー ID やグループ ID (\fBcredentials\fP(7) 参照)、 -root ディレクトリ、 キー (\fBkeyctl\fP(2) 参照)、 ケーパビリティを分離する。 プロセスのユーザー ID とグループ ID -はユーザー名前空間の内部と外部で異なる場合がある。 特に、 あるプロセスがユーザー名前空間の外部では通常の非特権ユーザー ID を持つが、 -同時にユーザー名前空間の内部ではユーザー ID 0 を持つという場合がある。 言い換えると、 -そのプロセスはそのユーザー名前空間の内部での操作に対してすべての特権を持つが、 名前空間の外部での操作では特権を持たない。 -.SS ネストされた名前空間、名前空間のメンバー -ユーザー名前空間は入れ子にすることができる。 つまり、 最初の ("root") 名前空間以外の各名前空間は親のユーザー名前空間を持ち、 0 -個以上のユーザー名前空間を持つということである。 親のユーザー名前空間は、 \fBCLONE_NEWUSER\fP フラグを指定して -\fBunshare\fP(2) や \fBclone\fP(2) を呼び出してユーザー名前空間を作成したプロセスのユーザー名前空間である。 - -.\" commit 8742f229b635bf1c1c84a3dfe5e47c814c20b5c8 -.\" FIXME Explain the rationale for this limit. (What is the rationale?) -カーネルにより (バージョン 3.11 以降では) ユーザー名前空間のネスト数に 32 という上限が課される。 \fBunshare\fP(2) や -\fBclone\fP(2) の呼び出しでこの上限を超えてしまう場合はエラー \fBEUSERS\fP で失敗する。 - -各プロセスは必ず 1 個のユーザー名前空間のメンバーとなる。 \fBCLONE_NEWUSER\fP フラグを指定せずに \fBfork\fP(2) や -\fBclone\fP(2) でプロセスを作成した場合、 そのプロセスは親プロセスと同じユーザー名前空間のメンバーとなる。 シングルスレッドのプログラムは、 -変更先のユーザー名前空間で \fBCAP_SYS_ADMIN\fP を持っていれば、 \fBsetns\fP(2) -を使って別のユーザー名前空間に参加することができる。 変更時に、 変更後の名前空間ですべてのケーパビリティを獲得する。 - -.\" -.\" ============================================================ -.\" -\fBCLONE_NEWUSER\fP を指定して \fBclone\fP(2) や \fBunshare\fP(2) を呼び出すと、 新しいプロセス -(\fBclone\fP(2) の場合) や呼び出したプロセス (\fBunshare\fP(2) の場合) -がその呼び出しで作成された新しいユーザー名前空間のメンバーとなる。 -.SS ケーパビリティ -\fBCLONE_NEWUSER\fP フラグが指定された \fBclone\fP(2) で作成された子プロセスは、 -新しい名前空間ですべてのケーパビリティを持った状態で開始される。 同様に、 \fBunshare\fP(2) を使って新しいユーザー名前空間を作成したり、 -\fBsetns\fP(2) を使って既存のユーザー名前空間に参加したりしたプロセスは、 その名前空間ですべてのケーパビリティを獲得する。 一方、 -そのプロセスは、親のユーザー名前空間 (\fBclone\fP(2) の場合) や直前のユーザー名前空間 (\fBunshare\fP(2) や -\fBsetns\fP(2) の場合) では、 root ユーザー (root 名前空間のユーザー ID 0 のプロセス) -により新しい名前空間の作成や参加が行われた場合であっても、 ケーパビリティを全く持たない。 - -\fBexecve\fP(2) の呼び出しでは、 プロセスのケーパビリティは通常の方法 (\fBcapabilities\fP(7) 参照) で再計算され、 -通常は、 名前空間内でユーザー ID 0 を持つ場合や実行ファイルが空でない継承可能ケーパビリティマスクを持っている場合を除くと、 -すべてのケーパビリティを失うことになる。 下記の、ユーザー ID やグループ ID のマッピングの議論を参照。 - -\fBCLONE_NEWUSER\fP フラグを使って \fBclone\fP(2), \fBunshare\fP(2), \fBsetns\fP(2) を呼び出すと、 -子プロセス (\fBclone\fP(2) の場合) や呼び出し元 (\fBunshare\fP(2) や \fBsetns\fP(2) の場合) では -"securebits" フラグ (\fBcapabilities\fP(7) 参照) がデフォルト値に設定される。 呼び出し元は \fBsetns\fP(2) -の呼び出し後は元のユーザー名前空間ではケーパビリティを持たないので、 \fBsetns\fP(2) を 2 -回呼び出して一度別のユーザー名前空間に移動して元のユーザー名前空間に戻ることで、 プロセスが元のユーザー名前空間にとどまりつつ自身の -"securebits" フラグを再設定することはできない。 - -ユーザー名前空間内部でケーパビリティを持つというのは、 そのプロセスがその名前空間の支配下にあるリソースに対してのみ (特権を必要とする) -操作を実行できるということである。 プロセスが特定のユーザー名前空間でケーパビリティを持つかどうかを判定するルールは以下の通りである。 -.IP 1. 3 -.\" In the 3.8 sources, see security/commoncap.c::cap_capable(): -プロセスがその名前空間のメンバーで、実効ケーパビリティセットにそのケーパビリティがあれば、 そのプロセスはユーザー名前空間内でケーパビリティを持つ。 -プロセスが実効ケーパビリティセットでケーパビリティを得るにはいくつかの方法がある。 例えば、 set\-user\-ID -プログラムや関連するファイルケーパビリティを持った実行ファイルを実行する。 また、 すでに説明したとおり、 プロセスは \fBclone\fP(2), -\fBunshare\fP(2), \fBsetns\fP(2) の結果としてケーパビリティを獲得することもできる。 -.IP 2. -プロセスがユーザー名前空間でケーパビリティを持っている場合、 そのプロセスはすべての子供の名前空間 (および削除された子孫の名前空間) -でケーパビリティを持つ。 -.IP 3. -.\" * The owner of the user namespace in the parent of the -.\" * user namespace has all caps. -.\" (and likewise associates the effective group ID of the creating process -.\" with the namespace). -.\" See kernel commit 520d9eabce18edfef76a60b7b839d54facafe1f9 for a fix -.\" on this point -.\" This includes the case where the process executes a set-user-ID -.\" program that confers the effective UID of the creator of the namespace. -.\" -.\" ============================================================ -.\" -ユーザー名前空間が作成された際、 カーネルはその名前空間の「所有者」として作成したプロセスの実効ユーザー ID を記録する。 -親のユーザー名前空間に属するプロセスで、 そのプロセスの実効ユーザー ID が名前空間の所有者と一致する場合、 -そのプロセスはその名前空間ですべてのケーパビリティを持つ。 一つ前のルールも合わせて考えると、 -このプロセスはすべての削除された子孫のユーザー名前空間ですべてのケーパビリティを持つことを意味する。 -.SS ユーザー名前空間と他の名前空間の関係 -Linux 3.8 以降では、 非特権プロセスがユーザー名前空間を作成することができる。 また、 呼び出し元のユーザー名前空間で -\fBCAP_SYS_ADMIN\fP ケーパビリティを持っているだけで、 マウント名前空間、 PID 名前空間、 IPC 名前空間、 ネットワーク名前空間、 -UTS 名前空間を作成できる。 - -ユーザー名前空間以外の名前空間が作成された場合、 その名前空間は呼び出したプロセスが名前空間の作成時にメンバーであったユーザー名前空間により所有される。 -ユーザー名前空間以外の名前空間における操作には、 対応するユーザー名前空間でのケーパビリティが必要である。 - -一つの \fBclone\fP(2) や \fBunshare\fP(2) の呼び出しで \fBCLONE_NEWUSER\fP が他の \fBCLONE_NEW*\fP -フラグと一緒に指定された場合、 そのユーザー名前空間が最初に作成されることが保証され、 子プロセス (\fBclone\fP(2) の場合) や呼び出し元 -(\fBunshare\fP(2) の場合) はその呼び出しで作成される残りの名前空間で特権を持つ。 したがって、 -特権を持たない呼び出し元がフラグを組み合わせて指定することができる。 - -.\" -.\" ============================================================ -.\" -新しい IPC 名前空間、 マウント名前空間、 ネットワーク名前空間、 PID 名前空間、 UTS 名前空間が \fBclone\fP(2) や -\fBunshare\fP(2) で作成される際、 カーネルは新しい名前空間に対して作成したプロセスのユーザー名前空間を記録する -(この関連付けは変更できない)。 その新しい名前空間のプロセスがその後名前空間で分離されたグローバルリソースに対して特権操作を行う場合、 -カーネルが新しい名前空間に対して関連付けたユーザー名前空間でのプロセスのケーパビリティに基づいてアクセス許可のチェックが行われる。 -.SS マウント名前空間における制限 - -マウント名前空間に関しては以下の点に注意すること。 -.IP * 3 -マウント名前空間は所有者のユーザー名前空間を持つ。 所有者のユーザー名前空間が親のマウント名前空間の所有者のユーザー名前空間と異なるマウント名前空間は、 -特権が少ないマウント名前空間 (less privileged mount namespace) である。 -.IP * -特権が少ないマウント名前空間を作成する場合、 共有マウントは slave マウントに縮小される。 これにより、 -特権の少ないマウント名前空間で実行されるマッピングが、 より特権を持つマウント名前空間 (more privileged mount -namespace) に伝搬しないことが保証される。 -.IP * -.\" FIXME . -.\" What does "come as a single unit from more privileged mount" mean? -より特権を持つマウントで一つのまとまりとして行われたマウントは一つにまとまったままとなり、 特権が少ないマウント名前空間で分割することはできない。 -(\fBunshare\fP(2) の \fBCLONE_NEWNS\fP 操作では、 元のマウント名前空間のすべてのマウントは一つのまとまりとして扱われ、 -マウント名前空間間で伝わる再帰的なマウントでは一つのまとまりとして伝わる。) -.IP * -.\" commit 9566d6742852c527bf5af38af5cbb878dad75705 -.\" Author: Eric W. Biederman -.\" Date: Mon Jul 28 17:26:07 2014 -0700 -.\" -.\" mnt: Correct permission checks in do_remount -.\" -より特権を持つマウント名前空間から特権の少ないマウント名前空間に伝わる際に、 \fBmount\fP(2) の \fBMS_RDONLY\fP, -\fBMS_NOSUID\fP, \fBMS_NOEXEC\fP フラグと "atime" フラグ (\fBMS_NOATIME\fP, -\fBMS_NODIRATIME\fP, \fBMS_REALTIME\fP) 設定はロックされ、 特権の少ないマウント名前空間では変更することはできない。 -.IP * -.\" (As of 3.18-rc1 (in Al Viro's 2014-08-30 vfs.git#for-next tree)) -ある名前空間でマウントポイントとなっているが別の名前空間でのマウントポイントになっていないファイルやディレクトリは、 -マウントポイントになっていないマウント名前空間では (通常のアクセス許可チェックにもとづいて) rename, unlink, remove -(\fBrmdir\fP(2)) を行うことができる。 -.IP -.\" -.\" ============================================================ -.\" -以前は、 別のマウント名前空間でマウントポイントとなっていたファイルやディレクトリを rename, unlink, remove しようとすると、 -エラー \fBEBUSY\fP が返されていた。 この動作は、 (NFS などで) 適用にあたっての技術的な問題があるとともに、 -より特権を持つユーザーに対してサービス不能攻撃 (denial\-of\-service attack) を許してしまっていた -(ファイルをバインドマウントで更新することができなくなっていた)。 -.SS "ユーザー ID とグループ ID のマッピング: uid_map と gid_map" -.\" commit 22d917d80e842829d0ca0a561967d728eb1d6303 -ユーザー名前空間が作成された際、 その名前空間は親のユーザー名前空間へのユーザー ID (とグループ ID) のマッピングを行わずに開始される。 -ファイル \fI/proc/[pid]/uid_map\fP と \fI/proc/[pid]/gid_map\fP (Linux 3.5 以降で利用可能) -でプロセス \fIpid\fP のユーザー名前空間内でのユーザー ID とグループ ID のマッピングにアクセスできる。 -これらのファイルを読み出してユーザー名前空間内のマッピングを参照したり、 これらのファイルに書き込んでマッピングを (一度だけ) 定義することができる。 - -以下の段落で \fIuid_map\fP の詳細を説明する。 \fIgid_map\fP に関しても全く同じである。 "user ID" という部分を "group -ID" に置き換えればよい。 - -\fIuid_map\fP ファイルで、 プロセス \fIpid\fP のユーザー名前空間から \fIuid_map\fP -をオープンしたプロセスのユーザー名前空間にユーザー ID のマッピングが公開される (公開するポリシーの条件については下記を参照)。 言い換えると、 -別のユーザー名前空間のプロセスでは、 特定の \fIuid_map\fP ファイルを読み出した際に潜在的には別の値が見えることがあるということである。 -見える値は読み出したプロセスのユーザー名前空間のユーザー ID マッピングに依存する。 - -\fIuid_map\fP ファイルの各行は 2 つのユーザー名前空間間の連続するユーザー ID の範囲の 1 対 1 マッピングを指定する -(ユーザー名前空間が最初に作成された際にはこのファイルは空である)。 各行の指定の形式はホワイトスペース区切りの 3 つの数字である。 最初の 2 -つの数字は 2 つの ユーザー名前空間それぞれの開始ユーザー ID を指定する。 3 つ目の数字はマッピングされる範囲の長さを指定する。 -詳しくは、各フィールドは以下のように解釈される。 -.IP (1) 4 -プロセス \fIpid\fP のユーザー名前空間におけるユーザー ID の範囲の開始値。 -.IP (2) -1 番目のフィールドで指定されたユーザー ID がマッピングされる先のユーザー ID の範囲の開始値。 2 番目のフィールドがどのように解釈されるかは、 -\fIuid_map\fP をオープンしたプロセスとプロセス \fIpid\fP が同じユーザー名前空間かどうかに依存する。 以下のとおり。 -.RS -.IP a) 3 -2 つのプロセスが異なるユーザー名前空間に属す場合、 2 番目のフィールドは \fIuid_map\fP -をオープンしたプロセスのユーザー名前空間におけるユーザー ID の範囲の開始値である。 -.IP b) -2 つのプロセスが同じユーザー名前空間に属す場合、 2 番目のフィールドはプロセス \fIpid\fP の親のユーザー名前空間におけるユーザー ID -の範囲の開始値である。 この場合、 \fIuid_map\fP をオープンしたプロセス (よくあるのは \fI/proc/self/uid_map\fP -をオープンした場合である) は、 このユーザー名前空間を作成したプロセスのユーザー名前空間に対するユーザー ID マッピングを参照することができる。 -.RE -.IP (3) -2 つのユーザー名前空間間でマッピングされるユーザー ID の範囲の長さ。 -.PP -ユーザー ID (グループ ID) を返すシステムコール、例えば \fBgetuid\fP(2), \fBgetgid\fP(2) や \fBstat\fP(2) -が返す構造体の credential フィールド、は呼び出し元のユーザー名前空間にマッピングされたユーザー ID (グループ ID) を返す。 - -プロセスがファイルにアクセスする場合、 アクセス許可のチェックやファイル作成時の ID 割り当てのために、 そのユーザー ID とグループ ID -は初期ユーザー名前空間にマッピングされる。 プロセスが \fBstat\fP(2) を使ってファイルのユーザー ID やグループ ID を取得する際には、 -上記の反対方向に ID のマッピングが行われ、 プロセスにおける相対的なユーザー ID とグループ ID の値が生成される。 - -初期ユーザー名前空間は親の名前空間を持たないが、 一貫性を持たせるため、 カーネルは初期の名前空間に対してダミーのユーザー ID とグループ ID -のマッピングを提供する。 初期の名前空間のシェルから \fIuid_map\fP ファイル (\fIgid_map\fP も同じ) を参照するには以下のようにする。 - -.in +4n -.nf -$ \fBcat /proc/$$/uid_map\fP - 0 0 4294967295 -.fi -.in - -.\" -.\" ============================================================ -.\" -このマッピングは、 この名前空間のユーザー ID 0 から始まる範囲が (実際には存在しない) 親の名前空間の 0 から始まる範囲にマッピングされ、 -範囲の流さは 32 ビットの unsigned integer の最大値である、 と言っている。 (ここで 4294967295 (32 -ビットの符号付き \-1 の値) は意図的にマッピングされていない。 \fI(uid_t)\ \-\1\fP は (\fBsetreuid\fP(2) など) -いくつかのインターフェースで "no user ID" (ユーザー ID なし) を示す手段として使用されているので、 意図的にこのようになっている。 -\fI(uid_t)\ \-\1\fP をマッピングせず、 利用できないようにすることで、 -これらのインターフェースを使った際に混乱が起こらないように保証している。) -.SS "ユーザー ID とグループ ID のマッピングの定義: uid_map と gid_map への書き込み" -.PP -新しいユーザー名前空間を作成した後、 新しいユーザー名前空間におけるユーザー ID のマッピングを定義するため、 その名前空間のプロセスの「一つ」の -\fIuid_map\fP ファイルに「一度だけ」書き込みを行うことができる。 ユーザー名前空間の \fIuid_map\fP -ファイルに二度目以降の書き込みを行おうとすると、 エラー \fBEPERM\fP で失敗する。 \fIgid_map\fP -ファイルについては同じルールが適用される。 - -\fIuid_map\fP (\fIgid_map\fP) に書き込む行は以下のルールに従っていなければならない。 -.IP * 3 -3 のフィールドは有効な数字でなければならず、最後のフィールドは 0 より大きくなければならない。 -.IP * -行は改行文字で終了しなければならない。 -.IP * -.\" FIXME(Eric): the restriction "less than" rather than "less than or equal" -.\" seems strangely arbitrary. Furthermore, the comment does not agree -.\" with the code in kernel/user_namespace.c. Which is correct? -ファイルの行数には上限がある。 Linux 3.8 時点では、上限は 5 行である。 さらに、 -ファイルに書き込むバイト数はシステムページサイズより小さくなければならず、 書き込みはファイルの先頭に対して行わなければならない (つまり、 -\fBlseek\fP(2) や \fBpwrite\fP(2) を使って 0 以外のファイルオフセットに書き込むことはできない)。 -.IP * -.\" commit 0bd14b4fd72afd5df41e9fd59f356740f22fceba -各行で指定されるユーザー ID (グループ ID) の範囲は他の行が指定する範囲と重なってはならない。 最初の実装 (Linux 3.8) では、 -この要件は、 後続行のフィールド 1 とフィールド 2 の両方の値が昇順になっていなければならないという追加の要件を設け、 -これが満たされなかった場合は有効なマッピングは作成されない、 という単純な実装により満たされていた。 Linux 3.9 以降ではこの制限は修正され、 -重複がない有効なマッピングであればどんな組み合わせでも指定できるようになった。 -.IP * -少なくとも 1 行はファイルに書き込まなければならない。 -.PP -上記のルールを満たさない書き込みはエラー \fBEINVAL\fP で失敗する。 - -プロセスが \fI/proc/[pid]/uid_map\fP (\fI/proc/[pid]/gid_map\fP) ファイルに書き込むためには、 -以下の要件がすべて満たされる必要がある。 -.IP 1. 3 -書き込みプロセスは、 プロセス \fIpid\fP のユーザー名前空間で \fBCAP_SETUID\fP (\fBCAP_SETGID\fP) -ケーパビリティを持っていなければならない。 -.IP 2. -書き込みプロセスは、 プロセス \fIpid\fP のユーザー名前空間もしくはプロセス \fIpid\fP の親のユーザー名前空間に属していなければならない。 -.IP 3. -マッピングされたユーザー ID (グループ ID) は親のユーザー名前空間にマッピングを持っていなければならない。 -.IP 4. -以下のいずれか一つが真である。 -.RS -.IP * 3 -\fIuid_map\fP (\fIgid_map\fP) に書き込まれるデータは、 書き込みを行うプロセスの親のユーザー名前空間でのファイルシステムユーザー ID -(グループ ID) をそのユーザー名前空間でのユーザー ID (グループ ID) にマッピングする 1 行で構成されている。 -.IP * 3 -オープンしたプロセスが親のユーザー名前空間で \fBCAP_SETUID\fP (\fBCAP_SETGID\fP) ケーパビリティを持っている。 したがって、 -特権プロセスは親のユーザー名前空間の任意のユーザー ID (グループ ID) に対するマッピングを作成できる。 -.RE -.PP -.\" -.\" ============================================================ -.\" -上記のルールを満たさない書き込みはエラー \fBEPERM\fP で失敗する。 -.SS "マッピングされていないユーザー ID とグループ ID" -.PP -.\" from_kuid_munged(), from_kgid_munged() -マッピングされていないユーザー ID (グループ ID) がユーザー空間に公開される場合はいろいろある。 -例えば、 新しいユーザー名前空間の最初のプロセスが、 その名前空間に対するユーザー ID マッピングが定義される前に \fBgetuid\fP() -を呼び出すなどである。 このようなほとんどの場合で、 マッピングされていないユーザー ID はオーバーフローユーザー ID (グループ -ID)に変換される。 デフォルトのオーバーフローユーザー ID (グループ ID) は 65534 である。 \fBproc\fP(5) の -\fI/proc/sys/kernel/overflowuid\fP と \fI/proc/sys/kernel/overflowgid\fP の説明を参照。 - -.\" also SO_PEERCRED -マッピングされていない ID がこのようにマッピングされる場合としては、 ユーザー ID を返すシステムコール (\fBgetuid\fP(2), -\fBgetgid\fP(2) やその同類)、 UNIX ドメインソケットで渡される ID 情報 (credential)、 \fBstat\fP(2) が返す -ID 情報、 \fBwaitid\fP(2)、 System V IPC "ctl" \fBIPC_STAT\fP 操作、 \fI/proc/PID/status\fP -や \fI/proc/sysvipc/*\fP 内のファイルで公開される ID 情報、 シグナル受信時の \fIsiginfo_t\fP の \fIsi_uid\fP -フィールドで返される ID 情報 (\fBsigaction\fP(2) 参照)、 プロセスアカウンティングファイルに書き込まれる ID 情報 -(\fBacct\fP(5) 参照)、 POSIX メッセージキュー通知で返される ID 情報 (\fBmq_notify\fP(3) 参照) がある。 - -.\" from_kuid(), from_kgid() -.\" Also F_GETOWNER_UIDS is an exception -.\" -.\" ============================================================ -.\" -マッピングされていないユーザー ID やグループ ID が対応するオーバーフロー ID 値に変換され「ない」重要な場合が一つある。 2 -番目のフィールドにマッピングがない \fIuid_map\fP や \fIgid_map\fP ファイルを参照した際、 そのフィールドは 4294967295 -(unsigned integer では \-1) が表示される。 -.SS "set\-user\-ID や set\-group\-ID されたプログラム" -.PP -.\" -.\" ============================================================ -.\" -ユーザー名前空間内のプロセスが set\-user\-ID (set\-group\-ID) されたプログラムを実行した場合、 -そのプロセスの名前空間内の実効ユーザー ID (実効グループ ID) は、 そのファイルのユーザー ID (グループ ID) にマッピングされる。 -しかし、 そのファイルのユーザー ID 「か」グループ ID が名前空間内のマッピングにない場合、 set\-user\-ID (set\-group\-ID) -ビットは黙って無視される。 新しいプログラムは実行されるが、 そのプロセスの実効ユーザー ID (実効グループ ID) は変更されないままとなる。 -(これは \fBMS_NOSUID\fP フラグ付きでマウントされたファイルシステム上にある set\-user\-ID/set\-group\-ID -プログラムを実行した場合の動作を反映したものである。 \fBmount\fP(2) を参照。) -.SS その他 -.PP -.\" -プロセスのユーザー ID とグループ ID が UNIX ドメインソケットを通して別のユーザー名前空間のプロセスに渡された場合 (\fBunix\fP(7) -の \fBSCM_CREDENTIALS\fP の説明を参照)、 ユーザー ID とグループ ID は受信プロセスのユーザー ID とグループ ID -のマッピングに基づき対応する値に翻訳される。 -.SH 準拠 -.\" -名前空間は Linux 独自の機能である。 -.SH 注意 -.\" -.\" ============================================================ -.\" -長年にわたり、Linux カーネルには特権ユーザーに対してだけ利用できる機能が多く追加されて来た。 これは set\-user\-ID\-root -アプリケーションを混乱させる潜在的な可能性を考慮してである。 一般的には、 ユーザー名前空間の root -ユーザーにだけこれらの機能の使用を許可するのが安全である。 なぜなら、ユーザー名前空間の中にいる間は、 ユーザー名前空間の root -ユーザーが持っている以上の特権を得ることはできないからである。 -.SS 可用性 -ユーザー名前空間を使用するには、 \fBCONFIG_USER_NS\fP オプションが有効になったカーネルが必要である。 -ユーザー名前空間をカーネルの様々なサブシステムのサポートを必要とする。 サポートされていないサブシステムがカーネルに組み込まれている場合、 -ユーザー名前空間のサポートを有効にすることはできない。 - -.\" commit d6970d4b726cea6d7a9bc4120814f95c09571fc3 -.\" -Linux 3.8 時点では、 ほとんどの関連するサブシステムはユーザー名前空間に対応しているが、 多くのファイルシステムにユーザー名前空間間でユーザー -ID やグループ ID のマッピングを行うのに必要な基盤がなかった。 Linux 3.9 では、 -残りの未サポートのファイルシステムの多くで必要な基盤のサポートが追加された (Plan 9 (9P), Andrew File System -(AFS), Ceph, CIFS, CODA, NFS, OCFS2)。 Linux 3.11 では、最後の主要な未サポートのファイルシステムであった -XFS のサポートが追加された。 -.SH 例 -以下のプログラムは、ユーザー名前空間で実験を行えるように設計されている。 他の種類の名前空間も扱える。 -このプログラムはコマンドライン引き数で指定された名前空間を作成し、作成した名前空間内でコマンドを実行する。 コメントとプログラム内の -\fIusage()\fP 関数に、プログラムの詳しい説明が書かれている。 以下のシェルセッションに実行例を示す。 - -まず最初に、実行環境を確認しておく。 - -.in +4n -.nf -$ \fBuname \-rs\fP # Linux 3.8 以降が必要 -Linux 3.8.0 -$ \fBid \-u\fP # 非特権ユーザーで実行する -1000 -$ \fBid \-g\fP -1000 -.fi -.in - -新しいユーザー名前空間 (\fI\-U\fP), マウント名前空間 (\fI\-m\fP), PID 名前空間 (\fI\-p\fP) で新しいシェルを開始する。ユーザー ID -(\fI\-M\fP) 1000 とグループ ID (\fI\-G\fP) 1000 をユーザー名前空間内で 0 にマッピングしている。 - -.in +4n -.nf -$ \fB./userns_child_exec \-p \-m \-U \-M '0 1000 1' \-G '0 1000 1' bash\fP -.fi -.in - -シェルは PID 1 を持つ。このシェルは新しい PID 名前空間の最初のプロセスだからである。 - -.in +4n -.nf -bash$ \fBecho $$\fP -1 -.fi -.in - -ユーザー名前空間内では、シェルのユーザー ID とグループ ID ともに 0 で、すべての許可ケーパビリティと実効ケーパビリティが有効になっている。 - -.in +4n -.nf -bash$ \fBcat /proc/$$/status | egrep '^[UG]id'\fP -Uid: 0 0 0 0 -Gid: 0 0 0 0 -bash$ \fBcat /proc/$$/status | egrep '^Cap(Prm|Inh|Eff)'\fP -CapInh: 0000000000000000 -CapPrm: 0000001fffffffff -CapEff: 0000001fffffffff -.fi -.in - -\fI/proc\fP ファイルシステムをマウントし、新しい PID 名前空間で見えるプロセス一覧を表示すると、 シェルからは PID -名前空間外のプロセスが見えないことが分かる。 - -.in +4n -.nf -bash$ \fBmount \-t proc proc /proc\fP -bash$ \fBps ax\fP - PID TTY STAT TIME COMMAND - 1 pts/3 S 0:00 bash - 22 pts/3 R+ 0:00 ps ax -.fi -.in -.SS プログラムのソース -\& -.nf -/* userns_child_exec.c - - GNU General Public License v2 以降の元でライセンスされる - - 新しい名前空間でシェルコマンドを実行する子プロセスを作成する。 - ユーザー名前空間を作成する際に UID と GID のマッピングを - 指定することができる。 -*/ -#define _GNU_SOURCE -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* 簡単なエラー処理関数: \\(aqerrno\\(aq の値に基づいて - エラーメッセージを出力し、呼び出し元プロセスを終了する。 */ - -#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \e - } while (0) - -struct child_args { - char **argv; /* 子プロセスが実行するコマンドと引き数 */ - int pipe_fd[2]; /* 親プロセスと子プロセスを同期するためのパイプ */ -}; - -static int verbose; - -static void -usage(char *pname) -{ - fprintf(stderr, "Usage: %s [options] cmd [arg...]\en\en", pname); - fprintf(stderr, "Create a child process that executes a shell " - "command in a new user namespace,\en" - "and possibly also other new namespace(s).\en\en"); - fprintf(stderr, "Options can be:\en\en"); -#define fpe(str) fprintf(stderr, " %s", str); - fpe("\-i New IPC namespace\en"); - fpe("\-m New mount namespace\en"); - fpe("\-n New network namespace\en"); - fpe("\-p New PID namespace\en"); - fpe("\-u New UTS namespace\en"); - fpe("\-U New user namespace\en"); - fpe("\-M uid_map Specify UID map for user namespace\en"); - fpe("\-G gid_map Specify GID map for user namespace\en"); - fpe("\-z Map user\(aqs UID and GID to 0 in user namespace\en"); - fpe(" (equivalent to: \-M \(aq0 1\(aq \-G \(aq0 1\(aq)\en"); - fpe("\-v Display verbose messages\en"); - fpe("\en"); - fpe("If \-z, \-M, or \-G is specified, \-U is required.\en"); - fpe("It is not permitted to specify both \-z and either \-M or \-G.\en"); - fpe("\en"); - fpe("Map strings for \-M and \-G consist of records of the form:\en"); - fpe("\en"); - fpe(" ID\-inside\-ns ID\-outside\-ns len\en"); - fpe("\en"); - fpe("A map string can contain multiple records, separated" - " by commas;\en"); - fpe("the commas are replaced by newlines before writing" - " to map files.\en"); - - exit(EXIT_FAILURE); -} - -/* マッピングファイル \(aqmap_file\(aq を \(aqmapping\(aq で指定 - された値で更新する。 \(aqmapping\(aq は UID や GID マッピングを - 定義する文字列である。 UID や GID マッピングは以下の形式の改行 - で区切られた 1 つ以上のレコードである。 - - NS 内 ID NS 外 ID 長さ - - ユーザーに改行を含む文字列を指定するのを求めるのは、 - コマンドラインを使う場合にはもちろん不便なことである。 - そのため、 この文字列でレコードを区切るのにカンマを - 使えるようにして、ファイルにこの文字列を書き込む前に - カンマを改行に置換する。 */ - -static void -update_map(char *mapping, char *map_file) -{ - int fd, j; - size_t map_len; /* \(aqmapping\(aq の長さ */ - - /* マッピング文字列内のカンマを改行で置換する */ - - map_len = strlen(mapping); - for (j = 0; j < map_len; j++) - if (mapping[j] == \(aq,\(aq) - mapping[j] = \(aq\en\(aq; - - fd = open(map_file, O_RDWR); - if (fd == \-1) { - fprintf(stderr, "ERROR: open %s: %s\en", map_file, - strerror(errno)); - exit(EXIT_FAILURE); - } - - if (write(fd, mapping, map_len) != map_len) { - fprintf(stderr, "ERROR: write %s: %s\en", map_file, - strerror(errno)); - exit(EXIT_FAILURE); - } - - close(fd); -} - -static int /* クローンされた子プロセスの開始関数 */ -childFunc(void *arg) -{ - struct child_args *args = (struct child_args *) arg; - char ch; - - /* 親プロセスが UID と GID マッピングを更新するまで待つ。 - main() のコメントを参照。 パイプの end of file を待つ。 - 親プロセスが一旦マッピングを更新すると、 - パイプはクローズされる。 */ - - close(args\->pipe_fd[1]); /* パイプのこちら側の書き込み端のディスク - リプターをクローズする。これにより - 親プロセスがディスクリプターをクローズ - すると EOF が見えるようになる。 */ - if (read(args\->pipe_fd[0], &ch, 1) != 0) { - fprintf(stderr, - "Failure in child: read from pipe returned != 0\en"); - exit(EXIT_FAILURE); - } - - /* シェルコマンドを実行する */ - - printf("About to exec %s\en", args\->argv[0]); - execvp(args\->argv[0], args\->argv); - errExit("execvp"); -} - -#define STACK_SIZE (1024 * 1024) - -static char child_stack[STACK_SIZE]; /* 子プロセスのスタック空間 */ - -int -main(int argc, char *argv[]) -{ - int flags, opt, map_zero; - pid_t child_pid; - struct child_args args; - char *uid_map, *gid_map; - const int MAP_BUF_SIZE = 100; - char map_buf[MAP_BUF_SIZE]; - char map_path[PATH_MAX]; - - /* コマンドラインオプションを解析する。 - 最後の getopt() 引き数の最初の \(aq+\(aq 文字は - GNU 風のコマンドラインオプションの並び換えを防止する。 - このプログラム自身が実行する「コマンド」にコマンドライン - オプションが含まれる場合があるからである。 - getopt() にこれらをこのプログラムのオプションとして - 扱ってほしくはないのだ。 */ - - flags = 0; - verbose = 0; - gid_map = NULL; - uid_map = NULL; - map_zero = 0; - while ((opt = getopt(argc, argv, "+imnpuUM:G:zv")) != \-1) { - switch (opt) { - case \(aqi\(aq: flags |= CLONE_NEWIPC; break; - case \(aqm\(aq: flags |= CLONE_NEWNS; break; - case \(aqn\(aq: flags |= CLONE_NEWNET; break; - case \(aqp\(aq: flags |= CLONE_NEWPID; break; - case \(aqu\(aq: flags |= CLONE_NEWUTS; break; - case \(aqv\(aq: verbose = 1; break; - case \(aqz\(aq: map_zero = 1; break; - case \(aqM\(aq: uid_map = optarg; break; - case \(aqG\(aq: gid_map = optarg; break; - case \(aqU\(aq: flags |= CLONE_NEWUSER; break; - default: usage(argv[0]); - } - } - - /* \-U なしの \-M や \-G の指定は意味がない */ - - if (((uid_map != NULL || gid_map != NULL || map_zero) && - !(flags & CLONE_NEWUSER)) || - (map_zero && (uid_map != NULL || gid_map != NULL))) - usage(argv[0]); - - args.argv = &argv[optind]; - - /* 親プログラムと子プロセスを同期するためにパイプを使っている。 - これは、子プロセスが execve() を呼び出す前に、親プロセスにより - UID と GID マップが設定されることを保証するためである。 - これにより、新しいユーザー名前空間において子プロセスの実効 - ユーザー ID を 0 にマッピングしたいという通常の状況で、 - 子プロセスが execve() 実行中にそのケーパビリティを維持する - ことができる。 この同期を行わないと、 0 以外のユーザー ID で - execve() を実行した際に、子プロセスがそのケーパビリティを失う - ことになる (execve() 実行中のプロセスのケーパビリティの変化の - 詳細については capabilities(7) マニュアルページを参照)。 */ - - if (pipe(args.pipe_fd) == \-1) - errExit("pipe"); - - /* 新しい名前空間で子プロセスを作成する */ - - child_pid = clone(childFunc, child_stack + STACK_SIZE, - flags | SIGCHLD, &args); - if (child_pid == \-1) - errExit("clone"); - - /* 親プロセスはここを実行する */ - - if (verbose) - printf("%s: PID of child created by clone() is %ld\en", - argv[0], (long) child_pid); - - /* 子プロセスの UID と GID のマッピングを更新する */ - - if (uid_map != NULL || map_zero) { - snprintf(map_path, PATH_MAX, "/proc/%ld/uid_map", - (long) child_pid); - if (map_zero) { - snprintf(map_buf, MAP_BUF_SIZE, "0 %ld 1", (long) getuid()); - uid_map = map_buf; - } - update_map(uid_map, map_path); - } - if (gid_map != NULL || map_zero) { - snprintf(map_path, PATH_MAX, "/proc/%ld/gid_map", - (long) child_pid); - if (map_zero) { - snprintf(map_buf, MAP_BUF_SIZE, "0 %ld 1", (long) getgid()); - gid_map = map_buf; - } - update_map(gid_map, map_path); - } - - /* パイプの書き込み端をクローズし、子プロセスに UID と GID の - マッピングが更新されたことを知らせる */ - - close(args.pipe_fd[1]); - - if (waitpid(child_pid, NULL, 0) == \-1) /* 子プロセスを待つ */ - errExit("waitpid"); - - if (verbose) - printf("%s: terminating\en", argv[0]); - - exit(EXIT_SUCCESS); -} -.fi -.SH 関連項目 -.\" From the shadow package -.\" From the shadow package -.\" From the shadow package -.\" From the shadow package -\fBnewgidmap\fP(1), \fBnewuidmap\fP(1), \fBclone\fP(2), \fBsetns\fP(2), \fBunshare\fP(2), -\fBproc\fP(5), \fBsubgid\fP(5), \fBsubuid\fP(5), \fBcredentials\fP(7), -\fBcapabilities\fP(7), \fBnamespaces\fP(7), \fBpid_namespaces\fP(7) -.sp -カーネルのソースファイル \fIDocumentation/namespaces/resource\-control.txt\fP -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/utf-8.7 b/manual/LDP_man-pages/draft/man7/utf-8.7 index 5efd5990..ce7bd467 100644 --- a/manual/LDP_man-pages/draft/man7/utf-8.7 +++ b/manual/LDP_man-pages/draft/man7/utf-8.7 @@ -42,7 +42,7 @@ .\" by Yuichi SATO .\" Updated 2012-05-29, Akihiro MOTOKI .\" -.TH UTF\-8 7 2014\-06\-13 GNU "Linux Programmer's Manual" +.TH UTF\-8 7 2019\-03\-06 GNU "Linux Programmer's Manual" .SH 名前 UTF\-8 \- ASCII と互換性のある多バイト Unicode の符号化 .SH 説明 @@ -60,7 +60,7 @@ Unicode のスーパーセットである ISO 10646 Universal Character Set (UCS) は \\(em 31 ビットのような \\(em もっと大きなコード空間を占めるが、 その最も単純な符号化である UCS\-4 にも (32 ビットワードの列として) 同じ問題がある。 - +.PP Unicode と UCS の UTF\-8 符号化にはこれらの問題がないので、 UNIX 形式の OS 上で Unicode 文字集合を使用するための一般的な方法となっている。 .SS 性質 @@ -122,12 +122,15 @@ Unicode 文字は UTF\-8 では 4 バイトまでにしかならない。 0x04000000 \- 0x7FFFFFFF: 1111110\fIx\fP 10\fIxxxxxx\fP 10\fIxxxxxx\fP 10\fIxxxxxx\fP 10\fIxxxxxx\fP 10\fIxxxxxx\fP .PP -\fIxxx\fP ビットの部分には 2 進数で表わした文字コードのビット部分が対応する。 -その文字を表現するのに最も短いバイト列のみが使用できる。 +The \fIxxx\fP bit positions are filled with the bits of the character code +number in binary representation, most significant bit first (big\-endian). +Only the shortest possible multibyte sequence which can represent the code +number of the character can be used. .PP -0xd800\(en0xdfff (UTF\-16 サロゲート) や -0xfffe, 0xffff (UCS の noncharacter) という UCS コードの値は、 -UTF\-8 に準拠したストリームに入れるべきではない。 +The UCS code values 0xd800\(en0xdfff (UTF\-16 surrogates) as well as 0xfffe +and 0xffff (UCS noncharacters) should not appear in conforming UTF\-8 +streams. According to RFC 3629 no point above U+10FFFF should be used, which +limits characters to four bytes. .SS 例 Unicode 文字の 0xa9 = 1010 1001 (コピーライトマーク) は UTF\-8 で符号化すると 以下のようになる。 @@ -211,6 +214,5 @@ ISO/IEC 10646\-1:2000, Unicode 3.1, RFC\ 3629, Plan 9. \fBlocale\fP(1), \fBnl_langinfo\fP(3), \fBsetlocale\fP(3), \fBcharsets\fP(7), \fBunicode\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/vdso.7 b/manual/LDP_man-pages/draft/man7/vdso.7 index 65d768c0..00021dc6 100644 --- a/manual/LDP_man-pages/draft/man7/vdso.7 +++ b/manual/LDP_man-pages/draft/man7/vdso.7 @@ -15,23 +15,23 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH VDSO 7 2014\-08\-19 Linux "Linux Programmer's Manual" +.TH VDSO 7 2019\-08\-02 Linux "Linux Programmer's Manual" .SH 名前 -vDSO \- 仮想 ELF 動的共有オブジェクトの概要 +vdso \- overview of the virtual ELF dynamic shared object .SH 書式 \fB#include \fP - +.PP \fBvoid *vdso = (uintptr_t) getauxval(AT_SYSINFO_EHDR);\fP .SH 説明 "vDSO" (virtual dynamic shared object; 仮想動的共有オブジェクト) は、 カーネルが自動的にすべてのユーザー空間アプリケーションのアドレス空間にマッピングを行う小さな共有ライブラリである。 vDSO はほとんどの場合 C ライブラリから呼び出されるため、 アプリケーションは通常これらの詳細を自分では気にする必要はない。 このように、 標準関数と C ライブラリを使って通常の方法でコードを作成することで、 vDSO 経由で利用可能な機能が活用されることになる。 - +.PP いったいなぜ vDSO は存在しているのか? カーネルが提供するシステムコールのいくつかは、 ユーザー空間のコードがこれらのシステムコールを頻繁に呼び出すことになり、 このような呼び出しが全体の性能を支配するようになる場合がある。 これは、 呼び出しの頻度と、 ユーザー空間から抜けてカーネルに入ることによるコンテキストスイッチのオーバーヘッドの両方に起因する。 - +.PP この文書の残りの部分は、 一般の開発者向けというではなく、 好奇心がある人と C ライブラリの開発者向けの内容となっている。 もしあなたが C ライブラリではなく自分のアプリケーションで vDSO を呼びだそうとしているのであれば、 ほとんどの場合間違ったことをしていることだろう。 .SS "Example background" @@ -41,11 +41,13 @@ vDSO \- 仮想 ELF 動的共有オブジェクトの概要 カーネルとプロセッサーのマイクロコードの両方のすべての割り込み処理パスが実行される。 新しいプロセッサーには、 システムコール呼び出しを起動するための高速な (だが、後方互換性がある) 命令が用意されている。 C ライブラリが実行時にこの機能が利用できるかを確認するのではなく、 C ライブラリは vDSO でカーネルが提供する関数を使うことができる。 - -用語が紛らわしい点には注意が必要である。 x86 システムでは、 システムコールを呼び出す推奨される方法を判定するのに使用される vDSO 関数は -"__kernel_vsyscall" という名前だが、 x86_64 では、 "vsyscall" という用語は、 -カーネルに時刻はいつかや呼び出し元はどの CPU 上にいるかを問い合わせるための廃止予定の方法も参照している。 - +.PP +Note that the terminology can be confusing. On x86 systems, the vDSO +function used to determine the preferred method of making a system call is +named "__kernel_vsyscall", but on x86\-64, the term "vsyscall" also refers to +an obsolete way to ask the kernel what time it is or what CPU the caller is +on. +.PP 頻繁に使用されるシステムコールの一つが \fBgettimeofday\fP(2) である。 このシステムコールは、 ユーザー空間アプリケーションから直接呼び出されることも、 C ライブラリから間接的に呼び出されることもある。 タイムスタンプが必要な場面、 タイミングループを行う場面、 ポーリングを行う場面を考えてほしい。 これらはいずれも現在時刻が何かを直ちに知りたいのが普通である。 @@ -55,11 +57,11 @@ vDSO \- 仮想 ELF 動的共有オブジェクトの概要 .SS "vDSO を見つける" vDSO のベースアドレスは、 (存在する場合には) カーネルから各プログラムに初期補助ベクトル (\fBgetauxval\fP(3) 参照) の \fBAT_SYSINFO_EHDR\fP タグ経由で渡される。 - +.PP vDSO がユーザーのメモリーマップの何か特定の場所にマッピングされると仮定してはならない。 通常新しいプロセスイメージが作成されるたびに (\fBexecve\fP(2) 実行時点) 、 実行時にベースアドレスのランダム化が行われる。 これは "return\-to\-libc" 攻撃 を防ぐためにセキュリティ上の理由から行われる。 - +.PP アーキテクチャーによっては \fBAT_SYSINFO\fP タグもある。 このタグは vsyscall エントリーポイントの場所を知るためだけのものであり、 しばしば省略されるか (利用できない場合は) 0 にセットされる。 このタグは最初の vDSO の実装で使用されていたものであり (下記の「歴史」を参照)、 このタグを利用するのは避けるべきである。 @@ -68,24 +70,24 @@ vDSO は完全な形式の ELF イメージなので、 vDSO に対してシン 新しいカーネルリリースで新しいシンボルを追加することができ、 C ライブラリが別のバージョンのカーネル上で動作する際に実行時に利用可能な機能を検出することができる。 多くの場合、 C ライブラリは最初の呼び出し時に検出を行い、 それ以降の呼び出しで利用できるようにその結果をキャッシュする。 - +.PP すべてのシンボルは (GNU のバージョンフォーマットを使って) バージョンが付けられている。 これにより、 カーネルは後方互換性を持たせつつ関数のシグネチャーを更新することができる。 つまり、 関数が受け取る引き数や返り値が変更されることがあるということである。 したがって、 vDSO のシンボルを検索する際には、 自分が期待する ABI に一致するバージョンをしなければならない。 - +.PP 通常は vDSO はすべてのシンボルに "__vdso_" か "__kernel_" というプレフィックスを付けるという慣習に従った名前付けを行っており、 他の標準のシンボルから区別することができる。 例えば、 "gettimeofday" 関数は ""__vdso_gettimeofday" という名前になっている。 - +.PP これらの関数を呼び出す場合は標準の C の呼び出しの慣習にしたがっておけばよい。 特殊なレジスターやスタックの動作に気を使う必要はない。 .SH 注意 .SS ソース カーネルをコンパイルする際に、 vDSO コードはコンパイルされリンクが行われる。 通常はアーキテクチャー固有のディレクトリに vDSO コードが生成される。 - - find arch/$ARCH/ \-name '*vdso*.so*' \-o \-name '*gate*.so*' - +.PP +.\" + find arch/$ARCH/ \-name \(aq*vdso*.so*\(aq \-o \-name \(aq*gate*.so*\(aq .SS "vDSO 名" vDSO の名前はアーキテクチャーにより異なる。 この名前は glibc の \fBldd\fP(1) の出力などに現れる。 名前はコードで必要となることはなく、 名前をハードコードしないこと。 @@ -97,34 +99,62 @@ l l. ユーザー ABI vDSO 名 _ aarch64 linux\-vdso.so.1 +arm linux\-vdso.so.1 ia64 linux\-gate.so.1 +mips linux\-vdso.so.1 ppc/32 linux\-vdso32.so.1 ppc/64 linux\-vdso64.so.1 +riscv linux\-vdso.so.1 s390 linux\-vdso32.so.1 s390x linux\-vdso64.so.1 sh linux\-gate.so.1 i386 linux\-gate.so.1 -x86_64 linux\-vdso.so.1 +x86\-64 linux\-vdso.so.1 x86/x32 linux\-vdso.so.1 .TE .if t \{\ .in .ft P \} +.SS "strace(1), seccomp(2), and the vDSO" +When tracing systems calls with \fBstrace\fP(1), symbols (system calls) that +are exported by the vDSO will \fInot\fP appear in the trace output. Those +system calls will likewise not be visible to \fBseccomp\fP(2) filters. .SH アーキテクチャー固有の注意 以下のサブ章では vDSO のアーキテクチャー固有の注意について説明する。 - -使用される vDSO は、 カーネルの ABI ではなく、 ユーザー空間コードの ABI に基づくことに注意すること。 したがって、 例えば、 i386 -32 ビットの ELF ライブラリ上で実行する場合、 i386 32 ビットカーネル上で実行されているか x86_64 64 -ビットカーネル上で実行されているかに関わらず同じ vDSO が得られる。 したがって、 以下のどの節が関係するかを判断する際にはユーザー空間 ABI -の名前を使用する必要がある。 +.PP +Note that the vDSO that is used is based on the ABI of your user\-space code +and not the ABI of the kernel. Thus, for example, when you run an i386 +32\-bit ELF binary, you'll get the same vDSO regardless of whether you run it +under an i386 32\-bit kernel or under an x86\-64 64\-bit kernel. Therefore, +the name of the user\-space ABI should be used to determine which of the +sections below is relevant. .SS "ARM 関数" +.\" See linux/arch/arm/vdso/vdso.lds.S +.\" Commit: 8512287a8165592466cb9cb347ba94892e9c56a5 +以下のテーブルは vDSO で公開されるシンボルの一覧である。 +.if t \{\ +.ft CW +\} +.TS +l l. +シンボル バージョン +_ +__vdso_gettimeofday LINUX_2.6 (exported since Linux 4.1) +__vdso_clock_gettime LINUX_2.6 (exported since Linux 4.1) +.TE +.if t \{\ +.in +.ft P +\} +.PP .\" See linux/arch/arm/kernel/entry-armv.S .\" See linux/Documentation/arm/kernel_user_helpers.txt -The ARM port has a code page full of utility functions. Since it's just a -raw page of code, there is no ELF information for doing symbol lookups or -versioning. It does provide support for different versions though. - +Additionally, the ARM port has a code page full of utility functions. Since +it's just a raw page of code, there is no ELF information for doing symbol +lookups or versioning. It does provide support for different versions +though. +.PP For information on this code page, it's best to refer to the kernel documentation as it's extremely detailed and covers everything you need to know: \fIDocumentation/arm/kernel_user_helpers.txt\fP. @@ -147,7 +177,7 @@ __kernel_clock_getres LINUX_2.6.39 .in .ft P \} -.SS "bfin (Blackfin) 関数" +.SS "bfin (Blackfin) functions (port removed in Linux 4.17)" .\" See linux/arch/blackfin/kernel/fixed_code.S .\" See http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:fixed-code As this CPU lacks a memory management unit (MMU), it doesn't set up a vDSO @@ -157,11 +187,29 @@ that region. There is no provision for backward compatibility beyond sniffing raw opcodes, but as this is an embedded CPU, it can get away with things\(emsome of the object formats it runs aren't even ELF based (they're bFLT/FLAT). - +.PP For information on this code page, it's best to refer to the public documentation: .br http://docs.blackfin.uclinux.org/doku.php?id=linux\-kernel:fixed\-code +.SS "mips functions" +.\" See linux/arch/mips/vdso/vdso.ld.S +.PP +以下のテーブルは vDSO で公開されるシンボルの一覧である。 +.if t \{\ +.ft CW +\} +.TS +l l. +シンボル バージョン +_ +__kernel_gettimeofday LINUX_2.6 (exported since Linux 4.4) +__kernel_clock_gettime LINUX_2.6 (exported since Linux 4.4) +.TE +.if t \{\ +.in +.ft P +\} .SS "ia64 (Itanium) 関数" .\" See linux/arch/ia64/kernel/gate.lds.S .\" Also linux/arch/ia64/kernel/fsys.S and linux/Documentation/ia64/fsys.txt @@ -181,7 +229,7 @@ __kernel_syscall_via_epc LINUX_2.5 .in .ft P \} - +.PP The Itanium port is somewhat tricky. In addition to the vDSO above, it also has "light\-weight system calls" (also known as "fast syscalls" or "fsys"). You can invoke these via the \fI__kernel_syscall_via_epc\fP vDSO helper. The @@ -209,17 +257,17 @@ set_tid_address .SS "parisc (hppa) 関数" .\" See linux/arch/parisc/kernel/syscall.S .\" See linux/Documentation/parisc/registers -The parisc port has a code page full of utility functions called a gateway +The parisc port has a code page with utility functions called a gateway page. Rather than use the normal ELF auxiliary vector approach, it passes the address of the page to the process via the SR2 register. The permissions on the page are such that merely executing those addresses automatically executes with kernel privileges and not in user space. This is done to match the way HP\-UX works. - +.PP Since it's just a raw page of code, there is no ELF information for doing symbol lookups or versioning. Simply call into the appropriate offset via the branch instruction, for example: - +.PP ble (%sr2, %r0) .if t \{\ .ft CW @@ -228,21 +276,9 @@ the branch instruction, for example: l l. オフセット 関数 _ -00b0 lws_entry -00e0 set_thread_pointer +00b0 lws_entry (CAS operations) +00e0 set_thread_pointer (used by glibc) 0100 linux_gateway_entry (syscall) -0268 syscall_nosys -0274 tracesys -0324 tracesys_next -0368 tracesys_exit -03a0 tracesys_sigexit -03b8 lws_start -03dc lws_exit_nosys -03e0 lws_exit -03e4 lws_compare_and_swap64 -03e8 lws_compare_and_swap -0404 cas_wouldblock -0410 cas_action .TE .if t \{\ .in @@ -275,6 +311,10 @@ __kernel_sync_dicache_p5 LINUX_2.6.15 .in .ft P \} +.PP +The \fBCLOCK_REALTIME_COARSE\fP and \fBCLOCK_MONOTONIC_COARSE\fP clocks are \fInot\fP +supported by the \fI__kernel_clock_getres\fP and \fI__kernel_clock_gettime\fP +interfaces; the kernel falls back to the real system call. .SS "ppc/64 関数" .\" See linux/arch/powerpc/kernel/vdso64/vdso64.lds.S 以下のテーブルは vDSO で公開されるシンボルの一覧である。 @@ -300,6 +340,31 @@ __kernel_sync_dicache_p5 LINUX_2.6.15 .in .ft P \} +.PP +The \fBCLOCK_REALTIME_COARSE\fP and \fBCLOCK_MONOTONIC_COARSE\fP clocks are \fInot\fP +supported by the \fI__kernel_clock_getres\fP and \fI__kernel_clock_gettime\fP +interfaces; the kernel falls back to the real system call. +.SS "riscv functions" +.\" See linux/arch/riscv/kernel/vdso/vdso.lds.S +以下のテーブルは vDSO で公開されるシンボルの一覧である。 +.if t \{\ +.ft CW +\} +.TS +l l. +シンボル バージョン +_ +__kernel_rt_sigreturn LINUX_4.15 +__kernel_gettimeofday LINUX_4.15 +__kernel_clock_gettime LINUX_4.15 +__kernel_clock_getres LINUX_4.15 +__kernel_getcpu LINUX_4.15 +__kernel_flush_icache LINUX_4.15 +.TE +.if t \{\ +.in +.ft P +\} .SS "s390 関数" .\" See linux/arch/s390/kernel/vdso32/vdso32.lds.S 以下のテーブルは vDSO で公開されるシンボルの一覧である。 @@ -377,7 +442,7 @@ __vdso_time LINUX_2.6 (Linux 3.15 以降で公開) .in .ft P \} -.SS "x86_64 関数" +.SS "x86\-64 functions" .\" See linux/arch/x86/vdso/vdso.lds.S 以下のテーブルは vDSO で公開されるシンボルの一覧である。 これらのシンボルはすべて "__vdso_" のプレフィックスなしでも利用できるが、 これらは無視し、 以下の名前だけを使うこと。 @@ -422,19 +487,18 @@ vDSO は元々は一つの関数 vsyscall であった。 古いカーネルで 現在の形の vDSO という形に見直しが行われた。 .SH 関連項目 \fBsyscalls\fP(2), \fBgetauxval\fP(3), \fBproc\fP(5) - +.PP Linux のソースコードツリーのドキュメント、例、ソースコード: +.PP .in +4n -.nf - +.EX Documentation/ABI/stable/vdso Documentation/ia64/fsys.txt Documentation/vDSO/* (vDSO の使用例がある) -find arch/ \-iname '*vdso*' \-o \-iname '*gate*' -.fi +find arch/ \-iname \(aq*vdso*\(aq \-o \-iname \(aq*gate*\(aq +.EE .in .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man7/x25.7 b/manual/LDP_man-pages/draft/man7/x25.7 index 6986baab..7c306d35 100644 --- a/manual/LDP_man-pages/draft/man7/x25.7 +++ b/manual/LDP_man-pages/draft/man7/x25.7 @@ -18,14 +18,14 @@ .\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved. .\" Translated Mon 6 Dec 1999 by NAKANO Takeo .\" -.TH X25 7 2012\-08\-05 Linux "Linux Programmer's Manual" +.TH X25 7 2017\-09\-15 Linux "Linux Programmer's Manual" .SH 名前 -x25 \- ITU\-T X.25 / ISO\-8208 プロトコルインターフェース +x25 \- ITU\-T X.25 / ISO\-8208 protocol interface .SH 書式 \fB#include \fP .br \fB#include \fP -.sp +.PP \fBx25_socket = socket(AF_X25, SOCK_SEQPACKET, 0);\fP .SH 説明 X25 ソケットは X.25 パケット層プロトコルに対するインターフェースを提供する。 これにより、アプリケーションはパブリックな X.25 @@ -43,12 +43,12 @@ recommendation X.25 (X.25 DTE\-DCE mode) で標準化されている。 X25 ソ ITU\-T recommendation X.121 で定義されている。 .PP .in +4n -.nf +.EX struct sockaddr_x25 { sa_family_t sx25_family; /* must be AF_X25 */ x25_address sx25_addr; /* X.121 Address */ }; -.fi +.EE .in .PP \fIsx25_addr\fP には char 配列 \fIx25_addr[]\fP を含まれる。これは 0 で終端する文字列として解釈される。 @@ -85,6 +85,5 @@ 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.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man8/iconvconfig.8 b/manual/LDP_man-pages/draft/man8/iconvconfig.8 index ce7d13af..24208ee3 100644 --- a/manual/LDP_man-pages/draft/man8/iconvconfig.8 +++ b/manual/LDP_man-pages/draft/man8/iconvconfig.8 @@ -1,5 +1,3 @@ -'\" t -*- coding: UTF-8 -*- -.\" .\" Copyright (C) 2014 Marko Myllynen .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) @@ -28,7 +26,7 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH ICONVCONFIG 8 2014\-07\-08 GNU "Linux System Administration" +.TH ICONVCONFIG 8 2020\-08\-13 GNU "Linux System Administration" .SH 名前 iconvconfig \- iconv モジュール設定キャッシュを作成する .SH 書式 @@ -37,11 +35,14 @@ iconvconfig \- iconv モジュール設定キャッシュを作成する \fBiconv\fP(3) 関数は内部で文字集合の変換に \fIgconv\fP モジュールを使用する。 設定ファイルは変換に必要なモジュールを決定するのに使用される。 このような設定ファイルを読み込んで解釈していると、 \fBiconv\fP(3) を使用するプログラムの速度が遅くなるので、 キャッシュ機構が採用されている。 - -\fBiconvconfig\fP プログラムは、 iconv モジュール設定ファイルを読み込んで、 高速に読み込みができる gconv -モジュール設定キャッシュファイルを書き出す。 システムが提供する gconv モジュールに加えて、 ユーザーは環境変数 \fBGCONV_PATH\fP -で独自の gconv モジュールディレクトリを指定できる。 しかし、 iconv モジュール設定のキャッシュが使用できるのは環境変数 -\fBGCONV_PATH\fP が設定されていない場合のみである。 +.PP +The \fBiconvconfig\fP program reads iconv module configuration files and writes +a fast\-loading gconv module configuration cache file. +.PP +In addition to the system provided gconv modules, the user can specify +custom gconv module directories with the environment variable +\fBGCONV_PATH\fP. However, iconv module configuration caching is used only +when the environment variable \fBGCONV_PATH\fP is not set. .SH オプション .TP \fB\-\-nostdlib\fP @@ -64,7 +65,7 @@ iconvconfig \- iconv モジュール設定キャッシュを作成する \fB\-V\fP, \fB\-\-version\fP \fBiconv\fP のバージョン番号、 ライセンス、 保証免責を表示する。 .SH 終了ステータス -成功すると 0 で、 エラーの場合 0 以外。 +Zero on success, nonzero on errors. .SH ファイル .TP \fI/usr/lib/gconv\fP @@ -78,6 +79,5 @@ iconvconfig \- iconv モジュール設定キャッシュを作成する .SH 関連項目 \fBiconv\fP(1), \fBiconv\fP(3) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man8/intro.8 b/manual/LDP_man-pages/draft/man8/intro.8 index e5a93165..0d859d60 100644 --- a/manual/LDP_man-pages/draft/man8/intro.8 +++ b/manual/LDP_man-pages/draft/man8/intro.8 @@ -43,13 +43,13 @@ intro \- 管理コマンドと特権コマンドの説明 .SH 説明 マニュアルの 8 章は、システム管理用のコマンド、デーモン (daemon)、 ハードウェア関連のコマンドといった、スーパーユーザーによってのみ 使用される/できるコマンドについて説明している。 - -1 章で説明されているコマンドと同様、この章で説明されるコマンドは コマンドの成功・失敗を示す終了ステータスで終了する。 さらなる情報は -\fBintro\fP(1) を参照のこと。 +.PP +As with the commands described in Section 1, the commands described in this +section terminate with an exit status that indicates whether the command +succeeded or failed. See \fBintro\fP(1) for more information. .SH 注意 .SS 著者と著作権 著者と著作権に関しては各マニュアルページのソースのヘッダーを参照すること。 これらはページごとに異なる可能性があることに注意してほしい。 .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index c164d830..00000000 --- a/manual/LDP_man-pages/draft/man8/ld.so.8 +++ /dev/null @@ -1,330 +0,0 @@ -.\" %%%LICENSE_START(PUBLIC_DOMAIN) -.\" This is in the public domain -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated 1998-05-23, NAKANO Takeo -.\" Updated & Modified 1999-09-14, NAKANO Takeo -.\" Updated & Modified 2002-01-17, Yuichi SATO -.\" Updated & Modified 2002-07-15, Yuichi SATO -.\" Updated 2007-06-13, Akihiro MOTOKI , LDP v2.55 -.\" Updated 2010-04-23, Akihiro MOTOKI, LDP v3.24 -.\" Updated 2012-04-30, Akihiro MOTOKI -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" Updated 2013-05-06, Akihiro MOTOKI -.\" Updated 2013-08-16, Akihiro MOTOKI -.\" -.TH LD.SO 8 2014\-12\-31 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 -ライブラリの依存関係を解決する際、動的リンカーは、最初に、依存関係の各文字列がスラッシュを含んでいるかをチェックする -(この状況になるのは、リンク時にスラッシュを含むライブラリのパス名が指定された場合である)。スラッシュが見つかった場合、その依存関係の文字列はパス名 -(相対パス、絶対パスのどちらも可) として解釈され、そのパス名を使ってそのライブラリはロードされる。 -.LP -ライブラリの依存関係にスラッシュが含まれない場合、以下の順序で検索される。 -.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 "rpath トークンの展開" -.PP -\fBld.so\fP では rpath 指定 (DT_RPATH や DT_RUNPATH) 中にいくつかの特定の文字列を使うことができる。 -それらの文字列は以下のように置き換えられる。 -.TP -\fI$ORIGIN\fP (\fI${ORIGIN}\fP も同じ) -プログラムや共有ライブラリが入っているディレクトリに展開される。 したがって、 \fIsomedir/app\fP に置かれたアプリケーションを - - gcc \-Wl,\-rpath,\(aq$ORIGIN/../lib\(aq - -でコンパイルすることで、 \fIsomedir\fP がディレクトリ階層のどこにあっても、 \fBld.so\fP は \fIsomedir/lib\fP -にある対応する共有ライブラリを見つけることができる。 この機能を使うと、 -特別なディレクトリではなく任意のディレクトリにインストールしても「ややこしい設定なしで」独自の共有ライブラリを使えるアプリケーションを作成することができる。 -.TP -\fI$LIB\fP (\fI${LIB}\fP も同じ) -アーキテクチャーに応じて \fIlib\fP か \fIlib64\fP に展開される (例えば、 x86\-64 では \fIlib64\fP に、 x86\-32 では -\fIlib\fP に展開される)。 -.TP -\fI$PLATFORM\fP (\fI${PLATFORM}\fP も同じ) -.\" 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!! -ホストシステムのプロセッサ種別に対応する文字列に展開される (例えば "x86_64")。 -いくつかのアーキテクチャーでは、 Linux カーネルから動的リンカーにプラットフォームを表す文字列が提供されない。 この文字列の値は補助ベクトルの -\fBAT_PLATFORM\fP 値から取得される (\fBgetauxval\fP(3) 参照)。 -.SH オプション -.TP -\fB\-\-list\fP -全ての依存関係とその解決法をリストする。 -.TP -\fB\-\-verify\fP -プログラムが動的にリンクされているかと、 動的リンカーがそのプログラムを扱えるかを検証する。 -.TP -\fB\-\-inhibit\-cache\fP -/etc/ld.so.cache を使用しない。 -.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 環境変数 -重要な環境変数には以下のものがある。 -.TP -\fBLD_ASSUME_KERNEL\fP -(glibc 2.2.3 以降) 各共有ライブラリは動的リンカーに必要なカーネル ABI の最小バージョンを通知することができる (必要なバージョンは -ELF の note section に格納され、 \fIreadelf\ \-n\fP で \fBNT_GNU_ABI_TAG\fP -のラベルが付いたセクションとして見ることができる)。 実行時に、 動的リンカーは実行中のカーネルの ABI バージョンを判定し、 カーネルの ABI -バージョンよりも大きな ABI の最小バージョンが指定された共有ライブラリのロードを行わない。 - -\fBLD_ASSUME_KERNEL\fP を使うことで、 動的リンカーに、 異なるカーネル ABI -バージョンのシステムで実行されているかのように見せることができる。 例えば、 以下のコマンドラインを実行すると、 動的リンカーは \fImyprog\fP -が必要とする共有ライブラリをロードする際に Linux 2.2.5 上で動作していると仮定する。 - -.in +4n -.nf -$ \fBLD_ASSUME_KERNEL=2.2.5 ./myprog\fP -.fi -.in - -必要なカーネル ABI の最低バージョンが異なる複数の共有ライブラリが (検索パス中の異なるディレクトリに) あるシステムでは、 -\fBLD_ASSUME_KERNEL\fP を使って (ディレクトリ検索順序に基づき) 使用するライブラリのバージョンを選択することができる。 -歴史的に見ると、 \fBLD_ASSUME_KERNEL\fP の最も一般的な使い道は、 LinuxThreads と NPTL -の両方を提供しているシステムで、 古い LinuxThreads の POSIX スレッド実装を手動で選択するためであった -(そのようなシステムでは、通常は NPTL がデフォルトであった)。 \fBpthreads\fP(7) を参照。 -.TP -\fBLD_BIND_NOT\fP -(glibc 2.2 以降) シンボルを解決した際、Global Offset Table (GOT) と Procedure Linkage -Table (PLT) を更新しない。 -.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 -追加でユーザーが指定する ELF -共有ライブラリのリスト。指定されたライブラリは、すべてのライブラリより前にロードされる。リストの区切りはスペースとコロンである。他の共有ライブラリにある関数を選択的に置き換えるために用いることができる。指定されたライブラリは「説明」の節で述べたルールを基いて検索される。 -set\-user\-ID/set\-group\-ID された ELF -バイナリでは、スラッシュを含んだパス名のライブラリは無視され、標準の検索ディレクトリのライブラリはそのライブラリファイルの set\-user\-ID -許可ビットが有効になっている場合のみロードされる。 -.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) -.\" Available 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 が値 1 -で定義された場合、実行ファイルと 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. -\fBld\fP(1), \fBldd\fP(1), \fBpldd\fP(1), \fBsprof\fP(1), \fBdlopen\fP(3), \fBgetauxval\fP(3), -\fBrtld\-audit\fP(7), \fBldconfig\fP(8), \fBsln\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man8/ldconfig.8 b/manual/LDP_man-pages/draft/man8/ldconfig.8 deleted file mode 100644 index c40601e8..00000000 --- a/manual/LDP_man-pages/draft/man8/ldconfig.8 +++ /dev/null @@ -1,113 +0,0 @@ -.\" Copyright 1999 SuSE GmbH Nuernberg, Germany -.\" Author: Thorsten Kukuk -.\" -.\" %%%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 -.\" . -.\" %%%LICENSE_END -.\" -.\" Modified, 6 May 2002, Michael Kerrisk, -.\" Change listed order of /usr/lib and /lib -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved. -.\" Translated Sat May 23 1998 by NAKANO Takeo -.\" Updated & Modified Tue Sep 14 1999 by NAKANO Takeo -.\" Updated & Modified Mon Jun 4 20:13:57 JST 2001 -.\" by Yuichi SATO -.\" -.TH LDCONFIG 8 2012\-05\-10 GNU "Linux Programmer's Manual" -.SH 名前 -ldconfig \- 動的リンカーによる実行時の結合関係を設定する -.SH 書式 -\fB/sbin/ldconfig\fP [ \fB\-nNvXV\fP ] [ \fB\-f\ conf\fP ] [ \fB\-C\ cache\fP ] [ \fB\-r\ root\fP ] \fIdirectory\fP\ ... -.PD 0 -.PP -.PD -\fB/sbin/ldconfig\fP \fB\-l\fP [ \fB\-v\fP ] \fIlibrary\fP\ ... -.PD 0 -.PP -.PD -\fB/sbin/ldconfig\fP \fB\-p\fP -.SH 説明 -\fBldcofig\fP は最新の共有ライブラリに対して必要なリンクを作成したり、 ライブラリをキャッシュしたりする。 ライブラリは、コマンドラインや -\fI/etc/ld.so.conf\fP ファイルで指定されたディレクトリや、共有ライブラリが 通常置かれるディレクトリ (\fI/lib\fP と -\fI/usr/lib\fP) から検索される。 キャッシュは実行時リンカー \fIld.so\fP または \fIld\-linux.so\fP によって使われる。 -\fBldconfig\fP は処理するライブラリのヘッダー部分とファイル名をチェックし、 どのバージョンに対してリンクを更新すべきかを判断する。 -.PP -.\" The following sentence looks suspect -.\" (perhaps historical cruft) -- MTK, Jul 2005 -.\" Therefore, when making dynamic libraries, -.\" it is wise to explicitly link against libc (use \-lc). -\fBldconfig\fP は ELF ライブラリの種類 (libc5 か libc6/glibc か) を判断するとき、 そのライブラリがリンクしている -C ライブラリを参考にする。 -.PP -すでに存在しているライブラリの中には、種類を区別するために充分な 情報が含まれていないものもある。 このため \fI/etc/ld.so.conf\fP -ファイルでライブラリの形式を指定することができるようになっている。 これは区別不能な ELF ライブラリ「だけ」に用いるものである。 フォーマットは -"dirname=TYPE" とする。 ここで TYPE は libc4, libc5, libc6 のいずれかである -(この書式はコマンドラインでも使える)。 「スペースを入れてはならない」。 \fB\-p\fP オプションも見ておくこと。 \fBldconfig\fP -は通常スーパーユーザー権限で実行しなければならない。 root が所有しているディレクトリやファイルへの書き込み権限が 必要になるからである。 -.SH オプション -.TP -\fB\-v\fP -詳細表示モード。 現在のバージョン番号を表示する。 またそれぞれのディレクトリをスキャンし、 新しいリンクを生成するたびに、その内容を表示する。 -メッセージ抑制モードを上書きする。 -.TP -\fB\-n\fP -コマンドラインで指定されたディレクトリのみを処理する。 通常共有ライブラリが置かれるディレクトリ (\fI/lib\fP と \fI/usr/lib\fP) や -\fI/etc/ld.so.conf\fP で指定されたディレクトリは処理しない。 暗黙のうちに \fB\-N\fP が指定される。 -.TP -\fB\-N\fP -キャッシュを再構成しない。 同時に \fB\-X\fP が同時に指定されなければ、リンクのほうは更新される。 -.TP -\fB\-X\fP -リンクを更新しない。 \fB\-N\fP が同時に指定されなければ、キャッシュのほうは再構成される。 -.TP -\fB\-f conf\fP -\fBconf\fP を \fI/etc/ld.so.conf\fP の代わりに用いる。 -.TP -\fB\-C cache\fP -\fBcache\fP を \fI/etc/ld.so.cache\fP の代わりに用いる。 -.TP -\fB\-r root\fP -\fIroot\fP にカレントディレクトリを変更し、ここをルートディレクトリとして用いる。 -.TP -\fB\-l\fP -ライブラリモード。それぞれのライブラリを手動でリンクする。 熟練者のみが用いるべきである。 -.TP -\fB\-p\fP -現在のキャッシュに保存されているディレクトリのリストと、 ライブラリの候補を表示する。 -.SH ファイル -.PD 0 -.TP 20 -\fI/lib/ld.so\fP -実行時リンカー/ローダー。 -.TP 20 -\fI/etc/ld.so.conf\fP -コロン・スペース・タブ・改行・コンマで区切られたディレクトリのリスト。 それぞれのディレクトリでライブラリが検索される。 -.TP 20 -\fI/etc/ld.so.cache\fP -\fI/etc/ld.so.conf\fP で指定されたディレクトリにあるライブラリ、および \fI/lib\fP と \fI/usr/lib\fP -にあるライブラリの順序付きリスト。 -.PD -.SH 関連項目 -\fBldd\fP(1), \fBld.so\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man8/nscd.8 b/manual/LDP_man-pages/draft/man8/nscd.8 index f9f58ac1..47863b60 100644 --- a/manual/LDP_man-pages/draft/man8/nscd.8 +++ b/manual/LDP_man-pages/draft/man8/nscd.8 @@ -34,17 +34,19 @@ .\" by Yuichi SATO .\" Updated 2009-03-05 by Kentaro Shirakata .\" -.TH NSCD 8 2012\-05\-10 GNU "Linux Programmer's Manual" +.TH NSCD 8 2015\-05\-07 GNU "Linux Programmer's Manual" .SH 名前 nscd \- ネームサービスキャッシュデーモン .SH 説明 -nscd は一般的なネームサービスに必要な多くのものを キャッシュとして提供するデーモンである。 デフォルトの設定ファイル -\fI/etc/nscd.conf\fP でキャッシュデーモンの動作を決定する。 \fBnscd.conf\fP(5) を見よ。 - -nscd は \fBpasswd\fP(5), \fBgroup\fP(5), \fBhosts\fP(5) データベースへのアクセスのキャッシュを -\fBgetpwnam\fP(3), \fBgetpwuid\fP(3), \fBgetgrnam\fP(3), \fBgetgrgid\fP(3), -\fBgethostbyname\fP(3) などの標準 libc インターフェースを通して提供する。 - +\fBnscd\fP is a daemon that provides a cache for the most common name service +requests. The default configuration file, \fI/etc/nscd.conf\fP, determines the +behavior of the cache daemon. See \fBnscd.conf\fP(5). +.PP +\fBnscd\fP provides caching for accesses of the \fBpasswd\fP(5), \fBgroup\fP(5), +\fBhosts\fP(5) \fBservices\fP(5) and \fInetgroup\fP databases through standard libc +interfaces, such as \fBgetpwnam\fP(3), \fBgetpwuid\fP(3), \fBgetgrnam\fP(3), +\fBgetgrgid\fP(3), \fBgethostbyname\fP(3), and others. +.PP 各データベースには 2 つのキャッシュがある。 肯定的 (positive) なキャッシュは見つかったアイテムをキャッシュし、 否定的 (negative) なキャッシュは見つからなかったアイテムをキャッシュする。 各キャッシュはデータの TTL (time\-to\-live, 生存時間) を個別に持っている。 特例として shadow ファイルはキャッシュされない点に注意すること。 \fBgetspnam\fP(3) @@ -60,14 +62,17 @@ nscd は \fBpasswd\fP(5), \fBgroup\fP(5), \fBhosts\fP(5) データベースへ 以降が利用可能な場合を除いて) 短い遅延の後に起こり、またこの自動検出は非標準 NSS モジュールが \fI/etc/nsswitch.conf\fP で指定されている場合はその設定ファイルには対応しない。 この場合、データベースの設定ファイルを変更した後、 \fBnscd\fP のキャッシュを無効にするために以下のコマンドを実行する必要がある: - - $ \fBnscd \-i\fP \fI\fP +.PP +.in +4n +.EX +$ \fBnscd \-i\fP \fI\fP +.EE +.in .SH 関連項目 .\" .SH AUTHOR .\" .B nscd .\" was written by Thorsten Kukuk and Ulrich Drepper. \fBnscd.conf\fP(5), \fBnsswitch.conf\fP(5) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man8/sln.8 b/manual/LDP_man-pages/draft/man8/sln.8 index 08135580..2e701c33 100644 --- a/manual/LDP_man-pages/draft/man8/sln.8 +++ b/manual/LDP_man-pages/draft/man8/sln.8 @@ -32,7 +32,7 @@ .\" all rights reserved. .\" Translated 2013-07-31, Akihiro MOTOKI .\" -.TH SLN 8 2013\-02\-10 GNU "Linux Programmer's Manual" +.TH SLN 8 2017\-09\-15 GNU "Linux Programmer's Manual" .SH 名前 sln \- シンボリックリンクを作成する .SH 書式 @@ -42,16 +42,15 @@ sln \- シンボリックリンクを作成する .SH 説明 \fBsln\fP プログラムはシンボリックリンクの作成を行う。 \fBln\fP(1) プログラムと異なり、 このプログラムは静的にリンクされている。 つまり、 何らかの理由で動的リンカーが動作しない場合に、 \fBsln\fP を使って、 動的ライブラリへのシンボリックリンクを作成することができる。 - +.PP コマンドラインには二つの形がある。 一つ目の形では、 \fIsource\fP へのシンボリックリンクとして \fIdest\fP を作成する。 - +.PP 二つ目の形式では、 \fIfilelist\fP はスペース区切りのパス名の組のリストで、 このファイルの各行について、二つのパス名を引き数として 1 回ずつ \fBsln\fP を実行したのと同じ結果となる。 - +.PP \fBsln\fP プログラムには、 コマンドラインオプションはない。 .SH 関連項目 -\fBln\fP(1), \fBldconfig\fP(8), \fBld.so\fP(8) +\fBln\fP(1), \fBld.so\fP(8), \fBldconfig\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man8/tzselect.8 b/manual/LDP_man-pages/draft/man8/tzselect.8 index 2627741f..9725792a 100644 --- a/manual/LDP_man-pages/draft/man8/tzselect.8 +++ b/manual/LDP_man-pages/draft/man8/tzselect.8 @@ -26,11 +26,12 @@ tzselect \- タイムゾーンを選択する .PP ユーザーとの対話は、全て標準入力と標準エラー出力とで行われる。 .SH 終了ステータス -ユーザーからの入力によってタイムゾーンが正しく取得できた場合は 0 を 返す。それ以外の場合は 0 以外を返す。 +The exit status is zero if a timezone was successfully obtained from the +user, and is nonzero otherwise. .SH 環境変数 .TP \fBAWK\fP -Posix 互換の \fIawk\fP プログラム (デフォルトは \fBawk\fP)。 +Name of a POSIX\-compliant \fIawk\fP program (default: \fBawk\fP). .TP \fBTZDIR\fP .\" or perhaps /usr/local/etc/zoneinfo in some older systems. @@ -44,11 +45,10 @@ Posix 互換の \fIawk\fP プログラム (デフォルトは \fBawk\fP)。 国別コード、経度・緯度、TZ の値、説明文からなる表。 .TP \fBTZDIR\fP\fI/\fP\fITZ\fP -タイムゾーン \fITZ\fP に対するタイムゾーンデータのファイル。 +Timezone data file for timezone \fITZ\fP. .SH 関連項目 .\" @(#)tzselect.8 1.3 \fBtzfile\fP(5), \fBzdump\fP(8), \fBzic\fP(8) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は +\%https://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 deleted file mode 100644 index a874ff3f..00000000 --- a/manual/LDP_man-pages/draft/man8/zdump.8 +++ /dev/null @@ -1,48 +0,0 @@ -.\" %%%LICENSE_START(PUBLIC_DOMAIN) -.\" This page is in the public domain -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved. -.\" Translated Tue Sep 14 1999 -.\" by NAKANO Takeo -.\" Updated 2013-05-01, Akihiro MOTOKI -.\" -.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 -詳細表示において、 指定された年の開始日に近い範囲に表示を限定する。 限定後の出力には、 最も古い時刻値、 その 1 日後、 最も新しい時刻値、 その -1 日前が表示される。 -.SH 関連項目 -.\" @(#)zdump.8 7.3 -\fBtzfile\fP(5), \fBzic\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 diff --git a/manual/LDP_man-pages/draft/man8/zic.8 b/manual/LDP_man-pages/draft/man8/zic.8 deleted file mode 100644 index 1c9d59ed..00000000 --- a/manual/LDP_man-pages/draft/man8/zic.8 +++ /dev/null @@ -1,274 +0,0 @@ -.\" %%%LICENSE_START(PUBLIC_DOMAIN) -.\" This page is in the public domain -.\" %%%LICENSE_END -.\" -.\"******************************************************************* -.\" -.\" This file was generated with po4a. Translate the source file. -.\" -.\"******************************************************************* -.\" -.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved. -.\" Translated Sat Aug 14 1999 -.\" by NAKANO Takeo -.\" Updated Wed Apr 4 2001 -.\" by Yuichi SATO -.\" -.TH ZIC 8 2010\-02\-25 "" "Linux System Administration" -.SH 名前 -zic \- タイムゾーンコンパイラ -.SH 書式 -\fBzic\fP [ \fB\-v\fP ] [ \fB\-d\fP \fIdirectory\fP ] [ \fB\-l\fP \fIlocaltime\fP ] [ \fB\-p\fP -\fIposixrules\fP ] [ \fB\-L\fP \fIleapsecondfilename\fP ] [ \fB\-s\fP ] [ \fB\-y\fP \fIcommand\fP -] [ \fIfilename\fP \&... ] -.SH 説明 -.if t .ds lq `` -.if t .ds rq '' -.if n .ds lq \&"\" -.if n .ds rq \&"\" -.de q -\\$3\*(lq\\$1\*(rq\\$2 -.. -\fIzic\fP はコマンドラインで指定されたファイル (複数指定可) からテキストを読み、 -時刻変換情報ファイルを生成する。ファイル名も読み込みテキストで指定しておく。 \fIfilename\fP が \fB\-\fP の場合は、標準入力から読み込む。 -.PP -以下のオプションを指定できる: -.TP -\fB\-d \fP\fIdirectory\fP -時刻変換情報ファイルを生成するディレクトリを、標準のディレクトリ (以下を参照) ではなく指定したディレクトリにする。 -.TP -\fB\-l \fP\fItimezone\fP -指定したタイムゾーンをローカルタイムに用いる。 \fIzic\fP は入力に以下の書式のリンク行が含まれているかのように振る舞う。 -.sp -.ti +.5i -Link \fItimezone\fP localtime -.TP -\fB\-p \fP\fItimezone\fP -POSIX 形式のタイムゾーン環境変数を扱うとき、 指定したタイムゾーンのルールを用いる。 \fIzic\fP -は入力に以下の書式のリンク行が含まれているかのように振る舞う。 -.sp -.ti +.5i -Link \fItimezone\fP posixrules -.TP -\fB\-L \fP\fIleapsecondfilename\fP -閏秒情報を与えられた名前のファイルから読み込む。 このオプションが指定されなかった場合には、 出力ファイルには閏秒の情報は含まれない。 -.TP -\fB\-v\fP -データファイルに現れる年が \fBtime\fP(2) で表記できる範囲を越えている場合に文句を言う。 -.TP -\fB\-s\fP -出力ファイルに格納される時刻の値を、 signed で評価しても unsigned で 評価しても同じ値になるような範囲に制限する。 -このオプションを使うと SVVS 互換なファイルを生成することができる。 -.TP -\fB\-y \fP\fIcommand\fP -年の型のチェック (以下参照) に \fByearistype\fP ではなく指定した \fIcommand\fP を用いる。 -.PP -入力行はフィールドからなる。 フィールド間は、連続した任意の個数の空白文字によって区切られる。 行頭・行末の空白文字は無視される。 -クォートされていないシャープ文字 (#) が入力行に現れた場合は、 そこから行末まではコメントとして扱われる。 空白文字やシャープ文字をダブルクォート -(") で囲めば、 フィールドの一部として用いることができる。 (コメント除去処理を行った後のものを含めて) 空行は無視される。 空行以外の行は、 3 -種類あるタイプの行のいずれかであるとみなされる。 3 つのタイプとは、ルール行 (rule line)、ゾーン行 (zone line)、 リンク行 -(link line) である。 -.PP -ルール行の書式は以下のようなものである。 -.nf -.ti +.5i -.ta \w'Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'TYPE\0\0'u +\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00\0\0'u +\w'SAVE\0\0'u -.sp -Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -.sp -例: -.ti +.5i -.sp -Rule US 1967 1973 \- Apr lastSun 2:00 1:00 D -.sp -.fi -ルール行を構成するフィールドは以下の通り: -.TP "\w'LETTER/S'u" -\fBNAME\fP -このルールが所属するルールセットの名前を与える (任意)。 -.TP -\fBFROM\fP -このルールが適用される最初の年を与える。 任意の整数を年として与えることができる。グレゴリオ暦が仮定される。 \fIminimum\fP (あるいはその短縮) -は整数表記できる最小の年を意味する。 \fImaximum\fP (あるいはその短縮) は整数表記できる最大の年を意味する。 ルールでは時刻値 (time -value) では表記できない時刻も記述できる。 表記できない時刻は無視される。つまりルールは 異なった時刻値の型を持つホスト間でポータブルである。 -.TP -\fBTO\fP -このルールが適用される最後の年を与える。 \fIminimum\fP と \fImaximum\fP (上述) に加え、 \fIonly\fP (またはその短縮) -を用いることができ、この場合は \fBFROM\fP フィールドに指定した値と同じ値が用いられる。 -.TP -\fBTYPE\fP -ルールの適用される年のタイプを与える。 \fBTYPE\fP が \fB\-\fP であれば、このルールは \fBFROM\fP から \fBTO\fP に挟まれた (両端含む) -全ての年に適用される。 \fBTYPE\fP がそれ以外の場合には、 \fIzic\fP は以下のコマンドを実行して年のタイプをチェックする。 -.ti +.5i -\fByearistype\fP \fIyear\fP \fItype\fP -.br -返り値が 0 の場合は、その年は与えられたタイプに含まれ、 返り値が 1 の場合は含まれないことになる。 -.TP -\fBIN\fP -ルールが効力を持つ月の名前を指定する。 月名は短縮できる。 -.TP -\fBON\fP -ルールが効力を持つ日の名前を指定する。 以下のような書式を認識する: -.nf -.in +.5i -.sp -.ta \w'Sun<=25\0\0'u -5 その月の第 5 日 -lastSun その月の最後の日曜日 -lastMon その月の最後の月曜日 -Sun>=8 第 8 日以降の最初の日曜日 -Sun<=25 第 25 日以前の最後の日曜日 -.fi -.in -.5i -.sp -曜日の名前は短縮できる。全部綴っても良い。 \fBON\fP フィールドの内部にはスペースを入れてはいけないことに注意。 -.TP -\fBAT\fP -ルールが効力を持つ一日のうちの時刻を与える。 以下のような書式を認識する: -.nf -.in +.5i -.sp -.ta \w'1:28:13\0\0'u -2 時間での表記 -2:00 時間と分での表記 -15:00 24 時間形式の時間 (正午以降) -1:28:14 時間・分・秒での表記 -\- 0 と同じ -.fi -.in -.5i -.sp -ここで 0 時はその日のはじまりであり、 24 時はその日の終わりである。 これらの書式のあとには、以下の文字のいずれかを指定することができる。 -\fIw\fP 与えられた時刻がローカルな -.q "壁時計 (wall clock)" -時刻である; \fIs\fP 与えられた時刻がローカルな -.q "標準 (standard)" -時刻である; \fIu\fP (または \fIg\fP または \fIz\fP) 与えられた時刻が標準時 (universal -time) である。 これらの表意文字がいずれも指定されなかった場合は、 壁時計時刻が仮定される。 -.TP -\fBSAVE\fP -ルールが効力を持っているとき、ローカルな標準時刻に追加すべき 時間の量を与える。このフィールドの書式は \fBAT\fP フィールドのものと同じである -(ただしもちろん \fIw\fP と \fIs\fP の後置文字は用いられない)。 -.TP -\fBLETTER/S\fP -このルールが効力を持っている場合に用いられるタイムゾーン短縮型の -.q "可変部 (variable part) -を与える (例えば -.q EST -や -.q EDT -における -.q S -や -.q D -など)。 このフィールドが \fB\-\fP であった場合には、 -可変部は存在しない。 -.PP -ゾーン行の書式は以下のようなものである。 -.sp -.nf -.ti +.5i -.ta \w'Zone\0\0'u +\w'Australia/Adelaide\0\0'u +\w'UTCOFF\0\0'u +\w'RULES/SAVE\0\0'u +\w'FORMAT\0\0'u -Zone NAME UTCOFF RULES/SAVE FORMAT [UNTIL] -.sp -例: -.sp -.ti +.5i -Zone Australia/Adelaide 9:30 Aus CST 1971 Oct 31 2:00 -.sp -.fi -ゾーン行を構成するフィールドは以下の通り: -.TP "\w'UTCOFF'u" -\fBNAME\fP -タイムゾーンの名前。この名前がこのゾーンの時刻変換情報ファイルを 生成するときに用いられる。 -.TP -\fBUTCOFF\fP -このゾーンの標準時刻を得るために、 UTC に加える時間。 このフィールドの書式は、ルール行の \fBAT\fP および \fBSAVE\fP -フィールドのものと同じである。時間を UTC から引く必要がある場合は マイナス記号を前置する。 -.TP -\fBRULES/SAVE\fP -タイムゾーンに適用されるルールの名前か、あるいは ローカル標準時刻に加えるべき時間の量を指定する。 このフィールドが \fB\-\fP -ならば、常に標準時刻がこのゾーンに対して用いられる。 -.TP -\fBFORMAT\fP -このタイムゾーンに対するタイムゾーン短縮名の書式。 2 文字の文字列 \fB%s\fP を用いて、どこが -.q 可変部 -になるかを指定できる。あるいはスラッシュ文字 (/) を用いて 標準の短縮名とサマータイム短縮名を区切ることができる。 -.TP -\fBUNTIL\fP -UTC に対するオフセットか、その場所におけるルールが変更される時刻。 年・月・日・時刻で指定する。 -これが指定された場合には、タイムゾーンの情報は与えられている UTC オフセットから生成され、ルールは指定時刻になると変更される。 -月・日・時刻は、ルールの IN, ON, AT カラムと同じ書式で指定する。 この後に続くカラムは省略できる。 省略されたカラムに対しては、 -可能性のあるもののうち最も早い値がデフォルトで用いられる。 -.IP -この行には必ず -.q 継続 (continuation) -行が続く。 継続行はゾーン行と同じ書式を持つが、 -.q Zone -と名前は省略される。なぜなら継続行は直前の行の \fBUNTIL\fP フィールドで指定された時刻以降の情報を与えるものだからである。 -継続行にもゾーン行と同じように \fBUNTIL\fP フィールドを指定することができ、この場合はその次の行が さらなる継続行になることとなる。 -.PP -リンク行の書式は以下のようなものである。 -.sp -.nf -.ti +.5i -.ta \w'Link\0\0'u +\w'Europe/Istanbul\0\0'u -Link LINK\-FROM LINK\-TO -.sp -例: -.sp -.ti +.5i -Link Europe/Istanbul Asia/Istanbul -.sp -.fi -\fBLINK\-FROM\fP フィールドはゾーン行の \fBNAME\fP フィールドが記述される。 \fBLINK\-TO\fP フィールドはそのゾーンの別名である。 -.PP -Except for continuation lines, lines may appear in any order in the input. -.PP -ファイル中で閏秒を記述する行は以下のような書式を持つ。 -.nf -.ti +.5i -.ta \w'Leap\0\0'u +\w'YEAR\0\0'u +\w'MONTH\0\0'u +\w'DAY\0\0'u +\w'HH:MM:SS\0\0'u +\w'CORR\0\0'u -.sp -Leap YEAR MONTH DAY HH:MM:SS CORR R/S -.sp -例: -.ti +.5i -.sp -Leap 1974 Dec 31 23:59:60 + S -.sp -.fi -.\" There's no need to document the following, since it's impossible for more -.\" than one leap second to be inserted or deleted at a time. -.\" The C Standard is in error in suggesting the possibility. -.\" See Terry J Quinn, The BIPM and the accurate measure of time, -.\" Proc IEEE 79, 7 (July 1991), 894-905. -.\" or -.\" .q ++ -.\" if two seconds were added -.\" or -.\" .q -- -.\" if two seconds were skipped. -\fBYEAR\fP, \fBMONTH\fP, \fBDAY\fP, \fBHH:MM:SS\fP は閏秒の生じた瞬間を示す。 \fBCORR\fP -フィールドには、秒が挿入された場合 -.q + -を、秒がスキップされた場合 -.q \- -を指定する。 \fBR/S\fP -フィールドには、他のフィールドが記述している閏秒の時刻が UTC ならば -.q Stationary -(あるいはその短縮形) -を、ローカルな壁時計時刻なら -.q Rolling -(あるいはその短縮形) を指定する。 -.SH ファイル -/usr/local/etc/zoneinfo 生成されたファイル用の標準ディレクトリ -.SH 注意 -二つ以上のローカルタイムを持っている地域では、 ローカルな標準時を 最も早い方の時刻変換ルールの \fBAT\fP -フィールドに用いる必要があるだろう。さもないと コンパイルされたファイルに記録された最も早い変換時刻が 正しいことが保証されない。 -.SH 関連項目 -.\" @(#)zic.8 7.19 -\fBtzfile\fP(5), \fBzdump\fP(8) -.SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 -- 2.11.0