8 Ağustos 2007 Çarşamba

Kod içerisinden başka bir programa ulaşmak

Bunun için 3-4 tane yol var, birincisi forklamak bildiin çatal işte....

çağıracağımız program ping olsun
evvela parametreleri belirleriz.

char *argcv[]={"ping", "192.168.2.199"};

akabinde forklayarak çağırırız.

if ( (pid = fork()) < 0) {
return -1;
} else if(pid) {
execvp(argcv[0], argcv);
}



şimdi execvp fonksiyonu pingi çalıştırırken bizim kodun işleyişi devam etmekte. Çalışan programı (ping'i) öldürmek (bkz. g)için

kill((getpid() - 1), SIGQUIT);
wait(&status);

yaparız. burada gelen pid den 1 çıkartıyoruz çünkü çalışan 2 ayrı programımız oluyor ve ping o an yürüyen programdan bir önceki program falan filan işte....

şimdi efennim bu çağırdıımız programın outputu ekrana değilde bi dosyaya yazdırılsın derseniz. popen fonksiyonu kullanıyorsunuz. Bu fonksiyon kendi içerisinde fork ve/ya pipe işlemlerini hallediyo. şöyleki....

FILE * fp;

fp = popen("ping -c 5 192.168.2.199", "r");

if (fp == NULL) {
printf("error occured while trying to ping\n");
return -1;
}

ahanda oldu. Way efendim ben ekrandada göreyim dosyaya da yazsın dersen, aç oku birader derim...

char line[100];

while ( fgets( line, 130, fp) ) {
printf("%s", line);
}

adi hayırlı traşlar......

Hiç yorum yok: