<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TheFox &#187; Prozess</title>
	<atom:link href="http://fox21.at/tag/prozess/feed" rel="self" type="application/rss+xml" />
	<link>http://fox21.at</link>
	<description>Just another Perl hacker.</description>
	<lastBuildDate>Sat, 04 Feb 2012 09:59:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>psg 1.0.0</title>
		<link>http://fox21.at/psg-100-linux-process-list-grep.html</link>
		<comments>http://fox21.at/psg-100-linux-process-list-grep.html#comments</comments>
		<pubDate>Sun, 13 Dec 2009 17:20:09 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[Prozess]]></category>
		<category><![CDATA[Shell]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=1628</guid>
		<description><![CDATA[psg ist ein kleines, hilfreiches Shell-Script zur Auflistung bestimmter Prozesse, das in keinem Linux-System fehlen sollte. So simpel wie hilfreich. Der Sinn und Zweck dieses Scripts besteht darin einen oder mehrere bestimmte Prozesse aufzulisten. Wenn man z. B. feststellen will, &#8230; <a href="http://fox21.at/psg-100-linux-process-list-grep.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>psg ist ein kleines, hilfreiches Shell-Script zur Auflistung bestimmter Prozesse, das in keinem Linux-System fehlen sollte. So simpel wie hilfreich.</p>
<p><span id="more-1628"></span></p>
<p>Der Sinn und Zweck dieses Scripts besteht darin einen oder mehrere bestimmte Prozesse aufzulisten. Wenn man z. B. feststellen will, ob ein bestimmter Prozess noch rennt, oder welche Prozess ID ein Prozess hat. Es koennen auch mehrere Prozessnamen oder Process IDs uebergeben werden, siehe unten <strong>Beispiele fuer die Verwendung</strong>. Das Script verwendet dazu die standard Linux-Programme <strong>ps</strong> (/bin/ps) und <strong>grep</strong> (/bin/grep).</p>
<h2>Installation</h2>
<ul>
<li>psg herunterladen: <em>wget http://software.fox21.at/psg/releases/psg-1.0.0-linux.zip</em></li>
<li>Zip entpacken: <em>unzip </em><em>psg-1.0.0-linux.zip</em></li>
<li>Rechte setzen: <em>chmod 755 psg</em></li>
</ul>
<p>Am besten ist es, wenn psg unter einem Pfad installiert wird, der in der Umgebungsvariable <strong>PATH</strong> (<em>/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin</em>) vorkommt.</p>
<h2>Beispiele fuer die Verwendung</h2>
<p>Beispiel 1: <strong>Programmname</strong></p>
<pre>$ psg init
    1     0  0.0   236 root     init</pre>
<p>Beispiel 2: <strong>Mehrere Programmnamen</strong></p>
<pre>$ psg named ntpd
20163     1  0.0 13108 named    named
13062     1  0.0   600 root     ntpd</pre>
<p>Beispiel 3: <strong>Prozess ID</strong></p>
<pre>$ psg 20163
20163     1  0.0 13108 named    named</pre>
<p>Beispiel 4: <strong>Benutzername</strong></p>
<pre>$ psg thefox
16505 16504  0.0   668 thefox   bash
19804 19801  0.0   680 thefox   sshd
19806 19804  0.0   536 thefox   bash</pre>
<h2>Download</h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/psg/releases/psg-1.0.0-linux.zip" target="_blank">psg-1.0.0-linux.zip</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/psg-100-linux-process-list-grep.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Hintergrundprozess mit C</title>
		<link>http://fox21.at/windows-hintergrundprozess-mit-c.html</link>
		<comments>http://fox21.at/windows-hintergrundprozess-mit-c.html#comments</comments>
		<pubDate>Sat, 03 Oct 2009 13:08:23 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Prozess]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=1302</guid>
		<description><![CDATA[Diese Projekt laesst sich mit dem Programm nohup unter Linux vergleichen. Zu diesem Thema gibt es bereits einen Artikel von mir: Windows Hintergrundprozess mit Perl ist im Grunde das gleiche Projekt. Diesmal ist es in C geschrieben, statt in Perl. &#8230; <a href="http://fox21.at/windows-hintergrundprozess-mit-c.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Diese Projekt laesst sich mit dem Programm <strong>nohup</strong> unter Linux vergleichen. Zu diesem Thema gibt es bereits einen Artikel von mir: <a target="_blank" href="/windows-hintergrundprozess-mit-perl.html" target="_blank">Windows Hintergrundprozess mit Perl</a> ist im Grunde das gleiche Projekt. Diesmal ist es in C geschrieben, statt in Perl.</p>
<p><span id="more-1302"></span></p>
<p>Perl-Scripte haben natuerlich auch Nachteile. Es muss ueberhaupt Perl installiert sein, um ein Perl-Script auf einem PC starten zu koennen. Ausserdem muessen auch die benoetigten <a target="_blank" href="http://search.cpan.org/" target="_blank">Perl-Module</a> installiert sein.</p>
<p>Die Nachteile des daemon-Scripts in Perl, sind die Vorteiles dieses Projektes. daemon.exe muss nicht extra installiert werden, damit man es verwenden kann. Die Vorkompilierte daemon.exe ist in diesem Projekt sofort einsatzbereit. Genau so wie das <a target="_blank" href="http://software.fox21.at/windaemon/releases/windaemon-1.1.0.zip">Perl-Script</a>, erzeugt auch daemon.exe einen Prozess mit <a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms682425(VS.85).aspx" target="_blank">CreateProcess</a>. Die Option DETACHED_PROCESS spielt in beiden Faellen eine Rolle. Diese Option verhindert auch ein CMD Fenster, beim Programm das im Hintergrund rennen soll. In der beigefuegten <strong>notepad-daemon.bat</strong> Datei ist auch ein Beispiel fuer die Verwendung. Natuerlich macht es beim Editor nicht viel Sinn. Wie beim Beispiel, unten auf dieser Seite, ersichtlich, kann man dem Hintergrundprogramm auch einen oder mehrere Uebergabeparameter mit uebergeben. Das heisst, es koennen nicht mehrere Programme gleichzeitig gestartet werden, sondern immer nur eines. Das soll aber nicht heissen, dass nicht mehrere Programme gleichzeitig im Hintergrund rennen koennen. Im unteren Beispiel ist <em>file.txt</em> ein Uebergabeparameter fuer das Programm notepad.exe.</p>
<p>Wie fast alle Programme oder Scripte die ich programmiere, muss auch dieses in einem CMD-Fenster gestartet werden. Um das Programm von jedem beliegigen Ort ausfuehren zu koennen, kopiert man sich daemon.exe am besten nach <strong>C:\Windows\System32</strong>, falls Rechte dafuer vorhanden sind. Anderfalls kann man auch den Pfad zur daemon.exe Datei in die Umgebungsvariable <strong>PATH</strong> hinzufuegen. Wer beim der daemon.exe selber keine Textausgabe haben will, kann bei den Linkereinstellungen der Dev-C++ IDE <em>Kein Konsolenfenster erzeugen</em> auf <em>Yes</em> setzten, oder beim Kompilieren die Option <em>-mwindows</em> hinzufuegen.</p>
<h2><strong>Beispiele fuer die Verwendung</strong></h2>
<pre>daemon.exe notepad.exe</pre>
<pre>daemon notepad.exe file.txt</pre>
<h2><strong>Info zur Kompilierung</strong></h2>
<ul>
<li>OS: Windows Vista Home Premium</li>
<li>IDE: <a target="_blank" href="http://www.bloodshed.net/dev/devcpp.html" target="_blank">Dev-C++</a> 4.9.9.2</li>
<li>Compiler: <a target="_blank" href="http://www.mingw.org/" target="_blank">MinGW</a> (<a target="_blank" href="http://gcc.gnu.org/" target="_blank">GCC</a> 3.4.2)</li>
<li>Lizenz: <a target="_blank" href="http://www.gnu.org/licenses/gpl-3.0.html" target="_blank">GNU GPL v3</a></li>
</ul>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/daemon/releases/daemon-1.0.0-win32.zip">daemon-1.0.0-win32.zip</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/windows-hintergrundprozess-mit-c.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Killall 1.0.0</title>
		<link>http://fox21.at/killall-100.html</link>
		<comments>http://fox21.at/killall-100.html#comments</comments>
		<pubDate>Tue, 25 Aug 2009 18:53:11 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[killall]]></category>
		<category><![CDATA[Prozess]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=1188</guid>
		<description><![CDATA[Unter Linux gibt es das praktische Tool namens killall. Dieses Programm killt alle Programme, die im Uebergabeparameter mit gegeben werden. Ich hab&#8217; dieses Programm fuer Windows mit C++ nachgebaut. killall muss im CMD (Start-&#62;Ausfuehren-&#62;&#8221;cmd&#8221;) ausgefuehrt werden. Es hat keine grafische &#8230; <a href="http://fox21.at/killall-100.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Unter Linux gibt es das praktische Tool namens <strong>killall</strong>. Dieses Programm killt alle Programme, die im Uebergabeparameter mit gegeben werden. Ich hab&#8217; dieses Programm fuer Windows mit C++ nachgebaut.</p>
<p><span id="more-1188"></span></p>
<p>killall muss im CMD (Start-&gt;Ausfuehren-&gt;&#8221;cmd&#8221;) ausgefuehrt werden. Es hat keine grafische Benutzeroberflaeche. Will man es an jedem Ort im CMD Fenster ausfuehren, kopiert man sich <strong>killall.exe</strong> am besten nach <strong>C:\Windows\System32</strong>. Es funktioniert nachtuerlich auch, wenn in der Umgebungsvariable <strong>%PATH%</strong> der Pfad zum Installationsordner eingetragen ist. Im ZIP-File existiert sowohl der <a target="_blank" href="http://software.fox21.at/" target="_blank">Source Code</a>, als auch ein vorkompiliertes EXE-File.</p>
<h2><strong>Beispiele fuer die Verwendung</strong></h2>
<pre>killall.exe calc.exe</pre>
<pre>killall.exe notepad.exe calc.exe</pre>
<h2><strong>Info zur Kompilierung</strong></h2>
<ul>
<li>OS: Windows Vista Home Premium</li>
<li>IDE: <a target="_blank" href="http://www.bloodshed.net/dev/devcpp.html" target="_blank">Dev-C++</a> 4.9.9.2<a target="_blank" href="http://www.bloodshed.net/dev/devcpp.html" target="_blank"><br />
</a></li>
<li>Compiler: <a target="_blank" href="http://www.mingw.org/" target="_blank">MinGW</a> (<a target="_blank" href="http://gcc.gnu.org/" target="_blank">GCC</a> 3.4.2)</li>
<li>Lizenz: <a target="_blank" href="http://www.gnu.org/licenses/gpl-3.0.html" target="_blank">GNU GPL v3</a></li>
</ul>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/killall/releases/killall-1.0.0-win32.zip" target="_blank">killall-1.0.0-win32.zip</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/killall-100.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pwait 1.0.0</title>
		<link>http://fox21.at/pwait-100.html</link>
		<comments>http://fox21.at/pwait-100.html#comments</comments>
		<pubDate>Fri, 10 Apr 2009 10:12:00 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Prozess]]></category>

		<guid isPermaLink="false">http://fox21.at/?p=906</guid>
		<description><![CDATA[Es gibt kein Problem, das man nicht mit Perl loesen koennte. pwait ist ein Perl Script, das auf einen anderen Prozess wartet und dann selber einen weiteren Prozess startet. Ich hab&#8217; mich schon oft geaergert, nachdem ich ein Shell Script &#8230; <a href="http://fox21.at/pwait-100.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es gibt kein Problem, das man nicht mit Perl loesen koennte. pwait ist ein Perl Script, das auf einen anderen Prozess wartet und dann selber einen weiteren Prozess startet.</p>
<p><span id="more-906"></span></p>
<p>Ich hab&#8217; mich schon oft geaergert, nachdem ich ein Shell Script oder ein Programm gestartet hatte und wollte, dass, nachdem es alles abgearbeitet hatte, noch weitere Aktionen ausfuehrt. Desswegen entschloss ich mich dazu, diese Script zu schreiben. Es wird dem Script eine Prozess ID und ein Pfad zu einem weiteren Programm uebergeben, das danach gestartet wird. pwait wartet solange bis der Prozess beendet wurde und startet anschliessend ein anderes Programm. Es koennen natuerlich auch mehrere Prozess IDs und Programmpfade uebergeben werden. In dem Fall wartet das Perl Script so lange, bis alle Prozesse, deren IDs uebergeben worden sind, beendet wurden. Um einem Programm, das gestartet werden soll, auch Argumente zu uebergeben, muss dieses sammt den Argumenten unter Hochkomma (&#8220;&#8221;) gestellt werden.</p>
<p>In diesem Beispiel wartet pwait bis der Prozess mit der ID <strong>1234</strong> beendet wurde und startet anschliessend den Befehl &#8220;sleep 10&#8243;.</p>
<pre>./pwait.pl 1234 "sleep 10"</pre>
<h2><strong>Benoetigte Perl-Module</strong></h2>
<ul>
<li>Win32::Process</li>
<li>Win32::Process::List</li>
</ul>
<h2><strong>Download</strong></h2>
<ul>
<li><a target="_blank" href="http://software.fox21.at/pwait/releases/pwait-1.0.0.zip">pwait-1.0.0.zip</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/pwait-100.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Hintergrundprozess mit Perl</title>
		<link>http://fox21.at/windows-hintergrundprozess-mit-perl.html</link>
		<comments>http://fox21.at/windows-hintergrundprozess-mit-perl.html#comments</comments>
		<pubDate>Fri, 30 Jan 2009 12:17:51 +0000</pubDate>
		<dc:creator>TheFox</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[ActivePerl]]></category>
		<category><![CDATA[Daemon::Easy]]></category>
		<category><![CDATA[ERROR]]></category>
		<category><![CDATA[POSIX]]></category>
		<category><![CDATA[Proc::Background]]></category>
		<category><![CDATA[Prozess]]></category>
		<category><![CDATA[Visual Basic]]></category>
		<category><![CDATA[Win32::Console]]></category>
		<category><![CDATA[Win32::Process]]></category>
		<category><![CDATA[Working::Daemon]]></category>

		<guid isPermaLink="false">http://cms.fox21.at/nocache/?p=605</guid>
		<description><![CDATA[Ein Perl-Script unter Windows im Hintergrund rennen zu lassen waere schon etwas feines, dachte ich mir. Aber Windoof laesst keine Hintergrundprozesse zu, wird das jeweilige Programm (in dem Fall perl.exe) von der Commandline ausgefuehrt. Ich hab&#8217;s mit allen moeglichen Tricks &#8230; <a href="http://fox21.at/windows-hintergrundprozess-mit-perl.html">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ein Perl-Script unter Windows im Hintergrund rennen zu lassen waere schon etwas feines, dachte ich mir. Aber Win<strong>doof</strong> laesst keine Hintergrundprozesse zu, wird das jeweilige Programm (in dem Fall perl.exe) von der Commandline ausgefuehrt.</p>
<p><span id="more-605"></span></p>
<p>Ich hab&#8217;s mit allen moeglichen Tricks probiert. STDIN, STDOUT und STDERR nach nul (unter Windows nur mit einem L) umleiten, <em>fork()</em>, von einem anderen Script aus mit <em>open</em> eine Pipe oeffnen, mit <em>cmd.exe /C</em> und mit <em>start /B</em>. Und auch all&#8217; diese verschiedenen Moeglichkeiten kombiniert. Aber nichts funktioniert. Ich kann mich an <strong>Visual Basic</strong> erinnern. Sogar <strong>das</strong> kann Prozesse komplett im Hintergrund starten. Aber es liegt nicht an Perl, dass die Windows Commandline so <span style="text-decoration: line-through;">beschissen</span> ist. Das zeigt, dass die Linux Shell sehr maechtig ist. Wofuer gibt es dann unter Windows eigentlich cmd.exe, wenn sie nichts kann? Das ist wie der Blinddarm im menschlichen Koerper. Es muss doch eine Moeglichkeit geben, um ganz einfach einen Prozess im Hintergrund rennen zu lassen. Ich will nicht extra Module installieren muessen, nur um dieses Problem zu loesen. Selber schuld, wieso verwend&#8217; ich auch Windows?</p>
<p>Schliesslich blieb mir doch nichts anderes ueber, als ein vorhandenes Perl-Modul fuer diesen Job zu installieren. Jedoch bevor ich ein passendes Modul gefunden hatte, probierte ich folgende Module aus: <a target="_blank" href="http://search.cpan.org/perldoc?Daemon::Easy" target="_blank">Daemon::Easy</a>, <a target="_blank" href="http://search.cpan.org/perldoc?Working::Daemon" target="_blank">Working::Daemon</a>, <a target="_blank" href="http://search.cpan.org/perldoc?Win32::Console" target="_blank">Win32::Console</a> und <a target="_blank" href="http://search.cpan.org/perldoc?Proc::Background" target="_blank">Proc::Background</a>. Alle haben eines gemeinsam: <a target="_blank" href="http://search.cpan.org/perldoc?POSIX" target="_blank">POSIX::setsid()</a>. <em>ERROR: POSIX::setsid not implemented on this architecture</em>. Will man setsid() unter Windows XP verwenden, wird diese Fehlermeldung angezeigt. <a target="_blank" href="http://search.cpan.org/perldoc?Win32::Process" target="_blank">Win32::Process</a> war dann schliesslich des Raetels Loesung. Die anderen Module starten zwar auch einen Prozess im Hintergrund, aber sobald cmd.exe beendet wird, werden auch alle anderen Prozesse beendet, die ueber diese Console gestartet worden sind. Win32::Process startet naemlich einen richtigen Hintergrundprozess, vorausgesetzt das cFlag ist DETACHED_PROCESS.</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">use</span> Win32<span style="color: #339933;">::</span><span style="color: #006600;">Process</span><span style="color: #339933;">;</span>
Win32<span style="color: #339933;">::</span><span style="color: #006600;">Process</span><span style="color: #339933;">::</span><span style="color: #006600;">Create</span><span style="color: #009900;">&#40;</span>
	<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$proc</span><span style="color: #339933;">,</span>
	<span style="color: #0000ff;">$^X</span><span style="color: #339933;">,</span>
	<span style="color: #ff0000;">'perl run.pl'</span><span style="color: #339933;">,</span>
	<span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span>
	DETACHED_PROCESS<span style="color: #339933;">,</span>
	<span style="color: #ff0000;">'.'</span>
<span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Win32::Process::Create failed<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<h2><strong>Benoetigte Perl-Module</strong></h2>
<ul>
<li>File::Basename</li>
<li>Win32::Process</li>
</ul>
<h2><strong>Download</strong></h2>
<ul>
<li> <a target="_blank" href="http://software.fox21.at/windaemon/releases/windaemon-1.1.0.zip">windaemon-1.1.0.zip</a></li>
<li><del datetime="2009-03-24T19:44:14+00:00"><a target="_blank" href="http://software.fox21.at/windaemon/releases/windaemon-1.0.0.zip">windaemon-1.0.0.zip</a></del></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fox21.at/windows-hintergrundprozess-mit-perl.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

