feri88
یک شنبه 16 خرداد 1389, 14:23 عصر
سلام
من یه سمپل کد از msdn مربوط به ایجاد process رو کامپایل کردم ولی نمی دونم چه جوری باید اون رو اجرا کنم؟!
این از کد:
#include <windows.h>#include <stdio.h>#include <tchar.h>void _tmain( int argc, TCHAR *argv[] ){ STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); if( argc != 2 ) { printf("Usage: %s [cmdline]\n", argv[0]); return; } // Start the child process. if( !CreateProcess( NULL, // No module name (use command line) argv[1], // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags NULL, // Use parent's environment block NULL, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi ) // Pointer to PROCESS_INFORMATION structure ) { printf( "CreateProcess failed (%d)\n", GetLastError() ); return; } // Wait until child process exits. WaitForSingleObject( pi.hProcess, INFINITE ); // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread );}
بعد از اینکه پروژه رو می سازم، یه فایل .exe ایجاد میشه (من اسم پروژه رو process گذاشتم و فایل process.exe ایجاد میشه!) چون تابع main این کد، آرگومان (argc & argv ) داره لازمه که با محیط cmd بهش آرگومان بدم و فایل exe اش رو اجرا کنم.
توضیحات مربوط به تابع CreateProcess رو هم در msdn دیدم، ولی چون تا حالا با processها و threadها کار نکردم، نمی دونم چه جوری باید اونها رو اجرا کنم؟!
ظاهرا برای ایجاد یک process حتما باید از طریق محیط cmd ای عمل کرد!
اومدم توی محیط cmd، دایرکتوری جاری رو به فولدر حاوی process.exe تغییر دادم و دستور process 2 (2 رو به خاطر یک بخش موجود در کد مربوط به argc گذاشتم) رو اجرا کردم ولی ارور داد، یعنی راستش اصلا نمی دونم چه جوری باید این برنامه رو اجرا کنم و وقتی اجرا بشه، پروسه ایجاد شده در کجا قرار می گیره و چه جوری میشه اون رو دید؟ (میخواستم با دیباگ این رو بفهمم ولی نشد!)
لطفا در مورد این کد و نحوه اجرای اون و یا عملکرد کلی اون یه توضیح مختصری بدین
با تشکر
من یه سمپل کد از msdn مربوط به ایجاد process رو کامپایل کردم ولی نمی دونم چه جوری باید اون رو اجرا کنم؟!
این از کد:
#include <windows.h>#include <stdio.h>#include <tchar.h>void _tmain( int argc, TCHAR *argv[] ){ STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); if( argc != 2 ) { printf("Usage: %s [cmdline]\n", argv[0]); return; } // Start the child process. if( !CreateProcess( NULL, // No module name (use command line) argv[1], // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags NULL, // Use parent's environment block NULL, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi ) // Pointer to PROCESS_INFORMATION structure ) { printf( "CreateProcess failed (%d)\n", GetLastError() ); return; } // Wait until child process exits. WaitForSingleObject( pi.hProcess, INFINITE ); // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread );}
بعد از اینکه پروژه رو می سازم، یه فایل .exe ایجاد میشه (من اسم پروژه رو process گذاشتم و فایل process.exe ایجاد میشه!) چون تابع main این کد، آرگومان (argc & argv ) داره لازمه که با محیط cmd بهش آرگومان بدم و فایل exe اش رو اجرا کنم.
توضیحات مربوط به تابع CreateProcess رو هم در msdn دیدم، ولی چون تا حالا با processها و threadها کار نکردم، نمی دونم چه جوری باید اونها رو اجرا کنم؟!
ظاهرا برای ایجاد یک process حتما باید از طریق محیط cmd ای عمل کرد!
اومدم توی محیط cmd، دایرکتوری جاری رو به فولدر حاوی process.exe تغییر دادم و دستور process 2 (2 رو به خاطر یک بخش موجود در کد مربوط به argc گذاشتم) رو اجرا کردم ولی ارور داد، یعنی راستش اصلا نمی دونم چه جوری باید این برنامه رو اجرا کنم و وقتی اجرا بشه، پروسه ایجاد شده در کجا قرار می گیره و چه جوری میشه اون رو دید؟ (میخواستم با دیباگ این رو بفهمم ولی نشد!)
لطفا در مورد این کد و نحوه اجرای اون و یا عملکرد کلی اون یه توضیح مختصری بدین
با تشکر