3

xcodeを介して次のコードを実行すると、一貫性のない動作が発生します。gitバージョンを正しく印刷する場合もあれば、何も印刷しない場合もあります。ただし、シェルコマンドからの戻りコードは常に0です。これがなぜであるかについてのアイデアはありますか?私は何が間違っているのですか?


#define BUFFER_SIZE 256 
int main (int argc, const char * argv[])  
{   
    FILE *fpipe;
    char *command="/opt/local/bin/git --version";
    char line[BUFFER_SIZE];

    if ( !(fpipe = (FILE*)popen(command, "r")) )
    {   // If fpipe is NULL
        perror("Problems with pipe");
        exit(1);
    }

    while ( fgets( line, sizeof(char) * BUFFER_SIZE, fpipe))
    {
         // Inconsistent (happens sometimes) 
         printf("READING LINE");
         printf("%s", line);
    }

    int status = pclose(fpipe);

    if (status != 0)
    {
        // Never happens
        printf("Strange error code: %d", status);
    }

    return 0;
}

4

2 に答える 2

1

出力がバッファリングされているかのように不審に聞こえますが、出力バッファをフラッシュすることを検討fflush()しましたか。そうするために使用します。詳細については、こちらをご覧ください。

これがお役に立てば幸いです、よろしく、トム。

于 2010-01-15T15:50:43.240 に答える
1

私は奇妙な行動の原因を見つけたと思います。Xcodeが組み込みのターミナルウィンドウで何かファンキーなことをしているようです。その結果、出力が表示されません。標準のターミナルウィンドウでコードを直接実行しようとすると、この動作は表示されず、テキストは一貫して印刷されます。

于 2010-01-15T22:55:28.427 に答える