fork(2): create child process - Linux man page https://linux.die.net/man/2/fork

fork(2) - Linux man page

Name

fork - create a child process

Synopsis

#include <unistd.h>

pid_t fork(void);

Description

 

fork() creates a new process by duplicating the calling process. The new process, referred to as the child, is an exact duplicate of the calling process, referred to as the parent, except for the following points:

*
The child has its own unique process ID, and this PID does not match the ID of any existing process group (setpgid(2)).
*
The child's parent process ID is the same as the parent's process ID.
*
The child does not inherit its parent's memory locks (mlock(2)mlockall(2)).
*
Process resource utilizations (getrusage(2)) and CPU time counters (times(2)) are reset to zero in the child.
*
The child's set of pending signals is initially empty (sigpending(2)).
*
The child does not inherit semaphore adjustments from its parent (semop(2)).
*
The child does not inherit record locks from its parent (fcntl(2)).
*
The child does not inherit timers from its parent (setitimer(2)alarm(2)timer_create(2)).
*
The child does not inherit outstanding asynchronous I/O operations from its parent (aio_read(3)aio_write(3)), nor does it inherit any asynchronous I/O contexts from its parent (see io_setup(2)).

The process attributes in the preceding list are all specified in POSIX.1-2001. The parent and child also differ with respect to the following Linux-specific process attributes:

*
The child does not inherit directory change notifications (dnotify) from its parent (see the description of F_NOTIFY in fcntl(2)).
*
The prctl(2) PR_SET_PDEATHSIG setting is reset so that the child does not receive a signal when its parent terminates.
*
The default timer slack value is set to the parent's current timer slack value. See the description of PR_SET_TIMERSLACK in prctl(2).
*
Memory mappings that have been marked with the madvise(2) MADV_DONTFORK flag are not inherited across a fork().
*
The termination signal of the child is always SIGCHLD (see clone(2)).
*
The port access permission bits set by ioperm(2) are not inherited by the child; the child must turn on any bits that it requires using ioperm(2).

Note the following further points:

*
The child process is created with a single thread--the one that called fork(). The entire virtual address space of the parent is replicated in the child, including the states of mutexes, condition variables, and other pthreads objects; the use of pthread_atfork(3) may be helpful for dealing with problems that this can cause.
*
The child inherits copies of the parent's set of open file descriptors. Each file descriptor in the child refers to the same open file description (see open(2)) as the corresponding file descriptor in the parent. This means that the two descriptors share open file status flags, current file offset, and signal-driven I/O attributes (see the description of F_SETOWN and F_SETSIG in fcntl(2)).
*
The child inherits copies of the parent's set of open message queue descriptors (see mq_overview(7)). Each descriptor in the child refers to the same open message queue description as the corresponding descriptor in the parent. This means that the two descriptors share the same flags (mq_flags).
*
The child inherits copies of the parent's set of open directory streams (see opendir(3)). POSIX.1-2001 says that the corresponding directory streams in the parent and child may share the directory stream positioning; on Linux/glibc they do not.

Return Value

On success, the PID of the child process is returned in the parent, and 0 is returned in the child. On failure, -1 is returned in the parent, no child process is created, and errno is set appropriately.

Errors

EAGAIN
fork() cannot allocate sufficient memory to copy the parent's page tables and allocate a task structure for the child.
EAGAIN
It was not possible to create a new process because the caller's RLIMIT_NPROC resource limit was encountered. To exceed this limit, the process must have either the CAP_SYS_ADMIN or the CAP_SYS_RESOURCE capability.
ENOMEM
fork() failed to allocate the necessary kernel structures because memory is tight.
ENOSYS
fork() is not supported on this platform (for example, hardware without a Memory-Management Unit).

Conforming to

SVr4, 4.3BSD, POSIX.1-2001.

Notes

Under Linux, fork() is implemented using copy-on-write pages, so the only penalty that it incurs is the time and memory required to duplicate the parent's page tables, and to create a unique task structure for the child.

Since version 2.3.3, rather than invoking the kernel's fork() system call, the glibc fork() wrapper that is provided as part of the NPTL threading implementation invokes clone(2) with flags that provide the same effect as the traditional system call. (A call to fork() is equivalent to a call to clone(2) specifying flags as just SIGCHLD.) The glibc wrapper invokes any fork handlers that have been established using pthread_atfork(3).

Example

See pipe(2) and wait(2).

See Also

clone(2)execve(2)exit(2)setrlimit(2)unshare(2)vfork(2)wait(2)daemon(3)capabilities(7),credentials(7)

Referenced By

atexit(3), chdir(2), chroot(2), collectd-exec(5), core(5), cpuset(7), csh(1), dbpmda(1), dc_client(1),dc_ctx_new(2), dkim-filter(8), dkim-filter.conf(5), epic(1), epoll(7), eventfd(2), exec(3), explain(1),explain(3), explain_fork(3), explain_fork_or_die(3), faxq(8), fetchnews(8), fio(1), flock(2),forkpty(3), getitimer(2), getpid(2), getrlimit(2), gettid(2), halockrun(1), hylafax-log(5),ibv_fork_init(3), inn.conf(5), iopl(2), iv_signal(3), ksh93(1), lseek(2), ltrace(1), mmap(2), mount(2),mpadvise(3), nice(2), on_exit(3), opendkim(8), opendkim.conf(5), pam_end(3), perlfunc(1),pipe(7), pmcd(1), popen(3), proc(5), pth(3), pthreads(7), ptrace(2), sched_getaffinity(2),sched_setscheduler(2), sec(1), select_tut(2), sem_init(3), set_mempolicy(2), setns(2), setpgrp(2),setpriority(2), setsid(2), shmat(2), sigaction(2), sigaltstack(2), signal(7), signalfd(2),sigprocmask(2), smartd(8), smartd.conf(5), strace(1), sudo(8), syslogd(8), system(3),timerfd_create(2), umask(2), wait4(2), xargs(1)

 
 

pid 22288  通过

cmd_ = 'python {}{}{} {} {} '.format(this_file_abs_path, os.sep, py, dateFrom, dateEnd)

产生 pid 4422

[root@d Polly]# cat /proc/version
Linux version 3.10.0-123.9.3.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Thu Nov 6 15:06:03 UTC 2014
[root@d Polly]# tree /proc/22288/
/proc/22288/
├── attr
│   ├── current
│   ├── exec
│   ├── fscreate
│   ├── keycreate
│   ├── prev
│   └── sockcreate
├── autogroup
├── auxv
├── cgroup
├── clear_refs
├── cmdline
├── comm
├── coredump_filter
├── cpuset
├── cwd -> /data/mapReduceVisitorLog/mapReduceLogAUTO
├── environ
├── exe -> /root/anaconda3/bin/python3.5
├── fd
│   ├── 0 -> /dev/null
│   ├── 1 -> /data/mapReduceVisitorLog/mapReduceLogAUTO/nohup.out
│   └── 2 -> /data/mapReduceVisitorLog/mapReduceLogAUTO/nohup.out
├── fdinfo
│   ├── 0
│   ├── 1
│   └── 2
├── gid_map
├── io
├── limits
├── loginuid
├── maps
├── mem
├── mountinfo
├── mounts
├── mountstats
├── net
│   ├── anycast6
│   ├── arp
│   ├── connector
│   ├── dev
│   ├── dev_mcast
│   ├── dev_snmp6
│   │   ├── eth0
│   │   ├── eth1
│   │   └── lo
│   ├── fib_trie
│   ├── fib_triestat
│   ├── icmp
│   ├── if_inet6
│   ├── igmp
│   ├── igmp6
│   ├── ip6_flowlabel
│   ├── ip6_mr_cache
│   ├── ip6_mr_vif
│   ├── ip_mr_cache
│   ├── ip_mr_vif
│   ├── ip_tables_matches
│   ├── ip_tables_names
│   ├── ip_tables_targets
│   ├── ipv6_route
│   ├── mcfilter
│   ├── mcfilter6
│   ├── netfilter
│   │   └── nf_log
│   ├── netlink
│   ├── netstat
│   ├── packet
│   ├── protocols
│   ├── psched
│   ├── ptype
│   ├── raw
│   ├── raw6
│   ├── route
│   ├── rpc
│   │   ├── auth.unix.gid
│   │   │   ├── channel
│   │   │   ├── content
│   │   │   └── flush
│   │   └── auth.unix.ip
│   │   ├── channel
│   │   ├── content
│   │   └── flush
│   ├── rt6_stats
│   ├── rt_acct
│   ├── rt_cache
│   ├── snmp
│   ├── snmp6
│   ├── sockstat
│   ├── sockstat6
│   ├── softnet_stat
│   ├── stat
│   │   ├── arp_cache
│   │   ├── ndisc_cache
│   │   └── rt_cache
│   ├── tcp
│   ├── tcp6
│   ├── udp
│   ├── udp6
│   ├── udplite
│   ├── udplite6
│   ├── unix
│   ├── wireless
│   └── xfrm_stat
├── ns
│   ├── ipc -> ipc:[4026531839]
│   ├── mnt -> mnt:[4026531840]
│   ├── net -> net:[4026531956]
│   ├── pid -> pid:[4026531836]
│   └── uts -> uts:[4026531838]
├── numa_maps
├── oom_adj
├── oom_score
├── oom_score_adj
├── pagemap
├── personality
├── projid_map
├── root -> /
├── sched
├── sessionid
├── smaps
├── stack
├── stat
├── statm
├── status
├── syscall
├── task
│   └── 22288
│   ├── attr
│   │   ├── current
│   │   ├── exec
│   │   ├── fscreate
│   │   ├── keycreate
│   │   ├── prev
│   │   └── sockcreate
│   ├── auxv
│   ├── cgroup
│   ├── clear_refs
│   ├── cmdline
│   ├── comm
│   ├── cpuset
│   ├── cwd -> /data/mapReduceVisitorLog/mapReduceLogAUTO
│   ├── environ
│   ├── exe -> /root/anaconda3/bin/python3.5
│   ├── fd
│   │   ├── 0 -> /dev/null
│   │   ├── 1 -> /data/mapReduceVisitorLog/mapReduceLogAUTO/nohup.out
│   │   └── 2 -> /data/mapReduceVisitorLog/mapReduceLogAUTO/nohup.out
│   ├── fdinfo
│   │   ├── 0
│   │   ├── 1
│   │   └── 2
│   ├── gid_map
│   ├── io
│   ├── limits
│   ├── loginuid
│   ├── maps
│   ├── mem
│   ├── mountinfo
│   ├── mounts
│   ├── ns
│   │   ├── ipc -> ipc:[4026531839]
│   │   ├── mnt -> mnt:[4026531840]
│   │   ├── net -> net:[4026531956]
│   │   ├── pid -> pid:[4026531836]
│   │   └── uts -> uts:[4026531838]
│   ├── numa_maps
│   ├── oom_adj
│   ├── oom_score
│   ├── oom_score_adj
│   ├── pagemap
│   ├── personality
│   ├── projid_map
│   ├── root -> /
│   ├── sched
│   ├── sessionid
│   ├── smaps
│   ├── stack
│   ├── stat
│   ├── statm
│   ├── status
│   ├── syscall
│   ├── uid_map
│   └── wchan
├── uid_map
└── wchan

21 directories, 164 files
[root@d Polly]#

注意  pid -> pid:[4026531836]

[root@d Polly]# tree /proc/4422
/proc/4422
├── attr
│   ├── current
│   ├── exec
│   ├── fscreate
│   ├── keycreate
│   ├── prev
│   └── sockcreate
├── autogroup
├── auxv
├── cgroup
├── clear_refs
├── cmdline
├── comm
├── coredump_filter
├── cpuset
├── cwd -> /data/mapReduceVisitorLog/mapReduceLogAUTO
├── environ
├── exe -> /root/anaconda3/bin/python3.5
├── fd
│   ├── 0 -> /dev/null
│   ├── 1 -> /data/mapReduceVisitorLog/mapReduceLogAUTO/nohup.out
│   ├── 2 -> /data/mapReduceVisitorLog/mapReduceLogAUTO/nohup.out
│   └── 3 -> /data/mapReduceVisitorLog/a/visit-2018-12-12
├── fdinfo
│   ├── 0
│   ├── 1
│   ├── 2
│   └── 3
├── gid_map
├── io
├── limits
├── loginuid
├── maps
├── mem
├── mountinfo
├── mounts
├── mountstats
├── net
│   ├── anycast6
│   ├── arp
│   ├── connector
│   ├── dev
│   ├── dev_mcast
│   ├── dev_snmp6
│   │   ├── eth0
│   │   ├── eth1
│   │   └── lo
│   ├── fib_trie
│   ├── fib_triestat
│   ├── icmp
│   ├── if_inet6
│   ├── igmp
│   ├── igmp6
│   ├── ip6_flowlabel
│   ├── ip6_mr_cache
│   ├── ip6_mr_vif
│   ├── ip_mr_cache
│   ├── ip_mr_vif
│   ├── ip_tables_matches
│   ├── ip_tables_names
│   ├── ip_tables_targets
│   ├── ipv6_route
│   ├── mcfilter
│   ├── mcfilter6
│   ├── netfilter
│   │   └── nf_log
│   ├── netlink
│   ├── netstat
│   ├── packet
│   ├── protocols
│   ├── psched
│   ├── ptype
│   ├── raw
│   ├── raw6
│   ├── route
│   ├── rpc
│   │   ├── auth.unix.gid
│   │   │   ├── channel
│   │   │   ├── content
│   │   │   └── flush
│   │   └── auth.unix.ip
│   │   ├── channel
│   │   ├── content
│   │   └── flush
│   ├── rt6_stats
│   ├── rt_acct
│   ├── rt_cache
│   ├── snmp
│   ├── snmp6
│   ├── sockstat
│   ├── sockstat6
│   ├── softnet_stat
│   ├── stat
│   │   ├── arp_cache
│   │   ├── ndisc_cache
│   │   └── rt_cache
│   ├── tcp
│   ├── tcp6
│   ├── udp
│   ├── udp6
│   ├── udplite
│   ├── udplite6
│   ├── unix
│   ├── wireless
│   └── xfrm_stat
├── ns
│   ├── ipc -> ipc:[4026531839]
│   ├── mnt -> mnt:[4026531840]
│   ├── net -> net:[4026531956]
│   ├── pid -> pid:[4026531836]
│   └── uts -> uts:[4026531838]
├── numa_maps
├── oom_adj
├── oom_score
├── oom_score_adj
├── pagemap
├── personality
├── projid_map
├── root -> /
├── sched
├── sessionid
├── smaps
├── stack
├── stat
├── statm
├── status
├── syscall
├── task
│   └── 4422
│   ├── attr
│   │   ├── current
│   │   ├── exec
│   │   ├── fscreate
│   │   ├── keycreate
│   │   ├── prev
│   │   └── sockcreate
│   ├── auxv
│   ├── cgroup
│   ├── clear_refs
│   ├── cmdline
│   ├── comm
│   ├── cpuset
│   ├── cwd -> /data/mapReduceVisitorLog/mapReduceLogAUTO
│   ├── environ
│   ├── exe -> /root/anaconda3/bin/python3.5
│   ├── fd
│   │   ├── 0 -> /dev/null
│   │   ├── 1 -> /data/mapReduceVisitorLog/mapReduceLogAUTO/nohup.out
│   │   ├── 2 -> /data/mapReduceVisitorLog/mapReduceLogAUTO/nohup.out
│   │   └── 3 -> /data/mapReduceVisitorLog/a/visit-2018-12-12
│   ├── fdinfo
│   │   ├── 0
│   │   ├── 1
│   │   ├── 2
│   │   └── 3
│   ├── gid_map
│   ├── io
│   ├── limits
│   ├── loginuid
│   ├── maps
│   ├── mem
│   ├── mountinfo
│   ├── mounts
│   ├── ns
│   │   ├── ipc -> ipc:[4026531839]
│   │   ├── mnt -> mnt:[4026531840]
│   │   ├── net -> net:[4026531956]
│   │   ├── pid -> pid:[4026531836]
│   │   └── uts -> uts:[4026531838]
│   ├── numa_maps
│   ├── oom_adj
│   ├── oom_score
│   ├── oom_score_adj
│   ├── pagemap
│   ├── personality
│   ├── projid_map
│   ├── root -> /
│   ├── sched
│   ├── sessionid
│   ├── smaps
│   ├── stack
│   ├── stat
│   ├── statm
│   ├── status
│   ├── syscall
│   ├── uid_map
│   └── wchan
├── uid_map
└── wchan

21 directories, 168 files
[root@d Polly]# tree /proc/22288
/proc/22288
├── attr
│   ├── current
│   ├── exec
│   ├── fscreate
│   ├── keycreate
│   ├── prev
│   └── sockcreate
├── autogroup
├── auxv
├── cgroup
├── clear_refs
├── cmdline
├── comm
├── coredump_filter
├── cpuset
├── cwd -> /data/mapReduceVisitorLog/mapReduceLogAUTO
├── environ
├── exe -> /root/anaconda3/bin/python3.5
├── fd
│   ├── 0 -> /dev/null
│   ├── 1 -> /data/mapReduceVisitorLog/mapReduceLogAUTO/nohup.out
│   └── 2 -> /data/mapReduceVisitorLog/mapReduceLogAUTO/nohup.out
├── fdinfo
│   ├── 0
│   ├── 1
│   └── 2
├── gid_map
├── io
├── limits
├── loginuid
├── maps
├── mem
├── mountinfo
├── mounts
├── mountstats
├── net
│   ├── anycast6
│   ├── arp
│   ├── connector
│   ├── dev
│   ├── dev_mcast
│   ├── dev_snmp6
│   │   ├── eth0
│   │   ├── eth1
│   │   └── lo
│   ├── fib_trie
│   ├── fib_triestat
│   ├── icmp
│   ├── if_inet6
│   ├── igmp
│   ├── igmp6
│   ├── ip6_flowlabel
│   ├── ip6_mr_cache
│   ├── ip6_mr_vif
│   ├── ip_mr_cache
│   ├── ip_mr_vif
│   ├── ip_tables_matches
│   ├── ip_tables_names
│   ├── ip_tables_targets
│   ├── ipv6_route
│   ├── mcfilter
│   ├── mcfilter6
│   ├── netfilter
│   │   └── nf_log
│   ├── netlink
│   ├── netstat
│   ├── packet
│   ├── protocols
│   ├── psched
│   ├── ptype
│   ├── raw
│   ├── raw6
│   ├── route
│   ├── rpc
│   │   ├── auth.unix.gid
│   │   │   ├── channel
│   │   │   ├── content
│   │   │   └── flush
│   │   └── auth.unix.ip
│   │   ├── channel
│   │   ├── content
│   │   └── flush
│   ├── rt6_stats
│   ├── rt_acct
│   ├── rt_cache
│   ├── snmp
│   ├── snmp6
│   ├── sockstat
│   ├── sockstat6
│   ├── softnet_stat
│   ├── stat
│   │   ├── arp_cache
│   │   ├── ndisc_cache
│   │   └── rt_cache
│   ├── tcp
│   ├── tcp6
│   ├── udp
│   ├── udp6
│   ├── udplite
│   ├── udplite6
│   ├── unix
│   ├── wireless
│   └── xfrm_stat
├── ns
│   ├── ipc -> ipc:[4026531839]
│   ├── mnt -> mnt:[4026531840]
│   ├── net -> net:[4026531956]
│   ├── pid -> pid:[4026531836]
│   └── uts -> uts:[4026531838]
├── numa_maps
├── oom_adj
├── oom_score
├── oom_score_adj
├── pagemap
├── personality
├── projid_map
├── root -> /
├── sched
├── sessionid
├── smaps
├── stack
├── stat
├── statm
├── status
├── syscall
├── task
│   └── 22288
│   ├── attr
│   │   ├── current
│   │   ├── exec
│   │   ├── fscreate
│   │   ├── keycreate
│   │   ├── prev
│   │   └── sockcreate
│   ├── auxv
│   ├── cgroup
│   ├── clear_refs
│   ├── cmdline
│   ├── comm
│   ├── cpuset
│   ├── cwd -> /data/mapReduceVisitorLog/mapReduceLogAUTO
│   ├── environ
│   ├── exe -> /root/anaconda3/bin/python3.5
│   ├── fd
│   │   ├── 0 -> /dev/null
│   │   ├── 1 -> /data/mapReduceVisitorLog/mapReduceLogAUTO/nohup.out
│   │   └── 2 -> /data/mapReduceVisitorLog/mapReduceLogAUTO/nohup.out
│   ├── fdinfo
│   │   ├── 0
│   │   ├── 1
│   │   └── 2
│   ├── gid_map
│   ├── io
│   ├── limits
│   ├── loginuid
│   ├── maps
│   ├── mem
│   ├── mountinfo
│   ├── mounts
│   ├── ns
│   │   ├── ipc -> ipc:[4026531839]
│   │   ├── mnt -> mnt:[4026531840]
│   │   ├── net -> net:[4026531956]
│   │   ├── pid -> pid:[4026531836]
│   │   └── uts -> uts:[4026531838]
│   ├── numa_maps
│   ├── oom_adj
│   ├── oom_score
│   ├── oom_score_adj
│   ├── pagemap
│   ├── personality
│   ├── projid_map
│   ├── root -> /
│   ├── sched
│   ├── sessionid
│   ├── smaps
│   ├── stack
│   ├── stat
│   ├── statm
│   ├── status
│   ├── syscall
│   ├── uid_map
│   └── wchan
├── uid_map
└── wchan

21 directories, 164 files
[root@d Polly]#

 

fork(2) - Linux man page的更多相关文章

  1. #include <sys/epoll.h> epoll - I/O event notification facility 服务器端 epoll(7) - Linux manual page http://www.man7.org/linux/man-pages/man7/epoll.7.html

    epoll使用详解(精髓) - Boblim - 博客园 https://www.cnblogs.com/fnlingnzb-learner/p/5835573.html epoll使用详解(精髓) ...

  2. mkbundle(1) - Linux man page

    mkbundle(1) - Linux man page Name mkbundle, mkbundle2 - Creates a bundled executable. Synopsis mkbun ...

  3. Linux - man page

    使用man date来查看date命令的详细信息. lucifer@lucifer-virtual-machine:~$ man date DATE(1) User Commands DATE(1) ...

  4. 1 多任务fork Unix/Linux/Mac

    # 注意,fork函数,只在Unix/Linux/Mac上运行,windows不可以 1.如下程序,来模拟“唱歌跳舞”这件事情 #-*- coding:utf-8 -*- import time de ...

  5. Linux的page cache使用情况/命中率查看和操控

    转载自宋宝华:https://blog.csdn.net/21cnbao/article/details/80458173 这里总结几个Linux文件缓存(page cache)使用情况.命中率查看的 ...

  6. dhcpd.conf(5) - Linux man page

    http://linux.die.net/man/5/dhcpd.conf Name dhcpd.conf - dhcpd configuration file Description   The d ...

  7. linux 排查page的状态问题

    最近遇到一个page的释放异常的问题,堆栈如下: [ 1000.691858] BUG: Bad page state in process server.o pfn:309d22 [ mapcoun ...

  8. 谨慎使用多线程中的fork 学习!!!!

    前言 在单核时代,大家所编写的程序都是单进程/单线程程序.随着计算机硬件技术的发展,进入了多核时代后,为了降低响应时间,重复充分利用多核cpu的资源,使用多进程编程的手段逐渐被人们接受和掌握.然而因为 ...

  9. CS:APP3e 深入理解计算机系统_3e ShellLab(tsh)实验

    详细的题目要求和资源可以到 http://csapp.cs.cmu.edu/3e/labs.html 或者 http://www.cs.cmu.edu/~./213/schedule.html 获取. ...

随机推荐

  1. (转)YUV420存储格式

    YUV格式有两大类:planar和packed.对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V.对于packed的YUV格式,每个像素点的Y,U ...

  2. 学习:erlang开源项目。

    一.RabbitMQ:AMQP消息服务器 . 二.ejabberd是的Jabber / XMPP协议的即时通讯服务器. 三.cowboy/mochiweb.

  3. postman从入门到精通

    今天总监让我给测试同事们培训postman,使用过postman的朋友应该知道,这个简直就是前后端接口调试神器.根据平时的经验以及自己到网上看了相关的帖子,对于postman又有了新的认识. post ...

  4. Tomcat 配置 项目 到tomcat目录外面 和 域名绑定访问(api接口、前端网站、后台管理网站)

    先停止tomcat服务 1.进入apache-tomcat-7.0.68/conf/Catalina/localhost(如果之前还都没有启动过tomcat,是不会有此目录的,先启动一次再关闭,会自动 ...

  5. mongodb php auto increment 自增

    mongodb的自增实现根oracle,postgresql是差不多,都是通过计数器来实现的. oracle自增实现: 实例说明oracle序列用法 postgresql自增实现: postgresq ...

  6. 提高Web性能的前端优化技巧总结

  7. VS------修改项目命名空间

    1.以文本形式打开此文件 2.修改一下部分 3.vs会自动提示,选择“放弃”即可

  8. 关于直播学习笔记-002-Red5 & Sewise Player & Wirecast

    一.工具软件 [1]. 视频采集端 Red5 Demo:http://192.168.31.107:5080/demos/simpleBroadcaster.html Telestream:Wirec ...

  9. url重写(urlrewrite)的一些系统变量

    学php也有3年了,一直对url重写不是很了解,本学用到的话都是百度一下,再复制作简单修改,一些变量的参数都不太了解什么意思,难得今天有时间,做个笔记吧! 1)可用的一些系统变量,在重写条件和重写规则 ...

  10. Nginx.conf 配置文件详细说明

    在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户user www-data;    #启动进程,通常设置成和cpu的数量相等worker_process ...