linux创建进程后,进程的pid如何分配,最好说出具体函数

linux创建进程后,进程的pid如何分配,最好说出具体函数,第1张

你用了pthread库,在链接的时候要加上
gcc -lpthread 1c -o 1
即可
进程(对应pid==0语句)调用pthread接口创建线程,在县城内将value赋值5,然后打印 CHILD: value=%d\n 此时value = 5
父进程 (对应 pid > 0 语句),等待子进程执行完成后(wait语句),打印PARENT: value=%d\n ,此时value = 0
对于你补充问题的回答:
线程是在子进程里创建的,它只改变了子进程的value (子进程和父进程的value处在不同的地址空间,互相没有关系,而子进程和它所创建的线程是在同一地址空间,所以线程可以改变子进程的value), 父进程没有创建线程,因此它的值不会被改变。

pid = fork(); //创建进程命令点
if(pid < 0){} //pid<0,表示fork出错,程序一般会退出,不会出现pid=0和pid>0的情况
else if(0 == pid){} //从这个点开始,程序出现分支 pid=0表示fork出来的子进程分支
else{} //否则是原进程,即父进程
printf("here!"); //如果在上面两个进程都没有exit() *** 作时,执行完{}中的命令,都会走到这里
关于fork出来的父子进程关系,请仔细阅读linux高级编程中进程一章节,内容很多,细细的阅读并练习体会吧

在子进程的虚拟地址空间里加载新的映像,需要使用系统提供的一系列函数
ff35e3820794f8ed5abf1246cb21a832png
他们的作用都是执行一个文件,当我们创建了一个进程之后,通常将子进程替换成新的进程映象,这可以用exec系列的函数来进行。当然,exec系列的函数也可以将当前进程替换掉。例如:在shell命令行执行ps命令,实际上是shell进程调用fork复制一个新的子进程,在利用exec系统调用将新产生的子进程完全替换成ps进程。
exec系列函数(execl、execlp、execle、execv、execvp)包含头文件
功能:
用exec函数可以把当前进程替换为一个新进程,且新进程与原进程有相同的PID。exec名下是由多个关联函数组成的一个完整系列,


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

原文地址: http://outofmemory.cn/yw/12741647.html

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

发表评论

登录后才能评论

评论列表(0条)

保存