1、我們用CreateProcess執(zhí)行一個(gè)外部程序時(shí),怎樣才能得到這個(gè)程序的輸入輸出呢?CreateProcess已經(jīng)替我們準(zhǔn)備好了,在CreateProcess的STARTUPINFO參數(shù)里有這樣幾個(gè)hStdInput、hStdOutput、hStdError東東,用來(lái)為創(chuàng)建的進(jìn)程指定輸入輸出,例如用CreateFile創(chuàng)建一個(gè)文件,接著把得到的文件句柄指定給hStdOutput,并且把dwFlags的值設(shè)為USESTDHANDLES,這樣外部程序的輸出就會(huì)輸?shù)竭@個(gè)文件里。注意:CreateFile的SECURITY_ATTRIBUTES.bInheritHandle參數(shù)要設(shè)為TRUE。
?
2、在Create系列函數(shù)中通常都會(huì)有一個(gè)叫SECURITY_ATTRIBUTES的參數(shù),
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
如果把bInheritHandle的值設(shè)為TRUE,意思就是它所創(chuàng)建出來(lái)的東西是可以被其他的子進(jìn)程使用的,例如用CreatePipe創(chuàng)建的管道可以用在CreateProcess創(chuàng)建的進(jìn)程中。
3、用CreateProcess創(chuàng)建子進(jìn)程時(shí)通過(guò)lpCurrentDirectory參數(shù)指定子進(jìn)程運(yùn)行的路徑。