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......
ç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:
Yorum Gönder