/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
Bech_bb 500
kyllekylle 500
jdjespers.. 500
gibson 300
scootergr.. 300
molokyle 287
10  strarup 270
Kald af eksternt program
Fra : Peter Jespersen


Dato : 07-12-07 00:21

Hejsa

Jeg sidder her og nørkler lidt med et lille program, der egentlig burde være
simpelt. Det drejer sig om en god gammeldags gang C og jeg benytter gcc
version 4.2.1 under OpenSUSE 10.3

Det jeg gerne vil er at kalde et eksternt program "text2gif" med et streng
argument (char uptimeStr[MAXBUF]), indeholdende f.eks "-t \"Blah Blah\"
>test.gif".

Hvorledes gør jeg det nemmest ?


På forhånd en ydmyg tak

--

Live long and prosper...

 
 
Arne Vajhøj (07-12-2007)
Kommentar
Fra : Arne Vajhøj


Dato : 07-12-07 00:34

Peter Jespersen wrote:
> Jeg sidder her og nørkler lidt med et lille program, der egentlig burde være
> simpelt. Det drejer sig om en god gammeldags gang C og jeg benytter gcc
> version 4.2.1 under OpenSUSE 10.3
>
> Det jeg gerne vil er at kalde et eksternt program "text2gif" med et streng
> argument (char uptimeStr[MAXBUF]), indeholdende f.eks "-t \"Blah Blah\"
>> test.gif".
>
> Hvorledes gør jeg det nemmest ?

Lav en samlet kommando linie med sprintf og kald funktionen system
med den den.

Arne

Peter Jespersen (07-12-2007)
Kommentar
Fra : Peter Jespersen


Dato : 07-12-07 07:22

Arne Vajhøj wrote:

> Peter Jespersen wrote:
>> Jeg sidder her og nørkler lidt med et lille program, der egentlig burde
>> være simpelt. Det drejer sig om en god gammeldags gang C og jeg benytter
>> gcc version 4.2.1 under OpenSUSE 10.3
>>
>> Det jeg gerne vil er at kalde et eksternt program "text2gif" med et
>> streng argument (char uptimeStr[MAXBUF]), indeholdende f.eks "-t \"Blah
>> Blah\"
>>> test.gif".
>>
>> Hvorledes gør jeg det nemmest ?
>
> Lav en samlet kommando linie med sprintf og kald funktionen system
> med den den.
>
> Arne

Tusind tak Arne

Exec funktions familien drev mig til vanvid

Herligt - hav en god jul

--

Live long and prosper...

Kent Friis (07-12-2007)
Kommentar
Fra : Kent Friis


Dato : 07-12-07 16:35

Den Fri, 07 Dec 2007 07:21:45 +0100 skrev Peter Jespersen:
> Arne Vajhøj wrote:
>
>> Peter Jespersen wrote:
>>> Jeg sidder her og nørkler lidt med et lille program, der egentlig burde
>>> være simpelt. Det drejer sig om en god gammeldags gang C og jeg benytter
>>> gcc version 4.2.1 under OpenSUSE 10.3
>>>
>>> Det jeg gerne vil er at kalde et eksternt program "text2gif" med et
>>> streng argument (char uptimeStr[MAXBUF]), indeholdende f.eks "-t \"Blah
>>> Blah\"
>>>> test.gif".
>>>
>>> Hvorledes gør jeg det nemmest ?
>>
>> Lav en samlet kommando linie med sprintf og kald funktionen system
>> med den den.
>>
>> Arne
>
> Tusind tak Arne
>
> Exec funktions familien drev mig til vanvid

system() er en del af C-standarden. Den supporterer kun lige præcis det
du har brug for, til gengæld er den simpel at bruge. På *nix kalder
den "sh -c" med de parametre du angiver, så selvom system() ikke
har support for at sætte noget i baggrunden, kan man bare skrive et
&-tegn, og lade shell'en gøre det.

exec() er en del af Unix / POSIX, og er kun en tredjedel af system().
De andre to dele hedder fork() og wait(). exec() alene vil stoppe
dit program, og erstatte det (overskrive i RAM) med det program
du forsøger at starte. Hvis det ikke er ønsket, skal den kombineres
med fork(), som starter en ny process, og kun i den nye process skal
man lave en exec(). Og hvis man ikke ønsker at programmerne skal
køre på samme tid, men ens program skal vente på det andet program
afslutter (fx. fordi man skal bruge outputtet fra det), skal den
oprindelige process derefter kalde wait() eller waitpid().

Mvh
Kent
--
"So there I was surrounded by all these scary creatures
They were even scarier than what Microsoft call features"
- C64Mafia: Forbidden Forest (Don't Go Walking Slow).

Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408857
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste