簡體   English   中英

回聲(shell)和C語言

[英]echo (shell) and C language

我有一個用C語言編寫的程序。 在此程序中,我有一個整數變量QS。 該變量的值在程序執行期間發生變化。在用C編寫的程序中,我想使用echo命令外殼顯示此變量QS。

我聽說過紙尿褲C的system()功能讓您可以使用終端機或控制台

系統(“ echo $ QS”)執行此操作時,無法識別變量QS並且不顯示任何內容。

您對我該如何做有任何具體答案? 以及如何識別C語言中的變量?

我知道使用簡單的printf可以顯示此變量,但是我要使用echo。

預先感謝您的回答。

Shell無法訪問您的程序變量值。 您必須先將值設置到環境中。 有不同的方法可以做到這一點。 其中之一是(在linux / unix中工作)

int main()  
{  
    char chProgramVar[] = "hello world" ;  
    setenv("ShellVar", chProgramVar, 1) ;  
    system("echo $ShellVar") ;  
}  

正如其他人所說,shell無法訪問您的程序變量。 您可以使用sprintf將值插入要使用system執行的命令中:

char command[BUFSIZ];

sprintf(command, "echo %d", QS);
system(command);

您使用system(3)調用生成的shell對C程序中的任何變量一無所知。 執行所需操作的最簡單方法是將數據導出為環境變量。 由於環境是通過對system(3)的調用繼承的,因此您只需使用setenv(3)設置變量即可。 但是,必須首先將其格式化為字符串:

int QS = ...;
char QSStr[32];  // Longest integer string is INT_MIN = -2147483648, assuming
                 // that sizeof(int) == 4
snprintf(QSStr, sizeof(QSStr), "%d", QS);  // Convert to string
setenv("QS", QSStr);  // Set the environment variable)
...
system("echo $QS");  // Will print the value of QS

您必須將數字格式化為字符字節。 數字“ 4”具有不同的整數表示形式作為打印字符。

使用printf打印數字,或使用sprintf將其重新格式化為新緩沖區中的字符。 然后,您可以使用系統回顯(無論出於何種原因)來打印新緩沖區。

char s[16]; // might be too small
sprintf(s, "%d", integer_var); 
// s is the string  

暫無
暫無

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

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