亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? popen.c

?? C標準庫源代碼,能提高對C的理解,不錯的哦
?? C
?? 第 1 頁 / 共 2 頁
字號:
                                    _T("/c"),
                                    cmdstring,
                                    NULL ))
             == -1) && ((errno == ENOENT) || (errno == EACCES))) ) {
                /*
                 * either COMSPEC wasn't defined, or the spawn failed because
                 * cmdexe wasn't found or was inaccessible. in either case, try to
                 * spawn "cmd.exe" (Windows NT) or "command.com" (Windows 95) instead
                 * Note that spawnlp is used here so that the path is searched.
                 */
                cmdexe = ( _osver & 0x8000 ) ? _T("command.com") : _T("cmd.exe");
                childhnd = _tspawnlp( _P_NOWAIT,
                                     cmdexe,
                                     cmdexe,
                                     _T("/c"),
                                     cmdstring,
                                     NULL);
        }

        _osfhnd( phdls[i2] ) = osfhndsv2;
        _osfile( phdls[i2] ) = osfilesv2;

        /* check if the last (perhaps only) spawn attempt was successful
         */
        if ( childhnd == -1 )
                goto error6;

        /* restore stdhdl for the current process, set value of *locidpair,
         * close osfhndsv1 (note that CloseHandle must be used instead of close)
         * and return pstream to the caller
         */

        (void)DuplicateHandle( prochnd,
                               osfhndsv1,
                               prochnd,
                               &newhnd,
                               0L,
                               TRUE,                    /* inheritable */
                               DUPLICATE_CLOSE_SOURCE | /* close osfhndsv1 */
                               DUPLICATE_SAME_ACCESS );

        (void)CloseHandle( (HANDLE)_osfhnd(stdhdl) );
        _free_osfhnd( stdhdl );

        _set_osfhnd( stdhdl, (long)newhnd );
        _osfile(stdhdl) = osfilesv1;

        /* MULTI-THREAD: RELEASE LOCK ON STDHDL HERE!!!!
         */
        _unlock_fh( stdhdl );

        locidpair->prochnd = childhnd;
        locidpair->stream = pstream;

        /* MULTI-THREAD: RELEASE LOCK ON IDPAIRS HERE!!!!
         */
        _munlock( _POPEN_LOCK );

        /* all successful calls to _popen return to the caller via this return
         * statement!
         */
        return( pstream );

        /**
         * error handling code. all detected errors end up here, entering
         * via a goto one of the labels. note that the logic is currently
         * a straight fall-thru scheme (e.g., if entered at error5, the
         * code for error5, error4,...,error1 is all executed).
         **********************************************************************/

        error6: /* make sure locidpair is reusable
                 */
                locidpair->stream = NULL;

        error5: /* close pstream (also, clear ph_open[i2] since the stream
                 * close will also close the pipe handle)
                 */
                (void)fclose( pstream );
                ph_open[ i2 ] = 0;

                /* MULTI-THREAD: RELEASE LOCK ON IDPAIRS HERE!!!!
                 */
                _munlock(_POPEN_LOCK);

        error4: /* restore stdhdl
                 */

                (void)DuplicateHandle( prochnd,
                                       osfhndsv1,
                                       prochnd,
                                       &newhnd,
                                       0L,
                                       TRUE,
                                       DUPLICATE_SAME_ACCESS );

                (void)CloseHandle( (HANDLE)_osfhnd(stdhdl) );
                _free_osfhnd( stdhdl );

                _set_osfhnd( stdhdl, (long)newhnd );
                _osfile( stdhdl ) = osfilesv1;

                /* MULTI-THREAD: RELEASE LOCK ON STDHDL HERE!!!!
                 */
                _unlock_fh( stdhdl );

        error3: /* close osfhndsv1
                 */

                CloseHandle( osfhndsv1 );

        error2: /* close handles on pipe (if they are still open)
                 */
                if ( ph_open[i1] )
                        _close( phdls[i1] );
                if ( ph_open[i2] )
                        _close( phdls[i2] );

        error1: /* return NULL to the caller indicating failure
                 */
                return( NULL );
}

#ifndef _UNICODE

/***
*int _pclose(pstream) - wait on a child command and close the stream on the
*   associated pipe
*
*Purpose:
*       Closes pstream then waits on the associated child command. The
*       argument, pstream, must be the return value from a previous call to
*       _popen. _pclose first looks up the process handle of child command
*       started by that _popen and does a cwait on it. Then, it closes pstream
*       and returns the exit status of the child command to the caller.
*
*Entry:
*       FILE *pstream - file stream returned by a previous call to _popen
*
*Exit:
*       If successful, _pclose returns the exit status of the child command.
*       The format of the return value is that same as for cwait, except that
*       the low order and high order bytes are swapped.
*
*       If an error occurs, -1 is returned.
*
*Exceptions:
*
*******************************************************************************/

int __cdecl _pclose (
        FILE *pstream
        )
{
        IDpair *locidpair;        /* pointer to entry in idpairs table */
        int termstat;             /* termination status word */
        int retval = -1;          /* return value (to caller) */

        /* MULTI-THREAD: LOCK IDPAIRS HERE!!!!
         */
        _mlock(_POPEN_LOCK);

        if ( (pstream == NULL) || ((locidpair = idtab(pstream)) == NULL) )
                /* invalid pstream, exit with retval == -1
                 */
                goto done;

        /* close pstream
         */
        (void)fclose(pstream);

        /* wait on the child (copy of the command processor) and all of its
         * children.
         */
        if ( (_cwait(&termstat, locidpair->prochnd, _WAIT_GRANDCHILD) != -1) ||
             (errno == EINTR) )
                retval = termstat;

        /* Mark the IDpairtable entry as free (note: prochnd was closed by the
         * preceding call to _cwait).
         */
        locidpair->stream = NULL;
        locidpair->prochnd = 0;

        /* only return path!
         */
        done:
                /* MULTI-THREAD: RELEASE LOCK ON IDPAIRS HERE!!!!
                 */
                _munlock(_POPEN_LOCK);
                return(retval);
}

#endif  /* _UNICODE */

/***
* static IDpair * idtab(FILE *pstream) - find an idpairs table entry
*
*Purpose:
*   Find an entry in the idpairs table.  This function finds the entry the
*   idpairs table entry corresponding to pstream. In the case where pstream
*   is NULL, the entry being searched for is any free entry. In this case,
*   idtab will create the idpairs table if it doesn't exist, or expand it (by
*   exactly one entry) if there are no free entries.
*
*   [MTHREAD NOTE:  This routine assumes that the caller has acquired the
*   idpairs table lock.]
*
*Entry:
*   FILE *pstream - stream corresponding to table entry to be found (if NULL
*                   then find any free table entry)
*
*Exit:
*   if successful, returns a pointer to the idpairs table entry. otherwise,
*   returns NULL.
*
*Exceptions:
*
*******************************************************************************/

static IDpair * __cdecl idtab (
        FILE *pstream
        )
{

        IDpair * pairptr;       /* ptr to entry */
        IDpair * newptr;        /* ptr to newly malloc'd memory */


        /* search the table. if table is empty, appropriate action should
         * fall out automatically.
         */
        for ( pairptr = __idpairs ; pairptr < (__idpairs+__idtabsiz) ; pairptr++ )
                if ( pairptr->stream == pstream )
                        break;

        /* if we found an entry, return it.
         */
        if ( pairptr < (__idpairs + __idtabsiz) )
                return(pairptr);

        /* did not find an entry in the table.  if pstream was NULL, then try
         * creating/expanding the table. otherwise, return NULL. note that
         * when the table is created or expanded, exactly one new entry is
         * produced. this must not be changed unless code is added to mark
         * the extra entries as being free (i.e., set their stream fields to
         * to NULL).
         */
        if ( (pstream != NULL) || ((newptr = (IDpair *)_realloc_crt((void *)__idpairs,
             (__idtabsiz + 1)*sizeof(IDpair))) == NULL) )
                /* either pstream was non-NULL or the attempt to create/expand
                 * the table failed. in either case, return a NULL to indicate
                 * failure.
                 */
                return( NULL );

        __idpairs = newptr;             /* new table ptr */
        pairptr = newptr + __idtabsiz;  /* first new entry */
        __idtabsiz++;                   /* new table size */

        return( pairptr );

}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜久久久久| 丰满少妇久久久久久久| 亚洲三级在线看| 福利一区在线观看| 丝袜a∨在线一区二区三区不卡| 欧美极品另类videosde| 樱花草国产18久久久久| 欧美精品国产精品| 亚洲自拍偷拍九九九| 欧美日韩不卡在线| 91 com成人网| 日韩欧美一级二级| 久久精品视频在线免费观看| 国产欧美精品在线观看| 中文字幕一区在线观看| 亚洲你懂的在线视频| 国产精品资源在线看| 国内精品久久久久影院色| 国产福利一区二区| 一本久道久久综合中文字幕| jlzzjlzz亚洲女人18| 99九九99九九九视频精品| 9i在线看片成人免费| 欧美人动与zoxxxx乱| 一区二区三区日韩在线观看| 91精品久久久久久蜜臀| 欧美精品欧美精品系列| 免费成人在线网站| 成人一区二区在线观看| 色噜噜久久综合| 7777精品伊人久久久大香线蕉 | 国产精品久久久久久久久快鸭| 国产日韩欧美亚洲| 亚洲国产aⅴ成人精品无吗| 麻豆精品国产传媒mv男同| 成人黄色软件下载| 欧美一区二区三区喷汁尤物| 久久久噜噜噜久久中文字幕色伊伊| 1区2区3区国产精品| 日本午夜精品视频在线观看| 成人av电影在线网| 日韩欧美综合在线| 一区二区三区色| 国产激情精品久久久第一区二区 | 国产69精品久久久久777| 欧美在线观看视频在线| 久久精品夜色噜噜亚洲aⅴ| 亚洲一区成人在线| 成人小视频免费在线观看| 91精品国产综合久久久久久 | 日韩午夜电影av| 亚洲乱码中文字幕| 国产91在线观看| 欧美va亚洲va在线观看蝴蝶网| 一区二区三区加勒比av| 91亚洲男人天堂| 337p日本欧洲亚洲大胆色噜噜| 亚洲综合视频网| 婷婷中文字幕综合| 欧美无乱码久久久免费午夜一区| 欧美国产综合一区二区| 国产精品亚洲午夜一区二区三区| 制服丝袜亚洲色图| 五月天一区二区三区| 在线观看精品一区| 亚洲另类中文字| 9人人澡人人爽人人精品| 欧美电视剧在线观看完整版| 亚洲精品成人悠悠色影视| 91麻豆国产自产在线观看| 久久蜜桃一区二区| 奇米在线7777在线精品| 色婷婷综合久久久中文字幕| 中文字幕欧美区| 亚洲视频免费在线观看| 99这里都是精品| 国产三级一区二区| 精品一区免费av| 欧美人妇做爰xxxⅹ性高电影 | 成人av综合在线| 日韩精品中午字幕| 日本人妖一区二区| 欧美日韩视频专区在线播放| 亚洲麻豆国产自偷在线| av色综合久久天堂av综合| 久久免费视频色| 久久国产夜色精品鲁鲁99| 日韩亚洲电影在线| 美女视频黄 久久| 欧美一级国产精品| 亚洲第一二三四区| 欧美猛男男办公室激情| 亚洲高清视频在线| 欧美高清视频一二三区| 天天综合天天综合色| 欧美日韩精品三区| 奇米888四色在线精品| 不卡在线视频中文字幕| 亚洲一卡二卡三卡四卡| 欧美日韩视频专区在线播放| 天堂一区二区在线免费观看| 欧美日韩国产一级| 免费国产亚洲视频| 久久天天做天天爱综合色| 国产麻豆9l精品三级站| 日本一区二区三区高清不卡| 国产suv精品一区二区883| 亚洲欧美偷拍卡通变态| 欧美一a一片一级一片| 同产精品九九九| 欧美精品一区二区三区在线播放 | 国产精品资源在线看| 国产亚洲成av人在线观看导航 | 精品日韩在线观看| 国产91色综合久久免费分享| 亚洲欧美色一区| 欧美一区二区在线不卡| 国产精品一二三区| 亚洲午夜视频在线| 777xxx欧美| 国产精品亚洲午夜一区二区三区 | 国产一区二区久久| 一区二区三区色| 日韩欧美色综合网站| 国产很黄免费观看久久| 亚洲精品免费在线观看| 在线电影欧美成精品| 成人综合激情网| 亚洲123区在线观看| 久久精品免费在线观看| 欧美日韩在线精品一区二区三区激情| 六月丁香综合在线视频| 亚洲免费成人av| 日韩精品一区二区三区中文精品| 成人一级片网址| 蜜桃91丨九色丨蝌蚪91桃色| 国产精品不卡视频| 日韩免费高清视频| 国产成人福利片| 国产在线播放一区| 亚洲一区二区免费视频| 国产精品久久久久久久浪潮网站| 欧美一级久久久久久久大片| 91欧美激情一区二区三区成人| 韩日欧美一区二区三区| 日韩伦理免费电影| 日韩精品一区在线| 日韩亚洲欧美成人一区| 欧美中文字幕一二三区视频| 成人小视频在线| 国产一区二区三区在线观看免费视频 | 成人激情校园春色| 精品一区二区三区在线观看国产| 一区二区三区四区在线| 国产精品久久久久四虎| 久久精品男人天堂av| 精品国产91久久久久久久妲己| 欧美视频一区二区在线观看| av色综合久久天堂av综合| 国产成人啪免费观看软件| 蜜臀精品一区二区三区在线观看 | 91在线porny国产在线看| 国产很黄免费观看久久| 国产美女精品人人做人人爽| 免费看黄色91| 视频一区视频二区中文字幕| 性久久久久久久久久久久| 亚洲一区二区三区中文字幕在线| 1024成人网色www| 中文字幕一区二区三区不卡| 国产农村妇女毛片精品久久麻豆 | 久久疯狂做爰流白浆xx| 青青草伊人久久| 另类小说欧美激情| 美女一区二区三区| 天堂影院一区二区| 老司机精品视频导航| 视频一区中文字幕国产| 九色综合国产一区二区三区| 国内成+人亚洲+欧美+综合在线 | 国产精品国产三级国产a| 国产日产欧美一区| 国产精品理论片| 亚洲欧美一区二区三区国产精品| 亚洲精品午夜久久久| 亚洲国产成人91porn| 日本不卡不码高清免费观看| 日本亚洲最大的色成网站www| 亚洲成a人v欧美综合天堂下载 | 美女脱光内衣内裤视频久久影院| 日本女优在线视频一区二区| 激情欧美一区二区三区在线观看| 国产又粗又猛又爽又黄91精品| 国产真实乱对白精彩久久| 激情文学综合丁香| 91小视频免费观看| 欧美日本在线观看| 国产欧美一区二区精品婷婷| 亚洲免费在线电影| 图片区日韩欧美亚洲|