process.h是什么头文件

merryland2 2006-05-29 04:55:29
请问:process.h是什么头文件,它有哪些函数?
谢谢指教!
...全文
6506 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
merryland2 2006-06-04
  • 打赏
  • 举报
回复
你选的是“WIN32控制台”吗?
suifeng19 2006-05-29
  • 打赏
  • 举报
回复
我楼上的楼上的楼上的那位,你的程序在 创天VC 编不过去,打不开#include "stdafx.h"
可不可以讲讲"stdafx.h"的用法或者是干么的。
foochow 2006-05-29
  • 打赏
  • 举报
回复
for _beginthreadex
winduster 2006-05-29
  • 打赏
  • 举报
回复
process.h再我印象中适宜个很无聊的文件。
操作系统的进程调度
merryland2 2006-05-29
  • 打赏
  • 举报
回复
对于API不是很了解。但是不明白在这个程序中,为什么要用到process.h呢?
// 串_堆分配.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream.h>
#include <malloc.h> //动态存储分配的函数
#include <process.h>

#define ok 1
#define error 0

typedef int status ;

//--------------------串的堆分配存储表示--------------------//
typedef struct
{
char *ch; //字符串首地址,若是非空串则按串长分配存储区,否则ch为NULL
int length; //串长度
}hstring;

//------------------------基本操作--------------------------//
void inithstring(hstring &t)
{
//初始化串
t.ch = NULL;
t.length = 0;
}//inithstring

status strassign(hstring &t, char *chars)
{
//生成一个其值等于串常量chars的串t
int i, j;
char *c;
for(i = 0, c = chars; *c!='\0'; ++i, ++c); //求chars的长度i
//cout << "串长度:" << i << endl;
if(!i)
{
t.ch = NULL;
t.length = 0;
}
else
{
t.ch = new char[i];
if(!t.ch)
return false;
for(j = 0; j < i; j++)
{
t.ch[j] = chars[j];
}
t.length = i;
}
return true;
}//strassign

int index(hstring s, hstring t)
{
//返回子串t在主串s中的位置,若不存在,则函数值为0
int i = 0, j = 0;
while(i < s.length && j < t.length)
{
if(s.ch[i] == t.ch[j]) //继续比较后续字符
{
++i;
++j;
}
else //指针后退重新开始匹配
{
i = i - j + 1;
j = 0;
}
}
if(j > t.length - 1)
return i - t.length + 1;
else
return 0;
}//index

hstring strdelete(hstring s, int pos, int len)
{
//删除串从第pos个字符起长度为len的子串,返回删除后的串
if(pos < 1 || pos > s.length - len + 1 || len < 0)
exit(error);
hstring t;
t.ch = new char[s.length - len];
t.length = s.length - len;
int i;
for(i = 0; i < pos; i++)
t.ch[i] = s.ch[i];
for(i = 0; i < s.length - pos - len + 1; i++)
t.ch[pos - 1 + i] = s.ch[pos + len - 1 + i];
return t;
}//strdelete

status strinsert(hstring &s, int pos, hstring t)
{
// 1 <= pos <= strlength(s) +1.在串s的第pos个字符前插入串t
int i, j;
if(pos < 1 || pos > s.length + 1) //pos不合法
return error;
if(t.length) //t非空,则重新分配空间,插入t
{
if(!(s.ch = (char *)realloc(s.ch, (s.length + t.length) * sizeof(char))))
return error;
for(i = s.length - 1; i >= pos - 1; --i) //为插入t而腾出位置
s.ch[i + t.length] = s.ch[i];
for(i = pos - 1, j = 0; i <= pos - 1 + t.length - 1; i++, j++) //插入t
s.ch[i] = t.ch[j];
s.length += t.length;
}
return ok;
}//strinsert

void tihuan(hstring &s, hstring t, hstring tihuan_string)
{
//如果在主串s中中有子串t,则用替换串tihuan_string替换掉t
int pos;
if(index(s, t)) //在s中存在子串t
{
pos = index(s, t);
s = strdelete(s, index(s, t), t.length);
strinsert(s, pos, tihuan_string);
}
}//tihuan


int main(int argc, char* argv[])
{
char schars[] = "ababcabcacbab";
char tchars[] = "abcac";
cout << "目标串为:" << schars << endl;
cout << "模式串为:" << tchars << endl;
hstring sstring, tstring,tihuan_string;
inithstring(sstring);
inithstring(tstring);
strassign(sstring, schars);
strassign(tstring, tchars);
cout << "模式串在目标串中的位置为:" << index(sstring, tstring) << endl;
char tihuan_chars[50] = "fang";
inithstring(tihuan_string);
strassign(tihuan_string, tihuan_chars);
tihuan(sstring, tstring, tihuan_string);
cout << "替换模式串的串为:" << tihuan_chars << endl;
cout << "替换后,目标串为:";
for(int i = 0; i < sstring.length; i++)
cout << sstring.ch[i];
cout << endl;
return 0;
}
fallinleave 2006-05-29
  • 打赏
  • 举报
回复
process 就是为了处理这种机制所提供的库函数
另外,俺知道是你给我发的消息了。
无知者无谓 2006-05-29
  • 打赏
  • 举报
回复
windows多线程编程需要的API基本上都在那里面。
想要知道有什么函数,那就自己去看那个头文件吧
merryland2 2006-05-29
  • 打赏
  • 举报
回复
多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。
fallinleave 2006-05-29
  • 打赏
  • 举报
回复
知道多线程吗?
merryland2 2006-05-29
  • 打赏
  • 举报
回复
请问,我还是不明白,可以讲得通俗一点吗?新手,刚学。
谢谢了。
fallinleave 2006-05-29
  • 打赏
  • 举报
回复
多线程相关的时候就需要#include <process.h>
提供了两个对多线程进行支持的函数,即线程的创建和终结
没有对线程挂起和恢复进行操作的函数,通常,这两项功能使用win32 api完成。
chenhu_doc 2006-05-29
  • 打赏
  • 举报
回复
00001 // Copyright (C) 1999-2002 Open Source Telecom Corporation.
00002 //
00003 // This program is free software; you can redistribute it and/or modify
00004 // it under the terms of the GNU General Public License as published by
00005 // the Free Software Foundation; either version 2 of the License, or
00006 // (at your option) any later version.
00007 //
00008 // This program is distributed in the hope that it will be useful,
00009 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00011 // GNU General Public License for more details.
00012 //
00013 // You should have received a copy of the GNU General Public License
00014 // along with this program; if not, write to the Free Software
00015 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00016 //
00017 // As a special exception to the GNU General Public License, permission is
00018 // granted for additional uses of the text contained in its release
00019 // of Common C++.
00020 //
00021 // The exception is that, if you link the Common C++ library with other
00022 // files to produce an executable, this does not by itself cause the
00023 // resulting executable to be covered by the GNU General Public License.
00024 // Your use of that executable is in no way restricted on account of
00025 // linking the Common C++ library code into it.
00026 //
00027 // This exception does not however invalidate any other reasons why
00028 // the executable file might be covered by the GNU General Public License.
00029 //
00030 // This exception applies only to the code released under the
00031 // name Common C++. If you copy code from other releases into a copy of
00032 // Common C++, as the General Public License permits, the exception does
00033 // not apply to the code that you add in this way. To avoid misleading
00034 // anyone as to the status of such modified files, you must delete
00035 // this exception notice from them.
00036 //
00037 // If you write modifications of your own for Common C++, it is your choice
00038 // whether to permit this exception to apply to your modifications.
00039 // If you do not wish that, delete this exception notice.
00040
00046 #ifndef CCXX_PROCESS_H_
00047 #define CCXX_PROCESS_H_
00048
00049 #ifndef CCXX_CONFIG_H_
00050 #include <cc++/config.h>
00051 #endif
00052
00053 #ifndef CCXX_THREAD_H_
00054 #include <cc++/thread.h>
00055 #endif
00056
00057 #ifdef CCXX_NAMESPACES
00058 namespace ost {
00059 #endif
00060
00071 class __EXPORT Process
00072 {
00073 public:
00074 #ifndef WIN32
00075 typedef RETSIGTYPE (*Trap)(int);
00081 static void detach(void);
00082
00090 static void attach(const char *devname);
00091
00099 static Trap setPosixSignal(int signo, Trap handler);
00100
00108 static Trap setInterruptSignal(int signo, Trap handler);
00109 #endif
00110
00127 static int spawn(const char *exec, const char **argv, bool wait = true);
00128
00136 static int join(int pid);
00137
00145 static bool cancel(int pid, int sig = 0);
00146
00153 static const char *getEnv(const char *name);
00154
00162 static void setEnv(const char *name, const char *value, bool overwrite);
00163
00169 static const char *getConfigDir(void)
00170 {return ETC_PREFIX;};
00171
00177 static const char *getHomeDir(void);
00178
00184 static const char *getUser(void);
00185
00191 static bool setUser(const char *id, bool grp = true);
00192
00198 static bool setGroup(const char *id);
00199 };
00200
00201 #ifdef CCXX_NAMESPACES
00202 };
00203 #endif
00204
00205 #endif
00206

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧