在Unix-like系统中,子进程可以通过向父进程发送信号来与父进程通信。以下是一个基本的示例,展示了如何在Python中使用`os`和`signal`模块来实现这一功能。
我们需要创建一个父进程和一个子进程。在子进程中,我们可以使用`signal`模块来发送信号。在父进程中,我们可以设置信号处理函数来接收和处理子进程发送的信号。
以下是一个简单的示例代码:
```python
import os
import signal
import time
定义一个信号处理函数
def signal_handler(signum, frame):
print("父进程收到信号", signum)
设置信号处理函数
signal.signal(signal.SIGUSR1, signal_handler)
创建子进程
pid = os.fork()
if pid > 0:
父进程
print("父进程 ID:", os.getpid())
print("父进程等待子进程发送信号...")
time.sleep(5) 等待一段时间
else:
子进程
print("子进程 ID:", os.getpid())
print("子进程发送信号 SIGUSR1...")
os.kill(os.getppid(), signal.SIGUSR1) 向父进程发送信号 SIGUSR1
time.sleep(2) 等待一段时间
os._exit(0) 子进程退出
```
在这个示例中,父进程设置了信号处理函数`signal_handler`来接收信号`SIGUSR1`。然后,父进程通过`os.fork()`创建了一个子进程。子进程发送了一个`SIGUSR1`信号给父进程,父进程通过信号处理函数接收到了这个信号。
请确保你的Python环境已经安装了`signal`模块,并且你的系统支持`SIGUSR1`信号。这个示例代码仅适用于Unix-like系统。