, 如优先级和任何其他的进程预定参数, 根据种类不同 决定是否可以继承.
. 还有一些其它属性.
但子进程也有与父进程不同的属性:
. 进程号, 子进程号不同与任何一个活动的进程组号.
. 父进程号.
. 子进程继承父进程的文件描述符或流时, 具有自己的一个拷贝
并且与父进程和其它子进程共享该资源.
. 子进程的用户时间和系统时间被初始化为0.
. 子进程的超时时钟设置为0.
. 子进程的信号处理函数指针组置为空.
. 子进程不继承父进程的记录锁.
返回值: 调用成功则对子进程返回0, 对父进程返回子进程号, 这也是
最方便的区分父子进程的方法. 若调用失败则返回-1给父进程,
子进程不生成.
例子:pid_t pid;
if ((pid=fork())>0) {
/*父进程处理过程*/
}
else if (pid==0) {
/*子进程处理过程*/
exit(0); /*注意子进程必须用exit()退出运行*/
}
else {
printf("fork error\n");
exit(0);
}
2.system()
功能:产生一个新的进程, 子进程执行指定的命令.
语法:#include <stdio.h>
#include <stdlib.h>
int system(string)
char *string;
说明:本调用将参数string传递给一个命令解释器(一般为sh)执行, 即
string被解释为一条命令, 由sh执行该命令.若参数string为一
个空指针则为检查命令解释器是否存在.
该命令可以同命令行命令相同形式, 但由于命令做为一个参数放
在系统调用中, 应注意编译时对特殊意义字符的处理. 命令的查
找是按PATH环境变量的定义的. 命令所生成的后果一般不会对父
进程造成影响.
返回值:当参数为空指针时, 只有当命令解释器有效时返回值为非零.
若参数不为空指针, 返回值为该命令的返回状态(同waitpid())
的返回值. 命令无效或语法错误则返回非零值,所执行的命令被
终止. 其他情况则返回-1.
例子:char command[81];
int i;
for (i=1;i<8;i++) {
sprintf(command,"ps -t tty%02i",i);
system(command);
}
3.exec()
功能:执行一个文件
语法:#include