Help me system()

5 отговора 219 прегледа
#1

Help me system()

Zdraveyte na vsi4ki vyv foruma.
Imam edin vypros i shte sym mnogo blagodaren, ako niakoy mi pomogne.
Zna4i funkciata "system" na C++ moje da izpylniava DOS komandi (a i Linux komandi syshto). Naprimer
system("dir");
shte izpylni comandata dir i na ekrana shte se poyavi rezultata ot izpylnenieto. Samo, 4e na men ne mi triabva rezultata da se poyaviava na ekrana, a bih iskal da go zapisha v niakoy string. Moje li tova da se napravi. Mislia, 4e biah se natyknal na neshto takova v tozi ili v niakoy drug forum, no ne se seshtam to4no kyde beshe.
Mersi predvaritelno.

Отговор
в отговор на system #2

Re: Help me system()

файл не те ли устройва?

Я вышел им наперерез!
Отговор
в отговор на Resurrector #3

Re: Help me system()

Ne, ne me ustroyva, no kaji ideyata pa moje da se dosetia neshto sled tova.

Отговор
в отговор на system #4

Re: Help me system()

ami prenasochwash izhoda...
dir > myfile
a posle si chetesh faila w sting
ako e pod unix moje da probwash da izpylnish komandata
w apostrofi i da set-wash niakoia promenliwa w environmenta
towa sega si go izmisliam neznam dali shte
stane sys system, po-skoro niama da stane...
shte wzema da si sloja linux...

moje da wiknesh system() mseniash faila na standartnia izhod
ako shell-a pusnat sys system() naslediawa standarnite i/o failowe

mislia che izhoda e s file handle == 1
moje da polzwah fileno( stdout )

t.e.
old_output = dup(1);

new_output = open( "myfile", ..
dup2( new_output, 1 );
...
dup2( 1, new_output );
dup2( old_output, 1);

ako smeniash handle na FILE fail triabwa da si go flushwash
s fflush

ako iskash i stderr da prenasochish wyw tozi file, ti go ostawiam za domashno:)

Отговор
в отговор на system #5

Re: Help me system()

Ami programata se printi na STDOUT koito e Failov Descriptor i mozesh da mu suzdadesh kopie sus dup2 (int oldfd, int newfd) i sled tova da si prochetesh dannite ot failovija descriptor s read(fd,buff,count);

Znachi tova e pod UNIX no pishe che sa po POSIX a do kolkoto si spomnjam Windows poddurzashe POSIX no ne sum mnogo siguren v tova. Taka che tova moze i da ne vurvi pod Win no probvaj

za poveche info

man dup
man read

Отговор
в отговор на system #6

Re: Help me system()

sto ne probas s popen

Отговор