0

別のアプリケーションから出力を取得してソケットに書き込む単純なアプリケーションに取り組んでいます。以下は、私が execvp しているアプリケーションのコードです。このコードは単純なアプリと呼ばれます。

    int main( int argc, char * argv[])
{
   int count = 0;
   while(count < 5)
       //Attempt fork
        if((pid2 = fork()) < 0) //Failed to fork
        {
                printf("\n Failed to fork in Dump \n");
                exit(1);
        }
        else if (pid2 == 0) //Child Code
        {
                dup2(STDOUT_FILENO,pipefd[1]);
                close(pipefd[0]);
                close(STDOUT_FILENO);
                if(execvp("../App/App", dumpParam) < 0) //execute the app; returns -1 if failed

                {
                        printf("\nFailed to execute App\n");
                        exit(1);
                }
        }
        else //Parent
        {
                close(pipefd[1]);
                memset(buff,'0',sizeof(buff));
                printf("here\n");
                while( (r = read(pipefd[0],buff,sizeof(buff))) >= 0)
                {
                        printf("\nSuccess in read r = %d\n",r);
                        printf("\nBuff = %s\n",buff);
                        memset(buff,'0',sizeof(buff));

                }
                printf("nowHere\n");
        }
        return pipefd[0];

これまでのところ、実行すると、大量の0が出力されます。read > 0 に設定すると、まったく実行されません。考え?

4

1 に答える 1