Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

[C] Programma executen

shoekie
5 antwoorden
  • Ey,

    Ik ben bezig met een programmaatje aan het schrijven dat een ander programma moet aanroepen in C onder Linux (RH8.0).
    Voor het executen gebruik ik het volgende:
    [code:1:7f0dc48a73]result=system("ping -c 1 192.168.0.1 -w 1 |grep icmp_seq");[/code:1:7f0dc48a73]
    Het roept dus ping op welke 1 packet verstuurt. Het gevolg hiervan is dat ik de output van ping op mijn scherm zie wat echter niet de bedoeling is. De output moet in een variabele komen (result dus)
    Nu las ik al dat system() als return waarde -1 en <null> heeft. System is neem ik aan voor mij niet de goede functie.
    Welke moet ik hier dan voor gebruiken?

    MVGR,

    Rene
  • Hallo Ey,

    Ik zou de output redirecten naar een logfile in /tmp en deze dan uitlezen.

    de functie system is wel de juiste functie om een extern programma aan te roepen.

    Sjaak
  • Daar had nog nog niet eens aan gedacht :oops: Maar is het echt niet mogelijk om dit in 1x keer doen d.m.v. van een functie?

    Zo heb je bv. in php de functies system(), passthru() en exec() waarbij elke functie een andere return heeft (in variable, meteen op scherm etc..)
  • Tja je moet wel goed opletten welke system call wat teruggeeft. Zo zal de ene je de output geven en de ander alleen een 1 of een 0 (wel of niet gelukt).

    Je zou de output kunnen vangen d.m.v. de STDOUT te redirecten in een file / variabele of whatever.
  • pipes, hebben ze die ook onder linux?

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.