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 以外のシグナル送信方法
  • グローバル変数の過度な使用