2011-01-21 42 views
14

Tôi đang cố gắng thực thi lệnh Linux trong chương trình c bằng cách sử dụng lệnh hệ thống hệ thống, nhưng không muốn nó kết xuất các bản ghi đầu ra hoặc lỗi trên thiết bị đầu cuối. Tôi nên làm gì? Có cách nào khác để làm điều này?Thực hiện một lệnh Linux trong chương trình c

Trả lời

23

Khi lệnh system() sử dụng trình bao để thực hiện lệnh, bạn có thể chuyển hướng stdout và stderr đến/dev/null, ví dụ:

system("ls -lh >/dev/null 2>&1"); 
+5

+1, Thêm thêm ');' là một bài tập để lại cho người đọc :) –

3

Hiển thị mã cho bạn.

Hãy thử ví dụ:

hệ thống ("ls");

11

popen là một cách khác mà bạn có thể làm tương tự:

void get_popen() 
    FILE *pf; 
    char command[20]; 
    char data[512]; 

    // Execute a process listing 
    sprintf(command, "ps aux wwwf"); 

    // Setup our pipe for reading and execute our command. 
    pf = popen(command,"r"); 

    // Error handling 

    // Get the data from the process execution 
    fgets(data, 512 , pf); 

    // the data is now in 'data' 

    if (pclose(pf) != 0) 
     fprintf(stderr," Error: Failed to close command stream \n"); 

    return; 
} 
+0

Không giống như câu trả lời khác, chương trình này cũng cho phép để có được đầu ra của chương trình. –

Các vấn đề liên quan