Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

c'de execle ile send mail meselesi


Öne çıkan mesajlar

Mesaj tarihi:
selamlar, elimde normalde soyle birsey yapan bir kod vardi;


fd=fopen("/dev/null", O_RDWR);
execle("/bin/mail","-s",subject,rect,NULL,NULL);


tabi bu, konusu subject string'ine esit olan, alicisi da rect olan bos bir mail gonderiyordu.

lakin ben buna icerik de koyayim istiyorum, fakat su elbette ki calismiyor;


fd=fopen("/dev/null", O_RDWR);
execle("/bin/mail","-s",subject,rect,"<","/somefile",NULL,NULL);

alici listesi su hale burunuyor: rect, "<","/somefile"

benim 'somefile' dedigim dosya da birkac process tarafindan paylasilabilir. bir lock koymak veya her process icin ayri bir dosya acmak da istemiyorum. ne yapayim ? aklima hicbirsey gelmedi.
Mesaj tarihi:
Su an elimin altinda bash yok o yuzden deneyemiyorum da, eger stdin'den direk okuyorsa /bin/mail, freopen ile dosyayi stdin'e yonlendirerekten yapabilirsin dogru anladiysam.
Mesaj tarihi:
yok ama ben bir dosyadaki datayi atmak istemiyorum aslinda. cunku bu fonksiyona birkac user/process paylasiyor olabilir. lock koymak da istemiyorum. ben stringi oldugu gibi aninda gondermek istiyorum.
Mesaj tarihi:
iki uc ornekten bakinca environmentta MESSAGE tanimliysa mail metin olarak onu yolluyor gibi anladim ben

execle icin son parametre environmenti belirtiyormus , char** olarak
$MESSAGE=hede 'yi ona besleyip sonra environmenti vermeyi deneyince oluyor mu ?
Mesaj tarihi:
valla ikinci dediğin doğru da, ilk dediğin doğru değil sanırım. koda girişmeden, direk elle yaptım, çalışmıyor.


export MESSAGE="selam naber"
mail -s "subj" [email protected] < /dev/null

body'si boş mail geliyor yine.

şu çalışıyor da, bunu nasıl c'de şeyettirebilirim bilemedim.


echo $MESSAGE | mail -s "subj" [email protected]
Mesaj tarihi:
bir şekilde şunu oldurmam lazım da, niye hatırlamıyorum şimdi çalışmamıştı.


execle("echo test | /bin/mail","-s",subject,rect,",NULL,NULL);

asıl hedef bu tabi

execle("echo ",mystring," | /bin/mail","-s",subject,rect,",NULL,NULL);
Mesaj tarihi:
psodokod tadinda soyle olamaz mi

fd=fopen("/tmp/fizban_asdfgh",'w');
fprintf(fd,"<metin buraya>",...); //veya neyle istersen onunla
fclose(fd);
execle("mail bilmemne < /tmp/fizban_asdfgh",dsaf,asds,0,0);
unlink("/tmp/fizban_asdfgh");
Mesaj tarihi:
unique temporary file uretebiliyor olman lazim kapatinca silinen

http://unixhelp.ed.ac.uk/CGI/man-cgi?mktemp+3

tabi hepsinin bir sorunu trigi var da
kendin surekli artan bir extensiona sahip filename uret ?
sadece enumerator artisi ve oradan filename alimi icin critical sectiona girersin

tabi dosya acip oraya yazip oradan okumak cok kotu bir yol da
olur sanki performans cok muhim degilse
Mesaj tarihi:
ya performansin bayagi muhim oldugu birsey aslinda :) anlamadigim nokta, mail aplikasyonuna nasil benim direk string gonderemedigim. bayagi basit birsey istiyorum ama illa lafi dolandirmam gerekiyor.
Mesaj tarihi:
yanlis anlamadiysam sorunu, popen senin cozumun.

mail processini popen ile acip, mesaj icerigin adamin stdin'e yazmalisin. surda guzel bir ornek var:

http://www.tldp.org/LDP/lpg/node12.html
×
×
  • Yeni Oluştur...