Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
freeBSD unix中的fork_Unix_Process_Freebsd - Fatal编程技术网

freeBSD unix中的fork

freeBSD unix中的fork,unix,process,freebsd,Unix,Process,Freebsd,fork系统调用是否为子进程分配新的用户结构?它是否为子进程分配新的进程结构。 但是为什么子进程中的lseek会影响父进程呢?每个进程打开的文件中的当前指针等信息不都是在用户结构中维护的吗?这两者都是不同的?谢谢。手册页确切地说,孩子只得到描述符的一个新副本(小整数值)。这些描述符通常是包含文件信息的内核表的数组索引(“相同的底层对象”)。如果孩子想要一个独立的文件指针,他必须通过再次打开文件来创建这样一个对象。 DESCRIPTION The fork() system call

fork系统调用是否为子进程分配新的用户结构?它是否为子进程分配新的进程结构。


但是为什么子进程中的lseek会影响父进程呢?每个进程打开的文件中的当前指针等信息不都是在用户结构中维护的吗?这两者都是不同的?谢谢。手册页确切地说,孩子只得到描述符的一个新副本(小整数值)。这些描述符通常是包含文件信息的内核表的数组索引(“相同的底层对象”)。如果孩子想要一个独立的文件指针,他必须通过再次打开文件来创建这样一个对象。
DESCRIPTION
     The fork() system call causes creation of a new process.  The new process
     (child process) is an exact copy of the calling process (parent process)
     except for the following:

       +o   The child process has a unique process ID.

       +o   The child process has a different parent process ID (i.e., the
           process ID of the parent process).

       +o   The child process has its own copy of the parent's descriptors.
           These descriptors reference the same underlying objects, so
           that, for instance, file pointers in file objects are shared
           between the child and the parent, so that an lseek(2) on a
           descriptor in the child process can affect a subsequent read(2)
           or write(2) by the parent.  This descriptor copying is also
           used by the shell to establish standard input and output for
           newly created processes as well as to set up pipes.

       +o   The child process' resource utilizations are set to 0; see
           setrlimit(2).

       +o   All interval timers are cleared; see setitimer(2).