linux系统多用户启动进程

linux系统多用户启动进程,第1张

一般linux系统上,使用fork来启动多进程

以实际代码解答

#include<unistd.h>

#include<stdio.h>

int main(int argc, char ** argv )

{

int pid = fork()

if (pid <0)

{

printf("error!")

}

else if( pid == 0 )

{

printf("This is the child process!")//此处就是子进程执行

}

else{

printf("This is the parent process! child process id = %d", pid)//此处是父进程.

}

return 0

}

fork 函数的特点就是一次调用,两次返回。并且返回给子进程和父进程的返回值不同,对于子进程返回为0,对于父进程返回为子进程的PID号

系统调用fork后进程就分叉了。

LINUX中进程的最大理论数计算:

每个进程的局部段描述表LDT都作为一个独立的段而存在,在全局段描述表GDT中要有一个表项指向这个段的起始地址,并说明该段的长度以及其他一些 参数。除上之外,每个进程还有一个TSS结构(任务状态段)也是一样。所以,每个进程都要在全局段描述表GDT中占据两个表项。那么,GDT的容量有多大 呢?段寄存器中用作GDT表下标的位段宽度是13位,所以GDT中可以有8192个描述项。除一些系统的开销(例如GDT中的第2项和第3项分别用于内核 的代码段和数据段,第4项和第5项永远用于当前进程的代码段和数据段,第1项永远是0,等等)以外,尚有8180个表项可供使用,所以理论上系统中最大的 进程数量是4090。

现在一般能打开64个。

文件描述符的范围是0 ~ O P E N _ M A X 。早期的U N I X版本采用的上限值是1 9 (允许每个进程打开2 0个文件),现在很多系统则将其增加至6 3。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8317672.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存