2
在這裏,我從某處獲取了一個程序來從控制檯讀取系統調用的輸出。 但獲取的錯誤消息我在fp = popen("ping 4.2.2.2 2>&1", "r");
這一行,而不是fp = popen("ping 4.2.2.2", "r");
在運行系統命令和從控制檯獲取輸出時出現混亂
使用2>&1
所以可能有人解釋我什麼是的2>&1
在上述行顯著。
這是我的代碼。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *fp;
int status;
char path[1035];
/* Open the command for reading. */
fp = popen("ping 4.2.2.2 2>&1", "r");
if (fp == NULL) {
printf("Failed to run command\n");
exit;
}
/* Read the output a line at a time - output it. */
while (fgets(path, sizeof(path)-1, fp) != NULL) {
printf("%s", path);
}
/* close */
pclose(fp);
return 0;
}
'2>&1'將'stderr'輸出重定向到'stdout',所以在標準輸出流中接收到錯誤流的消息。如果你在控制檯上運行它,通常'stderr'和'stdout'都會輸出到控制檯。 –
意味着使用2>&1我們可以將錯誤消息轉換爲標準輸出消息? – user1089679
@ user1089679 no convert..it表示我們將stderr的輸出重定向到stdout –