父子进程之间的关系:
区别:
1.fork()函数的返回值不同
父进程中:>0 返回的子进程的ID
子进程中:=0
2.pcb中的一些数据
当前的进程的id pid
当前的进程的父进程的id ppid信号集
共同点:
某些状态下:子进程刚被创建出来,还没有执行任何的写数据的操作
-用户区的数据
-文件描述符表
父子进程对变量是不是共享的?
-刚开始的时候,是一样的,共享的。如果修改了数据,不共享了。
-读时共享(子进程被创建,两个进程没有做任何的写的操作),写时拷贝
GDB多进程调试
设置调试父进程或者子进程
show follow-fork-mode
set follow-fork-mode child
设置调试模式
show detach-on-fork
set detach-on-fork [on|off]
默认为on,表示调试当前进程的时候,其它的进程继续运行,如果为off,调试当前进程的时候,其它进程被GDB挂起
查看调试的进程 info inferiors
切换当前调试的进程 inferior id
使进程脱离GDB调试 detach inferiors id
exec函数族
exec函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件。
exec函数族的函数执行成功后不会返回,调用失败了,会返回-1