在fork()
之后,孩子将进行一些涉及一些函数调用和设置一些标志的比较。父母只是走到最后等待孩子。在一种情况下,我不希望父母等待孩子(在后台运行)。我认为问题是孩子设置标志的时间太长而且父母已经结束了。在父进程和子进程之后显示标志正确设置但父进程未正确读取。反正有没有阻止父母?
答案 0 :(得分:0)
你可以使用wait(2)使用孩子的pid来阻止父母,直到孩子终止。 正如Dipstick所说,如果没有必要创建一个新流程,一个线程会更好。线程使程序更复杂,但由于没有任务切换,因此比进程更有效(我猜是1000倍)。 考虑一下:Pthreads
答案 1 :(得分:0)
一旦你从父母那里分叉了一个孩子,他们就会变成具有自己地址空间的不同进程。因此,子项对变量所做的更改对父项是不可见的。
在这两个进程之间进行通信。您应该使用这些IPC机制中的任何一种。我相信shared memory方法最符合您的需求,因为子进程获取父内存页面的快照。