簡體   English   中英

在C程序中執行SET命令

[英]Execute SET command in c program

我創建了一個小微型外殼,讓用戶輸入“ ls”之類的命令,它將列出目錄的內容,就像應該在我的代碼中使用execv()一樣,但這似乎不適用於用戶輸入類似“ set name =“ bob””的內容。 我一直在各處尋找我應該在用戶輸入代碼時執行set命令的代碼,而我能找到的最好的方法是system(),但這仍然對我不起作用。 有任何想法嗎?

set是一個shell內置命令,而不是一個外部命令(實際上,它必須具有預期的作用,即在shell進程本身中修改shell變量)。

這意味着您需要通過在外殼內部本身中查找和處理set ,方法是將命名變量添加到一些跟蹤外殼變量的內部數據結構中(如果存在的話,則對其進行更新)。

由於您正在執行fork-and-exec或system(),因此該命令實際上是在單獨的進程中運行的。 在此過程中發生的事情(例如設置環境變量)不會影響父級的環境。 (一個單獨的問題是set實際上不會創建環境變量。您需要在[ba] sh中export或在[t] csh中使用setenv來執行此操作。)

因此,您需要編寫迷你外殼代碼以顯式處理set命令,而不是將其傳遞給另一個程序。

您可能要看一下setenv(3)和getenv(3)。 這些是用於從C程序中更改和讀取環境變量的函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM