go-signal - 課題
プロジェクト概要
go-signal は、UNIX シグナルを使用したプロセス間通信を実装する課題です。minitalk に相当する Go 版として、シグナルハンドリングとビット操作を学びます。
提出ファイル
go-signal/
├── go.mod
├── cmd/
│ ├── server/
│ │ └── main.go # サーバープログラム
│ └── client/
│ └── main.go # クライアントプログラム
└── signal/
└── signal.go # 共通ライブラリ
マンダトリー要件
サーバー
// サーバーは起動時にPIDを表示
// SIGUSR1 と SIGUSR2 を受信してメッセージを再構築
// メッセージ完了後に確認シグナルを送信
クライアント
// クライアントは指定されたPIDにメッセージを送信
// 各文字をビット単位でシグナルに変換
// SIGUSR1 = 0, SIGUSR2 = 1
使用例
# サーバー起動
$ ./server
Server PID: 12345
# クライアントからメッセージ送信
$ ./client 12345 "Hello, World!"
# サーバー側に表示
Hello, World!
ボーナス要件
- Unicode サポート
- 双方向通信
- メッセージの確認応答(ACK)
syscall.Kill以外のシグナル送信方法- グローバル変数の過度な使用