Czesc ;) to znowu ja,
Mam dylemat, program (server) nasluchuje w nieskonczonosc. Wszystko jest ok, ale gdy chce odpalic funkcje w tym programie, ktora rowniez nasluchuje w nieskonczonosc, to nasluchiwanie tej pierwszej juz "niedziala" i tylko ta nowo uruchomiona funkcja nasluchuje.
Mam nadzieje ze da sie zrozumiec. Wiec jak sobie z tym poradzic? Pomyslalem Od razu o watkach/procesach, stworzyc nowy, dla tej funkcji, zeby dzialala niezaleznie od nasluchiwania serwera.
fork() odpada bo programuje w dev-cpp pod Win, wiec przyjrzalem sie funkcjom CreateProcess i CreateThread.
Nierozumiem bledu ktory wyskakuje, taki programik na probe zeby stworzyc drugi niezalezny proces/watek.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
BOOL CreateProcess(
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
BOOL fInheritHandles, // handle inheritance option
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new envirnment block
LPCTSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFO lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInformation // process information
);
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
char szExe[] = "cmd.exe";
int main(int argc, char *argv[])
{
if(CreateProcess(0, szExe, 0, 0, FALSE, 0, 0, 0, &si, &pi))
{
// optionally wait for process to finish
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
system("PAUSE");
return 0;
}
I jaki wynik egzekucji programu? ;]
16 G:\Dev-Cpp\proces.c conflicting types for 'CreateProcessA'
1173 g:\Dev-Cpp\include\winbase.h previous declaration of 'CreateProcessA' was here
16 G:\Dev-Cpp\proces.c conflicting types for 'CreateProcessA'
1173 g:\Dev-Cpp\include\winbase.h previous declaration of 'CreateProcessA' was here
G:\Dev-Cpp\Makefile.win [Build Error] [proces.o] Error 1
Rady, kody, mile widziane :).