tags:

views:

105

answers:

2

I have an sample module

    -module(helloworld).
    -compile(export_all).

    main() -> io:format("~s~s~s~n",["\e[31m","Hello world!","\e[0m"]).

When I build:

erlc helloworld.erl

After that, I run:

erl -noshell -s helloworld main -s init stop
Hello world! (with red color)
 
erl -noshell -s helloworld main -s init stop > text.txt
^[[31mHello world!^[[0m (The content in text.txt is ugly, so I don't like).

My problem is:

  1. How to know when user redirect output from erlang shell into a file?
  2. How can I write to text.txt the content just "Hello world!" not "^[[31mHello world!^[[0m"

Thanks.

A: 

Have a look to http://www.erlang.org/doc/man/init.html#get_arguments-0, you can check for the existence of "noshell" flag there an adopt output accordingly.

[{root,["/opt/local/lib/erlang"]},{progname,["erl"]},{home,["/Users/..."]},{noshell,[]}]]},{helloworld,main,0},{init,start_it,1},{init,start_em,1}]

tbikeev
A: 

Thanks, but I don't think that can solve my problem. I use isatty in C library and solved it.

You should write this as a COMMENT not as an ANSWER.
Jonas