01/10/2018, 13:56

Đọ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?

Vô Thin viết 16:12 ngày 01/10/2018

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.

Dark.Hades viết 15:56 ngày 01/10/2018
JeremyMorgan.com – 23 Sep 11

How to Capture The Output of a Linux Command in C++

A quick way to capture the output of a Linux command in your C++ program

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.

Joker viết 16:02 ngày 01/10/2018

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

Joker viết 16:08 ngày 01/10/2018

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

Bài liên quan
0