プロが教えるわが家の防犯対策術!

Ubuntu LinuxでTCPクライアント通信を行うプログラムをgccで作成しています。
現在、特定のサーバーに対して接続して数十秒ごとに1kバイト程度のパケットを送信するプログラムを1つ作りました。

その後、キーボードのキー入力に応じて、そのキー操作のログテキストファイルを出力プログラムも作りました。


それぞれのプログラムをgccでコンパイルして2つの実行ファイルが作成されました。
キー操作のログテキストファイルをの内容に応じてTCP通信側のプログラムが送信するパケットの内容を変えたいと思っているのですが、この場合片方の実行ファイルを起動した場合に、もう一つの実行ファイルも起動するようにするにはどうしたら良いかご教示頂けないでしょうか?


どうぞ、よろしくお願い致します。

A 回答 (2件)

>この場合片方の実行ファイルを起動した場合に、もう一つの実行ファイルも起動するようにするにはどうしたら



両方のプログラムを起動するシェルスクリプトを作成する。
ってところでしょうかね。

まぁ、それぞれのプログラムを起動させるプログラムを作る。
という方法もあるでしょうが。

なお、バックグラウンドで動作させるようにしないと、起動したプログラムが終了するまで次のプログラムが起動しない。
なんてコトになるのでご注意を。

ユーザーからの操作が必要っぽいので、「TCPクライアント通信を行うプログラム」とやらをバックグラウンドで起動、続けて「キー操作のログテキストファイルを出力プログラム」をフォアグラウンドで実行となるでしょうね。
# バックグラウンドで動作しているプログラムをどうやって終了させるか。
# というのもあらかじめ調べておきましょう。

あとは……
>ログテキストファイルをの内容に応じてTCP通信側のプログラムが送信するパケットの内容を変えたいと思っている
ファイルのオープン時の共有や排他制御とかには注意ですかねぇ。
片方が書き込んで、もう片方がちゃんと読めるか?とか…。
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。その後、いろいろと複数タスクを動作させていくようなやり方をいろいろと調べてみたところ、実行ファイルを複数動作させるというやり方というのとスレッドというやり方forkというやりかたなどなどがあることがわかってきました。現在自分はソースコードなどを自由に編集したり作ったりすることができるのでスレッドでのプログラミングがやってみたいと感じてきました。複数実行ファイル起動というのもシェルスクリプトっていうバッチみたいな物を活用することでできるのですね。ただ、ファイルの排他制御というのはかなり課題になるのですね。

詳細頂きありがとうございました。シェルスクリプトでの複数実行は今後やってみたいです。

お礼日時:2014/05/18 16:01

No1が言うとおり、、2個起動した時、


最初に起動したほうをどうやって終わるか?は
ありますね。
ps axでプロセス探してkill するとか?

アプリの起動自体は
./recv & < &で強制起動
./send こっちは&つけずそのまま、クライアントからの入力待ち。。
が、ごっちゃごっちゃ(w)

他のPCから、アクセスしているのであれば、
コンソールを2個まともに開いちゃえば、画面に直接だせてテストしやすいかもですが。
受け側がprintf 出来るので、かなりデバッグが楽です。
ですが、1つのコンソールでやってるんですよね?

<過去に似た事やった事があったんですが、忘れました。
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。その後、いろいろと複数タスクを動作させていくようなやり方をいろいろと調べてみたところ、実行ファイルを複数動作させるというやり方というのとスレッドというやり方forkというやりかたなどなどがあることがわかってきました。現在自分はソースコードなどを自由に編集したり作ったりすることができるのでスレッドでのプログラミングがやってみたいと感じてきました。複数実行ファイル起動というのもシェルスクリプトっていうバッチみたいな物を活用することでできるのですね。ただ、ファイルの排他制御というのはかなり課題になるのですね。

詳細頂きありがとうございました。シェルスクリプトでの複数実行は今後やってみたいです。

お礼日時:2014/05/18 16:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!