名称: fork
作用: 创建进程
文件: #include <unistd.h>
定义: pid_t fork(void);
说明: fork()会产生一个新的子进程,其子进程会复制父进程的数据与堆栈空间,并继承 父进程的用户代码,组代码,环境变量、已打开的文件代码、工作目录和资源限制等。Linux 使用copy-on-write(COW)技术,只有当其中一进程试图修改欲复制的空间时才会做真正的复制动作,由于这些继承的信息是复制而来,并非指相 同的内存空间,因此子进程对这些变量的修改和父进程并不会同步。此外,子进程不会继承父进程的文件锁定和未处理的信号。注意,Linux不保证子进程会比 父进程先执行或晚执行,因此编写程序时要留意死锁或竞争条件的发生.
返回: 如果fork()成功则在父进程会返回新建立的子进程代码(PID),而在新建立的子进程中则返回0。如果fork 失败则直接返回-1,失败原因存于errno中.
错误: EAGAIN 内存不足。ENOMEM 内存不足,无法配置核心所需的数据结构空间.
代码:
pid_t pid;
pid = fork()
if (pid == 0)
{
/* Child Process */
}
else if (pid > 0)
{
/* Parent Process */
}
else
{
/* Fork Error */
}
作用: 创建进程
文件: #include <unistd.h>
定义: pid_t fork(void);
说明: fork()会产生一个新的子进程,其子进程会复制父进程的数据与堆栈空间,并继承 父进程的用户代码,组代码,环境变量、已打开的文件代码、工作目录和资源限制等。Linux 使用copy-on-write(COW)技术,只有当其中一进程试图修改欲复制的空间时才会做真正的复制动作,由于这些继承的信息是复制而来,并非指相 同的内存空间,因此子进程对这些变量的修改和父进程并不会同步。此外,子进程不会继承父进程的文件锁定和未处理的信号。注意,Linux不保证子进程会比 父进程先执行或晚执行,因此编写程序时要留意死锁或竞争条件的发生.
返回: 如果fork()成功则在父进程会返回新建立的子进程代码(PID),而在新建立的子进程中则返回0。如果fork 失败则直接返回-1,失败原因存于errno中.
错误: EAGAIN 内存不足。ENOMEM 内存不足,无法配置核心所需的数据结构空间.
代码:
pid_t pid;
pid = fork()
if (pid == 0)
{
/* Child Process */
}
else if (pid > 0)
{
/* Parent Process */
}
else
{
/* Fork Error */
}