1
我試圖從大小爲sizeize的文件中讀取n個子進程。我的問題是這樣的:如果filesize%subprocesses!= 0,我如何分配文件大小以便讀取整個文件?我的想法是讓其中一個子流程讀取比其他流程略少,但我不知道如何去做。這是我的代碼,subprocesses是我fork()的子項數。C:從同一個文件中讀取多個子進程
fstat(infile, &filestatus);
filesize = filestatus.st_size;
fs = (filesize + (subprocesses /2))/subprocesses;
這種類型舍入的問題是,當我改變子進程時,我沒有正確讀取infile。任何幫助是極大的讚賞!
彼得我欠你一個!是的,現在我被困在如何讓最後一個子進程知道它的最後一個子進程?我使用for循環來分叉n個子進程,那麼我該怎麼做呢? – ashadeka
對於每個'fork()'調用,你應該檢查返回值。分叉進程接收到返回值爲零,如果分叉成功,父接收到一個正值,如果分叉失敗,則接收到負值。最後一個子進程的特徵是'fork()'在循環的最後一次迭代中返回零。 – Peter
當代碼調用'exec *'執行一個子進程(所有的子進程都是子進程)時,包含了要讀取的字節數和要讀取的第一個字節的偏移量,參數傳遞給子進程。作爲第二種選擇,每個進程嘗試讀取相同的數字字節,最後一個子進程將會碰到EOF,應該對EOF進行編碼,以阻止該進程嘗試讀取更多字節。 – user3629249