掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.26430

vxWorksの標準出力関数
投稿者---いの(2006/03/16 18:52:34)


vxWorksの関数で、引数無しで呼ぶと、標準出力する関数ってありますよね。
(memShowとか)
これをファイルとかにはき出したいんですけど、何か方法ってありますか?

ちなみに、ファイルのオープンをしてファイルポインタを作成するところまでは
出来ています。

どなたか、詳しい方、お願いします。m(_ _)m



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:vxWorksの標準出力関数 26434 いの 2006/03/16 21:10:48


No.26434

Re:vxWorksの標準出力関数
投稿者---いの(2006/03/16 21:10:48)


続きです。

FILE *fp = NULL ;
FILE *stdfp = NULL ;

stdfp = (FILE *)ioTaskStdGet(0, 1);
fp = fopen( "/tmp/ino1.txt", "a" ) ;
ioTaskStdSet(0, 1, (int)fp);

fprintf(fp, "test1\n");

printf("test2\n");

fclose( fp ) ;
ioTaskStdSet(0, 1, (int)stdfp);
printf("test3[0x%08x]\n",(int)stdfp);


上のような処理をいれてみました。標準出力には出なくなりましたが、
test1:ファイルにかかれます
test2:ファイルにもかかれなくて標準出力にもでません
test3:標準出力にでます

ちなみに、
ioGlobalStdSetでもやってみましたが、こちらでは、
test2も標準出力にでてしまいます。

まったく意味が分かりません。誰か、help me。(>_<)



この投稿にコメントする

削除パスワード

No.26435

Re:vxWorksの標準出力関数
投稿者---あかま(2006/03/17 00:35:26)


vxWorksの関数がわからないけど、
dup()が使える前提で、出力先を変更するのを無理やり書くとこうなる(動作確認gcc)。
でも大抵は出力先指定できるような出力関数があるんじゃ?

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

/*
ファイル記述子,標準入力=0,標準出力=1,標準エラー出力=2
dup(int fd);//ファイル記述子fdを使われていないファイル記述子番号の内、最小のものにコピーする
*/

int main(){
    int fd,stdo_buf;
    
    fd = open("test.txt",O_WRONLY | O_APPEND | O_CREAT,S_IRWXU);//出力ファイルオープン.無ければ新規作成.権限=700
    
    stdo_buf = dup(1);//標準出力を後で使うならコピーしておく.必要なければいらない
    
    close(1);//標準出力close
    dup(fd);//fdを標準出力代わりに
    close(fd);//古いfdをclose
    
    printf("file output ok?\n");//標準出力代わりのファイルに書き込み
    
    /*ここから元の標準出力に戻す.必要なければいらない*/
    fflush(stdout);//バッファを書き出しておく.前回クローズしたときにも念のためしておくとよいかも
    close(1);//標準出力になってるファイルを閉じる
    dup(stdo_buf);//取っておいた標準出力を戻す
    close(stdo_buf);//古いコピーをclose
    
    printf("std output ok?\n");//標準出力にoutput
    return 0;
}




この投稿にコメントする

削除パスワード

No.26436

Re:vxWorksの標準出力関数
投稿者---いの(2006/03/17 09:44:13)


ありがとうございました。
終電まじかだったので、バタバタしてて書き込めませんでしたが、
解決しました。

/****************************************************/
fp = fopen( "/tmp/test.txt", "a" ) ;
fd = fileno(fp);
stdfp = ioTaskStdGet(0, 1);
ioTaskStdSet(0, 1, fd);

inetstatShow();
iosFdShow();
mbufShow();
memShow(0);

ioTaskStdSet(0, 1, stdfp);
fclose( fp ) ;
/****************************************************/
でいけました。
fd = fileno(fp);
にだまされてえらい時間かかってしまいましたが・・・。

報告遅れて申し訳ありませんでした。




この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧