[LINUX:78] merhaba

nkoc (nkoc@ykb.com)
Mon, 2 Feb 1998 11:46:14 +0200


Merhaba,

Anladigim kadari ile system'deki komutlarin sonuclarini
C'deki degiskenlere aktarmak istiyorsunuz. Bunun C'de cok basit
bir cozumu var: PIPE kullanimi. PIPE bir cesit IPC (Inter Process
Comm. ) ozelligidir. Bu tur isler icin idealdir. PIPE ile IPC
yapan cok basit bir programi ekte veriyorum. Klasik dosya islemlerinden
pek farkli degil. Linux'deki libc'yi aciklayan metinlere bakarsan
yeterli bilgi bulabilirsin. Umarim isini gorur.
Saygilar.

Nazim Koc.

---------------------------------------------------------------------------
------------

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>

int main(void){.h>

FILE *read_fp ;
char buffer[BUFSIZ+1] ;
int chars_read ;

memset(buffer, '\0', sizeof(buffer)) ;

read_fp= popen("who|wc -l", "r") ;

if (read_fp != NULL){
chars_read= fread(buffer, sizeof(char), BUFSIZ, read_fp) ;
while(chars_read > 0){
printf("Sistemdeki kullanici sayisi, %s\n", buffer) ;
chars_read= fread(buffer, sizeof(char), BUFSIZ, read_fp) ;
}
pclose(read_fp) ;
exit(EXIT_SUCCESS) ;
}

exit(EXIT_FAILURE) ;

} /* main */

---------------------------------------------------------------------------
-------------

> C de system fonksiyonunu kullanirken assagidaki ornekteki gibi
> bi user in tty sini pts diye bir degiskene atamak istiyorum ancak
> system icerisindeki komutu yapip direk ekrana yaziyor compiler
> hata vermiyor ama istedigim de olmuyor boyle bir seyi nasil yapabilirim
> acaba simdiden tesekkurler
>
> char pts;
> pts=system("w |grep bi_user |awk '{print $2}'");
> printf("o user su an %c de \n",pts");
> Cem CEVIK
>
cemc@onyx.msis.metu.edu.tr
>
e106334@orca.cc.metu.edu.tr>
>