[pgsql-jp: 36116] Re: psqlコマンドでshを実行?
Kouji Ito
kouji @ cty-net.ne.jp
2005年 10月 12日 (水) 18:27:25 JST
こんにちは、伊藤です。
Yumiko Izumi wrote:
>
> 以下のようなコマンドラインを実行するコマンドをC言語で開発しています。
>
> psql testDB -t -f test.sql -o result.txt -h targetnode -U user >& err.txt
>
C言語で作成したコマンドから上記のpsqlを実行する際にどのような
方法で行っているのかがポイントだと思います。
おそらく、system(3)や、exec(2)ファミリーを使っているんだと思いますが、
それぞれのOS上で、system(3)や、exec(2)をmanしてみて下さい。
多分、shを使うって記述されていると思います。
>
> しかし、以下疑問が残っています。
> 1.psqlを実行してshのエラーが出るのはなぜか?
> 2.ログインシェルはcshなのにshで実行されているように見えるが、なぜか?
と言うことで、上記2つの疑問に関しては、そういう仕様だと思います。
何故そうなっているのかについては良く判りませんが、想像するに、
system(3)や、exec(2)で使うシェルはシステムで必ず存在しているシェル
にしておかないと、何かと困るケースがあると思うので、各OSで一番基本的な
シェルを使うようになっているんだと思います。(例えば、OSの起動時にinitが
動き始めて、/etc/の下のスタートアップ処理を実行するときなんかもそうで
すよね。)
> 3.どうすればログインシェルで実行できるのか?
>
C言語で作成するコマンドを
#!/bin/csh
psql testDB -t -f test.sql -o result.txt -h targetnode -U user >& err.txt
のようにして、これを実行してやれば良いかと思います。
pgsql-jp メーリングリストの案内