# 1. client
```python
# 客户端代码
import subprocess
import json

# 启动服务器进程（创建两个管道）
process = subprocess.Popen(
    ['python', 'server.py'],
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    text=True
)

# 发送请求（写入stdin管道）
request = {"jsonrpc": "2.0", "method": "tools/list", "id": 1}
process.stdin.write(json.dumps(request) + '\n')
process.stdin.flush()

# 接收响应（读取stdout管道）
response_line = process.stdout.readline()
response = json.loads(response_line)
print(response)
```
# 2. server
```python
# 服务器代码
import sys
import json

def handle_request(request):
    # 简单返回一个工具列表作为示例
    if request.get("method") == "tools/list":
        return ["tool1", "tool2"]
    return None

# 接收请求（读取stdin管道）
request_line = sys.stdin.readline()
request = json.loads(request_line)

# 处理请求
result = handle_request(request)

# 发送响应（写入stdout管道）
response = {
    "jsonrpc": "2.0",
    "result": result,
    "id": request.get("id")
}
sys.stdout.write(json.dumps(response) + '\n')
sys.stdout.flush()
```
# 3. ouput
```
{'jsonrpc': '2.0', 'result': ['tool1', 'tool2'], 'id': 1}
```
数据直接在内存中的管道缓冲区传输
```
服务器进程                    客户端进程
    ↓                           ↑
print("data")              readline()
    ↓                           ↑
stdout buffer    →    pipe buffer    →    stdin buffer
 (进程内存)        (内核空间)        (进程内存)
```
