アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語にてsystem関数を用いてシェルを起動するというプログラムを作成しています。
現在はsystem関数を実行してもシェルが実行されません。(ファイルが作成されません)
さらに、main関数が無限ループしたような挙動になってしまいます。
何か原因が分かればと思い質問いたします。

<sample.c>
#define DF_touch ( "shl/SS_touch.csh" )
#define NM ( "aa.c" ) /* ファイル名 */

int main()
{
/* シェルの戻りを取得するサンプル */
int i;
char str_cmdbuf[255];
printf("開始\n");
memset( &str_cmdbuf[0], 0x00, sizeof( str_cmdbuf ) ) ;

sprintf( &str_cmdbuf[0], "%s %s", DF_touch, NM ) ;
printf("実行コマンド=%s\n",str_cmdbuf);

i = system( &str_cmdbuf[0] );
printf("shlの戻り値=%d\n",WEXITSTATUS(i) ); /* 0になってるか*/

return ( 0 );
}

<SS_touch.csh>
#!/bin/csh
# コマンド名の定義
set COMMANDNMAE=/bin/touch
# コマンドの実施
$COMMANDNMAE $1>& /dev/null
exit 0

以上です。

A 回答 (2件)

system って OS などの環境に依存するところもあるはずだからちゃんと書いてほしいんだけどなぁ....


とりあえず, 実行しようとしている
shl/SS_touch.csh
は存在しているのですか? そして, 実行できるようになっていますか?
つまり, 手でそのコマンドを実行するときにはちゃんと動くのですか?

この回答への補足

shl/SS_touch.csh は存在しています。
手動で実行すると、挙動がおかしい(ループするような挙動)です。

OSはRedHatです。
文字コードをSJISにて実行する必要があります。

補足日時:2010/05/14 10:31
    • good
    • 0

system に特殊な魔法があるわけじゃないので, 「手で入力しておかしな挙動をする」のなら system 経由で実行してもおかし

な挙動をするに決まっています.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!