用CreateProcess 建立程序為什麼失敗0大神幫

2021-04-18 06:02:24 字數 1592 閱讀 3756

1樓:謝應宸

在返回抄-1前使用getlasterror函式看下錯誤碼

2樓:真水無殤

同學,我就不好意copy思說你

bai是電子神技大學的了。在int child1=fork(".\\printstr1.

exe",hprocess1)中,首先du你要保證zhi你的目錄下有printstr1.exe這個檔案,其次最好是dao使用絕對目錄,例如e:\\program\\printstr1.

exe。

用createprocess函式建立程序的意義是什麼?

3樓:yx陳子昂

createprocess函式作為win32的一個api用來執行一個新程式。

老的介面winexec和loadmodule函式依舊可用,但是它們同樣通過呼叫createprocess函式實現。

另外createprocess函式除了建立一個程序,還建立一個執行緒物件。這個執行緒將連同一個已初始化了的堆疊一起被建立,堆疊的大小由可執行檔案的檔案頭中的描述決定。執行緒由檔案頭處開始執行。

新程序和新執行緒的控制代碼被以全域性訪問許可權建立。對於這兩個控制代碼中的任一個,如果沒有安全描述符,那麼這個控制代碼就可以在任何需要控制代碼型別作為引數的函式中被使用。當提供安全描述符時,在接下來的時候當控制代碼被使用時,總是會先進行訪問許可權的檢查,如果訪問許可權檢查拒絕訪問,請求的程序將不能使用這個控制代碼訪問這個程序。

4樓:匿名使用者

是windows呼叫的createprocess函式,並不是沒有用createprocess函式。

《windows程式設計》摘抄:

作業系統事實上並不是真的呼叫main函式,而是去呼叫c/c++執行期啟動函式,此函式初始化c/c++執行期庫。因此,在應用程式中可以呼叫malloc和free之類的函式。它也會保證在使用者的**執行之前所有的全域性的或靜態的c++物件能夠被正確的建立,即執行這些物件建構函式中的**。

組成win32程序的兩個部分:

(1)程序核心物件。作業系統使用此核心物件來管理程序,也是作業系統存放程序統計資訊的地方。

(2)私有的虛擬地址空間。此地址空間包含了所有可執行的或者是dll模組的**和資料,它也是程式動態申請記憶體的地方,比如說執行緒堆疊和程序堆。

在控制檯應用程式中,c/c++執行期啟動函式會呼叫程式入口函式main,所以如果程式中沒有main函式的實現**的話,聯結器將返回「unresolved external symbol」錯誤。win32應用程式的啟動過程就是程序的建立過程,作業系統是通過呼叫createprocess函式來建立新的程序的。當一個執行緒呼叫createprocess函式的時候,系統會建立一個程序核心物件,其使用計數初始化為1.

此程序核心物件不是程序本身,僅僅是一個系統用來管理這個程序的一個小的資料結構(pcb,process control block)。系統然後會為新的程序建立一個虛擬地址空間,載入應用程式執行時所需的**和資料。

系統接著會為新程序建立一個主執行緒,這個主執行緒通過執行c/c++執行期啟動**開始執行,c/c++執行期啟動**又會呼叫main函式。如果系統能夠成功建立新的程序和程序的主執行緒,createprocess函式返回true,否則返回false。

用createprocess函式建立程序的意義是什麼

createprocess函式作為win32的一個api用來執行一個新程式。老的介面winexec和loadmodule函式依舊可用,但是它們同樣通過呼叫createprocess函式實現。另外createprocess函式除了建立一個程序,還建立一個執行緒物件。這個執行緒將連同一個已初始化了的堆疊...

怎麼除錯CreateProcess建立的程序命令列

宣告一個 程序資訊 變數,將其地址傳給createprocess,作為最後一個引數,建立成功後 用pi.hprocess結束就行 process information pi createprocess 0,路徑 使用createprocess建立程序會有cmd.exe嗎 createprocess...

藝術創想手工製作,《藝術創想》這個節目中關於用紙製作的用於放東西的小製作

那期我看了,是愚人節惡搞用的,按照尼爾叔叔的慣例是按1 1兌的,等風乾後就成了那樣了!藝術創想 這個節目中關於用紙製作的用於放東西的小製作 收納盒 或者是 儲物盒 不知道你在講什麼.去網上找 找 收納盒 或 儲物盒 應該都有.記得,原來在電視上看到一個節目,是一個外國人教觀眾做手工製作,那是什麼節目...