2012-05-16 124 views
4

execv()函數需要一個NULL已終止的字符串數組,但不包含參數個數。它使用標記值(NULL指針)來確定數組何時結束。我可以將argv從main傳遞給execv嗎?

execv()狀態手冊頁...

第一個參數,按照慣例,應該指向與正在執行的文件相關聯的文件名 。指針數組必須由NULL指針終止。

...所以我的問題是....

我想從main()argv傳遞給execv()

我可以確定進入main的argv是否被NULL指針終止? 也就是說,我可以放心,argv[argc] == NULL還是我必須分配我自己的char*數組大小爲argc + 1並把NULL放在argc索引中?

如果我可以放心,是否記錄在某處?

感謝, 〜埃裏克

回答

7

是。 argv矢量始終是NULL終止。

的C99標準草案規定:

如果他們宣佈,該參數爲main功能應當遵守下列 約束:

  • argc值應爲正數。
  • argv[argc]應該是空指針。
+3

您能否引用此消息嗎? –

+5

@ ErnestFriedman-Hill從標準的第5.1.2.2.1節(例如http://c0x.coding-guidelines.com/5.1.2.2.1.html) –

+0

完美,謝謝! –

相關問題