![](/img/trans.png)
[英]how to get the echo statements as well as execution status from a shell script into a c++ program
[英]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.