2010-12-17 65 views
0

我們公司的一個應用程序使用pdfimages(來自xpdf)來檢查PDF文件中的某些頁面是否包含一個圖像,我們知道這些頁面中沒有文本。有沒有辦法限制進程的輸出文件數量?

爲此,我們在該頁面上運行pdfimages並計算是否只創建了一個,兩個或更多個或零個輸出文件(可以是JPG,PPM,PGM或PPM)。

問題是,對於某些PDF文件,我們會得到數百萬個14字節的PPM圖像,並且該過程必須手動終止。

我們知道,通過將流程分配給作業,我們可以限制流程運行的時間。但是如果我們能夠控制進程在執行過程中最多創建兩個新文件兩次,那可能會更好。

你有什麼線索可以做到嗎?

謝謝。

+0

C運行時庫對於任何時候都可以打開的文件數有512個限制。一種解決方案可能是打開510個什麼都不做的臨時文件,留給你2個。 :) – 2010-12-17 11:12:54

+0

哈哈。但是,不,鑑於應用程序創建超過512個文件,我想它會關閉並按順序打開它們:-) – Benoit 2010-12-17 12:21:53

回答

3

一種方法是監視文件創建目錄:http://msdn.microsoft.com/en-us/library/aa365261(v=vs.85).aspx - 監視應用程序可以終止PDF圖像提取過程。

另一種方法是使用簡單的ramdisk,它限制了可以創建的文件數量:您可以修改http://support.microsoft.com/kb/257405之類的內容。

如果您可以設置FAT16文件系統,我認爲根目錄中有128個文件的限制,其他目錄中的512個文件是有限制的? - 這樣的小文件可以很快達成。

+0

謝謝託尼。我認爲看目錄是我們做到這一點的最簡單方法。 – Benoit 2010-12-17 12:36:53

+0

@Benoit:不客氣,希望它運行良好。 – 2010-12-17 15:20:30

1

此外,除了我的'玩笑'評論,你可能想看看_setmaxstdio,看看是否有幫助(http://msdn.microsoft.com/en-us/library/6e3b887c(VS.71).aspx)。

+0

如果它創建每個文件,然後關閉並重新使用描述符,那麼這些方法是否會工作?我沒有看到任何理由認爲手柄會同時打開。 – 2010-12-17 11:17:15

+0

@Tony,好點! – 2010-12-17 11:18:41

+0

感謝所有的方式,+1指向另一個有趣的功能。儘管在我們的案例中它似乎不適用,但它可能會有很大的用處。 – Benoit 2010-12-17 17:19:06

相關問題