Đọc output của command line từ C++

Hi all,
Em đang viết một chương trình C++ cho phép thực thi các command line linux như: ls, cp, … và đọc các thông tin output của các lệnh đó.
Cách làm hiện tại là chuyển hướng output ra 1 file txt ví dụ: ls > tmp.txt . Sau khi thực hiện xong lệnh ls thì chương trình đọc file txt ra.
Vấn đề là phải chờ lệnh thực hiện xong thì mới đọc file tmp.txt được (trong trường hợp chạy nhiều lệnh hoặc copy nhiều file). Nhờ các cao thủ giúp đỡ xem có cách nào khi chạy nhiều command thì mình có thể lấy luôn output của lệnh đó được không?

Nếu lệnh chưa thực hiện xong, thì output nó nằm trong vùng đệm của nó, dễ gì mà chương trình khác can thiệp được.

Cho nên, chủ topic nên tìm hiểu cơ chế pipline của Linux hoặc cách gán output của một lệnh cho biến môi trường, rồi chương trình C++ của chủ topic đọc biến môi trường thay vì đọc file.

Chạy nhiều lệnh hay làm gì gì đó nhiều thì sẽ do cách mà bạn cấu trúc chương trình.
Chương trình của bạn lúc này có thể là một terminal thực sự rồi, việc quản lí các process con thì cần tới thread hoặc thứ gì đó tương tự. Hãy mở terminal lên và xem cách nó hoạt động.

1 Like

Thanks bạn nhé. Mình sẽ thử với popen() :slight_smile:

Thanks bạn nhé. Vừa sau khi post câu hỏi thì cũng search được bài này hehe :smiley:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?