菜单

操作系统实验及代码(全),操作系统实验代码

2019年4月4日 - 皇家赌场系统

     欢迎来到windows编制程序的世界,先给我们的windows打个招呼吧:

网络编制程序一. 套接字编制程序基本知识

操作系统实验及代码(全),操作系统实验代码

操作系统是总计机有关规范的1门极其主要的专业课,但实验课的时候很几人不明了代码应该怎么写,那里贴出博主使用过的一某个,亲测可行。 

C语言是面向进度的,而C++是面向对象的

#include
<Windows.h>

一.首先互连网编制程序使用C++,要引进壹些库

题材1:Windows进度的创办与销毁

更新时间:2017-10-26

内容及须要:

一精通Windows进度的创始和销毁API的调用方法;编制程序代码,在先后中成立和销毁四个Word进程;

二 能够挂起和激活被创立过程的主线程;

3 通过Windows进度管理器查看系统经过列表的转移。

尝试指引:

1创立进程的API

BOOL CreateProcess(

  LPCTSTR lpApplicationName,

  LPTSTR lpCommandLine,

  LPSECURITY_ATTRIBUTES lpProcessAttributes,

  LPSECURITY_ATTRIBUTES lpThreadAttributes,

  BOOL bInheritHandles,

  DWORD dwCreationFlags,

  LPVOID lpEnvironment,

  LPCTSTR lpCurrentDirectory,

  LPSTARTUPINFO lpStartupInfo,

  LPPROCESS_INFORMATION lpProcessInformation

);

例程:

 1 void main( VOID ){
 2     STARTUPINFO si;
 3     PROCESS_INFORMATION pi;
 4     ZeroMemory( &si, sizeof(si) );
 5     si.cb = sizeof(si);
 6     ZeroMemory( &pi, sizeof(pi) );
 7     // Start the child process. 
 8     if( !CreateProcess( NULL, // No module name (use command line). 
 9         "MyChildProcess", // Command line. 
10         NULL,             // Process handle not inheritable. 
11         NULL,             // Thread handle not inheritable. 
12         FALSE,            // Set handle inheritance to FALSE. 
13         0,                // No creation flags. 
14         NULL,             // Use parent's environment block. 
15         NULL,             // Use parent's starting directory. 
16         &si,              // Pointer to STARTUPINFO structure.
17         &pi )             // Pointer to PROCESS_INFORMATION structure.
18         ) {
19             ErrorExit( "CreateProcess failed." );
20     }
21     // Wait until child process exits.
22     WaitForSingleObject( pi.hProcess, INFINITE );
23     // Close process and thread handles. 
24     CloseHandle( pi.hProcess );
25     CloseHandle( pi.hThread );
26 }

销毁进度API

BOOL TerminateProcess(

  HANDLE hProcess,

  UINT uExitCode

);

三 挂起经过的主线程API

DWORD SuspendThread(

  HANDLE hThread

);

四激活进程的主线程API

DWORD ResumeThread(

  HANDLE hThread

);

伍历程查看器

1 #include<iostream> 2 #include<windows.h> 3 using
namespace std; 4 void main( VOID ) 5 { 6 STARTUPINFO si; 7
PROCESS_INFORMATION pi; 8 /** 9 * 那里填个人的word可执行文件的路径
十 * ps:”\”必要展开转义 11 **/ 12 TCHAR
szCommandLine[]=TEXT(“D:\\Microsoft
Office\\Office14\\WINWORD.EXE”); 13 ZeroMemory(&si, sizeof(si) ); 14
si.cb= sizeof(si); 15 ZeroMemory(&pi, sizeof(pi) ); 16
if(!CreateProcess( NULL, szCommandLine, NULL,NULL, FALSE,0,NULL,
NULL,&si,&pi ) ) 一七 { 1八 fprintf(stderr,”进度成立失利!”); 1九 } 20 int
x; 二一 while(一) 22 { 二三 cout <<
“请输入要选用的操作:\n一:创立进度\n二:销毁进程\n三:挂起经过\n4:激活进程\n0:退出\n”;
贰肆 cin >> x; 25 switch(x) 二陆 { 27 case 壹: 2八 if(CreateProcess(
NULL, szCommandLine, NULL,NULL, FALSE,0,NULL, NULL,&si,&pi ) ) 2九fprintf(stderr,”进度创设成功!”); 30 else 3一 cout <<
“进度创建失利!”<<endl; 3二 break; 3三 case 贰: 3四if(TerminateProcess(pi.hProcess,0)) 3伍cout<<“销毁进程成功”<<endl; 36 else 37cout<<“销毁失利!”<<endl; 3捌 break; 3玖 case 三: 40
if(SuspendThread(pi.hThread)) 41 cout<<“挂起经过成功”<<endl;
4二 else 四三 cout<<“挂起失败”<<endl; 44 break; 四五 case 4: 四陆if(ResumeThread(pi.hThread)) 47 cout<<“激活进程成功”<<endl;
4八 else 4九 cout<<“激活战败”<<endl; 50 break; 5一 case 0: 5贰exit(0); 伍三 default: 54 cout<<“输入有误不科学”<<endl; 5伍 }
5六 } 57 }

 

不断更新中!!!

 

作者:耑新新,发布于  博客园

转载请申明出处,欢迎邮件沟通:[email protected]

操作系统是电脑有关规范的一门极其主要的专业课,但实验课的时候很五人不知情代码应…

C和C++的区别:

#include
<iostream>

         #include <Windows.h>

C是三个结构化语言,它的最主要在于算法和数据结构。C程序的设计重点思量的是何许通过二个历程,对输入进行演算处理获得输出控制)。

using namespace  std;

         并且需求选拔静态链接库,

C++,首要考虑的是什么组织贰个指标模型,让那些模型能够符合与之对应的难点域,那样就足以由此获取对象的事态新闻获取输出或完毕进程序控制制。
所以C与C++的最大分化在于它们的用于解决难点的思想方式不均等。之所以说C++比C更提高,是因为“
设计这几个概念已经被融入到C++之中 ”。

int  main()

         那里运用的是编写翻译语句#pragma comment(lib,”ws2_3二.lib”) 也正是将ws二_3二.lib静态链接库插手到品种中,效果和丰裕引用是均等的。

C与C++的最大分别:在于它们的用于化解难点的沉思艺术不一致。之所以说C++比C更先进,是因为“
设计那一个定义已经被融入到C++之中
”,而就语言自身而言,在C中越来越多的是算法的定义。那么是还是不是C就不根本了,错!算法是程序设计的底子,好的宏图固然未有好的算法,1样尤其。而且,“C加上好的布置性”也能写出12分好的东西。

{

         ws2_3二.lib一唱一和的是ws2_3二.dll,提供对于常见互联网编制程序的API接口辅助,使用在那之中的互连网接口就必要将ws二_3二.dll添加到工程,不然要求动态的加载ws2_32.dll。

图片 1

       int iSelect=MessageBox(NULL,TEXT(“你好,windows世界,我来了!”),TEXT(“你好,世界”),MB_OKCANCEL);

  1. WSAStartup 函数的介绍

上次大家说了何等是windows编制程序?明白到Windows API
编制程序、Windows编制程序、Windows SDK 编制程序是四个概念。

       if(iSelect==IDOK)

         WSAStartup是Windows SockNDs Asynchronous(Windows 异步套接字) 的起步命令, windows下的网络编制程序软件Winsock1,
Winsock二的多少个指令。

后天我们采纳C语言来兑现您的首先个实在的Windows程序。

       {

         WSAStartup函数完毕对Winsock服务的初始化,因而必要调用WSAStartup函数。使用Socket程序在动用Socket从前必须调用WSAStartup函数。该函数的首先个参数表示程序请求使用的Socket版本,高字节表示副版本,低字节表示主版本;操作系统利用第一个参数再次来到请求的Socket的版本信息。当1个应用程序调用WSAStartup函数的时候,操作系统依照请求的Socket版本来搜索响应的Socket库,绑定到Socket库到应用程序中。在其后的顺序中得以调用Socket库中的别的的socket函数。

windows.h 头文件介绍:

              *cout<<“you select ok “<<endl*;

         int WSAStartup(WORD wVersionRequest,
LPWSADATA lpWSAData);

编写制定Windows程序,首先要含有 windows.h 头文件。windows.h
还带有了任何部分Windows头文件,例如:

       }else

         参数介绍:

windef.h:基本类型定义

       {

                  
wVersionRequest: 一个双字节数值, 使用MAKEWOLX570D(二,二)生成;

winbase.h:内核函数

              *cout<<“you select cancel”<<endl*;

                   lpWSApacer: 指向3个WSADATA的数据结构的指针,用于吸收接纳Windows Sockets达成的细节。

wingdi.h:用户接口函数

       }

         If the function return 0, 表示成功。

winuser.h: 图形设备接口函数

       *system*(“pause”);

         开启Windows Sock
Asynchronous,对相应程序停止的时候,就活该关闭,WSACleanup()用于接触于Socket库的绑定并且释放掉Socket库所占用的系统能源。

那么些头文件定义了Windows的拥有数据类型、函数原型、数据结构和标记常量,也正是说,全部的Windows
API都在那几个头文件中宣示。

       return  0;

三.周边的某个函数在WinSocket编程中应用的介绍

在C语言中,程序都以“黑屏”的,称为控制台程序(Console
Application)。那套教程要讲的是带界面的Windows程序(Windows
Application),也叫做GUI程序(GUI Application)。

}

三.一 gethostname() // 获取本地主机的主机名

控制台程序以 main() 为入口函数,Windows程序以 WinMain()
为入口函数,动态链接库以 DllMain()
为入口函数,分歧的入口函数决定了不一样门类的顺序。

   所谓windows编制程序就是指通过调用Windows
API来和操作系统交互的编制程序方式。API正是与操作系统交互的种种成效函数,MessageBox正是1个API,调用它就足以弹出2个对话框。

         函数原型: int
PASCAL FA卡宴 gethostname( char FA普拉多 * name, int namelen);

WinMain() 函数的原型为:

        
Name:用于指向主机名缓冲区的指针,namelen: 缓冲区的深浅。

int WINAPI WinMain(

         Return Value:无不当的话,重临0,反之重临对应的错误代码。

HINSTANCE hInstance, // 当前窗口句柄

#include <iostream>

HINSTANCE hPrevInstance, //
前八个窗口句柄,Win3二下为NULL(Win16留给的排放物,最近已弃用)

#include <Windows.h>

LPSTBMWX伍 lpCmdLine, // 命令行参数

using namespace std;

int nCmdShow // 窗口显示形式

 

);

#pragma comment(lib,”ws2_32.lib”)

先不要解决难点过于急躁精晓那个参数的含义,笔者先给大家写1个概括的不带黑屏的、真正的Windows程序:

int main(){

#include

    WSADATA wsa ;//
WSADATA 结构是用来保存函数WSAStartup 再次来到的Windows
socket发轫化消息

int WINAPI WinMain(

    if(WSAStartup(MAKEWORD(2,1),&wsa) != 0){

HINSTANCE hInstance,

        cout << “套接字早先化战败”<<  endl;

HINSTANCE hPrevInstance,

        Sleep(3000);

LPSTR lpCmdLine,

        exit(-1);

int nCmdShow

    }else{

){

        cout << “套接字初始化成功” << endl;

// 调用API 函数MessageBox

    }

int nSelect = MessageBox(NULL, TEXT, TEXT(), MB_OKCANCEL);

 

if(nSelect == IDOK){

    char buf[255];

MessageBox(NULL, TEXT(“你点击了“鲜明”按钮”), TEXT, MB_OK);

 

}else{

    if( gethostname(buf,sizeof(buf)) ==
SOCKET_ERROR  ){

Message博克斯(NULL, TEXT(“你点击了“撤废”按钮”), TEXT, MB_OK);

        cout << “获取本地主机的Name失利:”<<WSAGetLastError()<< SOCKET_ERROR <<
endl;

}

    }else{

return 0;

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图