To jest mój pierwszy raz i chciałbym wykonać równoległy proces za pomocą funkcji Windows CreateProcess. Opierając się na przykład w MSDN stworzyłem LPTSTR
"(non-const) TCHAR string"command line argumentu jak tenbłąd C3861: "_tcsdup": nie znaleziono identyfikatora
LPTSTR szCmdline[] = _tcsdup(TEXT("\C:\\MyProgram_linux_1.1\\MyProgram.exe"));
The LPTSTR Linia argumentu char and string types are discussed here
komenda jest przekazywana do CreateProcess
jak ten
if (!CreateProcess(NULL, szCmdline, /*...*/)) cout << "ERROR: cannot start CreateProcess" << endl;
a tymi nagłówkami są obecne
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <strsafe.h>
#include <direct.h>
Na kompilacji to jest błąd:
error C3861: '_tcsdup': identifier not found
Poszukiwanie tego błędu znaleziono the same error but the solution was specific to using a .NET framework zamiast wyjaśnianie error C3861: '_tcsdup'
Nie wiem, czy to związane, ale istnieje również error C2059: syntax error : ')'
na if (!CreateProcess(NULL, szCmdline, /*...*/)) cout << "ERROR: cannot start CreateProcess" << endl;
W jaki sposób naprawiono ten błąd? I co się z tym dzieje?
Używam również funkcji CreateProcess
as a learning step towards learning the Linux fork()
- Interfejs Visual Studio jest łatwiejszy w użyciu, a po debugowaniu i działa, zmieni się na interfejs g ++ i zmieni się na fork()
i od tego momentu debuguję - więc rozwiązanie który prowadzi do fork()
, jeśli to możliwe, jest najbardziej korzystny.
Musisz '' #include (lub zmień '_tcsdup' na' strdup' i zaprzestań używania makr 'T'). –
Wow ... używasz 'CreateProcess' do nauki' fork'? Dlaczego nie nauczyć się "widelca"? To są bardzo różne bestie. – nneonneo
Jedyne co mają wspólnego 'fork' i' CreateProcess' jest to, że oba są funkcjami ... Tinkering z 'CreateProcess' jest tak samo prawdopodobne, że pomoże ci zrozumieć' fork' jako uczenie się francuskiego może pomóc ci mówić po japońsku . –