linux下system函数调用shell命令后,怎样让主进程等子进程返回后,接着执行

linux下system函数调用shell命令后,怎样让主进程等子进程返回后,接着执行,第1张

这是进程间同步的问题。解决方法是:fork一个子进程执行system调用,父进程调用 wait 或 waitpid 等待子进程的终止信息。

父进程调用 wait 或 waitpid 时可能会:

• 阻塞(如果它的所有子进程都还在运行)。

• 带子进程的终止信息立即返回(如果一个子进程已终止,正等待父进程读取其终止信息)。

• 出错立即返回(如果它没有任何子进程)。

wait 和 waitpid 这两个函数的区别是:

• 如果父进程的所有子进程都还在运行,调用wait将使父进程阻塞,而调用waitpid时如果在options参数中指定WNOHANG可以使父进程不阻塞而立即返回0。

• wait等待第一个终止的子进程,而waitpid可以通过pid参数指定等待哪一个子进程。

pid=fork()

如果是子进程 , pid = 0

如果是父进程 , pid = 子进程的 ID ,大于 0

根据 pid 的值 ,就可以判断了

怎么说呢,这个不能直接返回,子进程单单通过返回值是不能传递任何信息的,如果你想让子进程和父进程之间通信的话可以考虑是用管道,本地套接字和动态存储区mmap(),这样才能够达到通信目的,推荐你看APUE这本书,对你会很有帮助


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

原文地址:https://54852.com/yw/7583005.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存