![](/img/trans.png)
[英]how we can call a system function like pwd or ls -l without using system() or exec() function using c or c++ in linux?
[英]How can we check if a given input is a valid system command like "ls" or "cd" in c program?
我正在編寫將“ls”或“cd”等系統命令作為輸入的 ac 程序。但是,用戶可以給出任何類型的命令,其中有些命令不是命令。我如何才能找到哪些命令有效,哪些無效?我正在 Ubuntu 中編寫代碼。
在我的腦海里,有兩種方法可以檢查輸入是否是有效的系統命令,而無需實際嘗試運行它:
一長串if()
s 和else if()
s,其中strcmp()
輸入字符串與硬編碼的、預先確定的有效命令列表 - 這可能相對較慢,無論是寫入還是運行,但有條件 -使用#ifdef
編譯,幾乎可以完美移植(即,只要付出足夠的努力,就可以從一個代碼庫中使用 Windows、Linux、BSD等)。
如果您不介意僅限於類 UNIX 平台,請解析$PATH
變量,並在從$PATH
找到的目錄中搜索與輸入字符串具有相同文件名的可執行文件,如果不匹配則處理錯誤.
您可能希望通過硬編碼一些$PATH
可能找不到的異常來實現2.
和1.
的混合。
恕我直言,但是,我不明白您為什么要這樣做; 這對我來說似乎令人費解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.