Uživatelské nástroje

Nástroje pro tento web


exec

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
exec [2015/12/21 17:38] – [exec rodina] djbuldogexec [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 18: Řádek 18:
   * funkce s ''v'' argumenty předány v poli (poslední NULL)   * funkce s ''v'' argumenty předány v poli (poslední NULL)
   * funkce s ''l'' argumenty předány přes argumenty funkce (pohodlnější, poslední musí být stále NULL)   * funkce s ''l'' argumenty předány přes argumenty funkce (pohodlnější, poslední musí být stále NULL)
 +
 +===== Wrapper =====
 +
 +  * hodí se pro zjištění, kdo jak volá nějakou binárku
 +  * parametry i stdin zapisuje do syslogu
 +
 +<code c++>
 +#include <syslog.h>
 +#include <stdio.h>
 +#include <iostream>
 +#include <sstream>
 +
 +using namespace std;
 +
 +main( int argc, char ** argv, char ** envp )
 +{
 +        stringstream cmdss;
 +        cmdss << "/usr/bin/logger.back ";
 +
 +        int i;
 +        for (i=1; i<argc; ++i) {
 +          cmdss << "'"  << argv[i] << "' ";
 +        }
 +
 +        const string &cmdstr = cmdss.str();
 +        const char* cstr = cmdstr.c_str();
 +
 +        openlog ("bariwrap", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_DAEMON);
 +        syslog (LOG_INFO, "cmd %s", cstr);
 +        closelog ();
 +
 +        FILE *fp = NULL;
 +        fp = popen(cstr, "w");
 +        if (!fp) {
 +                cerr << "Cannot execute" << endl;
 +        }
 +
 +        for (string line; getline(cin,line);) {
 +                syslog (LOG_INFO, "line %s", line.c_str());
 +                fwrite(line.c_str(), 1, line.length(), fp);
 +        }
 +
 +        pclose(fp);
 +
 +}
 +</code>
exec.1450715907.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki