关于流程和信号的概念问题

时间:2015-06-10 22:33:04

标签: c++ c process signals

我正在学习系统编程的最后一课,我有一些我无法回答的问题。

  1. 假设父进程分叉创建大对象的子进程。孩子可以使用信号很容易地将这个对象传回父母吗?

  2. 父进程分离子进程,子进程继续运行相同的程序。父进程是给fork之前创建的子进程写入单独文件并将其提供给子进程的最佳方法吗? (这个我认为这不是一个好方法,因为孩子仍然会分享一些父母的数据,包括所说的数据结构)

  3. 让我们假设您编写了一个程序来测量速度 人的手指是通过捕获SIGINT然后要求他们按下 Ctrl-C尽可能快。 SIGINT信号处理程序递增a 每次键入Ctrl-C时都会显示全局计数器。经过一段预定义的时间后 停止并打印全局计数器除以使用的时间。 这个程序的基本问题是什么?

  4. 感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

对你的问题进行一些快速思考;

  1. 不,信号不适合传输数据。信号涉及很多开销,并且没有非常有效地排队。
  2. 有许多IPC方法可供使用。 UNIX最常用的两个是套接字和共享内存(例如,参见shm)。与不受信任的应用程序交谈时,套接字通常更好。在您分支应用程序的示例中,管道也适用。
  3. 只要你能比进入中途更快地处理中断,你就可以了。可能在您的ctrl-c示例中,您可以使用poll和fcntl(在UNIX上)执行相同的操作,并且您可能会获得更好的精度。