• ベストアンサー

execlしない・・・

piyocoの回答

  • piyoco
  • ベストアンサー率0% (0/1)
回答No.1

ouka_sです。 800文字以内だってので貼れなかったので、友人にログインしてもらって貼ってもらいます。 こんなプログラムを書きました。 (略) else if(pid2 == 0){ printf("%s\n",filename); strcat(str5, filename); fd = open("cgi.out", O_WRONLY|O_CREAT, 0644);     printf("%s\n",str5); close(1); dup(fd); fprintf(stderr,"dup OK\n"); execl(str5, filename ,NULL); fprintf(stderr,"execl OK\n") if((execl(str5,filename,NULL))<0){ perror("execl"); strcat(str3,str2); send(ns, str3, strlen(str3), 0); fp3 = fopen(filename2,"r"); while(fgets(filedata,strlen(filedata), fp3) != NULL){ send(ns, filedata, strlen(filedata), 0); } exit(1); } /*send to client*/ else if{ fpcgi = fopen("cgi.out","r"); while((fgets(filedata,sizeof(filedata), fpcgi)) != NULL){ send(ns, filedata, strlen(filedata), 0); } fclose(fpcgi); } } (以下略) ※str5 = "/home/(中略)/cgi-bin/\0" filename = "hello.cgi\0" が入っています。

関連するQ&A

  • HTML上(javascript)からCGIを実行する方法

    javascriptから外部実行ファイル(javascriptファイルではなくperlなどのCGI) を実行する方法を探しています。 下記のようにindex.htmとtest.cgiファイルを用意して、index.htm内の javascriptから外部cgiを実行させ、cgiの結果(test.cgiでは単に 『test』と表示するのみ)を表示したいと考えています。 利用増ですが、cgiやssiが使用できないサーバにindex.htmを置いて、 cgiが使用できるサーバ上のcgi結果を取得したいものです。 通常のcgiのように、1ページでcgi結果を表示するものではなく、 HTMLファイルの一部にcgi処理結果を表示させたいものです。 そもそも、SSIを使用しなければ下記のようなHTML内にcgiなどの 実行結果を表示する事は出来ないのでしょうか。 よろしくお願い致します。 ※下例のプログラムではcgi結果は表示されませんでした・・・。 ---<index.htm>---------------------------------------- <HTML> <BODY> <SCRIPT language="Javascript" src="http://xxx.xxx.xxx.xxx/test.cgi"></SCRIPT> </BODY> </HTML> ---<test.cgi>---------------------------------------- #!/usr/bin/perl print "test"

  • HTML化によるホームページの高速化方法について

    HTML内で外部サーバにあるCGIをjavascriptとして起動させて、 結果を表示する方法を行っていますが、実行させるjavascriptの数が多くなるに連れて ページが表示されるまでに時間がかかってしまいます。 そこで、ページが表示されるたびに毎回javascriptを表示させる方式(下例のold.html)ではなく、 old.html内のjavascript部分を実行させたものをHTML化したnew.htmlを 自動で作成するcgi(下例のtranslate.cgi)などを作りたいと考えていますが、 どのように作ればいいのでしょうか。 【old.html(一部抜粋)】 <BR>下記にtest.cgiの実行結果が表示されます!<BR> <SCRIPT language="javascript" src="http://www.xxx.com/test.cgi"></SCRIPT> 【test.cgi(一部抜粋)】 print "Content-Type: application/x-javascript\n\n"; print "document.write('<P>test.cgiの実行結果だよ</P>');"; 【new.html(一部抜粋)】 <BR>下記にtest.cgiの実行結果が表示されます!<BR> <P>test.cgiの実行結果だよ</P> ●translate.cgiの仕様は、下記の内容を考えています。 perlについては少しだけ理解はしているのですが、 (3)部分のプログラム方法がわかりません。 【translate.cgi】 (1)old.htmlファイルをオープンする (2)old.htmlファイルを一行ずつ読み込み、javascript以外であれば、 そのままnew.htmへ書き込む (3)javascriptの場合には、実行させた結果を取得しnew.htmlへ書き込む 大変お手数お掛けいたしますが、 どうぞよろしくお願い致します。

    • ベストアンサー
    • Perl
  • Apacheのログからアクセス履歴をWeb表示するのにCGIは必要?

    Apacheのログ(/usr/local/apache/logs/access_log)を利用して アクセスカウンタのようなものを作りたいと考えています。 月毎の使用数を調べ、それを棒グラフ(PNGフォーマット)で表示させる、といったものです。 これをつくるにあたりCGIは必要なのでしょうか。 もし必要であれば、どのように使うのでしょうか。 ちなみに、開発環境は FreeBSD ver3.4, Apache ver1.3, perl ver5.005_03で、 ブラウザ(Netscape Navigator 4.7)で 本に掲載されていたCGIプログラムを動かしてみたところ 実行できませんでした。 #HTML文書が表示されるだけで #そのHTML文書が意図する表示はされなかった。 ○このApacheはCGIが使えているのか ○アクセスカウンタにCGIは必要かどうか を教えていただけたらと思います。 よろしくお願いします。

  • SSIでCGIを起動するには…

    同じ質問をしてましたが、回答がなかった為、カテを変えて質問します。 SSIを使いフレームみたいなページを作りました。 左側のメニューページをSSIで呼び出し、実行と言った感じです。 それで、掲示板などのCGIを右側のページに呼び出そうと思ったのですが、どうやっても出来ません。 画面は一応は呼び出せるのですが、画面がぐちゃぐちゃになっていて、そのCGIの書き込みすら出来ない状態です。 また、CGIを表示するHTMLを呼び出しても同じ結果でした…。 パーミションは変更しています。 またインラインフレームでは表示、書き込みは可能なのですが、 なんとかSSIで表示できないものかと悪戦苦闘です^^; この様な場合、どうすれば良いのか教えてください!! もしくは、設置に関するwebページなどがあったら教えてください!!

  • ソケット:書き出しをソケット経由で読み込みできない

    お世話になります。 今、Javaでのソケットプログラミングについて学習をはじめて、はじめてのサンプルプログラムが失敗しました。 そこでもうちょっと簡単にしてみたのですが(一部の抜粋が以下のソースです)、またまたうまくいきません。 エコーサーバのテストなのですが、client : after send messageと表示されたところで処理が止まってしまいます。 結果は最下位に貼り付けてあります。 どうかよろしくお願いします。 // reader/writerの取得 BufferedWriter clientWriter = new BufferedWriter( new OutputStreamWriter(sockClient.getOutputStream()), BUFFERSIZE); BufferedReader clientReader = new BufferedReader( new InputStreamReader(sockClient.getInputStream()), BUFFERSIZE); BufferedWriter serverWriter = new BufferedWriter( new OutputStreamWriter(sockServer.getOutputStream()), BUFFERSIZE); BufferedReader serverReader = new BufferedReader( new InputStreamReader(sockServer.getInputStream()), BUFFERSIZE); // サーバのローカルとクライアントの接続先が同じことの確認 System.out.println("client port : " + sockClient.getPort()); System.out.println("client addr : " + sockClient.getInetAddress().getHostAddress()); System.out.println("server port : " + sockServer.getLocalPort()); System.out.println("server addr : " + sockServer.getLocalAddress().getHostAddress()); // クライアント→サーバー→クライアントの順にmaaaaaいうえおを送信 String strMessage = "maaaaaいうえお"; System.out.println("client : send message : " + strMessage); clientWriter.write(strMessage); System.out.println("client : after send message"); String msgGet = serverReader.readLine(); System.out.println("server : got : " + msgGet); serverWriter.write(msgGet); System.out.println("client : got : " + clientReader.readLine()); ------------以下が結果------------- client port : 4544 client addr : 127.0.0.1 server port : 4544 server addr : 127.0.0.1 client : send message : maaaaaいうえお client : after send message

    • ベストアンサー
    • Java
  • PerlでCGIの書き方

    今、HTML:Templateを用いてCGIのプログラムを書いています。 基本的にCGI上のボタンをおすとPOSTで情報をわたして、次のCGIにいき、そこからTMPLを読み出して、画面を表示してるのですが、画面場のボタンをおしてもCGIを更新せずに、Perlの実行だけすることは可能ですか?あるいは、POSTでCGIに届いた情報をIF文で中身を確認して、表示するTMPLをかえて、Perlの実行も行うのが普通のやりかたなのでしょうか? あまりよくわからずにネットだけの情報をたよりにプログラミングをしているので設計の仕方など分からないことが多々あります。 どなたかCGIに詳しい方ご返答おねがいします。

    • ベストアンサー
    • CGI
  • HTML上でのコメントアウト

    仕事でHTMLのコーディングをしております。 HTMLファイル上でコメントアウトする際、通常 <!-- ●●● --> 上記のとおり書くと●●●が無効になりますが、先日クライアントからいただいたHTMLを確認したところ、 <!--# ●●● #--> 上記のとおり書かれておりました。 いただいたHTMLを自社で運用しているサーバ上にアップして表示の確認をしたところ、”SSIでファイルのインポートに失敗した”ような英語のエラーメッセージが画面の左上に表示されております。 当方の見解では、クライアントからいただいたHTML上に記述されている <!--# ●●● #--> 上記が、コメントアウトとしてではなく、SSIでファイルのインポートを行うよう認識しており、クライアントのサーバ上ではコメントアウトとして認識するようウェブサーバの設定を行っているのですが、自社のサーバではそのような設定をしていないため、インポートするファイルが見つからなくエラーが表示されているのだと思います。 当方の見解が合っているかどうか、もし合っているようでしたら、サーバ上でどのように設定すればコメントアウトとして認識されるようになるのか、ご教授いただけますと幸いです。 よろしくお願い致します。

  • 「SubmitせずにJavaScriptからCGIを呼び出して結果をH

    「SubmitせずにJavaScriptからCGIを呼び出して結果をHTML上に表示したい」 HTMLファイル上にテキストボックスとそれと対になるラベル(ラベルじゃなくても良いのですが。。)のセットがいくつかあります。 テキストボックスにコードを入力したら、ラベルにそのコードに対応する商品名を表示したいと思っています。 テキストボックスにコードを入力後、フォーカスが離れたら(Onchangeで)JavaScriptでそのコードの値を取得し、そのデータをCGIに渡してサーバにあるDBに接続し、その結果をHTML上のラベルに表示したいと思います。 Sbmitせずにフォーカスが離れた場合に、データをCGIに受け渡し、そのデータを画面遷移しないで、HTML上に表示するのはどのようにすればいいのでしょうか。 また、上記のことをJavaScriptとCGIだけでできるのでしょうか。 教えてください。 よろしくお願い致します。

  • CGIとHTMLを別々のディレクトリにする理由

    Apacheなどのデーモンでは、CGIなどを実行するディレクトリとHTMLを表示するディレクトリを別々に分けて設定するのが普通だと思いますが、 1つのディレクトリでCGIの実行も、HTMLの表示もできるようにしようと思ってます。 セキュリティーに問題があろうということは、うすうす感じてます。 が、具体的にどのような問題があるのかが分かりません。 具体的な例をあげて説明していただけますと助かります。 よろしくお願いします。

  • CGIの処理結果をHTML内に表示したい!

    はじめまして。 CGI初心者です。 現在、とあるフリーのアンケートのCGI(perl)を改良していて、それは、アンケートに答えて、送信ボタンを押すと、CGIファイルの処理結果として、これまでのアンケートの集計結果がグラフで表示されるというものです。 その集計結果のみを、別ページ(左側や上部にメニューがあるもの)のHTML内に収めたいのです。 ※新しいウィンドウが開かなくてもOKです。 ※その別ページというのが私のオリジナルのページになります。 イメージとしては、 1)anket.html(アンケートに答える)  ↓ 2)anket.cgi(返答内容とこれまでの集計を処理)  ↓ 3)anket.html(集計結果が埋め込まれたHTMLファイルが表示される) 初心者なので、用語の使い方等間違っていましたらすいません。。 よろしくお願いします!