• 締切済み

他のコマンドの読み書き

こんにちは。よろしくお願いします。 自分のプログラムから他のコマンドにデーターを渡したり 受け取ったりするにはどうすればよいのでしょうか? popen()だと"r"か"w"しか指定できないので読み込みも書き込みも したい場合に困ってしまいます。 ご存知の方がいらっしゃいましたらご教授お願いいたします。 C言語でOSはLinuxです。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

一般論としては「pipe を作って fork & exec」でないかな?

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

プロセス間の関係が親子になっているのならば、 入力用と出力用の2つのパイプを作られてはいかがでしょうか? A→Bと、B→A用に2つ作り、各プロセスをつなげればできると思います。

全文を見る
すると、全ての回答が全文表示されます。
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

「他のコマンド」というのが、あなたが作ったプログラムならば、 ファイルにデータをかいて、それを読み書きすればよいかと思いますが、いかがでしょうか。 もし、「他のコマンド」というのが、そうではなく、一般的なコマンド「たとえば、ls,mv,cp等」であれば、「自分のプログラム」と「他のコマンド」とで、なにをしたいのかを、もっと具体的に、書いていただけると、良い回答が得られるかもしれません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • popen() について。

    Cのプログラムでpopen()を使って別のプログラムを実行したいのですが、popen("ABC","r")の"ABC"をプログラム実行者側で指定できるようにしたいのですが、可能でしょうか?? (例えば、実行時に引数をlsと指定すると、”ABC”がlsになってlsが実行される、のような) popen("Argv[1]","r")のようにしても上手くいきません。。 どなたかご教授お願いします。

  • OSのコマンドを呼び出すとき、CPUを最大限に使いたい

    OS(ディストリビューション)はUbuntu、言語はC++を用いています。 以下のプログラム: int main(void) { unsigned long int cnt_max=ULONG_MAX; for(unsigned long int i=2;i<=cnt_max;i++){ string str =":"; char c[1024]; strcpy( c, str.c_str() ); FILE *fp = popen(c, "r");・・・※ pclose(fp);・・・※ } } では、確かに実行したいこと(ここでは何もしませんが)が行われます。 ところが、topコマンドで見るとCPUを数%しか用いていません。 ※の部分を消すと、100%使いますので、 どうやらOSのコマンド(ここでは「:」)を実行するときには100%使ってくれないようです。 では、100%使ってくれるようにするにはどうしたらよいでしょうか?

  • cでunixコマンドってどう使うんですか?

    c言語でプログラムを書いているのですが、 ファイルを連結するためにunixコマンドのcutコマンドを使用したいんですが、どのようにしたら使用できますか。どうかご教授ください。

  • コマンドラインのログファイルの作成

    Linuxで次のようなプログラムを実現したいのですが どのようにしたらよいでしょうか? (1) シェル起動後、自動的に起動し (2) シェルで入出力されるコマンドラインを指定したファイルに自動的に追加書込みされ * 書込みについては、一行毎に入出力された時刻も同時に書込むものとします 詰まり、次のような記述で、書込みたいのです 入力 時刻 出力 時刻 ・・・ 入力 時刻 出力 時刻 といった感じの書式です (3) 追加書込みされるファイルが一定容量以上になると自動的に別ファイルを生成して、そのファイルに書込まれる これは、Perlなどのスクリプト言語で作るべきでしょうか? それとも、( 例えば、コマンドやリダイレクトだけで作ると言ったような ) もっと簡単な方法がありますでしょうか?

  • LinuxをCLIのコマンドを作るとは?

    すみません教えて頂きたいのですが、 OSはLinuxでCLIのコマンドを作るとはたいていの場合、 Cでコマンドを作るということでしょうか? それともCLIとはシェルのような物でしょうか よろしくお願いします。

  • sambaのsmbmount使用時のパスワード自動入力方法

    c言語でsambaのsmbmountを使用し、各クライアントの共有フォルダをmountし、linuxからでも閲覧するようなプログラムを作成しています。 現在、system()関数を使用し、smbmountまでは動作確認しているのですが、smbmount後のpasswordの自動入力のプログラム記述が分からない状況です。 popenやfopenなどの関数を使用してみましたが、問題は解消できませんでした。 すみませんが、ご教授よろしくお願いいたします。

  • コマンドプロンプトCのプログラムの作成

    すみません。現在小学六年生で、独学でプログラムを行っています。どうしてもわからないことがあるので、教えてください。 メモ帳で、Cのプログラムを作り、コマンドプロンプトに表示するということを行っています。 メモ帳にCのプログラムを、書き込むとこまではできるのですが、保存をすると、「このファイルを開けません」とでてきて、しかも、コマンドプロンプトに、「cd○○」と書き込む、と書いてあるのですが、そのとおりにやっても。「指定されたパスが見つかりません」とでて、そこから先、cのプログラムを作ることができません。どのようにしたらcのプログラムを作れるのでしょうか。 現在使用しているosは「windows7」で、インターネットエクスプローラー8.0です よろしくお願いします。

  • コマンド操作ができません。

    現在emacsを使ってプログラムを書いているのですが、C-spcで領域の指定ができません。これは何故なのでしょうか?領域を指定するのに別のコマンドがあるのでしょうか?

  • fopenで別ディレクトリにファイルをオープンしたい

     LinuxでC言語のプログラムを作っています。書き込みでファイルをオープンする際に、別のディレクトリにファイルを作成したいのです。しかし普通にターミナルの上でやるような指定の仕方だとうまくいきません。  以前にWindows環境でfopenの際のパス指定の質問があったみたいですが、Linuxではどのように指定したらいいでしょう…?よろしくお願いします。

  • C言語でアクセスデータベースのメモ型の読み書きをしたい。

    データベース初心者です。C言語(C++)でアクセスデータベースの読み書きをしていますが、メモ型の読み書き方法が判りません。アドバイスをお願いします。 アクセス方法は、ODBC-APIを使用して <書き込み時> SQLPrepare SQLBindParameter SQLExecute <読み込み時> SQLExecDirect SQLBindCol SQLFetch の手順で行っています。 教えて欲しい内容 1.メモ型の場合、BIND時のフィールド形式指定は、何を使用するのでしょうか? 2.フィールド指定をSQL_C_CHARとして、書き込みを行うと1000文字以上に書き込むこと出来ているようですが、読み込み時に失敗します。アドバイスをお願いします。