fork函数使用方法?iferror函数的使用方法
大家好,今天小编来为大家解答fork函数使用方法这个问题,iferror函数的使用方法很多人还不知道,现在让我们一起来看看吧!
c/c++ 多进程 fork函数
fork()函数会有两个返回值,在主进程会返回子进程的pid,在子进程会返回0,所以,如果判断返回值大于0,即是在主进程。
第一个是主进程子进程执行完全一样的代码,fork一个子进程,所以会输出4个hello。
第二个在第一次fork完毕后只有主进程会fork一个子进程,所以会输出3个hello。
linux fork进程怎么调试
如果你想跟踪子进程进行调试,可以使用set follow-fork-mode mode来设置fork跟随模式。
set follow-fork-mode所带的mode参数可以是以下的一种:
parent
gdb只跟踪父进程,不跟踪子进程,这是默认的模式。
child
gdb在子进程产生以后只跟踪子进程,放弃对父进程的跟踪。
进入gdb以后,我们可以使用show follow-fork-mode来查看目前的跟踪模式。
可以看到目前使用的模式是parent。
然而,有的时候,我们想同时调试父进程和子进程,以上的方法就不能满足了。Linux提供了set detach-on-fork mode命令来供我们使用。其使用的mode可以是以下的一种:
on
只调试父进程或子进程的其中一个(根据follow-fork-mode来决定),这是默认的模式。
off
父子进程都在gdb的控制之下,其中一个进程正常调试(根据follow-fork-mode来决定)
另一个进程会被设置为暂停状态。
同样,show detach-on-fork显示了目前是的detach-on-fork模式,如上图。
以上是调试fork产生子进程的情况,但是如果子进程使用exec系统函数而装载了新程序执行呢?——我们使用set follow-exec-mode mode提供的模式来跟踪这个exec装载的程序。mode可以是以下的一种:
new当发生exec的时候,如果这个选项是new,则新建一个inferior给执行起来的子进程,而父进程的inferior仍然保留,当前保留的inferior的程序状态是没有执行。
same当发生exec的时候,如果这个选项是same(默认值),因为父进程已经退出,所以自动在执行exec的inferior上控制子进程。
好了,文章到此结束,希望可以帮助到大家。