2014-10-20 93 views
0

我正在實現一個命令行工具,我需要能夠處理一堆選項。某些選項必須在完成後終止程序。例如,我有選項a,b和c。如果A和B後,他們的DONE終止,我給了命令我可以使用getopt按特定順序處理選項嗎?

./myprogram -bca [file] 

有沒有辦法讓「一個」優先在這樣getopt的使用情況()?

編輯:

我解決了這個運行的選項開關,如果選擇了選項設置的標誌。然後將所有標誌發送到按順序查看標誌的函數。

+0

您可以根據您的程序提供了哪些參數來設置一些標誌,然後按照任何令您滿意的順序處理這些標誌。 – 2014-10-20 19:46:19

回答

1

處理getopt()讀取的選項有兩種主要方法。一種是在執行與選項相關的操作,getopt()在讀取其餘選項之前識別它;另一種是在進行任何處理之前閱讀所有選項。 (程序並不經常實現混合解決方案;在解析參數時會執行某些選項,但其他選項僅會被記錄下來,並且在處理參數後採取的操作)。

在您的情況中,似乎您需要解析所有在做任何處理之前的選項。如果-a-b在執行操作後終止程序,那麼它們是相互排斥的選項,您應該將其診斷爲錯誤地調用程序。您需要決定是否允許-c以及-a-b

很多時候,您需要配對才能一起工作,或者您需要知道在決定採取何種措施之前,是否已經指定了其中一個,另一個或兩者。另一個要考慮的問題是如果在命令行上重複一個選項,這意味着什麼。

1

沒有辦法讓getopt自己處理這個。最簡單的方法是創建一個標誌位圖,正如@tfahl所建議的那樣。

+3

我不同意'不提供答案'評論。它確實提供了一個答案 - 「不,沒有辦法讓'getopt()'自己處理這個」。這也是一個正確的答案。 – 2014-10-30 17:47:42

相關問題