-1

Linux2.4、C、および gcc の使用に特有の問題があります。

cat & grep cmd を使用してファイルから情報を取得する小さなプログラムがあります。

#define tmpFile "/tmp/cli_tmp_file.txt"
#define MAX_CMD 50

void getRange()
{
        char cmd[MAX_CMD+1];

        // remove the temp file first
        snprintf(cmd, MAX_CMD, "rm -f %s", tmpFile);
        system(cmd);
        // create temp file
        snprintf(cmd, MAX_CMD, "touch %s",tmpFile);
        system(cmd);
        // execute the command
        snprintf(cmd, MAX_CMD, "echo \"Range:Max val 500\" > %s",tmpFile);
        system(cmd);
        // dump out the temp file so user could see
        snprintf(cmd, MAX_CMD, "cat %s|grep \"Range\"", tmpFile);
        system(cmd);
        // remove the temp file
        snprintf(cmd, MAX_CMD, "rm -f %s", tmpFile);
        system(cmd);
}

このコードを実行すると、cat: /tmp/cli_tmp_file.txt: No such file or directory として出力されます。

ただし、ファイルは内容とともに tmp フォルダーに作成されます。

# pwd
/tmp
# ls -l
-rw-r--r--    1 root     root           68 Oct 10 12:54 cli_tmp_file.txt

#more /tmp/cli_tmp_file.txt
Range:Max val 500

同じコマンドを手動で実行すると、意図した出力が表示されます

# cat /tmp/cli_tmp_file.txt|grep Range
Range:Max val 500

どんな助けでも大歓迎です。前もって感謝します。

4

1 に答える 1