2012-08-07 24 views
10

'daki stdout'tan alma Sistem/Linux altında bir sistem komutunu çalıştıran bir C programı yazıyorum. Komut, bazı metinleri stdout'a verir ve çıkışı bir dizeye veya karakter dizisine yakalamaya çalışıyorum.Bir sistem komutunun çıkışını C

system("ls"); 

Stdout'a geçerli dizinin içeriğini listelemek istiyorum ve nasıl yapmak C

yılında programlı bir değişken içine verilerini yakalamak edebilmek istiyorum: Örneğin

Bunu yap?

Teşekkürler.

cevap

13

popen numaralı telefonu kullanmak istiyorsunuz. fopen gibi bir akış döndürür. Bununla birlikte, akışı pclose ile kapatmanız gerekir. Bunun nedeni, pclose'un alt işlemin başlatılmasıyla ilgili kaynakları temizlemeyle ilgilenmesidir.

FILE *ls = popen("ls", "r"); 
char buf[256]; 
while (fgets(buf, sizeof(buf), ls) != 0) { 
    /*...*/ 
} 
pclose(ls); 
+0

Teşekkürler, bu işe yaradı. – user1118764